@c8y/ngx-components 1018.0.115 → 1018.0.119

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 (24) hide show
  1. package/esm2020/core/common/permissions.service.mjs +2 -4
  2. package/esm2020/core/realtime/measurement-realtime.service.mjs +4 -2
  3. package/esm2020/device-profile/device-profile.component.mjs +4 -2
  4. package/esm2020/sub-assets/add-group/add-group.component.mjs +3 -4
  5. package/esm2020/sub-assets/sub-assets.component.mjs +2 -5
  6. package/esm2020/widgets/implementations/kpi/kpi-widget-view/kpi-widget-view.component.mjs +2 -2
  7. package/fesm2015/c8y-ngx-components-device-profile.mjs +3 -1
  8. package/fesm2015/c8y-ngx-components-device-profile.mjs.map +1 -1
  9. package/fesm2015/c8y-ngx-components-sub-assets.mjs +3 -7
  10. package/fesm2015/c8y-ngx-components-sub-assets.mjs.map +1 -1
  11. package/fesm2015/c8y-ngx-components-widgets-implementations-kpi.mjs +1 -1
  12. package/fesm2015/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  13. package/fesm2015/c8y-ngx-components.mjs +4 -4
  14. package/fesm2015/c8y-ngx-components.mjs.map +1 -1
  15. package/fesm2020/c8y-ngx-components-device-profile.mjs +3 -1
  16. package/fesm2020/c8y-ngx-components-device-profile.mjs.map +1 -1
  17. package/fesm2020/c8y-ngx-components-sub-assets.mjs +3 -7
  18. package/fesm2020/c8y-ngx-components-sub-assets.mjs.map +1 -1
  19. package/fesm2020/c8y-ngx-components-widgets-implementations-kpi.mjs +1 -1
  20. package/fesm2020/c8y-ngx-components-widgets-implementations-kpi.mjs.map +1 -1
  21. package/fesm2020/c8y-ngx-components.mjs +4 -4
  22. package/fesm2020/c8y-ngx-components.mjs.map +1 -1
  23. package/package.json +1 -1
  24. package/widgets/implementations/kpi/kpi-widget-view/kpi-widget-view.component.d.ts +2 -2
@@ -68,11 +68,9 @@ export class Permissions {
68
68
  return currentUserName === data.owner;
69
69
  }
70
70
  checkWithRequest(mo) {
71
- const moName = mo.name;
72
71
  const moId = mo.id;
73
72
  const partialUpdateObject = {
74
- id: moId,
75
- name: moName
73
+ id: moId
76
74
  };
77
75
  return this.inventory
78
76
  .update(partialUpdateObject)
@@ -114,4 +112,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
114
112
  type: Injectable,
115
113
  args: [{ providedIn: 'root' }]
116
114
  }], ctorParameters: function () { return [{ type: i1.AppStateService }, { type: i2.InventoryService }, { type: i2.UserService }]; }, propDecorators: { checkIfOwner: [], checkWithRequest: [] } });
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL3Blcm1pc3Npb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBK0IsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQWtCMUMsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFDVSxRQUF5QixFQUN6QixTQUEyQixFQUMzQixJQUFpQjtRQUZqQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFhO0lBQ3hCLENBQUM7SUFFSjs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxPQUFPLENBQ0wsT0FBTyxFQUNQLEVBQWdDLEVBQ2hDLFNBQXdCO1FBQ3RCLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLGdCQUFnQixFQUFFLEtBQUs7S0FDeEI7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQWM7UUFDcEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1NBQzFFO1FBQ0QsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFpQjtRQUMzQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDcEQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7U0FDMUU7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsVUFBVSxDQUFDLE9BQWlCO1FBQzFCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQztRQUNwRCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztTQUMxRTtRQUNELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxjQUF3QjtRQUN2QyxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFDcEQsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7U0FDakY7UUFDRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFHUyxLQUFLLENBQUMsWUFBWSxDQUFDLEVBQUU7UUFDN0IsTUFBTSxlQUFlLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ3ZFLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNwRCxPQUFPLGVBQWUsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFHUyxnQkFBZ0IsQ0FBQyxFQUFFO1FBQzNCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDdkIsTUFBTSxJQUFJLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUNuQixNQUFNLG1CQUFtQixHQUE0QjtZQUNuRCxFQUFFLEVBQUUsSUFBSTtZQUNSLElBQUksRUFBRSxNQUFNO1NBQ2IsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLFNBQVM7YUFDbEIsTUFBTSxDQUFDLG1CQUFtQixDQUFDO2FBQzNCLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDVCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDVixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVPLEtBQUssQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFxQjtRQUM3RCxJQUFJLENBQUMsTUFBTSxFQUFFLGNBQWMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO1lBQy9ELE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLGNBQWMsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ25FLE9BQU8sSUFBSSxDQUFDO1NBQ2I7YUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFnQixJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUN6RSxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDOzt3R0FsR1UsV0FBVzs0R0FBWCxXQUFXLGNBREUsTUFBTTtBQWtFOUI7SUFEQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7OytDQUt2QjtBQUdEO0lBREMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7OzttREFnQnZCOzJGQXZGVSxXQUFXO2tCQUR2QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTsrSkFrRWhCLFlBQVksTUFPbEIsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwU3RhdGVTZXJ2aWNlIH0gZnJvbSAnLi91aS1zdGF0ZS5zZXJ2aWNlJztcbmltcG9ydCB7IElJZGVudGlmaWVkLCBJTWFuYWdlZE9iamVjdCwgSW52ZW50b3J5U2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7IHByb3BlcnR5IH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7IG1lbW9pemUgfSBmcm9tICcuL21lbW9pemUuZGVjb3JhdG9yJztcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuXG5leHBvcnQgdHlwZSBDYW5FZGl0Q29uZmlnID0ge1xuICAvKipcbiAgICogU2tpcHMgcm9sZXMgY2hlY2suXG4gICAqL1xuICBza2lwUm9sZXNDaGVjaz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTa2lwcyBtYW5hZ2VkIG9iamVjdCBvd25lcnNoaXAgY2hlY2suXG4gICAqL1xuICBza2lwT3duZXJDaGVjaz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBTa2lwcyBjaGVja3Mgd2l0aCBhIHF1ZXJ5IHRvIHRoZSBpbnZlbnRvcnkgQVBJLlxuICAgKi9cbiAgc2tpcFJlcXVlc3RDaGVjaz86IGJvb2xlYW47XG59O1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25zIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBhcHBTdGF0ZTogQXBwU3RhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5OiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgdXNlcjogVXNlclNlcnZpY2VcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGN1cnJlbnQgdXNlciBoYXMgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoZSBnaXZlbiBtby5cbiAgICogKGVpdGhlciB0aHJvdWdoIGdsb2JhbCByb2xlLCBpbmRpdmlkdWFsIGRldmljZSBwZXJtaXNzaW9ucyBvciB2aWEgaW52ZW50b3J5IHJvbGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheX0gcm9sZUlkcyBBcnJheSBvZiByb2xlcyB3aGljaCB0aGUgY3VycmVudCB1c2VyIHNob3VsZCBoYXZlLlxuICAgKiBAcGFyYW0ge0lNYW5hZ2VkT2JqZWN0IHwgSUlkZW50aWZpZWR9IG1vIFRoZSBtYW5hZ2VkIG9iamVjdCBmb3Igd2hpY2ggd2UgYXJlIGNoZWNraW5nIHdoZXRoZXIgdGhlIHVzZXIgaGFzIGFjY2Vzcy5cbiAgICogQHBhcmFtIHtDYW5FZGl0Q29uZmlnfSBjb25maWcgQSBjb25maWd1cmF0aW9uIG9iamVjdCB0aGF0IGNhbiB0YWtlIHRoZSBmb2xsb3dpbmcgdmFsdWVzOlxuICAgKiAtIGBza2lwUm9sZXNDaGVja2A6IGBib29sZWFuYCAtIHNraXBzIHJvbGVzIGNoZWNrLFxuICAgKiAtIGBza2lwT3duZXJDaGVja2A6IGBib29sZWFuYCAtIHNraXBzIG93bmVyc2hpcCBjaGVjayxcbiAgICogLSBgc2tpcFJlcXVlc3RDaGVja2A6IGBib29sZWFuYCAtIHNraXBzIGNoZWNrcyB3aXRoIGEgcXVlcnkgdG8gdGhlIGludmVudG9yeSBBUEkuXG4gICAqICAgVUkgd2lsbCBtYWtlIGEgcXVlcnkgdG8gYmFja2VuZCB3aGV0aGVyIHRoZSB1c2VyIGNhbiBlZGl0IHRoZSBtYW5hZ2VkIG9iamVjdC5cbiAgICogICBBIHJlamVjdGlvbiBmcm9tIEJFIGluZGljYXRlcyBhIGxhY2sgb2YgcGVybWlzc2lvbi5cbiAgICovXG4gIGNhbkVkaXQoXG4gICAgcm9sZUlkcyxcbiAgICBtbzogSU1hbmFnZWRPYmplY3QgfCBJSWRlbnRpZmllZCxcbiAgICBjb25maWc6IENhbkVkaXRDb25maWcgPSB7XG4gICAgICBza2lwUm9sZXNDaGVjazogZmFsc2UsXG4gICAgICBza2lwT3duZXJDaGVjazogZmFsc2UsXG4gICAgICBza2lwUmVxdWVzdENoZWNrOiBmYWxzZVxuICAgIH1cbiAgKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hlY2tJZkNhbkVkaXQocm9sZUlkcywgbW8sIGNvbmZpZyk7XG4gIH1cblxuICBoYXNSb2xlKHJvbGVJZDogc3RyaW5nKSB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIGlmICghY3VycmVudFVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUm9sZXMgY2FuIG9ubHkgYmUgcmVxdWVzdGVkIGlmIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlci5oYXNSb2xlKGN1cnJlbnRVc2VyLCByb2xlSWQpO1xuICB9XG5cbiAgaGFzQWxsUm9sZXMocm9sZUlkczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWU7XG4gICAgaWYgKCFjdXJyZW50VXNlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSb2xlcyBjYW4gb25seSBiZSByZXF1ZXN0ZWQgaWYgdGhlIHVzZXIgaXMgbG9nZ2VkIGluLicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy51c2VyLmhhc0FsbFJvbGVzKGN1cnJlbnRVc2VyLCByb2xlSWRzKTtcbiAgfVxuXG4gIGhhc0FueVJvbGUocm9sZUlkczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWU7XG4gICAgaWYgKCFjdXJyZW50VXNlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdSb2xlcyBjYW4gb25seSBiZSByZXF1ZXN0ZWQgaWYgdGhlIHVzZXIgaXMgbG9nZ2VkIGluLicpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy51c2VyLmhhc0FueVJvbGUoY3VycmVudFVzZXIsIHJvbGVJZHMpO1xuICB9XG5cbiAgaGFzQW55R2xvYmFsUm9sZShnbG9iYWxSb2xlc0lkczogbnVtYmVyW10pIHtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWU7XG4gICAgaWYgKCFjdXJyZW50VXNlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdHbG9iYWwgcm9sZXMgY2FuIG9ubHkgYmUgcmVxdWVzdGVkIGlmIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlci5oYXNBbnlHbG9iYWxSb2xlKGN1cnJlbnRVc2VyLCBnbG9iYWxSb2xlc0lkcyk7XG4gIH1cblxuICBAbWVtb2l6ZShwcm9wZXJ0eSgnaWQnKSlcbiAgcHJvdGVjdGVkIGFzeW5jIGNoZWNrSWZPd25lcihtbykge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyTmFtZSA9IGF3YWl0IHRoaXMuYXBwU3RhdGUuY3VycmVudFVzZXIudmFsdWUudXNlck5hbWU7XG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmludmVudG9yeS5kZXRhaWwobW8uaWQpO1xuICAgIHJldHVybiBjdXJyZW50VXNlck5hbWUgPT09IGRhdGEub3duZXI7XG4gIH1cblxuICBAbWVtb2l6ZShwcm9wZXJ0eSgnaWQnKSlcbiAgcHJvdGVjdGVkIGNoZWNrV2l0aFJlcXVlc3QobW8pIHtcbiAgICBjb25zdCBtb05hbWUgPSBtby5uYW1lO1xuICAgIGNvbnN0IG1vSWQgPSBtby5pZDtcbiAgICBjb25zdCBwYXJ0aWFsVXBkYXRlT2JqZWN0OiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PiA9IHtcbiAgICAgIGlkOiBtb0lkLFxuICAgICAgbmFtZTogbW9OYW1lXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy5pbnZlbnRvcnlcbiAgICAgIC51cGRhdGUocGFydGlhbFVwZGF0ZU9iamVjdClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGNoZWNrSWZDYW5FZGl0KHJvbGVJZHMsIG1vLCBjb25maWc6IENhbkVkaXRDb25maWcpIHtcbiAgICBpZiAoIWNvbmZpZz8uc2tpcFJvbGVzQ2hlY2sgJiYgKGF3YWl0IHRoaXMuaGFzQW55Um9sZShyb2xlSWRzKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIWNvbmZpZz8uc2tpcE93bmVyQ2hlY2sgJiYgKGF3YWl0IHRoaXMuY2hlY2tJZk93bmVyKG1vKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSBpZiAoIWNvbmZpZz8uc2tpcFJlcXVlc3RDaGVjayAmJiAoYXdhaXQgdGhpcy5jaGVja1dpdGhSZXF1ZXN0KG1vKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiJdfQ==
115
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGVybWlzc2lvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvY29tbW9uL3Blcm1pc3Npb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELE9BQU8sRUFBK0IsZ0JBQWdCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDOUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQzs7OztBQWtCMUMsTUFBTSxPQUFPLFdBQVc7SUFDdEIsWUFDVSxRQUF5QixFQUN6QixTQUEyQixFQUMzQixJQUFpQjtRQUZqQixhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUN6QixjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixTQUFJLEdBQUosSUFBSSxDQUFhO0lBQ3hCLENBQUM7SUFFSjs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxPQUFPLENBQ0wsT0FBTyxFQUNQLEVBQWdDLEVBQ2hDLFNBQXdCO1FBQ3RCLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLGNBQWMsRUFBRSxLQUFLO1FBQ3JCLGdCQUFnQixFQUFFLEtBQUs7S0FDeEI7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQsT0FBTyxDQUFDLE1BQWM7UUFDcEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1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Y0FERSxNQUFNO0FBa0U5QjtJQURDLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Ozs7K0NBS3ZCO0FBR0Q7SUFEQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDOzs7O21EQWN2QjsyRkFyRlUsV0FBVztrQkFEdkIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7K0pBa0VoQixZQUFZLE1BT2xCLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFwcFN0YXRlU2VydmljZSB9IGZyb20gJy4vdWktc3RhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCwgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBwcm9wZXJ0eSB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBtZW1vaXplIH0gZnJvbSAnLi9tZW1vaXplLmRlY29yYXRvcic7XG5pbXBvcnQgeyBVc2VyU2VydmljZSB9IGZyb20gJ0BjOHkvY2xpZW50JztcblxuZXhwb3J0IHR5cGUgQ2FuRWRpdENvbmZpZyA9IHtcbiAgLyoqXG4gICAqIFNraXBzIHJvbGVzIGNoZWNrLlxuICAgKi9cbiAgc2tpcFJvbGVzQ2hlY2s/OiBib29sZWFuO1xuICAvKipcbiAgICogU2tpcHMgbWFuYWdlZCBvYmplY3Qgb3duZXJzaGlwIGNoZWNrLlxuICAgKi9cbiAgc2tpcE93bmVyQ2hlY2s/OiBib29sZWFuO1xuICAvKipcbiAgICogU2tpcHMgY2hlY2tzIHdpdGggYSBxdWVyeSB0byB0aGUgaW52ZW50b3J5IEFQSS5cbiAgICovXG4gIHNraXBSZXF1ZXN0Q2hlY2s/OiBib29sZWFuO1xufTtcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9ucyB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgYXBwU3RhdGU6IEFwcFN0YXRlU2VydmljZSxcbiAgICBwcml2YXRlIGludmVudG9yeTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIHVzZXI6IFVzZXJTZXJ2aWNlXG4gICkge31cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIHdyaXRlIHBlcm1pc3Npb25zIGZvciB0aGUgZ2l2ZW4gbW8uXG4gICAqIChlaXRoZXIgdGhyb3VnaCBnbG9iYWwgcm9sZSwgaW5kaXZpZHVhbCBkZXZpY2UgcGVybWlzc2lvbnMgb3IgdmlhIGludmVudG9yeSByb2xlcykuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXl9IHJvbGVJZHMgQXJyYXkgb2Ygcm9sZXMgd2hpY2ggdGhlIGN1cnJlbnQgdXNlciBzaG91bGQgaGF2ZS5cbiAgICogQHBhcmFtIHtJTWFuYWdlZE9iamVjdCB8IElJZGVudGlmaWVkfSBtbyBUaGUgbWFuYWdlZCBvYmplY3QgZm9yIHdoaWNoIHdlIGFyZSBjaGVja2luZyB3aGV0aGVyIHRoZSB1c2VyIGhhcyBhY2Nlc3MuXG4gICAqIEBwYXJhbSB7Q2FuRWRpdENvbmZpZ30gY29uZmlnIEEgY29uZmlndXJhdGlvbiBvYmplY3QgdGhhdCBjYW4gdGFrZSB0aGUgZm9sbG93aW5nIHZhbHVlczpcbiAgICogLSBgc2tpcFJvbGVzQ2hlY2tgOiBgYm9vbGVhbmAgLSBza2lwcyByb2xlcyBjaGVjayxcbiAgICogLSBgc2tpcE93bmVyQ2hlY2tgOiBgYm9vbGVhbmAgLSBza2lwcyBvd25lcnNoaXAgY2hlY2ssXG4gICAqIC0gYHNraXBSZXF1ZXN0Q2hlY2tgOiBgYm9vbGVhbmAgLSBza2lwcyBjaGVja3Mgd2l0aCBhIHF1ZXJ5IHRvIHRoZSBpbnZlbnRvcnkgQVBJLlxuICAgKiAgIFVJIHdpbGwgbWFrZSBhIHF1ZXJ5IHRvIGJhY2tlbmQgd2hldGhlciB0aGUgdXNlciBjYW4gZWRpdCB0aGUgbWFuYWdlZCBvYmplY3QuXG4gICAqICAgQSByZWplY3Rpb24gZnJvbSBCRSBpbmRpY2F0ZXMgYSBsYWNrIG9mIHBlcm1pc3Npb24uXG4gICAqL1xuICBjYW5FZGl0KFxuICAgIHJvbGVJZHMsXG4gICAgbW86IElNYW5hZ2VkT2JqZWN0IHwgSUlkZW50aWZpZWQsXG4gICAgY29uZmlnOiBDYW5FZGl0Q29uZmlnID0ge1xuICAgICAgc2tpcFJvbGVzQ2hlY2s6IGZhbHNlLFxuICAgICAgc2tpcE93bmVyQ2hlY2s6IGZhbHNlLFxuICAgICAgc2tpcFJlcXVlc3RDaGVjazogZmFsc2VcbiAgICB9XG4gICkge1xuICAgIHJldHVybiB0aGlzLmNoZWNrSWZDYW5FZGl0KHJvbGVJZHMsIG1vLCBjb25maWcpO1xuICB9XG5cbiAgaGFzUm9sZShyb2xlSWQ6IHN0cmluZykge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5hcHBTdGF0ZS5jdXJyZW50VXNlci52YWx1ZTtcbiAgICBpZiAoIWN1cnJlbnRVc2VyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JvbGVzIGNhbiBvbmx5IGJlIHJlcXVlc3RlZCBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXIuaGFzUm9sZShjdXJyZW50VXNlciwgcm9sZUlkKTtcbiAgfVxuXG4gIGhhc0FsbFJvbGVzKHJvbGVJZHM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIGlmICghY3VycmVudFVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUm9sZXMgY2FuIG9ubHkgYmUgcmVxdWVzdGVkIGlmIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlci5oYXNBbGxSb2xlcyhjdXJyZW50VXNlciwgcm9sZUlkcyk7XG4gIH1cblxuICBoYXNBbnlSb2xlKHJvbGVJZHM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIGlmICghY3VycmVudFVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUm9sZXMgY2FuIG9ubHkgYmUgcmVxdWVzdGVkIGlmIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbi4nKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMudXNlci5oYXNBbnlSb2xlKGN1cnJlbnRVc2VyLCByb2xlSWRzKTtcbiAgfVxuXG4gIGhhc0FueUdsb2JhbFJvbGUoZ2xvYmFsUm9sZXNJZHM6IG51bWJlcltdKSB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlO1xuICAgIGlmICghY3VycmVudFVzZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignR2xvYmFsIHJvbGVzIGNhbiBvbmx5IGJlIHJlcXVlc3RlZCBpZiB0aGUgdXNlciBpcyBsb2dnZWQgaW4uJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnVzZXIuaGFzQW55R2xvYmFsUm9sZShjdXJyZW50VXNlciwgZ2xvYmFsUm9sZXNJZHMpO1xuICB9XG5cbiAgQG1lbW9pemUocHJvcGVydHkoJ2lkJykpXG4gIHByb3RlY3RlZCBhc3luYyBjaGVja0lmT3duZXIobW8pIHtcbiAgICBjb25zdCBjdXJyZW50VXNlck5hbWUgPSBhd2FpdCB0aGlzLmFwcFN0YXRlLmN1cnJlbnRVc2VyLnZhbHVlLnVzZXJOYW1lO1xuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnkuZGV0YWlsKG1vLmlkKTtcbiAgICByZXR1cm4gY3VycmVudFVzZXJOYW1lID09PSBkYXRhLm93bmVyO1xuICB9XG5cbiAgQG1lbW9pemUocHJvcGVydHkoJ2lkJykpXG4gIHByb3RlY3RlZCBjaGVja1dpdGhSZXF1ZXN0KG1vKSB7XG4gICAgY29uc3QgbW9JZCA9IG1vLmlkO1xuICAgIGNvbnN0IHBhcnRpYWxVcGRhdGVPYmplY3Q6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+ID0ge1xuICAgICAgaWQ6IG1vSWRcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLmludmVudG9yeVxuICAgICAgLnVwZGF0ZShwYXJ0aWFsVXBkYXRlT2JqZWN0KVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tJZkNhbkVkaXQocm9sZUlkcywgbW8sIGNvbmZpZzogQ2FuRWRpdENvbmZpZykge1xuICAgIGlmICghY29uZmlnPy5za2lwUm9sZXNDaGVjayAmJiAoYXdhaXQgdGhpcy5oYXNBbnlSb2xlKHJvbGVJZHMpKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghY29uZmlnPy5za2lwT3duZXJDaGVjayAmJiAoYXdhaXQgdGhpcy5jaGVja0lmT3duZXIobW8pKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmICghY29uZmlnPy5za2lwUmVxdWVzdENoZWNrICYmIChhd2FpdCB0aGlzLmNoZWNrV2l0aFJlcXVlc3QobW8pKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
@@ -61,7 +61,9 @@ export class MeasurementRealtimeService extends RealtimeService {
61
61
  map(result => !emitNullIfInitialValuesWereNotFound || result.data.length ? result.data : [null]),
62
62
  // reverse required, so that measurements are received ordered by time (ascending).
63
63
  // from ensures values are sent as single measurements and not a measurement array.
64
- switchMap(result => from(result.reverse())));
64
+ // TODO: replace `[...result].reverse()` with `result.toReversed()` once es2023 is available.
65
+ // Had to clone the result array as otherwise reverse may alternate the array multiple times if the observable is subscribed multiple times.
66
+ switchMap(result => from([...result].reverse())));
65
67
  }
