{"ok":true,"data":null,"error":null,"modules":{"TAccountOrders":"PG1vZHVsZSBuYW1lPSJUQWNjb3VudE9yZGVycyI+DQoNCg0KDQoNCg0KPHRlbXBsYXRlIG5hbWU9IlRBY2NvdW50T3JkZXJzIiAgPgo8bWV0YSBjaGFyc2V0PSJVVEYtOCIgLz4KPHNlY3Rpb24gY2xhc3M9ImFvIiBwbGFudGlsbGE9IlRBY2NvdW50T3JkZXJzIj4KCiAgICA8ZGl2IGNsYXNzPSJhby1yZWoiPgoKICAgICAgICA8ZGl2IGNsYXNzPSJhby1jdWVycG8iPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iYWMtY2FiIj48bmF2IGNsYXNzPSJhYy1taWdhcyIgYXJpYS1sYWJlbD0iRMOzbmRlIGVzdMOhcyI+PGEgaHJlZj0iL2FjY291bnQiPk1pIGN1ZW50YTwvYT48aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpjaGV2cm9uLXJpZ2h0Ij48L2ljb25pZnktaWNvbj48c3BhbiBhcmlhLWN1cnJlbnQ9InBhZ2UiPlBlZGlkb3M8L3NwYW4+PC9uYXY+PGRpdiBjbGFzcz0iYWMtY2FiLWZpbGEiPjxkaXYgY2xhc3M9ImFjLWNhYi10eHQiPjxoMT5NaXMgcGVkaWRvczwvaDE+PHA+Q29uc3VsdGEsIGZpbHRyYSB5IGdlc3Rpb25hIHR1cyBjb21wcmFzLjwvcD48L2Rpdj48L2Rpdj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW8tY2lmcmFzIj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhby1jaWZyYSI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFvLWNpZnJhLWljb25vIGFvLXRvbm8tdmVyZGUiPjxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOmNhbGVuZGFyLWRheXMiPjwvaWNvbmlmeS1pY29uPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW8tY2lmcmEtdHh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9ImFvLWpzLXRvdGFsIj7igJQ8L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD5QZWRpZG9zIHRvdGFsZXM8L3NtYWxsPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5EZXNkZSB0dSBwcmltZXIgcGVkaWRvPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFvLWNpZnJhIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW8tY2lmcmEtaWNvbm8gYW8tdG9uby1hbWJhciI+PGljb25pZnktaWNvbiBpY29uPSJsdWNpZGU6c2V0dGluZ3MiPjwvaWNvbmlmeS1pY29uPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW8tY2lmcmEtdHh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9ImFvLWpzLXByZXBhcmFuZG8iPuKAlDwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPkVuIHByZXBhcmFjacOzbjwvc21hbGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlByb2R1Y3RvcyBlbiBwcm9jZXNvPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFvLWNpZnJhIj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW8tY2lmcmEtaWNvbm8gYW8tdG9uby1henVsIj48aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTp0cnVjayI+PC9pY29uaWZ5LWljb24+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhby1jaWZyYS10eHQiPgogICAgICAgICAgICAgICAgICAgICAgICA8YiBjbGFzcz0iYW8tanMtdHJhbnNpdG8iPuKAlDwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPkVuIHRyw6Fuc2l0bzwvc21hbGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPkNhbWlubyBhIHR1IGRlc3Rpbm88L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW8tY2lmcmEiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhby1jaWZyYS1pY29ubyBhby10b25vLXZlcmRlIj48aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpjaXJjbGUtY2hlY2siPjwvaWNvbmlmeS1pY29uPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW8tY2lmcmEtdHh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9ImFvLWpzLWVudHJlZ2Fkb3MiPuKAlDwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPkVudHJlZ2Fkb3M8L3NtYWxsPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5Db21wcmFzIGZpbmFsaXphZGFzPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFvLWZpbHRyb3MgYWMtZmlsdHJvcyI+CgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJhYy1idXNjYXIiPgogICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOnNlYXJjaCI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InNlYXJjaCIgY2xhc3M9ImFvLWpzLWJ1c2NhciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9IkJ1c2NhciBwZWRpZG8gbyBwcm9kdWN0b+KApiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0iQnVzY2FyIGVuIHR1cyBwZWRpZG9zIj4KICAgICAgICAgICAgICAgIDwvbGFiZWw+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImFjLXNlbGVjdCBhby1qcy1mLWVzdGFkbyIgYXJpYS1sYWJlbD0iRXN0YWRvIGRlbCBwZWRpZG8iPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+RXN0YWRvOiB0b2Rvczwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InByZXBhcmFuZG8iPkVuIHByZXBhcmFjacOzbjwvb3B0aW9uPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9InRyYW5zaXRvIj5FbiB0csOhbnNpdG88L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJlbnRyZWdhZG8iPkVudHJlZ2Fkb3M8L29wdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VsZWN0PgoKICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImFjLXNlbGVjdCBhby1qcy1mLWZlY2hhIiBhcmlhLWxhYmVsPSJGZWNoYSBkZWwgcGVkaWRvIj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPlRvZGFzIGxhcyBmZWNoYXM8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIzMGQiPsOabHRpbW9zIDMwIGTDrWFzPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iNm0iPsOabHRpbW9zIDYgbWVzZXM8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJhbnlvIj7Dmmx0aW1vIGHDsW88L29wdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VsZWN0PgoKICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImFjLXNlbGVjdCBhby1qcy1mLXZlbmRlZG9yIiBhcmlhLWxhYmVsPSJWZW5kZWRvciI+CiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iIj5WZW5kZWRvcjogdG9kb3M8L29wdGlvbj4KICAgICAgICAgICAgICAgIDwvc2VsZWN0PgoKICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9ImFjLXNlbGVjdCBhby1qcy1mLXRpcG8iIGFyaWEtbGFiZWw9IlRpcG8gZGUgY29tcHJhIj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSIiPlRpcG86IHRvZG9zPC9vcHRpb24+CiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT0iZGlyZWN0YSI+Q29tcHJhIGRpcmVjdGE8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJzdWJhc3RhIj5TdWJhc3RhPC9vcHRpb24+CiAgICAgICAgICAgICAgICA8L3NlbGVjdD4KCiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPSJhYy1zZWxlY3QgYW8tanMtZi1vcmRlbiIgYXJpYS1sYWJlbD0iT3JkZW5hciBwb3IiPgogICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IiI+TcOhcyByZWNpZW50ZXM8L29wdGlvbj4KICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPSJhbnRpZ3VvcyI+TcOhcyBhbnRpZ3Vvczwvb3B0aW9uPgogICAgICAgICAgICAgICAgPC9zZWxlY3Q+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYW8tYnRuIGFvLWpzLWV4cG9ydGFyIgogICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT0iRXhwb3J0YXIgaGlzdG9yaWFsIiBhcmlhLWxhYmVsPSJFeHBvcnRhciBoaXN0b3JpYWwiPgogICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOmRvd25sb2FkIj48L2ljb25pZnktaWNvbj4gRXhwb3J0YXIKICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJhby1yZWNpZW50ZSBhby1qcy1yZWNpZW50ZSIgaGlkZGVuPgogICAgICAgICAgICAgICAgPGgyIGNsYXNzPSJhby10aXR1bG8iPlBlZGlkbyBtw6FzIHJlY2llbnRlPC9oMj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFvLWpzLXJlY2llbnRlLWNhamEiPjwvZGl2PgogICAgICAgICAgICA8L3NlY3Rpb24+CgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0iYW8tdG9kb3MiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW8tdG9kb3MtY2FiIj4KICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3M9ImFvLXRpdHVsbyI+VG9kb3MgbWlzIHBlZGlkb3M8L2gyPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhby1qcy1jdWVudGEiPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFvLWxpc3RhIGFvLWpzLWxpc3RhIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW8tdmFjaW8gYW8tanMtdmFjaW8iIGhpZGRlbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW8tdmFjaW8taWNvbm8iPjxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOnBhY2thZ2Utb3BlbiI+PC9pY29uaWZ5LWljb24+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxiIGNsYXNzPSJhby1qcy12YWNpby10aXR1bG8iPjwvYj4KICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iYW8tanMtdmFjaW8tcGllIj48L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImFvLWJ0biBhby1tYXMgYW8tanMtbWFzIiBoaWRkZW4+VmVyIG3DoXMgcGVkaWRvczwvYnV0dG9uPgogICAgICAgICAgICA8L3NlY3Rpb24+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxhc2lkZSBjbGFzcz0iYW8tbGFkbyI+CgogICAgICAgICAgICA8c2VjdGlvbiBjbGFzcz0iYW8tY2FyZCBhby1zb3BvcnRlIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhby1zb3BvcnRlLWljb25vIj48aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpoZWFkcGhvbmVzIj48L2ljb25pZnktaWNvbj48L3NwYW4+CiAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgIDxiPsK/TmVjZXNpdGFzIGF5dWRhIGNvbiB1biBwZWRpZG8/PC9iPgogICAgICAgICAgICAgICAgICAgIDxwPk51ZXN0cm8gZXF1aXBvIGVzdMOhIGFxdcOtIHBhcmEgYXl1ZGFydGUgY29uIGN1YWxxdWllciBkdWRhIG8gaW5jaWRlbmNpYS48L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYW8tYnRuIGFvLWJ0bi1wcmltYXJpbyBhby1qcy1zb3BvcnRlIj4KICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpoZWFkcGhvbmVzIj48L2ljb25pZnktaWNvbj4gQ29udGFjdGFyIGNvbiBzb3BvcnRlCiAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFvLWNhcmQiPgogICAgICAgICAgICAgICAgPGgzIGNsYXNzPSJhby1jYXJkLXRpdHVsbyI+QWNjaW9uZXMgcsOhcGlkYXM8L2gzPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW8tYWNjaW9uZXMiPgoKICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYW8tYWNjaW9uIGFvLWpzLWRldm9sdWNpb24iIGhyZWY9ImphdmFzY3JpcHQ6OyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhby1hY2Npb24taWNvbm8iPjxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOnBhY2thZ2UiPjwvaWNvbmlmeS1pY29uPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFvLWFjY2lvbi10eHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+U29saWNpdGFyIHVuYSBkZXZvbHVjacOzbjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbD5HZXN0aW9uYSBsYSBkZXZvbHVjacOzbiBkZSB1biBwZWRpZG8uPC9zbWFsbD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGNsYXNzPSJhby1hY2Npb24tbWFzIiBpY29uPSJsdWNpZGU6Y2hldnJvbi1yaWdodCI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgPC9hPgoKICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iYW8tYWNjaW9uIGFvLWpzLWZhY3R1cmFzIiBocmVmPSJqYXZhc2NyaXB0OjsiPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW8tYWNjaW9uLWljb25vIj48aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpkb3dubG9hZCI+PC9pY29uaWZ5LWljb24+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW8tYWNjaW9uLXR4dCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Yj5EZXNjYXJnYXIgZmFjdHVyYXM8L2I+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+QWNjZWRlIGEgdG9kYXMgdHVzIGZhY3R1cmFzLjwvc21hbGw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBjbGFzcz0iYW8tYWNjaW9uLW1hcyIgaWNvbj0ibHVjaWRlOmNoZXZyb24tcmlnaHQiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgIDwvYT4KCiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFvLWFjY2lvbiBhby1qcy1zZWd1aW1pZW50byIgaHJlZj0iamF2YXNjcmlwdDo7Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFvLWFjY2lvbi1pY29ubyI+PGljb25pZnktaWNvbiBpY29uPSJsdWNpZGU6dHJ1Y2siPjwvaWNvbmlmeS1pY29uPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFvLWFjY2lvbi10eHQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGI+VmVyIHNlZ3VpbWllbnRvPC9iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsPkNvbnN1bHRhIGVsIGVzdGFkbyBkZSB0dXMgZW52w61vcy48L3NtYWxsPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gY2xhc3M9ImFvLWFjY2lvbi1tYXMiIGljb249Imx1Y2lkZTpjaGV2cm9uLXJpZ2h0Ij48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgICAgICA8L2E+CgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhby1hY2Npb24gYW8tanMtYXl1ZGEiIGhyZWY9ImphdmFzY3JpcHQ6OyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhby1hY2Npb24taWNvbm8iPjxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOmNpcmNsZS1oZWxwIj48L2ljb25pZnktaWNvbj48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhby1hY2Npb24tdHh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPkF5dWRhIHNvYnJlIHBlZGlkb3M8L2I+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGw+UHJlZ3VudGFzIGZyZWN1ZW50ZXMuPC9zbWFsbD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGNsYXNzPSJhby1hY2Npb24tbWFzIiBpY29uPSJsdWNpZGU6Y2hldnJvbi1yaWdodCI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvc2VjdGlvbj4KCiAgICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPSJhby1jYXJkIGFvLWltcGFjdG8iPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFvLWltcGFjdG8taWNvbm8iPjxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOmxlYWYiPjwvaWNvbmlmeS1pY29uPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgPGI+VHUgY29tcHJhIHRpZW5lIGltcGFjdG88L2I+CiAgICAgICAgICAgICAgICAgICAgPHA+R3JhY2lhcyBwb3IgYXBveWFyIGEgbG9zIGFncmljdWx0b3JlcyBsb2NhbGVzIHkgZm9ybWFyIHBhcnRlIGRlIHVuCiAgICAgICAgICAgICAgICAgICAgICAgc2lzdGVtYSBhbGltZW50YXJpbyBtw6FzIHNvc3RlbmlibGUuPC9wPgogICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhby1lbmxhY2UiIGhyZWY9Ii9jb21vLWZ1bmNpb25hIj5TYWJlciBtw6FzIDxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOmFycm93LXJpZ2h0Ij48L2ljb25pZnktaWNvbj48L2E+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9zZWN0aW9uPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNlY3Rpb24gY2xhc3M9ImFvLWNhcmQgYW8tanMtZmFxLWNhcmQiIGhpZGRlbj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFvLWNhcmQtY2FiIj4KICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9ImFvLWNhcmQtdGl0dWxvIj5QcmVndW50YXMgZnJlY3VlbnRlczwvaDM+CiAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImFvLWVubGFjZSBhby1qcy1mYXEtdG9kYXMiIGhyZWY9ImphdmFzY3JpcHQ6OyI+VmVyIHRvZGFzPC9hPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhby1mYXEgYW8tanMtZmFxIj48L2Rpdj4KICAgICAgICAgICAgPC9zZWN0aW9uPgogICAgICAgIDwvYXNpZGU+CiAgICA8L2Rpdj4KCiAgICAKICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImFvLXRwbC1wZWRpZG8iPgogICAgICAgIDxhcnRpY2xlIGNsYXNzPSJhby1wZWRpZG8iPgoKICAgICAgICAgICAgPGltZyBjbGFzcz0iYW8tcC1mb3RvIGFvLWpzLXAtZm90byIgYWx0PSIiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW8tcC1pZCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhby1wLXJlZiI+CiAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9ImFvLWpzLXAtcmVmIj48L2I+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFvLXBpbGRvcmEgYW8tanMtcC1lc3RhZG8iPjwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJhby1qcy1wLWZlY2hhIj48L3NtYWxsPgoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFvLXAtdmVuZGVkb3IgYW8tanMtcC12ZW5kZWRvciI+CiAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz0iYW8tcC12LWZvdG8gYW8tanMtcC12LWZvdG8iIGRhdGEtc2luLWZvdG89ImF2YXRhciIgYWx0PSIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhby1wLXYtdmFyaW9zIGFvLWpzLXAtdi12YXJpb3MiIGhpZGRlbj4KICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJsdWNpZGU6dXNlcnMiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW8tcC12LXR4dCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxiIGNsYXNzPSJhby1qcy1wLXYtbm9tYnJlIj48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhby1wLXYtbm90YSBhby1qcy1wLXYtbm90YSIgaGlkZGVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJsdWNpZGU6c3RhciI+PC9pY29uaWZ5LWljb24+PGVtIGNsYXNzPSJhby1qcy1wLXYtdmFsb3IiPjwvZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJhby1qcy1wLXYtbHVnYXIiPjwvc21hbGw+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW8tcC1jb3NhcyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhby1wLWZvdG9zIGFvLWpzLXAtZm90b3MiPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW8tcC1kYXRvIj4KICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpwYWNrYWdlIj48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW8tanMtcC1jdWFudG9zIj48L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFvLXAtZGF0byBhby1qcy1wLWVudHJlZ2EiPgogICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gY2xhc3M9ImFvLWpzLXAtZW50cmVnYS1pY29ubyIgaWNvbj0ibHVjaWRlOnRydWNrIj48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW8tcC1lbnRyZWdhLXR4dCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxiIGNsYXNzPSJhby1qcy1wLWVudHJlZ2EtYiI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9ImFvLWpzLXAtZW50cmVnYS1zbWFsbCI+PC9zbWFsbD4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJhby1wLXRvdGFsIj4KICAgICAgICAgICAgICAgIDxzbWFsbD5Ub3RhbDwvc21hbGw+CiAgICAgICAgICAgICAgICA8YiBjbGFzcz0iYW8tanMtcC10b3RhbCI+PC9iPgogICAgICAgICAgICAgICAgPHNwYW4+SVZBIGluY2x1aWRvPC9zcGFuPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFvLXAtYWNjaW9uZXMiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW8tanMtcC1ib3RvbmVzIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYW8tcC1tYXMgYW8tanMtcC1tYXMiIGFyaWEtbGFiZWw9Ik3DoXMgb3BjaW9uZXMiPgogICAgICAgICAgICAgICAgICAgIDxpY29uaWZ5LWljb24gaWNvbj0ibHVjaWRlOmVsbGlwc2lzLXZlcnRpY2FsIj48L2ljb25pZnktaWNvbj4KICAgICAgICAgICAgICAgIDwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2FydGljbGU+CiAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImFvLXRwbC1yZWNpZW50ZSI+CiAgICAgICAgPGFydGljbGUgY2xhc3M9ImFvLXJlYyI+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhby1yZWMtaWQiPgogICAgICAgICAgICAgICAgPGltZyBjbGFzcz0iYW8tcmVjLWZvdG8gYW8tanMtci1mb3RvIiBhbHQ9IiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhby1yZWMtdHh0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhby1wLXJlZiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxiIGNsYXNzPSJhby1qcy1yLXJlZiI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW8tcGlsZG9yYSBhby1qcy1yLWVzdGFkbyI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0iYW8tanMtci1mZWNoYSI+PC9zbWFsbD4KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW8tcC12ZW5kZWRvciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgY2xhc3M9ImFvLXAtdi1mb3RvIGFvLWpzLXItdi1mb3RvIiBkYXRhLXNpbi1mb3RvPSJhdmF0YXIiIGFsdD0iIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImFvLXAtdi12YXJpb3MgYW8tanMtci12LXZhcmlvcyIgaGlkZGVuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJsdWNpZGU6dXNlcnMiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhby1wLXYtdHh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiIGNsYXNzPSJhby1qcy1yLXYtbm9tYnJlIj48L2I+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW8tcC12LW5vdGEgYW8tanMtci12LW5vdGEiIGhpZGRlbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpzdGFyIj48L2ljb25pZnktaWNvbj48ZW0gY2xhc3M9ImFvLWpzLXItdi12YWxvciI+PC9lbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0iYW8tanMtci12LWx1Z2FyIj48L3NtYWxsPgogICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFvLXAtZm90b3MgYW8tanMtci1mb3RvcyI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhby1yZWMtYXJyaWJhIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImFvLXJlYy1wYXNvcyBhby1qcy1yLXBhc29zIj48L2Rpdj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJhby1yZWMtZmxlY2hhIGFvLWpzLXItZmxlY2hhIiBocmVmPSJqYXZhc2NyaXB0OjsiIGFyaWEtbGFiZWw9IlZlciBzZWd1aW1pZW50byI+CiAgICAgICAgICAgICAgICAgICAgPGljb25pZnktaWNvbiBpY29uPSJsdWNpZGU6Y2hldnJvbi1yaWdodCI+PC9pY29uaWZ5LWljb24+CiAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW8tcmVjLXBpZSI+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW8tcmVjLWVudmlvIGFvLWpzLXItZW52aW8iIGhpZGRlbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYW8tcmVjLWVudmlvLWljb25vIj48aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTp0cnVjayI+PC9pY29uaWZ5LWljb24+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJhby1yZWMtZW52aW8tdHh0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9ImFvLWpzLXItZW52aW8tYiI+PC9iPgogICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9ImFvLWpzLXItZW52aW8tc21hbGwiPjwvc21hbGw+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iYW8tcmVjLXRvdGFsIj4KICAgICAgICAgICAgICAgICAgICA8c21hbGw+VG90YWwgZGVsIHBlZGlkbzwvc21hbGw+CiAgICAgICAgICAgICAgICAgICAgPGIgY2xhc3M9ImFvLWpzLXItdG90YWwiPjwvYj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5JVkEgaW5jbHVpZG88L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJhby1qcy1yLWJvdG9uZXMiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2FydGljbGU+CiAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImFvLXRwbC1mb3RvIj4KICAgICAgICA8aW1nIGNsYXNzPSJhby1wLW1pbmkiIGFsdD0iIj4KICAgIDwvdGVtcGxhdGU+CgogICAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0iYW8tdHBsLW1hcy1mb3RvcyI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImFvLXAtbWluaSBhby1wLW1pbmktbWFzIj48L3NwYW4+CiAgICA8L3RlbXBsYXRlPgoKICAgICAgICA8dGVtcGxhdGUgY2xhc3M9ImFvLXRwbC1ib3RvbiI+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJhby1idG4iPgogICAgICAgICAgICA8aWNvbmlmeS1pY29uPjwvaWNvbmlmeS1pY29uPjxzcGFuPjwvc3Bhbj4KICAgICAgICA8L2J1dHRvbj4KICAgIDwvdGVtcGxhdGU+CgogICAgICAgIDx0ZW1wbGF0ZSBjbGFzcz0iYW8tdHBsLWZhcSI+CiAgICAgICAgPGEgY2xhc3M9ImFvLWZhcS1maWxhIiBocmVmPSJqYXZhc2NyaXB0OjsiPgogICAgICAgICAgICA8aWNvbmlmeS1pY29uIGljb249Imx1Y2lkZTpmaWxlLXRleHQiPjwvaWNvbmlmeS1pY29uPgogICAgICAgICAgICA8c3Bhbj48L3NwYW4+CiAgICAgICAgICAgIDxpY29uaWZ5LWljb24gY2xhc3M9ImFvLWFjY2lvbi1tYXMiIGljb249Imx1Y2lkZTpjaGV2cm9uLXJpZ2h0Ij48L2ljb25pZnktaWNvbj4KICAgICAgICA8L2E+CiAgICA8L3RlbXBsYXRlPgo8L3NlY3Rpb24+Cg0KDQoKPC90ZW1wbGF0ZT4NCg0KPHN0eWxlIG5hbWU9IlRBY2NvdW50T3JkZXJzIj4vKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAKICAgTUlTIFBFRElET1Mg4oCUIGVsIGxpc3RhZG8gZGVsIMOhcmVhIGRlIGNsaWVudGUKICAg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCgogICBMT1MgQ09MT1JFUyBTT04gTE9TIERFTCBFU0NBUEFSQVRFIChgLS1zZC0qYCksIE5PIExPUyBERUwgUEFORUwuCgogICBgVEFjY291bnREYXNoYm9hcmRgIHkgc3VzIHZlY2luYXMgdXNhbiB1bmEgcGFsZXRhIGF6dWwgcHJvcGlhCiAgIChgLS1hY2NvdW50LWlua2AsIGAtLWFjY291bnQtYmx1ZWApIHF1ZSB2aWVuZSBkZWwgcGFuZWwgdmllam8uIEVzdGEgcGFudGFsbGEKICAgZXMgbGEgcXVlIHZlIHVuIGNvbXByYWRvciBkZSBBZ3JvQ2FsaWEsIHkgbGEgbWFxdWV0YSBlcyB2ZXJkZSBjb21vIGVsIHJlc3RvCiAgIGRlbCBzaXRpbzogbGEgZmljaGEgZGUgcHJvZHVjdG8sIGxhIGNlc3RhLCBsYSBjb25maXJtYWNpw7NuIHkgZWwgcGVyZmlsIGRlbAogICBhZ3JpY3VsdG9yLiBEb3MgdmVyZGVzIGRpc3RpbnRvcyBlbiBlbCBtaXNtbyByZWNvcnJpZG8gc2Ugbm90YW47IHVuIHNhbHRvIGRlCiAgIHZlcmRlIGEgYXp1bCBhbCBlbnRyYXIgZW4gbGEgY3VlbnRhLCBtw6FzLgoKICAgVmFuIENPTiBSRVNQQUxETyBlbiBlbCBwdW50byBkZSB1c28gcG9ycXVlIGxvcyBgLS1zZC0qYCBsb3Mgc2lydmUKICAgYFRTZWxsZXJzVUlgLCB5IGVzdGEgcGFudGFsbGEgcHVlZGUgbW9udGFyc2UgZW4gdW4gcGFuZWwgcXVlIG5vIGxhIGNhcmd1ZS4KCiAgIOKUgOKUgCBDQU5ESURBVE8gQSBMQSBIT0pBIENPTcOaTiBERUwgw4FSRUEgREUgQ0xJRU5URSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAgTGEgdGFyamV0YSAoYC5hby1jYXJkYCksIGxhIHDDrWxkb3JhIGRlIGVzdGFkbyAoYC5hby1waWxkb3JhYCksIGVsIGJvdMOzbgogICAoYC5hby1idG5gKSB5IGVsIGJsb3F1ZSBpY29ubyt0ZXh0byBzZSByZXBpdGVuIHlhIGVuIGBUT3JkZXJEaXNwYXRjaGAsCiAgIGBUUmV0dXJuT3JkZXJgIHkgYFRPcmRlckRldGFpbGAgY29uIG90cm9zIHZhbG9yZXMuIEN1YW5kbyBzZSBleHRyYWlnYSBsYQogICBob2phIGNvbcO6biAtLXF1ZSBDTEFVREUubWQgZGVqYSBwYXJhIGVsIGZpbmFsLCBjb24gbGFzIHBhbnRhbGxhcwogICBhc2VudGFkYXMtLSBlc3RvcyBjdWF0cm8gc29uIGxvcyBwcmltZXJvcyBxdWUgc2UgdmFuLgogICDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KCi5hbyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGNvbG9yOiB2YXIoLS1zZC10ZXh0bywgIzQ2NTE0YSk7CiAgICBmb250LXNpemU6IDE0cHg7CgogICAgLyogTE9TIENPUlRFUyBERSBMQSBDQUJFQ0VSQSBNSVJBTiBMQSBGSUNIQSwgTk8gTEEgVkVOVEFOQTogZXN0YSBwYW50YWxsYQogICAgICAgdml2ZSBkZW50cm8gZGVsIHBhbmVsLCBxdWUgdGllbmUgdW4gbWVuw7ogZGUgfjIyMHB4IHkgdW4gY2FycmlsCiAgICAgICBjb25maWd1cmFibGUgZW4gQXBhcmllbmNpYSwgYXPDrSBxdWUgZWwgYW5jaG8gZGUgbGEgdmVudGFuYSBubyBkaWNlIG5hZGEKICAgICAgIGRlbCBxdWUgbGUgcXVlZGEgYXF1w60uIExvcyBgQGNvbnRhaW5lcmAgZGUgYEFjY291bnRIZWFkZXJgIChUQWNjb3VudFVJKQogICAgICAgbmVjZXNpdGFuIGVzdGUgY29udGVuZWRvciBwYXJhIG1lZGlyLiAqLwogICAgY29udGFpbmVyLXR5cGU6IGlubGluZS1zaXplOwp9Ci5hbywgLmFvIFtjbGFzc149ImFvLSJdLCAuYW8gW2NsYXNzKj0iIGFvLSJdIHsgYm94LXNpemluZzogYm9yZGVyLWJveDsgfQouYW8gW2hpZGRlbl0geyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7IH0KCi8qIEVsIGN1ZXJwbyB5IGxhIGNvbHVtbmEgZGUgYXl1ZGEuIGBhbGlnbi1pdGVtczogc3RhcnRgIHBhcmEgcXVlIGxhIGNvbHVtbmEKICAgZGVyZWNoYSBubyBzZSBlc3RpcmUgeSBwdWVkYSBxdWVkYXJzZSBwZWdhZGEgYWwgYmFqYXIuICovCi5hbyAuYW8tcmVqIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpIDMyMHB4OwogICAgZ2FwOiAyMHB4OwogICAgYWxpZ24taXRlbXM6IHN0YXJ0Owp9Ci5hbyAuYW8tY3VlcnBvIHsgbWluLXdpZHRoOiAwOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBnYXA6IDE4cHg7IH0KLmFvIC5hby1sYWRvIHsKICAgIGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTZweDsKICAgIHBvc2l0aW9uOiBzdGlja3k7IHRvcDogY2FsYyh2YXIoLS1zaXRlLWNhYmVjZXJhLCAxMThweCkgKyAxNHB4KTsKICAgIGFsaWduLXNlbGY6IHN0YXJ0Owp9CgovKiBFbiB1bmEgY29sdW1uYSBsYSBheXVkYSB2YSBERUJBSk86IGVuIHVuIG3Ds3ZpbCwgcXVpZW4gZW50cmEgZW4gwqtNaXMgcGVkaWRvc8K7CiAgIHZpZW5lIGEgdmVyIHVuIHBlZGlkbywgbm8gYSBsZWVyIGxhcyBwcmVndW50YXMgZnJlY3VlbnRlcy4gKi8KQG1lZGlhIChtYXgtd2lkdGg6IDEwODBweCkgewogICAgLmFvIC5hby1yZWogeyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IG1pbm1heCgwLCAxZnIpOyB9CiAgICAuYW8gLmFvLWxhZG8geyBwb3NpdGlvbjogc3RhdGljOyBvcmRlcjogMjsgfQogICAgLmFvIC5hby1jdWVycG8geyBvcmRlcjogMTsgfQp9CgovKiBFbCBodWVjbyBiYWpvIGxhIGNhYmVjZXJhIGxvIHBvbmUgbGEgcmVqaWxsYSBkZSBlc3RhIGNvbHVtbmEsIG5vIGxhCiAgIGNhYmVjZXJhOiBgLmFjLWNhYmAgdHJhZSBzdSBwcm9waW8gbWFyZ2VuIGluZmVyaW9yIHkgZXN0ZSBjdWVycG8gZXMgdW4KICAgZmxleCBjb24gYGdhcGAsIGFzw60gcXVlIHN1bWFkb3MgZGVqYWJhbiBlbCBkb2JsZSBkZSBhaXJlIGJham8gZWwKICAgdMOtdHVsby4gTWFuZGEgZWwgcml0bW8gZGUgbGEgY29sdW1uYS4gKi8KLmFvIC5hby1jdWVycG8gPiAuYWMtY2FiIHsgbWFyZ2luLWJvdHRvbTogMDsgfQoKLyog4pSA4pSAIEVMIENBTUlOTyBZIExBIENBQkVDRVJBIFlBIE5PIFNFIFBJTlRBTiBBUVXDjSDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAgRXN0YWJhbiBlbiBlc3RhIGhvamEgKGBhby1taWdhc2AsIGBhby1jYWJgKSB5IGVyYW4gZWwgZm9ybWF0byBkZSBFU1RBCiAgIHBhbnRhbGxhOiBvdHJvIHRhbWHDsW8gZGUgdMOtdHVsbyB5IG90cm8gY29sb3IgZGUgY2FtaW5vIHF1ZSBsYXMgZGVtw6FzCiAgIHNlY2Npb25lcyBkZWwgcGFuZWwuIEFob3JhIGxvcyBwaW50YSBgQWNjb3VudEhlYWRlcmAgY29uIGxhcyBjbGFzZXMgYGFjLSpgLAogICBjdXlhIGhvamEgdmlhamEgZW4gYFRBY2NvdW50VUlgIC0tcXVlIHZhIGNvbiBsYSB2aXRyaW5hIGRlbCBwYW5lbCwgYXPDrSBxdWUKICAgZXN0w6EgZW4gbGEgcMOhZ2luYSBlbiB0b2RhcyBsYXMgc2VjY2lvbmVzLS0uIGBhby1idG5gIHNlIHF1ZWRhOiBsYSB1c2FuIGxhcwogICB0YXJqZXRhcyBkZSBwZWRpZG8geSBsb3MgcGFuZWxlcyBkZSBheXVkYSwgbm8gc29sbyBsYSBjYWJlY2VyYS4gKi8KCi8qIOKUgOKUgCBMQVMgQ1VBVFJPIENJRlJBUyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAgSU5GT1JNQUNJw5NOLCBOTyBGSUxUUk9TOiBuaSBjdXJzb3IsIG5pIHJlYWxjZSwgbmkgZXN0YWRvIGFjdGl2by4gWSBgPGRpdj5gCiAgIGVuIGVsIG1hcmNhZG8sIHBvcnF1ZSBgLlRDb21wb25lbnRFUzYgYnV0dG9uYCBsZSBtZXRlIGEgdG9kbyBib3TDs24KICAgYGhlaWdodDoyNXB4OyBkaXNwbGF5OmZsZXhgIGRlc2RlIGxhIGhvamEgZ2xvYmFsIHkgYXBsYXN0YWJhIGxhIHRhcmpldGEuICovCgouYW8gLmFvLWNpZnJhcyB7IGRpc3BsYXk6IGdyaWQ7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogcmVwZWF0KDQsIG1pbm1heCgwLCAxZnIpKTsgZ2FwOiAxNHB4OyB9CgouYW8gLmFvLWNpZnJhIHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTJweDsKICAgIHBhZGRpbmc6IDE2cHggMThweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zZC1ib3JkZSwgI2U0ZWFlNCk7CiAgICBib3JkZXItcmFkaXVzOiAxNHB4OwogICAgYm94LXNoYWRvdzogdmFyKC0tc2Qtc29tYnJhLCAwIDJweCAxMHB4IHJnYmEoMjAsNDAsMjUsLjA2KSk7Cn0KCi5hbyAuYW8tY2lmcmEtaWNvbm8gewogICAgZmxleDogMCAwIGF1dG87CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB3aWR0aDogNDBweDsgaGVpZ2h0OiA0MHB4OyBib3JkZXItcmFkaXVzOiAxMnB4Owp9Ci8qIEVsIHRhbWHDsW8gc2UgZGVjbGFyYSBFTiBlbCBpY29ubzogYGljb25pZnktaWNvbmAgbm8gaGVyZWRhIGVsIGBmb250LXNpemVgLiAqLwouYW8gLmFvLWNpZnJhLWljb25vIGljb25pZnktaWNvbiB7IGZvbnQtc2l6ZTogMjBweDsgfQoKLmFvIC5hby10b25vLXZlcmRlIHsgYmFja2dyb3VuZDogdmFyKC0tc2QtdmVyZGUtY2xhcm8sICNlZWY2ZWUpOyBjb2xvcjogdmFyKC0tc2QtdmVyZGUtb3NjdXJvLCAjMDA1YzJkKTsgfQouYW8gLmFvLXRvbm8tYW1iYXIgeyBiYWNrZ3JvdW5kOiAjZmRmM2UyOyBjb2xvcjogI2I1NDcwODsgfQouYW8gLmFvLXRvbm8tYXp1bCAgeyBiYWNrZ3JvdW5kOiAjZWFmMWZkOyBjb2xvcjogIzE3NWNkMzsgfQouYW8gLmFvLXRvbm8tcm9qbyAgeyBiYWNrZ3JvdW5kOiAjZmRlY2VjOyBjb2xvcjogI2I0MjMxODsgfQoKLyogTGEgcmVnbGEgZGUgYWxpbmVhY2nDs24gZGVsIHByb3llY3RvOiBlbCBpY29ubyBlbiBzdSBjb2x1bW5hIHkgVE9ETyBlbCB0ZXh0bwogICBlbiBsYSBzZWd1bmRhLCBwYXJhIHF1ZSBjaWZyYSwgcsOzdHVsbyB5IHBpZSBhcnJhbnF1ZW4gZW4gbGEgbWlzbWEgdmVydGljYWwuICovCi5hbyAuYW8tY2lmcmEtdHh0IHsgZmxleDogMTsgbWluLXdpZHRoOiAwOyBkaXNwbGF5OiBibG9jazsgfQovKiBDYWRhIGzDrW5lYSBjb24gc3UgdGFtYcOxbyBERUNMQVJBRE86IGxhIGhvamEgZGVsIHNpdGlvIGZpamEgYGZvbnQ6IDEycHhgCiAgIGNvbiBsYSBmb3JtYSBjb3J0YSB5IGFycmFzYSBlbCBoZXJlZGFkbyBkZSBjdWFscXVpZXIgc3Bhbi4gKi8KLmFvIC5hby1jaWZyYS10eHQgYiB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDI0cHg7IGZvbnQtd2VpZ2h0OiA4MDA7IGxpbmUtaGVpZ2h0OiAxOyBjb2xvcjogdmFyKC0tc2QtdGludGEsICMxNjIxMWEpOyB9Ci5hbyAuYW8tY2lmcmEtdHh0IHNtYWxsIHsgZGlzcGxheTogYmxvY2s7IG1hcmdpbi10b3A6IDNweDsgZm9udC1zaXplOiAxMi41cHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KLmFvIC5hby1jaWZyYS10eHQgc3BhbiB7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW4tdG9wOiAxcHg7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6IHZhcigtLXNkLXN1YXZlLCAjNmI3YTcwKTsgfQoKQG1lZGlhIChtYXgtd2lkdGg6IDkwMHB4KSB7IC5hbyAuYW8tY2lmcmFzIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoMiwgbWlubWF4KDAsIDFmcikpOyB9IH0KQG1lZGlhIChtYXgtd2lkdGg6IDQ4MHB4KSB7IC5hbyAuYW8tY2lmcmFzIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTsgfSB9CgovKiDilIDilIAgTEEgQkFSUkEgREUgRklMVFJPUyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KCi8qIEVsIGJ1c2NhZG9yIHkgbG9zIHNlbGVjdG9yZXMgc29uIGxvcyBkZSBgLmFjLWZpbHRyb3NgIChUQWNjb3VudFVJKSwgbG9zCiAgIG1pc21vcyBkZSB0b2RvcyBsb3MgbGlzdGFkb3MgZGUgbGEgY3VlbnRhLiAqLwoKLyog4pSA4pSAIEJPVE9ORVMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAgIGBidG4tc2Vjb25kYXJ5YCBkZSBmb25kbyB5IGBidG4tcHJpbWFyaW9gIGVsIHF1ZSBtYW5kYSwgcXVlIGVzIGxhIHJlZ2xhIGRlbAogICBwcm95ZWN0byAtLSBhcXXDrSBjb24gbm9tYnJlcyBkZWwgY29tcG9uZW50ZSBwb3JxdWUgZXN0YSBwYW50YWxsYSBubyB2aXZlCiAgIGRlbnRybyBkZSB1biBURm9ybSBuaSBkZSB1biBvdmVybGF5LiAqLwoKLmFvIC5hby1idG4gewogICAgaGVpZ2h0OiA0MnB4OyBwYWRkaW5nOiAwIDE0cHg7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7IGdhcDogOHB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zZC1ib3JkZSwgI2U0ZWFlNCk7CiAgICBib3JkZXItcmFkaXVzOiAxMXB4OwogICAgZm9udC1zaXplOiAxMy41cHg7IGZvbnQtd2VpZ2h0OiA3MDA7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGN1cnNvcjogcG9pbnRlcjsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KLmFvIC5hby1idG46dmlzaXRlZCB7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KLyogRW4gbGEgYmFycmEgZGUgYsO6c3F1ZWRhLCBjb24gZWwgYWx0byBkZSBsYSBiYXJyYSBjb23Dum4gKFRBY2NvdW50VUkpLiAqLwouYW8gLmFjLWZpbHRyb3MgLmFvLWJ0biB7IGhlaWdodDogdmFyKC0tYWMtZmlsdHJvLWFsdG8sIDMwcHgpOyBib3JkZXItcmFkaXVzOiA4cHg7IGZvbnQtc2l6ZTogMTNweDsgfQouYW8gLmFvLWJ0bjpob3ZlciB7IGJvcmRlci1jb2xvcjogdmFyKC0tc2QtdmVyZGUtYm9yZGUsICNjZmUzZDIpOyBiYWNrZ3JvdW5kOiB2YXIoLS1zZC12ZXJkZS1jbGFybywgI2VlZjZlZSk7IH0KLmFvIC5hby1idG4gaWNvbmlmeS1pY29uIHsgZm9udC1zaXplOiAxNnB4OyB9CgouYW8gLmFvLWJ0bi1wcmltYXJpbyB7IGJhY2tncm91bmQ6IHZhcigtLXNkLXZlcmRlLCAjMDQ3MTNhKTsgYm9yZGVyLWNvbG9yOiB0cmFuc3BhcmVudDsgY29sb3I6ICNmZmY7IH0KLmFvIC5hby1idG4tcHJpbWFyaW86dmlzaXRlZCB7IGNvbG9yOiAjZmZmOyB9Ci5hbyAuYW8tYnRuLXByaW1hcmlvOmhvdmVyIHsgYmFja2dyb3VuZDogdmFyKC0tc2QtdmVyZGUtb3NjdXJvLCAjMDA1YzJkKTsgY29sb3I6ICNmZmY7IH0KCi8qIOKUgOKUgCBUw41UVUxPUyBERSBCTE9RVUUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCgouYW8gLmFvLXRpdHVsbyB7IG1hcmdpbjogMDsgZm9udC1zaXplOiAxN3B4OyBmb250LXdlaWdodDogODAwOyBjb2xvcjogdmFyKC0tc2QtdGludGEsICMxNjIxMWEpOyB9Ci5hbyAuYW8tdG9kb3MtY2FiIHsgZGlzcGxheTogZmxleDsgYWxpZ24taXRlbXM6IGJhc2VsaW5lOyBnYXA6IDEwcHg7IG1hcmdpbi1ib3R0b206IDJweDsgfQouYW8gLmFvLXRvZG9zLWNhYiBzcGFuIHsgZm9udC1zaXplOiAxMi41cHg7IGNvbG9yOiB2YXIoLS1zZC1zdWF2ZSwgIzZiN2E3MCk7IH0KLmFvIC5hby1yZWNpZW50ZSB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTBweDsgfQouYW8gLmFvLXRvZG9zIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMHB4OyB9CgovKiDilIDilIAgVU4gUEVESURPIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAogICBDdWF0cm8gY29sdW1uYXM6IHF1acOpbiB5IGN1w6FuZG8sIHF1w6kgbGxldmEsIGN1w6FudG8gY29zdMOzIHkgcXXDqSBzZSBwdWVkZQogICBoYWNlci4gTGEgZm90byB2YSBhcGFydGUsIGEgbGEgaXpxdWllcmRhIGRlbCB0b2RvLiAqLwoKLmFvIC5hby1saXN0YSB7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogMTJweDsgfQoKLmFvIC5hby1wZWRpZG8gewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogNzJweCBtaW5tYXgoMCwgMS4xNWZyKSBtaW5tYXgoMCwgMS4xZnIpIGF1dG8gYXV0bzsKICAgIGdhcDogMTRweDsKICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7CiAgICBwYWRkaW5nOiAxNHB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNkLWJvcmRlLCAjZTRlYWU0KTsKICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7CiAgICBib3gtc2hhZG93OiB2YXIoLS1zZC1zb21icmEsIDAgMnB4IDEwcHggcmdiYSgyMCw0MCwyNSwuMDYpKTsKfQouYW8gLmFvLXBlZGlkbzpob3ZlciB7IGJvcmRlci1jb2xvcjogdmFyKC0tc2QtdmVyZGUtYm9yZGUsICNjZmUzZDIpOyB9CgouYW8gLmFvLXAtZm90byB7CiAgICB3aWR0aDogNzJweDsgaGVpZ2h0OiA3MnB4OyBib3JkZXItcmFkaXVzOiAxMXB4OwogICAgb2JqZWN0LWZpdDogY292ZXI7IGJhY2tncm91bmQ6IHZhcigtLXNkLWNyZW1hLCAjZjdmYWY2KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNkLWJvcmRlLCAjZTRlYWU0KTsKfQoKLmFvIC5hby1wLWlkIHsgbWluLXdpZHRoOiAwOyB9Ci5hbyAuYW8tcC1yZWYgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDhweDsgZmxleC13cmFwOiB3cmFwOyB9Ci5hbyAuYW8tcC1yZWYgYiB7IGZvbnQtc2l6ZTogMTRweDsgZm9udC13ZWlnaHQ6IDgwMDsgY29sb3I6IHZhcigtLXNkLXRpbnRhLCAjMTYyMTFhKTsgfQouYW8gLmFvLXAtaWQgPiBzbWFsbCB7IGRpc3BsYXk6IGJsb2NrOyBtYXJnaW4tdG9wOiAycHg7IGZvbnQtc2l6ZTogMTEuNXB4OyBjb2xvcjogdmFyKC0tc2Qtc3VhdmUsICM2YjdhNzApOyB9CgovKiBMYSBww61sZG9yYSBkZWwgZXN0YWRvLiBFbCBmb25kbyB5IGxhIGxldHJhIGxvcyBwb25lIGVsIHNlcnZpZG9yIGNvbgogICBgU3RhdHVzQmFkZ2VgIC0tc29uIGxvcyBkZSBsYSBmaWNoYSBkZWwgZXN0YWRvLS0geSBhcXXDrSB2YSBzb2xvIGxhIGZvcm1hLiAqLwouYW8gLmFvLXBpbGRvcmEgewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNXB4OwogICAgaGVpZ2h0OiAyMnB4OyBwYWRkaW5nOiAwIDlweDsKICAgIGJvcmRlci1yYWRpdXM6IDk5OXB4OwogICAgZm9udC1zaXplOiAxMXB4OyBmb250LXdlaWdodDogNzAwOyB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgYmFja2dyb3VuZDogI2VlZjJmNjsgY29sb3I6ICM1YjZiN2M7Cn0KLmFvIC5hby1waWxkb3JhIGljb25pZnktaWNvbiB7IGZvbnQtc2l6ZTogMTJweDsgfQoKLyogUXVpw6luIHZlbmRlLiBGb3RvIGVuIHN1IGNvbHVtbmEgeSB0b2RvIGVsIHRleHRvIGVuIGxhIHNlZ3VuZGEuICovCi5hbyAuYW8tcC12ZW5kZWRvciB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOHB4OyBtYXJnaW4tdG9wOiA3cHg7IG1pbi13aWR0aDogMDsgfQouYW8gLmFvLXAtdi1mb3RvLAouYW8gLmFvLXAtdi12YXJpb3MgewogICAgZmxleDogMCAwIGF1dG87IHdpZHRoOiAyNHB4OyBoZWlnaHQ6IDI0cHg7IGJvcmRlci1yYWRpdXM6IDUwJTsKICAgIG9iamVjdC1maXQ6IGNvdmVyOyBiYWNrZ3JvdW5kOiB2YXIoLS1zZC12ZXJkZS1jbGFybywgI2VlZjZlZSk7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zZC1ib3JkZSwgI2U0ZWFlNCk7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICBjb2xvcjogdmFyKC0tc2QtdmVyZGUsICMwNDcxM2EpOwp9Ci5hbyAuYW8tcC12LXZhcmlvcyBpY29uaWZ5LWljb24geyBmb250LXNpemU6IDEzcHg7IH0KLmFvIC5hby1wLXYtdHh0IHsgZmxleDogMTsgbWluLXdpZHRoOiAwOyB9Ci5hbyAuYW8tcC12LXR4dCBiIHsgZm9udC1zaXplOiAxMi41cHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KLmFvIC5hby1wLXYtdHh0IHNtYWxsIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTFweDsgY29sb3I6IHZhcigtLXNkLXN1YXZlLCAjNmI3YTcwKTsgfQoKLmFvIC5hby1wLXYtbm90YSB7IGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDJweDsgbWFyZ2luLWxlZnQ6IDZweDsgZm9udC1zaXplOiAxMS41cHg7IGNvbG9yOiAjYjU4OTAwOyB9Ci5hbyAuYW8tcC12LW5vdGEgaWNvbmlmeS1pY29uIHsgZm9udC1zaXplOiAxMnB4OyB9Ci5hbyAuYW8tcC12LW5vdGEgZW0geyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtd2VpZ2h0OiA3MDA7IH0KCi8qIFF1w6kgbGxldmE6IGxhcyBtaW5pYXR1cmFzIHkgZG9zIGRhdG9zLiAqLwouYW8gLmFvLXAtY29zYXMgeyBtaW4td2lkdGg6IDA7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGdhcDogN3B4OyB9Ci5hbyAuYW8tcC1mb3RvcyB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNXB4OyB9Ci5hbyAuYW8tcC1taW5pIHsKICAgIHdpZHRoOiAzNHB4OyBoZWlnaHQ6IDM0cHg7IGJvcmRlci1yYWRpdXM6IDhweDsKICAgIG9iamVjdC1maXQ6IGNvdmVyOyBiYWNrZ3JvdW5kOiB2YXIoLS1zZC1jcmVtYSwgI2Y3ZmFmNik7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zZC1ib3JkZSwgI2U0ZWFlNCk7Cn0KLmFvIC5hby1wLW1pbmktbWFzIHsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGZvbnQtc2l6ZTogMTFweDsgZm9udC13ZWlnaHQ6IDcwMDsgY29sb3I6IHZhcigtLXNkLXN1YXZlLCAjNmI3YTcwKTsKfQoKLmFvIC5hby1wLWRhdG8geyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogZmxleC1zdGFydDsgZ2FwOiA3cHg7IGZvbnQtc2l6ZTogMTJweDsgY29sb3I6IHZhcigtLXNkLXRleHRvLCAjNDY1MTRhKTsgfQouYW8gLmFvLXAtZGF0byA+IGljb25pZnktaWNvbiB7IGZsZXg6IDAgMCBhdXRvOyBmb250LXNpemU6IDE1cHg7IGNvbG9yOiB2YXIoLS1zZC12ZXJkZSwgIzA0NzEzYSk7IH0KLmFvIC5hby1wLWVudHJlZ2EtdHh0IHsgZmxleDogMTsgbWluLXdpZHRoOiAwOyB9Ci5hbyAuYW8tcC1lbnRyZWdhLXR4dCBiIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTJweDsgZm9udC13ZWlnaHQ6IDYwMDsgY29sb3I6IHZhcigtLXNkLXRpbnRhLCAjMTYyMTFhKTsgfQouYW8gLmFvLXAtZW50cmVnYS10eHQgc21hbGwgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tc2Qtc3VhdmUsICM2YjdhNzApOyB9CgovKiBVbmEgaW5jaWRlbmNpYSBtYW5kYSBzb2JyZSBlbCByZXN0bzogc2kgYWxnbyB2YSBtYWwsIGVzIGxvIHF1ZSBoYXkgcXVlIHZlci4gKi8KLmFvIC5hby1wLWRhdG8uZXMtaW5jaWRlbmNpYSA+IGljb25pZnktaWNvbiB7IGNvbG9yOiAjYjQyMzE4OyB9Ci5hbyAuYW8tcC1kYXRvLmVzLWluY2lkZW5jaWEgLmFvLXAtZW50cmVnYS10eHQgYiB7IGNvbG9yOiAjYjQyMzE4OyB9CgouYW8gLmFvLXAtdG90YWwgeyB0ZXh0LWFsaWduOiByaWdodDsgd2hpdGUtc3BhY2U6IG5vd3JhcDsgfQouYW8gLmFvLXAtdG90YWwgc21hbGwgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tc2Qtc3VhdmUsICM2YjdhNzApOyB9Ci5hbyAuYW8tcC10b3RhbCBiIHsgZGlzcGxheTogYmxvY2s7IG1hcmdpbi10b3A6IDFweDsgZm9udC1zaXplOiAxOHB4OyBmb250LXdlaWdodDogODAwOyBjb2xvcjogdmFyKC0tc2QtdGludGEsICMxNjIxMWEpOyBsZXR0ZXItc3BhY2luZzogLS4zcHg7IH0KLmFvIC5hby1wLXRvdGFsIHNwYW4geyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxMC41cHg7IGNvbG9yOiB2YXIoLS1zZC1zdWF2ZSwgIzZiN2E3MCk7IH0KCi5hbyAuYW8tcC1hY2Npb25lcyB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogNnB4OyB9Ci5hbyAuYW8tcC1hY2Npb25lcyAuYW8tanMtcC1ib3RvbmVzIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA3cHg7IH0KLmFvIC5hby1wLWFjY2lvbmVzIC5hby1idG4geyBoZWlnaHQ6IDM0cHg7IGZvbnQtc2l6ZTogMTIuNXB4OyBtaW4td2lkdGg6IDE1MHB4OyB9CgouYW8gLmFvLXAtbWFzIHsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgd2lkdGg6IDMwcHg7IGhlaWdodDogMzBweDsgcGFkZGluZzogMDsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIGJhY2tncm91bmQ6IG5vbmU7IGJvcmRlcjogMDsgYm9yZGVyLXJhZGl1czogOHB4OwogICAgY29sb3I6IHZhcigtLXNkLXRlbnVlLCAjOTNhMzk5KTsgY3Vyc29yOiBwb2ludGVyOwp9Ci5hbyAuYW8tcC1tYXM6aG92ZXIgeyBiYWNrZ3JvdW5kOiB2YXIoLS1zZC1jcmVtYSwgI2Y3ZmFmNik7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KLmFvIC5hby1wLW1hcyBpY29uaWZ5LWljb24geyBmb250LXNpemU6IDE3cHg7IH0KCi8qIEVzdHJlY2hvOiBsYSBmaWxhIHNlIHJvbXBlIGVuIGRvcyBwbGFudGFzIC0tIGlkZW50aWRhZCBhcnJpYmEsIGVsIHJlc3RvCiAgIGRlYmFqbyAtLSBlbiB2ZXogZGUgY29tcHJpbWlyIGNpbmNvIGNvbHVtbmFzIGhhc3RhIHF1ZSBubyBzZSBsZWEgbmluZ3VuYS4gKi8KQG1lZGlhIChtYXgtd2lkdGg6IDg2MHB4KSB7CiAgICAuYW8gLmFvLXBlZGlkbyB7IGdyaWQtdGVtcGxhdGUtY29sdW1uczogNjBweCBtaW5tYXgoMCwgMWZyKTsgfQogICAgLmFvIC5hby1wLWZvdG8geyB3aWR0aDogNjBweDsgaGVpZ2h0OiA2MHB4OyB9CiAgICAuYW8gLmFvLXAtY29zYXMsCiAgICAuYW8gLmFvLXAtdG90YWwsCiAgICAuYW8gLmFvLXAtYWNjaW9uZXMgeyBncmlkLWNvbHVtbjogMSAvIC0xOyB9CiAgICAuYW8gLmFvLXAtdG90YWwgeyB0ZXh0LWFsaWduOiBsZWZ0OyB9CiAgICAuYW8gLmFvLXAtYWNjaW9uZXMgLmFvLWpzLXAtYm90b25lcyB7IGZsZXgtZGlyZWN0aW9uOiByb3c7IGZsZXgtd3JhcDogd3JhcDsgfQogICAgLmFvIC5hby1wLWFjY2lvbmVzIC5hby1idG4geyBtaW4td2lkdGg6IDA7IGZsZXg6IDEgMSAxNDBweDsgfQp9CgouYW8gLmFvLW1hcyB7IGFsaWduLXNlbGY6IGNlbnRlcjsgbWFyZ2luLXRvcDogNHB4OyB9CgovKiDilIDilIAgRUwgUEVESURPIE3DgVMgUkVDSUVOVEUg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAgIExhIG1hcXVldGE6IGxhIGlkZW50aWRhZCBvY3VwYSBsYSBpenF1aWVyZGEgZW4gbGFzIERPUyBmaWxhcywgeSBhIGxhIGRlcmVjaGEKICAgdmFuIGxvcyBwYXNvcyBhcnJpYmEgeSBlbCBwbGF6bywgZWwgaW1wb3J0ZSB5IGVsIGJvdMOzbiBqdXN0byBkZWJham8uIEVzIGVsCiAgIG9yZGVuIGVuIHF1ZSBzZSBsZWVuIC0tIMKrwr9wb3IgZMOzbmRlIHZhP8K7IHkgZGVzcHXDqXMgwqvCv2N1w6FuZG8geSBjdcOhbnRvP8K7LiAqLwoKLmFvIC5hby1yZWMgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogbWlubWF4KDAsIDM0MHB4KSBtaW5tYXgoMCwgMWZyKTsKICAgIGdyaWQtdGVtcGxhdGUtcm93czogYXV0byBhdXRvOwogICAgZ2FwOiAxNHB4IDIwcHg7CiAgICBwYWRkaW5nOiAxNnB4OwogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNkLXZlcmRlLWJvcmRlLCAjY2ZlM2QyKTsKICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7CiAgICBib3gtc2hhZG93OiB2YXIoLS1zZC1zb21icmEsIDAgMnB4IDEwcHggcmdiYSgyMCw0MCwyNSwuMDYpKTsKfQoKLyogTGFzIGRvcyBmaWxhczogYXPDrSBlbCBwaWUgcXVlZGEgYWxpbmVhZG8gY29uIGxvcyBwYXNvcyB5IG5vIGRlYmFqbyBkZSBsYSBmb3RvLiAqLwouYW8gLmFvLXJlYy1pZCB7IGdyaWQtcm93OiAxIC8gc3BhbiAyOyBkaXNwbGF5OiBmbGV4OyBnYXA6IDEycHg7IG1pbi13aWR0aDogMDsgfQoKLmFvIC5hby1yZWMtZm90byB7CiAgICBmbGV4OiAwIDAgYXV0bzsgd2lkdGg6IDg0cHg7IGhlaWdodDogODRweDsgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIG9iamVjdC1maXQ6IGNvdmVyOyBiYWNrZ3JvdW5kOiB2YXIoLS1zZC1jcmVtYSwgI2Y3ZmFmNik7CiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1zZC1ib3JkZSwgI2U0ZWFlNCk7Cn0KLyogVG9kbyBlbCB0ZXh0byBlbiBsYSBzZWd1bmRhIGNvbHVtbmE6IGxhIHJlZ2xhIGRlIGFsaW5lYWNpw7NuIGRlbCBwcm95ZWN0by4gKi8KLmFvIC5hby1yZWMtdHh0IHsgZmxleDogMTsgbWluLXdpZHRoOiAwOyB9Ci5hbyAuYW8tcmVjLXR4dCA+IHNtYWxsIHsgZGlzcGxheTogYmxvY2s7IG1hcmdpbi10b3A6IDJweDsgZm9udC1zaXplOiAxMS41cHg7IGNvbG9yOiB2YXIoLS1zZC1zdWF2ZSwgIzZiN2E3MCk7IH0KLmFvIC5hby1yZWMtdHh0IC5hby1wLWZvdG9zIHsgbWFyZ2luLXRvcDogOHB4OyB9CgovKiBMb3MgcGFzb3MgeSBsYSBmbGVjaGEsIGVuIGZpbGEuICovCi5hbyAuYW8tcmVjLWFycmliYSB7IGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTBweDsgbWluLXdpZHRoOiAwOyB9Ci5hbyAuYW8tcmVjLWFycmliYSAuYW8tcmVjLXBhc29zIHsgZmxleDogMTsgbWluLXdpZHRoOiAwOyB9CgouYW8gLmFvLXJlYy1mbGVjaGEgewogICAgZmxleDogMCAwIGF1dG87CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsganVzdGlmeS1jb250ZW50OiBjZW50ZXI7CiAgICB3aWR0aDogMzBweDsgaGVpZ2h0OiAzMHB4OyBib3JkZXItcmFkaXVzOiA5cHg7CiAgICBjb2xvcjogdmFyKC0tc2QtdGVudWUsICM5M2EzOTkpOwogICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXI6IDA7Cn0KLmFvIC5hby1yZWMtZmxlY2hhOnZpc2l0ZWQgeyBjb2xvcjogdmFyKC0tc2QtdGVudWUsICM5M2EzOTkpOyB9Ci5hbyAuYW8tcmVjLWZsZWNoYTpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLXNkLXZlcmRlLWNsYXJvLCAjZWVmNmVlKTsgY29sb3I6IHZhcigtLXNkLXZlcmRlLCAjMDQ3MTNhKTsgfQouYW8gLmFvLXJlYy1mbGVjaGEgaWNvbmlmeS1pY29uIHsgZm9udC1zaXplOiAyMHB4OyB9CgovKiDilIDilIAgTEEgUElFTCBERUwgYFRTdGVwUHJvZ3Jlc3NgIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAogICBFTCBDT05UUk9MIEVTIEVMIERFTCBDQVJSSVRPLCBzaW4gdG9jYXJsbzogYXF1w60gc29sbyBzZSBsZSBjYW1iaWEgZWwKICAgYXNwZWN0by4gU3VzIHRva2VucyBgLS1zbC0qYCBwYXJhIGVsIGNvbG9yLCB5IGVsIHJlc3RvIHBhcmEgbG8gcXVlIGxhCiAgIG1hcXVldGEgcGlkZSB5IHN1IHVzbyBub3JtYWwgbm8gdGllbmUgLS0gY8OtcmN1bG9zIHJlbGxlbm9zIGNvbiBpY29ubyBlbiB2ZXoKICAgZGUgbsO6bWVybywgeSB1bmEgZmVjaGEgYmFqbyBjYWRhIHLDs3R1bG8uICovCgouYW8gLmFvLXJlYy1wYXNvcyAuVFN0ZXBQcm9ncmVzcyB7IC0tc2wtdmVyZGU6IHZhcigtLXNkLXZlcmRlLCAjMDQ3MTNhKTsKICAgIC0tc2wtdmVyZGUtY2xhcm86IHZhcigtLXNkLXZlcmRlLWNsYXJvLCAjZWVmNmVlKTsKICAgIC0tc2wtYm9yZGU6ICNjZmQ4ZDI7CiAgICAtLXNsLXRleHRvOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7CiAgICAtLXNsLXRleHRvLXN1YXZlOiB2YXIoLS1zZC10ZXh0bywgIzQ2NTE0YSk7CiAgICAtLXNsLXRleHRvLXRlbnVlOiB2YXIoLS1zZC10ZW51ZSwgIzkzYTM5OSk7CiAgICAtLXNsLXBhbmVsOiAjZmZmOwp9Ci8qIFNpbiBsb3MgYm90b25lcyBkZSDCq0FudGVyaW9yL1NpZ3VpZW50ZcK7OiBlc3RvIGluZm9ybWEsIG5vIG5hdmVnYS4gKi8KLmFvIC5hby1yZWMtcGFzb3MgLlRTdGVwUHJvZ3Jlc3MtYm90b25lcyB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgfQouYW8gLmFvLXJlYy1wYXNvcyAuVFN0ZXBQcm9ncmVzcyB7IHBhZGRpbmc6IDA7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyB9CgovKiBFbCByw7N0dWxvLCBlbiB1bmEgbMOtbmVhIHkgY29uIHN1IGZlY2hhIGRlYmFqby4gRWwgY29udHJvbCBsbyBjb3J0YSBhIDE1Y2gKICAgLS1wZW5zYWRvIHBhcmEgbGEgdGlyYSBlc3RyZWNoYSBkZWwgcG9ydGFsLS0geSBhcXXDrSDCq0VuIHRyw6Fuc2l0b8K7IGNhYmUuICovCi5hbyAuYW8tcmVjLXBhc29zIC5UU3RlcFByb2dyZXNzIC5jaXJjbGUgPiBkaXYgewogICAgbWF4LXdpZHRoOiBub25lOyB3aGl0ZS1zcGFjZTogbm93cmFwOwogICAgZm9udC1zaXplOiAxMnB4OyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogdmFyKC0tc2QtdGludGEsICMxNjIxMWEpOwp9Ci5hbyAuYW8tcmVjLXBhc29zIC5UU3RlcFByb2dyZXNzIC5jaXJjbGUgeyBjdXJzb3I6IGRlZmF1bHQ7IH0KCi8qIExBIEZFQ0hBIGxhIGN1ZWxnYSBlbCBKUyBkZSBjYWRhIGPDrXJjdWxvOiBlbCBjb250cm9sIG5vIHRpZW5lIHVuIGh1ZWNvIHBhcmEKICAgZWxsYSwgeSBlcyBsbyDDum5pY28gcXVlIGxhIG1hcXVldGEgYcOxYWRlIGEgdW4gcGFzby4gKi8KLmFvIC5hby1yZWMtcGFzb3MgLmFvLXBhc28tZmVjaGEgewogICAgZGlzcGxheTogYmxvY2s7IG1hcmdpbi10b3A6IDJweDsKICAgIGZvbnQtc2l6ZTogMTAuNXB4OyBsaW5lLWhlaWdodDogMS4zNTsgY29sb3I6IHZhcigtLXNkLXN1YXZlLCAjNmI3YTcwKTsKICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Cn0KCi8qIOKUgOKUgCBMQSBMw41ORUEgVkEgREUgQ8ONUkNVTE8gQSBDw41SQ1VMTyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICoKICogRWwgY29udHJvbCBsYSBkaWJ1amEgZGUgYm9yZGUgYSBib3JkZSBkZWwgY29udGVuZWRvciAoYGxlZnQ6MDsgd2lkdGg6MTAwJWApLAogKiBxdWUgZXMgbG8gcXVlIHF1aWVyZSBzdSB1c28gbm9ybWFsLiBBcXXDrSBzZSB2ZSBtYWw6IGxvcyBjw61yY3Vsb3Mgc29uCiAqIGBmbGV4OjFgIHkgcXVlZGFuIENFTlRSQURPUyBlbiBzdSBodWVjbywgYXPDrSBxdWUgbGEgcmF5YSBhc29tYSBtZWRpbyBodWVjbwogKiBwb3IgZGVsYW50ZSBkZWwgcHJpbWVybyB5IG1lZGlvIHBvciBkZXRyw6FzIGRlbCDDumx0aW1vLCBjb21vIHNpIGh1YmllcmEgcGFzb3MKICogZnVlcmEgZGUgbGEgcGFudGFsbGEuCiAqCiAqIENvbiBgbmAgcGFzb3MsIGVsIGNlbnRybyBkZWwgcHJpbWVybyBjYWUgZW4gYDUwL24gJWAgeSBlbCBkZWwgw7psdGltbyBlbgogKiBgMTAwIC0gNTAvbiAlYC4gRXNlIGVzIGVsIGNhcnJpbCwgeSBsYXMgZG9zIHJheWFzIC0tbGEgZ3JpcyBkZSBmb25kbyB5IGxhCiAqIHZlcmRlIHF1ZSBzZSBsbGVuYS0tIGFycmFuY2FuIHkgYWNhYmFuIGFow60uIEVsIEpTIHBvbmUgYC0tYW8tdHJhY2stKmAgcG9ycXVlCiAqIGVsIENTUyBubyBzYWJlIGN1w6FudG9zIHBhc29zIGhheS4gKi8KLmFvIC5hby1yZWMtcGFzb3MgLlRTdGVwUHJvZ3Jlc3MgLnByb2dyZXNzLWNvbnRhaW5lcjo6YmVmb3JlIHsKICAgIGxlZnQ6IHZhcigtLWFvLXRyYWNrLWluaSwgMCk7CiAgICB3aWR0aDogdmFyKC0tYW8tdHJhY2stYW5jaG8sIDEwMCUpOwp9Ci5hbyAuYW8tcmVjLXBhc29zIC5UU3RlcFByb2dyZXNzIC5UU3RlcFByb2dyZXNzLWxpbmVhIHsgbGVmdDogdmFyKC0tYW8tdHJhY2staW5pLCAwKTsgfQoKLyog4pSA4pSAIEVMIFBBU08gQUNUVUFMLCBFTiBBWlVMIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAogKgogKiBDb21vIGxhIG1hcXVldGE6IGxvIGhlY2hvIGVuIHZlcmRlIC0tcXVlIGVzIMKrZXN0byB5YSBlc3TDocK7LS0geSBsbyBxdWUgZXN0w6EKICogcGFzYW5kbyBBSE9SQSBlbiBhenVsLCBxdWUgZXMgb3RyYSBjb3NhLiBDb24gbG9zIGRvcyBlbiB2ZXJkZSBoYXkgcXVlIGxlZXIKICogbG9zIHLDs3R1bG9zIHBhcmEgc2FiZXIgcG9yIGTDs25kZSB2YSBlbCBwYXF1ZXRlLCB5IGxhIHRpcmEgZXhpc3RlIGp1c3RvIHBhcmEKICogbm8gdGVuZXIgcXVlIGxlZXJsb3MuICovCi5hbyAuYW8tcmVjLXBhc29zIC5UU3RlcFByb2dyZXNzIC5jaXJjbGUuaXMtY3VycmVudCAuY2lyY2xlLW51bSB7CiAgICBiYWNrZ3JvdW5kOiAjMTc1Y2QzOwogICAgYm9yZGVyLWNvbG9yOiAjMTc1Y2QzOwogICAgY29sb3I6ICNmZmY7CiAgICBib3gtc2hhZG93OiAwIDAgMCA0cHggcmdiYSgyMywgOTIsIDIxMSwgLjE2KTsKfQouYW8gLmFvLXJlYy1wYXNvcyAuVFN0ZXBQcm9ncmVzcyAuY2lyY2xlLmlzLWN1cnJlbnQgPiBkaXYgeyBjb2xvcjogdmFyKC0tc2QtdGludGEsICMxNjIxMWEpOyB9CgovKiDilIDilIAgVU4gU09MTyBTw41NQk9MTyBQT1IgQ8ONUkNVTE8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAqCiAqIEVuIHVuIHBhc28gaGVjaG8gZWwgY29udHJvbCBlc2NvbmRlIGVsIG7Dum1lcm8gY29uIGBmb250LXNpemU6MGAgeSBwaW50YSB1bgogKiDCq+Kck8K7IGNvbiBgOjphZnRlcmAuIEFxdcOtIGRlbnRybyB2YSBudWVzdHJvIGljb25vLCBhc8OtIHF1ZSBzaW4gZXN0byBzYWxkcsOtYW4KICogbG9zIGRvcyAtLWVsIOKckyBkZWwgY29udHJvbCB5IGVsIGBsdWNpZGU6Y2hlY2tgLCBlbmNpbWEtLSB5IGVsIGBmb250LXNpemU6MGAKICogYWRlbcOhcyBlbmNvZ2Vyw61hIGVsIG51ZXN0cm8sIHBvcnF1ZSBgaWNvbmlmeS1pY29uYCBzZSBkaW1lbnNpb25hIGNvbiBsYQogKiBsZXRyYS4gU2UgYXBhZ2EgZWwgc3V5byB5IG1hbmRhbiBlbCBpY29ubyB5IHN1IHRhbWHDsW8uICovCi5hbyAuYW8tcmVjLXBhc29zIC5UU3RlcFByb2dyZXNzIC5jaXJjbGUuaXMtZG9uZSAuY2lyY2xlLW51bSB7IGZvbnQtc2l6ZTogMTVweDsgfQouYW8gLmFvLXJlYy1wYXNvcyAuVFN0ZXBQcm9ncmVzcyAuY2lyY2xlLmlzLWRvbmUgLmNpcmNsZS1udW06OmFmdGVyIHsgY29udGVudDogbm9uZTsgfQoKLyogRWwgaWNvbm8gZGVudHJvIGRlbCBjw61yY3VsbywgZW4gdmV6IGRlbCBuw7ptZXJvLiAqLwouYW8gLmFvLXJlYy1wYXNvcyAuY2lyY2xlLW51bSBpY29uaWZ5LWljb24geyBmb250LXNpemU6IDE1cHg7IH0KCi8qIOKUgOKUgCBFTCBQSUU6IFRSRVMgQ09MVU1OQVMg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAqCiAqIFBsYXpvLCBpbXBvcnRlIHkgYm90b25lcywgZW4gZXNlIG9yZGVuIHkgZW4gdHJlcyBjb2x1bW5hcyBkZSB1biBmbGV4LiBTb2xvCiAqIGNyZWNlIGxhIHByaW1lcmE6IGVsIGltcG9ydGUgeSBsb3MgYm90b25lcyBvY3VwYW4gbG8gc3V5byB5IHNlIHF1ZWRhbgogKiBwZWdhZG9zIGEgbGEgZGVyZWNoYSwgcXVlIGVzIGRvbmRlIHNlIGxvcyBidXNjYS4KICoKICogVE9ETyBDRU5UUkFETyBFTiBWRVJUSUNBTC4gTGFzIHRyZXMgY29zYXMgbWlkZW4gZGlzdGludG8gLS1sYSBjYWphIGRlbCBlbnbDrW8KICogbGxldmEgZG9zIGzDrW5lYXMsIGVsIGltcG9ydGUgdHJlcyB5IHVuIGJvdMOzbiB1bmEtLSB5IGFsaW5lYWRhcyBhcnJpYmEgbGEKICogZmlsYSBzZSBsZWUgY29tbyB0cmVzIGJsb3F1ZXMgc3VlbHRvcyBlbiB2ZXogZGUgY29tbyB1bmEgc29sYSBsw61uZWEuICovCi5hbyAuYW8tcmVjLXBpZSB7CiAgICBkaXNwbGF5OiBmbGV4OwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKICAgIGdhcDogMTRweDsKfQoKLmFvIC5hby1yZWMtZW52aW8gewogICAgZmxleDogMSAxIGF1dG87IG1pbi13aWR0aDogMDsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogMTBweDsKICAgIHBhZGRpbmc6IDEwcHggMTJweDsKICAgIGJhY2tncm91bmQ6IHZhcigtLXNkLWNyZW1hLCAjZjdmYWY2KTsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNkLWJvcmRlLCAjZTRlYWU0KTsKICAgIGJvcmRlci1yYWRpdXM6IDExcHg7Cn0KLmFvIC5hby1yZWMtZW52aW8taWNvbm8geyBmbGV4OiAwIDAgYXV0bzsgZGlzcGxheTogZmxleDsgfQouYW8gLmFvLXJlYy1lbnZpby1pY29ubyBpY29uaWZ5LWljb24geyBmb250LXNpemU6IDE5cHg7IGNvbG9yOiB2YXIoLS1zZC12ZXJkZSwgIzA0NzEzYSk7IH0KLmFvIC5hby1yZWMtZW52aW8tdHh0IHsgZmxleDogMTsgbWluLXdpZHRoOiAwOyB9Ci5hbyAuYW8tcmVjLWVudmlvLXR4dCBiIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTIuNXB4OyBmb250LXdlaWdodDogNzAwOyBjb2xvcjogdmFyKC0tc2QtdGludGEsICMxNjIxMWEpOyB9Ci5hbyAuYW8tcmVjLWVudmlvLXR4dCBzbWFsbCB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDExLjVweDsgY29sb3I6IHZhcigtLXNkLXN1YXZlLCAjNmI3YTcwKTsgfQoKLmFvIC5hby1yZWMtdG90YWwgeyBmbGV4OiAwIDAgYXV0bzsgdGV4dC1hbGlnbjogcmlnaHQ7IH0KLmFvIC5hby1yZWMtdG90YWwgc21hbGwgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxMXB4OyBjb2xvcjogdmFyKC0tc2Qtc3VhdmUsICM2YjdhNzApOyB9Ci5hbyAuYW8tcmVjLXRvdGFsIGIgeyBkaXNwbGF5OiBibG9jazsgbWFyZ2luLXRvcDogMXB4OyBmb250LXNpemU6IDIycHg7IGZvbnQtd2VpZ2h0OiA4MDA7IGNvbG9yOiB2YXIoLS1zZC12ZXJkZSwgIzA0NzEzYSk7IGxldHRlci1zcGFjaW5nOiAtLjRweDsgfQouYW8gLmFvLXJlYy10b3RhbCBzcGFuIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTAuNXB4OyBjb2xvcjogdmFyKC0tc2Qtc3VhdmUsICM2YjdhNzApOyB9CgovKiBMT1MgQk9UT05FUywgVU5PIERFQkFKTyBERSBPVFJPLiBDb24gZG9zIGVuIGZpbGEgbGEgdGVyY2VyYSBjb2x1bW5hIHNlIGNvbWUKICAgZWwgYW5jaG8gZGVsIHBsYXpvLCBxdWUgZXMgbGEgcXVlIHRpZW5lIHRleHRvIGRlIHZlcmRhZDsgZW4gY29sdW1uYSBvY3VwYW4KICAgbG8gbWlzbW8gcXVlIHVubyB5IHNlIGxlZW4gaWd1YWwuICovCi5hbyAuYW8tcmVjLXBpZSAuYW8tanMtci1ib3RvbmVzIHsKICAgIGZsZXg6IDAgMCBhdXRvOwogICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiA4cHg7Cn0KLmFvIC5hby1yZWMtcGllIC5hby1qcy1yLWJvdG9uZXMgLmFvLWJ0biB7IG1pbi13aWR0aDogMTY4cHg7IH0KCi8qIEVzdHJlY2hvOiB1bmEgem9uYSBkZWJham8gZGUgb3RyYSwgeSBsYSBpZGVudGlkYWQgZGVqYSBkZSBvY3VwYXIgZG9zIGZpbGFzLiAqLwpAbWVkaWEgKG1heC13aWR0aDogOTgwcHgpIHsKICAgIC5hbyAuYW8tcmVjIHsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiBtaW5tYXgoMCwgMWZyKTsgfQogICAgLmFvIC5hby1yZWMtaWQgeyBncmlkLXJvdzogYXV0bzsgfQogICAgLmFvIC5hby1yZWMtdG90YWwgeyB0ZXh0LWFsaWduOiBsZWZ0OyB9CiAgICAuYW8gLmFvLXJlYy1waWUgLmFvLWpzLXItYm90b25lcyB7IGZsZXg6IDEgMSAxMDAlOyB9CiAgICAuYW8gLmFvLXJlYy1waWUgLmFvLWpzLXItYm90b25lcyAuYW8tYnRuIHsgZmxleDogMTsgfQp9CgovKiBFTiBFTCBURUzDiUZPTk8sIEVMIFBJRSBTRSBBUElMQSAoMjQvMDkvMjAyNikuIFBsYXpvLCBpbXBvcnRlIHkgYm90b25lcwogICBzZWd1w61hbiBlbiB1bmEgZmlsYSBkZSBmbGV4IGhhc3RhIGVsIGZpbmFsIC0tY29uIGBtaW4td2lkdGg6MTY4cHhgIGVuIGNhZGEKICAgYm90w7NuLS0sIHkgYSAzNjBweCBzZSBwaXNhYmFuIHkgc2FjYWJhbiBsYSBww6FnaW5hIGRlIGxhZG8gKDM2M3B4KS4gQ2FkYSBjb3NhLAogICBlbiBzdSBsw61uZWE6IGVsIHBsYXpvIGVudGVybywgZWwgaW1wb3J0ZSBhIGxhIGl6cXVpZXJkYSB5IGxvcyBib3RvbmVzIGFsCiAgIGFuY2hvIGRlIGxhIHRhcmpldGEuICovCkBtZWRpYSAobWF4LXdpZHRoOiA2MDBweCkgewogICAgLmFvIC5hby1yZWMgeyBwYWRkaW5nOiAxNHB4OyB9CiAgICAuYW8gLmFvLXJlYy1waWUgeyBmbGV4LXdyYXA6IHdyYXA7IGFsaWduLWl0ZW1zOiBzdHJldGNoOyB9CiAgICAuYW8gLmFvLXJlYy1lbnZpbyB7IGZsZXg6IDEgMSAxMDAlOyB9CiAgICAuYW8gLmFvLXJlYy10b3RhbCB7IGZsZXg6IDEgMSAxMDAlOyB9CiAgICAuYW8gLmFvLXJlYy1waWUgLmFvLWpzLXItYm90b25lcyB7IGZsZXg6IDEgMSAxMDAlOyB9CiAgICAvKiBgZmxleDowIDAgYXV0b2A6IGxhIHJlZ2xhIGRlIDk4MHB4IGxlcyBwb25lIGBmbGV4OjFgLCBxdWUgZW4gdW5hIGNvbHVtbmEgZXMKICAgICAgIGJhc2UgMCB5IGxvcyBhcGxhc3RhYmEgYSAxN3B4IGRlIGFsdG8gZW4gdmV6IGRlIGxvcyA0MiBkZWwgYm90w7NuLiAqLwogICAgLmFvIC5hby1yZWMtcGllIC5hby1qcy1yLWJvdG9uZXMgLmFvLWJ0biB7IGZsZXg6IDAgMCBhdXRvOyBtaW4td2lkdGg6IDA7IHdpZHRoOiAxMDAlOyB9Cn0KCi8qIOKUgOKUgCBTSU4gUEVESURPUyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAgKi8KCi5hbyAuYW8tdmFjaW8gewogICAgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA4cHg7CiAgICBwYWRkaW5nOiA0MHB4IDIwcHg7IHRleHQtYWxpZ246IGNlbnRlcjsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXI6IDFweCBkYXNoZWQgdmFyKC0tc2QtYm9yZGUsICNlNGVhZTQpOwogICAgYm9yZGVyLXJhZGl1czogMTRweDsKfQouYW8gLmFvLXZhY2lvLWljb25vIHsgZGlzcGxheTogZmxleDsgY29sb3I6IHZhcigtLXNkLXRlbnVlLCAjOTNhMzk5KTsgfQouYW8gLmFvLXZhY2lvLWljb25vIGljb25pZnktaWNvbiB7IGZvbnQtc2l6ZTogMzRweDsgfQouYW8gLmFvLXZhY2lvIGIgeyBmb250LXNpemU6IDE1cHg7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KLmFvIC5hby12YWNpbyBwIHsgbWFyZ2luOiAwOyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiB2YXIoLS1zZC1zdWF2ZSwgIzZiN2E3MCk7IG1heC13aWR0aDogNDJjaDsgfQoKLyog4pSA4pSAIExBIENPTFVNTkEgREUgQVlVREEg4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSAICovCgouYW8gLmFvLWNhcmQgewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXNkLWJvcmRlLCAjZTRlYWU0KTsKICAgIGJvcmRlci1yYWRpdXM6IDE0cHg7CiAgICBib3gtc2hhZG93OiB2YXIoLS1zZC1zb21icmEsIDAgMnB4IDEwcHggcmdiYSgyMCw0MCwyNSwuMDYpKTsKICAgIHBhZGRpbmc6IDE2cHggMThweCAxOHB4Owp9Ci5hbyAuYW8tY2FyZC1jYWIgeyBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogYmFzZWxpbmU7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgZ2FwOiAxMHB4OyB9Ci5hbyAuYW8tY2FyZC10aXR1bG8geyBtYXJnaW46IDAgMCAxMnB4OyBmb250LXNpemU6IDE1cHg7IGZvbnQtd2VpZ2h0OiA4MDA7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KLmFvIC5hby1jYXJkLWNhYiAuYW8tY2FyZC10aXR1bG8geyBtYXJnaW4tYm90dG9tOiAxMnB4OyB9CgouYW8gLmFvLWVubGFjZSB7CiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZ2FwOiA0cHg7CiAgICBmb250LXNpemU6IDEyLjVweDsgZm9udC13ZWlnaHQ6IDcwMDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXI6IDA7CiAgICBjb2xvcjogdmFyKC0tc2QtdmVyZGUsICMwNDcxM2EpOwp9Ci5hbyAuYW8tZW5sYWNlOnZpc2l0ZWQgeyBjb2xvcjogdmFyKC0tc2QtdmVyZGUsICMwNDcxM2EpOyB9Ci5hbyAuYW8tZW5sYWNlOmhvdmVyIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IH0KLmFvIC5hby1lbmxhY2UgaWNvbmlmeS1pY29uIHsgZm9udC1zaXplOiAxNHB4OyB9CgovKiBTb3BvcnRlIGUgaW1wYWN0bzogZWwgYmxvcXVlIGljb25vICsgdGV4dG8gZGUgc2llbXByZSwgZW4gdmVydGljYWwuICovCi5hbyAuYW8tc29wb3J0ZSwgLmFvIC5hby1pbXBhY3RvIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgZ2FwOiAxMHB4OyB9Ci5hbyAuYW8tc29wb3J0ZSB7IGJhY2tncm91bmQ6IHZhcigtLXNkLXZlcmRlLWNsYXJvLCAjZWVmNmVlKTsgYm9yZGVyLWNvbG9yOiB2YXIoLS1zZC12ZXJkZS1ib3JkZSwgI2NmZTNkMik7IH0KLmFvIC5hby1zb3BvcnRlLWljb25vLCAuYW8gLmFvLWltcGFjdG8taWNvbm8gewogICAgZGlzcGxheTogaW5saW5lLWZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGp1c3RpZnktY29udGVudDogY2VudGVyOwogICAgd2lkdGg6IDM4cHg7IGhlaWdodDogMzhweDsgYm9yZGVyLXJhZGl1czogMTJweDsKICAgIGJhY2tncm91bmQ6ICNmZmY7IGNvbG9yOiB2YXIoLS1zZC12ZXJkZSwgIzA0NzEzYSk7Cn0KLmFvIC5hby1zb3BvcnRlLWljb25vIGljb25pZnktaWNvbiwgLmFvIC5hby1pbXBhY3RvLWljb25vIGljb25pZnktaWNvbiB7IGZvbnQtc2l6ZTogMTlweDsgfQouYW8gLmFvLXNvcG9ydGUgYiwgLmFvIC5hby1pbXBhY3RvIGIgeyBkaXNwbGF5OiBibG9jazsgZm9udC1zaXplOiAxNC41cHg7IGZvbnQtd2VpZ2h0OiA4MDA7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KLmFvIC5hby1zb3BvcnRlIHAsIC5hbyAuYW8taW1wYWN0byBwIHsgbWFyZ2luOiA0cHggMCAwOyBmb250LXNpemU6IDEyLjVweDsgbGluZS1oZWlnaHQ6IDEuNTsgY29sb3I6IHZhcigtLXNkLXRleHRvLCAjNDY1MTRhKTsgfQouYW8gLmFvLWltcGFjdG8geyBiYWNrZ3JvdW5kOiB2YXIoLS1zZC1jcmVtYSwgI2Y3ZmFmNik7IH0KLmFvIC5hby1pbXBhY3RvIC5hby1lbmxhY2UgeyBtYXJnaW4tdG9wOiA4cHg7IH0KCi5hbyAuYW8tYWNjaW9uZXMgeyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyB9CgouYW8gLmFvLWFjY2lvbiB7CiAgICBkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBnYXA6IDEwcHg7CiAgICBwYWRkaW5nOiAxMHB4IDA7CiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGJvcmRlcjogMDsKICAgIGNvbG9yOiB2YXIoLS1zZC10ZXh0bywgIzQ2NTE0YSk7Cn0KLmFvIC5hby1hY2Npb24gKyAuYW8tYWNjaW9uIHsgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXNkLWJvcmRlLCAjZTRlYWU0KTsgfQovKiBMYSByZWdsYSBnbG9iYWwgZGUgYGE6dmlzaXRlZGAgcGludGEgZGUgbmVncm8gZWwgYm9yZGUgZGUgdW4gZW5sYWNlIHlhCiAgIHZpc2l0YWRvLCB5IGVzdG9zIGxsZXZhbiByYXlhIGRlIHNlcGFyYWNpw7NuLiAqLwouYW8gLmFvLWFjY2lvbjp2aXNpdGVkIHsgY29sb3I6IHZhcigtLXNkLXRleHRvLCAjNDY1MTRhKTsgYm9yZGVyLXRvcC1jb2xvcjogdmFyKC0tc2QtYm9yZGUsICNlNGVhZTQpOyB9Ci5hbyAuYW8tYWNjaW9uOmhvdmVyIC5hby1hY2Npb24tdHh0IGIgeyBjb2xvcjogdmFyKC0tc2QtdmVyZGUsICMwNDcxM2EpOyB9CgouYW8gLmFvLWFjY2lvbi1pY29ubyB7CiAgICBmbGV4OiAwIDAgYXV0bzsKICAgIGRpc3BsYXk6IGlubGluZS1mbGV4OyBhbGlnbi1pdGVtczogY2VudGVyOyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsKICAgIHdpZHRoOiAzMnB4OyBoZWlnaHQ6IDMycHg7IGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zZC12ZXJkZS1jbGFybywgI2VlZjZlZSk7IGNvbG9yOiB2YXIoLS1zZC12ZXJkZSwgIzA0NzEzYSk7Cn0KLmFvIC5hby1hY2Npb24taWNvbm8gaWNvbmlmeS1pY29uIHsgZm9udC1zaXplOiAxNnB4OyB9Ci5hbyAuYW8tYWNjaW9uLXR4dCB7IGZsZXg6IDE7IG1pbi13aWR0aDogMDsgfQouYW8gLmFvLWFjY2lvbi10eHQgYiB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDEzcHg7IGZvbnQtd2VpZ2h0OiA3MDA7IGNvbG9yOiB2YXIoLS1zZC10aW50YSwgIzE2MjExYSk7IH0KLmFvIC5hby1hY2Npb24tdHh0IHNtYWxsIHsgZGlzcGxheTogYmxvY2s7IGZvbnQtc2l6ZTogMTEuNXB4OyBjb2xvcjogdmFyKC0tc2Qtc3VhdmUsICM2YjdhNzApOyB9Ci5hbyAuYW8tYWNjaW9uLW1hcyB7IGZsZXg6IDAgMCBhdXRvOyBmb250LXNpemU6IDE2cHg7IGNvbG9yOiB2YXIoLS1zZC10ZW51ZSwgIzkzYTM5OSk7IH0KCi5hbyAuYW8tZmFxIHsgZGlzcGxheTogZmxleDsgZmxleC1kaXJlY3Rpb246IGNvbHVtbjsgfQouYW8gLmFvLWZhcS1maWxhIHsKICAgIGRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7IGdhcDogOXB4OwogICAgcGFkZGluZzogOXB4IDA7CiAgICBmb250LXNpemU6IDEyLjVweDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBib3JkZXI6IDA7CiAgICBjb2xvcjogdmFyKC0tc2QtdGV4dG8sICM0NjUxNGEpOwp9Ci5hbyAuYW8tZmFxLWZpbGEgKyAuYW8tZmFxLWZpbGEgeyBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tc2QtYm9yZGUsICNlNGVhZTQpOyB9Ci5hbyAuYW8tZmFxLWZpbGE6dmlzaXRlZCB7IGNvbG9yOiB2YXIoLS1zZC10ZXh0bywgIzQ2NTE0YSk7IGJvcmRlci10b3AtY29sb3I6IHZhcigtLXNkLWJvcmRlLCAjZTRlYWU0KTsgfQouYW8gLmFvLWZhcS1maWxhOmhvdmVyIHsgY29sb3I6IHZhcigtLXNkLXZlcmRlLCAjMDQ3MTNhKTsgfQouYW8gLmFvLWZhcS1maWxhID4gaWNvbmlmeS1pY29uOmZpcnN0LWNoaWxkIHsgZmxleDogMCAwIGF1dG87IGZvbnQtc2l6ZTogMTVweDsgY29sb3I6IHZhcigtLXNkLXRlbnVlLCAjOTNhMzk5KTsgfQouYW8gLmFvLWZhcS1maWxhID4gc3BhbiB7IGZsZXg6IDE7IG1pbi13aWR0aDogMDsgfQoKLyogUGVkaWRvIHRlcm1pbmFkbzogZWwgw7psdGltbyBwYXNvIGVuIHZlcmRlLCBubyBlbiBlbCBhenVsIGRlIMKrYWhvcmHCuy4gKi8KLmFvIC5hby1yZWMtcGFzb3MgLlRTdGVwUHJvZ3Jlc3MuZXMtdGVybWluYWRvIC5jaXJjbGUuaXMtY3VycmVudCAuY2lyY2xlLW51bSB7CiAgICBiYWNrZ3JvdW5kOiB2YXIoLS1zZC12ZXJkZSwgIzA0NzEzYSk7CiAgICBib3JkZXItY29sb3I6IHZhcigtLXNkLXZlcmRlLCAjMDQ3MTNhKTsKICAgIGJveC1zaGFkb3c6IDAgMCAwIDRweCB2YXIoLS1zZC12ZXJkZS1jbGFybywgI2VlZjZlZSk7Cn0KDQoNCjwvc3R5bGU+DQoNCjxzY3JpcHQgbmFtZT0iVEFjY291bnRPcmRlcnMiID4vKioKICog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAqICBNSVMgUEVESURPUyDigJQgZWwgY29tcG9ydGFtaWVudG8KICog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAqCiAqIEVsIG1hcmNhZG8gdml2ZSBlbiBlbCBgLnBocGA7IGFxdcOtIHNvbG8gc2UgY2xvbmEgeSBzZSByZWxsZW5hLiBOaSB1bmEgY2FkZW5hCiAqIGRlIHBsYW50aWxsYSBjb24gSFRNTCBkZW50cm86IGN1YW5kbyBhbGdvIHNhbGdhIHRvcmNpZG8gaGF5IFVOIHNpdGlvIGRvbmRlCiAqIG1pcmFyLCB5IHNlIHB1ZWRlIGNhbWJpYXIgZWwgbWFyY2FkbyBzaW4gdG9jYXIgY29tcG9ydGFtaWVudG8uCiAqCiAqIFkgdG9kbyBhY290YWRvIGEgYHRoaXMuaHRtbGA6IGVzdGEgcGFudGFsbGEgcHVlZGUgY29udml2aXIgY29uIG90cmFzIGVuIGVsCiAqIHBhbmVsIGRlIGxhIGN1ZW50YSwgeSB1biBgJCgnI2xvUXVlU2VhJylgIGdsb2JhbCBjb2dlcsOtYSBsbyBkZSBsYSB2ZWNpbmEuCiAqLwpjbGFzcyBUQWNjb3VudE9yZGVycyBleHRlbmRzIFRDb21wb25lbnRFUzYgewoKICAgIGNvbnN0cnVjdG9yKHBhcmFtcyA9IHt9KSB7CgogICAgICAgIHN1cGVyKHsgdGl0bGU6ICdNaXMgcGVkaWRvcycsIC4uLnBhcmFtcyB9KTsKCiAgICAgICAgdGhpcy5fdHBsID0gewogICAgICAgICAgICByZWNpZW50ZTogdGhpcy5odG1sLmZpbmQoJy5hby10cGwtcmVjaWVudGUnKVswXSwKICAgICAgICAgICAgcGVkaWRvOiAgIHRoaXMuaHRtbC5maW5kKCcuYW8tdHBsLXBlZGlkbycpWzBdLAogICAgICAgICAgICBmb3RvOiAgICAgdGhpcy5odG1sLmZpbmQoJy5hby10cGwtZm90bycpWzBdLAogICAgICAgICAgICBtYXNGb3RvczogdGhpcy5odG1sLmZpbmQoJy5hby10cGwtbWFzLWZvdG9zJylbMF0sCiAgICAgICAgICAgIGJvdG9uOiAgICB0aGlzLmh0bWwuZmluZCgnLmFvLXRwbC1ib3RvbicpWzBdLAogICAgICAgICAgICBmYXE6ICAgICAgdGhpcy5odG1sLmZpbmQoJy5hby10cGwtZmFxJylbMF0sCiAgICAgICAgfTsKCiAgICAgICAgLyogTG8gcXVlIGhheSBwZWRpZG8gYWhvcmEgbWlzbW8uIGBkZXNkZWAgZXMgZWwgw7puaWNvIHF1ZSBubyB2aWVuZSBkZSB1bgogICAgICAgICAgIGNvbnRyb2w6IGxvIG11ZXZlIMKrVmVyIG3DoXPCuy4gKi8KICAgICAgICB0aGlzLl9maWx0cm8gPSB7IGJ1c2NhcjogJycsIGVzdGFkbzogJycsIGZlY2hhOiAnJywgdmVuZGVkb3I6ICcnLCB0aXBvOiAnJywgb3JkZW46ICcnLCBkZXNkZTogMCB9OwoKICAgICAgICB0aGlzLl9lbmNodWZhcigpOwogICAgICAgIHRoaXMuX2NhcmdhcigpOwogICAgfQoKICAgIC8qKiBDbG9uYSB1biBgPHRlbXBsYXRlPmAgZGVsIG1hcmNhZG8geSBkZXZ1ZWx2ZSBzdSBub2RvIGVuIGpRdWVyeS4gKi8KICAgIF9jbG9uKGN1YWwpIHsKCiAgICAgICAgY29uc3QgdCA9IHRoaXMuX3RwbFtjdWFsXTsKCiAgICAgICAgcmV0dXJuIHQgPyAkKHQuY29udGVudC5jbG9uZU5vZGUodHJ1ZSkuZmlyc3RFbGVtZW50Q2hpbGQpIDogJCgpOwogICAgfQoKICAgIC8qIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogICAgICogIExPUyBDT05UUk9MRVMKICAgICAqIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCAqLwoKICAgIF9lbmNodWZhcigpIHsKCiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7CgogICAgICAgIHRoaXMuaHRtbC5maW5kKCcuYW8tanMtZi1lc3RhZG8nKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBzZWxmLl9maWx0cm8uZXN0YWRvID0gJCh0aGlzKS52YWwoKSB8fCAnJzsKICAgICAgICAgICAgc2VsZi5fZGVzZGVDZXJvKCk7CiAgICAgICAgfSk7CgogICAgICAgIFsnZmVjaGEnLCAndmVuZGVkb3InLCAndGlwbycsICdvcmRlbiddLmZvckVhY2goY2FtcG8gPT4gewogICAgICAgICAgICBzZWxmLmh0bWwuZmluZCgnLmFvLWpzLWYtJyArIGNhbXBvKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgc2VsZi5fZmlsdHJvW2NhbXBvXSA9ICQodGhpcykudmFsKCkgfHwgJyc7CiAgICAgICAgICAgICAgICBzZWxmLl9kZXNkZUNlcm8oKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfSk7CgogICAgICAgIC8qIEVMIEJVU0NBRE9SIEVTUEVSQSBBIFFVRSBTRSBERUpFIERFIEVTQ1JJQklSLiBVbmEgY29uc3VsdGEgcG9yIHRlY2xhCiAgICAgICAgICAgc29uIGRpZXogcGV0aWNpb25lcyBwYXJhIGVzY3JpYmlyIMKrbmFyYW5qYXPCuywgeSBsYXMgcmVzcHVlc3RhcyBwdWVkZW4KICAgICAgICAgICBsbGVnYXIgZGVzb3JkZW5hZGFzOiBsYSBkZSDCq25hcmFuwrsgZGVzcHXDqXMgZGUgbGEgZGUgwqtuYXJhbmphc8K7LiAqLwogICAgICAgIGxldCByZWxvaiA9IG51bGw7CgogICAgICAgIHRoaXMuaHRtbC5vbigna2V5dXAnLCAnLmFvLWpzLWJ1c2NhcicsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgIGNvbnN0IHYgPSAkKHRoaXMpLnZhbCgpIHx8ICcnOwoKICAgICAgICAgICAgaWYgKHJlbG9qKSBjbGVhclRpbWVvdXQocmVsb2opOwoKICAgICAgICAgICAgcmVsb2ogPSBzZXRUaW1lb3V0KCgpID0+IHsgc2VsZi5fZmlsdHJvLmJ1c2NhciA9IHY7IHNlbGYuX2Rlc2RlQ2VybygpOyB9LCAzNTApOwogICAgICAgIH0pOwoKICAgICAgICB0aGlzLmh0bWwub24oJ2NsaWNrJywgJy5hby1qcy1tYXMnLCAoKSA9PiB7CiAgICAgICAgICAgIHRoaXMuX2ZpbHRyby5kZXNkZSA9IHRoaXMuX3BpbnRhZG9zOwogICAgICAgICAgICB0aGlzLl9jYXJnYXIodHJ1ZSk7CiAgICAgICAgfSk7CgogICAgICAgIHRoaXMuaHRtbC5vbignY2xpY2snLCAnLmFvLWpzLWV4cG9ydGFyJywgKCkgPT4gdGhpcy5fZXhwb3J0YXIoKSk7CgogICAgICAgIC8qIMKrVmVyIHNlZ3VpbWllbnRvwrsgZGUgbGFzIGFjY2lvbmVzIHLDoXBpZGFzOiBhbCBkZWwgcGVkaWRvIG3DoXMKICAgICAgICAgICByZWNpZW50ZSwgcXVlIGVzIGRlbCBxdWUgc2UgcHJlZ3VudGEuIFNpbiBuaW5ndW5vLCBhIGxhIGxpc3RhLiAqLwogICAgICAgIHRoaXMuaHRtbC5vbignY2xpY2snLCAnLmFvLWpzLXNlZ3VpbWllbnRvJywgKCkgPT4gewoKICAgICAgICAgICAgaWYgKHRoaXMuX3JlY2llbnRlKSBBY2NvdW50TmF2LmdvKCcvYWNjb3VudC9vcmRlcnMvJyArIHRoaXMuX3JlY2llbnRlICsgJy90cmFja2luZycpOwogICAgICAgICAgICBlbHNlIHRoaXMuaHRtbC5maW5kKCcuYW8tanMtYnVzY2FyJykuZm9jdXMoKTsKICAgICAgICB9KTsKCiAgICAgICAgLyogU29wb3J0ZTogZWwgY2hhdCBxdWUgeWEgZXhpc3RlLCBubyB1biBmb3JtdWxhcmlvIG51ZXZvLiAqLwogICAgICAgIHRoaXMuaHRtbC5vbignY2xpY2snLCAnLmFvLWpzLXNvcG9ydGUnLCAoKSA9PiB0aGlzLl9zb3BvcnRlKCkpOwogICAgfQoKICAgIC8qKiBVbiBmaWx0cm8gbnVldm8gZW1waWV6YSBwb3IgbGEgcHJpbWVyYSBww6FnaW5hLCBubyBwb3IgZG9uZGUgc2UgZXN0YWJhLiAqLwogICAgX2Rlc2RlQ2VybygpIHsKICAgICAgICB0aGlzLl9maWx0cm8uZGVzZGUgPSAwOwogICAgICAgIHRoaXMuX2NhcmdhcigpOwogICAgfQoKICAgIC8qIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogICAgICogIExPUyBEQVRPUwogICAgICog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQICovCgogICAgX2NhcmdhcihhbnlhZGllbmRvKSB7CgogICAgICAgIFROZXRDb20uR0VUKCcvYWNjb3VudC9vcmRlcnMvZGF0YScsIHRoaXMuX2ZpbHRybywgcmVzcCA9PiB7CgogICAgICAgICAgICBpZiAoIXJlc3AgfHwgIXJlc3Aub2spIHJldHVybjsgICAvLyBlbCBhdmlzbyBsbyBzYWNhIFROZXRDb20KCiAgICAgICAgICAgIHRoaXMuX3BpbnRhcihyZXNwLmRhdGEgfHwge30sICEhYW55YWRpZW5kbyk7CiAgICAgICAgfSk7CiAgICB9CgogICAgX3BpbnRhcihkLCBhbnlhZGllbmRvKSB7CgogICAgICAgIGNvbnN0IHMgPSBkLnN0YXRzIHx8IHt9OwoKICAgICAgICB0aGlzLmh0bWwuZmluZCgnLmFvLWpzLXRvdGFsJykudGV4dChzLnRvdGFsICE9IG51bGwgPyBzLnRvdGFsIDogJ+KAlCcpOwogICAgICAgIHRoaXMuaHRtbC5maW5kKCcuYW8tanMtcHJlcGFyYW5kbycpLnRleHQocy5wcmVwYXJhbmRvICE9IG51bGwgPyBzLnByZXBhcmFuZG8gOiAn4oCUJyk7CiAgICAgICAgdGhpcy5odG1sLmZpbmQoJy5hby1qcy10cmFuc2l0bycpLnRleHQocy50cmFuc2l0byAhPSBudWxsID8gcy50cmFuc2l0byA6ICfigJQnKTsKICAgICAgICB0aGlzLmh0bWwuZmluZCgnLmFvLWpzLWVudHJlZ2Fkb3MnKS50ZXh0KHMuZW50cmVnYWRvICE9IG51bGwgPyBzLmVudHJlZ2FkbyA6ICfigJQnKTsKCiAgICAgICAgaWYgKCFhbnlhZGllbmRvKSB7CiAgICAgICAgICAgIHRoaXMuX3ZlbmRlZG9yZXMoZC5zZWxsZXJzIHx8IFtdKTsKICAgICAgICAgICAgdGhpcy5fcmVjaWVudGUoZC5yZWNlbnQgfHwgbnVsbCk7CiAgICAgICAgICAgIHRoaXMuX3ByZWd1bnRhcyhkLmZhcSB8fCBbXSk7CiAgICAgICAgICAgIHRoaXMuaHRtbC5maW5kKCcuYW8tanMtbGlzdGEnKS5lbXB0eSgpOwogICAgICAgICAgICB0aGlzLl9waW50YWRvcyA9IDA7CiAgICAgICAgfQoKICAgICAgICAoZC5vcmRlcnMgfHwgW10pLmZvckVhY2gocCA9PiB0aGlzLmh0bWwuZmluZCgnLmFvLWpzLWxpc3RhJykuYXBwZW5kKHRoaXMuX2ZpbGEocCkpKTsKCiAgICAgICAgdGhpcy5fcGludGFkb3MgPSAodGhpcy5fcGludGFkb3MgfHwgMCkgKyAoZC5vcmRlcnMgfHwgW10pLmxlbmd0aDsKCiAgICAgICAgdGhpcy5fcGllKGQpOwogICAgfQoKICAgIC8qKiBFbCByZWN1ZW50bywgZWwgYm90w7NuIGRlIMKrdmVyIG3DoXPCuyB5IGVsIGh1ZWNvIHZhY8Otby4gKi8KICAgIF9waWUoZCkgewoKICAgICAgICBjb25zdCB0b3RhbCA9IChkLnRvdGFsIHx8IDApOwoKICAgICAgICB0aGlzLmh0bWwuZmluZCgnLmFvLWpzLWN1ZW50YScpLnRleHQoCiAgICAgICAgICAgIHRvdGFsID8gJ01vc3RyYW5kbyAnICsgdGhpcy5fcGludGFkb3MgKyAnIGRlICcgKyB0b3RhbCArICh0b3RhbCA9PT0gMSA/ICcgcGVkaWRvJyA6ICcgcGVkaWRvcycpIDogJycpOwoKICAgICAgICAvKiBDT04gRUwgQVRSSUJVVE8sIE5PIENPTiBgLnRvZ2dsZSgpYC4gRWwgYm90w7NuIG5hY2UgY29uIGBoaWRkZW5gIGVuIGVsCiAgICAgICAgICAgbWFyY2FkbyB5IGxhIGhvamEgbG8gYXBhZ2EgY29uIGBkaXNwbGF5Om5vbmUgIWltcG9ydGFudGA6IHVuCiAgICAgICAgICAgYGRpc3BsYXlgIGVuIGzDrW5lYSBwaWVyZGUgY29udHJhIGVzbywgYXPDrSBxdWUgYC50b2dnbGUodHJ1ZSlgIGxvCiAgICAgICAgICAgZGVqYWJhIGludmlzaWJsZSB5IMKrVmVyIG3DoXPCuyBubyBzYWzDrWEgbnVuY2EuICovCiAgICAgICAgY29uc3QgbWFzID0gdGhpcy5odG1sLmZpbmQoJy5hby1qcy1tYXMnKTsKCiAgICAgICAgaWYgKHRoaXMuX3BpbnRhZG9zIDwgdG90YWwpIG1hcy5yZW1vdmVBdHRyKCdoaWRkZW4nKTsKICAgICAgICBlbHNlIG1hcy5hdHRyKCdoaWRkZW4nLCAnaGlkZGVuJyk7CgogICAgICAgIGNvbnN0IHZhY2lvID0gdGhpcy5odG1sLmZpbmQoJy5hby1qcy12YWNpbycpOwoKICAgICAgICBpZiAodGhpcy5fcGludGFkb3MgfHwgZC5yZWNlbnQpIHsgdmFjaW8uYXR0cignaGlkZGVuJywgJ2hpZGRlbicpOyByZXR1cm47IH0KCiAgICAgICAgLyogRE9TIFZBQ8ONT1MgRElTVElOVE9TLCB5IG5vIGRhIGlndWFsOiBhIHF1aWVuIG51bmNhIGhhIGNvbXByYWRvIHNlIGxlCiAgICAgICAgICAgaW52aXRhIGEgbGEgdGllbmRhLCB5IGEgcXVpZW4gaGEgZmlsdHJhZG8gc2UgbGUgZGljZSBxdWUgYWZsb2plIGVsCiAgICAgICAgICAgZmlsdHJvLiBVbiBzb2xvIHRleHRvIGRlamEgYSB1bm8gZGUgbG9zIGRvcyBzaW4gc2FsaWRhLiAqLwogICAgICAgIGNvbnN0IGZpbHRyYW5kbyA9ICEhKHRoaXMuX2ZpbHRyby5idXNjYXIgfHwgdGhpcy5fZmlsdHJvLmVzdGFkbyB8fCB0aGlzLl9maWx0cm8uZmVjaGEKICAgICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLl9maWx0cm8udmVuZGVkb3IgfHwgdGhpcy5fZmlsdHJvLnRpcG8pOwoKICAgICAgICB0aGlzLmh0bWwuZmluZCgnLmFvLWpzLXZhY2lvLXRpdHVsbycpLnRleHQoCiAgICAgICAgICAgIGZpbHRyYW5kbyA/ICdOaW5nw7puIHBlZGlkbyBjb24gZXNvcyBmaWx0cm9zJyA6ICdUb2RhdsOtYSBubyBoYXMgaGVjaG8gbmluZ8O6biBwZWRpZG8nKTsKCiAgICAgICAgdGhpcy5odG1sLmZpbmQoJy5hby1qcy12YWNpby1waWUnKS50ZXh0KAogICAgICAgICAgICBmaWx0cmFuZG8gPyAnUHJ1ZWJhIGEgcXVpdGFyIGFsZ3VubyBwYXJhIHZlciBtw6FzIHJlc3VsdGFkb3MuJwogICAgICAgICAgICAgICAgICAgICAgOiAnQ3VhbmRvIGNvbXByZXMgYWxnbywgYXF1w60gdmVyw6FzIHN1IGVzdGFkbywgc3UgZmFjdHVyYSB5IHN1IHNlZ3VpbWllbnRvLicpOwoKICAgICAgICB2YWNpby5yZW1vdmVBdHRyKCdoaWRkZW4nKTsKICAgIH0KCiAgICAvKiogTGFzIG9wY2lvbmVzIGRlbCBzZWxlY3RvciBkZSB2ZW5kZWRvcmVzLCBkZSBhIHF1acOpbiBoYSBjb21wcmFkby4gKi8KICAgIF92ZW5kZWRvcmVzKGxpc3RhKSB7CgogICAgICAgIGNvbnN0IHNlbCA9IHRoaXMuaHRtbC5maW5kKCcuYW8tanMtZi12ZW5kZWRvcicpOwoKICAgICAgICAvKiBTZSBjb25zZXJ2YSBsYSBwcmltZXJhIC0twqtUb2Rvc8K7LS0sIHF1ZSBlc3TDoSBlbiBlbCBtYXJjYWRvLiAqLwogICAgICAgIHNlbC5maW5kKCdvcHRpb246Z3QoMCknKS5yZW1vdmUoKTsKCiAgICAgICAgbGlzdGEuZm9yRWFjaCh2ID0+IHNlbC5hcHBlbmQoJCgnPG9wdGlvbj48L29wdGlvbj4nKS5hdHRyKCd2YWx1ZScsIHYuaWQpLnRleHQodi50ZXh0IHx8ICcnKSkpOwoKICAgICAgICBzZWwudmFsKHRoaXMuX2ZpbHRyby52ZW5kZWRvciB8fCAnJyk7CiAgICB9CgogICAgLyog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAgICAgKiAgRUwgUEVESURPIE3DgVMgUkVDSUVOVEUKICAgICAqIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCAqLwoKICAgIF9yZWNpZW50ZShwKSB7CgogICAgICAgIGNvbnN0IHpvbmEgPSB0aGlzLmh0bWwuZmluZCgnLmFvLWpzLXJlY2llbnRlJyk7CiAgICAgICAgY29uc3QgY2FqYSA9IHRoaXMuaHRtbC5maW5kKCcuYW8tanMtcmVjaWVudGUtY2FqYScpLmVtcHR5KCk7CgogICAgICAgIGlmICghcCkgeyB6b25hLmF0dHIoJ2hpZGRlbicsICdoaWRkZW4nKTsgcmV0dXJuOyB9CgogICAgICAgIGNvbnN0IG4gPSB0aGlzLl9jbG9uKCdyZWNpZW50ZScpOwoKICAgICAgICBpZiAoIW4ubGVuZ3RoKSB7IHpvbmEuYXR0cignaGlkZGVuJywgJ2hpZGRlbicpOyByZXR1cm47IH0KCiAgICAgICAgdGhpcy5fZm90byhuLmZpbmQoJy5hby1qcy1yLWZvdG8nKSwgcC5mb3RvKTsKICAgICAgICBuLmZpbmQoJy5hby1qcy1yLXJlZicpLnRleHQocC5yZWYgfHwgJycpOwogICAgICAgIHRoaXMuX3BpbGRvcmEobi5maW5kKCcuYW8tanMtci1lc3RhZG8nKSwgcC5lc3RhZG8pOwogICAgICAgIG4uZmluZCgnLmFvLWpzLXItZmVjaGEnKS50ZXh0KHRoaXMuX3Jlc3VtZW5EZShwKSk7CgogICAgICAgIHRoaXMuX3ZlbmRlZG9yKG4sIHAudmVuZGVkb3IgfHwge30sICdyJyk7CiAgICAgICAgdGhpcy5fZm90b3Mobi5maW5kKCcuYW8tanMtci1mb3RvcycpLCBwLmZvdG9zIHx8IFtdLCA1KTsKCiAgICAgICAgY29uc3QgZSA9IHAuZW50cmVnYSB8fCB7fTsKCiAgICAgICAgaWYgKGUudGl0dWxvKSB7CiAgICAgICAgICAgIG4uZmluZCgnLmFvLWpzLXItZW52aW8nKS5yZW1vdmVBdHRyKCdoaWRkZW4nKTsKICAgICAgICAgICAgbi5maW5kKCcuYW8tanMtci1lbnZpby1iJykudGV4dChlLnRpdHVsbyk7CiAgICAgICAgICAgIG4uZmluZCgnLmFvLWpzLXItZW52aW8tc21hbGwnKS50ZXh0KGUucGllIHx8ICcnKTsKICAgICAgICB9CgogICAgICAgIG4uZmluZCgnLmFvLWpzLXItdG90YWwnKS50ZXh0KHAudG90YWwgfHwgJycpOwogICAgICAgIHRoaXMuX2JvdG9uZXMobi5maW5kKCcuYW8tanMtci1ib3RvbmVzJyksIHAuYWNjaW9uZXMgfHwgW10sIHApOwoKICAgICAgICBjYWphLmFwcGVuZChuKTsKICAgICAgICB6b25hLnJlbW92ZUF0dHIoJ2hpZGRlbicpOwoKICAgICAgICAvKiBTZSBndWFyZGEgcGFyYSBsYXMgYWNjaW9uZXMgcsOhcGlkYXMgZGUgbGEgZGVyZWNoYS4gKi8KICAgICAgICB0aGlzLl9yZWNpZW50ZSA9IHAuaWQ7CgogICAgICAgIC8qIExhIGZsZWNoYSBsbGV2YSBBTCBTRUdVSU1JRU5UTyBkZWwgcGVkaWRvIHJlY2llbnRlOiBlcyBsbyBxdWUKICAgICAgICAgICBwcm9tZXRlIHN1IGBhcmlhLWxhYmVsYCwgeSBsbyBxdWUgc2UgYnVzY2EgYWwgbWlyYXIgZWwgw7psdGltby4gKi8KICAgICAgICBuLmZpbmQoJy5hby1qcy1yLWZsZWNoYScpLmF0dHIoJ2hyZWYnLCAnL2FjY291bnQvb3JkZXJzLycgKyBwLmlkICsgJy90cmFja2luZycpOwoKICAgICAgICB0aGlzLl9wYXNvcyhuLmZpbmQoJy5hby1qcy1yLXBhc29zJyksIHAuc3RlcHMgfHwgW10pOwogICAgfQoKICAgIC8qKgogICAgICog4pSA4pSAIExBIFRJUkEgREUgUEFTT1MgRVMgYFRTdGVwUHJvZ3Jlc3NgLCBFTCBERUwgQ0FSUklUTyDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAgICAqCiAgICAgKiBFbCBtaXNtbyBjb250cm9sIHF1ZSBsYSBjZXN0YSwgZWwgY2hlY2tvdXQgeSBlbCByZXN1bWVuOiBubyBzZSBlc2NyaWJlCiAgICAgKiBhcXXDrSB1biBxdWludG8gaW5kaWNhZG9yIGRlIHBhc29zLiBMbyBxdWUgbGEgbWFxdWV0YSBhw7FhZGUgLS0gZWwgaWNvbm8KICAgICAqIGRlbnRybyBkZWwgY8OtcmN1bG8geSBsYSBmZWNoYSBiYWpvIGVsIHLDs3R1bG8gLS0gbm8gbG8gdGllbmUgZWwgY29udHJvbCwgeQogICAgICogc2UgbGUgY3VlbGdhIGRlc3B1w6lzIGNvbiBqUXVlcnkgc29icmUgbG9zIG5vZG9zIHF1ZSB5YSBoYSBwaW50YWRvLgogICAgICoKICAgICAqIFNlIGNvbnN0cnV5ZW4gTk9ET1MsIG5vIGNhZGVuYXMgZGUgSFRNTDogZXMgbGEgcmVnbGEgZGVsIHByb3llY3RvIHkgYXF1w60KICAgICAqIGFkZW3DoXMgZXZpdGEgdGVuZXIgcXVlIGVzY2FwYXIgbG9zIHLDs3R1bG9zIHF1ZSB2aWVuZW4gZGVsIGNhdMOhbG9nbyBkZQogICAgICogZXN0YWRvcywgcXVlIGxvcyBlZGl0YSBBRE1JTi4KICAgICAqLwogICAgX3Bhc29zKGNhamEsIHBhc29zKSB7CgogICAgICAgIGNhamEuZW1wdHkoKTsKCiAgICAgICAgaWYgKCFwYXNvcy5sZW5ndGggfHwgdHlwZW9mIFRTdGVwUHJvZ3Jlc3MgPT09ICd1bmRlZmluZWQnKSByZXR1cm47CgogICAgICAgIC8qIENVw4FMIEVTIEVMIEFDVFVBTCBMTyBESUNFIEVMIFNFUlZJRE9SIChgY3VycmVudGApLCB5IG5vIHNlIHJlY3VlbnRhCiAgICAgICAgICAgYXF1w606IGVzIGVsIFBSSU1FUk8gcXVlIGZhbHRhLCBubyBlbCDDumx0aW1vIGNvbXBsZXRhZG8gZXN0w6kgZG9uZGUKICAgICAgICAgICBlc3TDqS4gYFRTdGVwUHJvZ3Jlc3NgIGVzIHVuYSBiYXJyYSBsaW5lYWwgeSBwaW50YSBjb21vIHBhc2Fkb3MgdG9kb3MKICAgICAgICAgICBsb3MgYW50ZXJpb3JlcyBhbCBhY3R1YWwsIGFzw60gcXVlIGNvbnTDoW5kb2xvIG1hbCB1biBwZWRpZG8gc2luIHBhZ2FyCiAgICAgICAgICAgY29uIHBhcXVldGVzIHlhIGZvcm1hZG9zIG1hcmNhYmEgwqtQYWdvIGNvbXBsZXRhZG/CuyBjb21vIGhlY2hvLiAqLwogICAgICAgIGxldCBhY3R1YWwgPSBwYXNvcy5maW5kSW5kZXgocCA9PiBwLmN1cnJlbnQpICsgMTsKCiAgICAgICAgaWYgKCFhY3R1YWwpIHBhc29zLmZvckVhY2goKHAsIGkpID0+IHsgaWYgKHAuY29tcGxldGVkKSBhY3R1YWwgPSBpICsgMTsgfSk7CgogICAgICAgIHRoaXMuX3RpcmEgPSBUU3RlcFByb2dyZXNzLmNyZWF0ZSh7CiAgICAgICAgICAgIHN0ZXBzOiBwYXNvcy5tYXAocCA9PiAoeyBpZDogcC5pZCwgdGV4dDogcC50ZXh0IH0pKSwKICAgICAgICAgICAgY3VycmVudEFjdGl2ZTogTWF0aC5tYXgoMSwgYWN0dWFsKSwKICAgICAgICAgICAgY2xpY2thYmxlOiBmYWxzZSwKICAgICAgICAgICAgc2hvd1N0ZXBCdXR0b206IGZhbHNlLAogICAgICAgIH0pOwoKICAgICAgICBjYWphLmFwcGVuZCh0aGlzLl90aXJhLmh0bWwpOwoKICAgICAgICAvKiBUb2RvIGhlY2hvOiBlbCDDumx0aW1vIGRlamEgZGUgc2VyIMKrbG8gcXVlIGVzdMOhIHBhc2FuZG/CuyB5IHNlIHBpbnRhCiAgICAgICAgICAgZW4gdmVyZGUgY29tbyBsb3MgZGVtw6FzLiAqLwogICAgICAgIGlmIChwYXNvcy5zb21lKHAgPT4gcC50ZXJtaW5hZG8pKSBjYWphLmZpbmQoJy5UU3RlcFByb2dyZXNzJykuYWRkQ2xhc3MoJ2VzLXRlcm1pbmFkbycpOwoKICAgICAgICAvKiDilIDilIAgRUwgQ0FSUklMLCBERSBDw41SQ1VMTyBBIEPDjVJDVUxPIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAogICAgICAgICAqCiAgICAgICAgICogRWwgY29udHJvbCBkaWJ1amEgbGEgcmF5YSBkZSBib3JkZSBhIGJvcmRlIGRlbCBjb250ZW5lZG9yLiBDb21vIGxvcwogICAgICAgICAqIGPDrXJjdWxvcyBzb24gYGZsZXg6MWAgeSB2YW4gY2VudHJhZG9zIGVuIHN1IGh1ZWNvLCBhc29tYSBtZWRpbyBodWVjbwogICAgICAgICAqIHBvciBkZWxhbnRlIGRlbCBwcmltZXJvIHkgbWVkaW8gcG9yIGRldHLDoXMgZGVsIMO6bHRpbW8uCiAgICAgICAgICoKICAgICAgICAgKiBDb24gYG5gIHBhc29zLCBlbCBjZW50cm8gZGVsIHByaW1lcm8gY2FlIGVuIGA1MC9uICVgIHkgZWwgZGVsIMO6bHRpbW8KICAgICAgICAgKiBlbiBgMTAwIC0gNTAvbiAlYC4gU2UgbGUgcGFzYW4gYWwgQ1NTIHBvciB2YXJpYWJsZSAtLcOpbCBubyBzYWJlCiAgICAgICAgICogY3XDoW50b3MgcGFzb3MgaGF5LS0geSBzZSByZWNvcnRhIHRhbWJpw6luIGxhIHJheWEgVkVSREUsIGN1eW8gYW5jaG8gZWwKICAgICAgICAgKiBjb250cm9sIGZpamEgZW4gbMOtbmVhIGNvbW8gcG9yY2VudGFqZSBkZWwgY29udGVuZWRvciBlbnRlcm86IHNvYnJlIGVsCiAgICAgICAgICogY2FycmlsIGNvcnRvIGVzZSBwb3JjZW50YWplIHNvYnJhcsOtYSBwb3IgbGEgZGVyZWNoYS4gKi8KICAgICAgICBjb25zdCBuID0gcGFzb3MubGVuZ3RoOwogICAgICAgIGNvbnN0IGluaSA9IDUwIC8gbjsKICAgICAgICBjb25zdCBsYXJnbyA9IDEwMCAtICgxMDAgLyBuKTsKCiAgICAgICAgLyogQ09OIGBzZXRQcm9wZXJ0eWAsIE5PIENPTiBgLmNzcygpYDogZWwgalF1ZXJ5IGRlIGVzdGUgcHJveWVjdG8gZXMgZWwKICAgICAgICAgICAxLjQuMiB5IG5vIHNhYmUgZXNjcmliaXIgcHJvcGllZGFkZXMgcGVyc29uYWxpemFkYXMgLS1sYXMgcGFzYSBwb3Igc3UKICAgICAgICAgICBtYXBhIGRlIG5vbWJyZXMgeSBhY2FiYW4gc2luIGVzY3JpYmlyc2UsIHNpbiBlcnJvci0tLiBDb21wcm9iYWRvOiBsYQogICAgICAgICAgIHZhcmlhYmxlIGxsZWdhYmEgdmFjw61hIHkgZWwgY2FycmlsIHNlZ3XDrWEgZGUgYm9yZGUgYSBib3JkZS4gKi8KICAgICAgICBjb25zdCBub2RvID0gdGhpcy5fdGlyYS5odG1sWzBdOwoKICAgICAgICBpZiAobm9kbykgewogICAgICAgICAgICBub2RvLnN0eWxlLnNldFByb3BlcnR5KCctLWFvLXRyYWNrLWluaScsIGluaSArICclJyk7CiAgICAgICAgICAgIG5vZG8uc3R5bGUuc2V0UHJvcGVydHkoJy0tYW8tdHJhY2stYW5jaG8nLCBsYXJnbyArICclJyk7CiAgICAgICAgfQoKICAgICAgICAvKiBMbyBoZWNobywgbWVkaWRvIHNvYnJlIGVsIGNhcnJpbCB5IG5vIHNvYnJlIGVsIGNvbnRlbmVkb3IuICovCiAgICAgICAgY29uc3QgaGVjaG9zID0gTWF0aC5tYXgoMCwgYWN0dWFsIC0gMSk7CiAgICAgICAgY29uc3QgbGxlbm8gPSBuID4gMSA/IChoZWNob3MgLyAobiAtIDEpKSAqIGxhcmdvIDogMDsKCiAgICAgICAgdGhpcy5fdGlyYS5odG1sLmZpbmQoJy5UU3RlcFByb2dyZXNzLWxpbmVhJykuY3NzKCd3aWR0aCcsIGxsZW5vICsgJyUnKTsKCiAgICAgICAgLyogWSBhaG9yYSBsYSBwaWVsIGRlIGxhIG1hcXVldGEgc29icmUgbG8gcXVlIGVsIGNvbnRyb2wgeWEgcGludMOzLiAqLwogICAgICAgIGNvbnN0IGNpcmN1bG9zID0gY2FqYS5maW5kKCcuY2lyY2xlJyk7CgogICAgICAgIHBhc29zLmZvckVhY2goKHAsIGkpID0+IHsKCiAgICAgICAgICAgIGNvbnN0IGMgPSBjaXJjdWxvcy5lcShpKTsKCiAgICAgICAgICAgIGlmICghYy5sZW5ndGgpIHJldHVybjsKCiAgICAgICAgICAgIC8qIEVMIElDT05PIEVOIFZFWiBERUwgTsOaTUVSTy4gVW4gwqszwrsgbm8gZGljZSBuYWRhOyB1biBjYW1pw7NuIHPDrS4gKi8KICAgICAgICAgICAgY29uc3QgaWNvbm8gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpY29uaWZ5LWljb24nKTsKCiAgICAgICAgICAgIGljb25vLnNldEF0dHJpYnV0ZSgnaWNvbicsIHRoaXMuX2ljb25vRGVQYXNvKHAsIGksIGFjdHVhbCkpOwoKICAgICAgICAgICAgYy5maW5kKCcuY2lyY2xlLW51bScpLmVtcHR5KCkuYXBwZW5kKGljb25vKTsKCiAgICAgICAgICAgIC8qIExhIGZlY2hhLCBiYWpvIGVsIHLDs3R1bG8uIFNpbiBmZWNoYSBubyBzZSBwb25lIGVsIGh1ZWNvOiB1biBwYXNvCiAgICAgICAgICAgICAgIHF1ZSBhw7puIG5vIGhhIHBhc2FkbyBubyB0aWVuZSBjdcOhbmRvLiAqLwogICAgICAgICAgICBpZiAoIXAuZmVjaGEpIHJldHVybjsKCiAgICAgICAgICAgIGNvbnN0IGYgPSAkKCc8c21hbGwgY2xhc3M9ImFvLXBhc28tZmVjaGEiPjwvc21hbGw+JykudGV4dChwLmZlY2hhICsgKHAuaG9yYSA/ICcgwrcgJyArIHAuaG9yYSA6ICcnKSk7CgogICAgICAgICAgICBjLmZpbmQoJ2RpdicpLmZpcnN0KCkuYWZ0ZXIoZik7CiAgICAgICAgfSk7CiAgICB9CgogICAgLyoqIFF1w6kgaWNvbm8gbGUgdG9jYSBhIGNhZGEgcGFzbzogaGVjaG8sIGVuIGN1cnNvIG8gcG9yIHZlbmlyLiAqLwogICAgX2ljb25vRGVQYXNvKHBhc28sIGksIGFjdHVhbCkgewoKICAgICAgICBpZiAocGFzby5jb21wbGV0ZWQgJiYgKGkgKyAxKSA8IGFjdHVhbCkgcmV0dXJuICdsdWNpZGU6Y2hlY2snOwogICAgICAgIGlmICgoaSArIDEpID09PSBhY3R1YWwpIHJldHVybiAnbHVjaWRlOnRydWNrJzsKCiAgICAgICAgcmV0dXJuICdsdWNpZGU6cGFja2FnZSc7CiAgICB9CgogICAgLyog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAgICAgKiAgVU5BIEZJTEEKICAgICAqIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkCAqLwoKICAgIF9maWxhKHApIHsKCiAgICAgICAgY29uc3QgbiA9IHRoaXMuX2Nsb24oJ3BlZGlkbycpOwoKICAgICAgICBpZiAoIW4ubGVuZ3RoKSByZXR1cm4gJCgpOwoKICAgICAgICB0aGlzLl9mb3RvKG4uZmluZCgnLmFvLWpzLXAtZm90bycpLCBwLmZvdG8pOwogICAgICAgIG4uZmluZCgnLmFvLWpzLXAtcmVmJykudGV4dChwLnJlZiB8fCAnJyk7CiAgICAgICAgdGhpcy5fcGlsZG9yYShuLmZpbmQoJy5hby1qcy1wLWVzdGFkbycpLCBwLmVzdGFkbyk7CiAgICAgICAgbi5maW5kKCcuYW8tanMtcC1mZWNoYScpLnRleHQodGhpcy5fcmVzdW1lbkRlKHApKTsKCiAgICAgICAgdGhpcy5fdmVuZGVkb3IobiwgcC52ZW5kZWRvciB8fCB7fSwgJ3AnKTsKICAgICAgICB0aGlzLl9mb3RvcyhuLmZpbmQoJy5hby1qcy1wLWZvdG9zJyksIHAuZm90b3MgfHwgW10sIDMpOwoKICAgICAgICBuLmZpbmQoJy5hby1qcy1wLWN1YW50b3MnKS50ZXh0KHRoaXMuX2N1YW50b3NEZShwKSk7CgogICAgICAgIGNvbnN0IGUgPSBwLmVudHJlZ2EgfHwge307CgogICAgICAgIG4uZmluZCgnLmFvLWpzLXAtZW50cmVnYS1iJykudGV4dChlLnRpdHVsbyB8fCAnJyk7CiAgICAgICAgbi5maW5kKCcuYW8tanMtcC1lbnRyZWdhLXNtYWxsJykudGV4dChlLnBpZSB8fCAnJyk7CiAgICAgICAgbi5maW5kKCcuYW8tanMtcC1lbnRyZWdhLWljb25vJykuYXR0cignaWNvbicsIGUuaWNvbm8gfHwgJ2x1Y2lkZTp0cnVjaycpOwoKICAgICAgICAvKiBVbmEgaW5jaWRlbmNpYSBtYW5kYSBzb2JyZSBlbCByZXN0byBkZSBsYSBmaWxhOiBzaSBhbGdvIHZhIG1hbCwgZXMgbG8KICAgICAgICAgICBxdWUgaGF5IHF1ZSB2ZXIgYW50ZXMgcXVlIGxhIGZlY2hhIG8gZWwgaW1wb3J0ZS4gKi8KICAgICAgICBpZiAocC5pbmNpZGVuY2lhKSBuLmZpbmQoJy5hby1qcy1wLWVudHJlZ2EnKS5hZGRDbGFzcygnZXMtaW5jaWRlbmNpYScpOwoKICAgICAgICBuLmZpbmQoJy5hby1qcy1wLXRvdGFsJykudGV4dChwLnRvdGFsIHx8ICcnKTsKICAgICAgICB0aGlzLl9ib3RvbmVzKG4uZmluZCgnLmFvLWpzLXAtYm90b25lcycpLCBwLmFjY2lvbmVzIHx8IFtdLCBwKTsKCiAgICAgICAgbi5maW5kKCcuYW8tanMtcC1tYXMnKS5vbignY2xpY2snLCAoKSA9PiB0aGlzLl9pcihwKSk7CgogICAgICAgIHJldHVybiBuOwogICAgfQoKICAgIC8qIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogICAgICogIExBUyBQSUVaQVMgUVVFIENPTVBBUlRFTiBMT1MgRE9TCiAgICAgKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KCiAgICAvKiogwqtSZWFsaXphZG8gZWwgNSBtYXIgMjAyNiDCtyAzIHByb2R1Y3Rvc8K7LiAqLwogICAgX3Jlc3VtZW5EZShwKSB7CgogICAgICAgIGNvbnN0IHBhcnRlcyA9IFtdOwoKICAgICAgICBpZiAocC5mZWNoYSkgcGFydGVzLnB1c2goJ1JlYWxpemFkbyBlbCAnICsgcC5mZWNoYSk7CgogICAgICAgIGlmIChwLnByb2R1Y3RvcykgcGFydGVzLnB1c2gocC5wcm9kdWN0b3MgKyAocC5wcm9kdWN0b3MgPT09IDEgPyAnIHByb2R1Y3RvJyA6ICcgcHJvZHVjdG9zJykpOwoKICAgICAgICByZXR1cm4gcGFydGVzLmpvaW4oJyDCtyAnKTsKICAgIH0KCiAgICAvKiogwqszIHByb2R1Y3RvcyAoNyBrZynCuywgeSBzaW4gZWwgcGVzbyBzaSBuYWRpZSBsbyBkZWNsYXJhLiAqLwogICAgX2N1YW50b3NEZShwKSB7CgogICAgICAgIGNvbnN0IG4gPSBwLnByb2R1Y3RvcyB8fCAwOwogICAgICAgIGNvbnN0IHQgPSBuICsgKG4gPT09IDEgPyAnIHByb2R1Y3RvJyA6ICcgcHJvZHVjdG9zJyk7CgogICAgICAgIHJldHVybiBwLnBlc28gPyB0ICsgJyAoJyArIHAucGVzbyArICcpJyA6IHQ7CiAgICB9CgogICAgLyoqIFVuYSBmb3RvLCBvIGZ1ZXJhOiB1biByZWN1YWRybyByb3RvIGVzIHBlb3IgcXVlIHVuIGh1ZWNvLiAqLwogICAgX2ZvdG8oaW1nLCB1cmwpIHsKCiAgICAgICAgaWYgKHVybCkgaW1nLmF0dHIoJ3NyYycsIHVybCk7CiAgICAgICAgZWxzZSBpbWcucmVtb3ZlKCk7CiAgICB9CgogICAgLyoqCiAgICAgKiBMYSBww61sZG9yYSBkZWwgZXN0YWRvLCBjb24gbG9zIGNvbG9yZXMgcXVlIG1hbmRhIGVsIHNlcnZpZG9yLgogICAgICoKICAgICAqIFNhbGVuIGRlIGxhIGZpY2hhIGRlbCBlc3RhZG8gcG9yIGBTdGF0dXNCYWRnZWAsIGFzw60gcXVlIHZhbiBlbiBgc3R5bGVgIHkKICAgICAqIG5vIGVuIHVuYSBjbGFzZTogZWwgYWRtaW5pc3RyYWRvciBwdWVkZSBjYW1iaWFybG9zIHkgZWwgQ1NTIG5vIHNhYmUKICAgICAqIGN1w6FudG9zIGVzdGFkb3MgaGF5IG5pIGRlIHF1w6kgY29sb3IgZXMgY2FkYSB1bm8uCiAgICAgKi8KICAgIF9waWxkb3JhKGVsLCBlc3RhZG8pIHsKCiAgICAgICAgaWYgKCFlc3RhZG8gfHwgIWVzdGFkby5sYWJlbCkgeyBlbC5yZW1vdmUoKTsgcmV0dXJuOyB9CgogICAgICAgIGVsLnRleHQoZXN0YWRvLmxhYmVsKS5jc3MoeyBiYWNrZ3JvdW5kOiBlc3RhZG8uYmcsIGNvbG9yOiBlc3RhZG8uZmcgfSk7CiAgICB9CgogICAgLyoqIFF1acOpbiB2ZW5kZTogdW5vIGNvbiBzdSBub3RhIHkgc3Ugc2l0aW8sIG8gwqtWYXJpb3MgdmVuZGVkb3Jlc8K7LiAqLwogICAgX3ZlbmRlZG9yKG4sIHYsIHByZSkgewoKICAgICAgICBuLmZpbmQoJy5hby1qcy0nICsgcHJlICsgJy12LW5vbWJyZScpLnRleHQodi5ub21icmUgfHwgJycpOwogICAgICAgIG4uZmluZCgnLmFvLWpzLScgKyBwcmUgKyAnLXYtbHVnYXInKS50ZXh0KHYubHVnYXIgfHwgJycpOwoKICAgICAgICBpZiAodi52YXJpb3MpIHsKICAgICAgICAgICAgbi5maW5kKCcuYW8tanMtJyArIHByZSArICctdi1mb3RvJykucmVtb3ZlKCk7CiAgICAgICAgICAgIG4uZmluZCgnLmFvLWpzLScgKyBwcmUgKyAnLXYtdmFyaW9zJykucmVtb3ZlQXR0cignaGlkZGVuJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHRoaXMuX2ZvdG8obi5maW5kKCcuYW8tanMtJyArIHByZSArICctdi1mb3RvJyksIHYuZm90byk7CgogICAgICAgIGlmICh2Lm5vdGEpIHsKICAgICAgICAgICAgbi5maW5kKCcuYW8tanMtJyArIHByZSArICctdi1ub3RhJykucmVtb3ZlQXR0cignaGlkZGVuJyk7CiAgICAgICAgICAgIG4uZmluZCgnLmFvLWpzLScgKyBwcmUgKyAnLXYtdmFsb3InKS50ZXh0KFN0cmluZyh2Lm5vdGEpLnJlcGxhY2UoJy4nLCAnLCcpKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqIExhcyBtaW5pYXR1cmFzLCBjb24gZWwgwqsrTsK7IGN1YW5kbyBubyBjYWJlbiB0b2Rhcy4gKi8KICAgIF9mb3RvcyhjYWphLCBmb3RvcywgdG9wZSkgewoKICAgICAgICBjYWphLmVtcHR5KCk7CgogICAgICAgIGZvdG9zLnNsaWNlKDAsIHRvcGUpLmZvckVhY2godXJsID0+IHsKCiAgICAgICAgICAgIGNvbnN0IGYgPSB0aGlzLl9jbG9uKCdmb3RvJyk7CgogICAgICAgICAgICBpZiAoZi5sZW5ndGgpIGNhamEuYXBwZW5kKGYuYXR0cignc3JjJywgdXJsKSk7CiAgICAgICAgfSk7CgogICAgICAgIGlmIChmb3Rvcy5sZW5ndGggPD0gdG9wZSkgcmV0dXJuOwoKICAgICAgICBjb25zdCBtYXMgPSB0aGlzLl9jbG9uKCdtYXNGb3RvcycpOwoKICAgICAgICBpZiAobWFzLmxlbmd0aCkgY2FqYS5hcHBlbmQobWFzLnRleHQoJysnICsgKGZvdG9zLmxlbmd0aCAtIHRvcGUpKSk7CiAgICB9CgogICAgLyoqCiAgICAgKiBMb3MgYm90b25lcyBkZSB1biBwZWRpZG8uIEVsIFBSSU1FUk8gZXMgZWwgcHJpbmNpcGFsIHkgdmEgcmVsbGVubzogc2luCiAgICAgKiBqZXJhcnF1w61hLCDCq0NvbnRhY3RhciBzb3BvcnRlwrsgcGVzYSBsbyBtaXNtbyBxdWUgwqtWZXIgcGVkaWRvwrsuCiAgICAgKi8KICAgIF9ib3RvbmVzKGNhamEsIGFjY2lvbmVzLCBwZWRpZG8pIHsKCiAgICAgICAgY2FqYS5lbXB0eSgpOwoKICAgICAgICBhY2Npb25lcy5mb3JFYWNoKChhLCBpKSA9PiB7CgogICAgICAgICAgICBjb25zdCBiID0gdGhpcy5fY2xvbignYm90b24nKTsKCiAgICAgICAgICAgIGlmICghYi5sZW5ndGgpIHJldHVybjsKCiAgICAgICAgICAgIGlmIChpID09PSAwKSBiLmFkZENsYXNzKCdhby1idG4tcHJpbWFyaW8nKTsKCiAgICAgICAgICAgIGIuZmluZCgnaWNvbmlmeS1pY29uJykuYXR0cignaWNvbicsIGEuaWNvbiB8fCAnbHVjaWRlOmNoZXZyb24tcmlnaHQnKTsKICAgICAgICAgICAgYi5maW5kKCdzcGFuJykudGV4dChhLmxhYmVsIHx8ICcnKTsKCiAgICAgICAgICAgIGIub24oJ2NsaWNrJywgKCkgPT4gdGhpcy5fYWNjaW9uKGEsIHBlZGlkbykpOwoKICAgICAgICAgICAgY2FqYS5hcHBlbmQoYik7CiAgICAgICAgfSk7CiAgICB9CgogICAgLyog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAgICAgKiAgTE8gUVVFIEhBQ0VOIExPUyBCT1RPTkVTCiAgICAgKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KCiAgICBfYWNjaW9uKGEsIHBlZGlkbykgewoKICAgICAgICBpZiAoYS5pZCA9PT0gJ3NvcG9ydGUnKSByZXR1cm4gdGhpcy5fc29wb3J0ZShwZWRpZG8pOwoKICAgICAgICBpZiAoYS5pZCA9PT0gJ3JlcGV0aXInKSB7CgogICAgICAgICAgICByZXR1cm4gVE5ldENvbS5QT1NUKCcvYWNjb3VudC9vcmRlcnMvJyArIHBlZGlkby5pZCArICcvcmVwZWF0JywgbnVsbCwgcmVzcCA9PiB7CiAgICAgICAgICAgICAgICBpZiAocmVzcCAmJiByZXNwLm9rKSBsb2NhdGlvbi5ocmVmID0gJy9jYXJ0L3N1bW1hcnknOwogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIGlmIChhLnVybCkgQWNjb3VudE5hdi5nbyhhLnVybCk7CiAgICB9CgogICAgLyoqIElyIGEgbGEgZmljaGEgZGVsIHBlZGlkbywgcXVlIGVzIGxvIHF1ZSBoYWNlIGVsIMKr4ouuwrsgeSBlbCDCq1ZlciBwZWRpZG/Cuy4gKi8KICAgIF9pcihwZWRpZG8pIHsKCiAgICAgICAgY29uc3QgdmVyID0gKHBlZGlkby5hY2Npb25lcyB8fCBbXSkuZmlsdGVyKGEgPT4gYS51cmwpWzBdOwoKICAgICAgICAvKiBQb3IgZWwgbWVuw7osIHNpbiByZWNhcmdhciBlbCBwYW5lbCAodmVyIGBBY2NvdW50TmF2YCkuICovCiAgICAgICAgaWYgKHZlcikgQWNjb3VudE5hdi5nbyh2ZXIudXJsKTsKICAgIH0KCiAgICAvKioKICAgICAqIMKrQ09OVEFDVEFSIFNPUE9SVEXCuyBBQlJFIFVOQSBJTkNJREVOQ0lBLCBubyBlbCBoaWxvIGRlbCBwZWRpZG8uCiAgICAgKgogICAgICogU29uIGRvcyBjb252ZXJzYWNpb25lcyBkaXN0aW50YXMgeSBzZSBjb25mdW5kw61hbiBlbiBlbCBtaXNtbyBib3TDs246CiAgICAgKgogICAgICogICDCtyBFbCBoaWxvIGRlbCBwZWRpZG8gKGBPcmRlcjp7aWR9YCkgZXMgZG9uZGUgc2UgaGFibGEgQ09OIEVMIFZFTkRFRE9SCiAgICAgKiAgICAgZGUgdW5hIGVudHJlZ2E6IGN1w6FuZG8gc2FsZSwgc2kgY2FiZSBvdHJhIGNhamEuCiAgICAgKiAgIMK3IFVuYSBJTkNJREVOQ0lBIGVzIHVuIGV4cGVkaWVudGUgZGUgc29wb3J0ZSBjb24gc3UgbsO6bWVybywgc3UgZXN0YWRvLAogICAgICogICAgIHN1IHByaW9yaWRhZCB5IHN1IHBsYXpvIC0tIGxvIHF1ZSBoYWNlIGZhbHRhIGN1YW5kbyBhbGdvIGhhIHNhbGlkbwogICAgICogICAgIG1hbCB5IGFsZ3VpZW4gdGllbmUgcXVlIHJlc3BvbmRlciBkZSBlbGxvLgogICAgICoKICAgICAqIEVsIGZvcm11bGFyaW8gc2FsZSBBUVXDjSwgZW4gdW4gb3ZlcmxheSBlbmNpbWEgZGVsIGxpc3RhZG8sIHkgbG8gcXVlIHNlCiAgICAgKiBjcmVhIGVzIHVuIGBTdXBwb3J0SW5jaWRlbnRgIHZpbmN1bGFkbyBhIGVzZSBwZWRpZG8uIE5hdmVnYXIgYSBsYSBzZWNjacOzbgogICAgICogZGUgU29wb3J0ZSBwYXJhIHF1ZSBmdWVyYSBlbGxhIGxhIHF1ZSBhYnJpZXJhIGVsIG92ZXJsYXkgLS1jb21vIHNlIGhhY8OtYQogICAgICogYW50ZXMtLSBsZSBxdWl0YWJhIGRlIGRlbGFudGUgbGEgbGlzdGEgZW4gbGEgcXVlIGVzdGFiYSB0cmFiYWphbmRvOyBhCiAgICAgKiBTb3BvcnRlIHNlIHZhIERFU1BVw4lTLCBjb24gZWwgZXhwZWRpZW50ZSBhYmllcnRvLgogICAgICoKICAgICAqIEVsIG1vbnRhamUgZXMgZGUgYFN1cHBvcnRUaWNrZXRGb3JtYCAoYFRTdXBwb3J0VGlja2V0Rm9ybWApLCBlbCBtaXNtbwogICAgICogYWJyaWRvciBxdWUgdXNhbiBsYSBmaWNoYSBkZWwgcGVkaWRvIHkgbGEgc2VjY2nDs24gZGUgU29wb3J0ZS4KICAgICAqCiAgICAgKiBTaW4gcGVkaWRvIG5vIGhheSBpbmNpZGVuY2lhIHF1ZSBhYnJpcjogZXNvIGVzIHVuYSBjb25zdWx0YSwgeSBzZSBoYWNlCiAgICAgKiBkZXNkZSBsYSBwcm9waWEgc2VjY2nDs24gbyBkZXNkZSBlbCBiYWRnZSBkZSBzb3BvcnRlLgogICAgICovCiAgICBfc29wb3J0ZShwZWRpZG8pIHsKCiAgICAgICAgY29uc3QgaWQgPSAocGVkaWRvICYmIHBlZGlkby5pZCkgPyBwZWRpZG8uaWQgOiAwOwoKICAgICAgICBpZiAoIXdpbmRvdy5TdXBwb3J0VGlja2V0Rm9ybSkgewoKICAgICAgICAgICAgLyogU2luIGVsIGFicmlkb3IgZW4gbGEgcMOhZ2luYSBubyBzZSBkZWphIGFsIGNsaWVudGUgc2luIGNhbWlubzogc2UKICAgICAgICAgICAgICAgdmEgYSBTb3BvcnRlIGNvbiBlbCBwZWRpZG8gcHVlc3RvLCBxdWUgZXMgbG8gcXVlIGhhY8OtYSBlc3RvIGFudGVzCiAgICAgICAgICAgICAgIHkgYWxsw60gZWwgb3ZlcmxheSBzZSBhYnJlIGlndWFsLiAqLwogICAgICAgICAgICBBY2NvdW50TmF2LmdvKGlkCiAgICAgICAgICAgICAgICA/ICcvYWNjb3VudC9zdXBwb3J0P29yZGVyPScgKyBlbmNvZGVVUklDb21wb25lbnQoaWQpCiAgICAgICAgICAgICAgICA6ICcvYWNjb3VudC9zdXBwb3J0Jyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGNvbnN0IHJlZiA9IChwZWRpZG8gJiYgcGVkaWRvLnJlZikgPyBwZWRpZG8ucmVmIDogJyc7CgogICAgICAgIHdpbmRvdy5TdXBwb3J0VGlja2V0Rm9ybS5vcGVuKHsKICAgICAgICAgICAgb3JkZXJJZDogaWQsCiAgICAgICAgICAgIHN1YnRpdGxlOiByZWYgPyAoJ0luY2lkZW5jaWEgc29icmUgZWwgcGVkaWRvICcgKyByZWYpIDogbnVsbCwKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEVYUE9SVEFSIEVMIEhJU1RPUklBTC4KICAgICAqCiAgICAgKiBTZSBwaWRlIENPTiBMT1MgRklMVFJPUyBQVUVTVE9TOiBxdWllbiBoYSBmaWx0cmFkbyDCqzIwMjUsIEh1ZXJ0YSBkZWwKICAgICAqIFZhbGxlwrsgeSBwdWxzYSBleHBvcnRhciBlc3BlcmEgZXNlIHRyb3pvLCBubyBsb3MgODEgcGVkaWRvcyBlbnRlcm9zLgogICAgICovCiAgICBfZXhwb3J0YXIoKSB7CgogICAgICAgIGNvbnN0IHEgPSBbXTsKCiAgICAgICAgT2JqZWN0LmtleXModGhpcy5fZmlsdHJvKS5mb3JFYWNoKGsgPT4gewogICAgICAgICAgICBpZiAoayAhPT0gJ2Rlc2RlJyAmJiB0aGlzLl9maWx0cm9ba10pIHEucHVzaChrICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuX2ZpbHRyb1trXSkpOwogICAgICAgIH0pOwoKICAgICAgICBsb2NhdGlvbi5ocmVmID0gJy9hY2NvdW50L29yZGVycy9leHBvcnQnICsgKHEubGVuZ3RoID8gJz8nICsgcS5qb2luKCcmJykgOiAnJyk7CiAgICB9CgogICAgLyog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAgICAgKiAgTEFTIFBSRUdVTlRBUyBGUkVDVUVOVEVTCiAgICAgKiDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZAgKi8KCiAgICBfcHJlZ3VudGFzKGxpc3RhKSB7CgogICAgICAgIGNvbnN0IGNhcmQgPSB0aGlzLmh0bWwuZmluZCgnLmFvLWpzLWZhcS1jYXJkJyk7CiAgICAgICAgY29uc3QgY2FqYSA9IHRoaXMuaHRtbC5maW5kKCcuYW8tanMtZmFxJykuZW1wdHkoKTsKCiAgICAgICAgLyogU2luIGF5dWRhIHB1YmxpY2FkYSB0b2RhdsOtYSwgbGEgdGFyamV0YSBubyBzYWxlOiB1biBibG9xdWUgY29uIHN1CiAgICAgICAgICAgdMOtdHVsbyB5IG5pbmd1bmEgcHJlZ3VudGEgc2UgbGVlIGNvbW8gYWxnbyBxdWUgZmFsbMOzIGFsIGNhcmdhci4gKi8KICAgICAgICBpZiAoIWxpc3RhLmxlbmd0aCkgeyBjYXJkLmF0dHIoJ2hpZGRlbicsICdoaWRkZW4nKTsgcmV0dXJuOyB9CgogICAgICAgIGxpc3RhLmZvckVhY2gocCA9PiB7CgogICAgICAgICAgICBjb25zdCBmID0gdGhpcy5fY2xvbignZmFxJyk7CgogICAgICAgICAgICBpZiAoIWYubGVuZ3RoKSByZXR1cm47CgogICAgICAgICAgICBmLmZpbmQoJ3NwYW4nKS5maXJzdCgpLnRleHQocC5xIHx8ICcnKTsKICAgICAgICAgICAgZi5vbignY2xpY2snLCAoKSA9PiB0aGlzLl9yZXNwdWVzdGEocCkpOwoKICAgICAgICAgICAgY2FqYS5hcHBlbmQoZik7CiAgICAgICAgfSk7CgogICAgICAgIHRoaXMuaHRtbC5maW5kKCcuYW8tanMtZmFxLXRvZGFzJykub24oJ2NsaWNrJywgKCkgPT4gbG9jYXRpb24uaHJlZiA9ICcvYXl1ZGEnKTsKCiAgICAgICAgY2FyZC5yZW1vdmVBdHRyKCdoaWRkZW4nKTsKICAgIH0KCiAgICAvKiogTGEgcmVzcHVlc3RhLCBzaW4gc2FsaXIgZGUgbGEgcGFudGFsbGEuICovCiAgICBfcmVzcHVlc3RhKHApIHsKCiAgICAgICAgaWYgKHR5cGVvZiBUT3ZlcmxheVdpbiA9PT0gJ3VuZGVmaW5lZCcpIHsgbG9jYXRpb24uaHJlZiA9ICcvYXl1ZGEnOyByZXR1cm47IH0KCiAgICAgICAgY29uc3Qgd2luID0gVE92ZXJsYXlXaW4uY3JlYXRlKHsKICAgICAgICAgICAgdGl0bGU6IFRPdmVybGF5V2luLmNhYmVjZXJhKHsKICAgICAgICAgICAgICAgIGljb246ICdsdWNpZGU6Y2lyY2xlLWhlbHAnLAogICAgICAgICAgICAgICAgdGl0bGU6IHAucSB8fCAnQXl1ZGEnLAogICAgICAgICAgICAgICAgc3VidGl0bGU6ICdQcmVndW50YXMgZnJlY3VlbnRlcyBzb2JyZSBwZWRpZG9zJywKICAgICAgICAgICAgfSksCiAgICAgICAgICAgIGNvbnRlbnQ6ICQoJzxwPjwvcD4nKS5jc3MoeyBtYXJnaW46IDAsIGxpbmVIZWlnaHQ6IDEuNiB9KS50ZXh0KHAuYSB8fCAnJyksCiAgICAgICAgICAgIGNsb3NlSWNvbjogdHJ1ZSwKICAgICAgICAgICAgY2xvc2VPbkNsaWNrT3V0OiB0cnVlLAogICAgICAgIH0pOwoKICAgICAgICAvKiBgY3JlYXRlKClgIE1PTlRBIFBFUk8gTk8gTVVFU1RSQTogc2luIGVzdGUgYHNob3coKWAgbGEgdmVudGFuYSBzZQogICAgICAgICAgIHF1ZWRhIGZ1ZXJhIGRlbCBkb2N1bWVudG8geSBlbCBib3TDs24gcGFyZWNlIG5vIGhhY2VyIG5hZGEuICovCiAgICAgICAgd2luLnNob3coKTsKICAgIH0KfQoKLyogU2luIGVzdG8gbGEgcGFudGFsbGEgc2FsZSBFTiBCTEFOQ086IGVsIGNhcmdhZG9yIGRldGVjdGEgbGFzIGNsYXNlcyBudWV2YXMKICAgcG9yIGxhcyBjbGF2ZXMgcXVlIGFwYXJlY2VuIGVuIGB3aW5kb3dgLCB5IHVuYSBjbGFzZSBkZWNsYXJhZGEgY29uIGBjbGFzc2Agbm8KICAgc2UgcmVnaXN0cmEgc29sYS4gTm8gaGF5IGVycm9yIGRlIHNlcnZpZG9yIHF1ZSBsbyBkZWxhdGUuICovCndpbmRvdy5UQWNjb3VudE9yZGVycyA9IFRBY2NvdW50T3JkZXJzOwoNCg0KPC9zY3JpcHQ+DQoNCjwvbW9kdWxlPg0KDQo=","TSupportTicketForm":"PG1vZHVsZSBuYW1lPSJUU3VwcG9ydFRpY2tldEZvcm0iPg0KDQoNCg0KDQoNCjx0ZW1wbGF0ZSBuYW1lPSJUU3VwcG9ydFRpY2tldEZvcm0iICA+CjxtZXRhIGNoYXJzZXQ9IlVURi04IiAvPgoNCg0KCjwvdGVtcGxhdGU+DQoNCjxzdHlsZSBuYW1lPSJUU3VwcG9ydFRpY2tldEZvcm0iPi8qIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogKiAgRUwgT1ZFUkxBWSBERSDCq0FCUklSIEVYUEVESUVOVEXCuywgRU4gVkVSREUKICog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAqCiAqIFZpdsOtYSBlbiBgVEFjY291bnRTdXBwb3J0LmNzc2AsIHkgYWjDrSBzb2xvIHNlcnbDrWEgY3VhbmRvIGVsIG92ZXJsYXkgc2UgYWJyw61hCiAqIGRlc2RlIGxhIHNlY2Npw7NuIGRlIFNvcG9ydGU6IGVsIG1pc21vIGZvcm11bGFyaW8gYWJpZXJ0byBkZXNkZSB1biBwZWRpZG8KICogc2Fsw61hIGNvbiBlbCBib3TDs24gbmVncm8gZGVsIHNpdGlvLiBWaWFqYSBjb24gZWwgY29tcG9uZW50ZSBxdWUgbW9udGEgZWwKICogb3ZlcmxheSwgcXVlIGVzIGRvbmRlIHRpZW5lIHF1ZSBlc3Rhci4KICoKICogTGFzIGNsYXNlcyBOTyBzZSBjYW1iaWFuIC0tYGJ0bi1zZWNvbmRhcnlgIGVsIHF1ZSBjaWVycmEgeSBgYnRuLXByaW1hcnlgIGVsCiAqIHF1ZSBlc2NyaWJlLCBxdWUgZXMgbGEgcmVnbGEgZGVsIHByb3llY3RvLS06IGxvIHF1ZSBjYW1iaWEgZXMgY8OzbW8gc2UgcGludGFuCiAqIGFxdcOtLiBZIHNlIGVzY29wYSBiYWpvIGAuc3Atb3ZlcmxheWAsIHF1ZSBlcyBsYSBjbGFzZSBxdWUgbGUgcG9uZSBlbCBhYnJpZG9yOgogKiBlbCBvdmVybGF5IGN1ZWxnYSBkZWwgYm9keSwgYXPDrSBxdWUgc2luIGVsbGEgZXN0byBwaW50YXLDrWEgZGUgdmVyZGUgbG9zCiAqIGJvdG9uZXMgZGUgdG9kYSBsYSBww6FnaW5hLgogKgogKiDilIDilIAgWSBFTCBGT05ETyBWQSBDT04gYCFpbXBvcnRhbnRgLCBRVUUgTk8gRVMgVU4gREVTQ1VJRE8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAqCiAqIEVsIGJ1bmRsZSBkZWwgc2l0aW8gKGBib290LSouY3NzYCkgZGVjbGFyYQogKiBgLmJ0bi1wcmltYXJ5e2JhY2tncm91bmQ6IzFlMjkzYiAhaW1wb3J0YW50fWAuIFVuIGAhaW1wb3J0YW50YCBnYW5hIGEKICogY3VhbHF1aWVyIGVzcGVjaWZpY2lkYWQsIGFzw60gcXVlIGVzdGEgcmVnbGEgLS10YWwgY29tbyBlc3RhYmEgZXNjcml0YSBlbgogKiBgVEFjY291bnRTdXBwb3J0LmNzc2AtLSBhcGxpY2FiYSBlbCBCT1JERSB2ZXJkZSB5IG5vIGVsIGZvbmRvOiBlbCBib3TDs24KICogc2Fsw61hIGF6dWwgcGl6YXJyYSBjb24gdW4gZmlsbyB2ZXJkZSwgbWVkaWRvIGNvbiBgZ2V0Q29tcHV0ZWRTdHlsZWAgZWwKICogMTIvMDkvMjAyNiwgeSBlbCBjb21lbnRhcmlvIGRlIGFxdWVsbGEgaG9qYSBkZWPDrWEgcXVlIGVyYSB2ZXJkZSBkZXNkZSBlbAogKiBkw61hIHF1ZSBzZSBlc2NyaWJpw7MuIFNlIGNvbXBlbnNhIGFxdcOtLCBhY290YWRvIGFsIG92ZXJsYXk7IGxvIHF1ZSBoYXkgcXVlCiAqIHF1aXRhciBhbGfDum4gZMOtYSBlcyBlbCBgIWltcG9ydGFudGAgZGVsIGJ1bmRsZSwgbm8gZXN0YSBsw61uZWEuICovCi5zcC1vdmVybGF5IC5idG4tcHJpbWFyeXsKICAgIGJhY2tncm91bmQ6dmFyKC0tc2QtdmVyZGUsIzA0NzEzYSkgIWltcG9ydGFudDsKICAgIGJvcmRlci1jb2xvcjp2YXIoLS1zZC12ZXJkZSwjMDQ3MTNhKTsKICAgIGNvbG9yOiNmZmY7Cn0KLnNwLW92ZXJsYXkgLmJ0bi1wcmltYXJ5OmhvdmVyewogICAgYmFja2dyb3VuZDp2YXIoLS1zZC12ZXJkZS1vc2N1cm8sIzAwNWMyZCkgIWltcG9ydGFudDsKICAgIGJvcmRlci1jb2xvcjp2YXIoLS1zZC12ZXJkZS1vc2N1cm8sIzAwNWMyZCk7Cn0KLnNwLW92ZXJsYXkgLlRGb3JtIGlucHV0OmZvY3VzLAouc3Atb3ZlcmxheSAuVEZvcm0gdGV4dGFyZWE6Zm9jdXN7CiAgICBib3JkZXItY29sb3I6dmFyKC0tc2QtdmVyZGUsIzA0NzEzYSk7CiAgICBib3gtc2hhZG93OjAgMCAwIDNweCByZ2JhKDQsMTEzLDU4LC4xMCk7Cn0KDQoNCjwvc3R5bGU+DQoNCjxzY3JpcHQgbmFtZT0iVFN1cHBvcnRUaWNrZXRGb3JtIiA+LyoqCiAqIOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkAogKiAgQUJSSVIgVU4gRVhQRURJRU5URSBERSBTT1BPUlRFIOKAlCB1biBzb2xvIGFicmlkb3IgcGFyYSBsb3MgdHJlcyBzaXRpb3MKICog4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQCiAqCiAqIMKrU29saWNpdGFyIGF5dWRhwrsgZXN0w6EgZW4gbGEgZmljaGEgZGUgdW4gcGVkaWRvLCBlbiBlbCBsaXN0YWRvIGRlIMKrTWlzCiAqIHBlZGlkb3PCuyB5IGVuIGxhIHNlY2Npw7NuIGRlIFNvcG9ydGUuIEVuIGxvcyB0cmVzIGhhY2UgbG8gbWlzbW8sIHkgbG8gaGFjZQogKiBBUVXDjS4KICoKICog4pSA4pSAIEVMIE9WRVJMQVkgU0UgQUJSRSBET05ERSBFU1TDgSBFTCBVU1VBUklPIOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgAogKgogKiBBbnRlcyBsYSBmaWNoYSB5IGVsIGxpc3RhZG8gbmF2ZWdhYmFuIGEgYD9yb3V0ZT1zdXBwb3J0Jm9yZGVyPXtpZH1gIHkgZXJhIGxhCiAqIHNlY2Npw7NuIGRlIFNvcG9ydGUgbGEgcXVlIGFicsOtYSBlbCBmb3JtdWxhcmlvIGFsIG1vbnRhcnNlLiBFbCBjbGllbnRlIHB1bHNhYmEKICogwqtTb2xpY2l0YXIgYXl1ZGHCuyB5IGxhIHBhbnRhbGxhIHNlIGxlIGliYTogcGVyZMOtYSBkZSB2aXN0YSBlbCBwZWRpZG8gLS1sYXMKICogbMOtbmVhcywgZWwgZW52w61vLCBlbCBuw7ptZXJvLS0ganVzdG8gY3VhbmRvIHRlbsOtYSBxdWUgY29udGFyIHF1w6kgaGFiw61hIHBhc2FkbwogKiBjb24gw6lsLiBBaG9yYSBlbCBmb3JtdWxhcmlvIHNhbGUgZW5jaW1hIGRlbCBwZWRpZG8sIHkgYSBsYSBzZWNjacOzbiBkZSBTb3BvcnRlCiAqIHNlIHZhIERFU1BVw4lTLCBjb24gZWwgZXhwZWRpZW50ZSB5YSBhYmllcnRvIHkgc3UgaGlsbyBkZWxhbnRlLgogKgogKiDilIDilIAgTk8gSEFZIE1BUkNBRE8sIFkgTk8gRVMgVU4gREVTQ1VJRE8g4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSACiAqCiAqIEVsIGZvcm11bGFyaW8gbG8gZGVjbGFyYSBlbCBzZXJ2aWRvciBjb24gZWwgRFNMIChgL2FjY291bnQvc3VwcG9ydC9mb3JtYCk6CiAqIGFzdW50bywgZWwgcGVkaWRvIC0tcXVlIGRlY2lkZSBlbCB0aXBvOiBjb24gcGVkaWRvIGVzIHVuYSBJTkNJREVOQ0lBLCBzaW4gw6lsCiAqIHVuYSBDT05TVUxUQS0tIHkgZWwgbWVuc2FqZS4gQXPDrSBoZXJlZGEgdmFsaWRhY2nDs24sIGVycm9yZXMgcG9yIGNhbXBvIHkgZWwKICogZ3VhcmRhZG8gZGUgYFRGb3JtYCBzaW4gZXNjcmliaXIgbmkgdW4gYDxpbnB1dD5gLiBMbyDDum5pY28gcXVlIHZpdmUgYXF1w60gZXMKICogZWwgY29tcG9ydGFtaWVudG8uCiAqLwp3aW5kb3cuU3VwcG9ydFRpY2tldEZvcm0gPSB7CgogICAgLyoqCiAgICAgKiBFTlNFw5FBIEVMIEZPUk1VTEFSSU8gRU4gVU4gT1ZFUkxBWS4KICAgICAqCiAgICAgKiAgIG9yZGVySWQgICAgZWwgcGVkaWRvIGRlbCBxdWUgc2UgaGFibGE7IHNpbiDDqWwgc2FsZSB1bmEgY29uc3VsdGEgZ2VuZXJhbAogICAgICogICBzdWJ0aXRsZSAgIGVsIHN1YnTDrXR1bG8gZGUgbGEgY2FiZWNlcmE7IGhheSB1biBkZWZlY3RvIHJhem9uYWJsZQogICAgICogICBvbkNyZWF0ZWQgIHF1w6kgaGFjZXIgY29uIGVsIGV4cGVkaWVudGUgcmVjacOpbiBhYmllcnRvLiBTaW4gZXN0byBzZSB2YSBhCiAgICAgKiAgICAgICAgICAgICAgbGEgc2VjY2nDs24gZGUgU29wb3J0ZSwgcXVlIGVzIGxvIHF1ZSBlc3BlcmEgcXVpZW4gbG8gYWJyacOzCiAgICAgKiAgICAgICAgICAgICAgZGVzZGUgdW4gcGVkaWRvCiAgICAgKi8KICAgIG9wZW46IGZ1bmN0aW9uIChvcGNpb25lcykgewoKICAgICAgICBjb25zdCBvICAgPSBvcGNpb25lcyB8fCB7fTsKICAgICAgICBjb25zdCB5byAgPSB0aGlzOwogICAgICAgIGNvbnN0IHVybCA9ICcvYWNjb3VudC9zdXBwb3J0L2Zvcm0nICsgKG8ub3JkZXJJZCA/ICgnP29yZGVyPScgKyBlbmNvZGVVUklDb21wb25lbnQoby5vcmRlcklkKSkgOiAnJyk7CgogICAgICAgIFROZXRDb20uR0VUKHVybCwge30sIGZ1bmN0aW9uIChyZXNwKSB7CgogICAgICAgICAgICBjb25zdCBkID0gKHJlc3AgJiYgcmVzcC5kYXRhKSA/IHJlc3AuZGF0YSA6IHJlc3A7CgogICAgICAgICAgICBpZiAoIWQgfHwgIWQudHlwZSkgewogICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBUTm90aWZ5ID09PSAnZnVuY3Rpb24nICYmIFROb3RpZnkudG9hc3QpIFROb3RpZnkudG9hc3QoJ05vIGhlbW9zIHBvZGlkbyBhYnJpciBlbCBmb3JtdWxhcmlvJyk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNvbnN0IGZvcm0gPSBURm9ybS5jcmVhdGUoZCk7CgogICAgICAgICAgICAvKiBMYSBjYWJlY2VyYSB2YSBjb24gZWwgaGVscGVyIGRlbCBwcm95ZWN0byAtLWljb25vLCB0w610dWxvIHkKICAgICAgICAgICAgICAgc3VidMOtdHVsbywgVE9ETyBhIGxhIGl6cXVpZXJkYS0tLCB5IGVsIHN1YnTDrXR1bG8gZGljZSBkZSBxdcOpIHZhCiAgICAgICAgICAgICAgIGxhIHZlbnRhbmEgY29uIGRhdG9zIHJlYWxlcyBlbiB2ZXogZGUgcmVwZXRpciBlbCB0w610dWxvLiAqLwogICAgICAgICAgICBjb25zdCBvdmVybGF5ID0gVE92ZXJsYXlXaW4uY3JlYXRlKHsKICAgICAgICAgICAgICAgIHRpdGxlOiBUT3ZlcmxheVdpbi5jYWJlY2VyYSh7CiAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2x1Y2lkZTpoZWFkcGhvbmVzJywKICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ0FicmlyIGV4cGVkaWVudGUgZGUgc29wb3J0ZScsCiAgICAgICAgICAgICAgICAgICAgc3VidGl0bGU6IG8uc3VidGl0bGUgfHwgJ0NvbiB1biBwZWRpZG8gZXMgdW5hIGluY2lkZW5jaWE7IHNpbiDDqWwsIHVuYSBjb25zdWx0YSBnZW5lcmFsLicKICAgICAgICAgICAgICAgIH0pLAogICAgICAgICAgICAgICAgY29udGVudDogZm9ybSwKICAgICAgICAgICAgICAgIGNsb3NlSWNvbjogdHJ1ZQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8qIEVsIG92ZXJsYXkgc2UgbW9udGEgRlVFUkEgZGUgbGEgcGFudGFsbGEgcXVlIGxvIGFicmUgLS1jdWVsZ2EgZGVsCiAgICAgICAgICAgICAgIGJvZHktLSwgYXPDrSBxdWUgZWwgQ1NTIGRlIGVzYSBwYW50YWxsYSBubyBsZSBhbGNhbnphLiBDb24gc3UKICAgICAgICAgICAgICAgcHJvcGlhIGNsYXNlIHPDrTogZXMgbG8gcXVlIGRlamEgcG9uZXIgZWwgYm90w7NuIHByaW5jaXBhbCBlbgogICAgICAgICAgICAgICB2ZXJkZSwgcG9ycXVlIGVsIGBidG4tcHJpbWFyeWAgZGVsIHNpdGlvIGVzIG5lZ3JvIHkgYXF1w60KICAgICAgICAgICAgICAgZGVzZW50b25hLiBMYSBob2phIHZpYWphIGNvbiBFU1RFIGNvbXBvbmVudGUsIG5vIGNvbiBsYSBzZWNjacOzbgogICAgICAgICAgICAgICBkZSBTb3BvcnRlOiBzaSBubywgZWwgb3ZlcmxheSBhYmllcnRvIGRlc2RlIHVuIHBlZGlkbyBzYWxkcsOtYSBjb24KICAgICAgICAgICAgICAgb3RybyBjb2xvciBxdWUgZWwgbWlzbW8gb3ZlcmxheSBhYmllcnRvIGRlc2RlIFNvcG9ydGUuICovCiAgICAgICAgICAgIG92ZXJsYXkuaHRtbC5hZGRDbGFzcygnc3Atb3ZlcmxheScpOwoKICAgICAgICAgICAgLyog4pSA4pSAIEVMIEVWRU5UTyBFUyBgb25TdWJtaXRgLCBOTyBgc3VibWl0dGVkYCDilIDilIDilIDilIDilIDilIDilIDilIDilIAKICAgICAgICAgICAgICAgQ29tcHJvYmFkbyBlbiBgVEZvcm0uanNgOiBhbCBndWFyZGFyIGVtaXRlIGBvblNhdmVgIChjb24gZWwKICAgICAgICAgICAgICAgcGF5bG9hZCBxdWUgc2UgbWFuZMOzKSB5IGRlc3B1w6lzIGBvblN1Ym1pdGAgKGNvbiBsYSBSRVNQVUVTVEEgZGVsCiAgICAgICAgICAgICAgIHNlcnZpZG9yKS4gTm8gZXhpc3RlIG5pbmfDum4gYHN1Ym1pdHRlZGAgLS0gZW5nYW5jaGFkbyBhaMOtLCBlbAogICAgICAgICAgICAgICBmb3JtdWxhcmlvIGd1YXJkYWJhLCBkZWPDrWEgwqtEYXRvcyBlbnZpYWRvcyBjb3JyZWN0YW1lbnRlwrsgeSBsYQogICAgICAgICAgICAgICB2ZW50YW5hIHNlIHF1ZWRhYmEgYWJpZXJ0YSBjb21vIHNpIG5vIGh1YmllcmEgcGFzYWRvIG5hZGEuCgogICAgICAgICAgICAgICBgb25TdWJtaXRgIHNlIGRpc3BhcmEgVEFNQknDiU4gY3VhbmRvIGVsIGd1YXJkYWRvIGZhbGxhLCBhc8OtIHF1ZQogICAgICAgICAgICAgICBoYXkgcXVlIG1pcmFyIGxhIHJlc3B1ZXN0YSBhbnRlcyBkZSBjZXJyYXI6IGNlcnJhbmRvIGEgY2llZ2FzIHNlCiAgICAgICAgICAgICAgIHRpcmEgZWwgZm9ybXVsYXJpbyAtLXkgbG8gZXNjcml0by0tIGp1c3RvIGN1YW5kbyBlbCBjbGllbnRlCiAgICAgICAgICAgICAgIG5lY2VzaXRhIGNvcnJlZ2lyIHVuIGNhbXBvLiAqLwogICAgICAgICAgICBmb3JtLm9uKCdvblN1Ym1pdCcsIGZ1bmN0aW9uIChldiwgcmVzcHVlc3RhKSB7CgogICAgICAgICAgICAgICAgY29uc3QgciA9IChyZXNwdWVzdGEgJiYgcmVzcHVlc3RhLmRhdGEpID8gcmVzcHVlc3RhLmRhdGEgOiByZXNwdWVzdGE7CgogICAgICAgICAgICAgICAgaWYgKCFyZXNwdWVzdGEgfHwgcmVzcHVlc3RhLm9rID09PSBmYWxzZSB8fCAhciB8fCAhci5pZCkgcmV0dXJuOwoKICAgICAgICAgICAgICAgIG92ZXJsYXkuY2xvc2UoKTsKCiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIFROb3RpZnkgPT09ICdmdW5jdGlvbicgJiYgVE5vdGlmeS50b2FzdCkgewogICAgICAgICAgICAgICAgICAgIFROb3RpZnkudG9hc3QoJ0V4cGVkaWVudGUgYWJpZXJ0bzogJyArIChyLmNvZGUgfHwgJycpKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG8ub25DcmVhdGVkID09PSAnZnVuY3Rpb24nKSB7IG8ub25DcmVhdGVkKHIpOyByZXR1cm47IH0KCiAgICAgICAgICAgICAgICB5by50b1NlY3Rpb24ocik7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgb3ZlcmxheS5zaG93KCk7CiAgICAgICAgfSk7CiAgICB9LAoKICAgIC8qKgogICAgICogQSBMQSBTRUNDScOTTiBERSBTT1BPUlRFLCBDT04gRUwgRVhQRURJRU5URSBBQklFUlRPLgogICAgICoKICAgICAqIExhIFVSTCBsYSBjb21wb25lIGVsIFNFUlZJRE9SIChgZW5sYWNlYCwgcXVlIGVzCiAgICAgKiBgL2FjY291bnQvc3VwcG9ydC97dGlwb30ve2lkfWApIHkgZXNhIHJ1dGEgcmVkaXJpZ2UgYWwgcGFuZWwgY29uCiAgICAgKiBgP3JvdXRlPXN1cHBvcnQmaWQ9e3RpcG99LXtpZH1gOiB1biBzb2xvIHNpdGlvIGRlY2lkZSBjw7NtbyBzZSBlbmxhemEgdW4KICAgICAqIGV4cGVkaWVudGUsIHkgZXMgZWwgbWlzbW8gcXVlIHVzYW4gbG9zIGNvcnJlb3MgeSBsYXMgbm90aWZpY2FjaW9uZXMuCiAgICAgKi8KICAgIHRvU2VjdGlvbjogZnVuY3Rpb24gKHIpIHsKICAgICAgICAvKiBQb3IgZWwgbWVuw7osIHNpbiByZWNhcmdhciBlbCBwYW5lbCAodmVyIGBBY2NvdW50TmF2YCkuICovCiAgICAgICAgQWNjb3VudE5hdi5nbygociAmJiByLmVubGFjZSkgPyByLmVubGFjZSA6ICcvYWNjb3VudC9zdXBwb3J0Jyk7CiAgICB9Cn07Cg0KDQo8L3NjcmlwdD4NCg0KPC9tb2R1bGU+DQoNCg=="},"moduleProps":{"TAccountOrders":[],"TSupportTicketForm":[]},"meta":{"component":"TAccountOrders","execution_time_ms":0,"performance":[],"timestamp":1790285372,"is_initial_load":true}}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                ---- Boundary ----