@sapui5/sap.fe.test 1.120.15 → 1.120.16
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/package.json
CHANGED
package/src/sap/fe/test/.library
CHANGED
|
@@ -377,7 +377,10 @@ sap.ui.define(["@sap/cds-compiler", "fs", "htmljs-parser", "path", "sap/base/Log
|
|
|
377
377
|
const getMetaModel = async function (sMetadataUrl) {
|
|
378
378
|
const oRequestor = _MetadataRequestor.create({}, "4.0", undefined, {});
|
|
379
379
|
if (!metaModelCache[sMetadataUrl]) {
|
|
380
|
-
|
|
380
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
381
|
+
const oMetaModel = new ODataMetaModel(oRequestor, sMetadataUrl, undefined, {
|
|
382
|
+
_requestAnnotationChanges: () => []
|
|
383
|
+
});
|
|
381
384
|
await oMetaModel.fetchEntityContainer();
|
|
382
385
|
metaModelCache[sMetadataUrl] = oMetaModel;
|
|
383
386
|
}
|
|
@@ -717,4 +720,4 @@ sap.ui.define(["@sap/cds-compiler", "fs", "htmljs-parser", "path", "sap/base/Log
|
|
|
717
720
|
_exports.registerMockFragments = registerMockFragments;
|
|
718
721
|
return _exports;
|
|
719
722
|
}, false);
|
|
720
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMb2ciLCJzZXRMZXZlbCIsImplc3QiLCJzZXRUaW1lb3V0IiwibmFtZVNwYWNlTWFwIiwibWFjcm9zIiwibWFjcm8iLCJtYWNyb0ZpZWxkIiwibWFjcm9kYXRhIiwibG9nIiwidW5pdHRlc3QiLCJjb250cm9sIiwiY29udHJvbHMiLCJjb3JlIiwiZHQiLCJtIiwiZiIsImZsIiwiaW50ZXJuYWxNYWNybyIsIm1kYyIsIm1kY2F0IiwibWRjRmllbGQiLCJtZGNUYWJsZSIsInUiLCJtYWNyb01pY3JvQ2hhcnQiLCJtaWNyb0NoYXJ0IiwibWFjcm9UYWJsZSIsInNlbGVjdCIsInhwYXRoIiwidXNlTmFtZXNwYWNlcyIsImRlZmF1bHRGYWtlU2lkZUVmZmVjdFNlcnZpY2UiLCJjb21wdXRlRmllbGRHcm91cElkcyIsIl9nZXRUZW1wbGF0ZWRTZWxlY3RvciIsInhtbGRvbSIsInNlbGVjdG9yIiwicm9vdFBhdGgiLCJub2RlTmFtZSIsInN0YXJ0c1dpdGgiLCJfYnVpbGRQcmVQcm9jZXNzb3JTZXR0aW5ncyIsInNNZXRhZGF0YVVybCIsIm1CaW5kaW5nQ29udGV4dHMiLCJtTW9kZWxzIiwiZmFrZVNpZGVFZmZlY3RTZXJ2aWNlIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImhhc093blByb3BlcnR5IiwiT2JqZWN0IiwiYXNzaWduIiwiY29udmVydGVyQ29udGV4dCIsIlRlbXBsYXRlTW9kZWwiLCJrZXlzIiwiZm9yRWFjaCIsInNNb2RlbE5hbWUiLCJpc1RlbXBsYXRlTW9kZWwiLCJkYXRhIiwic2V0dGluZ3MiLCJtb2RlbHMiLCJtZXRhTW9kZWwiLCJiaW5kaW5nQ29udGV4dHMiLCJhcHBDb21wb25lbnQiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJmbiIsImdldERpYWdub3N0aWNzIiwidW5kZWZpbmVkIiwibW9ja1JldHVyblZhbHVlIiwic0tleSIsImV4cGVjdCIsImdldE9iamVjdCIsInRvQmVEZWZpbmVkIiwib01vZGVsIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJfbG9hZFJlc291cmNlVmlldyIsInZpZXdOYW1lIiwibmFtZSIsInJlcGxhY2UiLCJ2aWV3IiwiTG9hZGVyRXh0ZW5zaW9ucyIsImxvYWRSZXNvdXJjZSIsImRvY3VtZW50RWxlbWVudCIsInJ1blhQYXRoUXVlcnkiLCJleHRlbmQiLCJ0b0hhdmVDb250cm9sIiwibm9kZXMiLCJtZXNzYWdlIiwib3V0cHV0WG1sIiwic2VyaWFsaXplWE1MIiwicGFzcyIsImxlbmd0aCIsInRvTm90SGF2ZUNvbnRyb2wiLCJ0b0hhdmVUZW1wbGF0aW5nRXJyb3JzIiwieG1sIiwieG1sVGV4dCIsImJhc2U2NEVudHJpZXMiLCJtYXRjaCIsImVycm9yTWVzc2FnZXMiLCJtYXAiLCJhdG9iIiwic2xpY2UiLCJqb2luIiwiZm9ybWF0QnVpbGRpbmdCbG9ja1hNTCIsInhtbFN0cmluZyIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1hdFhNTCIsImdldENvbnRyb2xBdHRyaWJ1dGUiLCJjb250cm9sU2VsZWN0b3IiLCJhdHRyaWJ1dGVOYW1lIiwieG1sRG9tIiwic2VyaWFsaXplciIsIndpbmRvdyIsIlhNTFNlcmlhbGl6ZXIiLCJub2RlIiwic2VyaWFsaXplVG9TdHJpbmciLCJTVEFSVCIsIkVORCIsIlVJRCIsImxpbmVzIiwiY3VycmVudExpbmUiLCJsZXZlbCIsImF0dHJpYnV0ZXMiLCJuZXdsaW5lIiwicHVzaCIsInJlcGVhdCIsImFwcGVuZEF0dHJpYnV0ZXMiLCJyZXZlcnNlIiwiYXR0cmlidXRlIiwidmFsdWUiLCJhcHBlbmQiLCJwYXJzZXIiLCJyZWFkIiwiY3JlYXRlUGFyc2VyIiwib25PcGVuVGFnU3RhcnQiLCJvbk9wZW5UYWdOYW1lIiwib25BdHRyTmFtZSIsInVuc2hpZnQiLCJvbkF0dHJWYWx1ZSIsIm9uT3BlblRhZ0VuZCIsInNlbGZDbG9zZWQiLCJvbkNsb3NlVGFnU3RhcnQiLCJvbkNsb3NlVGFnTmFtZSIsIm9uQ2xvc2VUYWdFbmQiLCJwYXJzZSIsInRyaW0iLCJjb21waWxlQ0RTIiwiY2RzVXJsIiwib3B0aW9ucyIsImNkc1N0cmluZyIsImZzIiwicmVhZEZpbGVTeW5jIiwiZWRteENvbnRlbnQiLCJjZHMyZWRteCIsImRpciIsInBhdGgiLCJyZXNvbHZlIiwiYWxsT3B0aW9ucyIsImVudHJpZXMiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwiZWRteEZpbGVOYW1lIiwicmVkdWNlIiwiZmlsZW5hbWUiLCJvcHRpb25LZXkiLCJvcHRpb25WYWx1ZSIsInRvU3RyaW5nIiwiYmFzZW5hbWUiLCJlZG14RmlsZVBhdGgiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJ3cml0ZUZpbGVTeW5jIiwiY2RzIiwic2VydmljZSIsInNvdXJjZXMiLCJpbmNsdWRlcyIsInJlcXVpcmUiLCJjc24iLCJjb21waWxlciIsImNvbXBpbGVTb3VyY2VzIiwiZWRteE9wdGlvbnMiLCJvZGF0YUZvcmVpZ25LZXlzIiwib2RhdGFGb3JtYXQiLCJvZGF0YUNvbnRhaW5tZW50IiwiZWRteCIsInRvIiwiRXJyb3IiLCJnZXRGYWtlU2lkZUVmZmVjdHNTZXJ2aWNlIiwiY2xhc3NOYW1lT0RhdGFNb2RlbCIsInNjb3BlT2JqZWN0IiwiZ2V0TW9kZWwiLCJpc0EiLCJnZXRTZXJ2aWNlIiwiZ2V0Q2FwYWJpbGl0aWVzIiwic2VydmljZUluc3RhbmNlIiwiU2lkZUVmZmVjdHNGYWN0b3J5IiwiY3JlYXRlSW5zdGFuY2UiLCJzY29wZVR5cGUiLCJnZXRJbnRlcmZhY2UiLCJnZXRGYWtlRGlhZ25vc3RpY3MiLCJpc3N1ZXMiLCJhZGRJc3N1ZSIsImlzc3VlQ2F0ZWdvcnkiLCJpc3N1ZVNldmVyaXR5IiwiZGV0YWlscyIsImdldElzc3VlcyIsImNoZWNrSWZJc3N1ZUV4aXN0cyIsImZpbmQiLCJpc3N1ZSIsImdldENvbnZlcnRlckNvbnRleHRGb3JUZXN0IiwiY29udmVydGVkVHlwZXMiLCJtYW5pZmVzdFNldHRpbmdzIiwiZW50aXR5U2V0IiwiZW50aXR5U2V0cyIsImVzIiwiZGF0YU1vZGVsUGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSIsIkNvbnZlcnRlckNvbnRleHQiLCJtZXJnZSIsIm1ldGFNb2RlbENhY2hlIiwib1JlcXVlc3RvciIsIl9NZXRhZGF0YVJlcXVlc3RvciIsImNyZWF0ZSIsIk9EYXRhTWV0YU1vZGVsIiwiZmV0Y2hFbnRpdHlDb250YWluZXIiLCJwcm9wZXJ0eSIsInRhcmdldFBhdGgiLCJzdGFydGluZ0VudGl0eVNldCIsIm5hdmlnYXRpb25Qcm9wZXJ0aWVzIiwidGFyZ2V0T2JqZWN0IiwidGFyZ2V0RW50aXR5U2V0IiwidGFyZ2V0RW50aXR5VHlwZSIsImVudGl0eVR5cGUiLCJjb250ZXh0TG9jYXRpb24iLCJldmFsdWF0ZUJpbmRpbmciLCJiaW5kaW5nU3RyaW5nIiwiYmluZGluZ0VsZW1lbnQiLCJCaW5kaW5nUGFyc2VyIiwiY29tcGxleFBhcnNlciIsImFyZ3MiLCJmb3JtYXR0ZXIiLCJhcHBseSIsImV2YWx1YXRlQmluZGluZ1dpdGhNb2RlbCIsIm1vZGVsQ29udGVudCIsIm5hbWVkTW9kZWxzQ29udGVudCIsInRleHQiLCJJbnZpc2libGVUZXh0IiwiYmluZFByb3BlcnR5IiwiZGVmYXVsdE1vZGVsIiwiSlNPTk1vZGVsIiwic2V0TW9kZWwiLCJzZXRCaW5kaW5nQ29udGV4dCIsImNvbnRlbnQiLCJtb2RlbCIsImdldFRleHQiLCJURVNUVklFV0lEIiwiYXBwbHlGbGV4Q2hhbmdlcyIsImZsZXhDaGFuZ2VzIiwicmVzdWx0WE1MIiwicXVlcnlTZWxlY3RvckFsbCIsImlkIiwiY2hhbmdlcyIsImNyZWF0ZUZsZXhpYmlsaXR5Q2hhbmdlc09iamVjdCIsImFwcElkIiwib01hbmlmZXN0IiwidHlwZSIsImNyb3NzTmF2aWdhdGlvbiIsIm91dGJvdW5kcyIsIm9BcHBDb21wb25lbnQiLCJnZXRDb21wb25lbnREYXRhIiwiZ2V0TWFuaWZlc3RPYmplY3QiLCJnZXRFbnRyeSIsImdldExvY2FsSWQiLCJzSWQiLCJzcHlPbiIsIkFwcFN0b3JhZ2UiLCJQcm9taXNlIiwiTG9hZGVyIiwiQ29tcG9uZW50IiwiVXRpbHMiLCJGbGV4U3RhdGUiLCJpbml0aWFsaXplIiwiY29tcG9uZW50SWQiLCJYbWxQcmVwcm9jZXNzb3IiLCJwcm9jZXNzIiwiY2hhbmdlc0FwcGxpZWQiLCJnZXRDaGFuZ2VzRnJvbVhNTCIsInRvQmUiLCJ2YXJpYW50RGVwZW5kZW50Q29udHJvbENoYW5nZXMiLCJmbGF0TWFwIiwiZSIsImZpbHRlciIsImF0dHIiLCJnZXRUZW1wbGF0aW5nUmVzdWx0IiwieG1sSW5wdXQiLCJjcmVhdGVNb2NrUmVzb3VyY2VNb2RlbCIsInRlbXBsYXRlZFhtbCIsIkRPTVBhcnNlciIsInhtbERvYyIsInBhcnNlRnJvbVN0cmluZyIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsIlhNTFByZXByb2Nlc3NvciIsImZpcnN0RWxlbWVudENoaWxkIiwiZ2V0VGVtcGxhdGVkWE1MIiwidGVtcGxhdGVkWE1MIiwic2VyaWFsaWVkWE1MIiwibm90IiwicHJvY2Vzc1ZpZXciLCJvVmlld0RvY3VtZW50Iiwib1ByZXByb2Nlc3NlZFZpZXciLCJhc0VsZW1lbnQiLCJhc1N0cmluZyIsIm91dGVySFRNTCIsInByb2Nlc3NGcmFnbWVudCIsInRlc3REYXRhIiwiaW5wdXRYbWwiLCJpbnB1dERvYyIsImpzb25Nb2RlbCIsInNldERhdGEiLCJyZXN1bHREb2MiLCJmcmFnbWVudHMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImZyYWdtZW50IiwiaW5uZXJIVE1MIiwieG1sUmVzdWx0IiwiY2hpbGRyZW4iLCJzZXJpYWxpemVDb250cm9sIiwiY29udHJvbFRvU2VyaWFsaXplIiwidGFiQ291bnQiLCJnZXRUYWIiLCJ0b0FkZCIsInRhYiIsImkiLCJzZXJpYWxpemVEZWxlZ2F0ZSIsInN0YXJ0Iiwic0FnZ3JlZ2F0aW9uTmFtZSIsImNvbnRyb2xEZXRhaWwiLCJnZXRQYXJlbnQiLCJpbmRleEluUGFyZW50IiwiZ2V0QWdncmVnYXRpb24iLCJpbmRleE9mIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiZW5kIiwibWlkZGxlIiwiZ2V0SWQiLCJNYW5hZ2VkT2JqZWN0TWV0YWRhdGEiLCJpc0dlbmVyYXRlZElkIiwib0NvbnRyb2xLZXkiLCJtUHJvcGVydGllcyIsIm1CaW5kaW5nSW5mb3MiLCJiaW5kaW5nRGV0YWlsIiwiSlNPTiIsInN0cmluZ2lmeSIsIm1Bc3NvY2lhdGlvbnMiLCJtRXZlbnRSZWdpc3RyeSIsInN0YXJ0QWdncmVnYXRpb24iLCJzTmFtZSIsIm91dCIsImVuZEFnZ3JlZ2F0aW9uIiwiY29udHJvbFRvUmVuZGVyIiwiU2VyaWFsaXplciIsInNlcmlhbGl6ZSIsImNyZWF0ZUF3YWl0ZXIiLCJmblJlc29sdmUiLCJteVByb21pc2UiLCJwcm9taXNlIiwicmVuZGVyQnVpbGRpbmdCbG9ja1dpdGhNb2RlbHMiLCJidWlsZGluZ0Jsb2NrIiwiTWFuYWdlZE9iamVjdCIsInJ1bldpdGhQcmVwcm9jZXNzb3JzIiwiZ2V0Q29udGVudCIsImNvbnRyb2xTZXR0aW5ncyIsInJlZ2lzdGVyTW9ja0ZyYWdtZW50cyIsIm9yaWdpbmFsTG9hZFRlbXBsYXRlIiwiWE1MVGVtcGxhdGVQcm9jZXNzb3IiLCJsb2FkVGVtcGxhdGVQcm9taXNlIiwibG9hZFRlbXBsYXRlU3R1YiIsIm1vY2tJbXBsZW1lbnRhdGlvbiIsInRlbXBsYXRlTmFtZSIsImV4dGVuc2lvbiIsInBhcnNlWE1MU3RyaW5nIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJKZXN0VGVtcGxhdGluZ0hlbHBlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFueUFubm90YXRpb24sIENvbnZlcnRlZE1ldGFkYXRhLCBFbnRpdHlTZXQsIFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgY29tcGlsZXIgZnJvbSBcIkBzYXAvY2RzLWNvbXBpbGVyXCI7XG5pbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCB0eXBlIHsgUmFuZ2UsIFJhbmdlcyB9IGZyb20gXCJodG1sanMtcGFyc2VyXCI7XG5pbXBvcnQgeyBjcmVhdGVQYXJzZXIgfSBmcm9tIFwiaHRtbGpzLXBhcnNlclwiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgTG9hZGVyRXh0ZW5zaW9ucyBmcm9tIFwic2FwL2Jhc2UvdXRpbC9Mb2FkZXJFeHRlbnNpb25zXCI7XG5pbXBvcnQgbWVyZ2UgZnJvbSBcInNhcC9iYXNlL3V0aWwvbWVyZ2VcIjtcbmltcG9ydCBBcHBDb21wb25lbnQgZnJvbSBcInNhcC9mZS9jb3JlL0FwcENvbXBvbmVudFwiO1xuaW1wb3J0IFRlbXBsYXRlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlTW9kZWxcIjtcbmltcG9ydCB7IHBhcnNlWE1MU3RyaW5nIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IENvbnZlcnRlckNvbnRleHQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvQ29udmVydGVyQ29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBMaXN0UmVwb3J0TWFuaWZlc3RTZXR0aW5ncywgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NYW5pZmVzdFNldHRpbmdzXCI7XG5pbXBvcnQgdHlwZSB7IElEaWFnbm9zdGljcyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL1RlbXBsYXRlQ29udmVydGVyXCI7XG5pbXBvcnQgdHlwZSB7IElzc3VlQ2F0ZWdvcnksIElzc3VlU2V2ZXJpdHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0lzc3VlTWFuYWdlclwiO1xuaW1wb3J0IHR5cGUgeyBTaWRlRWZmZWN0c1NlcnZpY2UgfSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2lkZUVmZmVjdHNTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IFNpZGVFZmZlY3RzRmFjdG9yeSBmcm9tIFwic2FwL2ZlL2NvcmUvc2VydmljZXMvU2lkZUVmZmVjdHNTZXJ2aWNlRmFjdG9yeVwiO1xuaW1wb3J0IHR5cGUgeyBEYXRhTW9kZWxPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgY3JlYXRlTW9ja1Jlc291cmNlTW9kZWwgfSBmcm9tIFwic2FwL2ZlL3Rlc3QvVUk1TW9ja0hlbHBlclwiO1xuaW1wb3J0IEJpbmRpbmdQYXJzZXIgZnJvbSBcInNhcC91aS9iYXNlL0JpbmRpbmdQYXJzZXJcIjtcbmltcG9ydCBNYW5hZ2VkT2JqZWN0IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdE1ldGFkYXRhIGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0TWV0YWRhdGFcIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IEludmlzaWJsZVRleHQgZnJvbSBcInNhcC91aS9jb3JlL0ludmlzaWJsZVRleHRcIjtcbmltcG9ydCBYTUxUZW1wbGF0ZVByb2Nlc3NvciBmcm9tIFwic2FwL3VpL2NvcmUvWE1MVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBYTUxQcmVwcm9jZXNzb3IgZnJvbSBcInNhcC91aS9jb3JlL3V0aWwvWE1MUHJlcHJvY2Vzc29yXCI7XG5pbXBvcnQgU2VyaWFsaXplciBmcm9tIFwic2FwL3VpL2NvcmUvdXRpbC9zZXJpYWxpemVyL1NlcmlhbGl6ZXJcIjtcbmltcG9ydCBVdGlscyBmcm9tIFwic2FwL3VpL2ZsL1V0aWxzXCI7XG5pbXBvcnQgRmxleFN0YXRlIGZyb20gXCJzYXAvdWkvZmwvYXBwbHkvX2ludGVybmFsL2ZsZXhTdGF0ZS9GbGV4U3RhdGVcIjtcbmltcG9ydCBMb2FkZXIgZnJvbSBcInNhcC91aS9mbC9hcHBseS9faW50ZXJuYWwvZmxleFN0YXRlL0xvYWRlclwiO1xuaW1wb3J0IFhtbFByZXByb2Nlc3NvciBmcm9tIFwic2FwL3VpL2ZsL2FwcGx5L19pbnRlcm5hbC9wcmVwcm9jZXNzb3JzL1htbFByZXByb2Nlc3NvclwiO1xuaW1wb3J0IEFwcFN0b3JhZ2UgZnJvbSBcInNhcC91aS9mbC9pbml0aWFsL19pbnRlcm5hbC9TdG9yYWdlXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvbWRjL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSBNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01vZGVsXCI7XG5pbXBvcnQgSlNPTk1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvanNvbi9KU09OTW9kZWxcIjtcbmltcG9ydCBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgX01ldGFkYXRhUmVxdWVzdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvbGliL19NZXRhZGF0YVJlcXVlc3RvclwiO1xuaW1wb3J0IHhwYXRoIGZyb20gXCJ4cGF0aFwiO1xuaW1wb3J0IHR5cGUgeyBNYW5hZ2VkT2JqZWN0RXggfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vLi4vdHlwZXMvZXh0ZW5zaW9uX3R5cGVzXCI7XG5pbXBvcnQgeyBjcmVhdGVGbGV4aWJpbGl0eUNoYW5nZXNPYmplY3QgfSBmcm9tIFwiLi9KZXN0RmxleGliaWxpdHlIZWxwZXJcIjtcblxudHlwZSBQcmVQcm9jZXNzb3JTZXR0aW5nc1R5cGUgPSB7XG5cdG1vZGVsczoge1xuXHRcdFtuYW1lOiBzdHJpbmddOiBKU09OTW9kZWwgfCBPRGF0YU1ldGFNb2RlbDtcblx0fTtcblx0YmluZGluZ0NvbnRleHRzOiB7XG5cdFx0W25hbWU6IHN0cmluZ106IENvbnRleHQgfCB1bmRlZmluZWQ7XG5cdH07XG59O1xudHlwZSBNb2NrRnJhZ21lbnQgPSB7XG5cdG5hbWU6IHN0cmluZztcblx0Y29udGVudDogc3RyaW5nO1xufTtcblxudHlwZSBKZXN0VGVtcGxhdGVkVmlldyA9IHtcblx0YXNFbGVtZW50OiBFbGVtZW50IHwgdW5kZWZpbmVkO1xuXHRhc1N0cmluZzogc3RyaW5nO1xufTtcblxuTG9nLnNldExldmVsKDEgYXMgYW55LCBcInNhcC51aS5jb3JlLnV0aWwuWE1MUHJlcHJvY2Vzc29yXCIpO1xuamVzdC5zZXRUaW1lb3V0KDQwMDAwKTtcblxuY29uc3QgbmFtZVNwYWNlTWFwID0ge1xuXHRtYWNyb3M6IFwic2FwLmZlLm1hY3Jvc1wiLFxuXHRtYWNybzogXCJzYXAuZmUubWFjcm9zXCIsXG5cdG1hY3JvRmllbGQ6IFwic2FwLmZlLm1hY3Jvcy5maWVsZFwiLFxuXHRtYWNyb2RhdGE6IFwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLkN1c3RvbURhdGEvMVwiLFxuXHRsb2c6IFwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLkN1c3RvbURhdGEvMVwiLFxuXHR1bml0dGVzdDogXCJodHRwOi8vc2NoZW1hcy5zYXAuY29tL3NhcHVpNS9wcmVwcm9jZXNzb3JleHRlbnNpb24vc2FwLmZlLnVuaXR0ZXN0aW5nLzFcIixcblx0Y29udHJvbDogXCJzYXAuZmUuY29yZS5jb250cm9sc1wiLFxuXHRjb250cm9sczogXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzXCIsXG5cdGNvcmU6IFwic2FwLnVpLmNvcmVcIixcblx0ZHQ6IFwic2FwLnVpLmR0XCIsXG5cdG06IFwic2FwLm1cIixcblx0ZjogXCJzYXAudWkubGF5b3V0LmZvcm1cIixcblx0Zmw6IFwic2FwLnVpLmZsXCIsXG5cdGludGVybmFsTWFjcm86IFwic2FwLmZlLm1hY3Jvcy5pbnRlcm5hbFwiLFxuXHRtZGM6IFwic2FwLnVpLm1kY1wiLFxuXHRtZGNhdDogXCJzYXAudWkubWRjLmFjdGlvbnRvb2xiYXJcIixcblx0bWRjRmllbGQ6IFwic2FwLnVpLm1kYy5maWVsZFwiLFxuXHRtZGNUYWJsZTogXCJzYXAudWkubWRjLnRhYmxlXCIsXG5cdHU6IFwic2FwLnVpLnVuaWZpZWRcIixcblx0bWFjcm9NaWNyb0NoYXJ0OiBcInNhcC5mZS5tYWNyb3MubWljcm9jaGFydFwiLFxuXHRtaWNyb0NoYXJ0OiBcInNhcC5zdWl0ZS51aS5taWNyb2NoYXJ0XCIsXG5cdG1hY3JvVGFibGU6IFwic2FwLmZlLm1hY3Jvcy50YWJsZVwiXG59O1xuY29uc3Qgc2VsZWN0ID0geHBhdGgudXNlTmFtZXNwYWNlcyhuYW1lU3BhY2VNYXApO1xuXG5jb25zdCBkZWZhdWx0RmFrZVNpZGVFZmZlY3RTZXJ2aWNlID0geyBjb21wdXRlRmllbGRHcm91cElkczogKCkgPT4gW10gfTtcblxuZnVuY3Rpb24gX2dldFRlbXBsYXRlZFNlbGVjdG9yKHhtbGRvbTogTm9kZSwgc2VsZWN0b3I6IHN0cmluZyk6IHN0cmluZyB7XG5cdC8qKlxuXHQgKiBpZiBhIHJvb3QgZWxlbWVudCBoYXMgYmVlbiBhZGRlZCBkdXJpbmcgdGhlIHRlbXBsYXRpbmcgYnkgb3VyIEplc3QgVGVtcGxhdGluZyBtZXRob2RzXG5cdCAqIHRoZSByb290IGVsZW1lbnQgaXMgYWRkZWQgdG8gdGhlIHNlbGVjdG9yIHBhdGguXG5cdCAqL1xuXHRjb25zdCByb290UGF0aCA9IFwiL3Jvb3RcIjtcblx0cmV0dXJuIGAke3htbGRvbS5ub2RlTmFtZSA9PT0gXCJyb290XCIgJiYgIXNlbGVjdG9yLnN0YXJ0c1dpdGgocm9vdFBhdGgpID8gcm9vdFBhdGggOiBcIlwifSR7c2VsZWN0b3J9YDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gX2J1aWxkUHJlUHJvY2Vzc29yU2V0dGluZ3MoXG5cdHNNZXRhZGF0YVVybDogc3RyaW5nLFxuXHRtQmluZGluZ0NvbnRleHRzOiB7IFt4OiBzdHJpbmddOiBzdHJpbmcgfSxcblx0bU1vZGVsczogeyBbeDogc3RyaW5nXTogYW55IH0sXG5cdGZha2VTaWRlRWZmZWN0U2VydmljZT86IHVua25vd25cbik6IFByb21pc2U8UHJlUHJvY2Vzc29yU2V0dGluZ3NUeXBlPiB7XG5cdGNvbnN0IG9NZXRhTW9kZWwgPSBhd2FpdCBnZXRNZXRhTW9kZWwoc01ldGFkYXRhVXJsKTtcblxuXHQvLyBUbyBlbnN1cmUgb3VyIG1hY3JvIGNhbiB1c2UgI3NldEJpbmRpbmdDb250ZXh0IHdlIGVuc3VyZSB0aGVyZSBpcyBhIHByZSBleGlzdGluZyBKU09OTW9kZWwgZm9yIGNvbnZlcnRlckNvbnRleHRcblx0Ly8gaWYgbm90IGFscmVhZHkgcGFzc2VkIHRvIHRlaCB0ZW1wbGF0aW5nXG5cdGlmICghbU1vZGVscy5oYXNPd25Qcm9wZXJ0eShcImNvbnZlcnRlckNvbnRleHRcIikpIHtcblx0XHRtTW9kZWxzID0gT2JqZWN0LmFzc2lnbihtTW9kZWxzLCB7IGNvbnZlcnRlckNvbnRleHQ6IG5ldyBUZW1wbGF0ZU1vZGVsKHt9LCBvTWV0YU1vZGVsKSB9KTtcblx0fVxuXG5cdE9iamVjdC5rZXlzKG1Nb2RlbHMpLmZvckVhY2goZnVuY3Rpb24gKHNNb2RlbE5hbWUpIHtcblx0XHRpZiAobU1vZGVsc1tzTW9kZWxOYW1lXSAmJiBtTW9kZWxzW3NNb2RlbE5hbWVdLmlzVGVtcGxhdGVNb2RlbCkge1xuXHRcdFx0bU1vZGVsc1tzTW9kZWxOYW1lXSA9IG5ldyBUZW1wbGF0ZU1vZGVsKG1Nb2RlbHNbc01vZGVsTmFtZV0uZGF0YSwgb01ldGFNb2RlbCk7XG5cdFx0fVxuXHR9KTtcblxuXHRjb25zdCBzZXR0aW5nczogYW55ID0ge1xuXHRcdG1vZGVsczogT2JqZWN0LmFzc2lnbihcblx0XHRcdHtcblx0XHRcdFx0bWV0YU1vZGVsOiBvTWV0YU1vZGVsXG5cdFx0XHR9LFxuXHRcdFx0bU1vZGVsc1xuXHRcdCksXG5cdFx0YmluZGluZ0NvbnRleHRzOiB7fSxcblx0XHRhcHBDb21wb25lbnQ6IHsgZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlOiBqZXN0LmZuKCksIGdldERpYWdub3N0aWNzOiAoKSA9PiB1bmRlZmluZWQgfVxuXHR9O1xuXG5cdHNldHRpbmdzLmFwcENvbXBvbmVudC5nZXRTaWRlRWZmZWN0c1NlcnZpY2UubW9ja1JldHVyblZhbHVlKGZha2VTaWRlRWZmZWN0U2VydmljZSA/PyBkZWZhdWx0RmFrZVNpZGVFZmZlY3RTZXJ2aWNlKTtcblx0Ly9JbmplY3QgbW9kZWxzIGFuZCBiaW5kaW5nQ29udGV4dHNcblx0T2JqZWN0LmtleXMobUJpbmRpbmdDb250ZXh0cykuZm9yRWFjaChmdW5jdGlvbiAoc0tleSkge1xuXHRcdC8qIEFzc2VydCB0byBtYWtlIHN1cmUgdGhlIGFubm90YXRpb25zIGFyZSBpbiB0aGUgdGVzdCBtZXRhZGF0YSAtPiBhdm9pZCBtaXNsZWFkaW5nIHRlc3RzICovXG5cdFx0ZXhwZWN0KHR5cGVvZiBvTWV0YU1vZGVsLmdldE9iamVjdChtQmluZGluZ0NvbnRleHRzW3NLZXldKSkudG9CZURlZmluZWQoKTtcblx0XHRjb25zdCBvTW9kZWwgPSBtTW9kZWxzW3NLZXldIHx8IG9NZXRhTW9kZWw7XG5cdFx0c2V0dGluZ3MuYmluZGluZ0NvbnRleHRzW3NLZXldID0gb01vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KG1CaW5kaW5nQ29udGV4dHNbc0tleV0pOyAvL1ZhbHVlIGlzIHNQYXRoXG5cdFx0c2V0dGluZ3MubW9kZWxzW3NLZXldID0gb01vZGVsO1xuXHR9KTtcblx0cmV0dXJuIHNldHRpbmdzO1xufVxuXG5mdW5jdGlvbiBfbG9hZFJlc291cmNlVmlldyh2aWV3TmFtZTogc3RyaW5nKTogRWxlbWVudCB7XG5cdGNvbnN0IG5hbWUgPSB2aWV3TmFtZS5yZXBsYWNlKC9cXC4vZywgXCIvXCIpICsgXCIudmlldy54bWxcIjtcblx0Y29uc3QgdmlldyA9IExvYWRlckV4dGVuc2lvbnMubG9hZFJlc291cmNlKG5hbWUpO1xuXHRyZXR1cm4gdmlldy5kb2N1bWVudEVsZW1lbnQ7XG59XG5cbmV4cG9ydCBjb25zdCBydW5YUGF0aFF1ZXJ5ID0gZnVuY3Rpb24gKHNlbGVjdG9yOiBzdHJpbmcsIHhtbGRvbTogTm9kZSB8IHVuZGVmaW5lZCkge1xuXHRyZXR1cm4gc2VsZWN0KHNlbGVjdG9yLCB4bWxkb20pO1xufTtcblxuZXhwZWN0LmV4dGVuZCh7XG5cdHRvSGF2ZUNvbnRyb2woeG1sZG9tLCBzZWxlY3Rvcikge1xuXHRcdGNvbnN0IG5vZGVzID0gcnVuWFBhdGhRdWVyeShfZ2V0VGVtcGxhdGVkU2VsZWN0b3IoeG1sZG9tLCBzZWxlY3RvciksIHhtbGRvbSk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG1lc3NhZ2U6ICgpID0+IHtcblx0XHRcdFx0Y29uc3Qgb3V0cHV0WG1sID0gc2VyaWFsaXplWE1MKHhtbGRvbSk7XG5cdFx0XHRcdHJldHVybiBgZGlkIG5vdCBmaW5kIGNvbnRyb2xzIG1hdGNoaW5nICR7c2VsZWN0b3J9IGluIGdlbmVyYXRlZCB4bWw6XFxuICR7b3V0cHV0WG1sfWA7XG5cdFx0XHR9LFxuXHRcdFx0cGFzczogbm9kZXMgJiYgbm9kZXMubGVuZ3RoID49IDFcblx0XHR9O1xuXHR9LFxuXHR0b05vdEhhdmVDb250cm9sKHhtbGRvbSwgc2VsZWN0b3IpIHtcblx0XHRjb25zdCBub2RlcyA9IHJ1blhQYXRoUXVlcnkoX2dldFRlbXBsYXRlZFNlbGVjdG9yKHhtbGRvbSwgc2VsZWN0b3IpLCB4bWxkb20pO1xuXHRcdHJldHVybiB7XG5cdFx0XHRtZXNzYWdlOiAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG91dHB1dFhtbCA9IHNlcmlhbGl6ZVhNTCh4bWxkb20pO1xuXHRcdFx0XHRyZXR1cm4gYFRoZXJlIGlzIGEgY29udHJvbCBtYXRjaGluZyAke3NlbGVjdG9yfSBpbiBnZW5lcmF0ZWQgeG1sOlxcbiAke291dHB1dFhtbH1gO1xuXHRcdFx0fSxcblx0XHRcdHBhc3M6IG5vZGVzICYmIG5vZGVzLmxlbmd0aCA9PT0gMFxuXHRcdH07XG5cdH0sXG5cdC8qKlxuXHQgKiBDaGVja3MgZm9yIGVycm9ycyBpbiBgeG1sYCBjcmVhdGVkIGR1cmluZyB0ZW1wbGF0aW5nIG9mIGFuIFhNTCBzdHJpbmcgb3Jcblx0ICogYW4gWE1MIG5vZGUuXG5cdCAqXG5cdCAqIFRoaXMgZnVuY3Rpb24gY2hlY2tlcyBmb3IgdGhlIHhtbCBlcnJvcnMgY3JlYXRlZCBieSB0aGVcblx0ICogZnVuY3Rpb24gW0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3Nvci5jcmVhdGVFcnJvclhNTF17QGxpbmsgc2FwLmZlLmNvcmUuYnVpbGRpbmdCbG9ja3MuQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yI2NyZWF0ZUVycm9yWE1MfS5cblx0ICpcblx0ICogQHBhcmFtIHhtbCBYTUwgU3RyaW5nIG9yIFhNTCBOb2RlIHRvIGJlIHRlc3RlZCBmb3IgZXJyb3JzXG5cdCAqIEByZXR1cm5zIEplc3QgTWF0Y2hlciByZXN1bHQgb2JqZWN0XG5cdCAqL1xuXHR0b0hhdmVUZW1wbGF0aW5nRXJyb3JzKHhtbDogc3RyaW5nIHwgTm9kZSkge1xuXHRcdGNvbnN0IHhtbFRleHQgPSB0eXBlb2YgeG1sID09PSBcInN0cmluZ1wiID8geG1sIDogc2VyaWFsaXplWE1MKHhtbCk7XG5cdFx0Y29uc3QgYmFzZTY0RW50cmllczogc3RyaW5nW10gPSB4bWxUZXh0Lm1hdGNoKC9CQkZcXC5iYXNlNjREZWNvZGVcXCgnKFteJ10qKSdcXCkvZ20pIHx8IChbXSBhcyBzdHJpbmdbXSk7XG5cdFx0Y29uc3QgZXJyb3JNZXNzYWdlczogc3RyaW5nW10gPSBiYXNlNjRFbnRyaWVzLm1hcCgobWVzc2FnZTogc3RyaW5nKSA9PiB7XG5cdFx0XHRpZiAobWVzc2FnZSAmJiBtZXNzYWdlLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0cmV0dXJuIGF0b2IobWVzc2FnZS5tYXRjaCgvKCdbXiddKikvKT8uWzBdPy5zbGljZSgxKSB8fCBcIlwiKTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBcIlwiO1xuXHRcdH0pO1xuXHRcdGlmIChlcnJvck1lc3NhZ2VzLmxlbmd0aCA8PSAwKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRtZXNzYWdlOiAoKSA9PiBgWE1MIFRlbXBsYXRpbmcgd2l0aG91dCBlcnJvcnNgLFxuXHRcdFx0XHRwYXNzOiBmYWxzZVxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0bWVzc2FnZTogKCkgPT4gZXJyb3JNZXNzYWdlcy5qb2luKFwiXFxuXCIpLFxuXHRcdFx0XHRwYXNzOiB0cnVlXG5cdFx0XHR9O1xuXHRcdH1cblx0fVxufSk7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRCdWlsZGluZ0Jsb2NrWE1MID0gZnVuY3Rpb24gKHhtbFN0cmluZzogc3RyaW5nIHwgc3RyaW5nW10pOiBzdHJpbmcge1xuXHRpZiAoQXJyYXkuaXNBcnJheSh4bWxTdHJpbmcpKSB7XG5cdFx0eG1sU3RyaW5nID0geG1sU3RyaW5nLmpvaW4oXCJcIik7XG5cdH1cblx0cmV0dXJuIGZvcm1hdFhNTCh4bWxTdHJpbmcpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnRyb2xBdHRyaWJ1dGUgPSBmdW5jdGlvbiAoY29udHJvbFNlbGVjdG9yOiBzdHJpbmcsIGF0dHJpYnV0ZU5hbWU6IHN0cmluZywgeG1sRG9tOiBOb2RlKSB7XG5cdGNvbnN0IHNlbGVjdG9yID0gYHN0cmluZygke19nZXRUZW1wbGF0ZWRTZWxlY3Rvcih4bWxEb20sIGNvbnRyb2xTZWxlY3Rvcil9L0Ake2F0dHJpYnV0ZU5hbWV9KWA7XG5cdHJldHVybiBydW5YUGF0aFF1ZXJ5KHNlbGVjdG9yLCB4bWxEb20pO1xufTtcblxuLyoqXG4gKiBTZXJpYWxpemUgdGhlIHBhcnRzIG9yIHRoZSBjb21wbGV0ZSBnaXZlbiBYTUwgRE9NIHRvIHN0cmluZy5cbiAqXG4gKiBAcGFyYW0geG1sRG9tIERPTSBub2RlIHRoYXQgaXMgdG8gYmUgc2VyaWFsaXplZC5cbiAqIEBwYXJhbSBzZWxlY3RvciBPcHRpb25hbCBzZWxlY3RvciBvZiBzdWIgbm9kZXNcbiAqIEByZXR1cm5zIFhNTCBzdHJpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHNlcmlhbGl6ZVhNTCA9IGZ1bmN0aW9uICh4bWxEb206IE5vZGUsIHNlbGVjdG9yPzogc3RyaW5nKSB7XG5cdGNvbnN0IHNlcmlhbGl6ZXIgPSBuZXcgd2luZG93LlhNTFNlcmlhbGl6ZXIoKTtcblx0bGV0IHhtbFN0cmluZzogc3RyaW5nO1xuXHRpZiAoc2VsZWN0b3IpIHtcblx0XHRjb25zdCBub2RlcyA9IHJ1blhQYXRoUXVlcnkoc2VsZWN0b3IsIHhtbERvbSkgYXMgTm9kZVtdO1xuXHRcdHhtbFN0cmluZyA9IG5vZGVzLm1hcCgobm9kZSkgPT4gc2VyaWFsaXplci5zZXJpYWxpemVUb1N0cmluZyhub2RlKSkuam9pbihcIlxcblwiKTtcblx0fSBlbHNlIHtcblx0XHR4bWxTdHJpbmcgPSBzZXJpYWxpemVyLnNlcmlhbGl6ZVRvU3RyaW5nKHhtbERvbSk7XG5cdH1cblx0cmV0dXJuIGZvcm1hdFhNTCh4bWxTdHJpbmcpO1xufTtcblxuLyoqXG4gKiBGb3JtYXRzIGEgc3RyaW5nIGNvbnRhaW5pbmcgYW4gWE1MIGRvY3VtZW50LlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gb25seSBjb25zaWRlcnMgWE1MIHRhZ3MgYW5kIGF0dHJpYnV0ZXMsIGlnbm9yaW5nIGV2ZXJ5dGhpbmcgZWxzZSAodGV4dCwgY29tbWVudHMpLiBBZGRpdGlvbmFsbHksXG4gKiBhdHRyaWJ1dGUgdmFsdWVzIGNvbnRhaW5pbmcgYSB2YXJ5aW5nIFVJRCBhcmUgcmVwbGFjZWQgd2l0aCBhIGNvbnN0YW50IHZhbHVlLlxuICpcbiAqIEFuIFwiWE1MXCIgc3RyaW5nIGNvbnRhaW5pbmcgbXVsdGlwbGUgcm9vdCBlbGVtZW50cyBjYW4gYmUuXG4gKlxuICogQHBhcmFtIHhtbFN0cmluZyAgVGhlIGlucHV0IFhNTCBzdHJpbmcuIFRoaXMgZnVuY3Rpb24gYWxzbyBhY2NlcHRzIFwiWE1MXCIgc3RyaW5ncyB3aXRoIG11bHRpcGxlIHJvb3QgZWxlbWVudHMuXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIFhNTCBzdHJpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtYXRYTUwgPSBmdW5jdGlvbiAoeG1sU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRjb25zdCBTVEFSVCA9IFwiPF9fWE1MX18+XCIsXG5cdFx0RU5EID0gXCI8L19fWE1MX18+XCIsXG5cdFx0VUlEID0gL3VpZC0taWQtXFxkezEzfS1cXGR7MSwzfS8sXG5cdFx0bGluZXM6IHN0cmluZ1tdID0gW107XG5cblx0bGV0IGN1cnJlbnRMaW5lID0gXCJcIixcblx0XHRsZXZlbCA9IC0xLFxuXHRcdGF0dHJpYnV0ZXM6IHsgbmFtZTogc3RyaW5nOyB2YWx1ZT86IHN0cmluZyB9W10gPSBbXTtcblxuXHRmdW5jdGlvbiBuZXdsaW5lKCkge1xuXHRcdGlmIChjdXJyZW50TGluZSAmJiBjdXJyZW50TGluZSAhPT0gU1RBUlQpIHtcblx0XHRcdGxpbmVzLnB1c2goY3VycmVudExpbmUpO1xuXHRcdH1cblxuXHRcdGN1cnJlbnRMaW5lID0gbGV2ZWwgPiAwID8gXCIgIFwiLnJlcGVhdChsZXZlbCkgOiBcIlwiO1xuXHR9XG5cblx0ZnVuY3Rpb24gYXBwZW5kQXR0cmlidXRlcygpIHtcblx0XHRpZiAoYXR0cmlidXRlcy5sZW5ndGggPiAwKSB7XG5cdFx0XHQvLyBhdHRyaWJ1dGVzID0gYXR0cmlidXRlcy5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKTtcblx0XHRcdGF0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzLnJldmVyc2UoKTtcblxuXHRcdFx0bGV2ZWwrKztcblx0XHRcdGZvciAoY29uc3QgYXR0cmlidXRlIG9mIGF0dHJpYnV0ZXMpIHtcblx0XHRcdFx0bmV3bGluZSgpO1xuXHRcdFx0XHRjdXJyZW50TGluZSArPSBhdHRyaWJ1dGUubmFtZTtcblx0XHRcdFx0aWYgKGF0dHJpYnV0ZS52YWx1ZSkgY3VycmVudExpbmUgKz0gYXR0cmlidXRlLnZhbHVlO1xuXHRcdFx0fVxuXHRcdFx0bGV2ZWwtLTtcblx0XHRcdGF0dHJpYnV0ZXMgPSBbXTtcblx0XHRcdG5ld2xpbmUoKTtcblx0XHR9XG5cdH1cblxuXHRmdW5jdGlvbiBhcHBlbmQoZGF0YTogUmFuZ2UpIHtcblx0XHRjdXJyZW50TGluZSArPSBwYXJzZXIucmVhZChkYXRhKTtcblx0fVxuXG5cdGNvbnN0IHBhcnNlciA9IGNyZWF0ZVBhcnNlcih7XG5cdFx0b25PcGVuVGFnU3RhcnQoZGF0YTogUmFuZ2UpIHtcblx0XHRcdG5ld2xpbmUoKTtcblx0XHRcdGFwcGVuZChkYXRhKTtcblx0XHR9LFxuXG5cdFx0b25PcGVuVGFnTmFtZTogYXBwZW5kLFxuXG5cdFx0b25BdHRyTmFtZShkYXRhOiBSYW5nZSkge1xuXHRcdFx0YXR0cmlidXRlcy51bnNoaWZ0KHsgbmFtZTogcGFyc2VyLnJlYWQoZGF0YSkgfSk7XG5cdFx0fSxcblxuXHRcdG9uQXR0clZhbHVlKGRhdGE6IFJhbmdlcy5BdHRyVmFsdWUpIHtcblx0XHRcdGF0dHJpYnV0ZXNbMF0udmFsdWUgPSBwYXJzZXIucmVhZChkYXRhKS5yZXBsYWNlKFVJRCwgXCJ1aWQtLWlkXCIpOyAvLyByZXBsYWNlIHZhcnlpbmcgVUlEcyB3aXRoIGEgY29uc3RhbnQgdmFsdWVcblx0XHR9LFxuXG5cdFx0b25PcGVuVGFnRW5kKGRhdGE6IFJhbmdlcy5PcGVuVGFnRW5kKSB7XG5cdFx0XHRhcHBlbmRBdHRyaWJ1dGVzKCk7XG5cdFx0XHRhcHBlbmQoZGF0YSk7XG5cdFx0XHRpZiAoIWRhdGEuc2VsZkNsb3NlZCkgbGV2ZWwrKztcblx0XHR9LFxuXG5cdFx0b25DbG9zZVRhZ1N0YXJ0KGRhdGE6IFJhbmdlKSB7XG5cdFx0XHRsZXZlbC0tO1xuXHRcdFx0bmV3bGluZSgpO1xuXHRcdFx0YXBwZW5kKGRhdGEpO1xuXHRcdH0sXG5cblx0XHRvbkNsb3NlVGFnTmFtZTogYXBwZW5kLFxuXHRcdG9uQ2xvc2VUYWdFbmQ6IGFwcGVuZFxuXHR9KTtcblxuXHRwYXJzZXIucGFyc2UoU1RBUlQgKyB4bWxTdHJpbmcgKyBFTkQpO1xuXHRyZXR1cm4gbGluZXMuam9pbihcIlxcblwiKS50cmltKCk7XG59O1xuXG4vKipcbiAqIENvbXBpbGUgYSBDRFMgZmlsZSBpbnRvIGFuIEVETVggZmlsZS5cbiAqXG4gKiBAcGFyYW0gY2RzVXJsIFRoZSBwYXRoIHRvIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIENEUyBkZWZpbml0aW9uLiBUaGlzIGZpbGUgbXVzdCBkZWNsYXJlIHRoZSBuYW1lc3BhY2VcbiAqIHNhcC5mZS50ZXN0IGFuZCBhIHNlcnZpY2UgSmVzdFNlcnZpY2VcbiAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoZSBFRE1YIG91dHB1dFxuICogQHJldHVybnMgVGhlIHBhdGggb2YgdGhlIGdlbmVyYXRlZCBFRE1YXG4gKi9cbmV4cG9ydCBjb25zdCBjb21waWxlQ0RTID0gZnVuY3Rpb24gKGNkc1VybDogc3RyaW5nLCBvcHRpb25zOiBjb21waWxlci5PRGF0YU9wdGlvbnMgPSB7fSkge1xuXHRjb25zdCBjZHNTdHJpbmcgPSBmcy5yZWFkRmlsZVN5bmMoY2RzVXJsLCBcInV0Zi04XCIpO1xuXHRjb25zdCBlZG14Q29udGVudCA9IGNkczJlZG14KGNkc1N0cmluZywgXCJzYXAuZmUudGVzdC5KZXN0U2VydmljZVwiLCBvcHRpb25zKTtcblx0Y29uc3QgZGlyID0gcGF0aC5yZXNvbHZlKGNkc1VybCwgXCIuLlwiLCBcImdlblwiKTtcblxuXHQvLyBJZiB0aGUgY2FsbGVyIHByb3ZpZGVkIENEUyBjb21waWxlciBvcHRpb25zOiBJbmNsdWRlIHRoZW0gaW4gdGhlIGZpbGVuYW1lLiBUaGlzIHByZXZlbnRzIHVucHJlZGljdGFibGUgcmVzdWx0cyBpZiB0aGUgc2FtZSBDRFMgc291cmNlXG5cdC8vIGZpbGUgaXMgdXNlZCBzaW11bHRhbmVvdXNseSB3aXRoIGEgZGlmZmVyZW50IHNldCBvZiBvcHRpb25zIChlLmcuIGluIGEgdGVzdCBydW5uaW5nIGluIHBhcmFsbGVsKVxuXHRjb25zdCBhbGxPcHRpb25zID0gT2JqZWN0LmVudHJpZXMob3B0aW9ucyk7XG5cdGFsbE9wdGlvbnMuc29ydCgoYSwgYikgPT4gYlswXS5sb2NhbGVDb21wYXJlKGFbMF0pKTtcblxuXHRjb25zdCBlZG14RmlsZU5hbWUgPVxuXHRcdGFsbE9wdGlvbnMucmVkdWNlKFxuXHRcdFx0KGZpbGVuYW1lLCBbb3B0aW9uS2V5LCBvcHRpb25WYWx1ZV0pID0+IGAke2ZpbGVuYW1lfSMke29wdGlvbktleX09JHtvcHRpb25WYWx1ZS50b1N0cmluZygpfSNgLFxuXHRcdFx0cGF0aC5iYXNlbmFtZShjZHNVcmwpLnJlcGxhY2UoXCIuY2RzXCIsIFwiXCIpXG5cdFx0KSArIFwiLnhtbFwiO1xuXG5cdGNvbnN0IGVkbXhGaWxlUGF0aCA9IHBhdGgucmVzb2x2ZShkaXIsIGVkbXhGaWxlTmFtZSk7XG5cblx0ZnMubWtkaXJTeW5jKGRpciwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG5cblx0ZnMud3JpdGVGaWxlU3luYyhlZG14RmlsZVBhdGgsIGVkbXhDb250ZW50KTtcblx0cmV0dXJuIGVkbXhGaWxlUGF0aDtcbn07XG5cbi8qKlxuICogQ29tcGlsZSBDRFMgdG8gRURNWC5cbiAqXG4gKiBAcGFyYW0gY2RzIFRoZSBDRFMgbW9kZWwuIEl0IG11c3QgZGVmaW5lIGF0IGxlYXN0IG9uZSBzZXJ2aWNlLlxuICogQHBhcmFtIHNlcnZpY2UgVGhlIGZ1bGx5LXF1YWxpZmllZCBuYW1lIG9mIHRoZSBzZXJ2aWNlIHRvIGJlIGNvbXBpbGVkLiBEZWZhdWx0cyB0byBcInNhcC5mZS50ZXN0Lkplc3RTZXJ2aWNlXCIuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBjcmVhdGluZyB0aGUgRURNWCBvdXRwdXRcbiAqIEByZXR1cm5zIFRoZSBjb21waWxlZCBzZXJ2aWNlIG1vZGVsIGFzIEVETVguXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjZHMyZWRteChjZHM6IHN0cmluZywgc2VydmljZSA9IFwic2FwLmZlLnRlc3QuSmVzdFNlcnZpY2VcIiwgb3B0aW9uczogY29tcGlsZXIuT0RhdGFPcHRpb25zID0ge30pIHtcblx0Y29uc3Qgc291cmNlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHsgXCJzb3VyY2UuY2RzXCI6IGNkcyB9O1xuXG5cdC8vIGFsbG93IHRvIGluY2x1ZGUgc3R1ZmYgZnJvbSBAc2FwL2Nkcy9jb21tb25cblx0aWYgKGNkcy5pbmNsdWRlcyhcIidAc2FwL2Nkcy9jb21tb24nXCIpKSB7XG5cdFx0c291cmNlc1tcImNvbW1vbi5jZHNcIl0gPSBmcy5yZWFkRmlsZVN5bmMocmVxdWlyZS5yZXNvbHZlKFwiQHNhcC9jZHMvY29tbW9uLmNkc1wiKSwgXCJ1dGYtOFwiKTtcblx0fVxuXG5cdGNvbnN0IGNzbiA9IGNvbXBpbGVyLmNvbXBpbGVTb3VyY2VzKHNvdXJjZXMsIHt9KTtcblxuXHRjb25zdCBlZG14T3B0aW9uczogY29tcGlsZXIuT0RhdGFPcHRpb25zID0ge1xuXHRcdG9kYXRhRm9yZWlnbktleXM6IHRydWUsXG5cdFx0b2RhdGFGb3JtYXQ6IFwic3RydWN0dXJlZFwiLFxuXHRcdG9kYXRhQ29udGFpbm1lbnQ6IHRydWUsXG5cdFx0Li4ub3B0aW9ucyxcblx0XHRzZXJ2aWNlOiBzZXJ2aWNlXG5cdH07XG5cblx0Y29uc3QgZWRteCA9IGNvbXBpbGVyLnRvLmVkbXgoY3NuLCBlZG14T3B0aW9ucyk7XG5cdGlmICghZWRteCkge1xuXHRcdHRocm93IG5ldyBFcnJvcihgQ29tcGlsYXRpb24gZmFpbGVkLiBIaW50OiBNYWtlIHN1cmUgdGhhdCB0aGUgQ0RTIG1vZGVsIGRlZmluZXMgc2VydmljZSAke3NlcnZpY2V9LmApO1xuXHR9XG5cdHJldHVybiBlZG14O1xufVxuXG5leHBvcnQgY29uc3QgZ2V0RmFrZVNpZGVFZmZlY3RzU2VydmljZSA9IGFzeW5jIGZ1bmN0aW9uIChcblx0bWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCxcblx0Y2xhc3NOYW1lT0RhdGFNb2RlbCA9IFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTW9kZWxcIlxuKTogUHJvbWlzZTxTaWRlRWZmZWN0c1NlcnZpY2U+IHtcblx0Y29uc3Qgc2NvcGVPYmplY3QgPSB7XG5cdFx0Z2V0TW9kZWw6ICgpID0+IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGlzQTogKCkgPT4gY2xhc3NOYW1lT0RhdGFNb2RlbCA9PT0gXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFNb2RlbFwiLFxuXHRcdFx0XHRnZXRNZXRhTW9kZWw6ICgpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gbWV0YU1vZGVsO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdH0sXG5cdFx0Z2V0U2VydmljZTogKCkgPT4ge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0Z2V0Q2FwYWJpbGl0aWVzOiAoKSA9PiB1bmRlZmluZWRcblx0XHRcdH07XG5cdFx0fVxuXHR9O1xuXHRjb25zdCBzZXJ2aWNlSW5zdGFuY2UgPSBhd2FpdCBuZXcgU2lkZUVmZmVjdHNGYWN0b3J5KCkuY3JlYXRlSW5zdGFuY2UoeyBzY29wZU9iamVjdCwgc2NvcGVUeXBlOiBcIlwiLCBzZXR0aW5nczoge30gfSk7XG5cdHJldHVybiBzZXJ2aWNlSW5zdGFuY2UuZ2V0SW50ZXJmYWNlKCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RmFrZURpYWdub3N0aWNzID0gZnVuY3Rpb24gKCk6IElEaWFnbm9zdGljcyB7XG5cdGNvbnN0IGlzc3VlczogYW55W10gPSBbXTtcblx0cmV0dXJuIHtcblx0XHRhZGRJc3N1ZShpc3N1ZUNhdGVnb3J5OiBJc3N1ZUNhdGVnb3J5LCBpc3N1ZVNldmVyaXR5OiBJc3N1ZVNldmVyaXR5LCBkZXRhaWxzOiBzdHJpbmcpOiB2b2lkIHtcblx0XHRcdGlzc3Vlcy5wdXNoKHtcblx0XHRcdFx0aXNzdWVDYXRlZ29yeSxcblx0XHRcdFx0aXNzdWVTZXZlcml0eSxcblx0XHRcdFx0ZGV0YWlsc1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHRnZXRJc3N1ZXMoKTogYW55W10ge1xuXHRcdFx0cmV0dXJuIGlzc3Vlcztcblx0XHR9LFxuXHRcdGNoZWNrSWZJc3N1ZUV4aXN0cyhpc3N1ZUNhdGVnb3J5OiBJc3N1ZUNhdGVnb3J5LCBpc3N1ZVNldmVyaXR5OiBJc3N1ZVNldmVyaXR5LCBkZXRhaWxzOiBzdHJpbmcpOiBib29sZWFuIHtcblx0XHRcdHJldHVybiBpc3N1ZXMuZmluZCgoaXNzdWUpID0+IHtcblx0XHRcdFx0cmV0dXJuIGlzc3VlLmlzc3VlQ2F0ZWdvcnkgPT09IGlzc3VlQ2F0ZWdvcnkgJiYgaXNzdWUuaXNzdWVTZXZlcml0eSA9PT0gaXNzdWVTZXZlcml0eSAmJiBpc3N1ZS5kZXRhaWxzID09PSBkZXRhaWxzO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENvbnZlcnRlckNvbnRleHRGb3JUZXN0ID0gZnVuY3Rpb24gKFxuXHRjb252ZXJ0ZWRUeXBlczogQ29udmVydGVkTWV0YWRhdGEsXG5cdG1hbmlmZXN0U2V0dGluZ3M6IExpc3RSZXBvcnRNYW5pZmVzdFNldHRpbmdzIHwgT2JqZWN0UGFnZU1hbmlmZXN0U2V0dGluZ3Ncbikge1xuXHRjb25zdCBlbnRpdHlTZXQgPSBjb252ZXJ0ZWRUeXBlcy5lbnRpdHlTZXRzLmZpbmQoKGVzKSA9PiBlcy5uYW1lID09PSBtYW5pZmVzdFNldHRpbmdzLmVudGl0eVNldCk7XG5cdGNvbnN0IGRhdGFNb2RlbFBhdGggPSBnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkoZW50aXR5U2V0IGFzIEVudGl0eVNldCwgY29udmVydGVkVHlwZXMsIGVudGl0eVNldCk7XG5cdHJldHVybiBuZXcgQ29udmVydGVyQ29udGV4dChjb252ZXJ0ZWRUeXBlcywgbWFuaWZlc3RTZXR0aW5ncywgZ2V0RmFrZURpYWdub3N0aWNzKCksIG1lcmdlLCBkYXRhTW9kZWxQYXRoKTtcbn07XG5jb25zdCBtZXRhTW9kZWxDYWNoZTogYW55ID0ge307XG5leHBvcnQgY29uc3QgZ2V0TWV0YU1vZGVsID0gYXN5bmMgZnVuY3Rpb24gKHNNZXRhZGF0YVVybDogc3RyaW5nKSB7XG5cdGNvbnN0IG9SZXF1ZXN0b3IgPSBfTWV0YWRhdGFSZXF1ZXN0b3IuY3JlYXRlKHt9LCBcIjQuMFwiLCB1bmRlZmluZWQsIHt9KTtcblx0aWYgKCFtZXRhTW9kZWxDYWNoZVtzTWV0YWRhdGFVcmxdKSB7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG5ldyAoT0RhdGFNZXRhTW9kZWwgYXMgYW55KShvUmVxdWVzdG9yLCBzTWV0YWRhdGFVcmwsIHVuZGVmaW5lZCwgbnVsbCk7XG5cdFx0YXdhaXQgb01ldGFNb2RlbC5mZXRjaEVudGl0eUNvbnRhaW5lcigpO1xuXHRcdG1ldGFNb2RlbENhY2hlW3NNZXRhZGF0YVVybF0gPSBvTWV0YU1vZGVsO1xuXHR9XG5cblx0cmV0dXJuIG1ldGFNb2RlbENhY2hlW3NNZXRhZGF0YVVybF07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5ID0gZnVuY3Rpb24gKFxuXHRlbnRpdHlTZXQ6IEVudGl0eVNldCxcblx0Y29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhLFxuXHRwcm9wZXJ0eT86IFByb3BlcnR5IHwgRW50aXR5U2V0IHwgQW55QW5ub3RhdGlvblxuKTogRGF0YU1vZGVsT2JqZWN0UGF0aCB7XG5cdGNvbnN0IHRhcmdldFBhdGg6IERhdGFNb2RlbE9iamVjdFBhdGggPSB7XG5cdFx0c3RhcnRpbmdFbnRpdHlTZXQ6IGVudGl0eVNldCxcblx0XHRuYXZpZ2F0aW9uUHJvcGVydGllczogW10sXG5cdFx0dGFyZ2V0T2JqZWN0OiBwcm9wZXJ0eSxcblx0XHR0YXJnZXRFbnRpdHlTZXQ6IGVudGl0eVNldCxcblx0XHR0YXJnZXRFbnRpdHlUeXBlOiBlbnRpdHlTZXQuZW50aXR5VHlwZSxcblx0XHRjb252ZXJ0ZWRUeXBlczogY29udmVydGVkVHlwZXNcblx0fTtcblx0dGFyZ2V0UGF0aC5jb250ZXh0TG9jYXRpb24gPSB0YXJnZXRQYXRoO1xuXHRyZXR1cm4gdGFyZ2V0UGF0aDtcbn07XG5cbmV4cG9ydCBjb25zdCBldmFsdWF0ZUJpbmRpbmcgPSBmdW5jdGlvbiAoYmluZGluZ1N0cmluZzogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuXHRjb25zdCBiaW5kaW5nRWxlbWVudCA9IEJpbmRpbmdQYXJzZXIuY29tcGxleFBhcnNlcihiaW5kaW5nU3RyaW5nKTtcblx0cmV0dXJuIGJpbmRpbmdFbGVtZW50LmZvcm1hdHRlci5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xufTtcblxudHlwZSBNb2RlbENvbnRlbnQgPSB7XG5cdFtuYW1lOiBzdHJpbmddOiBhbnk7XG59O1xuXG4vKipcbiAqIEV2YWx1YXRlIGEgYmluZGluZyBhZ2FpbnN0IGEgbW9kZWwuXG4gKlxuICogQHBhcmFtIGJpbmRpbmdTdHJpbmcgVGhlIGJpbmRpbmcgc3RyaW5nLlxuICogQHBhcmFtIG1vZGVsQ29udGVudCBDb250ZW50IG9mIHRoZSBkZWZhdWx0IG1vZGVsIHRvIHVzZSBmb3IgZXZhbHVhdGlvbi5cbiAqIEBwYXJhbSBuYW1lZE1vZGVsc0NvbnRlbnQgQ29udGVudHMgb2YgYWRkaXRpb25hbCwgbmFtZWQgbW9kZWxzIHRvIHVzZS5cbiAqIEByZXR1cm5zIFRoZSBldmFsdWF0ZWQgYmluZGluZy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGV2YWx1YXRlQmluZGluZ1dpdGhNb2RlbChcblx0YmluZGluZ1N0cmluZzogc3RyaW5nIHwgdW5kZWZpbmVkLFxuXHRtb2RlbENvbnRlbnQ6IE1vZGVsQ29udGVudCxcblx0bmFtZWRNb2RlbHNDb250ZW50PzogeyBbbW9kZWxOYW1lOiBzdHJpbmddOiBNb2RlbENvbnRlbnQgfVxuKTogc3RyaW5nIHtcblx0Y29uc3QgYmluZGluZ0VsZW1lbnQgPSBCaW5kaW5nUGFyc2VyLmNvbXBsZXhQYXJzZXIoYmluZGluZ1N0cmluZyk7XG5cdGNvbnN0IHRleHQgPSBuZXcgSW52aXNpYmxlVGV4dCgpO1xuXHR0ZXh0LmJpbmRQcm9wZXJ0eShcInRleHRcIiwgYmluZGluZ0VsZW1lbnQpO1xuXG5cdGNvbnN0IGRlZmF1bHRNb2RlbCA9IG5ldyBKU09OTW9kZWwobW9kZWxDb250ZW50KTtcblx0dGV4dC5zZXRNb2RlbChkZWZhdWx0TW9kZWwpO1xuXHR0ZXh0LnNldEJpbmRpbmdDb250ZXh0KGRlZmF1bHRNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIikpO1xuXG5cdGlmIChuYW1lZE1vZGVsc0NvbnRlbnQpIHtcblx0XHRmb3IgKGNvbnN0IFtuYW1lLCBjb250ZW50XSBvZiBPYmplY3QuZW50cmllcyhuYW1lZE1vZGVsc0NvbnRlbnQpKSB7XG5cdFx0XHRjb25zdCBtb2RlbCA9IG5ldyBKU09OTW9kZWwoY29udGVudCk7XG5cdFx0XHR0ZXh0LnNldE1vZGVsKG1vZGVsLCBuYW1lKTtcblx0XHRcdHRleHQuc2V0QmluZGluZ0NvbnRleHQobW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpLCBuYW1lKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gdGV4dC5nZXRUZXh0KCk7XG59XG5cbmNvbnN0IFRFU1RWSUVXSUQgPSBcInRlc3RWaWV3SWRcIjtcblxuY29uc3QgYXBwbHlGbGV4Q2hhbmdlcyA9IGFzeW5jIGZ1bmN0aW9uIChmbGV4Q2hhbmdlczogeyBbeDogc3RyaW5nXTogb2JqZWN0W10gfSwgb01ldGFNb2RlbDogTWV0YU1vZGVsLCByZXN1bHRYTUw6IGFueSkge1xuXHQvLyBwcmVmaXggSWRzXG5cdFsuLi5yZXN1bHRYTUwucXVlcnlTZWxlY3RvckFsbChcIltpZF1cIildLmZvckVhY2goKG5vZGUpID0+IHtcblx0XHRub2RlLmlkID0gYCR7VEVTVFZJRVdJRH0tLSR7bm9kZS5pZH1gO1xuXHR9KTtcblx0Y29uc3QgY2hhbmdlcyA9IGNyZWF0ZUZsZXhpYmlsaXR5Q2hhbmdlc09iamVjdChURVNUVklFV0lELCBmbGV4Q2hhbmdlcyk7XG5cdGNvbnN0IGFwcElkID0gXCJzb21lQ29tcG9uZW50XCI7XG5cdGNvbnN0IG9NYW5pZmVzdCA9IHtcblx0XHRcInNhcC5hcHBcIjoge1xuXHRcdFx0aWQ6IGFwcElkLFxuXHRcdFx0dHlwZTogXCJhcHBsaWNhdGlvblwiLFxuXHRcdFx0Y3Jvc3NOYXZpZ2F0aW9uOiB7XG5cdFx0XHRcdG91dGJvdW5kczogW11cblx0XHRcdH1cblx0XHR9XG5cdH07XG5cdGNvbnN0IG9BcHBDb21wb25lbnQ6IEFwcENvbXBvbmVudCA9IHtcblx0XHRnZXREaWFnbm9zdGljczogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZShnZXRGYWtlRGlhZ25vc3RpY3MoKSksXG5cdFx0Z2V0TW9kZWw6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xuXHRcdFx0Z2V0TWV0YU1vZGVsOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKG9NZXRhTW9kZWwpXG5cdFx0fSksXG5cdFx0Z2V0Q29tcG9uZW50RGF0YTogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7fSksXG5cdFx0Z2V0TWFuaWZlc3RPYmplY3Q6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUoe1xuXHRcdFx0Z2V0RW50cnk6IGZ1bmN0aW9uIChuYW1lOiBzdHJpbmcpIHtcblx0XHRcdFx0cmV0dXJuIChvTWFuaWZlc3QgYXMgYW55KVtuYW1lXTtcblx0XHRcdH1cblx0XHR9KSxcblx0XHRnZXRMb2NhbElkOiBqZXN0LmZuKChzSWQpID0+IHNJZClcblx0fSBhcyB1bmtub3duIGFzIEFwcENvbXBvbmVudDtcblx0Ly9mYWtlIGNoYW5nZXNcblx0amVzdC5zcHlPbihBcHBTdG9yYWdlLCBcImxvYWRGbGV4RGF0YVwiKS5tb2NrUmV0dXJuVmFsdWUoUHJvbWlzZS5yZXNvbHZlKGNoYW5nZXMpKTtcblx0amVzdC5zcHlPbihMb2FkZXIsIFwibG9hZEZsZXhEYXRhXCIpLm1vY2tSZXR1cm5WYWx1ZShQcm9taXNlLnJlc29sdmUoY2hhbmdlcykpO1xuXG5cdGplc3Quc3B5T24oQ29tcG9uZW50LCBcImdldFwiKS5tb2NrUmV0dXJuVmFsdWUob0FwcENvbXBvbmVudCk7XG5cdGplc3Quc3B5T24oQ29tcG9uZW50IGFzIHVua25vd24gYXMgeyBnZXRDb21wb25lbnRCeUlkOiAoKSA9PiBBcHBDb21wb25lbnQgfSwgXCJnZXRDb21wb25lbnRCeUlkXCIpLm1vY2tSZXR1cm5WYWx1ZShvQXBwQ29tcG9uZW50KTtcblx0amVzdC5zcHlPbihVdGlscywgXCJnZXRBcHBDb21wb25lbnRGb3JDb250cm9sXCIpLm1vY2tSZXR1cm5WYWx1ZShvQXBwQ29tcG9uZW50KTtcblx0YXdhaXQgRmxleFN0YXRlLmluaXRpYWxpemUoe1xuXHRcdGNvbXBvbmVudElkOiBhcHBJZFxuXHR9KTtcblx0cmVzdWx0WE1MID0gYXdhaXQgWG1sUHJlcHJvY2Vzc29yLnByb2Nlc3MocmVzdWx0WE1MLCB7IG5hbWU6IFwiVGVzdCBGcmFnbWVudFwiLCBjb21wb25lbnRJZDogYXBwSWQsIGlkOiBURVNUVklFV0lEIH0pO1xuXG5cdC8vQXNzZXJ0IHRoYXQgYWxsIGNoYW5nZXMgaGF2ZSBiZWVuIGFwcGxpZWRcblx0Y29uc3QgY2hhbmdlc0FwcGxpZWQgPSBnZXRDaGFuZ2VzRnJvbVhNTChyZXN1bHRYTUwpO1xuXHRleHBlY3QoY2hhbmdlc0FwcGxpZWQubGVuZ3RoKS50b0JlKGZsZXhDaGFuZ2VzPy5jaGFuZ2VzPy5sZW5ndGggPz8gMCArIGZsZXhDaGFuZ2VzPy52YXJpYW50RGVwZW5kZW50Q29udHJvbENoYW5nZXM/Lmxlbmd0aCA/PyAwKTtcblx0cmV0dXJuIHJlc3VsdFhNTDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDaGFuZ2VzRnJvbVhNTCA9ICh4bWw6IGFueSkgPT5cblx0Wy4uLnhtbC5xdWVyeVNlbGVjdG9yQWxsKFwiKlwiKV1cblx0XHQuZmxhdE1hcCgoZSkgPT4gWy4uLmUuYXR0cmlidXRlc10ubWFwKChhKSA9PiBhLm5hbWUpKVxuXHRcdC5maWx0ZXIoKGF0dHIpID0+IGF0dHIuaW5jbHVkZXMoXCJzYXAudWkuZmwuYXBwbGllZENoYW5nZXNcIikpO1xuXG5leHBvcnQgY29uc3QgZ2V0VGVtcGxhdGluZ1Jlc3VsdCA9IGFzeW5jIGZ1bmN0aW9uIChcblx0eG1sSW5wdXQ6IHN0cmluZyxcblx0c01ldGFkYXRhVXJsOiBzdHJpbmcsXG5cdG1CaW5kaW5nQ29udGV4dHM6IHsgW3g6IHN0cmluZ106IGFueTsgZW50aXR5U2V0Pzogc3RyaW5nIH0sXG5cdG1Nb2RlbHM6IHsgW3g6IHN0cmluZ106IGFueSB9LFxuXHRmbGV4Q2hhbmdlcz86IHsgW3g6IHN0cmluZ106IG9iamVjdFtdIH0sXG5cdGZha2VTaWRlRWZmZWN0U2VydmljZT86IHVua25vd25cbikge1xuXHRpZiAoIW1Nb2RlbHNbXCJzYXAuZmUuaTE4blwiXSkge1xuXHRcdG1Nb2RlbHNbXCJzYXAuZmUuaTE4blwiXSA9IGNyZWF0ZU1vY2tSZXNvdXJjZU1vZGVsKCk7XG5cdH1cblxuXHRjb25zdCB0ZW1wbGF0ZWRYbWwgPSBgPHJvb3Q+JHt4bWxJbnB1dH08L3Jvb3Q+YDtcblx0Y29uc3QgcGFyc2VyID0gbmV3IHdpbmRvdy5ET01QYXJzZXIoKTtcblx0Y29uc3QgeG1sRG9jID0gcGFyc2VyLnBhcnNlRnJvbVN0cmluZyh0ZW1wbGF0ZWRYbWwsIFwidGV4dC94bWxcIik7XG5cdC8vIFRvIGVuc3VyZSBvdXIgbWFjcm8gY2FuIHVzZSAjc2V0QmluZGluZ0NvbnRleHQgd2UgZW5zdXJlIHRoZXJlIGlzIGEgcHJlIGV4aXN0aW5nIEpTT05Nb2RlbCBmb3IgY29udmVydGVyQ29udGV4dFxuXHQvLyBpZiBub3QgYWxyZWFkeSBwYXNzZWQgdG8gdGVoIHRlbXBsYXRpbmdcblxuXHRjb25zdCBvTWV0YU1vZGVsID0gYXdhaXQgZ2V0TWV0YU1vZGVsKHNNZXRhZGF0YVVybCk7XG5cdGNvbnN0IG9QcmVwcm9jZXNzb3JTZXR0aW5ncyA9IGF3YWl0IF9idWlsZFByZVByb2Nlc3NvclNldHRpbmdzKHNNZXRhZGF0YVVybCwgbUJpbmRpbmdDb250ZXh0cywgbU1vZGVscywgZmFrZVNpZGVFZmZlY3RTZXJ2aWNlKTtcblxuXHQvL1RoaXMgY29udGV4dCBmb3IgbWFjcm8gdGVzdGluZ1xuXHRpZiAob1ByZXByb2Nlc3NvclNldHRpbmdzLm1vZGVsc1tcInRoaXNcIl0pIHtcblx0XHRvUHJlcHJvY2Vzc29yU2V0dGluZ3MuYmluZGluZ0NvbnRleHRzW1widGhpc1wiXSA9IG9QcmVwcm9jZXNzb3JTZXR0aW5ncy5tb2RlbHNbXCJ0aGlzXCJdLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKTtcblx0fVxuXG5cdGxldCByZXN1bHRYTUwgPSAoYXdhaXQgWE1MUHJlcHJvY2Vzc29yLnByb2Nlc3MoeG1sRG9jLmZpcnN0RWxlbWVudENoaWxkISwgeyBuYW1lOiBcIlRlc3QgRnJhZ21lbnRcIiB9LCBvUHJlcHJvY2Vzc29yU2V0dGluZ3MpKSBhcyBhbnk7XG5cblx0aWYgKGZsZXhDaGFuZ2VzKSB7XG5cdFx0Ly8gYXBwbHkgZmxleCBjaGFuZ2VzXG5cdFx0cmVzdWx0WE1MID0gYXdhaXQgYXBwbHlGbGV4Q2hhbmdlcyhmbGV4Q2hhbmdlcywgb01ldGFNb2RlbCwgcmVzdWx0WE1MKTtcblx0fVxuXHRyZXR1cm4gcmVzdWx0WE1MO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRlbXBsYXRlZFhNTCA9IGFzeW5jIGZ1bmN0aW9uIChcblx0eG1sSW5wdXQ6IHN0cmluZyxcblx0c01ldGFkYXRhVXJsOiBzdHJpbmcsXG5cdG1CaW5kaW5nQ29udGV4dHM6IHsgW3g6IHN0cmluZ106IHN0cmluZyB9LFxuXHRtTW9kZWxzOiB7IFt4OiBzdHJpbmddOiBhbnkgfSxcblx0ZmxleENoYW5nZXM/OiB7IFt4OiBzdHJpbmddOiBvYmplY3RbXSB9LFxuXHRmYWtlU2lkZUVmZmVjdFNlcnZpY2U/OiB1bmtub3duXG4pIHtcblx0Y29uc3QgdGVtcGxhdGVkWE1MID0gYXdhaXQgZ2V0VGVtcGxhdGluZ1Jlc3VsdCh4bWxJbnB1dCwgc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCBtTW9kZWxzLCBmbGV4Q2hhbmdlcywgZmFrZVNpZGVFZmZlY3RTZXJ2aWNlKTtcblx0Y29uc3Qgc2VyaWFsaWVkWE1MID0gc2VyaWFsaXplWE1MKHRlbXBsYXRlZFhNTCk7XG5cdGV4cGVjdChzZXJpYWxpZWRYTUwpLm5vdC50b0hhdmVUZW1wbGF0aW5nRXJyb3JzKCk7XG5cdHJldHVybiBzZXJpYWxpZWRYTUw7XG59O1xuXG4vKipcbiAqIFByb2Nlc3MgdGhlIHJlcXVlc3RlZCB2aWV3IHdpdGggdGhlIHByb3ZpZGVkIGRhdGEuXG4gKlxuICogQHBhcmFtIG5hbWUgRnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIHZpZXcgdG8gYmUgdGVzdGVkLlxuICogQHBhcmFtIHNNZXRhZGF0YVVybCBVcmwgb2YgdGhlIG1ldGFkYXRhLlxuICogQHBhcmFtIG1CaW5kaW5nQ29udGV4dHMgTWFwIG9mIHRoZSBiaW5kaW5nQ29udGV4dHMgdG8gc2V0IG9uIHRoZSBtb2RlbHMuXG4gKiBAcGFyYW0gbU1vZGVscyBNYXAgb2YgdGhlIG1vZGVscy5cbiAqIEBwYXJhbSBmbGV4Q2hhbmdlcyBPYmplY3Qgd2l0aCBVSSBjaGFuZ2VzIGxpa2UgJ2NoYW5nZXMnIG9yICd2YXJpYW50RGVwZW5kZW50Q29udHJvbENoYW5nZXMnXG4gKiBAcmV0dXJucyBUZW1wbGF0ZWQgdmlldyBhcyBzdHJpbmdcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NWaWV3KFxuXHRuYW1lOiBzdHJpbmcsXG5cdHNNZXRhZGF0YVVybDogc3RyaW5nLFxuXHRtQmluZGluZ0NvbnRleHRzOiB7IFt4OiBzdHJpbmddOiBzdHJpbmcgfSxcblx0bU1vZGVsczogeyBbeDogc3RyaW5nXTogYW55IH0sXG5cdGZsZXhDaGFuZ2VzPzogeyBbeDogc3RyaW5nXTogb2JqZWN0W10gfVxuKTogUHJvbWlzZTxKZXN0VGVtcGxhdGVkVmlldz4ge1xuXHRjb25zdCBvTWV0YU1vZGVsID0gYXdhaXQgZ2V0TWV0YU1vZGVsKHNNZXRhZGF0YVVybCk7XG5cdGNvbnN0IG9WaWV3RG9jdW1lbnQgPSBfbG9hZFJlc291cmNlVmlldyhuYW1lKTtcblx0Y29uc3Qgb1ByZXByb2Nlc3NvclNldHRpbmdzID0gYXdhaXQgX2J1aWxkUHJlUHJvY2Vzc29yU2V0dGluZ3Moc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCBtTW9kZWxzKTtcblx0bGV0IG9QcmVwcm9jZXNzZWRWaWV3ID0gYXdhaXQgWE1MUHJlcHJvY2Vzc29yLnByb2Nlc3Mob1ZpZXdEb2N1bWVudCwgeyBuYW1lOiBuYW1lIH0sIG9QcmVwcm9jZXNzb3JTZXR0aW5ncyk7XG5cdGlmIChmbGV4Q2hhbmdlcykge1xuXHRcdG9QcmVwcm9jZXNzZWRWaWV3ID0gYXdhaXQgYXBwbHlGbGV4Q2hhbmdlcyhmbGV4Q2hhbmdlcyA/PyBbXSwgb01ldGFNb2RlbCwgb1ByZXByb2Nlc3NlZFZpZXcpO1xuXHR9XG5cdHJldHVybiB7XG5cdFx0YXNFbGVtZW50OiBvUHJlcHJvY2Vzc2VkVmlldyxcblx0XHRhc1N0cmluZzogZm9ybWF0WE1MKG9QcmVwcm9jZXNzZWRWaWV3Py5vdXRlckhUTUwgfHwgXCJcIilcblx0fTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzIHRoZSByZXF1ZXN0ZWQgWE1MIGZyYWdtZW50IHdpdGggdGhlIHByb3ZpZGVkIGRhdGEuXG4gKlxuICogQHBhcmFtIG5hbWUgRnVsbHkgcXVhbGlmaWVkIG5hbWUgb2YgdGhlIGZyYWdtZW50IHRvIGJlIHRlc3RlZC5cbiAqIEBwYXJhbSB0ZXN0RGF0YSBUZXN0IGRhdGEgY29uc2lzdGluZ1xuICogQHJldHVybnMgVGVtcGxhdGVkIGZyYWdtZW50IGFzIHN0cmluZ1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc0ZyYWdtZW50KG5hbWU6IHN0cmluZywgdGVzdERhdGE6IHsgW21vZGVsOiBzdHJpbmddOiBvYmplY3QgfSk6IFByb21pc2U8c3RyaW5nPiB7XG5cdGNvbnN0IGlucHV0WG1sID0gYDxyb290Pjxjb3JlOkZyYWdtZW50IGZyYWdtZW50TmFtZT1cIiR7bmFtZX1cIiB0eXBlPVwiWE1MXCIgeG1sbnM6Y29yZT1cInNhcC51aS5jb3JlXCIgLz48L3Jvb3Q+YDtcblx0Y29uc3QgcGFyc2VyID0gbmV3IHdpbmRvdy5ET01QYXJzZXIoKTtcblx0Y29uc3QgaW5wdXREb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKGlucHV0WG1sLCBcInRleHQveG1sXCIpO1xuXG5cdC8vIGJ1aWxkIG1vZGVsIGFuZCBiaW5kaW5ncyBmb3IgZ2l2ZW4gdGVzdCBkYXRhXG5cdGNvbnN0IHNldHRpbmdzID0ge1xuXHRcdG1vZGVsczoge30gYXMgeyBbbmFtZTogc3RyaW5nXTogSlNPTk1vZGVsIH0sXG5cdFx0YmluZGluZ0NvbnRleHRzOiB7fSBhcyB7IFtuYW1lOiBzdHJpbmddOiBvYmplY3QgfSxcblx0XHRhcHBDb21wb25lbnQ6IHsgZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlOiBqZXN0LmZuKCksIGdldERpYWdub3N0aWNzOiAoKSA9PiB1bmRlZmluZWQgfVxuXHR9O1xuXHRmb3IgKGNvbnN0IG1vZGVsIGluIHRlc3REYXRhKSB7XG5cdFx0Y29uc3QganNvbk1vZGVsID0gbmV3IEpTT05Nb2RlbCgpO1xuXHRcdGpzb25Nb2RlbC5zZXREYXRhKHRlc3REYXRhW21vZGVsXSk7XG5cdFx0c2V0dGluZ3MubW9kZWxzW21vZGVsXSA9IGpzb25Nb2RlbDtcblx0XHRzZXR0aW5ncy5iaW5kaW5nQ29udGV4dHNbbW9kZWxdID0gc2V0dGluZ3MubW9kZWxzW21vZGVsXS5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIik7XG5cdH1cblx0c2V0dGluZ3MuYXBwQ29tcG9uZW50LmdldFNpZGVFZmZlY3RzU2VydmljZS5tb2NrUmV0dXJuVmFsdWUoZGVmYXVsdEZha2VTaWRlRWZmZWN0U2VydmljZSk7XG5cblx0Ly8gZXhlY3V0ZSB0aGUgcHJlLXByb2Nlc3NvclxuXHRjb25zdCByZXN1bHREb2MgPSBhd2FpdCBYTUxQcmVwcm9jZXNzb3IucHJvY2VzcyhpbnB1dERvYy5maXJzdEVsZW1lbnRDaGlsZCwgeyBuYW1lIH0sIHNldHRpbmdzKTtcblxuXHQvLyBleGNsdWRlIG5lc3RlZCBmcmFnbWVudHMgZnJvbSB0ZXN0IHNuYXBzaG90c1xuXHRjb25zdCBmcmFnbWVudHMgPSByZXN1bHREb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJjb3JlOkZyYWdtZW50XCIpIGFzIGFueTtcblx0aWYgKGZyYWdtZW50cz8ubGVuZ3RoID4gMCkge1xuXHRcdGZvciAoY29uc3QgZnJhZ21lbnQgb2YgZnJhZ21lbnRzKSB7XG5cdFx0XHRmcmFnbWVudC5pbm5lckhUTUwgPSBcIlwiO1xuXHRcdH1cblx0fVxuXG5cdC8vIEtlZXAgdGhlIGZyYWdtZW50IHJlc3VsdCBhcyBjaGlsZCBvZiByb290IG5vZGUgd2hlbiBmcmFnbWVudCBnZW5lcmF0ZXMgbXVsdGlwbGUgcm9vdCBjb250cm9sc1xuXHRjb25zdCB4bWxSZXN1bHQgPSByZXN1bHREb2MuY2hpbGRyZW4ubGVuZ3RoID4gMSA/IHJlc3VsdERvYy5vdXRlckhUTUwgOiByZXN1bHREb2MuaW5uZXJIVE1MO1xuXG5cdHJldHVybiBmb3JtYXRYTUwoeG1sUmVzdWx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNlcmlhbGl6ZUNvbnRyb2woY29udHJvbFRvU2VyaWFsaXplOiBVSTVFbGVtZW50IHwgVUk1RWxlbWVudFtdKSB7XG5cdGxldCB0YWJDb3VudCA9IDA7XG5cdGZ1bmN0aW9uIGdldFRhYih0b0FkZDogbnVtYmVyID0gMCkge1xuXHRcdGxldCB0YWIgPSBcIlwiO1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGFiQ291bnQgKyB0b0FkZDsgaSsrKSB7XG5cdFx0XHR0YWIgKz0gXCJcXHRcIjtcblx0XHR9XG5cdFx0cmV0dXJuIHRhYjtcblx0fVxuXHRjb25zdCBzZXJpYWxpemVEZWxlZ2F0ZSA9IHtcblx0XHRzdGFydDogZnVuY3Rpb24gKGNvbnRyb2w6IGFueSwgc0FnZ3JlZ2F0aW9uTmFtZTogc3RyaW5nKSB7XG5cdFx0XHRsZXQgY29udHJvbERldGFpbCA9IFwiXCI7XG5cdFx0XHRpZiAoc0FnZ3JlZ2F0aW9uTmFtZSkge1xuXHRcdFx0XHRpZiAoY29udHJvbC5nZXRQYXJlbnQoKSkge1xuXHRcdFx0XHRcdGNvbnN0IGluZGV4SW5QYXJlbnQgPSAoY29udHJvbC5nZXRQYXJlbnQoKS5nZXRBZ2dyZWdhdGlvbihzQWdncmVnYXRpb25OYW1lKSBhcyBNYW5hZ2VkT2JqZWN0W10pPy5pbmRleE9mPy4oY29udHJvbCk7XG5cdFx0XHRcdFx0aWYgKGluZGV4SW5QYXJlbnQgPiAwKSB7XG5cdFx0XHRcdFx0XHRjb250cm9sRGV0YWlsICs9IGAsXFxuJHtnZXRUYWIoKX1gO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0Y29udHJvbERldGFpbCArPSBgJHtjb250cm9sLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpfShgO1xuXHRcdFx0cmV0dXJuIGNvbnRyb2xEZXRhaWw7XG5cdFx0fSxcblx0XHRlbmQ6IGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBcIn0pXCI7XG5cdFx0fSxcblx0XHRtaWRkbGU6IGZ1bmN0aW9uIChjb250cm9sOiBhbnkpIHtcblx0XHRcdGNvbnN0IGlkID0gY29udHJvbC5nZXRJZCgpO1xuXHRcdFx0bGV0IGRhdGEgPSBge2lkOiAke01hbmFnZWRPYmplY3RNZXRhZGF0YS5pc0dlbmVyYXRlZElkKGlkKSA/IFwiX19keW5hbWljSWRcIiA6IGlkfWA7XG5cdFx0XHRmb3IgKGNvbnN0IG9Db250cm9sS2V5IGluIGNvbnRyb2wubVByb3BlcnRpZXMpIHtcblx0XHRcdFx0aWYgKGNvbnRyb2wubVByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkob0NvbnRyb2xLZXkpKSB7XG5cdFx0XHRcdFx0ZGF0YSArPSBgLFxcbiR7Z2V0VGFiKCl9ICR7b0NvbnRyb2xLZXl9OiAke2NvbnRyb2wubVByb3BlcnRpZXNbb0NvbnRyb2xLZXldfWA7XG5cdFx0XHRcdH0gZWxzZSBpZiAoY29udHJvbC5tQmluZGluZ0luZm9zLmhhc093blByb3BlcnR5KG9Db250cm9sS2V5KSkge1xuXHRcdFx0XHRcdGNvbnN0IGJpbmRpbmdEZXRhaWwgPSBjb250cm9sLm1CaW5kaW5nSW5mb3Nbb0NvbnRyb2xLZXldO1xuXHRcdFx0XHRcdGRhdGEgKz0gYCxcXG4ke2dldFRhYigpfSAke29Db250cm9sS2V5fTogJHtKU09OLnN0cmluZ2lmeShiaW5kaW5nRGV0YWlsKX1gO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGNvbnN0IG9Db250cm9sS2V5IGluIGNvbnRyb2wubUFzc29jaWF0aW9ucykge1xuXHRcdFx0XHRpZiAoY29udHJvbC5tQXNzb2NpYXRpb25zLmhhc093blByb3BlcnR5KG9Db250cm9sS2V5KSkge1xuXHRcdFx0XHRcdGRhdGEgKz0gYCxcXG4ke2dldFRhYigpfSAke29Db250cm9sS2V5fTogJHtcblx0XHRcdFx0XHRcdChjb250cm9sLm1Bc3NvY2lhdGlvbnNbb0NvbnRyb2xLZXldPy5qb2luPy4oXCIsXCIpID8/IGNvbnRyb2wubUFzc29jaWF0aW9uc1tvQ29udHJvbEtleV0pIHx8IHVuZGVmaW5lZFxuXHRcdFx0XHRcdH1gO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRmb3IgKGNvbnN0IG9Db250cm9sS2V5IGluIGNvbnRyb2wubUV2ZW50UmVnaXN0cnkpIHtcblx0XHRcdFx0aWYgKGNvbnRyb2wubUV2ZW50UmVnaXN0cnkuaGFzT3duUHJvcGVydHkob0NvbnRyb2xLZXkpKSB7XG5cdFx0XHRcdFx0ZGF0YSArPSBgLFxcbiR7Z2V0VGFiKCl9ICR7b0NvbnRyb2xLZXl9OiB0cnVlfWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGRhdGEgKz0gYGA7XG5cdFx0XHRyZXR1cm4gZGF0YTtcblx0XHR9LFxuXHRcdHN0YXJ0QWdncmVnYXRpb246IGZ1bmN0aW9uIChjb250cm9sOiBhbnksIHNOYW1lOiBzdHJpbmcpIHtcblx0XHRcdGxldCBvdXQgPSBgLFxcbiR7Z2V0VGFiKCl9JHtzTmFtZX1gO1xuXHRcdFx0dGFiQ291bnQrKztcblxuXHRcdFx0aWYgKGNvbnRyb2wubUJpbmRpbmdJbmZvc1tzTmFtZV0pIHtcblx0XHRcdFx0b3V0ICs9IGA9eyBwYXRoOicke2NvbnRyb2wubUJpbmRpbmdJbmZvc1tzTmFtZV0ucGF0aH0nLCB0ZW1wbGF0ZTpcXG4ke2dldFRhYigpfWA7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRvdXQgKz0gYD1bXFxuJHtnZXRUYWIoKX1gO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIG91dDtcblx0XHR9LFxuXHRcdGVuZEFnZ3JlZ2F0aW9uOiBmdW5jdGlvbiAoY29udHJvbDogYW55LCBzTmFtZTogc3RyaW5nKSB7XG5cdFx0XHR0YWJDb3VudC0tO1xuXHRcdFx0aWYgKGNvbnRyb2wubUJpbmRpbmdJbmZvc1tzTmFtZV0pIHtcblx0XHRcdFx0cmV0dXJuIGBcXG4ke2dldFRhYigpfX1gO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0cmV0dXJuIGBcXG4ke2dldFRhYigpfV1gO1xuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0aWYgKEFycmF5LmlzQXJyYXkoY29udHJvbFRvU2VyaWFsaXplKSkge1xuXHRcdHJldHVybiBjb250cm9sVG9TZXJpYWxpemUubWFwKChjb250cm9sVG9SZW5kZXI6IFVJNUVsZW1lbnQpID0+IHtcblx0XHRcdHJldHVybiBuZXcgU2VyaWFsaXplcihjb250cm9sVG9SZW5kZXIsIHNlcmlhbGl6ZURlbGVnYXRlKS5zZXJpYWxpemUoKTtcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gbmV3IFNlcmlhbGl6ZXIoY29udHJvbFRvU2VyaWFsaXplLCBzZXJpYWxpemVEZWxlZ2F0ZSkuc2VyaWFsaXplKCk7XG5cdH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUF3YWl0ZXIoKSB7XG5cdGxldCBmblJlc29sdmUhOiBGdW5jdGlvbjtcblx0Y29uc3QgbXlQcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRmblJlc29sdmUgPSByZXNvbHZlO1xuXHR9KTtcblx0cmV0dXJuIHsgcHJvbWlzZTogbXlQcm9taXNlLCByZXNvbHZlOiBmblJlc29sdmUgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlckJ1aWxkaW5nQmxvY2tXaXRoTW9kZWxzKGJ1aWxkaW5nQmxvY2s6IHsgZ2V0Q29udGVudDogRnVuY3Rpb24gfSwgbW9kZWxzOiB7IFtrZXk6IHN0cmluZ106IE1vZGVsIH0pOiBDb250cm9sIHtcblx0cmV0dXJuIChNYW5hZ2VkT2JqZWN0IGFzIE1hbmFnZWRPYmplY3RFeCkucnVuV2l0aFByZXByb2Nlc3NvcnMoXG5cdFx0KCkgPT4ge1xuXHRcdFx0cmV0dXJuIGJ1aWxkaW5nQmxvY2suZ2V0Q29udGVudCgpO1xuXHRcdH0sXG5cdFx0e1xuXHRcdFx0c2V0dGluZ3M6IGZ1bmN0aW9uIChjb250cm9sU2V0dGluZ3M6IHsgbW9kZWxzOiB1bmtub3duIH0pIHtcblx0XHRcdFx0Y29udHJvbFNldHRpbmdzLm1vZGVscyA9IG1vZGVscztcblx0XHRcdFx0cmV0dXJuIGNvbnRyb2xTZXR0aW5ncztcblx0XHRcdH1cblx0XHR9XG5cdCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWdpc3Rlck1vY2tGcmFnbWVudHMoLi4uZnJhZ21lbnRzOiBNb2NrRnJhZ21lbnRbXSk6IGplc3QuU3B5SW5zdGFuY2Uge1xuXHQvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuXHRjb25zdCBvcmlnaW5hbExvYWRUZW1wbGF0ZSA9IChYTUxUZW1wbGF0ZVByb2Nlc3NvciBhcyBhbnkpLmxvYWRUZW1wbGF0ZVByb21pc2U7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cdGNvbnN0IGxvYWRUZW1wbGF0ZVN0dWIgPSBqZXN0LnNweU9uKFhNTFRlbXBsYXRlUHJvY2Vzc29yIGFzIGFueSwgXCJsb2FkVGVtcGxhdGVQcm9taXNlXCIpO1xuXHRsb2FkVGVtcGxhdGVTdHViLm1vY2tJbXBsZW1lbnRhdGlvbigoKHRlbXBsYXRlTmFtZTogc3RyaW5nLCBleHRlbnNpb246IHN0cmluZykgPT4ge1xuXHRcdGZvciAoY29uc3QgZnJhZ21lbnQgb2YgZnJhZ21lbnRzKSB7XG5cdFx0XHRpZiAoZnJhZ21lbnQubmFtZSA9PT0gdGVtcGxhdGVOYW1lKSB7XG5cdFx0XHRcdHJldHVybiBwYXJzZVhNTFN0cmluZyhmcmFnbWVudC5jb250ZW50KVswXTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIG9yaWdpbmFsTG9hZFRlbXBsYXRlKHRlbXBsYXRlTmFtZSwgZXh0ZW5zaW9uKTtcblx0fSkgYXMgKCgpID0+IEVsZW1lbnQpIHwgdW5kZWZpbmVkKTtcblx0cmV0dXJuIGxvYWRUZW1wbGF0ZVN0dWI7XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7OztFQStEQUEsR0FBRyxDQUFDQyxRQUFRLENBQUMsQ0FBQyxFQUFTLGtDQUFrQyxDQUFDO0VBQzFEQyxJQUFJLENBQUNDLFVBQVUsQ0FBQyxLQUFLLENBQUM7RUFFdEIsTUFBTUMsWUFBWSxHQUFHO0lBQ3BCQyxNQUFNLEVBQUUsZUFBZTtJQUN2QkMsS0FBSyxFQUFFLGVBQWU7SUFDdEJDLFVBQVUsRUFBRSxxQkFBcUI7SUFDakNDLFNBQVMsRUFBRSxrRUFBa0U7SUFDN0VDLEdBQUcsRUFBRSxrRUFBa0U7SUFDdkVDLFFBQVEsRUFBRSwwRUFBMEU7SUFDcEZDLE9BQU8sRUFBRSxzQkFBc0I7SUFDL0JDLFFBQVEsRUFBRSx3QkFBd0I7SUFDbENDLElBQUksRUFBRSxhQUFhO0lBQ25CQyxFQUFFLEVBQUUsV0FBVztJQUNmQyxDQUFDLEVBQUUsT0FB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
|
|
723
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMb2ciLCJzZXRMZXZlbCIsImplc3QiLCJzZXRUaW1lb3V0IiwibmFtZVNwYWNlTWFwIiwibWFjcm9zIiwibWFjcm8iLCJtYWNyb0ZpZWxkIiwibWFjcm9kYXRhIiwibG9nIiwidW5pdHRlc3QiLCJjb250cm9sIiwiY29udHJvbHMiLCJjb3JlIiwiZHQiLCJtIiwiZiIsImZsIiwiaW50ZXJuYWxNYWNybyIsIm1kYyIsIm1kY2F0IiwibWRjRmllbGQiLCJtZGNUYWJsZSIsInUiLCJtYWNyb01pY3JvQ2hhcnQiLCJtaWNyb0NoYXJ0IiwibWFjcm9UYWJsZSIsInNlbGVjdCIsInhwYXRoIiwidXNlTmFtZXNwYWNlcyIsImRlZmF1bHRGYWtlU2lkZUVmZmVjdFNlcnZpY2UiLCJjb21wdXRlRmllbGRHcm91cElkcyIsIl9nZXRUZW1wbGF0ZWRTZWxlY3RvciIsInhtbGRvbSIsInNlbGVjdG9yIiwicm9vdFBhdGgiLCJub2RlTmFtZSIsInN0YXJ0c1dpdGgiLCJfYnVpbGRQcmVQcm9jZXNzb3JTZXR0aW5ncyIsInNNZXRhZGF0YVVybCIsIm1CaW5kaW5nQ29udGV4dHMiLCJtTW9kZWxzIiwiZmFrZVNpZGVFZmZlY3RTZXJ2aWNlIiwib01ldGFNb2RlbCIsImdldE1ldGFNb2RlbCIsImhhc093blByb3BlcnR5IiwiT2JqZWN0IiwiYXNzaWduIiwiY29udmVydGVyQ29udGV4dCIsIlRlbXBsYXRlTW9kZWwiLCJrZXlzIiwiZm9yRWFjaCIsInNNb2RlbE5hbWUiLCJpc1RlbXBsYXRlTW9kZWwiLCJkYXRhIiwic2V0dGluZ3MiLCJtb2RlbHMiLCJtZXRhTW9kZWwiLCJiaW5kaW5nQ29udGV4dHMiLCJhcHBDb21wb25lbnQiLCJnZXRTaWRlRWZmZWN0c1NlcnZpY2UiLCJmbiIsImdldERpYWdub3N0aWNzIiwidW5kZWZpbmVkIiwibW9ja1JldHVyblZhbHVlIiwic0tleSIsImV4cGVjdCIsImdldE9iamVjdCIsInRvQmVEZWZpbmVkIiwib01vZGVsIiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJfbG9hZFJlc291cmNlVmlldyIsInZpZXdOYW1lIiwibmFtZSIsInJlcGxhY2UiLCJ2aWV3IiwiTG9hZGVyRXh0ZW5zaW9ucyIsImxvYWRSZXNvdXJjZSIsImRvY3VtZW50RWxlbWVudCIsInJ1blhQYXRoUXVlcnkiLCJleHRlbmQiLCJ0b0hhdmVDb250cm9sIiwibm9kZXMiLCJtZXNzYWdlIiwib3V0cHV0WG1sIiwic2VyaWFsaXplWE1MIiwicGFzcyIsImxlbmd0aCIsInRvTm90SGF2ZUNvbnRyb2wiLCJ0b0hhdmVUZW1wbGF0aW5nRXJyb3JzIiwieG1sIiwieG1sVGV4dCIsImJhc2U2NEVudHJpZXMiLCJtYXRjaCIsImVycm9yTWVzc2FnZXMiLCJtYXAiLCJhdG9iIiwic2xpY2UiLCJqb2luIiwiZm9ybWF0QnVpbGRpbmdCbG9ja1hNTCIsInhtbFN0cmluZyIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1hdFhNTCIsImdldENvbnRyb2xBdHRyaWJ1dGUiLCJjb250cm9sU2VsZWN0b3IiLCJhdHRyaWJ1dGVOYW1lIiwieG1sRG9tIiwic2VyaWFsaXplciIsIndpbmRvdyIsIlhNTFNlcmlhbGl6ZXIiLCJub2RlIiwic2VyaWFsaXplVG9TdHJpbmciLCJTVEFSVCIsIkVORCIsIlVJRCIsImxpbmVzIiwiY3VycmVudExpbmUiLCJsZXZlbCIsImF0dHJpYnV0ZXMiLCJuZXdsaW5lIiwicHVzaCIsInJlcGVhdCIsImFwcGVuZEF0dHJpYnV0ZXMiLCJyZXZlcnNlIiwiYXR0cmlidXRlIiwidmFsdWUiLCJhcHBlbmQiLCJwYXJzZXIiLCJyZWFkIiwiY3JlYXRlUGFyc2VyIiwib25PcGVuVGFnU3RhcnQiLCJvbk9wZW5UYWdOYW1lIiwib25BdHRyTmFtZSIsInVuc2hpZnQiLCJvbkF0dHJWYWx1ZSIsIm9uT3BlblRhZ0VuZCIsInNlbGZDbG9zZWQiLCJvbkNsb3NlVGFnU3RhcnQiLCJvbkNsb3NlVGFnTmFtZSIsIm9uQ2xvc2VUYWdFbmQiLCJwYXJzZSIsInRyaW0iLCJjb21waWxlQ0RTIiwiY2RzVXJsIiwib3B0aW9ucyIsImNkc1N0cmluZyIsImZzIiwicmVhZEZpbGVTeW5jIiwiZWRteENvbnRlbnQiLCJjZHMyZWRteCIsImRpciIsInBhdGgiLCJyZXNvbHZlIiwiYWxsT3B0aW9ucyIsImVudHJpZXMiLCJzb3J0IiwiYSIsImIiLCJsb2NhbGVDb21wYXJlIiwiZWRteEZpbGVOYW1lIiwicmVkdWNlIiwiZmlsZW5hbWUiLCJvcHRpb25LZXkiLCJvcHRpb25WYWx1ZSIsInRvU3RyaW5nIiwiYmFzZW5hbWUiLCJlZG14RmlsZVBhdGgiLCJta2RpclN5bmMiLCJyZWN1cnNpdmUiLCJ3cml0ZUZpbGVTeW5jIiwiY2RzIiwic2VydmljZSIsInNvdXJjZXMiLCJpbmNsdWRlcyIsInJlcXVpcmUiLCJjc24iLCJjb21waWxlciIsImNvbXBpbGVTb3VyY2VzIiwiZWRteE9wdGlvbnMiLCJvZGF0YUZvcmVpZ25LZXlzIiwib2RhdGFGb3JtYXQiLCJvZGF0YUNvbnRhaW5tZW50IiwiZWRteCIsInRvIiwiRXJyb3IiLCJnZXRGYWtlU2lkZUVmZmVjdHNTZXJ2aWNlIiwiY2xhc3NOYW1lT0RhdGFNb2RlbCIsInNjb3BlT2JqZWN0IiwiZ2V0TW9kZWwiLCJpc0EiLCJnZXRTZXJ2aWNlIiwiZ2V0Q2FwYWJpbGl0aWVzIiwic2VydmljZUluc3RhbmNlIiwiU2lkZUVmZmVjdHNGYWN0b3J5IiwiY3JlYXRlSW5zdGFuY2UiLCJzY29wZVR5cGUiLCJnZXRJbnRlcmZhY2UiLCJnZXRGYWtlRGlhZ25vc3RpY3MiLCJpc3N1ZXMiLCJhZGRJc3N1ZSIsImlzc3VlQ2F0ZWdvcnkiLCJpc3N1ZVNldmVyaXR5IiwiZGV0YWlscyIsImdldElzc3VlcyIsImNoZWNrSWZJc3N1ZUV4aXN0cyIsImZpbmQiLCJpc3N1ZSIsImdldENvbnZlcnRlckNvbnRleHRGb3JUZXN0IiwiY29udmVydGVkVHlwZXMiLCJtYW5pZmVzdFNldHRpbmdzIiwiZW50aXR5U2V0IiwiZW50aXR5U2V0cyIsImVzIiwiZGF0YU1vZGVsUGF0aCIsImdldERhdGFNb2RlbE9iamVjdFBhdGhGb3JQcm9wZXJ0eSIsIkNvbnZlcnRlckNvbnRleHQiLCJtZXJnZSIsIm1ldGFNb2RlbENhY2hlIiwib1JlcXVlc3RvciIsIl9NZXRhZGF0YVJlcXVlc3RvciIsImNyZWF0ZSIsIk9EYXRhTWV0YU1vZGVsIiwiX3JlcXVlc3RBbm5vdGF0aW9uQ2hhbmdlcyIsImZldGNoRW50aXR5Q29udGFpbmVyIiwicHJvcGVydHkiLCJ0YXJnZXRQYXRoIiwic3RhcnRpbmdFbnRpdHlTZXQiLCJuYXZpZ2F0aW9uUHJvcGVydGllcyIsInRhcmdldE9iamVjdCIsInRhcmdldEVudGl0eVNldCIsInRhcmdldEVudGl0eVR5cGUiLCJlbnRpdHlUeXBlIiwiY29udGV4dExvY2F0aW9uIiwiZXZhbHVhdGVCaW5kaW5nIiwiYmluZGluZ1N0cmluZyIsImJpbmRpbmdFbGVtZW50IiwiQmluZGluZ1BhcnNlciIsImNvbXBsZXhQYXJzZXIiLCJhcmdzIiwiZm9ybWF0dGVyIiwiYXBwbHkiLCJldmFsdWF0ZUJpbmRpbmdXaXRoTW9kZWwiLCJtb2RlbENvbnRlbnQiLCJuYW1lZE1vZGVsc0NvbnRlbnQiLCJ0ZXh0IiwiSW52aXNpYmxlVGV4dCIsImJpbmRQcm9wZXJ0eSIsImRlZmF1bHRNb2RlbCIsIkpTT05Nb2RlbCIsInNldE1vZGVsIiwic2V0QmluZGluZ0NvbnRleHQiLCJjb250ZW50IiwibW9kZWwiLCJnZXRUZXh0IiwiVEVTVFZJRVdJRCIsImFwcGx5RmxleENoYW5nZXMiLCJmbGV4Q2hhbmdlcyIsInJlc3VsdFhNTCIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJpZCIsImNoYW5nZXMiLCJjcmVhdGVGbGV4aWJpbGl0eUNoYW5nZXNPYmplY3QiLCJhcHBJZCIsIm9NYW5pZmVzdCIsInR5cGUiLCJjcm9zc05hdmlnYXRpb24iLCJvdXRib3VuZHMiLCJvQXBwQ29tcG9uZW50IiwiZ2V0Q29tcG9uZW50RGF0YSIsImdldE1hbmlmZXN0T2JqZWN0IiwiZ2V0RW50cnkiLCJnZXRMb2NhbElkIiwic0lkIiwic3B5T24iLCJBcHBTdG9yYWdlIiwiUHJvbWlzZSIsIkxvYWRlciIsIkNvbXBvbmVudCIsIlV0aWxzIiwiRmxleFN0YXRlIiwiaW5pdGlhbGl6ZSIsImNvbXBvbmVudElkIiwiWG1sUHJlcHJvY2Vzc29yIiwicHJvY2VzcyIsImNoYW5nZXNBcHBsaWVkIiwiZ2V0Q2hhbmdlc0Zyb21YTUwiLCJ0b0JlIiwidmFyaWFudERlcGVuZGVudENvbnRyb2xDaGFuZ2VzIiwiZmxhdE1hcCIsImUiLCJmaWx0ZXIiLCJhdHRyIiwiZ2V0VGVtcGxhdGluZ1Jlc3VsdCIsInhtbElucHV0IiwiY3JlYXRlTW9ja1Jlc291cmNlTW9kZWwiLCJ0ZW1wbGF0ZWRYbWwiLCJET01QYXJzZXIiLCJ4bWxEb2MiLCJwYXJzZUZyb21TdHJpbmciLCJvUHJlcHJvY2Vzc29yU2V0dGluZ3MiLCJYTUxQcmVwcm9jZXNzb3IiLCJmaXJzdEVsZW1lbnRDaGlsZCIsImdldFRlbXBsYXRlZFhNTCIsInRlbXBsYXRlZFhNTCIsInNlcmlhbGllZFhNTCIsIm5vdCIsInByb2Nlc3NWaWV3Iiwib1ZpZXdEb2N1bWVudCIsIm9QcmVwcm9jZXNzZWRWaWV3IiwiYXNFbGVtZW50IiwiYXNTdHJpbmciLCJvdXRlckhUTUwiLCJwcm9jZXNzRnJhZ21lbnQiLCJ0ZXN0RGF0YSIsImlucHV0WG1sIiwiaW5wdXREb2MiLCJqc29uTW9kZWwiLCJzZXREYXRhIiwicmVzdWx0RG9jIiwiZnJhZ21lbnRzIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJmcmFnbWVudCIsImlubmVySFRNTCIsInhtbFJlc3VsdCIsImNoaWxkcmVuIiwic2VyaWFsaXplQ29udHJvbCIsImNvbnRyb2xUb1NlcmlhbGl6ZSIsInRhYkNvdW50IiwiZ2V0VGFiIiwidG9BZGQiLCJ0YWIiLCJpIiwic2VyaWFsaXplRGVsZWdhdGUiLCJzdGFydCIsInNBZ2dyZWdhdGlvbk5hbWUiLCJjb250cm9sRGV0YWlsIiwiZ2V0UGFyZW50IiwiaW5kZXhJblBhcmVudCIsImdldEFnZ3JlZ2F0aW9uIiwiaW5kZXhPZiIsImdldE1ldGFkYXRhIiwiZ2V0TmFtZSIsImVuZCIsIm1pZGRsZSIsImdldElkIiwiTWFuYWdlZE9iamVjdE1ldGFkYXRhIiwiaXNHZW5lcmF0ZWRJZCIsIm9Db250cm9sS2V5IiwibVByb3BlcnRpZXMiLCJtQmluZGluZ0luZm9zIiwiYmluZGluZ0RldGFpbCIsIkpTT04iLCJzdHJpbmdpZnkiLCJtQXNzb2NpYXRpb25zIiwibUV2ZW50UmVnaXN0cnkiLCJzdGFydEFnZ3JlZ2F0aW9uIiwic05hbWUiLCJvdXQiLCJlbmRBZ2dyZWdhdGlvbiIsImNvbnRyb2xUb1JlbmRlciIsIlNlcmlhbGl6ZXIiLCJzZXJpYWxpemUiLCJjcmVhdGVBd2FpdGVyIiwiZm5SZXNvbHZlIiwibXlQcm9taXNlIiwicHJvbWlzZSIsInJlbmRlckJ1aWxkaW5nQmxvY2tXaXRoTW9kZWxzIiwiYnVpbGRpbmdCbG9jayIsIk1hbmFnZWRPYmplY3QiLCJydW5XaXRoUHJlcHJvY2Vzc29ycyIsImdldENvbnRlbnQiLCJjb250cm9sU2V0dGluZ3MiLCJyZWdpc3Rlck1vY2tGcmFnbWVudHMiLCJvcmlnaW5hbExvYWRUZW1wbGF0ZSIsIlhNTFRlbXBsYXRlUHJvY2Vzc29yIiwibG9hZFRlbXBsYXRlUHJvbWlzZSIsImxvYWRUZW1wbGF0ZVN0dWIiLCJtb2NrSW1wbGVtZW50YXRpb24iLCJ0ZW1wbGF0ZU5hbWUiLCJleHRlbnNpb24iLCJwYXJzZVhNTFN0cmluZyJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiSmVzdFRlbXBsYXRpbmdIZWxwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBbnlBbm5vdGF0aW9uLCBDb252ZXJ0ZWRNZXRhZGF0YSwgRW50aXR5U2V0LCBQcm9wZXJ0eSB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IGNvbXBpbGVyIGZyb20gXCJAc2FwL2Nkcy1jb21waWxlclwiO1xuaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgdHlwZSB7IFJhbmdlLCBSYW5nZXMgfSBmcm9tIFwiaHRtbGpzLXBhcnNlclwiO1xuaW1wb3J0IHsgY3JlYXRlUGFyc2VyIH0gZnJvbSBcImh0bWxqcy1wYXJzZXJcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IExvYWRlckV4dGVuc2lvbnMgZnJvbSBcInNhcC9iYXNlL3V0aWwvTG9hZGVyRXh0ZW5zaW9uc1wiO1xuaW1wb3J0IG1lcmdlIGZyb20gXCJzYXAvYmFzZS91dGlsL21lcmdlXCI7XG5pbXBvcnQgQXBwQ29tcG9uZW50IGZyb20gXCJzYXAvZmUvY29yZS9BcHBDb21wb25lbnRcIjtcbmltcG9ydCBUZW1wbGF0ZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZU1vZGVsXCI7XG5pbXBvcnQgeyBwYXJzZVhNTFN0cmluZyB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3JcIjtcbmltcG9ydCBDb252ZXJ0ZXJDb250ZXh0IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL0NvbnZlcnRlckNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgTGlzdFJlcG9ydE1hbmlmZXN0U2V0dGluZ3MsIE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWFuaWZlc3RTZXR0aW5nc1wiO1xuaW1wb3J0IHR5cGUgeyBJRGlhZ25vc3RpY3MgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9UZW1wbGF0ZUNvbnZlcnRlclwiO1xuaW1wb3J0IHR5cGUgeyBJc3N1ZUNhdGVnb3J5LCBJc3N1ZVNldmVyaXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvaGVscGVycy9Jc3N1ZU1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgU2lkZUVmZmVjdHNTZXJ2aWNlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCBTaWRlRWZmZWN0c0ZhY3RvcnkgZnJvbSBcInNhcC9mZS9jb3JlL3NlcnZpY2VzL1NpZGVFZmZlY3RzU2VydmljZUZhY3RvcnlcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGNyZWF0ZU1vY2tSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS90ZXN0L1VJNU1vY2tIZWxwZXJcIjtcbmltcG9ydCBCaW5kaW5nUGFyc2VyIGZyb20gXCJzYXAvdWkvYmFzZS9CaW5kaW5nUGFyc2VyXCI7XG5pbXBvcnQgTWFuYWdlZE9iamVjdCBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdFwiO1xuaW1wb3J0IE1hbmFnZWRPYmplY3RNZXRhZGF0YSBmcm9tIFwic2FwL3VpL2Jhc2UvTWFuYWdlZE9iamVjdE1ldGFkYXRhXCI7XG5pbXBvcnQgQ29tcG9uZW50IGZyb20gXCJzYXAvdWkvY29yZS9Db21wb25lbnRcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCBJbnZpc2libGVUZXh0IGZyb20gXCJzYXAvdWkvY29yZS9JbnZpc2libGVUZXh0XCI7XG5pbXBvcnQgWE1MVGVtcGxhdGVQcm9jZXNzb3IgZnJvbSBcInNhcC91aS9jb3JlL1hNTFRlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgWE1MUHJlcHJvY2Vzc29yIGZyb20gXCJzYXAvdWkvY29yZS91dGlsL1hNTFByZXByb2Nlc3NvclwiO1xuaW1wb3J0IFNlcmlhbGl6ZXIgZnJvbSBcInNhcC91aS9jb3JlL3V0aWwvc2VyaWFsaXplci9TZXJpYWxpemVyXCI7XG5pbXBvcnQgVXRpbHMgZnJvbSBcInNhcC91aS9mbC9VdGlsc1wiO1xuaW1wb3J0IEZsZXhTdGF0ZSBmcm9tIFwic2FwL3VpL2ZsL2FwcGx5L19pbnRlcm5hbC9mbGV4U3RhdGUvRmxleFN0YXRlXCI7XG5pbXBvcnQgTG9hZGVyIGZyb20gXCJzYXAvdWkvZmwvYXBwbHkvX2ludGVybmFsL2ZsZXhTdGF0ZS9Mb2FkZXJcIjtcbmltcG9ydCBYbWxQcmVwcm9jZXNzb3IgZnJvbSBcInNhcC91aS9mbC9hcHBseS9faW50ZXJuYWwvcHJlcHJvY2Vzc29ycy9YbWxQcmVwcm9jZXNzb3JcIjtcbmltcG9ydCBBcHBTdG9yYWdlIGZyb20gXCJzYXAvdWkvZmwvaW5pdGlhbC9faW50ZXJuYWwvU3RvcmFnZVwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL21kYy9Db250cm9sXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IE1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL01ldGFNb2RlbFwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuaW1wb3J0IEpTT05Nb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL2pzb24vSlNPTk1vZGVsXCI7XG5pbXBvcnQgT0RhdGFNZXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1ldGFNb2RlbFwiO1xuaW1wb3J0IF9NZXRhZGF0YVJlcXVlc3RvciBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L2xpYi9fTWV0YWRhdGFSZXF1ZXN0b3JcIjtcbmltcG9ydCB4cGF0aCBmcm9tIFwieHBhdGhcIjtcbmltcG9ydCB0eXBlIHsgTWFuYWdlZE9iamVjdEV4IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uLy4uL3R5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuaW1wb3J0IHsgY3JlYXRlRmxleGliaWxpdHlDaGFuZ2VzT2JqZWN0IH0gZnJvbSBcIi4vSmVzdEZsZXhpYmlsaXR5SGVscGVyXCI7XG5cbnR5cGUgUHJlUHJvY2Vzc29yU2V0dGluZ3NUeXBlID0ge1xuXHRtb2RlbHM6IHtcblx0XHRbbmFtZTogc3RyaW5nXTogSlNPTk1vZGVsIHwgT0RhdGFNZXRhTW9kZWw7XG5cdH07XG5cdGJpbmRpbmdDb250ZXh0czoge1xuXHRcdFtuYW1lOiBzdHJpbmddOiBDb250ZXh0IHwgdW5kZWZpbmVkO1xuXHR9O1xufTtcbnR5cGUgTW9ja0ZyYWdtZW50ID0ge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGNvbnRlbnQ6IHN0cmluZztcbn07XG5cbnR5cGUgSmVzdFRlbXBsYXRlZFZpZXcgPSB7XG5cdGFzRWxlbWVudDogRWxlbWVudCB8IHVuZGVmaW5lZDtcblx0YXNTdHJpbmc6IHN0cmluZztcbn07XG5cbkxvZy5zZXRMZXZlbCgxIGFzIGFueSwgXCJzYXAudWkuY29yZS51dGlsLlhNTFByZXByb2Nlc3NvclwiKTtcbmplc3Quc2V0VGltZW91dCg0MDAwMCk7XG5cbmNvbnN0IG5hbWVTcGFjZU1hcCA9IHtcblx0bWFjcm9zOiBcInNhcC5mZS5tYWNyb3NcIixcblx0bWFjcm86IFwic2FwLmZlLm1hY3Jvc1wiLFxuXHRtYWNyb0ZpZWxkOiBcInNhcC5mZS5tYWNyb3MuZmllbGRcIixcblx0bWFjcm9kYXRhOiBcImh0dHA6Ly9zY2hlbWFzLnNhcC5jb20vc2FwdWk1L2V4dGVuc2lvbi9zYXAudWkuY29yZS5DdXN0b21EYXRhLzFcIixcblx0bG9nOiBcImh0dHA6Ly9zY2hlbWFzLnNhcC5jb20vc2FwdWk1L2V4dGVuc2lvbi9zYXAudWkuY29yZS5DdXN0b21EYXRhLzFcIixcblx0dW5pdHRlc3Q6IFwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvcHJlcHJvY2Vzc29yZXh0ZW5zaW9uL3NhcC5mZS51bml0dGVzdGluZy8xXCIsXG5cdGNvbnRyb2w6IFwic2FwLmZlLmNvcmUuY29udHJvbHNcIixcblx0Y29udHJvbHM6IFwic2FwLmZlLm1hY3Jvcy5jb250cm9sc1wiLFxuXHRjb3JlOiBcInNhcC51aS5jb3JlXCIsXG5cdGR0OiBcInNhcC51aS5kdFwiLFxuXHRtOiBcInNhcC5tXCIsXG5cdGY6IFwic2FwLnVpLmxheW91dC5mb3JtXCIsXG5cdGZsOiBcInNhcC51aS5mbFwiLFxuXHRpbnRlcm5hbE1hY3JvOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIixcblx0bWRjOiBcInNhcC51aS5tZGNcIixcblx0bWRjYXQ6IFwic2FwLnVpLm1kYy5hY3Rpb250b29sYmFyXCIsXG5cdG1kY0ZpZWxkOiBcInNhcC51aS5tZGMuZmllbGRcIixcblx0bWRjVGFibGU6IFwic2FwLnVpLm1kYy50YWJsZVwiLFxuXHR1OiBcInNhcC51aS51bmlmaWVkXCIsXG5cdG1hY3JvTWljcm9DaGFydDogXCJzYXAuZmUubWFjcm9zLm1pY3JvY2hhcnRcIixcblx0bWljcm9DaGFydDogXCJzYXAuc3VpdGUudWkubWljcm9jaGFydFwiLFxuXHRtYWNyb1RhYmxlOiBcInNhcC5mZS5tYWNyb3MudGFibGVcIlxufTtcbmNvbnN0IHNlbGVjdCA9IHhwYXRoLnVzZU5hbWVzcGFjZXMobmFtZVNwYWNlTWFwKTtcblxuY29uc3QgZGVmYXVsdEZha2VTaWRlRWZmZWN0U2VydmljZSA9IHsgY29tcHV0ZUZpZWxkR3JvdXBJZHM6ICgpID0+IFtdIH07XG5cbmZ1bmN0aW9uIF9nZXRUZW1wbGF0ZWRTZWxlY3Rvcih4bWxkb206IE5vZGUsIHNlbGVjdG9yOiBzdHJpbmcpOiBzdHJpbmcge1xuXHQvKipcblx0ICogaWYgYSByb290IGVsZW1lbnQgaGFzIGJlZW4gYWRkZWQgZHVyaW5nIHRoZSB0ZW1wbGF0aW5nIGJ5IG91ciBKZXN0IFRlbXBsYXRpbmcgbWV0aG9kc1xuXHQgKiB0aGUgcm9vdCBlbGVtZW50IGlzIGFkZGVkIHRvIHRoZSBzZWxlY3RvciBwYXRoLlxuXHQgKi9cblx0Y29uc3Qgcm9vdFBhdGggPSBcIi9yb290XCI7XG5cdHJldHVybiBgJHt4bWxkb20ubm9kZU5hbWUgPT09IFwicm9vdFwiICYmICFzZWxlY3Rvci5zdGFydHNXaXRoKHJvb3RQYXRoKSA/IHJvb3RQYXRoIDogXCJcIn0ke3NlbGVjdG9yfWA7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIF9idWlsZFByZVByb2Nlc3NvclNldHRpbmdzKFxuXHRzTWV0YWRhdGFVcmw6IHN0cmluZyxcblx0bUJpbmRpbmdDb250ZXh0czogeyBbeDogc3RyaW5nXTogc3RyaW5nIH0sXG5cdG1Nb2RlbHM6IHsgW3g6IHN0cmluZ106IGFueSB9LFxuXHRmYWtlU2lkZUVmZmVjdFNlcnZpY2U/OiB1bmtub3duXG4pOiBQcm9taXNlPFByZVByb2Nlc3NvclNldHRpbmdzVHlwZT4ge1xuXHRjb25zdCBvTWV0YU1vZGVsID0gYXdhaXQgZ2V0TWV0YU1vZGVsKHNNZXRhZGF0YVVybCk7XG5cblx0Ly8gVG8gZW5zdXJlIG91ciBtYWNybyBjYW4gdXNlICNzZXRCaW5kaW5nQ29udGV4dCB3ZSBlbnN1cmUgdGhlcmUgaXMgYSBwcmUgZXhpc3RpbmcgSlNPTk1vZGVsIGZvciBjb252ZXJ0ZXJDb250ZXh0XG5cdC8vIGlmIG5vdCBhbHJlYWR5IHBhc3NlZCB0byB0ZWggdGVtcGxhdGluZ1xuXHRpZiAoIW1Nb2RlbHMuaGFzT3duUHJvcGVydHkoXCJjb252ZXJ0ZXJDb250ZXh0XCIpKSB7XG5cdFx0bU1vZGVscyA9IE9iamVjdC5hc3NpZ24obU1vZGVscywgeyBjb252ZXJ0ZXJDb250ZXh0OiBuZXcgVGVtcGxhdGVNb2RlbCh7fSwgb01ldGFNb2RlbCkgfSk7XG5cdH1cblxuXHRPYmplY3Qua2V5cyhtTW9kZWxzKS5mb3JFYWNoKGZ1bmN0aW9uIChzTW9kZWxOYW1lKSB7XG5cdFx0aWYgKG1Nb2RlbHNbc01vZGVsTmFtZV0gJiYgbU1vZGVsc1tzTW9kZWxOYW1lXS5pc1RlbXBsYXRlTW9kZWwpIHtcblx0XHRcdG1Nb2RlbHNbc01vZGVsTmFtZV0gPSBuZXcgVGVtcGxhdGVNb2RlbChtTW9kZWxzW3NNb2RlbE5hbWVdLmRhdGEsIG9NZXRhTW9kZWwpO1xuXHRcdH1cblx0fSk7XG5cblx0Y29uc3Qgc2V0dGluZ3M6IGFueSA9IHtcblx0XHRtb2RlbHM6IE9iamVjdC5hc3NpZ24oXG5cdFx0XHR7XG5cdFx0XHRcdG1ldGFNb2RlbDogb01ldGFNb2RlbFxuXHRcdFx0fSxcblx0XHRcdG1Nb2RlbHNcblx0XHQpLFxuXHRcdGJpbmRpbmdDb250ZXh0czoge30sXG5cdFx0YXBwQ29tcG9uZW50OiB7IGdldFNpZGVFZmZlY3RzU2VydmljZTogamVzdC5mbigpLCBnZXREaWFnbm9zdGljczogKCkgPT4gdW5kZWZpbmVkIH1cblx0fTtcblxuXHRzZXR0aW5ncy5hcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlLm1vY2tSZXR1cm5WYWx1ZShmYWtlU2lkZUVmZmVjdFNlcnZpY2UgPz8gZGVmYXVsdEZha2VTaWRlRWZmZWN0U2VydmljZSk7XG5cdC8vSW5qZWN0IG1vZGVscyBhbmQgYmluZGluZ0NvbnRleHRzXG5cdE9iamVjdC5rZXlzKG1CaW5kaW5nQ29udGV4dHMpLmZvckVhY2goZnVuY3Rpb24gKHNLZXkpIHtcblx0XHQvKiBBc3NlcnQgdG8gbWFrZSBzdXJlIHRoZSBhbm5vdGF0aW9ucyBhcmUgaW4gdGhlIHRlc3QgbWV0YWRhdGEgLT4gYXZvaWQgbWlzbGVhZGluZyB0ZXN0cyAqL1xuXHRcdGV4cGVjdCh0eXBlb2Ygb01ldGFNb2RlbC5nZXRPYmplY3QobUJpbmRpbmdDb250ZXh0c1tzS2V5XSkpLnRvQmVEZWZpbmVkKCk7XG5cdFx0Y29uc3Qgb01vZGVsID0gbU1vZGVsc1tzS2V5XSB8fCBvTWV0YU1vZGVsO1xuXHRcdHNldHRpbmdzLmJpbmRpbmdDb250ZXh0c1tzS2V5XSA9IG9Nb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChtQmluZGluZ0NvbnRleHRzW3NLZXldKTsgLy9WYWx1ZSBpcyBzUGF0aFxuXHRcdHNldHRpbmdzLm1vZGVsc1tzS2V5XSA9IG9Nb2RlbDtcblx0fSk7XG5cdHJldHVybiBzZXR0aW5ncztcbn1cblxuZnVuY3Rpb24gX2xvYWRSZXNvdXJjZVZpZXcodmlld05hbWU6IHN0cmluZyk6IEVsZW1lbnQge1xuXHRjb25zdCBuYW1lID0gdmlld05hbWUucmVwbGFjZSgvXFwuL2csIFwiL1wiKSArIFwiLnZpZXcueG1sXCI7XG5cdGNvbnN0IHZpZXcgPSBMb2FkZXJFeHRlbnNpb25zLmxvYWRSZXNvdXJjZShuYW1lKTtcblx0cmV0dXJuIHZpZXcuZG9jdW1lbnRFbGVtZW50O1xufVxuXG5leHBvcnQgY29uc3QgcnVuWFBhdGhRdWVyeSA9IGZ1bmN0aW9uIChzZWxlY3Rvcjogc3RyaW5nLCB4bWxkb206IE5vZGUgfCB1bmRlZmluZWQpIHtcblx0cmV0dXJuIHNlbGVjdChzZWxlY3RvciwgeG1sZG9tKTtcbn07XG5cbmV4cGVjdC5leHRlbmQoe1xuXHR0b0hhdmVDb250cm9sKHhtbGRvbSwgc2VsZWN0b3IpIHtcblx0XHRjb25zdCBub2RlcyA9IHJ1blhQYXRoUXVlcnkoX2dldFRlbXBsYXRlZFNlbGVjdG9yKHhtbGRvbSwgc2VsZWN0b3IpLCB4bWxkb20pO1xuXHRcdHJldHVybiB7XG5cdFx0XHRtZXNzYWdlOiAoKSA9PiB7XG5cdFx0XHRcdGNvbnN0IG91dHB1dFhtbCA9IHNlcmlhbGl6ZVhNTCh4bWxkb20pO1xuXHRcdFx0XHRyZXR1cm4gYGRpZCBub3QgZmluZCBjb250cm9scyBtYXRjaGluZyAke3NlbGVjdG9yfSBpbiBnZW5lcmF0ZWQgeG1sOlxcbiAke291dHB1dFhtbH1gO1xuXHRcdFx0fSxcblx0XHRcdHBhc3M6IG5vZGVzICYmIG5vZGVzLmxlbmd0aCA+PSAxXG5cdFx0fTtcblx0fSxcblx0dG9Ob3RIYXZlQ29udHJvbCh4bWxkb20sIHNlbGVjdG9yKSB7XG5cdFx0Y29uc3Qgbm9kZXMgPSBydW5YUGF0aFF1ZXJ5KF9nZXRUZW1wbGF0ZWRTZWxlY3Rvcih4bWxkb20sIHNlbGVjdG9yKSwgeG1sZG9tKTtcblx0XHRyZXR1cm4ge1xuXHRcdFx0bWVzc2FnZTogKCkgPT4ge1xuXHRcdFx0XHRjb25zdCBvdXRwdXRYbWwgPSBzZXJpYWxpemVYTUwoeG1sZG9tKTtcblx0XHRcdFx0cmV0dXJuIGBUaGVyZSBpcyBhIGNvbnRyb2wgbWF0Y2hpbmcgJHtzZWxlY3Rvcn0gaW4gZ2VuZXJhdGVkIHhtbDpcXG4gJHtvdXRwdXRYbWx9YDtcblx0XHRcdH0sXG5cdFx0XHRwYXNzOiBub2RlcyAmJiBub2Rlcy5sZW5ndGggPT09IDBcblx0XHR9O1xuXHR9LFxuXHQvKipcblx0ICogQ2hlY2tzIGZvciBlcnJvcnMgaW4gYHhtbGAgY3JlYXRlZCBkdXJpbmcgdGVtcGxhdGluZyBvZiBhbiBYTUwgc3RyaW5nIG9yXG5cdCAqIGFuIFhNTCBub2RlLlxuXHQgKlxuXHQgKiBUaGlzIGZ1bmN0aW9uIGNoZWNrZXMgZm9yIHRoZSB4bWwgZXJyb3JzIGNyZWF0ZWQgYnkgdGhlXG5cdCAqIGZ1bmN0aW9uIFtCdWlsZGluZ0Jsb2NrVGVtcGxhdGVQcm9jZXNzb3IuY3JlYXRlRXJyb3JYTUxde0BsaW5rIHNhcC5mZS5jb3JlLmJ1aWxkaW5nQmxvY2tzLkJ1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvciNjcmVhdGVFcnJvclhNTH0uXG5cdCAqXG5cdCAqIEBwYXJhbSB4bWwgWE1MIFN0cmluZyBvciBYTUwgTm9kZSB0byBiZSB0ZXN0ZWQgZm9yIGVycm9yc1xuXHQgKiBAcmV0dXJucyBKZXN0IE1hdGNoZXIgcmVzdWx0IG9iamVjdFxuXHQgKi9cblx0dG9IYXZlVGVtcGxhdGluZ0Vycm9ycyh4bWw6IHN0cmluZyB8IE5vZGUpIHtcblx0XHRjb25zdCB4bWxUZXh0ID0gdHlwZW9mIHhtbCA9PT0gXCJzdHJpbmdcIiA/IHhtbCA6IHNlcmlhbGl6ZVhNTCh4bWwpO1xuXHRcdGNvbnN0IGJhc2U2NEVudHJpZXM6IHN0cmluZ1tdID0geG1sVGV4dC5tYXRjaCgvQkJGXFwuYmFzZTY0RGVjb2RlXFwoJyhbXiddKiknXFwpL2dtKSB8fCAoW10gYXMgc3RyaW5nW10pO1xuXHRcdGNvbnN0IGVycm9yTWVzc2FnZXM6IHN0cmluZ1tdID0gYmFzZTY0RW50cmllcy5tYXAoKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuXHRcdFx0aWYgKG1lc3NhZ2UgJiYgbWVzc2FnZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdHJldHVybiBhdG9iKG1lc3NhZ2UubWF0Y2goLygnW14nXSopLyk/LlswXT8uc2xpY2UoMSkgfHwgXCJcIik7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gXCJcIjtcblx0XHR9KTtcblx0XHRpZiAoZXJyb3JNZXNzYWdlcy5sZW5ndGggPD0gMCkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0bWVzc2FnZTogKCkgPT4gYFhNTCBUZW1wbGF0aW5nIHdpdGhvdXQgZXJyb3JzYCxcblx0XHRcdFx0cGFzczogZmFsc2Vcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdG1lc3NhZ2U6ICgpID0+IGVycm9yTWVzc2FnZXMuam9pbihcIlxcblwiKSxcblx0XHRcdFx0cGFzczogdHJ1ZVxuXHRcdFx0fTtcblx0XHR9XG5cdH1cbn0pO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0QnVpbGRpbmdCbG9ja1hNTCA9IGZ1bmN0aW9uICh4bWxTdHJpbmc6IHN0cmluZyB8IHN0cmluZ1tdKTogc3RyaW5nIHtcblx0aWYgKEFycmF5LmlzQXJyYXkoeG1sU3RyaW5nKSkge1xuXHRcdHhtbFN0cmluZyA9IHhtbFN0cmluZy5qb2luKFwiXCIpO1xuXHR9XG5cdHJldHVybiBmb3JtYXRYTUwoeG1sU3RyaW5nKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb250cm9sQXR0cmlidXRlID0gZnVuY3Rpb24gKGNvbnRyb2xTZWxlY3Rvcjogc3RyaW5nLCBhdHRyaWJ1dGVOYW1lOiBzdHJpbmcsIHhtbERvbTogTm9kZSkge1xuXHRjb25zdCBzZWxlY3RvciA9IGBzdHJpbmcoJHtfZ2V0VGVtcGxhdGVkU2VsZWN0b3IoeG1sRG9tLCBjb250cm9sU2VsZWN0b3IpfS9AJHthdHRyaWJ1dGVOYW1lfSlgO1xuXHRyZXR1cm4gcnVuWFBhdGhRdWVyeShzZWxlY3RvciwgeG1sRG9tKTtcbn07XG5cbi8qKlxuICogU2VyaWFsaXplIHRoZSBwYXJ0cyBvciB0aGUgY29tcGxldGUgZ2l2ZW4gWE1MIERPTSB0byBzdHJpbmcuXG4gKlxuICogQHBhcmFtIHhtbERvbSBET00gbm9kZSB0aGF0IGlzIHRvIGJlIHNlcmlhbGl6ZWQuXG4gKiBAcGFyYW0gc2VsZWN0b3IgT3B0aW9uYWwgc2VsZWN0b3Igb2Ygc3ViIG5vZGVzXG4gKiBAcmV0dXJucyBYTUwgc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCBzZXJpYWxpemVYTUwgPSBmdW5jdGlvbiAoeG1sRG9tOiBOb2RlLCBzZWxlY3Rvcj86IHN0cmluZykge1xuXHRjb25zdCBzZXJpYWxpemVyID0gbmV3IHdpbmRvdy5YTUxTZXJpYWxpemVyKCk7XG5cdGxldCB4bWxTdHJpbmc6IHN0cmluZztcblx0aWYgKHNlbGVjdG9yKSB7XG5cdFx0Y29uc3Qgbm9kZXMgPSBydW5YUGF0aFF1ZXJ5KHNlbGVjdG9yLCB4bWxEb20pIGFzIE5vZGVbXTtcblx0XHR4bWxTdHJpbmcgPSBub2Rlcy5tYXAoKG5vZGUpID0+IHNlcmlhbGl6ZXIuc2VyaWFsaXplVG9TdHJpbmcobm9kZSkpLmpvaW4oXCJcXG5cIik7XG5cdH0gZWxzZSB7XG5cdFx0eG1sU3RyaW5nID0gc2VyaWFsaXplci5zZXJpYWxpemVUb1N0cmluZyh4bWxEb20pO1xuXHR9XG5cdHJldHVybiBmb3JtYXRYTUwoeG1sU3RyaW5nKTtcbn07XG5cbi8qKlxuICogRm9ybWF0cyBhIHN0cmluZyBjb250YWluaW5nIGFuIFhNTCBkb2N1bWVudC5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIG9ubHkgY29uc2lkZXJzIFhNTCB0YWdzIGFuZCBhdHRyaWJ1dGVzLCBpZ25vcmluZyBldmVyeXRoaW5nIGVsc2UgKHRleHQsIGNvbW1lbnRzKS4gQWRkaXRpb25hbGx5LFxuICogYXR0cmlidXRlIHZhbHVlcyBjb250YWluaW5nIGEgdmFyeWluZyBVSUQgYXJlIHJlcGxhY2VkIHdpdGggYSBjb25zdGFudCB2YWx1ZS5cbiAqXG4gKiBBbiBcIlhNTFwiIHN0cmluZyBjb250YWluaW5nIG11bHRpcGxlIHJvb3QgZWxlbWVudHMgY2FuIGJlLlxuICpcbiAqIEBwYXJhbSB4bWxTdHJpbmcgIFRoZSBpbnB1dCBYTUwgc3RyaW5nLiBUaGlzIGZ1bmN0aW9uIGFsc28gYWNjZXB0cyBcIlhNTFwiIHN0cmluZ3Mgd2l0aCBtdWx0aXBsZSByb290IGVsZW1lbnRzLlxuICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCBYTUwgc3RyaW5nLlxuICovXG5leHBvcnQgY29uc3QgZm9ybWF0WE1MID0gZnVuY3Rpb24gKHhtbFN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3QgU1RBUlQgPSBcIjxfX1hNTF9fPlwiLFxuXHRcdEVORCA9IFwiPC9fX1hNTF9fPlwiLFxuXHRcdFVJRCA9IC91aWQtLWlkLVxcZHsxM30tXFxkezEsM30vLFxuXHRcdGxpbmVzOiBzdHJpbmdbXSA9IFtdO1xuXG5cdGxldCBjdXJyZW50TGluZSA9IFwiXCIsXG5cdFx0bGV2ZWwgPSAtMSxcblx0XHRhdHRyaWJ1dGVzOiB7IG5hbWU6IHN0cmluZzsgdmFsdWU/OiBzdHJpbmcgfVtdID0gW107XG5cblx0ZnVuY3Rpb24gbmV3bGluZSgpIHtcblx0XHRpZiAoY3VycmVudExpbmUgJiYgY3VycmVudExpbmUgIT09IFNUQVJUKSB7XG5cdFx0XHRsaW5lcy5wdXNoKGN1cnJlbnRMaW5lKTtcblx0XHR9XG5cblx0XHRjdXJyZW50TGluZSA9IGxldmVsID4gMCA/IFwiICBcIi5yZXBlYXQobGV2ZWwpIDogXCJcIjtcblx0fVxuXG5cdGZ1bmN0aW9uIGFwcGVuZEF0dHJpYnV0ZXMoKSB7XG5cdFx0aWYgKGF0dHJpYnV0ZXMubGVuZ3RoID4gMCkge1xuXHRcdFx0Ly8gYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMuc29ydCgoYSwgYikgPT4gYS5uYW1lLmxvY2FsZUNvbXBhcmUoYi5uYW1lKSk7XG5cdFx0XHRhdHRyaWJ1dGVzID0gYXR0cmlidXRlcy5yZXZlcnNlKCk7XG5cblx0XHRcdGxldmVsKys7XG5cdFx0XHRmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVzKSB7XG5cdFx0XHRcdG5ld2xpbmUoKTtcblx0XHRcdFx0Y3VycmVudExpbmUgKz0gYXR0cmlidXRlLm5hbWU7XG5cdFx0XHRcdGlmIChhdHRyaWJ1dGUudmFsdWUpIGN1cnJlbnRMaW5lICs9IGF0dHJpYnV0ZS52YWx1ZTtcblx0XHRcdH1cblx0XHRcdGxldmVsLS07XG5cdFx0XHRhdHRyaWJ1dGVzID0gW107XG5cdFx0XHRuZXdsaW5lKCk7XG5cdFx0fVxuXHR9XG5cblx0ZnVuY3Rpb24gYXBwZW5kKGRhdGE6IFJhbmdlKSB7XG5cdFx0Y3VycmVudExpbmUgKz0gcGFyc2VyLnJlYWQoZGF0YSk7XG5cdH1cblxuXHRjb25zdCBwYXJzZXIgPSBjcmVhdGVQYXJzZXIoe1xuXHRcdG9uT3BlblRhZ1N0YXJ0KGRhdGE6IFJhbmdlKSB7XG5cdFx0XHRuZXdsaW5lKCk7XG5cdFx0XHRhcHBlbmQoZGF0YSk7XG5cdFx0fSxcblxuXHRcdG9uT3BlblRhZ05hbWU6IGFwcGVuZCxcblxuXHRcdG9uQXR0ck5hbWUoZGF0YTogUmFuZ2UpIHtcblx0XHRcdGF0dHJpYnV0ZXMudW5zaGlmdCh7IG5hbWU6IHBhcnNlci5yZWFkKGRhdGEpIH0pO1xuXHRcdH0sXG5cblx0XHRvbkF0dHJWYWx1ZShkYXRhOiBSYW5nZXMuQXR0clZhbHVlKSB7XG5cdFx0XHRhdHRyaWJ1dGVzWzBdLnZhbHVlID0gcGFyc2VyLnJlYWQoZGF0YSkucmVwbGFjZShVSUQsIFwidWlkLS1pZFwiKTsgLy8gcmVwbGFjZSB2YXJ5aW5nIFVJRHMgd2l0aCBhIGNvbnN0YW50IHZhbHVlXG5cdFx0fSxcblxuXHRcdG9uT3BlblRhZ0VuZChkYXRhOiBSYW5nZXMuT3BlblRhZ0VuZCkge1xuXHRcdFx0YXBwZW5kQXR0cmlidXRlcygpO1xuXHRcdFx0YXBwZW5kKGRhdGEpO1xuXHRcdFx0aWYgKCFkYXRhLnNlbGZDbG9zZWQpIGxldmVsKys7XG5cdFx0fSxcblxuXHRcdG9uQ2xvc2VUYWdTdGFydChkYXRhOiBSYW5nZSkge1xuXHRcdFx0bGV2ZWwtLTtcblx0XHRcdG5ld2xpbmUoKTtcblx0XHRcdGFwcGVuZChkYXRhKTtcblx0XHR9LFxuXG5cdFx0b25DbG9zZVRhZ05hbWU6IGFwcGVuZCxcblx0XHRvbkNsb3NlVGFnRW5kOiBhcHBlbmRcblx0fSk7XG5cblx0cGFyc2VyLnBhcnNlKFNUQVJUICsgeG1sU3RyaW5nICsgRU5EKTtcblx0cmV0dXJuIGxpbmVzLmpvaW4oXCJcXG5cIikudHJpbSgpO1xufTtcblxuLyoqXG4gKiBDb21waWxlIGEgQ0RTIGZpbGUgaW50byBhbiBFRE1YIGZpbGUuXG4gKlxuICogQHBhcmFtIGNkc1VybCBUaGUgcGF0aCB0byB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBDRFMgZGVmaW5pdGlvbi4gVGhpcyBmaWxlIG11c3QgZGVjbGFyZSB0aGUgbmFtZXNwYWNlXG4gKiBzYXAuZmUudGVzdCBhbmQgYSBzZXJ2aWNlIEplc3RTZXJ2aWNlXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIGZvciBjcmVhdGluZyB0aGUgRURNWCBvdXRwdXRcbiAqIEByZXR1cm5zIFRoZSBwYXRoIG9mIHRoZSBnZW5lcmF0ZWQgRURNWFxuICovXG5leHBvcnQgY29uc3QgY29tcGlsZUNEUyA9IGZ1bmN0aW9uIChjZHNVcmw6IHN0cmluZywgb3B0aW9uczogY29tcGlsZXIuT0RhdGFPcHRpb25zID0ge30pIHtcblx0Y29uc3QgY2RzU3RyaW5nID0gZnMucmVhZEZpbGVTeW5jKGNkc1VybCwgXCJ1dGYtOFwiKTtcblx0Y29uc3QgZWRteENvbnRlbnQgPSBjZHMyZWRteChjZHNTdHJpbmcsIFwic2FwLmZlLnRlc3QuSmVzdFNlcnZpY2VcIiwgb3B0aW9ucyk7XG5cdGNvbnN0IGRpciA9IHBhdGgucmVzb2x2ZShjZHNVcmwsIFwiLi5cIiwgXCJnZW5cIik7XG5cblx0Ly8gSWYgdGhlIGNhbGxlciBwcm92aWRlZCBDRFMgY29tcGlsZXIgb3B0aW9uczogSW5jbHVkZSB0aGVtIGluIHRoZSBmaWxlbmFtZS4gVGhpcyBwcmV2ZW50cyB1bnByZWRpY3RhYmxlIHJlc3VsdHMgaWYgdGhlIHNhbWUgQ0RTIHNvdXJjZVxuXHQvLyBmaWxlIGlzIHVzZWQgc2ltdWx0YW5lb3VzbHkgd2l0aCBhIGRpZmZlcmVudCBzZXQgb2Ygb3B0aW9ucyAoZS5nLiBpbiBhIHRlc3QgcnVubmluZyBpbiBwYXJhbGxlbClcblx0Y29uc3QgYWxsT3B0aW9ucyA9IE9iamVjdC5lbnRyaWVzKG9wdGlvbnMpO1xuXHRhbGxPcHRpb25zLnNvcnQoKGEsIGIpID0+IGJbMF0ubG9jYWxlQ29tcGFyZShhWzBdKSk7XG5cblx0Y29uc3QgZWRteEZpbGVOYW1lID1cblx0XHRhbGxPcHRpb25zLnJlZHVjZShcblx0XHRcdChmaWxlbmFtZSwgW29wdGlvbktleSwgb3B0aW9uVmFsdWVdKSA9PiBgJHtmaWxlbmFtZX0jJHtvcHRpb25LZXl9PSR7b3B0aW9uVmFsdWUudG9TdHJpbmcoKX0jYCxcblx0XHRcdHBhdGguYmFzZW5hbWUoY2RzVXJsKS5yZXBsYWNlKFwiLmNkc1wiLCBcIlwiKVxuXHRcdCkgKyBcIi54bWxcIjtcblxuXHRjb25zdCBlZG14RmlsZVBhdGggPSBwYXRoLnJlc29sdmUoZGlyLCBlZG14RmlsZU5hbWUpO1xuXG5cdGZzLm1rZGlyU3luYyhkaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG5cdGZzLndyaXRlRmlsZVN5bmMoZWRteEZpbGVQYXRoLCBlZG14Q29udGVudCk7XG5cdHJldHVybiBlZG14RmlsZVBhdGg7XG59O1xuXG4vKipcbiAqIENvbXBpbGUgQ0RTIHRvIEVETVguXG4gKlxuICogQHBhcmFtIGNkcyBUaGUgQ0RTIG1vZGVsLiBJdCBtdXN0IGRlZmluZSBhdCBsZWFzdCBvbmUgc2VydmljZS5cbiAqIEBwYXJhbSBzZXJ2aWNlIFRoZSBmdWxseS1xdWFsaWZpZWQgbmFtZSBvZiB0aGUgc2VydmljZSB0byBiZSBjb21waWxlZC4gRGVmYXVsdHMgdG8gXCJzYXAuZmUudGVzdC5KZXN0U2VydmljZVwiLlxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhlIEVETVggb3V0cHV0XG4gKiBAcmV0dXJucyBUaGUgY29tcGlsZWQgc2VydmljZSBtb2RlbCBhcyBFRE1YLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2RzMmVkbXgoY2RzOiBzdHJpbmcsIHNlcnZpY2UgPSBcInNhcC5mZS50ZXN0Lkplc3RTZXJ2aWNlXCIsIG9wdGlvbnM6IGNvbXBpbGVyLk9EYXRhT3B0aW9ucyA9IHt9KSB7XG5cdGNvbnN0IHNvdXJjZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7IFwic291cmNlLmNkc1wiOiBjZHMgfTtcblxuXHQvLyBhbGxvdyB0byBpbmNsdWRlIHN0dWZmIGZyb20gQHNhcC9jZHMvY29tbW9uXG5cdGlmIChjZHMuaW5jbHVkZXMoXCInQHNhcC9jZHMvY29tbW9uJ1wiKSkge1xuXHRcdHNvdXJjZXNbXCJjb21tb24uY2RzXCJdID0gZnMucmVhZEZpbGVTeW5jKHJlcXVpcmUucmVzb2x2ZShcIkBzYXAvY2RzL2NvbW1vbi5jZHNcIiksIFwidXRmLThcIik7XG5cdH1cblxuXHRjb25zdCBjc24gPSBjb21waWxlci5jb21waWxlU291cmNlcyhzb3VyY2VzLCB7fSk7XG5cblx0Y29uc3QgZWRteE9wdGlvbnM6IGNvbXBpbGVyLk9EYXRhT3B0aW9ucyA9IHtcblx0XHRvZGF0YUZvcmVpZ25LZXlzOiB0cnVlLFxuXHRcdG9kYXRhRm9ybWF0OiBcInN0cnVjdHVyZWRcIixcblx0XHRvZGF0YUNvbnRhaW5tZW50OiB0cnVlLFxuXHRcdC4uLm9wdGlvbnMsXG5cdFx0c2VydmljZTogc2VydmljZVxuXHR9O1xuXG5cdGNvbnN0IGVkbXggPSBjb21waWxlci50by5lZG14KGNzbiwgZWRteE9wdGlvbnMpO1xuXHRpZiAoIWVkbXgpIHtcblx0XHR0aHJvdyBuZXcgRXJyb3IoYENvbXBpbGF0aW9uIGZhaWxlZC4gSGludDogTWFrZSBzdXJlIHRoYXQgdGhlIENEUyBtb2RlbCBkZWZpbmVzIHNlcnZpY2UgJHtzZXJ2aWNlfS5gKTtcblx0fVxuXHRyZXR1cm4gZWRteDtcbn1cblxuZXhwb3J0IGNvbnN0IGdldEZha2VTaWRlRWZmZWN0c1NlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiAoXG5cdG1ldGFNb2RlbDogT0RhdGFNZXRhTW9kZWwsXG5cdGNsYXNzTmFtZU9EYXRhTW9kZWwgPSBcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YU1vZGVsXCJcbik6IFByb21pc2U8U2lkZUVmZmVjdHNTZXJ2aWNlPiB7XG5cdGNvbnN0IHNjb3BlT2JqZWN0ID0ge1xuXHRcdGdldE1vZGVsOiAoKSA9PiB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRpc0E6ICgpID0+IGNsYXNzTmFtZU9EYXRhTW9kZWwgPT09IFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTW9kZWxcIixcblx0XHRcdFx0Z2V0TWV0YU1vZGVsOiAoKSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIG1ldGFNb2RlbDtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHR9LFxuXHRcdGdldFNlcnZpY2U6ICgpID0+IHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGdldENhcGFiaWxpdGllczogKCkgPT4gdW5kZWZpbmVkXG5cdFx0XHR9O1xuXHRcdH1cblx0fTtcblx0Y29uc3Qgc2VydmljZUluc3RhbmNlID0gYXdhaXQgbmV3IFNpZGVFZmZlY3RzRmFjdG9yeSgpLmNyZWF0ZUluc3RhbmNlKHsgc2NvcGVPYmplY3QsIHNjb3BlVHlwZTogXCJcIiwgc2V0dGluZ3M6IHt9IH0pO1xuXHRyZXR1cm4gc2VydmljZUluc3RhbmNlLmdldEludGVyZmFjZSgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZha2VEaWFnbm9zdGljcyA9IGZ1bmN0aW9uICgpOiBJRGlhZ25vc3RpY3Mge1xuXHRjb25zdCBpc3N1ZXM6IGFueVtdID0gW107XG5cdHJldHVybiB7XG5cdFx0YWRkSXNzdWUoaXNzdWVDYXRlZ29yeTogSXNzdWVDYXRlZ29yeSwgaXNzdWVTZXZlcml0eTogSXNzdWVTZXZlcml0eSwgZGV0YWlsczogc3RyaW5nKTogdm9pZCB7XG5cdFx0XHRpc3N1ZXMucHVzaCh7XG5cdFx0XHRcdGlzc3VlQ2F0ZWdvcnksXG5cdFx0XHRcdGlzc3VlU2V2ZXJpdHksXG5cdFx0XHRcdGRldGFpbHNcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0Z2V0SXNzdWVzKCk6IGFueVtdIHtcblx0XHRcdHJldHVybiBpc3N1ZXM7XG5cdFx0fSxcblx0XHRjaGVja0lmSXNzdWVFeGlzdHMoaXNzdWVDYXRlZ29yeTogSXNzdWVDYXRlZ29yeSwgaXNzdWVTZXZlcml0eTogSXNzdWVTZXZlcml0eSwgZGV0YWlsczogc3RyaW5nKTogYm9vbGVhbiB7XG5cdFx0XHRyZXR1cm4gaXNzdWVzLmZpbmQoKGlzc3VlKSA9PiB7XG5cdFx0XHRcdHJldHVybiBpc3N1ZS5pc3N1ZUNhdGVnb3J5ID09PSBpc3N1ZUNhdGVnb3J5ICYmIGlzc3VlLmlzc3VlU2V2ZXJpdHkgPT09IGlzc3VlU2V2ZXJpdHkgJiYgaXNzdWUuZGV0YWlscyA9PT0gZGV0YWlscztcblx0XHRcdH0pO1xuXHRcdH1cblx0fTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRDb252ZXJ0ZXJDb250ZXh0Rm9yVGVzdCA9IGZ1bmN0aW9uIChcblx0Y29udmVydGVkVHlwZXM6IENvbnZlcnRlZE1ldGFkYXRhLFxuXHRtYW5pZmVzdFNldHRpbmdzOiBMaXN0UmVwb3J0TWFuaWZlc3RTZXR0aW5ncyB8IE9iamVjdFBhZ2VNYW5pZmVzdFNldHRpbmdzXG4pIHtcblx0Y29uc3QgZW50aXR5U2V0ID0gY29udmVydGVkVHlwZXMuZW50aXR5U2V0cy5maW5kKChlcykgPT4gZXMubmFtZSA9PT0gbWFuaWZlc3RTZXR0aW5ncy5lbnRpdHlTZXQpO1xuXHRjb25zdCBkYXRhTW9kZWxQYXRoID0gZ2V0RGF0YU1vZGVsT2JqZWN0UGF0aEZvclByb3BlcnR5KGVudGl0eVNldCBhcyBFbnRpdHlTZXQsIGNvbnZlcnRlZFR5cGVzLCBlbnRpdHlTZXQpO1xuXHRyZXR1cm4gbmV3IENvbnZlcnRlckNvbnRleHQoY29udmVydGVkVHlwZXMsIG1hbmlmZXN0U2V0dGluZ3MsIGdldEZha2VEaWFnbm9zdGljcygpLCBtZXJnZSwgZGF0YU1vZGVsUGF0aCk7XG59O1xuY29uc3QgbWV0YU1vZGVsQ2FjaGU6IGFueSA9IHt9O1xuZXhwb3J0IGNvbnN0IGdldE1ldGFNb2RlbCA9IGFzeW5jIGZ1bmN0aW9uIChzTWV0YWRhdGFVcmw6IHN0cmluZykge1xuXHRjb25zdCBvUmVxdWVzdG9yID0gX01ldGFkYXRhUmVxdWVzdG9yLmNyZWF0ZSh7fSwgXCI0LjBcIiwgdW5kZWZpbmVkLCB7fSk7XG5cdGlmICghbWV0YU1vZGVsQ2FjaGVbc01ldGFkYXRhVXJsXSkge1xuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG5ldyAoT0RhdGFNZXRhTW9kZWwgYXMgYW55KShvUmVxdWVzdG9yLCBzTWV0YWRhdGFVcmwsIHVuZGVmaW5lZCwgeyBfcmVxdWVzdEFubm90YXRpb25DaGFuZ2VzOiAoKSA9PiBbXSB9KTtcblx0XHRhd2FpdCBvTWV0YU1vZGVsLmZldGNoRW50aXR5Q29udGFpbmVyKCk7XG5cdFx0bWV0YU1vZGVsQ2FjaGVbc01ldGFkYXRhVXJsXSA9IG9NZXRhTW9kZWw7XG5cdH1cblxuXHRyZXR1cm4gbWV0YU1vZGVsQ2FjaGVbc01ldGFkYXRhVXJsXTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXREYXRhTW9kZWxPYmplY3RQYXRoRm9yUHJvcGVydHkgPSBmdW5jdGlvbiAoXG5cdGVudGl0eVNldDogRW50aXR5U2V0LFxuXHRjb252ZXJ0ZWRUeXBlczogQ29udmVydGVkTWV0YWRhdGEsXG5cdHByb3BlcnR5PzogUHJvcGVydHkgfCBFbnRpdHlTZXQgfCBBbnlBbm5vdGF0aW9uXG4pOiBEYXRhTW9kZWxPYmplY3RQYXRoIHtcblx0Y29uc3QgdGFyZ2V0UGF0aDogRGF0YU1vZGVsT2JqZWN0UGF0aCA9IHtcblx0XHRzdGFydGluZ0VudGl0eVNldDogZW50aXR5U2V0LFxuXHRcdG5hdmlnYXRpb25Qcm9wZXJ0aWVzOiBbXSxcblx0XHR0YXJnZXRPYmplY3Q6IHByb3BlcnR5LFxuXHRcdHRhcmdldEVudGl0eVNldDogZW50aXR5U2V0LFxuXHRcdHRhcmdldEVudGl0eVR5cGU6IGVudGl0eVNldC5lbnRpdHlUeXBlLFxuXHRcdGNvbnZlcnRlZFR5cGVzOiBjb252ZXJ0ZWRUeXBlc1xuXHR9O1xuXHR0YXJnZXRQYXRoLmNvbnRleHRMb2NhdGlvbiA9IHRhcmdldFBhdGg7XG5cdHJldHVybiB0YXJnZXRQYXRoO1xufTtcblxuZXhwb3J0IGNvbnN0IGV2YWx1YXRlQmluZGluZyA9IGZ1bmN0aW9uIChiaW5kaW5nU3RyaW5nOiBzdHJpbmcsIC4uLmFyZ3M6IGFueVtdKSB7XG5cdGNvbnN0IGJpbmRpbmdFbGVtZW50ID0gQmluZGluZ1BhcnNlci5jb21wbGV4UGFyc2VyKGJpbmRpbmdTdHJpbmcpO1xuXHRyZXR1cm4gYmluZGluZ0VsZW1lbnQuZm9ybWF0dGVyLmFwcGx5KHVuZGVmaW5lZCwgYXJncyk7XG59O1xuXG50eXBlIE1vZGVsQ29udGVudCA9IHtcblx0W25hbWU6IHN0cmluZ106IGFueTtcbn07XG5cbi8qKlxuICogRXZhbHVhdGUgYSBiaW5kaW5nIGFnYWluc3QgYSBtb2RlbC5cbiAqXG4gKiBAcGFyYW0gYmluZGluZ1N0cmluZyBUaGUgYmluZGluZyBzdHJpbmcuXG4gKiBAcGFyYW0gbW9kZWxDb250ZW50IENvbnRlbnQgb2YgdGhlIGRlZmF1bHQgbW9kZWwgdG8gdXNlIGZvciBldmFsdWF0aW9uLlxuICogQHBhcmFtIG5hbWVkTW9kZWxzQ29udGVudCBDb250ZW50cyBvZiBhZGRpdGlvbmFsLCBuYW1lZCBtb2RlbHMgdG8gdXNlLlxuICogQHJldHVybnMgVGhlIGV2YWx1YXRlZCBiaW5kaW5nLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZXZhbHVhdGVCaW5kaW5nV2l0aE1vZGVsKFxuXHRiaW5kaW5nU3RyaW5nOiBzdHJpbmcgfCB1bmRlZmluZWQsXG5cdG1vZGVsQ29udGVudDogTW9kZWxDb250ZW50LFxuXHRuYW1lZE1vZGVsc0NvbnRlbnQ/OiB7IFttb2RlbE5hbWU6IHN0cmluZ106IE1vZGVsQ29udGVudCB9XG4pOiBzdHJpbmcge1xuXHRjb25zdCBiaW5kaW5nRWxlbWVudCA9IEJpbmRpbmdQYXJzZXIuY29tcGxleFBhcnNlcihiaW5kaW5nU3RyaW5nKTtcblx0Y29uc3QgdGV4dCA9IG5ldyBJbnZpc2libGVUZXh0KCk7XG5cdHRleHQuYmluZFByb3BlcnR5KFwidGV4dFwiLCBiaW5kaW5nRWxlbWVudCk7XG5cblx0Y29uc3QgZGVmYXVsdE1vZGVsID0gbmV3IEpTT05Nb2RlbChtb2RlbENvbnRlbnQpO1xuXHR0ZXh0LnNldE1vZGVsKGRlZmF1bHRNb2RlbCk7XG5cdHRleHQuc2V0QmluZGluZ0NvbnRleHQoZGVmYXVsdE1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKSk7XG5cblx0aWYgKG5hbWVkTW9kZWxzQ29udGVudCkge1xuXHRcdGZvciAoY29uc3QgW25hbWUsIGNvbnRlbnRdIG9mIE9iamVjdC5lbnRyaWVzKG5hbWVkTW9kZWxzQ29udGVudCkpIHtcblx0XHRcdGNvbnN0IG1vZGVsID0gbmV3IEpTT05Nb2RlbChjb250ZW50KTtcblx0XHRcdHRleHQuc2V0TW9kZWwobW9kZWwsIG5hbWUpO1xuXHRcdFx0dGV4dC5zZXRCaW5kaW5nQ29udGV4dChtb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIiksIG5hbWUpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiB0ZXh0LmdldFRleHQoKTtcbn1cblxuY29uc3QgVEVTVFZJRVdJRCA9IFwidGVzdFZpZXdJZFwiO1xuXG5jb25zdCBhcHBseUZsZXhDaGFuZ2VzID0gYXN5bmMgZnVuY3Rpb24gKGZsZXhDaGFuZ2VzOiB7IFt4OiBzdHJpbmddOiBvYmplY3RbXSB9LCBvTWV0YU1vZGVsOiBNZXRhTW9kZWwsIHJlc3VsdFhNTDogYW55KSB7XG5cdC8vIHByZWZpeCBJZHNcblx0Wy4uLnJlc3VsdFhNTC5xdWVyeVNlbGVjdG9yQWxsKFwiW2lkXVwiKV0uZm9yRWFjaCgobm9kZSkgPT4ge1xuXHRcdG5vZGUuaWQgPSBgJHtURVNUVklFV0lEfS0tJHtub2RlLmlkfWA7XG5cdH0pO1xuXHRjb25zdCBjaGFuZ2VzID0gY3JlYXRlRmxleGliaWxpdHlDaGFuZ2VzT2JqZWN0KFRFU1RWSUVXSUQsIGZsZXhDaGFuZ2VzKTtcblx0Y29uc3QgYXBwSWQgPSBcInNvbWVDb21wb25lbnRcIjtcblx0Y29uc3Qgb01hbmlmZXN0ID0ge1xuXHRcdFwic2FwLmFwcFwiOiB7XG5cdFx0XHRpZDogYXBwSWQsXG5cdFx0XHR0eXBlOiBcImFwcGxpY2F0aW9uXCIsXG5cdFx0XHRjcm9zc05hdmlnYXRpb246IHtcblx0XHRcdFx0b3V0Ym91bmRzOiBbXVxuXHRcdFx0fVxuXHRcdH1cblx0fTtcblx0Y29uc3Qgb0FwcENvbXBvbmVudDogQXBwQ29tcG9uZW50ID0ge1xuXHRcdGdldERpYWdub3N0aWNzOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKGdldEZha2VEaWFnbm9zdGljcygpKSxcblx0XHRnZXRNb2RlbDogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG5cdFx0XHRnZXRNZXRhTW9kZWw6IGplc3QuZm4oKS5tb2NrUmV0dXJuVmFsdWUob01ldGFNb2RlbClcblx0XHR9KSxcblx0XHRnZXRDb21wb25lbnREYXRhOiBqZXN0LmZuKCkubW9ja1JldHVyblZhbHVlKHt9KSxcblx0XHRnZXRNYW5pZmVzdE9iamVjdDogamVzdC5mbigpLm1vY2tSZXR1cm5WYWx1ZSh7XG5cdFx0XHRnZXRFbnRyeTogZnVuY3Rpb24gKG5hbWU6IHN0cmluZykge1xuXHRcdFx0XHRyZXR1cm4gKG9NYW5pZmVzdCBhcyBhbnkpW25hbWVdO1xuXHRcdFx0fVxuXHRcdH0pLFxuXHRcdGdldExvY2FsSWQ6IGplc3QuZm4oKHNJZCkgPT4gc0lkKVxuXHR9IGFzIHVua25vd24gYXMgQXBwQ29tcG9uZW50O1xuXHQvL2Zha2UgY2hhbmdlc1xuXHRqZXN0LnNweU9uKEFwcFN0b3JhZ2UsIFwibG9hZEZsZXhEYXRhXCIpLm1vY2tSZXR1cm5WYWx1ZShQcm9taXNlLnJlc29sdmUoY2hhbmdlcykpO1xuXHRqZXN0LnNweU9uKExvYWRlciwgXCJsb2FkRmxleERhdGFcIikubW9ja1JldHVyblZhbHVlKFByb21pc2UucmVzb2x2ZShjaGFuZ2VzKSk7XG5cblx0amVzdC5zcHlPbihDb21wb25lbnQsIFwiZ2V0XCIpLm1vY2tSZXR1cm5WYWx1ZShvQXBwQ29tcG9uZW50KTtcblx0amVzdC5zcHlPbihDb21wb25lbnQgYXMgdW5rbm93biBhcyB7IGdldENvbXBvbmVudEJ5SWQ6ICgpID0+IEFwcENvbXBvbmVudCB9LCBcImdldENvbXBvbmVudEJ5SWRcIikubW9ja1JldHVyblZhbHVlKG9BcHBDb21wb25lbnQpO1xuXHRqZXN0LnNweU9uKFV0aWxzLCBcImdldEFwcENvbXBvbmVudEZvckNvbnRyb2xcIikubW9ja1JldHVyblZhbHVlKG9BcHBDb21wb25lbnQpO1xuXHRhd2FpdCBGbGV4U3RhdGUuaW5pdGlhbGl6ZSh7XG5cdFx0Y29tcG9uZW50SWQ6IGFwcElkXG5cdH0pO1xuXHRyZXN1bHRYTUwgPSBhd2FpdCBYbWxQcmVwcm9jZXNzb3IucHJvY2VzcyhyZXN1bHRYTUwsIHsgbmFtZTogXCJUZXN0IEZyYWdtZW50XCIsIGNvbXBvbmVudElkOiBhcHBJZCwgaWQ6IFRFU1RWSUVXSUQgfSk7XG5cblx0Ly9Bc3NlcnQgdGhhdCBhbGwgY2hhbmdlcyBoYXZlIGJlZW4gYXBwbGllZFxuXHRjb25zdCBjaGFuZ2VzQXBwbGllZCA9IGdldENoYW5nZXNGcm9tWE1MKHJlc3VsdFhNTCk7XG5cdGV4cGVjdChjaGFuZ2VzQXBwbGllZC5sZW5ndGgpLnRvQmUoZmxleENoYW5nZXM/LmNoYW5nZXM/Lmxlbmd0aCA/PyAwICsgZmxleENoYW5nZXM/LnZhcmlhbnREZXBlbmRlbnRDb250cm9sQ2hhbmdlcz8ubGVuZ3RoID8/IDApO1xuXHRyZXR1cm4gcmVzdWx0WE1MO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldENoYW5nZXNGcm9tWE1MID0gKHhtbDogYW55KSA9PlxuXHRbLi4ueG1sLnF1ZXJ5U2VsZWN0b3JBbGwoXCIqXCIpXVxuXHRcdC5mbGF0TWFwKChlKSA9PiBbLi4uZS5hdHRyaWJ1dGVzXS5tYXAoKGEpID0+IGEubmFtZSkpXG5cdFx0LmZpbHRlcigoYXR0cikgPT4gYXR0ci5pbmNsdWRlcyhcInNhcC51aS5mbC5hcHBsaWVkQ2hhbmdlc1wiKSk7XG5cbmV4cG9ydCBjb25zdCBnZXRUZW1wbGF0aW5nUmVzdWx0ID0gYXN5bmMgZnVuY3Rpb24gKFxuXHR4bWxJbnB1dDogc3RyaW5nLFxuXHRzTWV0YWRhdGFVcmw6IHN0cmluZyxcblx0bUJpbmRpbmdDb250ZXh0czogeyBbeDogc3RyaW5nXTogYW55OyBlbnRpdHlTZXQ/OiBzdHJpbmcgfSxcblx0bU1vZGVsczogeyBbeDogc3RyaW5nXTogYW55IH0sXG5cdGZsZXhDaGFuZ2VzPzogeyBbeDogc3RyaW5nXTogb2JqZWN0W10gfSxcblx0ZmFrZVNpZGVFZmZlY3RTZXJ2aWNlPzogdW5rbm93blxuKSB7XG5cdGlmICghbU1vZGVsc1tcInNhcC5mZS5pMThuXCJdKSB7XG5cdFx0bU1vZGVsc1tcInNhcC5mZS5pMThuXCJdID0gY3JlYXRlTW9ja1Jlc291cmNlTW9kZWwoKTtcblx0fVxuXG5cdGNvbnN0IHRlbXBsYXRlZFhtbCA9IGA8cm9vdD4ke3htbElucHV0fTwvcm9vdD5gO1xuXHRjb25zdCBwYXJzZXIgPSBuZXcgd2luZG93LkRPTVBhcnNlcigpO1xuXHRjb25zdCB4bWxEb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHRlbXBsYXRlZFhtbCwgXCJ0ZXh0L3htbFwiKTtcblx0Ly8gVG8gZW5zdXJlIG91ciBtYWNybyBjYW4gdXNlICNzZXRCaW5kaW5nQ29udGV4dCB3ZSBlbnN1cmUgdGhlcmUgaXMgYSBwcmUgZXhpc3RpbmcgSlNPTk1vZGVsIGZvciBjb252ZXJ0ZXJDb250ZXh0XG5cdC8vIGlmIG5vdCBhbHJlYWR5IHBhc3NlZCB0byB0ZWggdGVtcGxhdGluZ1xuXG5cdGNvbnN0IG9NZXRhTW9kZWwgPSBhd2FpdCBnZXRNZXRhTW9kZWwoc01ldGFkYXRhVXJsKTtcblx0Y29uc3Qgb1ByZXByb2Nlc3NvclNldHRpbmdzID0gYXdhaXQgX2J1aWxkUHJlUHJvY2Vzc29yU2V0dGluZ3Moc01ldGFkYXRhVXJsLCBtQmluZGluZ0NvbnRleHRzLCBtTW9kZWxzLCBmYWtlU2lkZUVmZmVjdFNlcnZpY2UpO1xuXG5cdC8vVGhpcyBjb250ZXh0IGZvciBtYWNybyB0ZXN0aW5nXG5cdGlmIChvUHJlcHJvY2Vzc29yU2V0dGluZ3MubW9kZWxzW1widGhpc1wiXSkge1xuXHRcdG9QcmVwcm9jZXNzb3JTZXR0aW5ncy5iaW5kaW5nQ29udGV4dHNbXCJ0aGlzXCJdID0gb1ByZXByb2Nlc3NvclNldHRpbmdzLm1vZGVsc1tcInRoaXNcIl0uY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpO1xuXHR9XG5cblx0bGV0IHJlc3VsdFhNTCA9IChhd2FpdCBYTUxQcmVwcm9jZXNzb3IucHJvY2Vzcyh4bWxEb2MuZmlyc3RFbGVtZW50Q2hpbGQhLCB7IG5hbWU6IFwiVGVzdCBGcmFnbWVudFwiIH0sIG9QcmVwcm9jZXNzb3JTZXR0aW5ncykpIGFzIGFueTtcblxuXHRpZiAoZmxleENoYW5nZXMpIHtcblx0XHQvLyBhcHBseSBmbGV4IGNoYW5nZXNcblx0XHRyZXN1bHRYTUwgPSBhd2FpdCBhcHBseUZsZXhDaGFuZ2VzKGZsZXhDaGFuZ2VzLCBvTWV0YU1vZGVsLCByZXN1bHRYTUwpO1xuXHR9XG5cdHJldHVybiByZXN1bHRYTUw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGVtcGxhdGVkWE1MID0gYXN5bmMgZnVuY3Rpb24gKFxuXHR4bWxJbnB1dDogc3RyaW5nLFxuXHRzTWV0YWRhdGFVcmw6IHN0cmluZyxcblx0bUJpbmRpbmdDb250ZXh0czogeyBbeDogc3RyaW5nXTogc3RyaW5nIH0sXG5cdG1Nb2RlbHM6IHsgW3g6IHN0cmluZ106IGFueSB9LFxuXHRmbGV4Q2hhbmdlcz86IHsgW3g6IHN0cmluZ106IG9iamVjdFtdIH0sXG5cdGZha2VTaWRlRWZmZWN0U2VydmljZT86IHVua25vd25cbikge1xuXHRjb25zdCB0ZW1wbGF0ZWRYTUwgPSBhd2FpdCBnZXRUZW1wbGF0aW5nUmVzdWx0KHhtbElucHV0LCBzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIG1Nb2RlbHMsIGZsZXhDaGFuZ2VzLCBmYWtlU2lkZUVmZmVjdFNlcnZpY2UpO1xuXHRjb25zdCBzZXJpYWxpZWRYTUwgPSBzZXJpYWxpemVYTUwodGVtcGxhdGVkWE1MKTtcblx0ZXhwZWN0KHNlcmlhbGllZFhNTCkubm90LnRvSGF2ZVRlbXBsYXRpbmdFcnJvcnMoKTtcblx0cmV0dXJuIHNlcmlhbGllZFhNTDtcbn07XG5cbi8qKlxuICogUHJvY2VzcyB0aGUgcmVxdWVzdGVkIHZpZXcgd2l0aCB0aGUgcHJvdmlkZWQgZGF0YS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBGdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgdmlldyB0byBiZSB0ZXN0ZWQuXG4gKiBAcGFyYW0gc01ldGFkYXRhVXJsIFVybCBvZiB0aGUgbWV0YWRhdGEuXG4gKiBAcGFyYW0gbUJpbmRpbmdDb250ZXh0cyBNYXAgb2YgdGhlIGJpbmRpbmdDb250ZXh0cyB0byBzZXQgb24gdGhlIG1vZGVscy5cbiAqIEBwYXJhbSBtTW9kZWxzIE1hcCBvZiB0aGUgbW9kZWxzLlxuICogQHBhcmFtIGZsZXhDaGFuZ2VzIE9iamVjdCB3aXRoIFVJIGNoYW5nZXMgbGlrZSAnY2hhbmdlcycgb3IgJ3ZhcmlhbnREZXBlbmRlbnRDb250cm9sQ2hhbmdlcydcbiAqIEByZXR1cm5zIFRlbXBsYXRlZCB2aWV3IGFzIHN0cmluZ1xuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJvY2Vzc1ZpZXcoXG5cdG5hbWU6IHN0cmluZyxcblx0c01ldGFkYXRhVXJsOiBzdHJpbmcsXG5cdG1CaW5kaW5nQ29udGV4dHM6IHsgW3g6IHN0cmluZ106IHN0cmluZyB9LFxuXHRtTW9kZWxzOiB7IFt4OiBzdHJpbmddOiBhbnkgfSxcblx0ZmxleENoYW5nZXM/OiB7IFt4OiBzdHJpbmddOiBvYmplY3RbXSB9XG4pOiBQcm9taXNlPEplc3RUZW1wbGF0ZWRWaWV3PiB7XG5cdGNvbnN0IG9NZXRhTW9kZWwgPSBhd2FpdCBnZXRNZXRhTW9kZWwoc01ldGFkYXRhVXJsKTtcblx0Y29uc3Qgb1ZpZXdEb2N1bWVudCA9IF9sb2FkUmVzb3VyY2VWaWV3KG5hbWUpO1xuXHRjb25zdCBvUHJlcHJvY2Vzc29yU2V0dGluZ3MgPSBhd2FpdCBfYnVpbGRQcmVQcm9jZXNzb3JTZXR0aW5ncyhzTWV0YWRhdGFVcmwsIG1CaW5kaW5nQ29udGV4dHMsIG1Nb2RlbHMpO1xuXHRsZXQgb1ByZXByb2Nlc3NlZFZpZXcgPSBhd2FpdCBYTUxQcmVwcm9jZXNzb3IucHJvY2VzcyhvVmlld0RvY3VtZW50LCB7IG5hbWU6IG5hbWUgfSwgb1ByZXByb2Nlc3NvclNldHRpbmdzKTtcblx0aWYgKGZsZXhDaGFuZ2VzKSB7XG5cdFx0b1ByZXByb2Nlc3NlZFZpZXcgPSBhd2FpdCBhcHBseUZsZXhDaGFuZ2VzKGZsZXhDaGFuZ2VzID8/IFtdLCBvTWV0YU1vZGVsLCBvUHJlcHJvY2Vzc2VkVmlldyk7XG5cdH1cblx0cmV0dXJuIHtcblx0XHRhc0VsZW1lbnQ6IG9QcmVwcm9jZXNzZWRWaWV3LFxuXHRcdGFzU3RyaW5nOiBmb3JtYXRYTUwob1ByZXByb2Nlc3NlZFZpZXc/Lm91dGVySFRNTCB8fCBcIlwiKVxuXHR9O1xufVxuXG4vKipcbiAqIFByb2Nlc3MgdGhlIHJlcXVlc3RlZCBYTUwgZnJhZ21lbnQgd2l0aCB0aGUgcHJvdmlkZWQgZGF0YS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBGdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgZnJhZ21lbnQgdG8gYmUgdGVzdGVkLlxuICogQHBhcmFtIHRlc3REYXRhIFRlc3QgZGF0YSBjb25zaXN0aW5nXG4gKiBAcmV0dXJucyBUZW1wbGF0ZWQgZnJhZ21lbnQgYXMgc3RyaW5nXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcm9jZXNzRnJhZ21lbnQobmFtZTogc3RyaW5nLCB0ZXN0RGF0YTogeyBbbW9kZWw6IHN0cmluZ106IG9iamVjdCB9KTogUHJvbWlzZTxzdHJpbmc+IHtcblx0Y29uc3QgaW5wdXRYbWwgPSBgPHJvb3Q+PGNvcmU6RnJhZ21lbnQgZnJhZ21lbnROYW1lPVwiJHtuYW1lfVwiIHR5cGU9XCJYTUxcIiB4bWxuczpjb3JlPVwic2FwLnVpLmNvcmVcIiAvPjwvcm9vdD5gO1xuXHRjb25zdCBwYXJzZXIgPSBuZXcgd2luZG93LkRPTVBhcnNlcigpO1xuXHRjb25zdCBpbnB1dERvYyA9IHBhcnNlci5wYXJzZUZyb21TdHJpbmcoaW5wdXRYbWwsIFwidGV4dC94bWxcIik7XG5cblx0Ly8gYnVpbGQgbW9kZWwgYW5kIGJpbmRpbmdzIGZvciBnaXZlbiB0ZXN0IGRhdGFcblx0Y29uc3Qgc2V0dGluZ3MgPSB7XG5cdFx0bW9kZWxzOiB7fSBhcyB7IFtuYW1lOiBzdHJpbmddOiBKU09OTW9kZWwgfSxcblx0XHRiaW5kaW5nQ29udGV4dHM6IHt9IGFzIHsgW25hbWU6IHN0cmluZ106IG9iamVjdCB9LFxuXHRcdGFwcENvbXBvbmVudDogeyBnZXRTaWRlRWZmZWN0c1NlcnZpY2U6IGplc3QuZm4oKSwgZ2V0RGlhZ25vc3RpY3M6ICgpID0+IHVuZGVmaW5lZCB9XG5cdH07XG5cdGZvciAoY29uc3QgbW9kZWwgaW4gdGVzdERhdGEpIHtcblx0XHRjb25zdCBqc29uTW9kZWwgPSBuZXcgSlNPTk1vZGVsKCk7XG5cdFx0anNvbk1vZGVsLnNldERhdGEodGVzdERhdGFbbW9kZWxdKTtcblx0XHRzZXR0aW5ncy5tb2RlbHNbbW9kZWxdID0ganNvbk1vZGVsO1xuXHRcdHNldHRpbmdzLmJpbmRpbmdDb250ZXh0c1ttb2RlbF0gPSBzZXR0aW5ncy5tb2RlbHNbbW9kZWxdLmNyZWF0ZUJpbmRpbmdDb250ZXh0KFwiL1wiKTtcblx0fVxuXHRzZXR0aW5ncy5hcHBDb21wb25lbnQuZ2V0U2lkZUVmZmVjdHNTZXJ2aWNlLm1vY2tSZXR1cm5WYWx1ZShkZWZhdWx0RmFrZVNpZGVFZmZlY3RTZXJ2aWNlKTtcblxuXHQvLyBleGVjdXRlIHRoZSBwcmUtcHJvY2Vzc29yXG5cdGNvbnN0IHJlc3VsdERvYyA9IGF3YWl0IFhNTFByZXByb2Nlc3Nvci5wcm9jZXNzKGlucHV0RG9jLmZpcnN0RWxlbWVudENoaWxkLCB7IG5hbWUgfSwgc2V0dGluZ3MpO1xuXG5cdC8vIGV4Y2x1ZGUgbmVzdGVkIGZyYWdtZW50cyBmcm9tIHRlc3Qgc25hcHNob3RzXG5cdGNvbnN0IGZyYWdtZW50cyA9IHJlc3VsdERvYy5nZXRFbGVtZW50c0J5VGFnTmFtZShcImNvcmU6RnJhZ21lbnRcIikgYXMgYW55O1xuXHRpZiAoZnJhZ21lbnRzPy5sZW5ndGggPiAwKSB7XG5cdFx0Zm9yIChjb25zdCBmcmFnbWVudCBvZiBmcmFnbWVudHMpIHtcblx0XHRcdGZyYWdtZW50LmlubmVySFRNTCA9IFwiXCI7XG5cdFx0fVxuXHR9XG5cblx0Ly8gS2VlcCB0aGUgZnJhZ21lbnQgcmVzdWx0IGFzIGNoaWxkIG9mIHJvb3Qgbm9kZSB3aGVuIGZyYWdtZW50IGdlbmVyYXRlcyBtdWx0aXBsZSByb290IGNvbnRyb2xzXG5cdGNvbnN0IHhtbFJlc3VsdCA9IHJlc3VsdERvYy5jaGlsZHJlbi5sZW5ndGggPiAxID8gcmVzdWx0RG9jLm91dGVySFRNTCA6IHJlc3VsdERvYy5pbm5lckhUTUw7XG5cblx0cmV0dXJuIGZvcm1hdFhNTCh4bWxSZXN1bHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2VyaWFsaXplQ29udHJvbChjb250cm9sVG9TZXJpYWxpemU6IFVJNUVsZW1lbnQgfCBVSTVFbGVtZW50W10pIHtcblx0bGV0IHRhYkNvdW50ID0gMDtcblx0ZnVuY3Rpb24gZ2V0VGFiKHRvQWRkOiBudW1iZXIgPSAwKSB7XG5cdFx0bGV0IHRhYiA9IFwiXCI7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0YWJDb3VudCArIHRvQWRkOyBpKyspIHtcblx0XHRcdHRhYiArPSBcIlxcdFwiO1xuXHRcdH1cblx0XHRyZXR1cm4gdGFiO1xuXHR9XG5cdGNvbnN0IHNlcmlhbGl6ZURlbGVnYXRlID0ge1xuXHRcdHN0YXJ0OiBmdW5jdGlvbiAoY29udHJvbDogYW55LCBzQWdncmVnYXRpb25OYW1lOiBzdHJpbmcpIHtcblx0XHRcdGxldCBjb250cm9sRGV0YWlsID0gXCJcIjtcblx0XHRcdGlmIChzQWdncmVnYXRpb25OYW1lKSB7XG5cdFx0XHRcdGlmIChjb250cm9sLmdldFBhcmVudCgpKSB7XG5cdFx0XHRcdFx0Y29uc3QgaW5kZXhJblBhcmVudCA9IChjb250cm9sLmdldFBhcmVudCgpLmdldEFnZ3JlZ2F0aW9uKHNBZ2dyZWdhdGlvbk5hbWUpIGFzIE1hbmFnZWRPYmplY3RbXSk/LmluZGV4T2Y/Lihjb250cm9sKTtcblx0XHRcdFx0XHRpZiAoaW5kZXhJblBhcmVudCA+IDApIHtcblx0XHRcdFx0XHRcdGNvbnRyb2xEZXRhaWwgKz0gYCxcXG4ke2dldFRhYigpfWA7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRjb250cm9sRGV0YWlsICs9IGAke2NvbnRyb2wuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCl9KGA7XG5cdFx0XHRyZXR1cm4gY29udHJvbERldGFpbDtcblx0XHR9LFxuXHRcdGVuZDogZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIFwifSlcIjtcblx0XHR9LFxuXHRcdG1pZGRsZTogZnVuY3Rpb24gKGNvbnRyb2w6IGFueSkge1xuXHRcdFx0Y29uc3QgaWQgPSBjb250cm9sLmdldElkKCk7XG5cdFx0XHRsZXQgZGF0YSA9IGB7aWQ6ICR7TWFuYWdlZE9iamVjdE1ldGFkYXRhLmlzR2VuZXJhdGVkSWQoaWQpID8gXCJfX2R5bmFtaWNJZFwiIDogaWR9YDtcblx0XHRcdGZvciAoY29uc3Qgb0NvbnRyb2xLZXkgaW4gY29udHJvbC5tUHJvcGVydGllcykge1xuXHRcdFx0XHRpZiAoY29udHJvbC5tUHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShvQ29udHJvbEtleSkpIHtcblx0XHRcdFx0XHRkYXRhICs9IGAsXFxuJHtnZXRUYWIoKX0gJHtvQ29udHJvbEtleX06ICR7Y29udHJvbC5tUHJvcGVydGllc1tvQ29udHJvbEtleV19YDtcblx0XHRcdFx0fSBlbHNlIGlmIChjb250cm9sLm1CaW5kaW5nSW5mb3MuaGFzT3duUHJvcGVydHkob0NvbnRyb2xLZXkpKSB7XG5cdFx0XHRcdFx0Y29uc3QgYmluZGluZ0RldGFpbCA9IGNvbnRyb2wubUJpbmRpbmdJbmZvc1tvQ29udHJvbEtleV07XG5cdFx0XHRcdFx0ZGF0YSArPSBgLFxcbiR7Z2V0VGFiKCl9ICR7b0NvbnRyb2xLZXl9OiAke0pTT04uc3RyaW5naWZ5KGJpbmRpbmdEZXRhaWwpfWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZvciAoY29uc3Qgb0NvbnRyb2xLZXkgaW4gY29udHJvbC5tQXNzb2NpYXRpb25zKSB7XG5cdFx0XHRcdGlmIChjb250cm9sLm1Bc3NvY2lhdGlvbnMuaGFzT3duUHJvcGVydHkob0NvbnRyb2xLZXkpKSB7XG5cdFx0XHRcdFx0ZGF0YSArPSBgLFxcbiR7Z2V0VGFiKCl9ICR7b0NvbnRyb2xLZXl9OiAke1xuXHRcdFx0XHRcdFx0KGNvbnRyb2wubUFzc29jaWF0aW9uc1tvQ29udHJvbEtleV0/LmpvaW4/LihcIixcIikgPz8gY29udHJvbC5tQXNzb2NpYXRpb25zW29Db250cm9sS2V5XSkgfHwgdW5kZWZpbmVkXG5cdFx0XHRcdFx0fWA7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGZvciAoY29uc3Qgb0NvbnRyb2xLZXkgaW4gY29udHJvbC5tRXZlbnRSZWdpc3RyeSkge1xuXHRcdFx0XHRpZiAoY29udHJvbC5tRXZlbnRSZWdpc3RyeS5oYXNPd25Qcm9wZXJ0eShvQ29udHJvbEtleSkpIHtcblx0XHRcdFx0XHRkYXRhICs9IGAsXFxuJHtnZXRUYWIoKX0gJHtvQ29udHJvbEtleX06IHRydWV9YDtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZGF0YSArPSBgYDtcblx0XHRcdHJldHVybiBkYXRhO1xuXHRcdH0sXG5cdFx0c3RhcnRBZ2dyZWdhdGlvbjogZnVuY3Rpb24gKGNvbnRyb2w6IGFueSwgc05hbWU6IHN0cmluZykge1xuXHRcdFx0bGV0IG91dCA9IGAsXFxuJHtnZXRUYWIoKX0ke3NOYW1lfWA7XG5cdFx0XHR0YWJDb3VudCsrO1xuXG5cdFx0XHRpZiAoY29udHJvbC5tQmluZGluZ0luZm9zW3NOYW1lXSkge1xuXHRcdFx0XHRvdXQgKz0gYD17IHBhdGg6JyR7Y29udHJvbC5tQmluZGluZ0luZm9zW3NOYW1lXS5wYXRofScsIHRlbXBsYXRlOlxcbiR7Z2V0VGFiKCl9YDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdG91dCArPSBgPVtcXG4ke2dldFRhYigpfWA7XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gb3V0O1xuXHRcdH0sXG5cdFx0ZW5kQWdncmVnYXRpb246IGZ1bmN0aW9uIChjb250cm9sOiBhbnksIHNOYW1lOiBzdHJpbmcpIHtcblx0XHRcdHRhYkNvdW50LS07XG5cdFx0XHRpZiAoY29udHJvbC5tQmluZGluZ0luZm9zW3NOYW1lXSkge1xuXHRcdFx0XHRyZXR1cm4gYFxcbiR7Z2V0VGFiKCl9fWA7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXR1cm4gYFxcbiR7Z2V0VGFiKCl9XWA7XG5cdFx0XHR9XG5cdFx0fVxuXHR9O1xuXHRpZiAoQXJyYXkuaXNBcnJheShjb250cm9sVG9TZXJpYWxpemUpKSB7XG5cdFx0cmV0dXJuIGNvbnRyb2xUb1NlcmlhbGl6ZS5tYXAoKGNvbnRyb2xUb1JlbmRlcjogVUk1RWxlbWVudCkgPT4ge1xuXHRcdFx0cmV0dXJuIG5ldyBTZXJpYWxpemVyKGNvbnRyb2xUb1JlbmRlciwgc2VyaWFsaXplRGVsZWdhdGUpLnNlcmlhbGl6ZSgpO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiBuZXcgU2VyaWFsaXplcihjb250cm9sVG9TZXJpYWxpemUsIHNlcmlhbGl6ZURlbGVnYXRlKS5zZXJpYWxpemUoKTtcblx0fVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXdhaXRlcigpIHtcblx0bGV0IGZuUmVzb2x2ZSE6IEZ1bmN0aW9uO1xuXHRjb25zdCBteVByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXHRcdGZuUmVzb2x2ZSA9IHJlc29sdmU7XG5cdH0pO1xuXHRyZXR1cm4geyBwcm9taXNlOiBteVByb21pc2UsIHJlc29sdmU6IGZuUmVzb2x2ZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyQnVpbGRpbmdCbG9ja1dpdGhNb2RlbHMoYnVpbGRpbmdCbG9jazogeyBnZXRDb250ZW50OiBGdW5jdGlvbiB9LCBtb2RlbHM6IHsgW2tleTogc3RyaW5nXTogTW9kZWwgfSk6IENvbnRyb2wge1xuXHRyZXR1cm4gKE1hbmFnZWRPYmplY3QgYXMgTWFuYWdlZE9iamVjdEV4KS5ydW5XaXRoUHJlcHJvY2Vzc29ycyhcblx0XHQoKSA9PiB7XG5cdFx0XHRyZXR1cm4gYnVpbGRpbmdCbG9jay5nZXRDb250ZW50KCk7XG5cdFx0fSxcblx0XHR7XG5cdFx0XHRzZXR0aW5nczogZnVuY3Rpb24gKGNvbnRyb2xTZXR0aW5nczogeyBtb2RlbHM6IHVua25vd24gfSkge1xuXHRcdFx0XHRjb250cm9sU2V0dGluZ3MubW9kZWxzID0gbW9kZWxzO1xuXHRcdFx0XHRyZXR1cm4gY29udHJvbFNldHRpbmdzO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyTW9ja0ZyYWdtZW50cyguLi5mcmFnbWVudHM6IE1vY2tGcmFnbWVudFtdKTogamVzdC5TcHlJbnN0YW5jZSB7XG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cdGNvbnN0IG9yaWdpbmFsTG9hZFRlbXBsYXRlID0gKFhNTFRlbXBsYXRlUHJvY2Vzc29yIGFzIGFueSkubG9hZFRlbXBsYXRlUHJvbWlzZTtcblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcblx0Y29uc3QgbG9hZFRlbXBsYXRlU3R1YiA9IGplc3Quc3B5T24oWE1MVGVtcGxhdGVQcm9jZXNzb3IgYXMgYW55LCBcImxvYWRUZW1wbGF0ZVByb21pc2VcIik7XG5cdGxvYWRUZW1wbGF0ZVN0dWIubW9ja0ltcGxlbWVudGF0aW9uKCgodGVtcGxhdGVOYW1lOiBzdHJpbmcsIGV4dGVuc2lvbjogc3RyaW5nKSA9PiB7XG5cdFx0Zm9yIChjb25zdCBmcmFnbWVudCBvZiBmcmFnbWVudHMpIHtcblx0XHRcdGlmIChmcmFnbWVudC5uYW1lID09PSB0ZW1wbGF0ZU5hbWUpIHtcblx0XHRcdFx0cmV0dXJuIHBhcnNlWE1MU3RyaW5nKGZyYWdtZW50LmNvbnRlbnQpWzBdO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gb3JpZ2luYWxMb2FkVGVtcGxhdGUodGVtcGxhdGVOYW1lLCBleHRlbnNpb24pO1xuXHR9KSBhcyAoKCkgPT4gRWxlbWVudCkgfCB1bmRlZmluZWQpO1xuXHRyZXR1cm4gbG9hZFRlbXBsYXRlU3R1Yjtcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7O0VBK0RBQSxHQUFHLENBQUNDLFFBQVEsQ0FBQyxDQUFDLEVBQVMsa0NBQWtDLENBQUM7RUFDMURDLElBQUksQ0FBQ0MsVUFBVSxDQUFDLEtBQUssQ0FBQztFQUV0QixNQUFNQyxZQUFZLEdBQUc7SUFDcEJDLE1BQU0sRUFBRSxlQUFlO0lBQ3ZCQyxLQUFLLEVBQUUsZUFBZTtJQUN0QkMsVUFBVSxFQUFFLHFCQUFxQjtJQUNqQ0MsU0FBUyxFQUFFLGtFQUFrRTtJQUM3RUMsR0FBRyxFQUFFLGtFQUFrRTtJQUN2RUMsUUFBUSxFQUFFLDBFQUEwRTtJQUNwRkMsT0FBTyxFQUFFLHNCQUFzQjtJQUMvQkMsUUFBUSxFQUFFLHdCQUF3QjtJQUNsQ0MsSUFBSSxFQUFFLGFBQWE7SUFDbkJDLEVBQUUsRUFBRSxXQUFXO0lBQ2ZDLENBQUMsRUFBRSxPQUFPO0lBQ1ZDLENBQUMsRUFBRSxvQkFBb0I7SUFDdkJDLEVBQUUsRUFBRSxXQUFXO0lBQ2ZDLGFBQWEsRUFBRSx3QkFBd0I7SUFDdkNDLEdBQUcsRUFBRSxZQUFZO0lBQ2pCQyxLQUFLLEVBQUUsMEJBQTBCO0lBQ2pDQyxRQUFRLEVBQUUsa0JBQWtCO0lBQzVCQyxRQUFRLEVBQUUsa0JBQWtCO0lBQzVCQyxDQUFDLEVBQUUsZ0JBQWdCO0lBQ25CQyxlQUFlLEVBQUUsMEJBQTBCO0lBQzNDQyxVQUFVLEVBQUUseUJBQXlCO0lBQ3JDQyxVQUFVLEVBQUU7RUFDYixDQUFDO0VBQ0QsTUFBTUMsTUFBTSxHQUFHQyxLQUFLLENBQUNDLGFBQWEsQ0FBQ3pCLFlBQVksQ0FBQztFQUVoRCxNQUFNMEIsNEJBQTRCLEdBQUc7SUFBRUMsb0JBQW9CLEVBQUUsTUFBTTtFQUFHLENBQUM7RUFFdkUsU0FBU0MscUJBQXFCLENBQUNDLE1BQVksRUFBRUMsUUFBZ0IsRUFBVTtJQUN0RTtBQUNEO0FBQ0E7QUFDQTtJQUNDLE1BQU1DLFFBQVEsR0FBRyxPQUFPO0lBQ3hCLE9BQVEsR0FBRUYsTUFBTSxDQUFDRyxRQUFRLEtBQUssTUFBTSxJQUFJLENBQUNGLFFBQVEsQ0FBQ0csVUFBVSxDQUFDRixRQUFRLENBQUMsR0FBR0EsUUFBUSxHQUFHLEVBQUcsR0FBRUQsUUFBUyxFQUFDO0VBQ3BHO0VBRUEsZUFBZUksMEJBQTBCLENBQ3hDQyxZQUFvQixFQUNwQkMsZ0JBQXlDLEVBQ3pDQyxPQUE2QixFQUM3QkMscUJBQStCLEVBQ0s7SUFDcEMsTUFBTUMsVUFBVSxHQUFHLE1BQU1DLFlBQVksQ0FBQ0wsWUFBWSxDQUFDOztJQUVuRDtJQUNBO0lBQ0EsSUFBSSxDQUFDRSxPQUFPLENBQUNJLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO01BQ2hESixPQUFPLEdBQUdLLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDTixPQUFPLEVBQUU7UUFBRU8sZ0JBQWdCLEVBQUUsSUFBSUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUFFTixVQUFVO01BQUUsQ0FBQyxDQUFDO0lBQzFGO0lBRUFHLE1BQU0sQ0FBQ0ksSUFBSSxDQUFDVCxPQUFPLENBQUMsQ0FBQ1UsT0FBTyxDQUFDLFVBQVVDLFVBQVUsRUFBRTtNQUNsRCxJQUFJWCxPQUFPLENBQUNXLFVBQVUsQ0FBQyxJQUFJWCxPQUFPLENBQUNXLFVBQVUsQ0FBQyxDQUFDQyxlQUFlLEVBQUU7UUFDL0RaLE9BQU8sQ0FBQ1csVUFBVSxDQUFDLEdBQUcsSUFBSUgsYUFBYSxDQUFDUixPQUFPLENBQUNXLFVBQVUsQ0FBQyxDQUFDRSxJQUFJLEVBQUVYLFVBQVUsQ0FBQztNQUM5RTtJQUNELENBQUMsQ0FBQztJQUVGLE1BQU1ZLFFBQWEsR0FBRztNQUNyQkMsTUFBTSxFQUFFVixNQUFNLENBQUNDLE1BQU0sQ0FDcEI7UUFDQ1UsU0FBUyxFQUFFZDtNQUNaLENBQUMsRUFDREYsT0FBTyxDQUNQO01BQ0RpQixlQUFlLEVBQUUsQ0FBQyxDQUFDO01BQ25CQyxZQUFZLEVBQUU7UUFBRUMscUJBQXFCLEVBQUUxRCxJQUFJLENBQUMyRCxFQUFFLEVBQUU7UUFBRUMsY0FBYyxFQUFFLE1BQU1DO01BQVU7SUFDbkYsQ0FBQztJQUVEUixRQUFRLENBQUNJLFlBQVksQ0FBQ0MscUJBQXFCLENBQUNJLGVBQWUsQ0FBQ3RCLHFCQUFxQixJQUFJWiw0QkFBNEIsQ0FBQztJQUNsSDtJQUNBZ0IsTUFBTSxDQUFDSSxJQUFJLENBQUNWLGdCQUFnQixDQUFDLENBQUNXLE9BQU8sQ0FBQyxVQUFVYyxJQUFJLEVBQUU7TUFDckQ7TUFDQUMsTUFBTSxDQUFDLE9BQU92QixVQUFVLENBQUN3QixTQUFTLENBQUMzQixnQkFBZ0IsQ0FBQ3lCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQ0csV0FBVyxFQUFFO01BQ3pFLE1BQU1DLE1BQU0sR0FBRzVCLE9BQU8sQ0FBQ3dCLElBQUksQ0FBQyxJQUFJdEIsVUFBVTtNQUMxQ1ksUUFBUSxDQUFDRyxlQUFlLENBQUNPLElBQUksQ0FBQyxHQUFHSSxNQUFNLENBQUNDLG9CQUFvQixDQUFDOUIsZ0JBQWdCLENBQUN5QixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDdEZWLFFBQVEsQ0FBQ0MsTUFBTSxDQUFDUyxJQUFJLENBQUMsR0FBR0ksTUFBTTtJQUMvQixDQUFDLENBQUM7SUFDRixPQUFPZCxRQUFRO0VBQ2hCO0VBRUEsU0FBU2dCLGlCQUFpQixDQUFDQyxRQUFnQixFQUFXO0lBQ3JELE1BQU1DLElBQUksR0FBR0QsUUFBUSxDQUFDRSxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxHQUFHLFdBQVc7SUFDdkQsTUFBTUMsSUFBSSxHQUFHQyxnQkFBZ0IsQ0FBQ0MsWUFBWSxDQUFDSixJQUFJLENBQUM7SUFDaEQsT0FBT0UsSUFBSSxDQUFDRyxlQUFlO0VBQzVCO0VBRU8sTUFBTUMsYUFBYSxHQUFHLFVBQVU3QyxRQUFnQixFQUFFRCxNQUF3QixFQUFFO0lBQ2xGLE9BQU9OLE1BQU0sQ0FBQ08sUUFBUSxFQUFFRCxNQUFNLENBQUM7RUFDaEMsQ0FBQztFQUVEaUMsTUFBTSxDQUFDYyxNQUFNLENBQUM7SUFDYkMsYUFBYSxDQUFDaEQsTUFBTSxFQUFFQyxRQUFRLEVBQUU7TUFDL0IsTUFBTWdELEtBQUssR0FBR0gsYUFBYSxDQUFDL0MscUJBQXFCLENBQUNDLE1BQU0sRUFBRUMsUUFBUSxDQUFDLEVBQUVELE1BQU0sQ0FBQztNQUM1RSxPQUFPO1FBQ05rRCxPQUFPLEVBQUUsTUFBTTtVQUNkLE1BQU1DLFNBQVMsR0FBR0MsWUFBWSxDQUFDcEQsTUFBTSxDQUFDO1VBQ3RDLE9BQVEsa0NBQWlDQyxRQUFTLHdCQUF1QmtELFNBQVUsRUFBQztRQUNyRixDQUFDO1FBQ0RFLElBQUksRUFBRUosS0FBSyxJQUFJQSxLQUFLLENBQUNLLE1BQU0sSUFBSTtNQUNoQyxDQUFDO0lBQ0YsQ0FBQztJQUNEQyxnQkFBZ0IsQ0FBQ3ZELE1BQU0sRUFBRUMsUUFBUSxFQUFFO01BQ2xDLE1BQU1nRCxLQUFLLEdBQUdILGFBQWEsQ0FBQy9DLHFCQUFxQixDQUFDQyxNQUFNLEVBQUVDLFFBQVEsQ0FBQyxFQUFFRCxNQUFNLENBQUM7TUFDNUUsT0FBTztRQUNOa0QsT0FBTyxFQUFFLE1BQU07VUFDZCxNQUFNQyxTQUFTLEdBQUdDLFlBQVksQ0FBQ3BELE1BQU0sQ0FBQztVQUN0QyxPQUFRLCtCQUE4QkMsUUFBUyx3QkFBdUJrRCxTQUFVLEVBQUM7UUFDbEYsQ0FBQztRQUNERSxJQUFJLEVBQUVKLEtBQUssSUFBSUEsS0FBSyxDQUFDSyxNQUFNLEtBQUs7TUFDakMsQ0FBQztJQUNGLENBQUM7SUFDRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtJQUNDRSxzQkFBc0IsQ0FBQ0MsR0FBa0IsRUFBRTtNQUMxQyxNQUFNQyxPQUFPLEdBQUcsT0FBT0QsR0FBRyxLQUFLLFFBQVEsR0FBR0EsR0FBRyxHQUFHTCxZQUFZLENBQUNLLEdBQUcsQ0FBQztNQUNqRSxNQUFNRSxhQUF1QixHQUFHRCxPQUFPLENBQUNFLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxJQUFLLEVBQWU7TUFDckcsTUFBTUMsYUFBdUIsR0FBR0YsYUFBYSxDQUFDRyxHQUFHLENBQUVaLE9BQWUsSUFBSztRQUN0RSxJQUFJQSxPQUFPLElBQUlBLE9BQU8sQ0FBQ0ksTUFBTSxHQUFHLENBQUMsRUFBRTtVQUFBO1VBQ2xDLE9BQU9TLElBQUksQ0FBQyxtQkFBQWIsT0FBTyxDQUFDVSxLQUFLLENBQUMsVUFBVSxDQUFDLHNFQUF6QixlQUE0QixDQUFDLENBQUMsb0RBQTlCLGdCQUFnQ0ksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFJLEVBQUUsQ0FBQztRQUM1RDtRQUNBLE9BQU8sRUFBRTtNQUNWLENBQUMsQ0FBQztNQUNGLElBQUlILGFBQWEsQ0FBQ1AsTUFBTSxJQUFJLENBQUMsRUFBRTtRQUM5QixPQUFPO1VBQ05KLE9BQU8sRUFBRSxNQUFPLCtCQUE4QjtVQUM5Q0csSUFBSSxFQUFFO1FBQ1AsQ0FBQztNQUNGLENBQUMsTUFBTTtRQUNOLE9BQU87VUFDTkgsT0FBTyxFQUFFLE1BQU1XLGFBQWEsQ0FBQ0ksSUFBSSxDQUFDLElBQUksQ0FBQztVQUN2Q1osSUFBSSxFQUFFO1FBQ1AsQ0FBQztNQUNGO0lBQ0Q7RUFDRCxDQUFDLENBQUM7RUFBQztFQUVJLE1BQU1hLHNCQUFzQixHQUFHLFVBQVVDLFNBQTRCLEVBQVU7SUFDckYsSUFBSUMsS0FBSyxDQUFDQyxPQUFPLENBQUNGLFNBQVMsQ0FBQyxFQUFFO01BQzdCQSxTQUFTLEdBQUdBLFNBQVMsQ0FBQ0YsSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUMvQjtJQUNBLE9BQU9LLFNBQVMsQ0FBQ0gsU0FBUyxDQUFDO0VBQzVCLENBQUM7RUFBQztFQUVLLE1BQU1JLG1CQUFtQixHQUFHLFVBQVVDLGVBQXVCLEVBQUVDLGFBQXFCLEVBQUVDLE1BQVksRUFBRTtJQUMxRyxNQUFNekUsUUFBUSxHQUFJLFVBQVNGLHFCQUFxQixDQUFDMkUsTUFBTSxFQUFFRixlQUFlLENBQUUsS0FBSUMsYUFBYyxHQUFFO0lBQzlGLE9BQU8zQixhQUFhLENBQUM3QyxRQUFRLEVBQUV5RSxNQUFNLENBQUM7RUFDdkMsQ0FBQzs7RUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQU5BO0VBT08sTUFBTXRCLFlBQVksR0FBRyxVQUFVc0IsTUFBWSxFQUFFekUsUUFBaUIsRUFBRTtJQUN0RSxNQUFNMEUsVUFBVSxHQUFHLElBQUlDLE1BQU0sQ0FBQ0MsYUFBYSxFQUFFO0lBQzdDLElBQUlWLFNBQWlCO0lBQ3JCLElBQUlsRSxRQUFRLEVBQUU7TUFDYixNQUFNZ0QsS0FBSyxHQUFHSCxhQUFhLENBQUM3QyxRQUFRLEVBQUV5RSxNQUFNLENBQVc7TUFDdkRQLFNBQVMsR0FBR2xCLEtBQUssQ0FBQ2EsR0FBRyxDQUFFZ0IsSUFBSSxJQUFLSCxVQUFVLENBQUNJLGlCQUFpQixDQUFDRCxJQUFJLENBQUMsQ0FBQyxDQUFDYixJQUFJLENBQUMsSUFBSSxDQUFDO0lBQy9FLENBQUMsTUFBTTtNQUNORSxTQUFTLEdBQUdRLFVBQVUsQ0FBQ0ksaUJBQWlCLENBQUNMLE1BQU0sQ0FBQztJQUNqRDtJQUNBLE9BQU9KLFNBQVMsQ0FBQ0gsU0FBUyxDQUFDO0VBQzVCLENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVZBO0VBV08sTUFBTUcsU0FBUyxHQUFHLFVBQVVILFNBQWlCLEVBQVU7SUFDN0QsTUFBTWEsS0FBSyxHQUFHLFdBQVc7TUFDeEJDLEdBQUcsR0FBRyxZQUFZO01BQ2xCQyxHQUFHLEdBQUcsd0JBQXdCO01BQzlCQyxLQUFlLEdBQUcsRUFBRTtJQUVyQixJQUFJQyxXQUFXLEdBQUcsRUFBRTtNQUNuQkMsS0FBSyxHQUFHLENBQUMsQ0FBQztNQUNWQyxVQUE4QyxHQUFHLEVBQUU7SUFFcEQsU0FBU0MsT0FBTyxHQUFHO01BQ2xCLElBQUlILFdBQVcsSUFBSUEsV0FBVyxLQUFLSixLQUFLLEVBQUU7UUFDekNHLEtBQUssQ0FBQ0ssSUFBSSxDQUFDSixXQUFXLENBQUM7TUFDeEI7TUFFQUEsV0FBVyxHQUFHQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQ0ksTUFBTSxDQUFDSixLQUFLLENBQUMsR0FBRyxFQUFFO0lBQ2xEO0lBRUEsU0FBU0ssZ0JBQWdCLEdBQUc7TUFDM0IsSUFBSUosVUFBVSxDQUFDaEMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUMxQjtRQUNBZ0MsVUFBVSxHQUFHQSxVQUFVLENBQUNLLE9BQU8sRUFBRTtRQUVqQ04sS0FBSyxFQUFFO1FBQ1AsS0FBSyxNQUFNTyxTQUFTLElBQUlOLFVBQVUsRUFBRTtVQUNuQ0MsT0FBTyxFQUFFO1VBQ1RILFdBQVcsSUFBSVEsU0FBUyxDQUFDcEQsSUFBSTtVQUM3QixJQUFJb0QsU0FBUyxDQUFDQyxLQUFLLEVBQUVULFdBQVcsSUFBSVEsU0FBUyxDQUFDQyxLQUFLO1FBQ3BEO1FBQ0FSLEtBQUssRUFBRTtRQUNQQyxVQUFVLEdBQUcsRUFBRTtRQUNmQyxPQUFPLEVBQUU7TUFDVjtJQUNEO0lBRUEsU0FBU08sTUFBTSxDQUFDekUsSUFBVyxFQUFFO01BQzVCK0QsV0FBVyxJQUFJVyxNQUFNLENBQUNDLElBQUksQ0FBQzNFLElBQUksQ0FBQztJQUNqQztJQUVBLE1BQU0wRSxNQUFNLEdBQUdFLFlBQVksQ0FBQztNQUMzQkMsY0FBYyxDQUFDN0UsSUFBVyxFQUFFO1FBQzNCa0UsT0FBTyxFQUFFO1FBQ1RPLE1BQU0sQ0FBQ3pFLElBQUksQ0FBQztNQUNiLENBQUM7TUFFRDhFLGFBQWEsRUFBRUwsTUFBTTtNQUVyQk0sVUFBVSxDQUFDL0UsSUFBVyxFQUFFO1FBQ3ZCaUUsVUFBVSxDQUFDZSxPQUFPLENBQUM7VUFBRTdELElBQUksRUFBRXVELE1BQU0sQ0FBQ0MsSUFBSSxDQUFDM0UsSUFBSTtRQUFFLENBQUMsQ0FBQztNQUNoRCxDQUFDO01BRURpRixXQUFXLENBQUNqRixJQUFzQixFQUFFO1FBQ25DaUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDTyxLQUFLLEdBQUdFLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDM0UsSUFBSSxDQUFDLENBQUNvQixPQUFPLENBQUN5QyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQztNQUNsRSxDQUFDOztNQUVEcUIsWUFBWSxDQUFDbEYsSUFBdUIsRUFBRTtRQUNyQ3FFLGdCQUFnQixFQUFFO1FBQ2xCSSxNQUFNLENBQUN6RSxJQUFJLENBQUM7UUFDWixJQUFJLENBQUNBLElBQUksQ0FBQ21GLFVBQVUsRUFBRW5CLEtBQUssRUFBRTtNQUM5QixDQUFDO01BRURvQixlQUFlLENBQUNwRixJQUFXLEVBQUU7UUFDNUJnRSxLQUFLLEVBQUU7UUFDUEUsT0FBTyxFQUFFO1FBQ1RPLE1BQU0sQ0FBQ3pFLElBQUksQ0FBQztNQUNiLENBQUM7TUFFRHFGLGNBQWMsRUFBRVosTUFBTTtNQUN0QmEsYUFBYSxFQUFFYjtJQUNoQixDQUFDLENBQUM7SUFFRkMsTUFBTSxDQUFDYSxLQUFLLENBQUM1QixLQUFLLEdBQUdiLFNBQVMsR0FBR2MsR0FBRyxDQUFDO0lBQ3JDLE9BQU9FLEtBQUssQ0FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzRDLElBQUksRUFBRTtFQUMvQixDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFQQTtFQVFPLE1BQU1DLFVBQVUsR0FBRyxVQUFVQyxNQUFjLEVBQXVDO0lBQUEsSUFBckNDLE9BQThCLHVFQUFHLENBQUMsQ0FBQztJQUN0RixNQUFNQyxTQUFTLEdBQUdDLEVBQUUsQ0FBQ0MsWUFBWSxDQUFDSixNQUFNLEVBQUUsT0FBTyxDQUFDO0lBQ2xELE1BQU1LLFdBQVcsR0FBR0MsUUFBUSxDQUFDSixTQUFTLEVBQUUseUJBQXlCLEVBQUVELE9BQU8sQ0FBQztJQUMzRSxNQUFNTSxHQUFHLEdBQUdDLElBQUksQ0FBQ0MsT0FBTyxDQUFDVCxNQUFNLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQzs7SUFFN0M7SUFDQTtJQUNBLE1BQU1VLFVBQVUsR0FBRzVHLE1BQU0sQ0FBQzZHLE9BQU8sQ0FBQ1YsT0FBTyxDQUFDO0lBQzFDUyxVQUFVLENBQUNFLElBQUksQ0FBQyxDQUFDQyxDQUFDLEVBQUVDLENBQUMsS0FBS0EsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDQyxhQUFhLENBQUNGLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRW5ELE1BQU1HLFlBQVksR0FDakJOLFVBQVUsQ0FBQ08sTUFBTSxDQUNoQixDQUFDQyxRQUFRO01BQUEsSUFBRSxDQUFDQyxTQUFTLEVBQUVDLFdBQVcsQ0FBQztNQUFBLE9BQU0sR0FBRUYsUUFBUyxJQUFHQyxTQUFVLElBQUdDLFdBQVcsQ0FBQ0MsUUFBUSxFQUFHLEdBQUU7SUFBQSxHQUM3RmIsSUFBSSxDQUFDYyxRQUFRLENBQUN0QixNQUFNLENBQUMsQ0FBQ3RFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQ3pDLEdBQUcsTUFBTTtJQUVYLE1BQU02RixZQUFZLEdBQUdmLElBQUksQ0FBQ0MsT0FBTyxDQUFDRixHQUFHLEVBQUVTLFlBQVksQ0FBQztJQUVwRGIsRUFBRSxDQUFDcUIsU0FBUyxDQUFDakIsR0FBRyxFQUFFO01BQUVrQixTQUFTLEVBQUU7SUFBSyxDQUFDLENBQUM7SUFFdEN0QixFQUFFLENBQUN1QixhQUFhLENBQUNILFlBQVksRUFBRWxCLFdBQVcsQ0FBQztJQUMzQyxPQUFPa0IsWUFBWTtFQUNwQixDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFQQTtFQVFPLFNBQVNqQixRQUFRLENBQUNxQixHQUFXLEVBQTRFO0lBQUEsSUFBMUVDLE9BQU8sdUVBQUcseUJBQXlCO0lBQUEsSUFBRTNCLE9BQThCLHVFQUFHLENBQUMsQ0FBQztJQUM3RyxNQUFNNEIsT0FBK0IsR0FBRztNQUFFLFlBQVksRUFBRUY7SUFBSSxDQUFDOztJQUU3RDtJQUNBLElBQUlBLEdBQUcsQ0FBQ0csUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQUU7TUFDdENELE9BQU8sQ0FBQyxZQUFZLENBQUMsR0FBRzFCLEVBQUUsQ0FBQ0MsWUFBWSxDQUFDMkIsT0FBTyxDQUFDdEIsT0FBTyxDQUFDLHFCQUFxQixDQUFDLEVBQUUsT0FBTyxDQUFDO0lBQ3pGO0lBRUEsTUFBTXVCLEdBQUcsR0FBR0MsUUFBUSxDQUFDQyxjQUFjLENBQUNMLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVoRCxNQUFNTSxXQUFrQyxHQUFHO01BQzFDQyxnQkFBZ0IsRUFBRSxJQUFJO01BQ3RCQyxXQUFXLEVBQUUsWUFBWTtNQUN6QkMsZ0JBQWdCLEVBQUUsSUFBSTtNQUN0QixHQUFHckMsT0FBTztNQUNWMkIsT0FBTyxFQUFFQTtJQUNWLENBQUM7SUFFRCxNQUFNVyxJQUFJLEdBQUdOLFFBQVEsQ0FBQ08sRUFBRSxDQUFDRCxJQUFJLENBQUNQLEdBQUcsRUFBRUcsV0FBVyxDQUFDO0lBQy9DLElBQUksQ0FBQ0ksSUFBSSxFQUFFO01BQ1YsTUFBTSxJQUFJRSxLQUFLLENBQUUsMEVBQXlFYixPQUFRLEdBQUUsQ0FBQztJQUN0RztJQUNBLE9BQU9XLElBQUk7RUFDWjtFQUFDO0VBRU0sTUFBTUcseUJBQXlCLEdBQUcsZ0JBQ3hDakksU0FBeUIsRUFFSztJQUFBLElBRDlCa0ksbUJBQW1CLHVFQUFHLGtDQUFrQztJQUV4RCxNQUFNQyxXQUFXLEdBQUc7TUFDbkJDLFFBQVEsRUFBRSxNQUFNO1FBQ2YsT0FBTztVQUNOQyxHQUFHLEVBQUUsTUFBTUgsbUJBQW1CLEtBQUssa0NBQWtDO1VBQ3JFL0ksWUFBWSxFQUFFLE1BQU07WUFDbkIsT0FBT2EsU0FBUztVQUNqQjtRQUNELENBQUM7TUFDRixDQUFDO01BQ0RzSSxVQUFVLEVBQUUsTUFBTTtRQUNqQixPQUFPO1VBQ05DLGVBQWUsRUFBRSxNQUFNakk7UUFDeEIsQ0FBQztNQUNGO0lBQ0QsQ0FBQztJQUNELE1BQU1rSSxlQUFlLEdBQUcsTUFBTSxJQUFJQyxrQkFBa0IsRUFBRSxDQUFDQyxjQUFjLENBQUM7TUFBRVAsV0FBVztNQUFFUSxTQUFTLEVBQUUsRUFBRTtNQUFFN0ksUUFBUSxFQUFFLENBQUM7SUFBRSxDQUFDLENBQUM7SUFDbkgsT0FBTzBJLGVBQWUsQ0FBQ0ksWUFBWSxFQUFFO0VBQ3RDLENBQUM7RUFBQztFQUVLLE1BQU1DLGtCQUFrQixHQUFHLFlBQTBCO0lBQzNELE1BQU1DLE1BQWEsR0FBRyxFQUFFO0lBQ3hCLE9BQU87TUFDTkMsUUFBUSxDQUFDQyxhQUE0QixFQUFFQyxhQUE0QixFQUFFQyxPQUFlLEVBQVE7UUFDM0ZKLE1BQU0sQ0FBQzlFLElBQUksQ0FBQztVQUNYZ0YsYUFBYTtVQUNiQyxhQUFhO1VBQ2JDO1FBQ0QsQ0FBQyxDQUFDO01BQ0gsQ0FBQztNQUNEQyxTQUFTLEdBQVU7UUFDbEIsT0FBT0wsTUFBTTtNQUNkLENBQUM7TUFDRE0sa0JBQWtCLENBQUNKLGFBQTRCLEVBQUVDLGFBQTRCLEVBQUVDLE9BQWUsRUFBVztRQUN4RyxPQUFPSixNQUFNLENBQUNPLElBQUksQ0FBRUMsS0FBSyxJQUFLO1VBQzdCLE9BQU9BLEtBQUssQ0FBQ04sYUFBYSxLQUFLQSxhQUFhLElBQUlNLEtBQUssQ0FBQ0wsYUFBYSxLQUFLQSxhQUFhLElBQUlLLEtBQUssQ0FBQ0osT0FBTyxLQUFLQSxPQUFPO1FBQ25ILENBQUMsQ0FBQztNQUNIO0lBQ0QsQ0FBQztFQUNGLENBQUM7RUFBQztFQUVLLE1BQU1LLDBCQUEwQixHQUFHLFVBQ3pDQyxjQUFpQyxFQUNqQ0MsZ0JBQXlFLEVBQ3hFO0lBQ0QsTUFBTUMsU0FBUyxHQUFHRixjQUFjLENBQUNHLFVBQVUsQ0FBQ04sSUFBSSxDQUFFTyxFQUFFLElBQUtBLEVBQUUsQ0FBQzVJLElBQUksS0FBS3lJLGdCQUFnQixDQUFDQyxTQUFTLENBQUM7SUFDaEcsTUFBTUcsYUFBYSxHQUFHQyxpQ0FBaUMsQ0FBQ0osU0FBUyxFQUFlRixjQUFjLEVBQUVFLFNBQVMsQ0FBQztJQUMxRyxPQUFPLElBQUlLLGdCQUFnQixDQUFDUCxjQUFjLEVBQUVDLGdCQUFnQixFQUFFWixrQkFBa0IsRUFBRSxFQUFFbUIsS0FBSyxFQUFFSCxhQUFhLENBQUM7RUFDMUcsQ0FBQztFQUFDO0VBQ0YsTUFBTUksY0FBbUIsR0FBRyxDQUFDLENBQUM7RUFDdkIsTUFBTTlLLFlBQVksR0FBRyxnQkFBZ0JMLFlBQW9CLEVBQUU7SUFDakUsTUFBTW9MLFVBQVUsR0FBR0Msa0JBQWtCLENBQUNDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUU5SixTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdEUsSUFBSSxDQUFDMkosY0FBYyxDQUFDbkwsWUFBWSxDQUFDLEVBQUU7TUFDbEM7TUFDQSxNQUFNSSxVQUFVLEdBQUcsSUFBS21MLGNBQWMsQ0FBU0gsVUFBVSxFQUFFcEwsWUFBWSxFQUFFd0IsU0FBUyxFQUFFO1FBQUVnSyx5QkFBeUIsRUFBRSxNQUFNO01BQUcsQ0FBQyxDQUFDO01BQzVILE1BQU1wTCxVQUFVLENBQUNxTCxvQkFBb0IsRUFBRTtNQUN2Q04sY0FBYyxDQUFDbkwsWUFBWSxDQUFDLEdBQUdJLFVBQVU7SUFDMUM7SUFFQSxPQUFPK0ssY0FBYyxDQUFDbkwsWUFBWSxDQUFDO0VBQ3BDLENBQUM7RUFBQztFQUVLLE1BQU1nTCxpQ0FBaUMsR0FBRyxVQUNoREosU0FBb0IsRUFDcEJGLGNBQWlDLEVBQ2pDZ0IsUUFBK0MsRUFDekI7SUFDdEIsTUFBTUMsVUFBK0IsR0FBRztNQUN2Q0MsaUJBQWlCLEVBQUVoQixTQUFTO01BQzVCaUIsb0JBQW9CLEVBQUUsRUFBRTtNQUN4QkMsWUFBWSxFQUFFSixRQUFRO01BQ3RCSyxlQUFlLEVBQUVuQixTQUFTO01BQzFCb0IsZ0JBQWdCLEVBQUVwQixTQUFTLENBQUNxQixVQUFVO01BQ3RDdkIsY0FBYyxFQUFFQTtJQUNqQixDQUFDO0lBQ0RpQixVQUFVLENBQUNPLGVBQWUsR0FBR1AsVUFBVTtJQUN2QyxPQUFPQSxVQUFVO0VBQ2xCLENBQUM7RUFBQztFQUVLLE1BQU1RLGVBQWUsR0FBRyxVQUFVQyxhQUFxQixFQUFrQjtJQUMvRSxNQUFNQyxjQUFjLEdBQUdDLGFBQWEsQ0FBQ0MsYUFBYSxDQUFDSCxhQUFhLENBQUM7SUFBQyxrQ0FEQUksSUFBSTtNQUFKQSxJQUFJO0lBQUE7SUFFdEUsT0FBT0gsY0FBYyxDQUFDSSxTQUFTLENBQUNDLEtBQUssQ0FBQ2xMLFNBQVMsRUFBRWdMLElBQUksQ0FBQztFQUN2RCxDQUFDO0VBQUM7RUFNRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ08sU0FBU0csd0JBQXdCLENBQ3ZDUCxhQUFpQyxFQUNqQ1EsWUFBMEIsRUFDMUJDLGtCQUEwRCxFQUNqRDtJQUNULE1BQU1SLGNBQWMsR0FBR0MsYUFBYSxDQUFDQyxhQUFhLENBQUNILGFBQWEsQ0FBQztJQUNqRSxNQUFNVSxJQUFJLEdBQUcsSUFBSUMsYUFBYSxFQUFFO0lBQ2hDRCxJQUFJLENBQUNFLFlBQVksQ0FBQyxNQUFNLEVBQUVYLGNBQWMsQ0FBQztJQUV6QyxNQUFNWSxZQUFZLEdBQUcsSUFBSUMsU0FBUyxDQUFDTixZQUFZLENBQUM7SUFDaERFLElBQUksQ0FBQ0ssUUFBUSxDQUFDRixZQUFZLENBQUM7SUFDM0JILElBQUksQ0FBQ00saUJBQWlCLENBQUNILFlBQVksQ0FBQ2xMLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRTlELElBQUk4SyxrQkFBa0IsRUFBRTtNQUN2QixLQUFLLE1BQU0sQ0FBQzNLLElBQUksRUFBRW1MLE9BQU8sQ0FBQyxJQUFJOU0sTUFBTSxDQUFDNkcsT0FBTyxDQUFDeUYsa0JBQWtCLENBQUMsRUFBRTtRQUNqRSxNQUFNUyxLQUFLLEdBQUcsSUFBSUosU0FBUyxDQUFDRyxPQUFPLENBQUM7UUFDcENQLElBQUksQ0FBQ0ssUUFBUSxDQUFDRyxLQUFLLEVBQUVwTCxJQUFJLENBQUM7UUFDMUI0SyxJQUFJLENBQUNNLGlCQUFpQixDQUFDRSxLQUFLLENBQUN2TCxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsRUFBRUcsSUFBSSxDQUFDO01BQzlEO0lBQ0Q7SUFFQSxPQUFPNEssSUFBSSxDQUFDUyxPQUFPLEVBQUU7RUFDdEI7RUFBQztFQUVELE1BQU1DLFVBQVUsR0FBRyxZQUFZO0VBRS9CLE1BQU1DLGdCQUFnQixHQUFHLGdCQUFnQkMsV0FBc0MsRUFBRXROLFVBQXFCLEVBQUV1TixTQUFjLEVBQUU7SUFBQTtJQUN2SDtJQUNBLENBQUMsR0FBR0EsU0FBUyxDQUFDQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDaE4sT0FBTyxDQUFFNEQsSUFBSSxJQUFLO01BQ3pEQSxJQUFJLENBQUNxSixFQUFFLEdBQUksR0FBRUwsVUFBVyxLQUFJaEosSUFBSSxDQUFDcUosRUFBRyxFQUFDO0lBQ3RDLENBQUMsQ0FBQztJQUNGLE1BQU1DLE9BQU8sR0FBR0MsOEJBQThCLENBQUNQLFVBQVUsRUFBRUUsV0FBVyxDQUFDO0lBQ3ZFLE1BQU1NLEtBQUssR0FBRyxlQUFlO0lBQzdCLE1BQU1DLFNBQVMsR0FBRztNQUNqQixTQUFTLEVBQUU7UUFDVkosRUFBRSxFQUFFRyxLQUFLO1FBQ1RFLElBQUksRUFBRSxhQUFhO1FBQ25CQyxlQUFlLEVBQUU7VUFDaEJDLFNBQVMsRUFBRTtRQUNaO01BQ0Q7SUFDRCxDQUFDO0lBQ0QsTUFBTUMsYUFBMkIsR0FBRztNQUNuQzlNLGNBQWMsRUFBRTVELElBQUksQ0FBQzJELEVBQUUsRUFBRSxDQUFDRyxlQUFlLENBQUNzSSxrQkFBa0IsRUFBRSxDQUFDO01BQy9EVCxRQUFRLEVBQUUzTCxJQUFJLENBQUMyRCxFQUFFLEVBQUUsQ0FBQ0csZUFBZSxDQUFDO1FBQ25DcEIsWUFBWSxFQUFFMUMsSUFBSSxDQUFDMkQsRUFBRSxFQUFFLENBQUNHLGVBQWUsQ0FBQ3JCLFVBQVU7TUFDbkQsQ0FBQyxDQUFDO01BQ0ZrTyxnQkFBZ0IsRUFBRTNRLElBQUksQ0FBQzJELEVBQUUsRUFBRSxDQUFDRyxlQUFlLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDL0M4TSxpQkFBaUIsRUFBRTVRLElBQUksQ0FBQzJELEVBQUUsRUFBRSxDQUFDRyxlQUFlLENBQUM7UUFDNUMrTSxRQUFRLEVBQUUsVUFBVXRNLElBQVksRUFBRTtVQUNqQyxPQUFRK0wsU0FBUyxDQUFTL0wsSUFBSSxDQUFDO1FBQ2hDO01BQ0QsQ0FBQyxDQUFDO01BQ0Z1TSxVQUFVLEVBQUU5USxJQUFJLENBQUMyRCxFQUFFLENBQUVvTixHQUFHLElBQUtBLEdBQUc7SUFDakMsQ0FBNEI7SUFDNUI7SUFDQS9RLElBQUksQ0FBQ2dSLEtBQUssQ0FBQ0MsVUFBVSxFQUFFLGNBQWMsQ0FBQyxDQUFDbk4sZUFBZSxDQUFDb04sT0FBTyxDQUFDM0gsT0FBTyxDQUFDNEcsT0FBTyxDQUFDLENBQUM7SUFDaEZuUSxJQUFJLENBQUNnUixLQUFLLENBQUNHLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQ3JOLGVBQWUsQ0FBQ29OLE9BQU8sQ0FBQzNILE9BQU8sQ0FBQzRHLE9BQU8sQ0FBQyxDQUFDO0lBRTVFblEsSUFBSSxDQUFDZ1IsS0FBSyxDQUFDSSxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUN0TixlQUFlLENBQUM0TSxhQUFhLENBQUM7SUFDM0QxUSxJQUFJLENBQUNnUixLQUFLLENBQUNJLFNBQVMsRUFBeUQsa0JBQWtCLENBQUMsQ0FBQ3ROLGVBQWUsQ0FBQzRNLGFBQWEsQ0FBQztJQUMvSDFRLElBQUksQ0FBQ2dSLEtBQUssQ0FBQ0ssS0FBSyxFQUFFLDJCQUEyQixDQUFDLENBQUN2TixlQUFlLENBQUM0TSxhQUFhLENBQUM7SUFDN0UsTUFBTVksU0FBUyxDQUFDQyxVQUFVLENBQUM7TUFDMUJDLFdBQVcsRUFBRW5CO0lBQ2QsQ0FBQyxDQUFDO0lBQ0ZMLFNBQVMsR0FBRyxNQUFNeUIsZUFBZSxDQUFDQyxPQUFPLENBQUMxQixTQUFTLEVBQUU7TUFBRXpMLElBQUksRUFBRSxlQUFlO01BQUVpTixXQUFXLEVBQUVuQixLQUFLO01BQUVILEVBQUUsRUFBRUw7SUFBVyxDQUFDLENBQUM7O0lBRW5IO0lBQ0EsTUFBTThCLGNBQWMsR0FBR0MsaUJBQWlCLENBQUM1QixTQUFTLENBQUM7SUFDbkRoTSxNQUFNLENBQUMyTixjQUFjLENBQUN0TSxNQUFNLENBQUMsQ0FBQ3dNLElBQUksQ0FBQyxDQUFBOUIsV0FBVyxhQUFYQSxXQUFXLCtDQUFYQSxXQUFXLENBQUVJLE9BQU8seURBQXBCLHFCQUFzQjlLLE1BQU0sS0FBSSxDQUFDLElBQUcwSyxXQUFXLGFBQVhBLFdBQVcsZ0RBQVhBLFdBQVcsQ0FBRStCLDhCQUE4QiwwREFBM0Msc0JBQTZDek0sTUFBTSxLQUFJLENBQUMsQ0FBQztJQUNoSSxPQUFPMkssU0FBUztFQUNqQixDQUFDO0VBRU0sTUFBTTRCLGlCQUFpQixHQUFJcE0sR0FBUSxJQUN6QyxDQUFDLEdBQUdBLEdBQUcsQ0FBQ3lLLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQzVCOEIsT0FBTyxDQUFFQyxDQUFDLElBQUssQ0FBQyxHQUFHQSxDQUFDLENBQUMzSyxVQUFVLENBQUMsQ0FBQ3hCLEdBQUcsQ0FBRThELENBQUMsSUFBS0EsQ0FBQyxDQUFDcEYsSUFBSSxDQUFDLENBQUMsQ0FDcEQwTixNQUFNLENBQUVDLElBQUksSUFBS0EsSUFBSSxDQUFDdEgsUUFBUSxDQUFDLDBCQUEwQixDQUFDLENBQUM7RUFBQztFQUV4RCxNQUFNdUgsbUJBQW1CLEdBQUcsZ0JBQ2xDQyxRQUFnQixFQUNoQi9QLFlBQW9CLEVBQ3BCQyxnQkFBMEQsRUFDMURDLE9BQTZCLEVBQzdCd04sV0FBdUMsRUFDdkN2TixxQkFBK0IsRUFDOUI7SUFDRCxJQUFJLENBQUNELE9BQU8sQ0FBQyxhQUFhLENBQUMsRUFBRTtNQUM1QkEsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHOFAsdUJBQXVCLEVBQUU7SUFDbkQ7SUFFQSxNQUFNQyxZQUFZLEdBQUksU0FBUUYsUUFBUyxTQUFRO0lBQy9DLE1BQU10SyxNQUFNLEdBQUcsSUFBSW5CLE1BQU0sQ0FBQzRMLFNBQVMsRUFBRTtJQUNyQyxNQUFNQyxNQUFNLEdBQUcxSyxNQUFNLENBQUMySyxlQUFlLENBQUNILFlBQVksRUFBRSxVQUFVLENBQUM7SUFDL0Q7SUFDQTs7SUFFQSxNQUFNN1AsVUFBVSxHQUFHLE1BQU1DLFlBQVksQ0FBQ0wsWUFBWSxDQUFDO0lBQ25ELE1BQU1xUSxxQkFBcUIsR0FBRyxNQUFNdFEsMEJBQTBCLENBQUNDLFlBQVksRUFBRUMsZ0JBQWdCLEVBQUVDLE9BQU8sRUFBRUMscUJBQXFCLENBQUM7O0lBRTlIO0lBQ0EsSUFBSWtRLHFCQUFxQixDQUFDcFAsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFO01BQ3pDb1AscUJBQXFCLENBQUNsUCxlQUFlLENBQUMsTUFBTSxDQUFDLEdBQUdrUCxxQkFBcUIsQ0FBQ3BQLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQ2Msb0JBQW9CLENBQUMsR0FBRyxDQUFDO0lBQy9HO0lBRUEsSUFBSTRMLFNBQVMsR0FBSSxNQUFNMkMsZUFBZSxDQUFDakIsT0FBTyxDQUFDYyxNQUFNLENBQUNJLGlCQUFpQixFQUFHO01BQUVyTyxJQUFJLEVBQUU7SUFBZ0IsQ0FBQyxFQUFFbU8scUJBQXFCLENBQVM7SUFFbkksSUFBSTNDLFdBQVcsRUFBRTtNQUNoQjtNQUNBQyxTQUFTLEdBQUcsTUFBTUYsZ0JBQWdCLENBQUNDLFdBQVcsRUFBRXROLFVBQVUsRUFBRXVOLFNBQVMsQ0FBQztJQUN2RTtJQUNBLE9BQU9BLFNBQVM7RUFDakIsQ0FBQztFQUFDO0VBRUssTUFBTTZDLGVBQWUsR0FBRyxnQkFDOUJULFFBQWdCLEVBQ2hCL1AsWUFBb0IsRUFDcEJDLGdCQUF5QyxFQUN6Q0MsT0FBNkIsRUFDN0J3TixXQUF1QyxFQUN2Q3ZOLHFCQUErQixFQUM5QjtJQUNELE1BQU1zUSxZQUFZLEdBQUcsTUFBTVgsbUJBQW1CLENBQUNDLFFBQVEsRUFBRS9QLFlBQVksRUFBRUMsZ0JBQWdCLEVBQUVDLE9BQU8sRUFBRXdOLFdBQVcsRUFBRXZOLHFCQUFxQixDQUFDO0lBQ3JJLE1BQU11USxZQUFZLEdBQUc1TixZQUFZLENBQUMyTixZQUFZLENBQUM7SUFDL0M5TyxNQUFNLENBQUMrTyxZQUFZLENBQUMsQ0FBQ0MsR0FBRyxDQUFDek4sc0JBQXNCLEVBQUU7SUFDakQsT0FBT3dOLFlBQVk7RUFDcEIsQ0FBQzs7RUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQVRBO0VBVU8sZUFBZUUsV0FBVyxDQUNoQzFPLElBQVksRUFDWmxDLFlBQW9CLEVBQ3BCQyxnQkFBeUMsRUFDekNDLE9BQTZCLEVBQzdCd04sV0FBdUMsRUFDVjtJQUFBO0lBQzdCLE1BQU10TixVQUFVLEdBQUcsTUFBTUMsWUFBWSxDQUFDTCxZQUFZLENBQUM7SUFDbkQsTUFBTTZRLGFBQWEsR0FBRzdPLGlCQUFpQixDQUFDRSxJQUFJLENBQUM7SUFDN0MsTUFBTW1PLHFCQUFxQixHQUFHLE1BQU10USwwQkFBMEIsQ0FBQ0MsWUFBWSxFQUFFQyxnQkFBZ0IsRUFBRUMsT0FBTyxDQUFDO0lBQ3ZHLElBQUk0USxpQkFBaUIsR0FBRyxNQUFNUixlQUFlLENBQUNqQixPQUFPLENBQUN3QixhQUFhLEVBQUU7TUFBRTNPLElBQUksRUFBRUE7SUFBSyxDQUFDLEVBQUVtTyxxQkFBcUIsQ0FBQztJQUMzRyxJQUFJM0MsV0FBVyxFQUFFO01BQ2hCb0QsaUJBQWlCLEdBQUcsTUFBTXJELGdCQUFnQixDQUFDQyxXQUFXLElBQUksRUFBRSxFQUFFdE4sVUFBVSxFQUFFMFEsaUJBQWlCLENBQUM7SUFDN0Y7SUFDQSxPQUFPO01BQ05DLFNBQVMsRUFBRUQsaUJBQWlCO01BQzVCRSxRQUFRLEVBQUVoTixTQUFTLENBQUMsdUJBQUE4TSxpQkFBaUIsdURBQWpCLG1CQUFtQkcsU0FBUyxLQUFJLEVBQUU7SUFDdkQsQ0FBQztFQUNGOztFQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBTkE7RUFPTyxlQUFlQyxlQUFlLENBQUNoUCxJQUFZLEVBQUVpUCxRQUFxQyxFQUFtQjtJQUMzRyxNQUFNQyxRQUFRLEdBQUksc0NBQXFDbFAsSUFBSyxpREFBZ0Q7SUFDNUcsTUFBTXVELE1BQU0sR0FBRyxJQUFJbkIsTUFBTSxDQUFDNEwsU0FBUyxFQUFFO0lBQ3JDLE1BQU1tQixRQUFRLEdBQUc1TCxNQUFNLENBQUMySyxlQUFlLENBQUNnQixRQUFRLEVBQUUsVUFBVSxDQUFDOztJQUU3RDtJQUNBLE1BQU1wUSxRQUFRLEdBQUc7TUFDaEJDLE1BQU0sRUFBRSxDQUFDLENBQWtDO01BQzNDRSxlQUFlLEVBQUUsQ0FBQyxDQUErQjtNQUNqREMsWUFBWSxFQUFFO1FBQUVDLHFCQUFxQixFQUFFMUQsSUFBSSxDQUFDMkQsRUFBRSxFQUFFO1FBQUVDLGNBQWMsRUFBRSxNQUFNQztNQUFVO0lBQ25GLENBQUM7SUFDRCxLQUFLLE1BQU04TCxLQUFLLElBQUk2RCxRQUFRLEVBQUU7TUFDN0IsTUFBTUcsU0FBUyxHQUFHLElBQUlwRSxTQUFTLEVBQUU7TUFDakNvRSxTQUFTLENBQUNDLE9BQU8sQ0FBQ0osUUFBUSxDQUFDN0QsS0FBSyxDQUFDLENBQUM7TUFDbEN0TSxRQUFRLENBQUNDLE1BQU0sQ0FBQ3FNLEtBQUssQ0FBQyxHQUFHZ0UsU0FBUztNQUNsQ3RRLFFBQVEsQ0FBQ0csZUFBZSxDQUFDbU0sS0FBSyxDQUFDLEdBQUd0TSxRQUFRLENBQUNDLE1BQU0sQ0FBQ3FNLEtBQUssQ0FBQyxDQUFDdkwsb0JBQW9CLENBQUMsR0FBRyxDQUFDO0lBQ25GO0lBQ0FmLFFBQVEsQ0FBQ0ksWUFBWSxDQUFDQyxxQkFBcUIsQ0FBQ0ksZUFBZSxDQUFDbEMsNEJBQTRCLENBQUM7O0lBRXpGO0lBQ0EsTUFBTWlTLFNBQVMsR0FBRyxNQUFNbEIsZUFBZSxDQUFDakIsT0FBTyxDQUFDZ0MsUUFBUSxDQUFDZCxpQkFBaUIsRUFBRTtNQUFFck87SUFBSyxDQUFDLEVBQUVsQixRQUFRLENBQUM7O0lBRS9GO0lBQ0EsTUFBTXlRLFNBQVMsR0FBR0QsU0FBUyxDQUFDRSxvQkFBb0IsQ0FBQyxlQUFlLENBQVE7SUFDeEUsSUFBSSxDQUFBRCxTQUFTLGFBQVRBLFNBQVMsdUJBQVRBLFNBQVMsQ0FBRXpPLE1BQU0sSUFBRyxDQUFDLEVBQUU7TUFDMUIsS0FBSyxNQUFNMk8sUUFBUSxJQUFJRixTQUFTLEVBQUU7UUFDakNFLFFBQVEsQ0FBQ0MsU0FBUyxHQUFHLEVBQUU7TUFDeEI7SUFDRDs7SUFFQTtJQUNBLE1BQU1DLFNBQVMsR0FBR0wsU0FBUyxDQUFDTSxRQUFRLENBQUM5TyxNQUFNLEdBQUcsQ0FBQyxHQUFHd08sU0FBUyxDQUFDUCxTQUFTLEdBQUdPLFNBQVMsQ0FBQ0ksU0FBUztJQUUzRixPQUFPNU4sU0FBUyxDQUFDNk4sU0FBUyxDQUFDO0VBQzVCO0VBQUM7RUFFTSxTQUFTRSxnQkFBZ0IsQ0FBQ0Msa0JBQTZDLEVBQUU7SUFDL0UsSUFBSUMsUUFBUSxHQUFHLENBQUM7SUFDaEIsU0FBU0MsTUFBTSxHQUFvQjtNQUFBLElBQW5CQyxLQUFhLHVFQUFHLENBQUM7TUFDaEMsSUFBSUMsR0FBRyxHQUFHLEVBQUU7TUFDWixLQUFLLElBQUlDLENBQUMsR0FBRyxDQUFDLEVBQUVBLENBQUMsR0FBR0osUUFBUSxHQUFHRSxLQUFLLEVBQUVFLENBQUMsRUFBRSxFQUFFO1FBQzFDRCxHQUFHLElBQUksSUFBSTtNQUNaO01BQ0EsT0FBT0EsR0FBRztJQUNYO0lBQ0EsTUFBTUUsaUJBQWlCLEdBQUc7TUFDekJDLEtBQUssRUFBRSxVQUFVblUsT0FBWSxFQUFFb1UsZ0JBQXdCLEVBQUU7UUFDeEQsSUFBSUMsYUFBYSxHQUFHLEVBQUU7UUFDdEIsSUFBSUQsZ0JBQWdCLEVBQUU7VUFDckIsSUFBSXBVLE9BQU8sQ0FBQ3NVLFNBQVMsRUFBRSxFQUFFO1lBQUE7WUFDeEIsTUFBTUMsYUFBYSw0QkFBSXZVLE9BQU8sQ0FBQ3NVLFNBQVMsRUFBRSxDQUFDRSxjQUFjLENBQUNKLGdCQUFnQixDQUFDLG9GQUFyRCxzQkFBMkVLLE9BQU8sMkRBQWxGLG1EQUFxRnpVLE9BQU8sQ0FBQztZQUNuSCxJQUFJdVUsYUFBYSxHQUFHLENBQUMsRUFBRTtjQUN0QkYsYUFBYSxJQUFLLE1BQUtQLE1BQU0sRUFBRyxFQUFDO1lBQ2xDO1VBQ0Q7UUFDRDtRQUNBTyxhQUFhLElBQUssR0FBRXJVLE9BQU8sQ0FBQzBVLFdBQVcsRUFBRSxDQUFDQyxPQUFPLEVBQUcsR0FBRTtRQUN0RCxPQUFPTixhQUFhO01BQ3JCLENBQUM7TUFDRE8sR0FBRyxFQUFFLFlBQVk7UUFDaEIsT0FBTyxJQUFJO01BQ1osQ0FBQztNQUNEQyxNQUFNLEVBQUUsVUFBVTdVLE9BQVksRUFBRTtRQUMvQixNQUFNeVAsRUFBRSxHQUFHelAsT0FBTyxDQUFDOFUsS0FBSyxFQUFFO1FBQzFCLElBQUluUyxJQUFJLEdBQUksUUFBT29TLHFCQUFxQixDQUFDQyxhQUFhLENBQUN2RixFQUFFLENBQUMsR0FBRyxhQUFhLEdBQUdBLEVBQUcsRUFBQztRQUNqRixLQUFLLE1BQU13RixXQUFXLElBQUlqVixPQUFPLENBQUNrVixXQUFXLEVBQUU7VUFDOUMsSUFBSWxWLE9BQU8sQ0FBQ2tWLFdBQVcsQ0FBQ2hULGNBQWMsQ0FBQytTLFdBQVcsQ0FBQyxFQUFFO1lBQ3BEdFMsSUFBSSxJQUFLLE1BQUttUixNQUFNLEVBQUcsSUFBR21CLFdBQVksS0FBSWpWLE9BQU8sQ0FBQ2tWLFdBQVcsQ0FBQ0QsV0FBVyxDQUFFLEVBQUM7VUFDN0UsQ0FBQyxNQUFNLElBQUlqVixPQUFPLENBQUNtVixhQUFhLENBQUNqVCxjQUFjLENBQUMrUyxXQUFXLENBQUMsRUFBRTtZQUM3RCxNQUFNRyxhQUFhLEdBQUdwVixPQUFPLENBQUNtVixhQUFhLENBQUNGLFdBQVcsQ0FBQztZQUN4RHRTLElBQUksSUFBSyxNQUFLbVIsTUFBTSxFQUFHLElBQUdtQixXQUFZLEtBQUlJLElBQUksQ0FBQ0MsU0FBUyxDQUFDRixhQUFhLENBQUUsRUFBQztVQUMxRTtRQUNEO1FBQ0EsS0FBSyxNQUFNSCxXQUFXLElBQUlqVixPQUFPLENBQUN1VixhQUFhLEVBQUU7VUFDaEQsSUFBSXZWLE9BQU8sQ0FBQ3VWLGFBQWEsQ0FBQ3JULGNBQWMsQ0FBQytTLFdBQVcsQ0FBQyxFQUFFO1lBQUE7WUFDdER0UyxJQUFJLElBQUssTUFBS21SLE1BQU0sRUFBRyxJQUFHbUIsV0FBWSxLQUNyQyxDQUFDLDBCQUFBalYsT0FBTyxDQUFDdVYsYUFBYSxDQUFDTixXQUFXLENBQUMsb0ZBQWxDLGlEQUFvQzFQLElBQUksMkRBQXhDLG9EQUEyQyxHQUFHLENBQUMsS0FBSXZGLE9BQU8sQ0FBQ3VWLGFBQWEsQ0FBQ04sV0FBVyxDQUFDLEtBQUs3UixTQUMzRixFQUFDO1VBQ0g7UUFDRDtRQUNBLEtBQUssTUFBTTZSLFdBQVcsSUFBSWpWLE9BQU8sQ0FBQ3dWLGNBQWMsRUFBRTtVQUNqRCxJQUFJeFYsT0FBTyxDQUFDd1YsY0FBYyxDQUFDdFQsY0FBYyxDQUFDK1MsV0FBVyxDQUFDLEVBQUU7WUFDdkR0UyxJQUFJLElBQUssTUFBS21SLE1BQU0sRUFBRyxJQUFHbUIsV0FBWSxTQUFRO1VBQy9DO1FBQ0Q7UUFDQXRTLElBQUksSUFBSyxFQUFDO1FBQ1YsT0FBT0EsSUFBSTtNQUNaLENBQUM7TUFDRDhTLGdCQUFnQixFQUFFLFVBQVV6VixPQUFZLEVBQUUwVixLQUFhLEVBQUU7UUFDeEQsSUFBSUMsR0FBRyxHQUFJLE1BQUs3QixNQUFNLEVBQUcsR0FBRTRCLEtBQU0sRUFBQztRQUNsQzdCLFFBQVEsRUFBRTtRQUVWLElBQUk3VCxPQUFPLENBQUNtVixhQUFhLENBQUNPLEtBQUssQ0FBQyxFQUFFO1VBQ2pDQyxHQUFHLElBQUssWUFBVzNWLE9BQU8sQ0FBQ21WLGFBQWEsQ0FBQ08sS0FBSyxDQUFDLENBQUM3TSxJQUFLLGlCQUFnQmlMLE1BQU0sRUFBRyxFQUFDO1FBQ2hGLENBQUMsTUFBTTtVQUNONkIsR0FBRyxJQUFLLE9BQU03QixNQUFNLEVBQUcsRUFBQztRQUN6QjtRQUNBLE9BQU82QixHQUFHO01BQ1gsQ0FBQztNQUNEQyxjQUFjLEVBQUUsVUFBVTVWLE9BQVksRUFBRTBWLEtBQWEsRUFBRTtRQUN0RDdCLFFBQVEsRUFBRTtRQUNWLElBQUk3VCxPQUFPLENBQUNtVixhQUFhLENBQUNPLEtBQUssQ0FBQyxFQUFFO1VBQ2pDLE9BQVEsS0FBSTVCLE1BQU0sRUFBRyxHQUFFO1FBQ3hCLENBQUMsTUFBTTtVQUNOLE9BQVEsS0FBSUEsTUFBTSxFQUFHLEdBQUU7UUFDeEI7TUFDRDtJQUNELENBQUM7SUFDRCxJQUFJcE8sS0FBSyxDQUFDQyxPQUFPLENBQUNpTyxrQkFBa0IsQ0FBQyxFQUFFO01BQ3RDLE9BQU9BLGtCQUFrQixDQUFDeE8sR0FBRyxDQUFFeVEsZUFBMkIsSUFBSztRQUM5RCxPQUFPLElBQUlDLFVBQVUsQ0FBQ0QsZUFBZSxFQUFFM0IsaUJBQWlCLENBQUMsQ0FBQzZCLFNBQVMsRUFBRTtNQUN0RSxDQUFDLENBQUM7SUFDSCxDQUFDLE1BQU07TUFDTixPQUFPLElBQUlELFVBQVUsQ0FBQ2xDLGtCQUFrQixFQUFFTSxpQkFBaUIsQ0FBQyxDQUFDNkIsU0FBUyxFQUFFO0lBQ3pFO0VBQ0Q7RUFBQztFQUVNLFNBQVNDLGFBQWEsR0FBRztJQUMvQixJQUFJQyxTQUFvQjtJQUN4QixNQUFNQyxTQUFTLEdBQUcsSUFBSXpGLE9BQU8sQ0FBRTNILE9BQU8sSUFBSztNQUMxQ21OLFNBQVMsR0FBR25OLE9BQU87SUFDcEIsQ0FBQyxDQUFDO0lBQ0YsT0FBTztNQUFFcU4sT0FBTyxFQUFFRCxTQUFTO01BQUVwTixPQUFPLEVBQUVtTjtJQUFVLENBQUM7RUFDbEQ7RUFBQztFQUVNLFNBQVNHLDZCQUE2QixDQUFDQyxhQUF1QyxFQUFFeFQsTUFBZ0MsRUFBVztJQUNqSSxPQUFReVQsYUFBYSxDQUFxQkMsb0JBQW9CLENBQzdELE1BQU07TUFDTCxPQUFPRixhQUFhLENBQUNHLFVBQVUsRUFBRTtJQUNsQyxDQUFDLEVBQ0Q7TUFDQzVULFFBQVEsRUFBRSxVQUFVNlQsZUFBb0MsRUFBRTtRQUN6REEsZUFBZSxDQUFDNVQsTUFBTSxHQUFHQSxNQUFNO1FBQy9CLE9BQU80VCxlQUFlO01BQ3ZCO0lBQ0QsQ0FBQyxDQUNEO0VBQ0Y7RUFBQztFQUVNLFNBQVNDLHFCQUFxQixHQUFpRDtJQUFBLG1DQUE3Q3JELFNBQVM7TUFBVEEsU0FBUztJQUFBO0lBQ2pEO0lBQ0EsTUFBTXNELG9CQUFvQixHQUFJQyxvQkFBb0IsQ0FBU0MsbUJBQW1CO0lBQzlFO0lBQ0EsTUFBTUMsZ0JBQWdCLEdBQUd2WCxJQUFJLENBQUNnUixLQUFLLENBQUNxRyxvQkFBb0IsRUFBUyxxQkFBcUIsQ0FBQztJQUN2RkUsZ0JBQWdCLENBQUNDLGtCQUFrQixDQUFFLENBQUNDLFlBQW9CLEVBQUVDLFNBQWlCLEtBQUs7TUFDakYsS0FBSyxNQUFNMUQsUUFBUSxJQUFJRixTQUFTLEVBQUU7UUFDakMsSUFBSUUsUUFBUSxDQUFDelAsSUFBSSxLQUFLa1QsWUFBWSxFQUFFO1VBQ25DLE9BQU9FLGNBQWMsQ0FBQzNELFFBQVEsQ0FBQ3RFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMzQztNQUNEO01BQ0EsT0FBTzBILG9CQUFvQixDQUFDSyxZQUFZLEVBQUVDLFNBQVMsQ0FBQztJQUNyRCxDQUFDLENBQWlDO0lBQ2xDLE9BQU9ILGdCQUFnQjtFQUN4QjtFQUFDO0VBQUE7QUFBQSJ9
|
|
@@ -446,7 +446,8 @@ const metaModelCache: any = {};
|
|
|
446
446
|
export const getMetaModel = async function (sMetadataUrl: string) {
|
|
447
447
|
const oRequestor = _MetadataRequestor.create({}, "4.0", undefined, {});
|
|
448
448
|
if (!metaModelCache[sMetadataUrl]) {
|
|
449
|
-
|
|
449
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
450
|
+
const oMetaModel = new (ODataMetaModel as any)(oRequestor, sMetadataUrl, undefined, { _requestAnnotationChanges: () => [] });
|
|
450
451
|
await oMetaModel.fetchEntityContainer();
|
|
451
452
|
metaModelCache[sMetadataUrl] = oMetaModel;
|
|
452
453
|
}
|
|
@@ -22,7 +22,7 @@ sap.ui.define(["sap/ui/core/Core", "sap/ui/core/library"], function (Core, _libr
|
|
|
22
22
|
controls: [],
|
|
23
23
|
elements: [],
|
|
24
24
|
// eslint-disable-next-line no-template-curly-in-string
|
|
25
|
-
version: "1.120.
|
|
25
|
+
version: "1.120.16",
|
|
26
26
|
noLibraryCSS: true
|
|
27
27
|
});
|
|
28
28
|
return thisLib;
|