valtech-components 4.0.1037 → 4.0.1039
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/molecules/ai-message-renderer/ai-message-renderer.component.mjs +123 -8
- package/esm2022/lib/components/molecules/message-bubble/message-bubble.component.mjs +20 -5
- package/esm2022/lib/services/auth/auth.service.mjs +6 -2
- package/esm2022/lib/services/auth/types.mjs +1 -1
- package/esm2022/lib/services/i18n/i18n.service.mjs +10 -5
- package/esm2022/lib/services/preferences/preferences.service.mjs +25 -4
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +180 -20
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/ai-message-renderer/ai-message-renderer.component.d.ts +4 -2
- package/lib/components/molecules/message-bubble/message-bubble.component.d.ts +2 -0
- package/lib/services/auth/types.d.ts +2 -0
- package/lib/services/preferences/preferences.service.d.ts +2 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -28,4 +28,4 @@ export const INITIAL_MFA_STATE = {
|
|
|
28
28
|
mfaToken: null,
|
|
29
29
|
method: null,
|
|
30
30
|
};
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2F1dGgvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBc01IOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQWM7SUFDM0MsZUFBZSxFQUFFLEtBQUs7SUFDdEIsU0FBUyxFQUFFLElBQUk7SUFDZixXQUFXLEVBQUUsSUFBSTtJQUNqQixZQUFZLEVBQUUsSUFBSTtJQUNsQixNQUFNLEVBQUUsSUFBSTtJQUNaLEtBQUssRUFBRSxJQUFJO0lBQ1gsU0FBUyxFQUFFLElBQUk7SUFDZixLQUFLLEVBQUUsRUFBRTtJQUNULFdBQVcsRUFBRSxFQUFFO0lBQ2YsWUFBWSxFQUFFLEtBQUs7SUFDbkIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsU0FBUyxFQUFFLElBQUk7SUFDZixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFrQkY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBb0I7SUFDaEQsUUFBUSxFQUFFLEtBQUs7SUFDZixRQUFRLEVBQUUsSUFBSTtJQUNkLE1BQU0sRUFBRSxJQUFJO0NBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGlwb3MgZSBpbnRlcmZhY2VzIHBhcmEgZWwgc2VydmljaW8gZGUgYXV0ZW50aWNhY2nDs24gZGUgVmFsdGVjaC5cbiAqIEFsaW5lYWRvcyBjb24gZWwgYmFja2VuZCBBdXRoVjIuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTkZJR1VSQUNJw5NOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENvbmZpZ3VyYWNpw7NuIHBhcmEgZWwgc2VydmljaW8gZGUgYXV0ZW50aWNhY2nDs24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdGVjaEF1dGhDb25maWcge1xuICAvKiogVVJMIGJhc2UgZGUgbGEgQVBJIChlajogJ2h0dHBzOi8vYXBpLm15dmFsdGVjaC5jb20nKSAqL1xuICBhcGlVcmw6IHN0cmluZztcbiAgLyoqIFByZWZpam8gcGFyYSBlbmRwb2ludHMgZGUgYXV0aCAoZGVmYXVsdDogJy92Mi9hdXRoJykgKi9cbiAgYXV0aFByZWZpeD86IHN0cmluZztcbiAgLyoqIFByZWZpam8gcGFyYSBsYXMgY2xhdmVzIGRlIGxvY2FsU3RvcmFnZSAoZGVmYXVsdDogJ3ZhbHRlY2hfYXV0aF8nKSAqL1xuICBzdG9yYWdlUHJlZml4Pzogc3RyaW5nO1xuICAvKiogVGllbXBvIGFudGVzIGRlIGV4cGlyYWNpw7NuIHBhcmEgcmVmcmVzY2FyIHRva2VuIGVuIHNlZ3VuZG9zIChkZWZhdWx0OiA2MCkgKi9cbiAgcmVmcmVzaEJlZm9yZUV4cGlyeT86IG51bWJlcjtcbiAgLyoqIEhhYmlsaXRhciBzaW5jcm9uaXphY2nDs24gZW50cmUgcGVzdGHDsWFzIChkZWZhdWx0OiB0cnVlKSAqL1xuICBlbmFibGVUYWJTeW5jPzogYm9vbGVhbjtcbiAgLyoqIFJ1dGEgZGUgcmVkaXJlY2Npw7NuIGN1YW5kbyBubyBhdXRlbnRpY2FkbyAoZGVmYXVsdDogJy9sb2dpbicpICovXG4gIGxvZ2luUm91dGU/OiBzdHJpbmc7XG4gIC8qKiBSdXRhIGRlIHJlZGlyZWNjacOzbiBjdWFuZG8geWEgYXV0ZW50aWNhZG8gKGRlZmF1bHQ6ICcvJykgKi9cbiAgaG9tZVJvdXRlPzogc3RyaW5nO1xuICAvKiogUnV0YSBwYXJhIGFjY2VzbyBkZW5lZ2FkbyAoZGVmYXVsdDogJy91bmF1dGhvcml6ZWQnKSAqL1xuICB1bmF1dGhvcml6ZWRSb3V0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFByZWZpam9zIGRlIHJ1dGFzIHDDumJsaWNhcyBxdWUgbnVuY2EgZGViZW4gc2VyIGVtcHVqYWRhcyBhIGxvZ2luL2hvbWUgcG9yXG4gICAqIGV2ZW50b3MgZ2xvYmFsZXMgZGUgc2VzacOzbiAobG9nb3V0IGNyb3NzLXRhYiwgc3dpdGNoIGRlIG9yZ2FuaXphY2nDs24gb1xuICAgKiByZWZyZXNoIGZhbGxpZG8pLiDDmnRpbCBwYXJhIGxpbmtzIGNvbXBhcnRpYmxlcyBjb21vIGAvYnV5Lzp0b2tlbmAsXG4gICAqIGAvc2VsbGVyLzp0b2tlbmAsIGAvdGlja2V0Lzp0b2tlbmAgbyBsYW5kaW5ncyBww7pibGljYXMuXG4gICAqXG4gICAqIENhZGEgYXBwIGRlYmUgZGVjbGFyYXIgc3VzIHByb3Bpb3MgcHJlZmlqb3MgZW4gYHByb3ZpZGVWYWx0ZWNoQXV0aCguLi4pYC5cbiAgICogTGEgbGliIG5vIGRlYmUgaGFyZGNvZGVhciBydXRhcyBkZSBwcm9kdWN0b3MgY29uY3JldG9zLlxuICAgKi9cbiAgcHVibGljUm91dGVQcmVmaXhlcz86IHN0cmluZ1tdO1xuICAvKiogSGFiaWxpdGFyIGludGVncmFjacOzbiBjb24gRmlyZWJhc2VTZXJ2aWNlIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgZW5hYmxlRmlyZWJhc2VJbnRlZ3JhdGlvbj86IGJvb2xlYW47XG4gIC8qKiBIYWJpbGl0YXIgcmVnaXN0cm8gYXV0b23DoXRpY28gZGUgZGV2aWNlIHRva2VucyBwYXJhIHB1c2ggbm90aWZpY2F0aW9ucyAoZGVmYXVsdDogZmFsc2UpICovXG4gIGVuYWJsZURldmljZVJlZ2lzdHJhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBcHBJRCBkZSBlc3RhIGFwcCBkZW50cm8gZGVsIGZhY3RvcnkgKGVqOiAnc2hvd2Nhc2UnLCAnc2lnaWZ5JywgJ215dmFsdGVjaCcpLlxuICAgKiBVc2FkbyBwb3IgTm90aWZpY2F0aW9uQWN0aW9uU2VydmljZSBwYXJhIGRlY2lkaXIgc2kgdW5hIG5vdGlmaWNhY2nDs25cbiAgICogYXB1bnRhIGEgbGEgYXBwIGFjdHVhbCBvIHJlcXVpZXJlIGhhbmRvZmYgY3Jvc3MtYXBwLlxuICAgKi9cbiAgYXBwSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNYXBhIGFwcElkIOKGkiBiYXNlVXJsIGFic29sdXRhIHBhcmEgaGFuZG9mZiBjcm9zcy1hcHAuXG4gICAqIEVqOiB7IHNpZ2lmeTogJ2h0dHBzOi8vc2lnaWZ5LmNvbScsIG15dmFsdGVjaDogJ2h0dHBzOi8vYXBwLm15dmFsdGVjaC5jb20nIH1cbiAgICogTm90aWZpY2F0aW9uQWN0aW9uU2VydmljZSB1c2EgZXN0ZSBtYXAgYWwgZGlzcGFyYXIgaGFuZG9mZiBhIG90cmEgYXBwLlxuICAgKi9cbiAgYXBwVXJscz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBIYWJpbGl0YXIgc2luY3Jvbml6YWNpw7NuIHJlYWN0aXZhIGRlIHBlcm1pc29zIHZpYSBGaXJlc3RvcmUgb25TbmFwc2hvdCAoZGVmYXVsdDogZmFsc2UpLlxuICAgKiBSZXF1aWVyZSBlbmFibGVGaXJlYmFzZUludGVncmF0aW9uOiB0cnVlLiBDdWFuZG8gdW4gYWRtaW4gYXNpZ25hIG8gcmV2b2NhIHVuIHJvbCxcbiAgICogZWwgZnJvbnRlbmQgYWN0dWFsaXphIHJvbGVzL3Blcm1pc29zIHNpbiByZWNhcmdhciBsYSBww6FnaW5hICh+MS0zcyBsYXRlbmNpYSkuXG4gICAqIFJlcXVpZXJlIHF1ZSBlbCBiYWNrZW5kIHRlbmdhIFN5bmNSQkFDVG9GaXJlc3RvcmUgYWN0aXZvLlxuICAgKi9cbiAgZW5hYmxlRmlyZXN0b3JlUkJBQz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBCb290c3RyYXBlYXIgbGEgc2VzacOzbiBkZXNkZSBsYSBjb29raWUtaGludCBkZSBmYW1pbGlhIChkZWZhdWx0OiBmYWxzZSkuXG4gICAqXG4gICAqIEN1YW5kbyBlcyBgdHJ1ZWAgeSBlbiBlbCBhcnJhbnF1ZSBOTyBoYXkgYWNjZXNzIHRva2VuIGVuIGVsIHN0b3JhZ2UgZGUgZXN0ZVxuICAgKiBvcmlnaW4gUEVSTyBleGlzdGUgbGEgY29va2llIEpTLXJlYWRhYmxlIGRlIFwic2VzacOzbiBhY3RpdmEgZW4gbGEgZmFtaWxpYVwiXG4gICAqICh2ZXIgYGxvZ2dlZEluSGludENvb2tpZWApLCBgaW5pdGlhbGl6ZSgpYCBpbnRlbnRhIHVuIGAvcmVmcmVzaGAgcGFyYVxuICAgKiBpbnN0YWxhciBsYSBzZXNpw7NuIGNyb3NzLW9yaWdpbi4gRWwgcmVmcmVzaCB0b2tlbiBIdHRwT25seSBkZWwgYmFja2VuZCBlc1xuICAgKiBgU2FtZVNpdGU9Tm9uZWAg4oaSIHZpYWphIGEgbGEgQVBJIGRlc2RlIGN1YWxxdWllciBhcHAgZGVsIGZhY3RvcnksIGFzw60gcXVlIHVuXG4gICAqIHVzdWFyaW8gbG9ndWVhZG8gZW4gb3RyYSBhcHAgKGVqLiBzaG93Y2FzZSkgcXVlZGEgYXV0ZW50aWNhZG8gYWwgZW50cmFyIGFcbiAgICogZXN0YSBzaW4gcmUtbG9ndWVhciBuaSBoYW5kb2ZmIGV4cGzDrWNpdG8uXG4gICAqXG4gICAqIEVsIGludGVudG8gZXMgKipibG9xdWVhbnRlKiogKGEgZGlmZXJlbmNpYSBkZWwgcmVmcmVzaCBkZSBmb25kbyBkZWwgdG9rZW5cbiAgICogZXhwaXJhZG8pOiBubyBoYXkgY2xhaW1zIHF1ZSByZXN0YXVyYXIgZGUgZm9ybWEgb3B0aW1pc3RhLCBhc8OtIHF1ZSBzZSBlc3BlcmFcbiAgICogcGFyYSBxdWUgbG9zIGd1YXJkcyAoYGF1dGhHdWFyZGAvYGd1ZXN0R3VhcmRgKSB2ZWFuIGVsIGVzdGFkbyBjb3JyZWN0by4gU29sb1xuICAgKiBhZmVjdGEgYSB2aXNpdGFudGVzIENPTiBsYSBoaW50IChzZXNpw7NuIGRlIGZhbWlsaWEpLCBubyBhIGFuw7NuaW1vcy4gRWwgc3BsYXNoXG4gICAqIHByZS1ib290c3RyYXAgZGVsIGBpbmRleC5odG1sYCBjdWJyZSBsYSBsYXRlbmNpYSBkZWwgY29sZCBzdGFydC5cbiAgICpcbiAgICogQ2F2ZWF0OiBsYSBoaW50IHRpZW5lIGBEb21haW49Lm15dmFsdGVjaC5jb21gIOKGkiBlbiBkZXYgKGFwcHMgZW4gYCoud2ViLmFwcGApXG4gICAqIG5vIGVzIGxlZ2libGUgeSBlbCByZWZyZXNoIGNyb3NzLXNpdGUgc2UgYmxvcXVlYTsgZWwgaW50ZW50byBmYWxsYSBsaW1waW8geVxuICAgKiBsYSBhcHAgc2lndWUgY29tbyBpbnZpdGFkby4gRnVuY2lvbmEgZW4gcHJvZCAoZG9taW5pb3MgYCoubXl2YWx0ZWNoLmNvbWApLlxuICAgKi9cbiAgYm9vdHN0cmFwU2Vzc2lvbkZyb21IaW50PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE5vbWJyZSBkZSBsYSBjb29raWUgSlMtcmVhZGFibGUgcXVlIGluZGljYSBzZXNpw7NuIGFjdGl2YSBlbiBsYSBmYW1pbGlhXG4gICAqIChkZWZhdWx0OiAndmFsdGVjaF9sb2dnZWRfaW4nKS4gTGEgc2V0ZWEgZWwgYmFja2VuZCBlbiBsb2dpbi9sb2dvdXRcbiAgICogKGBIdHRwT25seTpmYWxzZWAsIGBEb21haW49Lm15dmFsdGVjaC5jb21gKS4gRXMgdW4gaGludCBkZSBVSSwgbm8gdW5hXG4gICAqIGNyZWRlbmNpYWwg4oCUIGVsIHRva2VuIHJlYWwgdmEgZW4gbGEgY29va2llIEh0dHBPbmx5IGB2YWx0ZWNoX3JlZnJlc2hgLlxuICAgKi9cbiAgbG9nZ2VkSW5IaW50Q29va2llPzogc3RyaW5nO1xuICAvKipcbiAgICogQm9vdHN0cmFwZWFyIGxhIHNlc2nDs24gdsOtYSBlbCBBdXRoIFByb3h5IENlbnRyYWwgY3VhbmRvIGVzdGEgYXBwIE5PXG4gICAqIGNvbXBhcnRlIGRvbWluaW8gcmHDrXogY29uIGVsIHJlc3RvIGRlbCBmYWN0b3J5IChBRFItMDUwLCBNb2RvIEIg4oCUIGVqLiB1blxuICAgKiBwcm9kdWN0byBjb24gZG9taW5pbyBwcm9waW8gY29tbyBgc2lnaWZ5LmNvbWAsIGEgZGlmZXJlbmNpYSBkZSBiaW5nby9cbiAgICogc2hvd2Nhc2UgYmFqbyBgKi5teXZhbHRlY2guY29tYCkuXG4gICAqXG4gICAqIEN1YW5kbyBlcyBgdHJ1ZWAsIG5vIGhheSBhY2Nlc3MgdG9rZW4gbG9jYWwgTkkgY29va2llLWhpbnQgbGVnaWJsZVxuICAgKiAoYGJvb3RzdHJhcFNlc3Npb25Gcm9tSGludGAgbm8gYXBsaWNhIGVuIGVzdGUgZG9taW5pbyDigJQgbGEgY29va2llXG4gICAqIGBEb21haW49Lm15dmFsdGVjaC5jb21gIG51bmNhIGxsZWdhIGFxdcOtKSwgZSBgaW5pdGlhbGl6ZSgpYCBubyB2aWVuZSBkZVxuICAgKiB1biByZXRvcm5vIGRlbCBicmlkZ2UgKHZlciBtw6FzIGFiYWpvKSwgbGEgYXBwIGhhY2UgdW5hIG5hdmVnYWNpw7NuIGRlXG4gICAqIHDDoWdpbmEgY29tcGxldGEgYSBgc3NvQnJpZGdlVXJsYCBjb24gYHJlZGlyZWN0X3VyaWAgPSBsYSBVUkwgYWN0dWFsLlxuICAgKlxuICAgKiBFbCBiYWNrZW5kIHZhbGlkYSBsYSBjb29raWUgYHZhbHRlY2hfcmVmcmVzaGAgKEh0dHBPbmx5LCBzw7NsbyB2aXNpYmxlIGVuXG4gICAqIHN1IHByb3BpbyBkb21pbmlvKSB5OlxuICAgKiAgIC0gc2kgaGF5IHNlc2nDs24gYWN0aXZhOiByZWRpcmlnZSBkZSB2dWVsdGEgY29uIGA/aGFuZG9mZj1UT0tFTmAg4oCUIGVsXG4gICAqICAgICBgQVBQX0lOSVRJQUxJWkVSYCBkZSBgSGFuZG9mZlNlcnZpY2UuZGV0ZWN0QW5kRXhjaGFuZ2VIYW5kb2ZmKClgXG4gICAqICAgICAoeWEgcmVxdWVyaWRvIHBvciBjcm9zcy1hcHAgaGFuZG9mZiwgdmVyIGZyb250ZW5kL0NMQVVERS5tZCkgaW5zdGFsYVxuICAgKiAgICAgbGEgc2VzacOzbiBzaW4gcGVkaXIgY3JlZGVuY2lhbGVzLlxuICAgKiAgIC0gc2kgbm8gaGF5IHNlc2nDs246IHJlZGlyaWdlIGRlIHZ1ZWx0YSBzaW4gYD9oYW5kb2ZmYCDigJQgbGEgYXBwIGNhZSBhXG4gICAqICAgICBpbnZpdGFkbywgY29tcG9ydGFtaWVudG8gbm9ybWFsLlxuICAgKlxuICAgKiBFbCB1c3VhcmlvIHZlIHVuYSByZWRpcmVjY2nDs24gYnJldmUgKGRvcyBjYXJnYXMgZGUgcMOhZ2luYSksIHRhbCBjb21vXG4gICAqIGRvY3VtZW50YSBlbCBBRFItMDUwIHBhcmEgZXN0ZSBtb2RvIOKAlCBubyBoYXkgZm9ybWEgZGUgZXZpdGFybGEgc2luXG4gICAqIGlmcmFtZS9wb3B1cCwgeSBlc29zIHJvbXBlbiBjb24gZWwgYmxvcXVlbyBkZSBjb29raWVzIGRlIHRlcmNlcm9zLlxuICAgKlxuICAgKiBSZXF1aWVyZSBgc3NvQnJpZGdlVXJsYCBzZXRlYWRvIHkgZWwgYEFQUF9JTklUSUFMSVpFUmAgZGUgaGFuZG9mZlxuICAgKiBjYWJsZWFkbyBlbiBgbWFpbi50c2AgKG1pc21vIHJlcXVpc2l0byBxdWUgZWwgaGFuZG9mZiBjcm9zcy1hcHAgbWFudWFsKS5cbiAgICovXG4gIGJvb3RzdHJhcFNlc3Npb25Gcm9tQnJpZGdlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVSTCBjb21wbGV0YSBkZWwgZW5kcG9pbnQgYEdFVCAvdjIvYXV0aC9zc28tYnJpZGdlYCBkZWwgQXV0aCBQcm94eVxuICAgKiBDZW50cmFsIChlajogJ2h0dHBzOi8vYXBpLm15dmFsdGVjaC5jb20vdjIvYXV0aC9zc28tYnJpZGdlJykuIFJlcXVlcmlkb1xuICAgKiBjdWFuZG8gYGJvb3RzdHJhcFNlc3Npb25Gcm9tQnJpZGdlYCBlcyBgdHJ1ZWAuXG4gICAqL1xuICBzc29CcmlkZ2VVcmw/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFU1RBRE8gREUgQVVURU5USUNBQ0nDk05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRXN0YWRvIGNvbXBsZXRvIGRlIGF1dGVudGljYWNpw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhTdGF0ZSB7XG4gIC8qKiBVc3VhcmlvIGVzdMOhIGF1dGVudGljYWRvICovXG4gIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjtcbiAgLyoqIEVzdGFkbyBkZSBjYXJnYSBpbmljaWFsICovXG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgLyoqIFRva2VuIGRlIGFjY2VzbyBhY3R1YWwgKi9cbiAgYWNjZXNzVG9rZW46IHN0cmluZyB8IG51bGw7XG4gIC8qKiBUb2tlbiBkZSByZWZyZXNjbyBhY3R1YWwgKi9cbiAgcmVmcmVzaFRva2VuOiBzdHJpbmcgfCBudWxsO1xuICAvKiogSUQgZGVsIHVzdWFyaW8gKi9cbiAgdXNlcklkOiBzdHJpbmcgfCBudWxsO1xuICAvKiogRW1haWwgZGVsIHVzdWFyaW8gKi9cbiAgZW1haWw6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBOb21icmUgY29tcGxldG8gZGVsIHVzdWFyaW8gKHBvYmxhZG8gdHJhcyBgZ2V0UHJvZmlsZSgpYCkgKi9cbiAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gIC8qKiBVc2VybmFtZS9oYW5kbGUgKHBvYmxhZG8gdHJhcyBgZ2V0UHJvZmlsZSgpYCkgKi9cbiAgaGFuZGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFVSTCBkZWwgYXZhdGFyIChwb2JsYWRvIHRyYXMgYGdldFByb2ZpbGUoKWApICovXG4gIGF2YXRhclVybD86IHN0cmluZyB8IG51bGw7XG4gIC8qKiBUZWzDqWZvbm8gKHBvYmxhZG8gdHJhcyBgZ2V0UHJvZmlsZSgpYCkgKi9cbiAgcGhvbmU/OiBzdHJpbmcgfCBudWxsO1xuICAvKiogSUQgZGUgbGEgb3JnYW5pemFjacOzbiBhY3RpdmEgKi9cbiAgYWN0aXZlT3JnPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFJvbGVzIGRlbCB1c3VhcmlvICovXG4gIHJvbGVzOiBzdHJpbmdbXTtcbiAgLyoqIFBlcm1pc29zIGRlbCB1c3VhcmlvIChmb3JtYXRvICdyZXNvdXJjZTphY3Rpb24nKSAqL1xuICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gIC8qKiBVc3VhcmlvIGVzIHN1cGVyIGFkbWluICovXG4gIGlzU3VwZXJBZG1pbjogYm9vbGVhbjtcbiAgLyoqIFVzdWFyaW8gdGllbmUgc3VzY3JpcGNpw7NuIHByZW1pdW0gYWN0aXZhIChubyB2ZSBhZHMpICovXG4gIGlzUHJlbWl1bTogYm9vbGVhbjtcbiAgLyoqIFRpbWVzdGFtcCBkZSBleHBpcmFjacOzbiBkZWwgYWNjZXNzVG9rZW4gKG1zKSAqL1xuICBleHBpcmVzQXQ6IG51bWJlciB8IG51bGw7XG4gIC8qKiBFcnJvciBkZSBhdXRlbnRpY2FjacOzbiAoc2kgZXhpc3RlKSAqL1xuICBlcnJvcjogQXV0aEVycm9yIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBJbmZvcm1hY2nDs24gZGVsIHVzdWFyaW8gYXV0ZW50aWNhZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFVzZXIge1xuICB1c2VySWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG4gIC8qKiBVc2VybmFtZS9oYW5kbGUgZGVsIHVzdWFyaW8gKGVqOiBAdmljdG9ydikgKi9cbiAgaGFuZGxlPzogc3RyaW5nO1xuICAvKiogSUQgZGUgbGEgb3JnYW5pemFjacOzbiBhY3RpdmEgKi9cbiAgYWN0aXZlT3JnPzogc3RyaW5nO1xuICAvKiogVVJMIGRlbCBhdmF0YXIgZGVsIHVzdWFyaW8gKi9cbiAgYXZhdGFyVXJsPzogc3RyaW5nO1xuICByb2xlczogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbiAgaXNTdXBlckFkbWluOiBib29sZWFuO1xuICBtZmFFbmFibGVkPzogYm9vbGVhbjtcbiAgbWZhTWV0aG9kPzogTUZBTWV0aG9kO1xufVxuXG4vKipcbiAqIEVycm9yIGRlIGF1dGVudGljYWNpw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhFcnJvciB7XG4gIGNvZGU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVzdGFkbyBpbmljaWFsIGRlIGF1dGVudGljYWNpw7NuLlxuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9BVVRIX1NUQVRFOiBBdXRoU3RhdGUgPSB7XG4gIGlzQXV0aGVudGljYXRlZDogZmFsc2UsXG4gIGlzTG9hZGluZzogdHJ1ZSxcbiAgYWNjZXNzVG9rZW46IG51bGwsXG4gIHJlZnJlc2hUb2tlbjogbnVsbCxcbiAgdXNlcklkOiBudWxsLFxuICBlbWFpbDogbnVsbCxcbiAgYWN0aXZlT3JnOiBudWxsLFxuICByb2xlczogW10sXG4gIHBlcm1pc3Npb25zOiBbXSxcbiAgaXNTdXBlckFkbWluOiBmYWxzZSxcbiAgaXNQcmVtaXVtOiBmYWxzZSxcbiAgZXhwaXJlc0F0OiBudWxsLFxuICBlcnJvcjogbnVsbCxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNRkFcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBNw6l0b2RvcyBkZSBNRkEgc29wb3J0YWRvcyAqL1xuZXhwb3J0IHR5cGUgTUZBTWV0aG9kID0gJ0VNQUlMJyB8ICdTTVMnIHwgJ1RPVFAnO1xuXG4vKipcbiAqIEVzdGFkbyBkZSBNRkEgcGVuZGllbnRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVBlbmRpbmdTdGF0ZSB7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBtZmFUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgbWV0aG9kOiBNRkFNZXRob2QgfCBudWxsO1xufVxuXG4vKipcbiAqIEVzdGFkbyBpbmljaWFsIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfTUZBX1NUQVRFOiBNRkFQZW5kaW5nU3RhdGUgPSB7XG4gIHJlcXVpcmVkOiBmYWxzZSxcbiAgbWZhVG9rZW46IG51bGwsXG4gIG1ldGhvZDogbnVsbCxcbn07XG5cbi8qKlxuICogUmVzdWx0YWRvIGRlIHNldHVwIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTZXR1cFJlc3VsdCB7XG4gIGNvZGVTZW50OiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXN0YWRvIGRlIE1GQSBkZWwgdXN1YXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTdGF0dXMge1xuICBlbmFibGVkOiBib29sZWFuO1xuICBtZXRob2Q6IE1GQU1ldGhvZCB8IG51bGw7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT1RQIE1GQSAoR29vZ2xlIEF1dGhlbnRpY2F0b3IpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHNldHVwIGRlIFRPVFAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVE9UUFNldHVwUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICAvKiogU2VjcmV0byBUT1RQIGVuIGJhc2UzMiAocGFyYSBlbnRyYWRhIG1hbnVhbCkgKi9cbiAgc2VjcmV0OiBzdHJpbmc7XG4gIC8qKiBVUkwgcGFyYSBnZW5lcmFyIFFSIGNvZGUgKG90cGF1dGg6Ly8uLi4pICovXG4gIHFyQ29kZVVybDogc3RyaW5nO1xuICAvKiogQ8OzZGlnb3MgZGUgcmVzcGFsZG8gZGUgdW4gc29sbyB1c28gKi9cbiAgYmFja3VwQ29kZXM6IHN0cmluZ1tdO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHZlcmlmaWNhciBzZXR1cCBkZSBUT1RQLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRPVFBWZXJpZnlTZXR1cFJlcXVlc3Qge1xuICAvKiogQ8OzZGlnbyBUT1RQIGRlIDYgZMOtZ2l0b3MgKi9cbiAgY29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHZlcmlmaWNhY2nDs24gZGUgc2V0dXAgVE9UUC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUT1RQVmVyaWZ5U2V0dXBSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgZGVzaGFiaWxpdGFyIFRPVFAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVE9UUERpc2FibGVSZXF1ZXN0IHtcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBkZXNoYWJpbGl0YXIgVE9UUC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUT1RQRGlzYWJsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZWdlbmVyYXIgY8OzZGlnb3MgZGUgcmVzcGFsZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnZW5lcmF0ZUJhY2t1cENvZGVzUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBiYWNrdXBDb2Rlczogc3RyaW5nW107XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBjYW50aWRhZCBkZSBjw7NkaWdvcyBkZSByZXNwYWxkby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYWNrdXBDb2Rlc0NvdW50UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBjb3VudDogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVRVUVTVFMvUkVTUE9OU0VTIChhbGluZWFkb3MgY29uIGJhY2tlbmQgQXV0aFYyKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgc2lnbnVwIChyZWdpc3RybykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbnVwUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgc2lnbnVwIChyZWdpc3RybykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbnVwUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSB2ZXJpZmljYXIgZW1haWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5RW1haWxSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHZlcmlmaWNhY2nDs24gZGUgZW1haWwuXG4gKiBTaSBlcyBleGl0b3NvLCBpbmNsdXllIHRva2VucyBwYXJhIGF1dG8tbG9naW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5RW1haWxSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHZlcmlmaWVkOiBib29sZWFuO1xuICBhY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgcmVmcmVzaFRva2VuPzogc3RyaW5nO1xuICBmaXJlYmFzZVRva2VuPzogc3RyaW5nO1xuICBleHBpcmVzSW4/OiBudW1iZXI7XG4gIHRva2VuVHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgYWN0aXZhciB1bmEgY3VlbnRhIHByZS1hcHJvdmlzaW9uYWRhIHBvciB1bmEgb3JnYW5pemFjacOzblxuICogKEFEUi0wMjMpOiBlbCB1c3VhcmlvIGRlZmluZSBzdSBjb250cmFzZcOxYSBjb24gZWwgdG9rZW4gZGVsIGVubGFjZSBkZSBlbWFpbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3RpdmF0ZUFjY291bnRSZXF1ZXN0IHtcbiAgdG9rZW46IHN0cmluZztcbiAgbmV3UGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBhY3RpdmFjacOzbiBkZSBjdWVudGEuIEVuIMOpeGl0byBpbmNsdXllIHRva2VucyBkZSBhdXRvLXNpZ25pblxuICogKG1pc21vIHNoYXBlIHF1ZSB2ZXJpZnktZW1haWwpIOKAlCBlbCB1c3VhcmlvIHF1ZWRhIGxvZ3VlYWRvIHRyYXMgYWN0aXZhci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3RpdmF0ZUFjY291bnRSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGFjdGl2YXRlZDogYm9vbGVhbjtcbiAgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbj86IHN0cmluZztcbiAgZmlyZWJhc2VUb2tlbj86IHN0cmluZztcbiAgZXhwaXJlc0luPzogbnVtYmVyO1xuICB0b2tlblR5cGU/OiBzdHJpbmc7XG4gIHJvbGVzPzogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHJlZW52aWFyIGPDs2RpZ28gZGUgdmVyaWZpY2FjacOzbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNlbmRDb2RlUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHR5cGU6ICdFTUFJTF9WRVJJRlknIHwgJ1BBU1NXT1JEX1JFU0VUJztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZWVudsOtbyBkZSBjw7NkaWdvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc2VuZENvZGVSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHNlbnQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHNpZ25pbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduaW5SZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgYXBwSWQ/OiBzdHJpbmc7XG4gIC8qKiBQbGF0YWZvcm1hIGRlbCBkaXNwb3NpdGl2byAocGFyYSBkZXRlY2Npw7NuIGRlIG51ZXZvIGRpc3Bvc2l0aXZvKSAqL1xuICBwbGF0Zm9ybT86IERldmljZVBsYXRmb3JtO1xuICAvKiogTmF2ZWdhZG9yIChzb2xvIHdlYikgKi9cbiAgYnJvd3Nlcj86IHN0cmluZztcbiAgLyoqIFNpc3RlbWEgb3BlcmF0aXZvICovXG4gIG9zPzogc3RyaW5nO1xuICAvKiogTm9tYnJlIGFtaWdhYmxlIGRlbCBkaXNwb3NpdGl2byAqL1xuICBkZXZpY2VOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHNpZ25pbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduaW5SZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGZpcmViYXNlVG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyZXNJbj86IG51bWJlcjtcbiAgdG9rZW5UeXBlPzogc3RyaW5nO1xuICBtZmFSZXF1aXJlZD86IGJvb2xlYW47XG4gIG1mYVRva2VuPzogc3RyaW5nO1xuICBtZmFNZXRob2Q/OiBNRkFNZXRob2Q7XG4gIHJvbGVzPzogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zPzogc3RyaW5nW107XG4gIC8qKiBJbmRpY2Egc2kgZWwgbG9naW4gZnVlIGRlc2RlIHVuIGRpc3Bvc2l0aXZvIG51ZXZvL25vIHJlY29ub2NpZG8gKi9cbiAgaXNOZXdEZXZpY2U/OiBib29sZWFuO1xuICAvKiogSUQgZGVsIGRpc3Bvc2l0aXZvIHVzYWRvIHBhcmEgZWwgbG9naW4gKi9cbiAgZGV2aWNlSWQ/OiBzdHJpbmc7XG4gIC8qKiBJZGlvbWEgcHJlZmVyaWRvIGRlbCB1c3VhcmlvIChwYXJhIHNpbmNyb25pemFyIGNvbiBpMThuKSAqL1xuICBsYW5ndWFnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgdmVyaWZpY2FyIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFWZXJpZnlSZXF1ZXN0IHtcbiAgbWZhVG9rZW46IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xuICBhcHBJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSB2ZXJpZmljYXIgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVZlcmlmeVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIGZpcmViYXNlVG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyZXNJbjogbnVtYmVyO1xuICB0b2tlblR5cGU6IHN0cmluZztcbiAgcm9sZXM/OiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcbiAgLyoqIElkaW9tYSBwcmVmZXJpZG8gZGVsIHVzdWFyaW8gKHBhcmEgc2luY3Jvbml6YXIgY29uIGkxOG4pICovXG4gIGxhbmd1YWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSByZWZyZXNjYXIgdG9rZW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaFJlcXVlc3Qge1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGFjdGl2ZU9yZ0lkPzogc3RyaW5nIHwgbnVsbDtcbiAgYXBwSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgcmVmcmVzY2FyIHRva2VuLlxuICogSW1wbGVtZW50YSB0b2tlbiByb3RhdGlvbjogY2FkYSByZWZyZXNoIGdlbmVyYSB1biBudWV2byByZWZyZXNoIHRva2VuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZnJlc2hSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nOyAvLyBUb2tlbiByb3RhdGlvbjogbnVldm8gcmVmcmVzaCB0b2tlblxuICBleHBpcmVzSW46IG51bWJlcjtcbiAgZmlyZWJhc2VUb2tlbj86IHN0cmluZztcbiAgcm9sZXM/OiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgbG9nb3V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ291dFJlcXVlc3Qge1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBsb2dvdXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9nb3V0UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIG9idGVuZXIgcGVybWlzb3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UGVybWlzc2lvbnNSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHJvbGVzOiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICBpc1N1cGVyQWRtaW46IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHNldHVwIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTZXR1cFJlcXVlc3Qge1xuICBtZXRob2Q6IE1GQU1ldGhvZDtcbiAgcGhvbmU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgc2V0dXAgZGUgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVNldHVwUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBjb2RlU2VudDogYm9vbGVhbjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBjb25maXJtYXIgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQUNvbmZpcm1SZXF1ZXN0IHtcbiAgY29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGNvbmZpcm1hciBNRkEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBQ29uZmlybVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgbWZhRW5hYmxlZDogYm9vbGVhbjtcbiAgbWV0aG9kOiBNRkFNZXRob2Q7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGRlc2hhYmlsaXRhciBNRkEuXG4gKi9cbi8qKlxuICogQWNlcHRhIGBwYXNzd29yZGAgKGN1ZW50YSBjb24gY29udHJhc2XDsWEpIG8gYG1mYUNvZGVgIChjdWVudGEgT0F1dGgtb25seVxuICogY29uIFRPVFAgcXVlIHBydWViYSBwb3Nlc2nDs24gZGVsIHNlZ3VuZG8gZmFjdG9yKS4gVW5vIHJlcXVlcmlkby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFEaXNhYmxlUmVxdWVzdCB7XG4gIHBhc3N3b3JkPzogc3RyaW5nO1xuICBtZmFDb2RlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGRlc2hhYmlsaXRhciBNRkEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBRGlzYWJsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgbWZhRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGluaWNpYXIgcmVjdXBlcmFjacOzbiBkZSBjb250cmFzZcOxYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3Jnb3RQYXNzd29yZFJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGZvcmdvdCBwYXNzd29yZCAoc2llbXByZSBpZ3VhbCBwb3Igc2VndXJpZGFkKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3Jnb3RQYXNzd29yZFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSByZXNldGVhciBjb250cmFzZcOxYSBjb24gY8OzZGlnby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNldFBhc3N3b3JkUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGNvZGU6IHN0cmluZztcbiAgbmV3UGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZXNldCBwYXNzd29yZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNldFBhc3N3b3JkUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBpbmljaWFyIHJlc2V0IGRlIE1GQSBwb3IgZW1haWwgKHVzZXIgcGVyZGnDsyBzdSAywrogZmFjdG9yKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFSZXNldFJlcXVlc3RSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBNRkEgcmVzZXQgcmVxdWVzdCAoc2llbXByZSBpZ3VhbCBwb3Igc2VndXJpZGFkIOKAlCBhbnRpLWVudW1lcmFjacOzbikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBUmVzZXRSZXF1ZXN0UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGNvbmZpcm1hciBlbCByZXNldCBkZSBNRkEgY29uIGVsIGPDs2RpZ28gcmVjaWJpZG8gcG9yIGVtYWlsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVJlc2V0Q29uZmlybVJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgTUZBIHJlc2V0IGNvbmZpcm0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBUmVzZXRDb25maXJtUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGNhbWJpYXIgY29udHJhc2XDsWEgKHVzdWFyaW8gYXV0ZW50aWNhZG8pLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYW5nZVBhc3N3b3JkUmVxdWVzdCB7XG4gIGN1cnJlbnRQYXNzd29yZDogc3RyaW5nO1xuICBuZXdQYXNzd29yZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGNhbWJpbyBkZSBjb250cmFzZcOxYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VQYXNzd29yZFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgc3VjY2VzczogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgZWxpbWluYXIgY3VlbnRhLlxuICogVXN1YXJpb3MgY29uIGNvbnRyYXNlw7FhOiBlbnZpYXIgYHBhc3N3b3JkYC5cbiAqIFVzdWFyaW9zIE9BdXRoIHNpbiBjb250cmFzZcOxYTogZW52aWFyIGBjb2RlYCAob2J0ZW5pZG8gdmlhIHNlbmREZWxldGVBY2NvdW50Q29kZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlQWNjb3VudFJlcXVlc3Qge1xuICBwYXNzd29yZD86IHN0cmluZztcbiAgY29kZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBlbnZpYXIgY8OzZGlnbyBkZSBjb25maXJtYWNpw7NuIGRlIGVsaW1pbmFjacOzbiBkZSBjdWVudGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZERlbGV0ZUFjY291bnRDb2RlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGVsaW1pbmFyIGN1ZW50YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWxldGVBY2NvdW50UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBkZWxldGVkOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgb2J0ZW5lciBwZXJmaWwgZGVsIHVzdWFyaW8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UHJvZmlsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG4gIC8qKiBVc2VybmFtZS9oYW5kbGUgZGVsIHVzdWFyaW8gKi9cbiAgaGFuZGxlPzogc3RyaW5nO1xuICAvKiogVVJMIGRlbCBhdmF0YXIgZGVsIHVzdWFyaW8gKi9cbiAgYXZhdGFyVXJsPzogc3RyaW5nO1xuICBlbWFpbFZlcmlmaWVkOiBib29sZWFuO1xuICBwaG9uZVZlcmlmaWVkOiBib29sZWFuO1xuICBtZmFFbmFibGVkOiBib29sZWFuO1xuICBtZmFNZXRob2Q/OiBNRkFNZXRob2Q7XG4gIC8qKiBUcnVlIHNpIGxhIGN1ZW50YSB0aWVuZSBjb250cmFzZcOxYSBzZXRlYWRhIChmYWxzZSBwYXJhIE9BdXRoLW9ubHkgc2luIHBhc3N3b3JkKS4gKi9cbiAgaGFzUGFzc3dvcmQ/OiBib29sZWFuO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGFjdHVhbGl6YXIgcGVyZmlsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVByb2ZpbGVSZXF1ZXN0IHtcbiAgbmFtZT86IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgYWN0dWFsaXphciBwZXJmaWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlUHJvZmlsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgdXBkYXRlZDogYm9vbGVhbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFVQREFURSBBVkFUQVJcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGFjdHVhbGl6YXIgYXZhdGFyIGRlbCB1c3VhcmlvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUF2YXRhclJlcXVlc3Qge1xuICAvKiogVVJMIGRlbCBhdmF0YXIgZW4gRmlyZWJhc2UgU3RvcmFnZSAqL1xuICBhdmF0YXJVcmw6IHN0cmluZztcbiAgLyoqIFVSTCBkZWwgdGh1bWJuYWlsIChvcGNpb25hbCkgKi9cbiAgYXZhdGFyVGh1bWJuYWlsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGFjdHVhbGl6YXIgYXZhdGFyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUF2YXRhclJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgYXZhdGFyVXJsOiBzdHJpbmc7XG4gIGF2YXRhclRodW1ibmFpbD86IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFVkVOVE9TIERFIFNJTkNST05JWkFDScOTTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNXSVRDSCBPUkdBTklaQVRJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGNhbWJpYXIgZGUgb3JnYW5pemFjacOzbiBhY3RpdmEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3dpdGNoT3JnUmVxdWVzdCB7XG4gIG9yZ2FuaXphdGlvbklkOiBzdHJpbmc7XG4gIGFwcElkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGNhbWJpbyBkZSBvcmdhbml6YWNpw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN3aXRjaE9yZ1Jlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgZmlyZWJhc2VUb2tlbjogc3RyaW5nO1xuICBhY3RpdmVPcmc6IHN0cmluZztcbiAgLyoqIE51ZXZvIEpXVCBjb24gYWN0aXZlT3JnIGFjdHVhbGl6YWRvLiBFbCBGRSBsbyBhbG1hY2VuYSBwYXJhIHF1ZSBlbFxuICAgKiAgYm9vdHN0cmFwIHBvc3QtcmVmcmVzaCB1c2UgbGEgb3JnIGNvcnJlY3RhIGVuIHZleiBkZWwgSldUIGNhY2hlYWRvLiAqL1xuICBhY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgZXhwaXJlc0luPzogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVZFTlRPUyBERSBTSU5DUk9OSVpBQ0nDk05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBUaXBvcyBkZSBldmVudG9zIGRlIHNpbmNyb25pemFjacOzbiBlbnRyZSBwZXN0YcOxYXMgKi9cbmV4cG9ydCB0eXBlIEF1dGhTeW5jRXZlbnRUeXBlID1cbiAgfCAnTE9HSU4nXG4gIHwgJ0xPR09VVCdcbiAgfCAnVE9LRU5fUkVGUkVTSCdcbiAgfCAnUEVSTUlTU0lPTlNfVVBEQVRFJ1xuICB8ICdPUkdfU1dJVENIJztcblxuLyoqXG4gKiBFdmVudG8gZGUgc2luY3Jvbml6YWNpw7NuIGVudHJlIHBlc3Rhw7Fhcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRoU3luY0V2ZW50IHtcbiAgdHlwZTogQXV0aFN5bmNFdmVudFR5cGU7XG4gIHRpbWVzdGFtcDogbnVtYmVyO1xuICBwYXlsb2FkPzoge1xuICAgIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICAgIHJlZnJlc2hUb2tlbj86IHN0cmluZzsgLy8gVG9rZW4gcm90YXRpb24gc3VwcG9ydFxuICAgIGV4cGlyZXNBdD86IG51bWJlcjtcbiAgICBhY3RpdmVPcmc/OiBzdHJpbmc7XG4gIH07XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBKV1QgQ0xBSU1TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENsYWltcyBkZWwgSldUIGRlIGFjY2Vzby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBKV1RDbGFpbXMge1xuICAvKiogVXNlciBJRCAqL1xuICB1aWQ6IHN0cmluZztcbiAgLyoqIEVtYWlsICovXG4gIGVtYWlsOiBzdHJpbmc7XG4gIC8qKiBTZXNzaW9uIElEICovXG4gIHNpZD86IHN0cmluZztcbiAgLyoqIFVzdWFyaW8gdGllbmUgc3VzY3JpcGNpw7NuIHByZW1pdW0gYWN0aXZhICovXG4gIHByZW1pdW0/OiBib29sZWFuO1xuICAvKiogQWN0aXZlIG9yZ2FuaXphdGlvbiBJRCAoSldUIGNsYWltIFwib3JnXCIpICovXG4gIG9yZz86IHN0cmluZztcbiAgLyoqIFBsYXRmb3JtIGFkbWluIOKAlCBieXBhc3MgdG90YWwgZGUgUkJBQyBlbiB0b2RvcyBsb3Mgc2VydmljaW9zICovXG4gIGFkbWluPzogYm9vbGVhbjtcbiAgLyoqIElzc3VlZCBhdCAqL1xuICBpYXQ6IG51bWJlcjtcbiAgLyoqIEV4cGlyYXRpb24gKi9cbiAgZXhwOiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTVE9SQUdFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIERhdG9zIHBlcnNpc3RpZG9zIGVuIHN0b3JhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RvcmVkQXV0aFN0YXRlIHtcbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIHJvbGVzOiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICBpc1N1cGVyQWRtaW46IGJvb2xlYW47XG4gIGlzUHJlbWl1bT86IGJvb2xlYW47XG4gIGV4cGlyZXNBdD86IG51bWJlcjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERFVklDRSBSRUdJU1RSQVRJT04gKFB1c2ggTm90aWZpY2F0aW9ucylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUGxhdGFmb3JtYXMgc29wb3J0YWRhcyBwYXJhIHB1c2ggbm90aWZpY2F0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgRGV2aWNlUGxhdGZvcm0gPSAnd2ViJyB8ICdpb3MnIHwgJ2FuZHJvaWQnO1xuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSByZWdpc3RyYXIgdW4gZGlzcG9zaXRpdm8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJEZXZpY2VSZXF1ZXN0IHtcbiAgLyoqIEZDTSB0b2tlbiBkZWwgZGlzcG9zaXRpdm8gKi9cbiAgdG9rZW46IHN0cmluZztcbiAgLyoqIFBsYXRhZm9ybWEgZGVsIGRpc3Bvc2l0aXZvICovXG4gIHBsYXRmb3JtOiBEZXZpY2VQbGF0Zm9ybTtcbiAgLyoqIE5hdmVnYWRvciAoc29sbyB3ZWIpICovXG4gIGJyb3dzZXI/OiBzdHJpbmc7XG4gIC8qKiBTaXN0ZW1hIG9wZXJhdGl2byAqL1xuICBvcz86IHN0cmluZztcbiAgLyoqIFZlcnNpw7NuIGRlIGxhIGFwbGljYWNpw7NuICovXG4gIGFwcFZlcnNpb24/OiBzdHJpbmc7XG4gIC8qKiBOb21icmUgYW1pZ2FibGUgZGVsIGRpc3Bvc2l0aXZvICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBNZXRhZGF0YSBhZGljaW9uYWwgKi9cbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHJlZ2lzdHJvIGRlIGRpc3Bvc2l0aXZvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyRGV2aWNlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBkZXZpY2U6IHtcbiAgICBkZXZpY2VJZDogc3RyaW5nO1xuICAgIHRva2VuOiBzdHJpbmc7XG4gICAgcGxhdGZvcm06IERldmljZVBsYXRmb3JtO1xuICAgIGJyb3dzZXI/OiBzdHJpbmc7XG4gICAgb3M/OiBzdHJpbmc7XG4gICAgbGFzdEFjdGl2ZTogc3RyaW5nO1xuICAgIGNyZWF0ZWRBdDogc3RyaW5nO1xuICB9O1xuICAvKiogdHJ1ZSBzaSBlcyB1biBudWV2byBkaXNwb3NpdGl2bywgZmFsc2Ugc2kgc2UgYWN0dWFsaXrDsyB1bm8gZXhpc3RlbnRlICovXG4gIGlzTmV3OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc3VsdGFkbyBkZSBoYWJpbGl0YXIgbm90aWZpY2FjaW9uZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5hYmxlTm90aWZpY2F0aW9uc1Jlc3VsdCB7XG4gIC8qKiBTaSBzZSBvdG9yZ2Fyb24gbG9zIHBlcm1pc29zICovXG4gIGdyYW50ZWQ6IGJvb2xlYW47XG4gIC8qKiBGQ00gdG9rZW4gKHNvbG8gc2kgZ3JhbnRlZD10cnVlKSAqL1xuICB0b2tlbj86IHN0cmluZztcbiAgLyoqIFNpIGVsIGRpc3Bvc2l0aXZvIGZ1ZSByZWdpc3RyYWRvIGVuIGVsIGJhY2tlbmQgKi9cbiAgcmVnaXN0ZXJlZD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXN0YWRvIGRlIHBlcm1pc29zIGRlIG5vdGlmaWNhY2nDs24uXG4gKi9cbmV4cG9ydCB0eXBlIE5vdGlmaWNhdGlvblBlcm1pc3Npb25TdGF0ZSA9ICdncmFudGVkJyB8ICdkZW5pZWQnIHwgJ2RlZmF1bHQnIHwgJ3Vuc3VwcG9ydGVkJztcblxuLyoqXG4gKiBSZXN1bHRhZG8gZGVsIHJlZ2lzdHJvIG1hbnVhbCBkZSBkaXNwb3NpdGl2by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlckRldmljZVJlc3VsdCB7XG4gIC8qKiBTaSBlbCBkaXNwb3NpdGl2byBmdWUgcmVnaXN0cmFkbyBleGl0b3NhbWVudGUgKi9cbiAgcmVnaXN0ZXJlZDogYm9vbGVhbjtcbiAgLyoqIElEIGRlbCBkaXNwb3NpdGl2byAoc29sbyBzaSByZWdpc3RlcmVkPXRydWUpICovXG4gIGRldmljZUlkPzogc3RyaW5nO1xuICAvKiogRkNNIHRva2VuIHVzYWRvIHBhcmEgZWwgcmVnaXN0cm8gKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBNZW5zYWplIGRlIGVycm9yIChzb2xvIHNpIHJlZ2lzdGVyZWQ9ZmFsc2UpICovXG4gIGVycm9yPzogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gREVWSUNFIE1BTkFHRU1FTlQgKERldGVjY2nDs24gZGUgZGlzcG9zaXRpdm9zIG51ZXZvcylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRXN0YWRvcyBwb3NpYmxlcyBkZSB1biBkaXNwb3NpdGl2by5cbiAqL1xuZXhwb3J0IHR5cGUgRGV2aWNlU3RhdHVzID0gJ2FjdGl2ZScgfCAncGVuZGluZ19hcHByb3ZhbCcgfCAnYmxvY2tlZCc7XG5cbi8qKlxuICogSW5mb3JtYWNpw7NuIGNvbXBsZXRhIGRlIHVuIGRpc3Bvc2l0aXZvIHJlZ2lzdHJhZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGV2aWNlSW5mbyB7XG4gIC8qKiBJRCDDum5pY28gZGVsIGRpc3Bvc2l0aXZvICovXG4gIGRldmljZUlkOiBzdHJpbmc7XG4gIC8qKiBQbGF0YWZvcm1hIGRlbCBkaXNwb3NpdGl2byAqL1xuICBwbGF0Zm9ybTogRGV2aWNlUGxhdGZvcm07XG4gIC8qKiBOYXZlZ2Fkb3IgKHNvbG8gd2ViKSAqL1xuICBicm93c2VyPzogc3RyaW5nO1xuICAvKiogU2lzdGVtYSBvcGVyYXRpdm8gKi9cbiAgb3M/OiBzdHJpbmc7XG4gIC8qKiBOb21icmUgYW1pZ2FibGUgZGVsIGRpc3Bvc2l0aXZvICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBFc3RhZG8gYWN0dWFsIGRlbCBkaXNwb3NpdGl2byAqL1xuICBzdGF0dXM6IERldmljZVN0YXR1cztcbiAgLyoqIERpcmVjY2nDs24gSVAgZGVsIMO6bHRpbW8gYWNjZXNvICovXG4gIGlwQWRkcmVzcz86IHN0cmluZztcbiAgLyoqIFViaWNhY2nDs24gZ2VvZ3LDoWZpY2EgYXByb3hpbWFkYSAqL1xuICBsb2NhdGlvbj86IHN0cmluZztcbiAgLyoqIMOabHRpbWEgYWN0aXZpZGFkICovXG4gIGxhc3RBY3RpdmU6IHN0cmluZztcbiAgLyoqIEZlY2hhIGRlIGNyZWFjacOzbi9yZWdpc3RybyAqL1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgLyoqIEZlY2hhIGRlIGFwcm9iYWNpw7NuIChzaSBhcGxpY2EpICovXG4gIGFwcHJvdmVkQXQ/OiBzdHJpbmc7XG4gIC8qKiBGZWNoYSBkZSBibG9xdWVvIChzaSBhcGxpY2EpICovXG4gIGJsb2NrZWRBdD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBsaXN0YXIgZGlzcG9zaXRpdm9zIGRlbCB1c3VhcmlvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3REZXZpY2VzUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBkZXZpY2VzOiBEZXZpY2VJbmZvW107XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgYWNjacOzbiBzb2JyZSBkaXNwb3NpdGl2byAoYmxvY2svYXBwcm92ZS9kZWxldGUpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERldmljZUFjdGlvblJlc3VsdCB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNFU1NJT04gTUFOQUdFTUVOVCAoR2VzdGnDs24gZGUgc2VzaW9uZXMgYWN0aXZhcylcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogSW5mb3JtYWNpw7NuIGRlIHVuYSBzZXNpw7NuIGFjdGl2YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uSW5mbyB7XG4gIC8qKiBJRCDDum5pY28gZGUgbGEgc2VzacOzbiAqL1xuICBzZXNzaW9uSWQ6IHN0cmluZztcbiAgLyoqIElEIGRlbCBkaXNwb3NpdGl2byBhc29jaWFkbyAoc2kgZXhpc3RlKSAqL1xuICBkZXZpY2VJZD86IHN0cmluZztcbiAgLyoqIEluZm9ybWFjacOzbiBkZWwgZGlzcG9zaXRpdm8gKFVzZXItQWdlbnQpICovXG4gIGRldmljZUluZm8/OiBzdHJpbmc7XG4gIC8qKiBEaXJlY2Npw7NuIElQIGRlIGxhIHNlc2nDs24gKi9cbiAgaXA/OiBzdHJpbmc7XG4gIC8qKiBVYmljYWNpw7NuIGdlb2dyw6FmaWNhIGFwcm94aW1hZGEgKi9cbiAgbG9jYXRpb24/OiBzdHJpbmc7XG4gIC8qKiBGZWNoYSBkZSBjcmVhY2nDs24gZGUgbGEgc2VzacOzbiAqL1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgLyoqIEZlY2hhIGRlIGV4cGlyYWNpw7NuIGRlIGxhIHNlc2nDs24gKi9cbiAgZXhwaXJlc0F0OiBzdHJpbmc7XG4gIC8qKiBJbmRpY2Egc2kgZXMgbGEgc2VzacOzbiBhY3R1YWwgZGVsIHVzdWFyaW8gKi9cbiAgaXNDdXJyZW50OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGxpc3RhciBzZXNpb25lcyBhY3RpdmFzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RTZXNzaW9uc1Jlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgc2Vzc2lvbnM6IFNlc3Npb25JbmZvW107XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgcmV2b2NhciBzZXNpw7NuKGVzKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXZva2VTZXNzaW9uc1Jlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgLyoqIE7Dum1lcm8gZGUgc2VzaW9uZXMgcmV2b2NhZGFzICovXG4gIHNlc3Npb25zUmV2b2tlZDogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gREVWSUNFIEFDVElPTiAoQWNjaW9uZXMgZGVzZGUgZW1haWwgZGUgYWxlcnRhKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgZWplY3V0YXIgYWNjacOzbiBkZSBkaXNwb3NpdGl2byBkZXNkZSBlbWFpbC5cbiAqIEVsIHRva2VuIHZpZW5lIGVuIGxhIFVSTCBkZWwgZW1haWwgZGUgYWxlcnRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERldmljZUFjdGlvblJlcXVlc3Qge1xuICAvKiogVG9rZW4gSldUIGRlIGFjY2nDs24gKDI0aCwgdW4gc29sbyB1c28pICovXG4gIHRva2VuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgZWplY3V0YXIgYWNjacOzbiBkZSBkaXNwb3NpdGl2by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXZpY2VBY3Rpb25SZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIC8qKiBTaSBsYSBhY2Npw7NuIGZ1ZSBlamVjdXRhZGEgZXhpdG9zYW1lbnRlICovXG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIC8qKiBBY2Npw7NuIGVqZWN1dGFkYSAocmVmdXNlLCBhcHByb3ZlLCBibG9jaykgKi9cbiAgYWN0aW9uOiBzdHJpbmc7XG4gIC8qKiBJRCBkZWwgZGlzcG9zaXRpdm8gYWZlY3RhZG8gKi9cbiAgZGV2aWNlSWQ6IHN0cmluZztcbiAgLyoqIE7Dum1lcm8gZGUgc2VzaW9uZXMgcmV2b2NhZGFzIChzaSBhY3Rpb249cmVmdXNlL2Jsb2NrKSAqL1xuICBzZXNzaW9uc1Jldm9rZWQ/OiBudW1iZXI7XG4gIC8qKiBNZW5zYWplIGRlc2NyaXB0aXZvICovXG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSB2YWxpZGFyIHRva2VuIGRlIGFjY2nDs24gKHNpbiBlamVjdXRhcikuXG4gKiBVc2FkbyBwYXJhIG1vc3RyYXIgY29uZmlybWFjacOzbiBhbCB1c3VhcmlvIGFudGVzIGRlIGVqZWN1dGFyLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRlQWN0aW9uUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICAvKiogU2kgZWwgdG9rZW4gZXMgdsOhbGlkbyAqL1xuICB2YWxpZDogYm9vbGVhbjtcbiAgLyoqIFRpcG8gZGUgYWNjacOzbiAoZGV2aWNlOnJlZnVzZSwgZGV2aWNlOmFwcHJvdmUsIGV0Yy4pICovXG4gIGFjdGlvblR5cGU/OiBzdHJpbmc7XG4gIC8qKiBUaXBvIGRlIHJlY3Vyc28gb2JqZXRpdm8gKGRldmljZSwgZG9jdW1lbnQsIGV0Yy4pICovXG4gIHRhcmdldFR5cGU/OiBzdHJpbmc7XG4gIC8qKiBJRCBkZWwgcmVjdXJzbyBvYmpldGl2byAqL1xuICB0YXJnZXRJZD86IHN0cmluZztcbiAgLyoqIE1lbnNhamUgZGUgZXJyb3IgKHNpIHZhbGlkPWZhbHNlKSAqL1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gT0FVVEggKExvZ2luIHNvY2lhbClcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUHJvdmVlZG9yZXMgT0F1dGggc29wb3J0YWRvcy5cbiAqL1xuZXhwb3J0IHR5cGUgT0F1dGhQcm92aWRlciA9ICdnb29nbGUnIHwgJ2FwcGxlJyB8ICdtaWNyb3NvZnQnIHwgJ2ZhY2Vib29rJztcblxuLyoqXG4gKiBSZXN1bHRhZG8gZXhpdG9zbyBkZSBmbHVqbyBPQXV0aC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPQXV0aFJlc3VsdCB7XG4gIC8qKiBUb2tlbiBkZSBhY2Nlc28gSldUICovXG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIC8qKiBUb2tlbiBkZSByZWZyZXNjbyAqL1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbiAgLyoqIFRva2VuIGRlIEZpcmViYXNlIChzaSBlc3TDoSBoYWJpbGl0YWRvKSAqL1xuICBmaXJlYmFzZVRva2VuPzogc3RyaW5nO1xuICAvKiogVGllbXBvIGRlIGV4cGlyYWNpw7NuIGVuIHNlZ3VuZG9zICovXG4gIGV4cGlyZXNJbjogbnVtYmVyO1xuICAvKiogUm9sZXMgZGVsIHVzdWFyaW8gKi9cbiAgcm9sZXM/OiBzdHJpbmdbXTtcbiAgLyoqIFBlcm1pc29zIGRlbCB1c3VhcmlvICovXG4gIHBlcm1pc3Npb25zPzogc3RyaW5nW107XG4gIC8qKiBJbmRpY2Egc2kgZXMgdW4gdXN1YXJpbyBudWV2byAocmVjacOpbiBjcmVhZG8pICovXG4gIGlzTmV3VXNlcj86IGJvb2xlYW47XG4gIC8qKiBJbmRpY2Egc2kgbGEgY3VlbnRhIGZ1ZSB2aW5jdWxhZGEgYSB1c3VhcmlvIGV4aXN0ZW50ZSAqL1xuICBsaW5rZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogYHRydWVgIHNpIGVsIGJhY2tlbmQgZXhpZ2UgdmVyaWZpY2FjacOzbiBNRkEgdHJhcyBlbCBPQXV0aC4gRW4gZXNlIGNhc29cbiAgICogTk8gdmllbmVuIGBhY2Nlc3NUb2tlbmAvYHJlZnJlc2hUb2tlbmAg4oCUIGVsIGZsdWpvIGNvbnRpbsO6YSBjb24gYG1mYVRva2VuYC5cbiAgICovXG4gIG1mYVJlcXVpcmVkPzogYm9vbGVhbjtcbiAgLyoqIFRva2VuIHRlbXBvcmFsIHBhcmEgZWwgY2hhbGxlbmdlIE1GQSAocHJlc2VudGUgc2kgYG1mYVJlcXVpcmVkYCkuICovXG4gIG1mYVRva2VuPzogc3RyaW5nO1xuICAvKiogTcOpdG9kbyBNRkEgY29uZmlndXJhZG8gcG9yIGVsIHVzdWFyaW8gKHByZXNlbnRlIHNpIGBtZmFSZXF1aXJlZGApLiAqL1xuICBtZmFNZXRob2Q/OiBNRkFNZXRob2Q7XG4gIC8qKlxuICAgKiBgdHJ1ZWAgc2kgbGEgY3VlbnRhIHF1ZWTDsyBTSU4gY29ycmVvIHBvcnF1ZSBlbCBwcm92ZWVkb3Igbm8gZW50cmVnw7MgdW5vXG4gICAqIChjYXNvIHTDrXBpY286IGN1ZW50YSBkZSBGYWNlYm9vayBjcmVhZGEgY29uIHRlbMOpZm9ubywgbyBwZXJtaXNvIGRlIGVtYWlsXG4gICAqIGRlbmVnYWRvIGVuIGVsIGRpw6Fsb2dvIGRlIGNvbnNlbnRpbWllbnRvKS5cbiAgICpcbiAgICogRWwgdXN1YXJpbyB5YSBlc3TDoSBhdXRlbnRpY2FkbzogY29tcGxldGFyIGVsIE9BdXRoIHBydWViYSBxdWUgZXMgZHVlw7FvIGRlXG4gICAqIGxhIGN1ZW50YSBkZWwgcHJvdmVlZG9yLiBQZXJvIHNpbiBjb3JyZW8gbm8gaGF5IHJlY3VwZXJhY2nDs24gZGUgYWNjZXNvLCBuaVxuICAgKiBNRkEgcG9yIGVtYWlsLCBuaSBub3RpZmljYWNpb25lcywgYXPDrSBxdWUgbGEgYXBwIGRlYmVyw61hIGRlcml2YXJsbyBhbCBhbHRhXG4gICAqIGRlIGNvcnJlbyAoYEF1dGhTZXJ2aWNlLmFkZEVtYWlsYCkuXG4gICAqL1xuICByZXF1aXJlc0VtYWlsPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBFcnJvciBkZSBPQXV0aC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPQXV0aEVycm9yIHtcbiAgLyoqIEPDs2RpZ28gZGUgZXJyb3IgKi9cbiAgY29kZTogc3RyaW5nO1xuICAvKiogTWVuc2FqZSBkZXNjcmlwdGl2byAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0b3MgZW52aWFkb3MgZGVzZGUgcG9wdXAgY2FsbGJhY2sgdmlhIHBvc3RNZXNzYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE9BdXRoQ2FsbGJhY2tEYXRhIHtcbiAgLyoqIFRpcG8gZGUgbWVuc2FqZSAqL1xuICB0eXBlOiAnb2F1dGgtY2FsbGJhY2snO1xuICAvKiogVG9rZW5zIChzaSDDqXhpdG8pICovXG4gIHRva2Vucz86IE9BdXRoUmVzdWx0O1xuICAvKiogRXJyb3IgKHNpIGZhbGzDsykgKi9cbiAgZXJyb3I/OiBPQXV0aEVycm9yO1xuICAvKipcbiAgICogTm9uY2UgZGVsIG9wZW5lciAoTS0wNykuIEVsIHBvcHVwIGxvIHJlY2liZSBkZWwgYmFja2VuZCAocm91bmQtdHJpcCBwb3IgZWxcbiAgICogT0F1dGhTdGF0ZSBmaXJtYWRvKSB5IGxvIHJlZW52w61hOyBlbCBvcGVuZXIgbG8gdmVyaWZpY2EgY29udHJhIGVsIHF1ZSBnZW5lcsOzXG4gICAqIGVuIG1lbW9yaWEg4oaSIHJlY2hhemEgdW4gb2F1dGhfY2FsbGJhY2tfZGF0YSBmb3JqYWRvIGVuIGxvY2FsU3RvcmFnZSBwb3IgWFNTLlxuICAgKi9cbiAgbm9uY2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvdmVlZG9yIE9BdXRoIHZpbmN1bGFkbyBhbCB1c3VhcmlvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExpbmtlZFByb3ZpZGVyIHtcbiAgLyoqIE5vbWJyZSBkZWwgcHJvdmVlZG9yICovXG4gIHByb3ZpZGVyOiBPQXV0aFByb3ZpZGVyO1xuICAvKiogRW1haWwgYXNvY2lhZG8gYWwgcHJvdmVlZG9yICovXG4gIGVtYWlsOiBzdHJpbmc7XG4gIC8qKiBOb21icmUgZGVsIHVzdWFyaW8gZW4gZWwgcHJvdmVlZG9yICovXG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgZGUgaW1hZ2VuIGRlIHBlcmZpbCAqL1xuICBwaWN0dXJlPzogc3RyaW5nO1xuICAvKiogRmVjaGEgZGUgdmluY3VsYWNpw7NuICovXG4gIGxpbmtlZEF0OiBzdHJpbmc7XG4gIC8qKiDDmmx0aW1hIHZleiBxdWUgc2UgdXPDsyBwYXJhIGxvZ2luICovXG4gIGxhc3RVc2VkQXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgdmVyaWZpY2FyIHNpIHRpZW5lIGNvbnRyYXNlw7FhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhhc1Bhc3N3b3JkUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBoYXNQYXNzd29yZDogYm9vbGVhbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhBTkRMRSAoVXNlcm5hbWUpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBhY3R1YWxpemFyIGhhbmRsZSAoQHVzZXJuYW1lKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVIYW5kbGVSZXF1ZXN0IHtcbiAgaGFuZGxlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgYWN0dWFsaXphciBoYW5kbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlSGFuZGxlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBoYW5kbGU6IHN0cmluZztcbiAgdXBkYXRlZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgdmVyaWZpY2FyIGRpc3BvbmliaWxpZGFkIGRlIGhhbmRsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGVja0hhbmRsZVJlcXVlc3Qge1xuICBoYW5kbGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSB2ZXJpZmljYXIgZGlzcG9uaWJpbGlkYWQgZGUgaGFuZGxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoZWNrSGFuZGxlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBoYW5kbGU6IHN0cmluZztcbiAgYXZhaWxhYmxlOiBib29sZWFuO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTElOS0VEIFBST1ZJREVSUyAoT0F1dGgpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIG9idGVuZXIgcHJvdmVlZG9yZXMgT0F1dGggdmluY3VsYWRvcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRMaW5rZWRQcm92aWRlcnNSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHByb3ZpZGVyczogTGlua2VkUHJvdmlkZXJbXTtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgZGVzdmluY3VsYXIgdW4gcHJvdmVlZG9yIE9BdXRoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVubGlua1Byb3ZpZGVyUmVxdWVzdCB7XG4gIHByb3ZpZGVyOiBPQXV0aFByb3ZpZGVyO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGRlc3ZpbmN1bGFyIHByb3ZlZWRvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmxpbmtQcm92aWRlclJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgdW5saW5rZWQ6IGJvb2xlYW47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRU1BSUwgQ0hBTkdFIOKAlCAzLXN0ZXAgZmxvd1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhdGVFbWFpbENoYW5nZVJlcXVlc3Qge1xuICBjdXJyZW50UGFzc3dvcmQ6IHN0cmluZztcbiAgbmV3RW1haWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbml0aWF0ZUVtYWlsQ2hhbmdlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBwZW5kaW5nRW1haWw6IHN0cmluZztcbiAgcmVxdWVzdExvY2F0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybUVtYWlsQ2hhbmdlU3RlcDFSZXF1ZXN0IHtcbiAgY29kZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1FbWFpbENoYW5nZVN0ZXAxUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICB2ZXJpZmllZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtRW1haWxDaGFuZ2VTdGVwMlJlcXVlc3Qge1xuICBjb2RlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybUVtYWlsQ2hhbmdlU3RlcDJSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIG5ld0VtYWlsOiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQUxUQSBERSBDT1JSRU8g4oCUIGN1ZW50YXMgc2luIGVtYWlsXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFBhcmEgY3VlbnRhcyBjcmVhZGFzIHbDrWEgdW4gcHJvdmVlZG9yIE9BdXRoIHF1ZSBubyBlbnRyZWdhIGNvcnJlbyAodmVyXG4vLyBPQXV0aFJlc3VsdC5yZXF1aXJlc0VtYWlsKS4gQSBkaWZlcmVuY2lhIGRlbCBjYW1iaW8gZGUgZW1haWwsIG5vIHBpZGVcbi8vIGNvbnRyYXNlw7FhOiBlc3RhcyBjdWVudGFzIHNvbiBPQXV0aC1vbmx5IHkgbm8gdGllbmVuIHVuYS5cblxuZXhwb3J0IGludGVyZmFjZSBBZGRFbWFpbFJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZEVtYWlsUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICAvKiogQ29ycmVvIHBlbmRpZW50ZSwgZW5tYXNjYXJhZG8gKFwibioqKkBlamVtcGxvLmNvbVwiKS4gKi9cbiAgcGVuZGluZ0VtYWlsOiBzdHJpbmc7XG4gIC8qKiBNaW51dG9zIGRlIHZpZ2VuY2lhIGRlbCBjw7NkaWdvIGVudmlhZG8uICovXG4gIGV4cGlyZXNJbk1pbjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1BZGRFbWFpbFJlcXVlc3Qge1xuICBjb2RlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybUFkZEVtYWlsUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBlbWFpbDogc3RyaW5nO1xuICB2ZXJpZmllZDogYm9vbGVhbjtcbn1cbiJdfQ==
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2F1dGgvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBc01IOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQWM7SUFDM0MsZUFBZSxFQUFFLEtBQUs7SUFDdEIsU0FBUyxFQUFFLElBQUk7SUFDZixXQUFXLEVBQUUsSUFBSTtJQUNqQixZQUFZLEVBQUUsSUFBSTtJQUNsQixNQUFNLEVBQUUsSUFBSTtJQUNaLEtBQUssRUFBRSxJQUFJO0lBQ1gsU0FBUyxFQUFFLElBQUk7SUFDZixLQUFLLEVBQUUsRUFBRTtJQUNULFdBQVcsRUFBRSxFQUFFO0lBQ2YsWUFBWSxFQUFFLEtBQUs7SUFDbkIsU0FBUyxFQUFFLEtBQUs7SUFDaEIsU0FBUyxFQUFFLElBQUk7SUFDZixLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFrQkY7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBb0I7SUFDaEQsUUFBUSxFQUFFLEtBQUs7SUFDZixRQUFRLEVBQUUsSUFBSTtJQUNkLE1BQU0sRUFBRSxJQUFJO0NBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGlwb3MgZSBpbnRlcmZhY2VzIHBhcmEgZWwgc2VydmljaW8gZGUgYXV0ZW50aWNhY2nDs24gZGUgVmFsdGVjaC5cbiAqIEFsaW5lYWRvcyBjb24gZWwgYmFja2VuZCBBdXRoVjIuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTkZJR1VSQUNJw5NOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENvbmZpZ3VyYWNpw7NuIHBhcmEgZWwgc2VydmljaW8gZGUgYXV0ZW50aWNhY2nDs24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdGVjaEF1dGhDb25maWcge1xuICAvKiogVVJMIGJhc2UgZGUgbGEgQVBJIChlajogJ2h0dHBzOi8vYXBpLm15dmFsdGVjaC5jb20nKSAqL1xuICBhcGlVcmw6IHN0cmluZztcbiAgLyoqIFByZWZpam8gcGFyYSBlbmRwb2ludHMgZGUgYXV0aCAoZGVmYXVsdDogJy92Mi9hdXRoJykgKi9cbiAgYXV0aFByZWZpeD86IHN0cmluZztcbiAgLyoqIFByZWZpam8gcGFyYSBsYXMgY2xhdmVzIGRlIGxvY2FsU3RvcmFnZSAoZGVmYXVsdDogJ3ZhbHRlY2hfYXV0aF8nKSAqL1xuICBzdG9yYWdlUHJlZml4Pzogc3RyaW5nO1xuICAvKiogVGllbXBvIGFudGVzIGRlIGV4cGlyYWNpw7NuIHBhcmEgcmVmcmVzY2FyIHRva2VuIGVuIHNlZ3VuZG9zIChkZWZhdWx0OiA2MCkgKi9cbiAgcmVmcmVzaEJlZm9yZUV4cGlyeT86IG51bWJlcjtcbiAgLyoqIEhhYmlsaXRhciBzaW5jcm9uaXphY2nDs24gZW50cmUgcGVzdGHDsWFzIChkZWZhdWx0OiB0cnVlKSAqL1xuICBlbmFibGVUYWJTeW5jPzogYm9vbGVhbjtcbiAgLyoqIFJ1dGEgZGUgcmVkaXJlY2Npw7NuIGN1YW5kbyBubyBhdXRlbnRpY2FkbyAoZGVmYXVsdDogJy9sb2dpbicpICovXG4gIGxvZ2luUm91dGU/OiBzdHJpbmc7XG4gIC8qKiBSdXRhIGRlIHJlZGlyZWNjacOzbiBjdWFuZG8geWEgYXV0ZW50aWNhZG8gKGRlZmF1bHQ6ICcvJykgKi9cbiAgaG9tZVJvdXRlPzogc3RyaW5nO1xuICAvKiogUnV0YSBwYXJhIGFjY2VzbyBkZW5lZ2FkbyAoZGVmYXVsdDogJy91bmF1dGhvcml6ZWQnKSAqL1xuICB1bmF1dGhvcml6ZWRSb3V0ZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFByZWZpam9zIGRlIHJ1dGFzIHDDumJsaWNhcyBxdWUgbnVuY2EgZGViZW4gc2VyIGVtcHVqYWRhcyBhIGxvZ2luL2hvbWUgcG9yXG4gICAqIGV2ZW50b3MgZ2xvYmFsZXMgZGUgc2VzacOzbiAobG9nb3V0IGNyb3NzLXRhYiwgc3dpdGNoIGRlIG9yZ2FuaXphY2nDs24gb1xuICAgKiByZWZyZXNoIGZhbGxpZG8pLiDDmnRpbCBwYXJhIGxpbmtzIGNvbXBhcnRpYmxlcyBjb21vIGAvYnV5Lzp0b2tlbmAsXG4gICAqIGAvc2VsbGVyLzp0b2tlbmAsIGAvdGlja2V0Lzp0b2tlbmAgbyBsYW5kaW5ncyBww7pibGljYXMuXG4gICAqXG4gICAqIENhZGEgYXBwIGRlYmUgZGVjbGFyYXIgc3VzIHByb3Bpb3MgcHJlZmlqb3MgZW4gYHByb3ZpZGVWYWx0ZWNoQXV0aCguLi4pYC5cbiAgICogTGEgbGliIG5vIGRlYmUgaGFyZGNvZGVhciBydXRhcyBkZSBwcm9kdWN0b3MgY29uY3JldG9zLlxuICAgKi9cbiAgcHVibGljUm91dGVQcmVmaXhlcz86IHN0cmluZ1tdO1xuICAvKiogSGFiaWxpdGFyIGludGVncmFjacOzbiBjb24gRmlyZWJhc2VTZXJ2aWNlIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgZW5hYmxlRmlyZWJhc2VJbnRlZ3JhdGlvbj86IGJvb2xlYW47XG4gIC8qKiBIYWJpbGl0YXIgcmVnaXN0cm8gYXV0b23DoXRpY28gZGUgZGV2aWNlIHRva2VucyBwYXJhIHB1c2ggbm90aWZpY2F0aW9ucyAoZGVmYXVsdDogZmFsc2UpICovXG4gIGVuYWJsZURldmljZVJlZ2lzdHJhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBcHBJRCBkZSBlc3RhIGFwcCBkZW50cm8gZGVsIGZhY3RvcnkgKGVqOiAnc2hvd2Nhc2UnLCAnc2lnaWZ5JywgJ215dmFsdGVjaCcpLlxuICAgKiBVc2FkbyBwb3IgTm90aWZpY2F0aW9uQWN0aW9uU2VydmljZSBwYXJhIGRlY2lkaXIgc2kgdW5hIG5vdGlmaWNhY2nDs25cbiAgICogYXB1bnRhIGEgbGEgYXBwIGFjdHVhbCBvIHJlcXVpZXJlIGhhbmRvZmYgY3Jvc3MtYXBwLlxuICAgKi9cbiAgYXBwSWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBNYXBhIGFwcElkIOKGkiBiYXNlVXJsIGFic29sdXRhIHBhcmEgaGFuZG9mZiBjcm9zcy1hcHAuXG4gICAqIEVqOiB7IHNpZ2lmeTogJ2h0dHBzOi8vc2lnaWZ5LmNvbScsIG15dmFsdGVjaDogJ2h0dHBzOi8vYXBwLm15dmFsdGVjaC5jb20nIH1cbiAgICogTm90aWZpY2F0aW9uQWN0aW9uU2VydmljZSB1c2EgZXN0ZSBtYXAgYWwgZGlzcGFyYXIgaGFuZG9mZiBhIG90cmEgYXBwLlxuICAgKi9cbiAgYXBwVXJscz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKlxuICAgKiBIYWJpbGl0YXIgc2luY3Jvbml6YWNpw7NuIHJlYWN0aXZhIGRlIHBlcm1pc29zIHZpYSBGaXJlc3RvcmUgb25TbmFwc2hvdCAoZGVmYXVsdDogZmFsc2UpLlxuICAgKiBSZXF1aWVyZSBlbmFibGVGaXJlYmFzZUludGVncmF0aW9uOiB0cnVlLiBDdWFuZG8gdW4gYWRtaW4gYXNpZ25hIG8gcmV2b2NhIHVuIHJvbCxcbiAgICogZWwgZnJvbnRlbmQgYWN0dWFsaXphIHJvbGVzL3Blcm1pc29zIHNpbiByZWNhcmdhciBsYSBww6FnaW5hICh+MS0zcyBsYXRlbmNpYSkuXG4gICAqIFJlcXVpZXJlIHF1ZSBlbCBiYWNrZW5kIHRlbmdhIFN5bmNSQkFDVG9GaXJlc3RvcmUgYWN0aXZvLlxuICAgKi9cbiAgZW5hYmxlRmlyZXN0b3JlUkJBQz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBCb290c3RyYXBlYXIgbGEgc2VzacOzbiBkZXNkZSBsYSBjb29raWUtaGludCBkZSBmYW1pbGlhIChkZWZhdWx0OiBmYWxzZSkuXG4gICAqXG4gICAqIEN1YW5kbyBlcyBgdHJ1ZWAgeSBlbiBlbCBhcnJhbnF1ZSBOTyBoYXkgYWNjZXNzIHRva2VuIGVuIGVsIHN0b3JhZ2UgZGUgZXN0ZVxuICAgKiBvcmlnaW4gUEVSTyBleGlzdGUgbGEgY29va2llIEpTLXJlYWRhYmxlIGRlIFwic2VzacOzbiBhY3RpdmEgZW4gbGEgZmFtaWxpYVwiXG4gICAqICh2ZXIgYGxvZ2dlZEluSGludENvb2tpZWApLCBgaW5pdGlhbGl6ZSgpYCBpbnRlbnRhIHVuIGAvcmVmcmVzaGAgcGFyYVxuICAgKiBpbnN0YWxhciBsYSBzZXNpw7NuIGNyb3NzLW9yaWdpbi4gRWwgcmVmcmVzaCB0b2tlbiBIdHRwT25seSBkZWwgYmFja2VuZCBlc1xuICAgKiBgU2FtZVNpdGU9Tm9uZWAg4oaSIHZpYWphIGEgbGEgQVBJIGRlc2RlIGN1YWxxdWllciBhcHAgZGVsIGZhY3RvcnksIGFzw60gcXVlIHVuXG4gICAqIHVzdWFyaW8gbG9ndWVhZG8gZW4gb3RyYSBhcHAgKGVqLiBzaG93Y2FzZSkgcXVlZGEgYXV0ZW50aWNhZG8gYWwgZW50cmFyIGFcbiAgICogZXN0YSBzaW4gcmUtbG9ndWVhciBuaSBoYW5kb2ZmIGV4cGzDrWNpdG8uXG4gICAqXG4gICAqIEVsIGludGVudG8gZXMgKipibG9xdWVhbnRlKiogKGEgZGlmZXJlbmNpYSBkZWwgcmVmcmVzaCBkZSBmb25kbyBkZWwgdG9rZW5cbiAgICogZXhwaXJhZG8pOiBubyBoYXkgY2xhaW1zIHF1ZSByZXN0YXVyYXIgZGUgZm9ybWEgb3B0aW1pc3RhLCBhc8OtIHF1ZSBzZSBlc3BlcmFcbiAgICogcGFyYSBxdWUgbG9zIGd1YXJkcyAoYGF1dGhHdWFyZGAvYGd1ZXN0R3VhcmRgKSB2ZWFuIGVsIGVzdGFkbyBjb3JyZWN0by4gU29sb1xuICAgKiBhZmVjdGEgYSB2aXNpdGFudGVzIENPTiBsYSBoaW50IChzZXNpw7NuIGRlIGZhbWlsaWEpLCBubyBhIGFuw7NuaW1vcy4gRWwgc3BsYXNoXG4gICAqIHByZS1ib290c3RyYXAgZGVsIGBpbmRleC5odG1sYCBjdWJyZSBsYSBsYXRlbmNpYSBkZWwgY29sZCBzdGFydC5cbiAgICpcbiAgICogQ2F2ZWF0OiBsYSBoaW50IHRpZW5lIGBEb21haW49Lm15dmFsdGVjaC5jb21gIOKGkiBlbiBkZXYgKGFwcHMgZW4gYCoud2ViLmFwcGApXG4gICAqIG5vIGVzIGxlZ2libGUgeSBlbCByZWZyZXNoIGNyb3NzLXNpdGUgc2UgYmxvcXVlYTsgZWwgaW50ZW50byBmYWxsYSBsaW1waW8geVxuICAgKiBsYSBhcHAgc2lndWUgY29tbyBpbnZpdGFkby4gRnVuY2lvbmEgZW4gcHJvZCAoZG9taW5pb3MgYCoubXl2YWx0ZWNoLmNvbWApLlxuICAgKi9cbiAgYm9vdHN0cmFwU2Vzc2lvbkZyb21IaW50PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIE5vbWJyZSBkZSBsYSBjb29raWUgSlMtcmVhZGFibGUgcXVlIGluZGljYSBzZXNpw7NuIGFjdGl2YSBlbiBsYSBmYW1pbGlhXG4gICAqIChkZWZhdWx0OiAndmFsdGVjaF9sb2dnZWRfaW4nKS4gTGEgc2V0ZWEgZWwgYmFja2VuZCBlbiBsb2dpbi9sb2dvdXRcbiAgICogKGBIdHRwT25seTpmYWxzZWAsIGBEb21haW49Lm15dmFsdGVjaC5jb21gKS4gRXMgdW4gaGludCBkZSBVSSwgbm8gdW5hXG4gICAqIGNyZWRlbmNpYWwg4oCUIGVsIHRva2VuIHJlYWwgdmEgZW4gbGEgY29va2llIEh0dHBPbmx5IGB2YWx0ZWNoX3JlZnJlc2hgLlxuICAgKi9cbiAgbG9nZ2VkSW5IaW50Q29va2llPzogc3RyaW5nO1xuICAvKipcbiAgICogQm9vdHN0cmFwZWFyIGxhIHNlc2nDs24gdsOtYSBlbCBBdXRoIFByb3h5IENlbnRyYWwgY3VhbmRvIGVzdGEgYXBwIE5PXG4gICAqIGNvbXBhcnRlIGRvbWluaW8gcmHDrXogY29uIGVsIHJlc3RvIGRlbCBmYWN0b3J5IChBRFItMDUwLCBNb2RvIEIg4oCUIGVqLiB1blxuICAgKiBwcm9kdWN0byBjb24gZG9taW5pbyBwcm9waW8gY29tbyBgc2lnaWZ5LmNvbWAsIGEgZGlmZXJlbmNpYSBkZSBiaW5nby9cbiAgICogc2hvd2Nhc2UgYmFqbyBgKi5teXZhbHRlY2guY29tYCkuXG4gICAqXG4gICAqIEN1YW5kbyBlcyBgdHJ1ZWAsIG5vIGhheSBhY2Nlc3MgdG9rZW4gbG9jYWwgTkkgY29va2llLWhpbnQgbGVnaWJsZVxuICAgKiAoYGJvb3RzdHJhcFNlc3Npb25Gcm9tSGludGAgbm8gYXBsaWNhIGVuIGVzdGUgZG9taW5pbyDigJQgbGEgY29va2llXG4gICAqIGBEb21haW49Lm15dmFsdGVjaC5jb21gIG51bmNhIGxsZWdhIGFxdcOtKSwgZSBgaW5pdGlhbGl6ZSgpYCBubyB2aWVuZSBkZVxuICAgKiB1biByZXRvcm5vIGRlbCBicmlkZ2UgKHZlciBtw6FzIGFiYWpvKSwgbGEgYXBwIGhhY2UgdW5hIG5hdmVnYWNpw7NuIGRlXG4gICAqIHDDoWdpbmEgY29tcGxldGEgYSBgc3NvQnJpZGdlVXJsYCBjb24gYHJlZGlyZWN0X3VyaWAgPSBsYSBVUkwgYWN0dWFsLlxuICAgKlxuICAgKiBFbCBiYWNrZW5kIHZhbGlkYSBsYSBjb29raWUgYHZhbHRlY2hfcmVmcmVzaGAgKEh0dHBPbmx5LCBzw7NsbyB2aXNpYmxlIGVuXG4gICAqIHN1IHByb3BpbyBkb21pbmlvKSB5OlxuICAgKiAgIC0gc2kgaGF5IHNlc2nDs24gYWN0aXZhOiByZWRpcmlnZSBkZSB2dWVsdGEgY29uIGA/aGFuZG9mZj1UT0tFTmAg4oCUIGVsXG4gICAqICAgICBgQVBQX0lOSVRJQUxJWkVSYCBkZSBgSGFuZG9mZlNlcnZpY2UuZGV0ZWN0QW5kRXhjaGFuZ2VIYW5kb2ZmKClgXG4gICAqICAgICAoeWEgcmVxdWVyaWRvIHBvciBjcm9zcy1hcHAgaGFuZG9mZiwgdmVyIGZyb250ZW5kL0NMQVVERS5tZCkgaW5zdGFsYVxuICAgKiAgICAgbGEgc2VzacOzbiBzaW4gcGVkaXIgY3JlZGVuY2lhbGVzLlxuICAgKiAgIC0gc2kgbm8gaGF5IHNlc2nDs246IHJlZGlyaWdlIGRlIHZ1ZWx0YSBzaW4gYD9oYW5kb2ZmYCDigJQgbGEgYXBwIGNhZSBhXG4gICAqICAgICBpbnZpdGFkbywgY29tcG9ydGFtaWVudG8gbm9ybWFsLlxuICAgKlxuICAgKiBFbCB1c3VhcmlvIHZlIHVuYSByZWRpcmVjY2nDs24gYnJldmUgKGRvcyBjYXJnYXMgZGUgcMOhZ2luYSksIHRhbCBjb21vXG4gICAqIGRvY3VtZW50YSBlbCBBRFItMDUwIHBhcmEgZXN0ZSBtb2RvIOKAlCBubyBoYXkgZm9ybWEgZGUgZXZpdGFybGEgc2luXG4gICAqIGlmcmFtZS9wb3B1cCwgeSBlc29zIHJvbXBlbiBjb24gZWwgYmxvcXVlbyBkZSBjb29raWVzIGRlIHRlcmNlcm9zLlxuICAgKlxuICAgKiBSZXF1aWVyZSBgc3NvQnJpZGdlVXJsYCBzZXRlYWRvIHkgZWwgYEFQUF9JTklUSUFMSVpFUmAgZGUgaGFuZG9mZlxuICAgKiBjYWJsZWFkbyBlbiBgbWFpbi50c2AgKG1pc21vIHJlcXVpc2l0byBxdWUgZWwgaGFuZG9mZiBjcm9zcy1hcHAgbWFudWFsKS5cbiAgICovXG4gIGJvb3RzdHJhcFNlc3Npb25Gcm9tQnJpZGdlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFVSTCBjb21wbGV0YSBkZWwgZW5kcG9pbnQgYEdFVCAvdjIvYXV0aC9zc28tYnJpZGdlYCBkZWwgQXV0aCBQcm94eVxuICAgKiBDZW50cmFsIChlajogJ2h0dHBzOi8vYXBpLm15dmFsdGVjaC5jb20vdjIvYXV0aC9zc28tYnJpZGdlJykuIFJlcXVlcmlkb1xuICAgKiBjdWFuZG8gYGJvb3RzdHJhcFNlc3Npb25Gcm9tQnJpZGdlYCBlcyBgdHJ1ZWAuXG4gICAqL1xuICBzc29CcmlkZ2VVcmw/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFU1RBRE8gREUgQVVURU5USUNBQ0nDk05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRXN0YWRvIGNvbXBsZXRvIGRlIGF1dGVudGljYWNpw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhTdGF0ZSB7XG4gIC8qKiBVc3VhcmlvIGVzdMOhIGF1dGVudGljYWRvICovXG4gIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjtcbiAgLyoqIEVzdGFkbyBkZSBjYXJnYSBpbmljaWFsICovXG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgLyoqIFRva2VuIGRlIGFjY2VzbyBhY3R1YWwgKi9cbiAgYWNjZXNzVG9rZW46IHN0cmluZyB8IG51bGw7XG4gIC8qKiBUb2tlbiBkZSByZWZyZXNjbyBhY3R1YWwgKi9cbiAgcmVmcmVzaFRva2VuOiBzdHJpbmcgfCBudWxsO1xuICAvKiogSUQgZGVsIHVzdWFyaW8gKi9cbiAgdXNlcklkOiBzdHJpbmcgfCBudWxsO1xuICAvKiogRW1haWwgZGVsIHVzdWFyaW8gKi9cbiAgZW1haWw6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBOb21icmUgY29tcGxldG8gZGVsIHVzdWFyaW8gKHBvYmxhZG8gdHJhcyBgZ2V0UHJvZmlsZSgpYCkgKi9cbiAgbmFtZT86IHN0cmluZyB8IG51bGw7XG4gIC8qKiBVc2VybmFtZS9oYW5kbGUgKHBvYmxhZG8gdHJhcyBgZ2V0UHJvZmlsZSgpYCkgKi9cbiAgaGFuZGxlPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFVSTCBkZWwgYXZhdGFyIChwb2JsYWRvIHRyYXMgYGdldFByb2ZpbGUoKWApICovXG4gIGF2YXRhclVybD86IHN0cmluZyB8IG51bGw7XG4gIC8qKiBUZWzDqWZvbm8gKHBvYmxhZG8gdHJhcyBgZ2V0UHJvZmlsZSgpYCkgKi9cbiAgcGhvbmU/OiBzdHJpbmcgfCBudWxsO1xuICAvKiogSUQgZGUgbGEgb3JnYW5pemFjacOzbiBhY3RpdmEgKi9cbiAgYWN0aXZlT3JnPzogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFJvbGVzIGRlbCB1c3VhcmlvICovXG4gIHJvbGVzOiBzdHJpbmdbXTtcbiAgLyoqIFBlcm1pc29zIGRlbCB1c3VhcmlvIChmb3JtYXRvICdyZXNvdXJjZTphY3Rpb24nKSAqL1xuICBwZXJtaXNzaW9uczogc3RyaW5nW107XG4gIC8qKiBVc3VhcmlvIGVzIHN1cGVyIGFkbWluICovXG4gIGlzU3VwZXJBZG1pbjogYm9vbGVhbjtcbiAgLyoqIFVzdWFyaW8gdGllbmUgc3VzY3JpcGNpw7NuIHByZW1pdW0gYWN0aXZhIChubyB2ZSBhZHMpICovXG4gIGlzUHJlbWl1bTogYm9vbGVhbjtcbiAgLyoqIFRpbWVzdGFtcCBkZSBleHBpcmFjacOzbiBkZWwgYWNjZXNzVG9rZW4gKG1zKSAqL1xuICBleHBpcmVzQXQ6IG51bWJlciB8IG51bGw7XG4gIC8qKiBFcnJvciBkZSBhdXRlbnRpY2FjacOzbiAoc2kgZXhpc3RlKSAqL1xuICBlcnJvcjogQXV0aEVycm9yIHwgbnVsbDtcbn1cblxuLyoqXG4gKiBJbmZvcm1hY2nDs24gZGVsIHVzdWFyaW8gYXV0ZW50aWNhZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFVzZXIge1xuICB1c2VySWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgbmFtZT86IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG4gIC8qKiBVc2VybmFtZS9oYW5kbGUgZGVsIHVzdWFyaW8gKGVqOiBAdmljdG9ydikgKi9cbiAgaGFuZGxlPzogc3RyaW5nO1xuICAvKiogSUQgZGUgbGEgb3JnYW5pemFjacOzbiBhY3RpdmEgKi9cbiAgYWN0aXZlT3JnPzogc3RyaW5nO1xuICAvKiogVVJMIGRlbCBhdmF0YXIgZGVsIHVzdWFyaW8gKi9cbiAgYXZhdGFyVXJsPzogc3RyaW5nO1xuICByb2xlczogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbiAgaXNTdXBlckFkbWluOiBib29sZWFuO1xuICBtZmFFbmFibGVkPzogYm9vbGVhbjtcbiAgbWZhTWV0aG9kPzogTUZBTWV0aG9kO1xufVxuXG4vKipcbiAqIEVycm9yIGRlIGF1dGVudGljYWNpw7NuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dGhFcnJvciB7XG4gIGNvZGU6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVzdGFkbyBpbmljaWFsIGRlIGF1dGVudGljYWNpw7NuLlxuICovXG5leHBvcnQgY29uc3QgSU5JVElBTF9BVVRIX1NUQVRFOiBBdXRoU3RhdGUgPSB7XG4gIGlzQXV0aGVudGljYXRlZDogZmFsc2UsXG4gIGlzTG9hZGluZzogdHJ1ZSxcbiAgYWNjZXNzVG9rZW46IG51bGwsXG4gIHJlZnJlc2hUb2tlbjogbnVsbCxcbiAgdXNlcklkOiBudWxsLFxuICBlbWFpbDogbnVsbCxcbiAgYWN0aXZlT3JnOiBudWxsLFxuICByb2xlczogW10sXG4gIHBlcm1pc3Npb25zOiBbXSxcbiAgaXNTdXBlckFkbWluOiBmYWxzZSxcbiAgaXNQcmVtaXVtOiBmYWxzZSxcbiAgZXhwaXJlc0F0OiBudWxsLFxuICBlcnJvcjogbnVsbCxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNRkFcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBNw6l0b2RvcyBkZSBNRkEgc29wb3J0YWRvcyAqL1xuZXhwb3J0IHR5cGUgTUZBTWV0aG9kID0gJ0VNQUlMJyB8ICdTTVMnIHwgJ1RPVFAnO1xuXG4vKipcbiAqIEVzdGFkbyBkZSBNRkEgcGVuZGllbnRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVBlbmRpbmdTdGF0ZSB7XG4gIHJlcXVpcmVkOiBib29sZWFuO1xuICBtZmFUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgbWV0aG9kOiBNRkFNZXRob2QgfCBudWxsO1xufVxuXG4vKipcbiAqIEVzdGFkbyBpbmljaWFsIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGNvbnN0IElOSVRJQUxfTUZBX1NUQVRFOiBNRkFQZW5kaW5nU3RhdGUgPSB7XG4gIHJlcXVpcmVkOiBmYWxzZSxcbiAgbWZhVG9rZW46IG51bGwsXG4gIG1ldGhvZDogbnVsbCxcbn07XG5cbi8qKlxuICogUmVzdWx0YWRvIGRlIHNldHVwIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTZXR1cFJlc3VsdCB7XG4gIGNvZGVTZW50OiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRXN0YWRvIGRlIE1GQSBkZWwgdXN1YXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTdGF0dXMge1xuICBlbmFibGVkOiBib29sZWFuO1xuICBtZXRob2Q6IE1GQU1ldGhvZCB8IG51bGw7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUT1RQIE1GQSAoR29vZ2xlIEF1dGhlbnRpY2F0b3IpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHNldHVwIGRlIFRPVFAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVE9UUFNldHVwUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICAvKiogU2VjcmV0byBUT1RQIGVuIGJhc2UzMiAocGFyYSBlbnRyYWRhIG1hbnVhbCkgKi9cbiAgc2VjcmV0OiBzdHJpbmc7XG4gIC8qKiBVUkwgcGFyYSBnZW5lcmFyIFFSIGNvZGUgKG90cGF1dGg6Ly8uLi4pICovXG4gIHFyQ29kZVVybDogc3RyaW5nO1xuICAvKiogQ8OzZGlnb3MgZGUgcmVzcGFsZG8gZGUgdW4gc29sbyB1c28gKi9cbiAgYmFja3VwQ29kZXM6IHN0cmluZ1tdO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHZlcmlmaWNhciBzZXR1cCBkZSBUT1RQLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRPVFBWZXJpZnlTZXR1cFJlcXVlc3Qge1xuICAvKiogQ8OzZGlnbyBUT1RQIGRlIDYgZMOtZ2l0b3MgKi9cbiAgY29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHZlcmlmaWNhY2nDs24gZGUgc2V0dXAgVE9UUC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUT1RQVmVyaWZ5U2V0dXBSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgZGVzaGFiaWxpdGFyIFRPVFAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVE9UUERpc2FibGVSZXF1ZXN0IHtcbiAgcGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBkZXNoYWJpbGl0YXIgVE9UUC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUT1RQRGlzYWJsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgZGlzYWJsZWQ6IGJvb2xlYW47XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZWdlbmVyYXIgY8OzZGlnb3MgZGUgcmVzcGFsZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnZW5lcmF0ZUJhY2t1cENvZGVzUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBiYWNrdXBDb2Rlczogc3RyaW5nW107XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBjYW50aWRhZCBkZSBjw7NkaWdvcyBkZSByZXNwYWxkby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYWNrdXBDb2Rlc0NvdW50UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBjb3VudDogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVRVUVTVFMvUkVTUE9OU0VTIChhbGluZWFkb3MgY29uIGJhY2tlbmQgQXV0aFYyKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgc2lnbnVwIChyZWdpc3RybykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbnVwUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgc2lnbnVwIChyZWdpc3RybykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbnVwUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICB1c2VySWQ6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSB2ZXJpZmljYXIgZW1haWwuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5RW1haWxSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHZlcmlmaWNhY2nDs24gZGUgZW1haWwuXG4gKiBTaSBlcyBleGl0b3NvLCBpbmNsdXllIHRva2VucyBwYXJhIGF1dG8tbG9naW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5RW1haWxSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHZlcmlmaWVkOiBib29sZWFuO1xuICBhY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgcmVmcmVzaFRva2VuPzogc3RyaW5nO1xuICBmaXJlYmFzZVRva2VuPzogc3RyaW5nO1xuICBleHBpcmVzSW4/OiBudW1iZXI7XG4gIHRva2VuVHlwZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgYWN0aXZhciB1bmEgY3VlbnRhIHByZS1hcHJvdmlzaW9uYWRhIHBvciB1bmEgb3JnYW5pemFjacOzblxuICogKEFEUi0wMjMpOiBlbCB1c3VhcmlvIGRlZmluZSBzdSBjb250cmFzZcOxYSBjb24gZWwgdG9rZW4gZGVsIGVubGFjZSBkZSBlbWFpbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3RpdmF0ZUFjY291bnRSZXF1ZXN0IHtcbiAgdG9rZW46IHN0cmluZztcbiAgbmV3UGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBhY3RpdmFjacOzbiBkZSBjdWVudGEuIEVuIMOpeGl0byBpbmNsdXllIHRva2VucyBkZSBhdXRvLXNpZ25pblxuICogKG1pc21vIHNoYXBlIHF1ZSB2ZXJpZnktZW1haWwpIOKAlCBlbCB1c3VhcmlvIHF1ZWRhIGxvZ3VlYWRvIHRyYXMgYWN0aXZhci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBY3RpdmF0ZUFjY291bnRSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGFjdGl2YXRlZDogYm9vbGVhbjtcbiAgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbj86IHN0cmluZztcbiAgZmlyZWJhc2VUb2tlbj86IHN0cmluZztcbiAgZXhwaXJlc0luPzogbnVtYmVyO1xuICB0b2tlblR5cGU/OiBzdHJpbmc7XG4gIHJvbGVzPzogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHJlZW52aWFyIGPDs2RpZ28gZGUgdmVyaWZpY2FjacOzbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNlbmRDb2RlUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIHR5cGU6ICdFTUFJTF9WRVJJRlknIHwgJ1BBU1NXT1JEX1JFU0VUJztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZWVudsOtbyBkZSBjw7NkaWdvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc2VuZENvZGVSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHNlbnQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHNpZ25pbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduaW5SZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgYXBwSWQ/OiBzdHJpbmc7XG4gIC8qKiBQbGF0YWZvcm1hIGRlbCBkaXNwb3NpdGl2byAocGFyYSBkZXRlY2Npw7NuIGRlIG51ZXZvIGRpc3Bvc2l0aXZvKSAqL1xuICBwbGF0Zm9ybT86IERldmljZVBsYXRmb3JtO1xuICAvKiogTmF2ZWdhZG9yIChzb2xvIHdlYikgKi9cbiAgYnJvd3Nlcj86IHN0cmluZztcbiAgLyoqIFNpc3RlbWEgb3BlcmF0aXZvICovXG4gIG9zPzogc3RyaW5nO1xuICAvKiogTm9tYnJlIGFtaWdhYmxlIGRlbCBkaXNwb3NpdGl2byAqL1xuICBkZXZpY2VOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHNpZ25pbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduaW5SZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGFjY2Vzc1Rva2VuPzogc3RyaW5nO1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGZpcmViYXNlVG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyZXNJbj86IG51bWJlcjtcbiAgdG9rZW5UeXBlPzogc3RyaW5nO1xuICBtZmFSZXF1aXJlZD86IGJvb2xlYW47XG4gIG1mYVRva2VuPzogc3RyaW5nO1xuICBtZmFNZXRob2Q/OiBNRkFNZXRob2Q7XG4gIHJvbGVzPzogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zPzogc3RyaW5nW107XG4gIC8qKiBJbmRpY2Egc2kgZWwgbG9naW4gZnVlIGRlc2RlIHVuIGRpc3Bvc2l0aXZvIG51ZXZvL25vIHJlY29ub2NpZG8gKi9cbiAgaXNOZXdEZXZpY2U/OiBib29sZWFuO1xuICAvKiogSUQgZGVsIGRpc3Bvc2l0aXZvIHVzYWRvIHBhcmEgZWwgbG9naW4gKi9cbiAgZGV2aWNlSWQ/OiBzdHJpbmc7XG4gIC8qKiBJZGlvbWEgcHJlZmVyaWRvIGRlbCB1c3VhcmlvIChwYXJhIHNpbmNyb25pemFyIGNvbiBpMThuKSAqL1xuICBsYW5ndWFnZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgdmVyaWZpY2FyIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFWZXJpZnlSZXF1ZXN0IHtcbiAgbWZhVG9rZW46IHN0cmluZztcbiAgY29kZTogc3RyaW5nO1xuICBhcHBJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSB2ZXJpZmljYXIgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVZlcmlmeVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgYWNjZXNzVG9rZW46IHN0cmluZztcbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIGZpcmViYXNlVG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyZXNJbjogbnVtYmVyO1xuICB0b2tlblR5cGU6IHN0cmluZztcbiAgcm9sZXM/OiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcbiAgLyoqIElkaW9tYSBwcmVmZXJpZG8gZGVsIHVzdWFyaW8gKHBhcmEgc2luY3Jvbml6YXIgY29uIGkxOG4pICovXG4gIGxhbmd1YWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSByZWZyZXNjYXIgdG9rZW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaFJlcXVlc3Qge1xuICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7XG4gIGFjdGl2ZU9yZ0lkPzogc3RyaW5nIHwgbnVsbDtcbiAgYXBwSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgcmVmcmVzY2FyIHRva2VuLlxuICogSW1wbGVtZW50YSB0b2tlbiByb3RhdGlvbjogY2FkYSByZWZyZXNoIGdlbmVyYSB1biBudWV2byByZWZyZXNoIHRva2VuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZnJlc2hSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nOyAvLyBUb2tlbiByb3RhdGlvbjogbnVldm8gcmVmcmVzaCB0b2tlblxuICBleHBpcmVzSW46IG51bWJlcjtcbiAgZmlyZWJhc2VUb2tlbj86IHN0cmluZztcbiAgcm9sZXM/OiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgbG9nb3V0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ291dFJlcXVlc3Qge1xuICByZWZyZXNoVG9rZW46IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBsb2dvdXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9nb3V0UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIG9idGVuZXIgcGVybWlzb3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UGVybWlzc2lvbnNSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHJvbGVzOiBzdHJpbmdbXTtcbiAgcGVybWlzc2lvbnM6IHN0cmluZ1tdO1xuICBpc1N1cGVyQWRtaW46IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHNldHVwIGRlIE1GQS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFTZXR1cFJlcXVlc3Qge1xuICBtZXRob2Q6IE1GQU1ldGhvZDtcbiAgcGhvbmU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgc2V0dXAgZGUgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVNldHVwUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBjb2RlU2VudDogYm9vbGVhbjtcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBjb25maXJtYXIgTUZBLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQUNvbmZpcm1SZXF1ZXN0IHtcbiAgY29kZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGNvbmZpcm1hciBNRkEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBQ29uZmlybVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgbWZhRW5hYmxlZDogYm9vbGVhbjtcbiAgbWV0aG9kOiBNRkFNZXRob2Q7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGRlc2hhYmlsaXRhciBNRkEuXG4gKi9cbi8qKlxuICogQWNlcHRhIGBwYXNzd29yZGAgKGN1ZW50YSBjb24gY29udHJhc2XDsWEpIG8gYG1mYUNvZGVgIChjdWVudGEgT0F1dGgtb25seVxuICogY29uIFRPVFAgcXVlIHBydWViYSBwb3Nlc2nDs24gZGVsIHNlZ3VuZG8gZmFjdG9yKS4gVW5vIHJlcXVlcmlkby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFEaXNhYmxlUmVxdWVzdCB7XG4gIHBhc3N3b3JkPzogc3RyaW5nO1xuICBtZmFDb2RlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGRlc2hhYmlsaXRhciBNRkEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBRGlzYWJsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgbWZhRGlzYWJsZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGluaWNpYXIgcmVjdXBlcmFjacOzbiBkZSBjb250cmFzZcOxYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3Jnb3RQYXNzd29yZFJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGZvcmdvdCBwYXNzd29yZCAoc2llbXByZSBpZ3VhbCBwb3Igc2VndXJpZGFkKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGb3Jnb3RQYXNzd29yZFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSByZXNldGVhciBjb250cmFzZcOxYSBjb24gY8OzZGlnby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNldFBhc3N3b3JkUmVxdWVzdCB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGNvZGU6IHN0cmluZztcbiAgbmV3UGFzc3dvcmQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZXNldCBwYXNzd29yZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNldFBhc3N3b3JkUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBpbmljaWFyIHJlc2V0IGRlIE1GQSBwb3IgZW1haWwgKHVzZXIgcGVyZGnDsyBzdSAywrogZmFjdG9yKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNRkFSZXNldFJlcXVlc3RSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBNRkEgcmVzZXQgcmVxdWVzdCAoc2llbXByZSBpZ3VhbCBwb3Igc2VndXJpZGFkIOKAlCBhbnRpLWVudW1lcmFjacOzbikuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBUmVzZXRSZXF1ZXN0UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGNvbmZpcm1hciBlbCByZXNldCBkZSBNRkEgY29uIGVsIGPDs2RpZ28gcmVjaWJpZG8gcG9yIGVtYWlsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1GQVJlc2V0Q29uZmlybVJlcXVlc3Qge1xuICBlbWFpbDogc3RyaW5nO1xuICBjb2RlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgTUZBIHJlc2V0IGNvbmZpcm0uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTUZBUmVzZXRDb25maXJtUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGNhbWJpYXIgY29udHJhc2XDsWEgKHVzdWFyaW8gYXV0ZW50aWNhZG8pLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENoYW5nZVBhc3N3b3JkUmVxdWVzdCB7XG4gIGN1cnJlbnRQYXNzd29yZDogc3RyaW5nO1xuICBuZXdQYXNzd29yZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGNhbWJpbyBkZSBjb250cmFzZcOxYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGFuZ2VQYXNzd29yZFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgc3VjY2VzczogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgZWxpbWluYXIgY3VlbnRhLlxuICogVXN1YXJpb3MgY29uIGNvbnRyYXNlw7FhOiBlbnZpYXIgYHBhc3N3b3JkYC5cbiAqIFVzdWFyaW9zIE9BdXRoIHNpbiBjb250cmFzZcOxYTogZW52aWFyIGBjb2RlYCAob2J0ZW5pZG8gdmlhIHNlbmREZWxldGVBY2NvdW50Q29kZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVsZXRlQWNjb3VudFJlcXVlc3Qge1xuICBwYXNzd29yZD86IHN0cmluZztcbiAgY29kZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBlbnZpYXIgY8OzZGlnbyBkZSBjb25maXJtYWNpw7NuIGRlIGVsaW1pbmFjacOzbiBkZSBjdWVudGEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZERlbGV0ZUFjY291bnRDb2RlUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGVsaW1pbmFyIGN1ZW50YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWxldGVBY2NvdW50UmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBkZWxldGVkOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgb2J0ZW5lciBwZXJmaWwgZGVsIHVzdWFyaW8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UHJvZmlsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgdXNlcklkOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgcGhvbmU/OiBzdHJpbmc7XG4gIC8qKiBJZGlvbWEgcHJlZmVyaWRvIGRlbCB1c3VhcmlvICovXG4gIGxhbmd1YWdlPzogc3RyaW5nO1xuICAvKiogVXNlcm5hbWUvaGFuZGxlIGRlbCB1c3VhcmlvICovXG4gIGhhbmRsZT86IHN0cmluZztcbiAgLyoqIFVSTCBkZWwgYXZhdGFyIGRlbCB1c3VhcmlvICovXG4gIGF2YXRhclVybD86IHN0cmluZztcbiAgZW1haWxWZXJpZmllZDogYm9vbGVhbjtcbiAgcGhvbmVWZXJpZmllZDogYm9vbGVhbjtcbiAgbWZhRW5hYmxlZDogYm9vbGVhbjtcbiAgbWZhTWV0aG9kPzogTUZBTWV0aG9kO1xuICAvKiogVHJ1ZSBzaSBsYSBjdWVudGEgdGllbmUgY29udHJhc2XDsWEgc2V0ZWFkYSAoZmFsc2UgcGFyYSBPQXV0aC1vbmx5IHNpbiBwYXNzd29yZCkuICovXG4gIGhhc1Bhc3N3b3JkPzogYm9vbGVhbjtcbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBhY3R1YWxpemFyIHBlcmZpbC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVQcm9maWxlUmVxdWVzdCB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIHBob25lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGFjdHVhbGl6YXIgcGVyZmlsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVByb2ZpbGVSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHVwZGF0ZWQ6IGJvb2xlYW47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBVUERBVEUgQVZBVEFSXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBhY3R1YWxpemFyIGF2YXRhciBkZWwgdXN1YXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVBdmF0YXJSZXF1ZXN0IHtcbiAgLyoqIFVSTCBkZWwgYXZhdGFyIGVuIEZpcmViYXNlIFN0b3JhZ2UgKi9cbiAgYXZhdGFyVXJsOiBzdHJpbmc7XG4gIC8qKiBVUkwgZGVsIHRodW1ibmFpbCAob3BjaW9uYWwpICovXG4gIGF2YXRhclRodW1ibmFpbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBhY3R1YWxpemFyIGF2YXRhci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVBdmF0YXJSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGF2YXRhclVybDogc3RyaW5nO1xuICBhdmF0YXJUaHVtYm5haWw/OiBzdHJpbmc7XG4gIHVwZGF0ZWRBdDogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVZFTlRPUyBERSBTSU5DUk9OSVpBQ0nDk05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTV0lUQ0ggT1JHQU5JWkFUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFJlcXVlc3QgcGFyYSBjYW1iaWFyIGRlIG9yZ2FuaXphY2nDs24gYWN0aXZhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN3aXRjaE9yZ1JlcXVlc3Qge1xuICBvcmdhbml6YXRpb25JZDogc3RyaW5nO1xuICBhcHBJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBjYW1iaW8gZGUgb3JnYW5pemFjacOzbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTd2l0Y2hPcmdSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIGZpcmViYXNlVG9rZW46IHN0cmluZztcbiAgYWN0aXZlT3JnOiBzdHJpbmc7XG4gIC8qKiBOdWV2byBKV1QgY29uIGFjdGl2ZU9yZyBhY3R1YWxpemFkby4gRWwgRkUgbG8gYWxtYWNlbmEgcGFyYSBxdWUgZWxcbiAgICogIGJvb3RzdHJhcCBwb3N0LXJlZnJlc2ggdXNlIGxhIG9yZyBjb3JyZWN0YSBlbiB2ZXogZGVsIEpXVCBjYWNoZWFkby4gKi9cbiAgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG4gIGV4cGlyZXNJbj86IG51bWJlcjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVWRU5UT1MgREUgU0lOQ1JPTklaQUNJw5NOXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogVGlwb3MgZGUgZXZlbnRvcyBkZSBzaW5jcm9uaXphY2nDs24gZW50cmUgcGVzdGHDsWFzICovXG5leHBvcnQgdHlwZSBBdXRoU3luY0V2ZW50VHlwZSA9XG4gIHwgJ0xPR0lOJ1xuICB8ICdMT0dPVVQnXG4gIHwgJ1RPS0VOX1JFRlJFU0gnXG4gIHwgJ1BFUk1JU1NJT05TX1VQREFURSdcbiAgfCAnT1JHX1NXSVRDSCc7XG5cbi8qKlxuICogRXZlbnRvIGRlIHNpbmNyb25pemFjacOzbiBlbnRyZSBwZXN0YcOxYXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0aFN5bmNFdmVudCB7XG4gIHR5cGU6IEF1dGhTeW5jRXZlbnRUeXBlO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgcGF5bG9hZD86IHtcbiAgICBhY2Nlc3NUb2tlbj86IHN0cmluZztcbiAgICByZWZyZXNoVG9rZW4/OiBzdHJpbmc7IC8vIFRva2VuIHJvdGF0aW9uIHN1cHBvcnRcbiAgICBleHBpcmVzQXQ/OiBudW1iZXI7XG4gICAgYWN0aXZlT3JnPzogc3RyaW5nO1xuICB9O1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSldUIENMQUlNU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDbGFpbXMgZGVsIEpXVCBkZSBhY2Nlc28uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSldUQ2xhaW1zIHtcbiAgLyoqIFVzZXIgSUQgKi9cbiAgdWlkOiBzdHJpbmc7XG4gIC8qKiBFbWFpbCAqL1xuICBlbWFpbDogc3RyaW5nO1xuICAvKiogU2Vzc2lvbiBJRCAqL1xuICBzaWQ/OiBzdHJpbmc7XG4gIC8qKiBVc3VhcmlvIHRpZW5lIHN1c2NyaXBjacOzbiBwcmVtaXVtIGFjdGl2YSAqL1xuICBwcmVtaXVtPzogYm9vbGVhbjtcbiAgLyoqIEFjdGl2ZSBvcmdhbml6YXRpb24gSUQgKEpXVCBjbGFpbSBcIm9yZ1wiKSAqL1xuICBvcmc/OiBzdHJpbmc7XG4gIC8qKiBQbGF0Zm9ybSBhZG1pbiDigJQgYnlwYXNzIHRvdGFsIGRlIFJCQUMgZW4gdG9kb3MgbG9zIHNlcnZpY2lvcyAqL1xuICBhZG1pbj86IGJvb2xlYW47XG4gIC8qKiBJc3N1ZWQgYXQgKi9cbiAgaWF0OiBudW1iZXI7XG4gIC8qKiBFeHBpcmF0aW9uICovXG4gIGV4cDogbnVtYmVyO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1RPUkFHRVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBEYXRvcyBwZXJzaXN0aWRvcyBlbiBzdG9yYWdlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JlZEF1dGhTdGF0ZSB7XG4gIGFjY2Vzc1Rva2VuOiBzdHJpbmc7XG4gIHJlZnJlc2hUb2tlbjogc3RyaW5nO1xuICByb2xlczogc3RyaW5nW107XG4gIHBlcm1pc3Npb25zOiBzdHJpbmdbXTtcbiAgaXNTdXBlckFkbWluOiBib29sZWFuO1xuICBpc1ByZW1pdW0/OiBib29sZWFuO1xuICBleHBpcmVzQXQ/OiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBERVZJQ0UgUkVHSVNUUkFUSU9OIChQdXNoIE5vdGlmaWNhdGlvbnMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFBsYXRhZm9ybWFzIHNvcG9ydGFkYXMgcGFyYSBwdXNoIG5vdGlmaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCB0eXBlIERldmljZVBsYXRmb3JtID0gJ3dlYicgfCAnaW9zJyB8ICdhbmRyb2lkJztcblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgcmVnaXN0cmFyIHVuIGRpc3Bvc2l0aXZvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2lzdGVyRGV2aWNlUmVxdWVzdCB7XG4gIC8qKiBGQ00gdG9rZW4gZGVsIGRpc3Bvc2l0aXZvICovXG4gIHRva2VuOiBzdHJpbmc7XG4gIC8qKiBQbGF0YWZvcm1hIGRlbCBkaXNwb3NpdGl2byAqL1xuICBwbGF0Zm9ybTogRGV2aWNlUGxhdGZvcm07XG4gIC8qKiBOYXZlZ2Fkb3IgKHNvbG8gd2ViKSAqL1xuICBicm93c2VyPzogc3RyaW5nO1xuICAvKiogU2lzdGVtYSBvcGVyYXRpdm8gKi9cbiAgb3M/OiBzdHJpbmc7XG4gIC8qKiBWZXJzacOzbiBkZSBsYSBhcGxpY2FjacOzbiAqL1xuICBhcHBWZXJzaW9uPzogc3RyaW5nO1xuICAvKiogTm9tYnJlIGFtaWdhYmxlIGRlbCBkaXNwb3NpdGl2byAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogTWV0YWRhdGEgYWRpY2lvbmFsICovXG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSByZWdpc3RybyBkZSBkaXNwb3NpdGl2by5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZWdpc3RlckRldmljZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgZGV2aWNlOiB7XG4gICAgZGV2aWNlSWQ6IHN0cmluZztcbiAgICB0b2tlbjogc3RyaW5nO1xuICAgIHBsYXRmb3JtOiBEZXZpY2VQbGF0Zm9ybTtcbiAgICBicm93c2VyPzogc3RyaW5nO1xuICAgIG9zPzogc3RyaW5nO1xuICAgIGxhc3RBY3RpdmU6IHN0cmluZztcbiAgICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgfTtcbiAgLyoqIHRydWUgc2kgZXMgdW4gbnVldm8gZGlzcG9zaXRpdm8sIGZhbHNlIHNpIHNlIGFjdHVhbGl6w7MgdW5vIGV4aXN0ZW50ZSAqL1xuICBpc05ldzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXN1bHRhZG8gZGUgaGFiaWxpdGFyIG5vdGlmaWNhY2lvbmVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVuYWJsZU5vdGlmaWNhdGlvbnNSZXN1bHQge1xuICAvKiogU2kgc2Ugb3Rvcmdhcm9uIGxvcyBwZXJtaXNvcyAqL1xuICBncmFudGVkOiBib29sZWFuO1xuICAvKiogRkNNIHRva2VuIChzb2xvIHNpIGdyYW50ZWQ9dHJ1ZSkgKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG4gIC8qKiBTaSBlbCBkaXNwb3NpdGl2byBmdWUgcmVnaXN0cmFkbyBlbiBlbCBiYWNrZW5kICovXG4gIHJlZ2lzdGVyZWQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEVzdGFkbyBkZSBwZXJtaXNvcyBkZSBub3RpZmljYWNpw7NuLlxuICovXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25QZXJtaXNzaW9uU3RhdGUgPSAnZ3JhbnRlZCcgfCAnZGVuaWVkJyB8ICdkZWZhdWx0JyB8ICd1bnN1cHBvcnRlZCc7XG5cbi8qKlxuICogUmVzdWx0YWRvIGRlbCByZWdpc3RybyBtYW51YWwgZGUgZGlzcG9zaXRpdm8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaXN0ZXJEZXZpY2VSZXN1bHQge1xuICAvKiogU2kgZWwgZGlzcG9zaXRpdm8gZnVlIHJlZ2lzdHJhZG8gZXhpdG9zYW1lbnRlICovXG4gIHJlZ2lzdGVyZWQ6IGJvb2xlYW47XG4gIC8qKiBJRCBkZWwgZGlzcG9zaXRpdm8gKHNvbG8gc2kgcmVnaXN0ZXJlZD10cnVlKSAqL1xuICBkZXZpY2VJZD86IHN0cmluZztcbiAgLyoqIEZDTSB0b2tlbiB1c2FkbyBwYXJhIGVsIHJlZ2lzdHJvICovXG4gIHRva2VuPzogc3RyaW5nO1xuICAvKiogTWVuc2FqZSBkZSBlcnJvciAoc29sbyBzaSByZWdpc3RlcmVkPWZhbHNlKSAqL1xuICBlcnJvcj86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERFVklDRSBNQU5BR0VNRU5UIChEZXRlY2Npw7NuIGRlIGRpc3Bvc2l0aXZvcyBudWV2b3MpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEVzdGFkb3MgcG9zaWJsZXMgZGUgdW4gZGlzcG9zaXRpdm8uXG4gKi9cbmV4cG9ydCB0eXBlIERldmljZVN0YXR1cyA9ICdhY3RpdmUnIHwgJ3BlbmRpbmdfYXBwcm92YWwnIHwgJ2Jsb2NrZWQnO1xuXG4vKipcbiAqIEluZm9ybWFjacOzbiBjb21wbGV0YSBkZSB1biBkaXNwb3NpdGl2byByZWdpc3RyYWRvLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIERldmljZUluZm8ge1xuICAvKiogSUQgw7puaWNvIGRlbCBkaXNwb3NpdGl2byAqL1xuICBkZXZpY2VJZDogc3RyaW5nO1xuICAvKiogUGxhdGFmb3JtYSBkZWwgZGlzcG9zaXRpdm8gKi9cbiAgcGxhdGZvcm06IERldmljZVBsYXRmb3JtO1xuICAvKiogTmF2ZWdhZG9yIChzb2xvIHdlYikgKi9cbiAgYnJvd3Nlcj86IHN0cmluZztcbiAgLyoqIFNpc3RlbWEgb3BlcmF0aXZvICovXG4gIG9zPzogc3RyaW5nO1xuICAvKiogTm9tYnJlIGFtaWdhYmxlIGRlbCBkaXNwb3NpdGl2byAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogRXN0YWRvIGFjdHVhbCBkZWwgZGlzcG9zaXRpdm8gKi9cbiAgc3RhdHVzOiBEZXZpY2VTdGF0dXM7XG4gIC8qKiBEaXJlY2Npw7NuIElQIGRlbCDDumx0aW1vIGFjY2VzbyAqL1xuICBpcEFkZHJlc3M/OiBzdHJpbmc7XG4gIC8qKiBVYmljYWNpw7NuIGdlb2dyw6FmaWNhIGFwcm94aW1hZGEgKi9cbiAgbG9jYXRpb24/OiBzdHJpbmc7XG4gIC8qKiDDmmx0aW1hIGFjdGl2aWRhZCAqL1xuICBsYXN0QWN0aXZlOiBzdHJpbmc7XG4gIC8qKiBGZWNoYSBkZSBjcmVhY2nDs24vcmVnaXN0cm8gKi9cbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIC8qKiBGZWNoYSBkZSBhcHJvYmFjacOzbiAoc2kgYXBsaWNhKSAqL1xuICBhcHByb3ZlZEF0Pzogc3RyaW5nO1xuICAvKiogRmVjaGEgZGUgYmxvcXVlbyAoc2kgYXBsaWNhKSAqL1xuICBibG9ja2VkQXQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgbGlzdGFyIGRpc3Bvc2l0aXZvcyBkZWwgdXN1YXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0RGV2aWNlc1Jlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgZGV2aWNlczogRGV2aWNlSW5mb1tdO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGFjY2nDs24gc29icmUgZGlzcG9zaXRpdm8gKGJsb2NrL2FwcHJvdmUvZGVsZXRlKS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXZpY2VBY3Rpb25SZXN1bHQge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBTRVNTSU9OIE1BTkFHRU1FTlQgKEdlc3Rpw7NuIGRlIHNlc2lvbmVzIGFjdGl2YXMpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEluZm9ybWFjacOzbiBkZSB1bmEgc2VzacOzbiBhY3RpdmEuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvbkluZm8ge1xuICAvKiogSUQgw7puaWNvIGRlIGxhIHNlc2nDs24gKi9cbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIC8qKiBJRCBkZWwgZGlzcG9zaXRpdm8gYXNvY2lhZG8gKHNpIGV4aXN0ZSkgKi9cbiAgZGV2aWNlSWQ/OiBzdHJpbmc7XG4gIC8qKiBJbmZvcm1hY2nDs24gZGVsIGRpc3Bvc2l0aXZvIChVc2VyLUFnZW50KSAqL1xuICBkZXZpY2VJbmZvPzogc3RyaW5nO1xuICAvKiogRGlyZWNjacOzbiBJUCBkZSBsYSBzZXNpw7NuICovXG4gIGlwPzogc3RyaW5nO1xuICAvKiogVWJpY2FjacOzbiBnZW9ncsOhZmljYSBhcHJveGltYWRhICovXG4gIGxvY2F0aW9uPzogc3RyaW5nO1xuICAvKiogRmVjaGEgZGUgY3JlYWNpw7NuIGRlIGxhIHNlc2nDs24gKi9cbiAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gIC8qKiBGZWNoYSBkZSBleHBpcmFjacOzbiBkZSBsYSBzZXNpw7NuICovXG4gIGV4cGlyZXNBdDogc3RyaW5nO1xuICAvKiogSW5kaWNhIHNpIGVzIGxhIHNlc2nDs24gYWN0dWFsIGRlbCB1c3VhcmlvICovXG4gIGlzQ3VycmVudDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBsaXN0YXIgc2VzaW9uZXMgYWN0aXZhcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0U2Vzc2lvbnNSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHNlc3Npb25zOiBTZXNzaW9uSW5mb1tdO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHJldm9jYXIgc2VzacOzbihlcykuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmV2b2tlU2Vzc2lvbnNSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIC8qKiBOw7ptZXJvIGRlIHNlc2lvbmVzIHJldm9jYWRhcyAqL1xuICBzZXNzaW9uc1Jldm9rZWQ6IG51bWJlcjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIERFVklDRSBBQ1RJT04gKEFjY2lvbmVzIGRlc2RlIGVtYWlsIGRlIGFsZXJ0YSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGVqZWN1dGFyIGFjY2nDs24gZGUgZGlzcG9zaXRpdm8gZGVzZGUgZW1haWwuXG4gKiBFbCB0b2tlbiB2aWVuZSBlbiBsYSBVUkwgZGVsIGVtYWlsIGRlIGFsZXJ0YS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXZpY2VBY3Rpb25SZXF1ZXN0IHtcbiAgLyoqIFRva2VuIEpXVCBkZSBhY2Npw7NuICgyNGgsIHVuIHNvbG8gdXNvKSAqL1xuICB0b2tlbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGVqZWN1dGFyIGFjY2nDs24gZGUgZGlzcG9zaXRpdm8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGV2aWNlQWN0aW9uUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICAvKiogU2kgbGEgYWNjacOzbiBmdWUgZWplY3V0YWRhIGV4aXRvc2FtZW50ZSAqL1xuICBzdWNjZXNzOiBib29sZWFuO1xuICAvKiogQWNjacOzbiBlamVjdXRhZGEgKHJlZnVzZSwgYXBwcm92ZSwgYmxvY2spICovXG4gIGFjdGlvbjogc3RyaW5nO1xuICAvKiogSUQgZGVsIGRpc3Bvc2l0aXZvIGFmZWN0YWRvICovXG4gIGRldmljZUlkOiBzdHJpbmc7XG4gIC8qKiBOw7ptZXJvIGRlIHNlc2lvbmVzIHJldm9jYWRhcyAoc2kgYWN0aW9uPXJlZnVzZS9ibG9jaykgKi9cbiAgc2Vzc2lvbnNSZXZva2VkPzogbnVtYmVyO1xuICAvKiogTWVuc2FqZSBkZXNjcmlwdGl2byAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgdmFsaWRhciB0b2tlbiBkZSBhY2Npw7NuIChzaW4gZWplY3V0YXIpLlxuICogVXNhZG8gcGFyYSBtb3N0cmFyIGNvbmZpcm1hY2nDs24gYWwgdXN1YXJpbyBhbnRlcyBkZSBlamVjdXRhci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWYWxpZGF0ZUFjdGlvblJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgLyoqIFNpIGVsIHRva2VuIGVzIHbDoWxpZG8gKi9cbiAgdmFsaWQ6IGJvb2xlYW47XG4gIC8qKiBUaXBvIGRlIGFjY2nDs24gKGRldmljZTpyZWZ1c2UsIGRldmljZTphcHByb3ZlLCBldGMuKSAqL1xuICBhY3Rpb25UeXBlPzogc3RyaW5nO1xuICAvKiogVGlwbyBkZSByZWN1cnNvIG9iamV0aXZvIChkZXZpY2UsIGRvY3VtZW50LCBldGMuKSAqL1xuICB0YXJnZXRUeXBlPzogc3RyaW5nO1xuICAvKiogSUQgZGVsIHJlY3Vyc28gb2JqZXRpdm8gKi9cbiAgdGFyZ2V0SWQ/OiBzdHJpbmc7XG4gIC8qKiBNZW5zYWplIGRlIGVycm9yIChzaSB2YWxpZD1mYWxzZSkgKi9cbiAgbWVzc2FnZT86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE9BVVRIIChMb2dpbiBzb2NpYWwpXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFByb3ZlZWRvcmVzIE9BdXRoIHNvcG9ydGFkb3MuXG4gKi9cbmV4cG9ydCB0eXBlIE9BdXRoUHJvdmlkZXIgPSAnZ29vZ2xlJyB8ICdhcHBsZScgfCAnbWljcm9zb2Z0JyB8ICdmYWNlYm9vayc7XG5cbi8qKlxuICogUmVzdWx0YWRvIGV4aXRvc28gZGUgZmx1am8gT0F1dGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT0F1dGhSZXN1bHQge1xuICAvKiogVG9rZW4gZGUgYWNjZXNvIEpXVCAqL1xuICBhY2Nlc3NUb2tlbjogc3RyaW5nO1xuICAvKiogVG9rZW4gZGUgcmVmcmVzY28gKi9cbiAgcmVmcmVzaFRva2VuOiBzdHJpbmc7XG4gIC8qKiBUb2tlbiBkZSBGaXJlYmFzZSAoc2kgZXN0w6EgaGFiaWxpdGFkbykgKi9cbiAgZmlyZWJhc2VUb2tlbj86IHN0cmluZztcbiAgLyoqIFRpZW1wbyBkZSBleHBpcmFjacOzbiBlbiBzZWd1bmRvcyAqL1xuICBleHBpcmVzSW46IG51bWJlcjtcbiAgLyoqIFJvbGVzIGRlbCB1c3VhcmlvICovXG4gIHJvbGVzPzogc3RyaW5nW107XG4gIC8qKiBQZXJtaXNvcyBkZWwgdXN1YXJpbyAqL1xuICBwZXJtaXNzaW9ucz86IHN0cmluZ1tdO1xuICAvKiogSW5kaWNhIHNpIGVzIHVuIHVzdWFyaW8gbnVldm8gKHJlY2nDqW4gY3JlYWRvKSAqL1xuICBpc05ld1VzZXI/OiBib29sZWFuO1xuICAvKiogSW5kaWNhIHNpIGxhIGN1ZW50YSBmdWUgdmluY3VsYWRhIGEgdXN1YXJpbyBleGlzdGVudGUgKi9cbiAgbGlua2VkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIGB0cnVlYCBzaSBlbCBiYWNrZW5kIGV4aWdlIHZlcmlmaWNhY2nDs24gTUZBIHRyYXMgZWwgT0F1dGguIEVuIGVzZSBjYXNvXG4gICAqIE5PIHZpZW5lbiBgYWNjZXNzVG9rZW5gL2ByZWZyZXNoVG9rZW5gIOKAlCBlbCBmbHVqbyBjb250aW7DumEgY29uIGBtZmFUb2tlbmAuXG4gICAqL1xuICBtZmFSZXF1aXJlZD86IGJvb2xlYW47XG4gIC8qKiBUb2tlbiB0ZW1wb3JhbCBwYXJhIGVsIGNoYWxsZW5nZSBNRkEgKHByZXNlbnRlIHNpIGBtZmFSZXF1aXJlZGApLiAqL1xuICBtZmFUb2tlbj86IHN0cmluZztcbiAgLyoqIE3DqXRvZG8gTUZBIGNvbmZpZ3VyYWRvIHBvciBlbCB1c3VhcmlvIChwcmVzZW50ZSBzaSBgbWZhUmVxdWlyZWRgKS4gKi9cbiAgbWZhTWV0aG9kPzogTUZBTWV0aG9kO1xuICAvKipcbiAgICogYHRydWVgIHNpIGxhIGN1ZW50YSBxdWVkw7MgU0lOIGNvcnJlbyBwb3JxdWUgZWwgcHJvdmVlZG9yIG5vIGVudHJlZ8OzIHVub1xuICAgKiAoY2FzbyB0w61waWNvOiBjdWVudGEgZGUgRmFjZWJvb2sgY3JlYWRhIGNvbiB0ZWzDqWZvbm8sIG8gcGVybWlzbyBkZSBlbWFpbFxuICAgKiBkZW5lZ2FkbyBlbiBlbCBkacOhbG9nbyBkZSBjb25zZW50aW1pZW50bykuXG4gICAqXG4gICAqIEVsIHVzdWFyaW8geWEgZXN0w6EgYXV0ZW50aWNhZG86IGNvbXBsZXRhciBlbCBPQXV0aCBwcnVlYmEgcXVlIGVzIGR1ZcOxbyBkZVxuICAgKiBsYSBjdWVudGEgZGVsIHByb3ZlZWRvci4gUGVybyBzaW4gY29ycmVvIG5vIGhheSByZWN1cGVyYWNpw7NuIGRlIGFjY2VzbywgbmlcbiAgICogTUZBIHBvciBlbWFpbCwgbmkgbm90aWZpY2FjaW9uZXMsIGFzw60gcXVlIGxhIGFwcCBkZWJlcsOtYSBkZXJpdmFybG8gYWwgYWx0YVxuICAgKiBkZSBjb3JyZW8gKGBBdXRoU2VydmljZS5hZGRFbWFpbGApLlxuICAgKi9cbiAgcmVxdWlyZXNFbWFpbD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRXJyb3IgZGUgT0F1dGguXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT0F1dGhFcnJvciB7XG4gIC8qKiBDw7NkaWdvIGRlIGVycm9yICovXG4gIGNvZGU6IHN0cmluZztcbiAgLyoqIE1lbnNhamUgZGVzY3JpcHRpdm8gKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIERhdG9zIGVudmlhZG9zIGRlc2RlIHBvcHVwIGNhbGxiYWNrIHZpYSBwb3N0TWVzc2FnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPQXV0aENhbGxiYWNrRGF0YSB7XG4gIC8qKiBUaXBvIGRlIG1lbnNhamUgKi9cbiAgdHlwZTogJ29hdXRoLWNhbGxiYWNrJztcbiAgLyoqIFRva2VucyAoc2kgw6l4aXRvKSAqL1xuICB0b2tlbnM/OiBPQXV0aFJlc3VsdDtcbiAgLyoqIEVycm9yIChzaSBmYWxsw7MpICovXG4gIGVycm9yPzogT0F1dGhFcnJvcjtcbiAgLyoqXG4gICAqIE5vbmNlIGRlbCBvcGVuZXIgKE0tMDcpLiBFbCBwb3B1cCBsbyByZWNpYmUgZGVsIGJhY2tlbmQgKHJvdW5kLXRyaXAgcG9yIGVsXG4gICAqIE9BdXRoU3RhdGUgZmlybWFkbykgeSBsbyByZWVudsOtYTsgZWwgb3BlbmVyIGxvIHZlcmlmaWNhIGNvbnRyYSBlbCBxdWUgZ2VuZXLDs1xuICAgKiBlbiBtZW1vcmlhIOKGkiByZWNoYXphIHVuIG9hdXRoX2NhbGxiYWNrX2RhdGEgZm9yamFkbyBlbiBsb2NhbFN0b3JhZ2UgcG9yIFhTUy5cbiAgICovXG4gIG5vbmNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3ZlZWRvciBPQXV0aCB2aW5jdWxhZG8gYWwgdXN1YXJpby5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMaW5rZWRQcm92aWRlciB7XG4gIC8qKiBOb21icmUgZGVsIHByb3ZlZWRvciAqL1xuICBwcm92aWRlcjogT0F1dGhQcm92aWRlcjtcbiAgLyoqIEVtYWlsIGFzb2NpYWRvIGFsIHByb3ZlZWRvciAqL1xuICBlbWFpbDogc3RyaW5nO1xuICAvKiogTm9tYnJlIGRlbCB1c3VhcmlvIGVuIGVsIHByb3ZlZWRvciAqL1xuICBuYW1lPzogc3RyaW5nO1xuICAvKiogVVJMIGRlIGltYWdlbiBkZSBwZXJmaWwgKi9cbiAgcGljdHVyZT86IHN0cmluZztcbiAgLyoqIEZlY2hhIGRlIHZpbmN1bGFjacOzbiAqL1xuICBsaW5rZWRBdDogc3RyaW5nO1xuICAvKiogw5psdGltYSB2ZXogcXVlIHNlIHVzw7MgcGFyYSBsb2dpbiAqL1xuICBsYXN0VXNlZEF0Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIHZlcmlmaWNhciBzaSB0aWVuZSBjb250cmFzZcOxYS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIYXNQYXNzd29yZFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgaGFzUGFzc3dvcmQ6IGJvb2xlYW47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIQU5ETEUgKFVzZXJuYW1lKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXF1ZXN0IHBhcmEgYWN0dWFsaXphciBoYW5kbGUgKEB1c2VybmFtZSkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlSGFuZGxlUmVxdWVzdCB7XG4gIGhhbmRsZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3BvbnNlIGRlIGFjdHVhbGl6YXIgaGFuZGxlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUhhbmRsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgaGFuZGxlOiBzdHJpbmc7XG4gIHVwZGF0ZWQ6IGJvb2xlYW47XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIHZlcmlmaWNhciBkaXNwb25pYmlsaWRhZCBkZSBoYW5kbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tIYW5kbGVSZXF1ZXN0IHtcbiAgaGFuZGxlOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVzcG9uc2UgZGUgdmVyaWZpY2FyIGRpc3BvbmliaWxpZGFkIGRlIGhhbmRsZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDaGVja0hhbmRsZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgaGFuZGxlOiBzdHJpbmc7XG4gIGF2YWlsYWJsZTogYm9vbGVhbjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIExJTktFRCBQUk9WSURFUlMgKE9BdXRoKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBvYnRlbmVyIHByb3ZlZWRvcmVzIE9BdXRoIHZpbmN1bGFkb3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2V0TGlua2VkUHJvdmlkZXJzUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBwcm92aWRlcnM6IExpbmtlZFByb3ZpZGVyW107XG59XG5cbi8qKlxuICogUmVxdWVzdCBwYXJhIGRlc3ZpbmN1bGFyIHVuIHByb3ZlZWRvciBPQXV0aC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVbmxpbmtQcm92aWRlclJlcXVlc3Qge1xuICBwcm92aWRlcjogT0F1dGhQcm92aWRlcjtcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBkZSBkZXN2aW5jdWxhciBwcm92ZWVkb3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVW5saW5rUHJvdmlkZXJSZXNwb25zZSB7XG4gIG9wZXJhdGlvbklkOiBzdHJpbmc7XG4gIHVubGlua2VkOiBib29sZWFuO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVNQUlMIENIQU5HRSDigJQgMy1zdGVwIGZsb3dcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIEluaXRpYXRlRW1haWxDaGFuZ2VSZXF1ZXN0IHtcbiAgY3VycmVudFBhc3N3b3JkOiBzdHJpbmc7XG4gIG5ld0VtYWlsOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5pdGlhdGVFbWFpbENoYW5nZVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgcGVuZGluZ0VtYWlsOiBzdHJpbmc7XG4gIHJlcXVlc3RMb2NhdGlvbjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1FbWFpbENoYW5nZVN0ZXAxUmVxdWVzdCB7XG4gIGNvZGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtRW1haWxDaGFuZ2VTdGVwMVJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgdmVyaWZpZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlybUVtYWlsQ2hhbmdlU3RlcDJSZXF1ZXN0IHtcbiAgY29kZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1FbWFpbENoYW5nZVN0ZXAyUmVzcG9uc2Uge1xuICBvcGVyYXRpb25JZDogc3RyaW5nO1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBuZXdFbWFpbDogc3RyaW5nO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFMVEEgREUgQ09SUkVPIOKAlCBjdWVudGFzIHNpbiBlbWFpbFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBQYXJhIGN1ZW50YXMgY3JlYWRhcyB2w61hIHVuIHByb3ZlZWRvciBPQXV0aCBxdWUgbm8gZW50cmVnYSBjb3JyZW8gKHZlclxuLy8gT0F1dGhSZXN1bHQucmVxdWlyZXNFbWFpbCkuIEEgZGlmZXJlbmNpYSBkZWwgY2FtYmlvIGRlIGVtYWlsLCBubyBwaWRlXG4vLyBjb250cmFzZcOxYTogZXN0YXMgY3VlbnRhcyBzb24gT0F1dGgtb25seSB5IG5vIHRpZW5lbiB1bmEuXG5cbmV4cG9ydCBpbnRlcmZhY2UgQWRkRW1haWxSZXF1ZXN0IHtcbiAgZW1haWw6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRFbWFpbFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgLyoqIENvcnJlbyBwZW5kaWVudGUsIGVubWFzY2FyYWRvIChcIm4qKipAZWplbXBsby5jb21cIikuICovXG4gIHBlbmRpbmdFbWFpbDogc3RyaW5nO1xuICAvKiogTWludXRvcyBkZSB2aWdlbmNpYSBkZWwgY8OzZGlnbyBlbnZpYWRvLiAqL1xuICBleHBpcmVzSW5NaW46IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb25maXJtQWRkRW1haWxSZXF1ZXN0IHtcbiAgY29kZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpcm1BZGRFbWFpbFJlc3BvbnNlIHtcbiAgb3BlcmF0aW9uSWQ6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgdmVyaWZpZWQ6IGJvb2xlYW47XG59XG4iXX0=
|
|
@@ -135,13 +135,18 @@ export class I18nService {
|
|
|
135
135
|
console.warn(`[i18n] Language '${lang}' not in supported languages`);
|
|
136
136
|
return;
|
|
137
137
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
// Persistir en localStorage (browser-only)
|
|
138
|
+
// Aunque el signal ya tenga este valor, re-persistimos. Esto corrige
|
|
139
|
+
// estados viejos donde la UI quedó en el idioma correcto por snapshot, pero
|
|
140
|
+
// localStorage conservó otro valor y el siguiente bootstrap volvió al viejo.
|
|
142
141
|
if (this.isBrowser) {
|
|
143
142
|
localStorage.setItem(LANG_STORAGE_KEY, lang);
|
|
144
143
|
}
|
|
144
|
+
if (lang === this._lang()) {
|
|
145
|
+
if (forceReload && this.isBrowser) {
|
|
146
|
+
window.location.reload();
|
|
147
|
+
}
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
145
150
|
// Actualizar signal
|
|
146
151
|
this._lang.set(lang);
|
|
147
152
|
// Fallback: recargar si se solicita
|
|
@@ -286,4 +291,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
286
291
|
type: Inject,
|
|
287
292
|
args: [PLATFORM_ID]
|
|
288
293
|
}] }] });
|
|
289
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9pMThuL2kxOG4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBSUwsZ0JBQWdCLEVBQ2hCLG1CQUFtQixHQUNwQixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRTlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFFSCxNQUFNLE9BQU8sV0FBVztJQTJCdEIsWUFBaUMsVUFBa0I7UUExQm5ELDZCQUE2QjtRQUNaLFVBQUssR0FBRyxNQUFNLENBQVcsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDOUQsYUFBUSxHQUFHLE1BQU0sQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUNwQyx3QkFBbUIsR0FBRyxNQUFNLENBQWEsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVsRyxvQkFBb0I7UUFDWCxTQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvQix1QkFBa0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFcEUsdUNBQXVDO1FBQzlCLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ2xELGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBSTNEOzs7Ozs7OztXQVFHO1FBQ2MsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBR2xELElBQUksQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILENBQUMsQ0FBQyxHQUFXLEVBQUUsU0FBa0IsRUFBRSxJQUE2QjtRQUM5RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7O09BY0c7SUFDSCxRQUFRLENBQUMsSUFBYSxFQUFFLE9BQWEsSUFBSSxJQUFJLEVBQUU7UUFDN0MsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMseUNBQXlDO1FBQ3ZELE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0MsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0gsT0FBTyxDQUFDLEdBQVcsRUFBRSxTQUFrQixFQUFFLElBQTZCO1FBQ3BFLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsTUFBTSxFQUFFLEdBQUcsU0FBUyxJQUFJLFNBQVMsQ0FBQztRQUVsQyxpQ0FBaUM7UUFDakMsSUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUV0QyxxQkFBcUI7UUFDckIsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDOUIsSUFBSSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUVELGtFQUFrRTtRQUNsRSxxRUFBcUU7UUFDckUsd0VBQXdFO1FBQ3hFLG9FQUFvRTtRQUNwRSx3RUFBd0U7UUFDeEUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDakMsT0FBTyxDQUFDLElBQUksQ0FBQywrQkFBK0IsRUFBRSxJQUFJLEdBQUcsS0FBSyxJQUFJLEdBQUcsQ0FBQyxDQUFDO1lBQ3JFLENBQUM7WUFDRCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFFRCxvQ0FBb0M7UUFDcEMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLElBQWMsRUFBRSxXQUFXLEdBQUcsS0FBSztRQUM3QyxJQUFJLENBQUMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDL0MsT0FBTyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSw4QkFBOEIsQ0FBQyxDQUFDO1lBQ3JFLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFFRCwyQ0FBMkM7UUFDM0MsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRXJCLG9DQUFvQztRQUNwQyxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsZUFBZSxDQUFDLFNBQWlCLEVBQUUsT0FBeUI7UUFDMUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdCLEdBQUcsS0FBSztZQUNSLENBQUMsU0FBUyxDQUFDLEVBQUUsT0FBTztTQUNyQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGdCQUFnQixDQUFDLFNBQWlCLEVBQUUsUUFBMEI7UUFDNUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDM0IsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2xDLElBQUksQ0FBQyxRQUFRO2dCQUFFLE9BQU8sRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDO1lBQzFELE1BQU0sTUFBTSxHQUFxQixFQUFFLEdBQUcsUUFBUSxFQUFFLENBQUM7WUFDakQsS0FBSyxNQUFNLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBa0MsRUFBRSxDQUFDO2dCQUMxRSxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNyQyxNQUFNLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQTJCLENBQUM7Z0JBQ2pFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUksT0FBa0MsRUFBRSxHQUFHLE9BQU8sRUFBRSxDQUFDO1lBQ3hFLENBQUM7WUFDRCxPQUFPLEVBQUUsR0FBRyxLQUFLLEVBQUUsQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsbUJBQW1CLENBQUMsWUFBMEI7UUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzdCLEdBQUcsS0FBSztZQUNSLEdBQUcsWUFBWTtTQUNoQixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLFNBQXFCO1FBQ3BDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZLENBQUMsU0FBaUI7UUFDNUIsT0FBTyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7O09BZUc7SUFDSyxrQkFBa0I7UUFDeEIscUVBQXFFO1FBQ3JFLHFEQUFxRDtRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXRELElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFrQixDQUFDLENBQUM7WUFDbkMsT0FBTztRQUNULENBQUM7UUFFRCxzRUFBc0U7UUFDdEUsMkNBQTJDO1FBQzNDLE1BQU0sV0FBVyxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBYSxDQUFDO1FBQ2pFLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlCLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxlQUFlLENBQUMsSUFBWTtRQUNsQyxPQUFPLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFnQixDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNLLFdBQVcsQ0FBQyxJQUFZLEVBQUUsSUFBNEI7UUFDNUQsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFO1lBQzFELE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLGFBQWEsR0FBRyxZQUFZLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDNUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsVUFBVSxHQUFHLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN2RCxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0QsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ1gsQ0FBQzsrR0F4UlUsV0FBVyxrQkEyQkYsV0FBVzttSEEzQnBCLFdBQVcsY0FERSxNQUFNOzs0RkFDbkIsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQTRCbkIsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBQTEFURk9STV9JRCwgc2lnbmFsLCBjb21wdXRlZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgSTE4bkxhbmcsXG4gIExhbmd1YWdlc0NvbnRlbnQsXG4gIENvbnRlbnRTdG9yZSxcbiAgTEFOR19TVE9SQUdFX0tFWSxcbiAgREVGQVVMVF9JMThOX0NPTkZJRyxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBnZXRUaW1lT2ZEYXlLZXkgfSBmcm9tICcuLi8uLi9zaGFyZWQvdXRpbHMvZGF0ZXRpbWUnO1xuXG4vKipcbiAqIFNlcnZpY2lvIGRlIGludGVybmFjaW9uYWxpemFjacOzbiBiYXNhZG8gZW4gQW5ndWxhciBTaWduYWxzLlxuICpcbiAqIENhcmFjdGVyw61zdGljYXM6XG4gKiAtIFNpbiBSeEpTOiB1c2EgU2lnbmFscyBwYXJhIGV2aXRhciBtZW1vcnkgbGVha3MgeSBjb25nZWxhbWllbnRvXG4gKiAtIE5hbWVzcGFjZS1iYXNlZDogb3JnYW5pemEgdHJhZHVjY2lvbmVzIHBvciBjb250ZXh0b1xuICogLSBGYWxsYmFjayBtdWx0aS1uaXZlbDogbmFtZXNwYWNlIOKGkiBfZ2xvYmFsIOKGkiBwbGFjZWhvbGRlclxuICogLSBJbnRlcnBvbGFjacOzbjogc29wb3J0YSB7dmFyaWFibGV9IGVuIHRleHRvc1xuICpcbiAqIEBleGFtcGxlXG4gKiAvLyBFbiB1biBjb21wb25lbnRlXG4gKiBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAqXG4gKiAvLyBPYnRlbmVyIHRleHRvXG4gKiBjb25zdCB0aXRsZSA9IHRoaXMuaTE4bi50KCd0aXRsZScsICdMb2dpbicpO1xuICpcbiAqIC8vIENvbiBpbnRlcnBvbGFjacOzblxuICogY29uc3Qgd2VsY29tZSA9IHRoaXMuaTE4bi50KCd3ZWxjb21lJywgJ0xvZ2luJywgeyBuYW1lOiAnSnVhbicgfSk7XG4gKlxuICogLy8gQ2FtYmlhciBpZGlvbWFcbiAqIHRoaXMuaTE4bi5zZXRMYW5ndWFnZSgnZW4nKTtcbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBJMThuU2VydmljZSB7XG4gIC8vIEVzdGFkbyBpbnRlcm5vIGNvbiBTaWduYWxzXG4gIHByaXZhdGUgcmVhZG9ubHkgX2xhbmcgPSBzaWduYWw8STE4bkxhbmc+KERFRkFVTFRfSTE4Tl9DT05GSUcuZGVmYXVsdExhbmd1YWdlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudCA9IHNpZ25hbDxDb250ZW50U3RvcmU+KHt9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3VwcG9ydGVkTGFuZ3VhZ2VzID0gc2lnbmFsPEkxOG5MYW5nW10+KERFRkFVTFRfSTE4Tl9DT05GSUcuc3VwcG9ydGVkTGFuZ3VhZ2VzKTtcblxuICAvLyBQw7pibGljb3MgcmVhZG9ubHlcbiAgcmVhZG9ubHkgbGFuZyA9IHRoaXMuX2xhbmcuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBzdXBwb3J0ZWRMYW5ndWFnZXMgPSB0aGlzLl9zdXBwb3J0ZWRMYW5ndWFnZXMuYXNSZWFkb25seSgpO1xuXG4gIC8vIENvbXB1dGVkIHBhcmEgdmVyaWZpY2FjaW9uZXMgcsOhcGlkYXNcbiAgcmVhZG9ubHkgaXNTcGFuaXNoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fbGFuZygpID09PSAnZXMnKTtcbiAgcmVhZG9ubHkgaXNFbmdsaXNoID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5fbGFuZygpID09PSAnZW4nKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGlzQnJvd3NlcjogYm9vbGVhbjtcblxuICAvKipcbiAgICogS2V5cyBmYWx0YW50ZXMgeWEgYWR2ZXJ0aWRhcyAoYG5zLmtleS5sYW5nYCkuIEdhcmFudGl6YSBxdWUgZWwgd2FybmluZyBzZVxuICAgKiBlbWl0YSBVTkEgc29sYSB2ZXogcG9yIGtleSwgbnVuY2EgcG9yIGNhZGEgY2hhbmdlLWRldGVjdGlvbi5cbiAgICpcbiAgICogQ3LDrXRpY286IGBnZXRUZXh0YCBzZSBldmFsw7phIGVuIGJpbmRpbmdzIGRlIHRlbXBsYXRlICh1bmEgdmV6IHBvciBDRCkuIFNpXG4gICAqIGFkdmlydGnDqXJhbW9zIGVuIGNhZGEgbGxhbWFkYSwgdW4gYGNvbnNvbGUud2FybmAgcG9yIENEICsgZWwgYHZhbC1kZWJ1Zy1jb25zb2xlYFxuICAgKiAocXVlIGVzcGVqYSBgY29uc29sZS4qYCBhIHVuIHNpZ25hbCkgY3JlYSB1biBsb29wIGluZmluaXRvIGRlIENEIHF1ZSBjb25nZWxhXG4gICAqIGVsIG5hdmVnYWRvciBlbiBkZXYuIERlZHVwbGljYXIgY29ydGEgZXNlIGxvb3AgZW4gc3Ugb3JpZ2VuLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfd2FybmVkTWlzc2luZyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIGNvbnN0cnVjdG9yKEBJbmplY3QoUExBVEZPUk1fSUQpIHBsYXRmb3JtSWQ6IE9iamVjdCkge1xuICAgIHRoaXMuaXNCcm93c2VyID0gaXNQbGF0Zm9ybUJyb3dzZXIocGxhdGZvcm1JZCk7XG4gICAgdGhpcy5sb2FkU3RvcmVkTGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHRleHRvIHRyYWR1Y2lkbyAoYWxpYXMgY29ydG8gZGUgZ2V0VGV4dClcbiAgICpcbiAgICogQHBhcmFtIGtleSBDbGF2ZSBkZWwgdGV4dG9cbiAgICogQHBhcmFtIG5hbWVzcGFjZSBOYW1lc3BhY2UgKGRlZmF1bHQ6ICdfZ2xvYmFsJylcbiAgICogQHBhcmFtIGRhdGEgVmFyaWFibGVzIHBhcmEgaW50ZXJwb2xhY2nDs25cbiAgICogQHJldHVybnMgVGV4dG8gdHJhZHVjaWRvIG8gcGxhY2Vob2xkZXIgW25hbWVzcGFjZS5rZXldXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGkxOG4udCgnc3VibWl0Jyk7ICAgICAgICAgICAgICAgICAgICAvLyBidXNjYSBlbiBfZ2xvYmFsXG4gICAqIGkxOG4udCgndGl0bGUnLCAnTG9naW4nKTsgICAgICAgICAgICAvLyBidXNjYSBlbiBMb2dpblxuICAgKiBpMThuLnQoJ3dlbGNvbWUnLCAnTG9naW4nLCB7bmFtZX0pOyAgLy8gY29uIGludGVycG9sYWNpw7NuXG4gICAqL1xuICB0KGtleTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmcsIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUZXh0KGtleSwgbmFtZXNwYWNlLCBkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgdGltZS1vZi1kYXkgZ3JlZXRpbmcgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UuXG4gICAqXG4gICAqIFVzZXMgYnVuZGxlZCBrZXlzIGBnb29kTW9ybmluZ2AgLyBgZ29vZEFmdGVybm9vbmAgLyBgZ29vZEV2ZW5pbmdgIGZyb20gYF9nbG9iYWxgLlxuICAgKiBSZWFjdGl2ZSB0byBgbGFuZygpYCB3aGVuIGNhbGxlZCBpbnNpZGUgYSBgY29tcHV0ZWQoKWAuXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lIE9wdGlvbmFsIG5hbWUgdG8gYXBwZW5kOiBcIkJ1ZW5vcyBkw61hcywgSnVhblwiXG4gICAqIEBwYXJhbSBkYXRlIE9wdGlvbmFsIGRhdGUgdG8gZXZhbHVhdGUgKGRlZmF1bHRzIHRvIG5vdylcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZ3JlZXRpbmcgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAqICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICogICByZXR1cm4gdGhpcy5pMThuLmdyZWV0aW5nKHRoaXMuYXV0aC51c2VyKCk/Lm5hbWUpO1xuICAgKiB9KTtcbiAgICovXG4gIGdyZWV0aW5nKG5hbWU/OiBzdHJpbmcsIGRhdGU6IERhdGUgPSBuZXcgRGF0ZSgpKTogc3RyaW5nIHtcbiAgICB0aGlzLl9sYW5nKCk7IC8vIHRyYWNrIGZvciByZWFjdGl2aXR5IGluc2lkZSBjb21wdXRlZCgpXG4gICAgY29uc3QgdGV4dCA9IHRoaXMudChnZXRUaW1lT2ZEYXlLZXkoZGF0ZSkpO1xuICAgIHJldHVybiBuYW1lID8gYCR7dGV4dH0sICR7bmFtZX1gIDogdGV4dDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIHRleHRvIHRyYWR1Y2lkb1xuICAgKlxuICAgKiBGYWxsYmFjayBvcmRlcjpcbiAgICogMS4gY29udGVudFtuYW1lc3BhY2VdW2xhbmddW2tleV1cbiAgICogMi4gY29udGVudFsnX2dsb2JhbCddW2xhbmddW2tleV1cbiAgICogMy4gXCJcIiAoc3RyaW5nIHZhY8Otbykg4oCUIG51bmNhIHVuIHBsYWNlaG9sZGVyIHZpc2libGUgbmkgdW4gdmFsb3IgcXVlXG4gICAqICAgIHJvbXBhIGVsIHJlbmRlci4gRWwgY29uc3VtZXIgcHVlZGUgYXBsaWNhciBzdSBwcm9waW8gZmFsbGJhY2sgY29uIGB8fGAuXG4gICAqL1xuICBnZXRUZXh0KGtleTogc3RyaW5nLCBuYW1lc3BhY2U/OiBzdHJpbmcsIGRhdGE/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+KTogc3RyaW5nIHtcbiAgICBjb25zdCBjb250ZW50ID0gdGhpcy5fY29udGVudCgpO1xuICAgIGNvbnN0IGxhbmcgPSB0aGlzLl9sYW5nKCk7XG4gICAgY29uc3QgbnMgPSBuYW1lc3BhY2UgfHwgJ19nbG9iYWwnO1xuXG4gICAgLy8gQnVzY2FyIGVuIG5hbWVzcGFjZSBlc3BlY8OtZmljb1xuICAgIGxldCB0ZXh0ID0gY29udGVudFtuc10/LltsYW5nXT8uW2tleV07XG5cbiAgICAvLyBGYWxsYmFjayBhIF9nbG9iYWxcbiAgICBpZiAoIXRleHQgJiYgbnMgIT09ICdfZ2xvYmFsJykge1xuICAgICAgdGV4dCA9IGNvbnRlbnRbJ19nbG9iYWwnXT8uW2xhbmddPy5ba2V5XTtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayBzZWd1cm86IHN0cmluZyB2YWPDrW8uIFNlIGFkdmllcnRlIFVOQSB2ZXogcG9yIGtleSAodmVyXG4gICAgLy8gYF93YXJuZWRNaXNzaW5nYCkgcGFyYSBxdWUgdW4gYmluZGluZyBldmFsdWFkbyBwb3IgQ0Qgbm8gZ2VuZXJlIHVuXG4gICAgLy8gY29uc29sZS53YXJuIHBvciBjYWRhIGNoYW5nZS1kZXRlY3Rpb24gKHF1ZSBkaXNwYXJhcsOtYSB1biBsb29wIGNvbiBlbFxuICAgIC8vIGRlYnVnLWNvbnNvbGUpLiBObyBkZXZvbHZlbW9zIGBbbnMua2V5XWAg4oCUIHVuIHBsYWNlaG9sZGVyIHZpc2libGVcbiAgICAvLyBlbnN1Y2lhIGxhIFVJIHksIGFsIHNlciB0cnV0aHksIGFudWxhIGxvcyBgfHwgZmFsbGJhY2tgIGRlbCBjb25zdW1lci5cbiAgICBpZiAoIXRleHQpIHtcbiAgICAgIGNvbnN0IHdhcm5LZXkgPSBgJHtuc30uJHtrZXl9LiR7bGFuZ31gO1xuICAgICAgaWYgKCF0aGlzLl93YXJuZWRNaXNzaW5nLmhhcyh3YXJuS2V5KSkge1xuICAgICAgICB0aGlzLl93YXJuZWRNaXNzaW5nLmFkZCh3YXJuS2V5KTtcbiAgICAgICAgY29uc29sZS53YXJuKGBbaTE4bl0gTWlzc2luZyB0cmFuc2xhdGlvbjogJHtuc30uJHtrZXl9ICgke2xhbmd9KWApO1xuICAgICAgfVxuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIC8vIEFwbGljYXIgaW50ZXJwb2xhY2nDs24gc2kgaGF5IGRhdGFcbiAgICBpZiAoZGF0YSkge1xuICAgICAgcmV0dXJuIHRoaXMuaW50ZXJwb2xhdGUodGV4dCwgZGF0YSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICAvKipcbiAgICogQ2FtYmlhIGVsIGlkaW9tYSBkZSBsYSBhcGxpY2FjacOzblxuICAgKlxuICAgKiBAcGFyYW0gbGFuZyBOdWV2byBpZGlvbWFcbiAgICogQHBhcmFtIGZvcmNlUmVsb2FkIFNpIHRydWUsIHJlY2FyZ2EgbGEgcMOhZ2luYSAoZmFsbGJhY2sgc2kgcmVhY3RpdmlkYWQgZmFsbGEpXG4gICAqL1xuICBzZXRMYW5ndWFnZShsYW5nOiBJMThuTGFuZywgZm9yY2VSZWxvYWQgPSBmYWxzZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fc3VwcG9ydGVkTGFuZ3VhZ2VzKCkuaW5jbHVkZXMobGFuZykpIHtcbiAgICAgIGNvbnNvbGUud2FybihgW2kxOG5dIExhbmd1YWdlICcke2xhbmd9JyBub3QgaW4gc3VwcG9ydGVkIGxhbmd1YWdlc2ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChsYW5nID09PSB0aGlzLl9sYW5nKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBQZXJzaXN0aXIgZW4gbG9jYWxTdG9yYWdlIChicm93c2VyLW9ubHkpXG4gICAgaWYgKHRoaXMuaXNCcm93c2VyKSB7XG4gICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShMQU5HX1NUT1JBR0VfS0VZLCBsYW5nKTtcbiAgICB9XG5cbiAgICAvLyBBY3R1YWxpemFyIHNpZ25hbFxuICAgIHRoaXMuX2xhbmcuc2V0KGxhbmcpO1xuXG4gICAgLy8gRmFsbGJhY2s6IHJlY2FyZ2FyIHNpIHNlIHNvbGljaXRhXG4gICAgaWYgKGZvcmNlUmVsb2FkICYmIHRoaXMuaXNCcm93c2VyKSB7XG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIGNvbnRlbmlkbyBkZSB0cmFkdWNjaW9uZXMgcGFyYSB1biBuYW1lc3BhY2VcbiAgICpcbiAgICogQHBhcmFtIG5hbWVzcGFjZSBOb21icmUgZGVsIG5hbWVzcGFjZVxuICAgKiBAcGFyYW0gY29udGVudCBDb250ZW5pZG8gZGUgdHJhZHVjY2lvbmVzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGkxOG4ucmVnaXN0ZXJDb250ZW50KCdMb2dpbicsIHtcbiAgICogICBlczogeyB0aXRsZTogJ0luaWNpYXIgc2VzacOzbicgfSxcbiAgICogICBlbjogeyB0aXRsZTogJ1NpZ24gaW4nIH1cbiAgICogfSk7XG4gICAqL1xuICByZWdpc3RlckNvbnRlbnQobmFtZXNwYWNlOiBzdHJpbmcsIGNvbnRlbnQ6IExhbmd1YWdlc0NvbnRlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250ZW50LnVwZGF0ZShzdG9yZSA9PiAoe1xuICAgICAgLi4uc3RvcmUsXG4gICAgICBbbmFtZXNwYWNlXTogY29udGVudCxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0cmEgZGVmYXVsdHMgcGFyYSB1biBuYW1lc3BhY2UsIG1lemNsYW5kbyBzb2xvIGxhcyBrZXlzIGF1c2VudGVzIHBvciBpZGlvbWEuXG4gICAqIEEgZGlmZXJlbmNpYSBkZSBgcmVnaXN0ZXJDb250ZW50YCwgbm8gc29icmVlc2NyaWJlIGtleXMgcXVlIGVsIGNvbnN1bWVyIHlhIHJlZ2lzdHLDsy5cbiAgICogw5pzYWxvIGVuIGNvbXBvbmVudGVzIGRlIGxhIGxpYiBwYXJhIHF1ZSBzdXMgZGVmYXVsdHMgZnVuY2lvbmVuIGluY2x1c28gY3VhbmRvIGVsXG4gICAqIGNvbnN1bWVyIHJlZ2lzdHLDsyBlbCBuYW1lc3BhY2UgZGUgZm9ybWEgcGFyY2lhbC5cbiAgICovXG4gIHJlZ2lzdGVyRGVmYXVsdHMobmFtZXNwYWNlOiBzdHJpbmcsIGRlZmF1bHRzOiBMYW5ndWFnZXNDb250ZW50KTogdm9pZCB7XG4gICAgdGhpcy5fY29udGVudC51cGRhdGUoc3RvcmUgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBzdG9yZVtuYW1lc3BhY2VdO1xuICAgICAgaWYgKCFleGlzdGluZykgcmV0dXJuIHsgLi4uc3RvcmUsIFtuYW1lc3BhY2VdOiBkZWZhdWx0cyB9O1xuICAgICAgY29uc3QgbWVyZ2VkOiBMYW5ndWFnZXNDb250ZW50ID0geyAuLi5leGlzdGluZyB9O1xuICAgICAgZm9yIChjb25zdCBsYW5nIG9mIE9iamVjdC5rZXlzKGRlZmF1bHRzKSBhcyBBcnJheTxrZXlvZiBMYW5ndWFnZXNDb250ZW50Pikge1xuICAgICAgICBjb25zdCBkZWZMYW5nID0gZGVmYXVsdHNbbGFuZ10gPz8ge307XG4gICAgICAgIGNvbnN0IGN1ckxhbmcgPSAoZXhpc3RpbmdbbGFuZ10gPz8ge30pIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgICAgIG1lcmdlZFtsYW5nXSA9IHsgLi4uKGRlZkxhbmcgYXMgUmVjb3JkPHN0cmluZywgc3RyaW5nPiksIC4uLmN1ckxhbmcgfTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IC4uLnN0b3JlLCBbbmFtZXNwYWNlXTogbWVyZ2VkIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0cmEgbcO6bHRpcGxlcyBuYW1lc3BhY2VzIGRlIHVuYSB2ZXpcbiAgICpcbiAgICogQHBhcmFtIGNvbnRlbnRTdG9yZSBPYmpldG8gY29uIG5hbWVzcGFjZXMgY29tbyBrZXlzXG4gICAqL1xuICByZWdpc3RlckNvbnRlbnRCdWxrKGNvbnRlbnRTdG9yZTogQ29udGVudFN0b3JlKTogdm9pZCB7XG4gICAgdGhpcy5fY29udGVudC51cGRhdGUoc3RvcmUgPT4gKHtcbiAgICAgIC4uLnN0b3JlLFxuICAgICAgLi4uY29udGVudFN0b3JlLFxuICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmEgbG9zIGlkaW9tYXMgc29wb3J0YWRvc1xuICAgKi9cbiAgc2V0STE4bkxhbmd1YWdlcyhsYW5ndWFnZXM6IEkxOG5MYW5nW10pOiB2b2lkIHtcbiAgICB0aGlzLl9zdXBwb3J0ZWRMYW5ndWFnZXMuc2V0KGxhbmd1YWdlcyk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSB0b2RvcyBsb3MgbmFtZXNwYWNlcyByZWdpc3RyYWRvc1xuICAgKi9cbiAgZ2V0TmFtZXNwYWNlcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX2NvbnRlbnQoKSk7XG4gIH1cblxuICAvKipcbiAgICogVmVyaWZpY2Egc2kgdW4gbmFtZXNwYWNlIHRpZW5lIHRyYWR1Y2Npb25lc1xuICAgKi9cbiAgaGFzTmFtZXNwYWNlKG5hbWVzcGFjZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG5hbWVzcGFjZSBpbiB0aGlzLl9jb250ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogQ2FyZ2EgZWwgaWRpb21hIGd1YXJkYWRvIGVuIGxvY2FsU3RvcmFnZSwgbyBhZGl2aW5hIGRlc2RlIGVsIG5hdmVnYWRvci5cbiAgICpcbiAgICogTGEgZGV0ZWNjacOzbiBkZSBhY8OhIGVzIFBST1ZJU0lPTkFMIHkgTk8gc2UgcGVyc2lzdGUsIGEgcHJvcMOzc2l0by4gRWxcbiAgICogY29uc3RydWN0b3IgY29ycmUgYW50ZXMgcXVlIGVsIEFQUF9JTklUSUFMSVpFUiBkZSBgcHJvdmlkZVZhbHRlY2hJMThuYCxcbiAgICogcXVlIGVzIHF1aWVuIGNvbm9jZSBsYSBjb25maWcgcmVhbCBkZSBsYSBhcHAuIEN1YW5kbyBlc3RvIHBlcnNpc3TDrWEgZWxcbiAgICogaWRpb21hIGRldGVjdGFkbywgZWwgaW5pdGlhbGl6ZXIgbGXDrWEgZXNhIG1pc21hIGNsYXZlIHVuIGluc3RhbnRlIGRlc3B1w6lzLFxuICAgKiBsYSB0b21hYmEgcG9yIHByZWZlcmVuY2lhIGd1YXJkYWRhIGRlbCB1c3VhcmlvIHkgZW50cmFiYSBwb3IgbGEgcmFtYVxuICAgKiBgc3RvcmVkYCDigJQgYXPDrSBxdWUgYGRldGVjdEJyb3dzZXJMYW5ndWFnZTogZmFsc2VgIG5vIHRlbsOtYSBlZmVjdG8gZW5cbiAgICogbmluZ3VuYSBhcHAgZGVsIGZhY3RvcnkuIEVzY3JpYmlyIGFjw6EgZmFicmljYWJhIHVuYSBwcmVmZXJlbmNpYSBxdWUgZWxcbiAgICogdXN1YXJpbyBudW5jYSBleHByZXPDsy5cbiAgICpcbiAgICogUGVyc2lzdGlyIGVzIHJlc3BvbnNhYmlsaWRhZCBkZSBgc2V0TGFuZ3VhZ2UoKWAsIHF1ZSBzZSBsbGFtYSBjdWFuZG8gbGFcbiAgICogZWxlY2Npw7NuIHPDrSBlcyBkZWwgdXN1YXJpbyAobyBjdWFuZG8gZWwgaW5pdGlhbGl6ZXIgeWEgZGVjaWRpw7MgY29uIGxhXG4gICAqIGNvbmZpZyBhIGxhIHZpc3RhKS5cbiAgICovXG4gIHByaXZhdGUgbG9hZFN0b3JlZExhbmd1YWdlKCk6IHZvaWQge1xuICAgIC8vIFNTUjogc2luIGxvY2FsU3RvcmFnZS9uYXZpZ2F0b3IuIE1hbnRlbmVtb3MgZWwgZGVmYXVsdDsgZWwgYnJvd3NlclxuICAgIC8vIGh5ZHJhdGFyw6EgZWwgbGFuZyByZWFsIGN1YW5kbyBlbCBjbGllbnRlIGFycmFucXVlLlxuICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzdG9yZWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShMQU5HX1NUT1JBR0VfS0VZKTtcblxuICAgIGlmIChzdG9yZWQgJiYgdGhpcy5pc1ZhbGlkTGFuZ3VhZ2Uoc3RvcmVkKSkge1xuICAgICAgdGhpcy5fbGFuZy5zZXQoc3RvcmVkIGFzIEkxOG5MYW5nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBBZGl2aW5hbnphIHByb3Zpc2lvbmFsIG1pZW50cmFzIGVsIGluaXRpYWxpemVyIG5vIGhheWEgY29ycmlkby4gU2luXG4gICAgLy8gcGVyc2lzdGlyOiB2ZXIgZWwgY29tZW50YXJpbyBkZWwgbcOpdG9kby5cbiAgICBjb25zdCBicm93c2VyTGFuZyA9IG5hdmlnYXRvci5sYW5ndWFnZS5zcGxpdCgnLScpWzBdIGFzIEkxOG5MYW5nO1xuICAgIGlmICh0aGlzLmlzVmFsaWRMYW5ndWFnZShicm93c2VyTGFuZykpIHtcbiAgICAgIHRoaXMuX2xhbmcuc2V0KGJyb3dzZXJMYW5nKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhIHNpIHVuIGlkaW9tYSBlc3TDoSBzb3BvcnRhZG9cbiAgICovXG4gIHByaXZhdGUgaXNWYWxpZExhbmd1YWdlKGxhbmc6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zdXBwb3J0ZWRMYW5ndWFnZXMoKS5pbmNsdWRlcyhsYW5nIGFzIEkxOG5MYW5nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWVtcGxhemEge3ZhcmlhYmxlfSBlbiB0ZXh0byBjb24gdmFsb3JlcyBkZSBkYXRhXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGludGVycG9sYXRlKCdIb2xhIHtuYW1lfScsIHsgbmFtZTogJ0p1YW4nIH0pICAgLy8gJ0hvbGEgSnVhbidcbiAgICogaW50ZXJwb2xhdGUoJ0hvbGEge3tuYW1lfX0nLCB7IG5hbWU6ICdKdWFuJyB9KSAvLyAnSG9sYSBKdWFuJ1xuICAgKlxuICAgKiBTZSBhY2VwdGFuIGxhcyBET1Mgbm90YWNpb25lcyBhIHByb3DDs3NpdG8uIENvbiBzb2xvIGB7Y2xhdmV9YCwgdW4gdGV4dG9cbiAgICogZXNjcml0byBjb21vIGB7e2NsYXZlfX1gIHJlZW1wbGF6YWJhIGVsIGludGVyaW9yIHkgZGVqYWJhIGxhcyBsbGF2ZXMgZGVcbiAgICogYWZ1ZXJhIGEgbGEgdmlzdGEgZGVsIHVzdWFyaW8gKFwiRXN0ZSBlcyBtaSBjYXJ0w7NuIHBhcmEge0dhbGEgMjAyNn1cIiksIHNpblxuICAgKiBmYWxsYXIgZW4gbmluZ8O6biBsYWRvLiBFbCBlc3RpbG8gZGUgbGxhdmVzIGRlIHVuIHRleHRvIG5vIGRlYmVyw61hIHNlciB1bmFcbiAgICogdHJhbXBhOiBsYSBsaWIgYWNlcHRhIGFtYm9zIHkgZWwgY29uc3VtaWRvciBlc2NyaWJlIGNvbW8gcHJlZmllcmEuXG4gICAqL1xuICBwcml2YXRlIGludGVycG9sYXRlKHRleHQ6IHN0cmluZywgZGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGRhdGEpLnJlZHVjZSgocmVzdWx0LCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGNvbnN0IGRvYmxlID0gbmV3IFJlZ0V4cChgXFxcXHtcXFxce1xcXFxzKiR7a2V5fVxcXFxzKlxcXFx9XFxcXH1gLCAnZycpO1xuICAgICAgY29uc3Qgc2ltcGxlID0gbmV3IFJlZ0V4cChgXFxcXHtcXFxccyoke2tleX1cXFxccypcXFxcfWAsICdnJyk7XG4gICAgICByZXR1cm4gcmVzdWx0LnJlcGxhY2UoZG9ibGUsIHZhbHVlKS5yZXBsYWNlKHNpbXBsZSwgdmFsdWUpO1xuICAgIH0sIHRleHQpO1xuICB9XG59XG4iXX0=
|
|
294
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaTE4bi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9pMThuL2kxOG4uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRCxPQUFPLEVBSUwsZ0JBQWdCLEVBQ2hCLG1CQUFtQixHQUNwQixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNkJBQTZCLENBQUM7O0FBRTlEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFFSCxNQUFNLE9BQU8sV0FBVztJQTJCdEIsWUFBaUMsVUFBa0I7UUExQm5ELDZCQUE2QjtRQUNaLFVBQUssR0FBRyxNQUFNLENBQVcsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDOUQsYUFBUSxHQUFHLE1BQU0sQ0FBZSxFQUFFLENBQUMsQ0FBQztRQUNwQyx3QkFBbUIsR0FBRyxNQUFNLENBQWEsbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUVsRyxvQkFBb0I7UUFDWCxTQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUMvQix1QkFBa0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFcEUsdUNBQXVDO1FBQzlCLGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ2xELGNBQVMsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFD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QUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdELENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7K0dBN1JVLFdBQVcsa0JBMkJGLFdBQVc7bUhBM0JwQixXQUFXLGNBREUsTUFBTTs7NEZBQ25CLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkE0Qm5CLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgUExBVEZPUk1fSUQsIHNpZ25hbCwgY29tcHV0ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGlzUGxhdGZvcm1Ccm93c2VyIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIEkxOG5MYW5nLFxuICBMYW5ndWFnZXNDb250ZW50LFxuICBDb250ZW50U3RvcmUsXG4gIExBTkdfU1RPUkFHRV9LRVksXG4gIERFRkFVTFRfSTE4Tl9DT05GSUcsXG59IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgZ2V0VGltZU9mRGF5S2V5IH0gZnJvbSAnLi4vLi4vc2hhcmVkL3V0aWxzL2RhdGV0aW1lJztcblxuLyoqXG4gKiBTZXJ2aWNpbyBkZSBpbnRlcm5hY2lvbmFsaXphY2nDs24gYmFzYWRvIGVuIEFuZ3VsYXIgU2lnbmFscy5cbiAqXG4gKiBDYXJhY3RlcsOtc3RpY2FzOlxuICogLSBTaW4gUnhKUzogdXNhIFNpZ25hbHMgcGFyYSBldml0YXIgbWVtb3J5IGxlYWtzIHkgY29uZ2VsYW1pZW50b1xuICogLSBOYW1lc3BhY2UtYmFzZWQ6IG9yZ2FuaXphIHRyYWR1Y2Npb25lcyBwb3IgY29udGV4dG9cbiAqIC0gRmFsbGJhY2sgbXVsdGktbml2ZWw6IG5hbWVzcGFjZSDihpIgX2dsb2JhbCDihpIgcGxhY2Vob2xkZXJcbiAqIC0gSW50ZXJwb2xhY2nDs246IHNvcG9ydGEge3ZhcmlhYmxlfSBlbiB0ZXh0b3NcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gRW4gdW4gY29tcG9uZW50ZVxuICogaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG4gKlxuICogLy8gT2J0ZW5lciB0ZXh0b1xuICogY29uc3QgdGl0bGUgPSB0aGlzLmkxOG4udCgndGl0bGUnLCAnTG9naW4nKTtcbiAqXG4gKiAvLyBDb24gaW50ZXJwb2xhY2nDs25cbiAqIGNvbnN0IHdlbGNvbWUgPSB0aGlzLmkxOG4udCgnd2VsY29tZScsICdMb2dpbicsIHsgbmFtZTogJ0p1YW4nIH0pO1xuICpcbiAqIC8vIENhbWJpYXIgaWRpb21hXG4gKiB0aGlzLmkxOG4uc2V0TGFuZ3VhZ2UoJ2VuJyk7XG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgSTE4blNlcnZpY2Uge1xuICAvLyBFc3RhZG8gaW50ZXJubyBjb24gU2lnbmFsc1xuICBwcml2YXRlIHJlYWRvbmx5IF9sYW5nID0gc2lnbmFsPEkxOG5MYW5nPihERUZBVUxUX0kxOE5fQ09ORklHLmRlZmF1bHRMYW5ndWFnZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvbnRlbnQgPSBzaWduYWw8Q29udGVudFN0b3JlPih7fSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1cHBvcnRlZExhbmd1YWdlcyA9IHNpZ25hbDxJMThuTGFuZ1tdPihERUZBVUxUX0kxOE5fQ09ORklHLnN1cHBvcnRlZExhbmd1YWdlcyk7XG5cbiAgLy8gUMO6YmxpY29zIHJlYWRvbmx5XG4gIHJlYWRvbmx5IGxhbmcgPSB0aGlzLl9sYW5nLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgc3VwcG9ydGVkTGFuZ3VhZ2VzID0gdGhpcy5fc3VwcG9ydGVkTGFuZ3VhZ2VzLmFzUmVhZG9ubHkoKTtcblxuICAvLyBDb21wdXRlZCBwYXJhIHZlcmlmaWNhY2lvbmVzIHLDoXBpZGFzXG4gIHJlYWRvbmx5IGlzU3BhbmlzaCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2xhbmcoKSA9PT0gJ2VzJyk7XG4gIHJlYWRvbmx5IGlzRW5nbGlzaCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2xhbmcoKSA9PT0gJ2VuJyk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpc0Jyb3dzZXI6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEtleXMgZmFsdGFudGVzIHlhIGFkdmVydGlkYXMgKGBucy5rZXkubGFuZ2ApLiBHYXJhbnRpemEgcXVlIGVsIHdhcm5pbmcgc2VcbiAgICogZW1pdGEgVU5BIHNvbGEgdmV6IHBvciBrZXksIG51bmNhIHBvciBjYWRhIGNoYW5nZS1kZXRlY3Rpb24uXG4gICAqXG4gICAqIENyw610aWNvOiBgZ2V0VGV4dGAgc2UgZXZhbMO6YSBlbiBiaW5kaW5ncyBkZSB0ZW1wbGF0ZSAodW5hIHZleiBwb3IgQ0QpLiBTaVxuICAgKiBhZHZpcnRpw6lyYW1vcyBlbiBjYWRhIGxsYW1hZGEsIHVuIGBjb25zb2xlLndhcm5gIHBvciBDRCArIGVsIGB2YWwtZGVidWctY29uc29sZWBcbiAgICogKHF1ZSBlc3BlamEgYGNvbnNvbGUuKmAgYSB1biBzaWduYWwpIGNyZWEgdW4gbG9vcCBpbmZpbml0byBkZSBDRCBxdWUgY29uZ2VsYVxuICAgKiBlbCBuYXZlZ2Fkb3IgZW4gZGV2LiBEZWR1cGxpY2FyIGNvcnRhIGVzZSBsb29wIGVuIHN1IG9yaWdlbi5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX3dhcm5lZE1pc3NpbmcgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICBjb25zdHJ1Y3RvcihASW5qZWN0KFBMQVRGT1JNX0lEKSBwbGF0Zm9ybUlkOiBPYmplY3QpIHtcbiAgICB0aGlzLmlzQnJvd3NlciA9IGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpO1xuICAgIHRoaXMubG9hZFN0b3JlZExhbmd1YWdlKCk7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSB0ZXh0byB0cmFkdWNpZG8gKGFsaWFzIGNvcnRvIGRlIGdldFRleHQpXG4gICAqXG4gICAqIEBwYXJhbSBrZXkgQ2xhdmUgZGVsIHRleHRvXG4gICAqIEBwYXJhbSBuYW1lc3BhY2UgTmFtZXNwYWNlIChkZWZhdWx0OiAnX2dsb2JhbCcpXG4gICAqIEBwYXJhbSBkYXRhIFZhcmlhYmxlcyBwYXJhIGludGVycG9sYWNpw7NuXG4gICAqIEByZXR1cm5zIFRleHRvIHRyYWR1Y2lkbyBvIHBsYWNlaG9sZGVyIFtuYW1lc3BhY2Uua2V5XVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpMThuLnQoJ3N1Ym1pdCcpOyAgICAgICAgICAgICAgICAgICAgLy8gYnVzY2EgZW4gX2dsb2JhbFxuICAgKiBpMThuLnQoJ3RpdGxlJywgJ0xvZ2luJyk7ICAgICAgICAgICAgLy8gYnVzY2EgZW4gTG9naW5cbiAgICogaTE4bi50KCd3ZWxjb21lJywgJ0xvZ2luJywge25hbWV9KTsgIC8vIGNvbiBpbnRlcnBvbGFjacOzblxuICAgKi9cbiAgdChrZXk6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nLCBkYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0VGV4dChrZXksIG5hbWVzcGFjZSwgZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHRpbWUtb2YtZGF5IGdyZWV0aW5nIGluIHRoZSBjdXJyZW50IGxhbmd1YWdlLlxuICAgKlxuICAgKiBVc2VzIGJ1bmRsZWQga2V5cyBgZ29vZE1vcm5pbmdgIC8gYGdvb2RBZnRlcm5vb25gIC8gYGdvb2RFdmVuaW5nYCBmcm9tIGBfZ2xvYmFsYC5cbiAgICogUmVhY3RpdmUgdG8gYGxhbmcoKWAgd2hlbiBjYWxsZWQgaW5zaWRlIGEgYGNvbXB1dGVkKClgLlxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSBPcHRpb25hbCBuYW1lIHRvIGFwcGVuZDogXCJCdWVub3MgZMOtYXMsIEp1YW5cIlxuICAgKiBAcGFyYW0gZGF0ZSBPcHRpb25hbCBkYXRlIHRvIGV2YWx1YXRlIChkZWZhdWx0cyB0byBub3cpXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGdyZWV0aW5nID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgKiAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAqICAgcmV0dXJuIHRoaXMuaTE4bi5ncmVldGluZyh0aGlzLmF1dGgudXNlcigpPy5uYW1lKTtcbiAgICogfSk7XG4gICAqL1xuICBncmVldGluZyhuYW1lPzogc3RyaW5nLCBkYXRlOiBEYXRlID0gbmV3IERhdGUoKSk6IHN0cmluZyB7XG4gICAgdGhpcy5fbGFuZygpOyAvLyB0cmFjayBmb3IgcmVhY3Rpdml0eSBpbnNpZGUgY29tcHV0ZWQoKVxuICAgIGNvbnN0IHRleHQgPSB0aGlzLnQoZ2V0VGltZU9mRGF5S2V5KGRhdGUpKTtcbiAgICByZXR1cm4gbmFtZSA/IGAke3RleHR9LCAke25hbWV9YCA6IHRleHQ7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSB0ZXh0byB0cmFkdWNpZG9cbiAgICpcbiAgICogRmFsbGJhY2sgb3JkZXI6XG4gICAqIDEuIGNvbnRlbnRbbmFtZXNwYWNlXVtsYW5nXVtrZXldXG4gICAqIDIuIGNvbnRlbnRbJ19nbG9iYWwnXVtsYW5nXVtrZXldXG4gICAqIDMuIFwiXCIgKHN0cmluZyB2YWPDrW8pIOKAlCBudW5jYSB1biBwbGFjZWhvbGRlciB2aXNpYmxlIG5pIHVuIHZhbG9yIHF1ZVxuICAgKiAgICByb21wYSBlbCByZW5kZXIuIEVsIGNvbnN1bWVyIHB1ZWRlIGFwbGljYXIgc3UgcHJvcGlvIGZhbGxiYWNrIGNvbiBgfHxgLlxuICAgKi9cbiAgZ2V0VGV4dChrZXk6IHN0cmluZywgbmFtZXNwYWNlPzogc3RyaW5nLCBkYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPik6IHN0cmluZyB7XG4gICAgY29uc3QgY29udGVudCA9IHRoaXMuX2NvbnRlbnQoKTtcbiAgICBjb25zdCBsYW5nID0gdGhpcy5fbGFuZygpO1xuICAgIGNvbnN0IG5zID0gbmFtZXNwYWNlIHx8ICdfZ2xvYmFsJztcblxuICAgIC8vIEJ1c2NhciBlbiBuYW1lc3BhY2UgZXNwZWPDrWZpY29cbiAgICBsZXQgdGV4dCA9IGNvbnRlbnRbbnNdPy5bbGFuZ10/LltrZXldO1xuXG4gICAgLy8gRmFsbGJhY2sgYSBfZ2xvYmFsXG4gICAgaWYgKCF0ZXh0ICYmIG5zICE9PSAnX2dsb2JhbCcpIHtcbiAgICAgIHRleHQgPSBjb250ZW50WydfZ2xvYmFsJ10/LltsYW5nXT8uW2tleV07XG4gICAgfVxuXG4gICAgLy8gRmFsbGJhY2sgc2VndXJvOiBzdHJpbmcgdmFjw61vLiBTZSBhZHZpZXJ0ZSBVTkEgdmV6IHBvciBrZXkgKHZlclxuICAgIC8vIGBfd2FybmVkTWlzc2luZ2ApIHBhcmEgcXVlIHVuIGJpbmRpbmcgZXZhbHVhZG8gcG9yIENEIG5vIGdlbmVyZSB1blxuICAgIC8vIGNvbnNvbGUud2FybiBwb3IgY2FkYSBjaGFuZ2UtZGV0ZWN0aW9uIChxdWUgZGlzcGFyYXLDrWEgdW4gbG9vcCBjb24gZWxcbiAgICAvLyBkZWJ1Zy1jb25zb2xlKS4gTm8gZGV2b2x2ZW1vcyBgW25zLmtleV1gIOKAlCB1biBwbGFjZWhvbGRlciB2aXNpYmxlXG4gICAgLy8gZW5zdWNpYSBsYSBVSSB5LCBhbCBzZXIgdHJ1dGh5LCBhbnVsYSBsb3MgYHx8IGZhbGxiYWNrYCBkZWwgY29uc3VtZXIuXG4gICAgaWYgKCF0ZXh0KSB7XG4gICAgICBjb25zdCB3YXJuS2V5ID0gYCR7bnN9LiR7a2V5fS4ke2xhbmd9YDtcbiAgICAgIGlmICghdGhpcy5fd2FybmVkTWlzc2luZy5oYXMod2FybktleSkpIHtcbiAgICAgICAgdGhpcy5fd2FybmVkTWlzc2luZy5hZGQod2FybktleSk7XG4gICAgICAgIGNvbnNvbGUud2FybihgW2kxOG5dIE1pc3NpbmcgdHJhbnNsYXRpb246ICR7bnN9LiR7a2V5fSAoJHtsYW5nfSlgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiAnJztcbiAgICB9XG5cbiAgICAvLyBBcGxpY2FyIGludGVycG9sYWNpw7NuIHNpIGhheSBkYXRhXG4gICAgaWYgKGRhdGEpIHtcbiAgICAgIHJldHVybiB0aGlzLmludGVycG9sYXRlKHRleHQsIGRhdGEpO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXh0O1xuICB9XG5cbiAgLyoqXG4gICAqIENhbWJpYSBlbCBpZGlvbWEgZGUgbGEgYXBsaWNhY2nDs25cbiAgICpcbiAgICogQHBhcmFtIGxhbmcgTnVldm8gaWRpb21hXG4gICAqIEBwYXJhbSBmb3JjZVJlbG9hZCBTaSB0cnVlLCByZWNhcmdhIGxhIHDDoWdpbmEgKGZhbGxiYWNrIHNpIHJlYWN0aXZpZGFkIGZhbGxhKVxuICAgKi9cbiAgc2V0TGFuZ3VhZ2UobGFuZzogSTE4bkxhbmcsIGZvcmNlUmVsb2FkID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3N1cHBvcnRlZExhbmd1YWdlcygpLmluY2x1ZGVzKGxhbmcpKSB7XG4gICAgICBjb25zb2xlLndhcm4oYFtpMThuXSBMYW5ndWFnZSAnJHtsYW5nfScgbm90IGluIHN1cHBvcnRlZCBsYW5ndWFnZXNgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBBdW5xdWUgZWwgc2lnbmFsIHlhIHRlbmdhIGVzdGUgdmFsb3IsIHJlLXBlcnNpc3RpbW9zLiBFc3RvIGNvcnJpZ2VcbiAgICAvLyBlc3RhZG9zIHZpZWpvcyBkb25kZSBsYSBVSSBxdWVkw7MgZW4gZWwgaWRpb21hIGNvcnJlY3RvIHBvciBzbmFwc2hvdCwgcGVyb1xuICAgIC8vIGxvY2FsU3RvcmFnZSBjb25zZXJ2w7Mgb3RybyB2YWxvciB5IGVsIHNpZ3VpZW50ZSBib290c3RyYXAgdm9sdmnDsyBhbCB2aWVqby5cbiAgICBpZiAodGhpcy5pc0Jyb3dzZXIpIHtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKExBTkdfU1RPUkFHRV9LRVksIGxhbmcpO1xuICAgIH1cblxuICAgIGlmIChsYW5nID09PSB0aGlzLl9sYW5nKCkpIHtcbiAgICAgIGlmIChmb3JjZVJlbG9hZCAmJiB0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQWN0dWFsaXphciBzaWduYWxcbiAgICB0aGlzLl9sYW5nLnNldChsYW5nKTtcblxuICAgIC8vIEZhbGxiYWNrOiByZWNhcmdhciBzaSBzZSBzb2xpY2l0YVxuICAgIGlmIChmb3JjZVJlbG9hZCAmJiB0aGlzLmlzQnJvd3Nlcikge1xuICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RyYSBjb250ZW5pZG8gZGUgdHJhZHVjY2lvbmVzIHBhcmEgdW4gbmFtZXNwYWNlXG4gICAqXG4gICAqIEBwYXJhbSBuYW1lc3BhY2UgTm9tYnJlIGRlbCBuYW1lc3BhY2VcbiAgICogQHBhcmFtIGNvbnRlbnQgQ29udGVuaWRvIGRlIHRyYWR1Y2Npb25lc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpMThuLnJlZ2lzdGVyQ29udGVudCgnTG9naW4nLCB7XG4gICAqICAgZXM6IHsgdGl0bGU6ICdJbmljaWFyIHNlc2nDs24nIH0sXG4gICAqICAgZW46IHsgdGl0bGU6ICdTaWduIGluJyB9XG4gICAqIH0pO1xuICAgKi9cbiAgcmVnaXN0ZXJDb250ZW50KG5hbWVzcGFjZTogc3RyaW5nLCBjb250ZW50OiBMYW5ndWFnZXNDb250ZW50KTogdm9pZCB7XG4gICAgdGhpcy5fY29udGVudC51cGRhdGUoc3RvcmUgPT4gKHtcbiAgICAgIC4uLnN0b3JlLFxuICAgICAgW25hbWVzcGFjZV06IGNvbnRlbnQsXG4gICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIGRlZmF1bHRzIHBhcmEgdW4gbmFtZXNwYWNlLCBtZXpjbGFuZG8gc29sbyBsYXMga2V5cyBhdXNlbnRlcyBwb3IgaWRpb21hLlxuICAgKiBBIGRpZmVyZW5jaWEgZGUgYHJlZ2lzdGVyQ29udGVudGAsIG5vIHNvYnJlZXNjcmliZSBrZXlzIHF1ZSBlbCBjb25zdW1lciB5YSByZWdpc3Ryw7MuXG4gICAqIMOac2FsbyBlbiBjb21wb25lbnRlcyBkZSBsYSBsaWIgcGFyYSBxdWUgc3VzIGRlZmF1bHRzIGZ1bmNpb25lbiBpbmNsdXNvIGN1YW5kbyBlbFxuICAgKiBjb25zdW1lciByZWdpc3Ryw7MgZWwgbmFtZXNwYWNlIGRlIGZvcm1hIHBhcmNpYWwuXG4gICAqL1xuICByZWdpc3RlckRlZmF1bHRzKG5hbWVzcGFjZTogc3RyaW5nLCBkZWZhdWx0czogTGFuZ3VhZ2VzQ29udGVudCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbnRlbnQudXBkYXRlKHN0b3JlID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gc3RvcmVbbmFtZXNwYWNlXTtcbiAgICAgIGlmICghZXhpc3RpbmcpIHJldHVybiB7IC4uLnN0b3JlLCBbbmFtZXNwYWNlXTogZGVmYXVsdHMgfTtcbiAgICAgIGNvbnN0IG1lcmdlZDogTGFuZ3VhZ2VzQ29udGVudCA9IHsgLi4uZXhpc3RpbmcgfTtcbiAgICAgIGZvciAoY29uc3QgbGFuZyBvZiBPYmplY3Qua2V5cyhkZWZhdWx0cykgYXMgQXJyYXk8a2V5b2YgTGFuZ3VhZ2VzQ29udGVudD4pIHtcbiAgICAgICAgY29uc3QgZGVmTGFuZyA9IGRlZmF1bHRzW2xhbmddID8/IHt9O1xuICAgICAgICBjb25zdCBjdXJMYW5nID0gKGV4aXN0aW5nW2xhbmddID8/IHt9KSBhcyBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgICAgICBtZXJnZWRbbGFuZ10gPSB7IC4uLihkZWZMYW5nIGFzIFJlY29yZDxzdHJpbmcsIHN0cmluZz4pLCAuLi5jdXJMYW5nIH07XG4gICAgICB9XG4gICAgICByZXR1cm4geyAuLi5zdG9yZSwgW25hbWVzcGFjZV06IG1lcmdlZCB9O1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdHJhIG3Dumx0aXBsZXMgbmFtZXNwYWNlcyBkZSB1bmEgdmV6XG4gICAqXG4gICAqIEBwYXJhbSBjb250ZW50U3RvcmUgT2JqZXRvIGNvbiBuYW1lc3BhY2VzIGNvbW8ga2V5c1xuICAgKi9cbiAgcmVnaXN0ZXJDb250ZW50QnVsayhjb250ZW50U3RvcmU6IENvbnRlbnRTdG9yZSk6IHZvaWQge1xuICAgIHRoaXMuX2NvbnRlbnQudXBkYXRlKHN0b3JlID0+ICh7XG4gICAgICAuLi5zdG9yZSxcbiAgICAgIC4uLmNvbnRlbnRTdG9yZSxcbiAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJhIGxvcyBpZGlvbWFzIHNvcG9ydGFkb3NcbiAgICovXG4gIHNldEkxOG5MYW5ndWFnZXMobGFuZ3VhZ2VzOiBJMThuTGFuZ1tdKTogdm9pZCB7XG4gICAgdGhpcy5fc3VwcG9ydGVkTGFuZ3VhZ2VzLnNldChsYW5ndWFnZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgdG9kb3MgbG9zIG5hbWVzcGFjZXMgcmVnaXN0cmFkb3NcbiAgICovXG4gIGdldE5hbWVzcGFjZXMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9jb250ZW50KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIHVuIG5hbWVzcGFjZSB0aWVuZSB0cmFkdWNjaW9uZXNcbiAgICovXG4gIGhhc05hbWVzcGFjZShuYW1lc3BhY2U6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuYW1lc3BhY2UgaW4gdGhpcy5fY29udGVudCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENhcmdhIGVsIGlkaW9tYSBndWFyZGFkbyBlbiBsb2NhbFN0b3JhZ2UsIG8gYWRpdmluYSBkZXNkZSBlbCBuYXZlZ2Fkb3IuXG4gICAqXG4gICAqIExhIGRldGVjY2nDs24gZGUgYWPDoSBlcyBQUk9WSVNJT05BTCB5IE5PIHNlIHBlcnNpc3RlLCBhIHByb3DDs3NpdG8uIEVsXG4gICAqIGNvbnN0cnVjdG9yIGNvcnJlIGFudGVzIHF1ZSBlbCBBUFBfSU5JVElBTElaRVIgZGUgYHByb3ZpZGVWYWx0ZWNoSTE4bmAsXG4gICAqIHF1ZSBlcyBxdWllbiBjb25vY2UgbGEgY29uZmlnIHJlYWwgZGUgbGEgYXBwLiBDdWFuZG8gZXN0byBwZXJzaXN0w61hIGVsXG4gICAqIGlkaW9tYSBkZXRlY3RhZG8sIGVsIGluaXRpYWxpemVyIGxlw61hIGVzYSBtaXNtYSBjbGF2ZSB1biBpbnN0YW50ZSBkZXNwdcOpcyxcbiAgICogbGEgdG9tYWJhIHBvciBwcmVmZXJlbmNpYSBndWFyZGFkYSBkZWwgdXN1YXJpbyB5IGVudHJhYmEgcG9yIGxhIHJhbWFcbiAgICogYHN0b3JlZGAg4oCUIGFzw60gcXVlIGBkZXRlY3RCcm93c2VyTGFuZ3VhZ2U6IGZhbHNlYCBubyB0ZW7DrWEgZWZlY3RvIGVuXG4gICAqIG5pbmd1bmEgYXBwIGRlbCBmYWN0b3J5LiBFc2NyaWJpciBhY8OhIGZhYnJpY2FiYSB1bmEgcHJlZmVyZW5jaWEgcXVlIGVsXG4gICAqIHVzdWFyaW8gbnVuY2EgZXhwcmVzw7MuXG4gICAqXG4gICAqIFBlcnNpc3RpciBlcyByZXNwb25zYWJpbGlkYWQgZGUgYHNldExhbmd1YWdlKClgLCBxdWUgc2UgbGxhbWEgY3VhbmRvIGxhXG4gICAqIGVsZWNjacOzbiBzw60gZXMgZGVsIHVzdWFyaW8gKG8gY3VhbmRvIGVsIGluaXRpYWxpemVyIHlhIGRlY2lkacOzIGNvbiBsYVxuICAgKiBjb25maWcgYSBsYSB2aXN0YSkuXG4gICAqL1xuICBwcml2YXRlIGxvYWRTdG9yZWRMYW5ndWFnZSgpOiB2b2lkIHtcbiAgICAvLyBTU1I6IHNpbiBsb2NhbFN0b3JhZ2UvbmF2aWdhdG9yLiBNYW50ZW5lbW9zIGVsIGRlZmF1bHQ7IGVsIGJyb3dzZXJcbiAgICAvLyBoeWRyYXRhcsOhIGVsIGxhbmcgcmVhbCBjdWFuZG8gZWwgY2xpZW50ZSBhcnJhbnF1ZS5cbiAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RvcmVkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oTEFOR19TVE9SQUdFX0tFWSk7XG5cbiAgICBpZiAoc3RvcmVkICYmIHRoaXMuaXNWYWxpZExhbmd1YWdlKHN0b3JlZCkpIHtcbiAgICAgIHRoaXMuX2xhbmcuc2V0KHN0b3JlZCBhcyBJMThuTGFuZyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gQWRpdmluYW56YSBwcm92aXNpb25hbCBtaWVudHJhcyBlbCBpbml0aWFsaXplciBubyBoYXlhIGNvcnJpZG8uIFNpblxuICAgIC8vIHBlcnNpc3RpcjogdmVyIGVsIGNvbWVudGFyaW8gZGVsIG3DqXRvZG8uXG4gICAgY29uc3QgYnJvd3NlckxhbmcgPSBuYXZpZ2F0b3IubGFuZ3VhZ2Uuc3BsaXQoJy0nKVswXSBhcyBJMThuTGFuZztcbiAgICBpZiAodGhpcy5pc1ZhbGlkTGFuZ3VhZ2UoYnJvd3NlckxhbmcpKSB7XG4gICAgICB0aGlzLl9sYW5nLnNldChicm93c2VyTGFuZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYSBzaSB1biBpZGlvbWEgZXN0w6Egc29wb3J0YWRvXG4gICAqL1xuICBwcml2YXRlIGlzVmFsaWRMYW5ndWFnZShsYW5nOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc3VwcG9ydGVkTGFuZ3VhZ2VzKCkuaW5jbHVkZXMobGFuZyBhcyBJMThuTGFuZyk7XG4gIH1cblxuICAvKipcbiAgICogUmVlbXBsYXphIHt2YXJpYWJsZX0gZW4gdGV4dG8gY29uIHZhbG9yZXMgZGUgZGF0YVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBpbnRlcnBvbGF0ZSgnSG9sYSB7bmFtZX0nLCB7IG5hbWU6ICdKdWFuJyB9KSAgIC8vICdIb2xhIEp1YW4nXG4gICAqIGludGVycG9sYXRlKCdIb2xhIHt7bmFtZX19JywgeyBuYW1lOiAnSnVhbicgfSkgLy8gJ0hvbGEgSnVhbidcbiAgICpcbiAgICogU2UgYWNlcHRhbiBsYXMgRE9TIG5vdGFjaW9uZXMgYSBwcm9ww7NzaXRvLiBDb24gc29sbyBge2NsYXZlfWAsIHVuIHRleHRvXG4gICAqIGVzY3JpdG8gY29tbyBge3tjbGF2ZX19YCByZWVtcGxhemFiYSBlbCBpbnRlcmlvciB5IGRlamFiYSBsYXMgbGxhdmVzIGRlXG4gICAqIGFmdWVyYSBhIGxhIHZpc3RhIGRlbCB1c3VhcmlvIChcIkVzdGUgZXMgbWkgY2FydMOzbiBwYXJhIHtHYWxhIDIwMjZ9XCIpLCBzaW5cbiAgICogZmFsbGFyIGVuIG5pbmfDum4gbGFkby4gRWwgZXN0aWxvIGRlIGxsYXZlcyBkZSB1biB0ZXh0byBubyBkZWJlcsOtYSBzZXIgdW5hXG4gICAqIHRyYW1wYTogbGEgbGliIGFjZXB0YSBhbWJvcyB5IGVsIGNvbnN1bWlkb3IgZXNjcmliZSBjb21vIHByZWZpZXJhLlxuICAgKi9cbiAgcHJpdmF0ZSBpbnRlcnBvbGF0ZSh0ZXh0OiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pOiBzdHJpbmcge1xuICAgIHJldHVybiBPYmplY3QuZW50cmllcyhkYXRhKS5yZWR1Y2UoKHJlc3VsdCwgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICBjb25zdCBkb2JsZSA9IG5ldyBSZWdFeHAoYFxcXFx7XFxcXHtcXFxccyoke2tleX1cXFxccypcXFxcfVxcXFx9YCwgJ2cnKTtcbiAgICAgIGNvbnN0IHNpbXBsZSA9IG5ldyBSZWdFeHAoYFxcXFx7XFxcXHMqJHtrZXl9XFxcXHMqXFxcXH1gLCAnZycpO1xuICAgICAgcmV0dXJuIHJlc3VsdC5yZXBsYWNlKGRvYmxlLCB2YWx1ZSkucmVwbGFjZShzaW1wbGUsIHZhbHVlKTtcbiAgICB9LCB0ZXh0KTtcbiAgfVxufVxuIl19
|
|
@@ -210,9 +210,13 @@ export class PreferencesService {
|
|
|
210
210
|
.docChanges(`users/${userId}/preferences`, 'main')
|
|
211
211
|
.subscribe(doc => {
|
|
212
212
|
if (!doc) {
|
|
213
|
-
// Doc no existe aún
|
|
214
|
-
//
|
|
215
|
-
//
|
|
213
|
+
// Doc no existe aún para esta app. Antes dejábamos la app con
|
|
214
|
+
// localStorage/navigator, aunque el usuario ya tuviera idioma
|
|
215
|
+
// canónico en auth. Resultado: cuenta en español, app nueva en inglés
|
|
216
|
+
// hasta cambiar manualmente a inglés y volver a español. Hidratar
|
|
217
|
+
// desde perfil canónico corrige ese primer arranque y además crea el
|
|
218
|
+
// mirror de esta app.
|
|
219
|
+
this.hydrateMissingPreferencesFromProfile(userId);
|
|
216
220
|
return;
|
|
217
221
|
}
|
|
218
222
|
// Ignorar emisiones del listener mientras hay un update() en vuelo: un
|
|
@@ -237,8 +241,25 @@ export class PreferencesService {
|
|
|
237
241
|
this.subscription?.unsubscribe();
|
|
238
242
|
this.subscription = undefined;
|
|
239
243
|
this.currentUserId = undefined;
|
|
244
|
+
this.missingDocHydrationUserId = undefined;
|
|
240
245
|
this._synced.set(false);
|
|
241
246
|
}
|
|
247
|
+
hydrateMissingPreferencesFromProfile(userId) {
|
|
248
|
+
if (this.missingDocHydrationUserId === userId)
|
|
249
|
+
return;
|
|
250
|
+
this.missingDocHydrationUserId = userId;
|
|
251
|
+
void firstValueFrom(this.auth.getProfile())
|
|
252
|
+
.then(profile => {
|
|
253
|
+
const language = profile.language;
|
|
254
|
+
if (language === 'es' || language === 'en') {
|
|
255
|
+
this._language.set(language);
|
|
256
|
+
this.i18n?.setLanguage(language);
|
|
257
|
+
this._synced.set(true);
|
|
258
|
+
void this.update({ language }).catch(() => undefined);
|
|
259
|
+
}
|
|
260
|
+
})
|
|
261
|
+
.catch(() => undefined);
|
|
262
|
+
}
|
|
242
263
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PreferencesService, deps: [{ token: VALTECH_AUTH_CONFIG }, { token: i1.FirestoreService }, { token: i2.AuthService }, { token: i3.HttpClient }, { token: i4.FirebaseService, optional: true }, { token: i5.ThemeService, optional: true }, { token: i6.FontSizeService, optional: true }, { token: i7.I18nService, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
243
264
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PreferencesService, providedIn: 'root' }); }
|
|
244
265
|
}
|
|
@@ -257,4 +278,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
257
278
|
}] }, { type: i7.I18nService, decorators: [{
|
|
258
279
|
type: Optional
|
|
259
280
|
}] }] });
|
|
260
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvcHJlZmVyZW5jZXMvcHJlZmVyZW5jZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBZ0IsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFpQnJEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBNkI3QixZQUN1QyxNQUF5QixFQUN0RCxTQUEyQixFQUMzQixJQUFpQixFQUNqQixJQUFnQixFQUNKLFFBQWdDLEVBQ2hDLFlBQWlDLEVBQ2pDLGVBQXVDLEVBQ3ZDLElBQXdCO1FBUFAsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDdEQsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ0osYUFBUSxHQUFSLFFBQVEsQ0FBd0I7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxTQUFJLEdBQUosSUFBSSxDQUFvQjtRQXBDN0IsV0FBTSxHQUFHLE1BQU0sQ0FBbUIsTUFBTSxDQUFDLENBQUM7UUFDMUMsY0FBUyxHQUFHLE1BQU0sQ0FBc0IsSUFBSSxDQUFDLENBQUM7UUFDOUMsY0FBUyxHQUFHLE1BQU0sQ0FBc0IsUUFBUSxDQUFDLENBQUM7UUFDbkUsb0ZBQW9GO1FBQ3BGLGdFQUFnRTtRQUMvQyx5QkFBb0IsR0FBRyxNQUFN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LEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3ZFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENBQUM7UUFDOUIsSUFBSSxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUM7UUFDL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUIsQ0FBQzsrR0F6T1Usa0JBQWtCLGtCQThCbkIsbUJBQW1CO21IQTlCbEIsa0JBQWtCLGNBREwsTUFBTTs7NEZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7OzBCQStCN0IsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUkxQixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFROzswQkFDUixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGVzdHJveVJlZiwgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCwgZWZmZWN0LCBpbmplY3QsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgZmlyc3RWYWx1ZUZyb20gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBWQUxURUNIX0FVVEhfQ09ORklHIH0gZnJvbSAnLi4vYXV0aC9jb25maWcnO1xuaW1wb3J0IHsgVmFsdGVjaEF1dGhDb25maWcgfSBmcm9tICcuLi9hdXRoL3R5cGVzJztcbmltcG9ydCB7IEZpcmViYXNlU2VydmljZSB9IGZyb20gJy4uL2ZpcmViYXNlL2ZpcmViYXNlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRmlyZXN0b3JlU2VydmljZSB9IGZyb20gJy4uL2ZpcmViYXNlL2ZpcmVzdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5MYW5nIH0gZnJvbSAnLi4vaTE4bi90eXBlcyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uL2kxOG4vaTE4bi5zZXJ2aWNlJztcbmltcG9ydCB7IFRoZW1lT3B0aW9uLCBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi90aGVtZS5zZXJ2aWNlJztcbmltcG9ydCB7IEZvbnRTaXplT3B0aW9uLCBGb250U2l6ZVNlcnZpY2UgfSBmcm9tICcuLi9mb250LXNpemUvZm9udC1zaXplLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgUHJlZmVyZW5jZXNEb2N1bWVudCxcbiAgUHJlZmVyZW5jZXNGb250U2l6ZSxcbiAgUHJlZmVyZW5jZXNMYW5ndWFnZSxcbiAgUHJlZmVyZW5jZXNUaGVtZSxcbiAgUHJlZmVyZW5jZXNVcGRhdGUsXG4gIFByZWZlcmVuY2VzVXBkYXRlUmVzcG9uc2UsXG59IGZyb20gJy4vcHJlZmVyZW5jZXMudHlwZXMnO1xuXG4vKipcbiAqIFByZWZlcmVuY2VzU2VydmljZSDigJQgcHJlZmVyZW5jaWFzIGRlbCB1c2VyIGVuIGVsIGRvYyBjYW7Ds25pY28gRmlyZXN0b3JlXG4gKiBgL2FwcHMve2FwcElkfS91c2Vycy97dWlkfS9wcmVmZXJlbmNlcy9tYWluYC5cbiAqXG4gKiBSZWFkIHJlYWN0aXZvIChzaWduYWxzKSB2aWEgbGlzdGVuZXIgRmlyZXN0b3JlLlxuICogV3JpdGUgdmlhIGBQVVQgL3YyL2F1dGgvcHJlZmVyZW5jZXNgIChjbGllbnRlIE5VTkNBIGVzY3JpYmUgRmlyZXN0b3JlIGRpcmVjdG8g4oCUXG4gKiB2ZXIgbWVtb3JpYSBgZmVlZGJhY2tfbm9fZGlyZWN0X2ZpcmVzdG9yZV93cml0ZXNgKS5cbiAqXG4gKiBTaWRlLWVmZmVjdHMgYXV0b23DoXRpY29zOlxuICogLSBDdWFuZG8gYHRoZW1lKClgIGNhbWJpYSDihpIgYFRoZW1lU2VydmljZS5UaGVtZSA9IC4uLmBcbiAqIC0gQ3VhbmRvIGBsYW5ndWFnZSgpYCBjYW1iaWEg4oaSIGBJMThuU2VydmljZS5zZXRMYW5ndWFnZSguLi4pYFxuICpcbiAqIEF1dG8tYmluZCBhbCB1c2VyIGFjdHVhbCB2aWEgYEF1dGhTZXJ2aWNlLnVzZXIoKWAuIFNpbiB1c2VyIChsb2dvdXQpIOKGkiB1bmJpbmQuXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgUHJlZmVyZW5jZXNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfdGhlbWUgPSBzaWduYWw8UHJlZmVyZW5jZXNUaGVtZT4oJ2F1dG8nKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGFuZ3VhZ2UgPSBzaWduYWw8UHJlZmVyZW5jZXNMYW5ndWFnZT4oJ2VzJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZvbnRTaXplID0gc2lnbmFsPFByZWZlcmVuY2VzRm9udFNpemU+KCdtZWRpdW0nKTtcbiAgLy8gRGVmYXVsdCBgZmFsc2VgIChvcHQtaW4pLiBFbCB1c2VyIGRlYmUgYWN0aXZhciBleHBsw61jaXRhbWVudGUgbGFzIG5vdGlmaWNhY2lvbmVzO1xuICAvLyBubyBhc3VtaW1vcyBjb25zZW50aW1pZW50byBpbXBsw61jaXRvLiBCYWNrZW5kIGRlYmUgY29pbmNpZGlyLlxuICBwcml2YXRlIHJlYWRvbmx5IF9ub3RpZmljYXRpb25zTWFzdGVyID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcbiAgLyoqIGB0cnVlYCBkZXNwdcOpcyBkZWwgcHJpbWVyIHNuYXBzaG90IEZpcmVzdG9yZS4gQW50ZXMsIGRlZmF1bHRzIHNpbiBzaWRlLWVmZmVjdHMuICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX3N5bmNlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgcmVhZG9ubHkgdGhlbWUgPSB0aGlzLl90aGVtZS5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IGxhbmd1YWdlID0gdGhpcy5fbGFuZ3VhZ2UuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBmb250U2l6ZSA9IHRoaXMuX2ZvbnRTaXplLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgbm90aWZpY2F0aW9uc01hc3RlciA9IHRoaXMuX25vdGlmaWNhdGlvbnNNYXN0ZXIuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBzeW5jZWQgPSB0aGlzLl9zeW5jZWQuYXNSZWFkb25seSgpO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIGN1cnJlbnRVc2VySWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBgdHJ1ZWAgbWllbnRyYXMgdW4gYHVwZGF0ZSgpYCBlc3TDoSBlbiB2dWVsbyAoUFVUIGFsIGJhY2tlbmQpLlxuICAgKlxuICAgKiBFbCBsaXN0ZW5lciBGaXJlc3RvcmUgKGBiaW5kVG9Vc2VyYCkgZXMgcmVhbC10aW1lIHkgcHVlZGUgZW1pdGlyIHVuIHNuYXBzaG90XG4gICAqICpzdGFsZSog4oCUIGFudGVyaW9yIGFsIHN5bmMgZGVsIGJhY2tlbmQg4oCUIHF1ZSBwaXNhcsOtYSBlbCB2YWxvciBvcHRpbWlzdGEgZGVcbiAgICogYF9ub3RpZmljYXRpb25zTWFzdGVyYCB5IHJldmVydGlyw61hIGVsIHRvZ2dsZS4gTWllbnRyYXMgZXN0ZSBmbGFnIGVzdMOpIGB0cnVlYFxuICAgKiBlbCBsaXN0ZW5lciBpZ25vcmEgbGFzIGVtaXNpb25lczsgZWwgYHVwZGF0ZSgpYCB5YSBhbGluZWEgbGFzIHNlw7FhbGVzIGNvbiBsYVxuICAgKiByZXNwdWVzdGEgZGVsIGJhY2tlbmQgYWwgdGVybWluYXIuXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVJbkZsaWdodCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoVkFMVEVDSF9BVVRIX0NPTkZJRykgcHJpdmF0ZSBjb25maWc6IFZhbHRlY2hBdXRoQ29uZmlnLFxuICAgIHByaXZhdGUgZmlyZXN0b3JlOiBGaXJlc3RvcmVTZXJ2aWNlLFxuICAgIHByaXZhdGUgYXV0aDogQXV0aFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZmlyZWJhc2U6IEZpcmViYXNlU2VydmljZSB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZSB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb250U2l6ZVNlcnZpY2U6IEZvbnRTaXplU2VydmljZSB8IG51bGwsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBpMThuOiBJMThuU2VydmljZSB8IG51bGxcbiAgKSB7XG4gICAgY29uc3QgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcbiAgICBkZXN0cm95UmVmLm9uRGVzdHJveSgoKSA9PiB0aGlzLnVuYmluZCgpKTtcblxuICAgIC8vIFNlZWQgYF9mb250U2l6ZWAgY29uIGVsIHZhbG9yIHF1ZSBGb250U2l6ZVNlcnZpY2UgeWEgcmVzdGF1csOzIGRlc2RlXG4gICAgLy8gbG9jYWxTdG9yYWdlIGVuIHN1IGNvbnN0cnVjdG9yIChwcm92aWRlZEluIHJvb3Qg4oaSIHlhIGNvcnJpw7MgYWwgaW55ZWN0YXJsb1xuICAgIC8vIGFjw6EpLiBTaW4gZXN0bywgZWwgc2lnbmFsIGFycmFuY2EgZW4gJ21lZGl1bScgeSBlbCBlZmZlY3QgZGUgYWJham8g4oCUcXVlXG4gICAgLy8gZGlzcGFyYSBhbCBtYXJjYXJzZSBgc3luY2VkYOKAlCBmb3J6YXLDrWEgJ21lZGl1bScgcGlzYW5kbyBlbCB0YW1hw7FvXG4gICAgLy8gcmVzdGF1cmFkbyBjdWFuZG8gZWwgc25hcHNob3QgRmlyZXN0b3JlIE5PIHRyYWUgYGZvbnRTaXplYCAodXNlciBzaW4gZXNlXG4gICAgLy8gY2FtcG8gZW4gZWwgbWlycm9yKS4gQnVnOiBjYW1iaWFzIGVsIHRhbWHDsW8sIHJlZnJlc2NhcyB5IHNlIHBpZXJkZS5cbiAgICBpZiAodGhpcy5mb250U2l6ZVNlcnZpY2UpIHtcbiAgICAgIHRoaXMuX2ZvbnRTaXplLnNldCh0aGlzLmZvbnRTaXplU2VydmljZS5zaXplKCkgYXMgUHJlZmVyZW5jZXNGb250U2l6ZSk7XG4gICAgfVxuXG4gICAgLy8gTWlzbW8gc2VlZCBwYXJhIHRoZW1lIOKAlCBUaGVtZVNlcnZpY2UgYXBsaWNhIHN1IHZhbG9yIGRlIGxvY2FsU3RvcmFnZSBlblxuICAgIC8vIGJvb3RzdHJhcCAoYGN1cnJlbnRPcHRpb25gKS4gTmVjZXNhcmlvIHBhcmEgZGVzZ2F0ZWFyIGVsIGVmZmVjdCBkZSB0aGVtZVxuICAgIC8vIChhYmFqbykgc2luIHF1ZSBlbCBkZWZhdWx0ICdhdXRvJyBwaXNlIGVsIHRlbWEgcmVzdGF1cmFkby5cbiAgICBpZiAodGhpcy50aGVtZVNlcnZpY2UpIHtcbiAgICAgIHRoaXMuX3RoZW1lLnNldCh0aGlzLnRoZW1lU2VydmljZS5jdXJyZW50T3B0aW9uIGFzIFByZWZlcmVuY2VzVGhlbWUpO1xuICAgIH1cblxuICAgIC8vIEF1dG8tYmluZCBhbCB1c2VyIGFjdHVhbC4gZWZmZWN0KCkgY29ycmUgZW4gaW5qZWN0aW9uIGNvbnRleHQgKGNvbnN0cnVjdG9yIE9LKS5cbiAgICAvLyBhbGxvd1NpZ25hbFdyaXRlczogYmluZFRvVXNlci91bmJpbmQgZXNjcmliZW4gYF9zeW5jZWRgIChzZcOxYWwgaW50ZXJuYSBzaW5cbiAgICAvLyBkZXBlbmRlbmNpYXMgZGVsIHByb3BpbyBlZmZlY3QpIOKGkiBzZWd1cm8geSBuZWNlc2FyaW8uXG4gICAgLy8gRWwgZ2F0ZSBkZSBgZmlyZWJhc2VBdXRoUmVhZHlgIG5vIGVzIG9wY2lvbmFsOiBlbCBKV1QgZGVsIGJhY2tlbmQgcXVlZGFcbiAgICAvLyBsaXN0byBjaWVudG9zIGRlIG1zIGFudGVzIHF1ZSBsYSBzZXNpw7NuIGRlIEZpcmViYXNlIEF1dGgsIHkgZW5nYW5jaGFyIGVsXG4gICAgLy8gbGlzdGVuZXIgZW4gZXNhIHZlbnRhbmEgZGEgYHBlcm1pc3Npb24tZGVuaWVkYCAodmVyIEZpcmViYXNlU2VydmljZSkuXG4gICAgLy8gQ29tbyBlbCBlZmZlY3QgbGVlIGxhIHNlw7FhbCwgc2UgcmUtZWplY3V0YSBzb2xvIGN1YW5kbyBGaXJlYmFzZSBjb25maXJtYVxuICAgIC8vIGxhIHNlc2nDs24geSBhaMOtIHJlY2nDqW4gbGlnYSBhbCB1c2VyLlxuICAgIGVmZmVjdChcbiAgICAgICgpID0+IHtcbiAgICAgICAgY29uc3QgdXNlciA9IHRoaXMuYXV0aC51c2VyKCk7XG4gICAgICAgIGNvbnN0IGZpcmViYXNlUmVhZHkgPSB0aGlzLmZpcmViYXNlPy5maXJlYmFzZUF1dGhSZWFkeSgpID8/IHRydWU7XG4gICAgICAgIGlmICh1c2VyPy51c2VySWQgJiYgZmlyZWJhc2VSZWFkeSkge1xuICAgICAgICAgIHRoaXMuYmluZFRvVXNlcih1c2VyLnVzZXJJZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51bmJpbmQoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG5cbiAgICAvLyBTaWRlLWVmZmVjdDogYXBsaWNhciB0aGVtZS4gU0lOIGdhdGUgYF9zeW5jZWRgIChsb2NhbC1maXJzdCwgaWd1YWwgcXVlXG4gICAgLy8gZm9udFNpemUpOiBUaGVtZVNlcnZpY2UvbG9jYWxTdG9yYWdlIGVzIGxhIHZlcmRhZCBkZWwgZGlzcG9zaXRpdm8geVxuICAgIC8vIGBfdGhlbWVgIHZpZW5lIHNlZWRlYWRvIGFycmliYS4gQXBsaWNhciBzaWVtcHJlIHF1ZSBjYW1iaWUgZGEgYXBwbHlcbiAgICAvLyBvcHRpbWlzdGEgYWwgaW5zdGFudGU7IGVsIHN5bmMgY3Jvc3MtZGV2aWNlIHRhbWJpw6luIGFwbGljYSB2w61hIHNuYXBzaG90LlxuICAgIC8vIEdhdGVhcmxvIGVuIGBfc3luY2VkYCBoYWPDrWEgcXVlIGVsIHByaW1lciBjYW1iaW8gZGUgdW4gdXNlciBudWV2byAoc2luIGRvY1xuICAgIC8vIEZpcmVzdG9yZSBhw7puKSBubyBzZSBhcGxpY2FyYTogZWwgc2VsZWN0b3IgbW9zdHJhYmEgXCJEYXJrXCIgcGVybyBlbCB0ZW1hIG5vXG4gICAgLy8gY2FtYmlhYmEuIChFbCBzZWxlY3RvciBkZSBpZGlvbWEgbm8gc3VmcmUgZXN0byBwb3JxdWUgdmFsLWxhbmd1YWdlLXNlbGVjdG9yXG4gICAgLy8gbGxhbWEgaTE4bi5zZXRMYW5ndWFnZSBkaXJlY3RvOyBlbCBkZSB0aGVtZSBkZXBlbmRlIHNvbG8gZGUgZXN0ZSBlZmZlY3QuKVxuICAgIC8vIE9KTzogdXNhciBgdG9nZ2xlVXNlclByZWZlcmVuY2UoKWAgeSBOTyBlbCBzZXR0ZXIgYFRoZW1lID1gLiBFbCBzZXR0ZXIgc29sb1xuICAgIC8vIHBlcnNpc3RlIGxvY2FsU3RvcmFnZSArIGVtaXRlIGVsIEJlaGF2aW9yU3ViamVjdDsgbm8gYXBsaWNhIGxhcyBjbGFzZXNcbiAgICAvLyBgYm9keS5kYXJrYC9gaHRtbC5pb24tcGFsZXR0ZS1kYXJrYCBxdWUgZWwgcGFsZXR0ZSBkZSBJb25pYyBuZWNlc2l0YS5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgdCA9IHRoaXMuX3RoZW1lKCk7XG4gICAgICBpZiAodGhpcy50aGVtZVNlcnZpY2UpIHtcbiAgICAgICAgdGhpcy50aGVtZVNlcnZpY2UudG9nZ2xlVXNlclByZWZlcmVuY2UodCBhcyBUaGVtZU9wdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBTaWRlLWVmZmVjdDogYXBsaWNhciBsYW5ndWFnZSBsb2NhbCBjdWFuZG8gbGxlZ2Egc25hcHNob3QgcmVhbC5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5fc3luY2VkKCkpIHJldHVybjtcbiAgICAgICAgY29uc3QgbCA9IHRoaXMuX2xhbmd1YWdlKCk7XG4gICAgICAgIGlmICh0aGlzLmkxOG4gJiYgdGhpcy5pMThuLmxhbmcoKSAhPT0gbCkge1xuICAgICAgICAgIHRoaXMuaTE4bi5zZXRMYW5ndWFnZShsIGFzIEkxOG5MYW5nKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgYWxsb3dTaWduYWxXcml0ZXM6IHRydWUgfVxuICAgICk7XG5cbiAgICAvLyBTaWRlLWVmZmVjdDogYXBsaWNhciBmb250U2l6ZS5cbiAgICAvLyBTSU4gZ2F0ZSBgX3N5bmNlZGAgKGlndWFsIHF1ZSB0aGVtZSk6IGVsIHRhbWHDsW8gZXMgdW5hXG4gICAgLy8gcHJlZmVyZW5jaWEgbG9jYWwtZmlyc3Qg4oCUIEZvbnRTaXplU2VydmljZS9sb2NhbFN0b3JhZ2UgZXMgbGEgdmVyZGFkIGRlbFxuICAgIC8vIGRpc3Bvc2l0aXZvIHkgYF9mb250U2l6ZWAgeWEgdmllbmUgc2VlZGVhZG8gZGUgYWjDrSBhcnJpYmEuIEFwbGljYXIgc2llbXByZVxuICAgIC8vIHF1ZSBjYW1iaWUgcGVybWl0ZSBxdWUgZWwgY2FtYmlvIGRlbCB1c3VhcmlvIHN1cnRhIGVmZWN0byBhbCBpbnN0YW50ZVxuICAgIC8vIChvcHRpbWlzdGEsIHNpbiBlc3BlcmFyIGVsIHJvdW5kLXRyaXAgYSBGaXJlc3RvcmUpIHkgcXVlIGVsIHN5bmNcbiAgICAvLyBjcm9zcy1kZXZpY2UgdGFtYmnDqW4gYXBsaXF1ZSBhbCBsbGVnYXIgZWwgc25hcHNob3QuIEdhdGVhcmxvIGVuIGBfc3luY2VkYFxuICAgIC8vIGhhY8OtYSBxdWUgZWwgcHJpbWVyIGNhbWJpbyBkZSB1biB1c2VyIG51ZXZvIChzaW4gZG9jIEZpcmVzdG9yZSBhw7puKSBubyBzZVxuICAgIC8vIGFwbGljYXJhOiBlbCBzZWxlY3RvciBtb3N0cmFiYSBcIkdyYW5kZVwiIHBlcm8gZWwgZm9udC1zaXplIG5vIGNhbWJpYWJhLlxuICAgIC8vIGFsbG93U2lnbmFsV3JpdGVzOiBmb250U2l6ZVNlcnZpY2Uuc2V0U2l6ZSgpIGVzY3JpYmUgdGhpcy5fc2l6ZSAoc2lnbmFsKS5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGZzID0gdGhpcy5fZm9udFNpemUoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9udFNpemVTZXJ2aWNlKSB7XG4gICAgICAgICAgdGhpcy5mb250U2l6ZVNlcnZpY2Uuc2V0U2l6ZShmcyBhcyBGb250U2l6ZU9wdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuICB9XG5cbiAgLyoqIEFjdHVhbGl6YSBwcmVmZXJlbmNpYXMgdmlhIGJhY2tlbmQuIE9wdGltaXN0aWMgVUk6IGFwbGljYSBsb2NhbCwgcmV2aWVydGUgc2kgZmFsbGEuICovXG4gIGFzeW5jIHVwZGF0ZShwYXJ0aWFsOiBQcmVmZXJlbmNlc1VwZGF0ZSk6IFByb21pc2U8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuY29uZmlnLmFwaVVybH0vdjIvYXV0aC9wcmVmZXJlbmNlc2A7XG5cbiAgICBjb25zdCBwcmV2ID0ge1xuICAgICAgdGhlbWU6IHRoaXMuX3RoZW1lKCksXG4gICAgICBsYW5ndWFnZTogdGhpcy5fbGFuZ3VhZ2UoKSxcbiAgICAgIGZvbnRTaXplOiB0aGlzLl9mb250U2l6ZSgpLFxuICAgICAgbWFzdGVyOiB0aGlzLl9ub3RpZmljYXRpb25zTWFzdGVyKCksXG4gICAgfTtcblxuICAgIGlmIChwYXJ0aWFsLnRoZW1lKSB0aGlzLl90aGVtZS5zZXQocGFydGlhbC50aGVtZSk7XG4gICAgaWYgKHBhcnRpYWwubGFuZ3VhZ2UpIHRoaXMuX2xhbmd1YWdlLnNldChwYXJ0aWFsLmxhbmd1YWdlKTtcbiAgICBpZiAocGFydGlhbC5mb250U2l6ZSkgdGhpcy5fZm9udFNpemUuc2V0KHBhcnRpYWwuZm9udFNpemUpO1xuICAgIGlmIChwYXJ0aWFsLm5vdGlmaWNhdGlvbnMgJiYgdHlwZW9mIHBhcnRpYWwubm90aWZpY2F0aW9ucy5tYXN0ZXIgPT09ICdib29sZWFuJykge1xuICAgICAgdGhpcy5fbm90aWZpY2F0aW9uc01hc3Rlci5zZXQocGFydGlhbC5ub3RpZmljYXRpb25zLm1hc3Rlcik7XG4gICAgfVxuXG4gICAgLy8gQmxvcXVlYXIgZWwgbGlzdGVuZXIgRmlyZXN0b3JlIG1pZW50cmFzIGVsIFBVVCBlc3TDoSBlbiB2dWVsbzogdW4gc25hcHNob3RcbiAgICAvLyBzdGFsZSBubyBkZWJlIHBpc2FyIGVsIHZhbG9yIG9wdGltaXN0YSByZWNpw6luIGFwbGljYWRvLlxuICAgIHRoaXMuX3VwZGF0ZUluRmxpZ2h0ID0gdHJ1ZTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBFbnZpYXIgYXBwSWQgZXhwbMOtY2l0byDigJQgZWwgYmFja2VuZCBsbyB1c2EgcGFyYSBlc2NyaWJpciBlbCBtaXJyb3JcbiAgICAgIC8vIEZpcmVzdG9yZSBlbiBhcHBzL3thcHBJZH0vLi4uIGNvcnJlY3RvLCBzaW4gZGVwZW5kZXIgZGVsIGhlYWRlciBPcmlnaW5cbiAgICAgIC8vIChxdWUgZW4gUFdBIGlPUyBwdWVkZSBubyByZXNvbHZlciBhbCBBcHBJRCBlc3BlcmFkbykuXG4gICAgICBjb25zdCBib2R5ID0geyAuLi5wYXJ0aWFsLCBhcHBJZDogdGhpcy5jb25maWcuYXBwSWQgfTtcbiAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuaHR0cC5wdXQ8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4odXJsLCBib2R5KSk7XG4gICAgICAvLyBFbCBsaXN0ZW5lciBGaXJlc3RvcmUgZXMgbGEgZnVlbnRlIGZpbmFsLCBwZXJvIGFsaW5lYXIgeWEgY29uIGxhXG4gICAgICAvLyByZXNwdWVzdGEgZGVsIGJhY2tlbmQgYWNlbGVyYSBVWCAoZXNwZWNpYWxtZW50ZSBzaSBlbCBsaXN0ZW5lclxuICAgICAgLy8gdGFyZGEgZW4gcHJvcGFnYXIpLlxuICAgICAgaWYgKHJlcy50aGVtZSkgdGhpcy5fdGhlbWUuc2V0KHJlcy50aGVtZSBhcyBQcmVmZXJlbmNlc1RoZW1lKTtcbiAgICAgIGlmIChyZXMubGFuZ3VhZ2UpIHRoaXMuX2xhbmd1YWdlLnNldChyZXMubGFuZ3VhZ2UgYXMgUHJlZmVyZW5jZXNMYW5ndWFnZSk7XG4gICAgICBpZiAocmVzLmZvbnRTaXplKSB0aGlzLl9mb250U2l6ZS5zZXQocmVzLmZvbnRTaXplIGFzIFByZWZlcmVuY2VzRm9udFNpemUpO1xuICAgICAgaWYgKHR5cGVvZiByZXMubm90aWZpY2F0aW9ucz8ubWFzdGVyID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgdGhpcy5fbm90aWZpY2F0aW9uc01hc3Rlci5zZXQocmVzLm5vdGlmaWNhdGlvbnMubWFzdGVyKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXM7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBSZXZlcnQgb3B0aW1pc3RpYy5cbiAgICAgIHRoaXMuX3RoZW1lLnNldChwcmV2LnRoZW1lKTtcbiAgICAgIHRoaXMuX2xhbmd1YWdlLnNldChwcmV2Lmxhbmd1YWdlKTtcbiAgICAgIHRoaXMuX2ZvbnRTaXplLnNldChwcmV2LmZvbnRTaXplKTtcbiAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnNNYXN0ZXIuc2V0KHByZXYubWFzdGVyKTtcbiAgICAgIHRocm93IGVycjtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5fdXBkYXRlSW5GbGlnaHQgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBzZXRUaGVtZSh0aGVtZTogUHJlZmVyZW5jZXNUaGVtZSk6IFByb21pc2U8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZSh7IHRoZW1lIH0pO1xuICB9XG5cbiAgc2V0TGFuZ3VhZ2UobGFuZ3VhZ2U6IFByZWZlcmVuY2VzTGFuZ3VhZ2UpOiBQcm9taXNlPFByZWZlcmVuY2VzVXBkYXRlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoeyBsYW5ndWFnZSB9KTtcbiAgfVxuXG4gIHNldEZvbnRTaXplKGZvbnRTaXplOiBQcmVmZXJlbmNlc0ZvbnRTaXplKTogUHJvbWlzZTxQcmVmZXJlbmNlc1VwZGF0ZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlKHsgZm9udFNpemUgfSk7XG4gIH1cblxuICBzZXROb3RpZmljYXRpb25zTWFzdGVyKGVuYWJsZWQ6IGJvb2xlYW4pOiBQcm9taXNlPFByZWZlcmVuY2VzVXBkYXRlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoeyBub3RpZmljYXRpb25zOiB7IG1hc3RlcjogZW5hYmxlZCB9IH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBiaW5kVG9Vc2VyKHVzZXJJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY3VycmVudFVzZXJJZCA9PT0gdXNlcklkICYmIHRoaXMuc3Vic2NyaXB0aW9uKSByZXR1cm47XG4gICAgdGhpcy51bmJpbmQoKTtcbiAgICB0aGlzLmN1cnJlbnRVc2VySWQgPSB1c2VySWQ7XG4gICAgLy8gRmlyZXN0b3JlU2VydmljZS5kb2NDaGFuZ2VzIHByZWZpamEgYXV0b23DoXRpY2FtZW50ZSBgYXBwcy97YXBwSWR9L2BcbiAgICAvLyBjdWFuZG8gYGNvbmZpZy5hcHBJZGAgZXN0w6Egc2V0ZWFkbyBlbiBWYWx0ZWNoQXV0aENvbmZpZy5cbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMuZmlyZXN0b3JlXG4gICAgICAuZG9jQ2hhbmdlczxQcmVmZXJlbmNlc0RvY3VtZW50ICYgeyBpZD86IHN0cmluZyB9PihgdXNlcnMvJHt1c2VySWR9L3ByZWZlcmVuY2VzYCwgJ21haW4nKVxuICAgICAgLnN1YnNjcmliZShkb2MgPT4ge1xuICAgICAgICBpZiAoIWRvYykge1xuICAgICAgICAgIC8vIERvYyBubyBleGlzdGUgYcO6biAodXNlciBudWV2bywgc2luIHByaW1lciBzeW5jKS4gTWFudGVuZW1vc1xuICAgICAgICAgIC8vIGRlZmF1bHRzIGxvY2FsZXMgcGVybyBOTyBtYXJjYW1vcyBzeW5jZWQg4oCUIGxvcyBzaWRlLWVmZmVjdHMgbm9cbiAgICAgICAgICAvLyBwaXNhbiBlbCB0aGVtZS9sYW5nIGxvY2FsZXMgY29uIHZhbG9yZXMgYXJiaXRyYXJpb3MuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElnbm9yYXIgZW1pc2lvbmVzIGRlbCBsaXN0ZW5lciBtaWVudHJhcyBoYXkgdW4gdXBkYXRlKCkgZW4gdnVlbG86IHVuXG4gICAgICAgIC8vIHNuYXBzaG90IHN0YWxlIChhbnRlcmlvciBhbCBzeW5jIGRlbCBiYWNrZW5kKSByZXZlcnRpcsOtYSBlbCB2YWxvclxuICAgICAgICAvLyBvcHRpbWlzdGEuIEVsIHVwZGF0ZSgpIHlhIGFsaW5lYSBsYXMgc2XDsWFsZXMgY29uIGxhIHJlc3B1ZXN0YSByZWFsLlxuICAgICAgICBpZiAodGhpcy5fdXBkYXRlSW5GbGlnaHQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGRvYy50aGVtZSkgdGhpcy5fdGhlbWUuc2V0KGRvYy50aGVtZSk7XG4gICAgICAgIGlmIChkb2MubGFuZ3VhZ2UpIHRoaXMuX2xhbmd1YWdlLnNldChkb2MubGFuZ3VhZ2UpO1xuICAgICAgICBpZiAoZG9jLmZvbnRTaXplKSB0aGlzLl9mb250U2l6ZS5zZXQoZG9jLmZvbnRTaXplKTtcbiAgICAgICAgaWYgKGRvYy5ub3RpZmljYXRpb25zICYmIHR5cGVvZiBkb2Mubm90aWZpY2F0aW9ucy5tYXN0ZXIgPT09ICdib29sZWFuJykge1xuICAgICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnNNYXN0ZXIuc2V0KGRvYy5ub3RpZmljYXRpb25zLm1hc3Rlcik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc3luY2VkLnNldCh0cnVlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1bmJpbmQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50VXNlcklkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuX3N5bmNlZC5zZXQoZmFsc2UpO1xuICB9XG59XG4iXX0=
|
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvc2VydmljZXMvcHJlZmVyZW5jZXMvcHJlZmVyZW5jZXMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBZ0IsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBR3BELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFpQnJEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSCxNQUFNLE9BQU8sa0JBQWtCO0lBOEI3QixZQUN1QyxNQUF5QixFQUN0RCxTQUEyQixFQUMzQixJQUFpQixFQUNqQixJQUFnQixFQUNKLFFBQWdDLEVBQ2hDLFlBQWlDLEVBQ2pDLGVBQXVDLEVBQ3ZDLElBQXdCO1FBUFAsV0FBTSxHQUFOLE1BQU0sQ0FBbUI7UUFDdEQsY0FBUyxHQUFULFNBQVMsQ0FBa0I7UUFDM0IsU0FBSSxHQUFKLElBQUksQ0FBYTtRQUNqQixTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ0osYUFBUSxHQUFSLFFBQVEsQ0FBd0I7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBQ2pDLG9CQUFlLEdBQWYsZUFBZSxDQUF3QjtRQUN2QyxTQUFJLEdBQUosSUFBSSxDQUFvQjtRQXJDN0IsV0FBTSxHQUFHLE1BQU0sQ0FBbUIsTUFBTSxDQUFDLENBQUM7UUFDMUMsY0FBUyxHQUFHLE1BQU0sQ0FBc0IsSUFBSSxDQUFDLENBQUM7UUFDOUMsY0FBUyxHQUFHLE1BQU0sQ0FBc0IsUUFBUSxDQUFDLENBQUM7UUFDbkUsb0ZBQW9GO1FBQ3BGLGdFQUFnRTtRQUMvQyx5QkFBb0IsR0FBRyxNQUFN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QUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkIsS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEQsQ0FBQztRQUNILENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUM1QixDQUFDOytHQWhRVSxrQkFBa0Isa0JBK0JuQixtQkFBbUI7bUhBL0JsQixrQkFBa0IsY0FETCxNQUFNOzs0RkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTs7MEJBZ0M3QixNQUFNOzJCQUFDLG1CQUFtQjs7MEJBSTFCLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEZXN0cm95UmVmLCBJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsLCBlZmZlY3QsIGluamVjdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uLCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IFZBTFRFQ0hfQVVUSF9DT05GSUcgfSBmcm9tICcuLi9hdXRoL2NvbmZpZyc7XG5pbXBvcnQgeyBWYWx0ZWNoQXV0aENvbmZpZyB9IGZyb20gJy4uL2F1dGgvdHlwZXMnO1xuaW1wb3J0IHsgRmlyZWJhc2VTZXJ2aWNlIH0gZnJvbSAnLi4vZmlyZWJhc2UvZmlyZWJhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBGaXJlc3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vZmlyZWJhc2UvZmlyZXN0b3JlLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4bkxhbmcgfSBmcm9tICcuLi9pMThuL3R5cGVzJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vaTE4bi9pMThuLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGhlbWVPcHRpb24sIFRoZW1lU2VydmljZSB9IGZyb20gJy4uL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9udFNpemVPcHRpb24sIEZvbnRTaXplU2VydmljZSB9IGZyb20gJy4uL2ZvbnQtc2l6ZS9mb250LXNpemUuc2VydmljZSc7XG5pbXBvcnQge1xuICBQcmVmZXJlbmNlc0RvY3VtZW50LFxuICBQcmVmZXJlbmNlc0ZvbnRTaXplLFxuICBQcmVmZXJlbmNlc0xhbmd1YWdlLFxuICBQcmVmZXJlbmNlc1RoZW1lLFxuICBQcmVmZXJlbmNlc1VwZGF0ZSxcbiAgUHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZSxcbn0gZnJvbSAnLi9wcmVmZXJlbmNlcy50eXBlcyc7XG5cbi8qKlxuICogUHJlZmVyZW5jZXNTZXJ2aWNlIOKAlCBwcmVmZXJlbmNpYXMgZGVsIHVzZXIgZW4gZWwgZG9jIGNhbsOzbmljbyBGaXJlc3RvcmVcbiAqIGAvYXBwcy97YXBwSWR9L3VzZXJzL3t1aWR9L3ByZWZlcmVuY2VzL21haW5gLlxuICpcbiAqIFJlYWQgcmVhY3Rpdm8gKHNpZ25hbHMpIHZpYSBsaXN0ZW5lciBGaXJlc3RvcmUuXG4gKiBXcml0ZSB2aWEgYFBVVCAvdjIvYXV0aC9wcmVmZXJlbmNlc2AgKGNsaWVudGUgTlVOQ0EgZXNjcmliZSBGaXJlc3RvcmUgZGlyZWN0byDigJRcbiAqIHZlciBtZW1vcmlhIGBmZWVkYmFja19ub19kaXJlY3RfZmlyZXN0b3JlX3dyaXRlc2ApLlxuICpcbiAqIFNpZGUtZWZmZWN0cyBhdXRvbcOhdGljb3M6XG4gKiAtIEN1YW5kbyBgdGhlbWUoKWAgY2FtYmlhIOKGkiBgVGhlbWVTZXJ2aWNlLlRoZW1lID0gLi4uYFxuICogLSBDdWFuZG8gYGxhbmd1YWdlKClgIGNhbWJpYSDihpIgYEkxOG5TZXJ2aWNlLnNldExhbmd1YWdlKC4uLilgXG4gKlxuICogQXV0by1iaW5kIGFsIHVzZXIgYWN0dWFsIHZpYSBgQXV0aFNlcnZpY2UudXNlcigpYC4gU2luIHVzZXIgKGxvZ291dCkg4oaSIHVuYmluZC5cbiAqL1xuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQcmVmZXJlbmNlc1NlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IF90aGVtZSA9IHNpZ25hbDxQcmVmZXJlbmNlc1RoZW1lPignYXV0bycpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sYW5ndWFnZSA9IHNpZ25hbDxQcmVmZXJlbmNlc0xhbmd1YWdlPignZXMnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfZm9udFNpemUgPSBzaWduYWw8UHJlZmVyZW5jZXNGb250U2l6ZT4oJ21lZGl1bScpO1xuICAvLyBEZWZhdWx0IGBmYWxzZWAgKG9wdC1pbikuIEVsIHVzZXIgZGViZSBhY3RpdmFyIGV4cGzDrWNpdGFtZW50ZSBsYXMgbm90aWZpY2FjaW9uZXM7XG4gIC8vIG5vIGFzdW1pbW9zIGNvbnNlbnRpbWllbnRvIGltcGzDrWNpdG8uIEJhY2tlbmQgZGViZSBjb2luY2lkaXIuXG4gIHByaXZhdGUgcmVhZG9ubHkgX25vdGlmaWNhdGlvbnNNYXN0ZXIgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogYHRydWVgIGRlc3B1w6lzIGRlbCBwcmltZXIgc25hcHNob3QgRmlyZXN0b3JlLiBBbnRlcywgZGVmYXVsdHMgc2luIHNpZGUtZWZmZWN0cy4gKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfc3luY2VkID0gc2lnbmFsPGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSB0aGVtZSA9IHRoaXMuX3RoZW1lLmFzUmVhZG9ubHkoKTtcbiAgcmVhZG9ubHkgbGFuZ3VhZ2UgPSB0aGlzLl9sYW5ndWFnZS5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IGZvbnRTaXplID0gdGhpcy5fZm9udFNpemUuYXNSZWFkb25seSgpO1xuICByZWFkb25seSBub3RpZmljYXRpb25zTWFzdGVyID0gdGhpcy5fbm90aWZpY2F0aW9uc01hc3Rlci5hc1JlYWRvbmx5KCk7XG4gIHJlYWRvbmx5IHN5bmNlZCA9IHRoaXMuX3N5bmNlZC5hc1JlYWRvbmx5KCk7XG5cbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XG4gIHByaXZhdGUgY3VycmVudFVzZXJJZD86IHN0cmluZztcbiAgcHJpdmF0ZSBtaXNzaW5nRG9jSHlkcmF0aW9uVXNlcklkPzogc3RyaW5nO1xuICAvKipcbiAgICogYHRydWVgIG1pZW50cmFzIHVuIGB1cGRhdGUoKWAgZXN0w6EgZW4gdnVlbG8gKFBVVCBhbCBiYWNrZW5kKS5cbiAgICpcbiAgICogRWwgbGlzdGVuZXIgRmlyZXN0b3JlIChgYmluZFRvVXNlcmApIGVzIHJlYWwtdGltZSB5IHB1ZWRlIGVtaXRpciB1biBzbmFwc2hvdFxuICAgKiAqc3RhbGUqIOKAlCBhbnRlcmlvciBhbCBzeW5jIGRlbCBiYWNrZW5kIOKAlCBxdWUgcGlzYXLDrWEgZWwgdmFsb3Igb3B0aW1pc3RhIGRlXG4gICAqIGBfbm90aWZpY2F0aW9uc01hc3RlcmAgeSByZXZlcnRpcsOtYSBlbCB0b2dnbGUuIE1pZW50cmFzIGVzdGUgZmxhZyBlc3TDqSBgdHJ1ZWBcbiAgICogZWwgbGlzdGVuZXIgaWdub3JhIGxhcyBlbWlzaW9uZXM7IGVsIGB1cGRhdGUoKWAgeWEgYWxpbmVhIGxhcyBzZcOxYWxlcyBjb24gbGFcbiAgICogcmVzcHVlc3RhIGRlbCBiYWNrZW5kIGFsIHRlcm1pbmFyLlxuICAgKi9cbiAgcHJpdmF0ZSBfdXBkYXRlSW5GbGlnaHQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KFZBTFRFQ0hfQVVUSF9DT05GSUcpIHByaXZhdGUgY29uZmlnOiBWYWx0ZWNoQXV0aENvbmZpZyxcbiAgICBwcml2YXRlIGZpcmVzdG9yZTogRmlyZXN0b3JlU2VydmljZSxcbiAgICBwcml2YXRlIGF1dGg6IEF1dGhTZXJ2aWNlLFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIGZpcmViYXNlOiBGaXJlYmFzZVNlcnZpY2UgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2UgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgZm9udFNpemVTZXJ2aWNlOiBGb250U2l6ZVNlcnZpY2UgfCBudWxsLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaTE4bjogSTE4blNlcnZpY2UgfCBudWxsXG4gICkge1xuICAgIGNvbnN0IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG4gICAgZGVzdHJveVJlZi5vbkRlc3Ryb3koKCkgPT4gdGhpcy51bmJpbmQoKSk7XG5cbiAgICAvLyBTZWVkIGBfZm9udFNpemVgIGNvbiBlbCB2YWxvciBxdWUgRm9udFNpemVTZXJ2aWNlIHlhIHJlc3RhdXLDsyBkZXNkZVxuICAgIC8vIGxvY2FsU3RvcmFnZSBlbiBzdSBjb25zdHJ1Y3RvciAocHJvdmlkZWRJbiByb290IOKGkiB5YSBjb3JyacOzIGFsIGlueWVjdGFybG9cbiAgICAvLyBhY8OhKS4gU2luIGVzdG8sIGVsIHNpZ25hbCBhcnJhbmNhIGVuICdtZWRpdW0nIHkgZWwgZWZmZWN0IGRlIGFiYWpvIOKAlHF1ZVxuICAgIC8vIGRpc3BhcmEgYWwgbWFyY2Fyc2UgYHN5bmNlZGDigJQgZm9yemFyw61hICdtZWRpdW0nIHBpc2FuZG8gZWwgdGFtYcOxb1xuICAgIC8vIHJlc3RhdXJhZG8gY3VhbmRvIGVsIHNuYXBzaG90IEZpcmVzdG9yZSBOTyB0cmFlIGBmb250U2l6ZWAgKHVzZXIgc2luIGVzZVxuICAgIC8vIGNhbXBvIGVuIGVsIG1pcnJvcikuIEJ1ZzogY2FtYmlhcyBlbCB0YW1hw7FvLCByZWZyZXNjYXMgeSBzZSBwaWVyZGUuXG4gICAgaWYgKHRoaXMuZm9udFNpemVTZXJ2aWNlKSB7XG4gICAgICB0aGlzLl9mb250U2l6ZS5zZXQodGhpcy5mb250U2l6ZVNlcnZpY2Uuc2l6ZSgpIGFzIFByZWZlcmVuY2VzRm9udFNpemUpO1xuICAgIH1cblxuICAgIC8vIE1pc21vIHNlZWQgcGFyYSB0aGVtZSDigJQgVGhlbWVTZXJ2aWNlIGFwbGljYSBzdSB2YWxvciBkZSBsb2NhbFN0b3JhZ2UgZW5cbiAgICAvLyBib290c3RyYXAgKGBjdXJyZW50T3B0aW9uYCkuIE5lY2VzYXJpbyBwYXJhIGRlc2dhdGVhciBlbCBlZmZlY3QgZGUgdGhlbWVcbiAgICAvLyAoYWJham8pIHNpbiBxdWUgZWwgZGVmYXVsdCAnYXV0bycgcGlzZSBlbCB0ZW1hIHJlc3RhdXJhZG8uXG4gICAgaWYgKHRoaXMudGhlbWVTZXJ2aWNlKSB7XG4gICAgICB0aGlzLl90aGVtZS5zZXQodGhpcy50aGVtZVNlcnZpY2UuY3VycmVudE9wdGlvbiBhcyBQcmVmZXJlbmNlc1RoZW1lKTtcbiAgICB9XG5cbiAgICAvLyBBdXRvLWJpbmQgYWwgdXNlciBhY3R1YWwuIGVmZmVjdCgpIGNvcnJlIGVuIGluamVjdGlvbiBjb250ZXh0IChjb25zdHJ1Y3RvciBPSykuXG4gICAgLy8gYWxsb3dTaWduYWxXcml0ZXM6IGJpbmRUb1VzZXIvdW5iaW5kIGVzY3JpYmVuIGBfc3luY2VkYCAoc2XDsWFsIGludGVybmEgc2luXG4gICAgLy8gZGVwZW5kZW5jaWFzIGRlbCBwcm9waW8gZWZmZWN0KSDihpIgc2VndXJvIHkgbmVjZXNhcmlvLlxuICAgIC8vIEVsIGdhdGUgZGUgYGZpcmViYXNlQXV0aFJlYWR5YCBubyBlcyBvcGNpb25hbDogZWwgSldUIGRlbCBiYWNrZW5kIHF1ZWRhXG4gICAgLy8gbGlzdG8gY2llbnRvcyBkZSBtcyBhbnRlcyBxdWUgbGEgc2VzacOzbiBkZSBGaXJlYmFzZSBBdXRoLCB5IGVuZ2FuY2hhciBlbFxuICAgIC8vIGxpc3RlbmVyIGVuIGVzYSB2ZW50YW5hIGRhIGBwZXJtaXNzaW9uLWRlbmllZGAgKHZlciBGaXJlYmFzZVNlcnZpY2UpLlxuICAgIC8vIENvbW8gZWwgZWZmZWN0IGxlZSBsYSBzZcOxYWwsIHNlIHJlLWVqZWN1dGEgc29sbyBjdWFuZG8gRmlyZWJhc2UgY29uZmlybWFcbiAgICAvLyBsYSBzZXNpw7NuIHkgYWjDrSByZWNpw6luIGxpZ2EgYWwgdXNlci5cbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHVzZXIgPSB0aGlzLmF1dGgudXNlcigpO1xuICAgICAgICBjb25zdCBmaXJlYmFzZVJlYWR5ID0gdGhpcy5maXJlYmFzZT8uZmlyZWJhc2VBdXRoUmVhZHkoKSA/PyB0cnVlO1xuICAgICAgICBpZiAodXNlcj8udXNlcklkICYmIGZpcmViYXNlUmVhZHkpIHtcbiAgICAgICAgICB0aGlzLmJpbmRUb1VzZXIodXNlci51c2VySWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudW5iaW5kKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgLy8gU2lkZS1lZmZlY3Q6IGFwbGljYXIgdGhlbWUuIFNJTiBnYXRlIGBfc3luY2VkYCAobG9jYWwtZmlyc3QsIGlndWFsIHF1ZVxuICAgIC8vIGZvbnRTaXplKTogVGhlbWVTZXJ2aWNlL2xvY2FsU3RvcmFnZSBlcyBsYSB2ZXJkYWQgZGVsIGRpc3Bvc2l0aXZvIHlcbiAgICAvLyBgX3RoZW1lYCB2aWVuZSBzZWVkZWFkbyBhcnJpYmEuIEFwbGljYXIgc2llbXByZSBxdWUgY2FtYmllIGRhIGFwcGx5XG4gICAgLy8gb3B0aW1pc3RhIGFsIGluc3RhbnRlOyBlbCBzeW5jIGNyb3NzLWRldmljZSB0YW1iacOpbiBhcGxpY2EgdsOtYSBzbmFwc2hvdC5cbiAgICAvLyBHYXRlYXJsbyBlbiBgX3N5bmNlZGAgaGFjw61hIHF1ZSBlbCBwcmltZXIgY2FtYmlvIGRlIHVuIHVzZXIgbnVldm8gKHNpbiBkb2NcbiAgICAvLyBGaXJlc3RvcmUgYcO6bikgbm8gc2UgYXBsaWNhcmE6IGVsIHNlbGVjdG9yIG1vc3RyYWJhIFwiRGFya1wiIHBlcm8gZWwgdGVtYSBub1xuICAgIC8vIGNhbWJpYWJhLiAoRWwgc2VsZWN0b3IgZGUgaWRpb21hIG5vIHN1ZnJlIGVzdG8gcG9ycXVlIHZhbC1sYW5ndWFnZS1zZWxlY3RvclxuICAgIC8vIGxsYW1hIGkxOG4uc2V0TGFuZ3VhZ2UgZGlyZWN0bzsgZWwgZGUgdGhlbWUgZGVwZW5kZSBzb2xvIGRlIGVzdGUgZWZmZWN0LilcbiAgICAvLyBPSk86IHVzYXIgYHRvZ2dsZVVzZXJQcmVmZXJlbmNlKClgIHkgTk8gZWwgc2V0dGVyIGBUaGVtZSA9YC4gRWwgc2V0dGVyIHNvbG9cbiAgICAvLyBwZXJzaXN0ZSBsb2NhbFN0b3JhZ2UgKyBlbWl0ZSBlbCBCZWhhdmlvclN1YmplY3Q7IG5vIGFwbGljYSBsYXMgY2xhc2VzXG4gICAgLy8gYGJvZHkuZGFya2AvYGh0bWwuaW9uLXBhbGV0dGUtZGFya2AgcXVlIGVsIHBhbGV0dGUgZGUgSW9uaWMgbmVjZXNpdGEuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IHQgPSB0aGlzLl90aGVtZSgpO1xuICAgICAgaWYgKHRoaXMudGhlbWVTZXJ2aWNlKSB7XG4gICAgICAgIHRoaXMudGhlbWVTZXJ2aWNlLnRvZ2dsZVVzZXJQcmVmZXJlbmNlKHQgYXMgVGhlbWVPcHRpb24pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gU2lkZS1lZmZlY3Q6IGFwbGljYXIgbGFuZ3VhZ2UgbG9jYWwgY3VhbmRvIGxsZWdhIHNuYXBzaG90IHJlYWwuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuX3N5bmNlZCgpKSByZXR1cm47XG4gICAgICAgIGNvbnN0IGwgPSB0aGlzLl9sYW5ndWFnZSgpO1xuICAgICAgICBpZiAodGhpcy5pMThuICYmIHRoaXMuaTE4bi5sYW5nKCkgIT09IGwpIHtcbiAgICAgICAgICB0aGlzLmkxOG4uc2V0TGFuZ3VhZ2UobCBhcyBJMThuTGFuZyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH1cbiAgICApO1xuXG4gICAgLy8gU2lkZS1lZmZlY3Q6IGFwbGljYXIgZm9udFNpemUuXG4gICAgLy8gU0lOIGdhdGUgYF9zeW5jZWRgIChpZ3VhbCBxdWUgdGhlbWUpOiBlbCB0YW1hw7FvIGVzIHVuYVxuICAgIC8vIHByZWZlcmVuY2lhIGxvY2FsLWZpcnN0IOKAlCBGb250U2l6ZVNlcnZpY2UvbG9jYWxTdG9yYWdlIGVzIGxhIHZlcmRhZCBkZWxcbiAgICAvLyBkaXNwb3NpdGl2byB5IGBfZm9udFNpemVgIHlhIHZpZW5lIHNlZWRlYWRvIGRlIGFow60gYXJyaWJhLiBBcGxpY2FyIHNpZW1wcmVcbiAgICAvLyBxdWUgY2FtYmllIHBlcm1pdGUgcXVlIGVsIGNhbWJpbyBkZWwgdXN1YXJpbyBzdXJ0YSBlZmVjdG8gYWwgaW5zdGFudGVcbiAgICAvLyAob3B0aW1pc3RhLCBzaW4gZXNwZXJhciBlbCByb3VuZC10cmlwIGEgRmlyZXN0b3JlKSB5IHF1ZSBlbCBzeW5jXG4gICAgLy8gY3Jvc3MtZGV2aWNlIHRhbWJpw6luIGFwbGlxdWUgYWwgbGxlZ2FyIGVsIHNuYXBzaG90LiBHYXRlYXJsbyBlbiBgX3N5bmNlZGBcbiAgICAvLyBoYWPDrWEgcXVlIGVsIHByaW1lciBjYW1iaW8gZGUgdW4gdXNlciBudWV2byAoc2luIGRvYyBGaXJlc3RvcmUgYcO6bikgbm8gc2VcbiAgICAvLyBhcGxpY2FyYTogZWwgc2VsZWN0b3IgbW9zdHJhYmEgXCJHcmFuZGVcIiBwZXJvIGVsIGZvbnQtc2l6ZSBubyBjYW1iaWFiYS5cbiAgICAvLyBhbGxvd1NpZ25hbFdyaXRlczogZm9udFNpemVTZXJ2aWNlLnNldFNpemUoKSBlc2NyaWJlIHRoaXMuX3NpemUgKHNpZ25hbCkuXG4gICAgZWZmZWN0KFxuICAgICAgKCkgPT4ge1xuICAgICAgICBjb25zdCBmcyA9IHRoaXMuX2ZvbnRTaXplKCk7XG4gICAgICAgIGlmICh0aGlzLmZvbnRTaXplU2VydmljZSkge1xuICAgICAgICAgIHRoaXMuZm9udFNpemVTZXJ2aWNlLnNldFNpemUoZnMgYXMgRm9udFNpemVPcHRpb24pO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyBhbGxvd1NpZ25hbFdyaXRlczogdHJ1ZSB9XG4gICAgKTtcbiAgfVxuXG4gIC8qKiBBY3R1YWxpemEgcHJlZmVyZW5jaWFzIHZpYSBiYWNrZW5kLiBPcHRpbWlzdGljIFVJOiBhcGxpY2EgbG9jYWwsIHJldmllcnRlIHNpIGZhbGxhLiAqL1xuICBhc3luYyB1cGRhdGUocGFydGlhbDogUHJlZmVyZW5jZXNVcGRhdGUpOiBQcm9taXNlPFByZWZlcmVuY2VzVXBkYXRlUmVzcG9uc2U+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmNvbmZpZy5hcGlVcmx9L3YyL2F1dGgvcHJlZmVyZW5jZXNgO1xuXG4gICAgY29uc3QgcHJldiA9IHtcbiAgICAgIHRoZW1lOiB0aGlzLl90aGVtZSgpLFxuICAgICAgbGFuZ3VhZ2U6IHRoaXMuX2xhbmd1YWdlKCksXG4gICAgICBmb250U2l6ZTogdGhpcy5fZm9udFNpemUoKSxcbiAgICAgIG1hc3RlcjogdGhpcy5fbm90aWZpY2F0aW9uc01hc3RlcigpLFxuICAgIH07XG5cbiAgICBpZiAocGFydGlhbC50aGVtZSkgdGhpcy5fdGhlbWUuc2V0KHBhcnRpYWwudGhlbWUpO1xuICAgIGlmIChwYXJ0aWFsLmxhbmd1YWdlKSB0aGlzLl9sYW5ndWFnZS5zZXQocGFydGlhbC5sYW5ndWFnZSk7XG4gICAgaWYgKHBhcnRpYWwuZm9udFNpemUpIHRoaXMuX2ZvbnRTaXplLnNldChwYXJ0aWFsLmZvbnRTaXplKTtcbiAgICBpZiAocGFydGlhbC5ub3RpZmljYXRpb25zICYmIHR5cGVvZiBwYXJ0aWFsLm5vdGlmaWNhdGlvbnMubWFzdGVyID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnNNYXN0ZXIuc2V0KHBhcnRpYWwubm90aWZpY2F0aW9ucy5tYXN0ZXIpO1xuICAgIH1cblxuICAgIC8vIEJsb3F1ZWFyIGVsIGxpc3RlbmVyIEZpcmVzdG9yZSBtaWVudHJhcyBlbCBQVVQgZXN0w6EgZW4gdnVlbG86IHVuIHNuYXBzaG90XG4gICAgLy8gc3RhbGUgbm8gZGViZSBwaXNhciBlbCB2YWxvciBvcHRpbWlzdGEgcmVjacOpbiBhcGxpY2Fkby5cbiAgICB0aGlzLl91cGRhdGVJbkZsaWdodCA9IHRydWU7XG5cbiAgICB0cnkge1xuICAgICAgLy8gRW52aWFyIGFwcElkIGV4cGzDrWNpdG8g4oCUIGVsIGJhY2tlbmQgbG8gdXNhIHBhcmEgZXNjcmliaXIgZWwgbWlycm9yXG4gICAgICAvLyBGaXJlc3RvcmUgZW4gYXBwcy97YXBwSWR9Ly4uLiBjb3JyZWN0bywgc2luIGRlcGVuZGVyIGRlbCBoZWFkZXIgT3JpZ2luXG4gICAgICAvLyAocXVlIGVuIFBXQSBpT1MgcHVlZGUgbm8gcmVzb2x2ZXIgYWwgQXBwSUQgZXNwZXJhZG8pLlxuICAgICAgY29uc3QgYm9keSA9IHsgLi4ucGFydGlhbCwgYXBwSWQ6IHRoaXMuY29uZmlnLmFwcElkIH07XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmh0dHAucHV0PFByZWZlcmVuY2VzVXBkYXRlUmVzcG9uc2U+KHVybCwgYm9keSkpO1xuICAgICAgLy8gRWwgbGlzdGVuZXIgRmlyZXN0b3JlIGVzIGxhIGZ1ZW50ZSBmaW5hbCwgcGVybyBhbGluZWFyIHlhIGNvbiBsYVxuICAgICAgLy8gcmVzcHVlc3RhIGRlbCBiYWNrZW5kIGFjZWxlcmEgVVggKGVzcGVjaWFsbWVudGUgc2kgZWwgbGlzdGVuZXJcbiAgICAgIC8vIHRhcmRhIGVuIHByb3BhZ2FyKS5cbiAgICAgIGlmIChyZXMudGhlbWUpIHRoaXMuX3RoZW1lLnNldChyZXMudGhlbWUgYXMgUHJlZmVyZW5jZXNUaGVtZSk7XG4gICAgICBpZiAocmVzLmxhbmd1YWdlKSB0aGlzLl9sYW5ndWFnZS5zZXQocmVzLmxhbmd1YWdlIGFzIFByZWZlcmVuY2VzTGFuZ3VhZ2UpO1xuICAgICAgaWYgKHJlcy5mb250U2l6ZSkgdGhpcy5fZm9udFNpemUuc2V0KHJlcy5mb250U2l6ZSBhcyBQcmVmZXJlbmNlc0ZvbnRTaXplKTtcbiAgICAgIGlmICh0eXBlb2YgcmVzLm5vdGlmaWNhdGlvbnM/Lm1hc3RlciA9PT0gJ2Jvb2xlYW4nKSB7XG4gICAgICAgIHRoaXMuX25vdGlmaWNhdGlvbnNNYXN0ZXIuc2V0KHJlcy5ub3RpZmljYXRpb25zLm1hc3Rlcik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gUmV2ZXJ0IG9wdGltaXN0aWMuXG4gICAgICB0aGlzLl90aGVtZS5zZXQocHJldi50aGVtZSk7XG4gICAgICB0aGlzLl9sYW5ndWFnZS5zZXQocHJldi5sYW5ndWFnZSk7XG4gICAgICB0aGlzLl9mb250U2l6ZS5zZXQocHJldi5mb250U2l6ZSk7XG4gICAgICB0aGlzLl9ub3RpZmljYXRpb25zTWFzdGVyLnNldChwcmV2Lm1hc3Rlcik7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuX3VwZGF0ZUluRmxpZ2h0ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc2V0VGhlbWUodGhlbWU6IFByZWZlcmVuY2VzVGhlbWUpOiBQcm9taXNlPFByZWZlcmVuY2VzVXBkYXRlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy51cGRhdGUoeyB0aGVtZSB9KTtcbiAgfVxuXG4gIHNldExhbmd1YWdlKGxhbmd1YWdlOiBQcmVmZXJlbmNlc0xhbmd1YWdlKTogUHJvbWlzZTxQcmVmZXJlbmNlc1VwZGF0ZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlKHsgbGFuZ3VhZ2UgfSk7XG4gIH1cblxuICBzZXRGb250U2l6ZShmb250U2l6ZTogUHJlZmVyZW5jZXNGb250U2l6ZSk6IFByb21pc2U8UHJlZmVyZW5jZXNVcGRhdGVSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLnVwZGF0ZSh7IGZvbnRTaXplIH0pO1xuICB9XG5cbiAgc2V0Tm90aWZpY2F0aW9uc01hc3RlcihlbmFibGVkOiBib29sZWFuKTogUHJvbWlzZTxQcmVmZXJlbmNlc1VwZGF0ZVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMudXBkYXRlKHsgbm90aWZpY2F0aW9uczogeyBtYXN0ZXI6IGVuYWJsZWQgfSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYmluZFRvVXNlcih1c2VySWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmN1cnJlbnRVc2VySWQgPT09IHVzZXJJZCAmJiB0aGlzLnN1YnNjcmlwdGlvbikgcmV0dXJuO1xuICAgIHRoaXMudW5iaW5kKCk7XG4gICAgdGhpcy5jdXJyZW50VXNlcklkID0gdXNlcklkO1xuICAgIC8vIEZpcmVzdG9yZVNlcnZpY2UuZG9jQ2hhbmdlcyBwcmVmaWphIGF1dG9tw6F0aWNhbWVudGUgYGFwcHMve2FwcElkfS9gXG4gICAgLy8gY3VhbmRvIGBjb25maWcuYXBwSWRgIGVzdMOhIHNldGVhZG8gZW4gVmFsdGVjaEF1dGhDb25maWcuXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLmZpcmVzdG9yZVxuICAgICAgLmRvY0NoYW5nZXM8UHJlZmVyZW5jZXNEb2N1bWVudCAmIHsgaWQ/OiBzdHJpbmcgfT4oYHVzZXJzLyR7dXNlcklkfS9wcmVmZXJlbmNlc2AsICdtYWluJylcbiAgICAgIC5zdWJzY3JpYmUoZG9jID0+IHtcbiAgICAgICAgaWYgKCFkb2MpIHtcbiAgICAgICAgICAvLyBEb2Mgbm8gZXhpc3RlIGHDum4gcGFyYSBlc3RhIGFwcC4gQW50ZXMgZGVqw6FiYW1vcyBsYSBhcHAgY29uXG4gICAgICAgICAgLy8gbG9jYWxTdG9yYWdlL25hdmlnYXRvciwgYXVucXVlIGVsIHVzdWFyaW8geWEgdHV2aWVyYSBpZGlvbWFcbiAgICAgICAgICAvLyBjYW7Ds25pY28gZW4gYXV0aC4gUmVzdWx0YWRvOiBjdWVudGEgZW4gZXNwYcOxb2wsIGFwcCBudWV2YSBlbiBpbmdsw6lzXG4gICAgICAgICAgLy8gaGFzdGEgY2FtYmlhciBtYW51YWxtZW50ZSBhIGluZ2zDqXMgeSB2b2x2ZXIgYSBlc3Bhw7FvbC4gSGlkcmF0YXJcbiAgICAgICAgICAvLyBkZXNkZSBwZXJmaWwgY2Fuw7NuaWNvIGNvcnJpZ2UgZXNlIHByaW1lciBhcnJhbnF1ZSB5IGFkZW3DoXMgY3JlYSBlbFxuICAgICAgICAgIC8vIG1pcnJvciBkZSBlc3RhIGFwcC5cbiAgICAgICAgICB0aGlzLmh5ZHJhdGVNaXNzaW5nUHJlZmVyZW5jZXNGcm9tUHJvZmlsZSh1c2VySWQpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJZ25vcmFyIGVtaXNpb25lcyBkZWwgbGlzdGVuZXIgbWllbnRyYXMgaGF5IHVuIHVwZGF0ZSgpIGVuIHZ1ZWxvOiB1blxuICAgICAgICAvLyBzbmFwc2hvdCBzdGFsZSAoYW50ZXJpb3IgYWwgc3luYyBkZWwgYmFja2VuZCkgcmV2ZXJ0aXLDrWEgZWwgdmFsb3JcbiAgICAgICAgLy8gb3B0aW1pc3RhLiBFbCB1cGRhdGUoKSB5YSBhbGluZWEgbGFzIHNlw7FhbGVzIGNvbiBsYSByZXNwdWVzdGEgcmVhbC5cbiAgICAgICAgaWYgKHRoaXMuX3VwZGF0ZUluRmxpZ2h0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChkb2MudGhlbWUpIHRoaXMuX3RoZW1lLnNldChkb2MudGhlbWUpO1xuICAgICAgICBpZiAoZG9jLmxhbmd1YWdlKSB0aGlzLl9sYW5ndWFnZS5zZXQoZG9jLmxhbmd1YWdlKTtcbiAgICAgICAgaWYgKGRvYy5mb250U2l6ZSkgdGhpcy5fZm9udFNpemUuc2V0KGRvYy5mb250U2l6ZSk7XG4gICAgICAgIGlmIChkb2Mubm90aWZpY2F0aW9ucyAmJiB0eXBlb2YgZG9jLm5vdGlmaWNhdGlvbnMubWFzdGVyID09PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICB0aGlzLl9ub3RpZmljYXRpb25zTWFzdGVyLnNldChkb2Mubm90aWZpY2F0aW9ucy5tYXN0ZXIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3N5bmNlZC5zZXQodHJ1ZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdW5iaW5kKCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VycmVudFVzZXJJZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLm1pc3NpbmdEb2NIeWRyYXRpb25Vc2VySWQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5fc3luY2VkLnNldChmYWxzZSk7XG4gIH1cblxuICBwcml2YXRlIGh5ZHJhdGVNaXNzaW5nUHJlZmVyZW5jZXNGcm9tUHJvZmlsZSh1c2VySWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1pc3NpbmdEb2NIeWRyYXRpb25Vc2VySWQgPT09IHVzZXJJZCkgcmV0dXJuO1xuICAgIHRoaXMubWlzc2luZ0RvY0h5ZHJhdGlvblVzZXJJZCA9IHVzZXJJZDtcblxuICAgIHZvaWQgZmlyc3RWYWx1ZUZyb20odGhpcy5hdXRoLmdldFByb2ZpbGUoKSlcbiAgICAgIC50aGVuKHByb2ZpbGUgPT4ge1xuICAgICAgICBjb25zdCBsYW5ndWFnZSA9IHByb2ZpbGUubGFuZ3VhZ2UgYXMgUHJlZmVyZW5jZXNMYW5ndWFnZSB8IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKGxhbmd1YWdlID09PSAnZXMnIHx8IGxhbmd1YWdlID09PSAnZW4nKSB7XG4gICAgICAgICAgdGhpcy5fbGFuZ3VhZ2Uuc2V0KGxhbmd1YWdlKTtcbiAgICAgICAgICB0aGlzLmkxOG4/LnNldExhbmd1YWdlKGxhbmd1YWdlIGFzIEkxOG5MYW5nKTtcbiAgICAgICAgICB0aGlzLl9zeW5jZWQuc2V0KHRydWUpO1xuICAgICAgICAgIHZvaWQgdGhpcy51cGRhdGUoeyBsYW5ndWFnZSB9KS5jYXRjaCgoKSA9PiB1bmRlZmluZWQpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHVuZGVmaW5lZCk7XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/lib/version.mjs
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Current version of valtech-components.
|
|
3
3
|
* This is automatically updated during the publish process.
|
|
4
4
|
*/
|
|
5
|
-
export const VERSION = '4.0.
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
export const VERSION = '4.0.1039';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xMDM5JztcbiJdfQ==
|