66
68
  channel() {
67
69
  return '/measurements/*';
@@ -72,4 +74,4 @@ MeasurementRealtimeService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12
72
74
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: MeasurementRealtimeService, decorators: [{
73
75
  type: Injectable
74
76
  }], ctorParameters: function () { return [{ type: i1.RealtimeSubjectService }, { type: i2.MeasurementService }]; } });
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQtcmVhbHRpbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcmVhbHRpbWUvbWVhc3VyZW1lbnQtcmVhbHRpbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBNkIsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBR3JELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxlQUE2QjtJQUMzRSxZQUNZLGVBQXVDLEVBQ3ZDLGtCQUFzQztRQUVoRCxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFIYixvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUdsRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILDhCQUE4QixDQUM1QixRQUFnQixFQUNoQixNQUFjLEVBQ2QsVUFBMEM7UUFFMUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0gsaUNBQWlDLENBQy9CLFFBQWdCLEVBQ2hCLE1BQWMsRUFDZCxVQUF5QyxFQUN6QyxRQUFRLEdBQUcsQ0FBQyxFQUNaLG1DQUFtQyxHQUFHLEtBQUs7UUFFM0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQzVDLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsRUFDUixtQ0FBbUMsQ0FDcEMsQ0FBQztRQUNGLE9BQU8sS0FBSyxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFUyxnQkFBZ0IsQ0FDeEIsUUFBZ0IsRUFDaEIsTUFBYyxFQUNkLFVBQXlDLEVBQ3pDLFFBQWdCLEVBQ2hCLG1DQUFtQyxHQUFHLEtBQUs7UUFFM0MsT0FBTyxJQUFJLENBQ1QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztZQUMzQixtQkFBbUIsRUFBRSxNQUFNO1lBQzNCLGlCQUFpQixFQUFFLFFBQVE7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQ3BDLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUTtTQUNULENBQUMsQ0FDSCxDQUFDLElBQUk7UUFDSixxR0FBcUc7UUFDckcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ1gsQ0FBQyxtQ0FBbUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDbEY7UUFDRCxtRkFBbUY7UUFDbkYsbUZBQW1GO1FBQ25GLFNBQVMsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUM1QyxDQUFDO0lBQ0osQ0FBQztJQUVTLE9BQU87UUFDZixPQUFPLGlCQUFpQixDQUFDO0lBQzNCLENBQUM7O3VIQTFGVSwwQkFBMEI7MkhBQTFCLDBCQUEwQjsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUlkZW50aWZpZWQsIElNZWFzdXJlbWVudCwgTWVhc3VyZW1lbnRTZXJ2aWNlIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgZnJvbSwgbWVyZ2UsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBSZWFsdGltZVN1YmplY3RTZXJ2aWNlIH0gZnJvbSAnLi9yZWFsdGltZS1zdWJqZWN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgUmVhbHRpbWVTZXJ2aWNlIH0gZnJvbSAnLi9yZWFsdGltZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1lYXN1cmVtZW50UmVhbHRpbWVTZXJ2aWNlIGV4dGVuZHMgUmVhbHRpbWVTZXJ2aWNlPElNZWFzdXJlbWVudD4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgcmVhbHRpbWVTdWJqZWN0OiBSZWFsdGltZVN1YmplY3RTZXJ2aWNlLFxuICAgIHByb3RlY3RlZCBtZWFzdXJlbWVudFNlcnZpY2U6IE1lYXN1cmVtZW50U2VydmljZVxuICApIHtcbiAgICBzdXBlcihyZWFsdGltZVN1YmplY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBPYnNlcnZhYmxlIG9mIGFsbCBtZWFzdXJlbWVudHMgZmlsdGVyZWQgYnkgZnJhZ21lbnQgYW5kIHNlcmllcy5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGZyYWdtZW50IE1lYXN1cmVtZW50IGZyYWdtZW50XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzZXJpZXMgTWVhc3VyZW1lbnQgc2VyaWVzXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgbnVtYmVyIHwgSUlkZW50aWZpZWR9IGVudGl0eU9ySWQgRW50aXR5IG9iamVjdCBvciBpZFxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBbW09ic2VydmFibGVdXSBvZiBuZXdseSBjcmVhdGVkIGVudGl0eSBvYmplY3RzLlxuICAgKi9cbiAgb25DcmVhdGVPZlNwZWNpZmljTWVhc3VyZW1lbnQkKFxuICAgIGZyYWdtZW50OiBzdHJpbmcsXG4gICAgc2VyaWVzOiBzdHJpbmcsXG4gICAgZW50aXR5T3JJZD86IHN0cmluZyB8IG51bWJlciB8IElJZGVudGlmaWVkXG4gICk6IE9ic2VydmFibGU8SU1lYXN1cmVtZW50PiB7XG4gICAgcmV0dXJuIHRoaXMub25DcmVhdGUkKGVudGl0eU9ySWQpLnBpcGUoZmlsdGVyKG1zZyA9PiBtc2dbZnJhZ21lbnRdICYmIG1zZ1tmcmFnbWVudF1bc2VyaWVzXSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBPYnNlcnZhYmxlIG9mIGFsbCBtZWFzdXJlbWVudHMgZmlsdGVyZWQgYnkgZnJhZ21lbnQgYW5kIHNlcmllcy5cbiAgICogQ29tYmluZXMgdGhlIGxhdGVzdCB2YWx1ZSBmcm9tIG1lYXN1cmVtZW50IEFQSSBhbmQgZnV0dXJlIHZhbHVlcyB2aWEgcmVhbHRpbWUgQVBJLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhZ21lbnQgTWVhc3VyZW1lbnQgZnJhZ21lbnRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcmllcyBNZWFzdXJlbWVudCBzZXJpZXNcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBJSWRlbnRpZmllZH0gZW50aXR5T3JJZCBFbnRpdHkgb2JqZWN0IG9yIGlkXG4gICAqXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwYWdlU2l6ZSBOdW1iZXIgb2YgbWVhc3VyZW1lbnRzIHRvIGluaXRpYWxseSByZXRyaWV2ZSBmcm9tIGJhY2tlbmRcbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBlbWl0TnVsbElmSW5pdGlhbFZhbHVlc1dlcmVOb3RGb3VuZCBGbGFnIHRoYXQgaWYgc2V0IHRvIHRydWUgd2lsbCBpbml0aWFsbHkgZW1pdCB2YWx1ZSBvZiBudWxsIGluIGNhc2Ugbm8gbWVhc3VyZW1lbnQgY291bGQgaGF2ZSBiZWVuIHJldHJpZXZlZCBmcm9tIGJhY2tlbmRcbiAgICpcbiAgICogQHJldHVybnMgQW4gW1tPYnNlcnZhYmxlXV0gb2YgbmV3bHkgY3JlYXRlZCBlbnRpdHkgb2JqZWN0cy5cbiAgICovXG4gIGxhdGVzdFZhbHVlT2ZTcGVjaWZpY01lYXN1cmVtZW50JChcbiAgICBmcmFnbWVudDogc3RyaW5nLFxuICAgIHNlcmllczogc3RyaW5nLFxuICAgIGVudGl0eU9ySWQ6IHN0cmluZyB8IG51bWJlciB8IElJZGVudGlmaWVkLFxuICAgIHBhZ2VTaXplID0gMSxcbiAgICBlbWl0TnVsbElmSW5pdGlhbFZhbHVlc1dlcmVOb3RGb3VuZCA9IGZhbHNlXG4gICkge1xuICAgIGNvbnN0IHJlYWx0aW1lJCA9IHRoaXMub25DcmVhdGVPZlNwZWNpZmljTWVhc3VyZW1lbnQkKGZyYWdtZW50LCBzZXJpZXMsIGVudGl0eU9ySWQpO1xuICAgIGNvbnN0IGxhc3RNZWFzdXJlbWVudCQgPSB0aGlzLmxhc3RNZWFzdXJlbWVudCQoXG4gICAgICBmcmFnbWVudCxcbiAgICAgIHNlcmllcyxcbiAgICAgIGVudGl0eU9ySWQsXG4gICAgICBwYWdlU2l6ZSxcbiAgICAgIGVtaXROdWxsSWZJbml0aWFsVmFsdWVzV2VyZU5vdEZvdW5kXG4gICAgKTtcbiAgICByZXR1cm4gbWVyZ2UobGFzdE1lYXN1cmVtZW50JCwgcmVhbHRpbWUkKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBsYXN0TWVhc3VyZW1lbnQkKFxuICAgIGZyYWdtZW50OiBzdHJpbmcsXG4gICAgc2VyaWVzOiBzdHJpbmcsXG4gICAgZW50aXR5T3JJZDogc3RyaW5nIHwgbnVtYmVyIHwgSUlkZW50aWZpZWQsXG4gICAgcGFnZVNpemU6IG51bWJlcixcbiAgICBlbWl0TnVsbElmSW5pdGlhbFZhbHVlc1dlcmVOb3RGb3VuZCA9IGZhbHNlXG4gICkge1xuICAgIHJldHVybiBmcm9tKFxuICAgICAgdGhpcy5tZWFzdXJlbWVudFNlcnZpY2UubGlzdCh7XG4gICAgICAgIHZhbHVlRnJhZ21lbnRTZXJpZXM6IHNlcmllcyxcbiAgICAgICAgdmFsdWVGcmFnbWVudFR5cGU6IGZyYWdtZW50LFxuICAgICAgICBzb3VyY2U6IHRoaXMuZ2V0SWRTdHJpbmcoZW50aXR5T3JJZCksXG4gICAgICAgIGRhdGVGcm9tOiAnMTk3MC0wMS0wMScsXG4gICAgICAgIHJldmVydDogdHJ1ZSxcbiAgICAgICAgcGFnZVNpemVcbiAgICAgIH0pXG4gICAgKS5waXBlKFxuICAgICAgLy8gZW1pdCBudWxsIGluIGNhc2Ugbm8gdmFsdWUgY291bGQgaGF2ZSBiZWVuIHJldHJpZXZlZCBzbyB3ZSBhcmUgYWJsZSB0byBub3RlIHRoYXQgaW4gY2VydGFpbiBjYXNlcy5cbiAgICAgIG1hcChyZXN1bHQgPT5cbiAgICAgICAgIWVtaXROdWxsSWZJbml0aWFsVmFsdWVzV2VyZU5vdEZvdW5kIHx8IHJlc3VsdC5kYXRhLmxlbmd0aCA/IHJlc3VsdC5kYXRhIDogW251bGxdXG4gICAgICApLFxuICAgICAgLy8gcmV2ZXJzZSByZXF1aXJlZCwgc28gdGhhdCBtZWFzdXJlbWVudHMgYXJlIHJlY2VpdmVkIG9yZGVyZWQgYnkgdGltZSAoYXNjZW5kaW5nKS5cbiAgICAgIC8vIGZyb20gZW5zdXJlcyB2YWx1ZXMgYXJlIHNlbnQgYXMgc2luZ2xlIG1lYXN1cmVtZW50cyBhbmQgbm90IGEgbWVhc3VyZW1lbnQgYXJyYXkuXG4gICAgICBzd2l0Y2hNYXAocmVzdWx0ID0+IGZyb20ocmVzdWx0LnJldmVyc2UoKSkpXG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGFubmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcvbWVhc3VyZW1lbnRzLyonO1xuICB9XG59XG4iXX0=
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVhc3VyZW1lbnQtcmVhbHRpbWUuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2NvcmUvcmVhbHRpbWUvbWVhc3VyZW1lbnQtcmVhbHRpbWUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBNkIsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDNUUsT0FBTyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDL0MsT0FBTyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7O0FBR3JELE1BQU0sT0FBTywwQkFBMkIsU0FBUSxlQUE2QjtJQUMzRSxZQUNZLGVBQXVDLEVBQ3ZDLGtCQUFzQztRQUVoRCxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7UUFIYixvQkFBZSxHQUFmLGVBQWUsQ0FBd0I7UUFDdkMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtJQUdsRCxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILDhCQUE4QixDQUM1QixRQUFnQixFQUNoQixNQUFjLEVBQ2QsVUFBMEM7UUFFMUMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoRyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7OztPQWVHO0lBQ0gsaUNBQWlDLENBQy9CLFFBQWdCLEVBQ2hCLE1BQWMsRUFDZCxVQUF5QyxFQUN6QyxRQUFRLEdBQUcsQ0FBQyxFQUNaLG1DQUFtQyxHQUFHLEtBQUs7UUFFM0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDcEYsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQzVDLFFBQVEsRUFDUixNQUFNLEVBQ04sVUFBVSxFQUNWLFFBQVEsRUFDUixtQ0FBbUMsQ0FDcEMsQ0FBQztRQUNGLE9BQU8sS0FBSyxDQUFDLGdCQUFnQixFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFUyxnQkFBZ0IsQ0FDeEIsUUFBZ0IsRUFDaEIsTUFBYyxFQUNkLFVBQXlDLEVBQ3pDLFFBQWdCLEVBQ2hCLG1DQUFtQyxHQUFHLEtBQUs7UUFFM0MsT0FBTyxJQUFJLENBQ1QsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQztZQUMzQixtQkFBbUIsRUFBRSxNQUFNO1lBQzNCLGlCQUFpQixFQUFFLFFBQVE7WUFDM0IsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDO1lBQ3BDLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLE1BQU0sRUFBRSxJQUFJO1lBQ1osUUFBUTtTQUNULENBQUMsQ0FDSCxDQUFDLElBQUk7UUFDSixxR0FBcUc7UUFDckcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQ1gsQ0FBQyxtQ0FBbUMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FDbEY7UUFDRCxtRkFBbUY7UUFDbkYsbUZBQW1GO1FBQ25GLDZGQUE2RjtRQUM3Riw0SUFBNEk7UUFDNUksU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQ2pELENBQUM7SUFDSixDQUFDO0lBRVMsT0FBTztRQUNmLE9BQU8saUJBQWlCLENBQUM7SUFDM0IsQ0FBQzs7dUhBNUZVLDBCQUEwQjsySEFBMUIsMEJBQTBCOzJGQUExQiwwQkFBMEI7a0JBRHRDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJSWRlbnRpZmllZCwgSU1lYXN1cmVtZW50LCBNZWFzdXJlbWVudFNlcnZpY2UgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQgeyBmcm9tLCBtZXJnZSwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFJlYWx0aW1lU3ViamVjdFNlcnZpY2UgfSBmcm9tICcuL3JlYWx0aW1lLXN1YmplY3Quc2VydmljZSc7XG5pbXBvcnQgeyBSZWFsdGltZVNlcnZpY2UgfSBmcm9tICcuL3JlYWx0aW1lLnNlcnZpY2UnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgTWVhc3VyZW1lbnRSZWFsdGltZVNlcnZpY2UgZXh0ZW5kcyBSZWFsdGltZVNlcnZpY2U8SU1lYXN1cmVtZW50PiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCByZWFsdGltZVN1YmplY3Q6IFJlYWx0aW1lU3ViamVjdFNlcnZpY2UsXG4gICAgcHJvdGVjdGVkIG1lYXN1cmVtZW50U2VydmljZTogTWVhc3VyZW1lbnRTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHJlYWx0aW1lU3ViamVjdCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIE9ic2VydmFibGUgb2YgYWxsIG1lYXN1cmVtZW50cyBmaWx0ZXJlZCBieSBmcmFnbWVudCBhbmQgc2VyaWVzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhZ21lbnQgTWVhc3VyZW1lbnQgZnJhZ21lbnRcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcmllcyBNZWFzdXJlbWVudCBzZXJpZXNcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmcgfCBudW1iZXIgfCBJSWRlbnRpZmllZH0gZW50aXR5T3JJZCBFbnRpdHkgb2JqZWN0IG9yIGlkXG4gICAqXG4gICAqIEByZXR1cm5zIEFuIFtbT2JzZXJ2YWJsZV1dIG9mIG5ld2x5IGNyZWF0ZWQgZW50aXR5IG9iamVjdHMuXG4gICAqL1xuICBvbkNyZWF0ZU9mU3BlY2lmaWNNZWFzdXJlbWVudCQoXG4gICAgZnJhZ21lbnQ6IHN0cmluZyxcbiAgICBzZXJpZXM6IHN0cmluZyxcbiAgICBlbnRpdHlPcklkPzogc3RyaW5nIHwgbnVtYmVyIHwgSUlkZW50aWZpZWRcbiAgKTogT2JzZXJ2YWJsZTxJTWVhc3VyZW1lbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5vbkNyZWF0ZSQoZW50aXR5T3JJZCkucGlwZShmaWx0ZXIobXNnID0+IG1zZ1tmcmFnbWVudF0gJiYgbXNnW2ZyYWdtZW50XVtzZXJpZXNdKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGFuIE9ic2VydmFibGUgb2YgYWxsIG1lYXN1cmVtZW50cyBmaWx0ZXJlZCBieSBmcmFnbWVudCBhbmQgc2VyaWVzLlxuICAgKiBDb21iaW5lcyB0aGUgbGF0ZXN0IHZhbHVlIGZyb20gbWVhc3VyZW1lbnQgQVBJIGFuZCBmdXR1cmUgdmFsdWVzIHZpYSByZWFsdGltZSBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmcmFnbWVudCBNZWFzdXJlbWVudCBmcmFnbWVudFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VyaWVzIE1lYXN1cmVtZW50IHNlcmllc1xuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZyB8IG51bWJlciB8IElJZGVudGlmaWVkfSBlbnRpdHlPcklkIEVudGl0eSBvYmplY3Qgb3IgaWRcbiAgICpcbiAgICogQHBhcmFtIHtudW1iZXJ9IHBhZ2VTaXplIE51bWJlciBvZiBtZWFzdXJlbWVudHMgdG8gaW5pdGlhbGx5IHJldHJpZXZlIGZyb20gYmFja2VuZFxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVtaXROdWxsSWZJbml0aWFsVmFsdWVzV2VyZU5vdEZvdW5kIEZsYWcgdGhhdCBpZiBzZXQgdG8gdHJ1ZSB3aWxsIGluaXRpYWxseSBlbWl0IHZhbHVlIG9mIG51bGwgaW4gY2FzZSBubyBtZWFzdXJlbWVudCBjb3VsZCBoYXZlIGJlZW4gcmV0cmlldmVkIGZyb20gYmFja2VuZFxuICAgKlxuICAgKiBAcmV0dXJucyBBbiBbW09ic2VydmFibGVdXSBvZiBuZXdseSBjcmVhdGVkIGVudGl0eSBvYmplY3RzLlxuICAgKi9cbiAgbGF0ZXN0VmFsdWVPZlNwZWNpZmljTWVhc3VyZW1lbnQkKFxuICAgIGZyYWdtZW50OiBzdHJpbmcsXG4gICAgc2VyaWVzOiBzdHJpbmcsXG4gICAgZW50aXR5T3JJZDogc3RyaW5nIHwgbnVtYmVyIHwgSUlkZW50aWZpZWQsXG4gICAgcGFnZVNpemUgPSAxLFxuICAgIGVtaXROdWxsSWZJbml0aWFsVmFsdWVzV2VyZU5vdEZvdW5kID0gZmFsc2VcbiAgKSB7XG4gICAgY29uc3QgcmVhbHRpbWUkID0gdGhpcy5vbkNyZWF0ZU9mU3BlY2lmaWNNZWFzdXJlbWVudCQoZnJhZ21lbnQsIHNlcmllcywgZW50aXR5T3JJZCk7XG4gICAgY29uc3QgbGFzdE1lYXN1cmVtZW50JCA9IHRoaXMubGFzdE1lYXN1cmVtZW50JChcbiAgICAgIGZyYWdtZW50LFxuICAgICAgc2VyaWVzLFxuICAgICAgZW50aXR5T3JJZCxcbiAgICAgIHBhZ2VTaXplLFxuICAgICAgZW1pdE51bGxJZkluaXRpYWxWYWx1ZXNXZXJlTm90Rm91bmRcbiAgICApO1xuICAgIHJldHVybiBtZXJnZShsYXN0TWVhc3VyZW1lbnQkLCByZWFsdGltZSQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGxhc3RNZWFzdXJlbWVudCQoXG4gICAgZnJhZ21lbnQ6IHN0cmluZyxcbiAgICBzZXJpZXM6IHN0cmluZyxcbiAgICBlbnRpdHlPcklkOiBzdHJpbmcgfCBudW1iZXIgfCBJSWRlbnRpZmllZCxcbiAgICBwYWdlU2l6ZTogbnVtYmVyLFxuICAgIGVtaXROdWxsSWZJbml0aWFsVmFsdWVzV2VyZU5vdEZvdW5kID0gZmFsc2VcbiAgKSB7XG4gICAgcmV0dXJuIGZyb20oXG4gICAgICB0aGlzLm1lYXN1cmVtZW50U2VydmljZS5saXN0KHtcbiAgICAgICAgdmFsdWVGcmFnbWVudFNlcmllczogc2VyaWVzLFxuICAgICAgICB2YWx1ZUZyYWdtZW50VHlwZTogZnJhZ21lbnQsXG4gICAgICAgIHNvdXJjZTogdGhpcy5nZXRJZFN0cmluZyhlbnRpdHlPcklkKSxcbiAgICAgICAgZGF0ZUZyb206ICcxOTcwLTAxLTAxJyxcbiAgICAgICAgcmV2ZXJ0OiB0cnVlLFxuICAgICAgICBwYWdlU2l6ZVxuICAgICAgfSlcbiAgICApLnBpcGUoXG4gICAgICAvLyBlbWl0IG51bGwgaW4gY2FzZSBubyB2YWx1ZSBjb3VsZCBoYXZlIGJlZW4gcmV0cmlldmVkIHNvIHdlIGFyZSBhYmxlIHRvIG5vdGUgdGhhdCBpbiBjZXJ0YWluIGNhc2VzLlxuICAgICAgbWFwKHJlc3VsdCA9PlxuICAgICAgICAhZW1pdE51bGxJZkluaXRpYWxWYWx1ZXNXZXJlTm90Rm91bmQgfHwgcmVzdWx0LmRhdGEubGVuZ3RoID8gcmVzdWx0LmRhdGEgOiBbbnVsbF1cbiAgICAgICksXG4gICAgICAvLyByZXZlcnNlIHJlcXVpcmVkLCBzbyB0aGF0IG1lYXN1cmVtZW50cyBhcmUgcmVjZWl2ZWQgb3JkZXJlZCBieSB0aW1lIChhc2NlbmRpbmcpLlxuICAgICAgLy8gZnJvbSBlbnN1cmVzIHZhbHVlcyBhcmUgc2VudCBhcyBzaW5nbGUgbWVhc3VyZW1lbnRzIGFuZCBub3QgYSBtZWFzdXJlbWVudCBhcnJheS5cbiAgICAgIC8vIFRPRE86IHJlcGxhY2UgYFsuLi5yZXN1bHRdLnJldmVyc2UoKWAgd2l0aCBgcmVzdWx0LnRvUmV2ZXJzZWQoKWAgb25jZSBlczIwMjMgaXMgYXZhaWxhYmxlLlxuICAgICAgLy8gSGFkIHRvIGNsb25lIHRoZSByZXN1bHQgYXJyYXkgYXMgb3RoZXJ3aXNlIHJldmVyc2UgbWF5IGFsdGVybmF0ZSB0aGUgYXJyYXkgbXVsdGlwbGUgdGltZXMgaWYgdGhlIG9ic2VydmFibGUgaXMgc3Vic2NyaWJlZCBtdWx0aXBsZSB0aW1lcy5cbiAgICAgIHN3aXRjaE1hcChyZXN1bHQgPT4gZnJvbShbLi4ucmVzdWx0XS5yZXZlcnNlKCkpKVxuICAgICk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY2hhbm5lbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnL21lYXN1cmVtZW50cy8qJztcbiAgfVxufVxuIl19
@@ -224,7 +224,9 @@ export class DeviceProfileComponent {
224
224
  return this.queriesUtil.addOrFilter({ deviceType: this.deviceProfile.c8y_Filter.type }, { __not: { __has: `deviceType` } });
225
225
  }
226
226
  else {
227
- return this.queriesUtil.addOrFilter({ 'c8y_Filter.type': this.deviceProfile.c8y_Filter.type }, { __not: { __has: `c8y_Filter.type` } });
227
+ return this.queriesUtil.addOrFilter({ 'c8y_Filter.type': this.deviceProfile.c8y_Filter.type }, {
228
+ __or: [{ 'c8y_Filter.type': '' }, { __not: { __has: `c8y_Filter.type` } }]
229
+ });
228
230
  }
229
231
  }
230
232
  return {};
@@ -246,4 +248,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
246
248
  }
247
249
  ], template: "<c8y-title>{{ profileName }}</c8y-title>\n\n<c8y-breadcrumb>\n <c8y-breadcrumb-item\n label=\"{{ 'Management' | translate }}\"\n icon=\"c8y-management\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item\n [icon]=\"'c8y-device-profile'\"\n [label]=\"'Device profiles' | translate\"\n [path]=\"'device-profiles'\"\n ></c8y-breadcrumb-item>\n <c8y-breadcrumb-item label=\"{{ profileName }}\" icon=\"c8y-device-profile\"></c8y-breadcrumb-item>\n</c8y-breadcrumb>\n\n<div *ngIf=\"deviceProfile\" class=\"row\">\n <div class=\"col-lg-12 col-lg-max\">\n <div class=\"card card--fullpage\" *ngIf=\"deviceProfile\">\n <div class=\"card-block bg-level-1 flex-no-shrink p-t-24 p-b-24 overflow-visible\">\n <div class=\"content-flex-70\">\n <div class=\"text-center\">\n <i class=\"c8y-icon-duocolor icon-48 c8y-icon c8y-icon-device-profile\"></i>\n <p>\n <small class=\"label label-info\">{{ 'Device profile' | translate }}</small>\n </p>\n </div>\n <div class=\"flex-grow col-10\">\n <div class=\"row\">\n <div class=\"col-md-4\">\n <form #editNameForm=\"ngForm\">\n <c8y-form-group>\n <label class=\"control-label\" translate>Name</label>\n <div class=\"input-group input-group-editable\">\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"deviceProfile.name\"\n name=\"name\"\n placeholder=\"{{ 'e.g. My device profile' | translate }}\"\n size=\"{{ deviceProfile.name?.length || 1 }}\"\n required\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"\n updateDeviceProfile({ name: deviceProfile.name });\n editNameForm.form.markAsPristine()\n \"\n [disabled]=\"editNameForm.form.invalid\"\n c8yProductExperience\n inherit\n [actionData]=\"{ action: PRODUCT_EXPERIENCE.ACTIONS.SAVE }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </form>\n </div>\n <div class=\"col-md-4\">\n <form #editTypeForm=\"ngForm\">\n <c8y-form-group>\n <label class=\"control-label\">\n {{ 'Device type' | translate }}\n <button\n class=\"btn-help\"\n type=\"button\"\n [attr.aria-label]=\"'Help' | translate\"\n [popover]=\"\n (DEVICE_TYPE_POPOVER | translate) +\n (isDeviceProfileEmpty\n ? ' ' + (DEVICE_TYPE_DISABLED_POPOVER | translate)\n : '')\n \"\n triggers=\"focus\"\n container=\"body\"\n placement=\"right\"\n ></button>\n </label>\n <div class=\"input-group input-group-editable\">\n <input\n type=\"text\"\n class=\"form-control\"\n [(ngModel)]=\"deviceProfile.c8y_Filter.type\"\n name=\"type\"\n placeholder=\"{{ 'e.g.' | translate }} c8y_Linux\"\n size=\"{{ deviceProfile.c8y_Filter.type?.length || 14 }}\"\n [disabled]=\"isDeviceProfileEmpty\"\n />\n <span></span>\n <div class=\"input-group-btn\">\n <button\n class=\"btn btn-primary\"\n type=\"button\"\n title=\"{{ 'Save' | translate }}\"\n (click)=\"\n updateDeviceProfile({\n c8y_Filter: { type: deviceProfile.c8y_Filter.type }\n });\n editTypeForm.form.markAsPristine()\n \"\n [disabled]=\"isDeviceProfileEmpty\"\n c8yProductExperience\n inherit\n [actionData]=\"{ action: PRODUCT_EXPERIENCE.ACTIONS.SAVE }\"\n >\n {{ 'Save' | translate }}\n </button>\n </div>\n </div>\n </c8y-form-group>\n </form>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"inner-scroll\">\n <div class=\"card-header separator-top-bottom bg-content sticky-top\">\n <div class=\"card-icon\">\n <i [c8yIcon]=\"'c8y-firmware'\" class=\"c8y-icon-duocolor\"></i>\n </div>\n <div class=\"card-title\" translate>Firmware</div>\n </div>\n <div class=\"card-block p-t-0\" *ngIf=\"deviceProfile.c8y_DeviceProfile.firmware\">\n <c8y-list-group>\n <c8y-li>\n <c8y-li-icon>\n <i [c8yIcon]=\"'c8y-firmware'\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-50 m-l-4\">\n <div class=\"col-6\">\n <span\n class=\"text-truncate\"\n title=\"{{ deviceProfile.c8y_DeviceProfile.firmware.name }}\"\n >\n {{ deviceProfile.c8y_DeviceProfile.firmware.name }}\n </span>\n </div>\n <div class=\"col-5 d-flex a-i-center\">\n <span\n class=\"text-truncate\"\n title=\"{{ deviceProfile.c8y_DeviceProfile.firmware.version }}\"\n >\n <span class=\"text-label-small m-r-4\" translate>Version</span>\n {{ deviceProfile.c8y_DeviceProfile.firmware.version }}\n </span>\n <button\n class=\"btn btn-danger btn-xs visible-xs m-l-auto m-r-8 m-t-8\"\n type=\"button\"\n title=\"{{ 'Remove`firmware`' | translate }}\"\n (click)=\"removeFirmware()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PRODUCT_EXPERIENCE.ACTIONS.REMOVE,\n fragment: PRODUCT_EXPERIENCE.FRAGMENTS.FIRMWARE\n }\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n {{ 'Remove`firmware`' | translate }}\n </button>\n </div>\n <div class=\"m-l-auto p-r-8 hidden-xs\">\n <button\n class=\"btn btn-dot showOnHover text-danger\"\n type=\"button\"\n [attr.aria-label]=\"'Remove`firmware`' | translate\"\n tooltip=\"{{ 'Remove`firmware`' | translate }}\"\n [delay]=\"500\"\n placement=\"right\"\n (click)=\"removeFirmware()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PRODUCT_EXPERIENCE.ACTIONS.REMOVE,\n fragment: PRODUCT_EXPERIENCE.FRAGMENTS.FIRMWARE\n }\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </div>\n <div class=\"card-block p-t-16\" *ngIf=\"!deviceProfile.c8y_DeviceProfile.firmware\">\n <c8y-ui-empty-state\n icon=\"c8y-firmware\"\n [horizontal]=\"true\"\n [title]=\"'No firmware defined.' | translate\"\n class=\"p-t-16 d-block\"\n ></c8y-ui-empty-state>\n </div>\n <div class=\"card-footer p-t-0\" *ngIf=\"!deviceProfile.c8y_DeviceProfile.firmware\">\n <button\n class=\"btn btn-default\"\n type=\"button\"\n title=\"{{ 'Add firmware' | translate }}\"\n (click)=\"addFirmware()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PRODUCT_EXPERIENCE.ACTIONS.ADD,\n fragment: PRODUCT_EXPERIENCE.FRAGMENTS.FIRMWARE\n }\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add firmware' | translate }}\n </button>\n </div>\n\n <div class=\"card-header separator-top-bottom sticky-top bg-component\">\n <div class=\"card-icon\">\n <i [c8yIcon]=\"'c8y-tools'\" class=\"c8y-icon-duocolor\"></i>\n </div>\n <div class=\"card-title\" translate>Software</div>\n </div>\n <div class=\"card-block p-t-0\" *ngIf=\"deviceProfile.c8y_DeviceProfile.software?.length > 0\">\n <c8y-list-group>\n <c8y-li *ngFor=\"let software of deviceProfile.c8y_DeviceProfile.software\">\n <c8y-li-icon>\n <i [c8yIcon]=\"'c8y-tools'\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-50 m-l-4\">\n <div class=\"col-6\">\n <span class=\"text-truncate-wrap\" title=\"{{ software.name }}\">\n {{ software.name }}\n </span>\n </div>\n <div class=\"col-5 d-flex a-i-center\">\n <span class=\"text-truncate-wrap\" title=\"{{ software.version }}\">\n <span class=\"text-label-small m-r-8\" translate>Version</span>\n {{ software.version }}\n </span>\n <button\n class=\"btn btn-danger btn-xs visible-xs m-l-auto m-r-8 m-t-8\"\n type=\"button\"\n title=\"{{ 'Remove`software`' | translate }}\"\n ((click)=\"removeItem(software, 'software')\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PRODUCT_EXPERIENCE.ACTIONS.REMOVE,\n fragment: PRODUCT_EXPERIENCE.FRAGMENTS.SOFTWARE\n }\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n {{ 'Remove`software`' | translate }}\n </button>\n </div>\n <div class=\"m-l-auto p-r-8 hidden-xs\">\n <button\n class=\"btn btn-dot showOnHover text-danger\"\n type=\"button\"\n [attr.aria-label]=\"'Remove`software`' | translate\"\n tooltip=\"{{ 'Remove`software`' | translate }}\"\n [delay]=\"500\"\n placement=\"right\"\n (click)=\"removeItem(software, 'software')\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PRODUCT_EXPERIENCE.ACTIONS.REMOVE,\n fragment: PRODUCT_EXPERIENCE.FRAGMENTS.SOFTWARE\n }\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </div>\n <div\n class=\"card-block p-t-16\"\n *ngIf=\"deviceProfile.c8y_DeviceProfile.software?.length === 0\"\n >\n <c8y-ui-empty-state\n icon=\"c8y-tools\"\n [horizontal]=\"true\"\n [title]=\"'No software defined.' | translate\"\n ></c8y-ui-empty-state>\n </div>\n <div class=\"card-footer p-t-0\">\n <button\n class=\"btn btn-default m-b-0\"\n type=\"button\"\n title=\"{{ 'Add software' | translate }}\"\n (click)=\"addSoftware()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PRODUCT_EXPERIENCE.ACTIONS.ADD,\n fragment: PRODUCT_EXPERIENCE.FRAGMENTS.SOFTWARE\n }\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add software' | translate }}\n </button>\n </div>\n\n <div class=\"card-header separator-top-bottom bg-component sticky-top\">\n <div class=\"card-icon\">\n <i [c8yIcon]=\"'gears'\" class=\"c8y-icon-duocolor\"></i>\n </div>\n <div class=\"card-title\" translate>Configuration</div>\n </div>\n <div\n class=\"card-block p-t-0\"\n *ngIf=\"deviceProfile.c8y_DeviceProfile.configuration?.length > 0\"\n >\n <c8y-list-group>\n <c8y-li *ngFor=\"let configuration of deviceProfile.c8y_DeviceProfile.configuration\">\n <c8y-li-icon>\n <i [c8yIcon]=\"'gears'\"></i>\n </c8y-li-icon>\n <c8y-li-body class=\"content-flex-50\">\n <div class=\"col-6\">\n <span class=\"text-truncate\" title=\"{{ configuration.name }}\">\n {{ configuration.name }}\n </span>\n </div>\n <div class=\"col-5 d-flex a-i-center\">\n <span class=\"label label-info\">{{ configuration.type }}</span>\n <button\n class=\"btn btn-danger btn-xs visible-xs m-l-auto m-r-8 m-t-8\"\n type=\"button\"\n title=\"{{ 'Remove`configuration`' | translate }}\"\n (click)=\"removeItem(configuration, 'configuration')\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PRODUCT_EXPERIENCE.ACTIONS.REMOVE,\n fragment: PRODUCT_EXPERIENCE.FRAGMENTS.CONFGIURATION\n }\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n {{ 'Remove`configuration`' | translate }}\n </button>\n </div>\n <div class=\"m-l-auto p-r-8 hidden-xs\">\n <button\n class=\"btn btn-dot showOnHover text-danger\"\n type=\"button\"\n [attr.aria-label]=\"'Remove`configuration`' | translate\"\n tooltip=\"{{ 'Remove`configuration`' | translate }}\"\n (click)=\"removeItem(configuration, 'configuration')\"\n [delay]=\"500\"\n placement=\"top\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PRODUCT_EXPERIENCE.ACTIONS.REMOVE,\n fragment: PRODUCT_EXPERIENCE.FRAGMENTS.CONFGIURATION\n }\"\n >\n <i c8yIcon=\"minus-circle\"></i>\n </button>\n </div>\n </c8y-li-body>\n </c8y-li>\n </c8y-list-group>\n </div>\n <div\n class=\"card-block p-t-16\"\n *ngIf=\"deviceProfile.c8y_DeviceProfile.configuration?.length === 0\"\n >\n <c8y-ui-empty-state\n icon=\"gears\"\n [horizontal]=\"true\"\n [title]=\"'No configuration defined.' | translate\"\n ></c8y-ui-empty-state>\n </div>\n <div class=\"card-footer p-t-0\">\n <div class=\"p-t-8\">\n <button\n title=\"{{ 'Add configuration' | translate }}\"\n type=\"button\"\n class=\"btn btn-default m-b-0\"\n (click)=\"addConfiguration()\"\n c8yProductExperience\n inherit\n [actionData]=\"{\n action: PRODUCT_EXPERIENCE.ACTIONS.ADD,\n fragment: PRODUCT_EXPERIENCE.FRAGMENTS.CONFGIURATION\n }\"\n >\n <i c8yIcon=\"plus-circle\"></i>\n {{ 'Add configuration' | translate }}\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" }]
