sonamu 0.7.3 → 0.7.5

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 (133) hide show
  1. package/dist/api/config.d.ts +1 -4
  2. package/dist/api/config.d.ts.map +1 -1
  3. package/dist/api/config.js +1 -1
  4. package/dist/api/sonamu.d.ts +2 -0
  5. package/dist/api/sonamu.d.ts.map +1 -1
  6. package/dist/api/sonamu.js +19 -47
  7. package/dist/bin/cli.js +6 -6
  8. package/dist/database/base-model.d.ts +1 -1
  9. package/dist/database/base-model.d.ts.map +1 -1
  10. package/dist/database/base-model.js +15 -4
  11. package/dist/database/code-generator.d.ts.map +1 -1
  12. package/dist/database/code-generator.js +3 -3
  13. package/dist/database/db.d.ts.map +1 -1
  14. package/dist/database/db.js +1 -1
  15. package/dist/database/puri-wrapper.d.ts +11 -11
  16. package/dist/database/puri-wrapper.d.ts.map +1 -1
  17. package/dist/database/puri-wrapper.js +7 -11
  18. package/dist/database/puri.d.ts +36 -17
  19. package/dist/database/puri.d.ts.map +1 -1
  20. package/dist/database/puri.js +54 -7
  21. package/dist/database/puri.types.d.ts +54 -17
  22. package/dist/database/puri.types.d.ts.map +1 -1
  23. package/dist/database/puri.types.js +2 -4
  24. package/dist/database/puri.types.test-d.js +129 -0
  25. package/dist/database/upsert-builder.d.ts +16 -10
  26. package/dist/database/upsert-builder.d.ts.map +1 -1
  27. package/dist/database/upsert-builder.js +10 -19
  28. package/dist/entity/entity-manager.d.ts +113 -22
  29. package/dist/entity/entity-manager.d.ts.map +1 -1
  30. package/dist/entity/entity-manager.js +1 -1
  31. package/dist/entity/entity.d.ts +34 -0
  32. package/dist/entity/entity.d.ts.map +1 -1
  33. package/dist/entity/entity.js +110 -37
  34. package/dist/index.d.ts +5 -0
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +8 -2
  37. package/dist/migration/code-generation.d.ts.map +1 -1
  38. package/dist/migration/code-generation.js +341 -149
  39. package/dist/migration/migration-set.d.ts.map +1 -1
  40. package/dist/migration/migration-set.js +21 -5
  41. package/dist/migration/migrator.d.ts.map +1 -1
  42. package/dist/migration/migrator.js +7 -1
  43. package/dist/migration/postgresql-schema-reader.d.ts +11 -1
  44. package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
  45. package/dist/migration/postgresql-schema-reader.js +111 -10
  46. package/dist/syncer/syncer.d.ts.map +1 -1
  47. package/dist/syncer/syncer.js +5 -4
  48. package/dist/template/implementations/generated.template.d.ts.map +1 -1
  49. package/dist/template/implementations/generated.template.js +12 -2
  50. package/dist/template/implementations/generated_sso.template.d.ts +3 -3
  51. package/dist/template/implementations/generated_sso.template.d.ts.map +1 -1
  52. package/dist/template/implementations/generated_sso.template.js +50 -2
  53. package/dist/template/implementations/model.template.js +6 -6
  54. package/dist/template/implementations/model_test.template.js +4 -4
  55. package/dist/template/implementations/view_enums_dropdown.template.js +2 -2
  56. package/dist/template/implementations/view_enums_select.template.js +2 -2
  57. package/dist/template/implementations/view_form.template.d.ts.map +1 -1
  58. package/dist/template/implementations/view_form.template.js +12 -9
  59. package/dist/template/implementations/view_id_async_select.template.js +4 -4
  60. package/dist/template/implementations/view_list.template.d.ts.map +1 -1
  61. package/dist/template/implementations/view_list.template.js +12 -9
  62. package/dist/template/implementations/view_search_input.template.js +2 -2
  63. package/dist/template/template.js +2 -2
  64. package/dist/template/zod-converter.d.ts.map +1 -1
  65. package/dist/template/zod-converter.js +17 -2
  66. package/dist/testing/fixture-manager.d.ts +2 -1
  67. package/dist/testing/fixture-manager.d.ts.map +1 -1
  68. package/dist/testing/fixture-manager.js +29 -29
  69. package/dist/types/types.d.ts +593 -68
  70. package/dist/types/types.d.ts.map +1 -1
  71. package/dist/types/types.js +113 -9
  72. package/dist/vector/chunking.d.ts +25 -0
  73. package/dist/vector/chunking.d.ts.map +1 -0
  74. package/dist/vector/chunking.js +97 -0
  75. package/dist/vector/config.d.ts +12 -0
  76. package/dist/vector/config.d.ts.map +1 -0
  77. package/dist/vector/config.js +83 -0
  78. package/dist/vector/embedding.d.ts +42 -0
  79. package/dist/vector/embedding.d.ts.map +1 -0
  80. package/dist/vector/embedding.js +147 -0
  81. package/dist/vector/types.d.ts +105 -0
  82. package/dist/vector/types.d.ts.map +1 -0
  83. package/dist/vector/types.js +5 -0
  84. package/dist/vector/vector-search.d.ts +47 -0
  85. package/dist/vector/vector-search.d.ts.map +1 -0
  86. package/dist/vector/vector-search.js +176 -0
  87. package/package.json +11 -11
  88. package/src/api/config.ts +0 -4
  89. package/src/api/sonamu.ts +21 -36
  90. package/src/bin/cli.ts +5 -5
  91. package/src/database/base-model.ts +20 -11
  92. package/src/database/code-generator.ts +6 -2
  93. package/src/database/db.ts +1 -0
  94. package/src/database/puri-wrapper.ts +22 -16
  95. package/src/database/puri.ts +150 -27
  96. package/src/database/puri.types.test-d.ts +457 -0
  97. package/src/database/puri.types.ts +231 -33
  98. package/src/database/upsert-builder.ts +43 -34
  99. package/src/entity/entity-manager.ts +2 -2
  100. package/src/entity/entity.ts +134 -44
  101. package/src/index.ts +6 -0
  102. package/src/migration/code-generation.ts +377 -174
  103. package/src/migration/migration-set.ts +22 -3
  104. package/src/migration/migrator.ts +6 -0
  105. package/src/migration/postgresql-schema-reader.ts +121 -21
  106. package/src/syncer/syncer.ts +4 -3
  107. package/src/template/implementations/generated.template.ts +51 -9
  108. package/src/template/implementations/generated_sso.template.ts +71 -2
  109. package/src/template/implementations/model.template.ts +5 -5
  110. package/src/template/implementations/model_test.template.ts +3 -3
  111. package/src/template/implementations/view_enums_dropdown.template.ts +1 -1
  112. package/src/template/implementations/view_enums_select.template.ts +1 -1
  113. package/src/template/implementations/view_form.template.ts +11 -8
  114. package/src/template/implementations/view_id_async_select.template.ts +3 -3
  115. package/src/template/implementations/view_list.template.ts +11 -8
  116. package/src/template/implementations/view_search_input.template.ts +1 -1
  117. package/src/template/template.ts +1 -1
  118. package/src/template/zod-converter.ts +20 -0
  119. package/src/testing/fixture-manager.ts +31 -30
  120. package/src/types/types.ts +226 -48
  121. package/src/vector/chunking.ts +115 -0
  122. package/src/vector/config.ts +68 -0
  123. package/src/vector/embedding.ts +193 -0
  124. package/src/vector/types.ts +122 -0
  125. package/src/vector/vector-search.ts +261 -0
  126. package/dist/template/implementations/view_enums_buttonset.template.d.ts +0 -17
  127. package/dist/template/implementations/view_enums_buttonset.template.d.ts.map +0 -1
  128. package/dist/template/implementations/view_enums_buttonset.template.js +0 -31
  129. package/dist/template/implementations/view_list_columns.template.d.ts +0 -17
  130. package/dist/template/implementations/view_list_columns.template.d.ts.map +0 -1
  131. package/dist/template/implementations/view_list_columns.template.js +0 -49
  132. package/src/template/implementations/view_enums_buttonset.template.ts +0 -34
  133. package/src/template/implementations/view_list_columns.template.ts +0 -53
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAKpD,wBAAgB,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAE3F;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;AAK1F,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG;IACrC,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG;IAC1C,IAAI,EAAE,WAAW,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG;IACxC,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG;IAC7C,IAAI,EAAE,cAAc,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG;IACpC,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG;IACzC,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG;IACvC,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AACF,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG;IACpC,IAAI,EAAE,QAAQ,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAAC;CACtD,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG;IACzC,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAAC;CACtD,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG;IACrC,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG;IAC1C,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG;IACrC,IAAI,EAAE,SAAS,CAAC;CACjB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG;IAC1C,IAAI,EAAE,WAAW,CAAC;CACnB,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG;IACvC,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AACF,MAAM,MAAM,QAAQ,GAAG,UAAU,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG;IACvC,IAAI,EAAE,QAAQ,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG;IACrC,IAAI,EAAE,SAAS,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,cAAc,GAAG,YAAY,GAAG,UAAU,CAAC;AAClF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,aAAa,GAAG,UAAU,CAAC;AAC3F,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD,YAAY,EAAE,UAAU,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GAAG,CACE;IACE,aAAa,EAAE,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB,GACD;IACE,aAAa,EAAE,KAAK,CAAC;CACtB,CACJ,CAAC;AACJ,MAAM,MAAM,wBAAwB,GAAG,aAAa,GAAG;IACrD,YAAY,EAAE,cAAc,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,UAAU,CAAC;IACtB,QAAQ,CAAC,EAAE,UAAU,CAAC;CACvB,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG;IAChD,YAAY,EAAE,SAAS,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AACF,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG;IACnD,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,GAAG,MAAM,KAAK,MAAM,EAAE,CAAC;IAClC,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,YAAY,GACpB,oBAAoB,GACpB,wBAAwB,GACxB,mBAAmB,GACnB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,UAAU,GAClB,WAAW,GACX,gBAAgB,GAChB,cAAc,GACd,mBAAmB,GACnB,UAAU,GACV,eAAe,GACf,QAAQ,GACR,aAAa,GACb,UAAU,GACV,eAAe,GACf,WAAW,GACX,gBAAgB,GAChB,WAAW,GACX,WAAW,GACX,gBAAgB,GAChB,QAAQ,GACR,aAAa,GACb,QAAQ,GACR,aAAa,GACb,QAAQ,GACR,WAAW,GACX,YAAY,CAAC;AAEjB,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IACtC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;CAC/B,CAAC;AACF,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,EAAE;QACP,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;KAC5B,CAAC;IACF,KAAK,EAAE;QACL,CAAC,MAAM,EAAE,MAAM,GAAG;YAChB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;SACvB,CAAC;KACH,CAAC;CACH,CAAC;AACF,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE;QACH,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;AAMjE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,UAAU,CAAC;CAClB,GACD;IACE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B,CAAC;AAKN,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAEhE;AACD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,gBAAgB,CAEpE;AACD,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,GAAG,gBAAgB,CAE7E;AACD,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,cAAc,CAEtE;AACD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,mBAAmB,CAE1E;AACD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,cAAc,GAAG,mBAAmB,CAEtF;AACD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAE9D;AACD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,eAAe,CAElE;AACD,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,GAAG,eAAe,CAE1E;AACD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,QAAQ,CAE1D;AACD,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,aAAa,CAE9D;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,QAAQ,GAAG,aAAa,CAEpE;AACD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,CAE9D;AACD,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,eAAe,CAElE;AACD,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,UAAU,GAAG,eAAe,CAE1E;AACD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAEhE;AACD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,gBAAgB,CAEpE;AACD,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,GAAG,gBAAgB,CAE7E;AACD,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAEhE;AACD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,gBAAgB,CAEpE;AACD,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,GAAG,gBAAgB,CAE7E;AACD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,QAAQ,CAE1D;AACD,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,aAAa,CAE9D;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,QAAQ,GAAG,aAAa,CAEpE;AACD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,QAAQ,CAE1D;AACD,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,aAAa,CAE9D;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,QAAQ,GAAG,aAAa,CAEpE;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,QAAQ,CAEpD;AACD,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,WAAW,CAE1D;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAE5D;AACD,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,oBAAoB,CAE5E;AACD,wBAAgB,0BAA0B,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,wBAAwB,CAEpF;AACD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,mBAAmB,CAE1E;AACD,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,sBAAsB,CAEhF;AAED,KAAK,UAAU,GACX;IACE,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ,GACD;IACE,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AACN,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAEtE;AAED,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE;YACR,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,EAAE,MAAM,CAAC;YAChB,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;KACH,CAAC;IACF,QAAQ,EAAE,CAAC;QACT,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,UAAU,CAAC,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,CAAC;QACN,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;QACxB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,UAAU,CAAC,EAAE,CAAC;IAClB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB,CAAC;AAGF,eAAO,MAAM,eAAe;;;;EAAoC,CAAC;AACjE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAG9D,MAAM,MAAM,SAAS,GAAG;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AACF,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,SAAS,CAEtD;AAED,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,MAAM,GACN,WAAW,GACX,YAAY,GACZ,UAAU,GACV,SAAS,GACT,YAAY,GACZ,SAAS,GACT,WAAW,GACX,SAAS,GACT,SAAS,GACT,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,UAAU,CAAC;AACf,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,GACR,UAAU,GACV,SAAS,GACT,WAAW,GACX,YAAY,GACZ,cAAc,GACd,iBAAiB,GACjB,mBAAmB,GACnB,SAAS,GACT,WAAW,GACX,MAAM,GACN,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,MAAM,CAAC;AACX,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AACF,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;IACtC,MAAM,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC;CAC/B,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,UAAU,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC;CACtB,CAAC;AACF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B,CAAC;AACF,MAAM,MAAM,YAAY,GAAG;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B,CAAC;AACF,MAAM,MAAM,wBAAwB,GAAG,YAAY,GAAG;IACpD,UAAU,EAAE,kBAAkB,EAAE,CAAC;CAClC,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC;AAGF,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AACF,yBAAiB,YAAY,CAAC;IAC5B,KAAY,MAAM,GAAG;QACnB,CAAC,EAAE,QAAQ,CAAC;QACZ,KAAK,EAAE,QAAQ,EAAE,CAAC;KACnB,CAAC;IACF,KAAY,KAAK,GAAG;QAClB,CAAC,EAAE,OAAO,CAAC;QACX,KAAK,EAAE,YAAY,EAAE,CAAC;KACvB,CAAC;IACF,KAAY,YAAY,GAAG;QACzB,CAAC,EAAE,cAAc,CAAC;QAClB,KAAK,EAAE,YAAY,EAAE,CAAC;KACvB,CAAC;IACF,KAAY,aAAa,GAAG;QAC1B,CAAC,EAAE,gBAAgB,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAY,cAAc,GAAG;QAC3B,CAAC,EAAE,iBAAiB,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,KAAY,KAAK,GAAG;QAClB,CAAC,EAAE,OAAO,CAAC;QACX,YAAY,EAAE,YAAY,CAAC;KAC5B,CAAC;IACF,KAAY,GAAG,GAAG;QAChB,CAAC,EAAE,KAAK,CAAC;QACT,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC;KACvB,CAAC;IACF,KAAY,aAAa,GAAG;QAC1B,CAAC,EAAE,gBAAgB,CAAC;QACpB,MAAM,EAAE,YAAY,CAAC;QACrB,KAAK,EAAE,YAAY,CAAC;KACrB,CAAC;IACF,KAAY,SAAS,GAAG;QACtB,CAAC,EAAE,YAAY,CAAC;QAChB,QAAQ,EAAE,YAAY,EAAE,CAAC;KAC1B,CAAC;IACF,KAAY,IAAI,GAAG,GAAG,GAAG;QACvB,CAAC,EAAE,KAAK,CAAC;QACT,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,KAAY,IAAI,GAAG,GAAG,GAAG;QACvB,CAAC,EAAE,KAAK,CAAC;QACT,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,KAAY,OAAO,GAAG,GAAG,GAAG;QAC1B,CAAC,EAAE,KAAK,CAAC;QACT,EAAE,EAAE,SAAS,CAAC;KACf,CAAC;IACF,KAAY,OAAO,GAAG,GAAG,GAAG;QAC1B,CAAC,EAAE,KAAK,CAAC;QACT,EAAE,EAAE,SAAS,CAAC;KACf,CAAC;IACF,KAAY,OAAO,GAAG,GAAG,GAAG;QAC1B,CAAC,EAAE,KAAK,CAAC;QACT,EAAE,EAAE,SAAS,CAAC;KACf,CAAC;IACF,KAAY,SAAS,GAAG;QACtB,CAAC,EAAE,YAAY,CAAC;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,CAAC,EAAE,YAAY,CAAC;KAC3B,CAAC;IAEF,SAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,CAE7D;IACD,SAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,CAE3D;IACD,SAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,YAAY,CAEzE;IACD,SAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,aAAa,CAE3E;IACD,SAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,cAAc,CAE7E;IACD,SAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,KAAK,CAE3D;IACD,SAAgB,KAAK,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAEvD;IACD,SAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,aAAa,CAE3E;IACD,SAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,SAAS,CAEnE;IACD,SAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAOzD;IACD,SAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAOzD;IACD,SAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,OAAO,CAO/D;IACD,SAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,OAAO,CAO/D;IACD,SAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,OAAO,CAO/D;IACD,SAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,GAAG,CAO3D;IACD,SAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,YAAY,CAAC,SAAS,CAEnE;CACF;AACD,MAAM,MAAM,YAAY,GACpB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,MAAM,GACN,WAAW,GACX,MAAM,GACN,KAAK,GACL,SAAS,GACT,MAAM,GACN,OAAO,GACP,YAAY,CAAC,aAAa,GAC1B,YAAY,CAAC,cAAc,GAC3B,YAAY,CAAC,MAAM,GACnB,YAAY,CAAC,KAAK,GAClB,YAAY,CAAC,YAAY,GACzB,YAAY,CAAC,KAAK,GAClB,YAAY,CAAC,GAAG,GAChB,YAAY,CAAC,aAAa,GAC1B,YAAY,CAAC,SAAS,GACtB,YAAY,CAAC,SAAS,CAAC;AAG3B;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,eAAO,MAAM,aAAa,UAAU,CAAC;AACrC,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EACN,cAAc,GACd,cAAc,GACd,iBAAiB,GACjB,aAAa,GACb,UAAU,GACV,cAAc,GACd,WAAW,GACX,cAAc,GACd,SAAS,GACT,OAAO,GACP,OAAO,GACP,cAAc,GACd,QAAQ,GACR,aAAa,GACb,QAAQ,CAAC;IACb,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC;IACtB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAwKF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oCAY9B,CAAC;AAwBF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAmB5B,CAAC;AAkBF,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAWlB,CAAC;AAEZ,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAoF1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;EAmBtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,eAAO,MAAM,eAAe;;iBAE1B,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,WAAW;;;iBAGtB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEtD,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC/B,CAAC;AAEF,KAAK,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE;QACP,CAAC,GAAG,EAAE,MAAM,GAAG;YACb,IAAI,EAAE,UAAU,CAAC;YACjB,KAAK,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;SACpC,CAAC;KACH,CAAC;IACF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QACJ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAAC;KAC5B,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACtB,CAAC;AAGF,MAAM,WAAW,oBAAoB;CAAG;AACxC,MAAM,MAAM,oBAAoB,CAAC,SAAS,SAAS,MAAM,EAAE,OAAO,SAAS,MAAM,IAAI;IACnF,EAAE,EAAE,MAAM,CAAC;CACZ,GAAG;KACD,CAAC,IAAI,GAAG,SAAS,KAAK,GAAG,MAAM;CACjC,GAAG;KACD,CAAC,IAAI,GAAG,OAAO,KAAK,GAAG,MAAM;CAC/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,eAAe,EAAE,CACf,cAAc,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,CAAC,GACzF,WAAW,EACb,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,YAAY,KAChB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,YAAY,EAAE,CACZ,KAAK,EAAE,QAAQ,EACf,OAAO,EAAE,cAAc,EACvB,GAAG,EAAE;QACH,cAAc,EAAE,YAAY,CAAC,SAAS,EAAE,CAAC;QACzC,UAAU,EAAE,QAAQ,EAAE,CAAC;QACvB,UAAU,EAAE,YAAY,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,mBAAmB,CAAC;KAC9B,KACE,IAAI,CAAC;IACV,KAAK,CAAC,EAAE;QACN,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QAC9C,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAClE,UAAU,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;YACP,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,KAEC;YACE,KAAK,EAAE,KAAK,CAAC;SACd,GACD;YACE,KAAK,EAAE,IAAI,CAAC;YACZ,GAAG,EAAE,MAAM,CAAC;YACZ,GAAG,CAAC,EAAE,MAAM,CAAC;SACd,CAAC;KACP,CAAC;CACH,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types/types.ts"],"names":[],"mappings":"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"}
@@ -96,6 +96,15 @@ export function isJsonProp(p) {
96
96
  export function isVirtualProp(p) {
97
97
  return p?.type === "virtual";
98
98
  }
99
+ export function isVectorSingleProp(p) {
100
+ return p?.type === "vector";
101
+ }
102
+ export function isVectorArrayProp(p) {
103
+ return p?.type === "vector[]";
104
+ }
105
+ export function isVectorProp(p) {
106
+ return isVectorSingleProp(p) || isVectorArrayProp(p);
107
+ }
99
108
  export function isRelationProp(p) {
100
109
  return p?.type === "relation";
101
110
  }
@@ -209,16 +218,24 @@ export function isKnexError(e) {
209
218
  * - view_form.template.ts, view_list.template.ts 등에서 React 컴포넌트 코드 생성에 사용
210
219
  */ // 셀프 참조 타입이므로 Zod 생략하고 직접 정의
211
220
  export const RenderingNode = z.any();
221
+ const GeneratedColumnSchema = z.object({
222
+ type: z.enum([
223
+ "STORED",
224
+ "VIRTUAL"
225
+ ]),
226
+ expression: z.string()
227
+ });
212
228
  const BasePropFields = {
213
229
  name: z.string(),
214
230
  desc: z.string().optional(),
215
231
  nullable: z.boolean().optional(),
216
- toFilter: z.literal(true).optional(),
232
+ toFilter: z.boolean().default(false).optional(),
217
233
  dbDefault: z.union([
218
234
  z.string(),
219
235
  z.number(),
220
236
  z.boolean()
221
- ]).optional()
237
+ ]).optional(),
238
+ generated: GeneratedColumnSchema.optional()
222
239
  };
223
240
  // 부가 필드가 필요없는 prop
