1778449822
c05b9b66eacc8e11cfd97f370d355f8b-phpdoc%3Aea8167f6dfe23b85ceb013414d474868-2fa15ac712b89ec6eecc22c21e5a0b2a
s:14504:"TzozMzoicGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlIjoxNDp7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lIjtzOjk6ImxvZ2luLnBocCI7czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBuYW1lc3BhY2VzIjthOjA6e31zOjQzOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGluY2x1ZGVzIjthOjA6e31zOjQ0OiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAGZ1bmN0aW9ucyI7YTowOnt9czo0NDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBjb25zdGFudHMiO2E6MDp7fXM6NDI6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAY2xhc3NlcyI7YTowOnt9czo0NToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBpbnRlcmZhY2VzIjthOjA6e31zOjQxOiIAcGhwRG9jdW1lbnRvclxSZWZsZWN0aW9uXFBocFxGaWxlAHRyYWl0cyI7YTowOnt9czo0MDoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBlbnVtcyI7YTowOnt9czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBoYXNoIjtzOjMyOiIyZmExNWFjNzEyYjg5ZWM2ZWVjYzIyYzIxZTVhMGIyYSI7czozOToiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBwYXRoIjtzOjE1OiJwYWdlcy9sb2dpbi5waHAiO3M6NDE6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAc291cmNlIjtzOjk5ODU6Ijw/cGhwDQpzZXNzaW9uX3N0YXJ0KCk7DQppZiAoaXNzZXQoJF9TRVNTSU9OWydsb2dnZWRfaW4nXSkgJiYgJF9TRVNTSU9OWydsb2dnZWRfaW4nXSA9PT0gdHJ1ZSkgew0KICBoZWFkZXIoJ0xvY2F0aW9uOiBkYXNoYm9hcmQucGhwJyk7DQogIGV4aXQ7DQp9DQo/Pg0KDQo8IURPQ1RZUEUgaHRtbD4NCjxodG1sIGxhbmc9ImVzIj4NCjxoZWFkPg0KICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4NCiAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+DQogICAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlIj4NCiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEsIHNocmluay10by1maXQ9bm8iPg0KICAgIDx0aXRsZT5BY2Nlc28g4oCUIEhlcnJhbWllbnRhIGdlbmVyaWNhPC90aXRsZT4NCg0KICAgIDxsaW5rIGhyZWY9Ii4uL3ZlbmRvcnMvYm9vdHN0cmFwL2Rpc3QvY3NzL2Jvb3RzdHJhcC5taW4uY3NzIiByZWw9InN0eWxlc2hlZXQiPg0KICAgIDxsaW5rIGhyZWY9Ii4uL3ZlbmRvcnMvZm9udC1hd2Vzb21lL2Nzcy9mb250LWF3ZXNvbWUubWluLmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij4NCiAgICA8bGluayBocmVmPSIuLi9idWlsZC9jc3MvY3VzdG9tLm1pbi5jc3MiIHJlbD0ic3R5bGVzaGVldCI+DQoNCiAgICA8c3R5bGU+DQogICAgICAgIDpyb290IHsNCiAgICAgICAgICAgIC0tYnJhbmQ6ICAgICAgIzFBQkI5QzsNCiAgICAgICAgICAgIC0tYnJhbmQtZGFyazogIzE1OWE4MDsNCiAgICAgICAgICAgIC0tZGFyay1iZzogICAgIzJhM2Y1NDsNCiAgICAgICAgICAgIC0tcGFuZWwtYmc6ICAgI2ZmZmZmZjsNCiAgICAgICAgICAgIC0tdGV4dC1tdXRlZDogIzczODc5QzsNCiAgICAgICAgfQ0KDQogICAgICAgIGh0bWwsIGJvZHkgew0KICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOw0KICAgICAgICAgICAgbWFyZ2luOiAwOw0KICAgICAgICAgICAgcGFkZGluZzogMDsNCiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRhcmstYmcpOw0KICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZToNCiAgICAgICAgICAgICAgICAgICAgcmFkaWFsLWdyYWRpZW50KGVsbGlwc2UgYXQgMjAlIDMwJSwgcmdiYSgyNiwxODcsMTU2LDAuMTIpIDAlLCB0cmFuc3BhcmVudCA1NSUpLA0KICAgICAgICAgICAgICAgICAgICByYWRpYWwtZ3JhZGllbnQoZWxsaXBzZSBhdCA4MCUgNzAlLCByZ2JhKDI2LDE4NywxNTYsMC4wNykgMCUsIHRyYW5zcGFyZW50IDU1JSk7DQogICAgICAgICAgICBmb250LWZhbWlseTogJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsNCiAgICAgICAgfQ0KDQogICAgICAgIC5sb2dpbi13cmFwcGVyIHsNCiAgICAgICAgICAgIG1pbi1oZWlnaHQ6IDEwMHZoOw0KICAgICAgICAgICAgZGlzcGxheTogZmxleDsNCiAgICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7DQogICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsNCiAgICAgICAgICAgIHBhZGRpbmc6IDIwcHg7DQogICAgICAgIH0NCg0KICAgICAgICAubG9naW4tY2FyZCB7DQogICAgICAgICAgICB3aWR0aDogMTAwJTsNCiAgICAgICAgICAgIG1heC13aWR0aDogNDIwcHg7DQogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1wYW5lbC1iZyk7DQogICAgICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7DQogICAgICAgICAgICBib3gtc2hhZG93OiAwIDEwcHggNDBweCByZ2JhKDAsMCwwLDAuMzUpOw0KICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgICAgICAgfQ0KDQogICAgICAgIC5sb2dpbi1jYXJkLWhlYWRlciB7DQogICAgICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1kYXJrLWJnKTsNCiAgICAgICAgICAgIHBhZGRpbmc6IDMycHggMzJweCAyNHB4Ow0KICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogM3B4IHNvbGlkIHZhcigtLWJyYW5kKTsNCiAgICAgICAgfQ0KDQogICAgICAgIC5sb2dpbi1jYXJkLWhlYWRlciAubG9nby10aXRsZSB7DQogICAgICAgICAgICBmb250LXNpemU6IDI4cHg7DQogICAgICAgICAgICBmb250LXdlaWdodDogNzAwOw0KICAgICAgICAgICAgY29sb3I6ICNmZmZmZmY7DQogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMXB4Ow0KICAgICAgICAgICAgbWFyZ2luOiAwIDAgNHB4Ow0KICAgICAgICB9DQoNCiAgICAgICAgLmxvZ2luLWNhcmQtaGVhZGVyIC5sb2dvLXRpdGxlIHNwYW4geyBjb2xvcjogdmFyKC0tYnJhbmQpOyB9DQoNCiAgICAgICAgLmxvZ2luLWNhcmQtaGVhZGVyIC5sb2dvLXN1YnRpdGxlIHsNCiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTJweDsNCiAgICAgICAgICAgIGNvbG9yOiByZ2JhKDI1NSwyNTUsMjU1LDAuNDUpOw0KICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsNCiAgICAgICAgICAgIGxldHRlci1zcGFjaW5nOiAycHg7DQogICAgICAgICAgICBtYXJnaW46IDA7DQogICAgICAgIH0NCg0KICAgICAgICAubG9naW4tY2FyZC1ib2R5IHsgcGFkZGluZzogMzJweDsgfQ0KDQogICAgICAgIC5sb2dpbi1jYXJkLWJvZHkgbGFiZWwgew0KICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4Ow0KICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsNCiAgICAgICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7DQogICAgICAgICAgICBsZXR0ZXItc3BhY2luZzogMC44cHg7DQogICAgICAgICAgICBjb2xvcjogdmFyKC0tdGV4dC1tdXRlZCk7DQogICAgICAgICAgICBtYXJnaW4tYm90dG9tOiA2cHg7DQogICAgICAgIH0NCg0KICAgICAgICAubG9naW4tY2FyZC1ib2R5IC5mb3JtLWNvbnRyb2wgew0KICAgICAgICAgICAgaGVpZ2h0OiA0MnB4Ow0KICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4Ow0KICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2RjZTNlYTsNCiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTRweDsNCiAgICAgICAgICAgIGNvbG9yOiAjMzMzOw0KICAgICAgICB9DQoNCiAgICAgICAgLmxvZ2luLWNhcmQtYm9keSAuZm9ybS1jb250cm9sOmZvY3VzIHsNCiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYnJhbmQpOw0KICAgICAgICAgICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoMjYsMTg3LDE1NiwwLjE1KTsNCiAgICAgICAgICAgIG91dGxpbmU6IG5vbmU7DQogICAgICAgIH0NCg0KICAgICAgICAuaW5wdXQtZ3JvdXAtdGV4dCB7DQogICAgICAgICAgICBiYWNrZ3JvdW5kOiAjZjVmN2ZhOw0KICAgICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgI2RjZTNlYTsNCiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS10ZXh0LW11dGVkKTsNCiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDNweCAwIDAgM3B4ICFpbXBvcnRhbnQ7DQogICAgICAgIH0NCg0KICAgICAgICAuYnRuLWxvZ2luIHsNCiAgICAgICAgICAgIHdpZHRoOiAxMDAlOw0KICAgICAgICAgICAgaGVpZ2h0OiA0NHB4Ow0KICAgICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tYnJhbmQpOw0KICAgICAgICAgICAgYm9yZGVyOiBub25lOw0KICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4Ow0KICAgICAgICAgICAgY29sb3I6ICNmZmY7DQogICAgICAgICAgICBmb250LXNpemU6IDE0cHg7DQogICAgICAgICAgICBmb250LXdlaWdodDogNjAwOw0KICAgICAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsNCiAgICAgICAgICAgIGN1cnNvcjogcG9pbnRlcjsNCiAgICAgICAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4yczsNCiAgICAgICAgICAgIG1hcmdpbi10b3A6IDhweDsNCiAgICAgICAgfQ0KDQogICAgICAgIC5idG4tbG9naW46aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1icmFuZC1kYXJrKTsgfQ0KICAgICAgICAuYnRuLWxvZ2luLmxvYWRpbmcgeyBwb2ludGVyLWV2ZW50czogbm9uZTsgb3BhY2l0eTogMC44NTsgfQ0KICAgICAgICAuYnRuLWxvZ2luIC5mYS1zcGlubmVyIHsgZGlzcGxheTogbm9uZTsgfQ0KICAgICAgICAuYnRuLWxvZ2luLmxvYWRpbmcgLmZhLXNpZ24taW4geyBkaXNwbGF5OiBub25lOyB9DQogICAgICAgIC5idG4tbG9naW4ubG9hZGluZyAuZmEtc3Bpbm5lciB7IGRpc3BsYXk6IGlubGluZS1ibG9jazsgfQ0KDQogICAgICAgICNsb2dpbi1lcnJvciB7DQogICAgICAgICAgICBkaXNwbGF5OiBub25lOw0KICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4Ow0KICAgICAgICAgICAgYm9yZGVyLXJhZGl1czogM3B4Ow0KICAgICAgICAgICAgcGFkZGluZzogMTBweCAxNHB4Ow0KICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogMTZweDsNCiAgICAgICAgICAgIGJhY2tncm91bmQ6ICNmZGYyZjI7DQogICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjZjVjNmNiOw0KICAgICAgICAgICAgY29sb3I6ICM4NDIwMjk7DQogICAgICAgIH0NCg0KICAgICAgICAubG9naW4tY2FyZC1mb290ZXIgew0KICAgICAgICAgICAgcGFkZGluZzogMTRweCAzMnB4Ow0KICAgICAgICAgICAgYmFja2dyb3VuZDogI2Y4ZjlmYTsNCiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVmMGYzOw0KICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICAgICAgZm9udC1zaXplOiAxMnB4Ow0KICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOw0KICAgICAgICB9DQoNCiAgICAgICAgLyog4pSA4pSAIFNFQ0NJw5NOIFJFR0lTVFJPIOKUgOKUgCAqLw0KICAgICAgICAucmVnaXN0ZXItbGluay13cmFwIHsNCiAgICAgICAgICAgIG1hcmdpbi10b3A6IDI1cHg7DQogICAgICAgICAgICBwYWRkaW5nLXRvcDogMjBweDsNCiAgICAgICAgICAgIGJvcmRlci10b3A6IDFweCBkYXNoZWQgI2UwZTBlMDsNCiAgICAgICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCiAgICAgICAgfQ0KICAgICAgICAucmVnaXN0ZXItbGluay13cmFwIHAgew0KICAgICAgICAgICAgZm9udC1zaXplOiAxM3B4Ow0KICAgICAgICAgICAgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOw0KICAgICAgICAgICAgbWFyZ2luLWJvdHRvbTogNXB4Ow0KICAgICAgICB9DQogICAgICAgIC5idG4tdG8tcmVnaXN0ZXIgew0KICAgICAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOw0KICAgICAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDsNCiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1icmFuZCk7DQogICAgICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7DQogICAgICAgICAgICB0cmFuc2l0aW9uOiBjb2xvciAwLjJzOw0KICAgICAgICB9DQogICAgICAgIC5idG4tdG8tcmVnaXN0ZXI6aG92ZXIgew0KICAgICAgICAgICAgY29sb3I6IHZhcigtLWJyYW5kLWRhcmspOw0KICAgICAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7DQogICAgICAgIH0NCg0KICAgICAgICAuZW50ZXItaGludCB7DQogICAgICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsNCiAgICAgICAgICAgIGZvbnQtc2l6ZTogMTFweDsNCiAgICAgICAgICAgIGNvbG9yOiAjYjBiZWM1Ow0KICAgICAgICAgICAgbWFyZ2luLXRvcDogNnB4Ow0KICAgICAgICB9DQogICAgPC9zdHlsZT4NCjwvaGVhZD4NCjxib2R5Pg0KDQo8ZGl2IGNsYXNzPSJsb2dpbi13cmFwcGVyIj4NCiAgICA8ZGl2IGNsYXNzPSJsb2dpbi1jYXJkIj4NCiAgICAgICAgPGRpdiBjbGFzcz0ibG9naW4tY2FyZC1oZWFkZXIiPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImxvZ28tdGl0bGUiPjxpIGNsYXNzPSJmYSBmYS1sZWFmIj48L2k+IEhlcnJhbWllbnRhPHNwYW4+IEdlbmVyaWNhPC9zcGFuPjwvcD4NCiAgICAgICAgICAgIDxwIGNsYXNzPSJsb2dvLXN1YnRpdGxlIj5QYW5lbCBkZSBDb250cm9sPC9wPg0KICAgICAgICA8L2Rpdj4NCg0KICAgICAgICA8ZGl2IGNsYXNzPSJsb2dpbi1jYXJkLWJvZHkiPg0KICAgICAgICAgICAgPGRpdiBpZD0ibG9naW4tZXJyb3IiPg0KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1leGNsYW1hdGlvbi1jaXJjbGUiPjwvaT4NCiAgICAgICAgICAgICAgICA8c3BhbiBpZD0ibG9naW4tZXJyb3ItbXNnIj5Vc3VhcmlvIG8gY29udHJhc2XDsWEgaW5jb3JyZWN0b3MuPC9zcGFuPg0KICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm0tZ3JvdXAgbWItMyI+DQogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iaW5wdXQtdXNlcm5hbWUiPkVtYWlsIC8gRE5JPC9sYWJlbD4NCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbnB1dC1ncm91cCI+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwLXByZXBlbmQiPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImlucHV0LWdyb3VwLXRleHQiPjxpIGNsYXNzPSJmYSBmYS11c2VyIj48L2k+PC9zcGFuPg0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJpbnB1dC11c2VybmFtZSIgY2xhc3M9ImZvcm0tY29udHJvbCIgcGxhY2Vob2xkZXI9IkVtYWlsIG8gRE5JIiBhdXRvZm9jdXM+DQogICAgICAgICAgICAgICAgPC9kaXY+DQogICAgICAgICAgICA8L2Rpdj4NCg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybS1ncm91cCBtYi0zIj4NCiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJpbnB1dC1wYXNzd29yZCI+Q29udHJhc2XDsWE8L2xhYmVsPg0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwIj4NCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5wdXQtZ3JvdXAtcHJlcGVuZCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iaW5wdXQtZ3JvdXAtdGV4dCI+PGkgY2xhc3M9ImZhIGZhLWxvY2siPjwvaT48L3NwYW4+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIGlkPSJpbnB1dC1wYXNzd29yZCIgY2xhc3M9ImZvcm0tY29udHJvbCIgcGxhY2Vob2xkZXI9IuKAouKAouKAouKAouKAouKAouKAouKAoiI+DQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlucHV0LWdyb3VwLWFwcGVuZCI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtc2Vjb25kYXJ5IGJ0bi1zbSIgdHlwZT0iYnV0dG9uIiBpZD0iYnRuLXRvZ2dsZS1wYXNzIiBzdHlsZT0iYm9yZGVyLWNvbG9yOiAjZGNlM2VhOyI+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWV5ZSI+PC9pPg0KICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+DQogICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICAgICAgPC9kaXY+DQoNCiAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1sb2dpbiIgY2xhc3M9ImJ0bi1sb2dpbiIgdHlwZT0iYnV0dG9uIj4NCiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc2lnbi1pbiI+PC9pPg0KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zcGlubmVyIGZhLXNwaW4iPjwvaT4NCiAgICAgICAgICAgICAgICAmbmJzcDtFbnRyYXINCiAgICAgICAgICAgIDwvYnV0dG9uPg0KICAgICAgICAgICAgPHAgY2xhc3M9ImVudGVyLWhpbnQiPjxrYmQ+RW50ZXI8L2tiZD4gcGFyYSBhY2NlZGVyPC9wPg0KDQogICAgICAgICAgICA8IS0tIEVOTEFDRSBBIFJFR0lTVFJPIC0tPg0KICAgICAgICAgICAgPGRpdiBjbGFzcz0icmVnaXN0ZXItbGluay13cmFwIj4NCiAgICAgICAgICAgICAgICA8cD7Cv05vIHRpZW5lcyBjdWVudGEgYcO6bj88L3A+DQogICAgICAgICAgICAgICAgPGEgaHJlZj0icmVnaXN0cm8ucGhwIiBjbGFzcz0iYnRuLXRvLXJlZ2lzdGVyIj4NCiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXVzZXItcGx1cyI+PC9pPiBDcmVhciB1bmEgY3VlbnRhIG51ZXZhDQogICAgICAgICAgICAgICAgPC9hPg0KICAgICAgICAgICAgPC9kaXY+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDxkaXYgY2xhc3M9ImxvZ2luLWNhcmQtZm9vdGVyIj4NCiAgICAgICAgICAgIEhlcnJhbWllbnRhIGdlbmVyaWNhICZjb3B5OyA8c3BhbiBpZD0iYcOxbyI+PC9zcGFuPiAmbWRhc2g7IFRvZG9zIGxvcyBkZXJlY2hvcyByZXNlcnZhZG9zDQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KPC9kaXY+DQoNCjxzY3JpcHQgc3JjPSIuLi92ZW5kb3JzL2pxdWVyeS9kaXN0L2pxdWVyeS5taW4uanMiPjwvc2NyaXB0Pg0KPHNjcmlwdD4NCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYcOxbycpLnRleHRDb250ZW50ID0gbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpOw0KDQogICAgJCgnI2J0bi10b2dnbGUtcGFzcycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgdmFyICRpbnB1dCA9ICQoJyNpbnB1dC1wYXNzd29yZCcpOw0KICAgICAgICB2YXIgJGljb24gID0gJCh0aGlzKS5maW5kKCdpJyk7DQogICAgICAgIHZhciBpc1Bhc3MgPSAkaW5wdXQuYXR0cigndHlwZScpID09PSAncGFzc3dvcmQnOw0KICAgICAgICAkaW5wdXQuYXR0cigndHlwZScsIGlzUGFzcyA/ICd0ZXh0JyA6ICdwYXNzd29yZCcpOw0KICAgICAgICAkaWNvbi50b2dnbGVDbGFzcygnZmEtZXllIGZhLWV5ZS1zbGFzaCcpOw0KICAgIH0pOw0KDQogICAgZnVuY3Rpb24gZG9Mb2dpbigpIHsNCiAgICAgICAgdmFyIHVzZXJuYW1lID0gJCgnI2lucHV0LXVzZXJuYW1lJykudmFsKCkudHJpbSgpOw0KICAgICAgICB2YXIgcGFzc3dvcmQgPSAkKCcjaW5wdXQtcGFzc3dvcmQnKS52YWwoKTsNCiAgICAgICAgaWYgKCF1c2VybmFtZSB8fCAhcGFzc3dvcmQpIHJldHVybjsNCg0KICAgICAgICB2YXIgJGJ0biA9ICQoJyNidG4tbG9naW4nKS5hZGRDbGFzcygnbG9hZGluZycpOw0KICAgICAgICAkKCcjbG9naW4tZXJyb3InKS5oaWRlKCk7DQoNCiAgICAgICAgJC5hamF4KHsNCiAgICAgICAgICAgIHVybDogJy4uLy4uL29saS9iYWNrZW5kL2FwaS5waHAnLA0KICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsDQogICAgICAgICAgICBkYXRhOiB7IGFjdGlvbjogJ2xvZ2luJywgbG9naW46IHVzZXJuYW1lLCBwYXNzd29yZDogcGFzc3dvcmQgfSwNCiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyKSB7DQogICAgICAgICAgICAgICAgaWYgKHIub2spIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJ2Rhc2hib2FyZC5waHAnOw0KICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAkKCcjbG9naW4tZXJyb3ItbXNnJykudGV4dChyLmVycm9yIHx8ICdBY2Nlc28gZGVuZWdhZG8uJyk7DQogICAgICAgICAgICAgICAgICAgICQoJyNsb2dpbi1lcnJvcicpLmZhZGVJbigpOw0KICAgICAgICAgICAgICAgICAgICAkYnRuLnJlbW92ZUNsYXNzKCdsb2FkaW5nJyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIGVycm9yOiBmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAkKCcjbG9naW4tZXJyb3ItbXNnJykudGV4dCgnRXJyb3IgZGUgY29uZXhpw7NuLicpOw0KICAgICAgICAgICAgICAgICQoJyNsb2dpbi1lcnJvcicpLmZhZGVJbigpOw0KICAgICAgICAgICAgICAgICRidG4ucmVtb3ZlQ2xhc3MoJ2xvYWRpbmcnKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfQ0KDQogICAgJCgnI2J0bi1sb2dpbicpLm9uKCdjbGljaycsIGRvTG9naW4pOw0KICAgICQoJyNpbnB1dC11c2VybmFtZSwgI2lucHV0LXBhc3N3b3JkJykub24oJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkgeyBpZiAoZS5rZXkgPT09ICdFbnRlcicpIGRvTG9naW4oKTsgfSk7DQo8L3NjcmlwdD4NCjwvYm9keT4NCjwvaHRtbD4iO3M6NDM6IgBwaHBEb2N1bWVudG9yXFJlZmxlY3Rpb25cUGhwXEZpbGUAZG9jQmxvY2siO047czo0MzoiAHBocERvY3VtZW50b3JcUmVmbGVjdGlvblxQaHBcRmlsZQBtZXRhZGF0YSI7YTowOnt9fQ==";