kwikid-forms 0.6.31 → 0.6.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/kwikid-forms.umd.js +1230 -863
- package/bundles/kwikid-forms.umd.js.map +1 -1
- package/esm2015/lib/renderer/form-view/definitions/form-view.actions.definition.js +3 -1
- package/esm2015/lib/renderer/form-view/definitions/form-view.apis.definition.js +1 -1
- package/esm2015/lib/renderer/form-view/definitions/form-view.logs.definition.js +3 -1
- package/esm2015/lib/renderer/form-view/form-view.api.service.js +256 -0
- package/esm2015/lib/renderer/form-view/form-view.component.js +304 -259
- package/esm2015/lib/renderer/form-view/helpers/form-view.fields.helper.js +11 -2
- package/fesm2015/kwikid-forms.js +576 -267
- package/fesm2015/kwikid-forms.js.map +1 -1
- package/lib/renderer/form-view/definitions/form-view.actions.definition.d.ts +3 -1
- package/lib/renderer/form-view/definitions/form-view.apis.definition.d.ts +8 -0
- package/lib/renderer/form-view/definitions/form-view.logs.definition.d.ts +2 -0
- package/lib/renderer/form-view/form-view.api.service.d.ts +11 -0
- package/lib/renderer/form-view/form-view.component.d.ts +7 -2
- package/lib/renderer/form-view/helpers/form-view.fields.helper.d.ts +1 -0
- package/package.json +3 -2
|
@@ -7,6 +7,8 @@ export var EActionKey;
|
|
|
7
7
|
EActionKey["SET_API_HEADER_VALIDITY"] = "SET_API_HEADER_VALIDITY";
|
|
8
8
|
EActionKey["SET_API_BODY_VALUE"] = "SET_API_BODY_VALUE";
|
|
9
9
|
EActionKey["SET_API_BODY_VALIDITY"] = "SET_API_BODY_VALIDITY";
|
|
10
|
+
EActionKey["FIELD_API_TIMER_MESSAGE_SHOW"] = "FIELD_API_TIMER_MESSAGE_SHOW";
|
|
11
|
+
EActionKey["FIELD_API_TIMER_MESSAGE_HIDE"] = "FIELD_API_TIMER_MESSAGE_HIDE";
|
|
10
12
|
EActionKey["SET_FIELD_VALIDITY"] = "SET_FIELD_VALIDITY";
|
|
11
13
|
EActionKey["FIELD_MESSAGE_SHOW"] = "FIELD_MESSAGE_SHOW";
|
|
12
14
|
EActionKey["FIELD_MESSAGES_HIDE"] = "FIELD_MESSAGES_HIDE";
|
|
@@ -45,4 +47,4 @@ export var EActionKey;
|
|
|
45
47
|
EActionKey["ALERT_SHOW"] = "ALERT_SHOW";
|
|
46
48
|
EActionKey["SET_HTML"] = "SET_HTML";
|
|
47
49
|
})(EActionKey || (EActionKey = {}));
|
|
48
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmFjdGlvbnMuZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9kZWZpbml0aW9ucy9mb3JtLXZpZXcuYWN0aW9ucy5kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBTixJQUFZLFVBK0NYO0FBL0NELFdBQVksVUFBVTtJQUNwQixxQ0FBdUIsQ0FBQTtJQUN2QixpRUFBbUQsQ0FBQTtJQUNuRCwrQ0FBaUMsQ0FBQTtJQUNqQywyREFBNkMsQ0FBQTtJQUM3QyxpRUFBbUQsQ0FBQTtJQUNuRCx1REFBeUMsQ0FBQTtJQUN6Qyw2REFBK0MsQ0FBQTtJQUMvQywyRUFBNkQsQ0FBQTtJQUM3RCwyRUFBNkQsQ0FBQTtJQUM3RCx1REFBeUMsQ0FBQTtJQUN6Qyx1REFBeUMsQ0FBQTtJQUN6Qyx5REFBMkMsQ0FBQTtJQUMzQyxtREFBcUMsQ0FBQTtJQUNyQyxtREFBcUMsQ0FBQTtJQUNyQyx1Q0FBeUIsQ0FBQTtJQUN6Qix1Q0FBeUIsQ0FBQTtJQUN6QiwyQ0FBNkIsQ0FBQTtJQUM3Qiw2Q0FBK0IsQ0FBQTtJQUMvQix5Q0FBMkIsQ0FBQTtJQUMzQixxRUFBdUQsQ0FBQTtJQUN2RCwrQkFBaUIsQ0FBQTtJQUNqQixtREFBcUMsQ0FBQTtJQUNyQyxtREFBcUMsQ0FBQTtJQUNyQyx1REFBeUMsQ0FBQTtJQUN6Qyx5REFBMkMsQ0FBQTtJQUMzQywyREFBNkMsQ0FBQTtJQUM3QyxtQ0FBcUIsQ0FBQTtJQUNyQixxREFBdUMsQ0FBQTtJQUN2Qyw2REFBK0MsQ0FBQTtJQUMvQyw2Q0FBK0IsQ0FBQTtJQUMvQiwrREFBaUQsQ0FBQTtJQUNqRCx1RUFBeUQsQ0FBQTtJQUN6RCx5REFBMkMsQ0FBQTtJQUMzQyx1REFBeUMsQ0FBQTtJQUN6QyxpREFBbUMsQ0FBQTtJQUNuQywyQ0FBNkIsQ0FBQTtJQUM3QixpRUFBbUQsQ0FBQTtJQUNuRCxpRUFBbUQsQ0FBQTtJQUNuRCx5Q0FBMkIsQ0FBQTtJQUMzQix5Q0FBMkIsQ0FBQTtJQUMzQiw2REFBK0MsQ0FBQTtJQUMvQyx5REFBMkMsQ0FBQTtJQUMzQyxpREFBbUMsQ0FBQTtJQUNuQyxxQ0FBdUIsQ0FBQTtJQUN2Qix1Q0FBeUIsQ0FBQTtJQUN6QixtQ0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBL0NXLFVBQVUsS0FBVixVQUFVLFFBK0NyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRBY3Rpb24sIFRTb3VyY2UgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IFRNZXNzYWdlIH0gZnJvbSBcIi4vZm9ybS12aWV3LmNvbW1vbnMuZGVmaW5pdGlvblwiO1xuXG5leHBvcnQgZW51bSBFQWN0aW9uS2V5IHtcbiAgU0VUX1ZBTFVFID0gXCJTRVRfVkFMVUVcIixcbiAgU0VUX0ZJRUxEX0RFRkFVTFRfVkFMVUUgPSBcIlNFVF9GSUVMRF9ERUZBVUxUX1ZBTFVFXCIsXG4gIFNFVF9BUElfU1RBVFVTID0gXCJTRVRfQVBJX1NUQVRVU1wiLFxuICBTRVRfQVBJX0hFQURFUl9WQUxVRSA9IFwiU0VUX0FQSV9IRUFERVJfVkFMVUVcIixcbiAgU0VUX0FQSV9IRUFERVJfVkFMSURJVFkgPSBcIlNFVF9BUElfSEVBREVSX1ZBTElESVRZXCIsXG4gIFNFVF9BUElfQk9EWV9WQUxVRSA9IFwiU0VUX0FQSV9CT0RZX1ZBTFVFXCIsXG4gIFNFVF9BUElfQk9EWV9WQUxJRElUWSA9IFwiU0VUX0FQSV9CT0RZX1ZBTElESVRZXCIsXG4gIEZJRUxEX0FQSV9USU1FUl9NRVNTQUdFX1NIT1cgPSBcIkZJRUxEX0FQSV9USU1FUl9NRVNTQUdFX1NIT1dcIixcbiAgRklFTERfQVBJX1RJTUVSX01FU1NBR0VfSElERSA9IFwiRklFTERfQVBJX1RJTUVSX01FU1NBR0VfSElERVwiLFxuICBTRVRfRklFTERfVkFMSURJVFkgPSBcIlNFVF9GSUVMRF9WQUxJRElUWVwiLFxuICBGSUVMRF9NRVNTQUdFX1NIT1cgPSBcIkZJRUxEX01FU1NBR0VfU0hPV1wiLFxuICBGSUVMRF9NRVNTQUdFU19ISURFID0gXCJGSUVMRF9NRVNTQUdFU19ISURFXCIsXG4gIEZJRUxEX0VSUk9SX1NIT1cgPSBcIkZJRUxEX0VSUk9SX1NIT1dcIixcbiAgRklFTERfRVJST1JfSElERSA9IFwiRklFTERfRVJST1JfSElERVwiLFxuICBGSUVMRF9TSE9XID0gXCJGSUVMRF9TSE9XXCIsXG4gIEZJRUxEX0hJREUgPSBcIkZJRUxEX0hJREVcIixcbiAgRklFTERfRU5BQkxFID0gXCJGSUVMRF9FTkFCTEVcIixcbiAgRklFTERfRElTQUJMRSA9IFwiRklFTERfRElTQUJMRVwiLFxuICBGSUVMRF9SRVNFVCA9IFwiRklFTERfUkVTRVRcIixcbiAgSEFORExFX0NPTk5FQ1RFRF9FTEVNRU5UUyA9IFwiSEFORExFX0NPTk5FQ1RFRF9FTEVNRU5UU1wiLFxuICBDVVNUT00gPSBcIkNVU1RPTVwiLFxuICBGSUVMRF9HUk9VUF9TSE9XID0gXCJGSUVMRF9HUk9VUF9TSE9XXCIsXG4gIEZJRUxEX0dST1VQX0hJREUgPSBcIkZJRUxEX0dST1VQX0hJREVcIixcbiAgRklFTERfR1JPVVBfRU5BQkxFID0gXCJGSUVMRF9HUk9VUF9FTkFCTEVcIixcbiAgRklFTERfR1JPVVBfRElTQUJMRSA9IFwiRklFTERfR1JPVVBfRElTQUJMRVwiLFxuICBTRVRfRFJPUERPV05fT1BUSU9OUyA9IFwiU0VUX0RST1BET1dOX09QVElPTlNcIixcbiAgQVBJX0NBTEwgPSBcIkFQSV9DQUxMXCIsXG4gIEFQSV9DQUxMX01VTFRJUExFID0gXCJBUElfQ0FMTF9NVUxUSVBMRVwiLFxuICBBUElfQ0FMTF9NVUxUSVBMRV9FTkQgPSBcIkFQSV9DQUxMX01VTFRJUExFX0VORFwiLFxuICBUQVNLX0FQSV9DQUxMID0gXCJUQVNLX0FQSV9DQUxMXCIsXG4gIFRBU0tfQVBJX0NBTExfTVVMVElQTEUgPSBcIlRBU0tfQVBJX0NBTExfTVVMVElQTEVcIixcbiAgVEFTS19BUElfQ0FMTF9NVUxUSVBMRV9FTkQgPSBcIlRBU0tfQVBJX0NBTExfTVVMVElQTEVfRU5EXCIsXG4gIFBSRVZJRVdfRElBTE9HX1NIT1cgPSBcIlBSRVZJRVdfRElBTE9HX1NIT1dcIixcbiAgUFJFVklFV19FUlJPUl9TSE9XID0gXCJQUkVWSUVXX0VSUk9SX1NIT1dcIixcbiAgUE9QVVBfRk9STV9TSE9XID0gXCJQT1BVUF9GT1JNX1NIT1dcIixcbiAgU1RPUF9XQUlUSU5HID0gXCJTVE9QX1dBSVRJTkdcIixcbiAgTk9USUZJQ0FUSU9OX0VSUk9SX1NIT1cgPSBcIk5PVElGSUNBVElPTl9FUlJPUl9TSE9XXCIsXG4gIE5PVElGSUNBVElPTl9FUlJPUl9ISURFID0gXCJOT1RJRklDQVRJT05fRVJST1JfSElERVwiLFxuICBESUFMT0dfU0hPVyA9IFwiRElBTE9HX1NIT1dcIixcbiAgRElBTE9HX0hJREUgPSBcIkRJQUxPR19ISURFXCIsXG4gIFJFU1VNRV9UQVNLX0VYRUNVVElPTiA9IFwiUkVTVU1FX1RBU0tfRVhFQ1VUSU9OXCIsXG4gIFNUT1BfVEFTS19FWEVDVVRJT04gPSBcIlNUT1BfVEFTS19FWEVDVVRJT05cIixcbiAgUkVESVJFQ1RfVE9fVVJMID0gXCJSRURJUkVDVF9UT19VUkxcIixcbiAgU0FWRV9GT1JNID0gXCJTQVZFX0ZPUk1cIixcbiAgQUxFUlRfU0hPVyA9IFwiQUxFUlRfU0hPV1wiLFxuICBTRVRfSFRNTCA9IFwiU0VUX0hUTUxcIlxufVxuXG5leHBvcnQgdHlwZSBUQWN0aW9uS2V5ID1cbiAgfCBFQWN0aW9uS2V5LlNFVF9WQUxVRVxuICB8IEVBY3Rpb25LZXkuU0VUX0ZJRUxEX0RFRkFVTFRfVkFMVUVcbiAgfCBFQWN0aW9uS2V5LlNFVF9BUElfU1RBVFVTXG4gIHwgRUFjdGlvbktleS5TRVRfQVBJX0hFQURFUl9WQUxVRVxuICB8IEVBY3Rpb25LZXkuU0VUX0FQSV9IRUFERVJfVkFMSURJVFlcbiAgfCBFQWN0aW9uS2V5LlNFVF9BUElfQk9EWV9WQUxVRVxuICB8IEVBY3Rpb25LZXkuU0VUX0FQSV9CT0RZX1ZBTElESVRZXG4gIHwgRUFjdGlvbktleS5TRVRfRklFTERfVkFMSURJVFlcbiAgfCBFQWN0aW9uS2V5LkZJRUxEX0FQSV9USU1FUl9NRVNTQUdFX1NIT1dcbiAgfCBFQWN0aW9uS2V5LkZJRUxEX0FQSV9USU1FUl9NRVNTQUdFX0hJREVcbiAgfCBFQWN0aW9uS2V5LkZJRUxEX01FU1NBR0VfU0hPV1xuICB8IEVBY3Rpb25LZXkuRklFTERfTUVTU0FHRVNfSElERVxuICB8IEVBY3Rpb25LZXkuRklFTERfRVJST1JfU0hPV1xuICB8IEVBY3Rpb25LZXkuRklFTERfRVJST1JfSElERVxuICB8IEVBY3Rpb25LZXkuRklFTERfU0hPV1xuICB8IEVBY3Rpb25LZXkuRklFTERfSElERVxuICB8IEVBY3Rpb25LZXkuRklFTERfRU5BQkxFXG4gIHwgRUFjdGlvbktleS5GSUVMRF9ESVNBQkxFXG4gIHwgRUFjdGlvbktleS5GSUVMRF9SRVNFVFxuICB8IEVBY3Rpb25LZXkuSEFORExFX0NPTk5FQ1RFRF9FTEVNRU5UU1xuICB8IEVBY3Rpb25LZXkuQ1VTVE9NXG4gIHwgRUFjdGlvbktleS5GSUVMRF9HUk9VUF9TSE9XXG4gIHwgRUFjdGlvbktleS5GSUVMRF9HUk9VUF9ISURFXG4gIHwgRUFjdGlvbktleS5GSUVMRF9HUk9VUF9FTkFCTEVcbiAgfCBFQWN0aW9uS2V5LkZJRUxEX0dST1VQX0RJU0FCTEVcbiAgfCBFQWN0aW9uS2V5LkFQSV9DQUxMXG4gIHwgRUFjdGlvbktleS5BUElfQ0FMTF9NVUxUSVBMRVxuICB8IEVBY3Rpb25LZXkuQVBJX0NBTExfTVVMVElQTEVfRU5EXG4gIHwgRUFjdGlvbktleS5UQVNLX0FQSV9DQUxMXG4gIHwgRUFjdGlvbktleS5UQVNLX0FQSV9DQUxMX01VTFRJUExFXG4gIHwgRUFjdGlvbktleS5UQVNLX0FQSV9DQUxMX01VTFRJUExFX0VORFxuICB8IEVBY3Rpb25LZXkuU0VUX0RST1BET1dOX09QVElPTlNcbiAgfCBFQWN0aW9uS2V5LlBSRVZJRVdfRElBTE9HX1NIT1dcbiAgfCBFQWN0aW9uS2V5LlBPUFVQX0ZPUk1fU0hPV1xuICB8IEVBY3Rpb25LZXkuU1RPUF9XQUlUSU5HXG4gIHwgRUFjdGlvbktleS5OT1RJRklDQVRJT05fRVJST1JfU0hPV1xuICB8IEVBY3Rpb25LZXkuTk9USUZJQ0FUSU9OX0VSUk9SX0hJREVcbiAgfCBFQWN0aW9uS2V5LkRJQUxPR19TSE9XXG4gIHwgRUFjdGlvbktleS5ESUFMT0dfSElERVxuICB8IEVBY3Rpb25LZXkuUkVTVU1FX1RBU0tfRVhFQ1VUSU9OXG4gIHwgRUFjdGlvbktleS5TVE9QX1RBU0tfRVhFQ1VUSU9OXG4gIHwgRUFjdGlvbktleS5SRURJUkVDVF9UT19VUkxcbiAgfCBFQWN0aW9uS2V5LlNBVkVfRk9STVxuICB8IEVBY3Rpb25LZXkuQUxFUlRfU0hPV1xuICB8IEVBY3Rpb25LZXkuU0VUX0hUTUw7XG5cbmV4cG9ydCB0eXBlIFRBY3Rpb25TZXRWYWx1ZSA9IFRBY3Rpb24gJiB7XG4gIGtleTogRUFjdGlvbktleS5TRVRfVkFMVUU7XG4gIHByb3BzOiB7XG4gICAgdmFsdWU6IHtcbiAgICAgIHNvdXJjZTogVFNvdXJjZTtcbiAgICAgIGRlc3RpbmF0aW9uOiBUU291cmNlO1xuICAgIH07XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBUQWN0aW9uU2V0RmllbGREZWZhdWx0VmFsdWUgPSBUQWN0aW9uICYge1xuICBrZXk6IEVBY3Rpb25LZXkuU0VUX0ZJRUxEX0RFRkFVTFRfVkFMVUU7XG4gIHByb3BzOiB7XG4gICAgZmllbGRLZXk6IHN0cmluZztcbiAgICBzb3VyY2U6IFRTb3VyY2U7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBUQWN0aW9uRmllbGRNZXNzYWdlU2hvdyA9IFRBY3Rpb24gJiB7XG4gIGtleTogRUFjdGlvbktleS5GSUVMRF9NRVNTQUdFX1NIT1c7XG4gIHByb3BzOiB7XG4gICAgZmllbGRLZXk6IHN0cmluZztcbiAgICBtZXNzYWdlOiBUTWVzc2FnZTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFRBY3Rpb25GaWVsZE1lc3NhZ2VIaWRlID0gVEFjdGlvbiAmIHtcbiAga2V5OiBFQWN0aW9uS2V5LkZJRUxEX01FU1NBR0VTX0hJREU7XG4gIHByb3BzOiB7XG4gICAgZmllbGRLZXk6IHN0cmluZztcbiAgICBtZXNzYWdlOiBUTWVzc2FnZTtcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFRBY3Rpb25GaWVsZEVycm9yU2hvdyA9IFRBY3Rpb24gJiB7XG4gIGtleTogRUFjdGlvbktleS5GSUVMRF9FUlJPUl9TSE9XO1xuICBwcm9wczoge1xuICAgIGZpZWxkS2V5OiBzdHJpbmc7XG4gICAgbWVzc2FnZTogVE1lc3NhZ2U7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBJRmllbGRFcnJvckhpZGUgPSBUQWN0aW9uICYge1xuICBrZXk6IEVBY3Rpb25LZXkuRklFTERfRVJST1JfSElERTtcbiAgcHJvcHM6IHtcbiAgICBmaWVsZEtleTogc3RyaW5nO1xuICAgIG1lc3NhZ2U6IFRNZXNzYWdlO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgVEFjdGlvbkZpZWxkU2hvdyA9IFRBY3Rpb24gJiB7XG4gIGtleTogRUFjdGlvbktleS5GSUVMRF9TSE9XO1xuICBwcm9wczoge1xuICAgIGZpZWxkS2V5OiBzdHJpbmc7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBUQWN0aW9uRmllbGRIaWRlID0gVEFjdGlvbiAmIHtcbiAga2V5OiBFQWN0aW9uS2V5LkZJRUxEX0hJREU7XG4gIHByb3BzOiB7XG4gICAgZmllbGRLZXk6IHN0cmluZztcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFRBY3Rpb25GaWVsZEVuYWJsZSA9IFRBY3Rpb24gJiB7XG4gIGtleTogRUFjdGlvbktleS5GSUVMRF9FTkFCTEU7XG4gIHByb3BzOiB7XG4gICAgZmllbGRLZXk6IHN0cmluZztcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFRBY3Rpb25GaWVsZERpc2FibGUgPSBUQWN0aW9uICYge1xuICBrZXk6IEVBY3Rpb25LZXkuRklFTERfRElTQUJMRTtcbiAgcHJvcHM6IHtcbiAgICBmaWVsZEtleTogc3RyaW5nO1xuICB9O1xufTtcblxuZXhwb3J0IHR5cGUgVEFjdGlvbkZpZWxkUmVzZXQgPSBUQWN0aW9uICYge1xuICBrZXk6IEVBY3Rpb25LZXkuRklFTERfUkVTRVQ7XG4gIHByb3BzOiB7XG4gICAgZmllbGRLZXk6IHN0cmluZztcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFRBY3Rpb25IYW5kbGVDb25uZWN0ZWRFbGVtZW50ID0gVEFjdGlvbiAmIHtcbiAga2V5OiBFQWN0aW9uS2V5LkhBTkRMRV9DT05ORUNURURfRUxFTUVOVFM7XG4gIHByb3BzOiB7XG4gICAgZmllbGRLZXk6IHN0cmluZztcbiAgfTtcbn07XG5cbmV4cG9ydCB0eXBlIFRBY3Rpb25BcGlDYWxsID0gVEFjdGlvbiAmIHtcbiAga2V5OiBFQWN0aW9uS2V5LkFQSV9DQUxMO1xuICBwcm9wczoge1xuICAgIGZpZWxkS2V5OiBzdHJpbmc7XG4gICAgYXBpS2V5OiBzdHJpbmc7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBUQWN0aW9uQXBpQ2FsbHNEb25lID0gVEFjdGlvbiAmIHtcbiAga2V5OiBFQWN0aW9uS2V5LkFQSV9DQUxMO1xuICBwcm9wczoge1xuICAgIGZpZWxkS2V5OiBzdHJpbmc7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBUQWN0aW9uUHJldmlld0RpYWxvZ1Nob3cgPSBUQWN0aW9uICYge1xuICBrZXk6IEVBY3Rpb25LZXkuUFJFVklFV19ESUFMT0dfU0hPVztcbiAgcHJvcHM6IHtcbiAgICBodG1sPzoge1xuICAgICAgYmVmb3JlPzogc3RyaW5nO1xuICAgICAgYWZ0ZXI/OiBzdHJpbmc7XG4gICAgfTtcbiAgICBpZnJhbWU/OiB7XG4gICAgICBzcmM6IHN0cmluZztcbiAgICAgIHRpdGxlPzogc3RyaW5nO1xuICAgIH07XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBUQWN0aW9uU2V0SHRtbCA9IFRBY3Rpb24gJiB7XG4gIGtleTogRUFjdGlvbktleS5TRVRfSFRNTDtcbiAgcHJvcHM6IHtcbiAgICBmaWVsZEtleTogc3RyaW5nO1xuICAgIG1lc3NhZ2U6IFRNZXNzYWdlO1xuICB9O1xufTtcbiJdfQ==
|
|
@@ -11,4 +11,4 @@ export var EApiRequestUrlType;
|
|
|
11
11
|
EApiRequestUrlType["MOCK"] = "MOCK";
|
|
12
12
|
EApiRequestUrlType["CALCULATED"] = "CALCULATED";
|
|
13
13
|
})(EApiRequestUrlType || (EApiRequestUrlType = {}));
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmFwaXMuZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9kZWZpbml0aW9ucy9mb3JtLXZpZXcuYXBpcy5kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUdBLE1BQU0sQ0FBTixJQUFZLGNBTVg7QUFORCxXQUFZLGNBQWM7SUFDeEIscUNBQW1CLENBQUE7SUFDbkIscUNBQW1CLENBQUE7SUFDbkIsaUNBQWUsQ0FBQTtJQUNmLHFDQUFtQixDQUFBO0lBQ25CLG1DQUFpQixDQUFBO0FBQ25CLENBQUMsRUFOVyxjQUFjLEtBQWQsY0FBYyxRQU16QjtBQXlGRCxNQUFNLENBQU4sSUFBWSxrQkFHWDtBQUhELFdBQVksa0JBQWtCO0lBQzVCLG1DQUFhLENBQUE7SUFDYiwrQ0FBeUIsQ0FBQTtBQUMzQixDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRBY3Rpb24sIFRSdWxlLCBUU291cmNlLCBUVmFsaWRhdGlvbiB9IGZyb20gXCJrd2lraWQtdG9vbGtpdFwiO1xuaW1wb3J0IHsgVFRyaWdnZXIgfSBmcm9tIFwiLi9mb3JtLXZpZXcudHJpZ2dlcnMuZGVmaW5pdGlvblwiO1xuXG5leHBvcnQgZW51bSBFQXBpU3RhdHVzVHlwZSB7XG4gIERFRkFVTFQgPSBcImRlZmF1bHRcIixcbiAgTE9BRElORyA9IFwibG9hZGluZ1wiLFxuICBSRVRSWSA9IFwicmV0cnlcIixcbiAgU1VDQ0VTUyA9IFwic3VjY2Vzc1wiLFxuICBGQUlMRUQgPSBcImZhaWxlZFwiXG59XG5cbmV4cG9ydCB0eXBlIFRBcGlSZXF1ZXN0Qm9keVBhcmFtID0ge1xuICBrZXk6IHN0cmluZztcbiAgc291cmNlczogQXJyYXk8VFNvdXJjZT47XG4gIHZhbHVlOiBhbnk7XG59O1xuXG5leHBvcnQgdHlwZSBUQXBpUmVxdWVzdEJvZHkgPSBUVmFsaWRhdGlvbiAmIHtcbiAgdmFsdWU6IGFueTtcbiAgcGFyYW1zOiBBcnJheTxUQXBpUmVxdWVzdEJvZHlQYXJhbT47XG4gIHZhbGlkYXRpb246IFRWYWxpZGF0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgVEFwaVJlcXVlc3RIZWFkZXJzUGFyYW0gPSB7XG4gIGtleTogc3RyaW5nO1xuICBzb3VyY2VzOiBBcnJheTxUU291cmNlPjtcbiAgdmFsdWU6IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIFRBcGlSZXF1ZXN0SGVhZGVycyA9IFRWYWxpZGF0aW9uICYge1xuICB2YWx1ZTogYW55O1xuICBwYXJhbXM6IEFycmF5PGFueT47XG4gIHZhbGlkYXRpb246IFRWYWxpZGF0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgVEFwaVRpbWVyID0ge1xuICBtYXhUaW1lOiBudW1iZXI7XG4gIG1lc3NhZ2VXaXRoVGltZXJQbGFjZWhvbGRlcjogc3RyaW5nO1xuICB0aW1lckNoYW5nZVR5cGU6IHN0cmluZztcbiAgdGltZUZvcm1hdDogc3RyaW5nO1xuICB0aW1lclN0ZXA6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIFRBcGlSZXF1ZXN0ID0ge1xuICB1cmw6IHN0cmluZyB8IGFueTtcbiAgbWV0aG9kPzogc3RyaW5nO1xuICBoZWFkZXJzPzogVEFwaVJlcXVlc3RIZWFkZXJzO1xuICBib2R5OiBUQXBpUmVxdWVzdEJvZHk7XG59O1xuXG5leHBvcnQgdHlwZSBUQXBpUmVzcG9uc2VCb2R5ID0gYW55O1xuXG5leHBvcnQgdHlwZSBUQXBpUmVzcG9uc2UgPSBUVmFsaWRhdGlvbiAmIHtcbiAgaXNfdmFsaWQ6IGJvb2xlYW47XG4gIGJvZHk6IFRBcGlSZXNwb25zZUJvZHk7XG4gIHZhbGlkYXRpb246IFRWYWxpZGF0aW9uO1xuICB2YWx1ZT86IGFueTtcbn07XG5cbmV4cG9ydCB0eXBlIFRBcGlTdGF0dXNUeXBlID1cbiAgfCBFQXBpU3RhdHVzVHlwZS5ERUZBVUxUXG4gIHwgRUFwaVN0YXR1c1R5cGUuTE9BRElOR1xuICB8IEVBcGlTdGF0dXNUeXBlLlJFVFJZXG4gIHwgRUFwaVN0YXR1c1R5cGUuU1VDQ0VTU1xuICB8IEVBcGlTdGF0dXNUeXBlLkZBSUxFRDtcblxuZXhwb3J0IHR5cGUgVEFwaVN0YXR1cyA9IHtcbiAgdmFsdWU6IFRBcGlTdGF0dXNUeXBlO1xuICBsYWJlbHM6IHtcbiAgICBkZWZhdWx0OiBFQXBpU3RhdHVzVHlwZS5ERUZBVUxUO1xuICAgIGxvYWRpbmc6IEVBcGlTdGF0dXNUeXBlLkxPQURJTkc7XG4gICAgcmV0cnk6IEVBcGlTdGF0dXNUeXBlLlJFVFJZO1xuICAgIHN1Y2Nlc3M6IEVBcGlTdGF0dXNUeXBlLlNVQ0NFU1M7XG4gICAgZmFpbGVkOiBFQXBpU3RhdHVzVHlwZS5GQUlMRUQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBUQXBpRW50cnlQb2ludCA9IHtcbiAgdHJpZ2dlcnM6IEFycmF5PFRUcmlnZ2VyPjtcbiAgcnVsZXM6IEFycmF5PFRSdWxlPjtcbiAgYWN0aW9uczogQXJyYXk8VEFjdGlvbj47XG59O1xuXG5leHBvcnQgdHlwZSBUQXBpRW5kcG9pbnQgPSB7XG4gIGFwaUtleTogc3RyaW5nO1xuICByZXF1ZXN0OiBUQXBpUmVxdWVzdDtcbiAgcmVzcG9uc2U6IFRBcGlSZXNwb25zZTtcbn07XG5cbmV4cG9ydCB0eXBlIFRBcGkgPSB7XG4gIHJlcXVlc3Q/OiBUQXBpUmVxdWVzdDtcbiAgcmVzcG9uc2U/OiBUQXBpUmVzcG9uc2U7XG4gIGVudHJ5cG9pbnQ6IFRBcGlFbnRyeVBvaW50O1xuICBlbmRwb2ludHM6IEFycmF5PFRBcGlFbmRwb2ludD47XG4gIHN0YXR1czogVEFwaVN0YXR1cztcbiAgdGltZXI/OiBUQXBpVGltZXI7XG59O1xuXG5leHBvcnQgZW51bSBFQXBpUmVxdWVzdFVybFR5cGUge1xuICBNT0NLID0gXCJNT0NLXCIsXG4gIENBTENVTEFURUQgPSBcIkNBTENVTEFURURcIlxufVxuIl19
|
|
@@ -22,6 +22,8 @@ export var ELogEventType;
|
|
|
22
22
|
ELogEventType["FORM__DIALOG_ERROR"] = "FORM__DIALOG_ERROR";
|
|
23
23
|
ELogEventType["FORM__DIALOG_HIDE"] = "FORM__DIALOG_HIDE";
|
|
24
24
|
ELogEventType["FORM__DIALOG_SHOW"] = "FORM__DIALOG_SHOW";
|
|
25
|
+
ELogEventType["FORM__FIELD_API_TIMER_MESSAGE_SHOW"] = "FORM__FIELD_API_TIMER_MESSAGE_SHOW";
|
|
26
|
+
ELogEventType["FORM__FIELD_API_TIMER_MESSAGE_HIDE"] = "FORM__FIELD_API_TIMER_MESSAGE_HIDE";
|
|
25
27
|
ELogEventType["FORM__FIELD_BUTTON_CLICK"] = "FORM__FIELD_BUTTON_CLICK";
|
|
26
28
|
ELogEventType["FORM__FIELD_CAMERA_BUTTON_CLICK"] = "FORM__FIELD_CAMERA_BUTTON_CLICK";
|
|
27
29
|
ELogEventType["FORM__FIELD_DISABLE"] = "FORM__FIELD_DISABLE";
|
|
@@ -47,4 +49,4 @@ export var ELogEventType;
|
|
|
47
49
|
ELogEventType["FORM__TASK_PRE"] = "FORM__TASK_PRE";
|
|
48
50
|
ELogEventType["FORM__VIEW_BUTTON_CLICK"] = "FORM__VIEW_BUTTON_CLICK";
|
|
49
51
|
})(ELogEventType || (ELogEventType = {}));
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmxvZ3MuZGVmaW5pdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2t3aWtpZC1mb3Jtcy9zcmMvbGliL3JlbmRlcmVyL2Zvcm0tdmlldy9kZWZpbml0aW9ucy9mb3JtLXZpZXcubG9ncy5kZWZpbml0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGFBaURYO0FBakRELFdBQVksYUFBYTtJQUN2Qiw4REFBNkMsQ0FBQTtJQUM3QywwRUFBeUQsQ0FBQTtJQUN6RCx3REFBdUMsQ0FBQTtJQUN2QyxzREFBcUMsQ0FBQTtJQUNyQyxzREFBcUMsQ0FBQTtJQUNyQyxrRUFBaUQsQ0FBQTtJQUNqRCx3REFBdUMsQ0FBQTtJQUN2Qyx3RUFBdUQsQ0FBQTtJQUN2RCxnRkFBK0QsQ0FBQTtJQUMvRCxrRkFBaUUsQ0FBQTtJQUNqRSxrRkFBaUUsQ0FBQTtJQUNqRSwwREFBeUMsQ0FBQTtJQUN6QyxrRkFBaUUsQ0FBQTtJQUNqRSxvRkFBbUUsQ0FBQTtJQUNuRSxvRkFBbUUsQ0FBQTtJQUNuRSxrRkFBaUUsQ0FBQTtJQUNqRSxvRkFBbUUsQ0FBQTtJQUNuRSxrRkFBaUUsQ0FBQTtJQUNqRSx3RUFBdUQsQ0FBQTtJQUN2RCwwREFBeUMsQ0FBQTtJQUN6Qyx3REFBdUMsQ0FBQTtJQUN2Qyx3REFBdUMsQ0FBQTtJQUN2QywwRkFBeUUsQ0FBQTtJQUN6RSwwRkFBeUUsQ0FBQTtJQUN6RSxzRUFBcUQsQ0FBQTtJQUNyRCxvRkFBbUUsQ0FBQTtJQUNuRSw0REFBMkMsQ0FBQTtJQUMzQywwREFBeUMsQ0FBQTtJQUN6QyxrRUFBaUQsQ0FBQTtJQUNqRCxrRUFBaUQsQ0FBQTtJQUNqRCw4REFBNkMsQ0FBQTtJQUM3QyxvRUFBbUQsQ0FBQTtJQUNuRCxzREFBcUMsQ0FBQTtJQUNyQyxnRkFBK0QsQ0FBQTtJQUMvRCxzRUFBcUQsQ0FBQTtJQUNyRCxzRUFBcUQsQ0FBQTtJQUNyRCx3REFBdUMsQ0FBQTtJQUN2QyxrRkFBaUUsQ0FBQTtJQUNqRSxzREFBcUMsQ0FBQTtJQUNyQyw0REFBMkMsQ0FBQTtJQUMzQywwREFBeUMsQ0FBQTtJQUN6QywwREFBeUMsQ0FBQTtJQUN6QywwREFBeUMsQ0FBQTtJQUN6QyxvREFBbUMsQ0FBQTtJQUNuQyxvRUFBbUQsQ0FBQTtJQUNuRCxvREFBbUMsQ0FBQTtJQUNuQyxrREFBaUMsQ0FBQTtJQUNqQyxvRUFBbUQsQ0FBQTtBQUNyRCxDQUFDLEVBakRXLGFBQWEsS0FBYixhQUFhLFFBaUR4QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEVMb2dFdmVudFR5cGUge1xuICBGT1JNX19BQ1RJT05fRVhFQ1VURSA9IFwiRk9STV9fQUNUSU9OX0VYRUNVVEVcIixcbiAgRk9STV9fQUNUSU9OX0VYRUNVVEVfR1JPVVAgPSBcIkZPUk1fX0FDVElPTl9FWEVDVVRFX0dST1VQXCIsXG4gIEZPUk1fX0FMRVJUX0VSUk9SID0gXCJGT1JNX19BTEVSVF9FUlJPUlwiLFxuICBGT1JNX19BTEVSVF9ISURFID0gXCJGT1JNX19BTEVSVF9ISURFXCIsXG4gIEZPUk1fX0FMRVJUX1NIT1cgPSBcIkZPUk1fX0FMRVJUX1NIT1dcIixcbiAgRk9STV9fQVBJX0JVVFRPTl9DTElDSyA9IFwiRk9STV9fQVBJX0JVVFRPTl9DTElDS1wiLFxuICBGT1JNX19BUElfUkVRVUVTVCA9IFwiRk9STV9fQVBJX1JFUVVFU1RcIixcbiAgRk9STV9fQVBJX1JFUVVFU1RfSU5WQUxJRCA9IFwiRk9STV9fQVBJX1JFUVVFU1RfSU5WQUxJRFwiLFxuICBGT1JNX19BUElfUkVRVUVTVF9VUExPQURfRklMRSA9IFwiRk9STV9fQVBJX1JFUVVFU1RfVVBMT0FEX0ZJTEVcIixcbiAgRk9STV9fQVBJX1JFUVVFU1RfVVBMT0FEX0lNQUdFID0gXCJGT1JNX19BUElfUkVRVUVTVF9VUExPQURfSU1BR0VcIixcbiAgRk9STV9fQVBJX1JFUVVFU1RfVVBMT0FEX1ZJREVPID0gXCJGT1JNX19BUElfUkVRVUVTVF9VUExPQURfVklERU9cIixcbiAgRk9STV9fQVBJX1JFU1BPTlNFID0gXCJGT1JNX19BUElfUkVTUE9OU0VcIixcbiAgRk9STV9fQVBJX1JFU1BPTlNFX1VQTE9BRF9GSUxFID0gXCJGT1JNX19BUElfUkVTUE9OU0VfVVBMT0FEX0ZJTEVcIixcbiAgRk9STV9fQVBJX1JFU1BPTlNFX1VQTE9BRF9JTUFHRSA9IFwiRk9STV9fQVBJX1JFU1BPTlNFX1VQTE9BRF9JTUFHRVwiLFxuICBGT1JNX19BUElfUkVTUE9OU0VfVVBMT0FEX1ZJREVPID0gXCJGT1JNX19BUElfUkVTUE9OU0VfVVBMT0FEX1ZJREVPXCIsXG4gIEZPUk1fX0NBTUVSQV9CQUNLX0JVVFRPTl9DTElDSyA9IFwiRk9STV9fQ0FNRVJBX0JBQ0tfQlVUVE9OX0NMSUNLXCIsXG4gIEZPUk1fX0NBTUVSQV9DTE9TRV9CVVRUT05fQ0xJQ0sgPSBcIkZPUk1fX0NBTUVSQV9DTE9TRV9CVVRUT05fQ0xJQ0tcIixcbiAgRk9STV9fQ0FNRVJBX1NBVkVfQlVUVE9OX0NMSUNLID0gXCJGT1JNX19DQU1FUkFfU0FWRV9CVVRUT05fQ0xJQ0tcIixcbiAgRk9STV9fQ09ORklHX0xPQURfU1VDQ0VTUyA9IFwiRk9STV9fQ09ORklHX0xPQURfU1VDQ0VTU1wiLFxuICBGT1JNX19ESUFMT0dfRVJST1IgPSBcIkZPUk1fX0RJQUxPR19FUlJPUlwiLFxuICBGT1JNX19ESUFMT0dfSElERSA9IFwiRk9STV9fRElBTE9HX0hJREVcIixcbiAgRk9STV9fRElBTE9HX1NIT1cgPSBcIkZPUk1fX0RJQUxPR19TSE9XXCIsXG4gIEZPUk1fX0ZJRUxEX0FQSV9USU1FUl9NRVNTQUdFX1NIT1cgPSBcIkZPUk1fX0ZJRUxEX0FQSV9USU1FUl9NRVNTQUdFX1NIT1dcIixcbiAgRk9STV9fRklFTERfQVBJX1RJTUVSX01FU1NBR0VfSElERSA9IFwiRk9STV9fRklFTERfQVBJX1RJTUVSX01FU1NBR0VfSElERVwiLFxuICBGT1JNX19GSUVMRF9CVVRUT05fQ0xJQ0sgPSBcIkZPUk1fX0ZJRUxEX0JVVFRPTl9DTElDS1wiLFxuICBGT1JNX19GSUVMRF9DQU1FUkFfQlVUVE9OX0NMSUNLID0gXCJGT1JNX19GSUVMRF9DQU1FUkFfQlVUVE9OX0NMSUNLXCIsXG4gIEZPUk1fX0ZJRUxEX0RJU0FCTEUgPSBcIkZPUk1fX0ZJRUxEX0RJU0FCTEVcIixcbiAgRk9STV9fRklFTERfRU5BQkxFID0gXCJGT1JNX19GSUVMRF9FTkFCTEVcIixcbiAgRk9STV9fRklFTERfRVJST1JfSElERSA9IFwiRk9STV9fRklFTERfRVJST1JfSElERVwiLFxuICBGT1JNX19GSUVMRF9FUlJPUl9TSE9XID0gXCJGT1JNX19GSUVMRF9FUlJPUl9TSE9XXCIsXG4gIEZPUk1fX0ZJRUxEX0ZJTEVfQUREID0gXCJGT1JNX19GSUVMRF9GSUxFX0FERFwiLFxuICBGT1JNX19GSUVMRF9GSUxFX1JFTU9WRSA9IFwiRk9STV9fRklFTERfRklMRV9SRU1PVkVcIixcbiAgRk9STV9fRklFTERfSElERSA9IFwiRk9STV9fRklFTERfSElERVwiLFxuICBGT1JNX19GSUVMRF9NRURJQV9GSUxFX1JFTU9WRSA9IFwiRk9STV9fRklFTERfTUVESUFfRklMRV9SRU1PVkVcIixcbiAgRk9STV9fRklFTERfTUVTU0FHRV9ISURFID0gXCJGT1JNX19GSUVMRF9NRVNTQUdFX0hJREVcIixcbiAgRk9STV9fRklFTERfTUVTU0FHRV9TSE9XID0gXCJGT1JNX19GSUVMRF9NRVNTQUdFX1NIT1dcIixcbiAgRk9STV9fRklFTERfUkVTRVQgPSBcIkZPUk1fX0ZJRUxEX1JFU0VUXCIsXG4gIEZPUk1fX0ZJRUxEX1JFU0VUX0JVVFRPTl9DTElDSyA9IFwiRk9STV9fRklFTERfUkVTRVRfQlVUVE9OX0NMSUNLXCIsXG4gIEZPUk1fX0ZJRUxEX1NIT1cgPSBcIkZPUk1fX0ZJRUxEX1NIT1dcIixcbiAgRk9STV9fUFJFVklFV19FUlJPUiA9IFwiRk9STV9fUFJFVklFV19FUlJPUlwiLFxuICBGT1JNX19QUkVWSUVXX0hJREUgPSBcIkZPUk1fX1BSRVZJRVdfSElERVwiLFxuICBGT1JNX19QUkVWSUVXX1NIT1cgPSBcIkZPUk1fX1BSRVZJRVdfU0hPV1wiLFxuICBGT1JNX19SRURJUkVDVF9VUkwgPSBcIkZPUk1fX1JFRElSRUNUX1VSTFwiLFxuICBGT1JNX19TQVZFX0FVVE8gPSBcIkZPUk1fX1NBVkVfQVVUT1wiLFxuICBGT1JNX19TQVZFX0JVVFRPTl9DTElDSyA9IFwiRk9STV9fU0FWRV9CVVRUT05fQ0xJQ0tcIixcbiAgRk9STV9fVEFTS19QT1NUID0gXCJGT1JNX19UQVNLX1BPU1RcIixcbiAgRk9STV9fVEFTS19QUkUgPSBcIkZPUk1fX1RBU0tfUFJFXCIsXG4gIEZPUk1fX1ZJRVdfQlVUVE9OX0NMSUNLID0gXCJGT1JNX19WSUVXX0JVVFRPTl9DTElDS1wiXG59XG4iXX0=
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
import { __awaiter, __decorate } from "tslib";
|
|
2
|
+
import axios from "axios";
|
|
3
|
+
import { decryptWithAES, encryptWithAES, isNotEmptyValue, logMethod } from "kwikid-toolkit";
|
|
4
|
+
import { Observable } from "rxjs";
|
|
5
|
+
import { v4 as uuidv4 } from "uuid";
|
|
6
|
+
export class KwikIDFormViewApiService {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.bytecode = [0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38];
|
|
9
|
+
}
|
|
10
|
+
// Function to derive logic from data
|
|
11
|
+
dataDerivativeLogic(data) {
|
|
12
|
+
if (isNotEmptyValue(data)) {
|
|
13
|
+
const dataString = JSON.stringify(data);
|
|
14
|
+
const charCounts = {};
|
|
15
|
+
const targetCharacters = ["a", "i", "p", "t"];
|
|
16
|
+
// Count occurrences of target characters in the data string
|
|
17
|
+
for (const char of dataString) {
|
|
18
|
+
if (targetCharacters.includes(char)) {
|
|
19
|
+
charCounts[char] = (charCounts[char] || 0) + 1;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
// Construct the output string based on the character counts
|
|
23
|
+
const outputString = targetCharacters
|
|
24
|
+
.map((char) => char + (charCounts[char] || 0))
|
|
25
|
+
.join("");
|
|
26
|
+
return outputString;
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
// Function to preprocess header data
|
|
33
|
+
preProcessHeader(headerData, isVerifySignature) {
|
|
34
|
+
if (!headerData)
|
|
35
|
+
headerData = {};
|
|
36
|
+
if (!headerData.headers)
|
|
37
|
+
headerData["headers"] = {};
|
|
38
|
+
// Generate a unique identifier if signature verification is required
|
|
39
|
+
if (isVerifySignature) {
|
|
40
|
+
headerData["headers"]["xrid"] = uuidv4();
|
|
41
|
+
}
|
|
42
|
+
// Retrieve session ID from local storage and add it to headers
|
|
43
|
+
let session_id = localStorage.getItem("session_id");
|
|
44
|
+
if (session_id)
|
|
45
|
+
headerData["headers"]["ses"] = session_id;
|
|
46
|
+
return headerData;
|
|
47
|
+
}
|
|
48
|
+
// Function to verify the signature
|
|
49
|
+
verifySignature(data, header, url, isVerifySignature) {
|
|
50
|
+
return new Promise((resolve, reject) => {
|
|
51
|
+
// Log the function call for verification
|
|
52
|
+
console.log("Verify Signature: Function Called For", url, header);
|
|
53
|
+
// Check if the signature is disabled
|
|
54
|
+
if (!isVerifySignature) {
|
|
55
|
+
console.log("Verify Signature: Authentication Disabled");
|
|
56
|
+
resolve(true);
|
|
57
|
+
}
|
|
58
|
+
// Check if data is invalid
|
|
59
|
+
else if (!data) {
|
|
60
|
+
console.log("Verify Signature: Data Not Available");
|
|
61
|
+
resolve(true);
|
|
62
|
+
}
|
|
63
|
+
// Check if the signature is missing in headers when authentication is not skipped
|
|
64
|
+
else if (isVerifySignature && header && !(header === null || header === void 0 ? void 0 : header.sig)) {
|
|
65
|
+
console.log("Verify Signature Failure: Signature Not Present in Headers");
|
|
66
|
+
reject(false);
|
|
67
|
+
}
|
|
68
|
+
// Verify the signature when public key and header with signature are present and authentication is not skipped
|
|
69
|
+
else if (isVerifySignature && header && (header === null || header === void 0 ? void 0 : header.sig)) {
|
|
70
|
+
console.log("Verify Signature: Signature Present in Headers");
|
|
71
|
+
// Extract the signature and decode it
|
|
72
|
+
let signature = header.sig.split(".")[0];
|
|
73
|
+
let rawSignature = atob(signature);
|
|
74
|
+
// Split the decoded signature to get the parts
|
|
75
|
+
signature = rawSignature.split(".")[0];
|
|
76
|
+
let exp = rawSignature.split(".")[1] + "000"; // Expiration time in milliseconds
|
|
77
|
+
let iat = rawSignature.split(".")[2] + "000"; // Issued at time in milliseconds
|
|
78
|
+
// Check if the signature is valid
|
|
79
|
+
if (signature) {
|
|
80
|
+
// Check if the current time is before the expiration time
|
|
81
|
+
const dateValue = new Date().valueOf();
|
|
82
|
+
let dateCheck = dateValue < parseInt(exp);
|
|
83
|
+
// Check if the signature matches the data
|
|
84
|
+
let res = signature === data;
|
|
85
|
+
console.log("Verify Signature: Matching", signature, data);
|
|
86
|
+
console.log("Verify Signature: Time", dateValue, parseInt(exp), parseInt(exp) - dateValue);
|
|
87
|
+
console.log("Verify Signature: Date", new Date(dateValue), new Date(parseInt(exp)));
|
|
88
|
+
console.log("Verify Signature: Signature Converted to Required Format");
|
|
89
|
+
// Resolve the promise if the signature is valid and the date check passes
|
|
90
|
+
if (res && dateCheck) {
|
|
91
|
+
console.log("Verify Signature Success");
|
|
92
|
+
resolve(res);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
// Reject the promise if the signature is invalid or the date check fails
|
|
96
|
+
console.log("Verify Signature Failure: Signature did not match");
|
|
97
|
+
reject(res);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
// Reject the promise if the signature is not in the required format
|
|
102
|
+
console.log("Verify Signature Failure: Signature Not Converted to Required Format");
|
|
103
|
+
reject(false);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
// Resolve the promise if the signature is missing in headers
|
|
108
|
+
console.log("Verify Signature Failure: Signature Not Present in Headers");
|
|
109
|
+
resolve(true);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// Function to perform POST request
|
|
114
|
+
post(url, body, headerData, isEncrypt = false, isDecrypt = false, isVerifySignature = false, isSkipHeaderAlteration = false) {
|
|
115
|
+
let preProcessedHeader = headerData;
|
|
116
|
+
// Preprocess header data unless instructed to skip
|
|
117
|
+
if (!isSkipHeaderAlteration) {
|
|
118
|
+
preProcessedHeader = this.preProcessHeader(headerData, isVerifySignature);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
preProcessedHeader["observe"] = "response";
|
|
122
|
+
}
|
|
123
|
+
// Encrypt body if required
|
|
124
|
+
if (isEncrypt) {
|
|
125
|
+
body = encryptWithAES(JSON.stringify(body));
|
|
126
|
+
}
|
|
127
|
+
return new Observable((subscriber) => {
|
|
128
|
+
axios.post(url, body, headerData).then((res) => __awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
let data = res["data"];
|
|
130
|
+
// Decrypt response if required
|
|
131
|
+
if (data && isDecrypt) {
|
|
132
|
+
const encryptedResponse = data;
|
|
133
|
+
const decryptedResponse = yield decryptWithAES(encryptedResponse);
|
|
134
|
+
data = JSON.parse(decryptedResponse);
|
|
135
|
+
console.log("Decrypted Response", data);
|
|
136
|
+
res.data = data;
|
|
137
|
+
}
|
|
138
|
+
// Verify signature and handle response
|
|
139
|
+
this.verifySignature(this.dataDerivativeLogic(data), res === null || res === void 0 ? void 0 : res.headers, url, isVerifySignature)
|
|
140
|
+
.then((verification) => {
|
|
141
|
+
subscriber.next(res);
|
|
142
|
+
subscriber.complete();
|
|
143
|
+
})
|
|
144
|
+
.catch((err) => {
|
|
145
|
+
subscriber.error(err === null || err === void 0 ? void 0 : err.response);
|
|
146
|
+
});
|
|
147
|
+
}), (err) => __awaiter(this, void 0, void 0, function* () {
|
|
148
|
+
var _a, _b;
|
|
149
|
+
let data = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.data;
|
|
150
|
+
// Decrypt error response if required
|
|
151
|
+
if (data && isDecrypt) {
|
|
152
|
+
const encryptedResponse = data;
|
|
153
|
+
const decryptedResponse = yield decryptWithAES(encryptedResponse);
|
|
154
|
+
data = JSON.parse(decryptedResponse);
|
|
155
|
+
console.log("Decrypted Response", data);
|
|
156
|
+
err.response.data = data;
|
|
157
|
+
}
|
|
158
|
+
// Verify signature and handle response
|
|
159
|
+
this.verifySignature(this.dataDerivativeLogic(data), (_b = err === null || err === void 0 ? void 0 : err.response) === null || _b === void 0 ? void 0 : _b.headers, url, isVerifySignature)
|
|
160
|
+
.then((verification) => {
|
|
161
|
+
subscriber.error(err === null || err === void 0 ? void 0 : err.response);
|
|
162
|
+
})
|
|
163
|
+
.catch((err) => {
|
|
164
|
+
subscriber.error(err === null || err === void 0 ? void 0 : err.response);
|
|
165
|
+
});
|
|
166
|
+
}));
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
// Function to perform GET request
|
|
170
|
+
get(url, headerData = undefined, isDecrypt = false, isVerifySignature = false, isSkipHeaderAlteration = false) {
|
|
171
|
+
let preProcessedHeader = headerData;
|
|
172
|
+
// Preprocess header data unless instructed to skip
|
|
173
|
+
if (!isSkipHeaderAlteration) {
|
|
174
|
+
preProcessedHeader = this.preProcessHeader(headerData, isVerifySignature);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
preProcessedHeader["observe"] = "response";
|
|
178
|
+
}
|
|
179
|
+
return new Observable((subscriber) => {
|
|
180
|
+
axios.get(url, preProcessedHeader).then((res) => __awaiter(this, void 0, void 0, function* () {
|
|
181
|
+
let data = res["data"];
|
|
182
|
+
// Decrypt response if required
|
|
183
|
+
if (isDecrypt) {
|
|
184
|
+
const encryptedResponse = data;
|
|
185
|
+
const decryptedResponse = yield decryptWithAES(encryptedResponse);
|
|
186
|
+
data = JSON.parse(decryptedResponse);
|
|
187
|
+
console.log("Decrypted Response", data);
|
|
188
|
+
res.data = data;
|
|
189
|
+
}
|
|
190
|
+
// Verify signature and handle response
|
|
191
|
+
this.verifySignature(this.dataDerivativeLogic(data), res === null || res === void 0 ? void 0 : res.headers, url, isVerifySignature)
|
|
192
|
+
.then((verification) => {
|
|
193
|
+
subscriber.next(res);
|
|
194
|
+
subscriber.complete();
|
|
195
|
+
})
|
|
196
|
+
.catch((err) => {
|
|
197
|
+
subscriber.error(err === null || err === void 0 ? void 0 : err.response);
|
|
198
|
+
});
|
|
199
|
+
}), (err) => __awaiter(this, void 0, void 0, function* () {
|
|
200
|
+
var _a, _b;
|
|
201
|
+
let data = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.data;
|
|
202
|
+
// Decrypt error response if required
|
|
203
|
+
if (data && isDecrypt) {
|
|
204
|
+
const encryptedResponse = data;
|
|
205
|
+
const decryptedResponse = yield decryptWithAES(encryptedResponse);
|
|
206
|
+
data = JSON.parse(decryptedResponse);
|
|
207
|
+
console.log("Decrypted Response", data);
|
|
208
|
+
err.response.data = data;
|
|
209
|
+
}
|
|
210
|
+
// Verify signature and handle response
|
|
211
|
+
this.verifySignature(this.dataDerivativeLogic(data), (_b = err === null || err === void 0 ? void 0 : err.response) === null || _b === void 0 ? void 0 : _b.headers, url, isVerifySignature)
|
|
212
|
+
.then((verification) => {
|
|
213
|
+
subscriber.error(err === null || err === void 0 ? void 0 : err.response);
|
|
214
|
+
})
|
|
215
|
+
.catch((err) => {
|
|
216
|
+
subscriber.error(err === null || err === void 0 ? void 0 : err.response);
|
|
217
|
+
});
|
|
218
|
+
}));
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
// Function to execute API call based on method type
|
|
222
|
+
executeApiCall(url, method, body, headers, isEncrypt, isDecrypt, isVerifySignature) {
|
|
223
|
+
return new Promise((resolve) => {
|
|
224
|
+
if (method == "GET") {
|
|
225
|
+
this.get(url, { headers: headers }, isDecrypt, isVerifySignature).subscribe((res) => {
|
|
226
|
+
resolve(res);
|
|
227
|
+
}, (err) => {
|
|
228
|
+
resolve(err);
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
this.post(url, body, { headers: headers }, isEncrypt, isDecrypt, isVerifySignature).subscribe((res) => {
|
|
233
|
+
resolve(res);
|
|
234
|
+
}, (err) => {
|
|
235
|
+
resolve(err);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
__decorate([
|
|
242
|
+
logMethod
|
|
243
|
+
], KwikIDFormViewApiService.prototype, "dataDerivativeLogic", null);
|
|
244
|
+
__decorate([
|
|
245
|
+
logMethod
|
|
246
|
+
], KwikIDFormViewApiService.prototype, "preProcessHeader", null);
|
|
247
|
+
__decorate([
|
|
248
|
+
logMethod
|
|
249
|
+
], KwikIDFormViewApiService.prototype, "verifySignature", null);
|
|
250
|
+
__decorate([
|
|
251
|
+
logMethod
|
|
252
|
+
], KwikIDFormViewApiService.prototype, "post", null);
|
|
253
|
+
__decorate([
|
|
254
|
+
logMethod
|
|
255
|
+
], KwikIDFormViewApiService.prototype, "get", null);
|
|
256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS12aWV3LmFwaS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa2lkLWZvcm1zL3NyYy9saWIvcmVuZGVyZXIvZm9ybS12aWV3L2Zvcm0tdmlldy5hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFDO0FBQzFCLE9BQU8sRUFDTCxjQUFjLEVBQ2QsY0FBYyxFQUNkLGVBQWUsRUFDZixTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxFQUFFLElBQUksTUFBTSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRXBDLE1BQU0sT0FBTyx3QkFBd0I7SUFHbkM7UUFGUSxhQUFRLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFFckQsQ0FBQztJQUVoQixxQ0FBcUM7SUFFckMsbUJBQW1CLENBQUMsSUFBSTtRQUN0QixJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN6QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztZQUN0QixNQUFNLGdCQUFnQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFFOUMsNERBQTREO1lBQzVELEtBQUssTUFBTSxJQUFJLElBQUksVUFBVSxFQUFFO2dCQUM3QixJQUFJLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRTtvQkFDbkMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMs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dCB7XG4gIGRlY3J5cHRXaXRoQUVTLFxuICBlbmNyeXB0V2l0aEFFUyxcbiAgaXNOb3RFbXB0eVZhbHVlLFxuICBsb2dNZXRob2Rcbn0gZnJvbSBcImt3aWtpZC10b29sa2l0XCI7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gXCJ1dWlkXCI7XG5cbmV4cG9ydCBjbGFzcyBLd2lrSURGb3JtVmlld0FwaVNlcnZpY2Uge1xuICBwcml2YXRlIGJ5dGVjb2RlID0gWzB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzgsIDB4MzhdO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICAvLyBGdW5jdGlvbiB0byBkZXJpdmUgbG9naWMgZnJvbSBkYXRhXG4gIEBsb2dNZXRob2RcbiAgZGF0YURlcml2YXRpdmVMb2dpYyhkYXRhKSB7XG4gICAgaWYgKGlzTm90RW1wdHlWYWx1ZShkYXRhKSkge1xuICAgICAgY29uc3QgZGF0YVN0cmluZyA9IEpTT04uc3RyaW5naWZ5KGRhdGEpO1xuICAgICAgY29uc3QgY2hhckNvdW50cyA9IHt9O1xuICAgICAgY29uc3QgdGFyZ2V0Q2hhcmFjdGVycyA9IFtcImFcIiwgXCJpXCIsIFwicFwiLCBcInRcIl07XG5cbiAgICAgIC8vIENvdW50IG9jY3VycmVuY2VzIG9mIHRhcmdldCBjaGFyYWN0ZXJzIGluIHRoZSBkYXRhIHN0cmluZ1xuICAgICAgZm9yIChjb25zdCBjaGFyIG9mIGRhdGFTdHJpbmcpIHtcbiAgICAgICAgaWYgKHRhcmdldENoYXJhY3RlcnMuaW5jbHVkZXMoY2hhcikpIHtcbiAgICAgICAgICBjaGFyQ291bnRzW2NoYXJdID0gKGNoYXJDb3VudHNbY2hhcl0gfHwgMCkgKyAxO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENvbnN0cnVjdCB0aGUgb3V0cHV0IHN0cmluZyBiYXNlZCBvbiB0aGUgY2hhcmFjdGVyIGNvdW50c1xuICAgICAgY29uc3Qgb3V0cHV0U3RyaW5nID0gdGFyZ2V0Q2hhcmFjdGVyc1xuICAgICAgICAubWFwKChjaGFyKSA9PiBjaGFyICsgKGNoYXJDb3VudHNbY2hhcl0gfHwgMCkpXG4gICAgICAgIC5qb2luKFwiXCIpO1xuICAgICAgcmV0dXJuIG91dHB1dFN0cmluZztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvLyBGdW5jdGlvbiB0byBwcmVwcm9jZXNzIGhlYWRlciBkYXRhXG4gIEBsb2dNZXRob2RcbiAgcHJlUHJvY2Vzc0hlYWRlcihoZWFkZXJEYXRhOiBhbnksIGlzVmVyaWZ5U2lnbmF0dXJlOiBib29sZWFuKTogYW55IHtcbiAgICBpZiAoIWhlYWRlckRhdGEpIGhlYWRlckRhdGEgPSB7fTtcbiAgICBpZiAoIWhlYWRlckRhdGEuaGVhZGVycykgaGVhZGVyRGF0YVtcImhlYWRlcnNcIl0gPSB7fTtcblxuICAgIC8vIEdlbmVyYXRlIGEgdW5pcXVlIGlkZW50aWZpZXIgaWYgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbiBpcyByZXF1aXJlZFxuICAgIGlmIChpc1ZlcmlmeVNpZ25hdHVyZSkge1xuICAgICAgaGVhZGVyRGF0YVtcImhlYWRlcnNcIl1bXCJ4cmlkXCJdID0gdXVpZHY0KCk7XG4gICAgfVxuXG4gICAgLy8gUmV0cmlldmUgc2Vzc2lvbiBJRCBmcm9tIGxvY2FsIHN0b3JhZ2UgYW5kIGFkZCBpdCB0byBoZWFkZXJzXG4gICAgbGV0IHNlc3Npb25faWQgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbShcInNlc3Npb25faWRcIik7XG4gICAgaWYgKHNlc3Npb25faWQpIGhlYWRlckRhdGFbXCJoZWFkZXJzXCJdW1wic2VzXCJdID0gc2Vzc2lvbl9pZDtcblxuICAgIHJldHVybiBoZWFkZXJEYXRhO1xuICB9XG5cbiAgLy8gRnVuY3Rpb24gdG8gdmVyaWZ5IHRoZSBzaWduYXR1cmVcbiAgQGxvZ01ldGhvZFxuICB2ZXJpZnlTaWduYXR1cmUoZGF0YSwgaGVhZGVyLCB1cmwsIGlzVmVyaWZ5U2lnbmF0dXJlKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIExvZyB0aGUgZnVuY3Rpb24gY2FsbCBmb3IgdmVyaWZpY2F0aW9uXG4gICAgICBjb25zb2xlLmxvZyhcIlZlcmlmeSBTaWduYXR1cmU6IEZ1bmN0aW9uIENhbGxlZCBGb3JcIiwgdXJsLCBoZWFkZXIpO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGUgc2lnbmF0dXJlIGlzIGRpc2FibGVkXG4gICAgICBpZiAoIWlzVmVyaWZ5U2lnbmF0dXJlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiVmVyaWZ5IFNpZ25hdHVyZTogQXV0aGVudGljYXRpb24gRGlzYWJsZWRcIik7XG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIGRhdGEgaXMgaW52YWxpZFxuICAgICAgZWxzZSBpZiAoIWRhdGEpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJWZXJpZnkgU2lnbmF0dXJlOiBEYXRhIE5vdCBBdmFpbGFibGVcIik7XG4gICAgICAgIHJlc29sdmUodHJ1ZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHRoZSBzaWduYXR1cmUgaXMgbWlzc2luZyBpbiBoZWFkZXJzIHdoZW4gYXV0aGVudGljYXRpb24gaXMgbm90IHNraXBwZWRcbiAgICAgIGVsc2UgaWYgKGlzVmVyaWZ5U2lnbmF0dXJlICYmIGhlYWRlciAmJiAhaGVhZGVyPy5zaWcpIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgXCJWZXJpZnkgU2lnbmF0dXJlIEZhaWx1cmU6IFNpZ25hdHVyZSBOb3QgUHJlc2VudCBpbiBIZWFkZXJzXCJcbiAgICAgICAgKTtcbiAgICAgICAgcmVqZWN0KGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgLy8gVmVyaWZ5IHRoZSBzaWduYXR1cmUgd2hlbiBwdWJsaWMga2V5IGFuZCBoZWFkZXIgd2l0aCBzaWduYXR1cmUgYXJlIHByZXNlbnQgYW5kIGF1dGhlbnRpY2F0aW9uIGlzIG5vdCBza2lwcGVkXG4gICAgICBlbHNlIGlmIChpc1ZlcmlmeVNpZ25hdHVyZSAmJiBoZWFkZXIgJiYgaGVhZGVyPy5zaWcpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJWZXJpZnkgU2lnbmF0dXJlOiBTaWduYXR1cmUgUHJlc2VudCBpbiBIZWFkZXJzXCIpO1xuXG4gICAgICAgIC8vIEV4dHJhY3QgdGhlIHNpZ25hdHVyZSBhbmQgZGVjb2RlIGl0XG4gICAgICAgIGxldCBzaWduYXR1cmUgPSBoZWFkZXIuc2lnLnNwbGl0KFwiLlwiKVswXTtcbiAgICAgICAgbGV0IHJhd1NpZ25hdHVyZSA9IGF0b2Ioc2lnbmF0dXJlKTtcblxuICAgICAgICAvLyBTcGxpdCB0aGUgZGVjb2RlZCBzaWduYXR1cmUgdG8gZ2V0IHRoZSBwYXJ0c1xuICAgICAgICBzaWduYXR1cmUgPSByYXdTaWduYXR1cmUuc3BsaXQoXCIuXCIpWzBdO1xuICAgICAgICBsZXQgZXhwID0gcmF3U2lnbmF0dXJlLnNwbGl0KFwiLlwiKVsxXSArIFwiMDAwXCI7IC8vIEV4cGlyYXRpb24gdGltZSBpbiBtaWxsaXNlY29uZHNcbiAgICAgICAgbGV0IGlhdCA9IHJhd1NpZ25hdHVyZS5zcGxpdChcIi5cIilbMl0gKyBcIjAwMFwiOyAvLyBJc3N1ZWQgYXQgdGltZSBpbiBtaWxsaXNlY29uZHNcblxuICAgICAgICAvLyBDaGVjayBpZiB0aGUgc2lnbmF0dXJlIGlzIHZhbGlkXG4gICAgICAgIGlmIChzaWduYXR1cmUpIHtcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCB0aW1lIGlzIGJlZm9yZSB0aGUgZXhwaXJhdGlvbiB0aW1lXG4gICAgICAgICAgY29uc3QgZGF0ZVZhbHVlID0gbmV3IERhdGUoKS52YWx1ZU9mKCk7XG4gICAgICAgICAgbGV0IGRhdGVDaGVjayA9IGRhdGVWYWx1ZSA8IHBhcnNlSW50KGV4cCk7XG5cbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgc2lnbmF0dXJlIG1hdGNoZXMgdGhlIGRhdGFcbiAgICAgICAgICBsZXQgcmVzID0gc2lnbmF0dXJlID09PSBkYXRhO1xuICAgICAgICAgIGNvbnNvbGUubG9nKFwiVmVyaWZ5IFNpZ25hdHVyZTogTWF0Y2hpbmdcIiwgc2lnbmF0dXJlLCBkYXRhKTtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIFwiVmVyaWZ5IFNpZ25hdHVyZTogVGltZVwiLFxuICAgICAgICAgICAgZGF0ZVZhbHVlLFxuICAgICAgICAgICAgcGFyc2VJbnQoZXhwKSxcbiAgICAgICAgICAgIHBhcnNlSW50KGV4cCkgLSBkYXRlVmFsdWVcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBcIlZlcmlmeSBTaWduYXR1cmU6IERhdGVcIixcbiAgICAgICAgICAgIG5ldyBEYXRlKGRhdGVWYWx1ZSksXG4gICAgICAgICAgICBuZXcgRGF0ZShwYXJzZUludChleHApKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgIFwiVmVyaWZ5IFNpZ25hdHVyZTogU2lnbmF0dXJlIENvbnZlcnRlZCB0byBSZXF1aXJlZCBGb3JtYXRcIlxuICAgICAgICAgICk7XG5cbiAgICAgICAgICAvLyBSZXNvbHZlIHRoZSBwcm9taXNlIGlmIHRoZSBzaWduYXR1cmUgaXMgdmFsaWQgYW5kIHRoZSBkYXRlIGNoZWNrIHBhc3Nlc1xuICAgICAgICAgIGlmIChyZXMgJiYgZGF0ZUNoZWNrKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIlZlcmlmeSBTaWduYXR1cmUgU3VjY2Vzc1wiKTtcbiAgICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8gUmVqZWN0IHRoZSBwcm9taXNlIGlmIHRoZSBzaWduYXR1cmUgaXMgaW52YWxpZCBvciB0aGUgZGF0ZSBjaGVjayBmYWlsc1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJWZXJpZnkgU2lnbmF0dXJlIEZhaWx1cmU6IFNpZ25hdHVyZSBkaWQgbm90IG1hdGNoXCIpO1xuICAgICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFJlamVjdCB0aGUgcHJvbWlzZSBpZiB0aGUgc2lnbmF0dXJlIGlzIG5vdCBpbiB0aGUgcmVxdWlyZWQgZm9ybWF0XG4gICAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgICBcIlZlcmlmeSBTaWduYXR1cmUgRmFpbHVyZTogU2lnbmF0dXJlIE5vdCBDb252ZXJ0ZWQgdG8gUmVxdWlyZWQgRm9ybWF0XCJcbiAgICAgICAgICApO1xuICAgICAgICAgIHJlamVjdChmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlc29sdmUgdGhlIHByb21pc2UgaWYgdGhlIHNpZ25hdHVyZSBpcyBtaXNzaW5nIGluIGhlYWRlcnNcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgXCJWZXJpZnkgU2lnbmF0dXJlIEZhaWx1cmU6IFNpZ25hdHVyZSBOb3QgUHJlc2VudCBpbiBIZWFkZXJzXCJcbiAgICAgICAgKTtcbiAgICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIEZ1bmN0aW9uIHRvIHBlcmZvcm0gUE9TVCByZXF1ZXN0XG4gIEBsb2dNZXRob2RcbiAgcG9zdChcbiAgICB1cmwsXG4gICAgYm9keSxcbiAgICBoZWFkZXJEYXRhLFxuICAgIGlzRW5jcnlwdCA9IGZhbHNlLFxuICAgIGlzRGVjcnlwdCA9IGZhbHNlLFxuICAgIGlzVmVyaWZ5U2lnbmF0dXJlID0gZmFsc2UsXG4gICAgaXNTa2lwSGVhZGVyQWx0ZXJhdGlvbiA9IGZhbHNlXG4gICkge1xuICAgIGxldCBwcmVQcm9jZXNzZWRIZWFkZXIgPSBoZWFkZXJEYXRhO1xuXG4gICAgLy8gUHJlcHJvY2VzcyBoZWFkZXIgZGF0YSB1bmxlc3MgaW5zdHJ1Y3RlZCB0byBza2lwXG4gICAgaWYgKCFpc1NraXBIZWFkZXJBbHRlcmF0aW9uKSB7XG4gICAgICBwcmVQcm9jZXNzZWRIZWFkZXIgPSB0aGlzLnByZVByb2Nlc3NIZWFkZXIoaGVhZGVyRGF0YSwgaXNWZXJpZnlTaWduYXR1cmUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcmVQcm9jZXNzZWRIZWFkZXJbXCJvYnNlcnZlXCJdID0gXCJyZXNwb25zZVwiO1xuICAgIH1cblxuICAgIC8vIEVuY3J5cHQgYm9keSBpZiByZXF1aXJlZFxuICAgIGlmIChpc0VuY3J5cHQpIHtcbiAgICAgIGJvZHkgPSBlbmNyeXB0V2l0aEFFUyhKU09OLnN0cmluZ2lmeShib2R5KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBheGlvcy5wb3N0KHVybCwgYm9keSwgaGVhZGVyRGF0YSkudGhlbihcbiAgICAgICAgYXN5bmMgKHJlcykgPT4ge1xuICAgICAgICAgIGxldCBkYXRhID0gcmVzW1wiZGF0YVwiXTtcblxuICAgICAgICAgIC8vIERlY3J5cHQgcmVzcG9uc2UgaWYgcmVxdWlyZWRcbiAgICAgICAgICBpZiAoZGF0YSAmJiBpc0RlY3J5cHQpIHtcbiAgICAgICAgICAgIGNvbnN0IGVuY3J5cHRlZFJlc3BvbnNlID0gZGF0YTtcbiAgICAgICAgICAgIGNvbnN0IGRlY3J5cHRlZFJlc3BvbnNlID0gYXdhaXQgZGVjcnlwdFdpdGhBRVMoZW5jcnlwdGVkUmVzcG9uc2UpO1xuICAgICAgICAgICAgZGF0YSA9IEpTT04ucGFyc2UoZGVjcnlwdGVkUmVzcG9uc2UpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coXCJEZWNyeXB0ZWQgUmVzcG9uc2VcIiwgZGF0YSk7XG4gICAgICAgICAgICByZXMuZGF0YSA9IGRhdGE7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gVmVyaWZ5IHNpZ25hdHVyZSBhbmQgaGFuZGxlIHJlc3BvbnNlXG4gICAgICAgICAgdGhpcy52ZXJpZnlTaWduYXR1cmUoXG4gICAgICAgICAgICB0aGlzLmRhdGFEZXJpdmF0aXZlTG9naWMoZGF0YSksXG4gICAgICAgICAgICByZXM/LmhlYWRlcnMsXG4gICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICBpc1ZlcmlmeVNpZ25hdHVyZVxuICAgICAgICAgIClcbiAgICAgICAgICAgIC50aGVuKCh2ZXJpZmljYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHJlcyk7XG4gICAgICAgICAgICAgIHN1YnNjcmliZXIuY29tcGxldGUoKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycj8ucmVzcG9uc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGFzeW5jIChlcnIpID0+IHtcbiAgICAgICAgICBsZXQgZGF0YSA9IGVycj8ucmVzcG9uc2U/LmRhdGE7XG5cbiAgICAgICAgICAvLyBEZWNyeXB0IGVycm9yIHJlc3BvbnNlIGlmIHJlcXVpcmVkXG4gICAgICAgICAgaWYgKGRhdGEgJiYgaXNEZWNyeXB0KSB7XG4gICAgICAgICAgICBjb25zdCBlbmNyeXB0ZWRSZXNwb25zZSA9IGRhdGE7XG4gICAgICAgICAgICBjb25zdCBkZWNyeXB0ZWRSZXNwb25zZSA9IGF3YWl0IGRlY3J5cHRXaXRoQUVTKGVuY3J5cHRlZFJlc3BvbnNlKTtcbiAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRlY3J5cHRlZFJlc3BvbnNlKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRGVjcnlwdGVkIFJlc3BvbnNlXCIsIGRhdGEpO1xuICAgICAgICAgICAgZXJyLnJlc3BvbnNlLmRhdGEgPSBkYXRhO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFZlcmlmeSBzaWduYXR1cmUgYW5kIGhhbmRsZSByZXNwb25zZVxuICAgICAgICAgIHRoaXMudmVyaWZ5U2lnbmF0dXJlKFxuICAgICAgICAgICAgdGhpcy5kYXRhRGVyaXZhdGl2ZUxvZ2ljKGRhdGEpLFxuICAgICAgICAgICAgZXJyPy5yZXNwb25zZT8uaGVhZGVycyxcbiAgICAgICAgICAgIHVybCxcbiAgICAgICAgICAgIGlzVmVyaWZ5U2lnbmF0dXJlXG4gICAgICAgICAgKVxuICAgICAgICAgICAgLnRoZW4oKHZlcmlmaWNhdGlvbikgPT4ge1xuICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycj8ucmVzcG9uc2UpO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyPy5yZXNwb25zZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIEZ1bmN0aW9uIHRvIHBlcmZvcm0gR0VUIHJlcXVlc3RcbiAgQGxvZ01ldGhvZFxuICBnZXQoXG4gICAgdXJsLFxuICAgIGhlYWRlckRhdGEgPSB1bmRlZmluZWQsXG4gICAgaXNEZWNyeXB0ID0gZmFsc2UsXG4gICAgaXNWZXJpZnlTaWduYXR1cmUgPSBmYWxzZSxcbiAgICBpc1NraXBIZWFkZXJBbHRlcmF0aW9uID0gZmFsc2VcbiAgKSB7XG4gICAgbGV0IHByZVByb2Nlc3NlZEhlYWRlciA9IGhlYWRlckRhdGE7XG5cbiAgICAvLyBQcmVwcm9jZXNzIGhlYWRlciBkYXRhIHVubGVzcyBpbnN0cnVjdGVkIHRvIHNraXBcbiAgICBpZiAoIWlzU2tpcEhlYWRlckFsdGVyYXRpb24pIHtcbiAgICAgIHByZVByb2Nlc3NlZEhlYWRlciA9IHRoaXMucHJlUHJvY2Vzc0hlYWRlcihoZWFkZXJEYXRhLCBpc1ZlcmlmeVNpZ25hdHVyZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByZVByb2Nlc3NlZEhlYWRlcltcIm9ic2VydmVcIl0gPSBcInJlc3BvbnNlXCI7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKChzdWJzY3JpYmVyKSA9PiB7XG4gICAgICBheGlvcy5nZXQodXJsLCBwcmVQcm9jZXNzZWRIZWFkZXIpLnRoZW4oXG4gICAgICAgIGFzeW5jIChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGxldCBkYXRhID0gcmVzW1wiZGF0YVwiXTtcblxuICAgICAgICAgIC8vIERlY3J5cHQgcmVzcG9uc2UgaWYgcmVxdWlyZWRcbiAgICAgICAgICBpZiAoaXNEZWNyeXB0KSB7XG4gICAgICAgICAgICBjb25zdCBlbmNyeXB0ZWRSZXNwb25zZSA9IGRhdGE7XG4gICAgICAgICAgICBjb25zdCBkZWNyeXB0ZWRSZXNwb25zZSA9IGF3YWl0IGRlY3J5cHRXaXRoQUVTKGVuY3J5cHRlZFJlc3BvbnNlKTtcbiAgICAgICAgICAgIGRhdGEgPSBKU09OLnBhcnNlKGRlY3J5cHRlZFJlc3BvbnNlKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRGVjcnlwdGVkIFJlc3BvbnNlXCIsIGRhdGEpO1xuICAgICAgICAgICAgcmVzLmRhdGEgPSBkYXRhO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFZlcmlmeSBzaWduYXR1cmUgYW5kIGhhbmRsZSByZXNwb25zZVxuICAgICAgICAgIHRoaXMudmVyaWZ5U2lnbmF0dXJlKFxuICAgICAgICAgICAgdGhpcy5kYXRhRGVyaXZhdGl2ZUxvZ2ljKGRhdGEpLFxuICAgICAgICAgICAgcmVzPy5oZWFkZXJzLFxuICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgaXNWZXJpZnlTaWduYXR1cmVcbiAgICAgICAgICApXG4gICAgICAgICAgICAudGhlbigodmVyaWZpY2F0aW9uKSA9PiB7XG4gICAgICAgICAgICAgIHN1YnNjcmliZXIubmV4dChyZXMpO1xuICAgICAgICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnI/LnJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICBhc3luYyAoZXJyKSA9PiB7XG4gICAgICAgICAgbGV0IGRhdGEgPSBlcnI/LnJlc3BvbnNlPy5kYXRhO1xuXG4gICAgICAgICAgLy8gRGVjcnlwdCBlcnJvciByZXNwb25zZSBpZiByZXF1aXJlZFxuICAgICAgICAgIGlmIChkYXRhICYmIGlzRGVjcnlwdCkge1xuICAgICAgICAgICAgY29uc3QgZW5jcnlwdGVkUmVzcG9uc2UgPSBkYXRhO1xuICAgICAgICAgICAgY29uc3QgZGVjcnlwdGVkUmVzcG9uc2UgPSBhd2FpdCBkZWNyeXB0V2l0aEFFUyhlbmNyeXB0ZWRSZXNwb25zZSk7XG4gICAgICAgICAgICBkYXRhID0gSlNPTi5wYXJzZShkZWNyeXB0ZWRSZXNwb25zZSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcIkRlY3J5cHRlZCBSZXNwb25zZVwiLCBkYXRhKTtcbiAgICAgICAgICAgIGVyci5yZXNwb25zZS5kYXRhID0gZGF0YTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBWZXJpZnkgc2lnbmF0dXJlIGFuZCBoYW5kbGUgcmVzcG9uc2VcbiAgICAgICAgICB0aGlzLnZlcmlmeVNpZ25hdHVyZShcbiAgICAgICAgICAgIHRoaXMuZGF0YURlcml2YXRpdmVMb2dpYyhkYXRhKSxcbiAgICAgICAgICAgIGVycj8ucmVzcG9uc2U/LmhlYWRlcnMsXG4gICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICBpc1ZlcmlmeVNpZ25hdHVyZVxuICAgICAgICAgIClcbiAgICAgICAgICAgIC50aGVuKCh2ZXJpZmljYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgc3Vic2NyaWJlci5lcnJvcihlcnI/LnJlc3BvbnNlKTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICAgICAgICBzdWJzY3JpYmVyLmVycm9yKGVycj8ucmVzcG9uc2UpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBGdW5jdGlvbiB0byBleGVjdXRlIEFQSSBjYWxsIGJhc2VkIG9uIG1ldGhvZCB0eXBlXG4gIGV4ZWN1dGVBcGlDYWxsKFxuICAgIHVybCxcbiAgICBtZXRob2QsXG4gICAgYm9keSxcbiAgICBoZWFkZXJzLFxuICAgIGlzRW5jcnlwdCxcbiAgICBpc0RlY3J5cHQsXG4gICAgaXNWZXJpZnlTaWduYXR1cmVcbiAgKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBpZiAobWV0aG9kID09IFwiR0VUXCIpIHtcbiAgICAgICAgdGhpcy5nZXQoXG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIHsgaGVhZGVyczogaGVhZGVycyB9LFxuICAgICAgICAgIGlzRGVjcnlwdCxcbiAgICAgICAgICBpc1ZlcmlmeVNpZ25hdHVyZVxuICAgICAgICApLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnBvc3QoXG4gICAgICAgICAgdXJsLFxuICAgICAgICAgIGJvZHksXG4gICAgICAgICAgeyBoZWFkZXJzOiBoZWFkZXJzIH0sXG4gICAgICAgICAgaXNFbmNyeXB0LFxuICAgICAgICAgIGlzRGVjcnlwdCxcbiAgICAgICAgICBpc1ZlcmlmeVNpZ25hdHVyZVxuICAgICAgICApLnN1YnNjcmliZShcbiAgICAgICAgICAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIChlcnIpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoZXJyKTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|