224
241
  const BasePropFieldsWithoutAdditional = z.object({
@@ -255,7 +272,8 @@ const StringArrayPropSchema = z.object({
255
272
  const EnumPropSchema = z.object({
256
273
  ...BasePropFields,
257
274
  type: z.literal("enum"),
258
- id: z.string()
275
+ id: z.string(),
276
+ length: z.number().optional()
259
277
  }).strict();
260
278
  const EnumArrayPropSchema = z.object({
261
279
  ...BasePropFields,
@@ -302,6 +320,16 @@ const VirtualPropSchema = z.object({
302
320
  type: z.literal("virtual"),
303
321
  id: z.string()
304
322
  }).strict();
323
+ const VectorPropSchema = z.object({
324
+ ...BasePropFields,
325
+ type: z.literal("vector"),
326
+ dimensions: z.number()
327
+ }).strict();
328
+ const VectorArrayPropSchema = z.object({
329
+ ...BasePropFields,
330
+ type: z.literal("vector[]"),
331
+ dimensions: z.number()
332
+ }).strict();
305
333
  // Relation 타입은 relationType에 따라 세분화
306
334
  const BaseRelationFields = {
307
335
  ...BasePropFields,
@@ -380,7 +408,24 @@ const NormalPropTypes = [
380
408
  "uuid",
381
409
  "uuid[]",
382
410
  "json",
383
- "virtual"
411
+ "virtual",
412
+ "vector",
413
+ "vector[]"
414
+ ];
415
+ // VIRTUAL Generated Column에서 사용 불가능한 타입들
416
+ const VirtualGeneratedDisallowedTypes = [
417
+ "json",
418
+ "vector",
419
+ "vector[]",
420
+ "string[]",
421
+ "integer[]",
422
+ "bigInteger[]",
423
+ "boolean[]",
424
+ "date[]",
425
+ "uuid[]",
426
+ "number[]",
427
+ "numeric[]",
428
+ "enum[]"
384
429
  ];
385
430
  export const NormalPropSchema = z.discriminatedUnion("type", [
386
431
  BasePropFieldsWithoutAdditional,
@@ -393,9 +438,49 @@ export const NormalPropSchema = z.discriminatedUnion("type", [
393
438
  NumericPropSchema,
394
439
  NumericArrayPropSchema,
395
440
  JsonPropSchema,
396
- VirtualPropSchema
441
+ VirtualPropSchema,
442
+ VectorPropSchema,
443
+ VectorArrayPropSchema
397
444
  ], {
398
445
  error: (iss)=>`type은 ${NormalPropTypes.map((t)=>`'${t}'`).join(", ")} 중 하나여야 합니다. 입력값: "${iss.input?.type}"`
446
+ }).superRefine((data, ctx)=>{
447
+ if (!data.generated) {
448
+ return;
449
+ }
450
+ // dbDefault와 generated 동시 사용 불가
451
+ if (data.dbDefault !== undefined) {
452
+ ctx.addIssue({
453
+ code: "custom",
454
+ message: "dbDefault와 generated는 함께 사용할 수 없습니다",
455
+ path: [
456
+ "generated"
457
+ ]
458
+ });
459
+ }
460
+ // virtual 타입은 generated 불가
461
+ if (data.type === "virtual") {
462
+ ctx.addIssue({
463
+ code: "custom",
464
+ message: "virtual 타입은 generated column을 지원하지 않습니다",
465
+ path: [
466
+ "generated"
467
+ ]
468
+ });
469
+ }
470
+ // VIRTUAL Generated Column 타입 제한 검증
471
+ if (data.generated.type === "VIRTUAL") {
472
+ if (VirtualGeneratedDisallowedTypes.includes(data.type)) {
473
+ ctx.addIssue({
474
+ code: "custom",
475
+ message: `VIRTUAL generated column은 ${data.type} 타입을 지원하지 않습니다. STORED를 사용하세요.`,
476
+ path: [
477
+ "generated",
478
+ "type"
479
+ ],
480
+ fatal: true
481
+ });
482
+ }
483
+ }
399
484
  });
400
485
  const AllPropTypes = [
401
486
  ...NormalPropTypes,
@@ -407,19 +492,38 @@ const EntityPropSchema = z.discriminatedUnion("type", [
407
492
  ], {
408
493
  error: (iss)=>`type은 ${AllPropTypes.map((t)=>`'${t}'`).join(", ")} 중 하나여야 합니다. 입력값: "${iss.input?.type}"`
409
494
  });
495
+ const EntityIndexColumnSchema = z.object({
496
+ name: z.string(),
497
+ nullsFirst: z.boolean().optional(),
498
+ sortOrder: z.enum([
499
+ "ASC",
500
+ "DESC"
501
+ ]).optional(),
502
+ vectorOps: z.enum([
503
+ "vector_cosine_ops",
504
+ "vector_ip_ops",
505
+ "vector_l2_ops"
506
+ ]).optional()
507
+ });
410
508
  // EntityIndex 스키마 정의
411
509
  const EntityIndexSchema = z.object({
412
510
  type: z.enum([
413
511
  "index",
414
512
  "unique",
415
- "fulltext"
513
+ "fulltext",
514
+ "hnsw",
515
+ "ivfflat"
416
516
  ]),
417
- columns: z.array(z.string()),
517
+ columns: z.array(EntityIndexColumnSchema),
418
518
  name: z.string().min(1).max(63),
419
519
  parser: z.enum([
420
520
  "built-in",
421
521
  "ngram"
422
- ]).optional()
522
+ ]).optional(),
523
+ nullsNotDistinct: z.boolean().optional(),
524
+ m: z.number().optional(),
525
+ efConstruction: z.number().optional(),
526
+ lists: z.number().optional()
423
527
  }).strict();
424
528
  export const EntityJsonSchema = z.object({
425
529
  id: z.string().describe("PascalCase로 된 Entity ID"),
@@ -543,4 +647,4 @@ export const PathAndCode = z.object({
543
647
  });
544
648
  export var ApiParamType;
545
649
 
546
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZhc3RpZnlSZXBseSwgRmFzdGlmeVJlcXVlc3QgfSBmcm9tIFwiZmFzdGlmeVwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB0eXBlIHsgQXBpRGVjb3JhdG9yT3B0aW9ucywgQXV0aENvbnRleHQsIENvbnRleHQgfSBmcm9tIFwiLi4vYXBpXCI7XG5pbXBvcnQgdHlwZSB7IEd1YXJkS2V5IH0gZnJvbSBcIi4vLi4vYXBpL2RlY29yYXRvcnNcIjtcblxuLypcbiAgVXRpbGl0eSBUeXBlc1xuKi9cbmV4cG9ydCBmdW5jdGlvbiB6QXJyYXlhYmxlPFQgZXh0ZW5kcyB6LlpvZFR5cGVBbnk+KHNoYXBlOiBUKTogei5ab2RVbmlvbjxbVCwgei5ab2RBcnJheTxUPl0+IHtcbiAgcmV0dXJuIHoudW5pb24oW3NoYXBlLCBzaGFwZS5hcnJheSgpXSk7XG59XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IGFueSBpcyB1c2VkIHRvIG1ha2UgdGhlIHR5cGUgZGlzdHJpYnV0aXZlXG5leHBvcnQgdHlwZSBEaXN0cmlidXRpdmVPbWl0PFQsIEsgZXh0ZW5kcyBrZXlvZiBhbnk+ID0gVCBleHRlbmRzIGFueSA/IE9taXQ8VCwgSz4gOiBuZXZlcjtcblxuLypcbiAgTW9kZWwtRGVmaW50aW9uXG4qL1xuZXhwb3J0IHR5cGUgQ29tbW9uUHJvcCA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG4gIHRvRmlsdGVyPzogdHJ1ZTtcbiAgZGVzYz86IHN0cmluZztcbiAgZGJEZWZhdWx0Pzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIEludGVnZXJQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJpbnRlZ2VyXCI7XG59OyAvLyBQRzogaW50ZWdlciAvIFRTOiBudW1iZXIgLyBKU09OOiBudW1iZXJcbmV4cG9ydCB0eXBlIEludGVnZXJBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImludGVnZXJbXVwiO1xufTsgLy8gUEc6IGludGVnZXJbXSAvIFRTOiBudW1iZXJbXSAvIEpTT046IG51bWJlcltdXG5leHBvcnQgdHlwZSBCaWdJbnRlZ2VyUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiYmlnSW50ZWdlclwiO1xufTsgLy8gUEc6IGJpZ2ludCAvIFRTOiBiaWdpbnQgLyBKU09OOiBiaWdpbnRcbmV4cG9ydCB0eXBlIEJpZ0ludGVnZXJBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImJpZ0ludGVnZXJbXVwiO1xufTsgLy8gUEc6IGJpZ2ludFtdIC8gVFM6IGJpZ2ludFtdIC8gSlNPTjogYmlnaW50W11cbmV4cG9ydCB0eXBlIFN0cmluZ1Byb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInN0cmluZ1wiO1xuICBsZW5ndGg/OiBudW1iZXI7IC8vIFBHOiB2YXJjaGFyKG4pLCB0ZXh0IC8gVFM6IHN0cmluZyAvIEpTT046IHN0cmluZ1xufTsgLy8gUEc6IHRleHQgLyBUUzogc3RyaW5nIC8gSlNPTjogc3RyaW5nXG5leHBvcnQgdHlwZSBTdHJpbmdBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInN0cmluZ1tdXCI7XG4gIGxlbmd0aD86IG51bWJlcjsgLy8gUEc6IHZhcmNoYXIobilbXSwgdGV4dFtdIC8gVFM6IHN0cmluZ1tdIC8gSlNPTjogc3RyaW5nW11cbn07IC8vIFBHOiB2YXJjaGFyKG4pW10sIHRleHRbXSAvIFRTOiBzdHJpbmdbXSAvIEpTT046IHN0cmluZ1tdXG5leHBvcnQgdHlwZSBFbnVtUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiZW51bVwiO1xuICBpZDogc3RyaW5nO1xuICBsZW5ndGg/OiBudW1iZXI7XG59OyAvLyBQRzogdGV4dCAvIFRTOiBzdHJpbmcgLyBKU09OOiBzdHJpbmdcbmV4cG9ydCB0eXBlIEVudW1BcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImVudW1bXVwiO1xuICBpZDogc3RyaW5nO1xufTsgLy8gUEc6IHRleHRbXSAvIFRTOiBzdHJpbmdbXSAvIEpTT046IHN0cmluZ1tdXG5leHBvcnQgdHlwZSBOdW1iZXJQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJudW1iZXJcIjtcbiAgcHJlY2lzaW9uPzogbnVtYmVyOyAvLyBQRzogbnVtZXJpYyhwLCBzKSAvIFRTOiBudW1iZXIgLyBKU09OOiBudW1iZXJcbiAgc2NhbGU/OiBudW1iZXI7IC8vIFBHOiBudW1lcmljKHAsIHMpIC8gVFM6IG51bWJlciAvIEpTT046IG51bWJlclxuICBudW1iZXJUeXBlPzogXCJyZWFsXCIgfCBcImRvdWJsZSBwcmVjaXNpb25cIiB8IFwibnVtZXJpY1wiOyAvLyDquLDrs7jqsJI6IG51bWVyaWNcbn07IC8vIFBHOiBudW1lcmljKHAsIHMpIC8gVFM6IG51bWJlciAvIEpTT046IG51bWJlclxuZXhwb3J0IHR5cGUgTnVtYmVyQXJyYXlQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJudW1iZXJbXVwiO1xuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIHNjYWxlPzogbnVtYmVyO1xuICBudW1iZXJUeXBlPzogXCJyZWFsXCIgfCBcImRvdWJsZSBwcmVjaXNpb25cIiB8IFwibnVtZXJpY1wiOyAvLyDquLDrs7jqsJI6IG51bWVyaWNcbn07IC8vIFBHOiBudW1lcmljKHAsIHMpW10gLyBUUzogbnVtYmVyW10gLyBKU09OOiBudW1iZXJbXVxuZXhwb3J0IHR5cGUgTnVtZXJpY1Byb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcIm51bWVyaWNcIjtcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn07IC8vIFBHOiBudW1lcmljKHAsIHMpIC8gVFM6IHN0cmluZyAvIEpTT046IHN0cmluZ1xuZXhwb3J0IHR5cGUgTnVtZXJpY0FycmF5UHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwibnVtZXJpY1tdXCI7XG4gIHByZWNpc2lvbj86IG51bWJlcjtcbiAgc2NhbGU/OiBudW1iZXI7XG59OyAvLyBQRzogbnVtZXJpYyhwLCBzKVtdIC8gVFM6IHN0cmluZ1tdIC8gSlNPTjogc3RyaW5nW11cbmV4cG9ydCB0eXBlIEJvb2xlYW5Qcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJib29sZWFuXCI7XG59OyAvLyBQRzogYm9vbGVhbiAvIFRTOiBib29sZWFuIC8gSlNPTjogYm9vbGVhblxuZXhwb3J0IHR5cGUgQm9vbGVhbkFycmF5UHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiYm9vbGVhbltdXCI7XG59OyAvLyBQRzogYm9vbGVhbltdIC8gVFM6IGJvb2xlYW5bXSAvIEpTT046IGJvb2xlYW5bXVxuZXhwb3J0IHR5cGUgRGF0ZVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImRhdGVcIjtcbn07IC8vIFBHOiB0aW1lc3RhbXB6IC8gVFM6IERhdGUgLyBKU09OOiBzdHJpbmcoSVNPU3RyaW5nKVxuZXhwb3J0IHR5cGUgRGF0ZUFycmF5UHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiZGF0ZVtdXCI7XG59OyAvLyBQRzogdGltZXN0YW1wdHpbXSAvIFRTOiBEYXRlW10gLyBKU09OOiBzdHJpbmdbXVxuZXhwb3J0IHR5cGUgSnNvblByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImpzb25cIjtcbiAgaWQ6IHN0cmluZztcbn07IC8vIFBHOiBqc29uIC8gVFM6IGFueShpZCkgLyBKU09OOiBhbnlcbmV4cG9ydCB0eXBlIFV1aWRQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJ1dWlkXCI7XG59OyAvLyBQRzogdXVpZCAvIFRTOiBzdHJpbmcgLyBKU09OOiBzdHJpbmdcbmV4cG9ydCB0eXBlIFV1aWRBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInV1aWRbXVwiO1xufTsgLy8gUEc6IHV1aWRbXSAvIFRTOiBzdHJpbmdbXSAvIEpTT046IHN0cmluZ1tdXG5leHBvcnQgdHlwZSBWaXJ0dWFsUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwidmlydHVhbFwiO1xuICBpZDogc3RyaW5nO1xufTsgLy8gUEc6IG5vbmUgLyBUUzogYW55KGlkKSAvIEpTT046IGFueVxuXG5leHBvcnQgdHlwZSBSZWxhdGlvblR5cGUgPSBcIkhhc01hbnlcIiB8IFwiQmVsb25nc1RvT25lXCIgfCBcIk1hbnlUb01hbnlcIiB8IFwiT25lVG9PbmVcIjtcbmV4cG9ydCB0eXBlIFJlbGF0aW9uT24gPSBcIkNBU0NBREVcIiB8IFwiU0VUIE5VTExcIiB8IFwiTk8gQUNUSU9OXCIgfCBcIlNFVCBERUZBVUxUXCIgfCBcIlJFU1RSSUNUXCI7XG50eXBlIF9SZWxhdGlvblByb3AgPSB7XG4gIHR5cGU6IFwicmVsYXRpb25cIjtcbiAgbmFtZTogc3RyaW5nO1xuICB3aXRoOiBzdHJpbmc7XG4gIG51bGxhYmxlPzogYm9vbGVhbjsgLy8gREVGQVVMVDogZmFsc2VcbiAgdG9GaWx0ZXI/OiB0cnVlOyAvLyBERUZBVUxUOiBmYWxzZVxuICBkZXNjPzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIE9uZVRvT25lUmVsYXRpb25Qcm9wID0gX1JlbGF0aW9uUHJvcCAmIHtcbiAgcmVsYXRpb25UeXBlOiBcIk9uZVRvT25lXCI7XG4gIGN1c3RvbUpvaW5DbGF1c2U/OiBzdHJpbmc7XG59ICYgKFxuICAgIHwge1xuICAgICAgICBoYXNKb2luQ29sdW1uOiB0cnVlO1xuICAgICAgICB1c2VDb25zdHJhaW50PzogYm9vbGVhbjsgLy8gREVGQVVMVDogdHJ1ZVxuICAgICAgICBvblVwZGF0ZT86IFJlbGF0aW9uT247IC8vIERFRkFVTFQ6IFJFU1RSSUNUXG4gICAgICAgIG9uRGVsZXRlPzogUmVsYXRpb25PbjsgLy8gREVGQVVMVDogUkVTVFJJQ1RcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgaGFzSm9pbkNvbHVtbjogZmFsc2U7XG4gICAgICB9XG4gICk7XG5leHBvcnQgdHlwZSBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AgPSBfUmVsYXRpb25Qcm9wICYge1xuICByZWxhdGlvblR5cGU6IFwiQmVsb25nc1RvT25lXCI7XG4gIGN1c3RvbUpvaW5DbGF1c2U/OiBzdHJpbmc7XG4gIHVzZUNvbnN0cmFpbnQ/OiBib29sZWFuOyAvLyBERUZBVUxUOiB0cnVlXG4gIG9uVXBkYXRlPzogUmVsYXRpb25PbjsgLy8gREVGQVVMVDogUkVTVFJJQ1RcbiAgb25EZWxldGU/OiBSZWxhdGlvbk9uOyAvLyBERUZBVUxUOiBSRVNUUklDVFxufTtcbmV4cG9ydCB0eXBlIEhhc01hbnlSZWxhdGlvblByb3AgPSBfUmVsYXRpb25Qcm9wICYge1xuICByZWxhdGlvblR5cGU6IFwiSGFzTWFueVwiO1xuICBqb2luQ29sdW1uOiBzdHJpbmc7XG4gIGZyb21Db2x1bW4/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgTWFueVRvTWFueVJlbGF0aW9uUHJvcCA9IF9SZWxhdGlvblByb3AgJiB7XG4gIHJlbGF0aW9uVHlwZTogXCJNYW55VG9NYW55XCI7XG4gIGpvaW5UYWJsZTogYCR7c3RyaW5nfV9fJHtzdHJpbmd9YDtcbiAgb25VcGRhdGU6IFJlbGF0aW9uT247XG4gIG9uRGVsZXRlOiBSZWxhdGlvbk9uO1xufTtcbmV4cG9ydCB0eXBlIFJlbGF0aW9uUHJvcCA9XG4gIHwgT25lVG9PbmVSZWxhdGlvblByb3BcbiAgfCBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3BcbiAgfCBIYXNNYW55UmVsYXRpb25Qcm9wXG4gIHwgTWFueVRvTWFueVJlbGF0aW9uUHJvcDtcblxuZXhwb3J0IHR5cGUgRW50aXR5UHJvcCA9XG4gIHwgSW50ZWdlclByb3BcbiAgfCBJbnRlZ2VyQXJyYXlQcm9wXG4gIHwgQmlnSW50ZWdlclByb3BcbiAgfCBCaWdJbnRlZ2VyQXJyYXlQcm9wXG4gIHwgU3RyaW5nUHJvcFxuICB8IFN0cmluZ0FycmF5UHJvcFxuICB8IEVudW1Qcm9wXG4gIHwgRW51bUFycmF5UHJvcFxuICB8IE51bWJlclByb3BcbiAgfCBOdW1iZXJBcnJheVByb3BcbiAgfCBOdW1lcmljUHJvcFxuICB8IE51bWVyaWNBcnJheVByb3BcbiAgfCBOdW1lcmljUHJvcFxuICB8IEJvb2xlYW5Qcm9wXG4gIHwgQm9vbGVhbkFycmF5UHJvcFxuICB8IERhdGVQcm9wXG4gIHwgRGF0ZUFycmF5UHJvcFxuICB8IFV1aWRQcm9wXG4gIHwgVXVpZEFycmF5UHJvcFxuICB8IEpzb25Qcm9wXG4gIHwgVmlydHVhbFByb3BcbiAgfCBSZWxhdGlvblByb3A7XG5cbmV4cG9ydCB0eXBlIEVudGl0eUluZGV4ID0ge1xuICB0eXBlOiBcImluZGV4XCIgfCBcInVuaXF1ZVwiIHwgXCJmdWxsdGV4dFwiO1xuICBjb2x1bW5zOiBzdHJpbmdbXTtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXJzZXI/OiBcImJ1aWx0LWluXCIgfCBcIm5ncmFtXCI7XG59O1xuZXhwb3J0IHR5cGUgRW50aXR5SnNvbiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgcGFyZW50SWQ/OiBzdHJpbmc7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBwcm9wczogRW50aXR5UHJvcFtdO1xuICBpbmRleGVzOiBFbnRpdHlJbmRleFtdO1xuICBzdWJzZXRzOiB7XG4gICAgW3N1YnNldDogc3RyaW5nXTogc3RyaW5nW107XG4gIH07XG4gIGVudW1zOiB7XG4gICAgW2VudW1JZDogc3RyaW5nXToge1xuICAgICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICAgIH07XG4gIH07XG59O1xuZXhwb3J0IHR5cGUgRW50aXR5U3Vic2V0Um93ID0ge1xuICBmaWVsZDogc3RyaW5nO1xuICBoYXM6IHtcbiAgICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xuICB9O1xuICBjaGlsZHJlbjogRW50aXR5U3Vic2V0Um93W107XG4gIHByZWZpeGVzOiBzdHJpbmdbXTtcbiAgcmVsYXRpb25FbnRpdHk/OiBzdHJpbmc7XG4gIGlzT3Blbj86IGJvb2xlYW47XG59O1xuZXhwb3J0IHR5cGUgRmxhdHRlblN1YnNldFJvdyA9IE9taXQ8RW50aXR5U3Vic2V0Um93LCBcImNoaWxkcmVuXCI+O1xuXG4vKlxuICBQcm9wTm9kZVxuKi9cblxuLyoqXG4gKiDsl5Tti7Dti7DsnZgg7ZWE65OcIOq1rOyhsOulvCDtirjrpqwg7ZiV7YOc66GcIO2RnO2YhO2VmOuKlCDspJHqsIQg64W465Oc7J6F64uI64ukLlxuICpcbiAqICoq66qp7KCBKio6IEVudGl0eeydmCBzdWJzZXQg7ZWE65OcIO2RnO2YhOyLnSjsmIg6IFwiaWRcIiwgXCJ1c2VyLm5hbWVcIiwgXCJ0YWdzW11cIinsnYRcbiAqIOyerOq3gOyggeyduCDtirjrpqwg6rWs7KGw66GcIO2MjOyLse2VmOyXrCBab2Qg7Iqk7YKk66eIIOyDneyEseydmCDspJHqsIQg64uo6rOE66GcIOyCrOyaqe2VqeuLiOuLpC5cbiAqXG4gKiAqKuuzgO2ZmCDtnZDrpoQqKjpcbiAqIEVudGl0eSBzdWJzZXQg4oaSIEVudGl0eVByb3BOb2RlICjtirjrpqwg6rWs7KGwKSDihpIgWm9kIOyKpO2CpOuniCDihpIgUmVuZGVyaW5nTm9kZSAoVUnsmqkpXG4gKlxuICogKipub2RlVHlwZSoqOlxuICogLSBcInBsYWluXCI6IOuLqOydvCDtlYTrk5wgKOyYiDogXCJpZFwiLCBcIm5hbWVcIilcbiAqIC0gXCJvYmplY3RcIjog7KSR7LKpIOqwneyytCAo7JiIOiBcInVzZXIubmFtZVwiIOKGkiB1c2VyIOqwneyytClcbiAqIC0gXCJhcnJheVwiOiDrsLDsl7QgKOyYiDogXCJ0YWdzW11cIiDihpIgdGFncyDrsLDsl7QpXG4gKlxuICogKirsgqzsmqkg7JyE7LmYKio6IGVudGl0eS1jb252ZXJ0ZXIudHPsnZggcHJvcE5vZGVUb1pvZFR5cGUoKVxuICovXG5leHBvcnQgdHlwZSBFbnRpdHlQcm9wTm9kZSA9XG4gIHwge1xuICAgICAgbm9kZVR5cGU6IFwicGxhaW5cIjtcbiAgICAgIHByb3A6IEVudGl0eVByb3A7XG4gICAgfVxuICB8IHtcbiAgICAgIG5vZGVUeXBlOiBcIm9iamVjdFwiIHwgXCJhcnJheVwiO1xuICAgICAgcHJvcD86IEVudGl0eVByb3A7XG4gICAgICBjaGlsZHJlbjogRW50aXR5UHJvcE5vZGVbXTtcbiAgICB9O1xuXG4vKlxuICBQcm9wIFR5cGUgR3VhcmRzXG4qL1xuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZWdlclNpbmdsZVByb3AocDogdW5rbm93bik6IHAgaXMgSW50ZWdlclByb3Age1xuICByZXR1cm4gKHAgYXMgSW50ZWdlclByb3ApPy50eXBlID09PSBcImludGVnZXJcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVnZXJBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgSW50ZWdlckFycmF5UHJvcCB7XG4gIHJldHVybiAocCBhcyBJbnRlZ2VyQXJyYXlQcm9wKT8udHlwZSA9PT0gXCJpbnRlZ2VyW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0ludGVnZXJQcm9wKHA6IHVua25vd24pOiBwIGlzIEludGVnZXJQcm9wIHwgSW50ZWdlckFycmF5UHJvcCB7XG4gIHJldHVybiBpc0ludGVnZXJTaW5nbGVQcm9wKHApIHx8IGlzSW50ZWdlckFycmF5UHJvcChwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0JpZ0ludGVnZXJTaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIEJpZ0ludGVnZXJQcm9wIHtcbiAgcmV0dXJuIChwIGFzIEJpZ0ludGVnZXJQcm9wKT8udHlwZSA9PT0gXCJiaWdJbnRlZ2VyXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCaWdJbnRlZ2VyQXJyYXlQcm9wKHA6IHVua25vd24pOiBwIGlzIEJpZ0ludGVnZXJBcnJheVByb3Age1xuICByZXR1cm4gKHAgYXMgQmlnSW50ZWdlckFycmF5UHJvcCk/LnR5cGUgPT09IFwiYmlnSW50ZWdlcltdXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCaWdJbnRlZ2VyUHJvcChwOiB1bmtub3duKTogcCBpcyBCaWdJbnRlZ2VyUHJvcCB8IEJpZ0ludGVnZXJBcnJheVByb3Age1xuICByZXR1cm4gaXNCaWdJbnRlZ2VyU2luZ2xlUHJvcChwKSB8fCBpc0JpZ0ludGVnZXJBcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdTaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIFN0cmluZ1Byb3Age1xuICByZXR1cm4gKHAgYXMgU3RyaW5nUHJvcCk/LnR5cGUgPT09IFwic3RyaW5nXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmdBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgU3RyaW5nQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIFN0cmluZ0FycmF5UHJvcCk/LnR5cGUgPT09IFwic3RyaW5nW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ1Byb3AocDogdW5rbm93bik6IHAgaXMgU3RyaW5nUHJvcCB8IFN0cmluZ0FycmF5UHJvcCB7XG4gIHJldHVybiBpc1N0cmluZ1NpbmdsZVByb3AocCkgfHwgaXNTdHJpbmdBcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNFbnVtU2luZ2xlUHJvcChwOiB1bmtub3duKTogcCBpcyBFbnVtUHJvcCB7XG4gIHJldHVybiAocCBhcyBFbnVtUHJvcCk/LnR5cGUgPT09IFwiZW51bVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRW51bUFycmF5UHJvcChwOiB1bmtub3duKTogcCBpcyBFbnVtQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIEVudW1BcnJheVByb3ApPy50eXBlID09PSBcImVudW1bXVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRW51bVByb3AocDogdW5rbm93bik6IHAgaXMgRW51bVByb3AgfCBFbnVtQXJyYXlQcm9wIHtcbiAgcmV0dXJuIGlzRW51bVNpbmdsZVByb3AocCkgfHwgaXNFbnVtQXJyYXlQcm9wKHApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyU2luZ2xlUHJvcChwOiB1bmtub3duKTogcCBpcyBOdW1iZXJQcm9wIHtcbiAgcmV0dXJuIChwIGFzIE51bWJlclByb3ApPy50eXBlID09PSBcIm51bWJlclwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyQXJyYXlQcm9wKHA6IHVua25vd24pOiBwIGlzIE51bWJlckFycmF5UHJvcCB7XG4gIHJldHVybiAocCBhcyBOdW1iZXJBcnJheVByb3ApPy50eXBlID09PSBcIm51bWJlcltdXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXJQcm9wKHA6IHVua25vd24pOiBwIGlzIE51bWJlclByb3AgfCBOdW1iZXJBcnJheVByb3Age1xuICByZXR1cm4gaXNOdW1iZXJTaW5nbGVQcm9wKHApIHx8IGlzTnVtYmVyQXJyYXlQcm9wKHApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtZXJpY1NpbmdsZVByb3AocDogdW5rbm93bik6IHAgaXMgTnVtZXJpY1Byb3Age1xuICByZXR1cm4gKHAgYXMgTnVtZXJpY1Byb3ApPy50eXBlID09PSBcIm51bWVyaWNcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc051bWVyaWNBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgTnVtZXJpY0FycmF5UHJvcCB7XG4gIHJldHVybiAocCBhcyBOdW1lcmljQXJyYXlQcm9wKT8udHlwZSA9PT0gXCJudW1lcmljW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc051bWVyaWNQcm9wKHA6IHVua25vd24pOiBwIGlzIE51bWVyaWNQcm9wIHwgTnVtZXJpY0FycmF5UHJvcCB7XG4gIHJldHVybiBpc051bWVyaWNTaW5nbGVQcm9wKHApIHx8IGlzTnVtZXJpY0FycmF5UHJvcChwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0Jvb2xlYW5TaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIEJvb2xlYW5Qcm9wIHtcbiAgcmV0dXJuIChwIGFzIEJvb2xlYW5Qcm9wKT8udHlwZSA9PT0gXCJib29sZWFuXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuQXJyYXlQcm9wKHA6IHVua25vd24pOiBwIGlzIEJvb2xlYW5BcnJheVByb3Age1xuICByZXR1cm4gKHAgYXMgQm9vbGVhbkFycmF5UHJvcCk/LnR5cGUgPT09IFwiYm9vbGVhbltdXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCb29sZWFuUHJvcChwOiB1bmtub3duKTogcCBpcyBCb29sZWFuUHJvcCB8IEJvb2xlYW5BcnJheVByb3Age1xuICByZXR1cm4gaXNCb29sZWFuU2luZ2xlUHJvcChwKSB8fCBpc0Jvb2xlYW5BcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlU2luZ2xlUHJvcChwOiB1bmtub3duKTogcCBpcyBEYXRlUHJvcCB7XG4gIHJldHVybiAocCBhcyBEYXRlUHJvcCk/LnR5cGUgPT09IFwiZGF0ZVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZUFycmF5UHJvcChwOiB1bmtub3duKTogcCBpcyBEYXRlQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIERhdGVBcnJheVByb3ApPy50eXBlID09PSBcImRhdGVbXVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzRGF0ZVByb3AocDogdW5rbm93bik6IHAgaXMgRGF0ZVByb3AgfCBEYXRlQXJyYXlQcm9wIHtcbiAgcmV0dXJuIGlzRGF0ZVNpbmdsZVByb3AocCkgfHwgaXNEYXRlQXJyYXlQcm9wKHApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVXVpZFNpbmdsZVByb3AocDogdW5rbm93bik6IHAgaXMgVXVpZFByb3Age1xuICByZXR1cm4gKHAgYXMgVXVpZFByb3ApPy50eXBlID09PSBcInV1aWRcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1V1aWRBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgVXVpZEFycmF5UHJvcCB7XG4gIHJldHVybiAocCBhcyBVdWlkQXJyYXlQcm9wKT8udHlwZSA9PT0gXCJ1dWlkW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1V1aWRQcm9wKHA6IHVua25vd24pOiBwIGlzIFV1aWRQcm9wIHwgVXVpZEFycmF5UHJvcCB7XG4gIHJldHVybiBpc1V1aWRTaW5nbGVQcm9wKHApIHx8IGlzVXVpZEFycmF5UHJvcChwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0pzb25Qcm9wKHA6IHVua25vd24pOiBwIGlzIEpzb25Qcm9wIHtcbiAgcmV0dXJuIChwIGFzIEpzb25Qcm9wKT8udHlwZSA9PT0gXCJqc29uXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWaXJ0dWFsUHJvcChwOiB1bmtub3duKTogcCBpcyBWaXJ0dWFsUHJvcCB7XG4gIHJldHVybiAocCBhcyBWaXJ0dWFsUHJvcCk/LnR5cGUgPT09IFwidmlydHVhbFwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzUmVsYXRpb25Qcm9wKHA6IHVua25vd24pOiBwIGlzIFJlbGF0aW9uUHJvcCB7XG4gIHJldHVybiAocCBhcyBSZWxhdGlvblByb3ApPy50eXBlID09PSBcInJlbGF0aW9uXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNPbmVUb09uZVJlbGF0aW9uUHJvcChwOiB1bmtub3duKTogcCBpcyBPbmVUb09uZVJlbGF0aW9uUHJvcCB7XG4gIHJldHVybiAocCBhcyBPbmVUb09uZVJlbGF0aW9uUHJvcCk/LnJlbGF0aW9uVHlwZSA9PT0gXCJPbmVUb09uZVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wKHA6IHVua25vd24pOiBwIGlzIEJlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcCB7XG4gIHJldHVybiAocCBhcyBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3ApPy5yZWxhdGlvblR5cGUgPT09IFwiQmVsb25nc1RvT25lXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNIYXNNYW55UmVsYXRpb25Qcm9wKHA6IHVua25vd24pOiBwIGlzIEhhc01hbnlSZWxhdGlvblByb3Age1xuICByZXR1cm4gKHAgYXMgSGFzTWFueVJlbGF0aW9uUHJvcCk/LnJlbGF0aW9uVHlwZSA9PT0gXCJIYXNNYW55XCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNNYW55VG9NYW55UmVsYXRpb25Qcm9wKHA6IHVua25vd24pOiBwIGlzIE1hbnlUb01hbnlSZWxhdGlvblByb3Age1xuICByZXR1cm4gKHAgYXMgTWFueVRvTWFueVJlbGF0aW9uUHJvcCk/LnJlbGF0aW9uVHlwZSA9PT0gXCJNYW55VG9NYW55XCI7XG59XG5cbnR5cGUgSm9pbkNsYXVzZSA9XG4gIHwge1xuICAgICAgZnJvbTogc3RyaW5nO1xuICAgICAgdG86IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgY3VzdG9tOiBzdHJpbmc7XG4gICAgfTtcbmV4cG9ydCBmdW5jdGlvbiBpc0N1c3RvbUpvaW5DbGF1c2UocDogdW5rbm93bik6IHAgaXMgeyBjdXN0b206IHN0cmluZyB9IHtcbiAgcmV0dXJuICEhKHAgYXMgeyBjdXN0b206IHN0cmluZyB9KT8uY3VzdG9tO1xufVxuXG50eXBlIFN1YnNldExvYWRlciA9IHtcbiAgYXM6IHN0cmluZztcbiAgdGFibGU6IHN0cmluZztcbiAgbWFueUpvaW46IHtcbiAgICBmcm9tVGFibGU6IHN0cmluZztcbiAgICBmcm9tQ29sOiBzdHJpbmc7XG4gICAgaWRGaWVsZDogc3RyaW5nO1xuICAgIHRvVGFibGU6IHN0cmluZztcbiAgICB0b0NvbDogc3RyaW5nO1xuICAgIHRocm91Z2g/OiB7XG4gICAgICB0YWJsZTogc3RyaW5nO1xuICAgICAgZnJvbUNvbDogc3RyaW5nO1xuICAgICAgdG9Db2w6IHN0cmluZztcbiAgICB9O1xuICB9O1xuICBvbmVKb2luczogKHtcbiAgICBhczogc3RyaW5nO1xuICAgIGpvaW46IFwiaW5uZXJcIiB8IFwib3V0ZXJcIjtcbiAgICB0YWJsZTogc3RyaW5nO1xuICB9ICYgSm9pbkNsYXVzZSlbXTtcbiAgc2VsZWN0OiBzdHJpbmdbXTtcbiAgbG9hZGVycz86IFN1YnNldExvYWRlcltdO1xufTtcblxuZXhwb3J0IHR5cGUgU3Vic2V0UXVlcnkgPSB7XG4gIHNlbGVjdDogc3RyaW5nW107XG4gIHZpcnR1YWw6IHN0cmluZ1tdO1xuICBqb2luczogKHtcbiAgICBhczogc3RyaW5nO1xuICAgIGpvaW46IFwiaW5uZXJcIiB8IFwib3V0ZXJcIjtcbiAgICB0YWJsZTogc3RyaW5nO1xuICB9ICYgSm9pbkNsYXVzZSlbXTtcbiAgbG9hZGVyczogU3Vic2V0TG9hZGVyW107XG59O1xuXG4vKiBCYXNlTW9kZWwgKi9cbmV4cG9ydCBjb25zdCBTb25hbXVRdWVyeU1vZGUgPSB6LmVudW0oW1wiYm90aFwiLCBcImxpc3RcIiwgXCJjb3VudFwiXSk7XG5leHBvcnQgdHlwZSBTb25hbXVRdWVyeU1vZGUgPSB6LmluZmVyPHR5cGVvZiBTb25hbXVRdWVyeU1vZGU+O1xuXG4vKiBLbmV4IE1pZ3JhdGlvbiAqL1xuZXhwb3J0IHR5cGUgS25leEVycm9yID0ge1xuICBjb2RlOiBzdHJpbmc7XG4gIGVycm5vOiBudW1iZXI7XG4gIHNxbDogc3RyaW5nO1xuICBzcWxNZXNzYWdlOiBzdHJpbmc7XG4gIHNxbFN0YXRlOiBzdHJpbmc7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGlzS25leEVycm9yKGU6IHVua25vd24pOiBlIGlzIEtuZXhFcnJvciB7XG4gIHJldHVybiAhIShlIGFzIEtuZXhFcnJvcik/LmNvZGUgJiYgISEoZSBhcyBLbmV4RXJyb3IpPy5zcWxNZXNzYWdlICYmICEhKGUgYXMgS25leEVycm9yKT8uc3FsU3RhdGU7XG59XG5cbmV4cG9ydCB0eXBlIEtuZXhDb2x1bW5UeXBlID1cbiAgfCBcInN0cmluZ1wiXG4gIHwgXCJ0ZXh0XCJcbiAgfCBcInNtYWxsdGV4dFwiXG4gIHwgXCJtZWRpdW10ZXh0XCJcbiAgfCBcImxvbmd0ZXh0XCJcbiAgfCBcImludGVnZXJcIlxuICB8IFwiYmlnSW50ZWdlclwiXG4gIHwgXCJkZWNpbWFsXCJcbiAgfCBcInRpbWVzdGFtcFwiXG4gIHwgXCJib29sZWFuXCJcbiAgfCBcImZvcmVpZ25cIlxuICB8IFwidXVpZFwiXG4gIHwgXCJqc29uXCJcbiAgfCBcImZsb2F0XCJcbiAgfCBcImRhdGVcIlxuICB8IFwidGltZVwiXG4gIHwgXCJkYXRldGltZVwiO1xuZXhwb3J0IHR5cGUgTWlncmF0aW9uQ29sdW1uVHlwZSA9XG4gIHwgXCJzdHJpbmdcIlxuICB8IFwic3RyaW5nW11cIlxuICB8IFwiaW50ZWdlclwiXG4gIHwgXCJpbnRlZ2VyW11cIlxuICB8IFwiYmlnSW50ZWdlclwiXG4gIHwgXCJiaWdJbnRlZ2VyW11cIlxuICB8IFwibnVtYmVyT3JOdW1lcmljXCJcbiAgfCBcIm51bWJlck9yTnVtZXJpY1tdXCJcbiAgfCBcImJvb2xlYW5cIlxuICB8IFwiYm9vbGVhbltdXCJcbiAgfCBcImRhdGVcIlxuICB8IFwiZGF0ZVtdXCJcbiAgfCBcInV1aWRcIlxuICB8IFwidXVpZFtdXCJcbiAgfCBcImpzb25cIjtcbmV4cG9ydCB0eXBlIE1pZ3JhdGlvbkNvbHVtbiA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBNaWdyYXRpb25Db2x1bW5UeXBlO1xuICBudWxsYWJsZTogYm9vbGVhbjtcbiAgbnVtYmVyVHlwZT86IFwicmVhbFwiIHwgXCJkb3VibGUgcHJlY2lzaW9uXCIgfCBcIm51bWVyaWNcIjtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBkZWZhdWx0VG8/OiBzdHJpbmc7XG4gIHByZWNpc2lvbj86IG51bWJlcjtcbiAgc2NhbGU/OiBudW1iZXI7XG59O1xuZXhwb3J0IHR5cGUgTWlncmF0aW9uSW5kZXggPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgY29sdW1uczogc3RyaW5nW107XG4gIHR5cGU6IFwidW5pcXVlXCIgfCBcImluZGV4XCIgfCBcImZ1bGx0ZXh0XCI7XG4gIHBhcnNlcj86IFwiYnVpbHQtaW5cIiB8IFwibmdyYW1cIjtcbn07XG5leHBvcnQgdHlwZSBNaWdyYXRpb25Gb3JlaWduID0ge1xuICBjb2x1bW5zOiBzdHJpbmdbXTtcbiAgdG86IHN0cmluZztcbiAgb25VcGRhdGU6IFJlbGF0aW9uT247XG4gIG9uRGVsZXRlOiBSZWxhdGlvbk9uO1xufTtcbmV4cG9ydCB0eXBlIE1pZ3JhdGlvbkpvaW5UYWJsZSA9IHtcbiAgdGFibGU6IHN0cmluZztcbiAgaW5kZXhlczogTWlncmF0aW9uSW5kZXhbXTtcbiAgY29sdW1uczogTWlncmF0aW9uQ29sdW1uW107XG4gIGZvcmVpZ25zOiBNaWdyYXRpb25Gb3JlaWduW107XG59O1xuZXhwb3J0IHR5cGUgTWlncmF0aW9uU2V0ID0ge1xuICB0YWJsZTogc3RyaW5nO1xuICBjb2x1bW5zOiBNaWdyYXRpb25Db2x1bW5bXTtcbiAgaW5kZXhlczogTWlncmF0aW9uSW5kZXhbXTtcbiAgZm9yZWlnbnM6IE1pZ3JhdGlvbkZvcmVpZ25bXTtcbn07XG5leHBvcnQgdHlwZSBNaWdyYXRpb25TZXRBbmRKb2luVGFibGUgPSBNaWdyYXRpb25TZXQgJiB7XG4gIGpvaW5UYWJsZXM6IE1pZ3JhdGlvbkpvaW5UYWJsZVtdO1xufTtcbmV4cG9ydCB0eXBlIEdlbk1pZ3JhdGlvbkNvZGUgPSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIHR5cGU6IFwibm9ybWFsXCIgfCBcImZvcmVpZ25cIjtcbiAgZm9ybWF0dGVkOiBzdHJpbmcgfCBudWxsO1xufTtcblxuLyogQXBpICovXG5leHBvcnQgdHlwZSBBcGlQYXJhbSA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBBcGlQYXJhbVR5cGU7XG4gIG9wdGlvbmFsOiBib29sZWFuO1xuICBkZWZhdWx0RGVmPzogc3RyaW5nO1xufTtcbmV4cG9ydCBuYW1lc3BhY2UgQXBpUGFyYW1UeXBlIHtcbiAgZXhwb3J0IHR5cGUgT2JqZWN0ID0ge1xuICAgIHQ6IFwib2JqZWN0XCI7XG4gICAgcHJvcHM6IEFwaVBhcmFtW107XG4gIH07XG4gIGV4cG9ydCB0eXBlIFVuaW9uID0ge1xuICAgIHQ6IFwidW5pb25cIjtcbiAgICB0eXBlczogQXBpUGFyYW1UeXBlW107XG4gIH07XG4gIGV4cG9ydCB0eXBlIEludGVyc2VjdGlvbiA9IHtcbiAgICB0OiBcImludGVyc2VjdGlvblwiO1xuICAgIHR5cGVzOiBBcGlQYXJhbVR5cGVbXTtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgU3RyaW5nTGl0ZXJhbCA9IHtcbiAgICB0OiBcInN0cmluZy1saXRlcmFsXCI7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgfTtcbiAgZXhwb3J0IHR5cGUgTnVtZXJpY0xpdGVyYWwgPSB7XG4gICAgdDogXCJudW1lcmljLWxpdGVyYWxcIjtcbiAgICB2YWx1ZTogbnVtYmVyO1xuICB9O1xuICBleHBvcnQgdHlwZSBBcnJheSA9IHtcbiAgICB0OiBcImFycmF5XCI7XG4gICAgZWxlbWVudHNUeXBlOiBBcGlQYXJhbVR5cGU7XG4gIH07XG4gIGV4cG9ydCB0eXBlIFJlZiA9IHtcbiAgICB0OiBcInJlZlwiO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgYXJncz86IEFwaVBhcmFtVHlwZVtdO1xuICB9O1xuICBleHBvcnQgdHlwZSBJbmRleGVkQWNjZXNzID0ge1xuICAgIHQ6IFwiaW5kZXhlZC1hY2Nlc3NcIjtcbiAgICBvYmplY3Q6IEFwaVBhcmFtVHlwZTtcbiAgICBpbmRleDogQXBpUGFyYW1UeXBlO1xuICB9O1xuICBleHBvcnQgdHlwZSBUdXBsZVR5cGUgPSB7XG4gICAgdDogXCJ0dXBsZS10eXBlXCI7XG4gICAgZWxlbWVudHM6IEFwaVBhcmFtVHlwZVtdO1xuICB9O1xuICBleHBvcnQgdHlwZSBQaWNrID0gUmVmICYge1xuICAgIHQ6IFwicmVmXCI7XG4gICAgaWQ6IFwiUGlja1wiO1xuICB9O1xuICBleHBvcnQgdHlwZSBPbWl0ID0gUmVmICYge1xuICAgIHQ6IFwicmVmXCI7XG4gICAgaWQ6IFwiT21pdFwiO1xuICB9O1xuICBleHBvcnQgdHlwZSBQYXJ0aWFsID0gUmVmICYge1xuICAgIHQ6IFwicmVmXCI7XG4gICAgaWQ6IFwiUGFydGlhbFwiO1xuICB9O1xuICBleHBvcnQgdHlwZSBQcm9taXNlID0gUmVmICYge1xuICAgIHQ6IFwicmVmXCI7XG4gICAgaWQ6IFwiUHJvbWlzZVwiO1xuICB9O1xuICBleHBvcnQgdHlwZSBDb250ZXh0ID0gUmVmICYge1xuICAgIHQ6IFwicmVmXCI7XG4gICAgaWQ6IFwiQ29udGV4dFwiO1xuICB9O1xuICBleHBvcnQgdHlwZSBUeXBlUGFyYW0gPSB7XG4gICAgdDogXCJ0eXBlLXBhcmFtXCI7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjb25zdHJhaW50PzogQXBpUGFyYW1UeXBlO1xuICB9O1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBpc09iamVjdCh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuT2JqZWN0IHtcbiAgICByZXR1cm4gKHYgYXMgQXBpUGFyYW1UeXBlLk9iamVjdCk/LnQgPT09IFwib2JqZWN0XCI7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzVW5pb24odjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlVuaW9uIHtcbiAgICByZXR1cm4gKHYgYXMgQXBpUGFyYW1UeXBlLlVuaW9uKT8udCA9PT0gXCJ1bmlvblwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc0ludGVyc2VjdGlvbih2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuSW50ZXJzZWN0aW9uIHtcbiAgICByZXR1cm4gKHYgYXMgQXBpUGFyYW1UeXBlLkludGVyc2VjdGlvbik/LnQgPT09IFwiaW50ZXJzZWN0aW9uXCI7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nTGl0ZXJhbCh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuU3RyaW5nTGl0ZXJhbCB7XG4gICAgcmV0dXJuICh2IGFzIEFwaVBhcmFtVHlwZS5TdHJpbmdMaXRlcmFsKT8udCA9PT0gXCJzdHJpbmctbGl0ZXJhbFwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc051bWVyaWNMaXRlcmFsKHY6IHVua25vd24pOiB2IGlzIEFwaVBhcmFtVHlwZS5OdW1lcmljTGl0ZXJhbCB7XG4gICAgcmV0dXJuICh2IGFzIEFwaVBhcmFtVHlwZS5OdW1lcmljTGl0ZXJhbCk/LnQgPT09IFwibnVtZXJpYy1saXRlcmFsXCI7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXkodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLkFycmF5IHtcbiAgICByZXR1cm4gKHYgYXMgQXBpUGFyYW1UeXBlLkFycmF5KT8udCA9PT0gXCJhcnJheVwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1JlZih2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuUmVmIHtcbiAgICByZXR1cm4gdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdiAhPT0gbnVsbCAmJiAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwicmVmXCI7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzSW5kZXhlZEFjY2Vzcyh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuSW5kZXhlZEFjY2VzcyB7XG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgIT09IG51bGwgJiYgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcImluZGV4ZWQtYWNjZXNzXCI7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzVHVwbGVUeXBlKHY6IHVua25vd24pOiB2IGlzIEFwaVBhcmFtVHlwZS5UdXBsZVR5cGUge1xuICAgIHJldHVybiB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJiB2ICE9PSBudWxsICYmICh2IGFzIHsgdD86IHVua25vd24gfSkudCA9PT0gXCJ0dXBsZS10eXBlXCI7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUGljayh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuUGljayB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmXG4gICAgICB2ICE9PSBudWxsICYmXG4gICAgICAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwicmVmXCIgJiZcbiAgICAgICh2IGFzIHsgaWQ/OiB1bmtub3duIH0pLmlkID09PSBcIlBpY2tcIlxuICAgICk7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzT21pdCh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuT21pdCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmXG4gICAgICB2ICE9PSBudWxsICYmXG4gICAgICAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwicmVmXCIgJiZcbiAgICAgICh2IGFzIHsgaWQ/OiB1bmtub3duIH0pLmlkID09PSBcIk9taXRcIlxuICAgICk7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUGFydGlhbCh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuUGFydGlhbCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmXG4gICAgICB2ICE9PSBudWxsICYmXG4gICAgICAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwicmVmXCIgJiZcbiAgICAgICh2IGFzIHsgaWQ/OiB1bmtub3duIH0pLmlkID09PSBcIlBhcnRpYWxcIlxuICAgICk7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUHJvbWlzZSh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuUHJvbWlzZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmXG4gICAgICB2ICE9PSBudWxsICYmXG4gICAgICAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwicmVmXCIgJiZcbiAgICAgICh2IGFzIHsgaWQ/OiB1bmtub3duIH0pLmlkID09PSBcIlByb21pc2VcIlxuICAgICk7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzQ29udGV4dCh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuQ29udGV4dCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmXG4gICAgICB2ICE9PSBudWxsICYmXG4gICAgICAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwicmVmXCIgJiZcbiAgICAgICh2IGFzIHsgaWQ/OiB1bmtub3duIH0pLmlkID09PSBcIkNvbnRleHRcIlxuICAgICk7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUmVmS25leCh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuUmVmIHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgIHYgIT09IG51bGwgJiZcbiAgICAgICh2IGFzIHsgdD86IHVua25vd24gfSkudCA9PT0gXCJyZWZcIiAmJlxuICAgICAgKHYgYXMgeyBpZD86IHVua25vd24gfSkuaWQgPT09IFwiS25leFwiXG4gICAgKTtcbiAgfVxuICBleHBvcnQgZnVuY3Rpb24gaXNUeXBlUGFyYW0odjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlR5cGVQYXJhbSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgIT09IG51bGwgJiYgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcInR5cGUtcGFyYW1cIjtcbiAgfVxufVxuZXhwb3J0IHR5cGUgQXBpUGFyYW1UeXBlID1cbiAgfCBcInN0cmluZ1wiXG4gIHwgXCJudW1iZXJcIlxuICB8IFwiYm9vbGVhblwiXG4gIHwgXCJudWxsXCJcbiAgfCBcInVuZGVmaW5lZFwiXG4gIHwgXCJ2b2lkXCJcbiAgfCBcImFueVwiXG4gIHwgXCJ1bmtub3duXCJcbiAgfCBcInRydWVcIlxuICB8IFwiZmFsc2VcIlxuICB8IEFwaVBhcmFtVHlwZS5TdHJpbmdMaXRlcmFsXG4gIHwgQXBpUGFyYW1UeXBlLk51bWVyaWNMaXRlcmFsXG4gIHwgQXBpUGFyYW1UeXBlLk9iamVjdFxuICB8IEFwaVBhcmFtVHlwZS5VbmlvblxuICB8IEFwaVBhcmFtVHlwZS5JbnRlcnNlY3Rpb25cbiAgfCBBcGlQYXJhbVR5cGUuQXJyYXlcbiAgfCBBcGlQYXJhbVR5cGUuUmVmXG4gIHwgQXBpUGFyYW1UeXBlLkluZGV4ZWRBY2Nlc3NcbiAgfCBBcGlQYXJhbVR5cGUuVHlwZVBhcmFtXG4gIHwgQXBpUGFyYW1UeXBlLlR1cGxlVHlwZTtcblxuLyogVGVtcGxhdGUgKi9cbi8qKlxuICogVUkg7Lu07Y+s64SM7Yq4IOugjOuNlOungeydhCDsnITtlZwg66mU7YOA642w7J207YSwIOuFuOuTnOyeheuLiOuLpC5cbiAqXG4gKiAqKuuqqeyggSoqOiBab2Qg7Iqk7YKk66eI66Gc67aA7YSwIO2UhOuhoO2KuOyXlOuTnCBVSSDsu7Ttj6zrhIztirjrpbwg7J6Q64+ZIOyDneyEse2VmOq4sCDsnITtlZxcbiAqIOugjOuNlOungSDsoJXrs7Trpbwg64u07J2AIO2KuOumrCDqtazsobDsnoXri4jri6QuIOqwgSDtlYTrk5zqsIAg7Ja065akIFVJIOy7tO2PrOuEjO2KuOuhnFxuICog7ZGc7ZiE65CY7Ja07JW8IO2VmOuKlOyngCjthY3siqTtirgsIOydtOuvuOyngCwg64Kg7KecLCBFbnVtIOyEoO2DnSDrk7Ep66W8IOuqheyLnO2VqeuLiOuLpC5cbiAqXG4gKiAqKuuzgO2ZmCDtnZDrpoQqKjpcbiAqIEVudGl0eSBzdWJzZXQg4oaSIEVudGl0eVByb3BOb2RlIOKGkiBab2Qg7Iqk7YKk66eIIOKGkiBSZW5kZXJpbmdOb2RlIChVSeyaqSkg4oaSIFJlYWN0IOy7tO2PrOuEjO2KuCDsvZTrk5wg7IOd7ISxXG4gKlxuICogKirso7zsmpQg7ZWE65OcKio6XG4gKiAtIGByZW5kZXJUeXBlYDogVUkg7Lu07Y+s64SM7Yq4IOycoO2YlSAoc3RyaW5nLXBsYWluLCBudW1iZXItZmtfaWQsIGVudW1zLCBhcnJheSDrk7EpXG4gKiAtIGB6b2RUeXBlYDog7JuQ67O4IFpvZCDsiqTtgqTrp4ggKHZhbGlkYXRpb24g7JqpKVxuICogLSBgY2hpbGRyZW5gOiDspJHssqnrkJwg6rCd7LK0IO2VhOuTnOuTpCAob2JqZWN07J28IOuVjClcbiAqIC0gYGVsZW1lbnRgOiDrsLDsl7Qg7JqU7IaMIO2DgOyehSAoYXJyYXnsnbwg65WMKVxuICpcbiAqICoq7IKs7JqpIOychOy5mCoqOlxuICogLSB6b2QtY29udmVydGVyLnRz7J2YIHpvZFR5cGVUb1JlbmRlcmluZ05vZGUoKeyXkOyEnCDsg53shLFcbiAqIC0gdmlld19mb3JtLnRlbXBsYXRlLnRzLCB2aWV3X2xpc3QudGVtcGxhdGUudHMg65Ox7JeQ7IScIFJlYWN0IOy7tO2PrOuEjO2KuCDsvZTrk5wg7IOd7ISx7JeQIOyCrOyaqVxuICovXG4vLyDshYDtlIQg7LC47KGwIO2DgOyeheydtOuvgOuhnCBab2Qg7IOd65617ZWY6rOgIOyngeygkSDsoJXsnZhcbmV4cG9ydCBjb25zdCBSZW5kZXJpbmdOb2RlID0gei5hbnkoKTtcbmV4cG9ydCB0eXBlIFJlbmRlcmluZ05vZGUgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgcmVuZGVyVHlwZTpcbiAgICB8IFwic3RyaW5nLXBsYWluXCJcbiAgICB8IFwic3RyaW5nLWltYWdlXCJcbiAgICB8IFwic3RyaW5nLWRhdGV0aW1lXCJcbiAgICB8IFwic3RyaW5nLWRhdGVcIlxuICAgIHwgXCJkYXRldGltZVwiXG4gICAgfCBcIm51bWJlci1wbGFpblwiXG4gICAgfCBcIm51bWJlci1pZFwiXG4gICAgfCBcIm51bWJlci1ma19pZFwiXG4gICAgfCBcImJvb2xlYW5cIlxuICAgIHwgXCJlbnVtc1wiXG4gICAgfCBcImFycmF5XCJcbiAgICB8IFwiYXJyYXktaW1hZ2VzXCJcbiAgICB8IFwib2JqZWN0XCJcbiAgICB8IFwib2JqZWN0LXBpY2tcIlxuICAgIHwgXCJyZWNvcmRcIjtcbiAgem9kVHlwZTogei5ab2RUeXBlQW55O1xuICBlbGVtZW50PzogUmVuZGVyaW5nTm9kZTtcbiAgY2hpbGRyZW4/OiBSZW5kZXJpbmdOb2RlW107XG4gIGNvbmZpZz86IHtcbiAgICBwaWNrZWQ6IHN0cmluZztcbiAgfTtcbiAgb3B0aW9uYWw/OiBib29sZWFuO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG59O1xuXG5jb25zdCBCYXNlUHJvcEZpZWxkcyA9IHtcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgZGVzYzogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBudWxsYWJsZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdG9GaWx0ZXI6IHoubGl0ZXJhbCh0cnVlKS5vcHRpb25hbCgpLFxuICBkYkRlZmF1bHQ6IHoudW5pb24oW3ouc3RyaW5nKCksIHoubnVtYmVyKCksIHouYm9vbGVhbigpXSkub3B0aW9uYWwoKSxcbn07XG5cbi8vIOu2gOqwgCDtlYTrk5zqsIAg7ZWE7JqU7JeG64qUIHByb3BcbmNvbnN0IEJhc2VQcm9wRmllbGRzV2l0aG91dEFkZGl0aW9uYWwgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoudW5pb24oW1xuICAgICAgei5saXRlcmFsKFwiaW50ZWdlclwiKSxcbiAgICAgIHoubGl0ZXJhbChcImludGVnZXJbXVwiKSxcbiAgICAgIHoubGl0ZXJhbChcImJpZ0ludGVnZXJcIiksXG4gICAgICB6LmxpdGVyYWwoXCJiaWdJbnRlZ2VyW11cIiksXG4gICAgICB6LmxpdGVyYWwoXCJib29sZWFuXCIpLFxuICAgICAgei5saXRlcmFsKFwiYm9vbGVhbltdXCIpLFxuICAgICAgei5saXRlcmFsKFwiZGF0ZVwiKSxcbiAgICAgIHoubGl0ZXJhbChcImRhdGVbXVwiKSxcbiAgICAgIHoubGl0ZXJhbChcInV1aWRcIiksXG4gICAgICB6LmxpdGVyYWwoXCJ1dWlkW11cIiksXG4gICAgXSksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuLy8gcHJlY2lzaW9uL3NjYWxlIO2VhOuTnFxuY29uc3QgUHJlY2lzaW9uU2NhbGVGaWVsZHMgPSB7XG4gIHByZWNpc2lvbjogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBzY2FsZTogei5udW1iZXIoKS5vcHRpb25hbCgpLFxufTtcblxuLy8g6rCBIO2DgOyeheuzhCDsiqTtgqTrp4gg7KCV7J2YXG5cbmNvbnN0IFN0cmluZ1Byb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcInN0cmluZ1wiKSxcbiAgICBsZW5ndGg6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuY29uc3QgU3RyaW5nQXJyYXlQcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUHJvcEZpZWxkcyxcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJzdHJpbmdbXVwiKSxcbiAgICBsZW5ndGg6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBFbnVtUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwiZW51bVwiKSxcbiAgICBpZDogei5zdHJpbmcoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuY29uc3QgRW51bUFycmF5UHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwiZW51bVtdXCIpLFxuICAgIGlkOiB6LnN0cmluZygpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IE51bWJlclByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcIm51bWJlclwiKSxcbiAgICAuLi5QcmVjaXNpb25TY2FsZUZpZWxkcyxcbiAgICBudW1iZXJUeXBlOiB6LmVudW0oW1wicmVhbFwiLCBcImRvdWJsZSBwcmVjaXNpb25cIiwgXCJudW1lcmljXCJdKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5jb25zdCBOdW1iZXJBcnJheVByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcIm51bWJlcltdXCIpLFxuICAgIC4uLlByZWNpc2lvblNjYWxlRmllbGRzLFxuICAgIG51bWJlclR5cGU6IHouZW51bShbXCJyZWFsXCIsIFwiZG91YmxlIHByZWNpc2lvblwiLCBcIm51bWVyaWNcIl0pLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuY29uc3QgTnVtZXJpY1Byb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcIm51bWVyaWNcIiksXG4gICAgLi4uUHJlY2lzaW9uU2NhbGVGaWVsZHMsXG4gIH0pXG4gIC5zdHJpY3QoKTtcbmNvbnN0IE51bWVyaWNBcnJheVByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcIm51bWVyaWNbXVwiKSxcbiAgICAuLi5QcmVjaXNpb25TY2FsZUZpZWxkcyxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBKc29uUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwianNvblwiKSxcbiAgICBpZDogei5zdHJpbmcoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBWaXJ0dWFsUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwidmlydHVhbFwiKSxcbiAgICBpZDogei5zdHJpbmcoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG4vLyBSZWxhdGlvbiDtg4DsnoXsnYAgcmVsYXRpb25UeXBl7JeQIOuUsOudvCDshLjrtoTtmZRcbmNvbnN0IEJhc2VSZWxhdGlvbkZpZWxkcyA9IHtcbiAgLi4uQmFzZVByb3BGaWVsZHMsXG4gIHR5cGU6IHoubGl0ZXJhbChcInJlbGF0aW9uXCIpLFxuICB3aXRoOiB6LnN0cmluZygpLFxufTtcblxuLy8gUmVsYXRpb25PbiDtg4DsnoVcbmNvbnN0IFJlbGF0aW9uT25TY2hlbWEgPSB6LmVudW0oW1wiQ0FTQ0FERVwiLCBcIlNFVCBOVUxMXCIsIFwiTk8gQUNUSU9OXCIsIFwiU0VUIERFRkFVTFRcIiwgXCJSRVNUUklDVFwiXSk7XG5cbmNvbnN0IEJlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVJlbGF0aW9uRmllbGRzLFxuICAgIHJlbGF0aW9uVHlwZTogei5saXRlcmFsKFwiQmVsb25nc1RvT25lXCIpLFxuICAgIGN1c3RvbUpvaW5DbGF1c2U6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICB1c2VDb25zdHJhaW50OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIG9uVXBkYXRlOiBSZWxhdGlvbk9uU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgb25EZWxldGU6IFJlbGF0aW9uT25TY2hlbWEub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBIYXNNYW55UmVsYXRpb25Qcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUmVsYXRpb25GaWVsZHMsXG4gICAgcmVsYXRpb25UeXBlOiB6LmxpdGVyYWwoXCJIYXNNYW55XCIpLFxuICAgIGpvaW5Db2x1bW46IHouc3RyaW5nKCksXG4gICAgZnJvbUNvbHVtbjogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IE1hbnlUb01hbnlSZWxhdGlvblByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VSZWxhdGlvbkZpZWxkcyxcbiAgICByZWxhdGlvblR5cGU6IHoubGl0ZXJhbChcIk1hbnlUb01hbnlcIiksXG4gICAgam9pblRhYmxlOiB6LnN0cmluZygpLFxuICAgIG9uVXBkYXRlOiBSZWxhdGlvbk9uU2NoZW1hLFxuICAgIG9uRGVsZXRlOiBSZWxhdGlvbk9uU2NoZW1hLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IE9uZVRvT25lUmVsYXRpb25Qcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUmVsYXRpb25GaWVsZHMsXG4gICAgcmVsYXRpb25UeXBlOiB6LmxpdGVyYWwoXCJPbmVUb09uZVwiKSxcbiAgICBjdXN0b21Kb2luQ2xhdXNlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaGFzSm9pbkNvbHVtbjogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICB1c2VDb25zdHJhaW50OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIG9uVXBkYXRlOiBSZWxhdGlvbk9uU2NoZW1hLm9wdGlvbmFsKCksXG4gICAgb25EZWxldGU6IFJlbGF0aW9uT25TY2hlbWEub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBSZWxhdGlvblR5cGVzID0gW1wiQmVsb25nc1RvT25lXCIsIFwiSGFzTWFueVwiLCBcIk1hbnlUb01hbnlcIiwgXCJPbmVUb09uZVwiXSBhcyBjb25zdDtcbmV4cG9ydCBjb25zdCBSZWxhdGlvblByb3BTY2hlbWEgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcbiAgXCJyZWxhdGlvblR5cGVcIixcbiAgW1xuICAgIEJlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcFNjaGVtYSxcbiAgICBIYXNNYW55UmVsYXRpb25Qcm9wU2NoZW1hLFxuICAgIE1hbnlUb01hbnlSZWxhdGlvblByb3BTY2hlbWEsXG4gICAgT25lVG9PbmVSZWxhdGlvblByb3BTY2hlbWEsXG4gIF0sXG4gIHtcbiAgICBlcnJvcjogKGlzcykgPT5cbiAgICAgIGByZWxhdGlvblR5cGXsnYAgJHtSZWxhdGlvblR5cGVzLm1hcCgodCkgPT4gYCcke3R9J2ApLmpvaW4oXCIsIFwiKX0g7KSRIO2VmOuCmOyXrOyVvCDtlanri4jri6QuIOyeheugpeqwkjogXCIkeyhpc3MuaW5wdXQgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy5yZWxhdGlvblR5cGV9XCJgLFxuICB9LFxuKTtcblxuY29uc3QgTm9ybWFsUHJvcFR5cGVzID0gW1xuICBcImludGVnZXJcIixcbiAgXCJpbnRlZ2VyW11cIixcbiAgXCJiaWdJbnRlZ2VyXCIsXG4gIFwiYmlnSW50ZWdlcltdXCIsXG4gIFwic3RyaW5nXCIsXG4gIFwic3RyaW5nW11cIixcbiAgXCJlbnVtXCIsXG4gIFwiZW51bVtdXCIsXG4gIFwibnVtYmVyXCIsXG4gIFwibnVtYmVyW11cIixcbiAgXCJudW1lcmljXCIsXG4gIFwibnVtZXJpY1tdXCIsXG4gIFwiYm9vbGVhblwiLFxuICBcImJvb2xlYW5bXVwiLFxuICBcImRhdGVcIixcbiAgXCJkYXRlW11cIixcbiAgXCJ1dWlkXCIsXG4gIFwidXVpZFtdXCIsXG4gIFwianNvblwiLFxuICBcInZpcnR1YWxcIixcbl0gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgTm9ybWFsUHJvcFNjaGVtYSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFxuICBcInR5cGVcIixcbiAgW1xuICAgIEJhc2VQcm9wRmllbGRzV2l0aG91dEFkZGl0aW9uYWwsXG4gICAgU3RyaW5nUHJvcFNjaGVtYSxcbiAgICBTdHJpbmdBcnJheVByb3BTY2hlbWEsXG4gICAgRW51bVByb3BTY2hlbWEsXG4gICAgRW51bUFycmF5UHJvcFNjaGVtYSxcbiAgICBOdW1iZXJQcm9wU2NoZW1hLFxuICAgIE51bWJlckFycmF5UHJvcFNjaGVtYSxcbiAgICBOdW1lcmljUHJvcFNjaGVtYSxcbiAgICBOdW1lcmljQXJyYXlQcm9wU2NoZW1hLFxuICAgIEpzb25Qcm9wU2NoZW1hLFxuICAgIFZpcnR1YWxQcm9wU2NoZW1hLFxuICBdLFxuICB7XG4gICAgZXJyb3I6IChpc3MpID0+XG4gICAgICBgdHlwZeydgCAke05vcm1hbFByb3BUeXBlcy5tYXAoKHQpID0+IGAnJHt0fSdgKS5qb2luKFwiLCBcIil9IOykkSDtlZjrgpjsl6zslbwg7ZWp64uI64ukLiDsnoXroKXqsJI6IFwiJHsoaXNzLmlucHV0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8udHlwZX1cImAsXG4gIH0sXG4pO1xuXG5jb25zdCBBbGxQcm9wVHlwZXMgPSBbLi4uTm9ybWFsUHJvcFR5cGVzLCBcInJlbGF0aW9uXCJdIGFzIGNvbnN0O1xuY29uc3QgRW50aXR5UHJvcFNjaGVtYSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbTm9ybWFsUHJvcFNjaGVtYSwgUmVsYXRpb25Qcm9wU2NoZW1hXSwge1xuICBlcnJvcjogKGlzcykgPT5cbiAgICBgdHlwZeydgCAke0FsbFByb3BUeXBlcy5tYXAoKHQpID0+IGAnJHt0fSdgKS5qb2luKFwiLCBcIil9IOykkSDtlZjrgpjsl6zslbwg7ZWp64uI64ukLiDsnoXroKXqsJI6IFwiJHsoaXNzLmlucHV0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8udHlwZX1cImAsXG59KTtcblxuLy8gRW50aXR5SW5kZXgg7Iqk7YKk66eIIOygleydmFxuY29uc3QgRW50aXR5SW5kZXhTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHouZW51bShbXCJpbmRleFwiLCBcInVuaXF1ZVwiLCBcImZ1bGx0ZXh0XCJdKSxcbiAgICBjb2x1bW5zOiB6LmFycmF5KHouc3RyaW5nKCkpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkubWluKDEpLm1heCg2MyksXG4gICAgcGFyc2VyOiB6LmVudW0oW1wiYnVpbHQtaW5cIiwgXCJuZ3JhbVwiXSkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5leHBvcnQgY29uc3QgRW50aXR5SnNvblNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgaWQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJQYXNjYWxDYXNl66GcIOuQnCBFbnRpdHkgSURcIiksXG4gICAgdGl0bGU6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJFbnRpdHkg7J2066aEXCIpLFxuICAgIHRhYmxlOiB6LnN0cmluZygpLmRlc2NyaWJlKFwic25ha2VfY2FzZeuhnCDrkJwg7YWM7J2067iU66qFXCIpLFxuICAgIHBhcmVudElkOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCLrtoDrqqggRW50aXR5IElEXCIpLFxuICAgIHByb3BzOiB6LmFycmF5KEVudGl0eVByb3BTY2hlbWEpLFxuICAgIGluZGV4ZXM6IHouYXJyYXkoRW50aXR5SW5kZXhTY2hlbWEpLFxuICAgIHN1YnNldHM6IHoucmVjb3JkKHouc3RyaW5nKCksIHouYXJyYXkoei5zdHJpbmcoKSkpLFxuICAgIGVudW1zOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LnJlY29yZCh6LnN0cmluZygpLCB6LnN0cmluZygpKSksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuZXhwb3J0IGNvbnN0IFRlbXBsYXRlT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgZW50aXR5OiBFbnRpdHlKc29uU2NoZW1hLm9taXQoeyBpZDogdHJ1ZSB9KVxuICAgIC5leHRlbmQoe1xuICAgICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gICAgfSlcbiAgICAucGFydGlhbCh7XG4gICAgICB0YWJsZTogdHJ1ZSxcbiAgICAgIHByb3BzOiB0cnVlLFxuICAgICAgaW5kZXhlczogdHJ1ZSxcbiAgICAgIHN1YnNldHM6IHRydWUsXG4gICAgICBlbnVtczogdHJ1ZSxcbiAgICB9KSxcbiAgaW5pdF90eXBlczogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICB9KSxcbiAgZ2VuZXJhdGVkOiB6Lm9iamVjdCh7fSksXG4gIGdlbmVyYXRlZF9zc286IHoub2JqZWN0KHt9KSxcbiAgZ2VuZXJhdGVkX2h0dHA6IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIG1vZGVsOiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gICAgZGVmYXVsdFNlYXJjaEZpZWxkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgZGVmYXVsdE9yZGVyQnk6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSksXG4gIG1vZGVsX3Rlc3Q6IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGJyaWRnZTogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICB9KSxcbiAgc2VydmljZTogei5vYmplY3Qoe1xuICAgIG5hbWVzUmVjb3JkOiB6Lm9iamVjdCh7XG4gICAgICBmczogei5zdHJpbmcoKSxcbiAgICAgIGZzUGx1cmFsOiB6LnN0cmluZygpLFxuICAgICAgY2FtZWw6IHouc3RyaW5nKCksXG4gICAgICBjYW1lbFBsdXJhbDogei5zdHJpbmcoKSxcbiAgICAgIGNhcGl0YWw6IHouc3RyaW5nKCksXG4gICAgICBjYXBpdGFsUGx1cmFsOiB6LnN0cmluZygpLFxuICAgICAgdXBwZXI6IHouc3RyaW5nKCksXG4gICAgICBjb25zdGFudDogei5zdHJpbmcoKSxcbiAgICB9KSxcbiAgICBtb2RlbFRzUGF0aDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHZpZXdfbGlzdDogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICAgIGV4dHJhOiB6LnVua25vd24oKSxcbiAgfSksXG4gIHZpZXdfbGlzdF9jb2x1bW5zOiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gICAgY29sdW1uczogelxuICAgICAgLm9iamVjdCh7XG4gICAgICAgIG5hbWU6IHouc3RyaW5nKCksXG4gICAgICAgIGxhYmVsOiB6LnN0cmluZygpLFxuICAgICAgICB0Yzogei5zdHJpbmcoKSxcbiAgICAgIH0pXG4gICAgICAuYXJyYXkoKSxcbiAgICBjb2x1bW5JbXBvcnRzOiB6LnN0cmluZygpLFxuICB9KSxcbiAgdmlld19zZWFyY2hfaW5wdXQ6IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHZpZXdfZm9ybTogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICB9KSxcbiAgdmlld19pZF9hbGxfc2VsZWN0OiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICB2aWV3X2lkX2FzeW5jX3NlbGVjdDogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICAgIHRleHRGaWVsZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHZpZXdfZW51bXNfc2VsZWN0OiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gICAgZW51bUlkOiB6LnN0cmluZygpLFxuICB9KSxcbiAgdmlld19lbnVtc19kcm9wZG93bjogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICAgIGVudW1JZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHZpZXdfZW51bXNfYnV0dG9uc2V0OiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gICAgZW51bUlkOiB6LnN0cmluZygpLFxuICB9KSxcbn0pO1xuZXhwb3J0IHR5cGUgVGVtcGxhdGVPcHRpb25zID0gei5pbmZlcjx0eXBlb2YgVGVtcGxhdGVPcHRpb25zPjtcblxuZXhwb3J0IGNvbnN0IFRlbXBsYXRlS2V5ID0gei5lbnVtKFtcbiAgXCJlbnRpdHlcIixcbiAgXCJpbml0X3R5cGVzXCIsXG4gIFwiZ2VuZXJhdGVkXCIsXG4gIFwiZ2VuZXJhdGVkX3Nzb1wiLFxuICBcImdlbmVyYXRlZF9odHRwXCIsXG4gIFwibW9kZWxcIixcbiAgXCJtb2RlbF90ZXN0XCIsXG4gIFwiYnJpZGdlXCIsXG4gIFwic2VydmljZVwiLFxuICBcInZpZXdfbGlzdFwiLFxuICBcInZpZXdfbGlzdF9jb2x1bW5zXCIsXG4gIFwidmlld19zZWFyY2hfaW5wdXRcIixcbiAgXCJ2aWV3X2Zvcm1cIixcbiAgXCJ2aWV3X2lkX2FsbF9zZWxlY3RcIixcbiAgXCJ2aWV3X2lkX2FzeW5jX3NlbGVjdFwiLFxuICBcInZpZXdfZW51bXNfc2VsZWN0XCIsXG4gIFwidmlld19lbnVtc19kcm9wZG93blwiLFxuICBcInZpZXdfZW51bXNfYnV0dG9uc2V0XCIsXG5dKTtcbmV4cG9ydCB0eXBlIFRlbXBsYXRlS2V5ID0gei5pbmZlcjx0eXBlb2YgVGVtcGxhdGVLZXk+O1xuXG5leHBvcnQgY29uc3QgR2VuZXJhdGVPcHRpb25zID0gei5vYmplY3Qoe1xuICBvdmVyd3JpdGU6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG59KTtcbmV4cG9ydCB0eXBlIEdlbmVyYXRlT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIEdlbmVyYXRlT3B0aW9ucz47XG5cbmV4cG9ydCBjb25zdCBQYXRoQW5kQ29kZSA9IHoub2JqZWN0KHtcbiAgcGF0aDogei5zdHJpbmcoKSxcbiAgY29kZTogei5zdHJpbmcoKSxcbn0pO1xuZXhwb3J0IHR5cGUgUGF0aEFuZENvZGUgPSB6LmluZmVyPHR5cGVvZiBQYXRoQW5kQ29kZT47XG5cbmV4cG9ydCB0eXBlIEZpeHR1cmVTZWFyY2hPcHRpb25zID0ge1xuICBlbnRpdHlJZDogc3RyaW5nO1xuICBmaWVsZDogc3RyaW5nO1xuICB2YWx1ZTogc3RyaW5nO1xuICBzZWFyY2hUeXBlOiBcImVxdWFsc1wiIHwgXCJsaWtlXCI7XG59O1xuXG50eXBlIENvbHVtblZhbHVlID0gc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUgfCBudWxsO1xuZXhwb3J0IHR5cGUgRml4dHVyZVJlY29yZCA9IHtcbiAgZml4dHVyZUlkOiBzdHJpbmc7XG4gIGVudGl0eUlkOiBzdHJpbmc7XG4gIGlkOiBudW1iZXI7XG4gIGNvbHVtbnM6IHtcbiAgICBba2V5OiBzdHJpbmddOiB7XG4gICAgICBwcm9wOiBFbnRpdHlQcm9wO1xuICAgICAgdmFsdWU6IENvbHVtblZhbHVlIHwgQ29sdW1uVmFsdWVbXTtcbiAgICB9O1xuICB9O1xuICBmZXRjaGVkUmVjb3Jkczogc3RyaW5nW107XG4gIGJlbG9uZ3NSZWNvcmRzOiBzdHJpbmdbXTtcbiAgdGFyZ2V0PzogRml4dHVyZVJlY29yZDsgLy8gSW1wb3J0IOuMgOyDgSBEQiDroIjsvZTrk5woaWTqsIAg6rCZ7J2AKVxuICB1bmlxdWU/OiBGaXh0dXJlUmVjb3JkOyAvLyBJbXBvcnQg64yA7IOBIERCIOugiOy9lOuTnCh1bmlxdWUga2V56rCAIOqwmeydgClcbiAgb3ZlcnJpZGU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IHR5cGUgRml4dHVyZUltcG9ydFJlc3VsdCA9IHtcbiAgZW50aXR5SWQ6IHN0cmluZztcbiAgZGF0YToge1xuICAgIFtrZXk6IHN0cmluZ106IENvbHVtblZhbHVlO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgUmVsYXRpb25Ob2RlID0ge1xuICBmaXh0dXJlSWQ6IHN0cmluZztcbiAgZW50aXR5SWQ6IHN0cmluZztcbiAgcmVsYXRlZDogU2V0PHN0cmluZz47XG59O1xuXG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRW1wdHlJbnRlcmZhY2U6IHNvbmFtdS5nZW5lcmF0ZWQuc3NvIOyXkOyEnCDtmZXsnqXsnYQg7JyE7ZW0IOykgOu5hOuQnCDruYgg7J247YSw7Y6Y7J207IqkXG5leHBvcnQgaW50ZXJmYWNlIERhdGFiYXNlU2NoZW1hRXh0ZW5kIHt9XG5leHBvcnQgdHlwZSBNYW55VG9NYW55QmFzZVNjaGVtYTxGcm9tSWRLZXkgZXh0ZW5kcyBzdHJpbmcsIFRvSWRLZXkgZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBpZDogbnVtYmVyO1xufSAmIHtcbiAgW0sgaW4gYCR7RnJvbUlkS2V5fV9pZGBdOiBudW1iZXI7XG59ICYge1xuICBbSyBpbiBgJHtUb0lkS2V5fV9pZGBdOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBTb25hbXVGYXN0aWZ5Q29uZmlnID0ge1xuICBjb250ZXh0UHJvdmlkZXI6IChcbiAgICBkZWZhdWx0Q29udGV4dDogUGljazxDb250ZXh0LCBcInJlcXVlc3RcIiB8IFwicmVwbHlcIiB8IFwiaGVhZGVyc1wiIHwgXCJjcmVhdGVTU0VcIiB8IFwibmFpdGVTdG9yZVwiPiAmXG4gICAgICBBdXRoQ29udGV4dCxcbiAgICByZXF1ZXN0OiBGYXN0aWZ5UmVxdWVzdCxcbiAgICByZXBseTogRmFzdGlmeVJlcGx5LFxuICApID0+IENvbnRleHQgfCBQcm9taXNlPENvbnRleHQ+O1xuICBndWFyZEhhbmRsZXI6IChcbiAgICBndWFyZDogR3VhcmRLZXksXG4gICAgcmVxdWVzdDogRmFzdGlmeVJlcXVlc3QsXG4gICAgYXBpOiB7XG4gICAgICB0eXBlUGFyYW1ldGVyczogQXBpUGFyYW1UeXBlLlR5cGVQYXJhbVtdO1xuICAgICAgcGFyYW1ldGVyczogQXBpUGFyYW1bXTtcbiAgICAgIHJldHVyblR5cGU6IEFwaVBhcmFtVHlwZTtcbiAgICAgIG1vZGVsTmFtZTogc3RyaW5nO1xuICAgICAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICAgICAgcGF0aDogc3RyaW5nO1xuICAgICAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgICB9LFxuICApID0+IHZvaWQ7XG4gIGNhY2hlPzoge1xuICAgIGdldDogKGtleTogc3RyaW5nKSA9PiBQcm9taXNlPHVua25vd24gfCBudWxsPjtcbiAgICBwdXQ6IChrZXk6IHN0cmluZywgdmFsdWU6IHVua25vd24sIHR0bD86IG51bWJlcikgPT4gUHJvbWlzZTx2b2lkPjtcbiAgICByZXNvbHZlS2V5OiAoXG4gICAgICBwYXRoOiBzdHJpbmcsXG4gICAgICByZXFCb2R5OiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgICB9LFxuICAgICkgPT5cbiAgICAgIHwge1xuICAgICAgICAgIGNhY2hlOiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgY2FjaGU6IHRydWU7XG4gICAgICAgICAga2V5OiBzdHJpbmc7XG4gICAgICAgICAgdHRsPzogbnVtYmVyO1xuICAgICAgICB9O1xuICB9O1xufTtcbiJdLCJuYW1lcyI6WyJ6IiwiekFycmF5YWJsZSIsInNoYXBlIiwidW5pb24iLCJhcnJheSIsImlzSW50ZWdlclNpbmdsZVByb3AiLCJwIiwidHlwZSIsImlzSW50ZWdlckFycmF5UHJvcCIsImlzSW50ZWdlclByb3AiLCJpc0JpZ0ludGVnZXJTaW5nbGVQcm9wIiwiaXNCaWdJbnRlZ2VyQXJyYXlQcm9wIiwiaXNCaWdJbnRlZ2VyUHJvcCIsImlzU3RyaW5nU2luZ2xlUHJvcCIsImlzU3RyaW5nQXJyYXlQcm9wIiwiaXNTdHJpbmdQcm9wIiwiaXNFbnVtU2luZ2xlUHJvcCIsImlzRW51bUFycmF5UHJvcCIsImlzRW51bVByb3AiLCJpc051bWJlclNpbmdsZVByb3AiLCJpc051bWJlckFycmF5UHJvcCIsImlzTnVtYmVyUHJvcCIsImlzTnVtZXJpY1NpbmdsZVByb3AiLCJpc051bWVyaWNBcnJheVByb3AiLCJpc051bWVyaWNQcm9wIiwiaXNCb29sZWFuU2luZ2xlUHJvcCIsImlzQm9vbGVhbkFycmF5UHJvcCIsImlzQm9vbGVhblByb3AiLCJpc0RhdGVTaW5nbGVQcm9wIiwiaXNEYXRlQXJyYXlQcm9wIiwiaXNEYXRlUHJvcCIsImlzVXVpZFNpbmdsZVByb3AiLCJpc1V1aWRBcnJheVByb3AiLCJpc1V1aWRQcm9wIiwiaXNKc29uUHJvcCIsImlzVmlydHVhbFByb3AiLCJpc1JlbGF0aW9uUHJvcCIsImlzT25lVG9PbmVSZWxhdGlvblByb3AiLCJyZWxhdGlvblR5cGUiLCJpc0JlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcCIsImlzSGFzTWFueVJlbGF0aW9uUHJvcCIsImlzTWFueVRvTWFueVJlbGF0aW9uUHJvcCIsImlzQ3VzdG9tSm9pbkNsYXVzZSIsImN1c3RvbSIsIlNvbmFtdVF1ZXJ5TW9kZSIsImVudW0iLCJpc0tuZXhFcnJvciIsImUiLCJjb2RlIiwic3FsTWVzc2FnZSIsInNxbFN0YXRlIiwiQXBpUGFyYW1UeXBlIiwiaXNPYmplY3QiLCJ2IiwidCIsImlzVW5pb24iLCJpc0ludGVyc2VjdGlvbiIsImlzU3RyaW5nTGl0ZXJhbCIsImlzTnVtZXJpY0xpdGVyYWwiLCJpc0FycmF5IiwiaXNSZWYiLCJpc0luZGV4ZWRBY2Nlc3MiLCJpc1R1cGxlVHlwZSIsImlzUGljayIsImlkIiwiaXNPbWl0IiwiaXNQYXJ0aWFsIiwiaXNQcm9taXNlIiwiaXNDb250ZXh0IiwiaXNSZWZLbmV4IiwiaXNUeXBlUGFyYW0iLCJSZW5kZXJpbmdOb2RlIiwiYW55IiwiQmFzZVByb3BGaWVsZHMiLCJuYW1lIiwic3RyaW5nIiwiZGVzYyIsIm9wdGlvbmFsIiwibnVsbGFibGUiLCJib29sZWFuIiwidG9GaWx0ZXIiLCJsaXRlcmFsIiwiZGJEZWZhdWx0IiwibnVtYmVyIiwiQmFzZVByb3BGaWVsZHNXaXRob3V0QWRkaXRpb25hbCIsIm9iamVjdCIsInN0cmljdCIsIlByZWNpc2lvblNjYWxlRmllbGRzIiwicHJlY2lzaW9uIiwic2NhbGUiLCJTdHJpbmdQcm9wU2NoZW1hIiwibGVuZ3RoIiwiU3RyaW5nQXJyYXlQcm9wU2NoZW1hIiwiRW51bVByb3BTY2hlbWEiLCJFbnVtQXJyYXlQcm9wU2NoZW1hIiwiTnVtYmVyUHJvcFNjaGVtYSIsIm51bWJlclR5cGUiLCJOdW1iZXJBcnJheVByb3BTY2hlbWEiLCJOdW1lcmljUHJvcFNjaGVtYSIsIk51bWVyaWNBcnJheVByb3BTY2hlbWEiLCJKc29uUHJvcFNjaGVtYSIsIlZpcnR1YWxQcm9wU2NoZW1hIiwiQmFzZVJlbGF0aW9uRmllbGRzIiwid2l0aCIsIlJlbGF0aW9uT25TY2hlbWEiLCJCZWxvbmdzVG9PbmVSZWxhdGlvblByb3BTY2hlbWEiLCJjdXN0b21Kb2luQ2xhdXNlIiwidXNlQ29uc3RyYWludCIsIm9uVXBkYXRlIiwib25EZWxldGUiLCJIYXNNYW55UmVsYXRpb25Qcm9wU2NoZW1hIiwiam9pbkNvbHVtbiIsImZyb21Db2x1bW4iLCJNYW55VG9NYW55UmVsYXRpb25Qcm9wU2NoZW1hIiwiam9pblRhYmxlIiwiT25lVG9PbmVSZWxhdGlvblByb3BTY2hlbWEiLCJoYXNKb2luQ29sdW1uIiwiUmVsYXRpb25UeXBlcyIsIlJlbGF0aW9uUHJvcFNjaGVtYSIsImRpc2NyaW1pbmF0ZWRVbmlvbiIsImVycm9yIiwiaXNzIiwibWFwIiwiam9pbiIsImlucHV0IiwiTm9ybWFsUHJvcFR5cGVzIiwiTm9ybWFsUHJvcFNjaGVtYSIsIkFsbFByb3BUeXBlcyIsIkVudGl0eVByb3BTY2hlbWEiLCJFbnRpdHlJbmRleFNjaGVtYSIsImNvbHVtbnMiLCJtaW4iLCJtYXgiLCJwYXJzZXIiLCJFbnRpdHlKc29uU2NoZW1hIiwiZGVzY3JpYmUiLCJ0aXRsZSIsInRhYmxlIiwicGFyZW50SWQiLCJwcm9wcyIsImluZGV4ZXMiLCJzdWJzZXRzIiwicmVjb3JkIiwiZW51bXMiLCJUZW1wbGF0ZU9wdGlvbnMiLCJlbnRpdHkiLCJvbWl0IiwiZXh0ZW5kIiwiZW50aXR5SWQiLCJwYXJ0aWFsIiwiaW5pdF90eXBlcyIsImdlbmVyYXRlZCIsImdlbmVyYXRlZF9zc28iLCJnZW5lcmF0ZWRfaHR0cCIsIm1vZGVsIiwiZGVmYXVsdFNlYXJjaEZpZWxkIiwiZGVmYXVsdE9yZGVyQnkiLCJtb2RlbF90ZXN0IiwiYnJpZGdlIiwic2VydmljZSIsIm5hbWVzUmVjb3JkIiwiZnMiLCJmc1BsdXJhbCIsImNhbWVsIiwiY2FtZWxQbHVyYWwiLCJjYXBpdGFsIiwiY2FwaXRhbFBsdXJhbCIsInVwcGVyIiwiY29uc3RhbnQiLCJtb2RlbFRzUGF0aCIsInZpZXdfbGlzdCIsImV4dHJhIiwidW5rbm93biIsInZpZXdfbGlzdF9jb2x1bW5zIiwibGFiZWwiLCJ0YyIsImNvbHVtbkltcG9ydHMiLCJ2aWV3X3NlYXJjaF9pbnB1dCIsInZpZXdfZm9ybSIsInZpZXdfaWRfYWxsX3NlbGVjdCIsInZpZXdfaWRfYXN5bmNfc2VsZWN0IiwidGV4dEZpZWxkIiwidmlld19lbnVtc19zZWxlY3QiLCJlbnVtSWQiLCJ2aWV3X2VudW1zX2Ryb3Bkb3duIiwidmlld19lbnVtc19idXR0b25zZXQiLCJUZW1wbGF0ZUtleSIs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
650
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZhc3RpZnlSZXBseSwgRmFzdGlmeVJlcXVlc3QgfSBmcm9tIFwiZmFzdGlmeVwiO1xuaW1wb3J0IHsgeiB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB0eXBlIHsgQXBpRGVjb3JhdG9yT3B0aW9ucywgQXV0aENvbnRleHQsIENvbnRleHQgfSBmcm9tIFwiLi4vYXBpXCI7XG5pbXBvcnQgdHlwZSB7IEd1YXJkS2V5IH0gZnJvbSBcIi4vLi4vYXBpL2RlY29yYXRvcnNcIjtcblxuLypcbiAgVXRpbGl0eSBUeXBlc1xuKi9cbmV4cG9ydCBmdW5jdGlvbiB6QXJyYXlhYmxlPFQgZXh0ZW5kcyB6LlpvZFR5cGVBbnk+KHNoYXBlOiBUKTogei5ab2RVbmlvbjxbVCwgei5ab2RBcnJheTxUPl0+IHtcbiAgcmV0dXJuIHoudW5pb24oW3NoYXBlLCBzaGFwZS5hcnJheSgpXSk7XG59XG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vRXhwbGljaXRBbnk6IGFueSBpcyB1c2VkIHRvIG1ha2UgdGhlIHR5cGUgZGlzdHJpYnV0aXZlXG5leHBvcnQgdHlwZSBEaXN0cmlidXRpdmVPbWl0PFQsIEsgZXh0ZW5kcyBrZXlvZiBhbnk+ID0gVCBleHRlbmRzIGFueSA/IE9taXQ8VCwgSz4gOiBuZXZlcjtcblxuLypcbiAgTW9kZWwtRGVmaW50aW9uXG4qL1xuZXhwb3J0IHR5cGUgR2VuZXJhdGVkQ29sdW1uVHlwZSA9IFwiU1RPUkVEXCIgfCBcIlZJUlRVQUxcIjtcbmV4cG9ydCB0eXBlIEdlbmVyYXRlZENvbHVtbiA9IHtcbiAgdHlwZTogR2VuZXJhdGVkQ29sdW1uVHlwZTtcbiAgZXhwcmVzc2lvbjogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIENvbW1vblByb3AgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgbnVsbGFibGU/OiBib29sZWFuO1xuICB0b0ZpbHRlcj86IHRydWU7XG4gIGRlc2M/OiBzdHJpbmc7XG4gIGRiRGVmYXVsdD86IHN0cmluZztcbiAgZ2VuZXJhdGVkPzogR2VuZXJhdGVkQ29sdW1uO1xufTtcbmV4cG9ydCB0eXBlIEludGVnZXJQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJpbnRlZ2VyXCI7XG59OyAvLyBQRzogaW50ZWdlciAvIFRTOiBudW1iZXIgLyBKU09OOiBudW1iZXJcbmV4cG9ydCB0eXBlIEludGVnZXJBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImludGVnZXJbXVwiO1xufTsgLy8gUEc6IGludGVnZXJbXSAvIFRTOiBudW1iZXJbXSAvIEpTT046IG51bWJlcltdXG5leHBvcnQgdHlwZSBCaWdJbnRlZ2VyUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiYmlnSW50ZWdlclwiO1xufTsgLy8gUEc6IGJpZ2ludCAvIFRTOiBiaWdpbnQgLyBKU09OOiBiaWdpbnRcbmV4cG9ydCB0eXBlIEJpZ0ludGVnZXJBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImJpZ0ludGVnZXJbXVwiO1xufTsgLy8gUEc6IGJpZ2ludFtdIC8gVFM6IGJpZ2ludFtdIC8gSlNPTjogYmlnaW50W11cbmV4cG9ydCB0eXBlIFN0cmluZ1Byb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInN0cmluZ1wiO1xuICBsZW5ndGg/OiBudW1iZXI7IC8vIFBHOiB2YXJjaGFyKG4pLCB0ZXh0IC8gVFM6IHN0cmluZyAvIEpTT046IHN0cmluZ1xufTsgLy8gUEc6IHRleHQgLyBUUzogc3RyaW5nIC8gSlNPTjogc3RyaW5nXG5leHBvcnQgdHlwZSBTdHJpbmdBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInN0cmluZ1tdXCI7XG4gIGxlbmd0aD86IG51bWJlcjsgLy8gUEc6IHZhcmNoYXIobilbXSwgdGV4dFtdIC8gVFM6IHN0cmluZ1tdIC8gSlNPTjogc3RyaW5nW11cbn07IC8vIFBHOiB2YXJjaGFyKG4pW10sIHRleHRbXSAvIFRTOiBzdHJpbmdbXSAvIEpTT046IHN0cmluZ1tdXG5leHBvcnQgdHlwZSBFbnVtUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiZW51bVwiO1xuICBpZDogc3RyaW5nO1xuICBsZW5ndGg/OiBudW1iZXI7XG59OyAvLyBQRzogdGV4dCAvIFRTOiBzdHJpbmcgLyBKU09OOiBzdHJpbmdcbmV4cG9ydCB0eXBlIEVudW1BcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImVudW1bXVwiO1xuICBpZDogc3RyaW5nO1xufTsgLy8gUEc6IHRleHRbXSAvIFRTOiBzdHJpbmdbXSAvIEpTT046IHN0cmluZ1tdXG5leHBvcnQgdHlwZSBOdW1iZXJQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJudW1iZXJcIjtcbiAgcHJlY2lzaW9uPzogbnVtYmVyOyAvLyBQRzogbnVtZXJpYyhwLCBzKSAvIFRTOiBudW1iZXIgLyBKU09OOiBudW1iZXJcbiAgc2NhbGU/OiBudW1iZXI7IC8vIFBHOiBudW1lcmljKHAsIHMpIC8gVFM6IG51bWJlciAvIEpTT046IG51bWJlclxuICBudW1iZXJUeXBlPzogXCJyZWFsXCIgfCBcImRvdWJsZSBwcmVjaXNpb25cIiB8IFwibnVtZXJpY1wiOyAvLyDquLDrs7jqsJI6IG51bWVyaWNcbn07IC8vIFBHOiBudW1lcmljKHAsIHMpIC8gVFM6IG51bWJlciAvIEpTT046IG51bWJlclxuZXhwb3J0IHR5cGUgTnVtYmVyQXJyYXlQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJudW1iZXJbXVwiO1xuICBwcmVjaXNpb24/OiBudW1iZXI7XG4gIHNjYWxlPzogbnVtYmVyO1xuICBudW1iZXJUeXBlPzogXCJyZWFsXCIgfCBcImRvdWJsZSBwcmVjaXNpb25cIiB8IFwibnVtZXJpY1wiOyAvLyDquLDrs7jqsJI6IG51bWVyaWNcbn07IC8vIFBHOiBudW1lcmljKHAsIHMpW10gLyBUUzogbnVtYmVyW10gLyBKU09OOiBudW1iZXJbXVxuZXhwb3J0IHR5cGUgTnVtZXJpY1Byb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcIm51bWVyaWNcIjtcbiAgcHJlY2lzaW9uPzogbnVtYmVyO1xuICBzY2FsZT86IG51bWJlcjtcbn07IC8vIFBHOiBudW1lcmljKHAsIHMpIC8gVFM6IHN0cmluZyAvIEpTT046IHN0cmluZ1xuZXhwb3J0IHR5cGUgTnVtZXJpY0FycmF5UHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwibnVtZXJpY1tdXCI7XG4gIHByZWNpc2lvbj86IG51bWJlcjtcbiAgc2NhbGU/OiBudW1iZXI7XG59OyAvLyBQRzogbnVtZXJpYyhwLCBzKVtdIC8gVFM6IHN0cmluZ1tdIC8gSlNPTjogc3RyaW5nW11cbmV4cG9ydCB0eXBlIEJvb2xlYW5Qcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJib29sZWFuXCI7XG59OyAvLyBQRzogYm9vbGVhbiAvIFRTOiBib29sZWFuIC8gSlNPTjogYm9vbGVhblxuZXhwb3J0IHR5cGUgQm9vbGVhbkFycmF5UHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiYm9vbGVhbltdXCI7XG59OyAvLyBQRzogYm9vbGVhbltdIC8gVFM6IGJvb2xlYW5bXSAvIEpTT046IGJvb2xlYW5bXVxuZXhwb3J0IHR5cGUgRGF0ZVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImRhdGVcIjtcbn07IC8vIFBHOiB0aW1lc3RhbXB6IC8gVFM6IERhdGUgLyBKU09OOiBzdHJpbmcoSVNPU3RyaW5nKVxuZXhwb3J0IHR5cGUgRGF0ZUFycmF5UHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwiZGF0ZVtdXCI7XG59OyAvLyBQRzogdGltZXN0YW1wdHpbXSAvIFRTOiBEYXRlW10gLyBKU09OOiBzdHJpbmdbXVxuZXhwb3J0IHR5cGUgSnNvblByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcImpzb25cIjtcbiAgaWQ6IHN0cmluZztcbn07IC8vIFBHOiBqc29uIC8gVFM6IGFueShpZCkgLyBKU09OOiBhbnlcbmV4cG9ydCB0eXBlIFV1aWRQcm9wID0gQ29tbW9uUHJvcCAmIHtcbiAgdHlwZTogXCJ1dWlkXCI7XG59OyAvLyBQRzogdXVpZCAvIFRTOiBzdHJpbmcgLyBKU09OOiBzdHJpbmdcbmV4cG9ydCB0eXBlIFV1aWRBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInV1aWRbXVwiO1xufTsgLy8gUEc6IHV1aWRbXSAvIFRTOiBzdHJpbmdbXSAvIEpTT046IHN0cmluZ1tdXG5leHBvcnQgdHlwZSBWaXJ0dWFsUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwidmlydHVhbFwiO1xuICBpZDogc3RyaW5nO1xufTsgLy8gUEc6IG5vbmUgLyBUUzogYW55KGlkKSAvIEpTT046IGFueVxuZXhwb3J0IHR5cGUgVmVjdG9yUHJvcCA9IENvbW1vblByb3AgJiB7XG4gIHR5cGU6IFwidmVjdG9yXCI7XG4gIGRpbWVuc2lvbnM6IG51bWJlcjtcbn07XG5leHBvcnQgdHlwZSBWZWN0b3JBcnJheVByb3AgPSBDb21tb25Qcm9wICYge1xuICB0eXBlOiBcInZlY3RvcltdXCI7XG4gIGRpbWVuc2lvbnM6IG51bWJlcjtcbn07XG5leHBvcnQgdHlwZSBSZWxhdGlvblR5cGUgPSBcIkhhc01hbnlcIiB8IFwiQmVsb25nc1RvT25lXCIgfCBcIk1hbnlUb01hbnlcIiB8IFwiT25lVG9PbmVcIjtcbmV4cG9ydCB0eXBlIFJlbGF0aW9uT24gPSBcIkNBU0NBREVcIiB8IFwiU0VUIE5VTExcIiB8IFwiTk8gQUNUSU9OXCIgfCBcIlNFVCBERUZBVUxUXCIgfCBcIlJFU1RSSUNUXCI7XG50eXBlIF9SZWxhdGlvblByb3AgPSB7XG4gIHR5cGU6IFwicmVsYXRpb25cIjtcbiAgbmFtZTogc3RyaW5nO1xuICB3aXRoOiBzdHJpbmc7XG4gIG51bGxhYmxlPzogYm9vbGVhbjsgLy8gREVGQVVMVDogZmFsc2VcbiAgdG9GaWx0ZXI/OiB0cnVlOyAvLyBERUZBVUxUOiBmYWxzZVxuICBkZXNjPzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIE9uZVRvT25lUmVsYXRpb25Qcm9wID0gX1JlbGF0aW9uUHJvcCAmIHtcbiAgcmVsYXRpb25UeXBlOiBcIk9uZVRvT25lXCI7XG4gIGN1c3RvbUpvaW5DbGF1c2U/OiBzdHJpbmc7XG59ICYgKFxuICAgIHwge1xuICAgICAgICBoYXNKb2luQ29sdW1uOiB0cnVlO1xuICAgICAgICB1c2VDb25zdHJhaW50PzogYm9vbGVhbjsgLy8gREVGQVVMVDogdHJ1ZVxuICAgICAgICBvblVwZGF0ZT86IFJlbGF0aW9uT247IC8vIERFRkFVTFQ6IFJFU1RSSUNUXG4gICAgICAgIG9uRGVsZXRlPzogUmVsYXRpb25PbjsgLy8gREVGQVVMVDogUkVTVFJJQ1RcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgaGFzSm9pbkNvbHVtbjogZmFsc2U7XG4gICAgICB9XG4gICk7XG5leHBvcnQgdHlwZSBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AgPSBfUmVsYXRpb25Qcm9wICYge1xuICByZWxhdGlvblR5cGU6IFwiQmVsb25nc1RvT25lXCI7XG4gIGN1c3RvbUpvaW5DbGF1c2U/OiBzdHJpbmc7XG4gIHVzZUNvbnN0cmFpbnQ/OiBib29sZWFuOyAvLyBERUZBVUxUOiB0cnVlXG4gIG9uVXBkYXRlPzogUmVsYXRpb25PbjsgLy8gREVGQVVMVDogUkVTVFJJQ1RcbiAgb25EZWxldGU/OiBSZWxhdGlvbk9uOyAvLyBERUZBVUxUOiBSRVNUUklDVFxufTtcbmV4cG9ydCB0eXBlIEhhc01hbnlSZWxhdGlvblByb3AgPSBfUmVsYXRpb25Qcm9wICYge1xuICByZWxhdGlvblR5cGU6IFwiSGFzTWFueVwiO1xuICBqb2luQ29sdW1uOiBzdHJpbmc7XG4gIGZyb21Db2x1bW4/OiBzdHJpbmc7XG59O1xuZXhwb3J0IHR5cGUgTWFueVRvTWFueVJlbGF0aW9uUHJvcCA9IF9SZWxhdGlvblByb3AgJiB7XG4gIHJlbGF0aW9uVHlwZTogXCJNYW55VG9NYW55XCI7XG4gIGpvaW5UYWJsZTogYCR7c3RyaW5nfV9fJHtzdHJpbmd9YDtcbiAgb25VcGRhdGU6IFJlbGF0aW9uT247XG4gIG9uRGVsZXRlOiBSZWxhdGlvbk9uO1xufTtcbmV4cG9ydCB0eXBlIFJlbGF0aW9uUHJvcCA9XG4gIHwgT25lVG9PbmVSZWxhdGlvblByb3BcbiAgfCBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3BcbiAgfCBIYXNNYW55UmVsYXRpb25Qcm9wXG4gIHwgTWFueVRvTWFueVJlbGF0aW9uUHJvcDtcblxuZXhwb3J0IHR5cGUgRW50aXR5UHJvcCA9XG4gIHwgSW50ZWdlclByb3BcbiAgfCBJbnRlZ2VyQXJyYXlQcm9wXG4gIHwgQmlnSW50ZWdlclByb3BcbiAgfCBCaWdJbnRlZ2VyQXJyYXlQcm9wXG4gIHwgU3RyaW5nUHJvcFxuICB8IFN0cmluZ0FycmF5UHJvcFxuICB8IEVudW1Qcm9wXG4gIHwgRW51bUFycmF5UHJvcFxuICB8IE51bWJlclByb3BcbiAgfCBOdW1iZXJBcnJheVByb3BcbiAgfCBOdW1lcmljUHJvcFxuICB8IE51bWVyaWNBcnJheVByb3BcbiAgfCBOdW1lcmljUHJvcFxuICB8IEJvb2xlYW5Qcm9wXG4gIHwgQm9vbGVhbkFycmF5UHJvcFxuICB8IERhdGVQcm9wXG4gIHwgRGF0ZUFycmF5UHJvcFxuICB8IFV1aWRQcm9wXG4gIHwgVXVpZEFycmF5UHJvcFxuICB8IEpzb25Qcm9wXG4gIHwgVmlydHVhbFByb3BcbiAgfCBWZWN0b3JQcm9wXG4gIHwgVmVjdG9yQXJyYXlQcm9wXG4gIHwgUmVsYXRpb25Qcm9wO1xuXG4vKipcbiAqIHBndmVjdG9yIOqxsOumrCDsl7DsgrDsnpAg7YG0656Y7IqkXG4gKlxuICogQGRlc2NyaXB0aW9uXG4gKiAtIGB2ZWN0b3JfY29zaW5lX29wc2A6IOy9lOyCrOyduCDqsbDrpqwgKENvc2luZSBEaXN0YW5jZSkgLSDqtozsnqVcbiAqICAgLSBTUUwg7Jew7IKw7J6QOiBgPD0+YFxuICogICAtIOuyoe2EsOydmCDrsKntlqXrp4wg67mE6rWQICjtgazquLAg66y07IucKSwgMSAtIGNvc2luZV9zaW1pbGFyaXR5XG4gKiAgIC0g7YWN7Iqk7Yq4IOyehOuyoOuUqSwg7Iuc66eo7YuxIOqygOyDieyXkCDqsIDsnqUg7J2867CY7KCB7Jy866GcIOyCrOyaqVxuICogICAtIOyCrOyaqSDsmIg6IE9wZW5BSSwgVm95YWdlIOuTsSDrjIDrtoDrtoTsnZgg7J6E67Kg65SpIOuqqOuNuOyXkCDqtozsnqVcbiAqXG4gKiAtIGB2ZWN0b3JfaXBfb3BzYDog64K07KCBIChJbm5lciBQcm9kdWN0KVxuICogICAtIFNRTCDsl7DsgrDsnpA6IGA8Iz5gXG4gKiAgIC0g65GQIOuyoe2EsOydmCDrgrTsoIHsnYQg6rOE7IKwIChzdW0oYVtpXSAqIGJbaV0pKVxuICogICAtIOygleq3nO2ZlOuQnCDrsqHthLDsl5DshJwg7L2U7IKs7J24IOycoOyCrOuPhOyZgCDrj5nsnbztlZwg6rKw6rO8XG4gKiAgIC0g6rCS7J20IO2BtOyImOuhnSDsnKDsgqwgKOydjOyImCDsl7DsgrDsnpDsnbTrr4DroZwgT1JERVIgQlnsl5DshJwg7KO87J2YKVxuICogICAtIOyCrOyaqSDsmIg6IOydtOuvuCDsoJXqt5ztmZTrkJwg7J6E67Kg65Sp7JeQ7IScIOqwgOyepSDruaDrpbgg7ISx64qlXG4gKlxuICogLSBgdmVjdG9yX2wyX29wc2A6IOycoO2BtOumrOuTnCDqsbDrpqwgKEwyIERpc3RhbmNlKVxuICogICAtIFNRTCDsl7DsgrDsnpA6IGA8LT5gXG4gKiAgIC0g65GQIOuyoe2EsCDqsITsnZgg7KeB7ISgIOqxsOumrOulvCDqs4TsgrAgKHNxcnQoc3VtKChhW2ldIC0gYltpXSleMikpKVxuICogICAtIOuyoe2EsOydmCDtgazquLAobWFnbml0dWRlKeqwgCDspJHsmpTtlaAg65WMIOyCrOyaqVxuICogICAtIOyCrOyaqSDsmIg6IOydtOuvuOyngCDsnKDsgqzrj4QsIOygiOuMgOyggSDqsbDrpqwg7Lih7KCV7J20IO2VhOyalO2VnCDqsr3smrBcbiAqL1xuZXhwb3J0IHR5cGUgVmVjdG9yT3BzID0gXCJ2ZWN0b3JfY29zaW5lX29wc1wiIHwgXCJ2ZWN0b3JfaXBfb3BzXCIgfCBcInZlY3Rvcl9sMl9vcHNcIjtcblxudHlwZSBFbnRpdHlJbmRleENvbHVtbiA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICBudWxsc0ZpcnN0PzogYm9vbGVhbjtcbiAgc29ydE9yZGVyPzogXCJBU0NcIiB8IFwiREVTQ1wiO1xuICAvKiogcGd2ZWN0b3Ig7J24642x7Iqk7JeQ7IScIOyCrOyaqe2VoCDqsbDrpqwg7Jew7IKw7J6QICh2ZWN0b3Ig7Lus65+87JeQ66eMIOyggeyaqSkgKi9cbiAgdmVjdG9yT3BzPzogVmVjdG9yT3BzO1xufTtcbmV4cG9ydCB0eXBlIEVudGl0eUluZGV4ID0ge1xuICB0eXBlOiBcImluZGV4XCIgfCBcInVuaXF1ZVwiIHwgXCJmdWxsdGV4dFwiIHwgXCJobnN3XCIgfCBcIml2ZmZsYXRcIjtcbiAgY29sdW1uczogRW50aXR5SW5kZXhDb2x1bW5bXTtcbiAgbmFtZTogc3RyaW5nO1xuICBwYXJzZXI/OiBcImJ1aWx0LWluXCIgfCBcIm5ncmFtXCI7XG4gIG51bGxzTm90RGlzdGluY3Q/OiBib29sZWFuOyAvLyB1bmlxdWUgaW5kZXggb25seVxuICAvKipcbiAgICogSE5TVyAoSGllcmFyY2hpY2FsIE5hdmlnYWJsZSBTbWFsbCBXb3JsZCkg7J24642x7IqkOiDqsIEg64W465Oc7J2YIOy1nOuMgCDsl7DqsrAg7IiYXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiDqt7jrnpjtlITsl5DshJwg6rCBIOuFuOuTnOqwgCDqsIDsp4gg7IiYIOyeiOuKlCDstZzrjIAg7Jew6rKwIOyImOyeheuLiOuLpC5cbiAgICogSE5TV+uKlCDruaDrpbgg6rKA7IOJIOyGjeuPhOyZgCDrhpLsnYAg7KCV7ZmV64+E66W8IOygnOqzte2VmOuvgOuhnCDqtozsnqXrkKnri4jri6QuXG4gICAqIC0g6riw67O46rCSOiAxNlxuICAgKiAtIOuylOychDogMiB+IDEwMFxuICAgKiAtIOuGkuydhOyImOuhnTog7KCV7ZmV64+E4oaRLCDruYzrk5wg7Iuc6rCE4oaRLCDrqZTrqqjrpqzihpFcbiAgICogLSDqtozsnqU6IOu5oOuluCDruYzrk5woOCksIOq3oO2YlSgxNiksIOuGkuydgCDsoJXtmZXrj4QoMzIpLCDstZzqs6Ag7KCV7ZmV64+EKDY0KVxuICAgKi9cbiAgbT86IG51bWJlcjtcbiAgLyoqXG4gICAqIEhOU1cgKEhpZXJhcmNoaWNhbCBOYXZpZ2FibGUgU21hbGwgV29ybGQpIOyduOuNseyKpDog6rWs7ISxIOyLnCDtg5Dsg4kg67KU7JyEXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiDsnbjrjbHsiqQg6rWs7ISxIOyLnCDqsIEg64W465Oc7JeQ7IScIO2DkOyDie2VoCDrspTsnITsnoXri4jri6QuXG4gICAqIC0g6riw67O46rCSOiA2NFxuICAgKiAtIOuylOychDogNCB+IDEwMDBcbiAgICogLSDrhpLsnYTsiJjroZ06IOygle2ZleuPhOKGkSwg67mM65OcIOyLnOqwhOKGkVxuICAgKiAtIOq2jOyepTog67mg66W4IOu5jOuTnCgzMiksIOq3oO2YlSg2NCksIOuGkuydgCDsoJXtmZXrj4QoMTI4KSwg7LWc6rOgIOygle2ZleuPhCgyNTYpXG4gICAqL1xuICBlZkNvbnN0cnVjdGlvbj86IG51bWJlcjtcbiAgLyoqXG4gICAqIElWRkZsYXQgKEludmVydGVkIEZpbGUgd2l0aCBGbGF0IENvbXByZXNzaW9uKSDsnbjrjbHsiqQ6IO2BtOufrOyKpO2EsOungSDrpqzsiqTtirgg7IiYXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiDrsqHthLDrpbwg7YG065+s7Iqk7YSw66eB7ZWgIOuyhO2CtyDsiJjrpbwg7KeA7KCV7ZWp64uI64ukLlxuICAgKiBJVkZGbGF07J2AIOu5oOuluCDruYzrk5zsmYAg64Ku7J2AIOuplOuqqOumrCDsgqzsmqnsnbQg7ZWE7JqU7ZWgIOuVjCDsgqzsmqntlanri4jri6QuXG4gICAqIC0g6raM7J6l6rCSOiBzcXJ0KHJvd19jb3VudCkgfiByb3dfY291bnQgLyAxMDAwXG4gICAqIC0g7JiI7IucOiAxMCwwMDDtlokg4oaSIDEwMCwgMTAwLDAwMO2WiSDihpIgMzAwLCAxLDAwMCwwMDDtlokg4oaSIDEwMDBcbiAgICogLSDrp47snYTsiJjroZ0g7KCV7ZmV64+E4oaRLCDqsoDsg4kg7IaN64+E4oaTXG4gICAqL1xuICBsaXN0cz86IG51bWJlcjtcbn07XG5leHBvcnQgdHlwZSBFbnRpdHlKc29uID0ge1xuICBpZDogc3RyaW5nO1xuICBwYXJlbnRJZD86IHN0cmluZztcbiAgdGFibGU6IHN0cmluZztcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHByb3BzOiBFbnRpdHlQcm9wW107XG4gIGluZGV4ZXM6IEVudGl0eUluZGV4W107XG4gIHN1YnNldHM6IHtcbiAgICBbc3Vic2V0OiBzdHJpbmddOiBzdHJpbmdbXTtcbiAgfTtcbiAgZW51bXM6IHtcbiAgICBbZW51bUlkOiBzdHJpbmddOiB7XG4gICAgICBba2V5OiBzdHJpbmddOiBzdHJpbmc7XG4gICAgfTtcbiAgfTtcbn07XG5leHBvcnQgdHlwZSBFbnRpdHlTdWJzZXRSb3cgPSB7XG4gIGZpZWxkOiBzdHJpbmc7XG4gIGhhczoge1xuICAgIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG4gIH07XG4gIGNoaWxkcmVuOiBFbnRpdHlTdWJzZXRSb3dbXTtcbiAgcHJlZml4ZXM6IHN0cmluZ1tdO1xuICByZWxhdGlvbkVudGl0eT86IHN0cmluZztcbiAgaXNPcGVuPzogYm9vbGVhbjtcbn07XG5leHBvcnQgdHlwZSBGbGF0dGVuU3Vic2V0Um93ID0gT21pdDxFbnRpdHlTdWJzZXRSb3csIFwiY2hpbGRyZW5cIj47XG5cbi8qXG4gIFByb3BOb2RlXG4qL1xuXG4vKipcbiAqIOyXlO2LsO2LsOydmCDtlYTrk5wg6rWs7KGw66W8IO2KuOumrCDtmJXtg5zroZwg7ZGc7ZiE7ZWY64qUIOykkeqwhCDrhbjrk5zsnoXri4jri6QuXG4gKlxuICogKirrqqnsoIEqKjogRW50aXR57J2YIHN1YnNldCDtlYTrk5wg7ZGc7ZiE7IudKOyYiDogXCJpZFwiLCBcInVzZXIubmFtZVwiLCBcInRhZ3NbXVwiKeydhFxuICog7J6s6reA7KCB7J24IO2KuOumrCDqtazsobDroZwg7YyM7Iux7ZWY7JesIFpvZCDsiqTtgqTrp4gg7IOd7ISx7J2YIOykkeqwhCDri6jqs4TroZwg7IKs7Jqp7ZWp64uI64ukLlxuICpcbiAqICoq67OA7ZmYIO2dkOumhCoqOlxuICogRW50aXR5IHN1YnNldCDihpIgRW50aXR5UHJvcE5vZGUgKO2KuOumrCDqtazsobApIOKGkiBab2Qg7Iqk7YKk66eIIOKGkiBSZW5kZXJpbmdOb2RlIChVSeyaqSlcbiAqXG4gKiAqKm5vZGVUeXBlKio6XG4gKiAtIFwicGxhaW5cIjog64uo7J28IO2VhOuTnCAo7JiIOiBcImlkXCIsIFwibmFtZVwiKVxuICogLSBcIm9iamVjdFwiOiDspJHssqkg6rCd7LK0ICjsmIg6IFwidXNlci5uYW1lXCIg4oaSIHVzZXIg6rCd7LK0KVxuICogLSBcImFycmF5XCI6IOuwsOyXtCAo7JiIOiBcInRhZ3NbXVwiIOKGkiB0YWdzIOuwsOyXtClcbiAqXG4gKiAqKuyCrOyaqSDsnITsuZgqKjogZW50aXR5LWNvbnZlcnRlci50c+ydmCBwcm9wTm9kZVRvWm9kVHlwZSgpXG4gKi9cbmV4cG9ydCB0eXBlIEVudGl0eVByb3BOb2RlID1cbiAgfCB7XG4gICAgICBub2RlVHlwZTogXCJwbGFpblwiO1xuICAgICAgcHJvcDogRW50aXR5UHJvcDtcbiAgICB9XG4gIHwge1xuICAgICAgbm9kZVR5cGU6IFwib2JqZWN0XCIgfCBcImFycmF5XCI7XG4gICAgICBwcm9wPzogRW50aXR5UHJvcDtcbiAgICAgIGNoaWxkcmVuOiBFbnRpdHlQcm9wTm9kZVtdO1xuICAgIH07XG5cbi8qXG4gIFByb3AgVHlwZSBHdWFyZHNcbiovXG5leHBvcnQgZnVuY3Rpb24gaXNJbnRlZ2VyU2luZ2xlUHJvcChwOiB1bmtub3duKTogcCBpcyBJbnRlZ2VyUHJvcCB7XG4gIHJldHVybiAocCBhcyBJbnRlZ2VyUHJvcCk/LnR5cGUgPT09IFwiaW50ZWdlclwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZWdlckFycmF5UHJvcChwOiB1bmtub3duKTogcCBpcyBJbnRlZ2VyQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIEludGVnZXJBcnJheVByb3ApPy50eXBlID09PSBcImludGVnZXJbXVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzSW50ZWdlclByb3AocDogdW5rbm93bik6IHAgaXMgSW50ZWdlclByb3AgfCBJbnRlZ2VyQXJyYXlQcm9wIHtcbiAgcmV0dXJuIGlzSW50ZWdlclNpbmdsZVByb3AocCkgfHwgaXNJbnRlZ2VyQXJyYXlQcm9wKHApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQmlnSW50ZWdlclNpbmdsZVByb3AocDogdW5rbm93bik6IHAgaXMgQmlnSW50ZWdlclByb3Age1xuICByZXR1cm4gKHAgYXMgQmlnSW50ZWdlclByb3ApPy50eXBlID09PSBcImJpZ0ludGVnZXJcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0JpZ0ludGVnZXJBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgQmlnSW50ZWdlckFycmF5UHJvcCB7XG4gIHJldHVybiAocCBhcyBCaWdJbnRlZ2VyQXJyYXlQcm9wKT8udHlwZSA9PT0gXCJiaWdJbnRlZ2VyW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0JpZ0ludGVnZXJQcm9wKHA6IHVua25vd24pOiBwIGlzIEJpZ0ludGVnZXJQcm9wIHwgQmlnSW50ZWdlckFycmF5UHJvcCB7XG4gIHJldHVybiBpc0JpZ0ludGVnZXJTaW5nbGVQcm9wKHApIHx8IGlzQmlnSW50ZWdlckFycmF5UHJvcChwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ1NpbmdsZVByb3AocDogdW5rbm93bik6IHAgaXMgU3RyaW5nUHJvcCB7XG4gIHJldHVybiAocCBhcyBTdHJpbmdQcm9wKT8udHlwZSA9PT0gXCJzdHJpbmdcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZ0FycmF5UHJvcChwOiB1bmtub3duKTogcCBpcyBTdHJpbmdBcnJheVByb3Age1xuICByZXR1cm4gKHAgYXMgU3RyaW5nQXJyYXlQcm9wKT8udHlwZSA9PT0gXCJzdHJpbmdbXVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nUHJvcChwOiB1bmtub3duKTogcCBpcyBTdHJpbmdQcm9wIHwgU3RyaW5nQXJyYXlQcm9wIHtcbiAgcmV0dXJuIGlzU3RyaW5nU2luZ2xlUHJvcChwKSB8fCBpc1N0cmluZ0FycmF5UHJvcChwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0VudW1TaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIEVudW1Qcm9wIHtcbiAgcmV0dXJuIChwIGFzIEVudW1Qcm9wKT8udHlwZSA9PT0gXCJlbnVtXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNFbnVtQXJyYXlQcm9wKHA6IHVua25vd24pOiBwIGlzIEVudW1BcnJheVByb3Age1xuICByZXR1cm4gKHAgYXMgRW51bUFycmF5UHJvcCk/LnR5cGUgPT09IFwiZW51bVtdXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNFbnVtUHJvcChwOiB1bmtub3duKTogcCBpcyBFbnVtUHJvcCB8IEVudW1BcnJheVByb3Age1xuICByZXR1cm4gaXNFbnVtU2luZ2xlUHJvcChwKSB8fCBpc0VudW1BcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXJTaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIE51bWJlclByb3Age1xuICByZXR1cm4gKHAgYXMgTnVtYmVyUHJvcCk/LnR5cGUgPT09IFwibnVtYmVyXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNOdW1iZXJBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgTnVtYmVyQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIE51bWJlckFycmF5UHJvcCk/LnR5cGUgPT09IFwibnVtYmVyW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc051bWJlclByb3AocDogdW5rbm93bik6IHAgaXMgTnVtYmVyUHJvcCB8IE51bWJlckFycmF5UHJvcCB7XG4gIHJldHVybiBpc051bWJlclNpbmdsZVByb3AocCkgfHwgaXNOdW1iZXJBcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNOdW1lcmljU2luZ2xlUHJvcChwOiB1bmtub3duKTogcCBpcyBOdW1lcmljUHJvcCB7XG4gIHJldHVybiAocCBhcyBOdW1lcmljUHJvcCk/LnR5cGUgPT09IFwibnVtZXJpY1wiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtZXJpY0FycmF5UHJvcChwOiB1bmtub3duKTogcCBpcyBOdW1lcmljQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIE51bWVyaWNBcnJheVByb3ApPy50eXBlID09PSBcIm51bWVyaWNbXVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtZXJpY1Byb3AocDogdW5rbm93bik6IHAgaXMgTnVtZXJpY1Byb3AgfCBOdW1lcmljQXJyYXlQcm9wIHtcbiAgcmV0dXJuIGlzTnVtZXJpY1NpbmdsZVByb3AocCkgfHwgaXNOdW1lcmljQXJyYXlQcm9wKHApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzQm9vbGVhblNpbmdsZVByb3AocDogdW5rbm93bik6IHAgaXMgQm9vbGVhblByb3Age1xuICByZXR1cm4gKHAgYXMgQm9vbGVhblByb3ApPy50eXBlID09PSBcImJvb2xlYW5cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0Jvb2xlYW5BcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgQm9vbGVhbkFycmF5UHJvcCB7XG4gIHJldHVybiAocCBhcyBCb29sZWFuQXJyYXlQcm9wKT8udHlwZSA9PT0gXCJib29sZWFuW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0Jvb2xlYW5Qcm9wKHA6IHVua25vd24pOiBwIGlzIEJvb2xlYW5Qcm9wIHwgQm9vbGVhbkFycmF5UHJvcCB7XG4gIHJldHVybiBpc0Jvb2xlYW5TaW5nbGVQcm9wKHApIHx8IGlzQm9vbGVhbkFycmF5UHJvcChwKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGVTaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIERhdGVQcm9wIHtcbiAgcmV0dXJuIChwIGFzIERhdGVQcm9wKT8udHlwZSA9PT0gXCJkYXRlXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlQXJyYXlQcm9wKHA6IHVua25vd24pOiBwIGlzIERhdGVBcnJheVByb3Age1xuICByZXR1cm4gKHAgYXMgRGF0ZUFycmF5UHJvcCk/LnR5cGUgPT09IFwiZGF0ZVtdXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlUHJvcChwOiB1bmtub3duKTogcCBpcyBEYXRlUHJvcCB8IERhdGVBcnJheVByb3Age1xuICByZXR1cm4gaXNEYXRlU2luZ2xlUHJvcChwKSB8fCBpc0RhdGVBcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNVdWlkU2luZ2xlUHJvcChwOiB1bmtub3duKTogcCBpcyBVdWlkUHJvcCB7XG4gIHJldHVybiAocCBhcyBVdWlkUHJvcCk/LnR5cGUgPT09IFwidXVpZFwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVXVpZEFycmF5UHJvcChwOiB1bmtub3duKTogcCBpcyBVdWlkQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIFV1aWRBcnJheVByb3ApPy50eXBlID09PSBcInV1aWRbXVwiO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzVXVpZFByb3AocDogdW5rbm93bik6IHAgaXMgVXVpZFByb3AgfCBVdWlkQXJyYXlQcm9wIHtcbiAgcmV0dXJuIGlzVXVpZFNpbmdsZVByb3AocCkgfHwgaXNVdWlkQXJyYXlQcm9wKHApO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzSnNvblByb3AocDogdW5rbm93bik6IHAgaXMgSnNvblByb3Age1xuICByZXR1cm4gKHAgYXMgSnNvblByb3ApPy50eXBlID09PSBcImpzb25cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1ZpcnR1YWxQcm9wKHA6IHVua25vd24pOiBwIGlzIFZpcnR1YWxQcm9wIHtcbiAgcmV0dXJuIChwIGFzIFZpcnR1YWxQcm9wKT8udHlwZSA9PT0gXCJ2aXJ0dWFsXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWZWN0b3JTaW5nbGVQcm9wKHA6IHVua25vd24pOiBwIGlzIFZlY3RvclByb3Age1xuICByZXR1cm4gKHAgYXMgVmVjdG9yUHJvcCk/LnR5cGUgPT09IFwidmVjdG9yXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNWZWN0b3JBcnJheVByb3AocDogdW5rbm93bik6IHAgaXMgVmVjdG9yQXJyYXlQcm9wIHtcbiAgcmV0dXJuIChwIGFzIFZlY3RvckFycmF5UHJvcCk/LnR5cGUgPT09IFwidmVjdG9yW11cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1ZlY3RvclByb3AocDogdW5rbm93bik6IHAgaXMgVmVjdG9yUHJvcCB8IFZlY3RvckFycmF5UHJvcCB7XG4gIHJldHVybiBpc1ZlY3RvclNpbmdsZVByb3AocCkgfHwgaXNWZWN0b3JBcnJheVByb3AocCk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNSZWxhdGlvblByb3AocDogdW5rbm93bik6IHAgaXMgUmVsYXRpb25Qcm9wIHtcbiAgcmV0dXJuIChwIGFzIFJlbGF0aW9uUHJvcCk/LnR5cGUgPT09IFwicmVsYXRpb25cIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc09uZVRvT25lUmVsYXRpb25Qcm9wKHA6IHVua25vd24pOiBwIGlzIE9uZVRvT25lUmVsYXRpb25Qcm9wIHtcbiAgcmV0dXJuIChwIGFzIE9uZVRvT25lUmVsYXRpb25Qcm9wKT8ucmVsYXRpb25UeXBlID09PSBcIk9uZVRvT25lXCI7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AocDogdW5rbm93bik6IHAgaXMgQmVsb25nc1RvT25lUmVsYXRpb25Qcm9wIHtcbiAgcmV0dXJuIChwIGFzIEJlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcCk/LnJlbGF0aW9uVHlwZSA9PT0gXCJCZWxvbmdzVG9PbmVcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0hhc01hbnlSZWxhdGlvblByb3AocDogdW5rbm93bik6IHAgaXMgSGFzTWFueVJlbGF0aW9uUHJvcCB7XG4gIHJldHVybiAocCBhcyBIYXNNYW55UmVsYXRpb25Qcm9wKT8ucmVsYXRpb25UeXBlID09PSBcIkhhc01hbnlcIjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc01hbnlUb01hbnlSZWxhdGlvblByb3AocDogdW5rbm93bik6IHAgaXMgTWFueVRvTWFueVJlbGF0aW9uUHJvcCB7XG4gIHJldHVybiAocCBhcyBNYW55VG9NYW55UmVsYXRpb25Qcm9wKT8ucmVsYXRpb25UeXBlID09PSBcIk1hbnlUb01hbnlcIjtcbn1cblxudHlwZSBKb2luQ2xhdXNlID1cbiAgfCB7XG4gICAgICBmcm9tOiBzdHJpbmc7XG4gICAgICB0bzogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICBjdXN0b206IHN0cmluZztcbiAgICB9O1xuZXhwb3J0IGZ1bmN0aW9uIGlzQ3VzdG9tSm9pbkNsYXVzZShwOiB1bmtub3duKTogcCBpcyB7IGN1c3RvbTogc3RyaW5nIH0ge1xuICByZXR1cm4gISEocCBhcyB7IGN1c3RvbTogc3RyaW5nIH0pPy5jdXN0b207XG59XG5cbnR5cGUgU3Vic2V0TG9hZGVyID0ge1xuICBhczogc3RyaW5nO1xuICB0YWJsZTogc3RyaW5nO1xuICBtYW55Sm9pbjoge1xuICAgIGZyb21UYWJsZTogc3RyaW5nO1xuICAgIGZyb21Db2w6IHN0cmluZztcbiAgICBpZEZpZWxkOiBzdHJpbmc7XG4gICAgdG9UYWJsZTogc3RyaW5nO1xuICAgIHRvQ29sOiBzdHJpbmc7XG4gICAgdGhyb3VnaD86IHtcbiAgICAgIHRhYmxlOiBzdHJpbmc7XG4gICAgICBmcm9tQ29sOiBzdHJpbmc7XG4gICAgICB0b0NvbDogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIG9uZUpvaW5zOiAoe1xuICAgIGFzOiBzdHJpbmc7XG4gICAgam9pbjogXCJpbm5lclwiIHwgXCJvdXRlclwiO1xuICAgIHRhYmxlOiBzdHJpbmc7XG4gIH0gJiBKb2luQ2xhdXNlKVtdO1xuICBzZWxlY3Q6IHN0cmluZ1tdO1xuICBsb2FkZXJzPzogU3Vic2V0TG9hZGVyW107XG59O1xuXG5leHBvcnQgdHlwZSBTdWJzZXRRdWVyeSA9IHtcbiAgc2VsZWN0OiBzdHJpbmdbXTtcbiAgdmlydHVhbDogc3RyaW5nW107XG4gIGpvaW5zOiAoe1xuICAgIGFzOiBzdHJpbmc7XG4gICAgam9pbjogXCJpbm5lclwiIHwgXCJvdXRlclwiO1xuICAgIHRhYmxlOiBzdHJpbmc7XG4gIH0gJiBKb2luQ2xhdXNlKVtdO1xuICBsb2FkZXJzOiBTdWJzZXRMb2FkZXJbXTtcbn07XG5cbi8qIEJhc2VNb2RlbCAqL1xuZXhwb3J0IGNvbnN0IFNvbmFtdVF1ZXJ5TW9kZSA9IHouZW51bShbXCJib3RoXCIsIFwibGlzdFwiLCBcImNvdW50XCJdKTtcbmV4cG9ydCB0eXBlIFNvbmFtdVF1ZXJ5TW9kZSA9IHouaW5mZXI8dHlwZW9mIFNvbmFtdVF1ZXJ5TW9kZT47XG5cbi8qIEtuZXggTWlncmF0aW9uICovXG5leHBvcnQgdHlwZSBLbmV4RXJyb3IgPSB7XG4gIGNvZGU6IHN0cmluZztcbiAgZXJybm86IG51bWJlcjtcbiAgc3FsOiBzdHJpbmc7XG4gIHNxbE1lc3NhZ2U6IHN0cmluZztcbiAgc3FsU3RhdGU6IHN0cmluZztcbn07XG5leHBvcnQgZnVuY3Rpb24gaXNLbmV4RXJyb3IoZTogdW5rbm93bik6IGUgaXMgS25leEVycm9yIHtcbiAgcmV0dXJuICEhKGUgYXMgS25leEVycm9yKT8uY29kZSAmJiAhIShlIGFzIEtuZXhFcnJvcik/LnNxbE1lc3NhZ2UgJiYgISEoZSBhcyBLbmV4RXJyb3IpPy5zcWxTdGF0ZTtcbn1cblxuZXhwb3J0IHR5cGUgS25leENvbHVtblR5cGUgPVxuICB8IFwic3RyaW5nXCJcbiAgfCBcInRleHRcIlxuICB8IFwic21hbGx0ZXh0XCJcbiAgfCBcIm1lZGl1bXRleHRcIlxuICB8IFwibG9uZ3RleHRcIlxuICB8IFwiaW50ZWdlclwiXG4gIHwgXCJiaWdJbnRlZ2VyXCJcbiAgfCBcImRlY2ltYWxcIlxuICB8IFwidGltZXN0YW1wXCJcbiAgfCBcImJvb2xlYW5cIlxuICB8IFwiZm9yZWlnblwiXG4gIHwgXCJ1dWlkXCJcbiAgfCBcImpzb25cIlxuICB8IFwiZmxvYXRcIlxuICB8IFwiZGF0ZVwiXG4gIHwgXCJ0aW1lXCJcbiAgfCBcImRhdGV0aW1lXCI7XG5leHBvcnQgdHlwZSBNaWdyYXRpb25Db2x1bW5UeXBlID1cbiAgfCBcInN0cmluZ1wiXG4gIHwgXCJzdHJpbmdbXVwiXG4gIHwgXCJpbnRlZ2VyXCJcbiAgfCBcImludGVnZXJbXVwiXG4gIHwgXCJiaWdJbnRlZ2VyXCJcbiAgfCBcImJpZ0ludGVnZXJbXVwiXG4gIHwgXCJudW1iZXJPck51bWVyaWNcIlxuICB8IFwibnVtYmVyT3JOdW1lcmljW11cIlxuICB8IFwiYm9vbGVhblwiXG4gIHwgXCJib29sZWFuW11cIlxuICB8IFwiZGF0ZVwiXG4gIHwgXCJkYXRlW11cIlxuICB8IFwidXVpZFwiXG4gIHwgXCJ1dWlkW11cIlxuICB8IFwianNvblwiXG4gIHwgXCJ2ZWN0b3JcIlxuICB8IFwidmVjdG9yW11cIlxuICB8IFwidHN2ZWN0b3JcIjtcbmV4cG9ydCB0eXBlIE1pZ3JhdGlvbkNvbHVtbiA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBNaWdyYXRpb25Db2x1bW5UeXBlO1xuICBudWxsYWJsZTogYm9vbGVhbjtcbiAgbnVtYmVyVHlwZT86IFwicmVhbFwiIHwgXCJkb3VibGUgcHJlY2lzaW9uXCIgfCBcIm51bWVyaWNcIjtcbiAgbGVuZ3RoPzogbnVtYmVyO1xuICBkZWZhdWx0VG8/OiBzdHJpbmc7XG4gIHByZWNpc2lvbj86IG51bWJlcjtcbiAgc2NhbGU/OiBudW1iZXI7XG4gIGRpbWVuc2lvbnM/OiBudW1iZXI7XG4gIGdlbmVyYXRlZD86IEdlbmVyYXRlZENvbHVtbjtcbn07XG5leHBvcnQgdHlwZSBNaWdyYXRpb25JbmRleCA9IHtcbiAgdHlwZTogXCJ1bmlxdWVcIiB8IFwiaW5kZXhcIiB8IFwiZnVsbHRleHRcIiB8IFwiaG5zd1wiIHwgXCJpdmZmbGF0XCI7XG4gIGNvbHVtbnM6IEVudGl0eUluZGV4Q29sdW1uW107XG4gIG5hbWU6IHN0cmluZztcbiAgcGFyc2VyPzogXCJidWlsdC1pblwiIHwgXCJuZ3JhbVwiO1xuICBudWxsc05vdERpc3RpbmN0PzogYm9vbGVhbjtcbiAgLyoqIEhOU1cgKEhpZXJhcmNoaWNhbCBOYXZpZ2FibGUgU21hbGwgV29ybGQpOiDqsIEg64W465Oc7J2YIOy1nOuMgCDsl7DqsrAg7IiYICovXG4gIG0/OiBudW1iZXI7XG4gIC8qKiBITlNXIChIaWVyYXJjaGljYWwgTmF2aWdhYmxlIFNtYWxsIFdvcmxkKTog6rWs7ISxIOyLnCDtg5Dsg4kg67KU7JyEICovXG4gIGVmQ29uc3RydWN0aW9uPzogbnVtYmVyO1xuICAvKiogSVZGRmxhdCAoSW52ZXJ0ZWQgRmlsZSB3aXRoIEZsYXQgQ29tcHJlc3Npb24pOiDtgbTrn6zsiqTthLDrp4Eg66as7Iqk7Yq4IOyImCAqL1xuICBsaXN0cz86IG51bWJlcjtcbn07XG5leHBvcnQgdHlwZSBNaWdyYXRpb25Gb3JlaWduID0ge1xuICBjb2x1bW5zOiBzdHJpbmdbXTtcbiAgdG86IHN0cmluZztcbiAgb25VcGRhdGU6IFJlbGF0aW9uT247XG4gIG9uRGVsZXRlOiBSZWxhdGlvbk9uO1xufTtcbmV4cG9ydCB0eXBlIE1pZ3JhdGlvbkpvaW5UYWJsZSA9IHtcbiAgdGFibGU6IHN0cmluZztcbiAgaW5kZXhlczogTWlncmF0aW9uSW5kZXhbXTtcbiAgY29sdW1uczogTWlncmF0aW9uQ29sdW1uW107XG4gIGZvcmVpZ25zOiBNaWdyYXRpb25Gb3JlaWduW107XG59O1xuZXhwb3J0IHR5cGUgTWlncmF0aW9uU2V0ID0ge1xuICB0YWJsZTogc3RyaW5nO1xuICBjb2x1bW5zOiBNaWdyYXRpb25Db2x1bW5bXTtcbiAgaW5kZXhlczogTWlncmF0aW9uSW5kZXhbXTtcbiAgZm9yZWlnbnM6IE1pZ3JhdGlvbkZvcmVpZ25bXTtcbn07XG5leHBvcnQgdHlwZSBNaWdyYXRpb25TZXRBbmRKb2luVGFibGUgPSBNaWdyYXRpb25TZXQgJiB7XG4gIGpvaW5UYWJsZXM6IE1pZ3JhdGlvbkpvaW5UYWJsZVtdO1xufTtcbmV4cG9ydCB0eXBlIEdlbk1pZ3JhdGlvbkNvZGUgPSB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHRhYmxlOiBzdHJpbmc7XG4gIHR5cGU6IFwibm9ybWFsXCIgfCBcImZvcmVpZ25cIjtcbiAgZm9ybWF0dGVkOiBzdHJpbmcgfCBudWxsO1xufTtcblxuLyogQXBpICovXG5leHBvcnQgdHlwZSBBcGlQYXJhbSA9IHtcbiAgbmFtZTogc3RyaW5nO1xuICB0eXBlOiBBcGlQYXJhbVR5cGU7XG4gIG9wdGlvbmFsOiBib29sZWFuO1xuICBkZWZhdWx0RGVmPzogc3RyaW5nO1xufTtcbmV4cG9ydCBuYW1lc3BhY2UgQXBpUGFyYW1UeXBlIHtcbiAgZXhwb3J0IHR5cGUgT2JqZWN0ID0ge1xuICAgIHQ6IFwib2JqZWN0XCI7XG4gICAgcHJvcHM6IEFwaVBhcmFtW107XG4gIH07XG4gIGV4cG9ydCB0eXBlIFVuaW9uID0ge1xuICAgIHQ6IFwidW5pb25cIjtcbiAgICB0eXBlczogQXBpUGFyYW1UeXBlW107XG4gIH07XG4gIGV4cG9ydCB0eXBlIEludGVyc2VjdGlvbiA9IHtcbiAgICB0OiBcImludGVyc2VjdGlvblwiO1xuICAgIHR5cGVzOiBBcGlQYXJhbVR5cGVbXTtcbiAgfTtcbiAgZXhwb3J0IHR5cGUgU3RyaW5nTGl0ZXJhbCA9IHtcbiAgICB0OiBcInN0cmluZy1saXRlcmFsXCI7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgfTtcbiAgZXhwb3J0IHR5cGUgTnVtZXJpY0xpdGVyYWwgPSB7XG4gICAgdDogXCJudW1lcmljLWxpdGVyYWxcIjtcbiAgICB2YWx1ZTogbnVtYmVyO1xuICB9O1xuICBleHBvcnQgdHlwZSBBcnJheSA9IHtcbiAgICB0OiBcImFycmF5XCI7XG4gICAgZWxlbWVudHNUeXBlOiBBcGlQYXJhbVR5cGU7XG4gIH07XG4gIGV4cG9ydCB0eXBlIFJlZiA9IHtcbiAgICB0OiBcInJlZlwiO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgYXJncz86IEFwaVBhcmFtVHlwZVtdO1xuICB9O1xuICBleHBvcnQgdHlwZSBJbmRleGVkQWNjZXNzID0ge1xuICAgIHQ6IFwiaW5kZXhlZC1hY2Nlc3NcIjtcbiAgICBvYmplY3Q6IEFwaVBhcmFtVHlwZTtcbiAgICBpbmRleDogQXBpUGFyYW1UeXBlO1xuICB9O1xuICBleHBvcnQgdHlwZSBUdXBsZVR5cGUgPSB7XG4gICAgdDogXCJ0dXBsZS10eXBlXCI7XG4gICAgZWxlbWVudHM6IEFwaVBhcmFtVHlwZVtdO1xuICB9O1xuICBleHBvcnQgdHlwZSBQaWNrID0gUmVmICYge1xuICAgIHQ6IFwicmVmXCI7XG4gICAgaWQ6IFwiUGlja1wiO1xuICB9O1xuICBleHBvcnQgdHlwZSBPbWl0ID0gUmVmICYge1xuICAgIHQ6IFwicmVmXCI7XG4gICAgaWQ6IFwiT21pdFwiO1xuICB9O1xuICBleHBvcnQgdHlwZSBQYXJ0aWFsID0gUmVmICYge1xuICAgIHQ6IFwicmVmXCI7XG4gICAgaWQ6IFwiUGFydGlhbFwiO1xuICB9O1xuICBleHBvcnQgdHlwZSBQcm9taXNlID0gUmVmICYge1xuICAgIHQ6IFwicmVmXCI7XG4gICAgaWQ6IFwiUHJvbWlzZVwiO1xuICB9O1xuICBleHBvcnQgdHlwZSBDb250ZXh0ID0gUmVmICYge1xuICAgIHQ6IFwicmVmXCI7XG4gICAgaWQ6IFwiQ29udGV4dFwiO1xuICB9O1xuICBleHBvcnQgdHlwZSBUeXBlUGFyYW0gPSB7XG4gICAgdDogXCJ0eXBlLXBhcmFtXCI7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjb25zdHJhaW50PzogQXBpUGFyYW1UeXBlO1xuICB9O1xuXG4gIGV4cG9ydCBmdW5jdGlvbiBpc09iamVjdCh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuT2JqZWN0IHtcbiAgICByZXR1cm4gKHYgYXMgQXBpUGFyYW1UeXBlLk9iamVjdCk/LnQgPT09IFwib2JqZWN0XCI7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzVW5pb24odjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlVuaW9uIHtcbiAgICByZXR1cm4gKHYgYXMgQXBpUGFyYW1UeXBlLlVuaW9uKT8udCA9PT0gXCJ1bmlvblwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc0ludGVyc2VjdGlvbih2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuSW50ZXJzZWN0aW9uIHtcbiAgICByZXR1cm4gKHYgYXMgQXBpUGFyYW1UeXBlLkludGVyc2VjdGlvbik/LnQgPT09IFwiaW50ZXJzZWN0aW9uXCI7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nTGl0ZXJhbCh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuU3RyaW5nTGl0ZXJhbCB7XG4gICAgcmV0dXJuICh2IGFzIEFwaVBhcmFtVHlwZS5TdHJpbmdMaXRlcmFsKT8udCA9PT0gXCJzdHJpbmctbGl0ZXJhbFwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc051bWVyaWNMaXRlcmFsKHY6IHVua25vd24pOiB2IGlzIEFwaVBhcmFtVHlwZS5OdW1lcmljTGl0ZXJhbCB7XG4gICAgcmV0dXJuICh2IGFzIEFwaVBhcmFtVHlwZS5OdW1lcmljTGl0ZXJhbCk/LnQgPT09IFwibnVtZXJpYy1saXRlcmFsXCI7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzQXJyYXkodjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLkFycmF5IHtcbiAgICByZXR1cm4gKHYgYXMgQXBpUGFyYW1UeXBlLkFycmF5KT8udCA9PT0gXCJhcnJheVwiO1xuICB9XG4gIGV4cG9ydCBmdW5jdGlvbiBpc1JlZih2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuUmVmIHtcbiAgICByZXR1cm4gdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiYgdiAhPT0gbnVsbCAmJiAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwicmVmXCI7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzSW5kZXhlZEFjY2Vzcyh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuSW5kZXhlZEFjY2VzcyB7XG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgIT09IG51bGwgJiYgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcImluZGV4ZWQtYWNjZXNzXCI7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzVHVwbGVUeXBlKHY6IHVua25vd24pOiB2IGlzIEFwaVBhcmFtVHlwZS5UdXBsZVR5cGUge1xuICAgIHJldHVybiB0eXBlb2YgdiA9PT0gXCJvYmplY3RcIiAmJiB2ICE9PSBudWxsICYmICh2IGFzIHsgdD86IHVua25vd24gfSkudCA9PT0gXCJ0dXBsZS10eXBlXCI7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUGljayh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuUGljayB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmXG4gICAgICB2ICE9PSBudWxsICYmXG4gICAgICAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwicmVmXCIgJiZcbiAgICAgICh2IGFzIHsgaWQ/OiB1bmtub3duIH0pLmlkID09PSBcIlBpY2tcIlxuICAgICk7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzT21pdCh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuT21pdCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmXG4gICAgICB2ICE9PSBudWxsICYmXG4gICAgICAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwicmVmXCIgJiZcbiAgICAgICh2IGFzIHsgaWQ/OiB1bmtub3duIH0pLmlkID09PSBcIk9taXRcIlxuICAgICk7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUGFydGlhbCh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuUGFydGlhbCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmXG4gICAgICB2ICE9PSBudWxsICYmXG4gICAgICAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwicmVmXCIgJiZcbiAgICAgICh2IGFzIHsgaWQ/OiB1bmtub3duIH0pLmlkID09PSBcIlBhcnRpYWxcIlxuICAgICk7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUHJvbWlzZSh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuUHJvbWlzZSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmXG4gICAgICB2ICE9PSBudWxsICYmXG4gICAgICAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwicmVmXCIgJiZcbiAgICAgICh2IGFzIHsgaWQ/OiB1bmtub3duIH0pLmlkID09PSBcIlByb21pc2VcIlxuICAgICk7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzQ29udGV4dCh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuQ29udGV4dCB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmXG4gICAgICB2ICE9PSBudWxsICYmXG4gICAgICAodiBhcyB7IHQ/OiB1bmtub3duIH0pLnQgPT09IFwicmVmXCIgJiZcbiAgICAgICh2IGFzIHsgaWQ/OiB1bmtub3duIH0pLmlkID09PSBcIkNvbnRleHRcIlxuICAgICk7XG4gIH1cbiAgZXhwb3J0IGZ1bmN0aW9uIGlzUmVmS25leCh2OiB1bmtub3duKTogdiBpcyBBcGlQYXJhbVR5cGUuUmVmIHtcbiAgICByZXR1cm4gKFxuICAgICAgdHlwZW9mIHYgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgIHYgIT09IG51bGwgJiZcbiAgICAgICh2IGFzIHsgdD86IHVua25vd24gfSkudCA9PT0gXCJyZWZcIiAmJlxuICAgICAgKHYgYXMgeyBpZD86IHVua25vd24gfSkuaWQgPT09IFwiS25leFwiXG4gICAgKTtcbiAgfVxuICBleHBvcnQgZnVuY3Rpb24gaXNUeXBlUGFyYW0odjogdW5rbm93bik6IHYgaXMgQXBpUGFyYW1UeXBlLlR5cGVQYXJhbSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSBcIm9iamVjdFwiICYmIHYgIT09IG51bGwgJiYgKHYgYXMgeyB0PzogdW5rbm93biB9KS50ID09PSBcInR5cGUtcGFyYW1cIjtcbiAgfVxufVxuZXhwb3J0IHR5cGUgQXBpUGFyYW1UeXBlID1cbiAgfCBcInN0cmluZ1wiXG4gIHwgXCJudW1iZXJcIlxuICB8IFwiYm9vbGVhblwiXG4gIHwgXCJudWxsXCJcbiAgfCBcInVuZGVmaW5lZFwiXG4gIHwgXCJ2b2lkXCJcbiAgfCBcImFueVwiXG4gIHwgXCJ1bmtub3duXCJcbiAgfCBcInRydWVcIlxuICB8IFwiZmFsc2VcIlxuICB8IEFwaVBhcmFtVHlwZS5TdHJpbmdMaXRlcmFsXG4gIHwgQXBpUGFyYW1UeXBlLk51bWVyaWNMaXRlcmFsXG4gIHwgQXBpUGFyYW1UeXBlLk9iamVjdFxuICB8IEFwaVBhcmFtVHlwZS5VbmlvblxuICB8IEFwaVBhcmFtVHlwZS5JbnRlcnNlY3Rpb25cbiAgfCBBcGlQYXJhbVR5cGUuQXJyYXlcbiAgfCBBcGlQYXJhbVR5cGUuUmVmXG4gIHwgQXBpUGFyYW1UeXBlLkluZGV4ZWRBY2Nlc3NcbiAgfCBBcGlQYXJhbVR5cGUuVHlwZVBhcmFtXG4gIHwgQXBpUGFyYW1UeXBlLlR1cGxlVHlwZTtcblxuLyogVGVtcGxhdGUgKi9cbi8qKlxuICogVUkg7Lu07Y+s64SM7Yq4IOugjOuNlOungeydhCDsnITtlZwg66mU7YOA642w7J207YSwIOuFuOuTnOyeheuLiOuLpC5cbiAqXG4gKiAqKuuqqeyggSoqOiBab2Qg7Iqk7YKk66eI66Gc67aA7YSwIO2UhOuhoO2KuOyXlOuTnCBVSSDsu7Ttj6zrhIztirjrpbwg7J6Q64+ZIOyDneyEse2VmOq4sCDsnITtlZxcbiAqIOugjOuNlOungSDsoJXrs7Trpbwg64u07J2AIO2KuOumrCDqtazsobDsnoXri4jri6QuIOqwgSDtlYTrk5zqsIAg7Ja065akIFVJIOy7tO2PrOuEjO2KuOuhnFxuICog7ZGc7ZiE65CY7Ja07JW8IO2VmOuKlOyngCjthY3siqTtirgsIOydtOuvuOyngCwg64Kg7KecLCBFbnVtIOyEoO2DnSDrk7Ep66W8IOuqheyLnO2VqeuLiOuLpC5cbiAqXG4gKiAqKuuzgO2ZmCDtnZDrpoQqKjpcbiAqIEVudGl0eSBzdWJzZXQg4oaSIEVudGl0eVByb3BOb2RlIOKGkiBab2Qg7Iqk7YKk66eIIOKGkiBSZW5kZXJpbmdOb2RlIChVSeyaqSkg4oaSIFJlYWN0IOy7tO2PrOuEjO2KuCDsvZTrk5wg7IOd7ISxXG4gKlxuICogKirso7zsmpQg7ZWE65OcKio6XG4gKiAtIGByZW5kZXJUeXBlYDogVUkg7Lu07Y+s64SM7Yq4IOycoO2YlSAoc3RyaW5nLXBsYWluLCBudW1iZXItZmtfaWQsIGVudW1zLCBhcnJheSDrk7EpXG4gKiAtIGB6b2RUeXBlYDog7JuQ67O4IFpvZCDsiqTtgqTrp4ggKHZhbGlkYXRpb24g7JqpKVxuICogLSBgY2hpbGRyZW5gOiDspJHssqnrkJwg6rCd7LK0IO2VhOuTnOuTpCAob2JqZWN07J28IOuVjClcbiAqIC0gYGVsZW1lbnRgOiDrsLDsl7Qg7JqU7IaMIO2DgOyehSAoYXJyYXnsnbwg65WMKVxuICpcbiAqICoq7IKs7JqpIOychOy5mCoqOlxuICogLSB6b2QtY29udmVydGVyLnRz7J2YIHpvZFR5cGVUb1JlbmRlcmluZ05vZGUoKeyXkOyEnCDsg53shLFcbiAqIC0gdmlld19mb3JtLnRlbXBsYXRlLnRzLCB2aWV3X2xpc3QudGVtcGxhdGUudHMg65Ox7JeQ7IScIFJlYWN0IOy7tO2PrOuEjO2KuCDsvZTrk5wg7IOd7ISx7JeQIOyCrOyaqVxuICovXG4vLyDshYDtlIQg7LC47KGwIO2DgOyeheydtOuvgOuhnCBab2Qg7IOd65617ZWY6rOgIOyngeygkSDsoJXsnZhcbmV4cG9ydCBjb25zdCBSZW5kZXJpbmdOb2RlID0gei5hbnkoKTtcbmV4cG9ydCB0eXBlIFJlbmRlcmluZ05vZGUgPSB7XG4gIG5hbWU6IHN0cmluZztcbiAgbGFiZWw6IHN0cmluZztcbiAgcmVuZGVyVHlwZTpcbiAgICB8IFwic3RyaW5nLXBsYWluXCJcbiAgICB8IFwic3RyaW5nLWltYWdlXCJcbiAgICB8IFwic3RyaW5nLWRhdGV0aW1lXCJcbiAgICB8IFwic3RyaW5nLWRhdGVcIlxuICAgIHwgXCJkYXRldGltZVwiXG4gICAgfCBcIm51bWJlci1wbGFpblwiXG4gICAgfCBcIm51bWJlci1pZFwiXG4gICAgfCBcIm51bWJlci1ma19pZFwiXG4gICAgfCBcImJvb2xlYW5cIlxuICAgIHwgXCJlbnVtc1wiXG4gICAgfCBcImFycmF5XCJcbiAgICB8IFwiYXJyYXktaW1hZ2VzXCJcbiAgICB8IFwib2JqZWN0XCJcbiAgICB8IFwib2JqZWN0LXBpY2tcIlxuICAgIHwgXCJyZWNvcmRcIlxuICAgIHwgXCJ2ZWN0b3JcIjtcbiAgem9kVHlwZTogei5ab2RUeXBlQW55O1xuICBlbGVtZW50PzogUmVuZGVyaW5nTm9kZTtcbiAgY2hpbGRyZW4/OiBSZW5kZXJpbmdOb2RlW107XG4gIGNvbmZpZz86IHtcbiAgICBwaWNrZWQ6IHN0cmluZztcbiAgfTtcbiAgb3B0aW9uYWw/OiBib29sZWFuO1xuICBudWxsYWJsZT86IGJvb2xlYW47XG59O1xuXG5jb25zdCBHZW5lcmF0ZWRDb2x1bW5TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHR5cGU6IHouZW51bShbXCJTVE9SRURcIiwgXCJWSVJUVUFMXCJdKSxcbiAgZXhwcmVzc2lvbjogei5zdHJpbmcoKSxcbn0pO1xuXG5jb25zdCBCYXNlUHJvcEZpZWxkcyA9IHtcbiAgbmFtZTogei5zdHJpbmcoKSxcbiAgZGVzYzogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBudWxsYWJsZTogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgdG9GaWx0ZXI6IHouYm9vbGVhbigpLmRlZmF1bHQoZmFsc2UpLm9wdGlvbmFsKCksXG4gIGRiRGVmYXVsdDogei51bmlvbihbei5zdHJpbmcoKSwgei5udW1iZXIoKSwgei5ib29sZWFuKCldKS5vcHRpb25hbCgpLFxuICBnZW5lcmF0ZWQ6IEdlbmVyYXRlZENvbHVtblNjaGVtYS5vcHRpb25hbCgpLFxufTtcblxuLy8g67aA6rCAIO2VhOuTnOqwgCDtlYTsmpTsl4bripQgcHJvcFxuY29uc3QgQmFzZVByb3BGaWVsZHNXaXRob3V0QWRkaXRpb25hbCA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei51bmlvbihbXG4gICAgICB6LmxpdGVyYWwoXCJpbnRlZ2VyXCIpLFxuICAgICAgei5saXRlcmFsKFwiaW50ZWdlcltdXCIpLFxuICAgICAgei5saXRlcmFsKFwiYmlnSW50ZWdlclwiKSxcbiAgICAgIHoubGl0ZXJhbChcImJpZ0ludGVnZXJbXVwiKSxcbiAgICAgIHoubGl0ZXJhbChcImJvb2xlYW5cIiksXG4gICAgICB6LmxpdGVyYWwoXCJib29sZWFuW11cIiksXG4gICAgICB6LmxpdGVyYWwoXCJkYXRlXCIpLFxuICAgICAgei5saXRlcmFsKFwiZGF0ZVtdXCIpLFxuICAgICAgei5saXRlcmFsKFwidXVpZFwiKSxcbiAgICAgIHoubGl0ZXJhbChcInV1aWRbXVwiKSxcbiAgICBdKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG4vLyBwcmVjaXNpb24vc2NhbGUg7ZWE65OcXG5jb25zdCBQcmVjaXNpb25TY2FsZUZpZWxkcyA9IHtcbiAgcHJlY2lzaW9uOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIHNjYWxlOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG59O1xuXG4vLyDqsIEg7YOA7J6F67OEIOyKpO2CpOuniCDsoJXsnZhcblxuY29uc3QgU3RyaW5nUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwic3RyaW5nXCIpLFxuICAgIGxlbmd0aDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5jb25zdCBTdHJpbmdBcnJheVByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcInN0cmluZ1tdXCIpLFxuICAgIGxlbmd0aDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IEVudW1Qcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUHJvcEZpZWxkcyxcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJlbnVtXCIpLFxuICAgIGlkOiB6LnN0cmluZygpLFxuICAgIGxlbmd0aDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5jb25zdCBFbnVtQXJyYXlQcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUHJvcEZpZWxkcyxcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJlbnVtW11cIiksXG4gICAgaWQ6IHouc3RyaW5nKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuY29uc3QgTnVtYmVyUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwibnVtYmVyXCIpLFxuICAgIC4uLlByZWNpc2lvblNjYWxlRmllbGRzLFxuICAgIG51bWJlclR5cGU6IHouZW51bShbXCJyZWFsXCIsIFwiZG91YmxlIHByZWNpc2lvblwiLCBcIm51bWVyaWNcIl0pLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcbmNvbnN0IE51bWJlckFycmF5UHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwibnVtYmVyW11cIiksXG4gICAgLi4uUHJlY2lzaW9uU2NhbGVGaWVsZHMsXG4gICAgbnVtYmVyVHlwZTogei5lbnVtKFtcInJlYWxcIiwgXCJkb3VibGUgcHJlY2lzaW9uXCIsIFwibnVtZXJpY1wiXSkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBOdW1lcmljUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwibnVtZXJpY1wiKSxcbiAgICAuLi5QcmVjaXNpb25TY2FsZUZpZWxkcyxcbiAgfSlcbiAgLnN0cmljdCgpO1xuY29uc3QgTnVtZXJpY0FycmF5UHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVByb3BGaWVsZHMsXG4gICAgdHlwZTogei5saXRlcmFsKFwibnVtZXJpY1tdXCIpLFxuICAgIC4uLlByZWNpc2lvblNjYWxlRmllbGRzLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IEpzb25Qcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUHJvcEZpZWxkcyxcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJqc29uXCIpLFxuICAgIGlkOiB6LnN0cmluZygpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IFZpcnR1YWxQcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUHJvcEZpZWxkcyxcbiAgICB0eXBlOiB6LmxpdGVyYWwoXCJ2aXJ0dWFsXCIpLFxuICAgIGlkOiB6LnN0cmluZygpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmNvbnN0IFZlY3RvclByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcInZlY3RvclwiKSxcbiAgICBkaW1lbnNpb25zOiB6Lm51bWJlcigpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5jb25zdCBWZWN0b3JBcnJheVByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VQcm9wRmllbGRzLFxuICAgIHR5cGU6IHoubGl0ZXJhbChcInZlY3RvcltdXCIpLFxuICAgIGRpbWVuc2lvbnM6IHoubnVtYmVyKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuLy8gUmVsYXRpb24g7YOA7J6F7J2AIHJlbGF0aW9uVHlwZeyXkCDrlLDrnbwg7IS467aE7ZmUXG5jb25zdCBCYXNlUmVsYXRpb25GaWVsZHMgPSB7XG4gIC4uLkJhc2VQcm9wRmllbGRzLFxuICB0eXBlOiB6LmxpdGVyYWwoXCJyZWxhdGlvblwiKSxcbiAgd2l0aDogei5zdHJpbmcoKSxcbn07XG5cbi8vIFJlbGF0aW9uT24g7YOA7J6FXG5jb25zdCBSZWxhdGlvbk9uU2NoZW1hID0gei5lbnVtKFtcIkNBU0NBREVcIiwgXCJTRVQgTlVMTFwiLCBcIk5PIEFDVElPTlwiLCBcIlNFVCBERUZBVUxUXCIsIFwiUkVTVFJJQ1RcIl0pO1xuXG5jb25zdCBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3BTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIC4uLkJhc2VSZWxhdGlvbkZpZWxkcyxcbiAgICByZWxhdGlvblR5cGU6IHoubGl0ZXJhbChcIkJlbG9uZ3NUb09uZVwiKSxcbiAgICBjdXN0b21Kb2luQ2xhdXNlOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgdXNlQ29uc3RyYWludDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBvblVwZGF0ZTogUmVsYXRpb25PblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIG9uRGVsZXRlOiBSZWxhdGlvbk9uU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuY29uc3QgSGFzTWFueVJlbGF0aW9uUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVJlbGF0aW9uRmllbGRzLFxuICAgIHJlbGF0aW9uVHlwZTogei5saXRlcmFsKFwiSGFzTWFueVwiKSxcbiAgICBqb2luQ29sdW1uOiB6LnN0cmluZygpLFxuICAgIGZyb21Db2x1bW46IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBNYW55VG9NYW55UmVsYXRpb25Qcm9wU2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICAuLi5CYXNlUmVsYXRpb25GaWVsZHMsXG4gICAgcmVsYXRpb25UeXBlOiB6LmxpdGVyYWwoXCJNYW55VG9NYW55XCIpLFxuICAgIGpvaW5UYWJsZTogei5zdHJpbmcoKSxcbiAgICBvblVwZGF0ZTogUmVsYXRpb25PblNjaGVtYSxcbiAgICBvbkRlbGV0ZTogUmVsYXRpb25PblNjaGVtYSxcbiAgfSlcbiAgLnN0cmljdCgpO1xuXG5jb25zdCBPbmVUb09uZVJlbGF0aW9uUHJvcFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgLi4uQmFzZVJlbGF0aW9uRmllbGRzLFxuICAgIHJlbGF0aW9uVHlwZTogei5saXRlcmFsKFwiT25lVG9PbmVcIiksXG4gICAgY3VzdG9tSm9pbkNsYXVzZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGhhc0pvaW5Db2x1bW46IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gICAgdXNlQ29uc3RyYWludDogei5ib29sZWFuKCkub3B0aW9uYWwoKSxcbiAgICBvblVwZGF0ZTogUmVsYXRpb25PblNjaGVtYS5vcHRpb25hbCgpLFxuICAgIG9uRGVsZXRlOiBSZWxhdGlvbk9uU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuY29uc3QgUmVsYXRpb25UeXBlcyA9IFtcIkJlbG9uZ3NUb09uZVwiLCBcIkhhc01hbnlcIiwgXCJNYW55VG9NYW55XCIsIFwiT25lVG9PbmVcIl0gYXMgY29uc3Q7XG5leHBvcnQgY29uc3QgUmVsYXRpb25Qcm9wU2NoZW1hID0gei5kaXNjcmltaW5hdGVkVW5pb24oXG4gIFwicmVsYXRpb25UeXBlXCIsXG4gIFtcbiAgICBCZWxvbmdzVG9PbmVSZWxhdGlvblByb3BTY2hlbWEsXG4gICAgSGFzTWFueVJlbGF0aW9uUHJvcFNjaGVtYSxcbiAgICBNYW55VG9NYW55UmVsYXRpb25Qcm9wU2NoZW1hLFxuICAgIE9uZVRvT25lUmVsYXRpb25Qcm9wU2NoZW1hLFxuICBdLFxuICB7XG4gICAgZXJyb3I6IChpc3MpID0+XG4gICAgICBgcmVsYXRpb25UeXBl7J2AICR7UmVsYXRpb25UeXBlcy5tYXAoKHQpID0+IGAnJHt0fSdgKS5qb2luKFwiLCBcIil9IOykkSDtlZjrgpjsl6zslbwg7ZWp64uI64ukLiDsnoXroKXqsJI6IFwiJHsoaXNzLmlucHV0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8ucmVsYXRpb25UeXBlfVwiYCxcbiAgfSxcbik7XG5cbmNvbnN0IE5vcm1hbFByb3BUeXBlcyA9IFtcbiAgXCJpbnRlZ2VyXCIsXG4gIFwiaW50ZWdlcltdXCIsXG4gIFwiYmlnSW50ZWdlclwiLFxuICBcImJpZ0ludGVnZXJbXVwiLFxuICBcInN0cmluZ1wiLFxuICBcInN0cmluZ1tdXCIsXG4gIFwiZW51bVwiLFxuICBcImVudW1bXVwiLFxuICBcIm51bWJlclwiLFxuICBcIm51bWJlcltdXCIsXG4gIFwibnVtZXJpY1wiLFxuICBcIm51bWVyaWNbXVwiLFxuICBcImJvb2xlYW5cIixcbiAgXCJib29sZWFuW11cIixcbiAgXCJkYXRlXCIsXG4gIFwiZGF0ZVtdXCIsXG4gIFwidXVpZFwiLFxuICBcInV1aWRbXVwiLFxuICBcImpzb25cIixcbiAgXCJ2aXJ0dWFsXCIsXG4gIFwidmVjdG9yXCIsXG4gIFwidmVjdG9yW11cIixcbl0gYXMgY29uc3Q7XG5cbi8vIFZJUlRVQUwgR2VuZXJhdGVkIENvbHVtbuyXkOyEnCDsgqzsmqkg67aI6rCA64ql7ZWcIO2DgOyeheuTpFxuY29uc3QgVmlydHVhbEdlbmVyYXRlZERpc2FsbG93ZWRUeXBlcyA9IFtcbiAgXCJqc29uXCIsXG4gIFwidmVjdG9yXCIsXG4gIFwidmVjdG9yW11cIixcbiAgXCJzdHJpbmdbXVwiLFxuICBcImludGVnZXJbXVwiLFxuICBcImJpZ0ludGVnZXJbXVwiLFxuICBcImJvb2xlYW5bXVwiLFxuICBcImRhdGVbXVwiLFxuICBcInV1aWRbXVwiLFxuICBcIm51bWJlcltdXCIsXG4gIFwibnVtZXJpY1tdXCIsXG4gIFwiZW51bVtdXCIsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3QgTm9ybWFsUHJvcFNjaGVtYSA9IHpcbiAgLmRpc2NyaW1pbmF0ZWRVbmlvbihcbiAgICBcInR5cGVcIixcbiAgICBbXG4gICAgICBCYXNlUHJvcEZpZWxkc1dpdGhvdXRBZGRpdGlvbmFsLFxuICAgICAgU3RyaW5nUHJvcFNjaGVtYSxcbiAgICAgIFN0cmluZ0FycmF5UHJvcFNjaGVtYSxcbiAgICAgIEVudW1Qcm9wU2NoZW1hLFxuICAgICAgRW51bUFycmF5UHJvcFNjaGVtYSxcbiAgICAgIE51bWJlclByb3BTY2hlbWEsXG4gICAgICBOdW1iZXJBcnJheVByb3BTY2hlbWEsXG4gICAgICBOdW1lcmljUHJvcFNjaGVtYSxcbiAgICAgIE51bWVyaWNBcnJheVByb3BTY2hlbWEsXG4gICAgICBKc29uUHJvcFNjaGVtYSxcbiAgICAgIFZpcnR1YWxQcm9wU2NoZW1hLFxuICAgICAgVmVjdG9yUHJvcFNjaGVtYSxcbiAgICAgIFZlY3RvckFycmF5UHJvcFNjaGVtYSxcbiAgICBdLFxuICAgIHtcbiAgICAgIGVycm9yOiAoaXNzKSA9PlxuICAgICAgICBgdHlwZeydgCAke05vcm1hbFByb3BUeXBlcy5tYXAoKHQpID0+IGAnJHt0fSdgKS5qb2luKFwiLCBcIil9IOykkSDtlZjrgpjsl6zslbwg7ZWp64uI64ukLiDsnoXroKXqsJI6IFwiJHsoaXNzLmlucHV0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8udHlwZX1cImAsXG4gICAgfSxcbiAgKVxuICAuc3VwZXJSZWZpbmUoKGRhdGEsIGN0eCkgPT4ge1xuICAgIGlmICghZGF0YS5nZW5lcmF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBkYkRlZmF1bHTsmYAgZ2VuZXJhdGVkIOuPmeyLnCDsgqzsmqkg67aI6rCAXG4gICAgaWYgKGRhdGEuZGJEZWZhdWx0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGN0eC5hZGRJc3N1ZSh7XG4gICAgICAgIGNvZGU6IFwiY3VzdG9tXCIsXG4gICAgICAgIG1lc3NhZ2U6IFwiZGJEZWZhdWx07JmAIGdlbmVyYXRlZOuKlCDtlajqu5gg7IKs7Jqp7ZWgIOyImCDsl4bsirXri4jri6RcIixcbiAgICAgICAgcGF0aDogW1wiZ2VuZXJhdGVkXCJdLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gdmlydHVhbCDtg4DsnoXsnYAgZ2VuZXJhdGVkIOu2iOqwgFxuICAgIGlmIChkYXRhLnR5cGUgPT09IFwidmlydHVhbFwiKSB7XG4gICAgICBjdHguYWRkSXNzdWUoe1xuICAgICAgICBjb2RlOiBcImN1c3RvbVwiLFxuICAgICAgICBtZXNzYWdlOiBcInZpcnR1YWwg7YOA7J6F7J2AIGdlbmVyYXRlZCBjb2x1bW7snYQg7KeA7JuQ7ZWY7KeAIOyViuyKteuLiOuLpFwiLFxuICAgICAgICBwYXRoOiBbXCJnZW5lcmF0ZWRcIl0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBWSVJUVUFMIEdlbmVyYXRlZCBDb2x1bW4g7YOA7J6FIOygnO2VnCDqsoDspp1cbiAgICBpZiAoZGF0YS5nZW5lcmF0ZWQudHlwZSA9PT0gXCJWSVJUVUFMXCIpIHtcbiAgICAgIGlmICgoVmlydHVhbEdlbmVyYXRlZERpc2FsbG93ZWRUeXBlcyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXMoZGF0YS50eXBlKSkge1xuICAgICAgICBjdHguYWRkSXNzdWUoe1xuICAgICAgICAgIGNvZGU6IFwiY3VzdG9tXCIsXG4gICAgICAgICAgbWVzc2FnZTogYFZJUlRVQUwgZ2VuZXJhdGVkIGNvbHVtbuydgCAke2RhdGEudHlwZX0g7YOA7J6F7J2EIOyngOybkO2VmOyngCDslYrsirXri4jri6QuIFNUT1JFROulvCDsgqzsmqntlZjshLjsmpQuYCxcbiAgICAgICAgICBwYXRoOiBbXCJnZW5lcmF0ZWRcIiwgXCJ0eXBlXCJdLFxuICAgICAgICAgIGZhdGFsOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG5jb25zdCBBbGxQcm9wVHlwZXMgPSBbLi4uTm9ybWFsUHJvcFR5cGVzLCBcInJlbGF0aW9uXCJdIGFzIGNvbnN0O1xuY29uc3QgRW50aXR5UHJvcFNjaGVtYSA9IHouZGlzY3JpbWluYXRlZFVuaW9uKFwidHlwZVwiLCBbTm9ybWFsUHJvcFNjaGVtYSwgUmVsYXRpb25Qcm9wU2NoZW1hXSwge1xuICBlcnJvcjogKGlzcykgPT5cbiAgICBgdHlwZeydgCAke0FsbFByb3BUeXBlcy5tYXAoKHQpID0+IGAnJHt0fSdgKS5qb2luKFwiLCBcIil9IOykkSDtlZjrgpjsl6zslbwg7ZWp64uI64ukLiDsnoXroKXqsJI6IFwiJHsoaXNzLmlucHV0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KT8udHlwZX1cImAsXG59KTtcblxuY29uc3QgRW50aXR5SW5kZXhDb2x1bW5TY2hlbWEgPSB6Lm9iamVjdCh7XG4gIG5hbWU6IHouc3RyaW5nKCksXG4gIG51bGxzRmlyc3Q6IHouYm9vbGVhbigpLm9wdGlvbmFsKCksXG4gIHNvcnRPcmRlcjogei5lbnVtKFtcIkFTQ1wiLCBcIkRFU0NcIl0pLm9wdGlvbmFsKCksXG4gIHZlY3Rvck9wczogei5lbnVtKFtcInZlY3Rvcl9jb3NpbmVfb3BzXCIsIFwidmVjdG9yX2lwX29wc1wiLCBcInZlY3Rvcl9sMl9vcHNcIl0pLm9wdGlvbmFsKCksXG59KTtcblxuLy8gRW50aXR5SW5kZXgg7Iqk7YKk66eIIOygleydmFxuY29uc3QgRW50aXR5SW5kZXhTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHouZW51bShbXCJpbmRleFwiLCBcInVuaXF1ZVwiLCBcImZ1bGx0ZXh0XCIsIFwiaG5zd1wiLCBcIml2ZmZsYXRcIl0pLFxuICAgIGNvbHVtbnM6IHouYXJyYXkoRW50aXR5SW5kZXhDb2x1bW5TY2hlbWEpLFxuICAgIG5hbWU6IHouc3RyaW5nKCkubWluKDEpLm1heCg2MyksXG4gICAgcGFyc2VyOiB6LmVudW0oW1wiYnVpbHQtaW5cIiwgXCJuZ3JhbVwiXSkub3B0aW9uYWwoKSxcbiAgICBudWxsc05vdERpc3RpbmN0OiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxuICAgIG06IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICBlZkNvbnN0cnVjdGlvbjogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIGxpc3RzOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5zdHJpY3QoKTtcblxuZXhwb3J0IGNvbnN0IEVudGl0eUpzb25TY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGlkOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiUGFzY2FsQ2FzZeuhnCDrkJwgRW50aXR5IElEXCIpLFxuICAgIHRpdGxlOiB6LnN0cmluZygpLmRlc2NyaWJlKFwiRW50aXR5IOydtOumhFwiKSxcbiAgICB0YWJsZTogei5zdHJpbmcoKS5kZXNjcmliZShcInNuYWtlX2Nhc2XroZwg65CcIO2FjOydtOu4lOuqhVwiKSxcbiAgICBwYXJlbnRJZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwi67aA66qoIEVudGl0eSBJRFwiKSxcbiAgICBwcm9wczogei5hcnJheShFbnRpdHlQcm9wU2NoZW1hKSxcbiAgICBpbmRleGVzOiB6LmFycmF5KEVudGl0eUluZGV4U2NoZW1hKSxcbiAgICBzdWJzZXRzOiB6LnJlY29yZCh6LnN0cmluZygpLCB6LmFycmF5KHouc3RyaW5nKCkpKSxcbiAgICBlbnVtczogei5yZWNvcmQoei5zdHJpbmcoKSwgei5yZWNvcmQoei5zdHJpbmcoKSwgei5zdHJpbmcoKSkpLFxuICB9KVxuICAuc3RyaWN0KCk7XG5cbmV4cG9ydCBjb25zdCBUZW1wbGF0ZU9wdGlvbnMgPSB6Lm9iamVjdCh7XG4gIGVudGl0eTogRW50aXR5SnNvblNjaGVtYS5vbWl0KHsgaWQ6IHRydWUgfSlcbiAgICAuZXh0ZW5kKHtcbiAgICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICAgIH0pXG4gICAgLnBhcnRpYWwoe1xuICAgICAgdGFibGU6IHRydWUsXG4gICAgICBwcm9wczogdHJ1ZSxcbiAgICAgIGluZGV4ZXM6IHRydWUsXG4gICAgICBzdWJzZXRzOiB0cnVlLFxuICAgICAgZW51bXM6IHRydWUsXG4gICAgfSksXG4gIGluaXRfdHlwZXM6IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIGdlbmVyYXRlZDogei5vYmplY3Qoe30pLFxuICBnZW5lcmF0ZWRfc3NvOiB6Lm9iamVjdCh7fSksXG4gIGdlbmVyYXRlZF9odHRwOiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBtb2RlbDogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICAgIGRlZmF1bHRTZWFyY2hGaWVsZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGRlZmF1bHRPcmRlckJ5OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIH0pLFxuICBtb2RlbF90ZXN0OiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICBicmlkZ2U6IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHNlcnZpY2U6IHoub2JqZWN0KHtcbiAgICBuYW1lc1JlY29yZDogei5vYmplY3Qoe1xuICAgICAgZnM6IHouc3RyaW5nKCksXG4gICAgICBmc1BsdXJhbDogei5zdHJpbmcoKSxcbiAgICAgIGNhbWVsOiB6LnN0cmluZygpLFxuICAgICAgY2FtZWxQbHVyYWw6IHouc3RyaW5nKCksXG4gICAgICBjYXBpdGFsOiB6LnN0cmluZygpLFxuICAgICAgY2FwaXRhbFBsdXJhbDogei5zdHJpbmcoKSxcbiAgICAgIHVwcGVyOiB6LnN0cmluZygpLFxuICAgICAgY29uc3RhbnQ6IHouc3RyaW5nKCksXG4gICAgfSksXG4gICAgbW9kZWxUc1BhdGg6IHouc3RyaW5nKCksXG4gIH0pLFxuICB2aWV3X2xpc3Q6IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgICBleHRyYTogei51bmtub3duKCksXG4gIH0pLFxuICB2aWV3X2xpc3RfY29sdW1uczogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICAgIGNvbHVtbnM6IHpcbiAgICAgIC5vYmplY3Qoe1xuICAgICAgICBuYW1lOiB6LnN0cmluZygpLFxuICAgICAgICBsYWJlbDogei5zdHJpbmcoKSxcbiAgICAgICAgdGM6IHouc3RyaW5nKCksXG4gICAgICB9KVxuICAgICAgLmFycmF5KCksXG4gICAgY29sdW1uSW1wb3J0czogei5zdHJpbmcoKSxcbiAgfSksXG4gIHZpZXdfc2VhcmNoX2lucHV0OiB6Lm9iamVjdCh7XG4gICAgZW50aXR5SWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICB2aWV3X2Zvcm06IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHZpZXdfaWRfYWxsX3NlbGVjdDogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICB9KSxcbiAgdmlld19pZF9hc3luY19zZWxlY3Q6IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgICB0ZXh0RmllbGQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICB2aWV3X2VudW1zX3NlbGVjdDogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICAgIGVudW1JZDogei5zdHJpbmcoKSxcbiAgfSksXG4gIHZpZXdfZW51bXNfZHJvcGRvd246IHoub2JqZWN0KHtcbiAgICBlbnRpdHlJZDogei5zdHJpbmcoKSxcbiAgICBlbnVtSWQ6IHouc3RyaW5nKCksXG4gIH0pLFxuICB2aWV3X2VudW1zX2J1dHRvbnNldDogei5vYmplY3Qoe1xuICAgIGVudGl0eUlkOiB6LnN0cmluZygpLFxuICAgIGVudW1JZDogei5zdHJpbmcoKSxcbiAgfSksXG59KTtcbmV4cG9ydCB0eXBlIFRlbXBsYXRlT3B0aW9ucyA9IHouaW5mZXI8dHlwZW9mIFRlbXBsYXRlT3B0aW9ucz47XG5cbmV4cG9ydCBjb25zdCBUZW1wbGF0ZUtleSA9IHouZW51bShbXG4gIFwiZW50aXR5XCIsXG4gIFwiaW5pdF90eXBlc1wiLFxuICBcImdlbmVyYXRlZFwiLFxuICBcImdlbmVyYXRlZF9zc29cIixcbiAgXCJnZW5lcmF0ZWRfaHR0cFwiLFxuICBcIm1vZGVsXCIsXG4gIFwibW9kZWxfdGVzdFwiLFxuICBcImJyaWRnZVwiLFxuICBcInNlcnZpY2VcIixcbiAgXCJ2aWV3X2xpc3RcIixcbiAgXCJ2aWV3X2xpc3RfY29sdW1uc1wiLFxuICBcInZpZXdfc2VhcmNoX2lucHV0XCIsXG4gIFwidmlld19mb3JtXCIsXG4gIFwidmlld19pZF9hbGxfc2VsZWN0XCIsXG4gIFwidmlld19pZF9hc3luY19zZWxlY3RcIixcbiAgXCJ2aWV3X2VudW1zX3NlbGVjdFwiLFxuICBcInZpZXdfZW51bXNfZHJvcGRvd25cIixcbiAgXCJ2aWV3X2VudW1zX2J1dHRvbnNldFwiLFxuXSk7XG5leHBvcnQgdHlwZSBUZW1wbGF0ZUtleSA9IHouaW5mZXI8dHlwZW9mIFRlbXBsYXRlS2V5PjtcblxuZXhwb3J0IGNvbnN0IEdlbmVyYXRlT3B0aW9ucyA9IHoub2JqZWN0KHtcbiAgb3ZlcndyaXRlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLFxufSk7XG5leHBvcnQgdHlwZSBHZW5lcmF0ZU9wdGlvbnMgPSB6LmluZmVyPHR5cGVvZiBHZW5lcmF0ZU9wdGlvbnM+O1xuXG5leHBvcnQgY29uc3QgUGF0aEFuZENvZGUgPSB6Lm9iamVjdCh7XG4gIHBhdGg6IHouc3RyaW5nKCksXG4gIGNvZGU6IHouc3RyaW5nKCksXG59KTtcbmV4cG9ydCB0eXBlIFBhdGhBbmRDb2RlID0gei5pbmZlcjx0eXBlb2YgUGF0aEFuZENvZGU+O1xuXG5leHBvcnQgdHlwZSBGaXh0dXJlU2VhcmNoT3B0aW9ucyA9IHtcbiAgZW50aXR5SWQ6IHN0cmluZztcbiAgZmllbGQ6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbiAgc2VhcmNoVHlwZTogXCJlcXVhbHNcIiB8IFwibGlrZVwiO1xufTtcblxudHlwZSBDb2x1bW5WYWx1ZSA9IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4gfCBEYXRlIHwgbnVsbDtcbmV4cG9ydCB0eXBlIEZpeHR1cmVSZWNvcmQgPSB7XG4gIGZpeHR1cmVJZDogc3RyaW5nO1xuICBlbnRpdHlJZDogc3RyaW5nO1xuICBpZDogbnVtYmVyO1xuICBjb2x1bW5zOiB7XG4gICAgW2tleTogc3RyaW5nXToge1xuICAgICAgcHJvcDogRW50aXR5UHJvcDtcbiAgICAgIHZhbHVlOiBDb2x1bW5WYWx1ZSB8IENvbHVtblZhbHVlW107XG4gICAgfTtcbiAgfTtcbiAgZmV0Y2hlZFJlY29yZHM6IHN0cmluZ1tdO1xuICBiZWxvbmdzUmVjb3Jkczogc3RyaW5nW107XG4gIHRhcmdldD86IEZpeHR1cmVSZWNvcmQ7IC8vIEltcG9ydCDrjIDsg4EgREIg66CI7L2U65OcKGlk6rCAIOqwmeydgClcbiAgdW5pcXVlPzogRml4dHVyZVJlY29yZDsgLy8gSW1wb3J0IOuMgOyDgSBEQiDroIjsvZTrk5wodW5pcXVlIGtleeqwgCDqsJnsnYApXG4gIG92ZXJyaWRlPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIEZpeHR1cmVJbXBvcnRSZXN1bHQgPSB7XG4gIGVudGl0eUlkOiBzdHJpbmc7XG4gIGRhdGE6IHtcbiAgICBba2V5OiBzdHJpbmddOiBDb2x1bW5WYWx1ZTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFJlbGF0aW9uTm9kZSA9IHtcbiAgZml4dHVyZUlkOiBzdHJpbmc7XG4gIGVudGl0eUlkOiBzdHJpbmc7XG4gIHJlbGF0ZWQ6IFNldDxzdHJpbmc+O1xufTtcblxuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0VtcHR5SW50ZXJmYWNlOiBzb25hbXUuZ2VuZXJhdGVkLnNzbyDsl5DshJwg7ZmV7J6l7J2EIOychO2VtCDspIDruYTrkJwg67mIIOyduO2EsO2OmOydtOyKpFxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZVNjaGVtYUV4dGVuZCB7fVxuLy8gYmlvbWUtaWdub3JlIGxpbnQvc3VzcGljaW91cy9ub0VtcHR5SW50ZXJmYWNlOiBzb25hbXUuZ2VuZXJhdGVkLnNzbyDsl5DshJwg7ZmV7J6l7J2EIOychO2VtCDspIDruYTrkJwg67mIIOyduO2EsO2OmOydtOyKpFxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUZvcmVpZ25LZXlzIHt9XG5leHBvcnQgdHlwZSBNYW55VG9NYW55QmFzZVNjaGVtYTxGcm9tSWRLZXkgZXh0ZW5kcyBzdHJpbmcsIFRvSWRLZXkgZXh0ZW5kcyBzdHJpbmc+ID0ge1xuICBpZDogbnVtYmVyO1xufSAmIHtcbiAgW0sgaW4gYCR7RnJvbUlkS2V5fV9pZGBdOiBudW1iZXI7XG59ICYge1xuICBbSyBpbiBgJHtUb0lkS2V5fV9pZGBdOiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBTb25hbXVGYXN0aWZ5Q29uZmlnID0ge1xuICBjb250ZXh0UHJvdmlkZXI6IChcbiAgICBkZWZhdWx0Q29udGV4dDogUGljazxDb250ZXh0LCBcInJlcXVlc3RcIiB8IFwicmVwbHlcIiB8IFwiaGVhZGVyc1wiIHwgXCJjcmVhdGVTU0VcIiB8IFwibmFpdGVTdG9yZVwiPiAmXG4gICAgICBBdXRoQ29udGV4dCxcbiAgICByZXF1ZXN0OiBGYXN0aWZ5UmVxdWVzdCxcbiAgICByZXBseTogRmFzdGlmeVJlcGx5LFxuICApID0+IENvbnRleHQgfCBQcm9taXNlPENvbnRleHQ+O1xuICBndWFyZEhhbmRsZXI6IChcbiAgICBndWFyZDogR3VhcmRLZXksXG4gICAgcmVxdWVzdDogRmFzdGlmeVJlcXVlc3QsXG4gICAgYXBpOiB7XG4gICAgICB0eXBlUGFyYW1ldGVyczogQXBpUGFyYW1UeXBlLlR5cGVQYXJhbVtdO1xuICAgICAgcGFyYW1ldGVyczogQXBpUGFyYW1bXTtcbiAgICAgIHJldHVyblR5cGU6IEFwaVBhcmFtVHlwZTtcbiAgICAgIG1vZGVsTmFtZTogc3RyaW5nO1xuICAgICAgbWV0aG9kTmFtZTogc3RyaW5nO1xuICAgICAgcGF0aDogc3RyaW5nO1xuICAgICAgb3B0aW9uczogQXBpRGVjb3JhdG9yT3B0aW9ucztcbiAgICB9LFxuICApID0+IHZvaWQ7XG59O1xuIl0sIm5hbWVzIjpbInoiLCJ6QXJyYXlhYmxlIiwic2hhcGUiLCJ1bmlvbiIsImFycmF5IiwiaXNJbnRlZ2VyU2luZ2xlUHJvcCIsInAiLCJ0eXBlIiwiaXNJbnRlZ2VyQXJyYXlQcm9wIiwiaXNJbnRlZ2VyUHJvcCIsImlzQmlnSW50ZWdlclNpbmdsZVByb3AiLCJpc0JpZ0ludGVnZXJBcnJheVByb3AiLCJpc0JpZ0ludGVnZXJQcm9wIiwiaXNTdHJpbmdTaW5nbGVQcm9wIiwiaXNTdHJpbmdBcnJheVByb3AiLCJpc1N0cmluZ1Byb3AiLCJpc0VudW1TaW5nbGVQcm9wIiwiaXNFbnVtQXJyYXlQcm9wIiwiaXNFbnVtUHJvcCIsImlzTnVtYmVyU2luZ2xlUHJvcCIsImlzTnVtYmVyQXJyYXlQcm9wIiwiaXNOdW1iZXJQcm9wIiwiaXNOdW1lcmljU2luZ2xlUHJvcCIsImlzTnVtZXJpY0FycmF5UHJvcCIsImlzTnVtZXJpY1Byb3AiLCJpc0Jvb2xlYW5TaW5nbGVQcm9wIiwiaXNCb29sZWFuQXJyYXlQcm9wIiwiaXNCb29sZWFuUHJvcCIsImlzRGF0ZVNpbmdsZVByb3AiLCJpc0RhdGVBcnJheVByb3AiLCJpc0RhdGVQcm9wIiwiaXNVdWlkU2luZ2xlUHJvcCIsImlzVXVpZEFycmF5UHJvcCIsImlzVXVpZFByb3AiLCJpc0pzb25Qcm9wIiwiaXNWaXJ0dWFsUHJvcCIsImlzVmVjdG9yU2luZ2xlUHJvcCIsImlzVmVjdG9yQXJyYXlQcm9wIiwiaXNWZWN0b3JQcm9wIiwiaXNSZWxhdGlvblByb3AiLCJpc09uZVRvT25lUmVsYXRpb25Qcm9wIiwicmVsYXRpb25UeXBlIiwiaXNCZWxvbmdzVG9PbmVSZWxhdGlvblByb3AiLCJpc0hhc01hbnlSZWxhdGlvblByb3AiLCJpc01hbnlUb01hbnlSZWxhdGlvblByb3AiLCJpc0N1c3RvbUpvaW5DbGF1c2UiLCJjdXN0b20iLCJTb25hbXVRdWVyeU1vZGUiLCJlbnVtIiwiaXNLbmV4RXJyb3IiLCJlIiwiY29kZSIsInNxbE1lc3NhZ2UiLCJzcWxTdGF0ZSIsIkFwaVBhcmFtVHlwZSIsImlzT2JqZWN0IiwidiIsInQiLCJpc1VuaW9uIiwiaXNJbnRlcnNlY3Rpb24iLCJpc1N0cmluZ0xpdGVyYWwiLCJpc051bWVyaWNMaXRlcmFsIiwiaXNBcnJheSIsImlzUmVmIiwiaXNJbmRleGVkQWNjZXNzIiwiaXNUdXBsZVR5cGUiLCJpc1BpY2siLCJpZCIsImlzT21pdCIsImlzUGFydGlhbCIsImlzUHJvbWlzZSIsImlzQ29udGV4dCIsImlzUmVmS25leCIsImlzVHlwZVBhcmFtIiwiUmVuZGVyaW5nTm9kZSIsImFueSIsIkdlbmVyYXRlZENvbHVtblNjaGVtYSIsIm9iamVjdCIsImV4cHJlc3Npb24iLCJzdHJpbmciLCJCYXNlUHJvcEZpZWxkcyIsIm5hbWUiLCJkZXNjIiwib3B0aW9uYWwiLCJudWxsYWJsZSIsImJvb2xlYW4iLCJ0b0ZpbHRlciIsImRlZmF1bHQiLCJkYkRlZmF1bHQiLCJudW1iZXIiLCJnZW5lcmF0ZWQiLCJCYXNlUHJvcEZpZWxkc1dpdGhvdXRBZGRpdGlvbmFsIiwibGl0ZXJhbCIsInN0cmljdCIsIlByZWNpc2lvblNjYWxlRmllbGRzIiwicHJlY2lzaW9uIiwic2NhbGUiLCJTdHJpbmdQcm9wU2NoZW1hIiwibGVuZ3RoIiwiU3RyaW5nQXJyYXlQcm9wU2NoZW1hIiwiRW51bVByb3BTY2hlbWEiLCJFbnVtQXJyYXlQcm9wU2NoZW1hIiwiTnVtYmVyUHJvcFNjaGVtYSIsIm51bWJlclR5cGUiLCJOdW1iZXJBcnJheVByb3BTY2hlbWEiLCJOdW1lcmljUHJvcFNjaGVtYSIsIk51bWVyaWNBcnJheVByb3BTY2hlbWEiLCJKc29uUHJvcFNjaGVtYSIsIlZpcnR1YWxQcm9wU2NoZW1hIiwiVmVjdG9yUHJvcFNjaGVtYSIsImRpbWVuc2lvbnMiLCJWZWN0b3JBcnJheVByb3BTY2hlbWEiLCJCYXNlUmVsYXRpb25GaWVsZHMiLCJ3aXRoIiwiUmVsYXRpb25PblNjaGVtYSIsIkJlbG9uZ3NUb09uZVJlbGF0aW9uUHJvcFNjaGVtYSIsImN1c3RvbUpvaW5DbGF1c2UiLCJ1c2VDb25zdHJhaW50Iiwib25VcGRhdGUiLCJvbkRlbGV0ZSIsIkhhc01hbnlSZWxhdGlvblByb3BTY2hlbWEiLCJqb2luQ29sdW1uIiwiZnJvbUNvbHVtbiIsIk1hbnlUb01hbnlSZWxhdGlvblByb3BTY2hlbWEiLCJqb2luVGFibGUiLCJPbmVUb09uZVJlbGF0aW9uUHJvcFNjaGVtYSIsImhhc0pvaW5Db2x1bW4iLCJSZWxhdGlvblR5cGVzIiwiUmVsYXRpb25Qcm9wU2NoZW1hIiwiZGlzY3JpbWluYXRlZFVuaW9uIiwiZXJyb3IiLCJpc3MiLCJtYXAiLCJqb2luIiwiaW5wdXQiLCJOb3JtYWxQcm9wVHlwZXMiLCJWaXJ0dWFsR2VuZXJhdGVkRGlzYWxsb3dlZFR5cGVzIiwiTm9ybWFsUHJvcFNjaGVtYSIsInN1cGVyUmVmaW5lIiwiZGF0YSIsImN0eCIsInVuZGVmaW5lZCIsImFkZElzc3VlIiwibWVzc2FnZSIsInBhdGgiLCJpbmNsdWRlcyIsImZhdGFsIiwiQWxsUHJvcFR5cGVzIiwiRW50aXR5UHJvcFNjaGVtYSIsIkVudGl0eUluZGV4Q29sdW1uU2NoZW1hIiwibnVsbHNGaXJzdCIsInNvcnRPcmRlciIsInZlY3Rvck9wcyIsIkVudGl0eUluZGV4U2NoZW1hIiwiY29sdW1ucyIsIm1pbiIsIm1heCIsInBhcnNlciIsIm51bGxzTm90RGlzdGluY3QiLCJtIiwiZWZDb25zdHJ1Y3Rpb24iLCJsaXN0cyIsIkVudGl0eUpzb25TY2hlbWEiLCJkZXNjcmliZSIsInRpdGxlIiwidGFibGUiLCJwYXJlbnRJZCIsInByb3BzIiwiaW5kZXhlcyIsInN1YnNldHMiLCJyZWNvcmQiLCJlbnVtcyIsIlRlbXBsYXRlT3B0aW9ucyIsImVudGl0eSIsIm9taXQiLCJleHRlbmQiLCJlbnRpdHlJZCIsInBhcnRpYWwiLCJpbml0X3R5cGVzIiwiZ2VuZXJhdGVkX3NzbyIsImdlbmVyYXRlZF9odHRwIiwibW9kZWwiLCJkZWZhdWx0U2VhcmNoRmllbGQiLCJkZWZhdWx0T3JkZXJCeSIsIm1vZGVsX3Rlc3QiLCJicmlkZ2UiLCJzZXJ2aWNlIiwibmFtZXNSZWNvcmQiLCJmcyIsImZzUGx1cmFsIiwiY2FtZWwiLCJjYW1lbFBsdXJhbCIsImNhcGl0YWwiLCJjYXBpdGFsUGx1cmFsIiwidXBwZXIiLCJjb25zdGFudCIsIm1vZGVsVHNQYXRoIiwidmlld19saXN0IiwiZXh0cmEiLCJ1bmtub3duIiwidmlld19saXN0X2NvbHVtbnMiLCJsYWJlbCIsInRjIiwiY29sdW1uSW1wb3J0cyIsInZpZXdfc2VhcmNoX2lucHV0Iiwidmlld19mb3JtIiwidmlld19pZF9hbGxfc2VsZWN0Iiwidmlld19pZF9hc3luY19zZWxlY3QiLCJ0ZXh0RmllbGQiLCJ2aWV3X2VudW1zX3NlbGVjdCIsImVudW1JZCIsInZpZXdfZW51bXNfZHJvcGRvd24iLCJ2aWV3X2VudW1zX2J1dHRvbnNldCIsIlRlbXBsYXRlS2V5IiwiR2VuZXJhdGVPcHRpb25zIiwib3ZlcndyaXRlIiwiUGF0aEFuZENvZGUiXSwibWFwcGluZ3MiOiJBQUNBLFNBQVNBLENBQUMsUUFBUSxNQUFNO0FBSXhCOztBQUVBLEdBQ0EsT0FBTyxTQUFTQyxXQUFtQ0MsS0FBUTtJQUN6RCxPQUFPRixFQUFFRyxLQUFLLENBQUM7UUFBQ0Q7UUFBT0EsTUFBTUUsS0FBSztLQUFHO0FBQ3ZDO0FBdVRBOztBQUVBLEdBQ0EsT0FBTyxTQUFTQyxvQkFBb0JDLENBQVU7SUFDNUMsT0FBTyxBQUFDQSxHQUFtQkMsU0FBUztBQUN0QztBQUNBLE9BQU8sU0FBU0MsbUJBQW1CRixDQUFVO0lB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
@@ -0,0 +1,25 @@
1
+ import type { Chunk, ChunkingConfig } from "./types";
2
+ /**
3
+ * 텍스트 청킹
4
+ * - 현재 가이드에서는 400토큰 이하만 저장하므로 기본적으로 사용하지 않음
5
+ * - 추후 긴 문서 처리 시 사용
6
+ */
7
+ export declare class Chunking {
8
+ private config;
9
+ constructor(config?: Partial<ChunkingConfig>);
10
+ /**
11
+ * 텍스트를 청크로 분할
12
+ */
13
+ chunk(text: string): Chunk[];
14
+ /**
15
+ * 청킹이 필요한지 확인
16
+ */
17
+ needsChunking(text: string): boolean;
18
+ /**
19
+ * 예상 청크 수 계산
20
+ */
21
+ estimateChunkCount(text: string): number;
22
+ private extractChunk;
23
+ private splitBySeparator;
24
+ }
25
+ //# sourceMappingURL=chunking.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunking.d.ts","sourceRoot":"","sources":["../../src/vector/chunking.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAErD;;;;GAIG;AACH,qBAAa,QAAQ;IACnB,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAIhD;;OAEG;IACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,EAAE;IAmC5B;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpC;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAQxC,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,gBAAgB;CA2BzB"}