@coralogix/rum-cli 1.1.38 → 1.1.41

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 (82) hide show
  1. package/README.md +1 -0
  2. package/api/base/base.api.ts +27 -30
  3. package/api/source-maps/source-maps.api.ts +78 -0
  4. package/cli/commands/source-maps/upload-source-maps-command.ts +3 -2
  5. package/consts/consts.ts +1 -0
  6. package/dist/api/base/base.api.d.ts +9 -7
  7. package/dist/api/base/base.api.js +14 -19
  8. package/dist/api/source-maps/source-maps.api.d.ts +5 -2
  9. package/dist/api/source-maps/source-maps.api.js +57 -3
  10. package/dist/cli/commands/source-maps/upload-source-maps-command.js +4 -3
  11. package/dist/consts/consts.js +3 -2
  12. package/dist/grpc-client/grpc-client-factory.d.ts +72 -0
  13. package/dist/models/source-maps-commands.model.d.ts +1 -0
  14. package/dist/models/source-maps-commands.model.js +1 -1
  15. package/dist/proto-models/com/coralogix/blobset/v2/blobset_query_service.d.ts +150 -0
  16. package/dist/proto-models/com/coralogix/blobset/v2/blobset_query_service.js +29 -1
  17. package/dist/proto-models/com/coralogix/blobset/v2/case_file.d.ts +36 -0
  18. package/dist/proto-models/com/coralogix/blobset/v2/case_file.js +161 -0
  19. package/dist/proto-models/com/coralogix/blobset/v2/dsym.d.ts +1 -0
  20. package/dist/proto-models/com/coralogix/blobset/v2/dsym.js +33 -3
  21. package/dist/proto-models/com/coralogix/blobset/v2/entity_metadata.d.ts +31 -0
  22. package/dist/proto-models/com/coralogix/blobset/v2/entity_metadata.js +215 -7
  23. package/dist/proto-models/com/coralogix/blobset/v2/entity_type.d.ts +3 -1
  24. package/dist/proto-models/com/coralogix/blobset/v2/entity_type.js +13 -1
  25. package/dist/proto-models/com/coralogix/blobset/v2/investigation_file.d.ts +36 -0
  26. package/dist/proto-models/com/coralogix/blobset/v2/investigation_file.js +161 -0
  27. package/dist/proto-models/com/coralogix/blobset/v2/proguard.d.ts +68 -0
  28. package/dist/proto-models/com/coralogix/blobset/v2/proguard.js +400 -0
  29. package/dist/proto-models/com/coralogix/rum/v2/application_releases.d.ts +38 -0
  30. package/dist/proto-models/com/coralogix/rum/v2/application_releases.js +180 -0
  31. package/dist/proto-models/com/coralogix/rum/v2/merge_error.d.ts +38 -0
  32. package/dist/proto-models/com/coralogix/rum/v2/merge_error.js +171 -0
  33. package/dist/proto-models/com/coralogix/rum/v2/release_entity_metadata.d.ts +4 -0
  34. package/dist/proto-models/com/coralogix/rum/v2/release_entity_metadata.js +93 -9
  35. package/dist/proto-models/com/coralogix/rum/v2/rum_merge_erros_service.d.ts +197 -0
  36. package/dist/proto-models/com/coralogix/rum/v2/rum_merge_erros_service.js +478 -0
  37. package/dist/proto-models/com/coralogix/rum/v2/rum_service.d.ts +107 -0
  38. package/dist/proto-models/com/coralogix/rum/v2/rum_service.js +385 -2
  39. package/dist/proto-models/com/coralogix/rum/v2/rum_source_map_service.d.ts +46 -0
  40. package/dist/proto-models/com/coralogix/rum/v2/rum_source_map_service.js +142 -2
  41. package/dist/proto-models/com/coralogix/rum/v2/saved_filter.d.ts +4 -1
  42. package/dist/proto-models/com/coralogix/rum/v2/saved_filter.js +19 -1
  43. package/dist/proto-models/com/coralogix/rum/v2/template.d.ts +2 -0
  44. package/dist/proto-models/com/coralogix/rum/v2/template.js +31 -3
  45. package/dist/services/source-maps/source-maps.service.d.ts +1 -0
  46. package/dist/services/source-maps/source-maps.service.js +23 -1
  47. package/models/source-maps-commands.model.ts +1 -0
  48. package/package.json +1 -1
  49. package/proto-models/com/coralogix/blobset/v2/blobset_query_service.ts +28 -0
  50. package/proto-models/com/coralogix/blobset/v2/case_file.ts +188 -0
  51. package/proto-models/com/coralogix/blobset/v2/dsym.ts +35 -1
  52. package/proto-models/com/coralogix/blobset/v2/entity_metadata.ts +243 -1
  53. package/proto-models/com/coralogix/blobset/v2/entity_type.ts +12 -0
  54. package/proto-models/com/coralogix/blobset/v2/investigation_file.ts +188 -0
  55. package/proto-models/com/coralogix/blobset/v2/proguard.ts +466 -0
  56. package/proto-models/com/coralogix/rum/v2/application_releases.ts +213 -0
  57. package/proto-models/com/coralogix/rum/v2/merge_error.ts +201 -0
  58. package/proto-models/com/coralogix/rum/v2/release_entity_metadata.ts +96 -4
  59. package/proto-models/com/coralogix/rum/v2/rum_merge_erros_service.ts +566 -0
  60. package/proto-models/com/coralogix/rum/v2/rum_service.ts +462 -0
  61. package/proto-models/com/coralogix/rum/v2/rum_source_map_service.ts +164 -0
  62. package/proto-models/com/coralogix/rum/v2/saved_filter.ts +18 -0
  63. package/proto-models/com/coralogix/rum/v2/template.ts +33 -1
  64. package/protofetch.lock +4 -4
  65. package/protofetch.toml +2 -2
  66. package/protos/com/coralogix/blobset/v2/blobset_query_service.proto +7 -0
  67. package/protos/com/coralogix/blobset/v2/case_file.proto +12 -0
  68. package/protos/com/coralogix/blobset/v2/dsym.proto +1 -0
  69. package/protos/com/coralogix/blobset/v2/entity_metadata.proto +14 -1
  70. package/protos/com/coralogix/blobset/v2/entity_type.proto +3 -1
  71. package/protos/com/coralogix/blobset/v2/investigation_file.proto +12 -0
  72. package/protos/com/coralogix/blobset/v2/proguard.proto +30 -0
  73. package/protos/com/coralogix/rum/v2/application_releases.proto +14 -0
  74. package/protos/com/coralogix/rum/v2/merge_error.proto +13 -0
  75. package/protos/com/coralogix/rum/v2/release_entity_metadata.proto +7 -0
  76. package/protos/com/coralogix/rum/v2/rum_merge_erros_service.proto +42 -0
  77. package/protos/com/coralogix/rum/v2/rum_service.proto +23 -0
  78. package/protos/com/coralogix/rum/v2/rum_source_map_service.proto +11 -0
  79. package/protos/com/coralogix/rum/v2/saved_filter.proto +3 -0
  80. package/protos/com/coralogix/rum/v2/template.proto +2 -0
  81. package/protoset.bin +0 -0
  82. package/services/source-maps/source-maps.service.ts +26 -0
@@ -18,6 +18,9 @@ var Page;
18
18
  Page[Page["PAGE_ERROR_TRACKING"] = 1] = "PAGE_ERROR_TRACKING";
19
19
  Page[Page["PAGE_USER_SESSION"] = 2] = "PAGE_USER_SESSION";
20
20
  Page[Page["PAGE_WEB_VITALS"] = 3] = "PAGE_WEB_VITALS";
21
+ Page[Page["PAGE_NETWORK_PERFORMANCE"] = 4] = "PAGE_NETWORK_PERFORMANCE";
22
+ Page[Page["PAGE_MEASUREMENTS"] = 5] = "PAGE_MEASUREMENTS";
23
+ Page[Page["PAGE_VERSIONS"] = 6] = "PAGE_VERSIONS";
21
24
  })(Page = exports.Page || (exports.Page = {}));
