@colijnit/transaction 256.1.2 → 256.1.3

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.
Files changed (39) hide show
  1. package/bundles/colijnit-transaction.umd.js +293 -100
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.metadata.json +1 -1
  4. package/esm2015/lib/component/avatar/avatar.component.js +15 -2
  5. package/esm2015/lib/component/core/base/transaction-base.component.js +9 -8
  6. package/esm2015/lib/component/dialog/transaction-line/dialog-transaction-line-warehouse-cc/dialog-direct-sell.component.js +1 -1
  7. package/esm2015/lib/component/transaction/transaction.component.js +4 -5
  8. package/esm2015/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-overview-button-bar-button.component.js +6 -3
  9. package/esm2015/lib/component/transaction-card/transaction-card-margin/transaction-card-margin.component.js +10 -4
  10. package/esm2015/lib/component/transaction-internal/transaction-internal.component.js +20 -13
  11. package/esm2015/lib/component/transaction-line/transaction-margin-info-line/transaction-margin-info-line.component.js +95 -92
  12. package/esm2015/lib/component/transaction-line-fields/transaction-line-drop-shipment-button.component.js +15 -11
  13. package/esm2015/lib/component/transaction-margin/transaction-margin.component.js +35 -3
  14. package/esm2015/lib/component/transaction-send-documents/transaction-send-documents.component.js +2 -2
  15. package/esm2015/lib/service/transaction-base.service.js +32 -3
  16. package/esm2015/lib/service/transaction-connector-adapter.service.js +13 -1
  17. package/esm2015/lib/service/transaction-connector.service.js +30 -7
  18. package/esm2015/lib/service/transaction-mapping.service.js +2 -3
  19. package/esm2015/lib/service/transaction-relation-connector.service.js +14 -1
  20. package/esm2015/lib/service/transaction-relation.service.js +6 -1
  21. package/esm2015/lib/service/transaction.service.js +6 -1
  22. package/esm2015/lib/transaction-version.js +3 -3
  23. package/fesm2015/colijnit-transaction.js +277 -144
  24. package/fesm2015/colijnit-transaction.js.map +1 -1
  25. package/lib/component/avatar/avatar.component.d.ts +1 -0
  26. package/lib/component/core/base/transaction-base.component.d.ts +0 -3
  27. package/lib/component/transaction/transaction.component.d.ts +1 -0
  28. package/lib/component/transaction-button-bar/transaction-button-bar-button/transaction-sales-overview-button-bar-button.component.d.ts +2 -1
  29. package/lib/component/transaction-card/transaction-card-margin/transaction-card-margin.component.d.ts +3 -1
  30. package/lib/component/transaction-internal/transaction-internal.component.d.ts +4 -2
  31. package/lib/component/transaction-line/transaction-margin-info-line/transaction-margin-info-line.component.d.ts +6 -5
  32. package/lib/component/transaction-margin/transaction-margin.component.d.ts +20 -1
  33. package/lib/service/transaction-base.service.d.ts +6 -0
  34. package/lib/service/transaction-connector-adapter.service.d.ts +1 -0
  35. package/lib/service/transaction-connector.service.d.ts +1 -0
  36. package/lib/service/transaction-relation-connector.service.d.ts +2 -0
  37. package/lib/service/transaction-relation.service.d.ts +2 -0
  38. package/lib/service/transaction.service.d.ts +1 -0
  39. package/package.json +1 -1
@@ -61,6 +61,11 @@ export class TransactionRelationService {
61
61
  return this._adapterService.getSupplierFullObject(relationNo);
62
62
  // }).getValue();
63
63
  }
64
+ getSupplierLightById(supplierId) {
65
+ // return this._selectSingleCacheService.requestCache<SupplierFullObject>(SupplierFullObject, relationNo, () => {
66
+ return this._adapterService.getSupplierLightById(supplierId);
67
+ // }).getValue();
68
+ }
64
69
  insertAddress(address) {
65
70
  return this._adapterService.insertAddress(address);
66
71
  }