248
250
  }], ctorParameters: function () { return [{ type: i1.ActivatedRoute }, { type: i2.AlertService }, { type: i3.InventoryService }, { type: i4.BsModalService }, { type: i5.RepositoryService }]; } });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXByb2ZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2aWNlLXByb2ZpbGUvZGV2aWNlLXByb2ZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGV2aWNlLXByb2ZpbGUvZGV2aWNlLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFDTCxZQUFZLEVBQ1osT0FBTyxFQUNQLGtCQUFrQixFQUdsQiwrQkFBK0IsRUFDaEMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBRUwsOEJBQThCLEVBQzlCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2YsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBS0wsa0JBQWtCLEVBQ25CLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7O0FBWTNGLE1BQU0sT0FBTyxzQkFBc0I7SUFrQmpDLFlBQ1UsS0FBcUIsRUFDckIsWUFBMEIsRUFDMUIsZ0JBQWtDLEVBQ2xDLE9B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QUNaLENBQUM7O21IQXRSVSxzQkFBc0I7dUdBQXRCLHNCQUFzQiw2Q0FQdEI7UUFDVDtZQUNFLE9BQU8sRUFBRSwrQkFBK0I7WUFDeEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztTQUN0RDtLQUNGLDBCQ3RDSCw2MmhCQWtaQTsyRkQxV2Esc0JBQXNCO2tCQVZsQyxTQUFTOytCQUNFLG9CQUFvQixhQUVuQjt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsK0JBQStCOzRCQUN4QyxXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzt5QkFDdEQ7cUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGZvcndhcmRSZWYsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QsIEludmVudG9yeVNlcnZpY2UsIFF1ZXJpZXNVdGlsIH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHtcbiAgQWxlcnRTZXJ2aWNlLFxuICBnZXR0ZXh0LFxuICBNb2RhbFNlbGVjdGlvbk1vZGUsXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnQsXG4gIFByb2R1Y3RFeHBlcmllbmNlRXZlbnRTb3VyY2UsXG4gIFBST0RVQ1RfRVhQRVJJRU5DRV9FVkVOVF9TT1VSQ0Vcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQge1xuICBGaWx0ZXJDcml0ZXJpYSxcbiAgUmVwb3NpdG9yeVNlbGVjdE1vZGFsQ29tcG9uZW50LFxuICBSZXBvc2l0b3J5U2VydmljZSxcbiAgUmVwb3NpdG9yeVR5cGVcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cy9yZXBvc2l0b3J5L3NoYXJlZCc7XG5pbXBvcnQgeyBhc3NpZ24sIGNvbmNhdCwgaGFzLCBpc0VtcHR5LCBpc0VxdWFsLCB1bmlxV2l0aCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5pbXBvcnQgeyBCc01vZGFsU2VydmljZSB9IGZyb20gJ25neC1ib290c3RyYXAvbW9kYWwnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzaGFyZVJlcGxheSwgc3dpdGNoTWFwLCB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtcbiAgRGV2aWNlUHJvZmlsZSxcbiAgRGV2aWNlUHJvZmlsZUNvbmZpZ3VyYXRpb24sXG4gIERldmljZVByb2ZpbGVGaXJtd2FyZSxcbiAgRGV2aWNlUHJvZmlsZVNvZnR3YXJlLFxuICBQUk9EVUNUX0VYUEVSSUVOQ0Vcbn0gZnJvbSAnLi9kZXZpY2UtcHJvZmlsZS5tb2RlbCc7XG5pbXBvcnQgeyBTZWxlY3RDb25maWd1cmF0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICcuL3NlbGVjdC1jb25maWd1cmF0aW9uLW1vZGFsLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1kZXZpY2UtcHJvZmlsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXZpY2UtcHJvZmlsZS5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IFBST0RVQ1RfRVhQRVJJRU5DRV9FVkVOVF9TT1VSQ0UsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBEZXZpY2VQcm9maWxlQ29tcG9uZW50KVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBEZXZpY2VQcm9maWxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50U291cmNlIHtcbiAgREVWSUNFX1RZUEVfUE9QT1ZFUiA9IGdldHRleHQoXG4gICAgJ1RoZSBkZXZpY2UgcHJvZmlsZSB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgYXNzaWdubWVudHMgb24gZGV2aWNlcyBvZiB0aGUgc3BlY2lmaWVkIHR5cGUuIE90aGVyd2lzZSwgaXQgd2lsbCBiZSBhdmFpbGFibGUgZm9yIGFsbCBkZXZpY2UgdHlwZXMuJ1xuICApO1xuICBERVZJQ0VfVFlQRV9ESVNBQkxFRF9QT1BPVkVSID0gZ2V0dGV4dChcbiAgICAnRGV2aWNlIHR5cGUgY2Fubm90IGJlIGNoYW5nZWQgb24gcHJvZmlsZXMgd2l0aCBhbHJlYWR5IGRlZmluZWQgZmlybXdhcmUsIHNvZnR3YXJlIG9yIGNvbmZpZ3VyYXRpb24gc2luY2UgdGhleSBtYXkgbm90IGJlIGFwcGxpY2FibGUgdG8gZGV2aWNlcyBvZiB0aGUgbmV3IGRldmljZSB0eXBlLidcbiAgKTtcbiAgUFJPRFVDVF9FWFBFUklFTkNFID0gUFJPRFVDVF9FWFBFUklFTkNFO1xuICBkZXZpY2VQcm9maWxlOiBEZXZpY2VQcm9maWxlO1xuICBwcm9maWxlTmFtZTogc3RyaW5nO1xuICBwcm9kdWN0RXhwZXJpZW5jZUV2ZW50OiBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50ID0ge1xuICAgIGV2ZW50TmFtZTogUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5UUy5SRVBPU0lUT1JZLFxuICAgIGRhdGE6IHtcbiAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkNPTVBPTkVOVFMuREVWSUNFX1BST0ZJTEVcbiAgICB9XG4gIH07XG4gIHByaXZhdGUgcXVlcmllc1V0aWw6IFF1ZXJpZXNVdGlsO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgYWxlcnRTZXJ2aWNlOiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbnZlbnRvcnlTZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlLFxuICAgIHByaXZhdGUgYnNNb2RhbDogQnNNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXBvc2l0b3J5U2VydmljZTogUmVwb3NpdG9yeVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5xdWVyaWVzVXRpbCA9IG5ldyBRdWVyaWVzVXRpbCgpO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgcHJvZmlsZUlkID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ2lkJyk7XG4gICAgdGhpcy5kZXZpY2VQcm9maWxlID0gKGF3YWl0IHRoaXMuZ2V0RGV2aWNlUHJvZmlsZShwcm9maWxlSWQpKSBhcyBEZXZpY2VQcm9maWxlO1xuICAgIGlmICh0aGlzLmRldmljZVByb2ZpbGUpIHtcbiAgICAgIHRoaXMucHJvZmlsZU5hbWUgPSB0aGlzLmRldmljZVByb2ZpbGUubmFtZTtcbiAgICAgIGlmICghdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLnNvZnR3YXJlKSB7XG4gICAgICAgIHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5zb2Z0d2FyZSA9IFtdO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuY29uZmlndXJhdGlvbikge1xuICAgICAgICB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuY29uZmlndXJhdGlvbiA9IFtdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFkZEZpcm13YXJlKCkge1xuICAgIGNvbnN0IGluaXRpYWxTdGF0ZTogUGFydGlhbDxSZXBvc2l0b3J5U2VsZWN0TW9kYWxDb21wb25lbnQ+ICYge1xuICAgICAgcmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnNGbiQ6IChtb2RhbDogYW55KSA9PiBPYnNlcnZhYmxlPElNYW5hZ2VkT2JqZWN0W10+O1xuICAgIH0gPSB7XG4gICAgICBkZXZpY2VUeXBlUXVlcnk6IHRoaXMuZ2V0RGV2aWNlVHlwZVF1ZXJ5KFJlcG9zaXRvcnlUeXBlLkZJUk1XQVJFKSxcbiAgICAgIHJlcG9zaXRvcnlUeXBlOiBSZXBvc2l0b3J5VHlwZS5GSVJNV0FSRSxcbiAgICAgIHJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zRm4kOiBtb2RhbERpYWxvZyA9PlxuICAgICAgICB0aGlzLmdldFJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zJChcbiAgICAgICAgICBtb2RhbERpYWxvZy5jb250ZW50LnNlYXJjaFRlcm0sXG4gICAgICAgICAgUmVwb3NpdG9yeVR5cGUuRklSTVdBUkVcbiAgICAgICAgKSxcbiAgICAgIGljb246ICdjOHktZmlybXdhcmUnLFxuICAgICAgdGl0bGU6IGdldHRleHQoJ1NlbGVjdCBmaXJtd2FyZScpLFxuICAgICAgbW9kZTogTW9kYWxTZWxlY3Rpb25Nb2RlLlNJTkdMRSxcbiAgICAgIHByb2R1Y3RFeHBlcmllbmNlRXZlbnQ6IHRoaXMucHJvZHVjdEV4cGVyaWVuY2VFdmVudFxuICAgIH07XG4gICAgY29uc3QgbW9kYWwgPSB0aGlzLmJzTW9kYWwuc2hvdyhSZXBvc2l0b3J5U2VsZWN0TW9kYWxDb21wb25lbnQsIHtcbiAgICAgIGlnbm9yZUJhY2tkcm9wQ2xpY2s6IHRydWUsXG4gICAgICBhcmlhTGFiZWxsZWRCeTogJ21vZGFsLXRpdGxlJyxcbiAgICAgIGluaXRpYWxTdGF0ZVxuICAgIH0pO1xuXG4gICAgaWYgKGluaXRpYWxTdGF0ZS5yZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJCkge1xuICAgICAgbW9kYWwuY29udGVudC5yZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9ucyQgPVxuICAgICAgICBpbml0aWFsU3RhdGUucmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnNGbiQobW9kYWwpO1xuICAgIH1cblxuICAgIG1vZGFsLmNvbnRlbnQubG9hZC5uZXh0KCk7XG4gICAgbW9kYWwuY29udGVudC5yZXN1bHRFbWl0dGVyLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKGZpcm13YXJlTGlzdCA9PiB7XG4gICAgICBjb25zdCBbZmlybXdhcmVdID0gZmlybXdhcmVMaXN0O1xuICAgICAgaWYgKCFmaXJtd2FyZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBkZXZpY2VQcm9maWxlUGFydGlhbDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4gPSB7XG4gICAgICAgIGM4eV9EZXZpY2VQcm9maWxlOiB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUgfHwge31cbiAgICAgIH07XG4gICAgICBhc3NpZ24oZGV2aWNlUHJvZmlsZVBhcnRpYWwuYzh5X0RldmljZVByb2ZpbGUsIHtcbiAgICAgICAgZmlybXdhcmU6IHtcbiAgICAgICAgICBuYW1lOiBmaXJtd2FyZS5uYW1lLFxuICAgICAgICAgIHZlcnNpb246IGZpcm13YXJlLnZlcnNpb24sXG4gICAgICAgICAgdXJsOiBmaXJtd2FyZS51cmwsXG4gICAgICAgICAgaXNQYXRjaDogZmlybXdhcmUuaXNQYXRjaCxcbiAgICAgICAgICBwYXRjaERlcGVuZGVuY3k6IGZpcm13YXJlLnBhdGNoRGVwZW5kZW5jeVxuICAgICAgICB9IGFzIERldmljZVByb2ZpbGVGaXJtd2FyZVxuICAgICAgfSk7XG4gICAgICB0aGlzLnVwZGF0ZURldmljZVByb2ZpbGUoZGV2aWNlUHJvZmlsZVBhcnRpYWwpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0UmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnMkKFxuICAgIHNlYXJjaFRlcm0kOiBCZWhhdmlvclN1YmplY3Q8RmlsdGVyQ3JpdGVyaWE+LFxuICAgIHJlcG9UeXBlOiBSZXBvc2l0b3J5VHlwZVxuICApIHtcbiAgICByZXR1cm4gc2VhcmNoVGVybSQucGlwZShcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICBzd2l0Y2hNYXAoc2VhcmNoVGVybSA9PlxuICAgICAgICB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmxpc3RSZXBvc2l0b3J5RW50cmllcyhyZXBvVHlwZSwge1xuICAgICAgICAgIHF1ZXJ5OiB0aGlzLmdldERldmljZVR5cGVRdWVyeShyZXBvVHlwZSksXG4gICAgICAgICAgcGFydGlhbE5hbWU6IHNlYXJjaFRlcm0ubmFtZSxcbiAgICAgICAgICBwYXJhbXM6IHsgcGFnZVNpemU6IDEwMCB9LFxuICAgICAgICAgIHNraXBMZWdhY3k6IHRydWVcbiAgICAgICAgfSlcbiAgICAgICksXG4gICAgICBtYXAoKHsgZGF0YSB9KSA9PiBkYXRhKSxcbiAgICAgIG1hcChtb3MgPT4gdGhpcy5nZXRBbmRBc3NpZ25SZXBvc2l0b3J5QmluYXJpZXMobW9zKSksXG4gICAgICBzaGFyZVJlcGxheSgxKVxuICAgICk7XG4gIH1cblxuICBnZXRBbmRBc3NpZ25SZXBvc2l0b3J5QmluYXJpZXMobW9zOiBJTWFuYWdlZE9iamVjdFtdKSB7XG4gICAgbW9zLmZvckVhY2gobW8gPT4ge1xuICAgICAgbW8udmVyc2lvbnMgPSB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmxpc3RCYXNlVmVyc2lvbnMobW8pO1xuICAgIH0pO1xuICAgIHJldHVybiBtb3M7XG4gIH1cblxuICBhZGRDb25maWd1cmF0aW9uKCkge1xuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5ic01vZGFsLnNob3coU2VsZWN0Q29uZmlndXJhdGlvbk1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICBpbml0aWFsU3RhdGU6IHtcbiAgICAgICAgcHJvZHVjdEV4cGVyaWVuY2VFdmVudDogdGhpcy5wcm9kdWN0RXhwZXJpZW5jZUV2ZW50XG4gICAgICB9XG4gICAgfSk7XG4gICAgbW9kYWwuY29udGVudC5kZXZpY2VUeXBlUXVlcnkgPSB0aGlzLmdldERldmljZVR5cGVRdWVyeShSZXBvc2l0b3J5VHlwZS5DT05GSUdVUkFUSU9OKTtcbiAgICBtb2RhbC5jb250ZW50LnNlbGVjdGVkID0gdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmNvbmZpZ3VyYXRpb247XG4gICAgbW9kYWwuY29udGVudC5sb2FkLm5leHQoKTtcbiAgICBtb2RhbC5jb250ZW50LnJlc3VsdEVtaXR0ZXIucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoc2VsZWN0ZWRDb25maWd1cmF0aW9ucyA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZE1hcHBlZDogRGV2aWNlUHJvZmlsZUNvbmZpZ3VyYXRpb25bXSA9IHNlbGVjdGVkQ29uZmlndXJhdGlvbnMubWFwKFxuICAgICAgICBzZWxlY3RlZEl0ZW0gPT4ge1xuICAgICAgICAgIHJldHVybiBhc3NpZ24oXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHVybDogc2VsZWN0ZWRJdGVtLnVybCxcbiAgICAgICAgICAgICAgbmFtZTogc2VsZWN0ZWRJdGVtLm5hbWVcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZWxlY3RlZEl0ZW0uY29uZmlndXJhdGlvblR5cGUgPyB7IHR5cGU6IHNlbGVjdGVkSXRlbS5jb25maWd1cmF0aW9uVHlwZSB9IDoge31cbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICApO1xuICAgICAgY29uc3QgbWVyZ2VkOiBEZXZpY2VQcm9maWxlQ29uZmlndXJhdGlvbiA9IGNvbmNhdChcbiAgICAgICAgc2VsZWN0ZWRNYXBwZWQsXG4gICAgICAgIHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5jb25maWd1cmF0aW9uIHx8IFtdXG4gICAgICApO1xuICAgICAgY29uc3QgY29uZmlndXJhdGlvbjogRGV2aWNlUHJvZmlsZUNvbmZpZ3VyYXRpb24gPSB1bmlxV2l0aChtZXJnZWQsIChhcnJWYWwsIG90aFZhbCkgPT4ge1xuICAgICAgICByZXR1cm4gYXJyVmFsLnR5cGUgJiYgb3RoVmFsLnR5cGUgJiYgYXJyVmFsLnR5cGUgPT09IG90aFZhbC50eXBlO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBkZXZpY2VQcm9maWxlUGFydGlhbDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4gPSB7XG4gICAgICAgIGM4eV9EZXZpY2VQcm9maWxlOiB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUgfHwge31cbiAgICAgIH07XG4gICAgICBhc3NpZ24oZGV2aWNlUHJvZmlsZVBhcnRpYWwuYzh5X0RldmljZVByb2ZpbGUsIHsgY29uZmlndXJhdGlvbiB9KTtcbiAgICAgIHRoaXMudXBkYXRlRGV2aWNlUHJvZmlsZShkZXZpY2VQcm9maWxlUGFydGlhbCk7XG4gICAgfSk7XG4gIH1cblxuICBhZGRTb2Z0d2FyZSgpIHtcbiAgICBjb25zdCBpbml0aWFsU3RhdGU6IFBhcnRpYWw8UmVwb3NpdG9yeVNlbGVjdE1vZGFsQ29tcG9uZW50PiAmIHtcbiAgICAgIHJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zRm4kOiAobW9kYWw6IGFueSkgPT4gT2JzZXJ2YWJsZTxJTWFuYWdlZE9iamVjdFtdPjtcbiAgICB9ID0ge1xuICAgICAgZGV2aWNlVHlwZVF1ZXJ5OiB0aGlzLmdldERldmljZVR5cGVRdWVyeShSZXBvc2l0b3J5VHlwZS5TT0ZUV0FSRSksXG4gICAgICByZXBvc2l0b3J5VHlwZTogUmVwb3NpdG9yeVR5cGUuU09GVFdBUkUsXG4gICAgICByZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJDogbW9kYWxEaWFsb2cgPT5cbiAgICAgICAgdGhpcy5nZXRSZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9ucyQoXG4gICAgICAgICAgbW9kYWxEaWFsb2cuY29udGVudC5zZWFyY2hUZXJtLFxuICAgICAgICAgIFJlcG9zaXRvcnlUeXBlLlNPRlRXQVJFXG4gICAgICAgICksXG4gICAgICBzZWxlY3RlZDogdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLnNvZnR3YXJlLFxuICAgICAgaWNvbjogJ2M4eS10b29scycsXG4gICAgICB0aXRsZTogZ2V0dGV4dCgnU2VsZWN0IHNvZnR3YXJlJyksXG4gICAgICBtb2RlOiBNb2RhbFNlbGVjdGlvbk1vZGUuTVVMVEksXG4gICAgICBwcm9kdWN0RXhwZXJpZW5jZUV2ZW50OiB0aGlzLnByb2R1Y3RFeHBlcmllbmNlRXZlbnRcbiAgICB9O1xuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5ic01vZGFsLnNob3coUmVwb3NpdG9yeVNlbGVjdE1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICBpbml0aWFsU3RhdGVcbiAgICB9KTtcblxuICAgIGlmIChpbml0aWFsU3RhdGUucmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnNGbiQpIHtcbiAgICAgIG1vZGFsLmNvbnRlbnQucmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnMkID1cbiAgICAgICAgaW5pdGlhbFN0YXRlLnJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zRm4kKG1vZGFsKTtcbiAgICB9XG5cbiAgICBtb2RhbC5jb250ZW50LmxvYWQubmV4dCgpO1xuICAgIG1vZGFsLmNvbnRlbnQucmVzdWx0RW1pdHRlci5waXBlKHRha2UoMSkpLnN1YnNjcmliZShzZWxlY3RlZFNvZnR3YXJlID0+IHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkTWFwcGVkOiBEZXZpY2VQcm9maWxlU29mdHdhcmVbXSA9IHNlbGVjdGVkU29mdHdhcmUubWFwKHNlbGVjdGVkSXRlbSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZTogc2VsZWN0ZWRJdGVtLm5hbWUsXG4gICAgICAgICAgdmVyc2lvbjogc2VsZWN0ZWRJdGVtLnZlcnNpb24sXG4gICAgICAgICAgdXJsOiBzZWxlY3RlZEl0ZW0udXJsLFxuICAgICAgICAgIGFjdGlvbjogJ2luc3RhbGwnXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG1lcmdlZDogRGV2aWNlUHJvZmlsZVNvZnR3YXJlID0gY29uY2F0KFxuICAgICAgICBzZWxlY3RlZE1hcHBlZCxcbiAgICAgICAgdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLnNvZnR3YXJlIHx8IFtdXG4gICAgICApO1xuICAgICAgY29uc3Qgc29mdHdhcmU6IERldmljZVByb2ZpbGVTb2Z0d2FyZSA9IHVuaXFXaXRoKG1lcmdlZCwgKGFyclZhbCwgb3RoVmFsKSA9PiB7XG4gICAgICAgIHJldHVybiBhcnJWYWwubmFtZSAmJiBvdGhWYWwubmFtZSAmJiBhcnJWYWwubmFtZSA9PT0gb3RoVmFsLm5hbWU7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IGRldmljZVByb2ZpbGVQYXJ0aWFsOiBQYXJ0aWFsPElNYW5hZ2VkT2JqZWN0PiA9IHtcbiAgICAgICAgYzh5X0RldmljZVByb2ZpbGU6IHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZSB8fCB7fVxuICAgICAgfTtcbiAgICAgIGFzc2lnbihkZXZpY2VQcm9maWxlUGFydGlhbC5jOHlfRGV2aWNlUHJvZmlsZSwgeyBzb2Z0d2FyZSB9KTtcbiAgICAgIHRoaXMudXBkYXRlRGV2aWNlUHJvZmlsZShkZXZpY2VQcm9maWxlUGFydGlhbCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXQgaXNEZXZpY2VQcm9maWxlRW1wdHkoKSB7XG4gICAgY29uc3QgaXNTb2Z0d2FyZSA9XG4gICAgICB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuc29mdHdhcmUgJiZcbiAgICAgIHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5zb2Z0d2FyZS5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGlzRmlybXdhcmUgPSBCb29sZWFuKHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5maXJtd2FyZSk7XG4gICAgY29uc3QgaXNDb25maWd1cmF0aW9uID1cbiAgICAgIHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5jb25maWd1cmF0aW9uICYmXG4gICAgICB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuY29uZmlndXJhdGlvbi5sZW5ndGggPiAwO1xuICAgIHJldHVybiBpc1NvZnR3YXJlIHx8IGlzRmlybXdhcmUgfHwgaXNDb25maWd1cmF0aW9uO1xuICB9XG5cbiAgcmVtb3ZlSXRlbShyZW1vdmVkSXRlbSwgY2F0ZWdvcnkpIHtcbiAgICBjb25zdCBkZXZpY2VQcm9maWxlUGFydGlhbDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4gPSB7XG4gICAgICBjOHlfRGV2aWNlUHJvZmlsZTogdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlXG4gICAgfTtcbiAgICBjb25zdCBmaWx0ZXJlZCA9IGRldmljZVByb2ZpbGVQYXJ0aWFsLmM4eV9EZXZpY2VQcm9maWxlW2NhdGVnb3J5XS5maWx0ZXIoXG4gICAgICBpdGVtID0+ICFpc0VxdWFsKHJlbW92ZWRJdGVtLCBpdGVtKVxuICAgICk7XG4gICAgZGV2aWNlUHJvZmlsZVBhcnRpYWwuYzh5X0RldmljZVByb2ZpbGVbY2F0ZWdvcnldID0gZmlsdGVyZWQ7XG4gICAgdGhpcy51cGRhdGVEZXZpY2VQcm9maWxlKGRldmljZVByb2ZpbGVQYXJ0aWFsKTtcbiAgfVxuXG4gIHJlbW92ZUZpcm13YXJlKCkge1xuICAgIGRlbGV0ZSB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuZmlybXdhcmU7XG4gICAgdGhpcy51cGRhdGVEZXZpY2VQcm9maWxlKHsgYzh5X0RldmljZVByb2ZpbGU6IHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZSB9KTtcbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZURldmljZVByb2ZpbGUocGFydGlhbERldmljZVByb2ZpbGUpIHtcbiAgICBpZiAocGFydGlhbERldmljZVByb2ZpbGUuYzh5X0ZpbHRlciAmJiBwYXJ0aWFsRGV2aWNlUHJvZmlsZS5jOHlfRmlsdGVyLnR5cGUgPT09ICcnKSB7XG4gICAgICBkZWxldGUgcGFydGlhbERldmljZVByb2ZpbGUuYzh5X0ZpbHRlci50eXBlO1xuICAgIH1cbiAgICBPYmplY3QuYXNzaWduKHBhcnRpYWxEZXZpY2VQcm9maWxlLCB7IGlkOiB0aGlzLmRldmljZVByb2ZpbGUuaWQgfSk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLnVwZGF0ZShwYXJ0aWFsRGV2aWNlUHJvZmlsZSk7XG4gICAgICB0aGlzLmRldmljZVByb2ZpbGUgPSBkYXRhIGFzIERldmljZVByb2ZpbGU7XG4gICAgICB0aGlzLnByb2ZpbGVOYW1lID0gdGhpcy5kZXZpY2VQcm9maWxlLm5hbWU7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zdWNjZXNzKGdldHRleHQoJ0RldmljZSBwcm9maWxlIGNoYW5nZWQuJykpO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGdldERldmljZVByb2ZpbGUocHJvZmlsZUlkKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5pbnZlbnRvcnlTZXJ2aWNlLmRldGFpbChwcm9maWxlSWQpO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSBjYXRjaCAoZXgpIHtcbiAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlLmFkZFNlcnZlckZhaWx1cmUoZXgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGV2aWNlVHlwZVF1ZXJ5KHJlcG9zaXRvcnlUeXBlKSB7XG4gICAgaWYgKFxuICAgICAgaGFzKHRoaXMuZGV2aWNlUHJvZmlsZSwgJ2M4eV9GaWx0ZXIudHlwZScpICYmXG4gICAgICAhaXNFbXB0eSh0aGlzLmRldmljZVByb2ZpbGUuYzh5X0ZpbHRlci50eXBlKVxuICAgICkge1xuICAgICAgaWYgKHJlcG9zaXRvcnlUeXBlID09PSBSZXBvc2l0b3J5VHlwZS5DT05GSUdVUkFUSU9OKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJpZXNVdGlsLmFkZE9yRmlsdGVyKFxuICAgICAgICAgIHsgZGV2aWNlVHlwZTogdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9GaWx0ZXIudHlwZSB9LFxuICAgICAgICAgIHsgX19ub3Q6IHsgX19oYXM6IGBkZXZpY2VUeXBlYCB9IH1cbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnF1ZXJpZXNVdGlsLmFkZE9yRmlsdGVyKFxuICAgICAgICAgIHsgJ2M4eV9GaWx0ZXIudHlwZSc6IHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRmlsdGVyLnR5cGUgfSxcbiAgICAgICAgICB7IF9fbm90OiB7IF9faGFzOiBgYzh5X0ZpbHRlci50eXBlYCB9IH1cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG59XG4iLCI8Yzh5LXRpdGxlPnt7IHByb2ZpbGVOYW1lIH19PC9jOHktdGl0bGU+XG5cbjxjOHktYnJlYWRjcnVtYj5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBsYWJlbD1cInt7ICdNYW5hZ2VtZW50JyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgaWNvbj1cImM4eS1tYW5hZ2VtZW50XCJcbiAgPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbiAgPGM4eS1icmVhZGNydW1iLWl0ZW1cbiAgICBbaWNvbl09XCInYzh5LWRldmljZS1wcm9maWxlJ1wiXG4gICAgW2xhYmVsXT1cIidEZXZpY2UgcHJvZmlsZXMnIHwgdHJhbnNsYXRlXCJcbiAgICBbcGF0aF09XCInZGV2aWNlLXByb2ZpbGVzJ1wiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtIGxhYmVsPVwie3sgcHJvZmlsZU5hbWUgfX1cIiBpY29uPVwiYzh5LWRldmljZS1wcm9maWxlXCI+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuPC9jOHktYnJlYWRjcnVtYj5cblxuPGRpdiAqbmdJZj1cImRldmljZVByb2ZpbGVcIiBjbGFzcz1cInJvd1wiPlxuICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIGNvbC1sZy1tYXhcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY2FyZCBjYXJkLS1mdWxscGFnZVwiICpuZ0lmPVwiZGV2aWNlUHJvZmlsZVwiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgYmctbGV2ZWwtMSBmbGV4LW5vLXNocmluayBwLXQtMjQgcC1iLTI0IG92ZXJmbG93LXZpc2libGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnQtZmxleC03MFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvciBpY29uLTQ4IGM4eS1pY29uIGM4eS1pY29uLWRldmljZS1wcm9maWxlXCI+PC9pPlxuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImxhYmVsIGxhYmVsLWluZm9cIj57eyAnRGV2aWNlIHByb2ZpbGUnIHwgdHJhbnNsYXRlIH19PC9zbWFsbD5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1ncm93IGNvbC0xMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cbiAgICAgICAgICAgICAgICA8Zm9ybSAjZWRpdE5hbWVGb3JtPVwibmdGb3JtXCI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIiB0cmFuc2xhdGU+TmFtZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1lZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkZXZpY2VQcm9maWxlLm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLiBNeSBkZXZpY2UgcHJvZmlsZScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInt7IGRldmljZVByb2ZpbGUubmFtZT8ubGVuZ3RoIHx8IDEgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZURldmljZVByb2ZpbGUoeyBuYW1lOiBkZXZpY2VQcm9maWxlLm5hbWUgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdE5hbWVGb3JtLmZvcm0ubWFya0FzUHJpc3RpbmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZWRpdE5hbWVGb3JtLmZvcm0uaW52YWxpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwieyBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BQ1RJT05TLlNBVkUgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICA8L2Zvcm0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cbiAgICAgICAgICAgICAgICA8Zm9ybSAjZWRpdFR5cGVGb3JtPVwibmdGb3JtXCI+XG4gICAgICAgICAgICAgICAgICA8Yzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7eyAnRGV2aWNlIHR5cGUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4taGVscFwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0hlbHAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwb3BvdmVyXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoREVWSUNFX1RZUEVfUE9QT1ZFUiB8IHRyYW5zbGF0ZSkgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNEZXZpY2VQcm9maWxlRW1wdHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcgJyArIChERVZJQ0VfVFlQRV9ESVNBQkxFRF9QT1BPVkVSIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJycpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcnM9XCJmb2N1c1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXI9XCJib2R5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCBpbnB1dC1ncm91cC1lZGl0YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkZXZpY2VQcm9maWxlLmM4eV9GaWx0ZXIudHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwidHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuJyB8IHRyYW5zbGF0ZSB9fSBjOHlfTGludXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInt7IGRldmljZVByb2ZpbGUuYzh5X0ZpbHRlci50eXBlPy5sZW5ndGggfHwgMTQgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGV2aWNlUHJvZmlsZUVtcHR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAtYnRuXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZURldmljZVByb2ZpbGUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzh5X0ZpbHRlcjogeyB0eXBlOiBkZXZpY2VQcm9maWxlLmM4eV9GaWx0ZXIudHlwZSB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdFR5cGVGb3JtLmZvcm0ubWFya0FzUHJpc3RpbmUoKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEZXZpY2VQcm9maWxlRW1wdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthY3Rpb25EYXRhXT1cInsgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQUNUSU9OUy5TQVZFIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImlubmVyLXNjcm9sbFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgc2VwYXJhdG9yLXRvcC1ib3R0b20gYmctY29udGVudCBzdGlja3ktdG9wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaWNvblwiPlxuICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2M4eS1maXJtd2FyZSdcIiBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCI+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCIgdHJhbnNsYXRlPkZpcm13YXJlPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLXQtMFwiICpuZ0lmPVwiZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5maXJtd2FyZVwiPlxuICAgICAgICAgIDxjOHktbGlzdC1ncm91cD5cbiAgICAgICAgICAgIDxjOHktbGk+XG4gICAgICAgICAgICAgIDxjOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCInYzh5LWZpcm13YXJlJ1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTUwIG0tbC00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtdHJ1bmNhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7IGRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuZmlybXdhcmUubmFtZSB9fVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHt7IGRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuZmlybXdhcmUubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSBkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBkZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmZpcm13YXJlLnZlcnNpb24gfX1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgbS1yLTRcIiB0cmFuc2xhdGU+VmVyc2lvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge3sgZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5maXJtd2FyZS52ZXJzaW9uIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgYnRuLXhzIHZpc2libGUteHMgbS1sLWF1dG8gbS1yLTggbS10LThcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUmVtb3ZlYGZpcm13YXJlYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlybXdhcmUoKVwiXG4gICAgICAgICAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICAgICAgICAgIGluaGVyaXRcbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFDVElPTlMuUkVNT1ZFLFxuICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuRlJBR01FTlRTLkZJUk1XQVJFXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwibWludXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyAnUmVtb3ZlYGZpcm13YXJlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWwtYXV0byBwLXItOCBoaWRkZW4teHNcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBzaG93T25Ib3ZlciB0ZXh0LWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZW1vdmVgZmlybXdhcmVgJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXA9XCJ7eyAnUmVtb3ZlYGZpcm13YXJlYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlRmlybXdhcmUoKVwiXG4gICAgICAgICAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICAgICAgICAgIGluaGVyaXRcbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFDVElPTlMuUkVNT1ZFLFxuICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuRlJBR01FTlRTLkZJUk1XQVJFXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwibWludXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgICA8L2M4eS1saXN0LWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTE2XCIgKm5nSWY9XCIhZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5maXJtd2FyZVwiPlxuICAgICAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgICAgIGljb249XCJjOHktZmlybXdhcmVcIlxuICAgICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ05vIGZpcm13YXJlIGRlZmluZWQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICBjbGFzcz1cInAtdC0xNiBkLWJsb2NrXCJcbiAgICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgcC10LTBcIiAqbmdJZj1cIiFkZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmZpcm13YXJlXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdBZGQgZmlybXdhcmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIChjbGljayk9XCJhZGRGaXJtd2FyZSgpXCJcbiAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICBpbmhlcml0XG4gICAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7XG4gICAgICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFDVElPTlMuQURELFxuICAgICAgICAgICAgICBmcmFnbWVudDogUFJPRFVDVF9FWFBFUklFTkNFLkZSQUdNRU5UUy5GSVJNV0FSRVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAge3sgJ0FkZCBmaXJtd2FyZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvci10b3AtYm90dG9tIHN0aWNreS10b3AgYmctY29tcG9uZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaWNvblwiPlxuICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2M4eS10b29scydcIiBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCI+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCIgdHJhbnNsYXRlPlNvZnR3YXJlPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLXQtMFwiICpuZ0lmPVwiZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5zb2Z0d2FyZT8ubGVuZ3RoID4gMFwiPlxuICAgICAgICAgIDxjOHktbGlzdC1ncm91cD5cbiAgICAgICAgICAgIDxjOHktbGkgKm5nRm9yPVwibGV0IHNvZnR3YXJlIG9mIGRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuc29mdHdhcmVcIj5cbiAgICAgICAgICAgICAgPGM4eS1saS1pY29uPlxuICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidjOHktdG9vbHMnXCI+PC9pPlxuICAgICAgICAgICAgICA8L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJjb250ZW50LWZsZXgtNTAgbS1sLTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZS13cmFwXCIgdGl0bGU9XCJ7eyBzb2Z0d2FyZS5uYW1lIH19XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IHNvZnR3YXJlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZS13cmFwXCIgdGl0bGU9XCJ7eyBzb2Z0d2FyZS52ZXJzaW9uIH19XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1sYWJlbC1zbWFsbCBtLXItOFwiIHRyYW5zbGF0ZT5WZXJzaW9uPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB7eyBzb2Z0d2FyZS52ZXJzaW9uIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgYnRuLXhzIHZpc2libGUteHMgbS1sLWF1dG8gbS1yLTggbS10LThcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUmVtb3ZlYHNvZnR3YXJlYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAoKGNsaWNrKT1cInJlbW92ZUl0ZW0oc29mdHdhcmUsICdzb2Z0d2FyZScpXCJcbiAgICAgICAgICAgICAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFxuICAgICAgICAgICAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQUNUSU9OUy5SRU1PVkUsXG4gICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5GUkFHTUVOVFMuU09GVFdBUkVcbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdSZW1vdmVgc29mdHdhcmVgJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tbC1hdXRvIHAtci04IGhpZGRlbi14c1wiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90IHNob3dPbkhvdmVyIHRleHQtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbW92ZWBzb2Z0d2FyZWAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD1cInt7ICdSZW1vdmVgc29mdHdhcmVgJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKHNvZnR3YXJlLCAnc29mdHdhcmUnKVwiXG4gICAgICAgICAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICAgICAgICAgIGluaGVyaXRcbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFDVElPTlMuUkVNT1ZFLFxuICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuRlJBR01FTlRTLlNPRlRXQVJFXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwibWludXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgICA8L2M4eS1saXN0LWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FyZC1ibG9jayBwLXQtMTZcIlxuICAgICAgICAgICpuZ0lmPVwiZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5zb2Z0d2FyZT8ubGVuZ3RoID09PSAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktdWktZW1wdHktc3RhdGVcbiAgICAgICAgICAgIGljb249XCJjOHktdG9vbHNcIlxuICAgICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ05vIHNvZnR3YXJlIGRlZmluZWQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIHAtdC0wXCI+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHQgbS1iLTBcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICB0aXRsZT1cInt7ICdBZGQgc29mdHdhcmUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgIChjbGljayk9XCJhZGRTb2Z0d2FyZSgpXCJcbiAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICBpbmhlcml0XG4gICAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7XG4gICAgICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFDVElPTlMuQURELFxuICAgICAgICAgICAgICBmcmFnbWVudDogUFJPRFVDVF9FWFBFUklFTkNFLkZSQUdNRU5UUy5TT0ZUV0FSRVxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGkgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAge3sgJ0FkZCBzb2Z0d2FyZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvci10b3AtYm90dG9tIGJnLWNvbXBvbmVudCBzdGlja3ktdG9wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaWNvblwiPlxuICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2dlYXJzJ1wiIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3JcIj48L2k+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtdGl0bGVcIiB0cmFuc2xhdGU+Q29uZmlndXJhdGlvbjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FyZC1ibG9jayBwLXQtMFwiXG4gICAgICAgICAgKm5nSWY9XCJkZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmNvbmZpZ3VyYXRpb24/Lmxlbmd0aCA+IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS1saXN0LWdyb3VwPlxuICAgICAgICAgICAgPGM4eS1saSAqbmdGb3I9XCJsZXQgY29uZmlndXJhdGlvbiBvZiBkZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmNvbmZpZ3VyYXRpb25cIj5cbiAgICAgICAgICAgICAgPGM4eS1saS1pY29uPlxuICAgICAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidnZWFycydcIj48L2k+XG4gICAgICAgICAgICAgIDwvYzh5LWxpLWljb24+XG4gICAgICAgICAgICAgIDxjOHktbGktYm9keSBjbGFzcz1cImNvbnRlbnQtZmxleC01MFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCIgdGl0bGU9XCJ7eyBjb25maWd1cmF0aW9uLm5hbWUgfX1cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgY29uZmlndXJhdGlvbi5uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IGQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxhYmVsIGxhYmVsLWluZm9cIj57eyBjb25maWd1cmF0aW9uLnR5cGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXIgYnRuLXhzIHZpc2libGUteHMgbS1sLWF1dG8gbS1yLTggbS10LThcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnUmVtb3ZlYGNvbmZpZ3VyYXRpb25gJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVJdGVtKGNvbmZpZ3VyYXRpb24sICdjb25maWd1cmF0aW9uJylcIlxuICAgICAgICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICAgICAgICBpbmhlcml0XG4gICAgICAgICAgICAgICAgICAgIFthY3Rpb25EYXRhXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BQ1RJT05TLlJFTU9WRSxcbiAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudDogUFJPRFVDVF9FWFBFUklFTkNFLkZSQUdNRU5UUy5DT05GR0lVUkFUSU9OXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwibWludXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyAnUmVtb3ZlYGNvbmZpZ3VyYXRpb25gJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm0tbC1hdXRvIHAtci04IGhpZGRlbi14c1wiPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZG90IHNob3dPbkhvdmVyIHRleHQtZGFuZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ1JlbW92ZWBjb25maWd1cmF0aW9uYCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwPVwie3sgJ1JlbW92ZWBjb25maWd1cmF0aW9uYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSXRlbShjb25maWd1cmF0aW9uLCAnY29uZmlndXJhdGlvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInRvcFwiXG4gICAgICAgICAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICAgICAgICAgIGluaGVyaXRcbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFDVElPTlMuUkVNT1ZFLFxuICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuRlJBR01FTlRTLkNPTkZHSVVSQVRJT05cbiAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxpIGM4eUljb249XCJtaW51cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9jOHktbGktYm9keT5cbiAgICAgICAgICAgIDwvYzh5LWxpPlxuICAgICAgICAgIDwvYzh5LWxpc3QtZ3JvdXA+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJjYXJkLWJsb2NrIHAtdC0xNlwiXG4gICAgICAgICAgKm5nSWY9XCJkZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmNvbmZpZ3VyYXRpb24/Lmxlbmd0aCA9PT0gMFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgICBpY29uPVwiZ2VhcnNcIlxuICAgICAgICAgICAgW2hvcml6b250YWxdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbdGl0bGVdPVwiJ05vIGNvbmZpZ3VyYXRpb24gZGVmaW5lZC4nIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICA+PC9jOHktdWktZW1wdHktc3RhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgcC10LTBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicC10LThcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQWRkIGNvbmZpZ3VyYXRpb24nIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG0tYi0wXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZENvbmZpZ3VyYXRpb24oKVwiXG4gICAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICAgIGluaGVyaXRcbiAgICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFDVElPTlMuQURELFxuICAgICAgICAgICAgICAgIGZyYWdtZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuRlJBR01FTlRTLkNPTkZHSVVSQVRJT05cbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAge3sgJ0FkZCBjb25maWd1cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