22
25
  function pageFromJSON(object) {
23
26
  switch (object) {
@@ -33,6 +36,15 @@ function pageFromJSON(object) {
33
36
  case 3:
34
37
  case "PAGE_WEB_VITALS":
35
38
  return Page.PAGE_WEB_VITALS;
39
+ case 4:
40
+ case "PAGE_NETWORK_PERFORMANCE":
41
+ return Page.PAGE_NETWORK_PERFORMANCE;
42
+ case 5:
43
+ case "PAGE_MEASUREMENTS":
44
+ return Page.PAGE_MEASUREMENTS;
45
+ case 6:
46
+ case "PAGE_VERSIONS":
47
+ return Page.PAGE_VERSIONS;
36
48
  default:
37
49
  throw new globalThis.Error("Unrecognized enum value " + object + " for enum Page");
38
50
  }
@@ -48,6 +60,12 @@ function pageToJSON(object) {
48
60
  return "PAGE_USER_SESSION";
49
61
  case Page.PAGE_WEB_VITALS:
50
62
  return "PAGE_WEB_VITALS";
63
+ case Page.PAGE_NETWORK_PERFORMANCE:
64
+ return "PAGE_NETWORK_PERFORMANCE";
65
+ case Page.PAGE_MEASUREMENTS:
66
+ return "PAGE_MEASUREMENTS";
67
+ case Page.PAGE_VERSIONS:
68
+ return "PAGE_VERSIONS";
51
69
  default:
52
70
  throw new globalThis.Error("Unrecognized enum value " + object + " for enum Page");
53
71
  }
@@ -269,4 +287,4 @@ exports.SavedFilter = {
269
287
  function isSet(value) {
270
288
  return value !== null && value !== undefined;
271
289
  }
272
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWRfZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvdG8tbW9kZWxzL2NvbS9jb3JhbG9naXgvcnVtL3YyL3NhdmVkX2ZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsc0RBQXNEO0FBQ3RELFlBQVk7QUFDWixrQ0FBa0M7QUFDbEMsaUNBQWlDO0FBQ2pDLGtEQUFrRDs7Ozs7O0FBRWxELG9CQUFvQjtBQUNwQixpRUFBcUM7QUFFeEIsUUFBQSxlQUFlLEdBQUcsc0JBQXNCLENBQUM7QUFFdEQsSUFBWSxJQUtYO0FBTEQsV0FBWSxJQUFJO0lBQ2QsdURBQW9CLENBQUE7SUFDcEIsNkRBQXVCLENBQUE7SUFDdkIseURBQXFCLENBQUE7SUFDckIscURBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLElBQUksR0FBSixZQUFJLEtBQUosWUFBSSxRQUtmO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLE1BQVc7SUFDdEMsUUFBUSxNQUFNLEVBQUU7UUFDZCxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssa0JBQWtCO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyxxQkFBcUI7WUFDeEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDbEMsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLG1CQUFtQjtZQUN0QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNoQyxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssaUJBQWlCO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM5QjtZQUNFLE1BQU0sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLDBCQUEwQixHQUFHLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO0tBQ3RGO0FBQ0gsQ0FBQztBQWpCRCxvQ0FpQkM7QUFFRCxTQUFnQixVQUFVLENBQUMsTUFBWTtJQUNyQyxRQUFRLE1BQU0sRUFBRTtRQUNkLEtBQUssSUFBSSxDQUFDLGdCQUFnQjtZQUN4QixPQUFPLGtCQUFrQixDQUFDO1FBQzVCLEtBQUssSUFBSSxDQUFDLG1CQUFtQjtZQUMzQixPQUFPLHFCQUFxQixDQUFDO1FBQy9CLEtBQUssSUFBSSxDQUFDLGlCQUFpQjtZQUN6QixPQUFPLG1CQUFtQixDQUFDO1FBQzdCLEtBQUssSUFBSSxDQUFDLGVBQWU7WUFDdkIsT0FBTyxpQkFBaUIsQ0FBQztRQUMzQjtZQUNFLE1BQU0sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLDBCQUEwQixHQUFHLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO0tBQ3RGO0FBQ0gsQ0FBQztBQWJELGdDQWFDO0FBRUQsSUFBWSxxQkFJWDtBQUpELFdBQVkscUJBQXFCO0lBQy9CLCtIQUF1QyxDQUFBO0lBQ3ZDLHVIQUFtQyxDQUFBO0lBQ25DLHFIQUFrQyxDQUFBO0FBQ3BDLENBQUMsRUFKVyxxQkFBcUIsR0FBckIsNkJBQXFCLEtBQXJCLDZCQUFxQixRQUloQztBQUVELFNBQWdCLDZCQUE2QixDQUFDLE1BQVc7SUFDdkQsUUFBUSxNQUFNLEVBQUU7UUFDZCxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUsscUNBQXFDO1lBQ3hDLE9BQU8scUJBQXFCLENBQUMsbUNBQW1DLENBQUM7UUFDbkUsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLGlDQUFpQztZQUNwQyxPQUFPLHFCQUFxQixDQUFDLCtCQUErQixDQUFDO1FBQy9ELEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyxnQ0FBZ0M7WUFDbkMsT0FBTyxxQkFBcUIsQ0FBQyw4QkFBOEIsQ0FBQztRQUM5RDtZQUNFLE1BQU0sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLDBCQUEwQixHQUFHLE1BQU0sR0FBRyxpQ0FBaUMsQ0FBQyxDQUFDO0tBQ3ZHO0FBQ0gsQ0FBQztBQWRELHNFQWNDO0FBRUQsU0FBZ0IsMkJBQTJCLENBQUMsTUFBNkI7SUFDdkUsUUFBUSxNQUFNLEVBQUU7UUFDZCxLQUFLLHFCQUFxQixDQUFDLG1DQUFtQztZQUM1RCxPQUFPLHFDQUFxQyxDQUFDO1FBQy9DLEtBQUsscUJBQXFCLENBQUMsK0JBQStCO1lBQ3hELE9BQU8saUNBQWlDLENBQUM7UUFDM0MsS0FBSyxxQkFBcUIsQ0FBQyw4QkFBOEI7WUFDdkQsT0FBTyxnQ0FBZ0MsQ0FBQztRQUMxQztZQUNFLE1BQU0sSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLDBCQUEwQixHQUFHLE1BQU0sR0FBRyxpQ0FBaUMsQ0FBQyxDQUFDO0tBQ3ZHO0FBQ0gsQ0FBQztBQVhELGtFQVdDO0FBZUQsU0FBUyxvQ0FBb0M7SUFDM0MsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7QUFDdkMsQ0FBQztBQUVZLFFBQUEsMEJBQTBCLEdBQUc7SUFDeEMsTUFBTSxDQUFDLE9BQW1DLEVBQUUsU0FBcUIsaUJBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFO1FBQ2xGLElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxFQUFFLEVBQUU7WUFDdkIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxPQUFPLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNyQixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDdEM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFO1lBQ3RCLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBOEIsRUFBRSxNQUFlO1FBQ3BELE1BQU0sTUFBTSxHQUFHLEtBQUssWUFBWSxpQkFBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxpQkFBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUUsSUFBSSxHQUFHLEdBQUcsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUM7UUFDbEUsTUFBTSxPQUFPLEdBQUcsb0NBQW9DLEVBQUUsQ0FBQztRQUN2RCxPQUFPLE1BQU0sQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFO1lBQ3ZCLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUM1QixRQUFRLEdBQUcsS0FBSyxDQUFDLEVBQUU7Z0JBQ2pCLEtBQUssQ0FBQztvQkFDSixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7d0JBQ2QsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztvQkFDL0IsU0FBUztnQkFDWCxLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLEVBQUUsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQzdCLFNBQVM7Z0JBQ1gsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBUyxDQUFDO29CQUNyQyxTQUFTO2FBQ1o7WUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNoQyxNQUFNO2FBQ1A7WUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBVztRQUNsQixPQUFPO1lBQ0wsSUFBSSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzlELEVBQUUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN4RCxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6RCxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFtQztRQUN4QyxNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7UUFDcEIsSUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLEVBQUUsRUFBRTtZQUN2QixHQUFHLENBQUMsSUFBSSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDekI7UUFDRCxJQUFJLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQ3JCLEdBQUcsQ0FBQyxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUNyQjtRQUNELElBQUksT0FBTyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7WUFDdEIsR0FBRyxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3JDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQThDO1FBQ25ELE9BQU8sa0NBQTBCLENBQUMsV0FBVyxDQUFDLElBQUksYUFBSixJQUFJLGNBQUosSUFBSSxHQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFDRCxXQUFXLENBQUMsTUFBK0M7O1FBQ3pELE1BQU0sT0FBTyxHQUFHLG9DQUFvQyxFQUFFLENBQUM7UUFDdkQsT0FBTyxDQUFDLElBQUksR0FBRyxNQUFBLE1BQU0sQ0FBQyxJQUFJLG1DQUFJLEVBQUUsQ0FBQztRQUNqQyxPQUFPLENBQUMsRUFBRSxHQUFHLE1BQUEsTUFBTSxDQUFDLEVBQUUsbUNBQUksRUFBRSxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsTUFBQSxNQUFNLENBQUMsSUFBSSxtQ0FBSSxDQUFDLENBQUM7UUFDaEMsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQztDQUNGLENBQUM7QUFFRixTQUFTLHFCQUFxQjtJQUM1QixPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQzdGLENBQUM7QUFFWSxRQUFBLFdBQVcsR0FBRztJQUN6QixNQUFNLENBQUMsT0FBb0IsRUFBRSxTQUFxQixpQkFBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUU7UUFDbkUsSUFBSSxPQUFPLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRTtZQUNyQyxrQ0FBMEIsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDM0Y7UUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssS0FBSyxFQUFFO1lBQ2hDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM1QztRQUNELElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDcEMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzlDO1FBQ0QsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLENBQUMsRUFBRTtZQUM1QixNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDN0M7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQThCLEVBQUUsTUFBZTtRQUNwRCxNQUFNLE1BQU0sR0FBRyxLQUFLLFlBQVksaUJBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsaUJBQUcsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlFLElBQUksR0FBRyxHQUFHLE1BQU0sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ2xFLE1BQU0sT0FBTyxHQUFHLHFCQUFxQixFQUFFLENBQUM7UUFDeEMsT0FBTyxNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRTtZQUN2QixNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDNUIsUUFBUSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNqQixLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLFdBQVcsR0FBRyxrQ0FBMEIsQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO29CQUNqRixTQUFTO2dCQUNYLEtBQUssQ0FBQztvQkFDSixJQUFJLEdBQUcsS0FBSyxFQUFFLEVBQUU7d0JBQ2QsTUFBTTtxQkFDUDtvQkFFRCxPQUFPLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDbkMsU0FBUztnQkFDWCxLQUFLLENBQUM7b0JBQ0osSUFBSSxHQUFHLEtBQUssRUFBRSxFQUFFO3dCQUNkLE1BQU07cUJBQ1A7b0JBRUQsT0FBTyxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7b0JBQ3JDLFNBQVM7Z0JBQ1gsS0FBSyxDQUFDO29CQUNKLElBQUksR0FBRyxLQUFLLEVBQUUsRUFBRTt3QkFDZCxNQUFNO3FCQUNQO29CQUVELE9BQU8sQ0FBQyxVQUFVLEdBQUcsTUFBTSxDQUFDLEtBQUssRUFBUyxDQUFDO29CQUMzQyxTQUFTO2FBQ1o7WUFDRCxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNoQyxNQUFNO2FBQ1A7WUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMxQjtRQUNELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFRCxRQUFRLENBQUMsTUFBVztRQUNsQixPQUFPO1lBQ0wsV0FBVyxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtDQUEwQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDNUcsVUFBVSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLO1lBQ3BGLFVBQVUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUN2RixVQUFVLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsNkJBQTZCLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVGLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQW9CO1FBQ3pCLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztRQUNwQixJQUFJLE9BQU8sQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ3JDLEdBQUcsQ0FBQyxXQUFXLEdBQUcsa0NBQTBCLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUMxRTtRQUNELElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxLQUFLLEVBQUU7WUFDaEMsR0FBRyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1NBQ3JDO1FBQ0QsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUNwQyxHQUFHLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQUM7U0FDckM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxVQUFVLEtBQUssQ0FBQyxFQUFFO1lBQzVCLEdBQUcsQ0FBQyxVQUFVLEdBQUcsMkJBQTJCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQStCO1FBQ3BDLE9BQU8sbUJBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxhQUFKLElBQUksY0FBSixJQUFJLEdBQUksRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELFdBQVcsQ0FBQyxNQUFnQzs7UUFDMUMsTUFBTSxPQUFPLEdBQUcscUJBQXFCLEVBQUUsQ0FBQztRQUN4QyxPQUFPLENBQUMsV0FBVyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUM7WUFDckYsQ0FBQyxDQUFDLGtDQUEwQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQzVELENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDZCxPQUFPLENBQUMsVUFBVSxHQUFHLE1BQUEsTUFBTSxDQUFDLFVBQVUsbUNBQUksS0FBSyxDQUFDO1FBQ2hELE9BQU8sQ0FBQyxVQUFVLEdBQUcsTUFBQSxNQUFNLENBQUMsVUFBVSxtQ0FBSSxTQUFTLENBQUM7UUFDcEQsT0FBTyxDQUFDLFVBQVUsR0FBRyxNQUFBLE1BQU0sQ0FBQyxVQUFVLG1DQUFJLENBQUMsQ0FBQztRQUM1QyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YsQ0FBQztBQVdGLFNBQVMsS0FBSyxDQUFDLEtBQVU7SUFDdkIsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHByb3RvYy1nZW4tdHNfcHJvdG8uIERPIE5PVCBFRElULlxuLy8gdmVyc2lvbnM6XG4vLyAgIHByb3RvYy1nZW4tdHNfcHJvdG8gIHYxLjE4MS4xXG4vLyAgIHByb3RvYyAgICAgICAgICAgICAgIHYzLjE5LjFcbi8vIHNvdXJjZTogY29tL2NvcmFsb2dpeC9ydW0vdjIvc2F2ZWRfZmlsdGVyLnByb3RvXG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgX20wIGZyb20gXCJwcm90b2J1ZmpzL21pbmltYWxcIjtcblxuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9IFwiY29tLmNvcmFsb2dpeC5ydW0udjJcIjtcblxuZXhwb3J0IGVudW0gUGFnZSB7XG4gIFBBR0VfVU5TUEVDSUZJRUQgPSAwLFxuICBQQUdFX0VSUk9SX1RSQUNLSU5HID0gMSxcbiAgUEFHRV9VU0VSX1NFU1NJT04gPSAyLFxuICBQQUdFX1dFQl9WSVRBTFMgPSAzLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFnZUZyb21KU09OKG9iamVjdDogYW55KTogUGFnZSB7XG4gIHN3aXRjaCAob2JqZWN0KSB7XG4gICAgY2FzZSAwOlxuICAgIGNhc2UgXCJQQUdFX1VOU1BFQ0lGSUVEXCI6XG4gICAgICByZXR1cm4gUGFnZS5QQUdFX1VOU1BFQ0lGSUVEO1xuICAgIGNhc2UgMTpcbiAgICBjYXNlIFwiUEFHRV9FUlJPUl9UUkFDS0lOR1wiOlxuICAgICAgcmV0dXJuIFBhZ2UuUEFHRV9FUlJPUl9UUkFDS0lORztcbiAgICBjYXNlIDI6XG4gICAgY2FzZSBcIlBBR0VfVVNFUl9TRVNTSU9OXCI6XG4gICAgICByZXR1cm4gUGFnZS5QQUdFX1VTRVJfU0VTU0lPTjtcbiAgICBjYXNlIDM6XG4gICAgY2FzZSBcIlBBR0VfV0VCX1ZJVEFMU1wiOlxuICAgICAgcmV0dXJuIFBhZ2UuUEFHRV9XRUJfVklUQUxTO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIlVucmVjb2duaXplZCBlbnVtIHZhbHVlIFwiICsgb2JqZWN0ICsgXCIgZm9yIGVudW0gUGFnZVwiKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFnZVRvSlNPTihvYmplY3Q6IFBhZ2UpOiBzdHJpbmcge1xuICBzd2l0Y2ggKG9iamVjdCkge1xuICAgIGNhc2UgUGFnZS5QQUdFX1VOU1BFQ0lGSUVEOlxuICAgICAgcmV0dXJuIFwiUEFHRV9VTlNQRUNJRklFRFwiO1xuICAgIGNhc2UgUGFnZS5QQUdFX0VSUk9SX1RSQUNLSU5HOlxuICAgICAgcmV0dXJuIFwiUEFHRV9FUlJPUl9UUkFDS0lOR1wiO1xuICAgIGNhc2UgUGFnZS5QQUdFX1VTRVJfU0VTU0lPTjpcbiAgICAgIHJldHVybiBcIlBBR0VfVVNFUl9TRVNTSU9OXCI7XG4gICAgY2FzZSBQYWdlLlBBR0VfV0VCX1ZJVEFMUzpcbiAgICAgIHJldHVybiBcIlBBR0VfV0VCX1ZJVEFMU1wiO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIlVucmVjb2duaXplZCBlbnVtIHZhbHVlIFwiICsgb2JqZWN0ICsgXCIgZm9yIGVudW0gUGFnZVwiKTtcbiAgfVxufVxuXG5leHBvcnQgZW51bSBTYXZlZEZpbHRlclBlcm1pc3Npb24ge1xuICBTQVZFRF9GSUxURVJfUEVSTUlTU0lPTl9VTlNQRUNJRklFRCA9IDAsXG4gIFNBVkVEX0ZJTFRFUl9QRVJNSVNTSU9OX1BSSVZBVEUgPSAxLFxuICBTQVZFRF9GSUxURVJfUEVSTUlTU0lPTl9QVUJMSUMgPSAyLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2F2ZWRGaWx0ZXJQZXJtaXNzaW9uRnJvbUpTT04ob2JqZWN0OiBhbnkpOiBTYXZlZEZpbHRlclBlcm1pc3Npb24ge1xuICBzd2l0Y2ggKG9iamVjdCkge1xuICAgIGNhc2UgMDpcbiAgICBjYXNlIFwiU0FWRURfRklMVEVSX1BFUk1JU1NJT05fVU5TUEVDSUZJRURcIjpcbiAgICAgIHJldHVybiBTYXZlZEZpbHRlclBlcm1pc3Npb24uU0FWRURfRklMVEVSX1BFUk1JU1NJT05fVU5TUEVDSUZJRUQ7XG4gICAgY2FzZSAxOlxuICAgIGNhc2UgXCJTQVZFRF9GSUxURVJfUEVSTUlTU0lPTl9QUklWQVRFXCI6XG4gICAgICByZXR1cm4gU2F2ZWRGaWx0ZXJQZXJtaXNzaW9uLlNBVkVEX0ZJTFRFUl9QRVJNSVNTSU9OX1BSSVZBVEU7XG4gICAgY2FzZSAyOlxuICAgIGNhc2UgXCJTQVZFRF9GSUxURVJfUEVSTUlTU0lPTl9QVUJMSUNcIjpcbiAgICAgIHJldHVybiBTYXZlZEZpbHRlclBlcm1pc3Npb24uU0FWRURfRklMVEVSX1BFUk1JU1NJT05fUFVCTElDO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIlVucmVjb2duaXplZCBlbnVtIHZhbHVlIFwiICsgb2JqZWN0ICsgXCIgZm9yIGVudW0gU2F2ZWRGaWx0ZXJQZXJtaXNzaW9uXCIpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXZlZEZpbHRlclBlcm1pc3Npb25Ub0pTT04ob2JqZWN0OiBTYXZlZEZpbHRlclBlcm1pc3Npb24pOiBzdHJpbmcge1xuICBzd2l0Y2ggKG9iamVjdCkge1xuICAgIGNhc2UgU2F2ZWRGaWx0ZXJQZXJtaXNzaW9uLlNBVkVEX0ZJTFRFUl9QRVJNSVNTSU9OX1VOU1BFQ0lGSUVEOlxuICAgICAgcmV0dXJuIFwiU0FWRURfRklMVEVSX1BFUk1JU1NJT05fVU5TUEVDSUZJRURcIjtcbiAgICBjYXNlIFNhdmVkRmlsdGVyUGVybWlzc2lvbi5TQVZFRF9GSUxURVJfUEVSTUlTU0lPTl9QUklWQVRFOlxuICAgICAgcmV0dXJuIFwiU0FWRURfRklMVEVSX1BFUk1JU1NJT05fUFJJVkFURVwiO1xuICAgIGNhc2UgU2F2ZWRGaWx0ZXJQZXJtaXNzaW9uLlNBVkVEX0ZJTFRFUl9QRVJNSVNTSU9OX1BVQkxJQzpcbiAgICAgIHJldHVybiBcIlNBVkVEX0ZJTFRFUl9QRVJNSVNTSU9OX1BVQkxJQ1wiO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIlVucmVjb2duaXplZCBlbnVtIHZhbHVlIFwiICsgb2JqZWN0ICsgXCIgZm9yIGVudW0gU2F2ZWRGaWx0ZXJQZXJtaXNzaW9uXCIpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXMge1xuICBuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIHBhZ2U6IFBhZ2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZWRGaWx0ZXIge1xuICBzYXZlZEZpbHRlcjogU2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7XG4gIGlzRmF2b3JpdGU6IGJvb2xlYW47XG4gIGZhdm9yaXRlSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBlcm1pc3Npb246IFNhdmVkRmlsdGVyUGVybWlzc2lvbjtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZVNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzKCk6IFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzIHtcbiAgcmV0dXJuIHsgbmFtZTogXCJcIiwgaWQ6IFwiXCIsIHBhZ2U6IDAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzID0ge1xuICBlbmNvZGUobWVzc2FnZTogU2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXMsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS5uYW1lICE9PSBcIlwiKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEwKS5zdHJpbmcobWVzc2FnZS5uYW1lKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuaWQgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTgpLnN0cmluZyhtZXNzYWdlLmlkKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGFnZSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNCkuaW50MzIobWVzc2FnZS5wYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlcjtcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBTYXZlZEZpbHRlckJhc2ljUHJvcGVydGllcyB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBfbTAuUmVhZGVyLmNyZWF0ZShpbnB1dCk7XG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGg7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VTYXZlZEZpbHRlckJhc2ljUHJvcGVydGllcygpO1xuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKCk7XG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UubmFtZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmICh0YWcgIT09IDE4KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmlkID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMjQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UucGFnZSA9IHJlYWRlci5pbnQzMigpIGFzIGFueTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodGFnICYgNykgPT09IDQgfHwgdGFnID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcblxuICBmcm9tSlNPTihvYmplY3Q6IGFueSk6IFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogaXNTZXQob2JqZWN0Lm5hbWUpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0Lm5hbWUpIDogXCJcIixcbiAgICAgIGlkOiBpc1NldChvYmplY3QuaWQpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmlkKSA6IFwiXCIsXG4gICAgICBwYWdlOiBpc1NldChvYmplY3QucGFnZSkgPyBwYWdlRnJvbUpTT04ob2JqZWN0LnBhZ2UpIDogMCxcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBTYXZlZEZpbHRlckJhc2ljUHJvcGVydGllcyk6IHVua25vd24ge1xuICAgIGNvbnN0IG9iajogYW55ID0ge307XG4gICAgaWYgKG1lc3NhZ2UubmFtZSAhPT0gXCJcIikge1xuICAgICAgb2JqLm5hbWUgPSBtZXNzYWdlLm5hbWU7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmlkICE9PSBcIlwiKSB7XG4gICAgICBvYmouaWQgPSBtZXNzYWdlLmlkO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wYWdlICE9PSAwKSB7XG4gICAgICBvYmoucGFnZSA9IHBhZ2VUb0pTT04obWVzc2FnZS5wYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzPik6IFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzIHtcbiAgICByZXR1cm4gU2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXMuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG4gIGZyb21QYXJ0aWFsKG9iamVjdDogRGVlcFBhcnRpYWw8U2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXM+KTogU2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXMge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlU2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXMoKTtcbiAgICBtZXNzYWdlLm5hbWUgPSBvYmplY3QubmFtZSA/PyBcIlwiO1xuICAgIG1lc3NhZ2UuaWQgPSBvYmplY3QuaWQgPz8gXCJcIjtcbiAgICBtZXNzYWdlLnBhZ2UgPSBvYmplY3QucGFnZSA/PyAwO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxufTtcblxuZnVuY3Rpb24gY3JlYXRlQmFzZVNhdmVkRmlsdGVyKCk6IFNhdmVkRmlsdGVyIHtcbiAgcmV0dXJuIHsgc2F2ZWRGaWx0ZXI6IHVuZGVmaW5lZCwgaXNGYXZvcml0ZTogZmFsc2UsIGZhdm9yaXRlSWQ6IHVuZGVmaW5lZCwgcGVybWlzc2lvbjogMCB9O1xufVxuXG5leHBvcnQgY29uc3QgU2F2ZWRGaWx0ZXIgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBTYXZlZEZpbHRlciwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLnNhdmVkRmlsdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzLmVuY29kZShtZXNzYWdlLnNhdmVkRmlsdGVyLCB3cml0ZXIudWludDMyKDEwKS5mb3JrKCkpLmxkZWxpbSgpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5pc0Zhdm9yaXRlICE9PSBmYWxzZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNikuYm9vbChtZXNzYWdlLmlzRmF2b3JpdGUpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5mYXZvcml0ZUlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjYpLnN0cmluZyhtZXNzYWdlLmZhdm9yaXRlSWQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wZXJtaXNzaW9uICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDMyKS5pbnQzMihtZXNzYWdlLnBlcm1pc3Npb24pO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyO1xuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFNhdmVkRmlsdGVyIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IF9tMC5SZWFkZXIuY3JlYXRlKGlucHV0KTtcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aDtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVNhdmVkRmlsdGVyKCk7XG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKTtcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAodGFnICE9PSAxMCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5zYXZlZEZpbHRlciA9IFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzLmRlY29kZShyZWFkZXIsIHJlYWRlci51aW50MzIoKSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBpZiAodGFnICE9PSAxNikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5pc0Zhdm9yaXRlID0gcmVhZGVyLmJvb2woKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIGlmICh0YWcgIT09IDI2KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmZhdm9yaXRlSWQgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBpZiAodGFnICE9PSAzMikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5wZXJtaXNzaW9uID0gcmVhZGVyLmludDMyKCkgYXMgYW55O1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCh0YWcgJiA3KSA9PT0gNCB8fCB0YWcgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxuXG4gIGZyb21KU09OKG9iamVjdDogYW55KTogU2F2ZWRGaWx0ZXIge1xuICAgIHJldHVybiB7XG4gICAgICBzYXZlZEZpbHRlcjogaXNTZXQob2JqZWN0LnNhdmVkRmlsdGVyKSA/IFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzLmZyb21KU09OKG9iamVjdC5zYXZlZEZpbHRlcikgOiB1bmRlZmluZWQsXG4gICAgICBpc0Zhdm9yaXRlOiBpc1NldChvYmplY3QuaXNGYXZvcml0ZSkgPyBnbG9iYWxUaGlzLkJvb2xlYW4ob2JqZWN0LmlzRmF2b3JpdGUpIDogZmFsc2UsXG4gICAgICBmYXZvcml0ZUlkOiBpc1NldChvYmplY3QuZmF2b3JpdGVJZCkgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QuZmF2b3JpdGVJZCkgOiB1bmRlZmluZWQsXG4gICAgICBwZXJtaXNzaW9uOiBpc1NldChvYmplY3QucGVybWlzc2lvbikgPyBzYXZlZEZpbHRlclBlcm1pc3Npb25Gcm9tSlNPTihvYmplY3QucGVybWlzc2lvbikgOiAwLFxuICAgIH07XG4gIH0sXG5cbiAgdG9KU09OKG1lc3NhZ2U6IFNhdmVkRmlsdGVyKTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBpZiAobWVzc2FnZS5zYXZlZEZpbHRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmouc2F2ZWRGaWx0ZXIgPSBTYXZlZEZpbHRlckJhc2ljUHJvcGVydGllcy50b0pTT04obWVzc2FnZS5zYXZlZEZpbHRlcik7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmlzRmF2b3JpdGUgIT09IGZhbHNlKSB7XG4gICAgICBvYmouaXNGYXZvcml0ZSA9IG1lc3NhZ2UuaXNGYXZvcml0ZTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZmF2b3JpdGVJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmouZmF2b3JpdGVJZCA9IG1lc3NhZ2UuZmF2b3JpdGVJZDtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGVybWlzc2lvbiAhPT0gMCkge1xuICAgICAgb2JqLnBlcm1pc3Npb24gPSBzYXZlZEZpbHRlclBlcm1pc3Npb25Ub0pTT04obWVzc2FnZS5wZXJtaXNzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPFNhdmVkRmlsdGVyPik6IFNhdmVkRmlsdGVyIHtcbiAgICByZXR1cm4gU2F2ZWRGaWx0ZXIuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG4gIGZyb21QYXJ0aWFsKG9iamVjdDogRGVlcFBhcnRpYWw8U2F2ZWRGaWx0ZXI+KTogU2F2ZWRGaWx0ZXIge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlU2F2ZWRGaWx0ZXIoKTtcbiAgICBtZXNzYWdlLnNhdmVkRmlsdGVyID0gKG9iamVjdC5zYXZlZEZpbHRlciAhPT0gdW5kZWZpbmVkICYmIG9iamVjdC5zYXZlZEZpbHRlciAhPT0gbnVsbClcbiAgICAgID8gU2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXMuZnJvbVBhcnRpYWwob2JqZWN0LnNhdmVkRmlsdGVyKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgbWVzc2FnZS5pc0Zhdm9yaXRlID0gb2JqZWN0LmlzRmF2b3JpdGUgPz8gZmFsc2U7XG4gICAgbWVzc2FnZS5mYXZvcml0ZUlkID0gb2JqZWN0LmZhdm9yaXRlSWQgPz8gdW5kZWZpbmVkO1xuICAgIG1lc3NhZ2UucGVybWlzc2lvbiA9IG9iamVjdC5wZXJtaXNzaW9uID8/IDA7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG59O1xuXG50eXBlIEJ1aWx0aW4gPSBEYXRlIHwgRnVuY3Rpb24gfCBVaW50OEFycmF5IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgRGVlcFBhcnRpYWw8VD4gPSBUIGV4dGVuZHMgQnVpbHRpbiA/IFRcbiAgOiBUIGV4dGVuZHMgZ2xvYmFsVGhpcy5BcnJheTxpbmZlciBVPiA/IGdsb2JhbFRoaXMuQXJyYXk8RGVlcFBhcnRpYWw8VT4+XG4gIDogVCBleHRlbmRzIFJlYWRvbmx5QXJyYXk8aW5mZXIgVT4gPyBSZWFkb25seUFycmF5PERlZXBQYXJ0aWFsPFU+PlxuICA6IFQgZXh0ZW5kcyB7ICRjYXNlOiBzdHJpbmcgfSA/IHsgW0sgaW4ga2V5b2YgT21pdDxULCBcIiRjYXNlXCI+XT86IERlZXBQYXJ0aWFsPFRbS10+IH0gJiB7ICRjYXNlOiBUW1wiJGNhc2VcIl0gfVxuICA6IFQgZXh0ZW5kcyB7fSA/IHsgW0sgaW4ga2V5b2YgVF0/OiBEZWVwUGFydGlhbDxUW0tdPiB9XG4gIDogUGFydGlhbDxUPjtcblxuZnVuY3Rpb24gaXNTZXQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZDtcbn1cbiJdfQ==
290
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2F2ZWRfZmlsdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvdG8tbW9kZWxzL2NvbS9jb3JhbG9naXgvcnVtL3YyL3NhdmVkX2ZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsc0RBQXNEO0FBQ3RELFlBQVk7QUFDWixrQ0FBa0M7QUFDbEMsaUNBQWlDO0FBQ2pDLGtEQUFrRDs7Ozs7O0FBRWxELG9CQUFvQjtBQUNwQixpRUFBcUM7QUFFeEIsUUFBQSxlQUFlLEdBQUcsc0JBQXNCLENBQUM7QUFFdEQsSUFBWSxJQVFYO0FBUkQsV0FBWSxJQUFJO0lBQ2QsdURBQW9CLENBQUE7SUFDcEIsNkRBQXVCLENBQUE7SUFDdkIseURBQXFCLENBQUE7SUFDckIscURBQW1CLENBQUE7SUFDbkIsdUVBQTRCLENBQUE7SUFDNUIseURBQXFCLENBQUE7SUFDckIsaURBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQVJXLElBQUksR0FBSixZQUFJLEtBQUosWUFBSSxRQVFmO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLE1BQVc7SUFDdEMsUUFBUSxNQUFNLEVBQUU7UUFDZCxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssa0JBQWtCO1lBQ3JCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBQy9CLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyxxQkFBcUI7WUFDeEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7UUFDbEMsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLG1CQUFtQjtZQUN0QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNoQyxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssaUJBQWlCO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM5QixLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssMEJBQTBCO1lBQzdCLE9BQU8sSUFBSSxDQUFDLHdCQUF3QixDQUFDO1FBQ3ZDLEtBQUssQ0FB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QUcsMkJBQTJCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUFDLElBQStCO1FBQ3BDLE9BQU8sbUJBQVcsQ0FBQyxXQUFXLENBQUMsSUFBSSxhQUFKLElBQUksY0FBSixJQUFJLEdBQUksRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUNELFdBQVcsQ0FBQyxNQUFnQzs7UUFDMUMsTUFBTSxPQUFPLEdBQUcscUJBQXFCLEVBQUUsQ0FBQztRQUN4QyxPQUFPLENBQUMsV0FBVyxHQUFHLENBQUMsTUFBTSxDQUFDLFdBQVcsS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUM7WUFDckYsQ0FBQyxDQUFDLGtDQUEwQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO1lBQzVELENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDZCxPQUFPLENBQUMsVUFBVSxHQUFHLE1BQUEsTUFBTSxDQUFDLFVBQVUsbUNBQUksS0FBSyxDQUFDO1FBQ2hELE9BQU8sQ0FBQyxVQUFVLEdBQUcsTUFBQSxNQUFNLENBQUMsVUFBVSxtQ0FBSSxTQUFTLENBQUM7UUFDcEQsT0FBTyxDQUFDLFVBQVUsR0FBRyxNQUFBLE1BQU0sQ0FBQyxVQUFVLG1DQUFJLENBQUMsQ0FBQztRQUM1QyxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0NBQ0YsQ0FBQztBQVdGLFNBQVMsS0FBSyxDQUFDLEtBQVU7SUFDdkIsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHByb3RvYy1nZW4tdHNfcHJvdG8uIERPIE5PVCBFRElULlxuLy8gdmVyc2lvbnM6XG4vLyAgIHByb3RvYy1nZW4tdHNfcHJvdG8gIHYxLjE4MS4xXG4vLyAgIHByb3RvYyAgICAgICAgICAgICAgIHYzLjE5LjFcbi8vIHNvdXJjZTogY29tL2NvcmFsb2dpeC9ydW0vdjIvc2F2ZWRfZmlsdGVyLnByb3RvXG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5pbXBvcnQgX20wIGZyb20gXCJwcm90b2J1ZmpzL21pbmltYWxcIjtcblxuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9IFwiY29tLmNvcmFsb2dpeC5ydW0udjJcIjtcblxuZXhwb3J0IGVudW0gUGFnZSB7XG4gIFBBR0VfVU5TUEVDSUZJRUQgPSAwLFxuICBQQUdFX0VSUk9SX1RSQUNLSU5HID0gMSxcbiAgUEFHRV9VU0VSX1NFU1NJT04gPSAyLFxuICBQQUdFX1dFQl9WSVRBTFMgPSAzLFxuICBQQUdFX05FVFdPUktfUEVSRk9STUFOQ0UgPSA0LFxuICBQQUdFX01FQVNVUkVNRU5UUyA9IDUsXG4gIFBBR0VfVkVSU0lPTlMgPSA2LFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFnZUZyb21KU09OKG9iamVjdDogYW55KTogUGFnZSB7XG4gIHN3aXRjaCAob2JqZWN0KSB7XG4gICAgY2FzZSAwOlxuICAgIGNhc2UgXCJQQUdFX1VOU1BFQ0lGSUVEXCI6XG4gICAgICByZXR1cm4gUGFnZS5QQUdFX1VOU1BFQ0lGSUVEO1xuICAgIGNhc2UgMTpcbiAgICBjYXNlIFwiUEFHRV9FUlJPUl9UUkFDS0lOR1wiOlxuICAgICAgcmV0dXJuIFBhZ2UuUEFHRV9FUlJPUl9UUkFDS0lORztcbiAgICBjYXNlIDI6XG4gICAgY2FzZSBcIlBBR0VfVVNFUl9TRVNTSU9OXCI6XG4gICAgICByZXR1cm4gUGFnZS5QQUdFX1VTRVJfU0VTU0lPTjtcbiAgICBjYXNlIDM6XG4gICAgY2FzZSBcIlBBR0VfV0VCX1ZJVEFMU1wiOlxuICAgICAgcmV0dXJuIFBhZ2UuUEFHRV9XRUJfVklUQUxTO1xuICAgIGNhc2UgNDpcbiAgICBjYXNlIFwiUEFHRV9ORVRXT1JLX1BFUkZPUk1BTkNFXCI6XG4gICAgICByZXR1cm4gUGFnZS5QQUdFX05FVFdPUktfUEVSRk9STUFOQ0U7XG4gICAgY2FzZSA1OlxuICAgIGNhc2UgXCJQQUdFX01FQVNVUkVNRU5UU1wiOlxuICAgICAgcmV0dXJuIFBhZ2UuUEFHRV9NRUFTVVJFTUVOVFM7XG4gICAgY2FzZSA2OlxuICAgIGNhc2UgXCJQQUdFX1ZFUlNJT05TXCI6XG4gICAgICByZXR1cm4gUGFnZS5QQUdFX1ZFUlNJT05TO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIlVucmVjb2duaXplZCBlbnVtIHZhbHVlIFwiICsgb2JqZWN0ICsgXCIgZm9yIGVudW0gUGFnZVwiKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFnZVRvSlNPTihvYmplY3Q6IFBhZ2UpOiBzdHJpbmcge1xuICBzd2l0Y2ggKG9iamVjdCkge1xuICAgIGNhc2UgUGFnZS5QQUdFX1VOU1BFQ0lGSUVEOlxuICAgICAgcmV0dXJuIFwiUEFHRV9VTlNQRUNJRklFRFwiO1xuICAgIGNhc2UgUGFnZS5QQUdFX0VSUk9SX1RSQUNLSU5HOlxuICAgICAgcmV0dXJuIFwiUEFHRV9FUlJPUl9UUkFDS0lOR1wiO1xuICAgIGNhc2UgUGFnZS5QQUdFX1VTRVJfU0VTU0lPTjpcbiAgICAgIHJldHVybiBcIlBBR0VfVVNFUl9TRVNTSU9OXCI7XG4gICAgY2FzZSBQYWdlLlBBR0VfV0VCX1ZJVEFMUzpcbiAgICAgIHJldHVybiBcIlBBR0VfV0VCX1ZJVEFMU1wiO1xuICAgIGNhc2UgUGFnZS5QQUdFX05FVFdPUktfUEVSRk9STUFOQ0U6XG4gICAgICByZXR1cm4gXCJQQUdFX05FVFdPUktfUEVSRk9STUFOQ0VcIjtcbiAgICBjYXNlIFBhZ2UuUEFHRV9NRUFTVVJFTUVOVFM6XG4gICAgICByZXR1cm4gXCJQQUdFX01FQVNVUkVNRU5UU1wiO1xuICAgIGNhc2UgUGFnZS5QQUdFX1ZFUlNJT05TOlxuICAgICAgcmV0dXJuIFwiUEFHRV9WRVJTSU9OU1wiO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIlVucmVjb2duaXplZCBlbnVtIHZhbHVlIFwiICsgb2JqZWN0ICsgXCIgZm9yIGVudW0gUGFnZVwiKTtcbiAgfVxufVxuXG5leHBvcnQgZW51bSBTYXZlZEZpbHRlclBlcm1pc3Npb24ge1xuICBTQVZFRF9GSUxURVJfUEVSTUlTU0lPTl9VTlNQRUNJRklFRCA9IDAsXG4gIFNBVkVEX0ZJTFRFUl9QRVJNSVNTSU9OX1BSSVZBVEUgPSAxLFxuICBTQVZFRF9GSUxURVJfUEVSTUlTU0lPTl9QVUJMSUMgPSAyLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gc2F2ZWRGaWx0ZXJQZXJtaXNzaW9uRnJvbUpTT04ob2JqZWN0OiBhbnkpOiBTYXZlZEZpbHRlclBlcm1pc3Npb24ge1xuICBzd2l0Y2ggKG9iamVjdCkge1xuICAgIGNhc2UgMDpcbiAgICBjYXNlIFwiU0FWRURfRklMVEVSX1BFUk1JU1NJT05fVU5TUEVDSUZJRURcIjpcbiAgICAgIHJldHVybiBTYXZlZEZpbHRlclBlcm1pc3Npb24uU0FWRURfRklMVEVSX1BFUk1JU1NJT05fVU5TUEVDSUZJRUQ7XG4gICAgY2FzZSAxOlxuICAgIGNhc2UgXCJTQVZFRF9GSUxURVJfUEVSTUlTU0lPTl9QUklWQVRFXCI6XG4gICAgICByZXR1cm4gU2F2ZWRGaWx0ZXJQZXJtaXNzaW9uLlNBVkVEX0ZJTFRFUl9QRVJNSVNTSU9OX1BSSVZBVEU7XG4gICAgY2FzZSAyOlxuICAgIGNhc2UgXCJTQVZFRF9GSUxURVJfUEVSTUlTU0lPTl9QVUJMSUNcIjpcbiAgICAgIHJldHVybiBTYXZlZEZpbHRlclBlcm1pc3Npb24uU0FWRURfRklMVEVSX1BFUk1JU1NJT05fUFVCTElDO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIlVucmVjb2duaXplZCBlbnVtIHZhbHVlIFwiICsgb2JqZWN0ICsgXCIgZm9yIGVudW0gU2F2ZWRGaWx0ZXJQZXJtaXNzaW9uXCIpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXZlZEZpbHRlclBlcm1pc3Npb25Ub0pTT04ob2JqZWN0OiBTYXZlZEZpbHRlclBlcm1pc3Npb24pOiBzdHJpbmcge1xuICBzd2l0Y2ggKG9iamVjdCkge1xuICAgIGNhc2UgU2F2ZWRGaWx0ZXJQZXJtaXNzaW9uLlNBVkVEX0ZJTFRFUl9QRVJNSVNTSU9OX1VOU1BFQ0lGSUVEOlxuICAgICAgcmV0dXJuIFwiU0FWRURfRklMVEVSX1BFUk1JU1NJT05fVU5TUEVDSUZJRURcIjtcbiAgICBjYXNlIFNhdmVkRmlsdGVyUGVybWlzc2lvbi5TQVZFRF9GSUxURVJfUEVSTUlTU0lPTl9QUklWQVRFOlxuICAgICAgcmV0dXJuIFwiU0FWRURfRklMVEVSX1BFUk1JU1NJT05fUFJJVkFURVwiO1xuICAgIGNhc2UgU2F2ZWRGaWx0ZXJQZXJtaXNzaW9uLlNBVkVEX0ZJTFRFUl9QRVJNSVNTSU9OX1BVQkxJQzpcbiAgICAgIHJldHVybiBcIlNBVkVEX0ZJTFRFUl9QRVJNSVNTSU9OX1BVQkxJQ1wiO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIlVucmVjb2duaXplZCBlbnVtIHZhbHVlIFwiICsgb2JqZWN0ICsgXCIgZm9yIGVudW0gU2F2ZWRGaWx0ZXJQZXJtaXNzaW9uXCIpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXMge1xuICBuYW1lOiBzdHJpbmc7XG4gIGlkOiBzdHJpbmc7XG4gIHBhZ2U6IFBhZ2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2F2ZWRGaWx0ZXIge1xuICBzYXZlZEZpbHRlcjogU2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXMgfCB1bmRlZmluZWQ7XG4gIGlzRmF2b3JpdGU6IGJvb2xlYW47XG4gIGZhdm9yaXRlSWQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIHBlcm1pc3Npb246IFNhdmVkRmlsdGVyUGVybWlzc2lvbjtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZVNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzKCk6IFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzIHtcbiAgcmV0dXJuIHsgbmFtZTogXCJcIiwgaWQ6IFwiXCIsIHBhZ2U6IDAgfTtcbn1cblxuZXhwb3J0IGNvbnN0IFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzID0ge1xuICBlbmNvZGUobWVzc2FnZTogU2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXMsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS5uYW1lICE9PSBcIlwiKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEwKS5zdHJpbmcobWVzc2FnZS5uYW1lKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuaWQgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTgpLnN0cmluZyhtZXNzYWdlLmlkKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGFnZSAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNCkuaW50MzIobWVzc2FnZS5wYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlcjtcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBTYXZlZEZpbHRlckJhc2ljUHJvcGVydGllcyB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBfbTAuUmVhZGVyLmNyZWF0ZShpbnB1dCk7XG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGg7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VTYXZlZEZpbHRlckJhc2ljUHJvcGVydGllcygpO1xuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKCk7XG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UubmFtZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmICh0YWcgIT09IDE4KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmlkID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMjQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UucGFnZSA9IHJlYWRlci5pbnQzMigpIGFzIGFueTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodGFnICYgNykgPT09IDQgfHwgdGFnID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcblxuICBmcm9tSlNPTihvYmplY3Q6IGFueSk6IFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogaXNTZXQob2JqZWN0Lm5hbWUpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0Lm5hbWUpIDogXCJcIixcbiAgICAgIGlkOiBpc1NldChvYmplY3QuaWQpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmlkKSA6IFwiXCIsXG4gICAgICBwYWdlOiBpc1NldChvYmplY3QucGFnZSkgPyBwYWdlRnJvbUpTT04ob2JqZWN0LnBhZ2UpIDogMCxcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBTYXZlZEZpbHRlckJhc2ljUHJvcGVydGllcyk6IHVua25vd24ge1xuICAgIGNvbnN0IG9iajogYW55ID0ge307XG4gICAgaWYgKG1lc3NhZ2UubmFtZSAhPT0gXCJcIikge1xuICAgICAgb2JqLm5hbWUgPSBtZXNzYWdlLm5hbWU7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmlkICE9PSBcIlwiKSB7XG4gICAgICBvYmouaWQgPSBtZXNzYWdlLmlkO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wYWdlICE9PSAwKSB7XG4gICAgICBvYmoucGFnZSA9IHBhZ2VUb0pTT04obWVzc2FnZS5wYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzPik6IFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzIHtcbiAgICByZXR1cm4gU2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXMuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG4gIGZyb21QYXJ0aWFsKG9iamVjdDogRGVlcFBhcnRpYWw8U2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXM+KTogU2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXMge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlU2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXMoKTtcbiAgICBtZXNzYWdlLm5hbWUgPSBvYmplY3QubmFtZSA/PyBcIlwiO1xuICAgIG1lc3NhZ2UuaWQgPSBvYmplY3QuaWQgPz8gXCJcIjtcbiAgICBtZXNzYWdlLnBhZ2UgPSBvYmplY3QucGFnZSA/PyAwO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxufTtcblxuZnVuY3Rpb24gY3JlYXRlQmFzZVNhdmVkRmlsdGVyKCk6IFNhdmVkRmlsdGVyIHtcbiAgcmV0dXJuIHsgc2F2ZWRGaWx0ZXI6IHVuZGVmaW5lZCwgaXNGYXZvcml0ZTogZmFsc2UsIGZhdm9yaXRlSWQ6IHVuZGVmaW5lZCwgcGVybWlzc2lvbjogMCB9O1xufVxuXG5leHBvcnQgY29uc3QgU2F2ZWRGaWx0ZXIgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBTYXZlZEZpbHRlciwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLnNhdmVkRmlsdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzLmVuY29kZShtZXNzYWdlLnNhdmVkRmlsdGVyLCB3cml0ZXIudWludDMyKDEwKS5mb3JrKCkpLmxkZWxpbSgpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5pc0Zhdm9yaXRlICE9PSBmYWxzZSkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNikuYm9vbChtZXNzYWdlLmlzRmF2b3JpdGUpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5mYXZvcml0ZUlkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjYpLnN0cmluZyhtZXNzYWdlLmZhdm9yaXRlSWQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5wZXJtaXNzaW9uICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDMyKS5pbnQzMihtZXNzYWdlLnBlcm1pc3Npb24pO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyO1xuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IFNhdmVkRmlsdGVyIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IF9tMC5SZWFkZXIuY3JlYXRlKGlucHV0KTtcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aDtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVNhdmVkRmlsdGVyKCk7XG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKTtcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAodGFnICE9PSAxMCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5zYXZlZEZpbHRlciA9IFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzLmRlY29kZShyZWFkZXIsIHJlYWRlci51aW50MzIoKSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBpZiAodGFnICE9PSAxNikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5pc0Zhdm9yaXRlID0gcmVhZGVyLmJvb2woKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIGlmICh0YWcgIT09IDI2KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmZhdm9yaXRlSWQgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgNDpcbiAgICAgICAgICBpZiAodGFnICE9PSAzMikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5wZXJtaXNzaW9uID0gcmVhZGVyLmludDMyKCkgYXMgYW55O1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCh0YWcgJiA3KSA9PT0gNCB8fCB0YWcgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxuXG4gIGZyb21KU09OKG9iamVjdDogYW55KTogU2F2ZWRGaWx0ZXIge1xuICAgIHJldHVybiB7XG4gICAgICBzYXZlZEZpbHRlcjogaXNTZXQob2JqZWN0LnNhdmVkRmlsdGVyKSA/IFNhdmVkRmlsdGVyQmFzaWNQcm9wZXJ0aWVzLmZyb21KU09OKG9iamVjdC5zYXZlZEZpbHRlcikgOiB1bmRlZmluZWQsXG4gICAgICBpc0Zhdm9yaXRlOiBpc1NldChvYmplY3QuaXNGYXZvcml0ZSkgPyBnbG9iYWxUaGlzLkJvb2xlYW4ob2JqZWN0LmlzRmF2b3JpdGUpIDogZmFsc2UsXG4gICAgICBmYXZvcml0ZUlkOiBpc1NldChvYmplY3QuZmF2b3JpdGVJZCkgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QuZmF2b3JpdGVJZCkgOiB1bmRlZmluZWQsXG4gICAgICBwZXJtaXNzaW9uOiBpc1NldChvYmplY3QucGVybWlzc2lvbikgPyBzYXZlZEZpbHRlclBlcm1pc3Npb25Gcm9tSlNPTihvYmplY3QucGVybWlzc2lvbikgOiAwLFxuICAgIH07XG4gIH0sXG5cbiAgdG9KU09OKG1lc3NhZ2U6IFNhdmVkRmlsdGVyKTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBpZiAobWVzc2FnZS5zYXZlZEZpbHRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmouc2F2ZWRGaWx0ZXIgPSBTYXZlZEZpbHRlckJhc2ljUHJvcGVydGllcy50b0pTT04obWVzc2FnZS5zYXZlZEZpbHRlcik7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmlzRmF2b3JpdGUgIT09IGZhbHNlKSB7XG4gICAgICBvYmouaXNGYXZvcml0ZSA9IG1lc3NhZ2UuaXNGYXZvcml0ZTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuZmF2b3JpdGVJZCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmouZmF2b3JpdGVJZCA9IG1lc3NhZ2UuZmF2b3JpdGVJZDtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGVybWlzc2lvbiAhPT0gMCkge1xuICAgICAgb2JqLnBlcm1pc3Npb24gPSBzYXZlZEZpbHRlclBlcm1pc3Npb25Ub0pTT04obWVzc2FnZS5wZXJtaXNzaW9uKTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPFNhdmVkRmlsdGVyPik6IFNhdmVkRmlsdGVyIHtcbiAgICByZXR1cm4gU2F2ZWRGaWx0ZXIuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG4gIGZyb21QYXJ0aWFsKG9iamVjdDogRGVlcFBhcnRpYWw8U2F2ZWRGaWx0ZXI+KTogU2F2ZWRGaWx0ZXIge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlU2F2ZWRGaWx0ZXIoKTtcbiAgICBtZXNzYWdlLnNhdmVkRmlsdGVyID0gKG9iamVjdC5zYXZlZEZpbHRlciAhPT0gdW5kZWZpbmVkICYmIG9iamVjdC5zYXZlZEZpbHRlciAhPT0gbnVsbClcbiAgICAgID8gU2F2ZWRGaWx0ZXJCYXNpY1Byb3BlcnRpZXMuZnJvbVBhcnRpYWwob2JqZWN0LnNhdmVkRmlsdGVyKVxuICAgICAgOiB1bmRlZmluZWQ7XG4gICAgbWVzc2FnZS5pc0Zhdm9yaXRlID0gb2JqZWN0LmlzRmF2b3JpdGUgPz8gZmFsc2U7XG4gICAgbWVzc2FnZS5mYXZvcml0ZUlkID0gb2JqZWN0LmZhdm9yaXRlSWQgPz8gdW5kZWZpbmVkO1xuICAgIG1lc3NhZ2UucGVybWlzc2lvbiA9IG9iamVjdC5wZXJtaXNzaW9uID8/IDA7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG59O1xuXG50eXBlIEJ1aWx0aW4gPSBEYXRlIHwgRnVuY3Rpb24gfCBVaW50OEFycmF5IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgRGVlcFBhcnRpYWw8VD4gPSBUIGV4dGVuZHMgQnVpbHRpbiA/IFRcbiAgOiBUIGV4dGVuZHMgZ2xvYmFsVGhpcy5BcnJheTxpbmZlciBVPiA/IGdsb2JhbFRoaXMuQXJyYXk8RGVlcFBhcnRpYWw8VT4+XG4gIDogVCBleHRlbmRzIFJlYWRvbmx5QXJyYXk8aW5mZXIgVT4gPyBSZWFkb25seUFycmF5PERlZXBQYXJ0aWFsPFU+PlxuICA6IFQgZXh0ZW5kcyB7ICRjYXNlOiBzdHJpbmcgfSA/IHsgW0sgaW4ga2V5b2YgT21pdDxULCBcIiRjYXNlXCI+XT86IERlZXBQYXJ0aWFsPFRbS10+IH0gJiB7ICRjYXNlOiBUW1wiJGNhc2VcIl0gfVxuICA6IFQgZXh0ZW5kcyB7fSA/IHsgW0sgaW4ga2V5b2YgVF0/OiBEZWVwUGFydGlhbDxUW0tdPiB9XG4gIDogUGFydGlhbDxUPjtcblxuZnVuY3Rpb24gaXNTZXQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -34,6 +34,8 @@ export interface TemplateDate {
34
34
  templateId: string;
35
35
  createdAt: number;
36
36
  updatedAt: number;
37
+ applicationName?: string | undefined;
38
+ applicationVersion?: string | undefined;
37
39
  }
38
40
  export declare const Filter: {
39
41
  encode(message: Filter, writer?: _m0.Writer): _m0.Writer;
@@ -413,7 +413,7 @@ exports.TemplateResult = {
413
413
  },
414
414
  };
415
415
  function createBaseTemplateDate() {
416
- return { templateId: "", createdAt: 0, updatedAt: 0 };
416
+ return { templateId: "", createdAt: 0, updatedAt: 0, applicationName: undefined, applicationVersion: undefined };
417
417
  }
418
418
  exports.TemplateDate = {
419
419
  encode(message, writer = minimal_1.default.Writer.create()) {
@@ -426,6 +426,12 @@ exports.TemplateDate = {
426
426
  if (message.updatedAt !== 0) {
427
427
  writer.uint32(24).int64(message.updatedAt);
428
428
  }
429
+ if (message.applicationName !== undefined) {
430
+ writer.uint32(34).string(message.applicationName);
431
+ }
432
+ if (message.applicationVersion !== undefined) {
433
+ writer.uint32(42).string(message.applicationVersion);
434
+ }
429
435
  return writer;
430
436
  },
431
437
  decode(input, length) {
@@ -453,6 +459,18 @@ exports.TemplateDate = {
453
459
  }
454
460
  message.updatedAt = longToNumber(reader.int64());
455
461
  continue;
462
+ case 4:
463
+ if (tag !== 34) {
464
+ break;
465
+ }
466
+ message.applicationName = reader.string();
467
+ continue;
468
+ case 5:
469
+ if (tag !== 42) {
470
+ break;
471
+ }
472
+ message.applicationVersion = reader.string();
473
+ continue;
456
474
  }
457
475
  if ((tag & 7) === 4 || tag === 0) {
458
476
  break;
@@ -466,6 +484,8 @@ exports.TemplateDate = {
466
484
  templateId: isSet(object.templateId) ? globalThis.String(object.templateId) : "",
467
485
  createdAt: isSet(object.createdAt) ? globalThis.Number(object.createdAt) : 0,
468
486
  updatedAt: isSet(object.updatedAt) ? globalThis.Number(object.updatedAt) : 0,
487
+ applicationName: isSet(object.applicationName) ? globalThis.String(object.applicationName) : undefined,
488
+ applicationVersion: isSet(object.applicationVersion) ? globalThis.String(object.applicationVersion) : undefined,
469
489
  };
470
490
  },
471
491
  toJSON(message) {
@@ -479,17 +499,25 @@ exports.TemplateDate = {
479
499
  if (message.updatedAt !== 0) {
480
500
  obj.updatedAt = Math.round(message.updatedAt);
481
501
  }
502
+ if (message.applicationName !== undefined) {
503
+ obj.applicationName = message.applicationName;
504
+ }
505
+ if (message.applicationVersion !== undefined) {
506
+ obj.applicationVersion = message.applicationVersion;
507
+ }
482
508
  return obj;
483
509
  },
484
510
  create(base) {
485
511
  return exports.TemplateDate.fromPartial(base !== null && base !== void 0 ? base : {});
486
512
  },
487
513
  fromPartial(object) {
488
- var _a, _b, _c;
514
+ var _a, _b, _c, _d, _e;
489
515
  const message = createBaseTemplateDate();
490
516
  message.templateId = (_a = object.templateId) !== null && _a !== void 0 ? _a : "";
491
517
  message.createdAt = (_b = object.createdAt) !== null && _b !== void 0 ? _b : 0;
492
518
  message.updatedAt = (_c = object.updatedAt) !== null && _c !== void 0 ? _c : 0;
519
+ message.applicationName = (_d = object.applicationName) !== null && _d !== void 0 ? _d : undefined;
520
+ message.applicationVersion = (_e = object.applicationVersion) !== null && _e !== void 0 ? _e : undefined;
493
521
  return message;
494
522
  },
495
523
  };
@@ -509,4 +537,4 @@ if (minimal_1.default.util.Long !== long_1.default) {
509
537
  function isSet(value) {
510
538
  return value !== null && value !== undefined;
511
539
  }
512
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ydW0vdjIvdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNEQUFzRDtBQUN0RCxZQUFZO0FBQ1osa0NBQWtDO0FBQ2xDLGlDQUFpQztBQUNqQyw4Q0FBOEM7Ozs7OztBQUU5QyxvQkFBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLGlFQUFxQztBQUV4QixRQUFBLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQztBQUV0RCxJQUFZLFNBS1g7QUFMRCxXQUFZLFNBQVM7SUFDbkIsNkVBQTBCLENBQUE7SUFDMUIsaUVBQW9CLENBQUE7SUFDcEIsK0RBQW1CLENBQUE7SUFDbkIscUVBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQUxXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBS3BCO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsTUFBVztJQUMzQyxRQUFRLE1BQU0sRUFBRTtRQUNkLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyx3QkFBd0I7WUFDM0IsT0FBTyxTQUFTLENBQUMsc0JBQXNCLENBQUM7UUFDMUMsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLGtCQUFrQjtZQUNyQixPQUFPLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNwQyxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssaUJBQWlCO1lBQ3BCLE9BQU8sU0FBUyxDQUFDLGVBQWUsQ0FBQztRQUNuQyxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssb0JBQW9CO1lBQ3ZCLE9BQU8sU0FBUyxDQUFDLGtCQUFrQixDQUFDO1FBQ3RDO1lBQ0UsTUFBTSxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsTUFBTSxHQUFHLHFCQUFxQixDQUFDLENBQUM7S0FDM0Y7QUFDSCxDQUFDO0FBakJELDhDQWlCQztBQUVELFNBQWdCLGVBQWUsQ0FB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QUFHLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxjQUFXLENBQUM7SUFDNUIsaUJBQUcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztDQUNqQjtBQUVELFNBQVMsS0FBSyxDQUFDLEtBQVU7SUFDdkIsT0FBTyxLQUFLLEtBQUssSUFBSSxJQUFJLEtBQUssS0FBSyxTQUFTLENBQUM7QUFDL0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHByb3RvYy1nZW4tdHNfcHJvdG8uIERPIE5PVCBFRElULlxuLy8gdmVyc2lvbnM6XG4vLyAgIHByb3RvYy1nZW4tdHNfcHJvdG8gIHYxLjE4MS4xXG4vLyAgIHByb3RvYyAgICAgICAgICAgICAgIHYzLjE5LjFcbi8vIHNvdXJjZTogY29tL2NvcmFsb2dpeC9ydW0vdjIvdGVtcGxhdGUucHJvdG9cblxuLyogZXNsaW50LWRpc2FibGUgKi9cbmltcG9ydCBMb25nIGZyb20gXCJsb25nXCI7XG5pbXBvcnQgX20wIGZyb20gXCJwcm90b2J1ZmpzL21pbmltYWxcIjtcblxuZXhwb3J0IGNvbnN0IHByb3RvYnVmUGFja2FnZSA9IFwiY29tLmNvcmFsb2dpeC5ydW0udjJcIjtcblxuZXhwb3J0IGVudW0gRXZlbnRUeXBlIHtcbiAgRVZFTlRfVFlQRV9VTlNQRUNJRklFRCA9IDAsXG4gIEVWRU5UX1RZUEVfRVJST1IgPSAxLFxuICBFVkVOVF9UWVBFX0xPR1MgPSAyLFxuICBFVkVOVF9UWVBFX05FVFdPUksgPSAzLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRUeXBlRnJvbUpTT04ob2JqZWN0OiBhbnkpOiBFdmVudFR5cGUge1xuICBzd2l0Y2ggKG9iamVjdCkge1xuICAgIGNhc2UgMDpcbiAgICBjYXNlIFwiRVZFTlRfVFlQRV9VTlNQRUNJRklFRFwiOlxuICAgICAgcmV0dXJuIEV2ZW50VHlwZS5FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEO1xuICAgIGNhc2UgMTpcbiAgICBjYXNlIFwiRVZFTlRfVFlQRV9FUlJPUlwiOlxuICAgICAgcmV0dXJuIEV2ZW50VHlwZS5FVkVOVF9UWVBFX0VSUk9SO1xuICAgIGNhc2UgMjpcbiAgICBjYXNlIFwiRVZFTlRfVFlQRV9MT0dTXCI6XG4gICAgICByZXR1cm4gRXZlbnRUeXBlLkVWRU5UX1RZUEVfTE9HUztcbiAgICBjYXNlIDM6XG4gICAgY2FzZSBcIkVWRU5UX1RZUEVfTkVUV09SS1wiOlxuICAgICAgcmV0dXJuIEV2ZW50VHlwZS5FVkVOVF9UWVBFX05FVFdPUks7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiVW5yZWNvZ25pemVkIGVudW0gdmFsdWUgXCIgKyBvYmplY3QgKyBcIiBmb3IgZW51bSBFdmVudFR5cGVcIik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV2ZW50VHlwZVRvSlNPTihvYmplY3Q6IEV2ZW50VHlwZSk6IHN0cmluZyB7XG4gIHN3aXRjaCAob2JqZWN0KSB7XG4gICAgY2FzZSBFdmVudFR5cGUuRVZFTlRfVFlQRV9VTlNQRUNJRklFRDpcbiAgICAgIHJldHVybiBcIkVWRU5UX1RZUEVfVU5TUEVDSUZJRURcIjtcbiAgICBjYXNlIEV2ZW50VHlwZS5FVkVOVF9UWVBFX0VSUk9SOlxuICAgICAgcmV0dXJuIFwiRVZFTlRfVFlQRV9FUlJPUlwiO1xuICAgIGNhc2UgRXZlbnRUeXBlLkVWRU5UX1RZUEVfTE9HUzpcbiAgICAgIHJldHVybiBcIkVWRU5UX1RZUEVfTE9HU1wiO1xuICAgIGNhc2UgRXZlbnRUeXBlLkVWRU5UX1RZUEVfTkVUV09SSzpcbiAgICAgIHJldHVybiBcIkVWRU5UX1RZUEVfTkVUV09SS1wiO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIlVucmVjb2duaXplZCBlbnVtIHZhbHVlIFwiICsgb2JqZWN0ICsgXCIgZm9yIGVudW0gRXZlbnRUeXBlXCIpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyIHtcbiAga2V5OiBzdHJpbmc7XG4gIHZhbHVlczogc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGUge1xuICB0ZW1wbGF0ZUlkOiBzdHJpbmc7XG4gIGV2ZW50VHlwZTogRXZlbnRUeXBlO1xuICBwYWdlRnJhZ21lbnRzOiBzdHJpbmc7XG4gIGVycm9yTWVzc2FnZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgc3RhdHVzQ29kZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgbmV0d29ya1JlcXVlc3RGcmFnbWVudHM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGVycm9yVHlwZT86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgY29tcGFueUlkOiBudW1iZXI7XG4gIGNyZWF0ZWRBdDogbnVtYmVyO1xuICB1cGRhdGVkQXQ6IG51bWJlcjtcbiAgYXBwbGljYXRpb25OYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcGxhdGVSZXN1bHQge1xuICB0ZW1wbGF0ZTogVGVtcGxhdGUgfCB1bmRlZmluZWQ7XG4gIG51bWJlck9mRXJyb3JzOiBudW1iZXI7XG4gIG51bWJlck9mVXNlcnM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZURhdGUge1xuICB0ZW1wbGF0ZUlkOiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogbnVtYmVyO1xuICB1cGRhdGVkQXQ6IG51bWJlcjtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZUZpbHRlcigpOiBGaWx0ZXIge1xuICByZXR1cm4geyBrZXk6IFwiXCIsIHZhbHVlczogW10gfTtcbn1cblxuZXhwb3J0IGNvbnN0IEZpbHRlciA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IEZpbHRlciwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLmtleSAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMCkuc3RyaW5nKG1lc3NhZ2Uua2V5KTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB2IG9mIG1lc3NhZ2UudmFsdWVzKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE4KS5zdHJpbmcodiEpO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyO1xuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IEZpbHRlciB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBfbTAuUmVhZGVyLmNyZWF0ZShpbnB1dCk7XG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGg7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VGaWx0ZXIoKTtcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpO1xuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmICh0YWcgIT09IDEwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmtleSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmICh0YWcgIT09IDE4KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLnZhbHVlcy5wdXNoKHJlYWRlci5zdHJpbmcoKSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoKHRhZyAmIDcpID09PSA0IHx8IHRhZyA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KTtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG5cbiAgZnJvbUpTT04ob2JqZWN0OiBhbnkpOiBGaWx0ZXIge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6IGlzU2V0KG9iamVjdC5rZXkpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmtleSkgOiBcIlwiLFxuICAgICAgdmFsdWVzOiBnbG9iYWxUaGlzLkFycmF5LmlzQXJyYXkob2JqZWN0Py52YWx1ZXMpID8gb2JqZWN0LnZhbHVlcy5tYXAoKGU6IGFueSkgPT4gZ2xvYmFsVGhpcy5TdHJpbmcoZSkpIDogW10sXG4gICAgfTtcbiAgfSxcblxuICB0b0pTT04obWVzc2FnZTogRmlsdGVyKTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBpZiAobWVzc2FnZS5rZXkgIT09IFwiXCIpIHtcbiAgICAgIG9iai5rZXkgPSBtZXNzYWdlLmtleTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UudmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgIG9iai52YWx1ZXMgPSBtZXNzYWdlLnZhbHVlcztcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPEZpbHRlcj4pOiBGaWx0ZXIge1xuICAgIHJldHVybiBGaWx0ZXIuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG4gIGZyb21QYXJ0aWFsKG9iamVjdDogRGVlcFBhcnRpYWw8RmlsdGVyPik6IEZpbHRlciB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VGaWx0ZXIoKTtcbiAgICBtZXNzYWdlLmtleSA9IG9iamVjdC5rZXkgPz8gXCJcIjtcbiAgICBtZXNzYWdlLnZhbHVlcyA9IG9iamVjdC52YWx1ZXM/Lm1hcCgoZSkgPT4gZSkgfHwgW107XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVCYXNlVGVtcGxhdGUoKTogVGVtcGxhdGUge1xuICByZXR1cm4ge1xuICAgIHRlbXBsYXRlSWQ6IFwiXCIsXG4gICAgZXZlbnRUeXBlOiAwLFxuICAgIHBhZ2VGcmFnbWVudHM6IFwiXCIsXG4gICAgZXJyb3JNZXNzYWdlOiB1bmRlZmluZWQsXG4gICAgc3RhdHVzQ29kZTogdW5kZWZpbmVkLFxuICAgIG5ldHdvcmtSZXF1ZXN0RnJhZ21lbnRzOiB1bmRlZmluZWQsXG4gICAgZXJyb3JUeXBlOiB1bmRlZmluZWQsXG4gICAgY29tcGFueUlkOiAwLFxuICAgIGNyZWF0ZWRBdDogMCxcbiAgICB1cGRhdGVkQXQ6IDAsXG4gICAgYXBwbGljYXRpb25OYW1lOiBcIlwiLFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgVGVtcGxhdGUgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBUZW1wbGF0ZSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLnRlbXBsYXRlSWQgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTApLnN0cmluZyhtZXNzYWdlLnRlbXBsYXRlSWQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5ldmVudFR5cGUgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTYpLmludDMyKG1lc3NhZ2UuZXZlbnRUeXBlKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGFnZUZyYWdtZW50cyAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNikuc3RyaW5nKG1lc3NhZ2UucGFnZUZyYWdtZW50cyk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmVycm9yTWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDM0KS5zdHJpbmcobWVzc2FnZS5lcnJvck1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5zdGF0dXNDb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDIpLnN0cmluZyhtZXNzYWdlLnN0YXR1c0NvZGUpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDUwKS5zdHJpbmcobWVzc2FnZS5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmVycm9yVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDU4KS5zdHJpbmcobWVzc2FnZS5lcnJvclR5cGUpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5jb21wYW55SWQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNjQpLmludDMyKG1lc3NhZ2UuY29tcGFueUlkKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY3JlYXRlZEF0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDcyKS5pbnQ2NChtZXNzYWdlLmNyZWF0ZWRBdCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnVwZGF0ZWRBdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig4MCkuaW50NjQobWVzc2FnZS51cGRhdGVkQXQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbk5hbWUgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoOTApLnN0cmluZyhtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZSk7XG4gICAgfVxuICAgIHJldHVybiB3cml0ZXI7XG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogVGVtcGxhdGUge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogX20wLlJlYWRlci5jcmVhdGUoaW5wdXQpO1xuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlVGVtcGxhdGUoKTtcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpO1xuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmICh0YWcgIT09IDEwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLnRlbXBsYXRlSWQgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBpZiAodGFnICE9PSAxNikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5ldmVudFR5cGUgPSByZWFkZXIuaW50MzIoKSBhcyBhbnk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBpZiAodGFnICE9PSAyNikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5wYWdlRnJhZ21lbnRzID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMzQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3JNZXNzYWdlID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNDIpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2Uuc3RhdHVzQ29kZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIGlmICh0YWcgIT09IDUwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLm5ldHdvcmtSZXF1ZXN0RnJhZ21lbnRzID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNTgpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3JUeXBlID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNjQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuY29tcGFueUlkID0gcmVhZGVyLmludDMyKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICBpZiAodGFnICE9PSA3Mikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5jcmVhdGVkQXQgPSBsb25nVG9OdW1iZXIocmVhZGVyLmludDY0KCkgYXMgTG9uZyk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gODApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UudXBkYXRlZEF0ID0gbG9uZ1RvTnVtYmVyKHJlYWRlci5pbnQ2NCgpIGFzIExvbmcpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDExOlxuICAgICAgICAgIGlmICh0YWcgIT09IDkwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodGFnICYgNykgPT09IDQgfHwgdGFnID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcblxuICBmcm9tSlNPTihvYmplY3Q6IGFueSk6IFRlbXBsYXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGVtcGxhdGVJZDogaXNTZXQob2JqZWN0LnRlbXBsYXRlSWQpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LnRlbXBsYXRlSWQpIDogXCJcIixcbiAgICAgIGV2ZW50VHlwZTogaXNTZXQob2JqZWN0LmV2ZW50VHlwZSkgPyBldmVudFR5cGVGcm9tSlNPTihvYmplY3QuZXZlbnRUeXBlKSA6IDAsXG4gICAgICBwYWdlRnJhZ21lbnRzOiBpc1NldChvYmplY3QucGFnZUZyYWdtZW50cykgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QucGFnZUZyYWdtZW50cykgOiBcIlwiLFxuICAgICAgZXJyb3JNZXNzYWdlOiBpc1NldChvYmplY3QuZXJyb3JNZXNzYWdlKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5lcnJvck1lc3NhZ2UpIDogdW5kZWZpbmVkLFxuICAgICAgc3RhdHVzQ29kZTogaXNTZXQob2JqZWN0LnN0YXR1c0NvZGUpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LnN0YXR1c0NvZGUpIDogdW5kZWZpbmVkLFxuICAgICAgbmV0d29ya1JlcXVlc3RGcmFnbWVudHM6IGlzU2V0KG9iamVjdC5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cylcbiAgICAgICAgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QubmV0d29ya1JlcXVlc3RGcmFnbWVudHMpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZXJyb3JUeXBlOiBpc1NldChvYmplY3QuZXJyb3JUeXBlKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5lcnJvclR5cGUpIDogdW5kZWZpbmVkLFxuICAgICAgY29tcGFueUlkOiBpc1NldChvYmplY3QuY29tcGFueUlkKSA/IGdsb2JhbFRoaXMuTnVtYmVyKG9iamVjdC5jb21wYW55SWQpIDogMCxcbiAgICAgIGNyZWF0ZWRBdDogaXNTZXQob2JqZWN0LmNyZWF0ZWRBdCkgPyBnbG9iYWxUaGlzLk51bWJlcihvYmplY3QuY3JlYXRlZEF0KSA6IDAsXG4gICAgICB1cGRhdGVkQXQ6IGlzU2V0KG9iamVjdC51cGRhdGVkQXQpID8gZ2xvYmFsVGhpcy5OdW1iZXIob2JqZWN0LnVwZGF0ZWRBdCkgOiAwLFxuICAgICAgYXBwbGljYXRpb25OYW1lOiBpc1NldChvYmplY3QuYXBwbGljYXRpb25OYW1lKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5hcHBsaWNhdGlvbk5hbWUpIDogXCJcIixcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBUZW1wbGF0ZSk6IHVua25vd24ge1xuICAgIGNvbnN0IG9iajogYW55ID0ge307XG4gICAgaWYgKG1lc3NhZ2UudGVtcGxhdGVJZCAhPT0gXCJcIikge1xuICAgICAgb2JqLnRlbXBsYXRlSWQgPSBtZXNzYWdlLnRlbXBsYXRlSWQ7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmV2ZW50VHlwZSAhPT0gMCkge1xuICAgICAgb2JqLmV2ZW50VHlwZSA9IGV2ZW50VHlwZVRvSlNPTihtZXNzYWdlLmV2ZW50VHlwZSk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBhZ2VGcmFnbWVudHMgIT09IFwiXCIpIHtcbiAgICAgIG9iai5wYWdlRnJhZ21lbnRzID0gbWVzc2FnZS5wYWdlRnJhZ21lbnRzO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5lcnJvck1lc3NhZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLmVycm9yTWVzc2FnZSA9IG1lc3NhZ2UuZXJyb3JNZXNzYWdlO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5zdGF0dXNDb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9iai5zdGF0dXNDb2RlID0gbWVzc2FnZS5zdGF0dXNDb2RlO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmoubmV0d29ya1JlcXVlc3RGcmFnbWVudHMgPSBtZXNzYWdlLm5ldHdvcmtSZXF1ZXN0RnJhZ21lbnRzO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5lcnJvclR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLmVycm9yVHlwZSA9IG1lc3NhZ2UuZXJyb3JUeXBlO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5jb21wYW55SWQgIT09IDApIHtcbiAgICAgIG9iai5jb21wYW55SWQgPSBNYXRoLnJvdW5kKG1lc3NhZ2UuY29tcGFueUlkKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY3JlYXRlZEF0ICE9PSAwKSB7XG4gICAgICBvYmouY3JlYXRlZEF0ID0gTWF0aC5yb3VuZChtZXNzYWdlLmNyZWF0ZWRBdCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnVwZGF0ZWRBdCAhPT0gMCkge1xuICAgICAgb2JqLnVwZGF0ZWRBdCA9IE1hdGgucm91bmQobWVzc2FnZS51cGRhdGVkQXQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbk5hbWUgIT09IFwiXCIpIHtcbiAgICAgIG9iai5hcHBsaWNhdGlvbk5hbWUgPSBtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPFRlbXBsYXRlPik6IFRlbXBsYXRlIHtcbiAgICByZXR1cm4gVGVtcGxhdGUuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG4gIGZyb21QYXJ0aWFsKG9iamVjdDogRGVlcFBhcnRpYWw8VGVtcGxhdGU+KTogVGVtcGxhdGUge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlVGVtcGxhdGUoKTtcbiAgICBtZXNzYWdlLnRlbXBsYXRlSWQgPSBvYmplY3QudGVtcGxhdGVJZCA/PyBcIlwiO1xuICAgIG1lc3NhZ2UuZXZlbnRUeXBlID0gb2JqZWN0LmV2ZW50VHlwZSA/PyAwO1xuICAgIG1lc3NhZ2UucGFnZUZyYWdtZW50cyA9IG9iamVjdC5wYWdlRnJhZ21lbnRzID8/IFwiXCI7XG4gICAgbWVzc2FnZS5lcnJvck1lc3NhZ2UgPSBvYmplY3QuZXJyb3JNZXNzYWdlID8/IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLnN0YXR1c0NvZGUgPSBvYmplY3Quc3RhdHVzQ29kZSA/PyB1bmRlZmluZWQ7XG4gICAgbWVzc2FnZS5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyA9IG9iamVjdC5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyA/PyB1bmRlZmluZWQ7XG4gICAgbWVzc2FnZS5lcnJvclR5cGUgPSBvYmplY3QuZXJyb3JUeXBlID8/IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLmNvbXBhbnlJZCA9IG9iamVjdC5jb21wYW55SWQgPz8gMDtcbiAgICBtZXNzYWdlLmNyZWF0ZWRBdCA9IG9iamVjdC5jcmVhdGVkQXQgPz8gMDtcbiAgICBtZXNzYWdlLnVwZGF0ZWRBdCA9IG9iamVjdC51cGRhdGVkQXQgPz8gMDtcbiAgICBtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZSA9IG9iamVjdC5hcHBsaWNhdGlvbk5hbWUgPz8gXCJcIjtcbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VUZW1wbGF0ZVJlc3VsdCgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gIHJldHVybiB7IHRlbXBsYXRlOiB1bmRlZmluZWQsIG51bWJlck9mRXJyb3JzOiAwLCBudW1iZXJPZlVzZXJzOiAwIH07XG59XG5cbmV4cG9ydCBjb25zdCBUZW1wbGF0ZVJlc3VsdCA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFRlbXBsYXRlUmVzdWx0LCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UudGVtcGxhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgVGVtcGxhdGUuZW5jb2RlKG1lc3NhZ2UudGVtcGxhdGUsIHdyaXRlci51aW50MzIoMTApLmZvcmsoKSkubGRlbGltKCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm51bWJlck9mRXJyb3JzICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE2KS5pbnQ2NChtZXNzYWdlLm51bWJlck9mRXJyb3JzKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubnVtYmVyT2ZVc2VycyAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNCkuaW50NjQobWVzc2FnZS5udW1iZXJPZlVzZXJzKTtcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlcjtcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBfbTAuUmVhZGVyLmNyZWF0ZShpbnB1dCk7XG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGg7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VUZW1wbGF0ZVJlc3VsdCgpO1xuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKCk7XG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UudGVtcGxhdGUgPSBUZW1wbGF0ZS5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTYpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UubnVtYmVyT2ZFcnJvcnMgPSBsb25nVG9OdW1iZXIocmVhZGVyLmludDY0KCkgYXMgTG9uZyk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBpZiAodGFnICE9PSAyNCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5udW1iZXJPZlVzZXJzID0gbG9uZ1RvTnVtYmVyKHJlYWRlci5pbnQ2NCgpIGFzIExvbmcpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCh0YWcgJiA3KSA9PT0gNCB8fCB0YWcgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxuXG4gIGZyb21KU09OKG9iamVjdDogYW55KTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiB7XG4gICAgICB0ZW1wbGF0ZTogaXNTZXQob2JqZWN0LnRlbXBsYXRlKSA/IFRlbXBsYXRlLmZyb21KU09OKG9iamVjdC50ZW1wbGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICBudW1iZXJPZkVycm9yczogaXNTZXQob2JqZWN0Lm51bWJlck9mRXJyb3JzKSA/IGdsb2JhbFRoaXMuTnVtYmVyKG9iamVjdC5udW1iZXJPZkVycm9ycykgOiAwLFxuICAgICAgbnVtYmVyT2ZVc2VyczogaXNTZXQob2JqZWN0Lm51bWJlck9mVXNlcnMpID8gZ2xvYmFsVGhpcy5OdW1iZXIob2JqZWN0Lm51bWJlck9mVXNlcnMpIDogMCxcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBUZW1wbGF0ZVJlc3VsdCk6IHVua25vd24ge1xuICAgIGNvbnN0IG9iajogYW55ID0ge307XG4gICAgaWYgKG1lc3NhZ2UudGVtcGxhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLnRlbXBsYXRlID0gVGVtcGxhdGUudG9KU09OKG1lc3NhZ2UudGVtcGxhdGUpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5udW1iZXJPZkVycm9ycyAhPT0gMCkge1xuICAgICAgb2JqLm51bWJlck9mRXJyb3JzID0gTWF0aC5yb3VuZChtZXNzYWdlLm51bWJlck9mRXJyb3JzKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubnVtYmVyT2ZVc2VycyAhPT0gMCkge1xuICAgICAgb2JqLm51bWJlck9mVXNlcnMgPSBNYXRoLnJvdW5kKG1lc3NhZ2UubnVtYmVyT2ZVc2Vycyk7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0sXG5cbiAgY3JlYXRlKGJhc2U/OiBEZWVwUGFydGlhbDxUZW1wbGF0ZVJlc3VsdD4pOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIFRlbXBsYXRlUmVzdWx0LmZyb21QYXJ0aWFsKGJhc2UgPz8ge30pO1xuICB9LFxuICBmcm9tUGFydGlhbChvYmplY3Q6IERlZXBQYXJ0aWFsPFRlbXBsYXRlUmVzdWx0Pik6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVRlbXBsYXRlUmVzdWx0KCk7XG4gICAgbWVzc2FnZS50ZW1wbGF0ZSA9IChvYmplY3QudGVtcGxhdGUgIT09IHVuZGVmaW5lZCAmJiBvYmplY3QudGVtcGxhdGUgIT09IG51bGwpXG4gICAgICA/IFRlbXBsYXRlLmZyb21QYXJ0aWFsKG9iamVjdC50ZW1wbGF0ZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIG1lc3NhZ2UubnVtYmVyT2ZFcnJvcnMgPSBvYmplY3QubnVtYmVyT2ZFcnJvcnMgPz8gMDtcbiAgICBtZXNzYWdlLm51bWJlck9mVXNlcnMgPSBvYmplY3QubnVtYmVyT2ZVc2VycyA/PyAwO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxufTtcblxuZnVuY3Rpb24gY3JlYXRlQmFzZVRlbXBsYXRlRGF0ZSgpOiBUZW1wbGF0ZURhdGUge1xuICByZXR1cm4geyB0ZW1wbGF0ZUlkOiBcIlwiLCBjcmVhdGVkQXQ6IDAsIHVwZGF0ZWRBdDogMCB9O1xufVxuXG5leHBvcnQgY29uc3QgVGVtcGxhdGVEYXRlID0ge1xuICBlbmNvZGUobWVzc2FnZTogVGVtcGxhdGVEYXRlLCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UudGVtcGxhdGVJZCAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMCkuc3RyaW5nKG1lc3NhZ2UudGVtcGxhdGVJZCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNyZWF0ZWRBdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigxNikuaW50NjQobWVzc2FnZS5jcmVhdGVkQXQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS51cGRhdGVkQXQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMjQpLmludDY0KG1lc3NhZ2UudXBkYXRlZEF0KTtcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlcjtcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBUZW1wbGF0ZURhdGUge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogX20wLlJlYWRlci5jcmVhdGUoaW5wdXQpO1xuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlVGVtcGxhdGVEYXRlKCk7XG4gICAgd2hpbGUgKHJlYWRlci5wb3MgPCBlbmQpIHtcbiAgICAgIGNvbnN0IHRhZyA9IHJlYWRlci51aW50MzIoKTtcbiAgICAgIHN3aXRjaCAodGFnID4+PiAzKSB7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICBpZiAodGFnICE9PSAxMCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS50ZW1wbGF0ZUlkID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTYpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuY3JlYXRlZEF0ID0gbG9uZ1RvTnVtYmVyKHJlYWRlci5pbnQ2NCgpIGFzIExvbmcpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMjQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UudXBkYXRlZEF0ID0gbG9uZ1RvTnVtYmVyKHJlYWRlci5pbnQ2NCgpIGFzIExvbmcpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCh0YWcgJiA3KSA9PT0gNCB8fCB0YWcgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxuXG4gIGZyb21KU09OKG9iamVjdDogYW55KTogVGVtcGxhdGVEYXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGVtcGxhdGVJZDogaXNTZXQob2JqZWN0LnRlbXBsYXRlSWQpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LnRlbXBsYXRlSWQpIDogXCJcIixcbiAgICAgIGNyZWF0ZWRBdDogaXNTZXQob2JqZWN0LmNyZWF0ZWRBdCkgPyBnbG9iYWxUaGlzLk51bWJlcihvYmplY3QuY3JlYXRlZEF0KSA6IDAsXG4gICAgICB1cGRhdGVkQXQ6IGlzU2V0KG9iamVjdC51cGRhdGVkQXQpID8gZ2xvYmFsVGhpcy5OdW1iZXIob2JqZWN0LnVwZGF0ZWRBdCkgOiAwLFxuICAgIH07XG4gIH0sXG5cbiAgdG9KU09OKG1lc3NhZ2U6IFRlbXBsYXRlRGF0ZSk6IHVua25vd24ge1xuICAgIGNvbnN0IG9iajogYW55ID0ge307XG4gICAgaWYgKG1lc3NhZ2UudGVtcGxhdGVJZCAhPT0gXCJcIikge1xuICAgICAgb2JqLnRlbXBsYXRlSWQgPSBtZXNzYWdlLnRlbXBsYXRlSWQ7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmNyZWF0ZWRBdCAhPT0gMCkge1xuICAgICAgb2JqLmNyZWF0ZWRBdCA9IE1hdGgucm91bmQobWVzc2FnZS5jcmVhdGVkQXQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS51cGRhdGVkQXQgIT09IDApIHtcbiAgICAgIG9iai51cGRhdGVkQXQgPSBNYXRoLnJvdW5kKG1lc3NhZ2UudXBkYXRlZEF0KTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPFRlbXBsYXRlRGF0ZT4pOiBUZW1wbGF0ZURhdGUge1xuICAgIHJldHVybiBUZW1wbGF0ZURhdGUuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG4gIGZyb21QYXJ0aWFsKG9iamVjdDogRGVlcFBhcnRpYWw8VGVtcGxhdGVEYXRlPik6IFRlbXBsYXRlRGF0ZSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VUZW1wbGF0ZURhdGUoKTtcbiAgICBtZXNzYWdlLnRlbXBsYXRlSWQgPSBvYmplY3QudGVtcGxhdGVJZCA/PyBcIlwiO1xuICAgIG1lc3NhZ2UuY3JlYXRlZEF0ID0gb2JqZWN0LmNyZWF0ZWRBdCA/PyAwO1xuICAgIG1lc3NhZ2UudXBkYXRlZEF0ID0gb2JqZWN0LnVwZGF0ZWRBdCA/PyAwO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxufTtcblxudHlwZSBCdWlsdGluID0gRGF0ZSB8IEZ1bmN0aW9uIHwgVWludDhBcnJheSB8IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG5cbmV4cG9ydCB0eXBlIERlZXBQYXJ0aWFsPFQ+ID0gVCBleHRlbmRzIEJ1aWx0aW4gPyBUXG4gIDogVCBleHRlbmRzIGdsb2JhbFRoaXMuQXJyYXk8aW5mZXIgVT4gPyBnbG9iYWxUaGlzLkFycmF5PERlZXBQYXJ0aWFsPFU+PlxuICA6IFQgZXh0ZW5kcyBSZWFkb25seUFycmF5PGluZmVyIFU+ID8gUmVhZG9ubHlBcnJheTxEZWVwUGFydGlhbDxVPj5cbiAgOiBUIGV4dGVuZHMgeyAkY2FzZTogc3RyaW5nIH0gPyB7IFtLIGluIGtleW9mIE9taXQ8VCwgXCIkY2FzZVwiPl0/OiBEZWVwUGFydGlhbDxUW0tdPiB9ICYgeyAkY2FzZTogVFtcIiRjYXNlXCJdIH1cbiAgOiBUIGV4dGVuZHMge30gPyB7IFtLIGluIGtleW9mIFRdPzogRGVlcFBhcnRpYWw8VFtLXT4gfVxuICA6IFBhcnRpYWw8VD47XG5cbmZ1bmN0aW9uIGxvbmdUb051bWJlcihsb25nOiBMb25nKTogbnVtYmVyIHtcbiAgaWYgKGxvbmcuZ3QoZ2xvYmFsVGhpcy5OdW1iZXIuTUFYX1NBRkVfSU5URUdFUikpIHtcbiAgICB0aHJvdyBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIlZhbHVlIGlzIGxhcmdlciB0aGFuIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXCIpO1xuICB9XG4gIGlmIChsb25nLmx0KGdsb2JhbFRoaXMuTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVIpKSB7XG4gICAgdGhyb3cgbmV3IGdsb2JhbFRoaXMuRXJyb3IoXCJWYWx1ZSBpcyBzbWFsbGVyIHRoYW4gTnVtYmVyLk1JTl9TQUZFX0lOVEVHRVJcIik7XG4gIH1cbiAgcmV0dXJuIGxvbmcudG9OdW1iZXIoKTtcbn1cblxuaWYgKF9tMC51dGlsLkxvbmcgIT09IExvbmcpIHtcbiAgX20wLnV0aWwuTG9uZyA9IExvbmcgYXMgYW55O1xuICBfbTAuY29uZmlndXJlKCk7XG59XG5cbmZ1bmN0aW9uIGlzU2V0KHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgcmV0dXJuIHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB1bmRlZmluZWQ7XG59XG4iXX0=
540
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVtcGxhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm90by1tb2RlbHMvY29tL2NvcmFsb2dpeC9ydW0vdjIvdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHNEQUFzRDtBQUN0RCxZQUFZO0FBQ1osa0NBQWtDO0FBQ2xDLGlDQUFpQztBQUNqQyw4Q0FBOEM7Ozs7OztBQUU5QyxvQkFBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLGlFQUFxQztBQUV4QixRQUFBLGVBQWUsR0FBRyxzQkFBc0IsQ0FBQztBQUV0RCxJQUFZLFNBS1g7QUFMRCxXQUFZLFNBQVM7SUFDbkIsNkVBQTBCLENBQUE7SUFDMUIsaUVBQW9CLENBQUE7SUFDcEIsK0RBQW1CLENBQUE7SUFDbkIscUVBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQUxXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBS3BCO0FBRUQsU0FBZ0IsaUJBQWlCLENBQUMsTUFBVztJQUMzQyxRQUFRLE1BQU0sRUFBRTtRQUNkLEtBQUssQ0FBQyxDQUFDO1FBQ1AsS0FBSyx3QkFBd0I7WUFDM0IsT0FBTyxTQUFTLENBQUMsc0JBQXNCLENBQUM7UUFDMUMsS0FBSyxDQUFDLENBQUM7UUFDUCxLQUFLLGtCQUFrQjtZQUNyQixPQUFPLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztRQUNwQyxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssaUJBQWlCO1lBQ3BCLE9BQU8sU0FBUyxDQUFDLGVBQWUsQ0FBQztRQUNuQyxLQUFLLENBQUMsQ0FBQztRQUNQLEtBQUssb0JBQW9CO1lBQ3ZCLE9BQU8sU0FBUyxDQUFDLGtCQUFrQixDQUFDO1FBQ3RDO1lBQ0UsTUFBTSxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsTUFBTSxHQUFHLHFCQUFxQixDQUFDLENBQUM7S0FDM0Y7QUFDSCxDQUFDO0FBakJELDhDQWlCQztBQUVELFNBQWdCLGVBQWUsQ0FB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LEVBQUUsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7UUFDL0MsTUFBTSxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztLQUM3RTtJQUNELE9BQU8sSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3pCLENBQUM7QUFFRCxJQUFJLGlCQUFHLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxjQUFJLEVBQUU7SUFDMUIsaUJBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLGNBQVcsQ0FBQztJQUM1QixpQkFBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO0NBQ2pCO0FBRUQsU0FBUyxLQUFLLENBQUMsS0FBVTtJQUN2QixPQUFPLEtBQUssS0FBSyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsQ0FBQztBQUMvQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQ29kZSBnZW5lcmF0ZWQgYnkgcHJvdG9jLWdlbi10c19wcm90by4gRE8gTk9UIEVESVQuXG4vLyB2ZXJzaW9uczpcbi8vICAgcHJvdG9jLWdlbi10c19wcm90byAgdjEuMTgxLjFcbi8vICAgcHJvdG9jICAgICAgICAgICAgICAgdjMuMTkuMVxuLy8gc291cmNlOiBjb20vY29yYWxvZ2l4L3J1bS92Mi90ZW1wbGF0ZS5wcm90b1xuXG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IExvbmcgZnJvbSBcImxvbmdcIjtcbmltcG9ydCBfbTAgZnJvbSBcInByb3RvYnVmanMvbWluaW1hbFwiO1xuXG5leHBvcnQgY29uc3QgcHJvdG9idWZQYWNrYWdlID0gXCJjb20uY29yYWxvZ2l4LnJ1bS52MlwiO1xuXG5leHBvcnQgZW51bSBFdmVudFR5cGUge1xuICBFVkVOVF9UWVBFX1VOU1BFQ0lGSUVEID0gMCxcbiAgRVZFTlRfVFlQRV9FUlJPUiA9IDEsXG4gIEVWRU5UX1RZUEVfTE9HUyA9IDIsXG4gIEVWRU5UX1RZUEVfTkVUV09SSyA9IDMsXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBldmVudFR5cGVGcm9tSlNPTihvYmplY3Q6IGFueSk6IEV2ZW50VHlwZSB7XG4gIHN3aXRjaCAob2JqZWN0KSB7XG4gICAgY2FzZSAwOlxuICAgIGNhc2UgXCJFVkVOVF9UWVBFX1VOU1BFQ0lGSUVEXCI6XG4gICAgICByZXR1cm4gRXZlbnRUeXBlLkVWRU5UX1RZUEVfVU5TUEVDSUZJRUQ7XG4gICAgY2FzZSAxOlxuICAgIGNhc2UgXCJFVkVOVF9UWVBFX0VSUk9SXCI6XG4gICAgICByZXR1cm4gRXZlbnRUeXBlLkVWRU5UX1RZUEVfRVJST1I7XG4gICAgY2FzZSAyOlxuICAgIGNhc2UgXCJFVkVOVF9UWVBFX0xPR1NcIjpcbiAgICAgIHJldHVybiBFdmVudFR5cGUuRVZFTlRfVFlQRV9MT0dTO1xuICAgIGNhc2UgMzpcbiAgICBjYXNlIFwiRVZFTlRfVFlQRV9ORVRXT1JLXCI6XG4gICAgICByZXR1cm4gRXZlbnRUeXBlLkVWRU5UX1RZUEVfTkVUV09SSztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IGdsb2JhbFRoaXMuRXJyb3IoXCJVbnJlY29nbml6ZWQgZW51bSB2YWx1ZSBcIiArIG9iamVjdCArIFwiIGZvciBlbnVtIEV2ZW50VHlwZVwiKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZXZlbnRUeXBlVG9KU09OKG9iamVjdDogRXZlbnRUeXBlKTogc3RyaW5nIHtcbiAgc3dpdGNoIChvYmplY3QpIHtcbiAgICBjYXNlIEV2ZW50VHlwZS5FVkVOVF9UWVBFX1VOU1BFQ0lGSUVEOlxuICAgICAgcmV0dXJuIFwiRVZFTlRfVFlQRV9VTlNQRUNJRklFRFwiO1xuICAgIGNhc2UgRXZlbnRUeXBlLkVWRU5UX1RZUEVfRVJST1I6XG4gICAgICByZXR1cm4gXCJFVkVOVF9UWVBFX0VSUk9SXCI7XG4gICAgY2FzZSBFdmVudFR5cGUuRVZFTlRfVFlQRV9MT0dTOlxuICAgICAgcmV0dXJuIFwiRVZFTlRfVFlQRV9MT0dTXCI7XG4gICAgY2FzZSBFdmVudFR5cGUuRVZFTlRfVFlQRV9ORVRXT1JLOlxuICAgICAgcmV0dXJuIFwiRVZFTlRfVFlQRV9ORVRXT1JLXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiVW5yZWNvZ25pemVkIGVudW0gdmFsdWUgXCIgKyBvYmplY3QgKyBcIiBmb3IgZW51bSBFdmVudFR5cGVcIik7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXIge1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWVzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZSB7XG4gIHRlbXBsYXRlSWQ6IHN0cmluZztcbiAgZXZlbnRUeXBlOiBFdmVudFR5cGU7XG4gIHBhZ2VGcmFnbWVudHM6IHN0cmluZztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBzdGF0dXNDb2RlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBuZXR3b3JrUmVxdWVzdEZyYWdtZW50cz86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgZXJyb3JUeXBlPzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBjb21wYW55SWQ6IG51bWJlcjtcbiAgY3JlYXRlZEF0OiBudW1iZXI7XG4gIHVwZGF0ZWRBdDogbnVtYmVyO1xuICBhcHBsaWNhdGlvbk5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZW1wbGF0ZVJlc3VsdCB7XG4gIHRlbXBsYXRlOiBUZW1wbGF0ZSB8IHVuZGVmaW5lZDtcbiAgbnVtYmVyT2ZFcnJvcnM6IG51bWJlcjtcbiAgbnVtYmVyT2ZVc2VyczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlbXBsYXRlRGF0ZSB7XG4gIHRlbXBsYXRlSWQ6IHN0cmluZztcbiAgY3JlYXRlZEF0OiBudW1iZXI7XG4gIHVwZGF0ZWRBdDogbnVtYmVyO1xuICBhcHBsaWNhdGlvbk5hbWU/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGFwcGxpY2F0aW9uVmVyc2lvbj86IHN0cmluZyB8IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQmFzZUZpbHRlcigpOiBGaWx0ZXIge1xuICByZXR1cm4geyBrZXk6IFwiXCIsIHZhbHVlczogW10gfTtcbn1cblxuZXhwb3J0IGNvbnN0IEZpbHRlciA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IEZpbHRlciwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLmtleSAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigxMCkuc3RyaW5nKG1lc3NhZ2Uua2V5KTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB2IG9mIG1lc3NhZ2UudmFsdWVzKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE4KS5zdHJpbmcodiEpO1xuICAgIH1cbiAgICByZXR1cm4gd3JpdGVyO1xuICB9LFxuXG4gIGRlY29kZShpbnB1dDogX20wLlJlYWRlciB8IFVpbnQ4QXJyYXksIGxlbmd0aD86IG51bWJlcik6IEZpbHRlciB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBfbTAuUmVhZGVyLmNyZWF0ZShpbnB1dCk7XG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGg7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VGaWx0ZXIoKTtcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpO1xuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmICh0YWcgIT09IDEwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmtleSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmICh0YWcgIT09IDE4KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLnZhbHVlcy5wdXNoKHJlYWRlci5zdHJpbmcoKSk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoKHRhZyAmIDcpID09PSA0IHx8IHRhZyA9PT0gMCkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHJlYWRlci5za2lwVHlwZSh0YWcgJiA3KTtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG5cbiAgZnJvbUpTT04ob2JqZWN0OiBhbnkpOiBGaWx0ZXIge1xuICAgIHJldHVybiB7XG4gICAgICBrZXk6IGlzU2V0KG9iamVjdC5rZXkpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LmtleSkgOiBcIlwiLFxuICAgICAgdmFsdWVzOiBnbG9iYWxUaGlzLkFycmF5LmlzQXJyYXkob2JqZWN0Py52YWx1ZXMpID8gb2JqZWN0LnZhbHVlcy5tYXAoKGU6IGFueSkgPT4gZ2xvYmFsVGhpcy5TdHJpbmcoZSkpIDogW10sXG4gICAgfTtcbiAgfSxcblxuICB0b0pTT04obWVzc2FnZTogRmlsdGVyKTogdW5rbm93biB7XG4gICAgY29uc3Qgb2JqOiBhbnkgPSB7fTtcbiAgICBpZiAobWVzc2FnZS5rZXkgIT09IFwiXCIpIHtcbiAgICAgIG9iai5rZXkgPSBtZXNzYWdlLmtleTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UudmFsdWVzPy5sZW5ndGgpIHtcbiAgICAgIG9iai52YWx1ZXMgPSBtZXNzYWdlLnZhbHVlcztcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPEZpbHRlcj4pOiBGaWx0ZXIge1xuICAgIHJldHVybiBGaWx0ZXIuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG4gIGZyb21QYXJ0aWFsKG9iamVjdDogRGVlcFBhcnRpYWw8RmlsdGVyPik6IEZpbHRlciB7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VGaWx0ZXIoKTtcbiAgICBtZXNzYWdlLmtleSA9IG9iamVjdC5rZXkgPz8gXCJcIjtcbiAgICBtZXNzYWdlLnZhbHVlcyA9IG9iamVjdC52YWx1ZXM/Lm1hcCgoZSkgPT4gZSkgfHwgW107XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG59O1xuXG5mdW5jdGlvbiBjcmVhdGVCYXNlVGVtcGxhdGUoKTogVGVtcGxhdGUge1xuICByZXR1cm4ge1xuICAgIHRlbXBsYXRlSWQ6IFwiXCIsXG4gICAgZXZlbnRUeXBlOiAwLFxuICAgIHBhZ2VGcmFnbWVudHM6IFwiXCIsXG4gICAgZXJyb3JNZXNzYWdlOiB1bmRlZmluZWQsXG4gICAgc3RhdHVzQ29kZTogdW5kZWZpbmVkLFxuICAgIG5ldHdvcmtSZXF1ZXN0RnJhZ21lbnRzOiB1bmRlZmluZWQsXG4gICAgZXJyb3JUeXBlOiB1bmRlZmluZWQsXG4gICAgY29tcGFueUlkOiAwLFxuICAgIGNyZWF0ZWRBdDogMCxcbiAgICB1cGRhdGVkQXQ6IDAsXG4gICAgYXBwbGljYXRpb25OYW1lOiBcIlwiLFxuICB9O1xufVxuXG5leHBvcnQgY29uc3QgVGVtcGxhdGUgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBUZW1wbGF0ZSwgd3JpdGVyOiBfbTAuV3JpdGVyID0gX20wLldyaXRlci5jcmVhdGUoKSk6IF9tMC5Xcml0ZXIge1xuICAgIGlmIChtZXNzYWdlLnRlbXBsYXRlSWQgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTApLnN0cmluZyhtZXNzYWdlLnRlbXBsYXRlSWQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5ldmVudFR5cGUgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoMTYpLmludDMyKG1lc3NhZ2UuZXZlbnRUeXBlKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UucGFnZUZyYWdtZW50cyAhPT0gXCJcIikge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNikuc3RyaW5nKG1lc3NhZ2UucGFnZUZyYWdtZW50cyk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmVycm9yTWVzc2FnZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDM0KS5zdHJpbmcobWVzc2FnZS5lcnJvck1lc3NhZ2UpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5zdGF0dXNDb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDIpLnN0cmluZyhtZXNzYWdlLnN0YXR1c0NvZGUpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDUwKS5zdHJpbmcobWVzc2FnZS5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmVycm9yVHlwZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB3cml0ZXIudWludDMyKDU4KS5zdHJpbmcobWVzc2FnZS5lcnJvclR5cGUpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5jb21wYW55SWQgIT09IDApIHtcbiAgICAgIHdyaXRlci51aW50MzIoNjQpLmludDMyKG1lc3NhZ2UuY29tcGFueUlkKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY3JlYXRlZEF0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDcyKS5pbnQ2NChtZXNzYWdlLmNyZWF0ZWRBdCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnVwZGF0ZWRBdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMig4MCkuaW50NjQobWVzc2FnZS51cGRhdGVkQXQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbk5hbWUgIT09IFwiXCIpIHtcbiAgICAgIHdyaXRlci51aW50MzIoOTApLnN0cmluZyhtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZSk7XG4gICAgfVxuICAgIHJldHVybiB3cml0ZXI7XG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogVGVtcGxhdGUge1xuICAgIGNvbnN0IHJlYWRlciA9IGlucHV0IGluc3RhbmNlb2YgX20wLlJlYWRlciA/IGlucHV0IDogX20wLlJlYWRlci5jcmVhdGUoaW5wdXQpO1xuICAgIGxldCBlbmQgPSBsZW5ndGggPT09IHVuZGVmaW5lZCA/IHJlYWRlci5sZW4gOiByZWFkZXIucG9zICsgbGVuZ3RoO1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlVGVtcGxhdGUoKTtcbiAgICB3aGlsZSAocmVhZGVyLnBvcyA8IGVuZCkge1xuICAgICAgY29uc3QgdGFnID0gcmVhZGVyLnVpbnQzMigpO1xuICAgICAgc3dpdGNoICh0YWcgPj4+IDMpIHtcbiAgICAgICAgY2FzZSAxOlxuICAgICAgICAgIGlmICh0YWcgIT09IDEwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLnRlbXBsYXRlSWQgPSByZWFkZXIuc3RyaW5nKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBpZiAodGFnICE9PSAxNikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5ldmVudFR5cGUgPSByZWFkZXIuaW50MzIoKSBhcyBhbnk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBpZiAodGFnICE9PSAyNikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5wYWdlRnJhZ21lbnRzID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMzQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3JNZXNzYWdlID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNDIpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2Uuc3RhdHVzQ29kZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA2OlxuICAgICAgICAgIGlmICh0YWcgIT09IDUwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLm5ldHdvcmtSZXF1ZXN0RnJhZ21lbnRzID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDc6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNTgpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3JUeXBlID0gcmVhZGVyLnN0cmluZygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gNjQpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UuY29tcGFueUlkID0gcmVhZGVyLmludDMyKCk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgOTpcbiAgICAgICAgICBpZiAodGFnICE9PSA3Mikge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5jcmVhdGVkQXQgPSBsb25nVG9OdW1iZXIocmVhZGVyLmludDY0KCkgYXMgTG9uZyk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMTA6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gODApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UudXBkYXRlZEF0ID0gbG9uZ1RvTnVtYmVyKHJlYWRlci5pbnQ2NCgpIGFzIExvbmcpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDExOlxuICAgICAgICAgIGlmICh0YWcgIT09IDkwKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodGFnICYgNykgPT09IDQgfHwgdGFnID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcblxuICBmcm9tSlNPTihvYmplY3Q6IGFueSk6IFRlbXBsYXRlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGVtcGxhdGVJZDogaXNTZXQob2JqZWN0LnRlbXBsYXRlSWQpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LnRlbXBsYXRlSWQpIDogXCJcIixcbiAgICAgIGV2ZW50VHlwZTogaXNTZXQob2JqZWN0LmV2ZW50VHlwZSkgPyBldmVudFR5cGVGcm9tSlNPTihvYmplY3QuZXZlbnRUeXBlKSA6IDAsXG4gICAgICBwYWdlRnJhZ21lbnRzOiBpc1NldChvYmplY3QucGFnZUZyYWdtZW50cykgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QucGFnZUZyYWdtZW50cykgOiBcIlwiLFxuICAgICAgZXJyb3JNZXNzYWdlOiBpc1NldChvYmplY3QuZXJyb3JNZXNzYWdlKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5lcnJvck1lc3NhZ2UpIDogdW5kZWZpbmVkLFxuICAgICAgc3RhdHVzQ29kZTogaXNTZXQob2JqZWN0LnN0YXR1c0NvZGUpID8gZ2xvYmFsVGhpcy5TdHJpbmcob2JqZWN0LnN0YXR1c0NvZGUpIDogdW5kZWZpbmVkLFxuICAgICAgbmV0d29ya1JlcXVlc3RGcmFnbWVudHM6IGlzU2V0KG9iamVjdC5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cylcbiAgICAgICAgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QubmV0d29ya1JlcXVlc3RGcmFnbWVudHMpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgZXJyb3JUeXBlOiBpc1NldChvYmplY3QuZXJyb3JUeXBlKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5lcnJvclR5cGUpIDogdW5kZWZpbmVkLFxuICAgICAgY29tcGFueUlkOiBpc1NldChvYmplY3QuY29tcGFueUlkKSA/IGdsb2JhbFRoaXMuTnVtYmVyKG9iamVjdC5jb21wYW55SWQpIDogMCxcbiAgICAgIGNyZWF0ZWRBdDogaXNTZXQob2JqZWN0LmNyZWF0ZWRBdCkgPyBnbG9iYWxUaGlzLk51bWJlcihvYmplY3QuY3JlYXRlZEF0KSA6IDAsXG4gICAgICB1cGRhdGVkQXQ6IGlzU2V0KG9iamVjdC51cGRhdGVkQXQpID8gZ2xvYmFsVGhpcy5OdW1iZXIob2JqZWN0LnVwZGF0ZWRBdCkgOiAwLFxuICAgICAgYXBwbGljYXRpb25OYW1lOiBpc1NldChvYmplY3QuYXBwbGljYXRpb25OYW1lKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC5hcHBsaWNhdGlvbk5hbWUpIDogXCJcIixcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBUZW1wbGF0ZSk6IHVua25vd24ge1xuICAgIGNvbnN0IG9iajogYW55ID0ge307XG4gICAgaWYgKG1lc3NhZ2UudGVtcGxhdGVJZCAhPT0gXCJcIikge1xuICAgICAgb2JqLnRlbXBsYXRlSWQgPSBtZXNzYWdlLnRlbXBsYXRlSWQ7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmV2ZW50VHlwZSAhPT0gMCkge1xuICAgICAgb2JqLmV2ZW50VHlwZSA9IGV2ZW50VHlwZVRvSlNPTihtZXNzYWdlLmV2ZW50VHlwZSk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnBhZ2VGcmFnbWVudHMgIT09IFwiXCIpIHtcbiAgICAgIG9iai5wYWdlRnJhZ21lbnRzID0gbWVzc2FnZS5wYWdlRnJhZ21lbnRzO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5lcnJvck1lc3NhZ2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLmVycm9yTWVzc2FnZSA9IG1lc3NhZ2UuZXJyb3JNZXNzYWdlO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5zdGF0dXNDb2RlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9iai5zdGF0dXNDb2RlID0gbWVzc2FnZS5zdGF0dXNDb2RlO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmoubmV0d29ya1JlcXVlc3RGcmFnbWVudHMgPSBtZXNzYWdlLm5ldHdvcmtSZXF1ZXN0RnJhZ21lbnRzO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5lcnJvclR5cGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLmVycm9yVHlwZSA9IG1lc3NhZ2UuZXJyb3JUeXBlO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5jb21wYW55SWQgIT09IDApIHtcbiAgICAgIG9iai5jb21wYW55SWQgPSBNYXRoLnJvdW5kKG1lc3NhZ2UuY29tcGFueUlkKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY3JlYXRlZEF0ICE9PSAwKSB7XG4gICAgICBvYmouY3JlYXRlZEF0ID0gTWF0aC5yb3VuZChtZXNzYWdlLmNyZWF0ZWRBdCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnVwZGF0ZWRBdCAhPT0gMCkge1xuICAgICAgb2JqLnVwZGF0ZWRBdCA9IE1hdGgucm91bmQobWVzc2FnZS51cGRhdGVkQXQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbk5hbWUgIT09IFwiXCIpIHtcbiAgICAgIG9iai5hcHBsaWNhdGlvbk5hbWUgPSBtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIG9iajtcbiAgfSxcblxuICBjcmVhdGUoYmFzZT86IERlZXBQYXJ0aWFsPFRlbXBsYXRlPik6IFRlbXBsYXRlIHtcbiAgICByZXR1cm4gVGVtcGxhdGUuZnJvbVBhcnRpYWwoYmFzZSA/PyB7fSk7XG4gIH0sXG4gIGZyb21QYXJ0aWFsKG9iamVjdDogRGVlcFBhcnRpYWw8VGVtcGxhdGU+KTogVGVtcGxhdGUge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlVGVtcGxhdGUoKTtcbiAgICBtZXNzYWdlLnRlbXBsYXRlSWQgPSBvYmplY3QudGVtcGxhdGVJZCA/PyBcIlwiO1xuICAgIG1lc3NhZ2UuZXZlbnRUeXBlID0gb2JqZWN0LmV2ZW50VHlwZSA/PyAwO1xuICAgIG1lc3NhZ2UucGFnZUZyYWdtZW50cyA9IG9iamVjdC5wYWdlRnJhZ21lbnRzID8/IFwiXCI7XG4gICAgbWVzc2FnZS5lcnJvck1lc3NhZ2UgPSBvYmplY3QuZXJyb3JNZXNzYWdlID8/IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLnN0YXR1c0NvZGUgPSBvYmplY3Quc3RhdHVzQ29kZSA/PyB1bmRlZmluZWQ7XG4gICAgbWVzc2FnZS5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyA9IG9iamVjdC5uZXR3b3JrUmVxdWVzdEZyYWdtZW50cyA/PyB1bmRlZmluZWQ7XG4gICAgbWVzc2FnZS5lcnJvclR5cGUgPSBvYmplY3QuZXJyb3JUeXBlID8/IHVuZGVmaW5lZDtcbiAgICBtZXNzYWdlLmNvbXBhbnlJZCA9IG9iamVjdC5jb21wYW55SWQgPz8gMDtcbiAgICBtZXNzYWdlLmNyZWF0ZWRBdCA9IG9iamVjdC5jcmVhdGVkQXQgPz8gMDtcbiAgICBtZXNzYWdlLnVwZGF0ZWRBdCA9IG9iamVjdC51cGRhdGVkQXQgPz8gMDtcbiAgICBtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZSA9IG9iamVjdC5hcHBsaWNhdGlvbk5hbWUgPz8gXCJcIjtcbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUJhc2VUZW1wbGF0ZVJlc3VsdCgpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gIHJldHVybiB7IHRlbXBsYXRlOiB1bmRlZmluZWQsIG51bWJlck9mRXJyb3JzOiAwLCBudW1iZXJPZlVzZXJzOiAwIH07XG59XG5cbmV4cG9ydCBjb25zdCBUZW1wbGF0ZVJlc3VsdCA9IHtcbiAgZW5jb2RlKG1lc3NhZ2U6IFRlbXBsYXRlUmVzdWx0LCB3cml0ZXI6IF9tMC5Xcml0ZXIgPSBfbTAuV3JpdGVyLmNyZWF0ZSgpKTogX20wLldyaXRlciB7XG4gICAgaWYgKG1lc3NhZ2UudGVtcGxhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgVGVtcGxhdGUuZW5jb2RlKG1lc3NhZ2UudGVtcGxhdGUsIHdyaXRlci51aW50MzIoMTApLmZvcmsoKSkubGRlbGltKCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLm51bWJlck9mRXJyb3JzICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE2KS5pbnQ2NChtZXNzYWdlLm51bWJlck9mRXJyb3JzKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubnVtYmVyT2ZVc2VycyAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNCkuaW50NjQobWVzc2FnZS5udW1iZXJPZlVzZXJzKTtcbiAgICB9XG4gICAgcmV0dXJuIHdyaXRlcjtcbiAgfSxcblxuICBkZWNvZGUoaW5wdXQ6IF9tMC5SZWFkZXIgfCBVaW50OEFycmF5LCBsZW5ndGg/OiBudW1iZXIpOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgY29uc3QgcmVhZGVyID0gaW5wdXQgaW5zdGFuY2VvZiBfbTAuUmVhZGVyID8gaW5wdXQgOiBfbTAuUmVhZGVyLmNyZWF0ZShpbnB1dCk7XG4gICAgbGV0IGVuZCA9IGxlbmd0aCA9PT0gdW5kZWZpbmVkID8gcmVhZGVyLmxlbiA6IHJlYWRlci5wb3MgKyBsZW5ndGg7XG4gICAgY29uc3QgbWVzc2FnZSA9IGNyZWF0ZUJhc2VUZW1wbGF0ZVJlc3VsdCgpO1xuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKCk7XG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UudGVtcGxhdGUgPSBUZW1wbGF0ZS5kZWNvZGUocmVhZGVyLCByZWFkZXIudWludDMyKCkpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTYpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UubnVtYmVyT2ZFcnJvcnMgPSBsb25nVG9OdW1iZXIocmVhZGVyLmludDY0KCkgYXMgTG9uZyk7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBpZiAodGFnICE9PSAyNCkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbWVzc2FnZS5udW1iZXJPZlVzZXJzID0gbG9uZ1RvTnVtYmVyKHJlYWRlci5pbnQ2NCgpIGFzIExvbmcpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCh0YWcgJiA3KSA9PT0gNCB8fCB0YWcgPT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICByZWFkZXIuc2tpcFR5cGUodGFnICYgNyk7XG4gICAgfVxuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxuXG4gIGZyb21KU09OKG9iamVjdDogYW55KTogVGVtcGxhdGVSZXN1bHQge1xuICAgIHJldHVybiB7XG4gICAgICB0ZW1wbGF0ZTogaXNTZXQob2JqZWN0LnRlbXBsYXRlKSA/IFRlbXBsYXRlLmZyb21KU09OKG9iamVjdC50ZW1wbGF0ZSkgOiB1bmRlZmluZWQsXG4gICAgICBudW1iZXJPZkVycm9yczogaXNTZXQob2JqZWN0Lm51bWJlck9mRXJyb3JzKSA/IGdsb2JhbFRoaXMuTnVtYmVyKG9iamVjdC5udW1iZXJPZkVycm9ycykgOiAwLFxuICAgICAgbnVtYmVyT2ZVc2VyczogaXNTZXQob2JqZWN0Lm51bWJlck9mVXNlcnMpID8gZ2xvYmFsVGhpcy5OdW1iZXIob2JqZWN0Lm51bWJlck9mVXNlcnMpIDogMCxcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBUZW1wbGF0ZVJlc3VsdCk6IHVua25vd24ge1xuICAgIGNvbnN0IG9iajogYW55ID0ge307XG4gICAgaWYgKG1lc3NhZ2UudGVtcGxhdGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb2JqLnRlbXBsYXRlID0gVGVtcGxhdGUudG9KU09OKG1lc3NhZ2UudGVtcGxhdGUpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5udW1iZXJPZkVycm9ycyAhPT0gMCkge1xuICAgICAgb2JqLm51bWJlck9mRXJyb3JzID0gTWF0aC5yb3VuZChtZXNzYWdlLm51bWJlck9mRXJyb3JzKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UubnVtYmVyT2ZVc2VycyAhPT0gMCkge1xuICAgICAgb2JqLm51bWJlck9mVXNlcnMgPSBNYXRoLnJvdW5kKG1lc3NhZ2UubnVtYmVyT2ZVc2Vycyk7XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0sXG5cbiAgY3JlYXRlKGJhc2U/OiBEZWVwUGFydGlhbDxUZW1wbGF0ZVJlc3VsdD4pOiBUZW1wbGF0ZVJlc3VsdCB7XG4gICAgcmV0dXJuIFRlbXBsYXRlUmVzdWx0LmZyb21QYXJ0aWFsKGJhc2UgPz8ge30pO1xuICB9LFxuICBmcm9tUGFydGlhbChvYmplY3Q6IERlZXBQYXJ0aWFsPFRlbXBsYXRlUmVzdWx0Pik6IFRlbXBsYXRlUmVzdWx0IHtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVRlbXBsYXRlUmVzdWx0KCk7XG4gICAgbWVzc2FnZS50ZW1wbGF0ZSA9IChvYmplY3QudGVtcGxhdGUgIT09IHVuZGVmaW5lZCAmJiBvYmplY3QudGVtcGxhdGUgIT09IG51bGwpXG4gICAgICA/IFRlbXBsYXRlLmZyb21QYXJ0aWFsKG9iamVjdC50ZW1wbGF0ZSlcbiAgICAgIDogdW5kZWZpbmVkO1xuICAgIG1lc3NhZ2UubnVtYmVyT2ZFcnJvcnMgPSBvYmplY3QubnVtYmVyT2ZFcnJvcnMgPz8gMDtcbiAgICBtZXNzYWdlLm51bWJlck9mVXNlcnMgPSBvYmplY3QubnVtYmVyT2ZVc2VycyA/PyAwO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9LFxufTtcblxuZnVuY3Rpb24gY3JlYXRlQmFzZVRlbXBsYXRlRGF0ZSgpOiBUZW1wbGF0ZURhdGUge1xuICByZXR1cm4geyB0ZW1wbGF0ZUlkOiBcIlwiLCBjcmVhdGVkQXQ6IDAsIHVwZGF0ZWRBdDogMCwgYXBwbGljYXRpb25OYW1lOiB1bmRlZmluZWQsIGFwcGxpY2F0aW9uVmVyc2lvbjogdW5kZWZpbmVkIH07XG59XG5cbmV4cG9ydCBjb25zdCBUZW1wbGF0ZURhdGUgPSB7XG4gIGVuY29kZShtZXNzYWdlOiBUZW1wbGF0ZURhdGUsIHdyaXRlcjogX20wLldyaXRlciA9IF9tMC5Xcml0ZXIuY3JlYXRlKCkpOiBfbTAuV3JpdGVyIHtcbiAgICBpZiAobWVzc2FnZS50ZW1wbGF0ZUlkICE9PSBcIlwiKSB7XG4gICAgICB3cml0ZXIudWludDMyKDEwKS5zdHJpbmcobWVzc2FnZS50ZW1wbGF0ZUlkKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuY3JlYXRlZEF0ICE9PSAwKSB7XG4gICAgICB3cml0ZXIudWludDMyKDE2KS5pbnQ2NChtZXNzYWdlLmNyZWF0ZWRBdCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLnVwZGF0ZWRBdCAhPT0gMCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigyNCkuaW50NjQobWVzc2FnZS51cGRhdGVkQXQpO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5hcHBsaWNhdGlvbk5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgd3JpdGVyLnVpbnQzMigzNCkuc3RyaW5nKG1lc3NhZ2UuYXBwbGljYXRpb25OYW1lKTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UuYXBwbGljYXRpb25WZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHdyaXRlci51aW50MzIoNDIpLnN0cmluZyhtZXNzYWdlLmFwcGxpY2F0aW9uVmVyc2lvbik7XG4gICAgfVxuICAgIHJldHVybiB3cml0ZXI7XG4gIH0sXG5cbiAgZGVjb2RlKGlucHV0OiBfbTAuUmVhZGVyIHwgVWludDhBcnJheSwgbGVuZ3RoPzogbnVtYmVyKTogVGVtcGxhdGVEYXRlIHtcbiAgICBjb25zdCByZWFkZXIgPSBpbnB1dCBpbnN0YW5jZW9mIF9tMC5SZWFkZXIgPyBpbnB1dCA6IF9tMC5SZWFkZXIuY3JlYXRlKGlucHV0KTtcbiAgICBsZXQgZW5kID0gbGVuZ3RoID09PSB1bmRlZmluZWQgPyByZWFkZXIubGVuIDogcmVhZGVyLnBvcyArIGxlbmd0aDtcbiAgICBjb25zdCBtZXNzYWdlID0gY3JlYXRlQmFzZVRlbXBsYXRlRGF0ZSgpO1xuICAgIHdoaWxlIChyZWFkZXIucG9zIDwgZW5kKSB7XG4gICAgICBjb25zdCB0YWcgPSByZWFkZXIudWludDMyKCk7XG4gICAgICBzd2l0Y2ggKHRhZyA+Pj4gMykge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKHRhZyAhPT0gMTApIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG1lc3NhZ2UudGVtcGxhdGVJZCA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAyOlxuICAgICAgICAgIGlmICh0YWcgIT09IDE2KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmNyZWF0ZWRBdCA9IGxvbmdUb051bWJlcihyZWFkZXIuaW50NjQoKSBhcyBMb25nKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIGlmICh0YWcgIT09IDI0KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLnVwZGF0ZWRBdCA9IGxvbmdUb051bWJlcihyZWFkZXIuaW50NjQoKSBhcyBMb25nKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA0OlxuICAgICAgICAgIGlmICh0YWcgIT09IDM0KSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZSA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIGlmICh0YWcgIT09IDQyKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBtZXNzYWdlLmFwcGxpY2F0aW9uVmVyc2lvbiA9IHJlYWRlci5zdHJpbmcoKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgodGFnICYgNykgPT09IDQgfHwgdGFnID09PSAwKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgcmVhZGVyLnNraXBUeXBlKHRhZyAmIDcpO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfSxcblxuICBmcm9tSlNPTihvYmplY3Q6IGFueSk6IFRlbXBsYXRlRGF0ZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRlbXBsYXRlSWQ6IGlzU2V0KG9iamVjdC50ZW1wbGF0ZUlkKSA/IGdsb2JhbFRoaXMuU3RyaW5nKG9iamVjdC50ZW1wbGF0ZUlkKSA6IFwiXCIsXG4gICAgICBjcmVhdGVkQXQ6IGlzU2V0KG9iamVjdC5jcmVhdGVkQXQpID8gZ2xvYmFsVGhpcy5OdW1iZXIob2JqZWN0LmNyZWF0ZWRBdCkgOiAwLFxuICAgICAgdXBkYXRlZEF0OiBpc1NldChvYmplY3QudXBkYXRlZEF0KSA/IGdsb2JhbFRoaXMuTnVtYmVyKG9iamVjdC51cGRhdGVkQXQpIDogMCxcbiAgICAgIGFwcGxpY2F0aW9uTmFtZTogaXNTZXQob2JqZWN0LmFwcGxpY2F0aW9uTmFtZSkgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QuYXBwbGljYXRpb25OYW1lKSA6IHVuZGVmaW5lZCxcbiAgICAgIGFwcGxpY2F0aW9uVmVyc2lvbjogaXNTZXQob2JqZWN0LmFwcGxpY2F0aW9uVmVyc2lvbikgPyBnbG9iYWxUaGlzLlN0cmluZyhvYmplY3QuYXBwbGljYXRpb25WZXJzaW9uKSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9LFxuXG4gIHRvSlNPTihtZXNzYWdlOiBUZW1wbGF0ZURhdGUpOiB1bmtub3duIHtcbiAgICBjb25zdCBvYmo6IGFueSA9IHt9O1xuICAgIGlmIChtZXNzYWdlLnRlbXBsYXRlSWQgIT09IFwiXCIpIHtcbiAgICAgIG9iai50ZW1wbGF0ZUlkID0gbWVzc2FnZS50ZW1wbGF0ZUlkO1xuICAgIH1cbiAgICBpZiAobWVzc2FnZS5jcmVhdGVkQXQgIT09IDApIHtcbiAgICAgIG9iai5jcmVhdGVkQXQgPSBNYXRoLnJvdW5kKG1lc3NhZ2UuY3JlYXRlZEF0KTtcbiAgICB9XG4gICAgaWYgKG1lc3NhZ2UudXBkYXRlZEF0ICE9PSAwKSB7XG4gICAgICBvYmoudXBkYXRlZEF0ID0gTWF0aC5yb3VuZChtZXNzYWdlLnVwZGF0ZWRBdCk7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmouYXBwbGljYXRpb25OYW1lID0gbWVzc2FnZS5hcHBsaWNhdGlvbk5hbWU7XG4gICAgfVxuICAgIGlmIChtZXNzYWdlLmFwcGxpY2F0aW9uVmVyc2lvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvYmouYXBwbGljYXRpb25WZXJzaW9uID0gbWVzc2FnZS5hcHBsaWNhdGlvblZlcnNpb247XG4gICAgfVxuICAgIHJldHVybiBvYmo7XG4gIH0sXG5cbiAgY3JlYXRlKGJhc2U/OiBEZWVwUGFydGlhbDxUZW1wbGF0ZURhdGU+KTogVGVtcGxhdGVEYXRlIHtcbiAgICByZXR1cm4gVGVtcGxhdGVEYXRlLmZyb21QYXJ0aWFsKGJhc2UgPz8ge30pO1xuICB9LFxuICBmcm9tUGFydGlhbChvYmplY3Q6IERlZXBQYXJ0aWFsPFRlbXBsYXRlRGF0ZT4pOiBUZW1wbGF0ZURhdGUge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBjcmVhdGVCYXNlVGVtcGxhdGVEYXRlKCk7XG4gICAgbWVzc2FnZS50ZW1wbGF0ZUlkID0gb2JqZWN0LnRlbXBsYXRlSWQgPz8gXCJcIjtcbiAgICBtZXNzYWdlLmNyZWF0ZWRBdCA9IG9iamVjdC5jcmVhdGVkQXQgPz8gMDtcbiAgICBtZXNzYWdlLnVwZGF0ZWRBdCA9IG9iamVjdC51cGRhdGVkQXQgPz8gMDtcbiAgICBtZXNzYWdlLmFwcGxpY2F0aW9uTmFtZSA9IG9iamVjdC5hcHBsaWNhdGlvbk5hbWUgPz8gdW5kZWZpbmVkO1xuICAgIG1lc3NhZ2UuYXBwbGljYXRpb25WZXJzaW9uID0gb2JqZWN0LmFwcGxpY2F0aW9uVmVyc2lvbiA/PyB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH0sXG59O1xuXG50eXBlIEJ1aWx0aW4gPSBEYXRlIHwgRnVuY3Rpb24gfCBVaW50OEFycmF5IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgRGVlcFBhcnRpYWw8VD4gPSBUIGV4dGVuZHMgQnVpbHRpbiA/IFRcbiAgOiBUIGV4dGVuZHMgZ2xvYmFsVGhpcy5BcnJheTxpbmZlciBVPiA/IGdsb2JhbFRoaXMuQXJyYXk8RGVlcFBhcnRpYWw8VT4+XG4gIDogVCBleHRlbmRzIFJlYWRvbmx5QXJyYXk8aW5mZXIgVT4gPyBSZWFkb25seUFycmF5PERlZXBQYXJ0aWFsPFU+PlxuICA6IFQgZXh0ZW5kcyB7ICRjYXNlOiBzdHJpbmcgfSA/IHsgW0sgaW4ga2V5b2YgT21pdDxULCBcIiRjYXNlXCI+XT86IERlZXBQYXJ0aWFsPFRbS10+IH0gJiB7ICRjYXNlOiBUW1wiJGNhc2VcIl0gfVxuICA6IFQgZXh0ZW5kcyB7fSA/IHsgW0sgaW4ga2V5b2YgVF0/OiBEZWVwUGFydGlhbDxUW0tdPiB9XG4gIDogUGFydGlhbDxUPjtcblxuZnVuY3Rpb24gbG9uZ1RvTnVtYmVyKGxvbmc6IExvbmcpOiBudW1iZXIge1xuICBpZiAobG9uZy5ndChnbG9iYWxUaGlzLk51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSkge1xuICAgIHRocm93IG5ldyBnbG9iYWxUaGlzLkVycm9yKFwiVmFsdWUgaXMgbGFyZ2VyIHRoYW4gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcIik7XG4gIH1cbiAgaWYgKGxvbmcubHQoZ2xvYmFsVGhpcy5OdW1iZXIuTUlOX1NBRkVfSU5URUdFUikpIHtcbiAgICB0aHJvdyBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIlZhbHVlIGlzIHNtYWxsZXIgdGhhbiBOdW1iZXIuTUlOX1NBRkVfSU5URUdFUlwiKTtcbiAgfVxuICByZXR1cm4gbG9uZy50b051bWJlcigpO1xufVxuXG5pZiAoX20wLnV0aWwuTG9uZyAhPT0gTG9uZykge1xuICBfbTAudXRpbC5Mb25nID0gTG9uZyBhcyBhbnk7XG4gIF9tMC5jb25maWd1cmUoKTtcbn1cblxuZnVuY3Rpb24gaXNTZXQodmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZDtcbn1cbiJdfQ==
@@ -6,4 +6,5 @@ export declare class SourceMapsService extends BaseService {
6
6
  protected getFileProcessorMethod(): typeof FileProcessor.traverse;
7
7
  protected getLogPrefix(): string;
8
8
  protected getFileExtension(): string;
9
+ upload(application: string, version: string, repoName: string | undefined, commitHash: string | undefined, orgName: string | undefined, folderPath: string, env: string, privateKey: string, override?: boolean): Promise<void>;
9
10
  }
@@ -1,9 +1,20 @@
1
1
  "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
2
11
  Object.defineProperty(exports, "__esModule", { value: true });
3
12
  exports.SourceMapsService = void 0;
4
13
  const source_maps_api_1 = require("../../api/source-maps/source-maps.api");
5
14
  const file_processor_utils_1 = require("../../utils/file-processor.utils");
6
15
  const base_service_1 = require("../base/base.service");
16
+ const blobset_service_1 = require("../../proto-models/com/coralogix/blobset/v2/blobset_service");
17
+ const consts_1 = require("../../consts/consts");
7
18
  class SourceMapsService extends base_service_1.BaseService {
8
19
  getApi() {
9
20
  return new source_maps_api_1.SourceMapsApi();
@@ -17,6 +28,17 @@ class SourceMapsService extends base_service_1.BaseService {
17
28
  getFileExtension() {
18
29
  return '.js.map';
19
30
  }
31
+ upload(application, version, repoName, commitHash, orgName, folderPath, env, privateKey, override = false) {
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ const request = blobset_service_1.UploadBlobRequest.create();
34
+ const api = this.getApi();
35
+ console.log(consts_1.GRAY_COLOR, `🚀 ${override ? 'Replacing' : 'Uploading'} ${this.getLogPrefix()}... (${new Date().toUTCString()})`);
36
+ yield this.getFileProcessorMethod()(folderPath, request, this.getFileExtension());
37
+ yield api.upload(request, application, version, repoName, commitHash, orgName, env, privateKey, override);
38
+ console.log(consts_1.GREEN_COLOR, `✅ ${this.getLogPrefix()} ${override ? 'replaced' : 'uploaded'} successfully!`);
39
+ console.log(consts_1.GREEN_COLOR, '✅ Processing complete.');
40
+ });
41
+ }
20
42
  }
21
43
  exports.SourceMapsService = SourceMapsService;
22
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLW1hcHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NlcnZpY2VzL3NvdXJjZS1tYXBzL3NvdXJjZS1tYXBzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkVBQXNFO0FBQ3RFLDJFQUFpRTtBQUNqRSx1REFBbUQ7QUFFbkQsTUFBYSxpQkFBa0IsU0FBUSwwQkFBVztJQUN0QyxNQUFNO1FBQ2QsT0FBTyxJQUFJLCtCQUFhLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRVMsc0JBQXNCO1FBQzlCLE9BQU8sb0NBQWEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLG9DQUFhLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRVMsWUFBWTtRQUNwQixPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRVMsZ0JBQWdCO1FBQ3hCLE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7Q0FDRjtBQWhCRCw4Q0FnQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTb3VyY2VNYXBzQXBpIH0gZnJvbSAnLi4vLi4vYXBpL3NvdXJjZS1tYXBzL3NvdXJjZS1tYXBzLmFwaSc7XG5pbXBvcnQgeyBGaWxlUHJvY2Vzc29yIH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS1wcm9jZXNzb3IudXRpbHMnO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi9iYXNlL2Jhc2Uuc2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBTb3VyY2VNYXBzU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIGdldEFwaSgpIHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZU1hcHNBcGkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWxlUHJvY2Vzc29yTWV0aG9kKCkge1xuICAgIHJldHVybiBGaWxlUHJvY2Vzc29yLnRyYXZlcnNlLmJpbmQoRmlsZVByb2Nlc3Nvcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TG9nUHJlZml4KCkge1xuICAgIHJldHVybiAnU291cmNlIG1hcHMnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZpbGVFeHRlbnNpb24oKSB7XG4gICAgcmV0dXJuICcuanMubWFwJztcbiAgfVxufVxuIl19
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic291cmNlLW1hcHMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NlcnZpY2VzL3NvdXJjZS1tYXBzL3NvdXJjZS1tYXBzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsMkVBQXNFO0FBQ3RFLDJFQUFpRTtBQUNqRSx1REFBbUQ7QUFDbkQsaUdBQWdHO0FBQ2hHLGdEQUE4RDtBQUU5RCxNQUFhLGlCQUFrQixTQUFRLDBCQUFXO0lBQ3RDLE1BQU07UUFDZCxPQUFPLElBQUksK0JBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFUyxzQkFBc0I7UUFDOUIsT0FBTyxvQ0FBYSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsb0NBQWEsQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFUyxZQUFZO1FBQ3BCLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7SUFFUyxnQkFBZ0I7UUFDeEIsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQztJQUVLLE1BQU0sQ0FDVixXQUFtQixFQUNuQixPQUFlLEVBQ2YsUUFBNEIsRUFDNUIsVUFBOEIsRUFDOUIsT0FBMkIsRUFDM0IsVUFBa0IsRUFDbEIsR0FBVyxFQUNYLFVBQWtCLEVBQ2xCLFFBQVEsR0FBRyxLQUFLOztZQUVoQixNQUFNLE9BQU8sR0FBc0IsbUNBQWlCLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDOUQsTUFBTSxHQUFHLEdBQWtCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUV6QyxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFVLEVBQUUsTUFBTSxRQUFRLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUU5SCxNQUFNLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLFVBQVUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUVsRixNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUUxRyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFXLEVBQUUsS0FBSyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsZ0JBQWdCLENBQUMsQ0FBQztZQUN6RyxPQUFPLENBQUMsR0FBRyxDQUFDLG9CQUFXLEVBQUUsd0JBQXdCLENBQUMsQ0FBQztRQUNyRCxDQUFDO0tBQUE7Q0FDRjtBQXhDRCw4Q0F3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTb3VyY2VNYXBzQXBpIH0gZnJvbSAnLi4vLi4vYXBpL3NvdXJjZS1tYXBzL3NvdXJjZS1tYXBzLmFwaSc7XG5pbXBvcnQgeyBGaWxlUHJvY2Vzc29yIH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZS1wcm9jZXNzb3IudXRpbHMnO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2UgfSBmcm9tICcuLi9iYXNlL2Jhc2Uuc2VydmljZSc7XG5pbXBvcnQgeyBVcGxvYWRCbG9iUmVxdWVzdCB9IGZyb20gJy4uLy4uL3Byb3RvLW1vZGVscy9jb20vY29yYWxvZ2l4L2Jsb2JzZXQvdjIvYmxvYnNldF9zZXJ2aWNlJztcbmltcG9ydCB7IEdSQVlfQ09MT1IsIEdSRUVOX0NPTE9SIH0gZnJvbSAnLi4vLi4vY29uc3RzL2NvbnN0cyc7XG5cbmV4cG9ydCBjbGFzcyBTb3VyY2VNYXBzU2VydmljZSBleHRlbmRzIEJhc2VTZXJ2aWNlIHtcbiAgcHJvdGVjdGVkIGdldEFwaSgpIHtcbiAgICByZXR1cm4gbmV3IFNvdXJjZU1hcHNBcGkoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRGaWxlUHJvY2Vzc29yTWV0aG9kKCkge1xuICAgIHJldHVybiBGaWxlUHJvY2Vzc29yLnRyYXZlcnNlLmJpbmQoRmlsZVByb2Nlc3Nvcik7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0TG9nUHJlZml4KCkge1xuICAgIHJldHVybiAnU291cmNlIG1hcHMnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEZpbGVFeHRlbnNpb24oKSB7XG4gICAgcmV0dXJuICcuanMubWFwJztcbiAgfVxuXG4gIGFzeW5jIHVwbG9hZChcbiAgICBhcHBsaWNhdGlvbjogc3RyaW5nLFxuICAgIHZlcnNpb246IHN0cmluZyxcbiAgICByZXBvTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgIGNvbW1pdEhhc2g6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBvcmdOYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgZm9sZGVyUGF0aDogc3RyaW5nLFxuICAgIGVudjogc3RyaW5nLFxuICAgIHByaXZhdGVLZXk6IHN0cmluZyxcbiAgICBvdmVycmlkZSA9IGZhbHNlLFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBVcGxvYWRCbG9iUmVxdWVzdCA9IFVwbG9hZEJsb2JSZXF1ZXN0LmNyZWF0ZSgpO1xuICAgIGNvbnN0IGFwaTogU291cmNlTWFwc0FwaSA9IHRoaXMuZ2V0QXBpKCk7XG5cbiAgICBjb25zb2xlLmxvZyhHUkFZX0NPTE9SLCBg8J+agCAke292ZXJyaWRlID8gJ1JlcGxhY2luZycgOiAnVXBsb2FkaW5nJ30gJHt0aGlzLmdldExvZ1ByZWZpeCgpfS4uLiAoJHtuZXcgRGF0ZSgpLnRvVVRDU3RyaW5nKCl9KWApO1xuXG4gICAgYXdhaXQgdGhpcy5nZXRGaWxlUHJvY2Vzc29yTWV0aG9kKCkoZm9sZGVyUGF0aCwgcmVxdWVzdCwgdGhpcy5nZXRGaWxlRXh0ZW5zaW9uKCkpO1xuXG4gICAgYXdhaXQgYXBpLnVwbG9hZChyZXF1ZXN0LCBhcHBsaWNhdGlvbiwgdmVyc2lvbiwgcmVwb05hbWUsIGNvbW1pdEhhc2gsIG9yZ05hbWUsIGVudiwgcHJpdmF0ZUtleSwgb3ZlcnJpZGUpO1xuXG4gICAgY29uc29sZS5sb2coR1JFRU5fQ09MT1IsIGDinIUgJHt0aGlzLmdldExvZ1ByZWZpeCgpfSAke292ZXJyaWRlID8gJ3JlcGxhY2VkJyA6ICd1cGxvYWRlZCd9IHN1Y2Nlc3NmdWxseSFgKTtcbiAgICBjb25zb2xlLmxvZyhHUkVFTl9DT0xPUiwgJ+KchSBQcm9jZXNzaW5nIGNvbXBsZXRlLicpO1xuICB9XG59XG4iXX0=
@@ -28,5 +28,6 @@ export interface UploadSourceMapsCommandOptions {
28
28
  repoName?: string;
29
29
  orgName?: string;
30
30
  env: string;
31
+ override?: boolean;
31
32
  help?: string;
32
33
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coralogix/rum-cli",
3
- "version": "1.1.38",
3
+ "version": "1.1.41",
4
4
  "description": "coralogix rum cli",
5
5
  "bin": {
6
6
  "coralogix-rum-cli": "dist/cli/rum-cli.js"
@@ -5,7 +5,10 @@
5
5
  // source: com/coralogix/blobset/v2/blobset_query_service.proto
6
6
 
7
7
  /* eslint-disable */
8
+ import { GetCaseFileRequest, GetCaseFileResponse } from "./case_file";
8
9
  import { GetMappedIosStackTraceRequest, GetMappedIosStackTraceResponse } from "./dsym";
10
+ import { GetInvestigationFileRequest, GetInvestigationFileResponse } from "./investigation_file";
11
+ import { GetMappedAndroidStackTraceRequest, GetMappedAndroidStackTraceResponse } from "./proguard";
9
12
  import { GetSourceMapsChunksRequest, GetSourceMapsChunksResponse } from "./source_map";
10
13
 
11
14
  export const protobufPackage = "com.coralogix.blobset.v2";
@@ -24,6 +27,14 @@ export const BlobSetQueryServiceDefinition = {
24
27
  responseStream: false,
25
28
  options: {},
26
29
  },
30
+ getMappedAndroidStackTrace: {
31
+ name: "GetMappedAndroidStackTrace",
32
+ requestType: GetMappedAndroidStackTraceRequest,
33
+ requestStream: false,
34
+ responseType: GetMappedAndroidStackTraceResponse,
35
+ responseStream: false,
36
+ options: {},
37
+ },
27
38
  getSourceMapsChunks: {
28
39
  name: "GetSourceMapsChunks",
29
40
  requestType: GetSourceMapsChunksRequest,
@@ -32,5 +43,22 @@ export const BlobSetQueryServiceDefinition = {
32
43
  responseStream: false,
33
44
  options: {},
34
45
  },
46
+ /** INVESTIGATION */
47
+ getInvestigationFile: {
48
+ name: "GetInvestigationFile",
49
+ requestType: GetInvestigationFileRequest,
50
+ requestStream: false,
51
+ responseType: GetInvestigationFileResponse,
52
+ responseStream: false,
53
+ options: {},
54
+ },
55
+ getCaseFile: {
56
+ name: "GetCaseFile",
57
+ requestType: GetCaseFileRequest,
58
+ requestStream: false,
59
+ responseType: GetCaseFileResponse,
60
+ responseStream: false,
61
+ options: {},
62
+ },
35
63
  },
36
64
  } as const;