@quadrel-enterprise-ui/framework 18.21.5 → 18.21.7
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/page/model/page-config.interface.mjs +1 -1
- package/esm2022/lib/page/page.component.mjs +7 -5
- package/esm2022/lib/page-tabs/page-tabs.component.mjs +75 -3
- package/fesm2022/quadrel-enterprise-ui-framework.mjs +164 -90
- package/fesm2022/quadrel-enterprise-ui-framework.mjs.map +1 -1
- package/lib/page/model/page-config.interface.d.ts +18 -1
- package/lib/page/page.component.d.ts +6 -4
- package/lib/page-tabs/page-tabs.component.d.ts +71 -1
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb25maWcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL3BhZ2UvbW9kZWwvcGFnZS1jb25maWcuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRZE1lbnVCdXR0b25BY3Rpb25Db25maWcgfSBmcm9tICcuLi8uLi9idXR0b24vbW9kZWwvYnV0dG9uLWNvbmZpZyc7XG5pbXBvcnQgeyBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZyB9IGZyb20gJy4vcGFnZS1oZWFkZXItZmFjZXQuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBvZiBRZFBhZ2UuXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgcGFnZSBvYmplY3QgZGF0YVxuICovXG5leHBvcnQgdHlwZSBRZFBhZ2VDb25maWc8VCBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4gPVxuICB8IFFkUGFnZUNvbmZpZ092ZXJ2aWV3XG4gIHwgUWRQYWdlQ29uZmlnQ3JlYXRlPFQ+XG4gIHwgUWRQYWdlQ29uZmlnSW5zcGVjdDxUPlxuICB8IFFkUGFnZUNvbmZpZ0N1c3RvbTxUPjtcblxuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VTZWxlY3RlZENvbnRleHQge1xuICB2YWx1ZTogc3RyaW5nO1xuICBsYWJlbDoge1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFFkUGFnZUNvbnRleHRDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXNjcmlwdGlvbiBmb3IgdGhlIHNwZWNpZmljIGhlYWRlciBmYWNldFxuICAgKi9cbiAgbGFiZWw6IHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gaTE4biBzdHJpbmcgZm9yIHRoZSBkZXNjcmlwdGlvbiwgdXNlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAgICovXG4gICAgaTE4bjogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQWxsb3dzIHRvIGlkZW50aWZ5IHRoZSBjb250ZXh0XG4gICAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXIgc29tZSBoYW5kbGVyIHRoYXQgaXMgZXhlY3V0ZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMuXG4gICAqL1xuICBjaGFuZ2VkPzogKHNlbGVjdGlvbjogUWRQYWdlU2VsZWN0ZWRDb250ZXh0IHwgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10gfCBudWxsKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciBhIGNvbnRleHQgd2l0aCBzaW5nbGUgc2VsZWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ29udGV4dENvbmZpZ1NpbmdsZSBleHRlbmRzIFFkUGFnZUNvbnRleHRDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmVzIHRoZSB0eXBlIG9uIGhvdyB0aGUgY29udGV4dCBzZWxlY3Rpb24gaGFwcGVucy5cbiAgICovXG4gIHR5cGU6ICdzaW5nbGUnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQXZhaWxhYmxlIG9wdGlvbnMgZm9yIHNlbGVjdGlvbi5cbiAgICovXG4gIG9wdGlvbnM6IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyB3aGV0aGVyIHRoZSBjb250ZXh0IG9wdGlvbnMgYXJlIHNlYXJjaGFibGUgZm9yIHRoZSB1c2VyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaGFzU2VhcmNoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBsYWNlaG9sZGVyIGZvciBzZWFyY2hcbiAgICovXG4gIHNlYXJjaFBsYWNlaG9sZGVyPzoge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBpMThuIHN0cmluZ1xuICAgICAqL1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRpdGxlIGZvciB0aGUgZGlhbG9nIHRoYXQgd2lsbCBiZSBvcGVuZWRcbiAgICovXG4gIHRpdGxlPzoge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBpMThuIHN0cmluZ1xuICAgICAqL1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgYSBjb250ZXh0IHdpdGggbXVsdGkgc2VsZWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ29udGV4dENvbmZpZ011bHRpIGV4dGVuZHMgUWRQYWdlQ29udGV4dENvbmZpZ0Jhc2Uge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyZXMgdGhlIHR5cGUgb24gaG93IHRoZSBjb250ZXh0IHNlbGVjdGlvbiBoYXBwZW5zLlxuICAgKi9cbiAgdHlwZTogJ211bHRpJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEF2YWlsYWJsZSBvcHRpb25zIGZvciBzZWxlY3Rpb24uXG4gICAqL1xuICBvcHRpb25zOiBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyZXMgd2hldGhlciB0aGUgY29udGV4dCBvcHRpb25zIGFyZSBzZWFyY2hhYmxlIGZvciB0aGUgdXNlci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGhhc1NlYXJjaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQbGFjZWhvbGRlciBmb3Igc2VhcmNoXG5cbiAgICovXG4gIHNlYXJjaFBsYWNlaG9sZGVyPzoge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBpMThuIHN0cmluZ1xuICAgICAqL1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRpdGxlIGZvciB0aGUgZGlhbG9nIHRoYXQgd2lsbCBiZSBvcGVuZWRcbiAgICovXG4gIHRpdGxlPzoge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBpMThuIHN0cmluZ1xuICAgICAqL1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgYSBjb250ZXh0IHdpdGggY3VzdG9tIHNlbGVjdGlvbiAoZS4gZy4geW91ciBvd24gZGlhbG9nKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZUNvbnRleHRDb25maWdDdXN0b20gZXh0ZW5kcyBRZFBhZ2VDb250ZXh0Q29uZmlnQmFzZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyB0aGUgdHlwZSBvbiBob3cgdGhlIGNvbnRleHQgc2VsZWN0aW9uIGhhcHBlbnMuXG4gICAqL1xuICB0eXBlOiAnY3VzdG9tJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgdG8gb3BlbiBhIGN1c3RvbSBkaWFsb2cgZm9yIHNlbGVjdGlvblxuICAgKi9cbiAgb3BlbjogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyB0aGUgY29udGV4dCB3aXRoIG9uZSBvZiB0aGUgYXZhaWxhYmxlIHR5cGVzXG4gKi9cbmV4cG9ydCB0eXBlIFFkUGFnZUNvbnRleHRDb25maWcgPSBRZFBhZ2VDb250ZXh0Q29uZmlnU2luZ2xlIHwgUWRQYWdlQ29udGV4dENvbmZpZ011bHRpIHwgUWRQYWdlQ29udGV4dENvbmZpZ0N1c3RvbTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBjb25maWd1cmF0aW9uIGZvciBRZFBhZ2UuXG4gKi9cbmludGVyZmFjZSBRZFBhZ2VDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaXRsZSBvZiB0aGUgcGFnZS5cbiAgICovXG4gIHRpdGxlOiBRZFBhZ2VUaXRsZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhpZGVzIGNvbnRleHRzIGZyb20gYmVpbmcgc2hvd24uIFRoZSBDb250ZXh0U2VydmljZSB3aWxsIHN0aWxsIHdvcmsgaW4gdGhlIGJhY2tncm91bmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBoaWRlQ29udGV4dHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGFiZWwgZm9yIHRoZSBtZW51IGJ1dHRvbiBvZiBjdXN0b20gYWN0aW9ucy5cbiAgICovXG4gIGN1c3RvbUFjdGlvbnNMYWJlbD86IFFkUGFnZUN1c3RvbUFjdGlvbnNMYWJlbDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIG92ZXJ2aWV3IHBhZ2UgdHlwZS5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBwYWdlIG9iamVjdCBkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ29uZmlnT3ZlcnZpZXcgZXh0ZW5kcyBRZFBhZ2VDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYWdlIFR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgJ292ZXJ2aWV3J1xuICAgKi9cbiAgcGFnZVR5cGU/OiAnb3ZlcnZpZXcnOyAvLyBPcHRpb25hbCB0byBtYWtlIGl0IGRlZmF1bHRcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gc3BlY2lmaWMgdG8gdGhlIG92ZXJ2aWV3IHBhZ2UgdHlwZS5cbiAgICovXG4gIHBhZ2VUeXBlQ29uZmlnPzogUWRQYWdlVHlwZU92ZXJ2aWV3Q29uZmlnO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgY3JlYXRlIHBhZ2UgdHlwZS5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBwYWdlIG9iamVjdCBkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ29uZmlnQ3JlYXRlPFQgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+IGV4dGVuZHMgUWRQYWdlQ29uZmlnQmFzZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFnZSBUeXBlXG4gICAqXG4gICAqIEBkZWZhdWx0ICdjcmVhdGUnXG4gICAqL1xuICBwYWdlVHlwZTogJ2NyZWF0ZSc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIHNwZWNpZmljIHRvIHRoZSBjcmVhdGUgcGFnZSB0eXBlLlxuICAgKi9cbiAgcGFnZVR5cGVDb25maWc/OiBRZFBhZ2VUeXBlQ3JlYXRlQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gcGxhY2VkIGluIHRoZSBoZWFkZXIgb2YgdGhlIHBhZ2UuIENvbmNlcm5zIGN1cnJlbnQgc2hvd24gb2JqZWN0LlxuICAgKi9cbiAgaGVhZGVyRmFjZXRzPzogUWRQYWdlSGVhZGVyRmFjZXRDb25maWc8VD5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VDb25maWdJbnNwZWN0PFQgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+IGV4dGVuZHMgUWRQYWdlQ29uZmlnQmFzZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFnZSBUeXBlXG4gICAqXG4gICAqIEBkZWZhdWx0ICdpbnNwZWN0J1xuICAgKi9cbiAgcGFnZVR5cGU6ICdpbnNwZWN0JztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gc3BlY2lmaWMgdG8gdGhlIGluc3BlY3QgcGFnZSB0eXBlLlxuICAgKi9cbiAgcGFnZVR5cGVDb25maWc/OiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIHBsYWNlZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBwYWdlLiBDb25jZXJucyBjdXJyZW50IHNob3duIG9iamVjdC5cbiAgICovXG4gIGhlYWRlckZhY2V0cz86IFFkUGFnZUhlYWRlckZhY2V0Q29uZmlnPFQ+W107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZhY2V0cyBpbiBoZWFkZXIgc2hvdWxkIGJlIGNvbGxhcHNlZCBhbmQgY3VzdG9tIGFjdGlvbnMgYXJlIGluIGEgbWVudS4gVGhpcyBtb2RlIGlzIGRlc2lnbmVkIGZvciB0b3VjaCBkZXZpY2VzIGFuZCBtb2JpbGUgcGhvbmVzIG9ubHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhZGFwdGl2ZU1vZGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZUNvbmZpZ0N1c3RvbTxUIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PiBleHRlbmRzIFFkUGFnZUNvbmZpZ0Jhc2Uge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBhZ2UgVHlwZVxuICAgKlxuICAgKiBAZGVmYXVsdCAnY3VzdG9tJ1xuICAgKi9cbiAgcGFnZVR5cGU6ICdjdXN0b20nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgY3VzdG9tIHBhZ2UgdHlwZS5cbiAgICovXG4gIHBhZ2VUeXBlQ29uZmlnPzogUWRQYWdlVHlwZUN1c3RvbUNvbmZpZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIHBsYWNlZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBwYWdlLiBDb25jZXJucyBjdXJyZW50IHNob3duIG9iamVjdC5cbiAgICovXG4gIGhlYWRlckZhY2V0cz86IFFkUGFnZUhlYWRlckZhY2V0Q29uZmlnPFQ+W107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZhY2V0cyBpbiBoZWFkZXIgc2hvdWxkIGJlIGNvbGxhcHNlZCBhbmQgY3VzdG9tIGFjdGlvbnMgYXJlIGluIGEgbWVudS4gVGhpcyBtb2RlIGlzIGRlc2lnbmVkIGZvciB0b3VjaCBkZXZpY2VzIGFuZCBtb2JpbGUgcGhvbmVzIG9ubHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhZGFwdGl2ZU1vZGU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyZXMgdGhlIG92ZXJ2aWV3IHBhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VUeXBlT3ZlcnZpZXdDb25maWcge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEN1c3RvbSBhY3Rpb25zIGZvciB0aGUgaGVhZGVyLlxuICAgKiBZb3UgY2FuIGRlZmluZSBhIGxhYmVsLCBhIGhhbmRsZXIsIGFuZCB5b3UgY2FuIGRpc2FibGUgb3IgaGlkZSB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiAqIElmIHRoZXJlIGV4aXN0cyBtb3JlIHRoYW4gMSBDdXN0b20gQWN0aW9uLCBhIFFkTWVudUJ1dHRvbiB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICpcbiAgICogKiBUaGVzZSBhY3Rpb25zIGFyZSBub3QgaW50ZW5kZWQgdG8gaW5mbHVlbmNlIHRoZSBjb3JlIHByb2Nlc3MgZmxvdyBvciBtYW5pcHVsYXRlIHRoZSBvYmplY3QgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgc2hvdWxkIGJlIHVzZWQgZm9yIHNpZGUgZWZmZWN0cywgc3VjaCBhcyB0cmlnZ2VyaW5nIG5vdGlmaWNhdGlvbnMsIHVwZGF0aW5nIGV4dGVybmFsIHNlcnZpY2VzLCBvciBleGVjdXRpbmcgc3VwcGxlbWVudGFyeSB0YXNrcyB0aGF0IGRvIG5vdCBhbHRlciB0aGUgbWFpbiBzdGF0ZSBvZiB0aGUgb2JqZWN0LlxuICAgKi9cbiAgY3VzdG9tQWN0aW9ucz86IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmVzIHRoZSBjcmVhdGUgcGFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VUeXBlQ3JlYXRlQ29uZmlnIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgc2F2ZSBkcmFmdCBhY3Rpb24uXG4gICAqL1xuICBzYXZlRHJhZnQ/OiBRZFBhZ2VTYXZlRHJhZnRBY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgY2FuY2VsIGJ1dHRvbi5cbiAgICovXG4gIGNhbmNlbDogUWRQYWdlQ2FuY2VsQWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIHN1Ym1pdCBidXR0b24uXG4gICAqL1xuICBzdWJtaXQ6IFFkUGFnZVN1Ym1pdEFjdGlvbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEN1c3RvbSBhY3Rpb25zIGZvciB0aGUgaGVhZGVyLlxuICAgKiBZb3UgY2FuIGRlZmluZSBhIGxhYmVsLCBhIGhhbmRsZXIsIGFuZCB5b3UgY2FuIGRpc2FibGUgb3IgaGlkZSB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiAqIElmIHRoZXJlIGV4aXN0cyBtb3JlIHRoYW4gMSBDdXN0b20gQWN0aW9uLCBhIFFkTWVudUJ1dHRvbiB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICpcbiAgICogKiBUaGVzZSBhY3Rpb25zIGFyZSBub3QgaW50ZW5kZWQgdG8gaW5mbHVlbmNlIHRoZSBjb3JlIHByb2Nlc3MgZmxvdyBvciBtYW5pcHVsYXRlIHRoZSBvYmplY3QgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgc2hvdWxkIGJlIHVzZWQgZm9yIHNpZGUgZWZmZWN0cywgc3VjaCBhcyB0cmlnZ2VyaW5nIG5vdGlmaWNhdGlvbnMsIHVwZGF0aW5nIGV4dGVybmFsIHNlcnZpY2VzLCBvciBleGVjdXRpbmcgc3VwcGxlbWVudGFyeSB0YXNrcyB0aGF0IGRvIG5vdCBhbHRlciB0aGUgbWFpbiBzdGF0ZSBvZiB0aGUgb2JqZWN0LlxuICAgKi9cbiAgY3VzdG9tQWN0aW9ucz86IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmVzIHRoZSBpbnNwZWN0IHBhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlVHlwZUluc3BlY3RDb25maWcge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE9wZXJhdGlvbiBtb2RlIGZvciB0aGUgcGFnZS5cbiAgICpcbiAgICogKiBUaGlzIHByb3BlcnR5IGRldGVybWluZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIHBhZ2Ugb3BlcmF0ZXMuIEl0IGNhbiBiZSBlaXRoZXIgJ3ZpZXcnIG9yICdlZGl0Jy5cbiAgICpcbiAgICogKiAqKnZpZXcqKjogVGhlIHBhZ2UgaXMgaW4gcmVhZC1vbmx5IG1vZGUuXG4gICAqICogKiplZGl0Kio6IFRoZSBwYWdlIGFsbG93cyBtb2RpZmljYXRpb25zLlxuICAgKi9cbiAgb3BlcmF0aW9uTW9kZT86IFFkSW5zcGVjdE9wZXJhdGlvbk1vZGU7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgd2hldGhlciB0aGUgdXNlciBjYW4gZWRpdCB0aGUgb2JqZWN0IG9yIG5vdC5cbiAgICovXG4gIGhpZGVFZGl0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBlZGl0IGFjdGlvbi5cbiAgICovXG4gIGVkaXQ/OiBRZFBhZ2VFZGl0QWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIHNhdmUgYWN0aW9uLlxuICAgKi9cbiAgc2F2ZT86IFFkUGFnZVNhdmVBY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgY2FuY2VsIGFjdGlvbi5cbiAgICovXG4gIGNhbmNlbDogUWRQYWdlQ2FuY2VsQWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGRlbGV0ZSBhY3Rpb24uXG4gICAqL1xuICBkZWxldGU/OiBRZFBhZ2VEZWxldGVBY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgYXJjaGl2ZSBhY3Rpb24uXG4gICAqL1xuICBhcmNoaXZlPzogUWRQYWdlQXJjaGl2ZUFjdGlvbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBzdWJtaXQgYWN0aW9uLlxuICAgKi9cbiAgc3VibWl0PzogUWRQYWdlU3VibWl0QWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3VzdG9tIGFjdGlvbnMgZm9yIHRoZSBoZWFkZXIuXG4gICAqIFlvdSBjYW4gZGVmaW5lIGEgbGFiZWwsIGEgaGFuZGxlciwgYW5kIHlvdSBjYW4gZGlzYWJsZSBvciBoaWRlIHRoZSBhY3Rpb24uXG4gICAqXG4gICAqICogSWYgdGhlcmUgZXhpc3RzIG1vcmUgdGhhbiAxIEN1c3RvbSBBY3Rpb24sIGEgUWRNZW51QnV0dG9uIHdpbGwgYmUgZGlzcGxheWVkLlxuICAgKlxuICAgKiAqIEluIHRoZSBcIkluc3BlY3RcIiBwYWdlIHR5cGUsIHlvdSBjYW4gYXNzaWduIGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBvcGVyYXRpb24gbW9kZXMgXCJ2aWV3XCIgb3IgXCJlZGl0LlwiIEJ5IGRlZmF1bHQsIHRoZSBhY3Rpb24gaXMgYWN0aXZlIGluIGJvdGggbW9kZXMuXG4gICAqXG4gICAqICogVGhlc2UgYWN0aW9ucyBhcmUgbm90IGludGVuZGVkIHRvIGluZmx1ZW5jZSB0aGUgY29yZSBwcm9jZXNzIGZsb3cgb3IgbWFuaXB1bGF0ZSB0aGUgb2JqZWN0IGRpcmVjdGx5LiBJbnN0ZWFkLCB0aGV5IHNob3VsZCBiZSB1c2VkIGZvciBzaWRlIGVmZmVjdHMsIHN1Y2ggYXMgdHJpZ2dlcmluZyBub3RpZmljYXRpb25zLCB1cGRhdGluZyBleHRlcm5hbCBzZXJ2aWNlcywgb3IgZXhlY3V0aW5nIHN1cHBsZW1lbnRhcnkgdGFza3MgdGhhdCBkbyBub3QgYWx0ZXIgdGhlIG1haW4gc3RhdGUgb2YgdGhlIG9iamVjdC5cbiAgICovXG4gIGN1c3RvbUFjdGlvbnM/OiAoUWRNZW51QnV0dG9uQWN0aW9uQ29uZmlnICYgeyBvcGVyYXRpb25Nb2RlPzogUWRJbnNwZWN0T3BlcmF0aW9uTW9kZSB9KVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZVR5cGVDdXN0b21Db25maWcge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEN1c3RvbSBhY3Rpb25zIGZvciB0aGUgaGVhZGVyLlxuICAgKiBZb3UgY2FuIGRlZmluZSBhIGxhYmVsLCBhIGhhbmRsZXIsIGFuZCB5b3UgY2FuIGRpc2FibGUgb3IgaGlkZSB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiAqIElmIHRoZXJlIGV4aXN0cyBtb3JlIHRoYW4gMSBDdXN0b20gQWN0aW9uLCBhIFFkTWVudUJ1dHRvbiB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICpcbiAgICogKiBUaGVzZSBhY3Rpb25zIGFyZSBub3QgaW50ZW5kZWQgdG8gaW5mbHVlbmNlIHRoZSBjb3JlIHByb2Nlc3MgZmxvdyBvciBtYW5pcHVsYXRlIHRoZSBvYmplY3QgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgc2hvdWxkIGJlIHVzZWQgZm9yIHNpZGUgZWZmZWN0cywgc3VjaCBhcyB0cmlnZ2VyaW5nIG5vdGlmaWNhdGlvbnMsIHVwZGF0aW5nIGV4dGVybmFsIHNlcnZpY2VzLCBvciBleGVjdXRpbmcgc3VwcGxlbWVudGFyeSB0YXNrcyB0aGF0IGRvIG5vdCBhbHRlciB0aGUgbWFpbiBzdGF0ZSBvZiB0aGUgb2JqZWN0LlxuICAgKi9cbiAgY3VzdG9tQWN0aW9ucz86IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZVRpdGxlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIHRoZSB0cmFuc2xhdGlvbiBrZXlcbiAgICpcbiAgICogKiBAZXhhbXBsZSB7IGkxOG46IFwiaTE4bi5vdmVydmlldy50aXRsZVwifVxuICAgKi9cbiAgaTE4bjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgY3VzdG9tIGFjdGlvbnMgbGFiZWwsIHVzZWQgd2hlbiBtdWx0aXBsZSBjdXN0b20gYWN0aW9ucyBleGlzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VDdXN0b21BY3Rpb25zTGFiZWwge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExhYmVsIGZvciB0aGUgbWVudSBidXR0b24gb2YgY3VzdG9tIGFjdGlvbnMsIHVzZWQgZm9yIHRyYW5zbGF0aW9uLlxuICAgKlxuICAgKiAqIElmIG5vIGN1c3RvbSB0cmFuc2xhdGlvbiBrZXkgaXMgcHJvdmlkZWQsIGEgc3RhbmRhcmQgbGFiZWwgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqICogVGhpcyBsYWJlbCBiZWNvbWVzIHZpc2libGUgaWYgbW9yZSB0aGFuIG9uZSBjdXN0b20gYWN0aW9uIGlzIGRlZmluZWQsIGFzIHRoZSBhY3Rpb25zIHdpbGwgYmUgZ3JvdXBlZCB1bmRlciBhIFFkTWVudUJ1dHRvbiB0aGF0IGRpc3BsYXlzIHRoaXMgbGFiZWwuXG4gICAqL1xuICBpMThuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wZXJhdGlvbiBtb2RlcyBmb3IgdGhlIGluc3BlY3QgcGFnZS5cbiAqXG4gKiBAZGVmYXVsdCAndmlldydcbiAqL1xuZXhwb3J0IHR5cGUgUWRJbnNwZWN0T3BlcmF0aW9uTW9kZSA9ICd2aWV3JyB8ICdlZGl0JztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgc2F2ZSBhY3Rpb24sIGluY2x1ZGluZyBvcHRpb25hbCB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlU2F2ZUFjdGlvbiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGFiZWwgZm9yIHRoZSBzYXZlIGFjdGlvbiwgdXNlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqICogSWYgbm8gY3VzdG9tIHRyYW5zbGF0aW9uIGtleSBpcyBwcm92aWRlZCwgYSBzdGFuZGFyZCBsYWJlbCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIGxhYmVsPzogeyBpMThuOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgc2F2ZSBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoZm9ybVZhbHVlcz86IGFueSkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHZhbGlkYXRpb24gZmxhZywgZGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGZvcm0gdmFsaWRhdGlvbiBpcyByZXF1aXJlZCBiZWZvcmUgc2F2aW5nIGFuZCBlbnN1cmVzIHRoYXQgY2hhbmdlcyBtdXN0IGJlIHByZXNlbnQgaW4gdGhlIGZvcm0gYmVmb3JlIHNhdmluZy5cbiAgICpcbiAgICogKiBCeSBkZWZhdWx0LCB0aGlzIGZsYWcgaXMgc2V0IHRvIHRydWUsIG1lYW5pbmcgdGhhdCB2YWxpZGF0aW9uIGlzIGVuZm9yY2VkLCBhbmQgdGhlIGZvcm0gd2lsbCBvbmx5IHNhdmUgaWYgdGhlcmUgYXJlIGNoYW5nZXMuXG4gICAqXG4gICAqICogSWYgc2V0IHRvIGBmYWxzZWAsIHRoZSBmb3JtIHdpbGwgYmUgc2F2ZWQgd2l0aG91dCB2YWxpZGF0aW9uIGNoZWNrcywgYnV0IGNoYW5nZXMgbXVzdCBzdGlsbCBiZSBwcmVzZW50IHRvIHByb2NlZWQgd2l0aCB0aGUgc2F2ZSBvcGVyYXRpb24uXG4gICAqXG4gICAqICogVGhpcyBmbGFnIGlzIHVzZWZ1bCBpbiBzY2VuYXJpb3Mgd2hlcmUgZm9ybSB2YWxpZGF0aW9uIGlzIG5vdCBuZWVkZWQgb3Igc2hvdWxkIGJlIGJ5cGFzc2VkLCBidXQgaXQgZW5zdXJlcyB0aGF0IG9ubHkgbW9kaWZpZWQgZm9ybXMgY2FuIGJlIHNhdmVkLlxuICAgKi9cbiAgaGFzVmFsaWRhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgdGhlIHNhZmUgZHJhZnQgYWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZVNhdmVEcmFmdEFjdGlvbiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGFiZWwgZm9yIHRoZSBzYXZlIGRyYWZ0IGFjdGlvbiwgdXNlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqICogSWYgbm8gY3VzdG9tIHRyYW5zbGF0aW9uIGtleSBpcyBwcm92aWRlZCwgYSBzdGFuZGFyZCBsYWJlbCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIGxhYmVsPzogeyBpMThuOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgc2F2ZSBkcmFmdCBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBjYW5jZWwgYWN0aW9uLCBpbmNsdWRpbmcgYW4gb3B0aW9uYWwgY29uZmlybWF0aW9uIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ2FuY2VsQWN0aW9uIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMYWJlbCBmb3IgdGhlIGNhbmNlbCBhY3Rpb24sIHVzZWQgZm9yIHRyYW5zbGF0aW9uLlxuICAgKlxuICAgKiAqIElmIG5vIGN1c3RvbSB0cmFuc2xhdGlvbiBrZXkgaXMgcHJvdmlkZWQsIGEgc3RhbmRhcmQgbGFiZWwgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBsYWJlbD86IHsgaTE4bjogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBIYW5kbGVyIGZ1bmN0aW9uIHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIGNhbmNlbCBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoZm9ybVZhbHVlcz86IGFueSkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIGNvbmZpcm1hdGlvbiBtZXNzYWdlIGRpc3BsYXllZCBpbiBhIGRpYWxvZyB3aGVuIHRoZSB1c2VyIGF0dGVtcHRzIHRvIGNhbmNlbCB0aGUgb3BlcmF0aW9uLCB3YXJuaW5nIHRoYXQgYWxsIGNoYW5nZXMgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAqIElmIG5vIGN1c3RvbSBtZXNzYWdlIGlzIHByb3ZpZGVkLCBhIHN0YW5kYXJkIG1lc3NhZ2Ugd2lsbCBiZSBzaG93biBieSBkZWZhdWx0LlxuICAgKlxuICAgKiAqIFRoZSBjYW5jZWxsYXRpb24gcHJvY2VzcyBjaGVja3Mgd2hldGhlciB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzIGluIHRoZSBmb3JtLiBJZiB0aGVyZSBhcmUgY2hhbmdlcywgdGhlIGRpYWxvZyB3aWxsIGFwcGVhci5cbiAgICpcbiAgICogKiBJZiBubyBjaGFuZ2VzIGFyZSBkZXRlY3RlZCwgdGhlIGNhbmNlbGxhdGlvbiBwcm9jZWVkcyB3aXRob3V0IHNob3dpbmcgdGhlIGNvbmZpcm1hdGlvbiBkaWFsb2cuXG4gICAqL1xuICBjb25maXJtYXRpb25NZXNzYWdlPzogeyBpMThuOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgc3VibWl0IGFjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VTdWJtaXRBY3Rpb24ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExhYmVsIGZvciB0aGUgc3VibWl0IGFjdGlvbiwgdXNlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqICogSWYgbm8gY3VzdG9tIHRyYW5zbGF0aW9uIGtleSBpcyBwcm92aWRlZCwgYSBzdGFuZGFyZCBsYWJlbCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIGxhYmVsPzogeyBpMThuOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgc3VibWl0IGFjdGlvbiBpcyBleGVjdXRlZC5cbiAgICovXG4gIGhhbmRsZXI6IChmb3JtVmFsdWVzPzogYW55KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQnkgZGVmYXVsdCwgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHN1Ym1pdCBidXR0b24gZGVwZW5kcyBvbiB0aGUgcGFnZSB0eXBlIGFuZCB0aGUgb3BlcmF0aW9uIG1vZGUuXG4gICAqIFRvIGNvbXBsZXRlbHkgaGlkZSB0aGUgc3VibWl0IGJ1dHRvbiwgeW91IGNhbiBzZXQgdGhpcyBpc0hpZGRlbiBmbGFnLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaXNIaWRkZW4/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBlZGl0IGFjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VFZGl0QWN0aW9uIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMYWJlbCBmb3IgdGhlIGVkaXQgYWN0aW9uLCB1c2VkIGZvciB0cmFuc2xhdGlvbi5cbiAgICpcbiAgICogKiBJZiBubyBjdXN0b20gdHJhbnNsYXRpb24ga2V5IGlzIHByb3ZpZGVkLCBhIHN0YW5kYXJkIGxhYmVsIHdpbGwgYmUgdXNlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgbGFiZWw/OiB7IGkxOG46IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFuZGxlciBmdW5jdGlvbiB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBlZGl0IGFjdGlvbiBpcyBleGVjdXRlZC5cbiAgICovXG4gIGhhbmRsZXI6IChmb3JtVmFsdWVzPzogYW55KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBkZWxldGUgYWN0aW9uLlxuICpcbiAqICogVGhpcyBhY3Rpb24gaXMgcmVwcmVzZW50ZWQgYXMgYW4gaWNvbiwgc28gaXQgZG9lcyBub3QgcmVxdWlyZSBhIGxhYmVsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZURlbGV0ZUFjdGlvbiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFuZGxlciBmdW5jdGlvbiB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBkZWxldGUgYWN0aW9uIGlzIGV4ZWN1dGVkLlxuICAgKi9cbiAgaGFuZGxlcjogKGZvcm1WYWx1ZXM/OiBhbnkpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgdGhlIGFyY2hpdmUgYWN0aW9uLlxuICpcbiAqICogVGhpcyBhY3Rpb24gaXMgcmVwcmVzZW50ZWQgYXMgYW4gaWNvbiwgc28gaXQgZG9lcyBub3QgcmVxdWlyZSBhIGxhYmVsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZUFyY2hpdmVBY3Rpb24ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgYXJjaGl2ZSBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoZm9ybVZhbHVlcz86IGFueSkgPT4gdm9pZDtcbn1cbiJdfQ==
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS1jb25maWcuaW50ZXJmYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9xZC11aS9zcmMvbGliL3BhZ2UvbW9kZWwvcGFnZS1jb25maWcuaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRZE1lbnVCdXR0b25BY3Rpb25Db25maWcgfSBmcm9tICcuLi8uLi9idXR0b24vbW9kZWwvYnV0dG9uLWNvbmZpZyc7XG5pbXBvcnQgeyBRZFBhZ2VIZWFkZXJGYWNldENvbmZpZyB9IGZyb20gJy4vcGFnZS1oZWFkZXItZmFjZXQuaW50ZXJmYWNlJztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBvZiBRZFBhZ2UuXG4gKlxuICogQHRlbXBsYXRlIFQgLSBUaGUgdHlwZSBvZiB0aGUgcGFnZSBvYmplY3QgZGF0YVxuICovXG5leHBvcnQgdHlwZSBRZFBhZ2VDb25maWc8VCBleHRlbmRzIG9iamVjdCA9IG9iamVjdD4gPVxuICB8IFFkUGFnZUNvbmZpZ092ZXJ2aWV3XG4gIHwgUWRQYWdlQ29uZmlnQ3JlYXRlPFQ+XG4gIHwgUWRQYWdlQ29uZmlnSW5zcGVjdDxUPlxuICB8IFFkUGFnZUNvbmZpZ0N1c3RvbTxUPjtcblxuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VTZWxlY3RlZENvbnRleHQge1xuICB2YWx1ZTogc3RyaW5nO1xuICBsYWJlbDoge1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFFkUGFnZUNvbnRleHRDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXNjcmlwdGlvbiBmb3IgdGhlIHNwZWNpZmljIGhlYWRlciBmYWNldFxuICAgKi9cbiAgbGFiZWw6IHtcbiAgICAvKipcbiAgICAgKiBAZGVzY3JpcHRpb24gaTE4biBzdHJpbmcgZm9yIHRoZSBkZXNjcmlwdGlvbiwgdXNlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAgICovXG4gICAgaTE4bjogc3RyaW5nO1xuICB9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQWxsb3dzIHRvIGlkZW50aWZ5IHRoZSBjb250ZXh0XG4gICAqL1xuICBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmVnaXN0ZXIgc29tZSBoYW5kbGVyIHRoYXQgaXMgZXhlY3V0ZWQgd2hlbiB0aGUgc2VsZWN0aW9uIGNoYW5nZXMuXG4gICAqL1xuICBjaGFuZ2VkPzogKHNlbGVjdGlvbjogUWRQYWdlU2VsZWN0ZWRDb250ZXh0IHwgUWRQYWdlU2VsZWN0ZWRDb250ZXh0W10gfCBudWxsKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciBhIGNvbnRleHQgd2l0aCBzaW5nbGUgc2VsZWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ29udGV4dENvbmZpZ1NpbmdsZSBleHRlbmRzIFFkUGFnZUNvbnRleHRDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmVzIHRoZSB0eXBlIG9uIGhvdyB0aGUgY29udGV4dCBzZWxlY3Rpb24gaGFwcGVucy5cbiAgICovXG4gIHR5cGU6ICdzaW5nbGUnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQXZhaWxhYmxlIG9wdGlvbnMgZm9yIHNlbGVjdGlvbi5cbiAgICovXG4gIG9wdGlvbnM6IFFkUGFnZVNlbGVjdGVkQ29udGV4dFtdO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyB3aGV0aGVyIHRoZSBjb250ZXh0IG9wdGlvbnMgYXJlIHNlYXJjaGFibGUgZm9yIHRoZSB1c2VyLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaGFzU2VhcmNoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBsYWNlaG9sZGVyIGZvciBzZWFyY2hcbiAgICovXG4gIHNlYXJjaFBsYWNlaG9sZGVyPzoge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBpMThuIHN0cmluZ1xuICAgICAqL1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRpdGxlIGZvciB0aGUgZGlhbG9nIHRoYXQgd2lsbCBiZSBvcGVuZWRcbiAgICovXG4gIHRpdGxlPzoge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBpMThuIHN0cmluZ1xuICAgICAqL1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgYSBjb250ZXh0IHdpdGggbXVsdGkgc2VsZWN0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ29udGV4dENvbmZpZ011bHRpIGV4dGVuZHMgUWRQYWdlQ29udGV4dENvbmZpZ0Jhc2Uge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyZXMgdGhlIHR5cGUgb24gaG93IHRoZSBjb250ZXh0IHNlbGVjdGlvbiBoYXBwZW5zLlxuICAgKi9cbiAgdHlwZTogJ211bHRpJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEF2YWlsYWJsZSBvcHRpb25zIGZvciBzZWxlY3Rpb24uXG4gICAqL1xuICBvcHRpb25zOiBRZFBhZ2VTZWxlY3RlZENvbnRleHRbXTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyZXMgd2hldGhlciB0aGUgY29udGV4dCBvcHRpb25zIGFyZSBzZWFyY2hhYmxlIGZvciB0aGUgdXNlci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGhhc1NlYXJjaD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQbGFjZWhvbGRlciBmb3Igc2VhcmNoXG5cbiAgICovXG4gIHNlYXJjaFBsYWNlaG9sZGVyPzoge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBpMThuIHN0cmluZ1xuICAgICAqL1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFRpdGxlIGZvciB0aGUgZGlhbG9nIHRoYXQgd2lsbCBiZSBvcGVuZWRcbiAgICovXG4gIHRpdGxlPzoge1xuICAgIC8qKlxuICAgICAqIEBkZXNjcmlwdGlvbiBpMThuIHN0cmluZ1xuICAgICAqL1xuICAgIGkxOG46IHN0cmluZztcbiAgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgYSBjb250ZXh0IHdpdGggY3VzdG9tIHNlbGVjdGlvbiAoZS4gZy4geW91ciBvd24gZGlhbG9nKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZUNvbnRleHRDb25maWdDdXN0b20gZXh0ZW5kcyBRZFBhZ2VDb250ZXh0Q29uZmlnQmFzZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyB0aGUgdHlwZSBvbiBob3cgdGhlIGNvbnRleHQgc2VsZWN0aW9uIGhhcHBlbnMuXG4gICAqL1xuICB0eXBlOiAnY3VzdG9tJztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgdG8gb3BlbiBhIGN1c3RvbSBkaWFsb2cgZm9yIHNlbGVjdGlvblxuICAgKi9cbiAgb3BlbjogKCkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJlcyB0aGUgY29udGV4dCB3aXRoIG9uZSBvZiB0aGUgYXZhaWxhYmxlIHR5cGVzXG4gKi9cbmV4cG9ydCB0eXBlIFFkUGFnZUNvbnRleHRDb25maWcgPSBRZFBhZ2VDb250ZXh0Q29uZmlnU2luZ2xlIHwgUWRQYWdlQ29udGV4dENvbmZpZ011bHRpIHwgUWRQYWdlQ29udGV4dENvbmZpZ0N1c3RvbTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQmFzZSBjb25maWd1cmF0aW9uIGZvciBRZFBhZ2UuXG4gKi9cbmludGVyZmFjZSBRZFBhZ2VDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUaXRsZSBvZiB0aGUgcGFnZS5cbiAgICovXG4gIHRpdGxlOiBRZFBhZ2VUaXRsZTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhpZGVzIGNvbnRleHRzIGZyb20gYmVpbmcgc2hvd24uIFRoZSBDb250ZXh0U2VydmljZSB3aWxsIHN0aWxsIHdvcmsgaW4gdGhlIGJhY2tncm91bmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBoaWRlQ29udGV4dHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGFiZWwgZm9yIHRoZSBtZW51IGJ1dHRvbiBvZiBjdXN0b20gYWN0aW9ucy5cbiAgICovXG4gIGN1c3RvbUFjdGlvbnNMYWJlbD86IFFkUGFnZUN1c3RvbUFjdGlvbnNMYWJlbDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIG92ZXJ2aWV3IHBhZ2UgdHlwZS5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBwYWdlIG9iamVjdCBkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ29uZmlnT3ZlcnZpZXcgZXh0ZW5kcyBRZFBhZ2VDb25maWdCYXNlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQYWdlIFR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgJ292ZXJ2aWV3J1xuICAgKi9cbiAgcGFnZVR5cGU/OiAnb3ZlcnZpZXcnOyAvLyBPcHRpb25hbCB0byBtYWtlIGl0IGRlZmF1bHRcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gc3BlY2lmaWMgdG8gdGhlIG92ZXJ2aWV3IHBhZ2UgdHlwZS5cbiAgICovXG4gIHBhZ2VUeXBlQ29uZmlnPzogUWRQYWdlVHlwZU92ZXJ2aWV3Q29uZmlnO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgY3JlYXRlIHBhZ2UgdHlwZS5cbiAqXG4gKiBAdGVtcGxhdGUgVCAtIFRoZSB0eXBlIG9mIHRoZSBwYWdlIG9iamVjdCBkYXRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ29uZmlnQ3JlYXRlPFQgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+IGV4dGVuZHMgUWRQYWdlQ29uZmlnQmFzZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFnZSBUeXBlXG4gICAqXG4gICAqIEBkZWZhdWx0ICdjcmVhdGUnXG4gICAqL1xuICBwYWdlVHlwZTogJ2NyZWF0ZSc7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIHNwZWNpZmljIHRvIHRoZSBjcmVhdGUgcGFnZSB0eXBlLlxuICAgKi9cbiAgcGFnZVR5cGVDb25maWc/OiBRZFBhZ2VUeXBlQ3JlYXRlQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5mb3JtYXRpb24gcGxhY2VkIGluIHRoZSBoZWFkZXIgb2YgdGhlIHBhZ2UuIENvbmNlcm5zIGN1cnJlbnQgc2hvd24gb2JqZWN0LlxuICAgKi9cbiAgaGVhZGVyRmFjZXRzPzogUWRQYWdlSGVhZGVyRmFjZXRDb25maWc8VD5bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VDb25maWdJbnNwZWN0PFQgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3Q+IGV4dGVuZHMgUWRQYWdlQ29uZmlnQmFzZSB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUGFnZSBUeXBlXG4gICAqXG4gICAqIEBkZWZhdWx0ICdpbnNwZWN0J1xuICAgKi9cbiAgcGFnZVR5cGU6ICdpbnNwZWN0JztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gc3BlY2lmaWMgdG8gdGhlIGluc3BlY3QgcGFnZSB0eXBlLlxuICAgKi9cbiAgcGFnZVR5cGVDb25maWc/OiBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIHBsYWNlZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBwYWdlLiBDb25jZXJucyBjdXJyZW50IHNob3duIG9iamVjdC5cbiAgICovXG4gIGhlYWRlckZhY2V0cz86IFFkUGFnZUhlYWRlckZhY2V0Q29uZmlnPFQ+W107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZhY2V0cyBpbiBoZWFkZXIgc2hvdWxkIGJlIGNvbGxhcHNlZCBhbmQgY3VzdG9tIGFjdGlvbnMgYXJlIGluIGEgbWVudS4gVGhpcyBtb2RlIGlzIGRlc2lnbmVkIGZvciB0b3VjaCBkZXZpY2VzIGFuZCBtb2JpbGUgcGhvbmVzIG9ubHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhZGFwdGl2ZU1vZGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZUNvbmZpZ0N1c3RvbTxUIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0PiBleHRlbmRzIFFkUGFnZUNvbmZpZ0Jhc2Uge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFBhZ2UgVHlwZVxuICAgKlxuICAgKiBAZGVmYXVsdCAnY3VzdG9tJ1xuICAgKi9cbiAgcGFnZVR5cGU6ICdjdXN0b20nO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgY3VzdG9tIHBhZ2UgdHlwZS5cbiAgICovXG4gIHBhZ2VUeXBlQ29uZmlnPzogUWRQYWdlVHlwZUN1c3RvbUNvbmZpZztcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEluZm9ybWF0aW9uIHBsYWNlZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBwYWdlLiBDb25jZXJucyBjdXJyZW50IHNob3duIG9iamVjdC5cbiAgICovXG4gIGhlYWRlckZhY2V0cz86IFFkUGFnZUhlYWRlckZhY2V0Q29uZmlnPFQ+W107XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGZhY2V0cyBpbiBoZWFkZXIgc2hvdWxkIGJlIGNvbGxhcHNlZCBhbmQgY3VzdG9tIGFjdGlvbnMgYXJlIGluIGEgbWVudS4gVGhpcyBtb2RlIGlzIGRlc2lnbmVkIGZvciB0b3VjaCBkZXZpY2VzIGFuZCBtb2JpbGUgcGhvbmVzIG9ubHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBhZGFwdGl2ZU1vZGU/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyZXMgdGhlIG92ZXJ2aWV3IHBhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VUeXBlT3ZlcnZpZXdDb25maWcge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEN1c3RvbSBhY3Rpb25zIGZvciB0aGUgaGVhZGVyLlxuICAgKiBZb3UgY2FuIGRlZmluZSBhIGxhYmVsLCBhIGhhbmRsZXIsIGFuZCB5b3UgY2FuIGRpc2FibGUgb3IgaGlkZSB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiAqIElmIHRoZXJlIGV4aXN0cyBtb3JlIHRoYW4gMSBDdXN0b20gQWN0aW9uLCBhIFFkTWVudUJ1dHRvbiB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICpcbiAgICogKiBUaGVzZSBhY3Rpb25zIGFyZSBub3QgaW50ZW5kZWQgdG8gaW5mbHVlbmNlIHRoZSBjb3JlIHByb2Nlc3MgZmxvdyBvciBtYW5pcHVsYXRlIHRoZSBvYmplY3QgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgc2hvdWxkIGJlIHVzZWQgZm9yIHNpZGUgZWZmZWN0cywgc3VjaCBhcyB0cmlnZ2VyaW5nIG5vdGlmaWNhdGlvbnMsIHVwZGF0aW5nIGV4dGVybmFsIHNlcnZpY2VzLCBvciBleGVjdXRpbmcgc3VwcGxlbWVudGFyeSB0YXNrcyB0aGF0IGRvIG5vdCBhbHRlciB0aGUgbWFpbiBzdGF0ZSBvZiB0aGUgb2JqZWN0LlxuICAgKi9cbiAgY3VzdG9tQWN0aW9ucz86IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmVzIHRoZSBjcmVhdGUgcGFnZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VUeXBlQ3JlYXRlQ29uZmlnIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgc2F2ZSBkcmFmdCBhY3Rpb24uXG4gICAqL1xuICBzYXZlRHJhZnQ/OiBRZFBhZ2VTYXZlRHJhZnRBY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgY2FuY2VsIGJ1dHRvbi5cbiAgICovXG4gIGNhbmNlbDogUWRQYWdlQ2FuY2VsQWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIHN1Ym1pdCBidXR0b24uXG4gICAqL1xuICBzdWJtaXQ6IFFkUGFnZUNyZWF0ZVN1Ym1pdEFjdGlvbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEN1c3RvbSBhY3Rpb25zIGZvciB0aGUgaGVhZGVyLlxuICAgKiBZb3UgY2FuIGRlZmluZSBhIGxhYmVsLCBhIGhhbmRsZXIsIGFuZCB5b3UgY2FuIGRpc2FibGUgb3IgaGlkZSB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiAqIElmIHRoZXJlIGV4aXN0cyBtb3JlIHRoYW4gMSBDdXN0b20gQWN0aW9uLCBhIFFkTWVudUJ1dHRvbiB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICpcbiAgICogKiBUaGVzZSBhY3Rpb25zIGFyZSBub3QgaW50ZW5kZWQgdG8gaW5mbHVlbmNlIHRoZSBjb3JlIHByb2Nlc3MgZmxvdyBvciBtYW5pcHVsYXRlIHRoZSBvYmplY3QgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgc2hvdWxkIGJlIHVzZWQgZm9yIHNpZGUgZWZmZWN0cywgc3VjaCBhcyB0cmlnZ2VyaW5nIG5vdGlmaWNhdGlvbnMsIHVwZGF0aW5nIGV4dGVybmFsIHNlcnZpY2VzLCBvciBleGVjdXRpbmcgc3VwcGxlbWVudGFyeSB0YXNrcyB0aGF0IGRvIG5vdCBhbHRlciB0aGUgbWFpbiBzdGF0ZSBvZiB0aGUgb2JqZWN0LlxuICAgKi9cbiAgY3VzdG9tQWN0aW9ucz86IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmVzIHRoZSBpbnNwZWN0IHBhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlVHlwZUluc3BlY3RDb25maWcge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE9wZXJhdGlvbiBtb2RlIGZvciB0aGUgcGFnZS5cbiAgICpcbiAgICogKiBUaGlzIHByb3BlcnR5IGRldGVybWluZXMgdGhlIG1vZGUgaW4gd2hpY2ggdGhlIHBhZ2Ugb3BlcmF0ZXMuIEl0IGNhbiBiZSBlaXRoZXIgJ3ZpZXcnIG9yICdlZGl0Jy5cbiAgICpcbiAgICogKiAqKnZpZXcqKjogVGhlIHBhZ2UgaXMgaW4gcmVhZC1vbmx5IG1vZGUuXG4gICAqICogKiplZGl0Kio6IFRoZSBwYWdlIGFsbG93cyBtb2RpZmljYXRpb25zLlxuICAgKi9cbiAgb3BlcmF0aW9uTW9kZT86IFFkSW5zcGVjdE9wZXJhdGlvbk1vZGU7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBTcGVjaWZpZXMgd2hldGhlciB0aGUgdXNlciBjYW4gZWRpdCB0aGUgb2JqZWN0IG9yIG5vdC5cbiAgICovXG4gIGhpZGVFZGl0PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBlZGl0IGFjdGlvbi5cbiAgICovXG4gIGVkaXQ/OiBRZFBhZ2VFZGl0QWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIHNhdmUgYWN0aW9uLlxuICAgKi9cbiAgc2F2ZT86IFFkUGFnZVNhdmVBY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgY2FuY2VsIGFjdGlvbi5cbiAgICovXG4gIGNhbmNlbDogUWRQYWdlQ2FuY2VsQWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGRlbGV0ZSBhY3Rpb24uXG4gICAqL1xuICBkZWxldGU/OiBRZFBhZ2VEZWxldGVBY3Rpb247XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgYXJjaGl2ZSBhY3Rpb24uXG4gICAqL1xuICBhcmNoaXZlPzogUWRQYWdlQXJjaGl2ZUFjdGlvbjtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBzdWJtaXQgYWN0aW9uLlxuICAgKi9cbiAgc3VibWl0PzogUWRQYWdlU3VibWl0QWN0aW9uO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQ3VzdG9tIGFjdGlvbnMgZm9yIHRoZSBoZWFkZXIuXG4gICAqIFlvdSBjYW4gZGVmaW5lIGEgbGFiZWwsIGEgaGFuZGxlciwgYW5kIHlvdSBjYW4gZGlzYWJsZSBvciBoaWRlIHRoZSBhY3Rpb24uXG4gICAqXG4gICAqICogSWYgdGhlcmUgZXhpc3RzIG1vcmUgdGhhbiAxIEN1c3RvbSBBY3Rpb24sIGEgUWRNZW51QnV0dG9uIHdpbGwgYmUgZGlzcGxheWVkLlxuICAgKlxuICAgKiAqIEluIHRoZSBcIkluc3BlY3RcIiBwYWdlIHR5cGUsIHlvdSBjYW4gYXNzaWduIGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBvcGVyYXRpb24gbW9kZXMgXCJ2aWV3XCIgb3IgXCJlZGl0LlwiIEJ5IGRlZmF1bHQsIHRoZSBhY3Rpb24gaXMgYWN0aXZlIGluIGJvdGggbW9kZXMuXG4gICAqXG4gICAqICogVGhlc2UgYWN0aW9ucyBhcmUgbm90IGludGVuZGVkIHRvIGluZmx1ZW5jZSB0aGUgY29yZSBwcm9jZXNzIGZsb3cgb3IgbWFuaXB1bGF0ZSB0aGUgb2JqZWN0IGRpcmVjdGx5LiBJbnN0ZWFkLCB0aGV5IHNob3VsZCBiZSB1c2VkIGZvciBzaWRlIGVmZmVjdHMsIHN1Y2ggYXMgdHJpZ2dlcmluZyBub3RpZmljYXRpb25zLCB1cGRhdGluZyBleHRlcm5hbCBzZXJ2aWNlcywgb3IgZXhlY3V0aW5nIHN1cHBsZW1lbnRhcnkgdGFza3MgdGhhdCBkbyBub3QgYWx0ZXIgdGhlIG1haW4gc3RhdGUgb2YgdGhlIG9iamVjdC5cbiAgICovXG4gIGN1c3RvbUFjdGlvbnM/OiAoUWRNZW51QnV0dG9uQWN0aW9uQ29uZmlnICYgeyBvcGVyYXRpb25Nb2RlPzogUWRJbnNwZWN0T3BlcmF0aW9uTW9kZSB9KVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZVR5cGVDdXN0b21Db25maWcge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEN1c3RvbSBhY3Rpb25zIGZvciB0aGUgaGVhZGVyLlxuICAgKiBZb3UgY2FuIGRlZmluZSBhIGxhYmVsLCBhIGhhbmRsZXIsIGFuZCB5b3UgY2FuIGRpc2FibGUgb3IgaGlkZSB0aGUgYWN0aW9uLlxuICAgKlxuICAgKiAqIElmIHRoZXJlIGV4aXN0cyBtb3JlIHRoYW4gMSBDdXN0b20gQWN0aW9uLCBhIFFkTWVudUJ1dHRvbiB3aWxsIGJlIGRpc3BsYXllZC5cbiAgICpcbiAgICogKiBUaGVzZSBhY3Rpb25zIGFyZSBub3QgaW50ZW5kZWQgdG8gaW5mbHVlbmNlIHRoZSBjb3JlIHByb2Nlc3MgZmxvdyBvciBtYW5pcHVsYXRlIHRoZSBvYmplY3QgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgc2hvdWxkIGJlIHVzZWQgZm9yIHNpZGUgZWZmZWN0cywgc3VjaCBhcyB0cmlnZ2VyaW5nIG5vdGlmaWNhdGlvbnMsIHVwZGF0aW5nIGV4dGVybmFsIHNlcnZpY2VzLCBvciBleGVjdXRpbmcgc3VwcGxlbWVudGFyeSB0YXNrcyB0aGF0IGRvIG5vdCBhbHRlciB0aGUgbWFpbiBzdGF0ZSBvZiB0aGUgb2JqZWN0LlxuICAgKi9cbiAgY3VzdG9tQWN0aW9ucz86IFFkTWVudUJ1dHRvbkFjdGlvbkNvbmZpZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZVRpdGxlIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEZWZpbmVzIHRoZSB0cmFuc2xhdGlvbiBrZXlcbiAgICpcbiAgICogKiBAZXhhbXBsZSB7IGkxOG46IFwiaTE4bi5vdmVydmlldy50aXRsZVwifVxuICAgKi9cbiAgaTE4bjogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDb25maWd1cmF0aW9uIGZvciB0aGUgY3VzdG9tIGFjdGlvbnMgbGFiZWwsIHVzZWQgd2hlbiBtdWx0aXBsZSBjdXN0b20gYWN0aW9ucyBleGlzdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VDdXN0b21BY3Rpb25zTGFiZWwge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExhYmVsIGZvciB0aGUgbWVudSBidXR0b24gb2YgY3VzdG9tIGFjdGlvbnMsIHVzZWQgZm9yIHRyYW5zbGF0aW9uLlxuICAgKlxuICAgKiAqIElmIG5vIGN1c3RvbSB0cmFuc2xhdGlvbiBrZXkgaXMgcHJvdmlkZWQsIGEgc3RhbmRhcmQgbGFiZWwgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqICogVGhpcyBsYWJlbCBiZWNvbWVzIHZpc2libGUgaWYgbW9yZSB0aGFuIG9uZSBjdXN0b20gYWN0aW9uIGlzIGRlZmluZWQsIGFzIHRoZSBhY3Rpb25zIHdpbGwgYmUgZ3JvdXBlZCB1bmRlciBhIFFkTWVudUJ1dHRvbiB0aGF0IGRpc3BsYXlzIHRoaXMgbGFiZWwuXG4gICAqL1xuICBpMThuOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIE9wZXJhdGlvbiBtb2RlcyBmb3IgdGhlIGluc3BlY3QgcGFnZS5cbiAqXG4gKiBAZGVmYXVsdCAndmlldydcbiAqL1xuZXhwb3J0IHR5cGUgUWRJbnNwZWN0T3BlcmF0aW9uTW9kZSA9ICd2aWV3JyB8ICdlZGl0JztcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgc2F2ZSBhY3Rpb24sIGluY2x1ZGluZyBvcHRpb25hbCB2YWxpZGF0aW9uIGNvbmZpZ3VyYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlU2F2ZUFjdGlvbiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGFiZWwgZm9yIHRoZSBzYXZlIGFjdGlvbiwgdXNlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqICogSWYgbm8gY3VzdG9tIHRyYW5zbGF0aW9uIGtleSBpcyBwcm92aWRlZCwgYSBzdGFuZGFyZCBsYWJlbCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIGxhYmVsPzogeyBpMThuOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgc2F2ZSBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoZm9ybVZhbHVlcz86IGFueSkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE9wdGlvbmFsIHZhbGlkYXRpb24gZmxhZywgZGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIGZvcm0gdmFsaWRhdGlvbiBpcyByZXF1aXJlZCBiZWZvcmUgc2F2aW5nIGFuZCBlbnN1cmVzIHRoYXQgY2hhbmdlcyBtdXN0IGJlIHByZXNlbnQgaW4gdGhlIGZvcm0gYmVmb3JlIHNhdmluZy5cbiAgICpcbiAgICogKiBCeSBkZWZhdWx0LCB0aGlzIGZsYWcgaXMgc2V0IHRvIHRydWUsIG1lYW5pbmcgdGhhdCB2YWxpZGF0aW9uIGlzIGVuZm9yY2VkLCBhbmQgdGhlIGZvcm0gd2lsbCBvbmx5IHNhdmUgaWYgdGhlcmUgYXJlIGNoYW5nZXMuXG4gICAqXG4gICAqICogSWYgc2V0IHRvIGBmYWxzZWAsIHRoZSBmb3JtIHdpbGwgYmUgc2F2ZWQgd2l0aG91dCB2YWxpZGF0aW9uIGNoZWNrcywgYnV0IGNoYW5nZXMgbXVzdCBzdGlsbCBiZSBwcmVzZW50IHRvIHByb2NlZWQgd2l0aCB0aGUgc2F2ZSBvcGVyYXRpb24uXG4gICAqXG4gICAqICogVGhpcyBmbGFnIGlzIHVzZWZ1bCBpbiBzY2VuYXJpb3Mgd2hlcmUgZm9ybSB2YWxpZGF0aW9uIGlzIG5vdCBuZWVkZWQgb3Igc2hvdWxkIGJlIGJ5cGFzc2VkLCBidXQgaXQgZW5zdXJlcyB0aGF0IG9ubHkgbW9kaWZpZWQgZm9ybXMgY2FuIGJlIHNhdmVkLlxuICAgKi9cbiAgaGFzVmFsaWRhdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgdGhlIHNhZmUgZHJhZnQgYWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZVNhdmVEcmFmdEFjdGlvbiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTGFiZWwgZm9yIHRoZSBzYXZlIGRyYWZ0IGFjdGlvbiwgdXNlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqICogSWYgbm8gY3VzdG9tIHRyYW5zbGF0aW9uIGtleSBpcyBwcm92aWRlZCwgYSBzdGFuZGFyZCBsYWJlbCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIGxhYmVsPzogeyBpMThuOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgc2F2ZSBkcmFmdCBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoKSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBjYW5jZWwgYWN0aW9uLCBpbmNsdWRpbmcgYW4gb3B0aW9uYWwgY29uZmlybWF0aW9uIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ2FuY2VsQWN0aW9uIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMYWJlbCBmb3IgdGhlIGNhbmNlbCBhY3Rpb24sIHVzZWQgZm9yIHRyYW5zbGF0aW9uLlxuICAgKlxuICAgKiAqIElmIG5vIGN1c3RvbSB0cmFuc2xhdGlvbiBrZXkgaXMgcHJvdmlkZWQsIGEgc3RhbmRhcmQgbGFiZWwgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBsYWJlbD86IHsgaTE4bjogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBIYW5kbGVyIGZ1bmN0aW9uIHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIGNhbmNlbCBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoZm9ybVZhbHVlcz86IGFueSkgPT4gdm9pZDtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEFuIG9wdGlvbmFsIGNvbmZpcm1hdGlvbiBtZXNzYWdlIGRpc3BsYXllZCBpbiBhIGRpYWxvZyB3aGVuIHRoZSB1c2VyIGF0dGVtcHRzIHRvIGNhbmNlbCB0aGUgb3BlcmF0aW9uLCB3YXJuaW5nIHRoYXQgYWxsIGNoYW5nZXMgd2lsbCBiZSBkaXNjYXJkZWQuXG4gICAqIElmIG5vIGN1c3RvbSBtZXNzYWdlIGlzIHByb3ZpZGVkLCBhIHN0YW5kYXJkIG1lc3NhZ2Ugd2lsbCBiZSBzaG93biBieSBkZWZhdWx0LlxuICAgKlxuICAgKiAqIFRoZSBjYW5jZWxsYXRpb24gcHJvY2VzcyBjaGVja3Mgd2hldGhlciB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzIGluIHRoZSBmb3JtLiBJZiB0aGVyZSBhcmUgY2hhbmdlcywgdGhlIGRpYWxvZyB3aWxsIGFwcGVhci5cbiAgICpcbiAgICogKiBJZiBubyBjaGFuZ2VzIGFyZSBkZXRlY3RlZCwgdGhlIGNhbmNlbGxhdGlvbiBwcm9jZWVkcyB3aXRob3V0IHNob3dpbmcgdGhlIGNvbmZpcm1hdGlvbiBkaWFsb2cuXG4gICAqL1xuICBjb25maXJtYXRpb25NZXNzYWdlPzogeyBpMThuOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgc3VibWl0IGFjdGlvbiBvbiBjcmVhdGUgcGFnZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUWRQYWdlQ3JlYXRlU3VibWl0QWN0aW9uIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMYWJlbCBmb3IgdGhlIHN1Ym1pdCBhY3Rpb24sIHVzZWQgZm9yIHRyYW5zbGF0aW9uLlxuICAgKlxuICAgKiAqIElmIG5vIGN1c3RvbSB0cmFuc2xhdGlvbiBrZXkgaXMgcHJvdmlkZWQsIGEgc3RhbmRhcmQgbGFiZWwgd2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuXG4gICAqL1xuICBsYWJlbD86IHsgaTE4bjogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBIYW5kbGVyIGZ1bmN0aW9uIHRoYXQgaXMgdHJpZ2dlcmVkIHdoZW4gdGhlIHN1Ym1pdCBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoZm9ybVZhbHVlcz86IGFueSkgPT4gdm9pZDtcbn1cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gSW50ZXJmYWNlIGZvciB0aGUgc3VibWl0IGFjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VTdWJtaXRBY3Rpb24ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIExhYmVsIGZvciB0aGUgc3VibWl0IGFjdGlvbiwgdXNlZCBmb3IgdHJhbnNsYXRpb24uXG4gICAqXG4gICAqICogSWYgbm8gY3VzdG9tIHRyYW5zbGF0aW9uIGtleSBpcyBwcm92aWRlZCwgYSBzdGFuZGFyZCBsYWJlbCB3aWxsIGJlIHVzZWQgYnkgZGVmYXVsdC5cbiAgICovXG4gIGxhYmVsPzogeyBpMThuOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgc3VibWl0IGFjdGlvbiBpcyBleGVjdXRlZC5cbiAgICovXG4gIGhhbmRsZXI6IChmb3JtVmFsdWVzPzogYW55KSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gQnkgZGVmYXVsdCwgdGhlIHZpc2liaWxpdHkgb2YgdGhlIHN1Ym1pdCBidXR0b24gZGVwZW5kcyBvbiB0aGUgcGFnZSB0eXBlIGFuZCB0aGUgb3BlcmF0aW9uIG1vZGUuXG4gICAqIFRvIGNvbXBsZXRlbHkgaGlkZSB0aGUgc3VibWl0IGJ1dHRvbiwgeW91IGNhbiBzZXQgdGhpcyBpc0hpZGRlbiBmbGFnLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgaXNIaWRkZW4/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBlZGl0IGFjdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRZFBhZ2VFZGl0QWN0aW9uIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBMYWJlbCBmb3IgdGhlIGVkaXQgYWN0aW9uLCB1c2VkIGZvciB0cmFuc2xhdGlvbi5cbiAgICpcbiAgICogKiBJZiBubyBjdXN0b20gdHJhbnNsYXRpb24ga2V5IGlzIHByb3ZpZGVkLCBhIHN0YW5kYXJkIGxhYmVsIHdpbGwgYmUgdXNlZCBieSBkZWZhdWx0LlxuICAgKi9cbiAgbGFiZWw/OiB7IGkxOG46IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFuZGxlciBmdW5jdGlvbiB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBlZGl0IGFjdGlvbiBpcyBleGVjdXRlZC5cbiAgICovXG4gIGhhbmRsZXI6IChmb3JtVmFsdWVzPzogYW55KSA9PiB2b2lkO1xufVxuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBJbnRlcmZhY2UgZm9yIHRoZSBkZWxldGUgYWN0aW9uLlxuICpcbiAqICogVGhpcyBhY3Rpb24gaXMgcmVwcmVzZW50ZWQgYXMgYW4gaWNvbiwgc28gaXQgZG9lcyBub3QgcmVxdWlyZSBhIGxhYmVsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZURlbGV0ZUFjdGlvbiB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSGFuZGxlciBmdW5jdGlvbiB0aGF0IGlzIHRyaWdnZXJlZCB3aGVuIHRoZSBkZWxldGUgYWN0aW9uIGlzIGV4ZWN1dGVkLlxuICAgKi9cbiAgaGFuZGxlcjogKGZvcm1WYWx1ZXM/OiBhbnkpID0+IHZvaWQ7XG59XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEludGVyZmFjZSBmb3IgdGhlIGFyY2hpdmUgYWN0aW9uLlxuICpcbiAqICogVGhpcyBhY3Rpb24gaXMgcmVwcmVzZW50ZWQgYXMgYW4gaWNvbiwgc28gaXQgZG9lcyBub3QgcmVxdWlyZSBhIGxhYmVsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFFkUGFnZUFyY2hpdmVBY3Rpb24ge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIEhhbmRsZXIgZnVuY3Rpb24gdGhhdCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgYXJjaGl2ZSBhY3Rpb24gaXMgZXhlY3V0ZWQuXG4gICAqL1xuICBoYW5kbGVyOiAoZm9ybVZhbHVlcz86IGFueSkgPT4gdm9pZDtcbn1cbiJdfQ==
|
|
@@ -2,10 +2,10 @@ import { Component, ContentChild, ContentChildren, EventEmitter, HostBinding, In
|
|
|
2
2
|
import { Subject } from 'rxjs';
|
|
3
3
|
import { takeUntil, tap } from 'rxjs/operators';
|
|
4
4
|
import { QdDialogService, QdDialogSize } from '../dialog/dialog.module';
|
|
5
|
-
import { QdPageStepperComponent } from '../page-stepper/page-stepper.component';
|
|
6
5
|
import { QdPageStepperAdapterDirective } from '../page-stepper/adaptors/page-stepper-adapter.directive';
|
|
7
|
-
import {
|
|
6
|
+
import { QdPageStepperComponent } from '../page-stepper/page-stepper.component';
|
|
8
7
|
import { QdPageTabsAdapterDirective } from '../page-tabs/adaptors/page-tabs-adapter.directive';
|
|
8
|
+
import { QdPageTabsComponent } from '../page-tabs/page-tabs.component';
|
|
9
9
|
import { QdSectionComponent } from '../section/section.component';
|
|
10
10
|
import { QdPageCancelConfirmationDialogComponent } from './cancel-confirmation-dialog/page-cancel-confirmation-dialog.component';
|
|
11
11
|
import { QdPageControlPanelComponent } from './control-panel/page-control-panel.component';
|
|
@@ -241,7 +241,9 @@ import * as i9 from "./object-header/page-object-header.component";
|
|
|
241
241
|
*
|
|
242
242
|
* #### **Create Page**
|
|
243
243
|
*
|
|
244
|
-
* On the create page, a new business case can be created. This page typically includes forms for entering data. The submit button is parameterized with the form data and is validated through the QdPageStepper.
|
|
244
|
+
* On the create page, a new business case can be created. This page typically includes forms for entering data. The submit button is parameterized with the form data and is validated through the QdPageStepper.
|
|
245
|
+
* The click on the submit button should submit the creation of the business case or object. You can define a specific handler in the submit button's configuration to create the object.
|
|
246
|
+
* If only one step is needed, the single-step mode can be used. In single-step mode, the stepper is visually hidden and behaves like a **QdSection**.
|
|
245
247
|
*
|
|
246
248
|
* ```ts
|
|
247
249
|
* const createPageConfig: QdPageConfig<MyObjectType> = {
|
|
@@ -316,7 +318,7 @@ import * as i9 from "./object-header/page-object-header.component";
|
|
|
316
318
|
*
|
|
317
319
|
* #### **Inspect Page**
|
|
318
320
|
*
|
|
319
|
-
* On an inspect page, a specific business case is displayed and may be edited or submitted.
|
|
321
|
+
* On an inspect page, a specific business case is displayed and may be edited or submitted. Depending on your needs you can hide the submit button.
|
|
320
322
|
* In contrast to a create page, an existing object is shown and potentially updated.
|
|
321
323
|
*
|
|
322
324
|
* The page operates in one of two modes - `view` or `edit` - as defined by the `operationMode` configuration key.
|
|
@@ -629,4 +631,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
629
631
|
type: HostBinding,
|
|
630
632
|
args: ['class.has-info-banners']
|
|
631
633
|
}] } });
|
|
632
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3FkLXVpL3NyYy9saWIvcGFnZS9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDeEcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDL0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDakksT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFPckYsT0FBTyxFQUEyQixrQkFBa0IsRUFBc0IsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2SCxPQUFPLEVBQUUseUJBQXlCLEVB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WGEsZUFBZTtrQkFQM0IsU0FBUzsrQkFDRSxTQUFTLGFBR1IsQ0FBQyxtQkFBbUIsRUFBRSx5QkFBeUIsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsQ0FBQyxRQUMxRyxFQUFFLDJCQUEyQixFQUFFLHVCQUF1QixFQUFFLDZCQUE2QixFQUFFLHFCQUFxQixFQUFFO3VPQVFwSCxNQUFNO3NCQURMLEtBQUs7dUJBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFO2dCQU9GLE1BQU07c0JBQTVCLEtBQUs7dUJBQUMsY0FBYztnQkFNckIsb0JBQW9CO3NCQURuQixNQUFNO2dCQUlQLFFBQVE7c0JBRFAsZUFBZTt1QkFBQyxrQkFBa0I7Z0JBSW5DLFlBQVk7c0JBRFgsWUFBWTt1QkFBQywyQkFBMkI7Z0JBSXpDLGdCQUFnQjtzQkFEZixZQUFZO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFJM0QsYUFBYTtzQkFEWixZQUFZO3VCQUFDLG1CQUFtQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFJeEQsdUJBQXVCO3NCQUR0QixZQUFZO3VCQUFDLDZCQUE2QixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFJbEUsb0JBQW9CO3NCQURuQixZQUFZO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFJL0QsV0FBVztzQkFEVixlQUFlO3VCQUFDLHlCQUF5QjtnQkF3QnRDLGFBQWE7c0JBRGhCLFdBQVc7dUJBQUMsa0JBQWtCO2dCQU0zQixjQUFjO3NCQURqQixXQUFXO3VCQUFDLHdCQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgU2ltcGxlQ2hhbmdlc1xufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQgeyBRZERpYWxvZ1NlcnZpY2UsIFFkRGlhbG9nU2l6ZSB9IGZyb20gJy4uL2RpYWxvZy9kaWFsb2cubW9kdWxlJztcbmltcG9ydCB7IFFkUGFnZVN0ZXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi9wYWdlLXN0ZXBwZXIvcGFnZS1zdGVwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRZFBhZ2VTdGVwcGVyQWRhcHRlckRpcmVjdGl2ZSB9IGZyb20gJy4uL3BhZ2Utc3RlcHBlci9hZGFwdG9ycy9wYWdlLXN0ZXBwZXItYWRhcHRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUWRQYWdlVGFic0NvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2UtdGFicy9wYWdlLXRhYnMuY29tcG9uZW50JztcbmltcG9ydCB7IFFkUGFnZVRhYnNBZGFwdGVyRGlyZWN0aXZlIH0gZnJvbSAnLi4vcGFnZS10YWJzL2FkYXB0b3JzL3BhZ2UtdGFicy1hZGFwdGVyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBRZFNlY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi9zZWN0aW9uL3NlY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFFkUGFnZUNhbmNlbENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY2FuY2VsLWNvbmZpcm1hdGlvbi1kaWFsb2cvcGFnZS1jYW5jZWwtY29uZmlybWF0aW9uLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUWRQYWdlQ29udHJvbFBhbmVsQ29tcG9uZW50IH0gZnJvbSAnLi9jb250cm9sLXBhbmVsL3BhZ2UtY29udHJvbC1wYW5lbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUWRQYWdlSW5mb0Jhbm5lckNvbXBvbmVudCB9IGZyb20gJy4vaW5mby1iYW5uZXIvcGFnZS1pbmZvLWJhbm5lci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgUWRJbnNwZWN0T3BlcmF0aW9uTW9kZSxcbiAgUWRQYWdlQ29uZmlnLFxuICBRZFBhZ2VUeXBlQ3JlYXRlQ29uZmlnLFxuICBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZ1xufSBmcm9tICcuL21vZGVsL3BhZ2UtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBRZENyZWF0ZUZvb3RlckFjdGlvbktleSwgUWRGb290ZXJBY3Rpb25UeXBlLCBRZFBhZ2VGb290ZXJBY3Rpb24gfSBmcm9tICcuL21vZGVsL3BhZ2UtZm9vdGVyLWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUWRGb3JtR3JvdXBNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL3NlcnZpY2VzL2Zvcm0tZ3JvdXAtbWFuYWdlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUGFnZUZvb3RlclNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9wYWdlLWZvb3Rlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUGFnZVN0b3JlU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL3NlcnZpY2VzL3BhZ2Utc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBRZFBhZ2VTdWJtaXRBY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvcGFnZS1zdWJtaXQtYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRSZXNvbHZlclRyaWdnZXJTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvcmVzb2x2ZXItdHJpZ2dlci5zZXJ2aWNlJztcblxudHlwZSBQYXJ0aWFsRm9vdGVyQWN0aW9uID0geyBhY3Rpb25LZXk6IFFkQ3JlYXRlRm9vdGVyQWN0aW9uS2V5OyBwYXJ0aWFsQWN0aW9uOiBQYXJ0aWFsPFFkUGFnZUZvb3RlckFjdGlvbj4gfTtcblxuLyoqXG4gKiAqKlFkUGFnZSoqIHNlcnZlcyBhcyB0aGUgY2VudHJhbCBzdHJ1Y3R1cmFsIGVsZW1lbnQgd2l0aGluIHRoZSBoaWVyYXJjaHkgdW5kZXIgdGhlICoqUWRTaGVsbCoqLlxuICogSW50ZWdyYXRpb24gaXMgZG9uZSB0aHJvdWdoIHRoZSBBbmd1bGFyIFJvdXRpbmcgTW9kdWxlLCBhbmQgUWRQYWdlIGlzIGRlc2lnbmVkIHRvIGJlIHJlc3BvbnNpdmUgYWNyb3NzIHZhcmlvdXMgc2NyZWVuIHNpemVzIHJpZ2h0IG91dCBvZiB0aGUgYm94LlxuICpcbiAqICMjIyMgKipQYWdlIFR5cGVzKipcbiAqXG4gKiBRZFBhZ2UgdXNlcyBwYWdlIHR5cGVzIHRvIGRlY2lkZSBob3cgdGhlIHBhZ2UgbG9va3MgYW5kIHdvcmtzLiBFYWNoIHBhZ2UgdHlwZSBoYXMgaXRzIG93biBzZXR0aW5ncyBhbmQgYWN0aW9ucy5cbiAqXG4gKiAtICoqb3ZlcnZpZXcqKjogRGlzcGxheXMgYSBzdW1tYXJ5IG9yIGEgbGlzdCBvZiBvYmplY3RzLCBwcm92aWRpbmcgYW4gb3ZlcnZpZXcgb2YgbXVsdGlwbGUgYnVzaW5lc3MgY2FzZXMuXG4gKiAtICoqY3JlYXRlKio6IEFsbG93cyB0aGUgY3JlYXRpb24gb2YgYSBuZXcgb2JqZWN0LCByZXByZXNlbnRpbmcgYSBidXNpbmVzcyBjYXNlLlxuICogLSAqKmluc3BlY3QqKjogRW5hYmxlcyB2aWV3aW5nLCBlZGl0aW5nLCBhbmQgZXhlY3V0aW5nIGFkZGl0aW9uYWwgYWN0aW9ucyByZWxhdGVkIHRvIHRoZSBvYmplY3QsIHdoaWNoIGFsc28gcmVwcmVzZW50cyBhIGJ1c2luZXNzIGNhc2UuXG4gKiAtICoqY3VzdG9tKio6IFByb3ZpZGVzIGEgd2F5IHRvIGltcGxlbWVudCB1bmlxdWUgZnVuY3Rpb25hbGl0eSB0aGF0IGRvZXNu4oCZdCBmaXQgdGhlIG90aGVyIHByZWRlZmluZWQgcGFnZSB0eXBlcy5cbiAqXG4gKiAqKk5vdGUgdGhhdCB0aGUgJ2N1c3RvbScgcGFnZSB0eXBlIHNob3VsZCBiZSB1c2VkIG9ubHkgYXMgYSBmYWxsYmFjayBmb3IgdmVyeSBzcGVjaWZpYyBjYXNlcy4gSWYgeW91IGVuY291bnRlciBzdWNoIGEgc2l0dWF0aW9uLCBwbGVhc2UgY29udGFjdCB0aGUgUXVhZHJlbCB0ZWFtLioqXG4gKlxuICogIyMjIyAqKkZhY2V0cyoqXG4gKlxuICogVGhlc2UgYXJlIGV4dHJhIHBpZWNlcyBvZiBpbmZvcm1hdGlvbiBzaG93biBpbiB0aGUgcGFnZSBoZWFkZXIuIFRoZXkgZ2l2ZSBjb250ZXh0IHNwZWNpZmljIHRvIHRoZSBjdXJyZW50IG9iamVjdCBtb2RlbCBiZWluZyB2aWV3ZWQgb3IgZWRpdGVkLiBUaGVyZSBhcmUgc2V2ZXJhbCB0eXBlcyBvZiBmYWNldHMsIGluY2x1ZGluZyBgc3RhdHVzYCwgYHZhbHVlYCwgYGNyaXRpY2FsaXR5YCwgYHJlZmVyZW5jZXNgLCBgcHJvZ3Jlc3NgLCBgZGF0ZWAsIGBzaW5nbGVTZWxlY3RgLCBhbmQgYG11bHRpU2VsZWN0YC4gRWFjaCB0eXBlIGhhcyBpdHMgb3duIG9wdGlvbnMuIEZvciBtb3JlIGRldGFpbHMsIHNlZSB0aGUgYFFkUGFnZUhlYWRlckZhY2V0YCBpbnRlcmZhY2UuXG4gKlxuICogIyMjIyAqKkNvbnRleHQqKlxuICpcbiAqIFRoZSBgY29udGV4dGAgYWN0cyBhcyBhIGZpbHRlciB0aGF0IGNhbiBiZSBzZWxlY3RlZCBvbiB0aGUgb3ZlcnZpZXcgcGFnZSBhbmQgcHJvdmlkZXMgdGhlIGJ1c2luZXNzIGNvbnRleHQsIHdoaWNoIHJlbWFpbnMgY29uc2lzdGVudCB0aHJvdWdob3V0IHRoZSBlbnRpcmUgYXBwbGljYXRpb24uIE9uIGNyZWF0ZSBhbmQgaW5zcGVjdCBwYWdlcywgdGhlIGNvbnRleHQgaXMgZGlzcGxheWVkIGFzIHJlYWQtb25seS4gRm9yIG1vcmUgZGV0YWlscywgY2hlY2sgdGhlIGRlZGljYXRlZCBjaGFwdGVyIGluIFN0b3J5Ym9vay5cbiAqXG4gKlxuICogIyMjIyAqKlBhZ2UgSW5mbyBCYW5uZXJzKipcbiAqXG4gKiBUbyBpbnNlcnQgYSBwYWdlIGluZm8gYmFubmVyIHVuZGVyIHRoZSBwYWdlIGhlYWRlciwganVzdCBwdXQgYSBgcWQtcGFnZS1pbmZvLWJhbm5lcmAgY29tcG9uZW50IGluc2lkZSB0aGUgYHFkLXBhZ2VgLiBNdWx0aXBsZSBjb25zZWN1dGl2ZSBpbmZvIGJhbm5lcnMgb2YgdGhlIHNhbWUgdHlwZSB3aWxsIGJlIG1lcmdlZCBpbnRvIG9uZSBiYW5uZXIgY29udGFpbmVyLiBQYWdlIGluZm8gYmFubmVycyBoYXZlIHRoZSBzYW1lIGFwcGVhcmFuY2UgbGlrZSBub3RpZmljYXRpb25zLlxuICpcbiAqICMjIyMgKipDb250cm9sIFBhbmVsKipcbiAqXG4gKiBUaGUgY29udHJvbCBwYW5lbCBpcyBsb2NhdGVkIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBwYWdlIGFuZCBpcyB1c2VkIHRvIGRpc3BsYXkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhbmQgZnVuY3Rpb25zIHJlbGV2YW50IHRvIGEgc3BlY2lmaWMgYnVzaW5lc3MgY2FzZSwgd2hpY2ggaXMgbGlua2VkIHRvIGEgc3BlY2lmaWMgb2JqZWN0IG1vZGVsLiBGb3IgZnVydGhlciBpbmZvcm1hdGlvbiwgcGxlYXNlIGNvbnN1bHQgdGhlIGRlZGljYXRlZCBjaGFwdGVyIGluIFN0b3J5Ym9vay5cbiAqXG4gKiAjIyMjICoqQWN0aW9ucyoqXG4gKlxuICogVGhlc2UgYXJlIGludGVyYWN0aXZlIGVsZW1lbnRzIHRoYXQgcGVyZm9ybSBzcGVjaWZpYyBmdW5jdGlvbnMuIEZ1bmN0aW9ucyBmb3IgdGhlc2UgYWN0aW9ucyBjYW4gYmUgc2V0IHVwIHRocm91Z2ggY29uZmlndXJhdGlvbnMuIEN1c3RvbSBhY3Rpb25zIGNhbiBiZSBhZGRlZCB0byBhbnkgcGFnZSB0eXBlLiBBZGRpdGlvbmFsbHksIGFsbCBhY3Rpb25zIGNhbiBiZSBjb25maWd1cmVkIGFuZCBjdXN0b21pemVkIHdpdGggeW91ciBvd24gdGV4dCwgd2hpY2ggd2lsbCBvdmVycmlkZSB0aGUgZGVmYXVsdCB0ZXh0cy5cbiAqXG4gKiBQbGVhc2UgY2hlY2sgdGhlIHJlbGV2YW50IGludGVyZmFjZXMgZm9yIGVhY2ggcGFnZSB0eXBlOiBgUWRQYWdlQ29uZmlnT3ZlcnZpZXdgLCBgUWRQYWdlQ29uZmlnQ3JlYXRlYCwgYFFkUGFnZUNvbmZpZ0luc3BlY3RgLCBhbmQgYFFkUGFnZUNvbmZpZ0N1c3RvbWAuXG4gKlxuICogIyMjIyAqKlZhbGlkYXRpb24vUGFyYW1ldGVyaXphdGlvbioqXG4gKlxuICogVmFsaWRhdGlvbiBhbmQgcGFyYW1ldGVyaXphdGlvbiBhcmUgY292ZXJlZCBpbiBhIGRlZGljYXRlZCBjaGFwdGVyIGluIHRoZSBTdG9yeWJvb2suIFBsZWFzZSBjaGVjayB0aGUgXCJWYWxpZGF0aW9uXCIgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiAjIyMjICoqUmVzb2x2ZXIqKlxuICpcbiAqIFVzaW5nIGEgcmVzb2x2ZXIgdG8gZmV0Y2ggcGFnZSBvYmplY3QgZGF0YSBpcyBlc3NlbnRpYWwgdG8gdGhlIHBhZ2UgY29uY2VwdC4gQWRkIHRoZSByZXNvbHZlciB0byB0aGUgY29tcG9uZW50J3MgcHJvdmlkZXJzIGFuZCB1c2UgdGhlIGBRRF9QQUdFX09CSkVDVF9SRVNPTFZFUl9UT0tFTmAgdG9rZW4uIFRoaXMgYXBwcm9hY2ggZW5hYmxlcyB0eXBlIHNhZmV0eSBhbmQgdXNlciBmZWVkYmFjayBieSBlZmZlY3RpdmVseSBtYW5hZ2luZyB0aGUgbmVjZXNzYXJ5IGRhdGEgZm9yIHRoZSBwYWdlLlxuICpcbiAqIGBgYHRzXG4gKiBpbnRlcmZhY2UgTXlPYmplY3RNb2RlbCB7XG4gKiAgIC8vIE1ldGFkYXRhIGRpc3BsYXllZCBpbiB0aGUgT2JqZWN0SGVhZGVyXG4gKiAgIHN0YXRlOiBNeVN0YXRlO1xuICogICBjb3VudHJ5T2ZEZXN0aW5hdGlvbjogTXlDb3VudHJ5T2ZEZXN0aW5hdGlvbjtcbiAqICAgLy8gQXBwZWFycyBub3QgaW4gdGhlIE9iamVjdEhlYWRlclxuICogICBwYXlsb2FkOiBNeVBheWxvYWQ7XG4gKiB9XG4gKlxuICogdHlwZSBNeU9iamVjdE1ldGFkYXRhID0gJ3N0YXRlJyB8ICdjb3VudHJ5T2ZEZXN0aW5hdGlvbic7XG4gKlxuICogQEluamVjdGFibGUoKVxuICogY2xhc3MgTXlPYmplY3RNb2RlbFJlc29sdmVyIGltcGxlbWVudHMgUWRQYWdlT2JqZWN0UmVzb2x2ZXI8TXlPYmplY3RNb2RlbD4ge1xuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG4gKlxuICogICByZXNvbHZlKCk6IE9ic2VydmFibGU8TXlPYmplY3RNb2RlbD4ge1xuICogICAgIHJldHVybiB0aGlzLmh0dHBcbiAqICAgICAgIC5nZXQ8TXlPYmplY3RNb2RlbD4oJ215LWFwaScpXG4gKiAgICAgICAucGlwZSh0YXAoKGRhdGE6IE15T2JqZWN0TW9kZWwpID0+IGRvU29tZXRoaW5nV2l0aChkYXRhKSkpO1xuICogICB9XG4gKiB9XG4gKlxuICogQENvbXBvbmVudCh7XG4gKiAgIHNlbGVjdG9yOiAnbXktcGFnZScsXG4gKiAgIHRlbXBsYXRlVXJsOiAnLi9teS1wYWdlLmNvbXBvbmVudC5odG1sJyxcbiAqICAgcHJvdmlkZXJzOiBbXG4gKiAgICAge1xuICogICAgICAgcHJvdmlkZTogUURfUEFHRV9PQkpFQ1RfUkVTT0xWRVJfVE9LRU4sXG4gKiAgICAgICB1c2VDbGFzczogTXlPYmplY3RNb2RlbFJlc29sdmVyXG4gKiAgICAgfVxuICogICBdXG4gKiB9KVxuICogY2xhc3MgTXlQYWdlQ29tcG9uZW50IHtcbiAqICAgcGFnZUNvbmZpZzogUWRQYWdlQ29uZmlnPFBpY2s8TXlPYmplY3RNb2RlbCwgTXlPYmplY3RNZXRhZGF0YT4+ID0ge1xuICogICAgIHRpdGxlOiB7IGkxOG46ICdpMThuLnBhZ2UudGl0bGUnIH0sXG4gKiAgICAgcGFnZVR5cGU6ICdpbnNwZWN0JyxcbiAqICAgICBoZWFkZXJGYWNldHM6IFtcbiAqICAgICAgIHtcbiAqICAgICAgICAgbmFtZTogJ3N0YXR1cycsXG4gKiAgICAgICAgIGxhYmVsOiB7XG4gKiAgICAgICAgICAgaTE4bjogJ2kxOG4uc3RhdHVzLmxhYmVsJ1xuICogICAgICAgICB9LFxuICogICAgICAgICBvcHRpb25zOiB7XG4gKiAgICAgICAgICAgdHlwZTogJ3N0YXR1cydcbiAqICAgICAgICAgfVxuICogICAgICAgfSxcbiAqICAgICAgIHtcbiAqICAgICAgICAgbmFtZTogJ2NvdW50cnlPZkRlc3RpbmF0aW9uJyxcbiAqICAgICAgICAgbGFiZWw6IHtcbiAqICAgICAgICAgICBpMThuOiAnaTE4bi5jb3VudHJ5T2ZEZXN0aW5hdGlvbi5sYWJlbCdcbiAqICAgICAgICAgfSxcbiAqICAgICAgICAgb3B0aW9uczoge1xuICogICAgICAgICAgIHR5cGU6ICd2YWx1ZSdcbiAqICAgICAgICAgfVxuICogICAgICAgfVxuICogICAgIF0sXG4gKiAgICAgcGFnZVR5cGVDb25maWc6IHtcbiAqICAgICAgIGNhbmNlbDoge1xuICogICAgICAgICBoYW5kbGVyOiAoKSA9PiBoYW5kbGVDYW5jZWwoKVxuICogICAgICAgfSxcbiAqICAgICAgIHNhdmU6IHtcbiAqICAgICAgICAgaGFuZGxlcjogKGZvcm1WYWx1ZXMpID0+IGhhbmRsZVNhdmUoZm9ybVZhbHVlcylcbiAqICAgICAgIH1cbiAqICAgICB9XG4gKiAgIH07XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMjICoqVXBkYXRpbmcgRmFjZXRzKipcbiAqXG4gKiBUeXBpY2FsbHksIHRoZSB2YWx1ZXMgb2YgdGhlIGZhY2V0cyBvbiBhIGNyZWF0ZSBvciBpbnNwZWN0IHBhZ2UgYXJlIHNldCB0byByZWFkLW9ubHkuIEhvd2V2ZXIsIHRoZXJlIG1heSBiZSBjYXNlcyB3aGVyZSwgZm9yIGV4YW1wbGUsIGEgc3RhdHVzIGNoYW5nZSBpcyBuZWVkZWQsIHN1Y2ggYXMgdGhyb3VnaCBhIGRpYWxvZy4gRm9yIHRoaXMgcHVycG9zZSwgd2UgaGF2ZSBwcm92aWRlZCBhbiB1cGRhdGUgbWV0aG9kLiBJbiB0aGUgcmVzb2x2ZXIgc2VydmljZSwgZGVmaW5lIGFuIGVtcHR5IG1ldGhvZCBjYWxsZWQgYHVwZGF0ZU1ldGFkYXRhYC4gSW5qZWN0IHRoaXMgc2VydmljZSB1c2luZyBpdHMgdHlwZSwgYW5kIHRoZW4gY2FsbCB0aGUgYHVwZGF0ZU1ldGFkYXRhYCBtZXRob2Qgd2l0aCB0aGUgcmVxdWlyZWQgcGFyYW1ldGVyLlxuICpcbiAqICoqUGxlYXNlIG5vdGU6IFRoZXNlIHZhbHVlcyBzaG91bGQgbm90IGJlIG1vZGlmaWVkIGRpcmVjdGx5IHdpdGhpbiBhIFFkUGFnZS4qKlxuICpcbiAqIGBgYHRzXG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBNeU9iamVjdE1vZGVsUmVzb2x2ZXIgaW1wbGVtZW50cyBRZFBhZ2VPYmplY3RSZXNvbHZlcjxNeU9iamVjdE1vZGVsPiB7XG4gKiAgIGNvbmZpZzogUWRQYWdlT2JqZWN0UmVzb2x2ZXJDb25maWcgPSB7XG4gKiAgICAgLy8geW91ciBjb25maWd1cmF0aW9uIG9wdGlvbnMgaGVyZVxuICogICB9XG4gKlxuICogICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQpIHt9XG4gKlxuICogICByZXNvbHZlKCk6IE9ic2VydmFibGU8TXlPYmplY3RNb2RlbD4ge1xuICogICAgIC8vIHlvdXIgaW1wbGVtZW50YXRpb24gaGVyZVxuICogICB9XG4gKlxuICogICB1cGRhdGVNZXRhZGF0YShtZXRhZGF0YTogUGFydGlhbDxNeU9iamVjdE1vZGVsPikge1xuICogICAgIC8vIGxlYXZlIGVtcHR5IGhlcmUgJiBjYWxsIGluIHlvdXIgY29tcG9uZW50XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgLy8gLi4uXG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHtcbiAqICAgICAgIHByb3ZpZGU6IFFEX1BBR0VfT0JKRUNUX1JFU09MVkVSX1RPS0VOLFxuICogICAgICAgdXNlQ2xhc3M6IE15T2JqZWN0TW9kZWxSZXNvbHZlclxuICogICAgIH1cbiAqICAgXVxuICogfSlcbiAqIGNsYXNzIE15UGFnZUNvbXBvbmVudCB7XG4gKiAgIGNvbnN0cnVjdG9yKEBJbmplY3QoUURfUEFHRV9PQkpFQ1RfUkVTT0xWRVJfVE9LRU4pIHByaXZhdGUgb2JqZWN0UmVzb2x2ZXI6IE15T2JqZWN0TW9kZWxSZXNvbHZlcikge31cbiAqXG4gKiAgIHVwZGF0ZVN0YXR1cygpIHtcbiAqICAgICB0aGlzLm9iamVjdFJlc29sdmVyLnVwZGF0ZU1ldGFkYXRhKHsgc3RhdGU6ICdVcGRhdGVkJyB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKlxuICogIyMjIyAqKk92ZXJ2aWV3IFBhZ2UqKlxuICpcbiAqIE9uIGFuIG92ZXJ2aWV3IHBhZ2UsIGEgbGlzdCBvZiBidXNpbmVzcyBjYXNlcyBjYW4gYmUgZGlzcGxheWVkLiBUeXBpY2FsbHksIHRoaXMgaXMgZG9uZSBpbiBhICoqUWRUYWJsZSoqLCBpbmNsdWRpbmcgZmlsdGVycyBhbmQvb3Igc2VhcmNoIG9wdGlvbnMuIFRoZXJlIGFyZSBhY3Rpb25zIHRoYXQgaGFuZGxlIHJvdXRpbmcgdG8gdGhlIHJlbGF0ZWQgZGV0YWlsIHBhZ2VzLCB3aGVyZSB0aGUgYnVzaW5lc3MgY2FzZXMsIHJlcHJlc2VudGVkIGJ5IGEgYnVzaW5lc3Mgb2JqZWN0IG1vZGVsLCBjYW4gYmUgdmlld2VkLCBlZGl0ZWQsIG9yIG5ld2x5IGNyZWF0ZWQuXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IG92ZXJ2aWV3UGFnZUNvbmZpZzogUWRQYWdlQ29uZmlnPE15T2JqZWN0VHlwZT4gPSB7XG4gKiAgIHRpdGxlOiB7IGkxOG46ICdpMThuLm15LXBhZ2UudGl0bGUnIH0sXG4gKiAgIHBhZ2VUeXBlOiAnb3ZlcnZpZXcnLFxuICogICBwYWdlVHlwZUNvbmZpZzoge1xuICogICAgIGN1c3RvbUFjdGlvbnM6IFtcbiAqICAgICAgIHtcbiAqICAgICAgICAgaTE4bjogJ2kxOG4uY3VzdG9tLmFjdGlvbicsXG4gKiAgICAgICAgIGhhbmRsZXI6ICgpID0+IGRvU29tZXRoaW5nKClcbiAqICAgICAgIH1cbiAqICAgICBdXG4gKiAgIH1cbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBgYGBodG1sXG4gKiA8cWQtcGFnZSBbY29uZmlnXT1cInBhZ2VDb25maWdcIj5cbiAqICAgPHFkLXNlY3Rpb24gW2NvbmZpZ109XCJzZWN0aW9uQ29uZmlnXCI+XG4gKiAgICAgPHFkLXRhYmxlIFtjb25maWddPVwidGFibGVDb25maWdcIj48L3FkLXRhYmxlPlxuICogICA8L3FkLXNlY3Rpb24+XG4gKiA8L3FkLXBhZ2U+XG4gKiBgYGBcbiAqXG4gKiBUbyBjb25maWd1cmUgY29udGV4dHMgZm9yIGEgcGFnZSwgeW91IGNhbiBlYXNpbHkgc2V0IGNvbnRleHRzIGluIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgb3ZlcnZpZXcgcGFnZS4gVGhleSBhcmUgdGhlbiBzZWxlY3RhYmxlIG9uIHRoZSBvdmVydmlldyBwYWdlOlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBvdmVydmlld1BhZ2VDb25maWc6IFFkUGFnZUNvbmZpZzxNeU9iamVjdFR5cGU+ID0ge1xuICogICAvLyAuLi5cbiAqICAgY29udGV4dHM6IFtcbiAqICAgICB7XG4gKiAgICAgICBpZDogJ3R5cGVPZlRyYWZmaWMnLFxuICogICAgICAgbGFiZWw6IHsgaTE4bjogJ1ZlcmtlaHJzYXJ0JyB9LFxuICogICAgICAgdHlwZTogJ3NpbmdsZScsXG4gKiAgICAgICBzZWxlY3RlZDoge1xuICogICAgICAgICBsYWJlbDogeyBpMThuOiAnU2NoaWVuZScgfSxcbiAqICAgICAgICAgdmFsdWU6ICdyYWlsJ1xuICogICAgICAgfSxcbiAqICAgICAgIG9wdGlvbnM6IFtcbiAqICAgICAgICAge1xuICogICAgICAgICAgIHZhbHVlOiAncmFpbCcsXG4gKiAgICAgICAgICAgbGFiZWw6IHsgaTE4bjogJ1NjaGllbmUnIH1cbiAqICAgICAgICAgfSxcbiAqICAgICAgICAge1xuICogICAgICAgICAgIHZhbHVlOiAnYWlyJyxcbiAqICAgICAgICAgICBsYWJlbDogeyBpMThuOiAnTHVmdCcgfVxuICogICAgICAgICB9XG4gKiAgICAgICBdXG4gKiAgICAgfVxuICogICBdXG4gKiAgIC8vIC4uLlxuICogfTtcbiAqIGBgYFxuICpcbiAqICMjIyMgKipDcmVhdGUgUGFnZSoqXG4gKlxuICogT24gdGhlIGNyZWF0ZSBwYWdlLCBhIG5ldyBidXNpbmVzcyBjYXNlIGNhbiBiZSBjcmVhdGVkLiBUaGlzIHBhZ2UgdHlwaWNhbGx5IGluY2x1ZGVzIGZvcm1zIGZvciBlbnRlcmluZyBkYXRhLiBUaGUgc3VibWl0IGJ1dHRvbiBpcyBwYXJhbWV0ZXJpemVkIHdpdGggdGhlIGZvcm0gZGF0YSBhbmQgaXMgdmFsaWRhdGVkIHRocm91Z2ggdGhlIFFkUGFnZVN0ZXBwZXIuIElmIG9ubHkgb25lIHN0ZXAgaXMgbmVlZGVkLCB0aGUgc2luZ2xlLXN0ZXAgbW9kZSBjYW4gYmUgdXNlZC4gSW4gc2luZ2xlLXN0ZXAgbW9kZSwgdGhlIHN0ZXBwZXIgaXMgdmlzdWFsbHkgaGlkZGVuIGFuZCBiZWhhdmVzIGxpa2UgYSAqKlFkU2VjdGlvbioqLlxuICpcbiAqIGBgYHRzXG4gKiBjb25zdCBjcmVhdGVQYWdlQ29uZmlnOiBRZFBhZ2VDb25maWc8TXlPYmplY3RUeXBlPiA9IHtcbiAqICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ucGFnZS50aXRsZScgfSxcbiAqICAgcGFnZVR5cGU6ICdjcmVhdGUnLFxuICogICBwYWdlVHlwZUNvbmZpZzoge1xuICogICAgIHN1Ym1pdDoge1xuICogICAgICAgaGFuZGxlcjogKGZvcm1WYWx1ZXMpID0+IGhhbmRsZVN1Ym1pdChmb3JtVmFsdWVzKVxuICogICAgIH1cbiAqICAgfVxuICogfTtcbiAqIGBgYFxuICpcbiAqIGBgYGh0bWxcbiAqIDwhLS0gRm9yIFwiUXVpY2sgQWRkXCIgdXNlIFBhZ2VTdGVwcGVyIGluIHNpbmdsZS1zdGVwIG1vZGUgLS0+XG4gKiA8cWQtcGFnZSBbY29uZmlnXT1cInBhZ2VDb25maWdcIj5cbiAqICAgPHFkLXBhZ2Utc3RlcHBlciBbY29uZmlnXT1cInN0ZXBwZXJDb25maWdcIj5cbiAqICAgICA8cWQtcGFnZS1zdGVwIFtjb25maWddPVwic3RlcENvbmZpZ09uZVwiPlxuICogICAgICAgPHFkLXNlY3Rpb24gW2NvbmZpZ109XCJzZWN0aW9uQ29uZmlnXCI+XG4gKiAgICAgICAgIDxxZC1ncmlkIFtjb25maWddPVwiZ3JpZENvbmZpZ1wiIFtmb3JtR3JvdXBdPVwibXlGb3Jtc1wiIHFkQ29ubmVjdEZvcm1TdGF0ZVRvUGFnZT1cIm15Rm9ybXNcIj5cbiAqICAgICAgICAgICA8IS0tIHlvdXIgcWQtZm9ybS1jb21wb25lbnRzIGhlcmUgLS0+XG4gKiAgICAgICAgIDwvcWQtZ3JpZD5cbiAqICAgICAgIDwvcWQtc2VjdGlvbj5cbiAqICAgICA8L3FkLXBhZ2Utc3RlcD5cbiAqICAgPC9xZC1wYWdlLXN0ZXBwZXI+XG4gKiA8L3FkLXBhZ2U+XG4gKlxuICogPCEtLSBXaXRoIFBhZ2VTdGVwcGVyIHVzaW5nIG11bHRpcGxlIHN0ZXBzIC0tPlxuICogPHFkLXBhZ2UgW2NvbmZpZ109XCJwYWdlQ29uZmlnXCI+XG4gKiAgIDxxZC1wYWdlLXN0ZXBwZXIgW2NvbmZpZ109XCJzdGVwcGVyQ29uZmlnXCI+XG4gKiAgICAgPHFkLXBhZ2Utc3RlcCBbY29uZmlnXT1cInN0ZXBDb25maWdPbmVcIj5cbiAqICAgICAgIDxxZC1zZWN0aW9uIFtjb25maWddPVwic2VjdGlvbkNvbmZpZ1wiPlxuICogICAgICAgICA8cWQtZ3JpZCBbY29uZmlnXT1cImdyaWRDb25maWdcIiBbZm9ybUdyb3VwXT1cIm15Rm9ybXNPbmVcIiBxZENvbm5lY3RGb3JtU3RhdGVUb1BhZ2U9XCJteUZvcm1zT25lXCI+XG4gKiAgICAgICAgICAgPCEtLSB5b3VyIHFkLWZvcm0tY29tcG9uZW50cyBoZXJlIC0tPlxuICogICAgICAgICA8L3FkLWdyaWQ+XG4gKiAgICAgICA8L3FkLXNlY3Rpb24+XG4gKiAgICAgPC9xZC1wYWdlLXN0ZXA+XG4gKiAgICAgPHFkLXBhZ2Utc3RlcCBbY29uZmlnXT1cInN0ZXBDb25maWdUd29cIj5cbiAqICAgICAgIDxxZC1zZWN0aW9uIFtjb25maWddPVwic2VjdGlvbkNvbmZpZ1wiPlxuICogICAgICAgICA8cWQtZ3JpZCBbY29uZmlnXT1cImdyaWRDb25maWdcIiBbZm9ybUdyb3VwXT1cIm15Rm9ybXNUd29cIiBxZENvbm5lY3RGb3JtU3RhdGVUb1BhZ2U9XCJteUZvcm1zVHdvXCI+XG4gKiAgICAgICAgICAgPCEtLSB5b3VyIHFkLWZvcm0tY29tcG9uZW50cyBoZXJlIC0tPlxuICogICAgICAgICA8L3FkLWdyaWQ+XG4gKiAgICAgICA8L3FkLXNlY3Rpb24+XG4gKiAgICAgPC9xZC1wYWdlLXN0ZXA+XG4gKiAgIDwvcWQtcGFnZS1zdGVwcGVyPlxuICogPC9xZC1wYWdlPlxuICogYGBgXG4gKlxuICogVG8gYWxsb3cgcmVzb2x2aW5nIGFzeW5jaHJvbm91cyBvcGVyYXRpb25zIHdoZW4gZ29pbmcgdG8gbmV4dCBzdGVwLCB5b3UgY2FuIHByb3ZpZGUgYSByZXNvbHZlciBvZiB0eXBlIFFkUGFnZVN0ZXBSZXNvbHZlcjpcbiAqXG4gKiBgYGB0c1xuICogY2xhc3MgTXlSZXNvbHZlciBpbXBsZW1lbnRzIFFkUGFnZVN0ZXBSZXNvbHZlciB7XG4gKiAgIC4uLlxuICpcbiAqICAgcmVzb2x2ZShpbmRleDogbnVtYmVyKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gKiAgICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KFwibmV4dC1zdGVwLmNvbVwiKTtcbiAqICAgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICBzZWxlY3RvcjogJ3FkLXVpLXBhZ2UtY3JlYXRlJyxcbiAqICAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS5jb21wb25lbnQuaHRtbCcsXG4gKiAgIHByb3ZpZGVyczogW1xuICogICAgIHtcbiAqICAgICAgIHByb3ZpZGU6IFFEX1BBR0VfU1RFUF9SRVNPTFZFUl9UT0tFTixcbiAqICAgICAgIHVzZUNsYXNzOiBQYWdlU3RlcFJlc29sdmVyXG4gKiAgICAgfVxuICogICBdXG4gKiB9KVxuICogZXhwb3J0IGNsYXNzIENyZWF0ZUNvbXBvbmVudCB7XG4gKiBgYGBcbiAqXG4gKiAjIyMjICoqSW5zcGVjdCBQYWdlKipcbiAqXG4gKiBPbiBhbiBpbnNwZWN0IHBhZ2UsIGEgc3BlY2lmaWMgYnVzaW5lc3MgY2FzZSBpcyBkaXNwbGF5ZWQgYW5kIG1heSBiZSBlZGl0ZWQgb3Igc3VibWl0dGVkLlxuICogSW4gY29udHJhc3QgdG8gYSBjcmVhdGUgcGFnZSwgYW4gZXhpc3Rpbmcgb2JqZWN0IGlzIHNob3duIGFuZCBwb3RlbnRpYWxseSB1cGRhdGVkLlxuICpcbiAqIFRoZSBwYWdlIG9wZXJhdGVzIGluIG9uZSBvZiB0d28gbW9kZXMgLSBgdmlld2Agb3IgYGVkaXRgIC0gYXMgZGVmaW5lZCBieSB0aGUgYG9wZXJhdGlvbk1vZGVgIGNvbmZpZ3VyYXRpb24ga2V5LlxuICpcbiAqIFRoZSBgdmlld29ubHlgIGJlaGF2aW9yIGRlZmluZWQgYnkgdGhlIG9wZXJhdGlvbiBtb2RlIGlzIGF1dG9tYXRpY2FsbHkgcHJvcGFnYXRlZCB0byBhbGwgbmVzdGVkIFFkU2VjdGlvbiBjb21wb25lbnRzIHRoYXQgYXJlIHBhcnQgb2YgYSBRTFMsXG4gKiBhcyB3ZWxsIGFzIHRvIGZ1bmN0aW9uYWwgcGF0dGVybnMgc3VjaCBhcyBRZFRhYmxlLCBRZFRyZWUsIFFkRmlsZUNvbGxlY3RvciwgYW5kIFFkUXVpY2tFZGl0LlxuICogQWxsIGZvcm1zIGFyZSByZW5kZXJlZCBlaXRoZXIgaW4gdmlld29ubHkgb3IgZWRpdGFibGUgbW9kZSBhY2NvcmRpbmdseS5cbiAqXG4gKiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBleHBsaWNpdGx5IG92ZXJyaWRkZW4gaW4gZWFjaCBjb21wb25lbnTigJlzIGNvbmZpZ3VyYXRpb24gLSBmb3IgZXhhbXBsZSwgdG8gYWxsb3cgY2VydGFpbiBmaWVsZHMgdG8gcmVtYWluIGVkaXRhYmxlLlxuICpcbiAqIC0gKip2aWV3Kio6IEEgc3VibWl0IGFjdGlvbiBjYW4gb3B0aW9uYWxseSBiZSBhZGRlZCBmb3IgcHJvY2Vzcy1yZWxhdGVkIG9wZXJhdGlvbnMgc3VjaCBhcyBzdGF0dXMgdXBkYXRlcy5cbiAqICAgVGhlIGFjdGlvbiByZWNlaXZlcyB0aGUgY3VycmVudCBmb3JtIHZhbHVlcyBhbmQgc3VwcG9ydHMgdmFsaWRhdGlvbiBhbmQgcGFyYW1ldGVyaXphdGlvbi5cbiAqXG4gKiAtICoqZWRpdCoqOiBUeXBpY2FsbHkgaW5jbHVkZXMgYSBzYXZlIGJ1dHRvbiB0byBwZXJzaXN0IGNoYW5nZXMgbWFkZSBpbiBlZGl0YWJsZSBmaWVsZHMuXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IGluc3BlY3RQYWdlQ29uZmlnOiBRZFBhZ2VDb25maWc8TXlPYmplY3RUeXBlPiA9IHtcbiAqICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ucGFnZS50aXRsZScgfSxcbiAqICAgcGFnZVR5cGU6ICdpbnNwZWN0JyxcbiAqICAgcGFnZVR5cGVDb25maWc6IHtcbiAqICAgICBvcGVyYXRpb25Nb2RlOiAnZWRpdCcsXG4gKiAgICAgY2FuY2VsOiB7XG4gKiAgICAgICBoYW5kbGVyOiAoKSA9PiBoYW5kbGVDYW5jZWwoKVxuICogICAgIH0sXG4gKiAgICAgc2F2ZToge1xuICogICAgICAgaGFuZGxlcjogKGZvcm1WYWx1ZXMpID0+IGhhbmRsZVNhdmUoZm9ybVZhbHVlcylcbiAqICAgICB9XG4gKiAgIH1cbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBgYGBodG1sXG4gKiA8IS0tIHdpdGggU2VjdGlvbiAtLT5cbiAqIDxxZC1wYWdlIFtjb25maWddPVwicGFnZUNvbmZpZ1wiPlxuICogICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICA8cWQtZ3JpZCBbY29uZmlnXT1cImdyaWRDb25maWdcIiBbZm9ybUdyb3VwXT1cIm15Rm9ybXNcIiBxZENvbm5lY3RGb3JtU3RhdGVUb1BhZ2U9XCJteUZvcm1zXCI+XG4gKiAgICAgICA8IS0tIHlvdXIgcWQtZm9ybS1jb21wb25lbnRzIGhlcmUgLS0+XG4gKiAgICAgPC9xZC1ncmlkPlxuICogICA8L3FkLXNlY3Rpb24+XG4gKiA8L3FkLXBhZ2U+XG4gKlxuICogPCEtLSB3aXRoIFBhZ2VUYWJzIC0tPlxuICogPHFkLXBhZ2UgW2NvbmZpZ109XCJwYWdlQ29uZmlnXCI+XG4gKiAgIDxxZC1wYWdlLXRhYnMgW2NvbmZpZ109XCJzdGVwcGVyQ29uZmlnXCI+XG4gKiAgICAgPHFkLXBhZ2UtdGFiIFtjb25maWddPVwidGFiQ29uZmlnT25lXCI+XG4gKiAgICAgICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICAgICAgPHFkLWdyaWQgW2NvbmZpZ109XCJncmlkQ29uZmlnXCIgW2Zvcm1Hcm91cF09XCJteUZvcm1zT25lXCIgcWRDb25uZWN0Rm9ybVN0YXRlVG9QYWdlPVwibXlGb3Jtc09uZVwiPlxuICogICAgICAgICAgIDwhLS0geW91ciBxZC1mb3JtLWNvbXBvbmVudHMgaGVyZSAtLT5cbiAqICAgICAgICAgPC9xZC1ncmlkPlxuICogICAgICAgPC9xZC1zZWN0aW9uPlxuICogICAgIDwvcWQtcGFnZS10YWI+XG4gKiAgICAgPHFkLXBhZ2UtdGFiIFtjb25maWddPVwidGFiQ29uZmlnVHdvXCI+XG4gKiAgICAgICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICAgICAgPHFkLWdyaWQgW2NvbmZpZ109XCJncmlkQ29uZmlnXCIgW2Zvcm1Hcm91cF09XCJteUZvcm1zVHdvXCIgcWRDb25uZWN0Rm9ybVN0YXRlVG9QYWdlPVwibXlGb3Jtc1R3b1wiPlxuICogICAgICAgICAgIDwhLS0geW91ciBxZC1mb3JtLWNvbXBvbmVudHMgaGVyZSAtLT5cbiAqICAgICAgICAgPC9xZC1ncmlkPlxuICogICAgICAgPC9xZC1zZWN0aW9uPlxuICogICAgIDwvcWQtcGFnZS10YWI+XG4gKiAgIDwvcWQtcGFnZS10YWJzPlxuICogPC9xZC1wYWdlPlxuICogYGBgXG4gKlxuICogIyMjIyAqKkN1c3RvbSBQYWdlKipcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgY3VzdG9tUGFnZUNvbmZpZzogUWRQYWdlQ29uZmlnPE15T2JqZWN0VHlwZT4gPSB7XG4gKiAgIHRpdGxlOiB7IGkxOG46ICdpMThuLnBhZ2UudGl0bGUnIH0sXG4gKiAgIHBhZ2VUeXBlOiAnY3VzdG9tJyxcbiAqICAgcGFnZVR5cGVDb25maWc6IHtcbiAqICAgICBjdXN0b21BY3Rpb25zOiBbXG4gKiAgICAgICB7XG4gKiAgICAgICAgIGkxOG46ICdpMThuLmN1c3RvbS5hY3Rpb24nLFxuICogICAgICAgICBoYW5kbGVyOiAoKSA9PiBkb1NvbWV0aGluZygpXG4gKiAgICAgICB9XG4gKiAgICAgXVxuICogICB9XG4gKiB9O1xuICogYGBgXG4gKlxuICogYGBgaHRtbFxuICogPHFkLXBhZ2UgW2NvbmZpZ109XCJwYWdlQ29uZmlnXCI+XG4gKiAgIDwhLS0gUGxhY2UgY29udGVudCBoZXJlIHRoYXQgZG9lc27igJl0IGZpdCB0aGUgb3RoZXIgcGFnZSB0eXBlcyAtLT5cbiAqIDwvcWQtcGFnZT5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1FkUGFnZUZvb3RlclNlcnZpY2UsIFFkRm9ybUdyb3VwTWFuYWdlclNlcnZpY2UsIFFkUGFnZVN1Ym1pdEFjdGlvblNlcnZpY2UsIFFkUmVzb2x2ZXJUcmlnZ2VyU2VydmljZV0sXG4gIGhvc3Q6IHsgJ1tjbGFzcy5oYXMtY29udHJvbC1wYW5lbF0nOiAnaXNDb250cm9sUGFuZWxWaXNpYmxlJywgJ1tjbGFzcy5jb250cm9sLXBhbmVsLWJyb2FkXSc6ICdpc0NvbnRyb2xQYW5lbEJyb2FkJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkUGFnZUNvbXBvbmVudDxUIGV4dGVuZHMgb2JqZWN0PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgUWRQYWdlIGNvbXBvbmVudCwgaW5jbHVkaW5nIHRoZSBwYWdlIHR5cGUsXG4gICAqIHRpdGxlLCBhbmQgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZm9yIGVhY2ggdHlwZSBvZiBwYWdlLlxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgY29uZmlnITogUWRQYWdlQ29uZmlnPFQ+O1xuXG4gIC8qKlxuICAgKiBBIHN0YXRpYyB0ZXN0IElEIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cyBjYW4gYmUgc2V0LiA8YnIgLz5cbiAgICogVGhlIHZhbHVlIGZvciB0aGUgSFRNTCBhdHRyaWJ1dGUgW2RhdGEtdGVzdC1pZF0uXG4gICAqL1xuICBASW5wdXQoJ2RhdGEtdGVzdC1pZCcpIHRlc3RJZD8gPSAncGFnZSc7XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZW1pdHRlZCB3aGVuIHRoZSBvcGVyYXRpb24gbW9kZSBvZiB0aGUgaW5zcGVjdCBwYWdlIGlzIGNoYW5nZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb3BlcmF0aW9uTW9kZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFFkSW5zcGVjdE9wZXJhdGlvbk1vZGU+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihRZFNlY3Rpb25Db21wb25lbnQpXG4gIHNlY3Rpb25zITogUXVlcnlMaXN0PFFkU2VjdGlvbkNvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZChRZFBhZ2VDb250cm9sUGFuZWxDb21wb25lbnQpXG4gIGNvbnRyb2xQYW5lbCE6IFFkUGFnZUNvbnRyb2xQYW5lbENvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKFFkUGFnZVN0ZXBwZXJDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgc3RlcHBlckNvbXBvbmVudD86IFFkUGFnZVN0ZXBwZXJDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChRZFBhZ2VUYWJzQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHRhYnNDb21wb25lbnQ/OiBRZFBhZ2VUYWJzQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGQoUWRQYWdlU3RlcHBlckFkYXB0ZXJEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgc3RlcHBlckFkYXB0ZXJEaXJlY3RpdmU/OiBRZFBhZ2VTdGVwcGVyQWRhcHRlckRpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkKFFkUGFnZVRhYnNBZGFwdGVyRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHRhYnNBZGFwdGVyRGlyZWN0aXZlPzogUWRQYWdlVGFic0FkYXB0ZXJEaXJlY3RpdmU7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihRZFBhZ2VJbmZvQmFubmVyQ29tcG9uZW50KVxuICBpbmZvQmFubmVycyE6IFF1ZXJ5TGlzdDxRZFBhZ2VJbmZvQmFubmVyQ29tcG9uZW50PjtcblxuICBmb290ZXJIYXNDb250ZW50JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNGb290ZXJWaXNpYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcm9qZWN0aW9uR3VhcmRNZXNzYWdlID1cbiAgICAnUUQtVUkgfCBRZFBhZ2UgLSBUaGlzIGNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZC4gUGxlYXNlIHVzZSBRZFNlY3Rpb25BZGFwdGVyRGlyZWN0aXZlIGZvciBjdXN0b20gY29udGVudCBwcm9qZWN0aW9uLic7XG5cbiAgcHJpdmF0ZSBfaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIF9kZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBnZXQgaXNDb250cm9sUGFuZWxWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xQYW5lbCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY29udHJvbFBhbmVsLmNvbmZpZz8uaXNIaWRkZW4gIT09IHRydWU7XG4gIH1cblxuICBnZXQgaXNDb250cm9sUGFuZWxCcm9hZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sUGFuZWw/LmNvbmZpZz8ud2lkdGggPT09ICdicm9hZCc7XG4gIH1cblxuICBnZXQgaGFzTmF2aWdhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5zdGVwcGVyQ29tcG9uZW50IHx8IHRoaXMudGFic0NvbXBvbmVudCB8fCB0aGlzLnN0ZXBwZXJBZGFwdGVyRGlyZWN0aXZlIHx8IHRoaXMudGFic0FkYXB0ZXJEaXJlY3RpdmUpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtZm9vdGVyJylcbiAgZ2V0IGZvb3RlclZpc2libGUoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaXNGb290ZXJWaXNpYmxlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtaW5mby1iYW5uZXJzJylcbiAgZ2V0IGhhc0luZm9CYW5uZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluZm9CYW5uZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VTdG9yZVNlcnZpY2U6IFFkUGFnZVN0b3JlU2VydmljZTxUPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvb3RlclNlcnZpY2U6IFFkUGFnZUZvb3RlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtR3JvdXBNYW5hZ2VyU2VydmljZTogUWRGb3JtR3JvdXBNYW5hZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN1Ym1pdEFjdGlvblNlcnZpY2U6IFFkUGFnZVN1Ym1pdEFjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IFFkRGlhbG9nU2VydmljZVxuICApIHtcbiAgICB0aGlzLmZvb3Rlckhhc0NvbnRlbnQkID0gdGhpcy5mb290ZXJTZXJ2aWNlLmZvb3Rlckhhc0NvbnRlbnQkO1xuICAgIHRoaXMuZm9vdGVySGFzQ29udGVudCQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpLnN1YnNjcmliZShpc1Zpc2libGUgPT4gKHRoaXMuaXNGb290ZXJWaXNpYmxlID0gaXNWaXNpYmxlKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrQ29uZmlnVmFsaWRpdHkoKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZykgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLmluaXRQYWdlU3RhdGUodGhpcy5jb25maWcpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IGNvbmZpZ0NoYW5nZSA9IGNoYW5nZXNbJ2NvbmZpZyddO1xuXG4gICAgaWYgKCFjb25maWdDaGFuZ2UpIHJldHVybjtcblxuICAgIGNvbnN0IHsgY3VycmVudFZhbHVlOiBjdXJyLCBwcmV2aW91c1ZhbHVlOiBwcmV2IH0gPSBjb25maWdDaGFuZ2U7XG5cbiAgICBpZiAoY3Vycj8ucGFnZVR5cGVDb25maWc/LnN1Ym1pdD8uaXNIaWRkZW4gIT09IHByZXY/LnBhZ2VUeXBlQ29uZmlnPy5zdWJtaXQ/LmlzSGlkZGVuKVxuICAgICAgdGhpcy5mb290ZXJTZXJ2aWNlLnVwZGF0ZUFjdGlvbnMoW1xuICAgICAgICB7IGFjdGlvbktleTogJ3N1Ym1pdCcsIHBhcnRpYWxBY3Rpb246IHsgaXNWaXNpYmxlOiAhY3Vycj8ucGFnZVR5cGVDb25maWc/LnN1Ym1pdD8uaXNIaWRkZW4gfSB9XG4gICAgICBdKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdjcmVhdGUnKSB0aGlzLnNldHVwQ3JlYXRlUGFnZUZvb3RlckFjdGlvbnMoKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2NyZWF0ZScgJiYgdGhpcy5jb25maWc/LnBhZ2VUeXBlQ29uZmlnPy5jYW5jZWwgIT09IHVuZGVmaW5lZClcbiAgICAgIHRoaXMuaGFuZGxlQ2FuY2VsQWN0aW9uV2l0aEZvcm1DaGFuZ2VzKCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdjcmVhdGUnICYmIHRoaXMuY29uZmlnPy5wYWdlVHlwZUNvbmZpZz8uc2F2ZURyYWZ0ICE9PSB1bmRlZmluZWQpXG4gICAgICB0aGlzLmluaXRTYXZlRHJhZnRGb290ZXJBY3Rpb24oKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2luc3BlY3QnKVxuICAgICAgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLmlzVmlld29ubHkkXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSlcbiAgICAgICAgLnN1YnNjcmliZShpc1ZpZXdvbmx5ID0+XG4gICAgICAgICAgdGhpcy51cGRhdGVJbnNwZWN0UGFnZU9wZXJhdGlvbk1vZGUoXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyxcbiAgICAgICAgICAgIGlzVmlld29ubHkgPyAndmlldycgOiAnZWRpdCdcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tDb25maWdWYWxpZGl0eSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnKSBjb25zb2xlLndhcm4oJ1FkVWkgfCBRZFBhZ2VDb21wb25lbnQgLSBUbyBjb25maWd1cmUgdGhlIHBhZ2UgeW91IHNob3VsZCBwcm92aWRlIGEgdmFsaWQgY29uZmlnLicpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENyZWF0ZVBhZ2VGb290ZXJBY3Rpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhZ2VUeXBlQ29uZmlnID0gdGhpcy5jb25maWc/LnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVDcmVhdGVDb25maWc7XG4gICAgY29uc3QgYWN0aW9uS2V5czogUWRDcmVhdGVGb290ZXJBY3Rpb25LZXlbXSA9IFsnc2F2ZURyYWZ0JywgJ2NhbmNlbCcsICdzdWJtaXQnXTtcbiAgICBjb25zdCBhY3Rpb25zOiBQYXJ0aWFsRm9vdGVyQWN0aW9uW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgYWN0aW9uS2V5IG9mIGFjdGlvbktleXMpIHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHBhZ2VUeXBlQ29uZmlnW2FjdGlvbktleV07XG5cbiAgICAgIGlmICghYWN0aW9uKSBjb250aW51ZTtcblxuICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgYWN0aW9uS2V5LFxuICAgICAgICBwYXJ0aWFsQWN0aW9uOiB7XG4gICAgICAgICAgLi4uKGFjdGlvbj8ubGFiZWw/LmkxOG4gPyB7IHRpdGxlSTE4bjogYWN0aW9uLmxhYmVsLmkxOG4gfSA6IHt9KSxcbiAgICAgICAgICBoYW5kbGVyOiB0aGlzLmdlbmVyYXRlRm9vdGVyQWN0aW9uSGFuZGxlcihhY3Rpb24/LmhhbmRsZXIpXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZm9vdGVyU2VydmljZS51cGRhdGVBY3Rpb25zKGFjdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDYW5jZWxBY3Rpb25XaXRoRm9ybUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZVxuICAgICAgLiRoYXNWYWx1ZXNDaGFuZ2VkKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoaGFzQ2hhbmdlZCA9PiB7XG4gICAgICAgIHRoaXMuZm9vdGVyU2VydmljZS51cGRhdGVBY3Rpb25zKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25LZXk6ICdjYW5jZWwnLFxuICAgICAgICAgICAgcGFydGlhbEFjdGlvbjoge1xuICAgICAgICAgICAgICBoYW5kbGVyOiBoYXNDaGFuZ2VkXG4gICAgICAgICAgICAgICAgPyAoKTogdm9pZCA9PiB0aGlzLnNldHVwU3VibWl0QWN0aW9uVmFsaWRhdGlvbigpXG4gICAgICAgICAgICAgICAgOiAoKTogdm9pZCA9PiAodGhpcy5jb25maWc/LnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVDcmVhdGVDb25maWcpPy5jYW5jZWw/LmhhbmRsZXIoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFNhdmVEcmFmdEZvb3RlckFjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdlVHlwZUNvbmZpZyA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVDcmVhdGVDb25maWc7XG5cbiAgICB0aGlzLmZvb3RlclNlcnZpY2Uuc2V0QWN0aW9ucyhbXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NhdmVEcmFmdCcsXG4gICAgICAgIGFjdGlvbjoge1xuICAgICAgICAgIHRpdGxlSTE4bjogJ2kxOG4ucWQucGFnZS5mb290ZXIuc2F2ZURyYWZ0JyxcbiAgICAgICAgICB0eXBlOiBRZEZvb3RlckFjdGlvblR5cGUuU2Vjb25kYXJ5LFxuICAgICAgICAgIGhhbmRsZXI6ICgpOiB2b2lkID0+IHBhZ2VUeXBlQ29uZmlnPy5zYXZlRHJhZnQ/LmhhbmRsZXIoKSxcbiAgICAgICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICAgICAgaXNEaXNhYmxlZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbnNwZWN0UGFnZU9wZXJhdGlvbk1vZGUocGFnZVR5cGVDb25maWc6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnLCBtb2RlOiBRZEluc3BlY3RPcGVyYXRpb25Nb2RlKTogdm9pZCB7XG4gICAgdGhpcy5zdWJtaXRBY3Rpb25TZXJ2aWNlLnNldFN1Ym1pdEFjdGlvbkZvckluc3BlY3QocGFnZVR5cGVDb25maWcsIG1vZGUgPT09ICd2aWV3Jyk7XG5cbiAgICB0aGlzLmZvb3RlclNlcnZpY2UudXBkYXRlQWN0aW9ucyhbXG4gICAgICB7IGFjdGlvbktleTogJ3N1Ym1pdCcsIHBhcnRpYWxBY3Rpb246IHsgaXNWaXNpYmxlOiBtb2RlID09PSAndmlldycgJiYgIXBhZ2VUeXBlQ29uZmlnPy5zdWJtaXQ/LmlzSGlkZGVuIH0gfVxuICAgIF0pO1xuXG4gICAgdGhpcy5pbml0U3VibWl0VmFsaWRhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuX2lzSW5pdGlhbGl6ZWQpIHRoaXMub3BlcmF0aW9uTW9kZUNoYW5nZWQuZW1pdChtb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVGb290ZXJBY3Rpb25IYW5kbGVyKGhhbmRsZXI/OiAodmFsdWVzOiB1bmtub3duKSA9PiB2b2lkKTogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdm9pZCB7XG4gICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICBpZiAoIWhhbmRsZXIpIHJldHVybjtcblxuICAgICAgaGFuZGxlcih0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLmhhc0Zvcm1Hcm91cHMoKSA/IHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuZ2V0QWxsVmFsdWVzKCkgOiBhcmdzKTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFN1Ym1pdEFjdGlvblZhbGlkYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dcbiAgICAgIC5vcGVuKFFkUGFnZUNhbmNlbENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICB0aXRsZTogeyBpMThuOiAnaTE4bi5xZC5wYWdlLmNhbmNlbC5jb25maXJtYXRpb24uZGlhbG9nLnRpdGxlJyB9LFxuICAgICAgICBkaWFsb2dTaXplOiBRZERpYWxvZ1NpemUuU21hbGwsXG4gICAgICAgIGRhdGE6IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnXG4gICAgICB9KVxuICAgICAgLmNsb3NlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN1Ym1pdFZhbGlkYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZVxuICAgICAgLiRhcmVGb3JtR3JvdXBzVmFsaWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSxcbiAgICAgICAgdGFwKGlzVmFsaWQgPT4ge1xuICAgICAgICAgIHRoaXMuZm9vdGVyU2VydmljZS51cGRhdGVBY3Rpb25zKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWN0aW9uS2V5OiAnc3VibWl0JyxcbiAgICAgICAgICAgICAgcGFydGlhbEFjdGlvbjoge1xuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbmZvOiBpc1ZhbGlkXG4gICAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgOiB7IGluZm9UeXBlOiAnd2FybmluZycsIG1lc3NhZ2U6IHsgaTE4bjogJ2kxOG4ucWQucGFnZS5zdWJtaXQuaW52YWxpZEZvcm0nIH0gfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxtYWluIHFkU25hY2tiYXJMaXN0ZW5lcj5cbiAgPHFkLXBhZ2Utb2JqZWN0LWhlYWRlclxuICAgIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbiAgICBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJ29iamVjdC1oZWFkZXInXCJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgW2hhc05hdmlnYXRpb25dPVwiaGFzTmF2aWdhdGlvblwiXG4gID48L3FkLXBhZ2Utb2JqZWN0LWhlYWRlcj5cblxuICA8ZGl2IGNsYXNzPVwicGFnZS1pbmZvLWJhbm5lcnNcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJxZC1wYWdlLWluZm8tYmFubmVyXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnBhZ2VUeXBlID09PSAnY3JlYXRlJyB8fCBjb25maWcucGFnZVR5cGUgPT09ICdjdXN0b20nXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicWQtcGFnZS1zdGVwcGVyXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltxZFBhZ2VTdGVwcGVyQWRhcHRlcl1cIj48L25nLWNvbnRlbnQ+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcucGFnZVR5cGUgPT09ICdvdmVydmlldycgfHwgY29uZmlnLnBhZ2VUeXBlID09PSAnaW5zcGVjdCcgfHwgY29uZmlnLnBhZ2VUeXBlID09PSAnY3VzdG9tJ1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInFkLXBhZ2UtdGFic1wiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcWRQYWdlVGFic0FkYXB0ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInFkLXNlY3Rpb25cIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3FkU2VjdGlvbkFkYXB0ZXJdXCI+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnBhZ2VUeXBlID09PSAnY3VzdG9tJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9qZWN0ZWRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9tYWluPlxuXG48Zm9vdGVyICpuZ0lmPVwiZm9vdGVySGFzQ29udGVudCQgfCBhc3luY1wiPlxuICA8cWQtcGFnZS1mb290ZXIgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctZm9vdGVyJ1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltxZFBhZ2VGb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICA8L3FkLXBhZ2UtZm9vdGVyPlxuPC9mb290ZXI+XG5cbjxhc2lkZSAqbmdJZj1cImlzQ29udHJvbFBhbmVsVmlzaWJsZVwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJxZC1wYWdlLWNvbnRyb2wtcGFuZWxcIj48L25nLWNvbnRlbnQ+XG48L2FzaWRlPlxuXG48cWQtcHJvamVjdGlvbi1ndWFyZCAqbmdJZj1cImNvbmZpZy5wYWdlVHlwZSAhPT0gJ2N1c3RvbSdcIiBbd2FybmluZ01lc3NhZ2VdPVwicHJvamVjdGlvbkd1YXJkTWVzc2FnZVwiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvamVjdGVkQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9xZC1wcm9qZWN0aW9uLWd1YXJkPlxuXG48bmctdGVtcGxhdGUgI3Byb2plY3RlZENvbnRlbnQ+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
634
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL3FkLXVpL3NyYy9saWIvcGFnZS9wYWdlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlL3BhZ2UuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixXQUFXLEVBQ1gsS0FBSyxFQUlMLE1BQU0sRUFDTixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWhELE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDeEUsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0seURBQXlELENBQUM7QUFDeEcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDaEYsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDL0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDdkUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDbEUsT0FBTyxFQUFFLHVDQUF1QyxFQUFFLE1BQU0sd0VBQXdFLENBQUM7QUFDakksT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFPckYsT0FBTyxFQUEyQixrQkFBa0IsRUFBc0IsTUFBTSxzQ0FBc0MsQ0FBQztBQUN2SCxPQUFPLEVBQUUseUJBQXlCLEVB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RDZYYSxlQUFlO2tCQVAzQixTQUFTOytCQUNFLFNBQVMsYUFHUixDQUFDLG1CQUFtQixFQUFFLHlCQUF5QixFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixDQUFDLFFBQzFHLEVBQUUsMkJBQTJCLEVBQUUsdUJBQXVCLEVBQUUsNkJBQTZCLEVBQUUscUJBQXFCLEVBQUU7dU9BUXBILE1BQU07c0JBREwsS0FBSzt1QkFBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7Z0JBT0YsTUFBTTtzQkFBNUIsS0FBSzt1QkFBQyxjQUFjO2dCQU1yQixvQkFBb0I7c0JBRG5CLE1BQU07Z0JBSVAsUUFBUTtzQkFEUCxlQUFlO3VCQUFDLGtCQUFrQjtnQkFJbkMsWUFBWTtzQkFEWCxZQUFZO3VCQUFDLDJCQUEyQjtnQkFJekMsZ0JBQWdCO3NCQURmLFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUkzRCxhQUFhO3NCQURaLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUl4RCx1QkFBdUI7c0JBRHRCLFlBQVk7dUJBQUMsNkJBQTZCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUlsRSxvQkFBb0I7c0JBRG5CLFlBQVk7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUkvRCxXQUFXO3NCQURWLGVBQWU7dUJBQUMseUJBQXlCO2dCQXdCdEMsYUFBYTtzQkFEaEIsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBTTNCLGNBQWM7c0JBRGpCLFdBQVc7dUJBQUMsd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7IFFkRGlhbG9nU2VydmljZSwgUWREaWFsb2dTaXplIH0gZnJvbSAnLi4vZGlhbG9nL2RpYWxvZy5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQYWdlU3RlcHBlckFkYXB0ZXJEaXJlY3RpdmUgfSBmcm9tICcuLi9wYWdlLXN0ZXBwZXIvYWRhcHRvcnMvcGFnZS1zdGVwcGVyLWFkYXB0ZXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFFkUGFnZVN0ZXBwZXJDb21wb25lbnQgfSBmcm9tICcuLi9wYWdlLXN0ZXBwZXIvcGFnZS1zdGVwcGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRZFBhZ2VUYWJzQWRhcHRlckRpcmVjdGl2ZSB9IGZyb20gJy4uL3BhZ2UtdGFicy9hZGFwdG9ycy9wYWdlLXRhYnMtYWRhcHRlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgUWRQYWdlVGFic0NvbXBvbmVudCB9IGZyb20gJy4uL3BhZ2UtdGFicy9wYWdlLXRhYnMuY29tcG9uZW50JztcbmltcG9ydCB7IFFkU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL3NlY3Rpb24vc2VjdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUWRQYWdlQ2FuY2VsQ29uZmlybWF0aW9uRGlhbG9nQ29tcG9uZW50IH0gZnJvbSAnLi9jYW5jZWwtY29uZmlybWF0aW9uLWRpYWxvZy9wYWdlLWNhbmNlbC1jb25maXJtYXRpb24tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRZFBhZ2VDb250cm9sUGFuZWxDb21wb25lbnQgfSBmcm9tICcuL2NvbnRyb2wtcGFuZWwvcGFnZS1jb250cm9sLXBhbmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRZFBhZ2VJbmZvQmFubmVyQ29tcG9uZW50IH0gZnJvbSAnLi9pbmZvLWJhbm5lci9wYWdlLWluZm8tYmFubmVyLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBRZEluc3BlY3RPcGVyYXRpb25Nb2RlLFxuICBRZFBhZ2VDb25maWcsXG4gIFFkUGFnZVR5cGVDcmVhdGVDb25maWcsXG4gIFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnXG59IGZyb20gJy4vbW9kZWwvcGFnZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFFkQ3JlYXRlRm9vdGVyQWN0aW9uS2V5LCBRZEZvb3RlckFjdGlvblR5cGUsIFFkUGFnZUZvb3RlckFjdGlvbiB9IGZyb20gJy4vbW9kZWwvcGFnZS1mb290ZXItYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBRZEZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvZm9ybS1ncm91cC1tYW5hZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRQYWdlRm9vdGVyU2VydmljZSB9IGZyb20gJy4vc2hhcmVkL3NlcnZpY2VzL3BhZ2UtZm9vdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRQYWdlU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQvc2VydmljZXMvcGFnZS1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUGFnZVN1Ym1pdEFjdGlvblNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9wYWdlLXN1Ym1pdC1hY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBRZFJlc29sdmVyVHJpZ2dlclNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC9zZXJ2aWNlcy9yZXNvbHZlci10cmlnZ2VyLnNlcnZpY2UnO1xuXG50eXBlIFBhcnRpYWxGb290ZXJBY3Rpb24gPSB7IGFjdGlvbktleTogUWRDcmVhdGVGb290ZXJBY3Rpb25LZXk7IHBhcnRpYWxBY3Rpb246IFBhcnRpYWw8UWRQYWdlRm9vdGVyQWN0aW9uPiB9O1xuXG4vKipcbiAqICoqUWRQYWdlKiogc2VydmVzIGFzIHRoZSBjZW50cmFsIHN0cnVjdHVyYWwgZWxlbWVudCB3aXRoaW4gdGhlIGhpZXJhcmNoeSB1bmRlciB0aGUgKipRZFNoZWxsKiouXG4gKiBJbnRlZ3JhdGlvbiBpcyBkb25lIHRocm91Z2ggdGhlIEFuZ3VsYXIgUm91dGluZyBNb2R1bGUsIGFuZCBRZFBhZ2UgaXMgZGVzaWduZWQgdG8gYmUgcmVzcG9uc2l2ZSBhY3Jvc3MgdmFyaW91cyBzY3JlZW4gc2l6ZXMgcmlnaHQgb3V0IG9mIHRoZSBib3guXG4gKlxuICogIyMjIyAqKlBhZ2UgVHlwZXMqKlxuICpcbiAqIFFkUGFnZSB1c2VzIHBhZ2UgdHlwZXMgdG8gZGVjaWRlIGhvdyB0aGUgcGFnZSBsb29rcyBhbmQgd29ya3MuIEVhY2ggcGFnZSB0eXBlIGhhcyBpdHMgb3duIHNldHRpbmdzIGFuZCBhY3Rpb25zLlxuICpcbiAqIC0gKipvdmVydmlldyoqOiBEaXNwbGF5cyBhIHN1bW1hcnkgb3IgYSBsaXN0IG9mIG9iamVjdHMsIHByb3ZpZGluZyBhbiBvdmVydmlldyBvZiBtdWx0aXBsZSBidXNpbmVzcyBjYXNlcy5cbiAqIC0gKipjcmVhdGUqKjogQWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyBvYmplY3QsIHJlcHJlc2VudGluZyBhIGJ1c2luZXNzIGNhc2UuXG4gKiAtICoqaW5zcGVjdCoqOiBFbmFibGVzIHZpZXdpbmcsIGVkaXRpbmcsIGFuZCBleGVjdXRpbmcgYWRkaXRpb25hbCBhY3Rpb25zIHJlbGF0ZWQgdG8gdGhlIG9iamVjdCwgd2hpY2ggYWxzbyByZXByZXNlbnRzIGEgYnVzaW5lc3MgY2FzZS5cbiAqIC0gKipjdXN0b20qKjogUHJvdmlkZXMgYSB3YXkgdG8gaW1wbGVtZW50IHVuaXF1ZSBmdW5jdGlvbmFsaXR5IHRoYXQgZG9lc27igJl0IGZpdCB0aGUgb3RoZXIgcHJlZGVmaW5lZCBwYWdlIHR5cGVzLlxuICpcbiAqICoqTm90ZSB0aGF0IHRoZSAnY3VzdG9tJyBwYWdlIHR5cGUgc2hvdWxkIGJlIHVzZWQgb25seSBhcyBhIGZhbGxiYWNrIGZvciB2ZXJ5IHNwZWNpZmljIGNhc2VzLiBJZiB5b3UgZW5jb3VudGVyIHN1Y2ggYSBzaXR1YXRpb24sIHBsZWFzZSBjb250YWN0IHRoZSBRdWFkcmVsIHRlYW0uKipcbiAqXG4gKiAjIyMjICoqRmFjZXRzKipcbiAqXG4gKiBUaGVzZSBhcmUgZXh0cmEgcGllY2VzIG9mIGluZm9ybWF0aW9uIHNob3duIGluIHRoZSBwYWdlIGhlYWRlci4gVGhleSBnaXZlIGNvbnRleHQgc3BlY2lmaWMgdG8gdGhlIGN1cnJlbnQgb2JqZWN0IG1vZGVsIGJlaW5nIHZpZXdlZCBvciBlZGl0ZWQuIFRoZXJlIGFyZSBzZXZlcmFsIHR5cGVzIG9mIGZhY2V0cywgaW5jbHVkaW5nIGBzdGF0dXNgLCBgdmFsdWVgLCBgY3JpdGljYWxpdHlgLCBgcmVmZXJlbmNlc2AsIGBwcm9ncmVzc2AsIGBkYXRlYCwgYHNpbmdsZVNlbGVjdGAsIGFuZCBgbXVsdGlTZWxlY3RgLiBFYWNoIHR5cGUgaGFzIGl0cyBvd24gb3B0aW9ucy4gRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZSBgUWRQYWdlSGVhZGVyRmFjZXRgIGludGVyZmFjZS5cbiAqXG4gKiAjIyMjICoqQ29udGV4dCoqXG4gKlxuICogVGhlIGBjb250ZXh0YCBhY3RzIGFzIGEgZmlsdGVyIHRoYXQgY2FuIGJlIHNlbGVjdGVkIG9uIHRoZSBvdmVydmlldyBwYWdlIGFuZCBwcm92aWRlcyB0aGUgYnVzaW5lc3MgY29udGV4dCwgd2hpY2ggcmVtYWlucyBjb25zaXN0ZW50IHRocm91Z2hvdXQgdGhlIGVudGlyZSBhcHBsaWNhdGlvbi4gT24gY3JlYXRlIGFuZCBpbnNwZWN0IHBhZ2VzLCB0aGUgY29udGV4dCBpcyBkaXNwbGF5ZWQgYXMgcmVhZC1vbmx5LiBGb3IgbW9yZSBkZXRhaWxzLCBjaGVjayB0aGUgZGVkaWNhdGVkIGNoYXB0ZXIgaW4gU3Rvcnlib29rLlxuICpcbiAqXG4gKiAjIyMjICoqUGFnZSBJbmZvIEJhbm5lcnMqKlxuICpcbiAqIFRvIGluc2VydCBhIHBhZ2UgaW5mbyBiYW5uZXIgdW5kZXIgdGhlIHBhZ2UgaGVhZGVyLCBqdXN0IHB1dCBhIGBxZC1wYWdlLWluZm8tYmFubmVyYCBjb21wb25lbnQgaW5zaWRlIHRoZSBgcWQtcGFnZWAuIE11bHRpcGxlIGNvbnNlY3V0aXZlIGluZm8gYmFubmVycyBvZiB0aGUgc2FtZSB0eXBlIHdpbGwgYmUgbWVyZ2VkIGludG8gb25lIGJhbm5lciBjb250YWluZXIuIFBhZ2UgaW5mbyBiYW5uZXJzIGhhdmUgdGhlIHNhbWUgYXBwZWFyYW5jZSBsaWtlIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogIyMjIyAqKkNvbnRyb2wgUGFuZWwqKlxuICpcbiAqIFRoZSBjb250cm9sIHBhbmVsIGlzIGxvY2F0ZWQgb24gdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIHBhZ2UgYW5kIGlzIHVzZWQgdG8gZGlzcGxheSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFuZCBmdW5jdGlvbnMgcmVsZXZhbnQgdG8gYSBzcGVjaWZpYyBidXNpbmVzcyBjYXNlLCB3aGljaCBpcyBsaW5rZWQgdG8gYSBzcGVjaWZpYyBvYmplY3QgbW9kZWwuIEZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLCBwbGVhc2UgY29uc3VsdCB0aGUgZGVkaWNhdGVkIGNoYXB0ZXIgaW4gU3Rvcnlib29rLlxuICpcbiAqICMjIyMgKipBY3Rpb25zKipcbiAqXG4gKiBUaGVzZSBhcmUgaW50ZXJhY3RpdmUgZWxlbWVudHMgdGhhdCBwZXJmb3JtIHNwZWNpZmljIGZ1bmN0aW9ucy4gRnVuY3Rpb25zIGZvciB0aGVzZSBhY3Rpb25zIGNhbiBiZSBzZXQgdXAgdGhyb3VnaCBjb25maWd1cmF0aW9ucy4gQ3VzdG9tIGFjdGlvbnMgY2FuIGJlIGFkZGVkIHRvIGFueSBwYWdlIHR5cGUuIEFkZGl0aW9uYWxseSwgYWxsIGFjdGlvbnMgY2FuIGJlIGNvbmZpZ3VyZWQgYW5kIGN1c3RvbWl6ZWQgd2l0aCB5b3VyIG93biB0ZXh0LCB3aGljaCB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHRleHRzLlxuICpcbiAqIFBsZWFzZSBjaGVjayB0aGUgcmVsZXZhbnQgaW50ZXJmYWNlcyBmb3IgZWFjaCBwYWdlIHR5cGU6IGBRZFBhZ2VDb25maWdPdmVydmlld2AsIGBRZFBhZ2VDb25maWdDcmVhdGVgLCBgUWRQYWdlQ29uZmlnSW5zcGVjdGAsIGFuZCBgUWRQYWdlQ29uZmlnQ3VzdG9tYC5cbiAqXG4gKiAjIyMjICoqVmFsaWRhdGlvbi9QYXJhbWV0ZXJpemF0aW9uKipcbiAqXG4gKiBWYWxpZGF0aW9uIGFuZCBwYXJhbWV0ZXJpemF0aW9uIGFyZSBjb3ZlcmVkIGluIGEgZGVkaWNhdGVkIGNoYXB0ZXIgaW4gdGhlIFN0b3J5Ym9vay4gUGxlYXNlIGNoZWNrIHRoZSBcIlZhbGlkYXRpb25cIiBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICpcbiAqICMjIyMgKipSZXNvbHZlcioqXG4gKlxuICogVXNpbmcgYSByZXNvbHZlciB0byBmZXRjaCBwYWdlIG9iamVjdCBkYXRhIGlzIGVzc2VudGlhbCB0byB0aGUgcGFnZSBjb25jZXB0LiBBZGQgdGhlIHJlc29sdmVyIHRvIHRoZSBjb21wb25lbnQncyBwcm92aWRlcnMgYW5kIHVzZSB0aGUgYFFEX1BBR0VfT0JKRUNUX1JFU09MVkVSX1RPS0VOYCB0b2tlbi4gVGhpcyBhcHByb2FjaCBlbmFibGVzIHR5cGUgc2FmZXR5IGFuZCB1c2VyIGZlZWRiYWNrIGJ5IGVmZmVjdGl2ZWx5IG1hbmFnaW5nIHRoZSBuZWNlc3NhcnkgZGF0YSBmb3IgdGhlIHBhZ2UuXG4gKlxuICogYGBgdHNcbiAqIGludGVyZmFjZSBNeU9iamVjdE1vZGVsIHtcbiAqICAgLy8gTWV0YWRhdGEgZGlzcGxheWVkIGluIHRoZSBPYmplY3RIZWFkZXJcbiAqICAgc3RhdGU6IE15U3RhdGU7XG4gKiAgIGNvdW50cnlPZkRlc3RpbmF0aW9uOiBNeUNvdW50cnlPZkRlc3RpbmF0aW9uO1xuICogICAvLyBBcHBlYXJzIG5vdCBpbiB0aGUgT2JqZWN0SGVhZGVyXG4gKiAgIHBheWxvYWQ6IE15UGF5bG9hZDtcbiAqIH1cbiAqXG4gKiB0eXBlIE15T2JqZWN0TWV0YWRhdGEgPSAnc3RhdGUnIHwgJ2NvdW50cnlPZkRlc3RpbmF0aW9uJztcbiAqXG4gKiBASW5qZWN0YWJsZSgpXG4gKiBjbGFzcyBNeU9iamVjdE1vZGVsUmVzb2x2ZXIgaW1wbGVtZW50cyBRZFBhZ2VPYmplY3RSZXNvbHZlcjxNeU9iamVjdE1vZGVsPiB7XG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cbiAqXG4gKiAgIHJlc29sdmUoKTogT2JzZXJ2YWJsZTxNeU9iamVjdE1vZGVsPiB7XG4gKiAgICAgcmV0dXJuIHRoaXMuaHR0cFxuICogICAgICAgLmdldDxNeU9iamVjdE1vZGVsPignbXktYXBpJylcbiAqICAgICAgIC5waXBlKHRhcCgoZGF0YTogTXlPYmplY3RNb2RlbCkgPT4gZG9Tb21ldGhpbmdXaXRoKGRhdGEpKSk7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdteS1wYWdlJyxcbiAqICAgdGVtcGxhdGVVcmw6ICcuL215LXBhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICogICBwcm92aWRlcnM6IFtcbiAqICAgICB7XG4gKiAgICAgICBwcm92aWRlOiBRRF9QQUdFX09CSkVDVF9SRVNPTFZFUl9UT0tFTixcbiAqICAgICAgIHVzZUNsYXNzOiBNeU9iamVjdE1vZGVsUmVzb2x2ZXJcbiAqICAgICB9XG4gKiAgIF1cbiAqIH0pXG4gKiBjbGFzcyBNeVBhZ2VDb21wb25lbnQge1xuICogICBwYWdlQ29uZmlnOiBRZFBhZ2VDb25maWc8UGljazxNeU9iamVjdE1vZGVsLCBNeU9iamVjdE1ldGFkYXRhPj4gPSB7XG4gKiAgICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ucGFnZS50aXRsZScgfSxcbiAqICAgICBwYWdlVHlwZTogJ2luc3BlY3QnLFxuICogICAgIGhlYWRlckZhY2V0czogW1xuICogICAgICAge1xuICogICAgICAgICBuYW1lOiAnc3RhdHVzJyxcbiAqICAgICAgICAgbGFiZWw6IHtcbiAqICAgICAgICAgICBpMThuOiAnaTE4bi5zdGF0dXMubGFiZWwnXG4gKiAgICAgICAgIH0sXG4gKiAgICAgICAgIG9wdGlvbnM6IHtcbiAqICAgICAgICAgICB0eXBlOiAnc3RhdHVzJ1xuICogICAgICAgICB9XG4gKiAgICAgICB9LFxuICogICAgICAge1xuICogICAgICAgICBuYW1lOiAnY291bnRyeU9mRGVzdGluYXRpb24nLFxuICogICAgICAgICBsYWJlbDoge1xuICogICAgICAgICAgIGkxOG46ICdpMThuLmNvdW50cnlPZkRlc3RpbmF0aW9uLmxhYmVsJ1xuICogICAgICAgICB9LFxuICogICAgICAgICBvcHRpb25zOiB7XG4gKiAgICAgICAgICAgdHlwZTogJ3ZhbHVlJ1xuICogICAgICAgICB9XG4gKiAgICAgICB9XG4gKiAgICAgXSxcbiAqICAgICBwYWdlVHlwZUNvbmZpZzoge1xuICogICAgICAgY2FuY2VsOiB7XG4gKiAgICAgICAgIGhhbmRsZXI6ICgpID0+IGhhbmRsZUNhbmNlbCgpXG4gKiAgICAgICB9LFxuICogICAgICAgc2F2ZToge1xuICogICAgICAgICBoYW5kbGVyOiAoZm9ybVZhbHVlcykgPT4gaGFuZGxlU2F2ZShmb3JtVmFsdWVzKVxuICogICAgICAgfVxuICogICAgIH1cbiAqICAgfTtcbiAqIH1cbiAqIGBgYFxuICpcbiAqICMjIyMgKipVcGRhdGluZyBGYWNldHMqKlxuICpcbiAqIFR5cGljYWxseSwgdGhlIHZhbHVlcyBvZiB0aGUgZmFjZXRzIG9uIGEgY3JlYXRlIG9yIGluc3BlY3QgcGFnZSBhcmUgc2V0IHRvIHJlYWQtb25seS4gSG93ZXZlciwgdGhlcmUgbWF5IGJlIGNhc2VzIHdoZXJlLCBmb3IgZXhhbXBsZSwgYSBzdGF0dXMgY2hhbmdlIGlzIG5lZWRlZCwgc3VjaCBhcyB0aHJvdWdoIGEgZGlhbG9nLiBGb3IgdGhpcyBwdXJwb3NlLCB3ZSBoYXZlIHByb3ZpZGVkIGFuIHVwZGF0ZSBtZXRob2QuIEluIHRoZSByZXNvbHZlciBzZXJ2aWNlLCBkZWZpbmUgYW4gZW1wdHkgbWV0aG9kIGNhbGxlZCBgdXBkYXRlTWV0YWRhdGFgLiBJbmplY3QgdGhpcyBzZXJ2aWNlIHVzaW5nIGl0cyB0eXBlLCBhbmQgdGhlbiBjYWxsIHRoZSBgdXBkYXRlTWV0YWRhdGFgIG1ldGhvZCB3aXRoIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXIuXG4gKlxuICogKipQbGVhc2Ugbm90ZTogVGhlc2UgdmFsdWVzIHNob3VsZCBub3QgYmUgbW9kaWZpZWQgZGlyZWN0bHkgd2l0aGluIGEgUWRQYWdlLioqXG4gKlxuICogYGBgdHNcbiAqIEBJbmplY3RhYmxlKClcbiAqIGNsYXNzIE15T2JqZWN0TW9kZWxSZXNvbHZlciBpbXBsZW1lbnRzIFFkUGFnZU9iamVjdFJlc29sdmVyPE15T2JqZWN0TW9kZWw+IHtcbiAqICAgY29uZmlnOiBRZFBhZ2VPYmplY3RSZXNvbHZlckNvbmZpZyA9IHtcbiAqICAgICAvLyB5b3VyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBoZXJlXG4gKiAgIH1cbiAqXG4gKiAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCkge31cbiAqXG4gKiAgIHJlc29sdmUoKTogT2JzZXJ2YWJsZTxNeU9iamVjdE1vZGVsPiB7XG4gKiAgICAgLy8geW91ciBpbXBsZW1lbnRhdGlvbiBoZXJlXG4gKiAgIH1cbiAqXG4gKiAgIHVwZGF0ZU1ldGFkYXRhKG1ldGFkYXRhOiBQYXJ0aWFsPE15T2JqZWN0TW9kZWw+KSB7XG4gKiAgICAgLy8gbGVhdmUgZW1wdHkgaGVyZSAmIGNhbGwgaW4geW91ciBjb21wb25lbnRcbiAqICAgfVxuICogfVxuICpcbiAqIEBDb21wb25lbnQoe1xuICogICAvLyAuLi5cbiAqICAgcHJvdmlkZXJzOiBbXG4gKiAgICAge1xuICogICAgICAgcHJvdmlkZTogUURfUEFHRV9PQkpFQ1RfUkVTT0xWRVJfVE9LRU4sXG4gKiAgICAgICB1c2VDbGFzczogTXlPYmplY3RNb2RlbFJlc29sdmVyXG4gKiAgICAgfVxuICogICBdXG4gKiB9KVxuICogY2xhc3MgTXlQYWdlQ29tcG9uZW50IHtcbiAqICAgY29uc3RydWN0b3IoQEluamVjdChRRF9QQUdFX09CSkVDVF9SRVNPTFZFUl9UT0tFTikgcHJpdmF0ZSBvYmplY3RSZXNvbHZlcjogTXlPYmplY3RNb2RlbFJlc29sdmVyKSB7fVxuICpcbiAqICAgdXBkYXRlU3RhdHVzKCkge1xuICogICAgIHRoaXMub2JqZWN0UmVzb2x2ZXIudXBkYXRlTWV0YWRhdGEoeyBzdGF0ZTogJ1VwZGF0ZWQnIH0pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAjIyMjICoqT3ZlcnZpZXcgUGFnZSoqXG4gKlxuICogT24gYW4gb3ZlcnZpZXcgcGFnZSwgYSBsaXN0IG9mIGJ1c2luZXNzIGNhc2VzIGNhbiBiZSBkaXNwbGF5ZWQuIFR5cGljYWxseSwgdGhpcyBpcyBkb25lIGluIGEgKipRZFRhYmxlKiosIGluY2x1ZGluZyBmaWx0ZXJzIGFuZC9vciBzZWFyY2ggb3B0aW9ucy4gVGhlcmUgYXJlIGFjdGlvbnMgdGhhdCBoYW5kbGUgcm91dGluZyB0byB0aGUgcmVsYXRlZCBkZXRhaWwgcGFnZXMsIHdoZXJlIHRoZSBidXNpbmVzcyBjYXNlcywgcmVwcmVzZW50ZWQgYnkgYSBidXNpbmVzcyBvYmplY3QgbW9kZWwsIGNhbiBiZSB2aWV3ZWQsIGVkaXRlZCwgb3IgbmV3bHkgY3JlYXRlZC5cbiAqXG4gKiBgYGB0c1xuICogY29uc3Qgb3ZlcnZpZXdQYWdlQ29uZmlnOiBRZFBhZ2VDb25maWc8TXlPYmplY3RUeXBlPiA9IHtcbiAqICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ubXktcGFnZS50aXRsZScgfSxcbiAqICAgcGFnZVR5cGU6ICdvdmVydmlldycsXG4gKiAgIHBhZ2VUeXBlQ29uZmlnOiB7XG4gKiAgICAgY3VzdG9tQWN0aW9uczogW1xuICogICAgICAge1xuICogICAgICAgICBpMThuOiAnaTE4bi5jdXN0b20uYWN0aW9uJyxcbiAqICAgICAgICAgaGFuZGxlcjogKCkgPT4gZG9Tb21ldGhpbmcoKVxuICogICAgICAgfVxuICogICAgIF1cbiAqICAgfVxuICogfTtcbiAqIGBgYFxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1wYWdlIFtjb25maWddPVwicGFnZUNvbmZpZ1wiPlxuICogICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICA8cWQtdGFibGUgW2NvbmZpZ109XCJ0YWJsZUNvbmZpZ1wiPjwvcWQtdGFibGU+XG4gKiAgIDwvcWQtc2VjdGlvbj5cbiAqIDwvcWQtcGFnZT5cbiAqIGBgYFxuICpcbiAqIFRvIGNvbmZpZ3VyZSBjb250ZXh0cyBmb3IgYSBwYWdlLCB5b3UgY2FuIGVhc2lseSBzZXQgY29udGV4dHMgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBvdmVydmlldyBwYWdlLiBUaGV5IGFyZSB0aGVuIHNlbGVjdGFibGUgb24gdGhlIG92ZXJ2aWV3IHBhZ2U6XG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IG92ZXJ2aWV3UGFnZUNvbmZpZzogUWRQYWdlQ29uZmlnPE15T2JqZWN0VHlwZT4gPSB7XG4gKiAgIC8vIC4uLlxuICogICBjb250ZXh0czogW1xuICogICAgIHtcbiAqICAgICAgIGlkOiAndHlwZU9mVHJhZmZpYycsXG4gKiAgICAgICBsYWJlbDogeyBpMThuOiAnVmVya2VocnNhcnQnIH0sXG4gKiAgICAgICB0eXBlOiAnc2luZ2xlJyxcbiAqICAgICAgIHNlbGVjdGVkOiB7XG4gKiAgICAgICAgIGxhYmVsOiB7IGkxOG46ICdTY2hpZW5lJyB9LFxuICogICAgICAgICB2YWx1ZTogJ3JhaWwnXG4gKiAgICAgICB9LFxuICogICAgICAgb3B0aW9uczogW1xuICogICAgICAgICB7XG4gKiAgICAgICAgICAgdmFsdWU6ICdyYWlsJyxcbiAqICAgICAgICAgICBsYWJlbDogeyBpMThuOiAnU2NoaWVuZScgfVxuICogICAgICAgICB9LFxuICogICAgICAgICB7XG4gKiAgICAgICAgICAgdmFsdWU6ICdhaXInLFxuICogICAgICAgICAgIGxhYmVsOiB7IGkxOG46ICdMdWZ0JyB9XG4gKiAgICAgICAgIH1cbiAqICAgICAgIF1cbiAqICAgICB9XG4gKiAgIF1cbiAqICAgLy8gLi4uXG4gKiB9O1xuICogYGBgXG4gKlxuICogIyMjIyAqKkNyZWF0ZSBQYWdlKipcbiAqXG4gKiBPbiB0aGUgY3JlYXRlIHBhZ2UsIGEgbmV3IGJ1c2luZXNzIGNhc2UgY2FuIGJlIGNyZWF0ZWQuIFRoaXMgcGFnZSB0eXBpY2FsbHkgaW5jbHVkZXMgZm9ybXMgZm9yIGVudGVyaW5nIGRhdGEuIFRoZSBzdWJtaXQgYnV0dG9uIGlzIHBhcmFtZXRlcml6ZWQgd2l0aCB0aGUgZm9ybSBkYXRhIGFuZCBpcyB2YWxpZGF0ZWQgdGhyb3VnaCB0aGUgUWRQYWdlU3RlcHBlci5cbiAqIFRoZSBjbGljayBvbiB0aGUgc3VibWl0IGJ1dHRvbiBzaG91bGQgc3VibWl0IHRoZSBjcmVhdGlvbiBvZiB0aGUgYnVzaW5lc3MgY2FzZSBvciBvYmplY3QuIFlvdSBjYW4gZGVmaW5lIGEgc3BlY2lmaWMgaGFuZGxlciBpbiB0aGUgc3VibWl0IGJ1dHRvbidzIGNvbmZpZ3VyYXRpb24gdG8gY3JlYXRlIHRoZSBvYmplY3QuXG4gKiBJZiBvbmx5IG9uZSBzdGVwIGlzIG5lZWRlZCwgdGhlIHNpbmdsZS1zdGVwIG1vZGUgY2FuIGJlIHVzZWQuIEluIHNpbmdsZS1zdGVwIG1vZGUsIHRoZSBzdGVwcGVyIGlzIHZpc3VhbGx5IGhpZGRlbiBhbmQgYmVoYXZlcyBsaWtlIGEgKipRZFNlY3Rpb24qKi5cbiAqXG4gKiBgYGB0c1xuICogY29uc3QgY3JlYXRlUGFnZUNvbmZpZzogUWRQYWdlQ29uZmlnPE15T2JqZWN0VHlwZT4gPSB7XG4gKiAgIHRpdGxlOiB7IGkxOG46ICdpMThuLnBhZ2UudGl0bGUnIH0sXG4gKiAgIHBhZ2VUeXBlOiAnY3JlYXRlJyxcbiAqICAgcGFnZVR5cGVDb25maWc6IHtcbiAqICAgICBzdWJtaXQ6IHtcbiAqICAgICAgIGhhbmRsZXI6IChmb3JtVmFsdWVzKSA9PiBoYW5kbGVTdWJtaXQoZm9ybVZhbHVlcylcbiAqICAgICB9XG4gKiAgIH1cbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBgYGBodG1sXG4gKiA8IS0tIEZvciBcIlF1aWNrIEFkZFwiIHVzZSBQYWdlU3RlcHBlciBpbiBzaW5nbGUtc3RlcCBtb2RlIC0tPlxuICogPHFkLXBhZ2UgW2NvbmZpZ109XCJwYWdlQ29uZmlnXCI+XG4gKiAgIDxxZC1wYWdlLXN0ZXBwZXIgW2NvbmZpZ109XCJzdGVwcGVyQ29uZmlnXCI+XG4gKiAgICAgPHFkLXBhZ2Utc3RlcCBbY29uZmlnXT1cInN0ZXBDb25maWdPbmVcIj5cbiAqICAgICAgIDxxZC1zZWN0aW9uIFtjb25maWddPVwic2VjdGlvbkNvbmZpZ1wiPlxuICogICAgICAgICA8cWQtZ3JpZCBbY29uZmlnXT1cImdyaWRDb25maWdcIiBbZm9ybUdyb3VwXT1cIm15Rm9ybXNcIiBxZENvbm5lY3RGb3JtU3RhdGVUb1BhZ2U9XCJteUZvcm1zXCI+XG4gKiAgICAgICAgICAgPCEtLSB5b3VyIHFkLWZvcm0tY29tcG9uZW50cyBoZXJlIC0tPlxuICogICAgICAgICA8L3FkLWdyaWQ+XG4gKiAgICAgICA8L3FkLXNlY3Rpb24+XG4gKiAgICAgPC9xZC1wYWdlLXN0ZXA+XG4gKiAgIDwvcWQtcGFnZS1zdGVwcGVyPlxuICogPC9xZC1wYWdlPlxuICpcbiAqIDwhLS0gV2l0aCBQYWdlU3RlcHBlciB1c2luZyBtdWx0aXBsZSBzdGVwcyAtLT5cbiAqIDxxZC1wYWdlIFtjb25maWddPVwicGFnZUNvbmZpZ1wiPlxuICogICA8cWQtcGFnZS1zdGVwcGVyIFtjb25maWddPVwic3RlcHBlckNvbmZpZ1wiPlxuICogICAgIDxxZC1wYWdlLXN0ZXAgW2NvbmZpZ109XCJzdGVwQ29uZmlnT25lXCI+XG4gKiAgICAgICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICAgICAgPHFkLWdyaWQgW2NvbmZpZ109XCJncmlkQ29uZmlnXCIgW2Zvcm1Hcm91cF09XCJteUZvcm1zT25lXCIgcWRDb25uZWN0Rm9ybVN0YXRlVG9QYWdlPVwibXlGb3Jtc09uZVwiPlxuICogICAgICAgICAgIDwhLS0geW91ciBxZC1mb3JtLWNvbXBvbmVudHMgaGVyZSAtLT5cbiAqICAgICAgICAgPC9xZC1ncmlkPlxuICogICAgICAgPC9xZC1zZWN0aW9uPlxuICogICAgIDwvcWQtcGFnZS1zdGVwPlxuICogICAgIDxxZC1wYWdlLXN0ZXAgW2NvbmZpZ109XCJzdGVwQ29uZmlnVHdvXCI+XG4gKiAgICAgICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICAgICAgPHFkLWdyaWQgW2NvbmZpZ109XCJncmlkQ29uZmlnXCIgW2Zvcm1Hcm91cF09XCJteUZvcm1zVHdvXCIgcWRDb25uZWN0Rm9ybVN0YXRlVG9QYWdlPVwibXlGb3Jtc1R3b1wiPlxuICogICAgICAgICAgIDwhLS0geW91ciBxZC1mb3JtLWNvbXBvbmVudHMgaGVyZSAtLT5cbiAqICAgICAgICAgPC9xZC1ncmlkPlxuICogICAgICAgPC9xZC1zZWN0aW9uPlxuICogICAgIDwvcWQtcGFnZS1zdGVwPlxuICogICA8L3FkLXBhZ2Utc3RlcHBlcj5cbiAqIDwvcWQtcGFnZT5cbiAqIGBgYFxuICpcbiAqIFRvIGFsbG93IHJlc29sdmluZyBhc3luY2hyb25vdXMgb3BlcmF0aW9ucyB3aGVuIGdvaW5nIHRvIG5leHQgc3RlcCwgeW91IGNhbiBwcm92aWRlIGEgcmVzb2x2ZXIgb2YgdHlwZSBRZFBhZ2VTdGVwUmVzb2x2ZXI6XG4gKlxuICogYGBgdHNcbiAqIGNsYXNzIE15UmVzb2x2ZXIgaW1wbGVtZW50cyBRZFBhZ2VTdGVwUmVzb2x2ZXIge1xuICogICAuLi5cbiAqXG4gKiAgIHJlc29sdmUoaW5kZXg6IG51bWJlcik6IE9ic2VydmFibGU8dm9pZD4ge1xuICogICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChcIm5leHQtc3RlcC5jb21cIik7XG4gKiAgIH1cbiAqIH1cbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdxZC11aS1wYWdlLWNyZWF0ZScsXG4gKiAgIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUuY29tcG9uZW50Lmh0bWwnLFxuICogICBwcm92aWRlcnM6IFtcbiAqICAgICB7XG4gKiAgICAgICBwcm92aWRlOiBRRF9QQUdFX1NURVBfUkVTT0xWRVJfVE9LRU4sXG4gKiAgICAgICB1c2VDbGFzczogUGFnZVN0ZXBSZXNvbHZlclxuICogICAgIH1cbiAqICAgXVxuICogfSlcbiAqIGV4cG9ydCBjbGFzcyBDcmVhdGVDb21wb25lbnQge1xuICogYGBgXG4gKlxuICogIyMjIyAqKkluc3BlY3QgUGFnZSoqXG4gKlxuICogT24gYW4gaW5zcGVjdCBwYWdlLCBhIHNwZWNpZmljIGJ1c2luZXNzIGNhc2UgaXMgZGlzcGxheWVkIGFuZCBtYXkgYmUgZWRpdGVkIG9yIHN1Ym1pdHRlZC4gRGVwZW5kaW5nIG9uIHlvdXIgbmVlZHMgeW91IGNhbiBoaWRlIHRoZSBzdWJtaXQgYnV0dG9uLlxuICogSW4gY29udHJhc3QgdG8gYSBjcmVhdGUgcGFnZSwgYW4gZXhpc3Rpbmcgb2JqZWN0IGlzIHNob3duIGFuZCBwb3RlbnRpYWxseSB1cGRhdGVkLlxuICpcbiAqIFRoZSBwYWdlIG9wZXJhdGVzIGluIG9uZSBvZiB0d28gbW9kZXMgLSBgdmlld2Agb3IgYGVkaXRgIC0gYXMgZGVmaW5lZCBieSB0aGUgYG9wZXJhdGlvbk1vZGVgIGNvbmZpZ3VyYXRpb24ga2V5LlxuICpcbiAqIFRoZSBgdmlld29ubHlgIGJlaGF2aW9yIGRlZmluZWQgYnkgdGhlIG9wZXJhdGlvbiBtb2RlIGlzIGF1dG9tYXRpY2FsbHkgcHJvcGFnYXRlZCB0byBhbGwgbmVzdGVkIFFkU2VjdGlvbiBjb21wb25lbnRzIHRoYXQgYXJlIHBhcnQgb2YgYSBRTFMsXG4gKiBhcyB3ZWxsIGFzIHRvIGZ1bmN0aW9uYWwgcGF0dGVybnMgc3VjaCBhcyBRZFRhYmxlLCBRZFRyZWUsIFFkRmlsZUNvbGxlY3RvciwgYW5kIFFkUXVpY2tFZGl0LlxuICogQWxsIGZvcm1zIGFyZSByZW5kZXJlZCBlaXRoZXIgaW4gdmlld29ubHkgb3IgZWRpdGFibGUgbW9kZSBhY2NvcmRpbmdseS5cbiAqXG4gKiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBleHBsaWNpdGx5IG92ZXJyaWRkZW4gaW4gZWFjaCBjb21wb25lbnTigJlzIGNvbmZpZ3VyYXRpb24gLSBmb3IgZXhhbXBsZSwgdG8gYWxsb3cgY2VydGFpbiBmaWVsZHMgdG8gcmVtYWluIGVkaXRhYmxlLlxuICpcbiAqIC0gKip2aWV3Kio6IEEgc3VibWl0IGFjdGlvbiBjYW4gb3B0aW9uYWxseSBiZSBhZGRlZCBmb3IgcHJvY2Vzcy1yZWxhdGVkIG9wZXJhdGlvbnMgc3VjaCBhcyBzdGF0dXMgdXBkYXRlcy5cbiAqICAgVGhlIGFjdGlvbiByZWNlaXZlcyB0aGUgY3VycmVudCBmb3JtIHZhbHVlcyBhbmQgc3VwcG9ydHMgdmFsaWRhdGlvbiBhbmQgcGFyYW1ldGVyaXphdGlvbi5cbiAqXG4gKiAtICoqZWRpdCoqOiBUeXBpY2FsbHkgaW5jbHVkZXMgYSBzYXZlIGJ1dHRvbiB0byBwZXJzaXN0IGNoYW5nZXMgbWFkZSBpbiBlZGl0YWJsZSBmaWVsZHMuXG4gKlxuICogYGBgdHNcbiAqIGNvbnN0IGluc3BlY3RQYWdlQ29uZmlnOiBRZFBhZ2VDb25maWc8TXlPYmplY3RUeXBlPiA9IHtcbiAqICAgdGl0bGU6IHsgaTE4bjogJ2kxOG4ucGFnZS50aXRsZScgfSxcbiAqICAgcGFnZVR5cGU6ICdpbnNwZWN0JyxcbiAqICAgcGFnZVR5cGVDb25maWc6IHtcbiAqICAgICBvcGVyYXRpb25Nb2RlOiAnZWRpdCcsXG4gKiAgICAgY2FuY2VsOiB7XG4gKiAgICAgICBoYW5kbGVyOiAoKSA9PiBoYW5kbGVDYW5jZWwoKVxuICogICAgIH0sXG4gKiAgICAgc2F2ZToge1xuICogICAgICAgaGFuZGxlcjogKGZvcm1WYWx1ZXMpID0+IGhhbmRsZVNhdmUoZm9ybVZhbHVlcylcbiAqICAgICB9XG4gKiAgIH1cbiAqIH07XG4gKiBgYGBcbiAqXG4gKiBgYGBodG1sXG4gKiA8IS0tIHdpdGggU2VjdGlvbiAtLT5cbiAqIDxxZC1wYWdlIFtjb25maWddPVwicGFnZUNvbmZpZ1wiPlxuICogICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICA8cWQtZ3JpZCBbY29uZmlnXT1cImdyaWRDb25maWdcIiBbZm9ybUdyb3VwXT1cIm15Rm9ybXNcIiBxZENvbm5lY3RGb3JtU3RhdGVUb1BhZ2U9XCJteUZvcm1zXCI+XG4gKiAgICAgICA8IS0tIHlvdXIgcWQtZm9ybS1jb21wb25lbnRzIGhlcmUgLS0+XG4gKiAgICAgPC9xZC1ncmlkPlxuICogICA8L3FkLXNlY3Rpb24+XG4gKiA8L3FkLXBhZ2U+XG4gKlxuICogPCEtLSB3aXRoIFBhZ2VUYWJzIC0tPlxuICogPHFkLXBhZ2UgW2NvbmZpZ109XCJwYWdlQ29uZmlnXCI+XG4gKiAgIDxxZC1wYWdlLXRhYnMgW2NvbmZpZ109XCJzdGVwcGVyQ29uZmlnXCI+XG4gKiAgICAgPHFkLXBhZ2UtdGFiIFtjb25maWddPVwidGFiQ29uZmlnT25lXCI+XG4gKiAgICAgICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICAgICAgPHFkLWdyaWQgW2NvbmZpZ109XCJncmlkQ29uZmlnXCIgW2Zvcm1Hcm91cF09XCJteUZvcm1zT25lXCIgcWRDb25uZWN0Rm9ybVN0YXRlVG9QYWdlPVwibXlGb3Jtc09uZVwiPlxuICogICAgICAgICAgIDwhLS0geW91ciBxZC1mb3JtLWNvbXBvbmVudHMgaGVyZSAtLT5cbiAqICAgICAgICAgPC9xZC1ncmlkPlxuICogICAgICAgPC9xZC1zZWN0aW9uPlxuICogICAgIDwvcWQtcGFnZS10YWI+XG4gKiAgICAgPHFkLXBhZ2UtdGFiIFtjb25maWddPVwidGFiQ29uZmlnVHdvXCI+XG4gKiAgICAgICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICAgICAgPHFkLWdyaWQgW2NvbmZpZ109XCJncmlkQ29uZmlnXCIgW2Zvcm1Hcm91cF09XCJteUZvcm1zVHdvXCIgcWRDb25uZWN0Rm9ybVN0YXRlVG9QYWdlPVwibXlGb3Jtc1R3b1wiPlxuICogICAgICAgICAgIDwhLS0geW91ciBxZC1mb3JtLWNvbXBvbmVudHMgaGVyZSAtLT5cbiAqICAgICAgICAgPC9xZC1ncmlkPlxuICogICAgICAgPC9xZC1zZWN0aW9uPlxuICogICAgIDwvcWQtcGFnZS10YWI+XG4gKiAgIDwvcWQtcGFnZS10YWJzPlxuICogPC9xZC1wYWdlPlxuICogYGBgXG4gKlxuICogIyMjIyAqKkN1c3RvbSBQYWdlKipcbiAqXG4gKiBgYGB0c1xuICogY29uc3QgY3VzdG9tUGFnZUNvbmZpZzogUWRQYWdlQ29uZmlnPE15T2JqZWN0VHlwZT4gPSB7XG4gKiAgIHRpdGxlOiB7IGkxOG46ICdpMThuLnBhZ2UudGl0bGUnIH0sXG4gKiAgIHBhZ2VUeXBlOiAnY3VzdG9tJyxcbiAqICAgcGFnZVR5cGVDb25maWc6IHtcbiAqICAgICBjdXN0b21BY3Rpb25zOiBbXG4gKiAgICAgICB7XG4gKiAgICAgICAgIGkxOG46ICdpMThuLmN1c3RvbS5hY3Rpb24nLFxuICogICAgICAgICBoYW5kbGVyOiAoKSA9PiBkb1NvbWV0aGluZygpXG4gKiAgICAgICB9XG4gKiAgICAgXVxuICogICB9XG4gKiB9O1xuICogYGBgXG4gKlxuICogYGBgaHRtbFxuICogPHFkLXBhZ2UgW2NvbmZpZ109XCJwYWdlQ29uZmlnXCI+XG4gKiAgIDwhLS0gUGxhY2UgY29udGVudCBoZXJlIHRoYXQgZG9lc27igJl0IGZpdCB0aGUgb3RoZXIgcGFnZSB0eXBlcyAtLT5cbiAqIDwvcWQtcGFnZT5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1wYWdlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BhZ2UuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1FkUGFnZUZvb3RlclNlcnZpY2UsIFFkRm9ybUdyb3VwTWFuYWdlclNlcnZpY2UsIFFkUGFnZVN1Ym1pdEFjdGlvblNlcnZpY2UsIFFkUmVzb2x2ZXJUcmlnZ2VyU2VydmljZV0sXG4gIGhvc3Q6IHsgJ1tjbGFzcy5oYXMtY29udHJvbC1wYW5lbF0nOiAnaXNDb250cm9sUGFuZWxWaXNpYmxlJywgJ1tjbGFzcy5jb250cm9sLXBhbmVsLWJyb2FkXSc6ICdpc0NvbnRyb2xQYW5lbEJyb2FkJyB9XG59KVxuZXhwb3J0IGNsYXNzIFFkUGFnZUNvbXBvbmVudDxUIGV4dGVuZHMgb2JqZWN0PiBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogVGhpcyBwcm9wZXJ0eSBkZWZpbmVzIHRoZSBjb25maWd1cmF0aW9uIGZvciB0aGUgUWRQYWdlIGNvbXBvbmVudCwgaW5jbHVkaW5nIHRoZSBwYWdlIHR5cGUsXG4gICAqIHRpdGxlLCBhbmQgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZm9yIGVhY2ggdHlwZSBvZiBwYWdlLlxuICAgKi9cbiAgQElucHV0KHsgcmVxdWlyZWQ6IHRydWUgfSlcbiAgY29uZmlnITogUWRQYWdlQ29uZmlnPFQ+O1xuXG4gIC8qKlxuICAgKiBBIHN0YXRpYyB0ZXN0IElEIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cyBjYW4gYmUgc2V0LiA8YnIgLz5cbiAgICogVGhlIHZhbHVlIGZvciB0aGUgSFRNTCBhdHRyaWJ1dGUgW2RhdGEtdGVzdC1pZF0uXG4gICAqL1xuICBASW5wdXQoJ2RhdGEtdGVzdC1pZCcpIHRlc3RJZD8gPSAncGFnZSc7XG5cbiAgLyoqXG4gICAqIFRoaXMgZXZlbnQgaXMgZW1pdHRlZCB3aGVuIHRoZSBvcGVyYXRpb24gbW9kZSBvZiB0aGUgaW5zcGVjdCBwYWdlIGlzIGNoYW5nZWQuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgb3BlcmF0aW9uTW9kZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPFFkSW5zcGVjdE9wZXJhdGlvbk1vZGU+KCk7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihRZFNlY3Rpb25Db21wb25lbnQpXG4gIHNlY3Rpb25zITogUXVlcnlMaXN0PFFkU2VjdGlvbkNvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZChRZFBhZ2VDb250cm9sUGFuZWxDb21wb25lbnQpXG4gIGNvbnRyb2xQYW5lbCE6IFFkUGFnZUNvbnRyb2xQYW5lbENvbXBvbmVudDtcblxuICBAQ29udGVudENoaWxkKFFkUGFnZVN0ZXBwZXJDb21wb25lbnQsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgc3RlcHBlckNvbXBvbmVudD86IFFkUGFnZVN0ZXBwZXJDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChRZFBhZ2VUYWJzQ29tcG9uZW50LCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHRhYnNDb21wb25lbnQ/OiBRZFBhZ2VUYWJzQ29tcG9uZW50O1xuXG4gIEBDb250ZW50Q2hpbGQoUWRQYWdlU3RlcHBlckFkYXB0ZXJEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgc3RlcHBlckFkYXB0ZXJEaXJlY3RpdmU/OiBRZFBhZ2VTdGVwcGVyQWRhcHRlckRpcmVjdGl2ZTtcblxuICBAQ29udGVudENoaWxkKFFkUGFnZVRhYnNBZGFwdGVyRGlyZWN0aXZlLCB7IGRlc2NlbmRhbnRzOiB0cnVlIH0pXG4gIHRhYnNBZGFwdGVyRGlyZWN0aXZlPzogUWRQYWdlVGFic0FkYXB0ZXJEaXJlY3RpdmU7XG5cbiAgQENvbnRlbnRDaGlsZHJlbihRZFBhZ2VJbmZvQmFubmVyQ29tcG9uZW50KVxuICBpbmZvQmFubmVycyE6IFF1ZXJ5TGlzdDxRZFBhZ2VJbmZvQmFubmVyQ29tcG9uZW50PjtcblxuICBmb290ZXJIYXNDb250ZW50JDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNGb290ZXJWaXNpYmxlOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcm9qZWN0aW9uR3VhcmRNZXNzYWdlID1cbiAgICAnUUQtVUkgfCBRZFBhZ2UgLSBUaGlzIGNvbnRlbnQgaXMgbm90IHN1cHBvcnRlZC4gUGxlYXNlIHVzZSBRZFNlY3Rpb25BZGFwdGVyRGlyZWN0aXZlIGZvciBjdXN0b20gY29udGVudCBwcm9qZWN0aW9uLic7XG5cbiAgcHJpdmF0ZSBfaXNJbml0aWFsaXplZCA9IGZhbHNlO1xuICBwcml2YXRlIF9kZXN0cm95ZWQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBnZXQgaXNDb250cm9sUGFuZWxWaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbnRyb2xQYW5lbCAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY29udHJvbFBhbmVsLmNvbmZpZz8uaXNIaWRkZW4gIT09IHRydWU7XG4gIH1cblxuICBnZXQgaXNDb250cm9sUGFuZWxCcm9hZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sUGFuZWw/LmNvbmZpZz8ud2lkdGggPT09ICdicm9hZCc7XG4gIH1cblxuICBnZXQgaGFzTmF2aWdhdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEodGhpcy5zdGVwcGVyQ29tcG9uZW50IHx8IHRoaXMudGFic0NvbXBvbmVudCB8fCB0aGlzLnN0ZXBwZXJBZGFwdGVyRGlyZWN0aXZlIHx8IHRoaXMudGFic0FkYXB0ZXJEaXJlY3RpdmUpO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtZm9vdGVyJylcbiAgZ2V0IGZvb3RlclZpc2libGUoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaXNGb290ZXJWaXNpYmxlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5oYXMtaW5mby1iYW5uZXJzJylcbiAgZ2V0IGhhc0luZm9CYW5uZXJzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluZm9CYW5uZXJzLmxlbmd0aCA+IDA7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhZ2VTdG9yZVNlcnZpY2U6IFFkUGFnZVN0b3JlU2VydmljZTxUPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvb3RlclNlcnZpY2U6IFFkUGFnZUZvb3RlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtR3JvdXBNYW5hZ2VyU2VydmljZTogUWRGb3JtR3JvdXBNYW5hZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN1Ym1pdEFjdGlvblNlcnZpY2U6IFFkUGFnZVN1Ym1pdEFjdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IFFkRGlhbG9nU2VydmljZVxuICApIHtcbiAgICB0aGlzLmZvb3Rlckhhc0NvbnRlbnQkID0gdGhpcy5mb290ZXJTZXJ2aWNlLmZvb3Rlckhhc0NvbnRlbnQkO1xuICAgIHRoaXMuZm9vdGVySGFzQ29udGVudCQucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkJCkpLnN1YnNjcmliZShpc1Zpc2libGUgPT4gKHRoaXMuaXNGb290ZXJWaXNpYmxlID0gaXNWaXNpYmxlKSk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNoZWNrQ29uZmlnVmFsaWRpdHkoKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZykgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLmluaXRQYWdlU3RhdGUodGhpcy5jb25maWcpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IGNvbmZpZ0NoYW5nZSA9IGNoYW5nZXNbJ2NvbmZpZyddO1xuXG4gICAgaWYgKCFjb25maWdDaGFuZ2UpIHJldHVybjtcblxuICAgIGNvbnN0IHsgY3VycmVudFZhbHVlOiBjdXJyLCBwcmV2aW91c1ZhbHVlOiBwcmV2IH0gPSBjb25maWdDaGFuZ2U7XG5cbiAgICBpZiAoY3Vycj8ucGFnZVR5cGVDb25maWc/LnN1Ym1pdD8uaXNIaWRkZW4gIT09IHByZXY/LnBhZ2VUeXBlQ29uZmlnPy5zdWJtaXQ/LmlzSGlkZGVuKVxuICAgICAgdGhpcy5mb290ZXJTZXJ2aWNlLnVwZGF0ZUFjdGlvbnMoW1xuICAgICAgICB7IGFjdGlvbktleTogJ3N1Ym1pdCcsIHBhcnRpYWxBY3Rpb246IHsgaXNWaXNpYmxlOiAhY3Vycj8ucGFnZVR5cGVDb25maWc/LnN1Ym1pdD8uaXNIaWRkZW4gfSB9XG4gICAgICBdKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdjcmVhdGUnKSB0aGlzLnNldHVwQ3JlYXRlUGFnZUZvb3RlckFjdGlvbnMoKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2NyZWF0ZScgJiYgdGhpcy5jb25maWc/LnBhZ2VUeXBlQ29uZmlnPy5jYW5jZWwgIT09IHVuZGVmaW5lZClcbiAgICAgIHRoaXMuaGFuZGxlQ2FuY2VsQWN0aW9uV2l0aEZvcm1DaGFuZ2VzKCk7XG5cbiAgICBpZiAodGhpcy5jb25maWcucGFnZVR5cGUgPT09ICdjcmVhdGUnICYmIHRoaXMuY29uZmlnPy5wYWdlVHlwZUNvbmZpZz8uc2F2ZURyYWZ0ICE9PSB1bmRlZmluZWQpXG4gICAgICB0aGlzLmluaXRTYXZlRHJhZnRGb290ZXJBY3Rpb24oKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZy5wYWdlVHlwZSA9PT0gJ2luc3BlY3QnKVxuICAgICAgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLmlzVmlld29ubHkkXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSlcbiAgICAgICAgLnN1YnNjcmliZShpc1ZpZXdvbmx5ID0+XG4gICAgICAgICAgdGhpcy51cGRhdGVJbnNwZWN0UGFnZU9wZXJhdGlvbk1vZGUoXG4gICAgICAgICAgICB0aGlzLmNvbmZpZy5wYWdlVHlwZUNvbmZpZyBhcyBRZFBhZ2VUeXBlSW5zcGVjdENvbmZpZyxcbiAgICAgICAgICAgIGlzVmlld29ubHkgPyAndmlldycgOiAnZWRpdCdcbiAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2Rlc3Ryb3llZCQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tDb25maWdWYWxpZGl0eSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnKSBjb25zb2xlLndhcm4oJ1FkVWkgfCBRZFBhZ2VDb21wb25lbnQgLSBUbyBjb25maWd1cmUgdGhlIHBhZ2UgeW91IHNob3VsZCBwcm92aWRlIGEgdmFsaWQgY29uZmlnLicpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cENyZWF0ZVBhZ2VGb290ZXJBY3Rpb25zKCk6IHZvaWQge1xuICAgIGNvbnN0IHBhZ2VUeXBlQ29uZmlnID0gdGhpcy5jb25maWc/LnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVDcmVhdGVDb25maWc7XG4gICAgY29uc3QgYWN0aW9uS2V5czogUWRDcmVhdGVGb290ZXJBY3Rpb25LZXlbXSA9IFsnc2F2ZURyYWZ0JywgJ2NhbmNlbCcsICdzdWJtaXQnXTtcbiAgICBjb25zdCBhY3Rpb25zOiBQYXJ0aWFsRm9vdGVyQWN0aW9uW10gPSBbXTtcblxuICAgIGZvciAoY29uc3QgYWN0aW9uS2V5IG9mIGFjdGlvbktleXMpIHtcbiAgICAgIGNvbnN0IGFjdGlvbiA9IHBhZ2VUeXBlQ29uZmlnW2FjdGlvbktleV07XG5cbiAgICAgIGlmICghYWN0aW9uKSBjb250aW51ZTtcblxuICAgICAgYWN0aW9ucy5wdXNoKHtcbiAgICAgICAgYWN0aW9uS2V5LFxuICAgICAgICBwYXJ0aWFsQWN0aW9uOiB7XG4gICAgICAgICAgLi4uKGFjdGlvbj8ubGFiZWw/LmkxOG4gPyB7IHRpdGxlSTE4bjogYWN0aW9uLmxhYmVsLmkxOG4gfSA6IHt9KSxcbiAgICAgICAgICBoYW5kbGVyOiB0aGlzLmdlbmVyYXRlRm9vdGVyQWN0aW9uSGFuZGxlcihhY3Rpb24/LmhhbmRsZXIpXG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuZm9vdGVyU2VydmljZS51cGRhdGVBY3Rpb25zKGFjdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDYW5jZWxBY3Rpb25XaXRoRm9ybUNoYW5nZXMoKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZVxuICAgICAgLiRoYXNWYWx1ZXNDaGFuZ2VkKClcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoaGFzQ2hhbmdlZCA9PiB7XG4gICAgICAgIHRoaXMuZm9vdGVyU2VydmljZS51cGRhdGVBY3Rpb25zKFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpb25LZXk6ICdjYW5jZWwnLFxuICAgICAgICAgICAgcGFydGlhbEFjdGlvbjoge1xuICAgICAgICAgICAgICBoYW5kbGVyOiBoYXNDaGFuZ2VkXG4gICAgICAgICAgICAgICAgPyAoKTogdm9pZCA9PiB0aGlzLnNldHVwU3VibWl0QWN0aW9uVmFsaWRhdGlvbigpXG4gICAgICAgICAgICAgICAgOiAoKTogdm9pZCA9PiAodGhpcy5jb25maWc/LnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVDcmVhdGVDb25maWcpPy5jYW5jZWw/LmhhbmRsZXIoKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgXSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFNhdmVEcmFmdEZvb3RlckFjdGlvbigpOiB2b2lkIHtcbiAgICBjb25zdCBwYWdlVHlwZUNvbmZpZyA9IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnIGFzIFFkUGFnZVR5cGVDcmVhdGVDb25maWc7XG5cbiAgICB0aGlzLmZvb3RlclNlcnZpY2Uuc2V0QWN0aW9ucyhbXG4gICAgICB7XG4gICAgICAgIGtleTogJ3NhdmVEcmFmdCcsXG4gICAgICAgIGFjdGlvbjoge1xuICAgICAgICAgIHRpdGxlSTE4bjogJ2kxOG4ucWQucGFnZS5mb290ZXIuc2F2ZURyYWZ0JyxcbiAgICAgICAgICB0eXBlOiBRZEZvb3RlckFjdGlvblR5cGUuU2Vjb25kYXJ5LFxuICAgICAgICAgIGhhbmRsZXI6ICgpOiB2b2lkID0+IHBhZ2VUeXBlQ29uZmlnPy5zYXZlRHJhZnQ/LmhhbmRsZXIoKSxcbiAgICAgICAgICBpc1Zpc2libGU6IHRydWUsXG4gICAgICAgICAgaXNEaXNhYmxlZDogZmFsc2VcbiAgICAgICAgfVxuICAgICAgfVxuICAgIF0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbnNwZWN0UGFnZU9wZXJhdGlvbk1vZGUocGFnZVR5cGVDb25maWc6IFFkUGFnZVR5cGVJbnNwZWN0Q29uZmlnLCBtb2RlOiBRZEluc3BlY3RPcGVyYXRpb25Nb2RlKTogdm9pZCB7XG4gICAgdGhpcy5zdWJtaXRBY3Rpb25TZXJ2aWNlLnNldFN1Ym1pdEFjdGlvbkZvckluc3BlY3QocGFnZVR5cGVDb25maWcsIG1vZGUgPT09ICd2aWV3Jyk7XG5cbiAgICB0aGlzLmZvb3RlclNlcnZpY2UudXBkYXRlQWN0aW9ucyhbXG4gICAgICB7IGFjdGlvbktleTogJ3N1Ym1pdCcsIHBhcnRpYWxBY3Rpb246IHsgaXNWaXNpYmxlOiBtb2RlID09PSAndmlldycgJiYgIXBhZ2VUeXBlQ29uZmlnPy5zdWJtaXQ/LmlzSGlkZGVuIH0gfVxuICAgIF0pO1xuXG4gICAgdGhpcy5pbml0U3VibWl0VmFsaWRhdGlvbigpO1xuXG4gICAgaWYgKHRoaXMuX2lzSW5pdGlhbGl6ZWQpIHRoaXMub3BlcmF0aW9uTW9kZUNoYW5nZWQuZW1pdChtb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVGb290ZXJBY3Rpb25IYW5kbGVyKGhhbmRsZXI/OiAodmFsdWVzOiB1bmtub3duKSA9PiB2b2lkKTogKC4uLmFyZ3M6IHVua25vd25bXSkgPT4gdm9pZCB7XG4gICAgcmV0dXJuICguLi5hcmdzKSA9PiB7XG4gICAgICBpZiAoIWhhbmRsZXIpIHJldHVybjtcblxuICAgICAgaGFuZGxlcih0aGlzLmZvcm1Hcm91cE1hbmFnZXJTZXJ2aWNlLmhhc0Zvcm1Hcm91cHMoKSA/IHRoaXMuZm9ybUdyb3VwTWFuYWdlclNlcnZpY2UuZ2V0QWxsVmFsdWVzKCkgOiBhcmdzKTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cFN1Ym1pdEFjdGlvblZhbGlkYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dcbiAgICAgIC5vcGVuKFFkUGFnZUNhbmNlbENvbmZpcm1hdGlvbkRpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICB0aXRsZTogeyBpMThuOiAnaTE4bi5xZC5wYWdlLmNhbmNlbC5jb25maXJtYXRpb24uZGlhbG9nLnRpdGxlJyB9LFxuICAgICAgICBkaWFsb2dTaXplOiBRZERpYWxvZ1NpemUuU21hbGwsXG4gICAgICAgIGRhdGE6IHRoaXMuY29uZmlnLnBhZ2VUeXBlQ29uZmlnXG4gICAgICB9KVxuICAgICAgLmNsb3NlZC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSlcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdFN1Ym1pdFZhbGlkYXRpb24oKTogdm9pZCB7XG4gICAgdGhpcy5mb3JtR3JvdXBNYW5hZ2VyU2VydmljZVxuICAgICAgLiRhcmVGb3JtR3JvdXBzVmFsaWQoKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQkKSxcbiAgICAgICAgdGFwKGlzVmFsaWQgPT4ge1xuICAgICAgICAgIHRoaXMuZm9vdGVyU2VydmljZS51cGRhdGVBY3Rpb25zKFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWN0aW9uS2V5OiAnc3VibWl0JyxcbiAgICAgICAgICAgICAgcGFydGlhbEFjdGlvbjoge1xuICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxJbmZvOiBpc1ZhbGlkXG4gICAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgOiB7IGluZm9UeXBlOiAnd2FybmluZycsIG1lc3NhZ2U6IHsgaTE4bjogJ2kxOG4ucWQucGFnZS5zdWJtaXQuaW52YWxpZEZvcm0nIH0gfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgXSk7XG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjxtYWluIHFkU25hY2tiYXJMaXN0ZW5lcj5cbiAgPHFkLXBhZ2Utb2JqZWN0LWhlYWRlclxuICAgIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkXCJcbiAgICBbYXR0ci5kYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJ29iamVjdC1oZWFkZXInXCJcbiAgICBbY29uZmlnXT1cImNvbmZpZ1wiXG4gICAgW2hhc05hdmlnYXRpb25dPVwiaGFzTmF2aWdhdGlvblwiXG4gID48L3FkLXBhZ2Utb2JqZWN0LWhlYWRlcj5cblxuICA8ZGl2IGNsYXNzPVwicGFnZS1pbmZvLWJhbm5lcnNcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJxZC1wYWdlLWluZm8tYmFubmVyXCI+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnBhZ2VUeXBlID09PSAnY3JlYXRlJyB8fCBjb25maWcucGFnZVR5cGUgPT09ICdjdXN0b20nXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwicWQtcGFnZS1zdGVwcGVyXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltxZFBhZ2VTdGVwcGVyQWRhcHRlcl1cIj48L25nLWNvbnRlbnQ+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb25maWcucGFnZVR5cGUgPT09ICdvdmVydmlldycgfHwgY29uZmlnLnBhZ2VUeXBlID09PSAnaW5zcGVjdCcgfHwgY29uZmlnLnBhZ2VUeXBlID09PSAnY3VzdG9tJ1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInFkLXBhZ2UtdGFic1wiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbcWRQYWdlVGFic0FkYXB0ZXJdXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInFkLXNlY3Rpb25cIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3FkU2VjdGlvbkFkYXB0ZXJdXCI+PC9uZy1jb250ZW50PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29uZmlnLnBhZ2VUeXBlID09PSAnY3VzdG9tJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcm9qZWN0ZWRDb250ZW50XCI+PC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9tYWluPlxuXG48Zm9vdGVyICpuZ0lmPVwiZm9vdGVySGFzQ29udGVudCQgfCBhc3luY1wiPlxuICA8cWQtcGFnZS1mb290ZXIgW2F0dHIuZGF0YS10ZXN0LWlkXT1cInRlc3RJZCArICctZm9vdGVyJ1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltxZFBhZ2VGb290ZXJdXCI+PC9uZy1jb250ZW50PlxuICA8L3FkLXBhZ2UtZm9vdGVyPlxuPC9mb290ZXI+XG5cbjxhc2lkZSAqbmdJZj1cImlzQ29udHJvbFBhbmVsVmlzaWJsZVwiPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJxZC1wYWdlLWNvbnRyb2wtcGFuZWxcIj48L25nLWNvbnRlbnQ+XG48L2FzaWRlPlxuXG48cWQtcHJvamVjdGlvbi1ndWFyZCAqbmdJZj1cImNvbmZpZy5wYWdlVHlwZSAhPT0gJ2N1c3RvbSdcIiBbd2FybmluZ01lc3NhZ2VdPVwicHJvamVjdGlvbkd1YXJkTWVzc2FnZVwiPlxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJvamVjdGVkQ29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9xZC1wcm9qZWN0aW9uLWd1YXJkPlxuXG48bmctdGVtcGxhdGUgI3Byb2plY3RlZENvbnRlbnQ+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -64,6 +64,8 @@ import * as i7 from "@angular/common";
|
|
|
64
64
|
*
|
|
65
65
|
* #### **Usage**
|
|
66
66
|
*
|
|
67
|
+
* **Basic Example:**
|
|
68
|
+
*
|
|
67
69
|
* ```typescript
|
|
68
70
|
* @Component({ ... })
|
|
69
71
|
* export class MyPageTabsComponent {
|
|
@@ -105,6 +107,74 @@ import * as i7 from "@angular/common";
|
|
|
105
107
|
* </qd-page-tab>
|
|
106
108
|
* </qd-page-tabs>
|
|
107
109
|
* ```
|
|
110
|
+
*
|
|
111
|
+
* **Bookmarkable Tabs Example: **
|
|
112
|
+
*
|
|
113
|
+
* To enable bookmarkable tabs that sync with the browser URL, set `connectWithRouter: true`
|
|
114
|
+
* and provide a unique `name` for each tab:
|
|
115
|
+
*
|
|
116
|
+
* ```typescript
|
|
117
|
+
* import { Component } from '@angular/core';
|
|
118
|
+
* import { Router } from '@angular/router';
|
|
119
|
+
* import { QdPageTabsConfig, QdPageTabConfig } from '@qd-ui/qd-ui';
|
|
120
|
+
*
|
|
121
|
+
* @Component({
|
|
122
|
+
* selector: 'app-bookmarkable-tabs',
|
|
123
|
+
* template: `
|
|
124
|
+
* <qd-page-tabs [config]="pageTabsConfig">
|
|
125
|
+
* <qd-page-tab [config]="overviewTabConfig">
|
|
126
|
+
* <qd-section>
|
|
127
|
+
* This is the overview tab content.
|
|
128
|
+
* </qd-section>
|
|
129
|
+
* </qd-page-tab>
|
|
130
|
+
*
|
|
131
|
+
* <qd-page-tab [config]="detailTabConfig">
|
|
132
|
+
* <qd-section>
|
|
133
|
+
* This is the detail tab content.
|
|
134
|
+
* </qd-section>
|
|
135
|
+
* </qd-page-tab>
|
|
136
|
+
*
|
|
137
|
+
* <qd-page-tab [config]="controlResultsTabConfig">
|
|
138
|
+
* <qd-section>
|
|
139
|
+
* This is the control results tab content.
|
|
140
|
+
* </qd-section>
|
|
141
|
+
* </qd-page-tab>
|
|
142
|
+
* </qd-page-tabs>
|
|
143
|
+
* `
|
|
144
|
+
* })
|
|
145
|
+
* export class BookmarkableTabsComponent {
|
|
146
|
+
* // Enable router connection for bookmarkable tabs
|
|
147
|
+
* pageTabsConfig: QdPageTabsConfig = {
|
|
148
|
+
* selectedIndex: 0,
|
|
149
|
+
* connectWithRouter: true
|
|
150
|
+
* };
|
|
151
|
+
*
|
|
152
|
+
* // Each tab must have a unique 'name' when connectWithRouter is enabled
|
|
153
|
+
* overviewTabConfig: QdPageTabConfig = {
|
|
154
|
+
* label: { i18n: 'Overview' },
|
|
155
|
+
* name: 'overview' // Required for router connection
|
|
156
|
+
* };
|
|
157
|
+
*
|
|
158
|
+
* detailTabConfig: QdPageTabConfig = {
|
|
159
|
+
* label: { i18n: 'Details' },
|
|
160
|
+
* name: 'details' // Required for router connection
|
|
161
|
+
* };
|
|
162
|
+
*
|
|
163
|
+
* controlResultsTabConfig: QdPageTabConfig = {
|
|
164
|
+
* label: { i18n: 'Control Results' },
|
|
165
|
+
* name: 'controlResults' // Required for router connection
|
|
166
|
+
* };
|
|
167
|
+
*
|
|
168
|
+
* constructor (private router: Router) {}
|
|
169
|
+
* }
|
|
170
|
+
* ```
|
|
171
|
+
*
|
|
172
|
+
* **Bookmarkable Tabs Behavior: **
|
|
173
|
+
* - URLs will include query parameter: `?tab=overview`, `?tab=details`, `?tab=controlResults`
|
|
174
|
+
* - Users can bookmark specific tabs and return directly to them
|
|
175
|
+
* - Browser back/forward buttons work with tab navigation
|
|
176
|
+
* - If an invalid tab name is provided in URL, the first available tab is selected
|
|
177
|
+
* - If no tab parameter is present, the `selectedIndex` or first non-disabled tab is selected
|
|
108
178
|
*/
|
|
109
179
|
export class QdPageTabsComponent extends CdkStepper {
|
|
110
180
|
footerService;
|
|
@@ -293,7 +363,7 @@ export class QdPageTabsComponent extends CdkStepper {
|
|
|
293
363
|
});
|
|
294
364
|
});
|
|
295
365
|
}
|
|
296
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPageTabsComponent, deps: [{ token: i1.QdPageFooterService, optional: true }, { token: i2.Directionality, optional: true }, { token: i3.QdPageStoreService }, { token: i4.Router }, { token: i4.ActivatedRoute }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
366
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPageTabsComponent, deps: [{ token: i1.QdPageFooterService, optional: true }, { token: i2.Directionality, optional: true }, { token: i3.QdPageStoreService }, { token: i4.Router }, { token: i4.ActivatedRoute, optional: true }, { token: i0.ChangeDetectorRef }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
297
367
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.9", type: QdPageTabsComponent, isStandalone: true, selector: "qd-page-tabs", inputs: { config: "config", testId: ["data-test-id", "testId"] }, outputs: { tabSelection: "tabSelection" }, host: { properties: { "class.standalone": "!footerService" }, classAttribute: "qd-tabs" }, providers: [{ provide: CdkStepper, useExisting: QdPageTabsComponent }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"qd-tabs-items-container\" [ngClass]=\"{ scrollable: config?.scrollabe }\">\n <qd-page-tab-header\n *ngFor=\"let tab of tabs; let i = index\"\n (click)=\"selectTab(tab)\"\n [id]=\"_getTabLabelId(i)\"\n [index]=\"i\"\n [state]=\"_getIndicatorType(i, tab.state)\"\n [label]=\"tab.config.label.i18n | translate\"\n [counters]=\"tab.config.counters\"\n [isSelected]=\"selectedIndex === i\"\n [isDisabled]=\"tab.config?.isDisabled\"\n [data-test-id]=\"testId + '-header' + '-' + i\"\n >\n </qd-page-tab-header>\n</div>\n\n<div class=\"tabs-content\">\n <ng-container *ngIf=\"!selected?.config?.isDisabled\" [ngTemplateOutlet]=\"selected?.content\"></ng-container>\n</div>\n\n<div class=\"qd-tabs-action-area\" *ngIf=\"isSubmitButtonShown()\">\n <button qdButton (click)=\"save()\" [disabled]=\"isSubmitButtonDisabled()\" [data-test-id]=\"testId + '-submit'\">\n {{ config?.submitButton?.i18n || \"i18n.qd.tabs.button.submit\" | translate }}\n </button>\n</div>\n", styles: [":host{display:flex;flex-direction:column}:host.standalone{height:calc(100% - 50px)}:host .qd-tabs-items-container{display:flex;width:100%;flex-direction:row;flex-wrap:wrap;padding:0 1.25rem;border-bottom:.125rem solid rgb(213,213,213);background-color:#fff;gap:0 .9375rem}@media (max-width: 599.98px){:host .qd-tabs-items-container{padding:0 .9375rem}}@media (max-width: 1279.98px){:host .qd-tabs-items-container.scrollable{flex-wrap:nowrap;overflow-x:scroll;overflow-y:hidden;scrollbar-width:none}}:host .tabs-content{flex:1 1 auto}:host .qd-tabs-action-area{display:flex;width:100%;height:50px;justify-content:flex-end}:host .qd-tabs-action-area button{margin-right:1.25rem}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: QdPageTabHeaderComponent, selector: "qd-page-tab-header", inputs: ["state", "label", "counters", "index", "isSelected", "isDisabled", "data-test-id"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i5.TranslatePipe, name: "translate" }, { kind: "ngmodule", type: QdButtonModule }, { kind: "component", type: i6.QdButtonComponent, selector: "button[qdButton], a[qdButton], button[qd-button]", inputs: ["disabled", "color", "icon", "data-test-id", "additionalInfo"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i7.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
298
368
|
}
|
|
299
369
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: QdPageTabsComponent, decorators: [{
|
|
@@ -303,7 +373,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
303
373
|
type: Optional
|
|
304
374
|
}] }, { type: i2.Directionality, decorators: [{
|
|
305
375
|
type: Optional
|
|
306
|
-
}] }, { type: i3.QdPageStoreService }, { type: i4.Router }, { type: i4.ActivatedRoute
|
|
376
|
+
}] }, { type: i3.QdPageStoreService }, { type: i4.Router }, { type: i4.ActivatedRoute, decorators: [{
|
|
377
|
+
type: Optional
|
|
378
|
+
}] }, { type: i0.ChangeDetectorRef }, { type: i0.ElementRef }], propDecorators: { config: [{
|
|
307
379
|
type: Input
|
|
308
380
|
}], testId: [{
|
|
309
381
|
type: Input,
|
|
@@ -311,4 +383,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImpor
|
|
|
311
383
|
}], tabSelection: [{
|
|
312
384
|
type: Output
|
|
313
385
|
}] } });
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10YWJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlLXRhYnMvcGFnZS10YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlLXRhYnMvcGFnZS10YWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUUsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBR2hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7OztBQUVoRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFVLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsRUFBRTtZQUN4RixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztnQkFDckIsYUFBYSxFQUFFLGNBQWMsQ0FBQyxhQUFhO2dCQUMzQyx1QkFBdUIsRUFBRSxjQUFjLENBQUMsdUJBQXVCO2dCQUMvRCxXQUFXLEVBQUUsY0FBYyxDQUFDLFlBQWtDO2dCQUM5RCxxQkFBcUIsRUFBRSxjQUFjLENBQUMsc0JBQTRDO2FBQ25GLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzt1R0E3TlUsbUJBQW1COzJGQUFuQixtQkFBbUIsbVFBTm5CLENBQUMsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxDQUFDLHNFQzlIeEUsay9CQXlCQSxndUJEeUdZLEtBQUssbUhBQUUsSUFBSSw2RkFBRSxnQkFBZ0Isb0pBQUUsd0JBQXdCLDJKQUFFLGVBQWUsMkZBQUUsY0FBYyx3TkFBRSxZQUFZOzsyRkFFckcsbUJBQW1CO2tCQVYvQixTQUFTOytCQUNFLGNBQWMsYUFHYixDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLHFCQUFxQixFQUFFLENBQUMsbUJBQ3JELHVCQUF1QixDQUFDLE1BQU0sUUFDekMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLGNBQ3RELElBQUksV0FDUCxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsd0JBQXdCLEVBQUUsZUFBZSxFQUFFLGNBQWMsRUFBRSxZQUFZLENBQUM7OzBCQW1DOUcsUUFBUTs7MEJBQ1IsUUFBUTtxTEExQlgsTUFBTTtzQkFETCxLQUFLO2dCQU1pQixNQUFNO3NCQUE1QixLQUFLO3VCQUFDLGNBQWM7Z0JBRUYsWUFBWTtzQkFBOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGlvbmFsaXR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2JpZGknO1xuaW1wb3J0IHsgQ2RrU3RlcHBlciwgU3RlcFN0YXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3N0ZXBwZXInO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRGVzdHJveVJlZixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFFkQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uL2J1dHRvbi5tb2R1bGUnO1xuaW1wb3J0IHsgUWRQYWdlRm9vdGVyU2VydmljZSB9IGZyb20gJy4uL3BhZ2Uvc2hhcmVkL3NlcnZpY2VzL3BhZ2UtZm9vdGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgUWRQYWdlU3RvcmVTZXJ2aWNlIH0gZnJvbSAnLi4vcGFnZS9zaGFyZWQvc2VydmljZXMvcGFnZS1zdG9yZS5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUGFnZVRhYnNDb25maWcgfSBmcm9tICcuL21vZGVsL3BhZ2UtdGFicy1jb25maWcnO1xuaW1wb3J0IHsgUWRUYWJTZWxlY3Rpb25FdmVudCB9IGZyb20gJy4vbW9kZWwvcGFnZS10YWJzLXNlbGVjdGlvbi1ldmVudCc7XG5pbXBvcnQgeyBRZFBhZ2VUYWJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuL3BhZ2UtdGFiLWhlYWRlci9wYWdlLXRhYi1oZWFkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IFFkUGFnZVRhYkNvbXBvbmVudCB9IGZyb20gJy4vcGFnZS10YWIvcGFnZS10YWIuY29tcG9uZW50JztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuXG4vKipcbiAqICoqUWRQYWdlVGFic0NvbXBvbmVudCoqIHByb3ZpZGVzIGEgbm9uLWxpbmVhciB0YWJiZWQgbmF2aWdhdGlvbiBzeXN0ZW0gd2l0aGluIGEgKipRZFBhZ2UqKi5cbiAqIEl0IGVuYWJsZXMgc3dpdGNoaW5nIGJldHdlZW4gZGlmZmVyZW50IHNlY3Rpb25zIHdoaWxlIG1haW50YWluaW5nIGZvcm0gdmFsaWRhdGlvbiBhbmQgY29udHJvbGxlZCBuYXZpZ2F0aW9uLlxuICpcbiAqICMjIyMgKipGZWF0dXJlcyoqXG4gKlxuICogLSAqKk5vbi1saW5lYXIgTmF2aWdhdGlvbioqOiBVc2VycyBjYW4gbmF2aWdhdGUgZnJlZWx5IGJldHdlZW4gdGFicywgd2l0aCB2YWxpZGF0aW9uIGNoZWNrcyB3aGVyZSBuZWNlc3NhcnkuXG4gKiAtICoqRm9ybSBWYWxpZGF0aW9uIFN1cHBvcnQqKjogRW5zdXJlcyB0YWJzIGRpc3BsYXkgZXJyb3JzIHdoZW4gbmVjZXNzYXJ5IGlmIGZvcm0gaW5wdXRzIGFyZSBpbnZhbGlkLlxuICogLSAqKkN1c3RvbWl6YWJsZSBUYWIgQ29uZmlndXJhdGlvbnMqKjogRWFjaCB0YWIgY2FuIGhhdmUgY3VzdG9tIGxhYmVscywgdmFsaWRhdGlvbiwgYW5kIGNvdW50ZXJzIGZvciB0cmFja2luZyBzdGF0ZXMuXG4gKiAtICoqRHluYW1pYyBDb3VudGVycyoqOiBEaXNwbGF5cyBudW1lcmljIGluZGljYXRvcnMgdG8gc2lnbmFsIGNyaXRpY2FsIG9yIHBvc2l0aXZlIHN0YXRlcy5cbiAqIC0gKipTdGFuZGFsb25lIENvbXBhdGliaWxpdHkqKjogQ2FuIGJlIHVzZWQgaW5kZXBlbmRlbnRseSBvciBpbnRlZ3JhdGVkIHdpdGhpbiBhIGxhcmdlciAqKlFkUGFnZSoqIHN0cnVjdHVyZS5cbiAqIC0gKipDdXN0b21pemFibGUgU3VibWl0IEJ1dHRvbioqOiBBbGxvd3MgY29uZmlndXJhdGlvbiBvZiBhbiBhY3Rpb24gaGFuZGxlciBhbmQgdmlzaWJpbGl0eSBzZXR0aW5ncy5cbiAqIC0gKipCb29rbWFya2FibGUgdGFicyoqOiBBbGxvd3MgdXNlcnMgdG8gYm9va21hcmsgdGFicyBhbmQgbWFrZSB0aGVtIG5hdmlnYWJsZS5cbiAqXG4gKiAjIyMjICoqVGFiIENvbmZpZ3VyYXRpb24qKlxuICpcbiAqIEVhY2ggdGFiIGluc2lkZSBgUWRQYWdlVGFic0NvbXBvbmVudGAgY2FuIGJlIGNvbmZpZ3VyZWQgdXNpbmcgYFFkUGFnZVRhYkNvbmZpZ2AsIHN1cHBvcnRpbmc6XG4gKlxuICogLSAqKmxhYmVsKio6IEEgdHJhbnNsYXRhYmxlIGxhYmVsIGZvciB0aGUgdGFiLlxuICogLSAqKmlzRGlzYWJsZWQqKjogV2hldGhlciB0aGUgdGFiIHNob3VsZCBiZSBpbnRlcmFjdGFibGUuXG4gKiAtICoqY291bnRlcnMqKjogRGlzcGxheXMgbnVtZXJpYyBjb3VudGVycyBmb3IgKipjcml0aWNhbCoqIChyZWQpIGFuZCAqKnBvc2l0aXZlKiogKGdyZWVuKSBzdGF0ZXMuXG4gKiAtICoqbmFtZSoqOiBVbmlxdWUgbmFtZSBvZiB0aGlzIHRhYi4gVXNlZCBmb3IgcXVlcnkgcGFyYW0gcm91dGluZyB2aWEgYD90YWI9PHRhYk5hbWU+YC4gUmVxdWlyZWQgd2hlbiBgY29ubmVjdFdpdGhSb3V0ZXJgIGluICoqUWRQYWdlVGFic0NvbmZpZyoqIGlzIGVuYWJsZWQuXG4gKlxuICogIyMjIyAqKkZvcm0gSGFuZGxpbmcqKlxuICpcbiAqIFRhYnMgc3VwcG9ydCBmb3JtIGdyb3Vwcywgd2hpY2ggYXJlIHBhc3NlZCB1c2luZyB0aGUgYFt0YWJDb250cm9sXWAgaW5wdXQuXG4gKiBUaGUgc3lzdGVtIGVuc3VyZXMgdGhhdCBmb3JtcyB2YWxpZGF0ZSBjb3JyZWN0bHkgYmVmb3JlIGFsbG93aW5nIG5hdmlnYXRpb24uXG4gKlxuICogIyMjIyAqKkVycm9yIEhhbmRsaW5nKipcbiAqXG4gKiBFcnJvciBzdGF0ZXMgYXBwZWFyIHdoZW46XG4gKlxuICogLSAqKkEgcmVxdWlyZWQgZm9ybSBmaWVsZCBpcyBsZWZ0IGVtcHR5Kio6IFRoZSB0YWIgdGl0bGUgY2hhbmdlcyB0byByZWQuXG4gKiAtICoqSW52YWxpZCBkYXRhIGlzIGVudGVyZWQqKjogVGhlIHZhbGlkYXRpb24gcHJvY2VzcyBjaGFuZ2VzIHRoZSB0YWIgdGl0bGUgdG8gcmVkLlxuICpcbiAqICMjIyMgKipTdWJtaXQgQnV0dG9uIENvbmZpZ3VyYXRpb24qKlxuICpcbiAqIFRoZSBzdWJtaXQgYnV0dG9uIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYiBzeXN0ZW0gY2FuIGJlIGNvbmZpZ3VyZWQgdmlhIGBRZFBhZ2VUYWJzQ29uZmlnYDpcbiAqXG4gKiAtICoqaTE4bioqOiBUaGUgdHJhbnNsYXRlZCBsYWJlbCBmb3IgdGhlIHN1Ym1pdCBidXR0b24uXG4gKiAtICoqaGFuZGxlcioqOiBBIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgcmVjZWl2ZXMgZm9ybSBkYXRhIHVwb24gc3VibWlzc2lvbi5cbiAqIC0gKippc0Rpc2FibGVkKio6IENvbnRyb2xzIHdoZXRoZXIgdGhlIGJ1dHRvbiBzaG91bGQgYmUgYWN0aXZlIG9yIG5vdC5cbiAqIC0gKippc0hpZGRlbioqOiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGJ1dHRvbiBpcyB2aXNpYmxlLlxuICogLSAqKmNvbm5lY3RXaXRoUm91dGVyKio6IElmIHNldCB0byB0cnVlLCB0aGUgdGFiIHdpbGwgYmUgY29ubmVjdGVkIHRvIHRoZSBVUkwgYW5kIHdpbGwgYmUgYm9va21hcmtlZC4gSXQgaXMgb2JsaWdhdG9yeSB0byBzZXQgdGhlIGBuYW1lYCBhdHRyaWJ1dGUgZm9yIGVhY2ggdGFiLlxuICpcbiAqICMjIyMgKipVc2FnZSoqXG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogQENvbXBvbmVudCh7IC4uLiB9KVxuICogZXhwb3J0IGNsYXNzIE15UGFnZVRhYnNDb21wb25lbnQge1xuICogICBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gKiAgICAgZmlyc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICogICAgIGxhc3ROYW1lOiBuZXcgRm9ybUNvbnRyb2woJycpLFxuICogICAgIGFnZTogbmV3IEZvcm1Db250cm9sKCcnKVxuICogICB9KTtcbiAqXG4gKiAgIGNvbmZpZzogUWRQYWdlVGFic0NvbmZpZyA9IHtcbiAqICAgICBzdWJtaXRCdXR0b246IHtcbiAqICAgICAgIGhhbmRsZXI6ICh2YWx1ZXMpID0+IGRvU29tZXRoaW5nV2l0aCh2YWx1ZXMpXG4gKiAgICAgfVxuICogICB9O1xuICpcbiAqICAgZmlyc3RUYWJDb25maWc6IFFkUGFnZVRhYkNvbmZpZyA9IHtcbiAqICAgICBsYWJlbDogeyBpMThuOiAnVGFiIE9uZScgfSxcbiAqICAgICBjb3VudGVyczogb2YoeyBwb3NpdGl2ZTogMywgY3JpdGljYWw6IDEgfSlcbiAqICAgfTtcbiAqXG4gKiAgIC4uLlxuICogfVxuICogYGBgXG4gKlxuICogYGBgaHRtbFxuICogPHFkLXBhZ2UtdGFicyBbY29uZmlnXT1cImNvbmZpZ1wiPlxuICogICA8cWQtcGFnZS10YWIgW2NvbmZpZ109XCJmaXJzdFRhYkNvbmZpZ1wiIFt0YWJDb250cm9sXT1cImZvcm1cIj5cbiAqICAgICA8cWQtc2VjdGlvbiBbY29uZmlnXT1cInNlY3Rpb25Db25maWdcIj5cbiAqICAgICAgIDxxZC1ncmlkIFtjb25maWddPVwiZ3JpZENvbmZpZ1wiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICogICAgICAgICA8cWQtaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZmlyc3ROYW1lXCI+PC9xZC1pbnB1dD5cbiAqICAgICAgICAgPHFkLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImxhc3ROYW1lXCI+PC9xZC1pbnB1dD5cbiAqICAgICAgICAgPHFkLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImFnZVwiPjwvcWQtaW5wdXQ+XG4gKiAgICAgICA8L3FkLWdyaWQ+XG4gKiAgICAgPC9xZC1zZWN0aW9uPlxuICogICA8L3FkLXBhZ2UtdGFiPlxuICpcbiAqICAgPHFkLXBhZ2UtdGFiIC4uLiA+XG4gKiAgICAgLi4uXG4gKiAgIDwvcWQtcGFnZS10YWI+XG4gKiA8L3FkLXBhZ2UtdGFicz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdxZC1wYWdlLXRhYnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFnZS10YWJzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFnZS10YWJzLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogQ2RrU3RlcHBlciwgdXNlRXhpc3Rpbmc6IFFkUGFnZVRhYnNDb21wb25lbnQgfV0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7IGNsYXNzOiAncWQtdGFicycsICdbY2xhc3Muc3RhbmRhbG9uZV0nOiAnIWZvb3RlclNlcnZpY2UnIH0sXG4gIHN0YW5kYWxvbmU6IHRydWUsIC8vIGluaGVyaXRlZCBieSBDZGtTdGVwcGVyXG4gIGltcG9ydHM6IFtOZ0ZvciwgTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgUWRQYWdlVGFiSGVhZGVyQ29tcG9uZW50LCBUcmFuc2xhdGVNb2R1bGUsIFFkQnV0dG9uTW9kdWxlLCBDb21tb25Nb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIFFkUGFnZVRhYnNDb21wb25lbnRcbiAgZXh0ZW5kcyBDZGtTdGVwcGVyXG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBvZiBRZFBhZ2VUYWJzLlxuICAgKi9cbiAgQElucHV0KClcbiAgY29uZmlnITogUWRQYWdlVGFic0NvbmZpZztcblxuICAvKipcbiAgICogQSBzdGF0aWMgdGVzdCBJRCBmb3IgaW50ZWdyYXRpb24gdGVzdHMgY2FuIGJlIHNldC5cbiAgICovXG4gIEBJbnB1dCgnZGF0YS10ZXN0LWlkJykgdGVzdElkID0gJ3BhZ2UtdGFicyc7XG5cbiAgQE91dHB1dCgpIHJlYWRvbmx5IHRhYlNlbGVjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8UWRUYWJTZWxlY3Rpb25FdmVudD4oKTtcblxuICBwcml2YXRlIF92aWV3b25seTogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95UmVmID0gaW5qZWN0KERlc3Ryb3lSZWYpO1xuXG4gIGdldCB0YWJzKCk6IFF1ZXJ5TGlzdDxRZFBhZ2VUYWJDb21wb25lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcyBhcyBRdWVyeUxpc3Q8UWRQYWdlVGFiQ29tcG9uZW50PjtcbiAgfVxuXG4gIG92ZXJyaWRlIGdldCBzZWxlY3RlZCgpOiBRZFBhZ2VUYWJDb21wb25lbnQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBzdXBlci5zZWxlY3RlZCBhcyBRZFBhZ2VUYWJDb21wb25lbnQ7XG4gIH1cblxuICBvdmVycmlkZSBzZXQgc2VsZWN0ZWQoc3RlcDogUWRQYWdlVGFiQ29tcG9uZW50IHwgdW5kZWZpbmVkKSB7XG4gICAgc3VwZXIuc2VsZWN0ZWQgPSBzdGVwO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQE9wdGlvbmFsKCkgcmVhZG9ubHkgZm9vdGVyU2VydmljZTogUWRQYWdlRm9vdGVyU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcbiAgICBwcml2YXRlIHBhZ2VTdG9yZVNlcnZpY2U6IFFkUGFnZVN0b3JlU2VydmljZTxhbnk+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgKSB7XG4gICAgc3VwZXIoX2RpciwgX2NoYW5nZURldGVjdG9yUmVmLCBfZWxlbWVudFJlZik7XG4gICAgdGhpcy5tYXBTZWxlY3Rpb25DaGFuZ2VUb1RhYlNlbGVjdGlvbk91dHB1dCgpO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5saW5lYXIgPSBmYWxzZTtcblxuICAgIHRoaXMucGFnZVN0b3JlU2VydmljZS5pc1ZpZXdvbmx5JC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUodiA9PiB7XG4gICAgICB0aGlzLl92aWV3b25seSA9IHY7XG4gICAgICB0aGlzLl9zdGF0ZUNoYW5nZWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBbJ2xpbmVhcicsICdzZWxlY3RlZEluZGV4JywgJ3NlbGVjdGVkJywgJ29yaWVudGF0aW9uJ11cbiAgICAgIC5maWx0ZXIoaW5wdXROYW1lID0+ICEhY2hhbmdlc1tpbnB1dE5hbWVdKVxuICAgICAgLmZvckVhY2goaW5wdXROYW1lID0+IHRoaXMuYmxvY2tDZGtJbnB1dChpbnB1dE5hbWUpKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ0FmdGVyQ29udGVudEluaXQoKTtcblxuICAgIHRoaXMudGFicy5jaGFuZ2VzLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9zdGF0ZUNoYW5nZWQoKSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmluaXRpYWxpemVUYWJTZWxlY3Rpb24oKTtcbiAgICAgIHRoaXMuY29uZmlndXJlQm9va21hcmthYmxlVGFicygpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGFiU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZz8uc2VsZWN0ZWRJbmRleCAmJiB0aGlzLmlzVGFiU2VsZWN0YWJsZSh0aGlzLmNvbmZpZy5zZWxlY3RlZEluZGV4KSkge1xuICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGhpcy5jb25maWcuc2VsZWN0ZWRJbmRleDtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNlbGVjdEZpcnN0Tm90RGlzYWJsZWRUYWIoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uZmlndXJlQm9va21hcmthYmxlVGFicygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jb25maWc/LmNvbm5lY3RXaXRoUm91dGVyKSB7XG4gICAgICB0aGlzLmluaXRpYWxpemVUYWJGcm9tVXJsKCk7XG4gICAgICB0aGlzLmluaXRpYWxpemVGaXJzdFRhYlNlbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplcyB0aGUgdGFiIHNlbGVjdGlvbiBiYXNlZCBvbiB0aGUgVVJMIHBhcmFtZXRlciAndGFiJy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZVRhYkZyb21VcmwoKTogdm9pZCB7XG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIGNvbnN0IHRhYk5hbWVGcm9tUGFyYW1zID0gcGFyYW1zWyd0YWInXTtcbiAgICAgIGNvbnN0IHBhZ2VUYWIgPSB0aGlzLnRhYnMuZmluZCh0YWIgPT4gdGFiLmNvbmZpZz8ubmFtZSA9PT0gdGFiTmFtZUZyb21QYXJhbXMpO1xuICAgICAgaWYgKHBhZ2VUYWIpIHtcbiAgICAgICAgcGFnZVRhYi5zZWxlY3QoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2FybignUUQtVUkgfCBRZFBhZ2VUYWJzQ29tcG9uZW50IC0gTm8gdGFiIGZvdW5kIHdpdGggbmFtZSAnICsgdGFiTmFtZUZyb21QYXJhbXMpO1xuICAgICAgICB0aGlzLnNlbGVjdEZpcnN0Tm90RGlzYWJsZWRUYWIodHJ1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIHVzZXIgbmF2aWdhdGVzIHRvIGEgcGFnZSB3aXRoIGEgdGFiIHNlbGVjdGVkLCB0aGUgdGFiIHdpbGwgYmUgc2VsZWN0ZWQgYXV0b21hdGljYWxseSBpbiB7QGxpbmsgaW5pdGlhbGl6ZVRhYkZyb21VcmwoKX0gbWV0aG9kLlxuICAgKiBJZiB0aGUgdXNlciBuYXZpZ2F0ZXMgdG8gYSBwYWdlIHdpdGhvdXQgYSB0YWIgc2VsZWN0ZWQsIHRoZSBmaXJzdCBhY3RpdmUgdGFiIHdpbGwgYmUgc2VsZWN0ZWQuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIGluaXRpYWxpemVGaXJzdFRhYlNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgY29uc3QgdGFiTmFtZUZyb21QYXJhbXMgPSBwYXJhbXNbJ3RhYiddO1xuICAgICAgaWYgKCF0YWJOYW1lRnJvbVBhcmFtcykge1xuICAgICAgICBjb25zdCBzZWxlY3RlZEluZGV4ID0gdGhpcy5jb25maWcuc2VsZWN0ZWRJbmRleDtcbiAgICAgICAgY29uc3QgcGFnZVRhYiA9IHRoaXMudGFicy5maW5kKCh0YWIsIHRhYkluZGV4KSA9PiB0YWJJbmRleCA9PT0gc2VsZWN0ZWRJbmRleCk7XG4gICAgICAgIGlmIChwYWdlVGFiICYmIHBhZ2VUYWI/LmNvbmZpZy5uYW1lKSB7XG4gICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgICAgICAgIHJlbGF0aXZlVG86IHRoaXMucm91dGUsXG4gICAgICAgICAgICBxdWVyeVBhcmFtczogeyB0YWI6IHBhZ2VUYWIuY29uZmlnLm5hbWUgfSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAnUUQtVUkgfCBRZFBhZ2VUYWJzQ29tcG9uZW50IC0gY29ubmVjdGVkV2l0aFJvdXRlciBpcyBhY3RpdmUsIGhvd2V2ZXIgUWRQYWdlVGFiIGhhcyBubyBuYW1lIGF0dHJpYnV0ZS4nXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgfVxuXG4gIG92ZXJyaWRlIF9nZXRJbmRpY2F0b3JUeXBlKGluZGV4OiBudW1iZXIsIHN0YXRlPzogU3RlcFN0YXRlKTogU3RlcFN0YXRlIHtcbiAgICBsZXQgc3RlcFN0YXRlID0gc3VwZXIuX2dldEluZGljYXRvclR5cGUoaW5kZXgsIHN0YXRlKTtcbiAgICBpZiAoc3RlcFN0YXRlID09PSAnZXJyb3InICYmIHRoaXMuX3ZpZXdvbmx5ID09PSB0cnVlKSBzdGVwU3RhdGUgPSAnZWRpdCc7XG4gICAgcmV0dXJuIHN0ZXBTdGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNUYWJTZWxlY3RhYmxlKGluZGV4OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICBjb25zdCB0YWIgPSB0aGlzLnRhYnMuZ2V0KGluZGV4KTtcblxuICAgIHJldHVybiAhIXRhYiAmJiAhdGFiLmNvbmZpZy5pc0Rpc2FibGVkO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgdGhlIGZpcnN0IHRhYiB0aGF0IGlzIG5vdCBkaXNhYmxlZC5cbiAgICogQHBhcmFtIHVwZGF0ZVVybCBpZiB0cnVlLCB0aGUgVVJMIHdpbGwgYmUgdXBkYXRlZCB0byByZWZsZWN0IHRoZSBzZWxlY3RlZCB0YWIuXG4gICAqL1xuICBwcml2YXRlIHNlbGVjdEZpcnN0Tm90RGlzYWJsZWRUYWIodXBkYXRlVXJsID0gZmFsc2UpOiB2b2lkIHtcbiAgICB0aGlzLnRhYnMuc29tZSgodGFiLCB0YWJJbmRleCkgPT4ge1xuICAgICAgaWYgKCF0YWIuY29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgaWYgKHRoaXMuY29uZmlnKSB7XG4gICAgICAgICAgdGhpcy5jb25maWcuc2VsZWN0ZWRJbmRleCA9IHRhYkluZGV4O1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IHRhYkluZGV4O1xuXG4gICAgICAgIGlmICh1cGRhdGVVcmwgJiYgdGhpcy5jb25maWc/LmNvbm5lY3RXaXRoUm91dGVyICYmIHRhYi5jb25maWc/Lm5hbWUpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IHRhYjogdGFiLmNvbmZpZy5uYW1lIH0sXG4gICAgICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBzYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQ/LnRhYkNvbnRyb2w/Lm1hcmtBbGxBc1RvdWNoZWQoKTtcblxuICAgIGNvbnN0IHRhYkNvbnRyb2xWYWx1ZXMgPSB0aGlzLnRhYnMubWFwKHRhYiA9PiB0YWIudGFiQ29udHJvbD8udmFsdWUpO1xuICAgIHRoaXMuY29uZmlnPy5zdWJtaXRCdXR0b24/LmhhbmRsZXI/Lih0YWJDb250cm9sVmFsdWVzKTtcbiAgfVxuXG4gIHNlbGVjdFRhYih0YWI6IFFkUGFnZVRhYkNvbXBvbmVudCk6IHZvaWQge1xuICAgIGlmICh0YWIuY29uZmlnPy5pc0Rpc2FibGVkKSByZXR1cm47XG4gICAgdGFiLnNlbGVjdCgpO1xuICAgIGlmICh0aGlzLmNvbmZpZz8uY29ubmVjdFdpdGhSb3V0ZXIgJiYgdGFiLmNvbmZpZz8ubmFtZSkge1xuICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW10sIHtcbiAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgcXVlcnlQYXJhbXM6IHsgdGFiOiB0YWIuY29uZmlnLm5hbWUgfSxcbiAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaXNTdWJtaXRCdXR0b25TaG93bigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWc/LnN1Ym1pdEJ1dHRvbj8uaXNIaWRkZW4gIT09IHRydWUgJiYgIXRoaXMuZm9vdGVyU2VydmljZTtcbiAgfVxuXG4gIGlzU3VibWl0QnV0dG9uRGlzYWJsZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnPy5zdWJtaXRCdXR0b24/LmlzRGlzYWJsZWQ7XG4gIH1cblxuICBfZ2V0VGFiTGFiZWxJZChpOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9nZXRTdGVwTGFiZWxJZChpKTtcbiAgfVxuXG4gIHByaXZhdGUgYmxvY2tDZGtJbnB1dChpbnB1dE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIGBRRC1VSSB8IFFkUGFnZVRhYnNDb21wb25lbnQgLSBUaGUgdXNlIG9mIHRoZSAke2lucHV0TmFtZX0gYXR0cmlidXRlIGlzIG5vdCBwZXJtaXR0ZWQuIFBsZWFzZSB1c2UgUWRQYWdlVGFic0NvbmZpZyBpbnN0ZWFkLmBcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXBTZWxlY3Rpb25DaGFuZ2VUb1RhYlNlbGVjdGlvbk91dHB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKS5zdWJzY3JpYmUoc2VsZWN0aW9uRXZlbnQgPT4ge1xuICAgICAgdGhpcy50YWJTZWxlY3Rpb24uZW1pdCh7XG4gICAgICAgIHNlbGVjdGVkSW5kZXg6IHNlbGVjdGlvbkV2ZW50LnNlbGVjdGVkSW5kZXgsXG4gICAgICAgIHByZXZpb3VzbHlTZWxlY3RlZEluZGV4OiBzZWxlY3Rpb25FdmVudC5wcmV2aW91c2x5U2VsZWN0ZWRJbmRleCxcbiAgICAgICAgc2VsZWN0ZWRUYWI6IHNlbGVjdGlvbkV2ZW50LnNlbGVjdGVkU3RlcCBhcyBRZFBhZ2VUYWJDb21wb25lbnQsXG4gICAgICAgIHByZXZpb3VzbHlTZWxlY3RlZFRhYjogc2VsZWN0aW9uRXZlbnQucHJldmlvdXNseVNlbGVjdGVkU3RlcCBhcyBRZFBhZ2VUYWJDb21wb25lbnRcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwicWQtdGFicy1pdGVtcy1jb250YWluZXJcIiBbbmdDbGFzc109XCJ7IHNjcm9sbGFibGU6IGNvbmZpZz8uc2Nyb2xsYWJlIH1cIj5cbiAgPHFkLXBhZ2UtdGFiLWhlYWRlclxuICAgICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiczsgbGV0IGkgPSBpbmRleFwiXG4gICAgKGNsaWNrKT1cInNlbGVjdFRhYih0YWIpXCJcbiAgICBbaWRdPVwiX2dldFRhYkxhYmVsSWQoaSlcIlxuICAgIFtpbmRleF09XCJpXCJcbiAgICBbc3RhdGVdPVwiX2dldEluZGljYXRvclR5cGUoaSwgdGFiLnN0YXRlKVwiXG4gICAgW2xhYmVsXT1cInRhYi5jb25maWcubGFiZWwuaTE4biB8IHRyYW5zbGF0ZVwiXG4gICAgW2NvdW50ZXJzXT1cInRhYi5jb25maWcuY291bnRlcnNcIlxuICAgIFtpc1NlbGVjdGVkXT1cInNlbGVjdGVkSW5kZXggPT09IGlcIlxuICAgIFtpc0Rpc2FibGVkXT1cInRhYi5jb25maWc/LmlzRGlzYWJsZWRcIlxuICAgIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1oZWFkZXInICsgJy0nICsgaVwiXG4gID5cbiAgPC9xZC1wYWdlLXRhYi1oZWFkZXI+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInRhYnMtY29udGVudFwiPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNlbGVjdGVkPy5jb25maWc/LmlzRGlzYWJsZWRcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJzZWxlY3RlZD8uY29udGVudFwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJxZC10YWJzLWFjdGlvbi1hcmVhXCIgKm5nSWY9XCJpc1N1Ym1pdEJ1dHRvblNob3duKClcIj5cbiAgPGJ1dHRvbiBxZEJ1dHRvbiAoY2xpY2spPVwic2F2ZSgpXCIgW2Rpc2FibGVkXT1cImlzU3VibWl0QnV0dG9uRGlzYWJsZWQoKVwiIFtkYXRhLXRlc3QtaWRdPVwidGVzdElkICsgJy1zdWJtaXQnXCI+XG4gICAge3sgY29uZmlnPy5zdWJtaXRCdXR0b24/LmkxOG4gfHwgXCJpMThuLnFkLnRhYnMuYnV0dG9uLnN1Ym1pdFwiIHwgdHJhbnNsYXRlIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=
|
|
386
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnZS10YWJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlLXRhYnMvcGFnZS10YWJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL2xpYnMvcWQtdWkvc3JjL2xpYi9wYWdlLXRhYnMvcGFnZS10YWJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDOUUsT0FBTyxFQUdMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBSUwsUUFBUSxFQUNSLE1BQU0sRUFHUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBR2hGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBRXZGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7Ozs7Ozs7OztBQUVoRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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c0JBQTlCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3Rpb25hbGl0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7IENka1N0ZXBwZXIsIFN0ZXBTdGF0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zdGVwcGVyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSwgTmdGb3IsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIERlc3Ryb3lSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBRZEJ1dHRvbk1vZHVsZSB9IGZyb20gJy4uL2J1dHRvbi9idXR0b24ubW9kdWxlJztcbmltcG9ydCB7IFFkUGFnZUZvb3RlclNlcnZpY2UgfSBmcm9tICcuLi9wYWdlL3NoYXJlZC9zZXJ2aWNlcy9wYWdlLWZvb3Rlci5zZXJ2aWNlJztcbmltcG9ydCB7IFFkUGFnZVN0b3JlU2VydmljZSB9IGZyb20gJy4uL3BhZ2Uvc2hhcmVkL3NlcnZpY2VzL3BhZ2Utc3RvcmUuc2VydmljZSc7XG5pbXBvcnQgeyBRZFBhZ2VUYWJzQ29uZmlnIH0gZnJvbSAnLi9tb2RlbC9wYWdlLXRhYnMtY29uZmlnJztcbmltcG9ydCB7IFFkVGFiU2VsZWN0aW9uRXZlbnQgfSBmcm9tICcuL21vZGVsL3BhZ2UtdGFicy1zZWxlY3Rpb24tZXZlbnQnO1xuaW1wb3J0IHsgUWRQYWdlVGFiSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi9wYWdlLXRhYi1oZWFkZXIvcGFnZS10YWItaGVhZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBRZFBhZ2VUYWJDb21wb25lbnQgfSBmcm9tICcuL3BhZ2UtdGFiL3BhZ2UtdGFiLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcblxuLyoqXG4gKiAqKlFkUGFnZVRhYnNDb21wb25lbnQqKiBwcm92aWRlcyBhIG5vbi1saW5lYXIgdGFiYmVkIG5hdmlnYXRpb24gc3lzdGVtIHdpdGhpbiBhICoqUWRQYWdlKiouXG4gKiBJdCBlbmFibGVzIHN3aXRjaGluZyBiZXR3ZWVuIGRpZmZlcmVudCBzZWN0aW9ucyB3aGlsZSBtYWludGFpbmluZyBmb3JtIHZhbGlkYXRpb24gYW5kIGNvbnRyb2xsZWQgbmF2aWdhdGlvbi5cbiAqXG4gKiAjIyMjICoqRmVhdHVyZXMqKlxuICpcbiAqIC0gKipOb24tbGluZWFyIE5hdmlnYXRpb24qKjogVXNlcnMgY2FuIG5hdmlnYXRlIGZyZWVseSBiZXR3ZWVuIHRhYnMsIHdpdGggdmFsaWRhdGlvbiBjaGVja3Mgd2hlcmUgbmVjZXNzYXJ5LlxuICogLSAqKkZvcm0gVmFsaWRhdGlvbiBTdXBwb3J0Kio6IEVuc3VyZXMgdGFicyBkaXNwbGF5IGVycm9ycyB3aGVuIG5lY2Vzc2FyeSBpZiBmb3JtIGlucHV0cyBhcmUgaW52YWxpZC5cbiAqIC0gKipDdXN0b21pemFibGUgVGFiIENvbmZpZ3VyYXRpb25zKio6IEVhY2ggdGFiIGNhbiBoYXZlIGN1c3RvbSBsYWJlbHMsIHZhbGlkYXRpb24sIGFuZCBjb3VudGVycyBmb3IgdHJhY2tpbmcgc3RhdGVzLlxuICogLSAqKkR5bmFtaWMgQ291bnRlcnMqKjogRGlzcGxheXMgbnVtZXJpYyBpbmRpY2F0b3JzIHRvIHNpZ25hbCBjcml0aWNhbCBvciBwb3NpdGl2ZSBzdGF0ZXMuXG4gKiAtICoqU3RhbmRhbG9uZSBDb21wYXRpYmlsaXR5Kio6IENhbiBiZSB1c2VkIGluZGVwZW5kZW50bHkgb3IgaW50ZWdyYXRlZCB3aXRoaW4gYSBsYXJnZXIgKipRZFBhZ2UqKiBzdHJ1Y3R1cmUuXG4gKiAtICoqQ3VzdG9taXphYmxlIFN1Ym1pdCBCdXR0b24qKjogQWxsb3dzIGNvbmZpZ3VyYXRpb24gb2YgYW4gYWN0aW9uIGhhbmRsZXIgYW5kIHZpc2liaWxpdHkgc2V0dGluZ3MuXG4gKiAtICoqQm9va21hcmthYmxlIHRhYnMqKjogQWxsb3dzIHVzZXJzIHRvIGJvb2ttYXJrIHRhYnMgYW5kIG1ha2UgdGhlbSBuYXZpZ2FibGUuXG4gKlxuICogIyMjIyAqKlRhYiBDb25maWd1cmF0aW9uKipcbiAqXG4gKiBFYWNoIHRhYiBpbnNpZGUgYFFkUGFnZVRhYnNDb21wb25lbnRgIGNhbiBiZSBjb25maWd1cmVkIHVzaW5nIGBRZFBhZ2VUYWJDb25maWdgLCBzdXBwb3J0aW5nOlxuICpcbiAqIC0gKipsYWJlbCoqOiBBIHRyYW5zbGF0YWJsZSBsYWJlbCBmb3IgdGhlIHRhYi5cbiAqIC0gKippc0Rpc2FibGVkKio6IFdoZXRoZXIgdGhlIHRhYiBzaG91bGQgYmUgaW50ZXJhY3RhYmxlLlxuICogLSAqKmNvdW50ZXJzKio6IERpc3BsYXlzIG51bWVyaWMgY291bnRlcnMgZm9yICoqY3JpdGljYWwqKiAocmVkKSBhbmQgKipwb3NpdGl2ZSoqIChncmVlbikgc3RhdGVzLlxuICogLSAqKm5hbWUqKjogVW5pcXVlIG5hbWUgb2YgdGhpcyB0YWIuIFVzZWQgZm9yIHF1ZXJ5IHBhcmFtIHJvdXRpbmcgdmlhIGA/dGFiPTx0YWJOYW1lPmAuIFJlcXVpcmVkIHdoZW4gYGNvbm5lY3RXaXRoUm91dGVyYCBpbiAqKlFkUGFnZVRhYnNDb25maWcqKiBpcyBlbmFibGVkLlxuICpcbiAqICMjIyMgKipGb3JtIEhhbmRsaW5nKipcbiAqXG4gKiBUYWJzIHN1cHBvcnQgZm9ybSBncm91cHMsIHdoaWNoIGFyZSBwYXNzZWQgdXNpbmcgdGhlIGBbdGFiQ29udHJvbF1gIGlucHV0LlxuICogVGhlIHN5c3RlbSBlbnN1cmVzIHRoYXQgZm9ybXMgdmFsaWRhdGUgY29ycmVjdGx5IGJlZm9yZSBhbGxvd2luZyBuYXZpZ2F0aW9uLlxuICpcbiAqICMjIyMgKipFcnJvciBIYW5kbGluZyoqXG4gKlxuICogRXJyb3Igc3RhdGVzIGFwcGVhciB3aGVuOlxuICpcbiAqIC0gKipBIHJlcXVpcmVkIGZvcm0gZmllbGQgaXMgbGVmdCBlbXB0eSoqOiBUaGUgdGFiIHRpdGxlIGNoYW5nZXMgdG8gcmVkLlxuICogLSAqKkludmFsaWQgZGF0YSBpcyBlbnRlcmVkKio6IFRoZSB2YWxpZGF0aW9uIHByb2Nlc3MgY2hhbmdlcyB0aGUgdGFiIHRpdGxlIHRvIHJlZC5cbiAqXG4gKiAjIyMjICoqU3VibWl0IEJ1dHRvbiBDb25maWd1cmF0aW9uKipcbiAqXG4gKiBUaGUgc3VibWl0IGJ1dHRvbiBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWIgc3lzdGVtIGNhbiBiZSBjb25maWd1cmVkIHZpYSBgUWRQYWdlVGFic0NvbmZpZ2A6XG4gKlxuICogLSAqKmkxOG4qKjogVGhlIHRyYW5zbGF0ZWQgbGFiZWwgZm9yIHRoZSBzdWJtaXQgYnV0dG9uLlxuICogLSAqKmhhbmRsZXIqKjogQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IHJlY2VpdmVzIGZvcm0gZGF0YSB1cG9uIHN1Ym1pc3Npb24uXG4gKiAtICoqaXNEaXNhYmxlZCoqOiBDb250cm9scyB3aGV0aGVyIHRoZSBidXR0b24gc2hvdWxkIGJlIGFjdGl2ZSBvciBub3QuXG4gKiAtICoqaXNIaWRkZW4qKjogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBidXR0b24gaXMgdmlzaWJsZS5cbiAqIC0gKipjb25uZWN0V2l0aFJvdXRlcioqOiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIHRhYiB3aWxsIGJlIGNvbm5lY3RlZCB0byB0aGUgVVJMIGFuZCB3aWxsIGJlIGJvb2ttYXJrZWQuIEl0IGlzIG9ibGlnYXRvcnkgdG8gc2V0IHRoZSBgbmFtZWAgYXR0cmlidXRlIGZvciBlYWNoIHRhYi5cbiAqXG4gKiAjIyMjICoqVXNhZ2UqKlxuICpcbiAqICoqQmFzaWMgRXhhbXBsZToqKlxuICpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIEBDb21wb25lbnQoeyAuLi4gfSlcbiAqIGV4cG9ydCBjbGFzcyBNeVBhZ2VUYWJzQ29tcG9uZW50IHtcbiAqICAgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICogICAgIGZpcnN0TmFtZTogbmV3IEZvcm1Db250cm9sKCcnLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAqICAgICBsYXN0TmFtZTogbmV3IEZvcm1Db250cm9sKCcnKSxcbiAqICAgICBhZ2U6IG5ldyBGb3JtQ29udHJvbCgnJylcbiAqICAgfSk7XG4gKlxuICogICBjb25maWc6IFFkUGFnZVRhYnNDb25maWcgPSB7XG4gKiAgICAgc3VibWl0QnV0dG9uOiB7XG4gKiAgICAgICBoYW5kbGVyOiAodmFsdWVzKSA9PiBkb1NvbWV0aGluZ1dpdGgodmFsdWVzKVxuICogICAgIH1cbiAqICAgfTtcbiAqXG4gKiAgIGZpcnN0VGFiQ29uZmlnOiBRZFBhZ2VUYWJDb25maWcgPSB7XG4gKiAgICAgbGFiZWw6IHsgaTE4bjogJ1RhYiBPbmUnIH0sXG4gKiAgICAgY291bnRlcnM6IG9mKHsgcG9zaXRpdmU6IDMsIGNyaXRpY2FsOiAxIH0pXG4gKiAgIH07XG4gKlxuICogICAuLi5cbiAqIH1cbiAqIGBgYFxuICpcbiAqIGBgYGh0bWxcbiAqIDxxZC1wYWdlLXRhYnMgW2NvbmZpZ109XCJjb25maWdcIj5cbiAqICAgPHFkLXBhZ2UtdGFiIFtjb25maWddPVwiZmlyc3RUYWJDb25maWdcIiBbdGFiQ29udHJvbF09XCJmb3JtXCI+XG4gKiAgICAgPHFkLXNlY3Rpb24gW2NvbmZpZ109XCJzZWN0aW9uQ29uZmlnXCI+XG4gKiAgICAgICA8cWQtZ3JpZCBbY29uZmlnXT1cImdyaWRDb25maWdcIiBbZm9ybUdyb3VwXT1cImZvcm1cIj5cbiAqICAgICAgICAgPHFkLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImZpcnN0TmFtZVwiPjwvcWQtaW5wdXQ+XG4gKiAgICAgICAgIDxxZC1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJsYXN0TmFtZVwiPjwvcWQtaW5wdXQ+XG4gKiAgICAgICAgIDxxZC1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJhZ2VcIj48L3FkLWlucHV0PlxuICogICAgICAgPC9xZC1ncmlkPlxuICogICAgIDwvcWQtc2VjdGlvbj5cbiAqICAgPC9xZC1wYWdlLXRhYj5cbiAqXG4gKiAgIDxxZC1wYWdlLXRhYiAuLi4gPlxuICogICAgIC4uLlxuICogICA8L3FkLXBhZ2UtdGFiPlxuICogPC9xZC1wYWdlLXRhYnM+XG4gKiBgYGBcbiAqXG4gKiAqKkJvb2ttYXJrYWJsZSBUYWJzIEV4YW1wbGU6ICoqXG4gKlxuICogVG8gZW5hYmxlIGJvb2ttYXJrYWJsZSB0YWJzIHRoYXQgc3luYyB3aXRoIHRoZSBicm93c2VyIFVSTCwgc2V0IGBjb25uZWN0V2l0aFJvdXRlcjogdHJ1ZWBcbiAqIGFuZCBwcm92aWRlIGEgdW5pcXVlIGBuYW1lYCBmb3IgZWFjaCB0YWI6XG4gKlxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG4gKiBpbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuICogaW1wb3J0IHsgUWRQYWdlVGFic0NvbmZpZywgUWRQYWdlVGFiQ29uZmlnIH0gZnJvbSAnQHFkLXVpL3FkLXVpJztcbiAqXG4gKiBAQ29tcG9uZW50KHtcbiAqICAgc2VsZWN0b3I6ICdhcHAtYm9va21hcmthYmxlLXRhYnMnLFxuICogICB0ZW1wbGF0ZTogYFxuICogICAgIDxxZC1wYWdlLXRhYnMgW2NvbmZpZ109XCJwYWdlVGFic0NvbmZpZ1wiPlxuICogICAgICAgPHFkLXBhZ2UtdGFiIFtjb25maWddPVwib3ZlcnZpZXdUYWJDb25maWdcIj5cbiAqICAgICAgICAgPHFkLXNlY3Rpb24+XG4gKiAgICAgICAgICAgVGhpcyBpcyB0aGUgb3ZlcnZpZXcgdGFiIGNvbnRlbnQuXG4gKiAgICAgICAgIDwvcWQtc2VjdGlvbj5cbiAqICAgICAgIDwvcWQtcGFnZS10YWI+XG4gKlxuICogICAgICAgPHFkLXBhZ2UtdGFiIFtjb25maWddPVwiZGV0YWlsVGFiQ29uZmlnXCI+XG4gKiAgICAgICAgIDxxZC1zZWN0aW9uPlxuICogICAgICAgICAgIFRoaXMgaXMgdGhlIGRldGFpbCB0YWIgY29udGVudC5cbiAqICAgICAgICAgPC9xZC1zZWN0aW9uPlxuICogICAgICAgPC9xZC1wYWdlLXRhYj5cbiAqXG4gKiAgICAgICA8cWQtcGFnZS10YWIgW2NvbmZpZ109XCJjb250cm9sUmVzdWx0c1RhYkNvbmZpZ1wiPlxuICogICAgICAgICA8cWQtc2VjdGlvbj5cbiAqICAgICAgICAgICBUaGlzIGlzIHRoZSBjb250cm9sIHJlc3VsdHMgdGFiIGNvbnRlbnQuXG4gKiAgICAgICAgIDwvcWQtc2VjdGlvbj5cbiAqICAgICAgIDwvcWQtcGFnZS10YWI+XG4gKiAgICAgPC9xZC1wYWdlLXRhYnM+XG4gKiAgIGBcbiAqIH0pXG4gKiBleHBvcnQgY2xhc3MgQm9va21hcmthYmxlVGFic0NvbXBvbmVudCB7XG4gKiAgIC8vIEVuYWJsZSByb3V0ZXIgY29ubmVjdGlvbiBmb3IgYm9va21hcmthYmxlIHRhYnNcbiAqICAgcGFnZVRhYnNDb25maWc6IFFkUGFnZVRhYnNDb25maWcgPSB7XG4gKiAgICAgc2VsZWN0ZWRJbmRleDogMCxcbiAqICAgICBjb25uZWN0V2l0aFJvdXRlcjogdHJ1ZVxuICogICB9O1xuICpcbiAqICAgLy8gRWFjaCB0YWIgbXVzdCBoYXZlIGEgdW5pcXVlICduYW1lJyB3aGVuIGNvbm5lY3RXaXRoUm91dGVyIGlzIGVuYWJsZWRcbiAqICAgb3ZlcnZpZXdUYWJDb25maWc6IFFkUGFnZVRhYkNvbmZpZyA9IHtcbiAqICAgICBsYWJlbDogeyBpMThuOiAnT3ZlcnZpZXcnIH0sXG4gKiAgICAgbmFtZTogJ292ZXJ2aWV3JyAvLyBSZXF1aXJlZCBmb3Igcm91dGVyIGNvbm5lY3Rpb25cbiAqICAgfTtcbiAqXG4gKiAgIGRldGFpbFRhYkNvbmZpZzogUWRQYWdlVGFiQ29uZmlnID0ge1xuICogICAgIGxhYmVsOiB7IGkxOG46ICdEZXRhaWxzJyB9LFxuICogICAgIG5hbWU6ICdkZXRhaWxzJyAvLyBSZXF1aXJlZCBmb3Igcm91dGVyIGNvbm5lY3Rpb25cbiAqICAgfTtcbiAqXG4gKiAgIGNvbnRyb2xSZXN1bHRzVGFiQ29uZmlnOiBRZFBhZ2VUYWJDb25maWcgPSB7XG4gKiAgICAgbGFiZWw6IHsgaTE4bjogJ0NvbnRyb2wgUmVzdWx0cycgfSxcbiAqICAgICBuYW1lOiAnY29udHJvbFJlc3VsdHMnIC8vIFJlcXVpcmVkIGZvciByb3V0ZXIgY29ubmVjdGlvblxuICogICB9O1xuICpcbiAqICAgY29uc3RydWN0b3IgKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHt9XG4gKiB9XG4gKiBgYGBcbiAqXG4gKiAqKkJvb2ttYXJrYWJsZSBUYWJzIEJlaGF2aW9yOiAqKlxuICogLSBVUkxzIHdpbGwgaW5jbHVkZSBxdWVyeSBwYXJhbWV0ZXI6IGA/dGFiPW92ZXJ2aWV3YCwgYD90YWI9ZGV0YWlsc2AsIGA/dGFiPWNvbnRyb2xSZXN1bHRzYFxuICogLSBVc2VycyBjYW4gYm9va21hcmsgc3BlY2lmaWMgdGFicyBhbmQgcmV0dXJuIGRpcmVjdGx5IHRvIHRoZW1cbiAqIC0gQnJvd3NlciBiYWNrL2ZvcndhcmQgYnV0dG9ucyB3b3JrIHdpdGggdGFiIG5hdmlnYXRpb25cbiAqIC0gSWYgYW4gaW52YWxpZCB0YWIgbmFtZSBpcyBwcm92aWRlZCBpbiBVUkwsIHRoZSBmaXJzdCBhdmFpbGFibGUgdGFiIGlzIHNlbGVjdGVkXG4gKiAtIElmIG5vIHRhYiBwYXJhbWV0ZXIgaXMgcHJlc2VudCwgdGhlIGBzZWxlY3RlZEluZGV4YCBvciBmaXJzdCBub24tZGlzYWJsZWQgdGFiIGlzIHNlbGVjdGVkXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3FkLXBhZ2UtdGFicycsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYWdlLXRhYnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYWdlLXRhYnMuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBDZGtTdGVwcGVyLCB1c2VFeGlzdGluZzogUWRQYWdlVGFic0NvbXBvbmVudCB9XSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGhvc3Q6IHsgY2xhc3M6ICdxZC10YWJzJywgJ1tjbGFzcy5zdGFuZGFsb25lXSc6ICchZm9vdGVyU2VydmljZScgfSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSwgLy8gaW5oZXJpdGVkIGJ5IENka1N0ZXBwZXJcbiAgaW1wb3J0czogW05nRm9yLCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0LCBRZFBhZ2VUYWJIZWFkZXJDb21wb25lbnQsIFRyYW5zbGF0ZU1vZHVsZSwgUWRCdXR0b25Nb2R1bGUsIENvbW1vbk1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgUWRQYWdlVGFic0NvbXBvbmVudFxuICBleHRlbmRzIENka1N0ZXBwZXJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcywgQWZ0ZXJDb250ZW50SW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIG9mIFFkUGFnZVRhYnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBjb25maWchOiBRZFBhZ2VUYWJzQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBBIHN0YXRpYyB0ZXN0IElEIGZvciBpbnRlZ3JhdGlvbiB0ZXN0cyBjYW4gYmUgc2V0LlxuICAgKi9cbiAgQElucHV0KCdkYXRhLXRlc3QtaWQnKSB0ZXN0SWQgPSAncGFnZS10YWJzJztcblxuICBAT3V0cHV0KCkgcmVhZG9ubHkgdGFiU2VsZWN0aW9uID0gbmV3IEV2ZW50RW1pdHRlcjxRZFRhYlNlbGVjdGlvbkV2ZW50PigpO1xuXG4gIHByaXZhdGUgX3ZpZXdvbmx5OiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgZ2V0IHRhYnMoKTogUXVlcnlMaXN0PFFkUGFnZVRhYkNvbXBvbmVudD4ge1xuICAgIHJldHVybiB0aGlzLnN0ZXBzIGFzIFF1ZXJ5TGlzdDxRZFBhZ2VUYWJDb21wb25lbnQ+O1xuICB9XG5cbiAgb3ZlcnJpZGUgZ2V0IHNlbGVjdGVkKCk6IFFkUGFnZVRhYkNvbXBvbmVudCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHN1cGVyLnNlbGVjdGVkIGFzIFFkUGFnZVRhYkNvbXBvbmVudDtcbiAgfVxuXG4gIG92ZXJyaWRlIHNldCBzZWxlY3RlZChzdGVwOiBRZFBhZ2VUYWJDb21wb25lbnQgfCB1bmRlZmluZWQpIHtcbiAgICBzdXBlci5zZWxlY3RlZCA9IHN0ZXA7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSByZWFkb25seSBmb290ZXJTZXJ2aWNlOiBRZFBhZ2VGb290ZXJTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIF9kaXI6IERpcmVjdGlvbmFsaXR5LFxuICAgIHByaXZhdGUgcGFnZVN0b3JlU2VydmljZTogUWRQYWdlU3RvcmVTZXJ2aWNlPGFueT4sXG4gICAgcHJpdmF0ZSByZWFkb25seSByb3V0ZXI6IFJvdXRlcixcbiAgICBAT3B0aW9uYWwoKSBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICApIHtcbiAgICBzdXBlcihfZGlyLCBfY2hhbmdlRGV0ZWN0b3JSZWYsIF9lbGVtZW50UmVmKTtcbiAgICB0aGlzLm1hcFNlbGVjdGlvbkNoYW5nZVRvVGFiU2VsZWN0aW9uT3V0cHV0KCk7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmxpbmVhciA9IGZhbHNlO1xuXG4gICAgdGhpcy5wYWdlU3RvcmVTZXJ2aWNlLmlzVmlld29ubHkkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZSh2ID0+IHtcbiAgICAgIHRoaXMuX3ZpZXdvbmx5ID0gdjtcbiAgICAgIHRoaXMuX3N0YXRlQ2hhbmdlZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIFsnbGluZWFyJywgJ3NlbGVjdGVkSW5kZXgnLCAnc2VsZWN0ZWQnLCAnb3JpZW50YXRpb24nXVxuICAgICAgLmZpbHRlcihpbnB1dE5hbWUgPT4gISFjaGFuZ2VzW2lucHV0TmFtZV0pXG4gICAgICAuZm9yRWFjaChpbnB1dE5hbWUgPT4gdGhpcy5ibG9ja0Nka0lucHV0KGlucHV0TmFtZSkpO1xuICB9XG5cbiAgb3ZlcnJpZGUgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nQWZ0ZXJDb250ZW50SW5pdCgpO1xuXG4gICAgdGhpcy50YWJzLmNoYW5nZXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuX3N0YXRlQ2hhbmdlZCgpKTtcbiAgfVxuXG4gIG92ZXJyaWRlIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVRhYlNlbGVjdGlvbigpO1xuICAgICAgdGhpcy5jb25maWd1cmVCb29rbWFya2FibGVUYWJzKCk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemVUYWJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnPy5zZWxlY3RlZEluZGV4ICYmIHRoaXMuaXNUYWJTZWxlY3RhYmxlKHRoaXMuY29uZmlnLnNlbGVjdGVkSW5kZXgpKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLmNvbmZpZy5zZWxlY3RlZEluZGV4O1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0Rmlyc3ROb3REaXNhYmxlZFRhYigpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVCb29rbWFya2FibGVUYWJzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZz8uY29ubmVjdFdpdGhSb3V0ZXIpIHtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZVRhYkZyb21VcmwoKTtcbiAgICAgIHRoaXMuaW5pdGlhbGl6ZUZpcnN0VGFiU2VsZWN0aW9uKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSB0YWIgc2VsZWN0aW9uIGJhc2VkIG9uIHRoZSBVUkwgcGFyYW1ldGVyICd0YWInLlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplVGFiRnJvbVVybCgpOiB2b2lkIHtcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgY29uc3QgdGFiTmFtZUZyb21QYXJhbXMgPSBwYXJhbXNbJ3RhYiddO1xuICAgICAgY29uc3QgcGFnZVRhYiA9IHRoaXMudGFicy5maW5kKHRhYiA9PiB0YWIuY29uZmlnPy5uYW1lID09PSB0YWJOYW1lRnJvbVBhcmFtcyk7XG4gICAgICBpZiAocGFnZVRhYikge1xuICAgICAgICBwYWdlVGFiLnNlbGVjdCgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS53YXJuKCdRRC1VSSB8IFFkUGFnZVRhYnNDb21wb25lbnQgLSBObyB0YWIgZm91bmQgd2l0aCBuYW1lICcgKyB0YWJOYW1lRnJvbVBhcmFtcyk7XG4gICAgICAgIHRoaXMuc2VsZWN0Rmlyc3ROb3REaXNhYmxlZFRhYih0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgdXNlciBuYXZpZ2F0ZXMgdG8gYSBwYWdlIHdpdGggYSB0YWIgc2VsZWN0ZWQsIHRoZSB0YWIgd2lsbCBiZSBzZWxlY3RlZCBhdXRvbWF0aWNhbGx5IGluIHtAbGluayBpbml0aWFsaXplVGFiRnJvbVVybCgpfSBtZXRob2QuXG4gICAqIElmIHRoZSB1c2VyIG5hdmlnYXRlcyB0byBhIHBhZ2Ugd2l0aG91dCBhIHRhYiBzZWxlY3RlZCwgdGhlIGZpcnN0IGFjdGl2ZSB0YWIgd2lsbCBiZSBzZWxlY3RlZC5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUZpcnN0VGFiU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMucm91dGUucXVlcnlQYXJhbXMucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSkuc3Vic2NyaWJlKHBhcmFtcyA9PiB7XG4gICAgICBjb25zdCB0YWJOYW1lRnJvbVBhcmFtcyA9IHBhcmFtc1sndGFiJ107XG4gICAgICBpZiAoIXRhYk5hbWVGcm9tUGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkSW5kZXggPSB0aGlzLmNvbmZpZy5zZWxlY3RlZEluZGV4O1xuICAgICAgICBjb25zdCBwYWdlVGFiID0gdGhpcy50YWJzLmZpbmQoKHRhYiwgdGFiSW5kZXgpID0+IHRhYkluZGV4ID09PSBzZWxlY3RlZEluZGV4KTtcbiAgICAgICAgaWYgKHBhZ2VUYWIgJiYgcGFnZVRhYj8uY29uZmlnLm5hbWUpIHtcbiAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgICAgICAgcmVsYXRpdmVUbzogdGhpcy5yb3V0ZSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zOiB7IHRhYjogcGFnZVRhYi5jb25maWcubmFtZSB9LFxuICAgICAgICAgICAgcXVlcnlQYXJhbXNIYW5kbGluZzogJ21lcmdlJ1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICdRRC1VSSB8IFFkUGFnZVRhYnNDb21wb25lbnQgLSBjb25uZWN0ZWRXaXRoUm91dGVyIGlzIGFjdGl2ZSwgaG93ZXZlciBRZFBhZ2VUYWIgaGFzIG5vIG5hbWUgYXR0cmlidXRlLidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvdmVycmlkZSBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgb3ZlcnJpZGUgX2dldEluZGljYXRvclR5cGUoaW5kZXg6IG51bWJlciwgc3RhdGU/OiBTdGVwU3RhdGUpOiBTdGVwU3RhdGUge1xuICAgIGxldCBzdGVwU3RhdGUgPSBzdXBlci5fZ2V0SW5kaWNhdG9yVHlwZShpbmRleCwgc3RhdGUpO1xuICAgIGlmIChzdGVwU3RhdGUgPT09ICdlcnJvcicgJiYgdGhpcy5fdmlld29ubHkgPT09IHRydWUpIHN0ZXBTdGF0ZSA9ICdlZGl0JztcbiAgICByZXR1cm4gc3RlcFN0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1RhYlNlbGVjdGFibGUoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRhYiA9IHRoaXMudGFicy5nZXQoaW5kZXgpO1xuXG4gICAgcmV0dXJuICEhdGFiICYmICF0YWIuY29uZmlnLmlzRGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyB0aGUgZmlyc3QgdGFiIHRoYXQgaXMgbm90IGRpc2FibGVkLlxuICAgKiBAcGFyYW0gdXBkYXRlVXJsIGlmIHRydWUsIHRoZSBVUkwgd2lsbCBiZSB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIHNlbGVjdGVkIHRhYi5cbiAgICovXG4gIHByaXZhdGUgc2VsZWN0Rmlyc3ROb3REaXNhYmxlZFRhYih1cGRhdGVVcmwgPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMudGFicy5zb21lKCh0YWIsIHRhYkluZGV4KSA9PiB7XG4gICAgICBpZiAoIXRhYi5jb25maWcuaXNEaXNhYmxlZCkge1xuICAgICAgICBpZiAodGhpcy5jb25maWcpIHtcbiAgICAgICAgICB0aGlzLmNvbmZpZy5zZWxlY3RlZEluZGV4ID0gdGFiSW5kZXg7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gdGFiSW5kZXg7XG5cbiAgICAgICAgaWYgKHVwZGF0ZVVybCAmJiB0aGlzLmNvbmZpZz8uY29ubmVjdFdpdGhSb3V0ZXIgJiYgdGFiLmNvbmZpZz8ubmFtZSkge1xuICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtdLCB7XG4gICAgICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgICAgICAgcXVlcnlQYXJhbXM6IHsgdGFiOiB0YWIuY29uZmlnLm5hbWUgfSxcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zSGFuZGxpbmc6ICdtZXJnZSdcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNhdmUoKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZD8udGFiQ29udHJvbD8ubWFya0FsbEFzVG91Y2hlZCgpO1xuXG4gICAgY29uc3QgdGFiQ29udHJvbFZhbHVlcyA9IHRoaXMudGFicy5tYXAodGFiID0+IHRhYi50YWJDb250cm9sPy52YWx1ZSk7XG4gICAgdGhpcy5jb25maWc/LnN1Ym1pdEJ1dHRvbj8uaGFuZGxlcj8uKHRhYkNvbnRyb2xWYWx1ZXMpO1xuICB9XG5cbiAgc2VsZWN0VGFiKHRhYjogUWRQYWdlVGFiQ29tcG9uZW50KTogdm9pZCB7XG4gICAgaWYgKHRhYi5jb25maWc/LmlzRGlzYWJsZWQpIHJldHVybjtcbiAgICB0YWIuc2VsZWN0KCk7XG4gICAgaWYgKHRoaXMuY29uZmlnPy5jb25uZWN0V2l0aFJvdXRlciAmJiB0YWIuY29uZmlnPy5uYW1lKSB7XG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXSwge1xuICAgICAgICByZWxhdGl2ZVRvOiB0aGlzLnJvdXRlLFxuICAgICAgICBxdWVyeVBhcmFtczogeyB0YWI6IHRhYi5jb25maWcubmFtZSB9LFxuICAgICAgICBxdWVyeVBhcmFtc0hhbmRsaW5nOiAnbWVyZ2UnXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpc1N1Ym1pdEJ1dHRvblNob3duKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZz8uc3VibWl0QnV0dG9uPy5pc0hpZGRlbiAhPT0gdHJ1ZSAmJiAhdGhpcy5mb290ZXJTZXJ2aWNlO1xuICB9XG5cbiAgaXNTdWJtaXRCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWc/LnN1Ym1pdEJ1dHRvbj8uaXNEaXNhYmxlZDtcbiAgfVxuXG4gIF9nZXRUYWJMYWJlbElkKGk6IG51bWJlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFN0ZXBMYWJlbElkKGkpO1xuICB9XG5cbiAgcHJpdmF0ZSBibG9ja0Nka0lucHV0KGlucHV0TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFFELVVJIHwgUWRQYWdlVGFic0NvbXBvbmVudCAtIFRoZSB1c2Ugb2YgdGhlICR7aW5wdXROYW1lfSBhdHRyaWJ1dGUgaXMgbm90IHBlcm1pdHRlZC4gUGxlYXNlIHVzZSBRZFBhZ2VUYWJzQ29uZmlnIGluc3RlYWQuYFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIG1hcFNlbGVjdGlvbkNoYW5nZVRvVGFiU2VsZWN0aW9uT3V0cHV0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpLnN1YnNjcmliZShzZWxlY3Rpb25FdmVudCA9PiB7XG4gICAgICB0aGlzLnRhYlNlbGVjdGlvbi5lbWl0KHtcbiAgICAgICAgc2VsZWN0ZWRJbmRleDogc2VsZWN0aW9uRXZlbnQuc2VsZWN0ZWRJbmRleCxcbiAgICAgICAgcHJldmlvdXNseVNlbGVjdGVkSW5kZXg6IHNlbGVjdGlvbkV2ZW50LnByZXZpb3VzbHlTZWxlY3RlZEluZGV4LFxuICAgICAgICBzZWxlY3RlZFRhYjogc2VsZWN0aW9uRXZlbnQuc2VsZWN0ZWRTdGVwIGFzIFFkUGFnZVRhYkNvbXBvbmVudCxcbiAgICAgICAgcHJldmlvdXNseVNlbGVjdGVkVGFiOiBzZWxlY3Rpb25FdmVudC5wcmV2aW91c2x5U2VsZWN0ZWRTdGVwIGFzIFFkUGFnZVRhYkNvbXBvbmVudFxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJxZC10YWJzLWl0ZW1zLWNvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsgc2Nyb2xsYWJsZTogY29uZmlnPy5zY3JvbGxhYmUgfVwiPlxuICA8cWQtcGFnZS10YWItaGVhZGVyXG4gICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAoY2xpY2spPVwic2VsZWN0VGFiKHRhYilcIlxuICAgIFtpZF09XCJfZ2V0VGFiTGFiZWxJZChpKVwiXG4gICAgW2luZGV4XT1cImlcIlxuICAgIFtzdGF0ZV09XCJfZ2V0SW5kaWNhdG9yVHlwZShpLCB0YWIuc3RhdGUpXCJcbiAgICBbbGFiZWxdPVwidGFiLmNvbmZpZy5sYWJlbC5pMThuIHwgdHJhbnNsYXRlXCJcbiAgICBbY291bnRlcnNdPVwidGFiLmNvbmZpZy5jb3VudGVyc1wiXG4gICAgW2lzU2VsZWN0ZWRdPVwic2VsZWN0ZWRJbmRleCA9PT0gaVwiXG4gICAgW2lzRGlzYWJsZWRdPVwidGFiLmNvbmZpZz8uaXNEaXNhYmxlZFwiXG4gICAgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWQgKyAnLWhlYWRlcicgKyAnLScgKyBpXCJcbiAgPlxuICA8L3FkLXBhZ2UtdGFiLWhlYWRlcj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwidGFicy1jb250ZW50XCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc2VsZWN0ZWQ/LmNvbmZpZz8uaXNEaXNhYmxlZFwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cInNlbGVjdGVkPy5jb250ZW50XCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPGRpdiBjbGFzcz1cInFkLXRhYnMtYWN0aW9uLWFyZWFcIiAqbmdJZj1cImlzU3VibWl0QnV0dG9uU2hvd24oKVwiPlxuICA8YnV0dG9uIHFkQnV0dG9uIChjbGljayk9XCJzYXZlKClcIiBbZGlzYWJsZWRdPVwiaXNTdWJtaXRCdXR0b25EaXNhYmxlZCgpXCIgW2RhdGEtdGVzdC1pZF09XCJ0ZXN0SWQgKyAnLXN1Ym1pdCdcIj5cbiAgICB7eyBjb25maWc/LnN1Ym1pdEJ1dHRvbj8uaTE4biB8fCBcImkxOG4ucWQudGFicy5idXR0b24uc3VibWl0XCIgfCB0cmFuc2xhdGUgfX1cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|