251
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXByb2ZpbGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZGV2aWNlLXByb2ZpbGUvZGV2aWNlLXByb2ZpbGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vZGV2aWNlLXByb2ZpbGUvZGV2aWNlLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzVFLE9BQU8sRUFDTCxZQUFZLEVBQ1osT0FBTyxFQUNQLGtCQUFrQixFQUdsQiwrQkFBK0IsRUFDaEMsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBRUwsOEJBQThCLEVBQzlCLGlCQUFpQixFQUNqQixjQUFjLEVBQ2YsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDNUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXJELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RixPQUFPLEVBS0wsa0JBQWtCLEVBQ25CLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLGlDQUFpQyxFQUFFLE1BQU0sd0NBQXdDLENBQUM7Ozs7Ozs7Ozs7O0FBWTNGLE1BQU0sT0FBTyxzQkFBc0I7SUFrQmpDLFlBQ1UsS0FBcUIsRUFDckIsWUFBMEIsRUFDMUIsZ0JBQWtDLEVBQ2xDLE9B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LEVBQUUsRUFBRSxDQUFDO2lCQUMzRSxDQUNGLENBQUM7YUFDSDtTQUNGO1FBQ0QsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOzttSEF4UlUsc0JBQXNCO3VHQUF0QixzQkFBc0IsNkNBUHRCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsK0JBQStCO1lBQ3hDLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsc0JBQXNCLENBQUM7U0FDdEQ7S0FDRiwwQkN0Q0gsNjJoQkFrWkE7MkZEMVdhLHNCQUFzQjtrQkFWbEMsU0FBUzsrQkFDRSxvQkFBb0IsYUFFbkI7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLCtCQUErQjs0QkFDeEMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsdUJBQXVCLENBQUM7eUJBQ3REO3FCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0LCBJbnZlbnRvcnlTZXJ2aWNlLCBRdWVyaWVzVXRpbCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgZ2V0dGV4dCxcbiAgTW9kYWxTZWxlY3Rpb25Nb2RlLFxuICBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50LFxuICBQcm9kdWN0RXhwZXJpZW5jZUV2ZW50U291cmNlLFxuICBQUk9EVUNUX0VYUEVSSUVOQ0VfRVZFTlRfU09VUkNFXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHtcbiAgRmlsdGVyQ3JpdGVyaWEsXG4gIFJlcG9zaXRvcnlTZWxlY3RNb2RhbENvbXBvbmVudCxcbiAgUmVwb3NpdG9yeVNlcnZpY2UsXG4gIFJlcG9zaXRvcnlUeXBlXG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMvcmVwb3NpdG9yeS9zaGFyZWQnO1xuaW1wb3J0IHsgYXNzaWduLCBjb25jYXQsIGhhcywgaXNFbXB0eSwgaXNFcXVhbCwgdW5pcVdpdGggfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgQnNNb2RhbFNlcnZpY2UgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCwgc2hhcmVSZXBsYXksIHN3aXRjaE1hcCwgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIERldmljZVByb2ZpbGUsXG4gIERldmljZVByb2ZpbGVDb25maWd1cmF0aW9uLFxuICBEZXZpY2VQcm9maWxlRmlybXdhcmUsXG4gIERldmljZVByb2ZpbGVTb2Z0d2FyZSxcbiAgUFJPRFVDVF9FWFBFUklFTkNFXG59IGZyb20gJy4vZGV2aWNlLXByb2ZpbGUubW9kZWwnO1xuaW1wb3J0IHsgU2VsZWN0Q29uZmlndXJhdGlvbk1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3QtY29uZmlndXJhdGlvbi1tb2RhbC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktZGV2aWNlLXByb2ZpbGUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZGV2aWNlLXByb2ZpbGUuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBQUk9EVUNUX0VYUEVSSUVOQ0VfRVZFTlRfU09VUkNFLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRGV2aWNlUHJvZmlsZUNvbXBvbmVudClcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgRGV2aWNlUHJvZmlsZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgUHJvZHVjdEV4cGVyaWVuY2VFdmVudFNvdXJjZSB7XG4gIERFVklDRV9UWVBFX1BPUE9WRVIgPSBnZXR0ZXh0KFxuICAgICdUaGUgZGV2aWNlIHByb2ZpbGUgd2lsbCBiZSBhdmFpbGFibGUgZm9yIGFzc2lnbm1lbnRzIG9uIGRldmljZXMgb2YgdGhlIHNwZWNpZmllZCB0eXBlLiBPdGhlcndpc2UsIGl0IHdpbGwgYmUgYXZhaWxhYmxlIGZvciBhbGwgZGV2aWNlIHR5cGVzLidcbiAgKTtcbiAgREVWSUNFX1RZUEVfRElTQUJMRURfUE9QT1ZFUiA9IGdldHRleHQoXG4gICAgJ0RldmljZSB0eXBlIGNhbm5vdCBiZSBjaGFuZ2VkIG9uIHByb2ZpbGVzIHdpdGggYWxyZWFkeSBkZWZpbmVkIGZpcm13YXJlLCBzb2Z0d2FyZSBvciBjb25maWd1cmF0aW9uIHNpbmNlIHRoZXkgbWF5IG5vdCBiZSBhcHBsaWNhYmxlIHRvIGRldmljZXMgb2YgdGhlIG5ldyBkZXZpY2UgdHlwZS4nXG4gICk7XG4gIFBST0RVQ1RfRVhQRVJJRU5DRSA9IFBST0RVQ1RfRVhQRVJJRU5DRTtcbiAgZGV2aWNlUHJvZmlsZTogRGV2aWNlUHJvZmlsZTtcbiAgcHJvZmlsZU5hbWU6IHN0cmluZztcbiAgcHJvZHVjdEV4cGVyaWVuY2VFdmVudDogUHJvZHVjdEV4cGVyaWVuY2VFdmVudCA9IHtcbiAgICBldmVudE5hbWU6IFBST0RVQ1RfRVhQRVJJRU5DRS5FVkVOVFMuUkVQT1NJVE9SWSxcbiAgICBkYXRhOiB7XG4gICAgICBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5DT01QT05FTlRTLkRFVklDRV9QUk9GSUxFXG4gICAgfVxuICB9O1xuICBwcml2YXRlIHF1ZXJpZXNVdGlsOiBRdWVyaWVzVXRpbDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW52ZW50b3J5U2VydmljZTogSW52ZW50b3J5U2VydmljZSxcbiAgICBwcml2YXRlIGJzTW9kYWw6IEJzTW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVwb3NpdG9yeVNlcnZpY2U6IFJlcG9zaXRvcnlTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMucXVlcmllc1V0aWwgPSBuZXcgUXVlcmllc1V0aWwoKTtcbiAgfVxuXG4gIGFzeW5jIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IHByb2ZpbGVJZCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdpZCcpO1xuICAgIHRoaXMuZGV2aWNlUHJvZmlsZSA9IChhd2FpdCB0aGlzLmdldERldmljZVByb2ZpbGUocHJvZmlsZUlkKSkgYXMgRGV2aWNlUHJvZmlsZTtcbiAgICBpZiAodGhpcy5kZXZpY2VQcm9maWxlKSB7XG4gICAgICB0aGlzLnByb2ZpbGVOYW1lID0gdGhpcy5kZXZpY2VQcm9maWxlLm5hbWU7XG4gICAgICBpZiAoIXRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5zb2Z0d2FyZSkge1xuICAgICAgICB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuc29mdHdhcmUgPSBbXTtcbiAgICAgIH1cbiAgICAgIGlmICghdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmNvbmZpZ3VyYXRpb24gPSBbXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRGaXJtd2FyZSgpIHtcbiAgICBjb25zdCBpbml0aWFsU3RhdGU6IFBhcnRpYWw8UmVwb3NpdG9yeVNlbGVjdE1vZGFsQ29tcG9uZW50PiAmIHtcbiAgICAgIHJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zRm4kOiAobW9kYWw6IGFueSkgPT4gT2JzZXJ2YWJsZTxJTWFuYWdlZE9iamVjdFtdPjtcbiAgICB9ID0ge1xuICAgICAgZGV2aWNlVHlwZVF1ZXJ5OiB0aGlzLmdldERldmljZVR5cGVRdWVyeShSZXBvc2l0b3J5VHlwZS5GSVJNV0FSRSksXG4gICAgICByZXBvc2l0b3J5VHlwZTogUmVwb3NpdG9yeVR5cGUuRklSTVdBUkUsXG4gICAgICByZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJDogbW9kYWxEaWFsb2cgPT5cbiAgICAgICAgdGhpcy5nZXRSZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9ucyQoXG4gICAgICAgICAgbW9kYWxEaWFsb2cuY29udGVudC5zZWFyY2hUZXJtLFxuICAgICAgICAgIFJlcG9zaXRvcnlUeXBlLkZJUk1XQVJFXG4gICAgICAgICksXG4gICAgICBpY29uOiAnYzh5LWZpcm13YXJlJyxcbiAgICAgIHRpdGxlOiBnZXR0ZXh0KCdTZWxlY3QgZmlybXdhcmUnKSxcbiAgICAgIG1vZGU6IE1vZGFsU2VsZWN0aW9uTW9kZS5TSU5HTEUsXG4gICAgICBwcm9kdWN0RXhwZXJpZW5jZUV2ZW50OiB0aGlzLnByb2R1Y3RFeHBlcmllbmNlRXZlbnRcbiAgICB9O1xuICAgIGNvbnN0IG1vZGFsID0gdGhpcy5ic01vZGFsLnNob3coUmVwb3NpdG9yeVNlbGVjdE1vZGFsQ29tcG9uZW50LCB7XG4gICAgICBpZ25vcmVCYWNrZHJvcENsaWNrOiB0cnVlLFxuICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICBpbml0aWFsU3RhdGVcbiAgICB9KTtcblxuICAgIGlmIChpbml0aWFsU3RhdGUucmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnNGbiQpIHtcbiAgICAgIG1vZGFsLmNvbnRlbnQucmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnMkID1cbiAgICAgICAgaW5pdGlhbFN0YXRlLnJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zRm4kKG1vZGFsKTtcbiAgICB9XG5cbiAgICBtb2RhbC5jb250ZW50LmxvYWQubmV4dCgpO1xuICAgIG1vZGFsLmNvbnRlbnQucmVzdWx0RW1pdHRlci5waXBlKHRha2UoMSkpLnN1YnNjcmliZShmaXJtd2FyZUxpc3QgPT4ge1xuICAgICAgY29uc3QgW2Zpcm13YXJlXSA9IGZpcm13YXJlTGlzdDtcbiAgICAgIGlmICghZmlybXdhcmUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgY29uc3QgZGV2aWNlUHJvZmlsZVBhcnRpYWw6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+ID0ge1xuICAgICAgICBjOHlfRGV2aWNlUHJvZmlsZTogdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlIHx8IHt9XG4gICAgICB9O1xuICAgICAgYXNzaWduKGRldmljZVByb2ZpbGVQYXJ0aWFsLmM4eV9EZXZpY2VQcm9maWxlLCB7XG4gICAgICAgIGZpcm13YXJlOiB7XG4gICAgICAgICAgbmFtZTogZmlybXdhcmUubmFtZSxcbiAgICAgICAgICB2ZXJzaW9uOiBmaXJtd2FyZS52ZXJzaW9uLFxuICAgICAgICAgIHVybDogZmlybXdhcmUudXJsLFxuICAgICAgICAgIGlzUGF0Y2g6IGZpcm13YXJlLmlzUGF0Y2gsXG4gICAgICAgICAgcGF0Y2hEZXBlbmRlbmN5OiBmaXJtd2FyZS5wYXRjaERlcGVuZGVuY3lcbiAgICAgICAgfSBhcyBEZXZpY2VQcm9maWxlRmlybXdhcmVcbiAgICAgIH0pO1xuICAgICAgdGhpcy51cGRhdGVEZXZpY2VQcm9maWxlKGRldmljZVByb2ZpbGVQYXJ0aWFsKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdldFJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zJChcbiAgICBzZWFyY2hUZXJtJDogQmVoYXZpb3JTdWJqZWN0PEZpbHRlckNyaXRlcmlhPixcbiAgICByZXBvVHlwZTogUmVwb3NpdG9yeVR5cGVcbiAgKSB7XG4gICAgcmV0dXJuIHNlYXJjaFRlcm0kLnBpcGUoXG4gICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgc3dpdGNoTWFwKHNlYXJjaFRlcm0gPT5cbiAgICAgICAgdGhpcy5yZXBvc2l0b3J5U2VydmljZS5saXN0UmVwb3NpdG9yeUVudHJpZXMocmVwb1R5cGUsIHtcbiAgICAgICAgICBxdWVyeTogdGhpcy5nZXREZXZpY2VUeXBlUXVlcnkocmVwb1R5cGUpLFxuICAgICAgICAgIHBhcnRpYWxOYW1lOiBzZWFyY2hUZXJtLm5hbWUsXG4gICAgICAgICAgcGFyYW1zOiB7IHBhZ2VTaXplOiAxMDAgfSxcbiAgICAgICAgICBza2lwTGVnYWN5OiB0cnVlXG4gICAgICAgIH0pXG4gICAgICApLFxuICAgICAgbWFwKCh7IGRhdGEgfSkgPT4gZGF0YSksXG4gICAgICBtYXAobW9zID0+IHRoaXMuZ2V0QW5kQXNzaWduUmVwb3NpdG9yeUJpbmFyaWVzKG1vcykpLFxuICAgICAgc2hhcmVSZXBsYXkoMSlcbiAgICApO1xuICB9XG5cbiAgZ2V0QW5kQXNzaWduUmVwb3NpdG9yeUJpbmFyaWVzKG1vczogSU1hbmFnZWRPYmplY3RbXSkge1xuICAgIG1vcy5mb3JFYWNoKG1vID0+IHtcbiAgICAgIG1vLnZlcnNpb25zID0gdGhpcy5yZXBvc2l0b3J5U2VydmljZS5saXN0QmFzZVZlcnNpb25zKG1vKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbW9zO1xuICB9XG5cbiAgYWRkQ29uZmlndXJhdGlvbigpIHtcbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbC5zaG93KFNlbGVjdENvbmZpZ3VyYXRpb25Nb2RhbENvbXBvbmVudCwge1xuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgaW5pdGlhbFN0YXRlOiB7XG4gICAgICAgIHByb2R1Y3RFeHBlcmllbmNlRXZlbnQ6IHRoaXMucHJvZHVjdEV4cGVyaWVuY2VFdmVudFxuICAgICAgfVxuICAgIH0pO1xuICAgIG1vZGFsLmNvbnRlbnQuZGV2aWNlVHlwZVF1ZXJ5ID0gdGhpcy5nZXREZXZpY2VUeXBlUXVlcnkoUmVwb3NpdG9yeVR5cGUuQ09ORklHVVJBVElPTik7XG4gICAgbW9kYWwuY29udGVudC5zZWxlY3RlZCA9IHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5jb25maWd1cmF0aW9uO1xuICAgIG1vZGFsLmNvbnRlbnQubG9hZC5uZXh0KCk7XG4gICAgbW9kYWwuY29udGVudC5yZXN1bHRFbWl0dGVyLnBpcGUodGFrZSgxKSkuc3Vic2NyaWJlKHNlbGVjdGVkQ29uZmlndXJhdGlvbnMgPT4ge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRNYXBwZWQ6IERldmljZVByb2ZpbGVDb25maWd1cmF0aW9uW10gPSBzZWxlY3RlZENvbmZpZ3VyYXRpb25zLm1hcChcbiAgICAgICAgc2VsZWN0ZWRJdGVtID0+IHtcbiAgICAgICAgICByZXR1cm4gYXNzaWduKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB1cmw6IHNlbGVjdGVkSXRlbS51cmwsXG4gICAgICAgICAgICAgIG5hbWU6IHNlbGVjdGVkSXRlbS5uYW1lXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2VsZWN0ZWRJdGVtLmNvbmZpZ3VyYXRpb25UeXBlID8geyB0eXBlOiBzZWxlY3RlZEl0ZW0uY29uZmlndXJhdGlvblR5cGUgfSA6IHt9XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICAgIGNvbnN0IG1lcmdlZDogRGV2aWNlUHJvZmlsZUNvbmZpZ3VyYXRpb24gPSBjb25jYXQoXG4gICAgICAgIHNlbGVjdGVkTWFwcGVkLFxuICAgICAgICB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuY29uZmlndXJhdGlvbiB8fCBbXVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGNvbmZpZ3VyYXRpb246IERldmljZVByb2ZpbGVDb25maWd1cmF0aW9uID0gdW5pcVdpdGgobWVyZ2VkLCAoYXJyVmFsLCBvdGhWYWwpID0+IHtcbiAgICAgICAgcmV0dXJuIGFyclZhbC50eXBlICYmIG90aFZhbC50eXBlICYmIGFyclZhbC50eXBlID09PSBvdGhWYWwudHlwZTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgZGV2aWNlUHJvZmlsZVBhcnRpYWw6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+ID0ge1xuICAgICAgICBjOHlfRGV2aWNlUHJvZmlsZTogdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlIHx8IHt9XG4gICAgICB9O1xuICAgICAgYXNzaWduKGRldmljZVByb2ZpbGVQYXJ0aWFsLmM4eV9EZXZpY2VQcm9maWxlLCB7IGNvbmZpZ3VyYXRpb24gfSk7XG4gICAgICB0aGlzLnVwZGF0ZURldmljZVByb2ZpbGUoZGV2aWNlUHJvZmlsZVBhcnRpYWwpO1xuICAgIH0pO1xuICB9XG5cbiAgYWRkU29mdHdhcmUoKSB7XG4gICAgY29uc3QgaW5pdGlhbFN0YXRlOiBQYXJ0aWFsPFJlcG9zaXRvcnlTZWxlY3RNb2RhbENvbXBvbmVudD4gJiB7XG4gICAgICByZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJDogKG1vZGFsOiBhbnkpID0+IE9ic2VydmFibGU8SU1hbmFnZWRPYmplY3RbXT47XG4gICAgfSA9IHtcbiAgICAgIGRldmljZVR5cGVRdWVyeTogdGhpcy5nZXREZXZpY2VUeXBlUXVlcnkoUmVwb3NpdG9yeVR5cGUuU09GVFdBUkUpLFxuICAgICAgcmVwb3NpdG9yeVR5cGU6IFJlcG9zaXRvcnlUeXBlLlNPRlRXQVJFLFxuICAgICAgcmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnNGbiQ6IG1vZGFsRGlhbG9nID0+XG4gICAgICAgIHRoaXMuZ2V0UmVwb3NpdG9yeUVudHJpZXNXaXRoVmVyc2lvbnMkKFxuICAgICAgICAgIG1vZGFsRGlhbG9nLmNvbnRlbnQuc2VhcmNoVGVybSxcbiAgICAgICAgICBSZXBvc2l0b3J5VHlwZS5TT0ZUV0FSRVxuICAgICAgICApLFxuICAgICAgc2VsZWN0ZWQ6IHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5zb2Z0d2FyZSxcbiAgICAgIGljb246ICdjOHktdG9vbHMnLFxuICAgICAgdGl0bGU6IGdldHRleHQoJ1NlbGVjdCBzb2Z0d2FyZScpLFxuICAgICAgbW9kZTogTW9kYWxTZWxlY3Rpb25Nb2RlLk1VTFRJLFxuICAgICAgcHJvZHVjdEV4cGVyaWVuY2VFdmVudDogdGhpcy5wcm9kdWN0RXhwZXJpZW5jZUV2ZW50XG4gICAgfTtcbiAgICBjb25zdCBtb2RhbCA9IHRoaXMuYnNNb2RhbC5zaG93KFJlcG9zaXRvcnlTZWxlY3RNb2RhbENvbXBvbmVudCwge1xuICAgICAgaWdub3JlQmFja2Ryb3BDbGljazogdHJ1ZSxcbiAgICAgIGFyaWFMYWJlbGxlZEJ5OiAnbW9kYWwtdGl0bGUnLFxuICAgICAgaW5pdGlhbFN0YXRlXG4gICAgfSk7XG5cbiAgICBpZiAoaW5pdGlhbFN0YXRlLnJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zRm4kKSB7XG4gICAgICBtb2RhbC5jb250ZW50LnJlcG9zaXRvcnlFbnRyaWVzV2l0aFZlcnNpb25zJCA9XG4gICAgICAgIGluaXRpYWxTdGF0ZS5yZXBvc2l0b3J5RW50cmllc1dpdGhWZXJzaW9uc0ZuJChtb2RhbCk7XG4gICAgfVxuXG4gICAgbW9kYWwuY29udGVudC5sb2FkLm5leHQoKTtcbiAgICBtb2RhbC5jb250ZW50LnJlc3VsdEVtaXR0ZXIucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoc2VsZWN0ZWRTb2Z0d2FyZSA9PiB7XG4gICAgICBjb25zdCBzZWxlY3RlZE1hcHBlZDogRGV2aWNlUHJvZmlsZVNvZnR3YXJlW10gPSBzZWxlY3RlZFNvZnR3YXJlLm1hcChzZWxlY3RlZEl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5hbWU6IHNlbGVjdGVkSXRlbS5uYW1lLFxuICAgICAgICAgIHZlcnNpb246IHNlbGVjdGVkSXRlbS52ZXJzaW9uLFxuICAgICAgICAgIHVybDogc2VsZWN0ZWRJdGVtLnVybCxcbiAgICAgICAgICBhY3Rpb246ICdpbnN0YWxsJ1xuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgICBjb25zdCBtZXJnZWQ6IERldmljZVByb2ZpbGVTb2Z0d2FyZSA9IGNvbmNhdChcbiAgICAgICAgc2VsZWN0ZWRNYXBwZWQsXG4gICAgICAgIHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5zb2Z0d2FyZSB8fCBbXVxuICAgICAgKTtcbiAgICAgIGNvbnN0IHNvZnR3YXJlOiBEZXZpY2VQcm9maWxlU29mdHdhcmUgPSB1bmlxV2l0aChtZXJnZWQsIChhcnJWYWwsIG90aFZhbCkgPT4ge1xuICAgICAgICByZXR1cm4gYXJyVmFsLm5hbWUgJiYgb3RoVmFsLm5hbWUgJiYgYXJyVmFsLm5hbWUgPT09IG90aFZhbC5uYW1lO1xuICAgICAgfSk7XG4gICAgICBjb25zdCBkZXZpY2VQcm9maWxlUGFydGlhbDogUGFydGlhbDxJTWFuYWdlZE9iamVjdD4gPSB7XG4gICAgICAgIGM4eV9EZXZpY2VQcm9maWxlOiB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUgfHwge31cbiAgICAgIH07XG4gICAgICBhc3NpZ24oZGV2aWNlUHJvZmlsZVBhcnRpYWwuYzh5X0RldmljZVByb2ZpbGUsIHsgc29mdHdhcmUgfSk7XG4gICAgICB0aGlzLnVwZGF0ZURldmljZVByb2ZpbGUoZGV2aWNlUHJvZmlsZVBhcnRpYWwpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGlzRGV2aWNlUHJvZmlsZUVtcHR5KCkge1xuICAgIGNvbnN0IGlzU29mdHdhcmUgPVxuICAgICAgdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLnNvZnR3YXJlICYmXG4gICAgICB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuc29mdHdhcmUubGVuZ3RoID4gMDtcbiAgICBjb25zdCBpc0Zpcm13YXJlID0gQm9vbGVhbih0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuZmlybXdhcmUpO1xuICAgIGNvbnN0IGlzQ29uZmlndXJhdGlvbiA9XG4gICAgICB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuY29uZmlndXJhdGlvbiAmJlxuICAgICAgdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmNvbmZpZ3VyYXRpb24ubGVuZ3RoID4gMDtcbiAgICByZXR1cm4gaXNTb2Z0d2FyZSB8fCBpc0Zpcm13YXJlIHx8IGlzQ29uZmlndXJhdGlvbjtcbiAgfVxuXG4gIHJlbW92ZUl0ZW0ocmVtb3ZlZEl0ZW0sIGNhdGVnb3J5KSB7XG4gICAgY29uc3QgZGV2aWNlUHJvZmlsZVBhcnRpYWw6IFBhcnRpYWw8SU1hbmFnZWRPYmplY3Q+ID0ge1xuICAgICAgYzh5X0RldmljZVByb2ZpbGU6IHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZVxuICAgIH07XG4gICAgY29uc3QgZmlsdGVyZWQgPSBkZXZpY2VQcm9maWxlUGFydGlhbC5jOHlfRGV2aWNlUHJvZmlsZVtjYXRlZ29yeV0uZmlsdGVyKFxuICAgICAgaXRlbSA9PiAhaXNFcXVhbChyZW1vdmVkSXRlbSwgaXRlbSlcbiAgICApO1xuICAgIGRldmljZVByb2ZpbGVQYXJ0aWFsLmM4eV9EZXZpY2VQcm9maWxlW2NhdGVnb3J5XSA9IGZpbHRlcmVkO1xuICAgIHRoaXMudXBkYXRlRGV2aWNlUHJvZmlsZShkZXZpY2VQcm9maWxlUGFydGlhbCk7XG4gIH1cblxuICByZW1vdmVGaXJtd2FyZSgpIHtcbiAgICBkZWxldGUgdGhpcy5kZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmZpcm13YXJlO1xuICAgIHRoaXMudXBkYXRlRGV2aWNlUHJvZmlsZSh7IGM4eV9EZXZpY2VQcm9maWxlOiB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUgfSk7XG4gIH1cblxuICBhc3luYyB1cGRhdGVEZXZpY2VQcm9maWxlKHBhcnRpYWxEZXZpY2VQcm9maWxlKSB7XG4gICAgaWYgKHBhcnRpYWxEZXZpY2VQcm9maWxlLmM4eV9GaWx0ZXIgJiYgcGFydGlhbERldmljZVByb2ZpbGUuYzh5X0ZpbHRlci50eXBlID09PSAnJykge1xuICAgICAgZGVsZXRlIHBhcnRpYWxEZXZpY2VQcm9maWxlLmM4eV9GaWx0ZXIudHlwZTtcbiAgICB9XG4gICAgT2JqZWN0LmFzc2lnbihwYXJ0aWFsRGV2aWNlUHJvZmlsZSwgeyBpZDogdGhpcy5kZXZpY2VQcm9maWxlLmlkIH0pO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS51cGRhdGUocGFydGlhbERldmljZVByb2ZpbGUpO1xuICAgICAgdGhpcy5kZXZpY2VQcm9maWxlID0gZGF0YSBhcyBEZXZpY2VQcm9maWxlO1xuICAgICAgdGhpcy5wcm9maWxlTmFtZSA9IHRoaXMuZGV2aWNlUHJvZmlsZS5uYW1lO1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc3VjY2VzcyhnZXR0ZXh0KCdEZXZpY2UgcHJvZmlsZSBjaGFuZ2VkLicpKTtcbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2UuYWRkU2VydmVyRmFpbHVyZShleCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBnZXREZXZpY2VQcm9maWxlKHByb2ZpbGVJZCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuaW52ZW50b3J5U2VydmljZS5kZXRhaWwocHJvZmlsZUlkKTtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5hZGRTZXJ2ZXJGYWlsdXJlKGV4KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldERldmljZVR5cGVRdWVyeShyZXBvc2l0b3J5VHlwZSkge1xuICAgIGlmIChcbiAgICAgIGhhcyh0aGlzLmRldmljZVByb2ZpbGUsICdjOHlfRmlsdGVyLnR5cGUnKSAmJlxuICAgICAgIWlzRW1wdHkodGhpcy5kZXZpY2VQcm9maWxlLmM4eV9GaWx0ZXIudHlwZSlcbiAgICApIHtcbiAgICAgIGlmIChyZXBvc2l0b3J5VHlwZSA9PT0gUmVwb3NpdG9yeVR5cGUuQ09ORklHVVJBVElPTikge1xuICAgICAgICByZXR1cm4gdGhpcy5xdWVyaWVzVXRpbC5hZGRPckZpbHRlcihcbiAgICAgICAgICB7IGRldmljZVR5cGU6IHRoaXMuZGV2aWNlUHJvZmlsZS5jOHlfRmlsdGVyLnR5cGUgfSxcbiAgICAgICAgICB7IF9fbm90OiB7IF9faGFzOiBgZGV2aWNlVHlwZWAgfSB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5xdWVyaWVzVXRpbC5hZGRPckZpbHRlcihcbiAgICAgICAgICB7ICdjOHlfRmlsdGVyLnR5cGUnOiB0aGlzLmRldmljZVByb2ZpbGUuYzh5X0ZpbHRlci50eXBlIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgX19vcjogW3sgJ2M4eV9GaWx0ZXIudHlwZSc6ICcnIH0sIHsgX19ub3Q6IHsgX19oYXM6IGBjOHlfRmlsdGVyLnR5cGVgIH0gfV1cbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxufVxuIiwiPGM4eS10aXRsZT57eyBwcm9maWxlTmFtZSB9fTwvYzh5LXRpdGxlPlxuXG48Yzh5LWJyZWFkY3J1bWI+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgbGFiZWw9XCJ7eyAnTWFuYWdlbWVudCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgIGljb249XCJjOHktbWFuYWdlbWVudFwiXG4gID48L2M4eS1icmVhZGNydW1iLWl0ZW0+XG4gIDxjOHktYnJlYWRjcnVtYi1pdGVtXG4gICAgW2ljb25dPVwiJ2M4eS1kZXZpY2UtcHJvZmlsZSdcIlxuICAgIFtsYWJlbF09XCInRGV2aWNlIHByb2ZpbGVzJyB8IHRyYW5zbGF0ZVwiXG4gICAgW3BhdGhdPVwiJ2RldmljZS1wcm9maWxlcydcIlxuICA+PC9jOHktYnJlYWRjcnVtYi1pdGVtPlxuICA8Yzh5LWJyZWFkY3J1bWItaXRlbSBsYWJlbD1cInt7IHByb2ZpbGVOYW1lIH19XCIgaWNvbj1cImM4eS1kZXZpY2UtcHJvZmlsZVwiPjwvYzh5LWJyZWFkY3J1bWItaXRlbT5cbjwvYzh5LWJyZWFkY3J1bWI+XG5cbjxkaXYgKm5nSWY9XCJkZXZpY2VQcm9maWxlXCIgY2xhc3M9XCJyb3dcIj5cbiAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBjb2wtbGctbWF4XCI+XG4gICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC0tZnVsbHBhZ2VcIiAqbmdJZj1cImRldmljZVByb2ZpbGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIGJnLWxldmVsLTEgZmxleC1uby1zaHJpbmsgcC10LTI0IHAtYi0yNCBvdmVyZmxvdy12aXNpYmxlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250ZW50LWZsZXgtNzBcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiYzh5LWljb24tZHVvY29sb3IgaWNvbi00OCBjOHktaWNvbiBjOHktaWNvbi1kZXZpY2UtcHJvZmlsZVwiPjwvaT5cbiAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJsYWJlbCBsYWJlbC1pbmZvXCI+e3sgJ0RldmljZSBwcm9maWxlJyB8IHRyYW5zbGF0ZSB9fTwvc21hbGw+XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtZ3JvdyBjb2wtMTBcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgICAgICAgICAgPGZvcm0gI2VkaXROYW1lRm9ybT1cIm5nRm9ybVwiPlxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgdHJhbnNsYXRlPk5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtZWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGV2aWNlUHJvZmlsZS5uYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3sgJ2UuZy4gTXkgZGV2aWNlIHByb2ZpbGUnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJ7eyBkZXZpY2VQcm9maWxlLm5hbWU/Lmxlbmd0aCB8fCAxIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVEZXZpY2VQcm9maWxlKHsgbmFtZTogZGV2aWNlUHJvZmlsZS5uYW1lIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXROYW1lRm9ybS5mb3JtLm1hcmtBc1ByaXN0aW5lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImVkaXROYW1lRm9ybS5mb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFthY3Rpb25EYXRhXT1cInsgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQUNUSU9OUy5TQVZFIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnU2F2ZScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XG4gICAgICAgICAgICAgICAgPGZvcm0gI2VkaXRUeXBlRm9ybT1cIm5nRm9ybVwiPlxuICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgJ0RldmljZSB0eXBlJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuLWhlbHBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidIZWxwJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcG9wb3Zlcl09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKERFVklDRV9UWVBFX1BPUE9WRVIgfCB0cmFuc2xhdGUpICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzRGV2aWNlUHJvZmlsZUVtcHR5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAnICcgKyAoREVWSUNFX1RZUEVfRElTQUJMRURfUE9QT1ZFUiB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJzPVwiZm9jdXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyPVwiYm9keVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgaW5wdXQtZ3JvdXAtZWRpdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jb250cm9sXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGV2aWNlUHJvZmlsZS5jOHlfRmlsdGVyLnR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInR5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLicgfCB0cmFuc2xhdGUgfX0gYzh5X0xpbnV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJ7eyBkZXZpY2VQcm9maWxlLmM4eV9GaWx0ZXIudHlwZT8ubGVuZ3RoIHx8IDE0IH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0RldmljZVByb2ZpbGVFbXB0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwLWJ0blwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT1cInt7ICdTYXZlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVEZXZpY2VQcm9maWxlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGM4eV9GaWx0ZXI6IHsgdHlwZTogZGV2aWNlUHJvZmlsZS5jOHlfRmlsdGVyLnR5cGUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVkaXRUeXBlRm9ybS5mb3JtLm1hcmtBc1ByaXN0aW5lKClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGV2aWNlUHJvZmlsZUVtcHR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7IGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFDVElPTlMuU0FWRSB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ1NhdmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDwvZm9ybT5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGxcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIHNlcGFyYXRvci10b3AtYm90dG9tIGJnLWNvbnRlbnQgc3RpY2t5LXRvcFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWljb25cIj5cbiAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidjOHktZmlybXdhcmUnXCIgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvclwiPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiIHRyYW5zbGF0ZT5GaXJtd2FyZTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTBcIiAqbmdJZj1cImRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuZmlybXdhcmVcIj5cbiAgICAgICAgICA8Yzh5LWxpc3QtZ3JvdXA+XG4gICAgICAgICAgICA8Yzh5LWxpPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWljb24+XG4gICAgICAgICAgICAgICAgPGkgW2M4eUljb25dPVwiJ2M4eS1maXJtd2FyZSdcIj48L2k+XG4gICAgICAgICAgICAgIDwvYzh5LWxpLWljb24+XG4gICAgICAgICAgICAgIDxjOHktbGktYm9keSBjbGFzcz1cImNvbnRlbnQtZmxleC01MCBtLWwtNFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXRydW5jYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyBkZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmZpcm13YXJlLm5hbWUgfX1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBkZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLmZpcm13YXJlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTUgZC1mbGV4IGEtaS1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5maXJtd2FyZS52ZXJzaW9uIH19XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWxhYmVsLXNtYWxsIG0tci00XCIgdHJhbnNsYXRlPlZlcnNpb248L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIHt7IGRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuZmlybXdhcmUudmVyc2lvbiB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi14cyB2aXNpYmxlLXhzIG0tbC1hdXRvIG0tci04IG0tdC04XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZWBmaXJtd2FyZWAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZpcm13YXJlKClcIlxuICAgICAgICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICAgICAgICBpbmhlcml0XG4gICAgICAgICAgICAgICAgICAgIFthY3Rpb25EYXRhXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BQ1RJT05TLlJFTU9WRSxcbiAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudDogUFJPRFVDVF9FWFBFUklFTkNFLkZSQUdNRU5UUy5GSVJNV0FSRVxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ1JlbW92ZWBmaXJtd2FyZWAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibS1sLWF1dG8gcC1yLTggaGlkZGVuLXhzXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kb3Qgc2hvd09uSG92ZXIgdGV4dC1kYW5nZXJcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInUmVtb3ZlYGZpcm13YXJlYCcgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwPVwie3sgJ1JlbW92ZWBmaXJtd2FyZWAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW2RlbGF5XT1cIjUwMFwiXG4gICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUZpcm13YXJlKClcIlxuICAgICAgICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICAgICAgICBpbmhlcml0XG4gICAgICAgICAgICAgICAgICAgIFthY3Rpb25EYXRhXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BQ1RJT05TLlJFTU9WRSxcbiAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudDogUFJPRFVDVF9FWFBFUklFTkNFLkZSQUdNRU5UUy5GSVJNV0FSRVxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2M4eS1saS1ib2R5PlxuICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJsb2NrIHAtdC0xNlwiICpuZ0lmPVwiIWRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuZmlybXdhcmVcIj5cbiAgICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgICBpY29uPVwiYzh5LWZpcm13YXJlXCJcbiAgICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidObyBmaXJtd2FyZSBkZWZpbmVkLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJwLXQtMTYgZC1ibG9ja1wiXG4gICAgICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIHAtdC0wXCIgKm5nSWY9XCIhZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5maXJtd2FyZVwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQWRkIGZpcm13YXJlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWRkRmlybXdhcmUoKVwiXG4gICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgaW5oZXJpdFxuICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BQ1RJT05TLkFERCxcbiAgICAgICAgICAgICAgZnJhZ21lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5GUkFHTUVOVFMuRklSTVdBUkVcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgIHt7ICdBZGQgZmlybXdhcmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3ItdG9wLWJvdHRvbSBzdGlja3ktdG9wIGJnLWNvbXBvbmVudFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWljb25cIj5cbiAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidjOHktdG9vbHMnXCIgY2xhc3M9XCJjOHktaWNvbi1kdW9jb2xvclwiPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZVwiIHRyYW5zbGF0ZT5Tb2Z0d2FyZTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTBcIiAqbmdJZj1cImRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuc29mdHdhcmU/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgICA8Yzh5LWxpc3QtZ3JvdXA+XG4gICAgICAgICAgICA8Yzh5LWxpICpuZ0Zvcj1cImxldCBzb2Z0d2FyZSBvZiBkZXZpY2VQcm9maWxlLmM4eV9EZXZpY2VQcm9maWxlLnNvZnR3YXJlXCI+XG4gICAgICAgICAgICAgIDxjOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCInYzh5LXRvb2xzJ1wiPjwvaT5cbiAgICAgICAgICAgICAgPC9jOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgPGM4eS1saS1ib2R5IGNsYXNzPVwiY29udGVudC1mbGV4LTUwIG0tbC00XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGUtd3JhcFwiIHRpdGxlPVwie3sgc29mdHdhcmUubmFtZSB9fVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBzb2Z0d2FyZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC01IGQtZmxleCBhLWktY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtdHJ1bmNhdGUtd3JhcFwiIHRpdGxlPVwie3sgc29mdHdhcmUudmVyc2lvbiB9fVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtbGFiZWwtc21hbGwgbS1yLThcIiB0cmFuc2xhdGU+VmVyc2lvbjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAge3sgc29mdHdhcmUudmVyc2lvbiB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi14cyB2aXNpYmxlLXhzIG0tbC1hdXRvIG0tci04IG0tdC04XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZWBzb2Z0d2FyZWAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgKChjbGljayk9XCJyZW1vdmVJdGVtKHNvZnR3YXJlLCAnc29mdHdhcmUnKVwiXG4gICAgICAgICAgICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgICAgICAgICAgIGluaGVyaXRcbiAgICAgICAgICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogUFJPRFVDVF9FWFBFUklFTkNFLkFDVElPTlMuUkVNT1ZFLFxuICAgICAgICAgICAgICAgICAgICAgIGZyYWdtZW50OiBQUk9EVUNUX0VYUEVSSUVOQ0UuRlJBR01FTlRTLlNPRlRXQVJFXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwibWludXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICB7eyAnUmVtb3ZlYHNvZnR3YXJlYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWwtYXV0byBwLXItOCBoaWRkZW4teHNcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBzaG93T25Ib3ZlciB0ZXh0LWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZW1vdmVgc29mdHdhcmVgJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIHRvb2x0aXA9XCJ7eyAnUmVtb3ZlYHNvZnR3YXJlYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbZGVsYXldPVwiNTAwXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSXRlbShzb2Z0d2FyZSwgJ3NvZnR3YXJlJylcIlxuICAgICAgICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICAgICAgICBpbmhlcml0XG4gICAgICAgICAgICAgICAgICAgIFthY3Rpb25EYXRhXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BQ1RJT05TLlJFTU9WRSxcbiAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudDogUFJPRFVDVF9FWFBFUklFTkNFLkZSQUdNRU5UUy5TT0ZUV0FSRVxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2M4eS1saS1ib2R5PlxuICAgICAgICAgICAgPC9jOHktbGk+XG4gICAgICAgICAgPC9jOHktbGlzdC1ncm91cD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTE2XCJcbiAgICAgICAgICAqbmdJZj1cImRldmljZVByb2ZpbGUuYzh5X0RldmljZVByb2ZpbGUuc29mdHdhcmU/Lmxlbmd0aCA9PT0gMFwiXG4gICAgICAgID5cbiAgICAgICAgICA8Yzh5LXVpLWVtcHR5LXN0YXRlXG4gICAgICAgICAgICBpY29uPVwiYzh5LXRvb2xzXCJcbiAgICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidObyBzb2Z0d2FyZSBkZWZpbmVkLicgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgID48L2M4eS11aS1lbXB0eS1zdGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBwLXQtMFwiPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0IG0tYi0wXCJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQWRkIHNvZnR3YXJlJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiYWRkU29mdHdhcmUoKVwiXG4gICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgaW5oZXJpdFxuICAgICAgICAgICAgW2FjdGlvbkRhdGFdPVwie1xuICAgICAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BQ1RJT05TLkFERCxcbiAgICAgICAgICAgICAgZnJhZ21lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5GUkFHTUVOVFMuU09GVFdBUkVcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxpIGM4eUljb249XCJwbHVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgIHt7ICdBZGQgc29mdHdhcmUnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlciBzZXBhcmF0b3ItdG9wLWJvdHRvbSBiZy1jb21wb25lbnQgc3RpY2t5LXRvcFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWljb25cIj5cbiAgICAgICAgICAgIDxpIFtjOHlJY29uXT1cIidnZWFycydcIiBjbGFzcz1cImM4eS1pY29uLWR1b2NvbG9yXCI+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlXCIgdHJhbnNsYXRlPkNvbmZpZ3VyYXRpb248L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cImNhcmQtYmxvY2sgcC10LTBcIlxuICAgICAgICAgICpuZ0lmPVwiZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5jb25maWd1cmF0aW9uPy5sZW5ndGggPiAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxjOHktbGlzdC1ncm91cD5cbiAgICAgICAgICAgIDxjOHktbGkgKm5nRm9yPVwibGV0IGNvbmZpZ3VyYXRpb24gb2YgZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5jb25maWd1cmF0aW9uXCI+XG4gICAgICAgICAgICAgIDxjOHktbGktaWNvbj5cbiAgICAgICAgICAgICAgICA8aSBbYzh5SWNvbl09XCInZ2VhcnMnXCI+PC9pPlxuICAgICAgICAgICAgICA8L2M4eS1saS1pY29uPlxuICAgICAgICAgICAgICA8Yzh5LWxpLWJvZHkgY2xhc3M9XCJjb250ZW50LWZsZXgtNTBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC10cnVuY2F0ZVwiIHRpdGxlPVwie3sgY29uZmlndXJhdGlvbi5uYW1lIH19XCI+XG4gICAgICAgICAgICAgICAgICAgIHt7IGNvbmZpZ3VyYXRpb24ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNSBkLWZsZXggYS1pLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJsYWJlbCBsYWJlbC1pbmZvXCI+e3sgY29uZmlndXJhdGlvbi50eXBlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGFuZ2VyIGJ0bi14cyB2aXNpYmxlLXhzIG0tbC1hdXRvIG0tci04IG0tdC04XCJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ1JlbW92ZWBjb25maWd1cmF0aW9uYCcgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlSXRlbShjb25maWd1cmF0aW9uLCAnY29uZmlndXJhdGlvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgYzh5UHJvZHVjdEV4cGVyaWVuY2VcbiAgICAgICAgICAgICAgICAgICAgaW5oZXJpdFxuICAgICAgICAgICAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBQUk9EVUNUX0VYUEVSSUVOQ0UuQUNUSU9OUy5SRU1PVkUsXG4gICAgICAgICAgICAgICAgICAgICAgZnJhZ21lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5GUkFHTUVOVFMuQ09ORkdJVVJBVElPTlxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGkgYzh5SWNvbj1cIm1pbnVzLWNpcmNsZVwiPjwvaT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ1JlbW92ZWBjb25maWd1cmF0aW9uYCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtLWwtYXV0byBwLXItOCBoaWRkZW4teHNcIj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWRvdCBzaG93T25Ib3ZlciB0ZXh0LWRhbmdlclwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidSZW1vdmVgY29uZmlndXJhdGlvbmAnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgdG9vbHRpcD1cInt7ICdSZW1vdmVgY29uZmlndXJhdGlvbmAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlbW92ZUl0ZW0oY29uZmlndXJhdGlvbiwgJ2NvbmZpZ3VyYXRpb24nKVwiXG4gICAgICAgICAgICAgICAgICAgIFtkZWxheV09XCI1MDBcIlxuICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICAgICAgICBpbmhlcml0XG4gICAgICAgICAgICAgICAgICAgIFthY3Rpb25EYXRhXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BQ1RJT05TLlJFTU9WRSxcbiAgICAgICAgICAgICAgICAgICAgICBmcmFnbWVudDogUFJPRFVDVF9FWFBFUklFTkNFLkZSQUdNRU5UUy5DT05GR0lVUkFUSU9OXG4gICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8aSBjOHlJY29uPVwibWludXMtY2lyY2xlXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvYzh5LWxpLWJvZHk+XG4gICAgICAgICAgICA8L2M4eS1saT5cbiAgICAgICAgICA8L2M4eS1saXN0LWdyb3VwPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwiY2FyZC1ibG9jayBwLXQtMTZcIlxuICAgICAgICAgICpuZ0lmPVwiZGV2aWNlUHJvZmlsZS5jOHlfRGV2aWNlUHJvZmlsZS5jb25maWd1cmF0aW9uPy5sZW5ndGggPT09IDBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGM4eS11aS1lbXB0eS1zdGF0ZVxuICAgICAgICAgICAgaWNvbj1cImdlYXJzXCJcbiAgICAgICAgICAgIFtob3Jpem9udGFsXT1cInRydWVcIlxuICAgICAgICAgICAgW3RpdGxlXT1cIidObyBjb25maWd1cmF0aW9uIGRlZmluZWQuJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgPjwvYzh5LXVpLWVtcHR5LXN0YXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNhcmQtZm9vdGVyIHAtdC0wXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInAtdC04XCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FkZCBjb25maWd1cmF0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tZGVmYXVsdCBtLWItMFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJhZGRDb25maWd1cmF0aW9uKClcIlxuICAgICAgICAgICAgICBjOHlQcm9kdWN0RXhwZXJpZW5jZVxuICAgICAgICAgICAgICBpbmhlcml0XG4gICAgICAgICAgICAgIFthY3Rpb25EYXRhXT1cIntcbiAgICAgICAgICAgICAgICBhY3Rpb246IFBST0RVQ1RfRVhQRVJJRU5DRS5BQ1RJT05TLkFERCxcbiAgICAgICAgICAgICAgICBmcmFnbWVudDogUFJPRFVDVF9FWFBFUklFTkNFLkZSQUdNRU5UUy5DT05GR0lVUkFUSU9OXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIj48L2k+XG4gICAgICAgICAgICAgIHt7ICdBZGQgY29uZmlndXJhdGlvbicgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -55,9 +55,8 @@ export class AddGroupComponent {
55
55
  this.subscription = this.onCancel.subscribe(() => this.resetStepper());
56
56
  this.canCreateGroup =
57
57
  this.subAssetsService.canCreateGroup() ||
58
- (await this.permissionsService.canEdit([], { id: this.currentGroupId }, {
59
- skipOwnerCheck: true,
60
- skipRolesCheck: true
58
+ (await this.permissionsService.canEdit(['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE'], {
59
+ id: this.currentGroupId
61
60
  }));
62
61
  this.canAssignDevice = await this.subAssetsService.canAssignDevice({
63
62
  id: this.currentGroupId
@@ -137,4 +136,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
137
136
  type: HostListener,
138
137
  args: ['document:keydown.escape', ['$event']]
139
138
  }] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3N1Yi1hc3NldHMvYWRkLWdyb3VwL2FkZC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zdWItYXNzZXRzL2FkZC1ncm91cC9hZGQtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLGdCQUFnQixFQUVoQixXQUFXLEVBQ1gsT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFNdEQsTUFBTSxPQUFPLGlCQUFpQjtJQTRCNUIsWUFDVSxFQUFlLEVBQ2YsZUFBZ0MsRUFDaEMsS0FBbUIsRUFDbkIsZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxrQkFBK0I7UUFML0IsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWE7UUFoQ2hDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFB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U0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7OzhHQWxJVSxpQkFBaUI7a0dBQWpCLGlCQUFpQiw4WEFLakIsVUFBVSwwSUNqQ3ZCLDRxSkFzSEE7MkZEMUZhLGlCQUFpQjtrQkFKN0IsU0FBUzsrQkFDRSxlQUFlO21QQUloQixjQUFjO3NCQUF0QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDSSx5QkFBeUI7c0JBQWxDLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFFUCxPQUFPO3NCQUROLFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHeEMsWUFBWTtzQkFEWCxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBOEJhLGNBQWM7c0JBQWpFLFlBQVk7dUJBQUMsd0JBQXdCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBU0csZUFBZTtzQkFBbkUsWUFBWTt1QkFBQyx5QkFBeUIsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJTWFuYWdlZE9iamVjdCB9IGZyb20gJ0BjOHkvY2xpZW50JztcbmltcG9ydCB7XG4gIEFsZXJ0U2VydmljZSxcbiAgQzh5U3RlcHBlcixcbiAgR2FpbnNpZ2h0U2VydmljZSxcbiAgUGFnaW5hdGlvbixcbiAgUGVybWlzc2lvbnMsXG4gIGdldHRleHRcbn0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFBST0RVQ1RfRVhQRVJJRU5DRSB9IGZyb20gJy4uL3NoYXJlZC9zdWItYXNzZXRzLm1vZGVsJztcbmltcG9ydCB7IFN1YkFzc2V0c1NlcnZpY2UgfSBmcm9tICcuLi9zdWItYXNzZXRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQWRkR3JvdXBTZXJ2aWNlIH0gZnJvbSAnLi9hZGQtZ3JvdXAuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2M4eS1hZGQtZ3JvdXAnLFxuICB0ZW1wbGF0ZVVybDogJy4vYWRkLWdyb3VwLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBBZGRHcm91cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGN1cnJlbnRHcm91cElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIG9uRGV2aWNlUXVlcnlTdHJpbmdDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSBvbkNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAVmlld0NoaWxkKEM4eVN0ZXBwZXIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBzdGVwcGVyOiBDOHlTdGVwcGVyO1xuICBAVmlld0NoaWxkKCduYW1lUmVmJywgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIG5hbWVJbnB1dFJlZjogRWxlbWVudFJlZjtcbiAgZGV2aWNlUXVlcnlTdHJpbmdPdXRwdXQ6IHN0cmluZztcbiAgZm9ybUdyb3VwU3RlcE9uZTogRm9ybUdyb3VwO1xuICBwZW5kaW5nU3RhdHVzID0gZmFsc2U7XG4gIHBhZ2luYXRpb246IFBhZ2luYXRpb24gPSB7IHBhZ2VTaXplOiAyMCwgY3VycmVudFBhZ2U6IDEgfTtcbiAgc2VsZWN0ZWQ6IHN0cmluZ1tdID0gW107XG4gIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBjYW5DcmVhdGVHcm91cCA9IGZhbHNlO1xuICBjYW5Bc3NpZ25EZXZpY2UgPSBmYWxzZTtcbiAgUFJPRFVDVF9FWFBFUklFTkNFID0gUFJPRFVDVF9FWFBFUklFTkNFO1xuXG4gIHJlYWRvbmx5IElURU1TX1NFTEVDVF9MSU1JVDogbnVtYmVyID0gMTU7XG4gIHJlYWRvbmx5IGJ0bkxhYmVscyA9IHtcbiAgICBuZXh0OiBnZXR0ZXh0KCdOZXh0JyksXG4gICAgY2FuY2VsOiBnZXR0ZXh0KCdDYW5jZWwnKSxcbiAgICBjcmVhdGU6IGdldHRleHQoJ0NyZWF0ZScpXG4gIH07XG5cbiAgcHJpdmF0ZSBuYW1lSW5wdXQ6IEhUTUxJbnB1dEVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBhZGRHcm91cFNlcnZpY2U6IEFkZEdyb3VwU2VydmljZSxcbiAgICBwcml2YXRlIGFsZXJ0OiBBbGVydFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzdWJBc3NldHNTZXJ2aWNlOiBTdWJBc3NldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ2FpbnNpZ2h0U2VydmljZTogR2FpbnNpZ2h0U2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zU2VydmljZTogUGVybWlzc2lvbnNcbiAgKSB7fVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZW50ZXInLCBbJyRldmVudCddKSBvbkVudGVyS2V5RG93bihfZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAvLyBPcmRlciBtYXR0ZXJzISBOZWVkcyB0byBiZSBwbGFjZWQgYmVmb3JlIHRoaXMuc3RlcHBlci5uZXh0XG4gICAgaWYgKCh0aGlzLmlzR3JvdXBEZXRhaWxzU3RlcCgpICYmICF0aGlzLmNhbkFzc2lnbkRldmljZSkgfHwgdGhpcy5pc0Fzc2lnbkRldmljZVN0ZXAoKSkge1xuICAgICAgdGhpcy5jcmVhdGVHcm91cCgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnN0ZXBwZXIubmV4dCgpO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bi5lc2NhcGUnLCBbJyRldmVudCddKSBvbkVzY2FwZUtleURvd24oX2V2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgdGhpcy5vbkNhbmNlbC5lbWl0KCk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmZvcm1Hcm91cFN0ZXBPbmUgPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIG5hbWU6IFsnJywgVmFsaWRhdG9ycy5yZXF1aXJlZF0sXG4gICAgICBkZXNjcmlwdGlvbjogWycnXVxuICAgIH0pO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5vbkNhbmNlbC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5yZXNldFN0ZXBwZXIoKSk7XG4gICAgdGhpcy5jYW5DcmVhdGVHcm91cCA9XG4gICAgICB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuY2FuQ3JlYXRlR3JvdXAoKSB8fFxuICAgICAgKGF3YWl0IHRoaXMucGVybWlzc2lvbnNTZXJ2aWNlLmNhbkVkaXQoXG4gICAgICAgIFtdLFxuICAgICAgICB7IGlkOiB0aGlzLmN1cnJlbnRHcm91cElkIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBza2lwT3duZXJDaGVjazogdHJ1ZSxcbiAgICAgICAgICBza2lwUm9sZXNDaGVjazogdHJ1ZVxuICAgICAgICB9XG4gICAgICApKTtcbiAgICB0aGlzLmNhbkFzc2lnbkRldmljZSA9IGF3YWl0IHRoaXMuc3ViQXNzZXRzU2VydmljZS5jYW5Bc3NpZ25EZXZpY2Uoe1xuICAgICAgaWQ6IHRoaXMuY3VycmVudEdyb3VwSWRcbiAgICB9IGFzIElNYW5hZ2VkT2JqZWN0KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLm5hbWVJbnB1dCA9IHRoaXMubmFtZUlucHV0UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLnNldEZvY3VzT25OYW1lSW5wdXQoKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUdyb3VwKCkge1xuICAgIGlmICh0aGlzLmNhbkNyZWF0ZUdyb3VwID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ1N0YXR1cyA9IHRydWU7XG4gICAgYXdhaXQgdGhpcy5hZGRHcm91cFNlcnZpY2UuY3JlYXRlR3JvdXBBbmRBc3NpZ25EZXZpY2VzKFxuICAgICAgdGhpcy5mb3JtR3JvdXBTdGVwT25lLnZhbHVlLFxuICAgICAgdGhpcy5jdXJyZW50R3JvdXBJZCxcbiAgICAgIHRoaXMuc2VsZWN0ZWRcbiAgICApO1xuXG4gICAgdGhpcy5wZW5kaW5nU3RhdHVzID0gZmFsc2U7XG4gICAgdGhpcy5yZXNldFN0ZXBwZXIoKTtcbiAgICBjb25zdCBhbGVydE1zZyA9IGdldHRleHQoJ0dyb3VwIGNyZWF0ZWQuJyk7XG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuRVZFTlQsIHtcbiAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFERF9HUk9VUC5DT01QT05FTlRTLkFERF9HUk9VUCxcbiAgICAgIHVybDogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BRERfR1JPVVAuUkVTVUxUUy5BRERfU1VDQ0VTU1xuICAgIH0pO1xuICAgIHRoaXMuYWxlcnQuc3VjY2VzcyhhbGVydE1zZyk7XG4gICAgdGhpcy5yZWZyZXNoLmVtaXQoKTtcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2VsZWN0ZWQoc2VsZWN0ZWREZXZpY2VzSURzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZERldmljZXNJRHM7XG4gIH1cblxuICByZXNldFN0ZXBwZXIoKSB7XG4gICAgdGhpcy5zdGVwcGVyLnJlc2V0KCk7XG4gICAgdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPSAxO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBbXTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzR3JvdXBEZXRhaWxzU3RlcCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzQXNzaWduRGV2aWNlU3RlcCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPT09IDE7XG4gIH1cblxuICBwcml2YXRlIHNldEZvY3VzT25OYW1lSW5wdXQoKSB7XG4gICAgaWYgKHRoaXMubmFtZUlucHV0KSB7XG4gICAgICB0aGlzLm5hbWVJbnB1dC5mb2N1cygpO1xuICAgICAgdGhpcy5uYW1lSW5wdXQuc2VsZWN0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1jb250ZW50c1wiICpuZ0lmPVwiIWN1cnJlbnRHcm91cElkOyBlbHNlIHN0ZXBwZXJcIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwcGVyXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzdGVwcGVyPlxuICA8Yzh5LXN0ZXBwZXJcbiAgICBjbGFzcz1cImQtY29sIGZsZXgtbm93cmFwIG5vLWFsaWduLWl0ZW1zIGZpdC1oIGM4eS1zdGVwcGVyLS1uby1idG5zXCJcbiAgICBbZGlzYWJsZURlZmF1bHRJY29uc109XCJ7IGVkaXQ6IHRydWUsIGRvbmU6IGZhbHNlIH1cIlxuICAgIFtjdXN0b21DbGFzc2VzXT1cIlsnY29sLW1kLTYnLCAnY29sLW1kLW9mZnNldC0zJywgJ20tdC0yNCcsICdtLWItNDAnLCAncC0wJywgJ2ZsZXgtbm8tc2hyaW5rJ11cIlxuICAgIGxpbmVhclxuICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgaW5oZXJpdFxuICAgIFthY3Rpb25OYW1lXT1cIlBST0RVQ1RfRVhQRVJJRU5DRS5FVkVOVFwiXG4gICAgW2FjdGlvbkRhdGFdPVwieyBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BRERfR1JPVVAuQ09NUE9ORU5UUy5BRERfR1JPVVAgfVwiXG4gID5cbiAgICA8Y2RrLXN0ZXAgW3N0ZXBDb250cm9sXT1cImZvcm1Hcm91cFN0ZXBPbmVcIiBbbGFiZWxdPVwiJ05ldyBncm91cCcgfCB0cmFuc2xhdGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IHAtdC0wIGZsZXgtbm8tc2hyaW5rIHNlcGFyYXRvci1ib3R0b20gY29sLXhzLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImg0IHRleHQtY2VudGVyIHRleHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgIHt7ICdOZXcgZ3JvdXAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgZmxleC1ncm93IG5vLWd1dHRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pbm5lci1zY3JvbGwgZml0LWhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLWItMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBbbm92YWxpZGF0aW9uXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBTdGVwT25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPk5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIEZpcnN0IGZsb29yJyB8IHRyYW5zbGF0ZSB9fSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNuYW1lUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+RGVzY3JpcHRpb248L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLiBmaXJzdCBmbG9vciBkZXZpY2VzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFN0ZXBPbmVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIG1heC13aWR0aC0xMDBcIiB0cmFuc2xhdGUgKm5nSWY9XCIhY2FuQXNzaWduRGV2aWNlXCI+XG4gICAgICAgICAgICAgICAgICBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFzc2lnbiBkZXZpY2VzLlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgICBjbGFzcz1cImQtYmxvY2sgY2FyZC1mb290ZXIgcC0yNCBzZXBhcmF0b3JcIlxuICAgICAgICAob25DYW5jZWwpPVwib25DYW5jZWwuZW1pdCgpXCJcbiAgICAgICAgKG9uQ3VzdG9tKT1cImNyZWF0ZUdyb3VwKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkNyZWF0ZUdyb3VwXCJcbiAgICAgICAgW2xhYmVsc109XCJcbiAgICAgICAgICBjYW5Bc3NpZ25EZXZpY2VcbiAgICAgICAgICAgID8geyBuZXh0OiBidG5MYWJlbHMubmV4dCwgY2FuY2VsOiBidG5MYWJlbHMuY2FuY2VsIH1cbiAgICAgICAgICAgIDogeyBjdXN0b206IGJ0bkxhYmVscy5jcmVhdGUsIGNhbmNlbDogYnRuTGFiZWxzLmNhbmNlbCB9XG4gICAgICAgIFwiXG4gICAgICAgIFtzaG93QnV0dG9uc109XCJcbiAgICAgICAgICBjYW5Bc3NpZ25EZXZpY2UgPyB7IG5leHQ6IHRydWUsIGNhbmNlbDogdHJ1ZSB9IDogeyBjdXN0b206IHRydWUsIGNhbmNlbDogdHJ1ZSB9XG4gICAgICAgIFwiXG4gICAgICA+PC9jOHktc3RlcHBlci1idXR0b25zPlxuICAgIDwvY2RrLXN0ZXA+XG4gICAgPGNkay1zdGVwIFtsYWJlbF09XCInQXNzaWduIGRldmljZXMnIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0xNiBwLXQtMCBmbGV4LW5vLXNocmluayBzZXBhcmF0b3ItYm90dG9tIGNvbC14cy0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1tZC1vZmZzZXQtMyBjb2wtbGctNCBjb2wtbGctb2Zmc2V0LTRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LWNlbnRlciB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAgICB7eyAnQXNzaWduIGRldmljZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgbm8tZ3V0dGVyIGZsZXgtZ3Jvd1wiPlxuICAgICAgICA8Yzh5LWRldmljZS1ncmlkXG4gICAgICAgICAgW3RpdGxlXT1cIidTZWxlY3QgdGFyZ2V0IGRldmljZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbYWN0aW9uQ29udHJvbHNdPVwiW11cIlxuICAgICAgICAgIFtpbmZpbml0ZVNjcm9sbF09XCInYXV0bydcIlxuICAgICAgICAgIFtzZWxlY3RhYmxlXT1cInRydWVcIlxuICAgICAgICAgIFtwYWdpbmF0aW9uXT1cInBhZ2luYXRpb25cIlxuICAgICAgICAgIChpdGVtc1NlbGVjdCk9XCJvblNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5UXCJcbiAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7IGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFERF9HUk9VUC5DT01QT05FTlRTLkFERF9HUk9VUCB9XCJcbiAgICAgICAgPjwvYzh5LWRldmljZS1ncmlkPlxuICAgICAgPC9kaXY+XG4gICAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgICBjbGFzcz1cImQtYmxvY2sgY2FyZC1mb290ZXIgcC0yNCBzZXBhcmF0b3JcIlxuICAgICAgICAob25DYW5jZWwpPVwib25DYW5jZWwuZW1pdCgpXCJcbiAgICAgICAgKG9uQ3VzdG9tKT1cImNyZWF0ZUdyb3VwKClcIlxuICAgICAgICBbbGFiZWxzXT1cInsgY3VzdG9tOiBidG5MYWJlbHMuY3JlYXRlIH1cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkFzc2lnbkRldmljZVwiXG4gICAgICAgIFtwZW5kaW5nXT1cInBlbmRpbmdTdGF0dXNcIlxuICAgICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICA8L2Nkay1zdGVwPlxuICA8L2M4eS1zdGVwcGVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWdyb3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3N1Yi1hc3NldHMvYWRkLWdyb3VwL2FkZC1ncm91cC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9zdWItYXNzZXRzL2FkZC1ncm91cC9hZGQtZ3JvdXAuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBQ0wsTUFBTSxFQUNOLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBFLE9BQU8sRUFDTCxZQUFZLEVBQ1osVUFBVSxFQUNWLGdCQUFnQixFQUVoQixXQUFXLEVBQ1gsT0FBTyxFQUNSLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOzs7Ozs7Ozs7QUFNdEQsTUFBTSxPQUFPLGlCQUFpQjtJQTRCNUIsWUFDVSxFQUFlLEVBQ2YsZUFBZ0MsRUFDaEMsS0FBbUIsRUFDbkIsZ0JBQWtDLEVBQ2xDLGdCQUFrQyxFQUNsQyxrQkFBK0I7UUFML0IsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWE7UUFoQ2hDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFB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UyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDOzs4R0E3SFUsaUJBQWlCO2tHQUFqQixpQkFBaUIsOFhBS2pCLFVBQVUsMElDakN2Qiw0cUpBc0hBOzJGRDFGYSxpQkFBaUI7a0JBSjdCLFNBQVM7K0JBQ0UsZUFBZTttUEFJaEIsY0FBYztzQkFBdEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0kseUJBQXlCO3NCQUFsQyxNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBRVAsT0FBTztzQkFETixTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBR3hDLFlBQVk7c0JBRFgsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQThCYSxjQUFjO3NCQUFqRSxZQUFZO3VCQUFDLHdCQUF3QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQVNHLGVBQWU7c0JBQW5FLFlBQVk7dUJBQUMseUJBQXlCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdExpc3RlbmVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSU1hbmFnZWRPYmplY3QgfSBmcm9tICdAYzh5L2NsaWVudCc7XG5pbXBvcnQge1xuICBBbGVydFNlcnZpY2UsXG4gIEM4eVN0ZXBwZXIsXG4gIEdhaW5zaWdodFNlcnZpY2UsXG4gIFBhZ2luYXRpb24sXG4gIFBlcm1pc3Npb25zLFxuICBnZXR0ZXh0XG59IGZyb20gJ0BjOHkvbmd4LWNvbXBvbmVudHMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBQUk9EVUNUX0VYUEVSSUVOQ0UgfSBmcm9tICcuLi9zaGFyZWQvc3ViLWFzc2V0cy5tb2RlbCc7XG5pbXBvcnQgeyBTdWJBc3NldHNTZXJ2aWNlIH0gZnJvbSAnLi4vc3ViLWFzc2V0cy5zZXJ2aWNlJztcbmltcG9ydCB7IEFkZEdyb3VwU2VydmljZSB9IGZyb20gJy4vYWRkLWdyb3VwLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjOHktYWRkLWdyb3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2FkZC1ncm91cC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQWRkR3JvdXBDb21wb25lbnQge1xuICBASW5wdXQoKSBjdXJyZW50R3JvdXBJZDogc3RyaW5nO1xuICBASW5wdXQoKSByZWZyZXNoID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKSBvbkRldmljZVF1ZXJ5U3RyaW5nQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgb25DYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQFZpZXdDaGlsZChDOHlTdGVwcGVyLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgc3RlcHBlcjogQzh5U3RlcHBlcjtcbiAgQFZpZXdDaGlsZCgnbmFtZVJlZicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBuYW1lSW5wdXRSZWY6IEVsZW1lbnRSZWY7XG4gIGRldmljZVF1ZXJ5U3RyaW5nT3V0cHV0OiBzdHJpbmc7XG4gIGZvcm1Hcm91cFN0ZXBPbmU6IEZvcm1Hcm91cDtcbiAgcGVuZGluZ1N0YXR1cyA9IGZhbHNlO1xuICBwYWdpbmF0aW9uOiBQYWdpbmF0aW9uID0geyBwYWdlU2l6ZTogMjAsIGN1cnJlbnRQYWdlOiAxIH07XG4gIHNlbGVjdGVkOiBzdHJpbmdbXSA9IFtdO1xuICBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgY2FuQ3JlYXRlR3JvdXAgPSBmYWxzZTtcbiAgY2FuQXNzaWduRGV2aWNlID0gZmFsc2U7XG4gIFBST0RVQ1RfRVhQRVJJRU5DRSA9IFBST0RVQ1RfRVhQRVJJRU5DRTtcblxuICByZWFkb25seSBJVEVNU19TRUxFQ1RfTElNSVQ6IG51bWJlciA9IDE1O1xuICByZWFkb25seSBidG5MYWJlbHMgPSB7XG4gICAgbmV4dDogZ2V0dGV4dCgnTmV4dCcpLFxuICAgIGNhbmNlbDogZ2V0dGV4dCgnQ2FuY2VsJyksXG4gICAgY3JlYXRlOiBnZXR0ZXh0KCdDcmVhdGUnKVxuICB9O1xuXG4gIHByaXZhdGUgbmFtZUlucHV0OiBIVE1MSW5wdXRFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgYWRkR3JvdXBTZXJ2aWNlOiBBZGRHcm91cFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhbGVydDogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3ViQXNzZXRzU2VydmljZTogU3ViQXNzZXRzU2VydmljZSxcbiAgICBwcml2YXRlIGdhaW5zaWdodFNlcnZpY2U6IEdhaW5zaWdodFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBwZXJtaXNzaW9uc1NlcnZpY2U6IFBlcm1pc3Npb25zXG4gICkge31cblxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duLmVudGVyJywgWyckZXZlbnQnXSkgb25FbnRlcktleURvd24oX2V2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgLy8gT3JkZXIgbWF0dGVycyEgTmVlZHMgdG8gYmUgcGxhY2VkIGJlZm9yZSB0aGlzLnN0ZXBwZXIubmV4dFxuICAgIGlmICgodGhpcy5pc0dyb3VwRGV0YWlsc1N0ZXAoKSAmJiAhdGhpcy5jYW5Bc3NpZ25EZXZpY2UpIHx8IHRoaXMuaXNBc3NpZ25EZXZpY2VTdGVwKCkpIHtcbiAgICAgIHRoaXMuY3JlYXRlR3JvdXAoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5zdGVwcGVyLm5leHQoKTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSkgb25Fc2NhcGVLZXlEb3duKF9ldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIHRoaXMub25DYW5jZWwuZW1pdCgpO1xuICB9XG5cbiAgYXN5bmMgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtR3JvdXBTdGVwT25lID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBuYW1lOiBbJycsIFZhbGlkYXRvcnMucmVxdWlyZWRdLFxuICAgICAgZGVzY3JpcHRpb246IFsnJ11cbiAgICB9KTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IHRoaXMub25DYW5jZWwuc3Vic2NyaWJlKCgpID0+IHRoaXMucmVzZXRTdGVwcGVyKCkpO1xuICAgIHRoaXMuY2FuQ3JlYXRlR3JvdXAgPVxuICAgICAgdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmNhbkNyZWF0ZUdyb3VwKCkgfHxcbiAgICAgIChhd2FpdCB0aGlzLnBlcm1pc3Npb25zU2VydmljZS5jYW5FZGl0KFsnUk9MRV9JTlZFTlRPUllfQURNSU4nLCAnUk9MRV9JTlZFTlRPUllfQ1JFQVRFJ10sIHtcbiAgICAgICAgaWQ6IHRoaXMuY3VycmVudEdyb3VwSWRcbiAgICAgIH0pKTtcbiAgICB0aGlzLmNhbkFzc2lnbkRldmljZSA9IGF3YWl0IHRoaXMuc3ViQXNzZXRzU2VydmljZS5jYW5Bc3NpZ25EZXZpY2Uoe1xuICAgICAgaWQ6IHRoaXMuY3VycmVudEdyb3VwSWRcbiAgICB9IGFzIElNYW5hZ2VkT2JqZWN0KTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLm5hbWVJbnB1dCA9IHRoaXMubmFtZUlucHV0UmVmLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICB0aGlzLnNldEZvY3VzT25OYW1lSW5wdXQoKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUdyb3VwKCkge1xuICAgIGlmICh0aGlzLmNhbkNyZWF0ZUdyb3VwID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucGVuZGluZ1N0YXR1cyA9IHRydWU7XG4gICAgYXdhaXQgdGhpcy5hZGRHcm91cFNlcnZpY2UuY3JlYXRlR3JvdXBBbmRBc3NpZ25EZXZpY2VzKFxuICAgICAgdGhpcy5mb3JtR3JvdXBTdGVwT25lLnZhbHVlLFxuICAgICAgdGhpcy5jdXJyZW50R3JvdXBJZCxcbiAgICAgIHRoaXMuc2VsZWN0ZWRcbiAgICApO1xuXG4gICAgdGhpcy5wZW5kaW5nU3RhdHVzID0gZmFsc2U7XG4gICAgdGhpcy5yZXNldFN0ZXBwZXIoKTtcbiAgICBjb25zdCBhbGVydE1zZyA9IGdldHRleHQoJ0dyb3VwIGNyZWF0ZWQuJyk7XG4gICAgdGhpcy5nYWluc2lnaHRTZXJ2aWNlLnRyaWdnZXJFdmVudChQUk9EVUNUX0VYUEVSSUVOQ0UuRVZFTlQsIHtcbiAgICAgIGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFERF9HUk9VUC5DT01QT05FTlRTLkFERF9HUk9VUCxcbiAgICAgIHVybDogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICByZXN1bHQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BRERfR1JPVVAuUkVTVUxUUy5BRERfU1VDQ0VTU1xuICAgIH0pO1xuICAgIHRoaXMuYWxlcnQuc3VjY2VzcyhhbGVydE1zZyk7XG4gICAgdGhpcy5yZWZyZXNoLmVtaXQoKTtcbiAgICB0aGlzLm9uQ2FuY2VsLmVtaXQoKTtcbiAgfVxuXG4gIG9uU2VsZWN0ZWQoc2VsZWN0ZWREZXZpY2VzSURzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZERldmljZXNJRHM7XG4gIH1cblxuICByZXNldFN0ZXBwZXIoKSB7XG4gICAgdGhpcy5zdGVwcGVyLnJlc2V0KCk7XG4gICAgdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPSAxO1xuICAgIHRoaXMuc2VsZWN0ZWQgPSBbXTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGlzR3JvdXBEZXRhaWxzU3RlcCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPT09IDA7XG4gIH1cblxuICBwcml2YXRlIGlzQXNzaWduRGV2aWNlU3RlcCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdGVwcGVyLnNlbGVjdGVkSW5kZXggPT09IDE7XG4gIH1cblxuICBwcml2YXRlIHNldEZvY3VzT25OYW1lSW5wdXQoKSB7XG4gICAgaWYgKHRoaXMubmFtZUlucHV0KSB7XG4gICAgICB0aGlzLm5hbWVJbnB1dC5mb2N1cygpO1xuICAgICAgdGhpcy5uYW1lSW5wdXQuc2VsZWN0KCk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZC1jb250ZW50c1wiICpuZ0lmPVwiIWN1cnJlbnRHcm91cElkOyBlbHNlIHN0ZXBwZXJcIj5cbiAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJzdGVwcGVyXCI+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNzdGVwcGVyPlxuICA8Yzh5LXN0ZXBwZXJcbiAgICBjbGFzcz1cImQtY29sIGZsZXgtbm93cmFwIG5vLWFsaWduLWl0ZW1zIGZpdC1oIGM4eS1zdGVwcGVyLS1uby1idG5zXCJcbiAgICBbZGlzYWJsZURlZmF1bHRJY29uc109XCJ7IGVkaXQ6IHRydWUsIGRvbmU6IGZhbHNlIH1cIlxuICAgIFtjdXN0b21DbGFzc2VzXT1cIlsnY29sLW1kLTYnLCAnY29sLW1kLW9mZnNldC0zJywgJ20tdC0yNCcsICdtLWItNDAnLCAncC0wJywgJ2ZsZXgtbm8tc2hyaW5rJ11cIlxuICAgIGxpbmVhclxuICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgaW5oZXJpdFxuICAgIFthY3Rpb25OYW1lXT1cIlBST0RVQ1RfRVhQRVJJRU5DRS5FVkVOVFwiXG4gICAgW2FjdGlvbkRhdGFdPVwieyBjb21wb25lbnQ6IFBST0RVQ1RfRVhQRVJJRU5DRS5BRERfR1JPVVAuQ09NUE9ORU5UUy5BRERfR1JPVVAgfVwiXG4gID5cbiAgICA8Y2RrLXN0ZXAgW3N0ZXBDb250cm9sXT1cImZvcm1Hcm91cFN0ZXBPbmVcIiBbbGFiZWxdPVwiJ05ldyBncm91cCcgfCB0cmFuc2xhdGVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwLTE2IHAtdC0wIGZsZXgtbm8tc2hyaW5rIHNlcGFyYXRvci1ib3R0b20gY29sLXhzLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImg0IHRleHQtY2VudGVyIHRleHQtbWVkaXVtXCI+XG4gICAgICAgICAgICAgIHt7ICdOZXcgZ3JvdXAnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgZmxleC1ncm93IG5vLWd1dHRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1pbm5lci1zY3JvbGwgZml0LWhcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ibG9jayBwLWItMFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgY29sLW1kLW9mZnNldC0zIGNvbC1sZy00IGNvbC1sZy1vZmZzZXQtNFwiPlxuICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cCBbbm92YWxpZGF0aW9uXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBTdGVwT25lXCI+XG4gICAgICAgICAgICAgICAgICAgIDxjOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgdHJhbnNsYXRlPk5hbWU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdlLmcuIEZpcnN0IGZsb29yJyB8IHRyYW5zbGF0ZSB9fSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICNuYW1lUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG5cbiAgICAgICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCB0cmFuc2xhdGU+RGVzY3JpcHRpb248L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnZS5nLiBmaXJzdCBmbG9vciBkZXZpY2VzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9jOHktZm9ybS1ncm91cD5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYzh5LWZvcm0tZ3JvdXA+XG4gICAgICAgICAgICAgICAgPGM4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgICAgPGRpdiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFN0ZXBPbmVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2M4eS1mb3JtLWdyb3VwPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvIG1heC13aWR0aC0xMDBcIiB0cmFuc2xhdGUgKm5nSWY9XCIhY2FuQXNzaWduRGV2aWNlXCI+XG4gICAgICAgICAgICAgICAgICBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFzc2lnbiBkZXZpY2VzLlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgICBjbGFzcz1cImQtYmxvY2sgY2FyZC1mb290ZXIgcC0yNCBzZXBhcmF0b3JcIlxuICAgICAgICAob25DYW5jZWwpPVwib25DYW5jZWwuZW1pdCgpXCJcbiAgICAgICAgKG9uQ3VzdG9tKT1cImNyZWF0ZUdyb3VwKClcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkNyZWF0ZUdyb3VwXCJcbiAgICAgICAgW2xhYmVsc109XCJcbiAgICAgICAgICBjYW5Bc3NpZ25EZXZpY2VcbiAgICAgICAgICAgID8geyBuZXh0OiBidG5MYWJlbHMubmV4dCwgY2FuY2VsOiBidG5MYWJlbHMuY2FuY2VsIH1cbiAgICAgICAgICAgIDogeyBjdXN0b206IGJ0bkxhYmVscy5jcmVhdGUsIGNhbmNlbDogYnRuTGFiZWxzLmNhbmNlbCB9XG4gICAgICAgIFwiXG4gICAgICAgIFtzaG93QnV0dG9uc109XCJcbiAgICAgICAgICBjYW5Bc3NpZ25EZXZpY2UgPyB7IG5leHQ6IHRydWUsIGNhbmNlbDogdHJ1ZSB9IDogeyBjdXN0b206IHRydWUsIGNhbmNlbDogdHJ1ZSB9XG4gICAgICAgIFwiXG4gICAgICA+PC9jOHktc3RlcHBlci1idXR0b25zPlxuICAgIDwvY2RrLXN0ZXA+XG4gICAgPGNkay1zdGVwIFtsYWJlbF09XCInQXNzaWduIGRldmljZXMnIHwgdHJhbnNsYXRlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicC0xNiBwLXQtMCBmbGV4LW5vLXNocmluayBzZXBhcmF0b3ItYm90dG9tIGNvbC14cy0xMlwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02IGNvbC1tZC1vZmZzZXQtMyBjb2wtbGctNCBjb2wtbGctb2Zmc2V0LTRcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoNCB0ZXh0LWNlbnRlciB0ZXh0LW1lZGl1bVwiPlxuICAgICAgICAgICAgICB7eyAnQXNzaWduIGRldmljZXMnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtMTIgbm8tZ3V0dGVyIGZsZXgtZ3Jvd1wiPlxuICAgICAgICA8Yzh5LWRldmljZS1ncmlkXG4gICAgICAgICAgW3RpdGxlXT1cIidTZWxlY3QgdGFyZ2V0IGRldmljZXMnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICBbYWN0aW9uQ29udHJvbHNdPVwiW11cIlxuICAgICAgICAgIFtpbmZpbml0ZVNjcm9sbF09XCInYXV0bydcIlxuICAgICAgICAgIFtzZWxlY3RhYmxlXT1cInRydWVcIlxuICAgICAgICAgIFtwYWdpbmF0aW9uXT1cInBhZ2luYXRpb25cIlxuICAgICAgICAgIChpdGVtc1NlbGVjdCk9XCJvblNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgICAgIGM4eVByb2R1Y3RFeHBlcmllbmNlXG4gICAgICAgICAgW2FjdGlvbk5hbWVdPVwiUFJPRFVDVF9FWFBFUklFTkNFLkVWRU5UXCJcbiAgICAgICAgICBbYWN0aW9uRGF0YV09XCJ7IGNvbXBvbmVudDogUFJPRFVDVF9FWFBFUklFTkNFLkFERF9HUk9VUC5DT01QT05FTlRTLkFERF9HUk9VUCB9XCJcbiAgICAgICAgPjwvYzh5LWRldmljZS1ncmlkPlxuICAgICAgPC9kaXY+XG4gICAgICA8Yzh5LXN0ZXBwZXItYnV0dG9uc1xuICAgICAgICBjbGFzcz1cImQtYmxvY2sgY2FyZC1mb290ZXIgcC0yNCBzZXBhcmF0b3JcIlxuICAgICAgICAob25DYW5jZWwpPVwib25DYW5jZWwuZW1pdCgpXCJcbiAgICAgICAgKG9uQ3VzdG9tKT1cImNyZWF0ZUdyb3VwKClcIlxuICAgICAgICBbbGFiZWxzXT1cInsgY3VzdG9tOiBidG5MYWJlbHMuY3JlYXRlIH1cIlxuICAgICAgICBbZGlzYWJsZWRdPVwiIWNhbkFzc2lnbkRldmljZVwiXG4gICAgICAgIFtwZW5kaW5nXT1cInBlbmRpbmdTdGF0dXNcIlxuICAgICAgPjwvYzh5LXN0ZXBwZXItYnV0dG9ucz5cbiAgICA8L2Nkay1zdGVwPlxuICA8L2M4eS1zdGVwcGVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -47,10 +47,7 @@ export class SubAssetsComponent {
47
47
  this.group = { ...contextData };
48
48
  this.title = this.group.name;
49
49
  this.currentGroupId = this.group.id;
50
- this.shouldDisableAddGroup = !(await this.permissionsService.canEdit([], this.group, {
51
- skipOwnerCheck: true,
52
- skipRolesCheck: true
53
- }));
50
+ this.shouldDisableAddGroup = !(await this.permissionsService.canEdit(['ROLE_INVENTORY_ADMIN', 'ROLE_INVENTORY_CREATE'], this.group));
54
51
  this.shouldDisableAssignDevices = !(await this.subAssetsService.canAssignDevice(this.group));
55
52
  this.customProperties = await this.subAssetsService.getCustomProperties(this.group);
56
53
  this.shouldShowAssetsProperties =
@@ -81,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImpor
81
78
  type: Inject,
82
79
  args: [SUB_ASSETS_CONFIG]
83
80
  }] }]; } });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLWFzc2V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zdWItYXNzZXRzL3N1Yi1hc3NldHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3ViLWFzc2V0cy9zdWItYXNzZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBa0IsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7QUFNeEQsTUFBTSxPQUFPLGtCQUFrQjtJQW9CN0IsWUFDVSxLQUFxQixFQUNyQixnQkFBa0MsRUFDbEMsbUJBQXdDLEVBQ3hDLGtCQUErQixFQUNMLFlBQTZCO1FBSnZELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWE7UUFDTCxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFwQmpFLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFMUIsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUM5QiwrQkFBMEIsR0FBRyxLQUFLLENBQUM7UUFDbkMsK0JBQTBCLEdBQUcsS0FBSyxDQUFDO1FBRW5DLHFCQUFnQixHQUFxQixFQUFFLENBQUM7UUFXdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNuRixjQUFjLEVBQUUsSUFBSTtZQUNwQixjQUFjLEVBQUUsSUFBSTtTQUNyQixDQUFDLENBQUMsQ0FBQztRQUNKLElBQUksQ0FBQywwQkFBMEIsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLDBCQUEwQjtZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXFCO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDOzsrR0F2RVUsa0JBQWtCLDhJQXlCbkIsaUJBQWlCO21HQXpCaEIsa0JBQWtCLHNEQ1ovQiwydUdBMEdBOzJGRDlGYSxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsZ0JBQWdCOzswQkE0QnZCLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlU2VydmljZSwgRGlzcGxheU9wdGlvbnMsIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNVQl9BU1NFVFNfQ09ORklHLCBTdWJBc3NldHNDb25maWcgfSBmcm9tICcuL3N1Yi1hc3NldHMubW9kZWwnO1xuaW1wb3J0IHsgU3ViQXNzZXRzU2VydmljZSB9IGZyb20gJy4vc3ViLWFzc2V0cy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXN1Yi1hc3NldHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3ViLWFzc2V0cy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3ViQXNzZXRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBncm91cDogSU1hbmFnZWRPYmplY3Q7XG4gIGN1cnJlbnRHcm91cElkOiBzdHJpbmc7XG4gIHNob3dDaGlsZHJlbkZvckRldmljZTogSU1hbmFnZWRPYmplY3Q7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHRvZ2dsZSA9IGZhbHNlO1xuICBzaG93QWRkR3JvdXAgPSBmYWxzZTtcbiAgc2hvd0Fzc2lnbkRldmljZXMgPSBmYWxzZTtcbiAgcmVxdWVzdEluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gIHNob3dBc3NpZ25DaGlsZERldmljZXMgPSBmYWxzZTtcbiAgcmVmcmVzaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGZpbHRlcmFibGUgPSB0cnVlO1xuICBzaG91bGREaXNhYmxlQWRkR3JvdXAgPSBmYWxzZTtcbiAgc2hvdWxkRGlzYWJsZUFzc2lnbkRldmljZXMgPSBmYWxzZTtcbiAgc2hvdWxkU2hvd0Fzc2V0c1Byb3BlcnRpZXMgPSBmYWxzZTtcbiAgZGlzcGxheU9wdGlvbnM6IERpc3BsYXlPcHRpb25zO1xuICBjdXN0b21Qcm9wZXJ0aWVzOiBJTWFuYWdlZE9iamVjdFtdID0gW107XG5cbiAgcHJpdmF0ZSBkYXRhU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBzdWJBc3NldHNTZXJ2aWNlOiBTdWJBc3NldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFJvdXRlU2VydmljZTogQ29udGV4dFJvdXRlU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zU2VydmljZTogUGVybWlzc2lvbnMsXG4gICAgQEluamVjdChTVUJfQVNTRVRTX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogU3ViQXNzZXRzQ29uZmlnXG4gICkge1xuICAgIHRoaXMuZGF0YVN1YiA9IHRoaXMucm91dGUucGFyZW50LmRhdGEuc3Vic2NyaWJlKCh7IGNvbnRleHREYXRhIH0pID0+IHtcbiAgICAgIHRoaXMuaW5pdChjb250ZXh0RGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRpc3BsYXlPcHRpb25zID0ge1xuICAgICAgc3RyaXBlZDogdHJ1ZSxcbiAgICAgIGJvcmRlcmVkOiBmYWxzZSxcbiAgICAgIGdyaWRIZWFkZXI6IHRydWUsXG4gICAgICBmaWx0ZXI6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgaW5pdChjb250ZXh0RGF0YSkge1xuICAgIHRoaXMuZ3JvdXAgPSB7IC4uLmNvbnRleHREYXRhIH07XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuZ3JvdXAubmFtZTtcbiAgICB0aGlzLmN1cnJlbnRHcm91cElkID0gdGhpcy5ncm91cC5pZDtcbiAgICB0aGlzLnNob3VsZERpc2FibGVBZGRHcm91cCA9ICEoYXdhaXQgdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UuY2FuRWRpdChbXSwgdGhpcy5ncm91cCwge1xuICAgICAgc2tpcE93bmVyQ2hlY2s6IHRydWUsXG4gICAgICBza2lwUm9sZXNDaGVjazogdHJ1ZVxuICAgIH0pKTtcbiAgICB0aGlzLnNob3VsZERpc2FibGVBc3NpZ25EZXZpY2VzID0gIShhd2FpdCB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuY2FuQXNzaWduRGV2aWNlKHRoaXMuZ3JvdXApKTtcbiAgICB0aGlzLmN1c3RvbVByb3BlcnRpZXMgPSBhd2FpdCB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuZ2V0Q3VzdG9tUHJvcGVydGllcyh0aGlzLmdyb3VwKTtcbiAgICB0aGlzLnNob3VsZFNob3dBc3NldHNQcm9wZXJ0aWVzID1cbiAgICAgIHRoaXMubW9kdWxlQ29uZmlnLnNob3dQcm9wZXJ0aWVzICYmIHRoaXMuY3VzdG9tUHJvcGVydGllcy5sZW5ndGggPiAwO1xuICB9XG5cbiAgZ3JvdXBDaGFuZ2UoZ3JvdXA6IElNYW5hZ2VkT2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy5ncm91cCA9IGdyb3VwO1xuICAgIHRoaXMudGl0bGUgPSBncm91cC5uYW1lO1xuICAgIHRoaXMuY29udGV4dFJvdXRlU2VydmljZS5zZXRDb250ZXh0KHRoaXMucm91dGUsIGdyb3VwKTtcbiAgICB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2UucmVmcmVzaENvbnRleHQoKTtcbiAgICB0aGlzLnJlZnJlc2guZW1pdCgpO1xuICB9XG5cbiAgaXNTbWFydEdyb3VwKCkge1xuICAgIHJldHVybiB0aGlzLnN1YkFzc2V0c1NlcnZpY2UuaXNTbWFydEdyb3VwKHRoaXMuZ3JvdXApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZGF0YVN1Yikge1xuICAgICAgdGhpcy5kYXRhU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG59XG4iLCI8Yzh5LXRpdGxlPlxuICB7eyB0aXRsZSB9fVxuPC9jOHktdGl0bGU+XG5cbjxjOHktYWN0aW9uLWJhci1pdGVtIFtwbGFjZW1lbnRdPVwiJ3JpZ2h0J1wiICpuZ0lmPVwiIWlzU21hcnRHcm91cCgpICYmIG1vZHVsZUNvbmZpZy5zaG93QWRkR3JvdXBCdG5cIj5cbiAgPGJ1dHRvblxuICAgIGNsYXNzPVwiYnRuIGJ0bi1saW5rXCJcbiAgICB0aXRsZT1cInt7ICdBZGQgZ3JvdXAnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAoY2xpY2spPVwic2hvd0FkZEdyb3VwID0gIXNob3dBZGRHcm91cFwiXG4gICAgW2Rpc2FibGVkXT1cInNob3VsZERpc2FibGVBZGRHcm91cFwiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIiBjbGFzcz1cIm0tci00XCI+PC9pPlxuICAgIDxzcGFuIHRyYW5zbGF0ZT5BZGQgZ3JvdXA8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbVxuICBbcGxhY2VtZW50XT1cIidyaWdodCdcIlxuICAqbmdJZj1cIiFpc1NtYXJ0R3JvdXAoKSAmJiBtb2R1bGVDb25maWcuc2hvd0Fzc2lnbkRldmljZUJ0blwiXG4+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnQXNzaWduIGRldmljZXMnIHwgdHJhbnNsYXRlIH19XCJcbiAgICAoY2xpY2spPVwic2hvd0Fzc2lnbkRldmljZXMgPSAhc2hvd0Fzc2lnbkRldmljZXNcIlxuICAgIFtkaXNhYmxlZF09XCJzaG91bGREaXNhYmxlQXNzaWduRGV2aWNlc1wiXG4gID5cbiAgICA8aSBjOHlJY29uPVwicGx1cy1jaXJjbGVcIiBjbGFzcz1cIm0tci00XCI+PC9pPlxuICAgIDxzcGFuIHRyYW5zbGF0ZT5Bc3NpZ24gZGV2aWNlczwvc3Bhbj5cbiAgPC9idXR0b24+XG48L2M4eS1hY3Rpb24tYmFyLWl0ZW0+XG5cbjxjOHktaGVscCBzcmM9XCIvdXNlcnMtZ3VpZGUvY29ja3BpdC8jbWFuYWdpbmctYXNzZXRzXCI+PC9jOHktaGVscD5cblxuPGRpdlxuICBjbGFzcz1cImNhcmQgY29udGVudC1mdWxscGFnZVwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnY2FyZC0tZ3JpZCBncmlkX19jb2wtLTgtNC0tbWQgZ3JpZF9fcm93LS1maXQtYXV0byc6IHNob3VsZFNob3dBc3NldHNQcm9wZXJ0aWVzLFxuICAgICdkLWZsZXggZC1jb2wnOiAhc2hvdWxkU2hvd0Fzc2V0c1Byb3BlcnRpZXNcbiAgfVwiXG4+XG4gIDxjOHktZ3JvdXAtaW5mb1xuICAgICpuZ0lmPVwibW9kdWxlQ29uZmlnLnNob3dEZXRhaWxzXCJcbiAgICBbZ3JvdXBdPVwiZ3JvdXBcIlxuICAgIChncm91cENoYW5nZSk9XCJncm91cENoYW5nZSgkZXZlbnQpXCJcbiAgICBjbGFzcz1cImdyaWRfX2NvbC0tZnVsbHNwYW5cIlxuICA+PC9jOHktZ3JvdXAtaW5mbz5cbiAgPGM4eS1zdWItYXNzZXRzLWdyaWRcbiAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICBbcGFyZW50LWdyb3VwXT1cImdyb3VwXCJcbiAgICBbZmlsdGVyYWJsZV09XCJmaWx0ZXJhYmxlXCJcbiAgICBbZGlzcGxheU9wdGlvbnNdPVwiZGlzcGxheU9wdGlvbnNcIlxuICAgIFtjb2x1bW5zQ29uZmlnS2V5XT1cIidzdWItYXNzZXRzLWdyaWQnXCJcbiAgICBbYmFzZVF1ZXJ5XT1cIm1vZHVsZUNvbmZpZy5iYXNlUXVlcnlcIlxuICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gID48L2M4eS1zdWItYXNzZXRzLWdyaWQ+XG4gIDxkaXYgY2xhc3M9XCJpbm5lci1zY3JvbGwgYmctbGV2ZWwtMVwiICpuZ0lmPVwic2hvdWxkU2hvd0Fzc2V0c1Byb3BlcnRpZXNcIj5cbiAgICA8Yzh5LWFzc2V0LXByb3BlcnRpZXNcbiAgICAgIFtwcm9wZXJ0aWVzXT1cImN1c3RvbVByb3BlcnRpZXNcIlxuICAgICAgW2Fzc2V0XT1cImdyb3VwXCJcbiAgICAgIChhc3NldENoYW5nZSk9XCJncm91cENoYW5nZSgkZXZlbnQpXCJcbiAgICAgIGNsYXNzPVwiZC1jb250ZW50c1wiXG4gICAgPjwvYzh5LWFzc2V0LXByb3BlcnRpZXM+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgW25nQ2xhc3NdPVwieyBkcmF3ZXJPcGVuOiBzaG93QWRkR3JvdXAgfVwiPlxuICA8ZGl2IGNsYXNzPVwiYm90dG9tLWRyYXdlclwiPlxuICAgIDxjOHktYWRkLWdyb3VwXG4gICAgICBbY3VycmVudEdyb3VwSWRdPVwiY3VycmVudEdyb3VwSWRcIlxuICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICAob25DYW5jZWwpPVwic2hvd0FkZEdyb3VwID0gZmFsc2VcIlxuICAgICAgKm5nSWY9XCJzaG93QWRkR3JvdXBcIlxuICAgID48L2M4eS1hZGQtZ3JvdXA+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgW25nQ2xhc3NdPVwieyBkcmF3ZXJPcGVuOiBzaG93QXNzaWduRGV2aWNlcyB9XCI+XG4gIDxkaXYgY2xhc3M9XCJib3R0b20tZHJhd2VyXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWNvbCBuby1hbGlnbi1pdGVtcyBmaXQtaFwiPlxuICAgICAgPGM4eS1hc3NpZ24tZGV2aWNlc1xuICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICAob25DYW5jZWwpPVwic2hvd0Fzc2lnbkRldmljZXMgPSBmYWxzZVwiXG4gICAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgICBbY3VycmVudEdyb3VwSWRdPVwiY3VycmVudEdyb3VwSWRcIlxuICAgICAgICAob25TaG93Q2hpbGREZXZpY2VzKT1cInNob3dBc3NpZ25DaGlsZERldmljZXMgPSAkZXZlbnRcIlxuICAgICAgICAoc2VsZWN0ZWREZXZpY2UpPVwic2hvd0NoaWxkcmVuRm9yRGV2aWNlID0gJGV2ZW50XCJcbiAgICAgICAgKm5nSWY9XCJzaG93QXNzaWduRGV2aWNlc1wiXG4gICAgICA+PC9jOHktYXNzaWduLWRldmljZXM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgW25nQ2xhc3NdPVwieyBkcmF3ZXJPcGVuOiBzaG93QXNzaWduQ2hpbGREZXZpY2VzIH1cIj5cbiAgPGRpdiBjbGFzcz1cImJvdHRvbS1kcmF3ZXIgbS10LTQwXCI+XG4gICAgPGRpdiBjbGFzcz1cImQtZmxleCBkLWNvbCBuby1hbGlnbi1pdGVtcyBmaXQtaFwiPlxuICAgICAgPGM4eS1hc3NpZ24tY2hpbGQtZGV2aWNlc1xuICAgICAgICAqbmdJZj1cInNob3dBc3NpZ25DaGlsZERldmljZXNcIlxuICAgICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgICAgICAob25DYW5jZWwpPVwic2hvd0Fzc2lnbkNoaWxkRGV2aWNlcyA9IGZhbHNlXCJcbiAgICAgICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgICAgIFtjdXJyZW50R3JvdXBJZF09XCJjdXJyZW50R3JvdXBJZFwiXG4gICAgICAgIFtwYXJlbnREZXZpY2VdPVwic2hvd0NoaWxkcmVuRm9yRGV2aWNlXCJcbiAgICAgID48L2M4eS1hc3NpZ24tY2hpbGQtZGV2aWNlcz5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