@@ -214,4 +219,4 @@ TransactionRelationService.ctorParameters = () => [
214
219
  { type: TransactionSelectSingleCacheService },
215
220
  { type: TransactionSelectMultipleParameterizedCacheService }
216
221
  ];
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tcmVsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvc2VydmljZS90cmFuc2FjdGlvbi1yZWxhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ2pILE9BQU8sRUFBQyxtQ0FBbUMsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQzdGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUNoRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUN2RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUM3RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDbkYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDN0YsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQzFFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxtQ0FBbUMsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQzdHLE9BQU8sRUFBQyxrREFBa0QsRUFBQyxNQUFNLDBFQUEwRSxDQUFDO0FBQzVJLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUd2RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUNwRyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3REFBd0QsQ0FBQzs7Ozs7O0FB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QUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxVQUFrQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVPLHVCQUF1QixDQUFDLFVBQWtCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8scUJBQXFCLENBQUMsVUFBa0I7UUFDOUMsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxVQUFrQjtRQUMvQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMscUJBQXFCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVPLGtCQUFrQixDQUFDLFVBQWtCO1FBQzNDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1RCxDQUFDOzs7O1lBN01GLFVBQVUsU0FBQztnQkFDVixVQUFVLEVBQUUsTUFBTTthQUNuQjs7O1lBMUJPLG1DQUFtQztZQURuQyxxQ0FBcUM7WUFTckMsbUNBQW1DO1lBQ25DLGtEQUFrRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS90cmFuc2FjdGlvbi1zZWxlY3QtbXVsdGlwbGUtY2FjaGUuc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25SZWxhdGlvbkNvbm5lY3RvclNlcnZpY2V9IGZyb20gJy4vdHJhbnNhY3Rpb24tcmVsYXRpb24tY29ubmVjdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQge1JlbGF0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L2FydGljbGVhcGkvYnVpbGQvZW51bS9yZWxhdGlvbi1raW5kLmVudW0nO1xyXG5pbXBvcnQge1ZhbGlkYXRpb25SZXN1bHR9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL21vZGVsL3ZhbGlkYXRpb24tcmVzdWx0JztcclxuaW1wb3J0IHtDdXN0b21lckZ1bGxPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9jdXN0b21lci1mdWxsLW9iamVjdC5ibyc7XHJcbmltcG9ydCB7UmVsYXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcmVxdWVzdCc7XHJcbmltcG9ydCB7UmVsYXRpb25MaXN0T2JqZWN0fSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tbGlzdC1vYmplY3QuYm8nO1xyXG5pbXBvcnQge0JyYW5jaExvdn0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL2JyYW5jaC1sb3YuYm8nO1xyXG5pbXBvcnQge1N1cHBsaWVyRnVsbE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3N1cHBsaWVyLWZ1bGwtb2JqZWN0LmJvJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlbGVjdFNpbmdsZUNhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS90cmFuc2FjdGlvbi1zZWxlY3Qtc2luZ2xlLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlfSBmcm9tICcuLi9jYWNoZS9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlbGVjdC1tdWx0aXBsZS1wYXJhbWV0ZXJpemVkLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1JlbGF0aW9ufSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24uYm8nO1xyXG5pbXBvcnQge1JlbGF0aW9uQW55VHlwZX0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWFueS10eXBlJztcclxuaW1wb3J0IHtBZGRyZXNzfSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvYWRkcmVzcy5ibyc7XHJcbmltcG9ydCB7QnVzaW5lc3NPYmplY3RGYWN0b3J5fSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9zZXJ2aWNlL2J1c2luZXNzLW9iamVjdC1mYWN0b3J5JztcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHtVc2VyUm9sZVR5cGV9IGZyb20gJ0Bjb2xpam5pdC9pb25lY29ubmVjdG9yL2J1aWxkL2VudW0vdXNlci1yb2xlLXR5cGUuZW51bSc7XHJcbmltcG9ydCB7UmVsYXRpb25TbWFsbE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1zbWFsbC1vYmplY3QuYm9cIjtcclxuXHJcbnR5cGUgTG9ja0ZuSGVhZGVyID0gKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PjtcclxudHlwZSBHZXRSZWxhdGlvbkZuSGVhZGVyID0gKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gUHJvbWlzZTxSZWxhdGlvbkFueVR5cGU+O1xyXG50eXBlIEluc2VydFJlbGF0aW9uRm4gPSAocmVsYXRpb246IFJlbGF0aW9uQW55VHlwZSkgPT4gUHJvbWlzZTxSZWxhdGlvbkFueVR5cGU+O1xyXG50eXBlIFVwZGF0ZVJlbGF0aW9uRm4gPSAocmVsYXRpb246IFJlbGF0aW9uQW55VHlwZSkgPT4gUHJvbWlzZTxSZWxhdGlvbkFueVR5cGU+O1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25SZWxhdGlvblNlcnZpY2Uge1xyXG4gIHB1YmxpYyByZWxhdGlvblN1Z2dlc3Rpb25zUmVxdWVzdENsZWFyOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfYWxsb3dlZFJvbGVzVG9JbnZpdGVSZWxhdGlvbjogVXNlclJvbGVUeXBlW10gPSBbVXNlclJvbGVUeXBlLkFkbWluaXN0cmF0b3IsIFVzZXJSb2xlVHlwZS5VcFN1cHBvcnRdO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2NrTWV0aG9kczogTWFwPFJlbGF0aW9uS2luZCwgTG9ja0ZuSGVhZGVyPiA9IG5ldyBNYXA8UmVsYXRpb25LaW5kLCBMb2NrRm5IZWFkZXI+KFtcclxuICAgIFtSZWxhdGlvbktpbmQuQ3VzdG9tZXIsIChyZWxhdGlvbk5yOiBudW1iZXIpID0+IHRoaXMuX2xvY2tDdXN0b21lckZ1bGxPYmplY3QocmVsYXRpb25OcildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5TdXBwbGllciwgKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gdGhpcy5fbG9ja1N1cHBsaWVyRnVsbE9iamVjdChyZWxhdGlvbk5yKV0sXHJcbiAgICBbUmVsYXRpb25LaW5kLlBlcnNvbm5lbCwgKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gdGhpcy5fbG9ja0VtcGxveWVlRnVsbE9iamVjdChyZWxhdGlvbk5yKV0sXHJcbiAgICBbUmVsYXRpb25LaW5kLkJyYW5jaCwgKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gdGhpcy5fbG9ja0JyYW5jaEZ1bGxPYmplY3QocmVsYXRpb25OcildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5Db21wYW55LCAocmVsYXRpb25OcjogbnVtYmVyKSA9PiB0aGlzLl9sb2NrQ29tcGFueUZ1bGxPYmplY3QocmVsYXRpb25OcildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5Db250YWN0UGVyc29uLCAocmVsYXRpb25OcjogbnVtYmVyKSA9PiB0aGlzLl9sb2NrQ29udGFjdFBlcnNvbihyZWxhdGlvbk5yKV0sXHJcbiAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2dldE1ldGhvZHM6IE1hcDxSZWxhdGlvbktpbmQsIEdldFJlbGF0aW9uRm5IZWFkZXI+ID0gbmV3IE1hcDxSZWxhdGlvbktpbmQsIEdldFJlbGF0aW9uRm5IZWFkZXI+KFtcclxuICAgIFtSZWxhdGlvbktpbmQuQ3VzdG9tZXIsIChyZWxhdGlvbk5yOiBudW1iZXIpID0+IHRoaXMuZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0KHJlbGF0aW9uTnIpXSxcclxuICAgIFtSZWxhdGlvbktpbmQuU3VwcGxpZXIsIChyZWxhdGlvbk5yOiBudW1iZXIpID0+IHRoaXMuZ2V0U3VwcGxpZXJGdWxsT2JqZWN0KHJlbGF0aW9uTnIpXVxyXG4gIF0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF91cGRhdGVNZXRob2RzOiBNYXA8UmVsYXRpb25LaW5kLCBVcGRhdGVSZWxhdGlvbkZuPiA9IG5ldyBNYXA8UmVsYXRpb25LaW5kLCBVcGRhdGVSZWxhdGlvbkZuPihbXHJcbiAgICBbUmVsYXRpb25LaW5kLkN1c3RvbWVyLCAocmVsYXRpb246IEN1c3RvbWVyRnVsbE9iamVjdCkgPT4gdGhpcy51cGRhdGVDdXN0b21lcihyZWxhdGlvbildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5TdXBwbGllciwgKHJlbGF0aW9uOiBTdXBwbGllckZ1bGxPYmplY3QpID0+IHRoaXMudXBkYXRlU3VwcGxpZXIocmVsYXRpb24pXVxyXG4gIF0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnNlcnRNZXRob2RzOiBNYXA8UmVsYXRpb25LaW5kLCBJbnNlcnRSZWxhdGlvbkZuPiA9IG5ldyBNYXA8UmVsYXRpb25LaW5kLCBJbnNlcnRSZWxhdGlvbkZuPihbXHJcbiAgICBbUmVsYXRpb25LaW5kLkN1c3RvbWVyLCAocmVsYXRpb246IEN1c3RvbWVyRnVsbE9iamVjdCkgPT4gdGhpcy5pbnNlcnRDdXN0b21lcihyZWxhdGlvbildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5TdXBwbGllciwgKHJlbGF0aW9uOiBTdXBwbGllckZ1bGxPYmplY3QpID0+IHRoaXMuaW5zZXJ0U3VwcGxpZXIocmVsYXRpb24pXVxyXG4gIF0pXHJcblxyXG4gIHB1YmxpYyByZWxhdGlvbkxvY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9ib0ZhY3Rvcnk6IEJ1c2luZXNzT2JqZWN0RmFjdG9yeSA9IG5ldyBCdXNpbmVzc09iamVjdEZhY3RvcnkoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9hZGFwdGVyU2VydmljZTogVHJhbnNhY3Rpb25SZWxhdGlvbkNvbm5lY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZTogVHJhbnNhY3Rpb25TZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlbGVjdFNpbmdsZUNhY2hlU2VydmljZTogVHJhbnNhY3Rpb25TZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2U6IFRyYW5zYWN0aW9uU2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBwdWJsaWMgZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0KHJlbGF0aW9uTm86IG51bWJlcik6IFByb21pc2U8Q3VzdG9tZXJGdWxsT2JqZWN0PiB7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5fc2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDdXN0b21lckZ1bGxPYmplY3Q+KEN1c3RvbWVyRnVsbE9iamVjdCwgcmVsYXRpb25ObywgKCkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0KHJlbGF0aW9uTm8pO1xyXG4gICAgLy8gfSkuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTdXBwbGllckZ1bGxPYmplY3QocmVsYXRpb25ObzogbnVtYmVyKTogUHJvbWlzZTxTdXBwbGllckZ1bGxPYmplY3Q+IHtcclxuICAgIC8vIHJldHVybiB0aGlzLl9zZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFN1cHBsaWVyRnVsbE9iamVjdD4oU3VwcGxpZXJGdWxsT2JqZWN0LCByZWxhdGlvbk5vLCAoKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTdXBwbGllckZ1bGxPYmplY3QocmVsYXRpb25Obyk7XHJcbiAgICAvLyB9KS5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGluc2VydEFkZHJlc3MoYWRkcmVzczogQWRkcmVzcyk6IFByb21pc2U8QWRkcmVzcz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmluc2VydEFkZHJlc3MoYWRkcmVzcyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlQWRkcmVzcyhhZGRyZXNzOiBBZGRyZXNzKTogUHJvbWlzZTxBZGRyZXNzPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlQWRkcmVzcyhhZGRyZXNzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbnNlcnRDdXN0b21lcihyZWxhdGlvbjogQ3VzdG9tZXJGdWxsT2JqZWN0KTogUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5pbnNlcnRDdXN0b21lcihyZWxhdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgdXBkYXRlQ3VzdG9tZXIocmVsYXRpb246IEN1c3RvbWVyRnVsbE9iamVjdCk6IFByb21pc2U8Q3VzdG9tZXJGdWxsT2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlQ3VzdG9tZXIocmVsYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGluc2VydFN1cHBsaWVyKHJlbGF0aW9uOiBTdXBwbGllckZ1bGxPYmplY3QpOiBQcm9taXNlPFN1cHBsaWVyRnVsbE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmluc2VydFN1cHBsaWVyKHJlbGF0aW9uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVTdXBwbGllcihyZWxhdGlvbjogU3VwcGxpZXJGdWxsT2JqZWN0KTogUHJvbWlzZTxTdXBwbGllckZ1bGxPYmplY3Q+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVTdXBwbGllcihyZWxhdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UmVsYXRpb25MaXN0T2JqZWN0cyhyZWxhdGlvblJlcXVlc3Q6IFJlbGF0aW9uUmVxdWVzdCk6IFByb21pc2U8UmVsYXRpb25MaXN0T2JqZWN0W10+IHtcclxuICAgIC8vIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFJlbGF0aW9uTGlzdE9iamVjdD4oUmVsYXRpb25MaXN0T2JqZWN0LCAocmVsYXRpb25SZXF1ZXN0KSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRSZWxhdGlvbkxpc3RPYmplY3RzKHJlbGF0aW9uUmVxdWVzdCk7XHJcbiAgICAvLyB9KS5nZXRWYWx1ZShyZWxhdGlvblJlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgLy8gcHVibGljIGdldEF2YWlsYWJsZVN0b2NrRm9yU3VwcGxpZXIocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxTdXBwbGllckFydGljbGVTdG9ja0ZvcmVjYXN0RFRPPiB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QXZhaWxhYmxlU3RvY2tGb3JTdXBwbGllcihyZWxhdGlvbklkKTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBnZXREaXJlY3RTZWxsU3VwcGxpZXJzKCk6IFByb21pc2U8UmVsYXRpb25MaXN0T2JqZWN0W10+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREaXJlY3RTZWxsU3VwcGxpZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UmVsYXRpb25CeUlkKGlkOiBudW1iZXIpOiBQcm9taXNlPFJlbGF0aW9uTGlzdE9iamVjdFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxSZWxhdGlvbkxpc3RPYmplY3Q+KFJlbGF0aW9uTGlzdE9iamVjdCwgKGlkOiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgcmVxdWVzdDogUmVsYXRpb25SZXF1ZXN0ID0gbmV3IFJlbGF0aW9uUmVxdWVzdCgpO1xyXG4gICAgICByZXF1ZXN0LnJlbGF0aW9uSWQgPSBpZDtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0UmVsYXRpb25MaXN0T2JqZWN0cyhyZXF1ZXN0KTtcclxuICAgIH0pLmdldFZhbHVlKGlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRSZWxhdGlvbk51bWJlcihyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJlbGF0aW9uTnVtYmVyKHJlbGF0aW9uSWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFJlbGF0aW9uU21hbGxPYmplY3QocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxSZWxhdGlvblNtYWxsT2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UmVsYXRpb25TbWFsbE9iamVjdChyZWxhdGlvbklkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRCcmFuY2hlcyhicmFuY2hOcj86IHN0cmluZyk6IFByb21pc2U8QnJhbmNoTG92W10+IHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPEJyYW5jaExvdj4oQnJhbmNoTG92LCAoYnJhbmNoTnI/OiBzdHJpbmcpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEJyYW5jaGVzKGJyYW5jaE5yKVxyXG4gICAgfSkuZ2V0VmFsdWUoYnJhbmNoTnIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGluc2VydFJlbGF0aW9uKHJlbGF0aW9uS2luZDogUmVsYXRpb25LaW5kLCByZWxhdGlvbjogUmVsYXRpb24pOiBQcm9taXNlPFJlbGF0aW9uPiB7XHJcbiAgICBjb25zdCBpbnNlcnRNZXRob2Q6IEluc2VydFJlbGF0aW9uRm4gPSB0aGlzLl9pbnNlcnRNZXRob2RzLmdldChyZWxhdGlvbktpbmQpO1xyXG4gICAgaWYgKGluc2VydE1ldGhvZCkge1xyXG4gICAgICByZXR1cm4gaW5zZXJ0TWV0aG9kLmNhbGwodGhpcywgcmVsYXRpb24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcmVzdWx0OiBSZWxhdGlvbiA9IG5ldyBSZWxhdGlvbigpO1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlUmVsYXRpb24ocmVsYXRpb25LaW5kOiBSZWxhdGlvbktpbmQsIHJlbGF0aW9uOiBSZWxhdGlvbik6IFByb21pc2U8UmVsYXRpb24+IHtcclxuICAgIGNvbnN0IHVwZGF0ZU1ldGhvZDogVXBkYXRlUmVsYXRpb25GbiA9IHRoaXMuX3VwZGF0ZU1ldGhvZHMuZ2V0KHJlbGF0aW9uS2luZCk7XHJcbiAgICBpZiAodXBkYXRlTWV0aG9kKSB7XHJcbiAgICAgIHRoaXMucmVsYXRpb25Mb2NrZWQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuIHVwZGF0ZU1ldGhvZC5jYWxsKHRoaXMsIHJlbGF0aW9uKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogUmVsYXRpb24gPSBuZXcgUmVsYXRpb24oKTtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGxvY2tSZWxhdGlvbihyZWxhdGlvbktpbmQ6IFJlbGF0aW9uS2luZCwgcmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICBpZiAocmVsYXRpb25Ocikge1xyXG4gICAgICBjb25zdCBsb2NrTWV0aG9kOiBMb2NrRm5IZWFkZXIgPSB0aGlzLl9sb2NrTWV0aG9kcy5nZXQocmVsYXRpb25LaW5kKTtcclxuICAgICAgaWYgKGxvY2tNZXRob2QpIHtcclxuICAgICAgICBjb25zdCByZXNwb25zZTogVmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IGxvY2tNZXRob2QuY2FsbCh0aGlzLCByZWxhdGlvbk5yKTtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgdGhpcy5yZWxhdGlvbkxvY2tlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCByZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQgPSBuZXcgVmFsaWRhdGlvblJlc3VsdCgpO1xyXG4gICAgICAgIHJlc3VsdC5zdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCByZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQgPSBuZXcgVmFsaWRhdGlvblJlc3VsdCgpO1xyXG4gICAgICByZXN1bHQuc3VjY2VzcyA9IHRydWU7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRSZWxhdGlvbihyZWxhdGlvbktpbmQ6IFJlbGF0aW9uS2luZCwgcmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxSZWxhdGlvbkFueVR5cGU+IHtcclxuICAgIGNvbnN0IGdldE1ldGhvZDogR2V0UmVsYXRpb25GbkhlYWRlciA9IHRoaXMuX2dldE1ldGhvZHMuZ2V0KHJlbGF0aW9uS2luZCk7XHJcbiAgICBpZiAoZ2V0TWV0aG9kKSB7XHJcbiAgICAgIHJldHVybiBnZXRNZXRob2QuY2FsbCh0aGlzLCByZWxhdGlvbk5yKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogVmFsaWRhdGlvblJlc3VsdCA9IG5ldyBWYWxpZGF0aW9uUmVzdWx0KCk7XHJcbiAgICAgIHJlc3VsdC5zdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvbmVSZWxhdGlvbihyZWxhdGlvbjogUmVsYXRpb25BbnlUeXBlKTogUmVsYXRpb25BbnlUeXBlIHtcclxuICAgIHN3aXRjaCAocmVsYXRpb24ucmVsYXRpb25UeXBlKSB7XHJcbiAgICAgIGNhc2UgUmVsYXRpb25LaW5kLkN1c3RvbWVyOlxyXG4gICAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShDdXN0b21lckZ1bGxPYmplY3QsIHJlbGF0aW9uKSBhcyBDdXN0b21lckZ1bGxPYmplY3Q7XHJcbiAgICAgIGNhc2UgUmVsYXRpb25LaW5kLlN1cHBsaWVyOlxyXG4gICAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShTdXBwbGllckZ1bGxPYmplY3QsIHJlbGF0aW9uKSBhcyBTdXBwbGllckZ1bGxPYmplY3Q7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEN1c3RvbWVyRnVsbE9iamVjdCwgcmVsYXRpb24pIGFzIEN1c3RvbWVyRnVsbE9iamVjdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb21taXQoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY29tbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2NrQ3VzdG9tZXJGdWxsT2JqZWN0KHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tDdXN0b21lckZ1bGxPYmplY3QocmVsYXRpb25Ocik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2NrU3VwcGxpZXJGdWxsT2JqZWN0KHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tTdXBwbGllckZ1bGxPYmplY3QocmVsYXRpb25Ocik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2NrRW1wbG95ZWVGdWxsT2JqZWN0KHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tFbXBsb3llZUZ1bGxPYmplY3QocmVsYXRpb25Ocik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2NrQnJhbmNoRnVsbE9iamVjdChyZWxhdGlvbk5yOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrQnJhbmNoRnVsbE9iamVjdChyZWxhdGlvbk5yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvY2tDb21wYW55RnVsbE9iamVjdChyZWxhdGlvbk5yOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrQ29tcGFueUZ1bGxPYmplY3QocmVsYXRpb25Ocik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2NrQ29udGFjdFBlcnNvbihyZWxhdGlvbk5yOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrQ29udGFjdFBlcnNvbihyZWxhdGlvbk5yKTtcclxuICB9XHJcbn1cclxuIl19
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tcmVsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvc2VydmljZS90cmFuc2FjdGlvbi1yZWxhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLDREQUE0RCxDQUFDO0FBQ2pILE9BQU8sRUFBQyxtQ0FBbUMsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQzdGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxvREFBb0QsQ0FBQztBQUNoRixPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSx1REFBdUQsQ0FBQztBQUN2RixPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyREFBMkQsQ0FBQztBQUM3RixPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sb0RBQW9ELENBQUM7QUFDbkYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sMkRBQTJELENBQUM7QUFDN0YsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLGlEQUFpRCxDQUFDO0FBQzFFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDJEQUEyRCxDQUFDO0FBQzdGLE9BQU8sRUFBQyxtQ0FBbUMsRUFBQyxNQUFNLDBEQUEwRCxDQUFDO0FBQzdHLE9BQU8sRUFBQyxrREFBa0QsRUFBQyxNQUFNLDBFQUEwRSxDQUFDO0FBQzVJLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwrQ0FBK0MsQ0FBQztBQUd2RSxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwrREFBK0QsQ0FBQztBQUNwRyxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzdCLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSx3REFBd0QsQ0FBQzs7Ozs7O0FB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QztJQUVNLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVPLHVCQUF1QixDQUFDLFVBQWtCO1FBQ2hELE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRU8sdUJBQXVCLENBQUMsVUFBa0I7UUFDaEQsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHNCQUFzQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxVQUFrQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVPLHFCQUFxQixDQUFDLFVBQWtCO1FBQzlDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRU8sc0JBQXNCLENBQUMsVUFBa0I7UUFDL0MsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxVQUFrQjtRQUMzQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUQsQ0FBQzs7OztZQXBORixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7OztZQTNCTyxtQ0FBbUM7WUFEbkMscUNBQXFDO1lBU3JDLG1DQUFtQztZQUNuQyxrREFBa0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VsZWN0TXVsdGlwbGVDYWNoZVNlcnZpY2V9IGZyb20gJy4uL2NhY2hlL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VsZWN0LW11bHRpcGxlLWNhY2hlLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uUmVsYXRpb25Db25uZWN0b3JTZXJ2aWNlfSBmcm9tICcuL3RyYW5zYWN0aW9uLXJlbGF0aW9uLWNvbm5lY3Rvci5zZXJ2aWNlJztcclxuaW1wb3J0IHtSZWxhdGlvbktpbmR9IGZyb20gJ0Bjb2xpam5pdC9hcnRpY2xlYXBpL2J1aWxkL2VudW0vcmVsYXRpb24ta2luZC5lbnVtJztcclxuaW1wb3J0IHtWYWxpZGF0aW9uUmVzdWx0fSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9tb2RlbC92YWxpZGF0aW9uLXJlc3VsdCc7XHJcbmltcG9ydCB7Q3VzdG9tZXJGdWxsT2JqZWN0fSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvY3VzdG9tZXItZnVsbC1vYmplY3QuYm8nO1xyXG5pbXBvcnQge1JlbGF0aW9uUmVxdWVzdH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLXJlcXVlc3QnO1xyXG5pbXBvcnQge1JlbGF0aW9uTGlzdE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWxpc3Qtb2JqZWN0LmJvJztcclxuaW1wb3J0IHtCcmFuY2hMb3Z9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9icmFuY2gtbG92LmJvJztcclxuaW1wb3J0IHtTdXBwbGllckZ1bGxPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9zdXBwbGllci1mdWxsLW9iamVjdC5ibyc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2V9IGZyb20gJy4uL2NhY2hlL3NlcnZpY2UvdHJhbnNhY3Rpb24tc2VsZWN0LXNpbmdsZS1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvblNlbGVjdE11bHRpcGxlUGFyYW1ldGVyaXplZENhY2hlU2VydmljZX0gZnJvbSAnLi4vY2FjaGUvc2VydmljZS90cmFuc2FjdGlvbi1zZWxlY3QtbXVsdGlwbGUtcGFyYW1ldGVyaXplZC1jYWNoZS5zZXJ2aWNlJztcclxuaW1wb3J0IHtSZWxhdGlvbn0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLmJvJztcclxuaW1wb3J0IHtSZWxhdGlvbkFueVR5cGV9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1hbnktdHlwZSc7XHJcbmltcG9ydCB7QWRkcmVzc30gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL2FkZHJlc3MuYm8nO1xyXG5pbXBvcnQge0J1c2luZXNzT2JqZWN0RmFjdG9yeX0gZnJvbSAnQGNvbGlqbml0L2lvbmVjb25uZWN0b3IvYnVpbGQvc2VydmljZS9idXNpbmVzcy1vYmplY3QtZmFjdG9yeSc7XHJcbmltcG9ydCB7U3ViamVjdH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7VXNlclJvbGVUeXBlfSBmcm9tICdAY29saWpuaXQvaW9uZWNvbm5lY3Rvci9idWlsZC9lbnVtL3VzZXItcm9sZS10eXBlLmVudW0nO1xyXG5pbXBvcnQge1JlbGF0aW9uU21hbGxPYmplY3R9IGZyb20gXCJAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tc21hbGwtb2JqZWN0LmJvXCI7XHJcbmltcG9ydCB7U3VwcGxpZXJMaWdodE9iamVjdH0gZnJvbSBcIkBjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9zdXBwbGllci1saWdodC1vYmplY3QuYm9cIjtcclxuXHJcbnR5cGUgTG9ja0ZuSGVhZGVyID0gKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PjtcclxudHlwZSBHZXRSZWxhdGlvbkZuSGVhZGVyID0gKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gUHJvbWlzZTxSZWxhdGlvbkFueVR5cGU+O1xyXG50eXBlIEluc2VydFJlbGF0aW9uRm4gPSAocmVsYXRpb246IFJlbGF0aW9uQW55VHlwZSkgPT4gUHJvbWlzZTxSZWxhdGlvbkFueVR5cGU+O1xyXG50eXBlIFVwZGF0ZVJlbGF0aW9uRm4gPSAocmVsYXRpb246IFJlbGF0aW9uQW55VHlwZSkgPT4gUHJvbWlzZTxSZWxhdGlvbkFueVR5cGU+O1xyXG5cclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJhbnNhY3Rpb25SZWxhdGlvblNlcnZpY2Uge1xyXG4gIHB1YmxpYyByZWxhdGlvblN1Z2dlc3Rpb25zUmVxdWVzdENsZWFyOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgcHJpdmF0ZSBfYWxsb3dlZFJvbGVzVG9JbnZpdGVSZWxhdGlvbjogVXNlclJvbGVUeXBlW10gPSBbVXNlclJvbGVUeXBlLkFkbWluaXN0cmF0b3IsIFVzZXJSb2xlVHlwZS5VcFN1cHBvcnRdO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9sb2NrTWV0aG9kczogTWFwPFJlbGF0aW9uS2luZCwgTG9ja0ZuSGVhZGVyPiA9IG5ldyBNYXA8UmVsYXRpb25LaW5kLCBMb2NrRm5IZWFkZXI+KFtcclxuICAgIFtSZWxhdGlvbktpbmQuQ3VzdG9tZXIsIChyZWxhdGlvbk5yOiBudW1iZXIpID0+IHRoaXMuX2xvY2tDdXN0b21lckZ1bGxPYmplY3QocmVsYXRpb25OcildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5TdXBwbGllciwgKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gdGhpcy5fbG9ja1N1cHBsaWVyRnVsbE9iamVjdChyZWxhdGlvbk5yKV0sXHJcbiAgICBbUmVsYXRpb25LaW5kLlBlcnNvbm5lbCwgKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gdGhpcy5fbG9ja0VtcGxveWVlRnVsbE9iamVjdChyZWxhdGlvbk5yKV0sXHJcbiAgICBbUmVsYXRpb25LaW5kLkJyYW5jaCwgKHJlbGF0aW9uTnI6IG51bWJlcikgPT4gdGhpcy5fbG9ja0JyYW5jaEZ1bGxPYmplY3QocmVsYXRpb25OcildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5Db21wYW55LCAocmVsYXRpb25OcjogbnVtYmVyKSA9PiB0aGlzLl9sb2NrQ29tcGFueUZ1bGxPYmplY3QocmVsYXRpb25OcildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5Db250YWN0UGVyc29uLCAocmVsYXRpb25OcjogbnVtYmVyKSA9PiB0aGlzLl9sb2NrQ29udGFjdFBlcnNvbihyZWxhdGlvbk5yKV0sXHJcbiAgXSk7XHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgX2dldE1ldGhvZHM6IE1hcDxSZWxhdGlvbktpbmQsIEdldFJlbGF0aW9uRm5IZWFkZXI+ID0gbmV3IE1hcDxSZWxhdGlvbktpbmQsIEdldFJlbGF0aW9uRm5IZWFkZXI+KFtcclxuICAgIFtSZWxhdGlvbktpbmQuQ3VzdG9tZXIsIChyZWxhdGlvbk5yOiBudW1iZXIpID0+IHRoaXMuZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0KHJlbGF0aW9uTnIpXSxcclxuICAgIFtSZWxhdGlvbktpbmQuU3VwcGxpZXIsIChyZWxhdGlvbk5yOiBudW1iZXIpID0+IHRoaXMuZ2V0U3VwcGxpZXJGdWxsT2JqZWN0KHJlbGF0aW9uTnIpXVxyXG4gIF0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF91cGRhdGVNZXRob2RzOiBNYXA8UmVsYXRpb25LaW5kLCBVcGRhdGVSZWxhdGlvbkZuPiA9IG5ldyBNYXA8UmVsYXRpb25LaW5kLCBVcGRhdGVSZWxhdGlvbkZuPihbXHJcbiAgICBbUmVsYXRpb25LaW5kLkN1c3RvbWVyLCAocmVsYXRpb246IEN1c3RvbWVyRnVsbE9iamVjdCkgPT4gdGhpcy51cGRhdGVDdXN0b21lcihyZWxhdGlvbildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5TdXBwbGllciwgKHJlbGF0aW9uOiBTdXBwbGllckZ1bGxPYmplY3QpID0+IHRoaXMudXBkYXRlU3VwcGxpZXIocmVsYXRpb24pXVxyXG4gIF0pO1xyXG5cclxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnNlcnRNZXRob2RzOiBNYXA8UmVsYXRpb25LaW5kLCBJbnNlcnRSZWxhdGlvbkZuPiA9IG5ldyBNYXA8UmVsYXRpb25LaW5kLCBJbnNlcnRSZWxhdGlvbkZuPihbXHJcbiAgICBbUmVsYXRpb25LaW5kLkN1c3RvbWVyLCAocmVsYXRpb246IEN1c3RvbWVyRnVsbE9iamVjdCkgPT4gdGhpcy5pbnNlcnRDdXN0b21lcihyZWxhdGlvbildLFxyXG4gICAgW1JlbGF0aW9uS2luZC5TdXBwbGllciwgKHJlbGF0aW9uOiBTdXBwbGllckZ1bGxPYmplY3QpID0+IHRoaXMuaW5zZXJ0U3VwcGxpZXIocmVsYXRpb24pXVxyXG4gIF0pXHJcblxyXG4gIHB1YmxpYyByZWxhdGlvbkxvY2tlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIF9ib0ZhY3Rvcnk6IEJ1c2luZXNzT2JqZWN0RmFjdG9yeSA9IG5ldyBCdXNpbmVzc09iamVjdEZhY3RvcnkoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIF9hZGFwdGVyU2VydmljZTogVHJhbnNhY3Rpb25SZWxhdGlvbkNvbm5lY3RvclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZTogVHJhbnNhY3Rpb25TZWxlY3RNdWx0aXBsZUNhY2hlU2VydmljZSxcclxuICAgIHByaXZhdGUgX3NlbGVjdFNpbmdsZUNhY2hlU2VydmljZTogVHJhbnNhY3Rpb25TZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2U6IFRyYW5zYWN0aW9uU2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlXHJcbiAgKSB7fVxyXG5cclxuICBwdWJsaWMgZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0KHJlbGF0aW9uTm86IG51bWJlcik6IFByb21pc2U8Q3VzdG9tZXJGdWxsT2JqZWN0PiB7XHJcbiAgICAvLyByZXR1cm4gdGhpcy5fc2VsZWN0U2luZ2xlQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxDdXN0b21lckZ1bGxPYmplY3Q+KEN1c3RvbWVyRnVsbE9iamVjdCwgcmVsYXRpb25ObywgKCkgPT4ge1xyXG4gICAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0Q3VzdG9tZXJGdWxsT2JqZWN0KHJlbGF0aW9uTm8pO1xyXG4gICAgLy8gfSkuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTdXBwbGllckZ1bGxPYmplY3QocmVsYXRpb25ObzogbnVtYmVyKTogUHJvbWlzZTxTdXBwbGllckZ1bGxPYmplY3Q+IHtcclxuICAgIC8vIHJldHVybiB0aGlzLl9zZWxlY3RTaW5nbGVDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFN1cHBsaWVyRnVsbE9iamVjdD4oU3VwcGxpZXJGdWxsT2JqZWN0LCByZWxhdGlvbk5vLCAoKSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTdXBwbGllckZ1bGxPYmplY3QocmVsYXRpb25Obyk7XHJcbiAgICAvLyB9KS5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFN1cHBsaWVyTGlnaHRCeUlkKHN1cHBsaWVySWQ6IG51bWJlcik6IFByb21pc2U8U3VwcGxpZXJMaWdodE9iamVjdD4ge1xyXG4gICAgLy8gcmV0dXJuIHRoaXMuX3NlbGVjdFNpbmdsZUNhY2hlU2VydmljZS5yZXF1ZXN0Q2FjaGU8U3VwcGxpZXJGdWxsT2JqZWN0PihTdXBwbGllckZ1bGxPYmplY3QsIHJlbGF0aW9uTm8sICgpID0+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRTdXBwbGllckxpZ2h0QnlJZChzdXBwbGllcklkKTtcclxuICAgIC8vIH0pLmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGluc2VydEFkZHJlc3MoYWRkcmVzczogQWRkcmVzcyk6IFByb21pc2U8QWRkcmVzcz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmluc2VydEFkZHJlc3MoYWRkcmVzcyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlQWRkcmVzcyhhZGRyZXNzOiBBZGRyZXNzKTogUHJvbWlzZTxBZGRyZXNzPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlQWRkcmVzcyhhZGRyZXNzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBpbnNlcnRDdXN0b21lcihyZWxhdGlvbjogQ3VzdG9tZXJGdWxsT2JqZWN0KTogUHJvbWlzZTxDdXN0b21lckZ1bGxPYmplY3Q+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5pbnNlcnRDdXN0b21lcihyZWxhdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgYXN5bmMgdXBkYXRlQ3VzdG9tZXIocmVsYXRpb246IEN1c3RvbWVyRnVsbE9iamVjdCk6IFByb21pc2U8Q3VzdG9tZXJGdWxsT2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UudXBkYXRlQ3VzdG9tZXIocmVsYXRpb24pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGluc2VydFN1cHBsaWVyKHJlbGF0aW9uOiBTdXBwbGllckZ1bGxPYmplY3QpOiBQcm9taXNlPFN1cHBsaWVyRnVsbE9iamVjdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmluc2VydFN1cHBsaWVyKHJlbGF0aW9uKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyB1cGRhdGVTdXBwbGllcihyZWxhdGlvbjogU3VwcGxpZXJGdWxsT2JqZWN0KTogUHJvbWlzZTxTdXBwbGllckZ1bGxPYmplY3Q+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS51cGRhdGVTdXBwbGllcihyZWxhdGlvbik7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UmVsYXRpb25MaXN0T2JqZWN0cyhyZWxhdGlvblJlcXVlc3Q6IFJlbGF0aW9uUmVxdWVzdCk6IFByb21pc2U8UmVsYXRpb25MaXN0T2JqZWN0W10+IHtcclxuICAgIC8vIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPFJlbGF0aW9uTGlzdE9iamVjdD4oUmVsYXRpb25MaXN0T2JqZWN0LCAocmVsYXRpb25SZXF1ZXN0KSA9PiB7XHJcbiAgICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXRSZWxhdGlvbkxpc3RPYmplY3RzKHJlbGF0aW9uUmVxdWVzdCk7XHJcbiAgICAvLyB9KS5nZXRWYWx1ZShyZWxhdGlvblJlcXVlc3QpO1xyXG4gIH1cclxuXHJcbiAgLy8gcHVibGljIGdldEF2YWlsYWJsZVN0b2NrRm9yU3VwcGxpZXIocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxTdXBwbGllckFydGljbGVTdG9ja0ZvcmVjYXN0RFRPPiB7XHJcbiAgLy8gICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0QXZhaWxhYmxlU3RvY2tGb3JTdXBwbGllcihyZWxhdGlvbklkKTtcclxuICAvLyB9XHJcblxyXG4gIHB1YmxpYyBnZXREaXJlY3RTZWxsU3VwcGxpZXJzKCk6IFByb21pc2U8UmVsYXRpb25MaXN0T2JqZWN0W10+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5nZXREaXJlY3RTZWxsU3VwcGxpZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0UmVsYXRpb25CeUlkKGlkOiBudW1iZXIpOiBQcm9taXNlPFJlbGF0aW9uTGlzdE9iamVjdFtdPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TXVsdGlwbGVQYXJhbWV0ZXJpemVkQ2FjaGVTZXJ2aWNlLnJlcXVlc3RDYWNoZTxSZWxhdGlvbkxpc3RPYmplY3Q+KFJlbGF0aW9uTGlzdE9iamVjdCwgKGlkOiBudW1iZXIpID0+IHtcclxuICAgICAgY29uc3QgcmVxdWVzdDogUmVsYXRpb25SZXF1ZXN0ID0gbmV3IFJlbGF0aW9uUmVxdWVzdCgpO1xyXG4gICAgICByZXF1ZXN0LnJlbGF0aW9uSWQgPSBpZDtcclxuICAgICAgcmV0dXJuIHRoaXMuZ2V0UmVsYXRpb25MaXN0T2JqZWN0cyhyZXF1ZXN0KTtcclxuICAgIH0pLmdldFZhbHVlKGlkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRSZWxhdGlvbk51bWJlcihyZWxhdGlvbklkOiBudW1iZXIpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldFJlbGF0aW9uTnVtYmVyKHJlbGF0aW9uSWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGdldFJlbGF0aW9uU21hbGxPYmplY3QocmVsYXRpb25JZDogbnVtYmVyKTogUHJvbWlzZTxSZWxhdGlvblNtYWxsT2JqZWN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuZ2V0UmVsYXRpb25TbWFsbE9iamVjdChyZWxhdGlvbklkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRCcmFuY2hlcyhicmFuY2hOcj86IHN0cmluZyk6IFByb21pc2U8QnJhbmNoTG92W10+IHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNdWx0aXBsZVBhcmFtZXRlcml6ZWRDYWNoZVNlcnZpY2UucmVxdWVzdENhY2hlPEJyYW5jaExvdj4oQnJhbmNoTG92LCAoYnJhbmNoTnI/OiBzdHJpbmcpID0+IHtcclxuICAgICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmdldEJyYW5jaGVzKGJyYW5jaE5yKVxyXG4gICAgfSkuZ2V0VmFsdWUoYnJhbmNoTnIpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGluc2VydFJlbGF0aW9uKHJlbGF0aW9uS2luZDogUmVsYXRpb25LaW5kLCByZWxhdGlvbjogUmVsYXRpb24pOiBQcm9taXNlPFJlbGF0aW9uPiB7XHJcbiAgICBjb25zdCBpbnNlcnRNZXRob2Q6IEluc2VydFJlbGF0aW9uRm4gPSB0aGlzLl9pbnNlcnRNZXRob2RzLmdldChyZWxhdGlvbktpbmQpO1xyXG4gICAgaWYgKGluc2VydE1ldGhvZCkge1xyXG4gICAgICByZXR1cm4gaW5zZXJ0TWV0aG9kLmNhbGwodGhpcywgcmVsYXRpb24pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgcmVzdWx0OiBSZWxhdGlvbiA9IG5ldyBSZWxhdGlvbigpO1xyXG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgdXBkYXRlUmVsYXRpb24ocmVsYXRpb25LaW5kOiBSZWxhdGlvbktpbmQsIHJlbGF0aW9uOiBSZWxhdGlvbik6IFByb21pc2U8UmVsYXRpb24+IHtcclxuICAgIGNvbnN0IHVwZGF0ZU1ldGhvZDogVXBkYXRlUmVsYXRpb25GbiA9IHRoaXMuX3VwZGF0ZU1ldGhvZHMuZ2V0KHJlbGF0aW9uS2luZCk7XHJcbiAgICBpZiAodXBkYXRlTWV0aG9kKSB7XHJcbiAgICAgIHRoaXMucmVsYXRpb25Mb2NrZWQgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuIHVwZGF0ZU1ldGhvZC5jYWxsKHRoaXMsIHJlbGF0aW9uKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogUmVsYXRpb24gPSBuZXcgUmVsYXRpb24oKTtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIGxvY2tSZWxhdGlvbihyZWxhdGlvbktpbmQ6IFJlbGF0aW9uS2luZCwgcmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxWYWxpZGF0aW9uUmVzdWx0PiB7XHJcbiAgICBpZiAocmVsYXRpb25Ocikge1xyXG4gICAgICBjb25zdCBsb2NrTWV0aG9kOiBMb2NrRm5IZWFkZXIgPSB0aGlzLl9sb2NrTWV0aG9kcy5nZXQocmVsYXRpb25LaW5kKTtcclxuICAgICAgaWYgKGxvY2tNZXRob2QpIHtcclxuICAgICAgICBjb25zdCByZXNwb25zZTogVmFsaWRhdGlvblJlc3VsdCA9IGF3YWl0IGxvY2tNZXRob2QuY2FsbCh0aGlzLCByZWxhdGlvbk5yKTtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3VjY2Vzcykge1xyXG4gICAgICAgICAgdGhpcy5yZWxhdGlvbkxvY2tlZCA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiByZXNwb25zZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb25zdCByZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQgPSBuZXcgVmFsaWRhdGlvblJlc3VsdCgpO1xyXG4gICAgICAgIHJlc3VsdC5zdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCByZXN1bHQ6IFZhbGlkYXRpb25SZXN1bHQgPSBuZXcgVmFsaWRhdGlvblJlc3VsdCgpO1xyXG4gICAgICByZXN1bHQuc3VjY2VzcyA9IHRydWU7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVzdWx0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRSZWxhdGlvbihyZWxhdGlvbktpbmQ6IFJlbGF0aW9uS2luZCwgcmVsYXRpb25OcjogbnVtYmVyKTogUHJvbWlzZTxSZWxhdGlvbkFueVR5cGU+IHtcclxuICAgIGNvbnN0IGdldE1ldGhvZDogR2V0UmVsYXRpb25GbkhlYWRlciA9IHRoaXMuX2dldE1ldGhvZHMuZ2V0KHJlbGF0aW9uS2luZCk7XHJcbiAgICBpZiAoZ2V0TWV0aG9kKSB7XHJcbiAgICAgIHJldHVybiBnZXRNZXRob2QuY2FsbCh0aGlzLCByZWxhdGlvbk5yKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IHJlc3VsdDogVmFsaWRhdGlvblJlc3VsdCA9IG5ldyBWYWxpZGF0aW9uUmVzdWx0KCk7XHJcbiAgICAgIHJlc3VsdC5zdWNjZXNzID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xvbmVSZWxhdGlvbihyZWxhdGlvbjogUmVsYXRpb25BbnlUeXBlKTogUmVsYXRpb25BbnlUeXBlIHtcclxuICAgIHN3aXRjaCAocmVsYXRpb24ucmVsYXRpb25UeXBlKSB7XHJcbiAgICAgIGNhc2UgUmVsYXRpb25LaW5kLkN1c3RvbWVyOlxyXG4gICAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShDdXN0b21lckZ1bGxPYmplY3QsIHJlbGF0aW9uKSBhcyBDdXN0b21lckZ1bGxPYmplY3Q7XHJcbiAgICAgIGNhc2UgUmVsYXRpb25LaW5kLlN1cHBsaWVyOlxyXG4gICAgICAgIHJldHVybiB0aGlzLl9ib0ZhY3RvcnkubWFrZVdpdGhSYXdCYWNrZW5kRGF0YShTdXBwbGllckZ1bGxPYmplY3QsIHJlbGF0aW9uKSBhcyBTdXBwbGllckZ1bGxPYmplY3Q7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2JvRmFjdG9yeS5tYWtlV2l0aFJhd0JhY2tlbmREYXRhKEN1c3RvbWVyRnVsbE9iamVjdCwgcmVsYXRpb24pIGFzIEN1c3RvbWVyRnVsbE9iamVjdDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb21taXQoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWRhcHRlclNlcnZpY2UuY29tbWl0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2NrQ3VzdG9tZXJGdWxsT2JqZWN0KHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tDdXN0b21lckZ1bGxPYmplY3QocmVsYXRpb25Ocik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2NrU3VwcGxpZXJGdWxsT2JqZWN0KHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tTdXBwbGllckZ1bGxPYmplY3QocmVsYXRpb25Ocik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2NrRW1wbG95ZWVGdWxsT2JqZWN0KHJlbGF0aW9uTnI6IG51bWJlcik6IFByb21pc2U8VmFsaWRhdGlvblJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FkYXB0ZXJTZXJ2aWNlLmxvY2tFbXBsb3llZUZ1bGxPYmplY3QocmVsYXRpb25Ocik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2NrQnJhbmNoRnVsbE9iamVjdChyZWxhdGlvbk5yOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrQnJhbmNoRnVsbE9iamVjdChyZWxhdGlvbk5yKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvY2tDb21wYW55RnVsbE9iamVjdChyZWxhdGlvbk5yOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrQ29tcGFueUZ1bGxPYmplY3QocmVsYXRpb25Ocik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2NrQ29udGFjdFBlcnNvbihyZWxhdGlvbk5yOiBudW1iZXIpOiBQcm9taXNlPFZhbGlkYXRpb25SZXN1bHQ+IHtcclxuICAgIHJldHVybiB0aGlzLl9hZGFwdGVyU2VydmljZS5sb2NrQ29udGFjdFBlcnNvbihyZWxhdGlvbk5yKTtcclxuICB9XHJcbn1cclxuIl19