81
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViLWFzc2V0cy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zdWItYXNzZXRzL3N1Yi1hc3NldHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vc3ViLWFzc2V0cy9zdWItYXNzZXRzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBcUIsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRWpELE9BQU8sRUFBRSxtQkFBbUIsRUFBa0IsV0FBVyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkYsT0FBTyxFQUFFLGlCQUFpQixFQUFtQixNQUFNLG9CQUFvQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7QUFNeEQsTUFBTSxPQUFPLGtCQUFrQjtJQW9CN0IsWUFDVSxLQUFxQixFQUNyQixnQkFBa0MsRUFDbEMsbUJBQXdDLEVBQ3hDLGtCQUErQixFQUNMLFlBQTZCO1FBSnZELFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUN4Qyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQWE7UUFDTCxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFwQmpFLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFDZixpQkFBWSxHQUFHLEtBQUssQ0FBQztRQUNyQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFFMUIsMkJBQXNCLEdBQUcsS0FBSyxDQUFDO1FBQy9CLFlBQU8sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoRCxlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUM5QiwrQkFBMEIsR0FBRyxLQUFLLENBQUM7UUFDbkMsK0JBQTBCLEdBQUcsS0FBSyxDQUFDO1FBRW5DLHFCQUFnQixHQUFxQixFQUFFLENBQUM7UUFXdEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFO1lBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsS0FBSyxDQUFDLFFBQVE7UUFDWixJQUFJLENBQUMsY0FBYyxHQUFHO1lBQ3BCLE9BQU8sRUFBRSxJQUFJO1lBQ2IsUUFBUSxFQUFFLEtBQUs7WUFDZixVQUFVLEVBQUUsSUFBSTtZQUNoQixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxHQUFHLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7UUFDN0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMscUJBQXFCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FDbEUsQ0FBQyxzQkFBc0IsRUFBRSx1QkFBdUIsQ0FBQyxFQUNqRCxJQUFJLENBQUMsS0FBSyxDQUNYLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQywwQkFBMEIsR0FBRyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzdGLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDcEYsSUFBSSxDQUFDLDBCQUEwQjtZQUM3QixJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXFCO1FBQy9CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN4QixJQUFJLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQzFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7U0FDNUI7SUFDSCxDQUFDOzsrR0F2RVUsa0JBQWtCLDhJQXlCbkIsaUJBQWlCO21HQXpCaEIsa0JBQWtCLHNEQ1ovQiwydUdBMEdBOzJGRDlGYSxrQkFBa0I7a0JBSjlCLFNBQVM7K0JBQ0UsZ0JBQWdCOzswQkE0QnZCLE1BQU07MkJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIEluamVjdCwgT25EZXN0cm95LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IElNYW5hZ2VkT2JqZWN0IH0gZnJvbSAnQGM4eS9jbGllbnQnO1xuaW1wb3J0IHsgQ29udGV4dFJvdXRlU2VydmljZSwgRGlzcGxheU9wdGlvbnMsIFBlcm1pc3Npb25zIH0gZnJvbSAnQGM4eS9uZ3gtY29tcG9uZW50cyc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFNVQl9BU1NFVFNfQ09ORklHLCBTdWJBc3NldHNDb25maWcgfSBmcm9tICcuL3N1Yi1hc3NldHMubW9kZWwnO1xuaW1wb3J0IHsgU3ViQXNzZXRzU2VydmljZSB9IGZyb20gJy4vc3ViLWFzc2V0cy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYzh5LXN1Yi1hc3NldHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vc3ViLWFzc2V0cy5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgU3ViQXNzZXRzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBncm91cDogSU1hbmFnZWRPYmplY3Q7XG4gIGN1cnJlbnRHcm91cElkOiBzdHJpbmc7XG4gIHNob3dDaGlsZHJlbkZvckRldmljZTogSU1hbmFnZWRPYmplY3Q7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHRvZ2dsZSA9IGZhbHNlO1xuICBzaG93QWRkR3JvdXAgPSBmYWxzZTtcbiAgc2hvd0Fzc2lnbkRldmljZXMgPSBmYWxzZTtcbiAgcmVxdWVzdEluUHJvZ3Jlc3M6IGJvb2xlYW47XG4gIHNob3dBc3NpZ25DaGlsZERldmljZXMgPSBmYWxzZTtcbiAgcmVmcmVzaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gIGZpbHRlcmFibGUgPSB0cnVlO1xuICBzaG91bGREaXNhYmxlQWRkR3JvdXAgPSBmYWxzZTtcbiAgc2hvdWxkRGlzYWJsZUFzc2lnbkRldmljZXMgPSBmYWxzZTtcbiAgc2hvdWxkU2hvd0Fzc2V0c1Byb3BlcnRpZXMgPSBmYWxzZTtcbiAgZGlzcGxheU9wdGlvbnM6IERpc3BsYXlPcHRpb25zO1xuICBjdXN0b21Qcm9wZXJ0aWVzOiBJTWFuYWdlZE9iamVjdFtdID0gW107XG5cbiAgcHJpdmF0ZSBkYXRhU3ViOiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByb3V0ZTogQWN0aXZhdGVkUm91dGUsXG4gICAgcHJpdmF0ZSBzdWJBc3NldHNTZXJ2aWNlOiBTdWJBc3NldHNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY29udGV4dFJvdXRlU2VydmljZTogQ29udGV4dFJvdXRlU2VydmljZSxcbiAgICBwcml2YXRlIHBlcm1pc3Npb25zU2VydmljZTogUGVybWlzc2lvbnMsXG4gICAgQEluamVjdChTVUJfQVNTRVRTX0NPTkZJRykgcHVibGljIG1vZHVsZUNvbmZpZzogU3ViQXNzZXRzQ29uZmlnXG4gICkge1xuICAgIHRoaXMuZGF0YVN1YiA9IHRoaXMucm91dGUucGFyZW50LmRhdGEuc3Vic2NyaWJlKCh7IGNvbnRleHREYXRhIH0pID0+IHtcbiAgICAgIHRoaXMuaW5pdChjb250ZXh0RGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmRpc3BsYXlPcHRpb25zID0ge1xuICAgICAgc3RyaXBlZDogdHJ1ZSxcbiAgICAgIGJvcmRlcmVkOiBmYWxzZSxcbiAgICAgIGdyaWRIZWFkZXI6IHRydWUsXG4gICAgICBmaWx0ZXI6IHRydWVcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgaW5pdChjb250ZXh0RGF0YSkge1xuICAgIHRoaXMuZ3JvdXAgPSB7IC4uLmNvbnRleHREYXRhIH07XG4gICAgdGhpcy50aXRsZSA9IHRoaXMuZ3JvdXAubmFtZTtcbiAgICB0aGlzLmN1cnJlbnRHcm91cElkID0gdGhpcy5ncm91cC5pZDtcbiAgICB0aGlzLnNob3VsZERpc2FibGVBZGRHcm91cCA9ICEoYXdhaXQgdGhpcy5wZXJtaXNzaW9uc1NlcnZpY2UuY2FuRWRpdChcbiAgICAgIFsnUk9MRV9JTlZFTlRPUllfQURNSU4nLCAnUk9MRV9JTlZFTlRPUllfQ1JFQVRFJ10sXG4gICAgICB0aGlzLmdyb3VwXG4gICAgKSk7XG4gICAgdGhpcy5zaG91bGREaXNhYmxlQXNzaWduRGV2aWNlcyA9ICEoYXdhaXQgdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmNhbkFzc2lnbkRldmljZSh0aGlzLmdyb3VwKSk7XG4gICAgdGhpcy5jdXN0b21Qcm9wZXJ0aWVzID0gYXdhaXQgdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmdldEN1c3RvbVByb3BlcnRpZXModGhpcy5ncm91cCk7XG4gICAgdGhpcy5zaG91bGRTaG93QXNzZXRzUHJvcGVydGllcyA9XG4gICAgICB0aGlzLm1vZHVsZUNvbmZpZy5zaG93UHJvcGVydGllcyAmJiB0aGlzLmN1c3RvbVByb3BlcnRpZXMubGVuZ3RoID4gMDtcbiAgfVxuXG4gIGdyb3VwQ2hhbmdlKGdyb3VwOiBJTWFuYWdlZE9iamVjdCk6IHZvaWQge1xuICAgIHRoaXMuZ3JvdXAgPSBncm91cDtcbiAgICB0aGlzLnRpdGxlID0gZ3JvdXAubmFtZTtcbiAgICB0aGlzLmNvbnRleHRSb3V0ZVNlcnZpY2Uuc2V0Q29udGV4dCh0aGlzLnJvdXRlLCBncm91cCk7XG4gICAgdGhpcy5jb250ZXh0Um91dGVTZXJ2aWNlLnJlZnJlc2hDb250ZXh0KCk7XG4gICAgdGhpcy5yZWZyZXNoLmVtaXQoKTtcbiAgfVxuXG4gIGlzU21hcnRHcm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJBc3NldHNTZXJ2aWNlLmlzU21hcnRHcm91cCh0aGlzLmdyb3VwKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRhdGFTdWIpIHtcbiAgICAgIHRoaXMuZGF0YVN1Yi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufVxuIiwiPGM4eS10aXRsZT5cbiAge3sgdGl0bGUgfX1cbjwvYzh5LXRpdGxlPlxuXG48Yzh5LWFjdGlvbi1iYXItaXRlbSBbcGxhY2VtZW50XT1cIidyaWdodCdcIiAqbmdJZj1cIiFpc1NtYXJ0R3JvdXAoKSAmJiBtb2R1bGVDb25maWcuc2hvd0FkZEdyb3VwQnRuXCI+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cImJ0biBidG4tbGlua1wiXG4gICAgdGl0bGU9XCJ7eyAnQWRkIGdyb3VwJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKGNsaWNrKT1cInNob3dBZGRHcm91cCA9ICFzaG93QWRkR3JvdXBcIlxuICAgIFtkaXNhYmxlZF09XCJzaG91bGREaXNhYmxlQWRkR3JvdXBcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCIgY2xhc3M9XCJtLXItNFwiPjwvaT5cbiAgICA8c3BhbiB0cmFuc2xhdGU+QWRkIGdyb3VwPC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvYzh5LWFjdGlvbi1iYXItaXRlbT5cblxuPGM4eS1hY3Rpb24tYmFyLWl0ZW1cbiAgW3BsYWNlbWVudF09XCIncmlnaHQnXCJcbiAgKm5nSWY9XCIhaXNTbWFydEdyb3VwKCkgJiYgbW9kdWxlQ29uZmlnLnNob3dBc3NpZ25EZXZpY2VCdG5cIlxuPlxuICA8YnV0dG9uXG4gICAgY2xhc3M9XCJidG4gYnRuLWxpbmtcIlxuICAgIHRpdGxlPVwie3sgJ0Fzc2lnbiBkZXZpY2VzJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgKGNsaWNrKT1cInNob3dBc3NpZ25EZXZpY2VzID0gIXNob3dBc3NpZ25EZXZpY2VzXCJcbiAgICBbZGlzYWJsZWRdPVwic2hvdWxkRGlzYWJsZUFzc2lnbkRldmljZXNcIlxuICA+XG4gICAgPGkgYzh5SWNvbj1cInBsdXMtY2lyY2xlXCIgY2xhc3M9XCJtLXItNFwiPjwvaT5cbiAgICA8c3BhbiB0cmFuc2xhdGU+QXNzaWduIGRldmljZXM8L3NwYW4+XG4gIDwvYnV0dG9uPlxuPC9jOHktYWN0aW9uLWJhci1pdGVtPlxuXG48Yzh5LWhlbHAgc3JjPVwiL3VzZXJzLWd1aWRlL2NvY2twaXQvI21hbmFnaW5nLWFzc2V0c1wiPjwvYzh5LWhlbHA+XG5cbjxkaXZcbiAgY2xhc3M9XCJjYXJkIGNvbnRlbnQtZnVsbHBhZ2VcIlxuICBbbmdDbGFzc109XCJ7XG4gICAgJ2NhcmQtLWdyaWQgZ3JpZF9fY29sLS04LTQtLW1kIGdyaWRfX3Jvdy0tZml0LWF1dG8nOiBzaG91bGRTaG93QXNzZXRzUHJvcGVydGllcyxcbiAgICAnZC1mbGV4IGQtY29sJzogIXNob3VsZFNob3dBc3NldHNQcm9wZXJ0aWVzXG4gIH1cIlxuPlxuICA8Yzh5LWdyb3VwLWluZm9cbiAgICAqbmdJZj1cIm1vZHVsZUNvbmZpZy5zaG93RGV0YWlsc1wiXG4gICAgW2dyb3VwXT1cImdyb3VwXCJcbiAgICAoZ3JvdXBDaGFuZ2UpPVwiZ3JvdXBDaGFuZ2UoJGV2ZW50KVwiXG4gICAgY2xhc3M9XCJncmlkX19jb2wtLWZ1bGxzcGFuXCJcbiAgPjwvYzh5LWdyb3VwLWluZm8+XG4gIDxjOHktc3ViLWFzc2V0cy1ncmlkXG4gICAgW3JlZnJlc2hdPVwicmVmcmVzaFwiXG4gICAgW3BhcmVudC1ncm91cF09XCJncm91cFwiXG4gICAgW2ZpbHRlcmFibGVdPVwiZmlsdGVyYWJsZVwiXG4gICAgW2Rpc3BsYXlPcHRpb25zXT1cImRpc3BsYXlPcHRpb25zXCJcbiAgICBbY29sdW1uc0NvbmZpZ0tleV09XCInc3ViLWFzc2V0cy1ncmlkJ1wiXG4gICAgW2Jhc2VRdWVyeV09XCJtb2R1bGVDb25maWcuYmFzZVF1ZXJ5XCJcbiAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICA+PC9jOHktc3ViLWFzc2V0cy1ncmlkPlxuICA8ZGl2IGNsYXNzPVwiaW5uZXItc2Nyb2xsIGJnLWxldmVsLTFcIiAqbmdJZj1cInNob3VsZFNob3dBc3NldHNQcm9wZXJ0aWVzXCI+XG4gICAgPGM4eS1hc3NldC1wcm9wZXJ0aWVzXG4gICAgICBbcHJvcGVydGllc109XCJjdXN0b21Qcm9wZXJ0aWVzXCJcbiAgICAgIFthc3NldF09XCJncm91cFwiXG4gICAgICAoYXNzZXRDaGFuZ2UpPVwiZ3JvdXBDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICBjbGFzcz1cImQtY29udGVudHNcIlxuICAgID48L2M4eS1hc3NldC1wcm9wZXJ0aWVzPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IFtuZ0NsYXNzXT1cInsgZHJhd2VyT3Blbjogc2hvd0FkZEdyb3VwIH1cIj5cbiAgPGRpdiBjbGFzcz1cImJvdHRvbS1kcmF3ZXJcIj5cbiAgICA8Yzh5LWFkZC1ncm91cFxuICAgICAgW2N1cnJlbnRHcm91cElkXT1cImN1cnJlbnRHcm91cElkXCJcbiAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgKG9uQ2FuY2VsKT1cInNob3dBZGRHcm91cCA9IGZhbHNlXCJcbiAgICAgICpuZ0lmPVwic2hvd0FkZEdyb3VwXCJcbiAgICA+PC9jOHktYWRkLWdyb3VwPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IFtuZ0NsYXNzXT1cInsgZHJhd2VyT3Blbjogc2hvd0Fzc2lnbkRldmljZXMgfVwiPlxuICA8ZGl2IGNsYXNzPVwiYm90dG9tLWRyYXdlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZC1jb2wgbm8tYWxpZ24taXRlbXMgZml0LWhcIj5cbiAgICAgIDxjOHktYXNzaWduLWRldmljZXNcbiAgICAgICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAgICAgKG9uQ2FuY2VsKT1cInNob3dBc3NpZ25EZXZpY2VzID0gZmFsc2VcIlxuICAgICAgICBbcmVmcmVzaF09XCJyZWZyZXNoXCJcbiAgICAgICAgW2N1cnJlbnRHcm91cElkXT1cImN1cnJlbnRHcm91cElkXCJcbiAgICAgICAgKG9uU2hvd0NoaWxkRGV2aWNlcyk9XCJzaG93QXNzaWduQ2hpbGREZXZpY2VzID0gJGV2ZW50XCJcbiAgICAgICAgKHNlbGVjdGVkRGV2aWNlKT1cInNob3dDaGlsZHJlbkZvckRldmljZSA9ICRldmVudFwiXG4gICAgICAgICpuZ0lmPVwic2hvd0Fzc2lnbkRldmljZXNcIlxuICAgICAgPjwvYzh5LWFzc2lnbi1kZXZpY2VzPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IFtuZ0NsYXNzXT1cInsgZHJhd2VyT3Blbjogc2hvd0Fzc2lnbkNoaWxkRGV2aWNlcyB9XCI+XG4gIDxkaXYgY2xhc3M9XCJib3R0b20tZHJhd2VyIG0tdC00MFwiPlxuICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZC1jb2wgbm8tYWxpZ24taXRlbXMgZml0LWhcIj5cbiAgICAgIDxjOHktYXNzaWduLWNoaWxkLWRldmljZXNcbiAgICAgICAgKm5nSWY9XCJzaG93QXNzaWduQ2hpbGREZXZpY2VzXCJcbiAgICAgICAgY2xhc3M9XCJkLWNvbnRlbnRzXCJcbiAgICAgICAgKG9uQ2FuY2VsKT1cInNob3dBc3NpZ25DaGlsZERldmljZXMgPSBmYWxzZVwiXG4gICAgICAgIFtyZWZyZXNoXT1cInJlZnJlc2hcIlxuICAgICAgICBbY3VycmVudEdyb3VwSWRdPVwiY3VycmVudEdyb3VwSWRcIlxuICAgICAgICBbcGFyZW50RGV2aWNlXT1cInNob3dDaGlsZHJlbkZvckRldmljZVwiXG4gICAgICA+PC9jOHktYXNzaWduLWNoaWxkLWRldmljZXM+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=