appium-ios-device 2.5.0 → 2.5.2
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/CHANGELOG.md +14 -0
- package/build/lib/afc/index.js +1 -1
- package/build/lib/afc/index.js.map +1 -1
- package/build/lib/afc/streams.js +1 -1
- package/build/lib/afc/streams.js.map +1 -1
- package/build/lib/afc/transformer/afcdecoder.js +1 -1
- package/build/lib/afc/transformer/afcdecoder.js.map +1 -1
- package/build/lib/base-service.js +1 -1
- package/build/lib/base-service.js.map +1 -1
- package/build/lib/house-arrest/index.js +1 -1
- package/build/lib/house-arrest/index.js.map +1 -1
- package/build/lib/installation-proxy/index.js +1 -1
- package/build/lib/installation-proxy/index.js.map +1 -1
- package/build/lib/instrument/headers.js +1 -1
- package/build/lib/instrument/headers.js.map +1 -1
- package/build/lib/instrument/index.js +1 -1
- package/build/lib/instrument/index.js.map +1 -1
- package/build/lib/instrument/transformer/dtx-decode.js +1 -1
- package/build/lib/instrument/transformer/dtx-decode.js.map +1 -1
- package/build/lib/instrument/transformer/dtx-encode.js +1 -1
- package/build/lib/instrument/transformer/dtx-encode.js.map +1 -1
- package/build/lib/instrument/transformer/nskeyed.js +1 -1
- package/build/lib/instrument/transformer/nskeyed.js.map +1 -1
- package/build/lib/mcinstall/index.js +1 -1
- package/build/lib/mcinstall/index.js.map +1 -1
- package/build/lib/notification-proxy/index.js +1 -1
- package/build/lib/notification-proxy/index.js.map +1 -1
- package/build/lib/plist-service/index.js +1 -1
- package/build/lib/plist-service/index.js.map +1 -1
- package/build/lib/plist-service/transformer/plist-service-decoder.js +1 -1
- package/build/lib/plist-service/transformer/plist-service-decoder.js.map +1 -1
- package/build/lib/plist-service/transformer/plist-service-encoder.js +1 -1
- package/build/lib/plist-service/transformer/plist-service-encoder.js.map +1 -1
- package/build/lib/services.js +1 -1
- package/build/lib/services.js.map +1 -1
- package/build/lib/ssl-helper.js +1 -1
- package/build/lib/ssl-helper.js.map +1 -1
- package/build/lib/syslog/transformer/syslog-decoder.js +20 -29
- package/build/lib/syslog/transformer/syslog-decoder.js.map +1 -1
- package/build/lib/usbmux/index.js +1 -1
- package/build/lib/usbmux/index.js.map +1 -1
- package/build/lib/usbmux/transformer/usbmux-decoder.js +1 -1
- package/build/lib/usbmux/transformer/usbmux-decoder.js.map +1 -1
- package/build/lib/usbmux/transformer/usbmux-encoder.js +1 -1
- package/build/lib/usbmux/transformer/usbmux-encoder.js.map +1 -1
- package/build/lib/util/transformer/length-based-splitter.js +1 -1
- package/build/lib/util/transformer/length-based-splitter.js.map +1 -1
- package/build/lib/util/transformer/stream-logger.js +1 -1
- package/build/lib/util/transformer/stream-logger.js.map +1 -1
- package/build/lib/utilities.js +1 -1
- package/build/lib/utilities.js.map +1 -1
- package/build/lib/webinspector/index.js +1 -1
- package/build/lib/webinspector/index.js.map +1 -1
- package/build/lib/webinspector/transformer/webinspector-decoder.js +1 -1
- package/build/lib/webinspector/transformer/webinspector-decoder.js.map +1 -1
- package/build/lib/webinspector/transformer/webinspector-encoder.js +1 -1
- package/build/lib/webinspector/transformer/webinspector-encoder.js.map +1 -1
- package/build/lib/xctest.js +1 -1
- package/build/lib/xctest.js.map +1 -1
- package/lib/syslog/transformer/syslog-decoder.js +19 -32
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## [2.5.2](https://github.com/appium/appium-ios-device/compare/v2.5.1...v2.5.2) (2023-05-18)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Miscellaneous Chores
|
|
5
|
+
|
|
6
|
+
* Bump @appium/support from 3.1.11 to 4.0.0 ([#115](https://github.com/appium/appium-ios-device/issues/115)) ([8035128](https://github.com/appium/appium-ios-device/commit/80351281955f47a0cb1f6c93ec5ef7774595634a))
|
|
7
|
+
|
|
8
|
+
## [2.5.1](https://github.com/appium/appium-ios-device/compare/v2.5.0...v2.5.1) (2023-05-12)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* Prevent possible memory leak on logs collection ([#114](https://github.com/appium/appium-ios-device/issues/114)) ([a942cd7](https://github.com/appium/appium-ios-device/commit/a942cd7fa43e7aa39829ab14852a1f72ff60175e))
|
|
14
|
+
|
|
1
15
|
## [2.5.0](https://github.com/appium/appium-ios-device/compare/v2.4.12...v2.5.0) (2023-04-14)
|
|
2
16
|
|
|
3
17
|
|
package/build/lib/afc/index.js
CHANGED
|
@@ -288,4 +288,4 @@ class FileInfo {
|
|
|
288
288
|
}
|
|
289
289
|
var _default = AfcService;
|
|
290
290
|
exports.default = _default;
|
|
291
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVuZ3RoQmFzZWRTcGxpdHRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3Byb3RvY29sIiwiX3N0cmVhbXMiLCJfYWZjZW5jb2RlciIsIl9hZmNkZWNvZGVyIiwiX2NvbnN0YW50cyIsIl9ibHVlYmlyZCIsIl9wYXRoIiwiX2xvZGFzaCIsIl9iYXNlU2VydmljZSIsIkFGQ19TRVJWSUNFX05BTUUiLCJleHBvcnRzIiwiTUFYX0ZSQU1FX1NJWkUiLCJNQiIsIk5VTExfREVMSU1JVEVSX0NPREUiLCJJR05PUkVEX1BBVEhTIiwiQWZjU2VydmljZSIsIkJhc2VTZXJ2aWNlU29ja2V0IiwiY29uc3RydWN0b3IiLCJzb2NrZXRDbGllbnQiLCJfc3BsaXR0ZXIiLCJMZW5ndGhCYXNlZFNwbGl0dGVyIiwicmVhZGFibGVTdHJlYW0iLCJsaXR0bGVFbmRpYW4iLCJtYXhGcmFtZUxlbmd0aCIsImxlbmd0aEZpZWxkT2Zmc2V0IiwibGVuZ3RoRmllbGRMZW5ndGgiLCJsZW5ndGhBZGp1c3RtZW50IiwiX2RlY29kZXIiLCJBZmNEZWNvZGVyIiwiX3NvY2tldENsaWVudCIsInBpcGUiLCJfZW5jb2RlciIsIkFmY0VuY29kZXIiLCJfYXNzaWduQ2xpZW50RmFpbHVyZUhhbmRsZXJzIiwiX3Jlc3BvbnNlQ2FsbGJhY2tzIiwiX3BhY2tldE51bWJlciIsIm9uIiwiX2hhbmRsZURhdGEiLCJiaW5kIiwiZGF0YSIsImNiIiwicGFja2V0TnVtYmVyIiwiXyIsIm5vb3AiLCJjcmVhdGVEaXJlY3RvcnkiLCJwYXRoIiwicmVzcG9uc2UiLCJfY3JlYXRlUGFja2V0UHJvbWlzZSIsIm9wQ29kZSIsIk9wZXJhdGlvbnMiLCJNQUtFX0RJUiIsImhlYWRlclBheWxvYWQiLCJCdWZmZXIiLCJmcm9tIiwid3JpdGUiLCJyZXMiLCJfY2hlY2tTdGF0dXMiLCJkZWxldGVEaXJlY3RvcnkiLCJSRU1PVkVfUEFUSF9BTkRfQ09OVEVOVFMiLCJsaXN0RGlyZWN0b3J5IiwiUkVBRF9ESVIiLCJEQVRBIiwiX3BhcnNlQXJyYXkiLCJjb250ZW50Iiwib3BlbkZpbGUiLCJtb2RlIiwicGF0aFBheWxvYWQiLCJmaWxlTW9kZVBheWxvYWQiLCJhbGxvYyIsIndyaXRlVUludDMyTEUiLCJGSUxFX09QRU4iLCJjb25jYXQiLCJGSUxFX09QRU5fUkVTIiwicmVhZFVJbnQzMkxFIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJmaWxlUGF0aCIsIm9wdHMiLCJmaWxlSGFuZGxlIiwiRmlsZU1vZGVzIiwidyIsIkFmY1dyaXRhYmxlRmlsZVN0cmVhbSIsImNyZWF0ZVJlYWRTdHJlYW0iLCJvcHRpb25zIiwiciIsIkFmY1JlYWRhYmxlRmlsZVN0cmVhbSIsImNsb3NlRmlsZUhhbmRsZSIsIkZJTEVfQ0xPU0UiLCJ3cml0ZUZpbGUiLCJidWZmZXIiLCJGSUxFX1dSSVRFIiwicmVhZEZpbGUiLCJsZW5ndGgiLCJGSUxFX1JFQUQiLCJnZXRGaWxlSW5mbyIsIkdFVF9GSUxFX0lORk8iLCJGaWxlSW5mbyIsIl9wYXJzZU9iamVjdCIsIndhbGtEaXIiLCJkaXIiLCJyZWN1cnNpdmUiLCJvblBhdGgiLCJmaWxlIiwiaW5jbHVkZXMiLCJyZWxhdGl2ZVBhdGgiLCJwb3NpeCIsImpvaW4iLCJmaWxlSW5mbyIsImlzRGlyZWN0b3J5IiwiU1RBVFVTIiwiRXJyb3IiLCJvcGVyYXRpb25Db2RlIiwiaXNFbXB0eSIsIkVycm9ycyIsIlNVQ0NFU1MiLCJlcnJvckNvZGUiLCJpdGVtcyIsInN0YXJ0IiwiZW5kIiwiaXRlbSIsInRvU3RyaW5nIiwicHVzaCIsImN1cnJlbnRLZXkiLCJpc05pbCIsIm1lc3NhZ2UiLCJ0aW1lb3V0IiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJzZXRUaW1lb3V0Iiwic3Rfc2l6ZSIsInN0X2Jsb2NrcyIsInN0X25saW5rIiwic3RfaWZtdCIsInN0X210aW1lIiwic3RfYmlydGh0aW1lIiwic2l6ZSIsInBhcnNlSW50IiwiYmxvY2tzIiwibmxpbmsiLCJpZm10IiwibXRpbWVNcyIsImJpcnRodGltZU1zIiwiaXNGaWxlIiwiX2RlZmF1bHQiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2FmYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBMZW5ndGhCYXNlZFNwbGl0dGVyIGZyb20gJy4uL3V0aWwvdHJhbnNmb3JtZXIvbGVuZ3RoLWJhc2VkLXNwbGl0dGVyJztcbmltcG9ydCB7IE9wZXJhdGlvbnMsIG9wZXJhdGlvbkNvZGUsIEVycm9ycywgZXJyb3JDb2RlLCBGaWxlTW9kZXMgfSBmcm9tICcuL3Byb3RvY29sJztcbmltcG9ydCB7IEFmY1dyaXRhYmxlRmlsZVN0cmVhbSwgQWZjUmVhZGFibGVGaWxlU3RyZWFtIH0gZnJvbSAnLi9zdHJlYW1zJztcbmltcG9ydCBBZmNFbmNvZGVyIGZyb20gJy4vdHJhbnNmb3JtZXIvYWZjZW5jb2Rlcic7XG5pbXBvcnQgQWZjRGVjb2RlciBmcm9tICcuL3RyYW5zZm9ybWVyL2FmY2RlY29kZXInO1xuaW1wb3J0IHsgTUIgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2VTb2NrZXQgfSBmcm9tICcuLi9iYXNlLXNlcnZpY2UnO1xuXG5cbmNvbnN0IEFGQ19TRVJWSUNFX05BTUUgPSAnY29tLmFwcGxlLmFmYyc7XG5jb25zdCBNQVhfRlJBTUVfU0laRSA9IDEgKiBNQjtcblxuY29uc3QgTlVMTF9ERUxJTUlURVJfQ09ERSA9IDB4MDA7XG5jb25zdCBJR05PUkVEX1BBVEhTID0gWycuJywgJy4uJ107XG5cbmNsYXNzIEFmY1NlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZVNvY2tldCB7XG4gIGNvbnN0cnVjdG9yIChzb2NrZXRDbGllbnQpIHtcbiAgICBzdXBlcihzb2NrZXRDbGllbnQpO1xuXG4gICAgdGhpcy5fc3BsaXR0ZXIgPSBuZXcgTGVuZ3RoQmFzZWRTcGxpdHRlcih7XG4gICAgICByZWFkYWJsZVN0cmVhbTogc29ja2V0Q2xpZW50LFxuICAgICAgbGl0dGxlRW5kaWFuOiB0cnVlLFxuICAgICAgbWF4RnJhbWVMZW5ndGg6IE1BWF9GUkFNRV9TSVpFLFxuICAgICAgbGVuZ3RoRmllbGRPZmZzZXQ6IDgsXG4gICAgICBsZW5ndGhGaWVsZExlbmd0aDogOCxcbiAgICAgIGxlbmd0aEFkanVzdG1lbnQ6IC04LFxuICAgIH0pO1xuICAgIHRoaXMuX2RlY29kZXIgPSBuZXcgQWZjRGVjb2RlcigpO1xuICAgIHRoaXMuX3NvY2tldENsaWVudC5waXBlKHRoaXMuX3NwbGl0dGVyKS5waXBlKHRoaXMuX2RlY29kZXIpO1xuXG4gICAgdGhpcy5fZW5jb2RlciA9IG5ldyBBZmNFbmNvZGVyKCk7XG4gICAgdGhpcy5fZW5jb2Rlci5waXBlKHRoaXMuX3NvY2tldENsaWVudCk7XG4gICAgdGhpcy5fYXNzaWduQ2xpZW50RmFpbHVyZUhhbmRsZXJzKHRoaXMuX2VuY29kZXIpO1xuXG4gICAgdGhpcy5fcmVzcG9uc2VDYWxsYmFja3MgPSB7fTtcblxuICAgIHRoaXMuX3BhY2tldE51bWJlciA9IDA7XG4gICAgdGhpcy5fZGVjb2Rlci5vbignZGF0YScsIHRoaXMuX2hhbmRsZURhdGEuYmluZCh0aGlzKSk7XG4gIH1cblxuICBfaGFuZGxlRGF0YSAoZGF0YSkge1xuICAgIGNvbnN0IGNiID0gdGhpcy5fcmVzcG9uc2VDYWxsYmFja3NbZGF0YS5wYWNrZXROdW1iZXJdIHx8IF8ubm9vcDtcbiAgICBjYihkYXRhKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3NcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGlyZWN0b3J5IHJlbGF0aXZlIHRvIGFuIGFscmVhZHkgZXhpc3RpbmcgZGlyZWN0b3J5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIGluIHVuaXggZm9ybWF0XG4gICAqL1xuICBhc3luYyBjcmVhdGVEaXJlY3RvcnkgKHBhdGgpIHtcbiAgICBjb25zdCB7cGFja2V0TnVtYmVyLCByZXNwb25zZX0gPSB0aGlzLl9jcmVhdGVQYWNrZXRQcm9taXNlKGBDcmVhdGUgZGlyZWN0b3J5ICcke3BhdGh9J2ApO1xuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIG9wQ29kZTogT3BlcmF0aW9ucy5NQUtFX0RJUixcbiAgICAgIHBhY2tldE51bWJlcixcbiAgICAgIGhlYWRlclBheWxvYWQ6IEJ1ZmZlci5mcm9tKHBhdGgpXG4gICAgfTtcbiAgICB0aGlzLl9lbmNvZGVyLndyaXRlKGRhdGEpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlc3BvbnNlO1xuICAgIHRoaXMuX2NoZWNrU3RhdHVzKHJlcyk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhcmUgZGlyZWN0b3J5IGNvbXBsZXRlbHkgZXZlbiBpdCBoYXMgY29udGVudCBpbnNpZGUuIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgJ3JtIC1yIHtwYXRofSdcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggaW4gdW5peCBmb3JtYXRcbiAgICovXG4gIGFzeW5jIGRlbGV0ZURpcmVjdG9yeSAocGF0aCkge1xuICAgIGNvbnN0IHtwYWNrZXROdW1iZXIsIHJlc3BvbnNlfSA9IHRoaXMuX2NyZWF0ZVBhY2tldFByb21pc2UoYERlbGV0ZSBkaXJlY3RvcnkgJyR7cGF0aH0nYCk7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgb3BDb2RlOiBPcGVyYXRpb25zLlJFTU9WRV9QQVRIX0FORF9DT05URU5UUyxcbiAgICAgIHBhY2tldE51bWJlcixcbiAgICAgIGhlYWRlclBheWxvYWQ6IEJ1ZmZlci5mcm9tKHBhdGgpXG4gICAgfTtcbiAgICB0aGlzLl9lbmNvZGVyLndyaXRlKGRhdGEpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlc3BvbnNlO1xuICAgIHRoaXMuX2NoZWNrU3RhdHVzKHJlcyk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdHMgYSBkaXJlY3RvcnkncyBjb250ZW50cyBhbmQgcmV0dXJucyB0aGVtIGluIGFuIGFycmF5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIGluIHVuaXggZm9ybWF0XG4gICAqIEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fVxuICAgKi9cbiAgYXN5bmMgbGlzdERpcmVjdG9yeSAocGF0aCkge1xuICAgIGNvbnN0IHtwYWNrZXROdW1iZXIsIHJlc3BvbnNlfSA9IHRoaXMuX2NyZWF0ZVBhY2tldFByb21pc2UoYExpc3QgZGlyZWN0b3J5ICcke3BhdGh9J2ApO1xuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIG9wQ29kZTogT3BlcmF0aW9ucy5SRUFEX0RJUixcbiAgICAgIHBhY2tldE51bWJlcixcbiAgICAgIGhlYWRlclBheWxvYWQ6IEJ1ZmZlci5mcm9tKHBhdGgpXG4gICAgfTtcbiAgICB0aGlzLl9lbmNvZGVyLndyaXRlKGRhdGEpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlc3BvbnNlO1xuICAgIGlmIChyZXMub3BDb2RlICE9PSBPcGVyYXRpb25zLkRBVEEpIHtcbiAgICAgIHRoaXMuX2NoZWNrU3RhdHVzKHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlQXJyYXkocmVzLmNvbnRlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgZmlsZSBhbmQgY3JlYXRlcyBhIGZpbGUgaGFuZGxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIGluIHVuaXggZm9ybWF0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtb2RlIFRoZSBmaWxlIG1vZGUgdGhhdCB3aWxsIGJlIHVzZWRcbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgYXN5bmMgb3BlbkZpbGUgKHBhdGgsIG1vZGUpIHtcbiAgICBjb25zdCB7cGFja2V0TnVtYmVyLCByZXNwb25zZX0gPSB0aGlzLl9jcmVhdGVQYWNrZXRQcm9taXNlKGBPcGVuIGZpbGUgJyR7cGF0aH0nYCk7XG5cbiAgICBjb25zdCBwYXRoUGF5bG9hZCA9IEJ1ZmZlci5mcm9tKHBhdGgpO1xuICAgIGNvbnN0IGZpbGVNb2RlUGF5bG9hZCA9IEJ1ZmZlci5hbGxvYyg4KTtcbiAgICBmaWxlTW9kZVBheWxvYWQud3JpdGVVSW50MzJMRShtb2RlLCAwKTtcblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBvcENvZGU6IE9wZXJhdGlvbnMuRklMRV9PUEVOLFxuICAgICAgcGFja2V0TnVtYmVyLFxuICAgICAgaGVhZGVyUGF5bG9hZDogQnVmZmVyLmNvbmNhdChbZmlsZU1vZGVQYXlsb2FkLCBwYXRoUGF5bG9hZF0pXG4gICAgfTtcbiAgICB0aGlzLl9lbmNvZGVyLndyaXRlKGRhdGEpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlc3BvbnNlO1xuICAgIGlmIChyZXMub3BDb2RlICE9PSBPcGVyYXRpb25zLkZJTEVfT1BFTl9SRVMpIHtcbiAgICAgIHRoaXMuX2NoZWNrU3RhdHVzKHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5oZWFkZXJQYXlsb2FkLnJlYWRVSW50MzJMRSgwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyBhIGZpbGUgYW5kIGNyZWF0ZXMgYSBub2RlanMgd3JpdGUgc3RyZWFtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlUGF0aCBUaGUgcGF0aCBpbiB1bml4IGZvcm1hdFxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyBUaGUgcmVndWxhciBvcHRpb25zIHRoYXQgYXJlIHBhc3NlZCB0byBhIFN0cmVhbS5Xcml0YWJsZVxuICAgKiBAcmV0dXJuIHtBZmNXcml0YWJsZUZpbGVTdHJlYW19XG4gICAqL1xuICBhc3luYyBjcmVhdGVXcml0ZVN0cmVhbSAoZmlsZVBhdGgsIG9wdHMpIHtcbiAgICBjb25zdCBmaWxlSGFuZGxlID0gYXdhaXQgdGhpcy5vcGVuRmlsZShmaWxlUGF0aCwgRmlsZU1vZGVzLncpO1xuICAgIHJldHVybiBuZXcgQWZjV3JpdGFibGVGaWxlU3RyZWFtKGZpbGVIYW5kbGUsIHRoaXMsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgZmlsZSBhbmQgY3JlYXRlcyBhIG5vZGVqcyByZWFkIHN0cmVhbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZVBhdGggVGhlIHBhdGggaW4gdW5peCBmb3JtYXRcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgVGhlIHJlZ3VsYXIgb3B0aW9ucyB0aGF0IGFyZSBwYXNzZWQgdG8gYSBTdHJlYW0uUmVhZGFibGVcbiAgICogQHJldHVybiB7QWZjUmVhZGFibGVGaWxlU3RyZWFtfVxuICAgKi9cbiAgYXN5bmMgY3JlYXRlUmVhZFN0cmVhbSAoZmlsZVBhdGgsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBmaWxlSGFuZGxlID0gYXdhaXQgdGhpcy5vcGVuRmlsZShmaWxlUGF0aCwgRmlsZU1vZGVzLnIpO1xuICAgIHJldHVybiBuZXcgQWZjUmVhZGFibGVGaWxlU3RyZWFtKGZpbGVIYW5kbGUsIHRoaXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgZmlsZSBoYW5kbGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGZpbGVIYW5kbGUgdGhlIGZpbGUgaGFuZGxlIHRvIGJlIGNsb3NlZFxuICAgKi9cbiAgYXN5bmMgY2xvc2VGaWxlSGFuZGxlIChmaWxlSGFuZGxlKSB7XG4gICAgY29uc3Qge3BhY2tldE51bWJlciwgcmVzcG9uc2V9ID0gdGhpcy5fY3JlYXRlUGFja2V0UHJvbWlzZShgQ2xvc2UgZmlsZSBoYW5kbGUgJyR7ZmlsZUhhbmRsZX0nYCk7XG5cbiAgICBjb25zdCBmaWxlTW9kZVBheWxvYWQgPSBCdWZmZXIuYWxsb2MoOCk7XG4gICAgZmlsZU1vZGVQYXlsb2FkLndyaXRlVUludDMyTEUoZmlsZUhhbmRsZSwgMCk7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgb3BDb2RlOiBPcGVyYXRpb25zLkZJTEVfQ0xPU0UsXG4gICAgICBwYWNrZXROdW1iZXIsXG4gICAgICBoZWFkZXJQYXlsb2FkOiBmaWxlTW9kZVBheWxvYWRcbiAgICB9O1xuICAgIHRoaXMuX2VuY29kZXIud3JpdGUoZGF0YSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgcmVzcG9uc2U7XG4gICAgdGhpcy5fY2hlY2tTdGF0dXMocmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZXMgdGhlIGJ1ZmZlciBpbnRvIHRoZSBnaXZlbiBmaWxlIGhhbmRsZVxuICAgKiBAcGFyYW0ge251bWJlcn0gZmlsZUhhbmRsZSBUaGUgZmlsZSBoYW5kbGUgdG8gYmUgdXNlZFxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdGhhdCB3aWxsIGJlIHdyaXR0ZW5cbiAgICovXG4gIGFzeW5jIHdyaXRlRmlsZSAoZmlsZUhhbmRsZSwgYnVmZmVyKSB7XG4gICAgY29uc3Qge3BhY2tldE51bWJlciwgcmVzcG9uc2V9ID0gdGhpcy5fY3JlYXRlUGFja2V0UHJvbWlzZShgV3JpdGUgdG8gZmlsZSBoYW5kbGUgJyR7ZmlsZUhhbmRsZX0nYCk7XG5cbiAgICBjb25zdCBoZWFkZXJQYXlsb2FkID0gQnVmZmVyLmFsbG9jKDgpO1xuICAgIGhlYWRlclBheWxvYWQud3JpdGVVSW50MzJMRShmaWxlSGFuZGxlLCAwKTtcblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBvcENvZGU6IE9wZXJhdGlvbnMuRklMRV9XUklURSxcbiAgICAgIHBhY2tldE51bWJlcixcbiAgICAgIGhlYWRlclBheWxvYWQsXG4gICAgICBjb250ZW50OiBidWZmZXJcbiAgICB9O1xuICAgIHRoaXMuX2VuY29kZXIud3JpdGUoZGF0YSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgcmVzcG9uc2U7XG4gICAgdGhpcy5fY2hlY2tTdGF0dXMocmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIGEgY2VydGFpbiBsZW5ndGggb2YgYnVmZmVyIGZyb20gdGhlIGZpbGUgaGFuZGxlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmaWxlSGFuZGxlIFRoZSBmaWxlIGhhbmRsZSB0byBiZSB1c2VkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggVGhlIGxlbmd0aCB0aGF0IHdhbnRzIHRvIGJlIHJlYWQgZnJvbSB0aGUgZmlsZSBoYW5kbGVcbiAgICogQHJldHVybiB7QnVmZmVyfVxuICAgKi9cbiAgYXN5bmMgcmVhZEZpbGUgKGZpbGVIYW5kbGUsIGxlbmd0aCkge1xuICAgIGNvbnN0IHtwYWNrZXROdW1iZXIsIHJlc3BvbnNlfSA9IHRoaXMuX2NyZWF0ZVBhY2tldFByb21pc2UoYFJlYWQgZnJvbSBmaWxlIGhhbmRsZSAnJHtmaWxlSGFuZGxlfSdgKTtcblxuICAgIGNvbnN0IGhlYWRlclBheWxvYWQgPSBCdWZmZXIuYWxsb2MoMTYpO1xuICAgIGhlYWRlclBheWxvYWQud3JpdGVVSW50MzJMRShmaWxlSGFuZGxlLCAwKTtcbiAgICBoZWFkZXJQYXlsb2FkLndyaXRlVUludDMyTEUobGVuZ3RoLCA4KTtcblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBvcENvZGU6IE9wZXJhdGlvbnMuRklMRV9SRUFELFxuICAgICAgcGFja2V0TnVtYmVyLFxuICAgICAgaGVhZGVyUGF5bG9hZFxuICAgIH07XG4gICAgdGhpcy5fZW5jb2Rlci53cml0ZShkYXRhKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCByZXNwb25zZTtcbiAgICBpZiAocmVzLm9wQ29kZSAhPT0gT3BlcmF0aW9ucy5EQVRBKSB7XG4gICAgICB0aGlzLl9jaGVja1N0YXR1cyhyZXMpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLmNvbnRlbnQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmaWxlIGluZm8gb2YgdGhlIGdpdmVuIHBhdGhcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggaW4gdW5peCBmb3JtYXRcbiAgICogQHJldHVybiB7RmlsZUluZm99XG4gICAqL1xuICBhc3luYyBnZXRGaWxlSW5mbyAocGF0aCkge1xuICAgIGNvbnN0IHtwYWNrZXROdW1iZXIsIHJlc3BvbnNlfSA9IHRoaXMuX2NyZWF0ZVBhY2tldFByb21pc2UoYEdldCBmaWxlIGluZm8gJyR7cGF0aH0nYCk7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgb3BDb2RlOiBPcGVyYXRpb25zLkdFVF9GSUxFX0lORk8sXG4gICAgICBwYWNrZXROdW1iZXIsXG4gICAgICBoZWFkZXJQYXlsb2FkOiBCdWZmZXIuZnJvbShwYXRoKVxuICAgIH07XG4gICAgdGhpcy5fZW5jb2Rlci53cml0ZShkYXRhKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCByZXNwb25zZTtcbiAgICBpZiAocmVzLm9wQ29kZSAhPT0gT3BlcmF0aW9ucy5EQVRBKSB7XG4gICAgICB0aGlzLl9jaGVja1N0YXR1cyhyZXMpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEZpbGVJbmZvKHRoaXMuX3BhcnNlT2JqZWN0KHJlcy5jb250ZW50KSk7XG4gIH1cblxuICAvKiogVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGR1cmluZyB0aGUgZGlyZWN0b3J5IHdhbGtpbmdcbiAgICogQGNhbGxiYWNrIFdhbGtEaXJDYWxsYmFja1xuICAgKiBAcGFyYW0ge3N0cmluZ30gaXRlbVBhdGggVGhlIHBhdGggb2YgdGhlIGZpbGUgb3IgZm9sZGVyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNEaXJlY3RvcnkgU2hvd3MgaWYgaXQgaXMgYSBkaXJlY3Rvcnkgb3IgYSBmaWxlXG4gICovXG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkaXIgVGhlIHBhdGggaW4gdW5peCBmb3JtYXRcbiAgICogQHBhcmFtIHtib29sZWFufSByZWN1cnNpdmUgU2V0cyB3aGV0aGVyIHRvIGZvbGxvdyBzdWIgZGlyZWN0b3JpZXMgb3Igbm90XG4gICAqIEBwYXJhbSB7V2Fsa0RpckNhbGxiYWNrfSBvblBhdGggVGhlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIGEgbmV3IHBhdGggaXMgZm91bmRcbiAgICovXG4gIGFzeW5jIHdhbGtEaXIgKGRpciwgcmVjdXJzaXZlLCBvblBhdGgpIHtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgYXdhaXQgdGhpcy5saXN0RGlyZWN0b3J5KGRpcikpIHtcbiAgICAgIGlmIChJR05PUkVEX1BBVEhTLmluY2x1ZGVzKGZpbGUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aC5wb3NpeC5qb2luKGRpciwgZmlsZSk7XG4gICAgICBjb25zdCBmaWxlSW5mbyA9IGF3YWl0IHRoaXMuZ2V0RmlsZUluZm8ocmVsYXRpdmVQYXRoKTtcbiAgICAgIGNvbnN0IGlzRGlyZWN0b3J5ID0gZmlsZUluZm8uaXNEaXJlY3RvcnkoKTtcbiAgICAgIGF3YWl0IG9uUGF0aChyZWxhdGl2ZVBhdGgsIGlzRGlyZWN0b3J5KTtcbiAgICAgIGlmIChpc0RpcmVjdG9yeSAmJiByZWN1cnNpdmUpIHtcbiAgICAgICAgYXdhaXQgdGhpcy53YWxrRGlyKHJlbGF0aXZlUGF0aCwgcmVjdXJzaXZlLCBvblBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9jaGVja1N0YXR1cyAocmVzKSB7XG4gICAgaWYgKHJlcy5vcENvZGUgIT09IE9wZXJhdGlvbnMuU1RBVFVTKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgcmVzcG9uc2UgJHtvcGVyYXRpb25Db2RlKHJlcy5vcENvZGUpfWApO1xuICAgIH1cbiAgICBpZiAoXy5pc0VtcHR5KHJlcy5oZWFkZXJQYXlsb2FkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdIZWFkZXIgcGF5bG9hZCBjYW5ub3QgYmUgZW1wdHkgZm9yIGEgc3RhdHVzIHJlc3BvbnNlJyk7XG4gICAgfVxuICAgIGlmIChyZXMuaGVhZGVyUGF5bG9hZFswXSAhPT0gRXJyb3JzLlNVQ0NFU1MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCByZXNwb25zZSAke2Vycm9yQ29kZShyZXMuaGVhZGVyUGF5bG9hZFswXSl9YCk7XG4gICAgfVxuICB9XG5cbiAgX3BhcnNlQXJyYXkgKGJ1ZmZlcikge1xuICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgbGV0IHN0YXJ0ID0gMDtcbiAgICBmb3IgKGxldCBlbmQgPSAwOyBlbmQgPCBidWZmZXIubGVuZ3RoOyBlbmQrKykge1xuICAgICAgaWYgKGJ1ZmZlcltlbmRdICE9PSBOVUxMX0RFTElNSVRFUl9DT0RFKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgaXRlbSA9IGJ1ZmZlci50b1N0cmluZygndXRmOCcsIHN0YXJ0LCBlbmQpO1xuICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgIC8vIFdlIHNraXAgdGhlIG51bGwgZGVsaW1ldGVyXG4gICAgICBzdGFydCA9IGVuZCArIDE7XG4gICAgfVxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIF9wYXJzZU9iamVjdCAoYnVmZmVyKSB7XG4gICAgY29uc3QgaXRlbXMgPSB7fTtcbiAgICBsZXQgc3RhcnQgPSAwO1xuICAgIGxldCBjdXJyZW50S2V5O1xuICAgIGZvciAobGV0IGVuZCA9IDA7IGVuZCA8IGJ1ZmZlci5sZW5ndGg7IGVuZCsrKSB7XG4gICAgICBpZiAoYnVmZmVyW2VuZF0gIT09IE5VTExfREVMSU1JVEVSX0NPREUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBpdGVtID0gYnVmZmVyLnRvU3RyaW5nKCd1dGY4Jywgc3RhcnQsIGVuZCk7XG4gICAgICBpZiAoXy5pc05pbChjdXJyZW50S2V5KSkge1xuICAgICAgICBjdXJyZW50S2V5ID0gaXRlbTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW1zW2N1cnJlbnRLZXldID0gaXRlbTtcbiAgICAgICAgY3VycmVudEtleSA9IG51bGw7XG4gICAgICB9XG4gICAgICAvLyBXZSBza2lwIHRoZSBudWxsIGRlbGltZXRlclxuICAgICAgc3RhcnQgPSBlbmQgKyAxO1xuICAgIH1cbiAgICBpZiAoY3VycmVudEtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2UgY29ycmVjdGx5ICR7YnVmZmVyfS4gUGxlYXNlIGludmVzdGlnYXRlYCk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIF9jcmVhdGVQYWNrZXRQcm9taXNlIChtZXNzYWdlLCB0aW1lb3V0ID0gMTAwMDApIHtcbiAgICBjb25zdCBwYWNrZXROdW1iZXIgPSB0aGlzLl9wYWNrZXROdW1iZXIrKztcbiAgICBjb25zdCByZXNwb25zZSA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3BhY2tldE51bWJlcl0gPSByZXNvbHZlO1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5pc2ggdGhlIG9wZXJhdGlvbiAnJHttZXNzYWdlfScuIEZhaWxlZCB0byByZWNlaXZlIGFueSBkYXRhIHdpdGhpbiB0aGUgJHt0aW1lb3V0fW1zIHRpbWVvdXRgKSk7XG4gICAgICB9LCB0aW1lb3V0KTtcbiAgICB9KTtcbiAgICByZXR1cm4ge3BhY2tldE51bWJlciwgcmVzcG9uc2V9O1xuICB9XG59XG5cbmNsYXNzIEZpbGVJbmZvIHtcbiAgY29uc3RydWN0b3IgKHtzdF9zaXplLCBzdF9ibG9ja3MsIHN0X25saW5rLCBzdF9pZm10LCBzdF9tdGltZSwgc3RfYmlydGh0aW1lfSkge1xuICAgIHRoaXMuc2l6ZSA9IHBhcnNlSW50KHN0X3NpemUsIDEwKTtcbiAgICB0aGlzLmJsb2NrcyA9IHBhcnNlSW50KHN0X2Jsb2NrcywgMTApO1xuICAgIHRoaXMubmxpbmsgPSBwYXJzZUludChzdF9ubGluaywgMTApO1xuICAgIHRoaXMuaWZtdCA9IHN0X2lmbXQ7XG4gICAgLy8gbnMgdG8gbXNcbiAgICB0aGlzLm10aW1lTXMgPSBwYXJzZUludChzdF9tdGltZSwgMTApIC8gMTAwMDAwMDtcbiAgICAvLyBucyB0byBtc1xuICAgIHRoaXMuYmlydGh0aW1lTXMgPSBwYXJzZUludChzdF9iaXJ0aHRpbWUsIDEwKSAvIDEwMDAwMDA7XG4gIH1cblxuICBpc0RpcmVjdG9yeSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWZtdCA9PT0gJ1NfSUZESVInO1xuICB9XG5cbiAgaXNGaWxlICgpIHtcbiAgICByZXR1cm4gdGhpcy5pZm10ID09PSAnU19JRlJFRyc7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQWZjU2VydmljZTtcbmV4cG9ydCB7IEFmY1NlcnZpY2UsIEFGQ19TRVJWSUNFX05BTUUgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQSxJQUFBQSxvQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sU0FBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sS0FBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsT0FBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVMsWUFBQSxHQUFBVCxPQUFBO0FBR0EsTUFBTVUsZ0JBQWdCLEdBQUcsZUFBZTtBQUFDQyxPQUFBLENBQUFELGdCQUFBLEdBQUFBLGdCQUFBO0FBQ3pDLE1BQU1FLGNBQWMsR0FBRyxDQUFDLEdBQUdDLGFBQUU7QUFFN0IsTUFBTUMsbUJBQW1CLEdBQUcsSUFBSTtBQUNoQyxNQUFNQyxhQUFhLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO0FBRWpD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
|
|
291
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbGVuZ3RoQmFzZWRTcGxpdHRlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3Byb3RvY29sIiwiX3N0cmVhbXMiLCJfYWZjZW5jb2RlciIsIl9hZmNkZWNvZGVyIiwiX2NvbnN0YW50cyIsIl9ibHVlYmlyZCIsIl9wYXRoIiwiX2xvZGFzaCIsIl9iYXNlU2VydmljZSIsIkFGQ19TRVJWSUNFX05BTUUiLCJleHBvcnRzIiwiTUFYX0ZSQU1FX1NJWkUiLCJNQiIsIk5VTExfREVMSU1JVEVSX0NPREUiLCJJR05PUkVEX1BBVEhTIiwiQWZjU2VydmljZSIsIkJhc2VTZXJ2aWNlU29ja2V0IiwiY29uc3RydWN0b3IiLCJzb2NrZXRDbGllbnQiLCJfc3BsaXR0ZXIiLCJMZW5ndGhCYXNlZFNwbGl0dGVyIiwicmVhZGFibGVTdHJlYW0iLCJsaXR0bGVFbmRpYW4iLCJtYXhGcmFtZUxlbmd0aCIsImxlbmd0aEZpZWxkT2Zmc2V0IiwibGVuZ3RoRmllbGRMZW5ndGgiLCJsZW5ndGhBZGp1c3RtZW50IiwiX2RlY29kZXIiLCJBZmNEZWNvZGVyIiwiX3NvY2tldENsaWVudCIsInBpcGUiLCJfZW5jb2RlciIsIkFmY0VuY29kZXIiLCJfYXNzaWduQ2xpZW50RmFpbHVyZUhhbmRsZXJzIiwiX3Jlc3BvbnNlQ2FsbGJhY2tzIiwiX3BhY2tldE51bWJlciIsIm9uIiwiX2hhbmRsZURhdGEiLCJiaW5kIiwiZGF0YSIsImNiIiwicGFja2V0TnVtYmVyIiwiXyIsIm5vb3AiLCJjcmVhdGVEaXJlY3RvcnkiLCJwYXRoIiwicmVzcG9uc2UiLCJfY3JlYXRlUGFja2V0UHJvbWlzZSIsIm9wQ29kZSIsIk9wZXJhdGlvbnMiLCJNQUtFX0RJUiIsImhlYWRlclBheWxvYWQiLCJCdWZmZXIiLCJmcm9tIiwid3JpdGUiLCJyZXMiLCJfY2hlY2tTdGF0dXMiLCJkZWxldGVEaXJlY3RvcnkiLCJSRU1PVkVfUEFUSF9BTkRfQ09OVEVOVFMiLCJsaXN0RGlyZWN0b3J5IiwiUkVBRF9ESVIiLCJEQVRBIiwiX3BhcnNlQXJyYXkiLCJjb250ZW50Iiwib3BlbkZpbGUiLCJtb2RlIiwicGF0aFBheWxvYWQiLCJmaWxlTW9kZVBheWxvYWQiLCJhbGxvYyIsIndyaXRlVUludDMyTEUiLCJGSUxFX09QRU4iLCJjb25jYXQiLCJGSUxFX09QRU5fUkVTIiwicmVhZFVJbnQzMkxFIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJmaWxlUGF0aCIsIm9wdHMiLCJmaWxlSGFuZGxlIiwiRmlsZU1vZGVzIiwidyIsIkFmY1dyaXRhYmxlRmlsZVN0cmVhbSIsImNyZWF0ZVJlYWRTdHJlYW0iLCJvcHRpb25zIiwiciIsIkFmY1JlYWRhYmxlRmlsZVN0cmVhbSIsImNsb3NlRmlsZUhhbmRsZSIsIkZJTEVfQ0xPU0UiLCJ3cml0ZUZpbGUiLCJidWZmZXIiLCJGSUxFX1dSSVRFIiwicmVhZEZpbGUiLCJsZW5ndGgiLCJGSUxFX1JFQUQiLCJnZXRGaWxlSW5mbyIsIkdFVF9GSUxFX0lORk8iLCJGaWxlSW5mbyIsIl9wYXJzZU9iamVjdCIsIndhbGtEaXIiLCJkaXIiLCJyZWN1cnNpdmUiLCJvblBhdGgiLCJmaWxlIiwiaW5jbHVkZXMiLCJyZWxhdGl2ZVBhdGgiLCJwb3NpeCIsImpvaW4iLCJmaWxlSW5mbyIsImlzRGlyZWN0b3J5IiwiU1RBVFVTIiwiRXJyb3IiLCJvcGVyYXRpb25Db2RlIiwiaXNFbXB0eSIsIkVycm9ycyIsIlNVQ0NFU1MiLCJlcnJvckNvZGUiLCJpdGVtcyIsInN0YXJ0IiwiZW5kIiwiaXRlbSIsInRvU3RyaW5nIiwicHVzaCIsImN1cnJlbnRLZXkiLCJpc05pbCIsIm1lc3NhZ2UiLCJ0aW1lb3V0IiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJzZXRUaW1lb3V0Iiwic3Rfc2l6ZSIsInN0X2Jsb2NrcyIsInN0X25saW5rIiwic3RfaWZtdCIsInN0X210aW1lIiwic3RfYmlydGh0aW1lIiwic2l6ZSIsInBhcnNlSW50IiwiYmxvY2tzIiwibmxpbmsiLCJpZm10IiwibXRpbWVNcyIsImJpcnRodGltZU1zIiwiaXNGaWxlIiwiX2RlZmF1bHQiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vbGliL2FmYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcbmltcG9ydCBMZW5ndGhCYXNlZFNwbGl0dGVyIGZyb20gJy4uL3V0aWwvdHJhbnNmb3JtZXIvbGVuZ3RoLWJhc2VkLXNwbGl0dGVyJztcbmltcG9ydCB7IE9wZXJhdGlvbnMsIG9wZXJhdGlvbkNvZGUsIEVycm9ycywgZXJyb3JDb2RlLCBGaWxlTW9kZXMgfSBmcm9tICcuL3Byb3RvY29sJztcbmltcG9ydCB7IEFmY1dyaXRhYmxlRmlsZVN0cmVhbSwgQWZjUmVhZGFibGVGaWxlU3RyZWFtIH0gZnJvbSAnLi9zdHJlYW1zJztcbmltcG9ydCBBZmNFbmNvZGVyIGZyb20gJy4vdHJhbnNmb3JtZXIvYWZjZW5jb2Rlcic7XG5pbXBvcnQgQWZjRGVjb2RlciBmcm9tICcuL3RyYW5zZm9ybWVyL2FmY2RlY29kZXInO1xuaW1wb3J0IHsgTUIgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2VTb2NrZXQgfSBmcm9tICcuLi9iYXNlLXNlcnZpY2UnO1xuXG5cbmNvbnN0IEFGQ19TRVJWSUNFX05BTUUgPSAnY29tLmFwcGxlLmFmYyc7XG5jb25zdCBNQVhfRlJBTUVfU0laRSA9IDEgKiBNQjtcblxuY29uc3QgTlVMTF9ERUxJTUlURVJfQ09ERSA9IDB4MDA7XG5jb25zdCBJR05PUkVEX1BBVEhTID0gWycuJywgJy4uJ107XG5cbmNsYXNzIEFmY1NlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZVNvY2tldCB7XG4gIGNvbnN0cnVjdG9yIChzb2NrZXRDbGllbnQpIHtcbiAgICBzdXBlcihzb2NrZXRDbGllbnQpO1xuXG4gICAgdGhpcy5fc3BsaXR0ZXIgPSBuZXcgTGVuZ3RoQmFzZWRTcGxpdHRlcih7XG4gICAgICByZWFkYWJsZVN0cmVhbTogc29ja2V0Q2xpZW50LFxuICAgICAgbGl0dGxlRW5kaWFuOiB0cnVlLFxuICAgICAgbWF4RnJhbWVMZW5ndGg6IE1BWF9GUkFNRV9TSVpFLFxuICAgICAgbGVuZ3RoRmllbGRPZmZzZXQ6IDgsXG4gICAgICBsZW5ndGhGaWVsZExlbmd0aDogOCxcbiAgICAgIGxlbmd0aEFkanVzdG1lbnQ6IC04LFxuICAgIH0pO1xuICAgIHRoaXMuX2RlY29kZXIgPSBuZXcgQWZjRGVjb2RlcigpO1xuICAgIHRoaXMuX3NvY2tldENsaWVudC5waXBlKHRoaXMuX3NwbGl0dGVyKS5waXBlKHRoaXMuX2RlY29kZXIpO1xuXG4gICAgdGhpcy5fZW5jb2RlciA9IG5ldyBBZmNFbmNvZGVyKCk7XG4gICAgdGhpcy5fZW5jb2Rlci5waXBlKHRoaXMuX3NvY2tldENsaWVudCk7XG4gICAgdGhpcy5fYXNzaWduQ2xpZW50RmFpbHVyZUhhbmRsZXJzKHRoaXMuX2VuY29kZXIpO1xuXG4gICAgdGhpcy5fcmVzcG9uc2VDYWxsYmFja3MgPSB7fTtcblxuICAgIHRoaXMuX3BhY2tldE51bWJlciA9IDA7XG4gICAgdGhpcy5fZGVjb2Rlci5vbignZGF0YScsIHRoaXMuX2hhbmRsZURhdGEuYmluZCh0aGlzKSk7XG4gIH1cblxuICBfaGFuZGxlRGF0YSAoZGF0YSkge1xuICAgIGNvbnN0IGNiID0gdGhpcy5fcmVzcG9uc2VDYWxsYmFja3NbZGF0YS5wYWNrZXROdW1iZXJdIHx8IF8ubm9vcDtcbiAgICBjYihkYXRhKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3NcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZGlyZWN0b3J5IHJlbGF0aXZlIHRvIGFuIGFscmVhZHkgZXhpc3RpbmcgZGlyZWN0b3J5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIGluIHVuaXggZm9ybWF0XG4gICAqL1xuICBhc3luYyBjcmVhdGVEaXJlY3RvcnkgKHBhdGgpIHtcbiAgICBjb25zdCB7cGFja2V0TnVtYmVyLCByZXNwb25zZX0gPSB0aGlzLl9jcmVhdGVQYWNrZXRQcm9taXNlKGBDcmVhdGUgZGlyZWN0b3J5ICcke3BhdGh9J2ApO1xuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIG9wQ29kZTogT3BlcmF0aW9ucy5NQUtFX0RJUixcbiAgICAgIHBhY2tldE51bWJlcixcbiAgICAgIGhlYWRlclBheWxvYWQ6IEJ1ZmZlci5mcm9tKHBhdGgpXG4gICAgfTtcbiAgICB0aGlzLl9lbmNvZGVyLndyaXRlKGRhdGEpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlc3BvbnNlO1xuICAgIHRoaXMuX2NoZWNrU3RhdHVzKHJlcyk7XG4gIH1cblxuICAvKipcbiAgICogRGVsZXRlcyBhcmUgZGlyZWN0b3J5IGNvbXBsZXRlbHkgZXZlbiBpdCBoYXMgY29udGVudCBpbnNpZGUuIFRoaXMgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgJ3JtIC1yIHtwYXRofSdcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggaW4gdW5peCBmb3JtYXRcbiAgICovXG4gIGFzeW5jIGRlbGV0ZURpcmVjdG9yeSAocGF0aCkge1xuICAgIGNvbnN0IHtwYWNrZXROdW1iZXIsIHJlc3BvbnNlfSA9IHRoaXMuX2NyZWF0ZVBhY2tldFByb21pc2UoYERlbGV0ZSBkaXJlY3RvcnkgJyR7cGF0aH0nYCk7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgb3BDb2RlOiBPcGVyYXRpb25zLlJFTU9WRV9QQVRIX0FORF9DT05URU5UUyxcbiAgICAgIHBhY2tldE51bWJlcixcbiAgICAgIGhlYWRlclBheWxvYWQ6IEJ1ZmZlci5mcm9tKHBhdGgpXG4gICAgfTtcbiAgICB0aGlzLl9lbmNvZGVyLndyaXRlKGRhdGEpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlc3BvbnNlO1xuICAgIHRoaXMuX2NoZWNrU3RhdHVzKHJlcyk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdHMgYSBkaXJlY3RvcnkncyBjb250ZW50cyBhbmQgcmV0dXJucyB0aGVtIGluIGFuIGFycmF5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIGluIHVuaXggZm9ybWF0XG4gICAqIEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fVxuICAgKi9cbiAgYXN5bmMgbGlzdERpcmVjdG9yeSAocGF0aCkge1xuICAgIGNvbnN0IHtwYWNrZXROdW1iZXIsIHJlc3BvbnNlfSA9IHRoaXMuX2NyZWF0ZVBhY2tldFByb21pc2UoYExpc3QgZGlyZWN0b3J5ICcke3BhdGh9J2ApO1xuXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgIG9wQ29kZTogT3BlcmF0aW9ucy5SRUFEX0RJUixcbiAgICAgIHBhY2tldE51bWJlcixcbiAgICAgIGhlYWRlclBheWxvYWQ6IEJ1ZmZlci5mcm9tKHBhdGgpXG4gICAgfTtcbiAgICB0aGlzLl9lbmNvZGVyLndyaXRlKGRhdGEpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlc3BvbnNlO1xuICAgIGlmIChyZXMub3BDb2RlICE9PSBPcGVyYXRpb25zLkRBVEEpIHtcbiAgICAgIHRoaXMuX2NoZWNrU3RhdHVzKHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3BhcnNlQXJyYXkocmVzLmNvbnRlbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgZmlsZSBhbmQgY3JlYXRlcyBhIGZpbGUgaGFuZGxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIGluIHVuaXggZm9ybWF0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBtb2RlIFRoZSBmaWxlIG1vZGUgdGhhdCB3aWxsIGJlIHVzZWRcbiAgICogQHJldHVybiB7bnVtYmVyfVxuICAgKi9cbiAgYXN5bmMgb3BlbkZpbGUgKHBhdGgsIG1vZGUpIHtcbiAgICBjb25zdCB7cGFja2V0TnVtYmVyLCByZXNwb25zZX0gPSB0aGlzLl9jcmVhdGVQYWNrZXRQcm9taXNlKGBPcGVuIGZpbGUgJyR7cGF0aH0nYCk7XG5cbiAgICBjb25zdCBwYXRoUGF5bG9hZCA9IEJ1ZmZlci5mcm9tKHBhdGgpO1xuICAgIGNvbnN0IGZpbGVNb2RlUGF5bG9hZCA9IEJ1ZmZlci5hbGxvYyg4KTtcbiAgICBmaWxlTW9kZVBheWxvYWQud3JpdGVVSW50MzJMRShtb2RlLCAwKTtcblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBvcENvZGU6IE9wZXJhdGlvbnMuRklMRV9PUEVOLFxuICAgICAgcGFja2V0TnVtYmVyLFxuICAgICAgaGVhZGVyUGF5bG9hZDogQnVmZmVyLmNvbmNhdChbZmlsZU1vZGVQYXlsb2FkLCBwYXRoUGF5bG9hZF0pXG4gICAgfTtcbiAgICB0aGlzLl9lbmNvZGVyLndyaXRlKGRhdGEpO1xuICAgIGNvbnN0IHJlcyA9IGF3YWl0IHJlc3BvbnNlO1xuICAgIGlmIChyZXMub3BDb2RlICE9PSBPcGVyYXRpb25zLkZJTEVfT1BFTl9SRVMpIHtcbiAgICAgIHRoaXMuX2NoZWNrU3RhdHVzKHJlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcy5oZWFkZXJQYXlsb2FkLnJlYWRVSW50MzJMRSgwKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcGVucyBhIGZpbGUgYW5kIGNyZWF0ZXMgYSBub2RlanMgd3JpdGUgc3RyZWFtXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlUGF0aCBUaGUgcGF0aCBpbiB1bml4IGZvcm1hdFxuICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyBUaGUgcmVndWxhciBvcHRpb25zIHRoYXQgYXJlIHBhc3NlZCB0byBhIFN0cmVhbS5Xcml0YWJsZVxuICAgKiBAcmV0dXJuIHtBZmNXcml0YWJsZUZpbGVTdHJlYW19XG4gICAqL1xuICBhc3luYyBjcmVhdGVXcml0ZVN0cmVhbSAoZmlsZVBhdGgsIG9wdHMpIHtcbiAgICBjb25zdCBmaWxlSGFuZGxlID0gYXdhaXQgdGhpcy5vcGVuRmlsZShmaWxlUGF0aCwgRmlsZU1vZGVzLncpO1xuICAgIHJldHVybiBuZXcgQWZjV3JpdGFibGVGaWxlU3RyZWFtKGZpbGVIYW5kbGUsIHRoaXMsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIGEgZmlsZSBhbmQgY3JlYXRlcyBhIG5vZGVqcyByZWFkIHN0cmVhbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZmlsZVBhdGggVGhlIHBhdGggaW4gdW5peCBmb3JtYXRcbiAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgVGhlIHJlZ3VsYXIgb3B0aW9ucyB0aGF0IGFyZSBwYXNzZWQgdG8gYSBTdHJlYW0uUmVhZGFibGVcbiAgICogQHJldHVybiB7QWZjUmVhZGFibGVGaWxlU3RyZWFtfVxuICAgKi9cbiAgYXN5bmMgY3JlYXRlUmVhZFN0cmVhbSAoZmlsZVBhdGgsIG9wdGlvbnMpIHtcbiAgICBjb25zdCBmaWxlSGFuZGxlID0gYXdhaXQgdGhpcy5vcGVuRmlsZShmaWxlUGF0aCwgRmlsZU1vZGVzLnIpO1xuICAgIHJldHVybiBuZXcgQWZjUmVhZGFibGVGaWxlU3RyZWFtKGZpbGVIYW5kbGUsIHRoaXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgZmlsZSBoYW5kbGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGZpbGVIYW5kbGUgdGhlIGZpbGUgaGFuZGxlIHRvIGJlIGNsb3NlZFxuICAgKi9cbiAgYXN5bmMgY2xvc2VGaWxlSGFuZGxlIChmaWxlSGFuZGxlKSB7XG4gICAgY29uc3Qge3BhY2tldE51bWJlciwgcmVzcG9uc2V9ID0gdGhpcy5fY3JlYXRlUGFja2V0UHJvbWlzZShgQ2xvc2UgZmlsZSBoYW5kbGUgJyR7ZmlsZUhhbmRsZX0nYCk7XG5cbiAgICBjb25zdCBmaWxlTW9kZVBheWxvYWQgPSBCdWZmZXIuYWxsb2MoOCk7XG4gICAgZmlsZU1vZGVQYXlsb2FkLndyaXRlVUludDMyTEUoZmlsZUhhbmRsZSwgMCk7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgb3BDb2RlOiBPcGVyYXRpb25zLkZJTEVfQ0xPU0UsXG4gICAgICBwYWNrZXROdW1iZXIsXG4gICAgICBoZWFkZXJQYXlsb2FkOiBmaWxlTW9kZVBheWxvYWRcbiAgICB9O1xuICAgIHRoaXMuX2VuY29kZXIud3JpdGUoZGF0YSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgcmVzcG9uc2U7XG4gICAgdGhpcy5fY2hlY2tTdGF0dXMocmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZXMgdGhlIGJ1ZmZlciBpbnRvIHRoZSBnaXZlbiBmaWxlIGhhbmRsZVxuICAgKiBAcGFyYW0ge251bWJlcn0gZmlsZUhhbmRsZSBUaGUgZmlsZSBoYW5kbGUgdG8gYmUgdXNlZFxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gYnVmZmVyIFRoZSBidWZmZXIgdGhhdCB3aWxsIGJlIHdyaXR0ZW5cbiAgICovXG4gIGFzeW5jIHdyaXRlRmlsZSAoZmlsZUhhbmRsZSwgYnVmZmVyKSB7XG4gICAgY29uc3Qge3BhY2tldE51bWJlciwgcmVzcG9uc2V9ID0gdGhpcy5fY3JlYXRlUGFja2V0UHJvbWlzZShgV3JpdGUgdG8gZmlsZSBoYW5kbGUgJyR7ZmlsZUhhbmRsZX0nYCk7XG5cbiAgICBjb25zdCBoZWFkZXJQYXlsb2FkID0gQnVmZmVyLmFsbG9jKDgpO1xuICAgIGhlYWRlclBheWxvYWQud3JpdGVVSW50MzJMRShmaWxlSGFuZGxlLCAwKTtcblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBvcENvZGU6IE9wZXJhdGlvbnMuRklMRV9XUklURSxcbiAgICAgIHBhY2tldE51bWJlcixcbiAgICAgIGhlYWRlclBheWxvYWQsXG4gICAgICBjb250ZW50OiBidWZmZXJcbiAgICB9O1xuICAgIHRoaXMuX2VuY29kZXIud3JpdGUoZGF0YSk7XG4gICAgY29uc3QgcmVzID0gYXdhaXQgcmVzcG9uc2U7XG4gICAgdGhpcy5fY2hlY2tTdGF0dXMocmVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkIGEgY2VydGFpbiBsZW5ndGggb2YgYnVmZmVyIGZyb20gdGhlIGZpbGUgaGFuZGxlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBmaWxlSGFuZGxlIFRoZSBmaWxlIGhhbmRsZSB0byBiZSB1c2VkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBsZW5ndGggVGhlIGxlbmd0aCB0aGF0IHdhbnRzIHRvIGJlIHJlYWQgZnJvbSB0aGUgZmlsZSBoYW5kbGVcbiAgICogQHJldHVybiB7QnVmZmVyfVxuICAgKi9cbiAgYXN5bmMgcmVhZEZpbGUgKGZpbGVIYW5kbGUsIGxlbmd0aCkge1xuICAgIGNvbnN0IHtwYWNrZXROdW1iZXIsIHJlc3BvbnNlfSA9IHRoaXMuX2NyZWF0ZVBhY2tldFByb21pc2UoYFJlYWQgZnJvbSBmaWxlIGhhbmRsZSAnJHtmaWxlSGFuZGxlfSdgKTtcblxuICAgIGNvbnN0IGhlYWRlclBheWxvYWQgPSBCdWZmZXIuYWxsb2MoMTYpO1xuICAgIGhlYWRlclBheWxvYWQud3JpdGVVSW50MzJMRShmaWxlSGFuZGxlLCAwKTtcbiAgICBoZWFkZXJQYXlsb2FkLndyaXRlVUludDMyTEUobGVuZ3RoLCA4KTtcblxuICAgIGNvbnN0IGRhdGEgPSB7XG4gICAgICBvcENvZGU6IE9wZXJhdGlvbnMuRklMRV9SRUFELFxuICAgICAgcGFja2V0TnVtYmVyLFxuICAgICAgaGVhZGVyUGF5bG9hZFxuICAgIH07XG4gICAgdGhpcy5fZW5jb2Rlci53cml0ZShkYXRhKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCByZXNwb25zZTtcbiAgICBpZiAocmVzLm9wQ29kZSAhPT0gT3BlcmF0aW9ucy5EQVRBKSB7XG4gICAgICB0aGlzLl9jaGVja1N0YXR1cyhyZXMpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzLmNvbnRlbnQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmaWxlIGluZm8gb2YgdGhlIGdpdmVuIHBhdGhcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggaW4gdW5peCBmb3JtYXRcbiAgICogQHJldHVybiB7RmlsZUluZm99XG4gICAqL1xuICBhc3luYyBnZXRGaWxlSW5mbyAocGF0aCkge1xuICAgIGNvbnN0IHtwYWNrZXROdW1iZXIsIHJlc3BvbnNlfSA9IHRoaXMuX2NyZWF0ZVBhY2tldFByb21pc2UoYEdldCBmaWxlIGluZm8gJyR7cGF0aH0nYCk7XG5cbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgb3BDb2RlOiBPcGVyYXRpb25zLkdFVF9GSUxFX0lORk8sXG4gICAgICBwYWNrZXROdW1iZXIsXG4gICAgICBoZWFkZXJQYXlsb2FkOiBCdWZmZXIuZnJvbShwYXRoKVxuICAgIH07XG4gICAgdGhpcy5fZW5jb2Rlci53cml0ZShkYXRhKTtcbiAgICBjb25zdCByZXMgPSBhd2FpdCByZXNwb25zZTtcbiAgICBpZiAocmVzLm9wQ29kZSAhPT0gT3BlcmF0aW9ucy5EQVRBKSB7XG4gICAgICB0aGlzLl9jaGVja1N0YXR1cyhyZXMpO1xuICAgIH1cbiAgICByZXR1cm4gbmV3IEZpbGVJbmZvKHRoaXMuX3BhcnNlT2JqZWN0KHJlcy5jb250ZW50KSk7XG4gIH1cblxuICAvKiogVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGR1cmluZyB0aGUgZGlyZWN0b3J5IHdhbGtpbmdcbiAgICogQGNhbGxiYWNrIFdhbGtEaXJDYWxsYmFja1xuICAgKiBAcGFyYW0ge3N0cmluZ30gaXRlbVBhdGggVGhlIHBhdGggb2YgdGhlIGZpbGUgb3IgZm9sZGVyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNEaXJlY3RvcnkgU2hvd3MgaWYgaXQgaXMgYSBkaXJlY3Rvcnkgb3IgYSBmaWxlXG4gICovXG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkaXIgVGhlIHBhdGggaW4gdW5peCBmb3JtYXRcbiAgICogQHBhcmFtIHtib29sZWFufSByZWN1cnNpdmUgU2V0cyB3aGV0aGVyIHRvIGZvbGxvdyBzdWIgZGlyZWN0b3JpZXMgb3Igbm90XG4gICAqIEBwYXJhbSB7V2Fsa0RpckNhbGxiYWNrfSBvblBhdGggVGhlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIGEgbmV3IHBhdGggaXMgZm91bmRcbiAgICovXG4gIGFzeW5jIHdhbGtEaXIgKGRpciwgcmVjdXJzaXZlLCBvblBhdGgpIHtcbiAgICBmb3IgKGNvbnN0IGZpbGUgb2YgYXdhaXQgdGhpcy5saXN0RGlyZWN0b3J5KGRpcikpIHtcbiAgICAgIGlmIChJR05PUkVEX1BBVEhTLmluY2x1ZGVzKGZpbGUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcmVsYXRpdmVQYXRoID0gcGF0aC5wb3NpeC5qb2luKGRpciwgZmlsZSk7XG4gICAgICBjb25zdCBmaWxlSW5mbyA9IGF3YWl0IHRoaXMuZ2V0RmlsZUluZm8ocmVsYXRpdmVQYXRoKTtcbiAgICAgIGNvbnN0IGlzRGlyZWN0b3J5ID0gZmlsZUluZm8uaXNEaXJlY3RvcnkoKTtcbiAgICAgIGF3YWl0IG9uUGF0aChyZWxhdGl2ZVBhdGgsIGlzRGlyZWN0b3J5KTtcbiAgICAgIGlmIChpc0RpcmVjdG9yeSAmJiByZWN1cnNpdmUpIHtcbiAgICAgICAgYXdhaXQgdGhpcy53YWxrRGlyKHJlbGF0aXZlUGF0aCwgcmVjdXJzaXZlLCBvblBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9jaGVja1N0YXR1cyAocmVzKSB7XG4gICAgaWYgKHJlcy5vcENvZGUgIT09IE9wZXJhdGlvbnMuU1RBVFVTKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgcmVzcG9uc2UgJHtvcGVyYXRpb25Db2RlKHJlcy5vcENvZGUpfWApO1xuICAgIH1cbiAgICBpZiAoXy5pc0VtcHR5KHJlcy5oZWFkZXJQYXlsb2FkKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdIZWFkZXIgcGF5bG9hZCBjYW5ub3QgYmUgZW1wdHkgZm9yIGEgc3RhdHVzIHJlc3BvbnNlJyk7XG4gICAgfVxuICAgIGlmIChyZXMuaGVhZGVyUGF5bG9hZFswXSAhPT0gRXJyb3JzLlNVQ0NFU1MpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCByZXNwb25zZSAke2Vycm9yQ29kZShyZXMuaGVhZGVyUGF5bG9hZFswXSl9YCk7XG4gICAgfVxuICB9XG5cbiAgX3BhcnNlQXJyYXkgKGJ1ZmZlcikge1xuICAgIGNvbnN0IGl0ZW1zID0gW107XG4gICAgbGV0IHN0YXJ0ID0gMDtcbiAgICBmb3IgKGxldCBlbmQgPSAwOyBlbmQgPCBidWZmZXIubGVuZ3RoOyBlbmQrKykge1xuICAgICAgaWYgKGJ1ZmZlcltlbmRdICE9PSBOVUxMX0RFTElNSVRFUl9DT0RFKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgaXRlbSA9IGJ1ZmZlci50b1N0cmluZygndXRmOCcsIHN0YXJ0LCBlbmQpO1xuICAgICAgaXRlbXMucHVzaChpdGVtKTtcbiAgICAgIC8vIFdlIHNraXAgdGhlIG51bGwgZGVsaW1ldGVyXG4gICAgICBzdGFydCA9IGVuZCArIDE7XG4gICAgfVxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIF9wYXJzZU9iamVjdCAoYnVmZmVyKSB7XG4gICAgY29uc3QgaXRlbXMgPSB7fTtcbiAgICBsZXQgc3RhcnQgPSAwO1xuICAgIGxldCBjdXJyZW50S2V5O1xuICAgIGZvciAobGV0IGVuZCA9IDA7IGVuZCA8IGJ1ZmZlci5sZW5ndGg7IGVuZCsrKSB7XG4gICAgICBpZiAoYnVmZmVyW2VuZF0gIT09IE5VTExfREVMSU1JVEVSX0NPREUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBjb25zdCBpdGVtID0gYnVmZmVyLnRvU3RyaW5nKCd1dGY4Jywgc3RhcnQsIGVuZCk7XG4gICAgICBpZiAoXy5pc05pbChjdXJyZW50S2V5KSkge1xuICAgICAgICBjdXJyZW50S2V5ID0gaXRlbTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGl0ZW1zW2N1cnJlbnRLZXldID0gaXRlbTtcbiAgICAgICAgY3VycmVudEtleSA9IG51bGw7XG4gICAgICB9XG4gICAgICAvLyBXZSBza2lwIHRoZSBudWxsIGRlbGltZXRlclxuICAgICAgc3RhcnQgPSBlbmQgKyAxO1xuICAgIH1cbiAgICBpZiAoY3VycmVudEtleSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gcGFyc2UgY29ycmVjdGx5ICR7YnVmZmVyfS4gUGxlYXNlIGludmVzdGlnYXRlYCk7XG4gICAgfVxuICAgIHJldHVybiBpdGVtcztcbiAgfVxuXG4gIF9jcmVhdGVQYWNrZXRQcm9taXNlIChtZXNzYWdlLCB0aW1lb3V0ID0gMTAwMDApIHtcbiAgICBjb25zdCBwYWNrZXROdW1iZXIgPSB0aGlzLl9wYWNrZXROdW1iZXIrKztcbiAgICBjb25zdCByZXNwb25zZSA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3BhY2tldE51bWJlcl0gPSByZXNvbHZlO1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5pc2ggdGhlIG9wZXJhdGlvbiAnJHttZXNzYWdlfScuIEZhaWxlZCB0byByZWNlaXZlIGFueSBkYXRhIHdpdGhpbiB0aGUgJHt0aW1lb3V0fW1zIHRpbWVvdXRgKSk7XG4gICAgICB9LCB0aW1lb3V0KTtcbiAgICB9KTtcbiAgICByZXR1cm4ge3BhY2tldE51bWJlciwgcmVzcG9uc2V9O1xuICB9XG59XG5cbmNsYXNzIEZpbGVJbmZvIHtcbiAgY29uc3RydWN0b3IgKHtzdF9zaXplLCBzdF9ibG9ja3MsIHN0X25saW5rLCBzdF9pZm10LCBzdF9tdGltZSwgc3RfYmlydGh0aW1lfSkge1xuICAgIHRoaXMuc2l6ZSA9IHBhcnNlSW50KHN0X3NpemUsIDEwKTtcbiAgICB0aGlzLmJsb2NrcyA9IHBhcnNlSW50KHN0X2Jsb2NrcywgMTApO1xuICAgIHRoaXMubmxpbmsgPSBwYXJzZUludChzdF9ubGluaywgMTApO1xuICAgIHRoaXMuaWZtdCA9IHN0X2lmbXQ7XG4gICAgLy8gbnMgdG8gbXNcbiAgICB0aGlzLm10aW1lTXMgPSBwYXJzZUludChzdF9tdGltZSwgMTApIC8gMTAwMDAwMDtcbiAgICAvLyBucyB0byBtc1xuICAgIHRoaXMuYmlydGh0aW1lTXMgPSBwYXJzZUludChzdF9iaXJ0aHRpbWUsIDEwKSAvIDEwMDAwMDA7XG4gIH1cblxuICBpc0RpcmVjdG9yeSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaWZtdCA9PT0gJ1NfSUZESVInO1xuICB9XG5cbiAgaXNGaWxlICgpIHtcbiAgICByZXR1cm4gdGhpcy5pZm10ID09PSAnU19JRlJFRyc7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQWZjU2VydmljZTtcbmV4cG9ydCB7IEFmY1NlcnZpY2UsIEFGQ19TRVJWSUNFX05BTUUgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQSxJQUFBQSxvQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsU0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sU0FBQSxHQUFBUCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU8sS0FBQSxHQUFBUixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVEsT0FBQSxHQUFBVCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVMsWUFBQSxHQUFBVCxPQUFBO0FBR0EsTUFBTVUsZ0JBQWdCLEdBQUcsZUFBZTtBQUFDQyxPQUFBLENBQUFELGdCQUFBLEdBQUFBLGdCQUFBO0FBQ3pDLE1BQU1FLGNBQWMsR0FBRyxDQUFDLEdBQUdDLGFBQUU7QUFFN0IsTUFBTUMsbUJBQW1CLEdBQUcsSUFBSTtBQUNoQyxNQUFNQyxhQUFhLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO0FBRWpD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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_lengthBasedSplitter","_interopRequireDefault","require","_protocol","_streams","_afcencoder","_afcdecoder","_constants","_bluebird","_path","_lodash","_baseService","AFC_SERVICE_NAME","exports","MAX_FRAME_SIZE","MB","NULL_DELIMITER_CODE","IGNORED_PATHS","AfcService","BaseServiceSocket","constructor","socketClient","_splitter","LengthBasedSplitter","readableStream","littleEndian","maxFrameLength","lengthFieldOffset","lengthFieldLength","lengthAdjustment","_decoder","AfcDecoder","_socketClient","pipe","_encoder","AfcEncoder","_assignClientFailureHandlers","_responseCallbacks","_packetNumber","on","_handleData","bind","data","cb","packetNumber","_","noop","createDirectory","path","response","_createPacketPromise","opCode","Operations","MAKE_DIR","headerPayload","Buffer","from","write","res","_checkStatus","deleteDirectory","REMOVE_PATH_AND_CONTENTS","listDirectory","READ_DIR","DATA","_parseArray","content","openFile","mode","pathPayload","fileModePayload","alloc","writeUInt32LE","FILE_OPEN","concat","FILE_OPEN_RES","readUInt32LE","createWriteStream","filePath","opts","fileHandle","FileModes","w","AfcWritableFileStream","createReadStream","options","r","AfcReadableFileStream","closeFileHandle","FILE_CLOSE","writeFile","buffer","FILE_WRITE","readFile","length","FILE_READ","getFileInfo","GET_FILE_INFO","FileInfo","_parseObject","walkDir","dir","recursive","onPath","file","includes","relativePath","posix","join","fileInfo","isDirectory","STATUS","Error","operationCode","isEmpty","Errors","SUCCESS","errorCode","items","start","end","item","toString","push","currentKey","isNil","message","timeout","B","resolve","reject","setTimeout","st_size","st_blocks","st_nlink","st_ifmt","st_mtime","st_birthtime","size","parseInt","blocks","nlink","ifmt","mtimeMs","birthtimeMs","isFile","_default","default"],"sources":["../../../lib/afc/index.js"],"sourcesContent":["\nimport LengthBasedSplitter from '../util/transformer/length-based-splitter';\nimport { Operations, operationCode, Errors, errorCode, FileModes } from './protocol';\nimport { AfcWritableFileStream, AfcReadableFileStream } from './streams';\nimport AfcEncoder from './transformer/afcencoder';\nimport AfcDecoder from './transformer/afcdecoder';\nimport { MB } from '../constants';\nimport B from 'bluebird';\nimport path from 'path';\nimport _ from 'lodash';\nimport { BaseServiceSocket } from '../base-service';\n\n\nconst AFC_SERVICE_NAME = 'com.apple.afc';\nconst MAX_FRAME_SIZE = 1 * MB;\n\nconst NULL_DELIMITER_CODE = 0x00;\nconst IGNORED_PATHS = ['.', '..'];\n\nclass AfcService extends BaseServiceSocket {\n constructor (socketClient) {\n super(socketClient);\n\n this._splitter = new LengthBasedSplitter({\n readableStream: socketClient,\n littleEndian: true,\n maxFrameLength: MAX_FRAME_SIZE,\n lengthFieldOffset: 8,\n lengthFieldLength: 8,\n lengthAdjustment: -8,\n });\n this._decoder = new AfcDecoder();\n this._socketClient.pipe(this._splitter).pipe(this._decoder);\n\n this._encoder = new AfcEncoder();\n this._encoder.pipe(this._socketClient);\n this._assignClientFailureHandlers(this._encoder);\n\n this._responseCallbacks = {};\n\n this._packetNumber = 0;\n this._decoder.on('data', this._handleData.bind(this));\n }\n\n _handleData (data) {\n const cb = this._responseCallbacks[data.packetNumber] || _.noop;\n cb(data); // eslint-disable-line promise/prefer-await-to-callbacks\n }\n\n /**\n * Creates a directory relative to an already existing directory\n * @param {string} path The path in unix format\n */\n async createDirectory (path) {\n const {packetNumber, response} = this._createPacketPromise(`Create directory '${path}'`);\n\n const data = {\n opCode: Operations.MAKE_DIR,\n packetNumber,\n headerPayload: Buffer.from(path)\n };\n this._encoder.write(data);\n const res = await response;\n this._checkStatus(res);\n }\n\n /**\n * Deletes are directory completely even it has content inside. This is an implementation of 'rm -r {path}'\n * @param {string} path The path in unix format\n */\n async deleteDirectory (path) {\n const {packetNumber, response} = this._createPacketPromise(`Delete directory '${path}'`);\n\n const data = {\n opCode: Operations.REMOVE_PATH_AND_CONTENTS,\n packetNumber,\n headerPayload: Buffer.from(path)\n };\n this._encoder.write(data);\n const res = await response;\n this._checkStatus(res);\n }\n\n /**\n * Lists a directory's contents and returns them in an array\n * @param {string} path The path in unix format\n * @return {Array.<string>}\n */\n async listDirectory (path) {\n const {packetNumber, response} = this._createPacketPromise(`List directory '${path}'`);\n\n const data = {\n opCode: Operations.READ_DIR,\n packetNumber,\n headerPayload: Buffer.from(path)\n };\n this._encoder.write(data);\n const res = await response;\n if (res.opCode !== Operations.DATA) {\n this._checkStatus(res);\n }\n\n return this._parseArray(res.content);\n }\n\n /**\n * Opens a file and creates a file handle\n * @param {string} path The path in unix format\n * @param {number} mode The file mode that will be used\n * @return {number}\n */\n async openFile (path, mode) {\n const {packetNumber, response} = this._createPacketPromise(`Open file '${path}'`);\n\n const pathPayload = Buffer.from(path);\n const fileModePayload = Buffer.alloc(8);\n fileModePayload.writeUInt32LE(mode, 0);\n\n const data = {\n opCode: Operations.FILE_OPEN,\n packetNumber,\n headerPayload: Buffer.concat([fileModePayload, pathPayload])\n };\n this._encoder.write(data);\n const res = await response;\n if (res.opCode !== Operations.FILE_OPEN_RES) {\n this._checkStatus(res);\n }\n\n return res.headerPayload.readUInt32LE(0);\n }\n\n /**\n * Opens a file and creates a nodejs write stream\n * @param {string} filePath The path in unix format\n * @param {Object} opts The regular options that are passed to a Stream.Writable\n * @return {AfcWritableFileStream}\n */\n async createWriteStream (filePath, opts) {\n const fileHandle = await this.openFile(filePath, FileModes.w);\n return new AfcWritableFileStream(fileHandle, this, opts);\n }\n\n /**\n * Opens a file and creates a nodejs read stream\n * @param {string} filePath The path in unix format\n * @param {Object} opts The regular options that are passed to a Stream.Readable\n * @return {AfcReadableFileStream}\n */\n async createReadStream (filePath, options) {\n const fileHandle = await this.openFile(filePath, FileModes.r);\n return new AfcReadableFileStream(fileHandle, this, options);\n }\n\n /**\n * Closes the file handle\n * @param {number} fileHandle the file handle to be closed\n */\n async closeFileHandle (fileHandle) {\n const {packetNumber, response} = this._createPacketPromise(`Close file handle '${fileHandle}'`);\n\n const fileModePayload = Buffer.alloc(8);\n fileModePayload.writeUInt32LE(fileHandle, 0);\n\n const data = {\n opCode: Operations.FILE_CLOSE,\n packetNumber,\n headerPayload: fileModePayload\n };\n this._encoder.write(data);\n const res = await response;\n this._checkStatus(res);\n }\n\n /**\n * Writes the buffer into the given file handle\n * @param {number} fileHandle The file handle to be used\n * @param {Buffer} buffer The buffer that will be written\n */\n async writeFile (fileHandle, buffer) {\n const {packetNumber, response} = this._createPacketPromise(`Write to file handle '${fileHandle}'`);\n\n const headerPayload = Buffer.alloc(8);\n headerPayload.writeUInt32LE(fileHandle, 0);\n\n const data = {\n opCode: Operations.FILE_WRITE,\n packetNumber,\n headerPayload,\n content: buffer\n };\n this._encoder.write(data);\n const res = await response;\n this._checkStatus(res);\n }\n\n /**\n * Read a certain length of buffer from the file handle\n * @param {number} fileHandle The file handle to be used\n * @param {number} length The length that wants to be read from the file handle\n * @return {Buffer}\n */\n async readFile (fileHandle, length) {\n const {packetNumber, response} = this._createPacketPromise(`Read from file handle '${fileHandle}'`);\n\n const headerPayload = Buffer.alloc(16);\n headerPayload.writeUInt32LE(fileHandle, 0);\n headerPayload.writeUInt32LE(length, 8);\n\n const data = {\n opCode: Operations.FILE_READ,\n packetNumber,\n headerPayload\n };\n this._encoder.write(data);\n const res = await response;\n if (res.opCode !== Operations.DATA) {\n this._checkStatus(res);\n }\n return res.content;\n }\n\n /**\n * Get the file info of the given path\n * @param {string} path The path in unix format\n * @return {FileInfo}\n */\n async getFileInfo (path) {\n const {packetNumber, response} = this._createPacketPromise(`Get file info '${path}'`);\n\n const data = {\n opCode: Operations.GET_FILE_INFO,\n packetNumber,\n headerPayload: Buffer.from(path)\n };\n this._encoder.write(data);\n const res = await response;\n if (res.opCode !== Operations.DATA) {\n this._checkStatus(res);\n }\n return new FileInfo(this._parseObject(res.content));\n }\n\n /** The callback function which will be called during the directory walking\n * @callback WalkDirCallback\n * @param {string} itemPath The path of the file or folder\n * @param {boolean} isDirectory Shows if it is a directory or a file\n */\n\n /**\n *\n * @param {string} dir The path in unix format\n * @param {boolean} recursive Sets whether to follow sub directories or not\n * @param {WalkDirCallback} onPath The callback to be called when a new path is found\n */\n async walkDir (dir, recursive, onPath) {\n for (const file of await this.listDirectory(dir)) {\n if (IGNORED_PATHS.includes(file)) {\n continue;\n }\n const relativePath = path.posix.join(dir, file);\n const fileInfo = await this.getFileInfo(relativePath);\n const isDirectory = fileInfo.isDirectory();\n await onPath(relativePath, isDirectory);\n if (isDirectory && recursive) {\n await this.walkDir(relativePath, recursive, onPath);\n }\n }\n }\n\n _checkStatus (res) {\n if (res.opCode !== Operations.STATUS) {\n throw new Error(`Unexpected response ${operationCode(res.opCode)}`);\n }\n if (_.isEmpty(res.headerPayload)) {\n throw new Error('Header payload cannot be empty for a status response');\n }\n if (res.headerPayload[0] !== Errors.SUCCESS) {\n throw new Error(`Unexpected response ${errorCode(res.headerPayload[0])}`);\n }\n }\n\n _parseArray (buffer) {\n const items = [];\n let start = 0;\n for (let end = 0; end < buffer.length; end++) {\n if (buffer[end] !== NULL_DELIMITER_CODE) {\n continue;\n }\n const item = buffer.toString('utf8', start, end);\n items.push(item);\n // We skip the null delimeter\n start = end + 1;\n }\n return items;\n }\n\n _parseObject (buffer) {\n const items = {};\n let start = 0;\n let currentKey;\n for (let end = 0; end < buffer.length; end++) {\n if (buffer[end] !== NULL_DELIMITER_CODE) {\n continue;\n }\n const item = buffer.toString('utf8', start, end);\n if (_.isNil(currentKey)) {\n currentKey = item;\n } else {\n items[currentKey] = item;\n currentKey = null;\n }\n // We skip the null delimeter\n start = end + 1;\n }\n if (currentKey) {\n throw new Error(`Failed to parse correctly ${buffer}. Please investigate`);\n }\n return items;\n }\n\n _createPacketPromise (message, timeout = 10000) {\n const packetNumber = this._packetNumber++;\n const response = new B((resolve, reject) => {\n this._responseCallbacks[packetNumber] = resolve;\n setTimeout(function () {\n reject(new Error(`Could not finish the operation '${message}'. Failed to receive any data within the ${timeout}ms timeout`));\n }, timeout);\n });\n return {packetNumber, response};\n }\n}\n\nclass FileInfo {\n constructor ({st_size, st_blocks, st_nlink, st_ifmt, st_mtime, st_birthtime}) {\n this.size = parseInt(st_size, 10);\n this.blocks = parseInt(st_blocks, 10);\n this.nlink = parseInt(st_nlink, 10);\n this.ifmt = st_ifmt;\n // ns to ms\n this.mtimeMs = parseInt(st_mtime, 10) / 1000000;\n // ns to ms\n this.birthtimeMs = parseInt(st_birthtime, 10) / 1000000;\n }\n\n isDirectory () {\n return this.ifmt === 'S_IFDIR';\n }\n\n isFile () {\n return this.ifmt === 'S_IFREG';\n }\n}\n\nexport default AfcService;\nexport { AfcService, AFC_SERVICE_NAME };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["_lengthBasedSplitter","_interopRequireDefault","require","_protocol","_streams","_afcencoder","_afcdecoder","_constants","_bluebird","_path","_lodash","_baseService","AFC_SERVICE_NAME","exports","MAX_FRAME_SIZE","MB","NULL_DELIMITER_CODE","IGNORED_PATHS","AfcService","BaseServiceSocket","constructor","socketClient","_splitter","LengthBasedSplitter","readableStream","littleEndian","maxFrameLength","lengthFieldOffset","lengthFieldLength","lengthAdjustment","_decoder","AfcDecoder","_socketClient","pipe","_encoder","AfcEncoder","_assignClientFailureHandlers","_responseCallbacks","_packetNumber","on","_handleData","bind","data","cb","packetNumber","_","noop","createDirectory","path","response","_createPacketPromise","opCode","Operations","MAKE_DIR","headerPayload","Buffer","from","write","res","_checkStatus","deleteDirectory","REMOVE_PATH_AND_CONTENTS","listDirectory","READ_DIR","DATA","_parseArray","content","openFile","mode","pathPayload","fileModePayload","alloc","writeUInt32LE","FILE_OPEN","concat","FILE_OPEN_RES","readUInt32LE","createWriteStream","filePath","opts","fileHandle","FileModes","w","AfcWritableFileStream","createReadStream","options","r","AfcReadableFileStream","closeFileHandle","FILE_CLOSE","writeFile","buffer","FILE_WRITE","readFile","length","FILE_READ","getFileInfo","GET_FILE_INFO","FileInfo","_parseObject","walkDir","dir","recursive","onPath","file","includes","relativePath","posix","join","fileInfo","isDirectory","STATUS","Error","operationCode","isEmpty","Errors","SUCCESS","errorCode","items","start","end","item","toString","push","currentKey","isNil","message","timeout","B","resolve","reject","setTimeout","st_size","st_blocks","st_nlink","st_ifmt","st_mtime","st_birthtime","size","parseInt","blocks","nlink","ifmt","mtimeMs","birthtimeMs","isFile","_default","default"],"sources":["../../../lib/afc/index.js"],"sourcesContent":["\nimport LengthBasedSplitter from '../util/transformer/length-based-splitter';\nimport { Operations, operationCode, Errors, errorCode, FileModes } from './protocol';\nimport { AfcWritableFileStream, AfcReadableFileStream } from './streams';\nimport AfcEncoder from './transformer/afcencoder';\nimport AfcDecoder from './transformer/afcdecoder';\nimport { MB } from '../constants';\nimport B from 'bluebird';\nimport path from 'path';\nimport _ from 'lodash';\nimport { BaseServiceSocket } from '../base-service';\n\n\nconst AFC_SERVICE_NAME = 'com.apple.afc';\nconst MAX_FRAME_SIZE = 1 * MB;\n\nconst NULL_DELIMITER_CODE = 0x00;\nconst IGNORED_PATHS = ['.', '..'];\n\nclass AfcService extends BaseServiceSocket {\n constructor (socketClient) {\n super(socketClient);\n\n this._splitter = new LengthBasedSplitter({\n readableStream: socketClient,\n littleEndian: true,\n maxFrameLength: MAX_FRAME_SIZE,\n lengthFieldOffset: 8,\n lengthFieldLength: 8,\n lengthAdjustment: -8,\n });\n this._decoder = new AfcDecoder();\n this._socketClient.pipe(this._splitter).pipe(this._decoder);\n\n this._encoder = new AfcEncoder();\n this._encoder.pipe(this._socketClient);\n this._assignClientFailureHandlers(this._encoder);\n\n this._responseCallbacks = {};\n\n this._packetNumber = 0;\n this._decoder.on('data', this._handleData.bind(this));\n }\n\n _handleData (data) {\n const cb = this._responseCallbacks[data.packetNumber] || _.noop;\n cb(data); // eslint-disable-line promise/prefer-await-to-callbacks\n }\n\n /**\n * Creates a directory relative to an already existing directory\n * @param {string} path The path in unix format\n */\n async createDirectory (path) {\n const {packetNumber, response} = this._createPacketPromise(`Create directory '${path}'`);\n\n const data = {\n opCode: Operations.MAKE_DIR,\n packetNumber,\n headerPayload: Buffer.from(path)\n };\n this._encoder.write(data);\n const res = await response;\n this._checkStatus(res);\n }\n\n /**\n * Deletes are directory completely even it has content inside. This is an implementation of 'rm -r {path}'\n * @param {string} path The path in unix format\n */\n async deleteDirectory (path) {\n const {packetNumber, response} = this._createPacketPromise(`Delete directory '${path}'`);\n\n const data = {\n opCode: Operations.REMOVE_PATH_AND_CONTENTS,\n packetNumber,\n headerPayload: Buffer.from(path)\n };\n this._encoder.write(data);\n const res = await response;\n this._checkStatus(res);\n }\n\n /**\n * Lists a directory's contents and returns them in an array\n * @param {string} path The path in unix format\n * @return {Array.<string>}\n */\n async listDirectory (path) {\n const {packetNumber, response} = this._createPacketPromise(`List directory '${path}'`);\n\n const data = {\n opCode: Operations.READ_DIR,\n packetNumber,\n headerPayload: Buffer.from(path)\n };\n this._encoder.write(data);\n const res = await response;\n if (res.opCode !== Operations.DATA) {\n this._checkStatus(res);\n }\n\n return this._parseArray(res.content);\n }\n\n /**\n * Opens a file and creates a file handle\n * @param {string} path The path in unix format\n * @param {number} mode The file mode that will be used\n * @return {number}\n */\n async openFile (path, mode) {\n const {packetNumber, response} = this._createPacketPromise(`Open file '${path}'`);\n\n const pathPayload = Buffer.from(path);\n const fileModePayload = Buffer.alloc(8);\n fileModePayload.writeUInt32LE(mode, 0);\n\n const data = {\n opCode: Operations.FILE_OPEN,\n packetNumber,\n headerPayload: Buffer.concat([fileModePayload, pathPayload])\n };\n this._encoder.write(data);\n const res = await response;\n if (res.opCode !== Operations.FILE_OPEN_RES) {\n this._checkStatus(res);\n }\n\n return res.headerPayload.readUInt32LE(0);\n }\n\n /**\n * Opens a file and creates a nodejs write stream\n * @param {string} filePath The path in unix format\n * @param {Object} opts The regular options that are passed to a Stream.Writable\n * @return {AfcWritableFileStream}\n */\n async createWriteStream (filePath, opts) {\n const fileHandle = await this.openFile(filePath, FileModes.w);\n return new AfcWritableFileStream(fileHandle, this, opts);\n }\n\n /**\n * Opens a file and creates a nodejs read stream\n * @param {string} filePath The path in unix format\n * @param {Object} opts The regular options that are passed to a Stream.Readable\n * @return {AfcReadableFileStream}\n */\n async createReadStream (filePath, options) {\n const fileHandle = await this.openFile(filePath, FileModes.r);\n return new AfcReadableFileStream(fileHandle, this, options);\n }\n\n /**\n * Closes the file handle\n * @param {number} fileHandle the file handle to be closed\n */\n async closeFileHandle (fileHandle) {\n const {packetNumber, response} = this._createPacketPromise(`Close file handle '${fileHandle}'`);\n\n const fileModePayload = Buffer.alloc(8);\n fileModePayload.writeUInt32LE(fileHandle, 0);\n\n const data = {\n opCode: Operations.FILE_CLOSE,\n packetNumber,\n headerPayload: fileModePayload\n };\n this._encoder.write(data);\n const res = await response;\n this._checkStatus(res);\n }\n\n /**\n * Writes the buffer into the given file handle\n * @param {number} fileHandle The file handle to be used\n * @param {Buffer} buffer The buffer that will be written\n */\n async writeFile (fileHandle, buffer) {\n const {packetNumber, response} = this._createPacketPromise(`Write to file handle '${fileHandle}'`);\n\n const headerPayload = Buffer.alloc(8);\n headerPayload.writeUInt32LE(fileHandle, 0);\n\n const data = {\n opCode: Operations.FILE_WRITE,\n packetNumber,\n headerPayload,\n content: buffer\n };\n this._encoder.write(data);\n const res = await response;\n this._checkStatus(res);\n }\n\n /**\n * Read a certain length of buffer from the file handle\n * @param {number} fileHandle The file handle to be used\n * @param {number} length The length that wants to be read from the file handle\n * @return {Buffer}\n */\n async readFile (fileHandle, length) {\n const {packetNumber, response} = this._createPacketPromise(`Read from file handle '${fileHandle}'`);\n\n const headerPayload = Buffer.alloc(16);\n headerPayload.writeUInt32LE(fileHandle, 0);\n headerPayload.writeUInt32LE(length, 8);\n\n const data = {\n opCode: Operations.FILE_READ,\n packetNumber,\n headerPayload\n };\n this._encoder.write(data);\n const res = await response;\n if (res.opCode !== Operations.DATA) {\n this._checkStatus(res);\n }\n return res.content;\n }\n\n /**\n * Get the file info of the given path\n * @param {string} path The path in unix format\n * @return {FileInfo}\n */\n async getFileInfo (path) {\n const {packetNumber, response} = this._createPacketPromise(`Get file info '${path}'`);\n\n const data = {\n opCode: Operations.GET_FILE_INFO,\n packetNumber,\n headerPayload: Buffer.from(path)\n };\n this._encoder.write(data);\n const res = await response;\n if (res.opCode !== Operations.DATA) {\n this._checkStatus(res);\n }\n return new FileInfo(this._parseObject(res.content));\n }\n\n /** The callback function which will be called during the directory walking\n * @callback WalkDirCallback\n * @param {string} itemPath The path of the file or folder\n * @param {boolean} isDirectory Shows if it is a directory or a file\n */\n\n /**\n *\n * @param {string} dir The path in unix format\n * @param {boolean} recursive Sets whether to follow sub directories or not\n * @param {WalkDirCallback} onPath The callback to be called when a new path is found\n */\n async walkDir (dir, recursive, onPath) {\n for (const file of await this.listDirectory(dir)) {\n if (IGNORED_PATHS.includes(file)) {\n continue;\n }\n const relativePath = path.posix.join(dir, file);\n const fileInfo = await this.getFileInfo(relativePath);\n const isDirectory = fileInfo.isDirectory();\n await onPath(relativePath, isDirectory);\n if (isDirectory && recursive) {\n await this.walkDir(relativePath, recursive, onPath);\n }\n }\n }\n\n _checkStatus (res) {\n if (res.opCode !== Operations.STATUS) {\n throw new Error(`Unexpected response ${operationCode(res.opCode)}`);\n }\n if (_.isEmpty(res.headerPayload)) {\n throw new Error('Header payload cannot be empty for a status response');\n }\n if (res.headerPayload[0] !== Errors.SUCCESS) {\n throw new Error(`Unexpected response ${errorCode(res.headerPayload[0])}`);\n }\n }\n\n _parseArray (buffer) {\n const items = [];\n let start = 0;\n for (let end = 0; end < buffer.length; end++) {\n if (buffer[end] !== NULL_DELIMITER_CODE) {\n continue;\n }\n const item = buffer.toString('utf8', start, end);\n items.push(item);\n // We skip the null delimeter\n start = end + 1;\n }\n return items;\n }\n\n _parseObject (buffer) {\n const items = {};\n let start = 0;\n let currentKey;\n for (let end = 0; end < buffer.length; end++) {\n if (buffer[end] !== NULL_DELIMITER_CODE) {\n continue;\n }\n const item = buffer.toString('utf8', start, end);\n if (_.isNil(currentKey)) {\n currentKey = item;\n } else {\n items[currentKey] = item;\n currentKey = null;\n }\n // We skip the null delimeter\n start = end + 1;\n }\n if (currentKey) {\n throw new Error(`Failed to parse correctly ${buffer}. Please investigate`);\n }\n return items;\n }\n\n _createPacketPromise (message, timeout = 10000) {\n const packetNumber = this._packetNumber++;\n const response = new B((resolve, reject) => {\n this._responseCallbacks[packetNumber] = resolve;\n setTimeout(function () {\n reject(new Error(`Could not finish the operation '${message}'. Failed to receive any data within the ${timeout}ms timeout`));\n }, timeout);\n });\n return {packetNumber, response};\n }\n}\n\nclass FileInfo {\n constructor ({st_size, st_blocks, st_nlink, st_ifmt, st_mtime, st_birthtime}) {\n this.size = parseInt(st_size, 10);\n this.blocks = parseInt(st_blocks, 10);\n this.nlink = parseInt(st_nlink, 10);\n this.ifmt = st_ifmt;\n // ns to ms\n this.mtimeMs = parseInt(st_mtime, 10) / 1000000;\n // ns to ms\n this.birthtimeMs = parseInt(st_birthtime, 10) / 1000000;\n }\n\n isDirectory () {\n return this.ifmt === 'S_IFDIR';\n }\n\n isFile () {\n return this.ifmt === 'S_IFREG';\n }\n}\n\nexport default AfcService;\nexport { AfcService, AFC_SERVICE_NAME };\n"],"mappings":"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"}
|
package/build/lib/afc/streams.js
CHANGED
|
@@ -79,4 +79,4 @@ class AfcWritableFileStream extends _stream.default.Writable {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
exports.AfcWritableFileStream = AfcWritableFileStream;
|
|
82
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3RyZWFtIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2xvZ2dlciIsIkFmY1JlYWRhYmxlRmlsZVN0cmVhbSIsInN0cmVhbSIsIlJlYWRhYmxlIiwiY29uc3RydWN0b3IiLCJmaWxlSGFuZGxlIiwiYWZjU2VydmljZSIsIm9wdGlvbnMiLCJfZmlsZUhhbmRsZSIsIl9hZmNTZXJ2aWNlIiwiX2F1dG9EZXN0cm95IiwiYXV0b0Rlc3Ryb3kiLCJfZGVzdHJveWVkIiwiX3JlYWQiLCJzaXplIiwicmVhZEZpbGUiLCJ0aGVuIiwiZGF0YSIsInB1c2giLCJfIiwiaXNFbXB0eSIsImNhdGNoIiwiZSIsImRlc3Ryb3kiLCJlbWl0IiwiX2Rlc3Ryb3kiLCJlcnIiLCJkb25lIiwiY2xvc2VGaWxlSGFuZGxlIiwibG9nIiwiZGVidWciLCJleHBvcnRzIiwiQWZjV3JpdGFibGVGaWxlU3RyZWFtIiwiV3JpdGFibGUiLCJfd3JpdGUiLCJjaHVuayIsImVuY29kaW5nIiwibmV4dCIsIndyaXRlRmlsZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9hZmMvc3RyZWFtcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by10aGVuICovXG5pbXBvcnQgc3RyZWFtIGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuXG5jbGFzcyBBZmNSZWFkYWJsZUZpbGVTdHJlYW0gZXh0ZW5kcyBzdHJlYW0uUmVhZGFibGUge1xuXG4gIGNvbnN0cnVjdG9yIChmaWxlSGFuZGxlLCBhZmNTZXJ2aWNlLCBvcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gICAgdGhpcy5fZmlsZUhhbmRsZSA9IGZpbGVIYW5kbGU7XG4gICAgdGhpcy5fYWZjU2VydmljZSA9IGFmY1NlcnZpY2U7XG4gICAgdGhpcy5fYXV0b0Rlc3Ryb3kgPSAhIW9wdGlvbnMuYXV0b0Rlc3Ryb3k7XG4gICAgdGhpcy5fZGVzdHJveWVkID0gZmFsc2U7XG4gIH1cblxuICBfcmVhZCAoc2l6ZSkge1xuICAgIHRoaXMuX2FmY1NlcnZpY2UucmVhZEZpbGUodGhpcy5fZmlsZUhhbmRsZSwgc2l6ZSlcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5fZGVzdHJveWVkKSB7XG4gICAgICAgICAgdGhpcy5wdXNoKF8uaXNFbXB0eShkYXRhKSA/IG51bGwgOiBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fYXV0b0Rlc3Ryb3kpIHtcbiAgICAgICAgICB0aGlzLmRlc3Ryb3koZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIF9kZXN0cm95IChlcnIsIGRvbmUpIHtcbiAgICBpZiAodGhpcy5fZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2Rlc3Ryb3llZCA9IHRydWU7XG4gICAgdGhpcy5wdXNoKG51bGwpO1xuICAgIHRoaXMuX2FmY1NlcnZpY2UuY2xvc2VGaWxlSGFuZGxlKHRoaXMuX2ZpbGVIYW5kbGUpXG4gICAgICAudGhlbigoKSA9PiBkb25lKGVycikpXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlcnIgPSBlO1xuICAgICAgICB9XG4gICAgICAgIGRvbmUoZXJyKTtcbiAgICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIEFmY1dyaXRhYmxlRmlsZVN0cmVhbSBleHRlbmRzIHN0cmVhbS5Xcml0YWJsZSB7XG5cbiAgY29uc3RydWN0b3IgKGZpbGVIYW5kbGUsIGFmY1NlcnZpY2UsIG9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgICB0aGlzLl9maWxlSGFuZGxlID0gZmlsZUhhbmRsZTtcbiAgICB0aGlzLl9hZmNTZXJ2aWNlID0gYWZjU2VydmljZTtcbiAgICB0aGlzLl9hdXRvRGVzdHJveSA9ICEhb3B0aW9ucy5hdXRvRGVzdHJveTtcbiAgICB0aGlzLl9kZXN0cm95ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIF93cml0ZSAoY2h1bmssIGVuY29kaW5nLCBuZXh0KSB7XG4gICAgdGhpcy5fYWZjU2VydmljZS53cml0ZUZpbGUodGhpcy5fZmlsZUhhbmRsZSwgY2h1bmspXG4gICAgICAudGhlbigoKSA9PiBuZXh0KCkpXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2F1dG9EZXN0cm95KSB7XG4gICAgICAgICAgdGhpcy5kZXN0cm95KGUpO1xuICAgICAgICB9XG4gICAgICAgIG5leHQoZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIF9kZXN0cm95IChlcnIsIGRvbmUpIHtcbiAgICBpZiAodGhpcy5fZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2Rlc3Ryb3llZCA9IHRydWU7XG4gICAgdGhpcy5fYWZjU2VydmljZS5jbG9zZUZpbGVIYW5kbGUodGhpcy5fZmlsZUhhbmRsZSlcbiAgICAgIC50aGVuKCgpID0+
|
|
82
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3RyZWFtIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbG9kYXNoIiwiX2xvZ2dlciIsIkFmY1JlYWRhYmxlRmlsZVN0cmVhbSIsInN0cmVhbSIsIlJlYWRhYmxlIiwiY29uc3RydWN0b3IiLCJmaWxlSGFuZGxlIiwiYWZjU2VydmljZSIsIm9wdGlvbnMiLCJfZmlsZUhhbmRsZSIsIl9hZmNTZXJ2aWNlIiwiX2F1dG9EZXN0cm95IiwiYXV0b0Rlc3Ryb3kiLCJfZGVzdHJveWVkIiwiX3JlYWQiLCJzaXplIiwicmVhZEZpbGUiLCJ0aGVuIiwiZGF0YSIsInB1c2giLCJfIiwiaXNFbXB0eSIsImNhdGNoIiwiZSIsImRlc3Ryb3kiLCJlbWl0IiwiX2Rlc3Ryb3kiLCJlcnIiLCJkb25lIiwiY2xvc2VGaWxlSGFuZGxlIiwibG9nIiwiZGVidWciLCJleHBvcnRzIiwiQWZjV3JpdGFibGVGaWxlU3RyZWFtIiwiV3JpdGFibGUiLCJfd3JpdGUiLCJjaHVuayIsImVuY29kaW5nIiwibmV4dCIsIndyaXRlRmlsZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9hZmMvc3RyZWFtcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by10aGVuICovXG5pbXBvcnQgc3RyZWFtIGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuXG5jbGFzcyBBZmNSZWFkYWJsZUZpbGVTdHJlYW0gZXh0ZW5kcyBzdHJlYW0uUmVhZGFibGUge1xuXG4gIGNvbnN0cnVjdG9yIChmaWxlSGFuZGxlLCBhZmNTZXJ2aWNlLCBvcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG4gICAgdGhpcy5fZmlsZUhhbmRsZSA9IGZpbGVIYW5kbGU7XG4gICAgdGhpcy5fYWZjU2VydmljZSA9IGFmY1NlcnZpY2U7XG4gICAgdGhpcy5fYXV0b0Rlc3Ryb3kgPSAhIW9wdGlvbnMuYXV0b0Rlc3Ryb3k7XG4gICAgdGhpcy5fZGVzdHJveWVkID0gZmFsc2U7XG4gIH1cblxuICBfcmVhZCAoc2l6ZSkge1xuICAgIHRoaXMuX2FmY1NlcnZpY2UucmVhZEZpbGUodGhpcy5fZmlsZUhhbmRsZSwgc2l6ZSlcbiAgICAgIC50aGVuKChkYXRhKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5fZGVzdHJveWVkKSB7XG4gICAgICAgICAgdGhpcy5wdXNoKF8uaXNFbXB0eShkYXRhKSA/IG51bGwgOiBkYXRhKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fYXV0b0Rlc3Ryb3kpIHtcbiAgICAgICAgICB0aGlzLmRlc3Ryb3koZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIF9kZXN0cm95IChlcnIsIGRvbmUpIHtcbiAgICBpZiAodGhpcy5fZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2Rlc3Ryb3llZCA9IHRydWU7XG4gICAgdGhpcy5wdXNoKG51bGwpO1xuICAgIHRoaXMuX2FmY1NlcnZpY2UuY2xvc2VGaWxlSGFuZGxlKHRoaXMuX2ZpbGVIYW5kbGUpXG4gICAgICAudGhlbigoKSA9PiBkb25lKGVycikpXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlcnIgPSBlO1xuICAgICAgICB9XG4gICAgICAgIGRvbmUoZXJyKTtcbiAgICAgIH0pO1xuICB9XG59XG5cbmNsYXNzIEFmY1dyaXRhYmxlRmlsZVN0cmVhbSBleHRlbmRzIHN0cmVhbS5Xcml0YWJsZSB7XG5cbiAgY29uc3RydWN0b3IgKGZpbGVIYW5kbGUsIGFmY1NlcnZpY2UsIG9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgICB0aGlzLl9maWxlSGFuZGxlID0gZmlsZUhhbmRsZTtcbiAgICB0aGlzLl9hZmNTZXJ2aWNlID0gYWZjU2VydmljZTtcbiAgICB0aGlzLl9hdXRvRGVzdHJveSA9ICEhb3B0aW9ucy5hdXRvRGVzdHJveTtcbiAgICB0aGlzLl9kZXN0cm95ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIF93cml0ZSAoY2h1bmssIGVuY29kaW5nLCBuZXh0KSB7XG4gICAgdGhpcy5fYWZjU2VydmljZS53cml0ZUZpbGUodGhpcy5fZmlsZUhhbmRsZSwgY2h1bmspXG4gICAgICAudGhlbigoKSA9PiBuZXh0KCkpXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2F1dG9EZXN0cm95KSB7XG4gICAgICAgICAgdGhpcy5kZXN0cm95KGUpO1xuICAgICAgICB9XG4gICAgICAgIG5leHQoZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIF9kZXN0cm95IChlcnIsIGRvbmUpIHtcbiAgICBpZiAodGhpcy5fZGVzdHJveWVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2Rlc3Ryb3llZCA9IHRydWU7XG4gICAgdGhpcy5fYWZjU2VydmljZS5jbG9zZUZpbGVIYW5kbGUodGhpcy5fZmlsZUhhbmRsZSlcbiAgICAgIC50aGVuKCgpID0+IGRvbmUoZXJyKSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVyciA9IGU7XG4gICAgICAgIH1cbiAgICAgICAgZG9uZShlcnIpO1xuICAgICAgfSk7XG4gIH1cbn1cblxuZXhwb3J0IHsgQWZjUmVhZGFibGVGaWxlU3RyZWFtLCBBZmNXcml0YWJsZUZpbGVTdHJlYW0gfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFDQSxJQUFBQSxPQUFB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streams.js","names":["_stream","_interopRequireDefault","require","_lodash","_logger","AfcReadableFileStream","stream","Readable","constructor","fileHandle","afcService","options","_fileHandle","_afcService","_autoDestroy","autoDestroy","_destroyed","_read","size","readFile","then","data","push","_","isEmpty","catch","e","destroy","emit","_destroy","err","done","closeFileHandle","log","debug","exports","AfcWritableFileStream","Writable","_write","chunk","encoding","next","writeFile"],"sources":["../../../lib/afc/streams.js"],"sourcesContent":["/* eslint-disable promise/prefer-await-to-then */\nimport stream from 'stream';\nimport _ from 'lodash';\nimport log from '../logger';\n\nclass AfcReadableFileStream extends stream.Readable {\n\n constructor (fileHandle, afcService, options) {\n super(options);\n this._fileHandle = fileHandle;\n this._afcService = afcService;\n this._autoDestroy = !!options.autoDestroy;\n this._destroyed = false;\n }\n\n _read (size) {\n this._afcService.readFile(this._fileHandle, size)\n .then((data) => {\n if (!this._destroyed) {\n this.push(_.isEmpty(data) ? null : data);\n }\n })\n .catch((e) => {\n if (this._autoDestroy) {\n this.destroy(e);\n } else {\n this.emit('error', e);\n }\n });\n }\n\n _destroy (err, done) {\n if (this._destroyed) {\n return;\n }\n this._destroyed = true;\n this.push(null);\n this._afcService.closeFileHandle(this._fileHandle)\n .then(() => done(err))\n .catch((e) => {\n if (err) {\n log.debug(e);\n } else {\n err = e;\n }\n done(err);\n });\n }\n}\n\nclass AfcWritableFileStream extends stream.Writable {\n\n constructor (fileHandle, afcService, options) {\n super(options);\n this._fileHandle = fileHandle;\n this._afcService = afcService;\n this._autoDestroy = !!options.autoDestroy;\n this._destroyed = false;\n }\n\n _write (chunk, encoding, next) {\n this._afcService.writeFile(this._fileHandle, chunk)\n .then(() => next())\n .catch((e) => {\n if (this._autoDestroy) {\n this.destroy(e);\n }\n next(e);\n });\n }\n\n _destroy (err, done) {\n if (this._destroyed) {\n return;\n }\n this._destroyed = true;\n this._afcService.closeFileHandle(this._fileHandle)\n .then(() => done(err))\n .catch((e) => {\n if (err) {\n log.debug(e);\n } else {\n err = e;\n }\n done(err);\n });\n }\n}\n\nexport { AfcReadableFileStream, AfcWritableFileStream };\n"],"mappings":";;;;;;;;AACA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,OAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,MAAMG,qBAAqB,SAASC,eAAM,CAACC,QAAQ,CAAC;EAElDC,WAAWA,CAAEC,UAAU,EAAEC,UAAU,EAAEC,OAAO,EAAE;IAC5C,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,WAAW,GAAGH,UAAU;IAC7B,IAAI,CAACI,WAAW,GAAGH,UAAU;IAC7B,IAAI,CAACI,YAAY,GAAG,CAAC,CAACH,OAAO,CAACI,WAAW;IACzC,IAAI,CAACC,UAAU,GAAG,KAAK;EACzB;EAEAC,KAAKA,CAAEC,IAAI,EAAE;IACX,IAAI,CAACL,WAAW,CAACM,QAAQ,CAAC,IAAI,CAACP,WAAW,EAAEM,IAAI,CAAC,CAC9CE,IAAI,CAAEC,IAAI,IAAK;MACd,IAAI,CAAC,IAAI,CAACL,UAAU,EAAE;QACpB,IAAI,CAACM,IAAI,CAACC,eAAC,CAACC,OAAO,CAACH,IAAI,CAAC,GAAG,IAAI,GAAGA,IAAI,CAAC;MAC1C;IACF,CAAC,CAAC,CACDI,KAAK,CAAEC,CAAC,IAAK;MACZ,IAAI,IAAI,CAACZ,YAAY,EAAE;QACrB,IAAI,CAACa,OAAO,CAACD,CAAC,CAAC;MACjB,CAAC,MAAM;QACL,IAAI,CAACE,IAAI,CAAC,OAAO,EAAEF,CAAC,CAAC;MACvB;IACF,CAAC,CAAC;EACN;EAEAG,QAAQA,CAAEC,GAAG,EAAEC,IAAI,EAAE;IACnB,IAAI,IAAI,CAACf,UAAU,EAAE;MACnB;IACF;IACA,IAAI,CAACA,UAAU,GAAG,IAAI;IACtB,IAAI,CAACM,IAAI,CAAC,IAAI,CAAC;IACf,IAAI,CAACT,WAAW,CAACmB,eAAe,CAAC,IAAI,CAACpB,WAAW,CAAC,CAC/CQ,IAAI,CAAC,MAAMW,IAAI,CAACD,GAAG,CAAC,CAAC,CACrBL,KAAK,CAAEC,CAAC,IAAK;MACZ,IAAII,GAAG,EAAE;QACPG,eAAG,CAACC,KAAK,CAACR,CAAC,CAAC;MACd,CAAC,MAAM;QACLI,GAAG,GAAGJ,CAAC;MACT;MACAK,IAAI,CAACD,GAAG,CAAC;IACX,CAAC,CAAC;EACN;AACF;AAACK,OAAA,CAAA9B,qBAAA,GAAAA,qBAAA;AAED,MAAM+B,qBAAqB,SAAS9B,eAAM,CAAC+B,QAAQ,CAAC;EAElD7B,WAAWA,CAAEC,UAAU,EAAEC,UAAU,EAAEC,OAAO,EAAE;IAC5C,KAAK,CAACA,OAAO,CAAC;IACd,IAAI,CAACC,WAAW,GAAGH,UAAU;IAC7B,IAAI,CAACI,WAAW,GAAGH,UAAU;IAC7B,IAAI,CAACI,YAAY,GAAG,CAAC,CAACH,OAAO,CAACI,WAAW;IACzC,IAAI,CAACC,UAAU,GAAG,KAAK;EACzB;EAEAsB,MAAMA,CAAEC,KAAK,EAAEC,QAAQ,EAAEC,IAAI,EAAE;IAC7B,IAAI,CAAC5B,WAAW,CAAC6B,SAAS,CAAC,IAAI,CAAC9B,WAAW,EAAE2B,KAAK,CAAC,CAChDnB,IAAI,CAAC,MAAMqB,IAAI,
|
|
1
|
+
{"version":3,"file":"streams.js","names":["_stream","_interopRequireDefault","require","_lodash","_logger","AfcReadableFileStream","stream","Readable","constructor","fileHandle","afcService","options","_fileHandle","_afcService","_autoDestroy","autoDestroy","_destroyed","_read","size","readFile","then","data","push","_","isEmpty","catch","e","destroy","emit","_destroy","err","done","closeFileHandle","log","debug","exports","AfcWritableFileStream","Writable","_write","chunk","encoding","next","writeFile"],"sources":["../../../lib/afc/streams.js"],"sourcesContent":["/* eslint-disable promise/prefer-await-to-then */\nimport stream from 'stream';\nimport _ from 'lodash';\nimport log from '../logger';\n\nclass AfcReadableFileStream extends stream.Readable {\n\n constructor (fileHandle, afcService, options) {\n super(options);\n this._fileHandle = fileHandle;\n this._afcService = afcService;\n this._autoDestroy = !!options.autoDestroy;\n this._destroyed = false;\n }\n\n _read (size) {\n this._afcService.readFile(this._fileHandle, size)\n .then((data) => {\n if (!this._destroyed) {\n this.push(_.isEmpty(data) ? null : data);\n }\n })\n .catch((e) => {\n if (this._autoDestroy) {\n this.destroy(e);\n } else {\n this.emit('error', e);\n }\n });\n }\n\n _destroy (err, done) {\n if (this._destroyed) {\n return;\n }\n this._destroyed = true;\n this.push(null);\n this._afcService.closeFileHandle(this._fileHandle)\n .then(() => done(err))\n .catch((e) => {\n if (err) {\n log.debug(e);\n } else {\n err = e;\n }\n done(err);\n });\n }\n}\n\nclass AfcWritableFileStream extends stream.Writable {\n\n constructor (fileHandle, afcService, options) {\n super(options);\n this._fileHandle = fileHandle;\n this._afcService = afcService;\n this._autoDestroy = !!options.autoDestroy;\n this._destroyed = false;\n }\n\n _write (chunk, encoding, next) {\n this._afcService.writeFile(this._fileHandle, chunk)\n .then(() => next())\n .catch((e) => {\n if (this._autoDestroy) {\n this.destroy(e);\n }\n next(e);\n });\n }\n\n _destroy (err, done) {\n if (this._destroyed) {\n return;\n }\n this._destroyed = true;\n this._afcService.closeFileHandle(this._fileHandle)\n .then(() => done(err))\n .catch((e) => {\n if (err) {\n log.debug(e);\n } else {\n err = e;\n }\n done(err);\n });\n }\n}\n\nexport { AfcReadableFileStream, AfcWritableFileStream };\n"],"mappings":"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"}
|
|
@@ -44,4 +44,4 @@ class AfcDecoder extends _stream.default.Transform {
|
|
|
44
44
|
exports.AfcDecoder = AfcDecoder;
|
|
45
45
|
var _default = AfcDecoder;
|
|
46
46
|
exports.default = _default;
|
|
47
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
47
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3RyZWFtIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcHJvdG9jb2wiLCJBZmNEZWNvZGVyIiwiU3RyZWFtIiwiVHJhbnNmb3JtIiwiY29uc3RydWN0b3IiLCJvYmplY3RNb2RlIiwiX3RyYW5zZm9ybSIsImRhdGEiLCJlbmNvZGluZyIsIm9uRGF0YSIsIl9kZWNvZGUiLCJtYWdpY051bWJlciIsInNsaWNlIiwiY29tcGFyZSIsIk1BR0lDX05VTUJFUiIsIkVycm9yIiwibWVzc2FnZUxlbmd0aCIsInJlYWRVSW50NjRMRSIsInRoaXNMZW5ndGgiLCJwYWNrZXROdW1iZXIiLCJvcENvZGUiLCJoZWFkZXJQYXlsb2FkIiwiQUZDX1BBQ0tFVF9IRUFERVJfU0laRSIsImNvbnRlbnQiLCJwdXNoIiwiYnVmZmVyIiwiaW5kZXgiLCJyZWFkVUludDMyTEUiLCJleHBvcnRzIiwiX2RlZmF1bHQiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL2FmYy90cmFuc2Zvcm1lci9hZmNkZWNvZGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBTdHJlYW0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCB7IE1BR0lDX05VTUJFUiwgQUZDX1BBQ0tFVF9IRUFERVJfU0laRSB9IGZyb20gJy4uL3Byb3RvY29sJztcblxuXG5jbGFzcyBBZmNEZWNvZGVyIGV4dGVuZHMgU3RyZWFtLlRyYW5zZm9ybSB7XG5cbiAgY29uc3RydWN0b3IgKCkge1xuICAgIHN1cGVyKHsgb2JqZWN0TW9kZTogdHJ1ZSB9KTtcbiAgfVxuXG4gIF90cmFuc2Zvcm0gKGRhdGEsIGVuY29kaW5nLCBvbkRhdGEpIHtcbiAgICB0aGlzLl9kZWNvZGUoZGF0YSk7XG4gICAgb25EYXRhKCk7XG4gIH1cblxuICBfZGVjb2RlIChkYXRhKSB7XG4gICAgY29uc3QgbWFnaWNOdW1iZXIgPSBkYXRhLnNsaWNlKDAsIDgpO1xuICAgIGlmIChtYWdpY051bWJlci5jb21wYXJlKE1BR0lDX05VTUJFUikgIT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBtYWdpYyBudW1iZXI6ICR7bWFnaWNOdW1iZXJ9YCk7XG4gICAgfVxuICAgIGNvbnN0IG1lc3NhZ2VMZW5ndGggPSB0aGlzLnJlYWRVSW50NjRMRShkYXRhLCA4KTtcbiAgICBjb25zdCB0aGlzTGVuZ3RoID0gdGhpcy5yZWFkVUludDY0TEUoZGF0YSwgMTYpO1xuICAgIGNvbnN0IHBhY2tldE51bWJlciA9IHRoaXMucmVhZFVJbnQ2NExFKGRhdGEsIDI0KTtcbiAgICBjb25zdCBvcENvZGUgPSB0aGlzLnJlYWRVSW50NjRMRShkYXRhLCAzMik7XG5cbiAgICBjb25zdCBoZWFkZXJQYXlsb2FkID0gZGF0YS5zbGljZShBRkNfUEFDS0VUX0hFQURFUl9TSVpFLCB0aGlzTGVuZ3RoKTtcbiAgICBjb25zdCBjb250ZW50ID0gZGF0YS5zbGljZSh0aGlzTGVuZ3RoLCBtZXNzYWdlTGVuZ3RoKTtcblxuICAgIHRoaXMucHVzaCh7IG1lc3NhZ2VMZW5ndGgsIHBhY2tldE51bWJlciwgb3BDb2RlLCBoZWFkZXJQYXlsb2FkLCBjb250ZW50IH0pO1xuICB9XG5cbiAgcmVhZFVJbnQ2NExFIChidWZmZXIsIGluZGV4KSB7XG4gICAgLy8gSWdub3JlIHRoZSBmaXJzdCA0IGJ5dGVzIHNpbmNlIHdlIGRvbid0IGRvIGFueXRoaW5nIHdpdGggbG9uZ3NcbiAgICByZXR1cm4gYnVmZmVyLnJlYWRVSW50MzJMRShpbmRleCk7XG4gIH1cbn1cblxuZXhwb3J0IHsgQWZjRGVjb2RlciB9O1xuZXhwb3J0IGRlZmF1bHQgQWZjRGVjb2RlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFHQSxNQUFNRSxVQUFVLFNBQVNDLGVBQU0sQ0FBQ0MsU0FBUyxDQUFDO0VBRXhDQyxXQUFXQSxDQUFBLEVBQUk7SUFDYixLQUFLLENBQUM7TUFBRUMsVUFBVSxFQUFFO0lBQUssQ0FBQyxDQUFDO0VBQzdCO0VBRUFDLFVBQVVBLENBQUVDLElBQUksRUFBRUMsUUFBUSxFQUFFQyxNQUFNLEVBQUU7SUFDbEMsSUFBSSxDQUFDQyxPQUFPLENBQUNILElBQUksQ0FBQztJQUNsQkUsTUFBTSxDQUFDLENBQUM7RUFDVjtFQUVBQyxPQUFPQSxDQUFFSCxJQUFJLEVBQUU7SUFDYixNQUFNSSxXQUFXLEdBQUdKLElBQUksQ0FBQ0ssS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDcEMsSUFBSUQsV0FBVyxDQUFDRSxPQUFPLENBQUNDLHNCQUFZLENBQUMsS0FBSyxDQUFDLEVBQUU7TUFDM0MsTUFBTSxJQUFJQyxLQUFLLENBQUUsNEJBQTJCSixXQUFZLEVBQUMsQ0FBQztJQUM1RDtJQUNBLE1BQU1LLGFBQWEsR0FBRyxJQUFJLENBQUNDLFlBQVksQ0FBQ1YsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoRCxNQUFNVyxVQUFVLEdBQUcsSUFBSSxDQUFDRCxZQUFZLENBQUNWLElBQUksRUFBRSxFQUFFLENBQUM7SUFDOUMsTUFBTVksWUFBWSxHQUFHLElBQUksQ0FBQ0YsWUFBWSxDQUFDVixJQUFJLEVBQUUsRUFBRSxDQUFDO0lBQ2hELE1BQU1hLE1BQU0sR0FBRyxJQUFJLENBQUNILFlBQVksQ0FBQ1YsSUFBSSxFQUFFLEVBQUUsQ0FBQztJQUUxQyxNQUFNYyxhQUFhLEdBQUdkLElBQUksQ0FBQ0ssS0FBSyxDQUFDVSxnQ0FBc0IsRUFBRUosVUFBVSxDQUFDO0lBQ3BFLE1BQU1LLE9BQU8sR0FBR2hCLElBQUksQ0FBQ0ssS0FBSyxDQUFDTSxVQUFVLEVBQUVGLGFBQWEsQ0FBQztJQUVyRCxJQUFJLENBQUNRLElBQUksQ0FBQztNQUFFUixhQUFhO01BQUVHLFlBQVk7TUFBRUMsTUFBTTtNQUFFQyxhQUFhO01BQUVFO0lBQVEsQ0FBQyxDQUFDO0VBQzVFO0VBRUFOLFlBQVlBLENBQUVRLE1BQU0sRUFBRUMsS0FBSyxFQUFFO0lBRTNCLE9BQU9ELE1BQU0sQ0FBQ0UsWUFBWSxDQUFDRCxLQUFLLENBQUM7RUFDbkM7QUFDRjtBQUFDRSxPQUFBLENBQUEzQixVQUFBLEdBQUFBLFVBQUE7QUFBQSxJQUFBNEIsUUFBQSxHQUdjNUIsVUFBVTtBQUFBMkIsT0FBQSxDQUFBRSxPQUFBLEdBQUFELFFBQUEifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"afcdecoder.js","names":["_stream","_interopRequireDefault","require","_protocol","AfcDecoder","Stream","Transform","constructor","objectMode","_transform","data","encoding","onData","_decode","magicNumber","slice","compare","MAGIC_NUMBER","Error","messageLength","readUInt64LE","thisLength","packetNumber","opCode","headerPayload","AFC_PACKET_HEADER_SIZE","content","push","buffer","index","readUInt32LE","exports","_default","default"],"sources":["../../../../lib/afc/transformer/afcdecoder.js"],"sourcesContent":["import Stream from 'stream';\nimport { MAGIC_NUMBER, AFC_PACKET_HEADER_SIZE } from '../protocol';\n\n\nclass AfcDecoder extends Stream.Transform {\n\n constructor () {\n super({ objectMode: true });\n }\n\n _transform (data, encoding, onData) {\n this._decode(data);\n onData();\n }\n\n _decode (data) {\n const magicNumber = data.slice(0, 8);\n if (magicNumber.compare(MAGIC_NUMBER) !== 0) {\n throw new Error(`Unexpected magic number: ${magicNumber}`);\n }\n const messageLength = this.readUInt64LE(data, 8);\n const thisLength = this.readUInt64LE(data, 16);\n const packetNumber = this.readUInt64LE(data, 24);\n const opCode = this.readUInt64LE(data, 32);\n\n const headerPayload = data.slice(AFC_PACKET_HEADER_SIZE, thisLength);\n const content = data.slice(thisLength, messageLength);\n\n this.push({ messageLength, packetNumber, opCode, headerPayload, content });\n }\n\n readUInt64LE (buffer, index) {\n // Ignore the first 4 bytes since we don't do anything with longs\n return buffer.readUInt32LE(index);\n }\n}\n\nexport { AfcDecoder };\nexport default AfcDecoder;\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAGA,MAAME,UAAU,SAASC,eAAM,CAACC,SAAS,CAAC;EAExCC,WAAWA,CAAA,EAAI;IACb,KAAK,CAAC;MAAEC,UAAU,EAAE;IAAK,CAAC,CAAC;EAC7B;EAEAC,UAAUA,CAAEC,IAAI,EAAEC,QAAQ,EAAEC,MAAM,EAAE;IAClC,IAAI,CAACC,OAAO,CAACH,IAAI,CAAC;IAClBE,MAAM,
|
|
1
|
+
{"version":3,"file":"afcdecoder.js","names":["_stream","_interopRequireDefault","require","_protocol","AfcDecoder","Stream","Transform","constructor","objectMode","_transform","data","encoding","onData","_decode","magicNumber","slice","compare","MAGIC_NUMBER","Error","messageLength","readUInt64LE","thisLength","packetNumber","opCode","headerPayload","AFC_PACKET_HEADER_SIZE","content","push","buffer","index","readUInt32LE","exports","_default","default"],"sources":["../../../../lib/afc/transformer/afcdecoder.js"],"sourcesContent":["import Stream from 'stream';\nimport { MAGIC_NUMBER, AFC_PACKET_HEADER_SIZE } from '../protocol';\n\n\nclass AfcDecoder extends Stream.Transform {\n\n constructor () {\n super({ objectMode: true });\n }\n\n _transform (data, encoding, onData) {\n this._decode(data);\n onData();\n }\n\n _decode (data) {\n const magicNumber = data.slice(0, 8);\n if (magicNumber.compare(MAGIC_NUMBER) !== 0) {\n throw new Error(`Unexpected magic number: ${magicNumber}`);\n }\n const messageLength = this.readUInt64LE(data, 8);\n const thisLength = this.readUInt64LE(data, 16);\n const packetNumber = this.readUInt64LE(data, 24);\n const opCode = this.readUInt64LE(data, 32);\n\n const headerPayload = data.slice(AFC_PACKET_HEADER_SIZE, thisLength);\n const content = data.slice(thisLength, messageLength);\n\n this.push({ messageLength, packetNumber, opCode, headerPayload, content });\n }\n\n readUInt64LE (buffer, index) {\n // Ignore the first 4 bytes since we don't do anything with longs\n return buffer.readUInt32LE(index);\n }\n}\n\nexport { AfcDecoder };\nexport default AfcDecoder;\n"],"mappings":";;;;;;;;AAAA,IAAAA,OAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AAGA,MAAME,UAAU,SAASC,eAAM,CAACC,SAAS,CAAC;EAExCC,WAAWA,CAAA,EAAI;IACb,KAAK,CAAC;MAAEC,UAAU,EAAE;IAAK,CAAC,CAAC;EAC7B;EAEAC,UAAUA,CAAEC,IAAI,EAAEC,QAAQ,EAAEC,MAAM,EAAE;IAClC,IAAI,CAACC,OAAO,CAACH,IAAI,CAAC;IAClBE,MAAM,CAAC,CAAC;EACV;EAEAC,OAAOA,CAAEH,IAAI,EAAE;IACb,MAAMI,WAAW,GAAGJ,IAAI,CAACK,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACpC,IAAID,WAAW,CAACE,OAAO,CAACC,sBAAY,CAAC,KAAK,CAAC,EAAE;MAC3C,MAAM,IAAIC,KAAK,CAAE,4BAA2BJ,WAAY,EAAC,CAAC;IAC5D;IACA,MAAMK,aAAa,GAAG,IAAI,CAACC,YAAY,CAACV,IAAI,EAAE,CAAC,CAAC;IAChD,MAAMW,UAAU,GAAG,IAAI,CAACD,YAAY,CAACV,IAAI,EAAE,EAAE,CAAC;IAC9C,MAAMY,YAAY,GAAG,IAAI,CAACF,YAAY,CAACV,IAAI,EAAE,EAAE,CAAC;IAChD,MAAMa,MAAM,GAAG,IAAI,CAACH,YAAY,CAACV,IAAI,EAAE,EAAE,CAAC;IAE1C,MAAMc,aAAa,GAAGd,IAAI,CAACK,KAAK,CAACU,gCAAsB,EAAEJ,UAAU,CAAC;IACpE,MAAMK,OAAO,GAAGhB,IAAI,CAACK,KAAK,CAACM,UAAU,EAAEF,aAAa,CAAC;IAErD,IAAI,CAACQ,IAAI,CAAC;MAAER,aAAa;MAAEG,YAAY;MAAEC,MAAM;MAAEC,aAAa;MAAEE;IAAQ,CAAC,CAAC;EAC5E;EAEAN,YAAYA,CAAEQ,MAAM,EAAEC,KAAK,EAAE;IAE3B,OAAOD,MAAM,CAACE,YAAY,CAACD,KAAK,CAAC;EACnC;AACF;AAACE,OAAA,CAAA3B,UAAA,GAAAA,UAAA;AAAA,IAAA4B,QAAA,GAGc5B,UAAU;AAAA2B,OAAA,CAAAE,OAAA,GAAAD,QAAA"}
|
|
@@ -30,4 +30,4 @@ class BaseServicePlist {
|
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
exports.BaseServicePlist = BaseServicePlist;
|
|
33
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlU2VydmljZVNvY2tldCIsImNvbnN0cnVjdG9yIiwic29ja2V0Q2xpZW50IiwiX3NvY2tldENsaWVudCIsIl9hc3NpZ25DbGllbnRGYWlsdXJlSGFuZGxlcnMiLCJzb3VyY2VTdHJlYW1zIiwiZXZ0Iiwib25jZSIsIm1hcCIsInMiLCJ1bnBpcGUiLCJjbG9zZSIsImRlc3Ryb3llZCIsImVuZCIsImV4cG9ydHMiLCJCYXNlU2VydmljZVBsaXN0IiwicGxpc3RTZXJ2aWNlIiwiX3BsaXN0U2VydmljZSJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9iYXNlLXNlcnZpY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgQmFzZVNlcnZpY2VTb2NrZXQge1xuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoJ25ldCcpLlNvY2tldH0gc29ja2V0Q2xpZW50XG4gICAqL1xuICBjb25zdHJ1Y3RvciAoc29ja2V0Q2xpZW50KSB7XG4gICAgdGhpcy5fc29ja2V0Q2xpZW50ID0gc29ja2V0Q2xpZW50O1xuICB9XG5cbiAgX2Fzc2lnbkNsaWVudEZhaWx1cmVIYW5kbGVycyAoLi4uc291cmNlU3RyZWFtcykge1xuICAgIGZvciAoY29uc3QgZXZ0IGluIFsnY2xvc2UnLCAnZW5kJ10pIHtcbiAgICAgIHRoaXMuX3NvY2tldENsaWVudC5vbmNlKGV2dCxcbiAgICAgICAgKCkgPT4gc291cmNlU3RyZWFtcy5tYXAoKHMpID0+
|
|
33
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlU2VydmljZVNvY2tldCIsImNvbnN0cnVjdG9yIiwic29ja2V0Q2xpZW50IiwiX3NvY2tldENsaWVudCIsIl9hc3NpZ25DbGllbnRGYWlsdXJlSGFuZGxlcnMiLCJzb3VyY2VTdHJlYW1zIiwiZXZ0Iiwib25jZSIsIm1hcCIsInMiLCJ1bnBpcGUiLCJjbG9zZSIsImRlc3Ryb3llZCIsImVuZCIsImV4cG9ydHMiLCJCYXNlU2VydmljZVBsaXN0IiwicGxpc3RTZXJ2aWNlIiwiX3BsaXN0U2VydmljZSJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9iYXNlLXNlcnZpY2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY2xhc3MgQmFzZVNlcnZpY2VTb2NrZXQge1xuICAvKipcbiAgICogQHBhcmFtIHtpbXBvcnQoJ25ldCcpLlNvY2tldH0gc29ja2V0Q2xpZW50XG4gICAqL1xuICBjb25zdHJ1Y3RvciAoc29ja2V0Q2xpZW50KSB7XG4gICAgdGhpcy5fc29ja2V0Q2xpZW50ID0gc29ja2V0Q2xpZW50O1xuICB9XG5cbiAgX2Fzc2lnbkNsaWVudEZhaWx1cmVIYW5kbGVycyAoLi4uc291cmNlU3RyZWFtcykge1xuICAgIGZvciAoY29uc3QgZXZ0IGluIFsnY2xvc2UnLCAnZW5kJ10pIHtcbiAgICAgIHRoaXMuX3NvY2tldENsaWVudC5vbmNlKGV2dCxcbiAgICAgICAgKCkgPT4gc291cmNlU3RyZWFtcy5tYXAoKHMpID0+IHMudW5waXBlKHRoaXMuX3NvY2tldENsaWVudCkpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xvc2VzIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBjb21tdW5pY2F0aW5nIHdpdGggdGhlIHBob25lXG4gICAqL1xuICBjbG9zZSAoKSB7XG4gICAgaWYgKCF0aGlzLl9zb2NrZXRDbGllbnQuZGVzdHJveWVkKSB7XG4gICAgICB0aGlzLl9zb2NrZXRDbGllbnQuZW5kKCk7XG4gICAgfVxuICB9XG59XG5cbmNsYXNzIEJhc2VTZXJ2aWNlUGxpc3Qge1xuICBjb25zdHJ1Y3RvciAocGxpc3RTZXJ2aWNlKSB7XG4gICAgdGhpcy5fcGxpc3RTZXJ2aWNlID0gcGxpc3RTZXJ2aWNlO1xuICB9XG5cbiAgLyoqXG4gICAqIENsb3NlcyB0aGUgdW5kZXJseWluZyBzb2NrZXQgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBwaG9uZVxuICAgKi9cbiAgY2xvc2UgKCkge1xuICAgIHRoaXMuX3BsaXN0U2VydmljZS5jbG9zZSgpO1xuICB9XG59XG5cblxuZXhwb3J0IHsgQmFzZVNlcnZpY2VTb2NrZXQsIEJhc2VTZXJ2aWNlUGxpc3QgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLE1BQU1BLGlCQUFpQixDQUFDO0VBSXRCQyxXQUFXQSxDQUFFQyxZQUFZLEVBQUU7SUFDekIsSUFBSSxDQUFDQyxhQUFhLEdBQUdELFlBQVk7RUFDbkM7RUFFQUUsNEJBQTRCQSxDQUFFLEdBQUdDLGFBQWEsRUFBRTtJQUM5QyxLQUFLLE1BQU1DLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUMsRUFBRTtNQUNsQyxJQUFJLENBQUNILGFBQWEsQ0FBQ0ksSUFBSSxDQUFDRCxHQUFHLEVBQ3pCLE1BQU1ELGFBQWEsQ0FBQ0csR0FBRyxDQUFFQyxDQUFDLElBQUtBLENBQUMsQ0FBQ0MsTUFBTSxDQUFDLElBQUksQ0FBQ1AsYUFBYSxDQUFDLENBQUMsQ0FBQztJQUNqRTtFQUNGO0VBS0FRLEtBQUtBLENBQUEsRUFBSTtJQUNQLElBQUksQ0FBQyxJQUFJLENBQUNSLGFBQWEsQ0FBQ1MsU0FBUyxFQUFFO01BQ2pDLElBQUksQ0FBQ1QsYUFBYSxDQUFDVSxHQUFHLENBQUMsQ0FBQztJQUMxQjtFQUNGO0FBQ0Y7QUFBQ0MsT0FBQSxDQUFBZCxpQkFBQSxHQUFBQSxpQkFBQTtBQUVELE1BQU1lLGdCQUFnQixDQUFDO0VBQ3JCZCxXQUFXQSxDQUFFZSxZQUFZLEVBQUU7SUFDekIsSUFBSSxDQUFDQyxhQUFhLEdBQUdELFlBQVk7RUFDbkM7RUFLQUwsS0FBS0EsQ0FBQSxFQUFJO0lBQ1AsSUFBSSxDQUFDTSxhQUFhLENBQUNOLEtBQUssQ0FBQyxDQUFDO0VBQzVCO0FBQ0Y7QUFBQ0csT0FBQSxDQUFBQyxnQkFBQSxHQUFBQSxnQkFBQSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-service.js","names":["BaseServiceSocket","constructor","socketClient","_socketClient","_assignClientFailureHandlers","sourceStreams","evt","once","map","s","unpipe","close","destroyed","end","exports","BaseServicePlist","plistService","_plistService"],"sources":["../../lib/base-service.js"],"sourcesContent":["class BaseServiceSocket {\n /**\n * @param {import('net').Socket} socketClient\n */\n constructor (socketClient) {\n this._socketClient = socketClient;\n }\n\n _assignClientFailureHandlers (...sourceStreams) {\n for (const evt in ['close', 'end']) {\n this._socketClient.once(evt,\n () => sourceStreams.map((s) => s.unpipe(this._socketClient)));\n }\n }\n\n /**\n * Closes the underlying socket communicating with the phone\n */\n close () {\n if (!this._socketClient.destroyed) {\n this._socketClient.end();\n }\n }\n}\n\nclass BaseServicePlist {\n constructor (plistService) {\n this._plistService = plistService;\n }\n\n /**\n * Closes the underlying socket communicating with the phone\n */\n close () {\n this._plistService.close();\n }\n}\n\n\nexport { BaseServiceSocket, BaseServicePlist };\n"],"mappings":";;;;;;;AAAA,MAAMA,iBAAiB,CAAC;EAItBC,WAAWA,CAAEC,YAAY,EAAE;IACzB,IAAI,CAACC,aAAa,GAAGD,YAAY;EACnC;EAEAE,4BAA4BA,CAAE,GAAGC,aAAa,EAAE;IAC9C,KAAK,MAAMC,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;MAClC,IAAI,CAACH,aAAa,CAACI,IAAI,CAACD,GAAG,EACzB,MAAMD,aAAa,CAACG,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,MAAM,CAAC,IAAI,CAACP,aAAa,CAAC,CAAC,CAAC;IACjE;EACF;EAKAQ,KAAKA,CAAA,EAAI;IACP,IAAI,CAAC,IAAI,CAACR,aAAa,CAACS,SAAS,EAAE;MACjC,IAAI,CAACT,aAAa,CAACU,GAAG,
|
|
1
|
+
{"version":3,"file":"base-service.js","names":["BaseServiceSocket","constructor","socketClient","_socketClient","_assignClientFailureHandlers","sourceStreams","evt","once","map","s","unpipe","close","destroyed","end","exports","BaseServicePlist","plistService","_plistService"],"sources":["../../lib/base-service.js"],"sourcesContent":["class BaseServiceSocket {\n /**\n * @param {import('net').Socket} socketClient\n */\n constructor (socketClient) {\n this._socketClient = socketClient;\n }\n\n _assignClientFailureHandlers (...sourceStreams) {\n for (const evt in ['close', 'end']) {\n this._socketClient.once(evt,\n () => sourceStreams.map((s) => s.unpipe(this._socketClient)));\n }\n }\n\n /**\n * Closes the underlying socket communicating with the phone\n */\n close () {\n if (!this._socketClient.destroyed) {\n this._socketClient.end();\n }\n }\n}\n\nclass BaseServicePlist {\n constructor (plistService) {\n this._plistService = plistService;\n }\n\n /**\n * Closes the underlying socket communicating with the phone\n */\n close () {\n this._plistService.close();\n }\n}\n\n\nexport { BaseServiceSocket, BaseServicePlist };\n"],"mappings":";;;;;;;AAAA,MAAMA,iBAAiB,CAAC;EAItBC,WAAWA,CAAEC,YAAY,EAAE;IACzB,IAAI,CAACC,aAAa,GAAGD,YAAY;EACnC;EAEAE,4BAA4BA,CAAE,GAAGC,aAAa,EAAE;IAC9C,KAAK,MAAMC,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;MAClC,IAAI,CAACH,aAAa,CAACI,IAAI,CAACD,GAAG,EACzB,MAAMD,aAAa,CAACG,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,MAAM,CAAC,IAAI,CAACP,aAAa,CAAC,CAAC,CAAC;IACjE;EACF;EAKAQ,KAAKA,CAAA,EAAI;IACP,IAAI,CAAC,IAAI,CAACR,aAAa,CAACS,SAAS,EAAE;MACjC,IAAI,CAACT,aAAa,CAACU,GAAG,CAAC,CAAC;IAC1B;EACF;AACF;AAACC,OAAA,CAAAd,iBAAA,GAAAA,iBAAA;AAED,MAAMe,gBAAgB,CAAC;EACrBd,WAAWA,CAAEe,YAAY,EAAE;IACzB,IAAI,CAACC,aAAa,GAAGD,YAAY;EACnC;EAKAL,KAAKA,CAAA,EAAI;IACP,IAAI,CAACM,aAAa,CAACN,KAAK,CAAC,CAAC;EAC5B;AACF;AAACG,OAAA,CAAAC,gBAAA,GAAAA,gBAAA"}
|
|
@@ -71,4 +71,4 @@ class HouseArrestService extends _baseService.BaseServiceSocket {
|
|
|
71
71
|
exports.HouseArrestService = HouseArrestService;
|
|
72
72
|
var _default = HouseArrestService;
|
|
73
73
|
exports.default = _default;
|
|
74
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
74
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcGxpc3RTZXJ2aWNlRGVjb2RlciIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3BsaXN0U2VydmljZUVuY29kZXIiLCJfbGVuZ3RoQmFzZWRTcGxpdHRlciIsIl9jb25zdGFudHMiLCJfYWZjIiwiX2JsdWViaXJkIiwiX2Jhc2VTZXJ2aWNlIiwiSE9VU0VfQVJSRVNUX1NFUlZJQ0VfTkFNRSIsImV4cG9ydHMiLCJNQVhfRlJBTUVfU0laRSIsIktCIiwiSG91c2VBcnJlc3RTZXJ2aWNlIiwiQmFzZVNlcnZpY2VTb2NrZXQiLCJjb25zdHJ1Y3RvciIsInNvY2tldENsaWVudCIsIl9kZWNvZGVyIiwiUGxpc3RTZXJ2aWNlRGVjb2RlciIsIl9zcGxpdHRlciIsIkxlbmd0aEJhc2VkU3BsaXR0ZXIiLCJyZWFkYWJsZVN0cmVhbSIsImxpdHRsZUVuZGlhbiIsIm1heEZyYW1lTGVuZ3RoIiwibGVuZ3RoRmllbGRPZmZzZXQiLCJsZW5ndGhGaWVsZExlbmd0aCIsImxlbmd0aEFkanVzdG1lbnQiLCJfc29ja2V0Q2xpZW50IiwicGlwZSIsIl9lbmNvZGVyIiwiUGxpc3RTZXJ2aWNlRW5jb2RlciIsIl9hc3NpZ25DbGllbnRGYWlsdXJlSGFuZGxlcnMiLCJ2ZW5kQ29udGFpbmVyIiwiYnVuZGxlSWQiLCJyZXNwb25zZVByb21pc2UiLCJfcmVjZWl2ZVBsaXN0UHJvbWlzZSIsIndyaXRlIiwiQ29tbWFuZCIsIklkZW50aWZpZXIiLCJyZXNwb25zZSIsIlN0YXR1cyIsIkVycm9yIiwidW5waXBlIiwiQWZjU2VydmljZSIsInZlbmREb2N1bWVudHMiLCJ0aW1lb3V0IiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJvbmNlIiwic2V0VGltZW91dCIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9ob3VzZS1hcnJlc3QvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFBsaXN0U2VydmljZURlY29kZXIgZnJvbSAnLi4vcGxpc3Qtc2VydmljZS90cmFuc2Zvcm1lci9wbGlzdC1zZXJ2aWNlLWRlY29kZXInO1xuaW1wb3J0IFBsaXN0U2VydmljZUVuY29kZXIgZnJvbSAnLi4vcGxpc3Qtc2VydmljZS90cmFuc2Zvcm1lci9wbGlzdC1zZXJ2aWNlLWVuY29kZXInO1xuaW1wb3J0IExlbmd0aEJhc2VkU3BsaXR0ZXIgZnJvbSAnLi4vdXRpbC90cmFuc2Zvcm1lci9sZW5ndGgtYmFzZWQtc3BsaXR0ZXInO1xuaW1wb3J0IHsgS0IgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IEFmY1NlcnZpY2UgZnJvbSAnLi4vYWZjJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7IEJhc2VTZXJ2aWNlU29ja2V0IH0gZnJvbSAnLi4vYmFzZS1zZXJ2aWNlJztcblxuXG5jb25zdCBIT1VTRV9BUlJFU1RfU0VSVklDRV9OQU1FID0gJ2NvbS5hcHBsZS5tb2JpbGUuaG91c2VfYXJyZXN0JztcbmNvbnN0IE1BWF9GUkFNRV9TSVpFID0gMSAqIEtCO1xuXG5jbGFzcyBIb3VzZUFycmVzdFNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZVNvY2tldCB7XG4gIGNvbnN0cnVjdG9yIChzb2NrZXRDbGllbnQpIHtcbiAgICBzdXBlcihzb2NrZXRDbGllbnQpO1xuXG4gICAgdGhpcy5fZGVjb2RlciA9IG5ldyBQbGlzdFNlcnZpY2VEZWNvZGVyKCk7XG4gICAgdGhpcy5fc3BsaXR0ZXIgPSBuZXcgTGVuZ3RoQmFzZWRTcGxpdHRlcih7XG4gICAgICByZWFkYWJsZVN0cmVhbTogc29ja2V0Q2xpZW50LFxuICAgICAgbGl0dGxlRW5kaWFuOiBmYWxzZSxcbiAgICAgIG1heEZyYW1lTGVuZ3RoOiBNQVhfRlJBTUVfU0laRSxcbiAgICAgIGxlbmd0aEZpZWxkT2Zmc2V0OiAwLFxuICAgICAgbGVuZ3RoRmllbGRMZW5ndGg6IDQsXG4gICAgICBsZW5ndGhBZGp1c3RtZW50OiA0LFxuICAgIH0pO1xuICAgIHRoaXMuX3NvY2tldENsaWVudC5waXBlKHRoaXMuX3NwbGl0dGVyKS5waXBlKHRoaXMuX2RlY29kZXIpO1xuXG4gICAgdGhpcy5fZW5jb2RlciA9IG5ldyBQbGlzdFNlcnZpY2VFbmNvZGVyKCk7XG4gICAgdGhpcy5fZW5jb2Rlci5waXBlKHRoaXMuX3NvY2tldENsaWVudCk7XG4gICAgdGhpcy5fYXNzaWduQ2xpZW50RmFpbHVyZUhhbmRsZXJzKHRoaXMuX2VuY29kZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlbmRzIGludG8gdGhlIGFwcGxpY2F0aW9uIGNvbnRhaW5lciBhbmQgcmV0dXJucyBhbiBBZmNTZXJ2aWNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBidW5kbGVJZCBUaGUgYnVuZGxlIGlkIG9mIHRoZSBhcHAgY29udGFpbmVyIHRoYXQgd2Ugd2lsbCBlbnRlciB0b1xuICAgKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgaG91c2UgYXJyZXN0IGZhaWxzIHRvIGFjY2VzcyB0aGUgYXBwbGljYXRpb24ncyBjb250YWluZXJcbiAgICogQHJldHVybnMge0FmY1NlcnZpY2V9XG4gICAqL1xuICBhc3luYyB2ZW5kQ29udGFpbmVyIChidW5kbGVJZCkge1xuICAgIGNvbnN0IHJlc3BvbnNlUHJvbWlzZSA9IHRoaXMuX3JlY2VpdmVQbGlzdFByb21pc2UoKTtcbiAgICB0aGlzLl9lbmNvZGVyLndyaXRlKHtcbiAgICAgIENvbW1hbmQ6ICdWZW5kQ29udGFpbmVyJyxcbiAgICAgIElkZW50aWZpZXI6IGJ1bmRsZUlkLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVzcG9uc2VQcm9taXNlO1xuICAgIGlmIChyZXNwb25zZS5TdGF0dXMgIT09ICdDb21wbGV0ZScpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHZlbmQgaW50byB0aGUgYXBwbGljYXRpb24gY29udGFpbmVyLiBFcnJvcjogJHtyZXNwb25zZS5FcnJvcn1gKTtcbiAgICB9XG4gICAgdGhpcy5fc29ja2V0Q2xpZW50LnVucGlwZSh0aGlzLl9zcGxpdHRlcik7XG4gICAgdGhpcy5fc3BsaXR0ZXIudW5waXBlKHRoaXMuX2RlY29kZXIpO1xuICAgIHJldHVybiBuZXcgQWZjU2VydmljZSh0aGlzLl9zb2NrZXRDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlbmRzIGludG8gdGhlIGFwcGxpY2F0aW9uIGRvY3VtZW50cyBhbmQgcmV0dXJucyBhbiBBZmNTZXJ2aWNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBidW5kbGVJZCBUaGUgYnVuZGxlIGlkIG9mIHRoZSBhcHAgZG9jdW1lbnRzIHRoYXQgd2Ugd2lsbCBlbnRlciB0b1xuICAgKiBAdGhyb3dzIFdpbGwgdGhyb3cgYW4gZXJyb3IgaWYgaG91c2UgYXJyZXN0IGZhaWxzIHRvIGFjY2VzcyB0aGUgYXBwbGljYXRpb24ncyBkb2N1bWVudHNcbiAgICogQHJldHVybnMge0FmY1NlcnZpY2V9XG4gICAqL1xuICBhc3luYyB2ZW5kRG9jdW1lbnRzIChidW5kbGVJZCkge1xuICAgIGNvbnN0IHJlc3BvbnNlUHJvbWlzZSA9IHRoaXMuX3JlY2VpdmVQbGlzdFByb21pc2UoKTtcbiAgICB0aGlzLl9lbmNvZGVyLndyaXRlKHtcbiAgICAgIENvbW1hbmQ6ICdWZW5kRG9jdW1lbnRzJyxcbiAgICAgIElkZW50aWZpZXI6IGJ1bmRsZUlkLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgcmVzcG9uc2VQcm9taXNlO1xuICAgIGlmIChyZXNwb25zZS5TdGF0dXMgIT09ICdDb21wbGV0ZScpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHZlbmQgaW50byB0aGUgYXBwbGljYXRpb24gZG9jdW1lbnRzLiBFcnJvcjogJHtyZXNwb25zZS5FcnJvcn1gKTtcbiAgICB9XG4gICAgdGhpcy5fc29ja2V0Q2xpZW50LnVucGlwZSh0aGlzLl9zcGxpdHRlcik7XG4gICAgdGhpcy5fc3BsaXR0ZXIudW5waXBlKHRoaXMuX2RlY29kZXIpO1xuICAgIHJldHVybiBuZXcgQWZjU2VydmljZSh0aGlzLl9zb2NrZXRDbGllbnQpO1xuICB9XG5cbiAgX3JlY2VpdmVQbGlzdFByb21pc2UgKHRpbWVvdXQgPSAxMDAwMCkge1xuICAgIHJldHVybiBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLl9kZWNvZGVyLm9uY2UoJ2RhdGEnLCByZXNvbHZlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgRmFpbGVkIHRvIHJlY2VpdmUgYW55IGRhdGEgd2l0aGluIHRoZSB0aW1lb3V0OiAke3RpbWVvdXR9YCkpLCB0aW1lb3V0KTtcbiAgICB9KTtcbiAgfVxufVxuXG5leHBvcnQgeyBIb3VzZUFycmVzdFNlcnZpY2UsIEhPVVNFX0FSUkVTVF9TRVJWSUNFX05BTUUgfTtcbmV4cG9ydCBkZWZhdWx0IEhvdXNlQXJyZXN0U2VydmljZTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxJQUFBQSxvQkFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsb0JBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLG9CQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxVQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxJQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxTQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxZQUFBLEdBQUFOLE9BQUE7QUFHQSxNQUFNTyx5QkFBeUIsR0FBRywrQkFBK0I7QUFBQ0MsT0FBQSxDQUFBRCx5QkFBQSxHQUFBQSx5QkFBQTtBQUNsRSxNQUFNRSxjQUFjLEdBQUcsQ0FBQyxHQUFHQyxhQUFFO0FBRTdCLE1BQU1DLGtCQUFrQixTQUFTQyw4QkFBaUIsQ0FBQztFQUNqREMsV0FBV0EsQ0FBRUMsWUFBWSxFQUFFO0lBQ3pCLEtBQUssQ0FBQ0EsWUFBWSxDQUFDO0lBRW5CLElB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["_plistServiceDecoder","_interopRequireDefault","require","_plistServiceEncoder","_lengthBasedSplitter","_constants","_afc","_bluebird","_baseService","HOUSE_ARREST_SERVICE_NAME","exports","MAX_FRAME_SIZE","KB","HouseArrestService","BaseServiceSocket","constructor","socketClient","_decoder","PlistServiceDecoder","_splitter","LengthBasedSplitter","readableStream","littleEndian","maxFrameLength","lengthFieldOffset","lengthFieldLength","lengthAdjustment","_socketClient","pipe","_encoder","PlistServiceEncoder","_assignClientFailureHandlers","vendContainer","bundleId","responsePromise","_receivePlistPromise","write","Command","Identifier","response","Status","Error","unpipe","AfcService","vendDocuments","timeout","B","resolve","reject","once","setTimeout","_default","default"],"sources":["../../../lib/house-arrest/index.js"],"sourcesContent":["import PlistServiceDecoder from '../plist-service/transformer/plist-service-decoder';\nimport PlistServiceEncoder from '../plist-service/transformer/plist-service-encoder';\nimport LengthBasedSplitter from '../util/transformer/length-based-splitter';\nimport { KB } from '../constants';\nimport AfcService from '../afc';\nimport B from 'bluebird';\nimport { BaseServiceSocket } from '../base-service';\n\n\nconst HOUSE_ARREST_SERVICE_NAME = 'com.apple.mobile.house_arrest';\nconst MAX_FRAME_SIZE = 1 * KB;\n\nclass HouseArrestService extends BaseServiceSocket {\n constructor (socketClient) {\n super(socketClient);\n\n this._decoder = new PlistServiceDecoder();\n this._splitter = new LengthBasedSplitter({\n readableStream: socketClient,\n littleEndian: false,\n maxFrameLength: MAX_FRAME_SIZE,\n lengthFieldOffset: 0,\n lengthFieldLength: 4,\n lengthAdjustment: 4,\n });\n this._socketClient.pipe(this._splitter).pipe(this._decoder);\n\n this._encoder = new PlistServiceEncoder();\n this._encoder.pipe(this._socketClient);\n this._assignClientFailureHandlers(this._encoder);\n }\n\n /**\n * Vends into the application container and returns an AfcService\n * @param {string} bundleId The bundle id of the app container that we will enter to\n * @throws Will throw an error if house arrest fails to access the application's container\n * @returns {AfcService}\n */\n async vendContainer (bundleId) {\n const responsePromise = this._receivePlistPromise();\n this._encoder.write({\n Command: 'VendContainer',\n Identifier: bundleId,\n });\n const response = await responsePromise;\n if (response.Status !== 'Complete') {\n throw new Error(`Failed to vend into the application container. Error: ${response.Error}`);\n }\n this._socketClient.unpipe(this._splitter);\n this._splitter.unpipe(this._decoder);\n return new AfcService(this._socketClient);\n }\n\n /**\n * Vends into the application documents and returns an AfcService\n * @param {string} bundleId The bundle id of the app documents that we will enter to\n * @throws Will throw an error if house arrest fails to access the application's documents\n * @returns {AfcService}\n */\n async vendDocuments (bundleId) {\n const responsePromise = this._receivePlistPromise();\n this._encoder.write({\n Command: 'VendDocuments',\n Identifier: bundleId,\n });\n const response = await responsePromise;\n if (response.Status !== 'Complete') {\n throw new Error(`Failed to vend into the application documents. Error: ${response.Error}`);\n }\n this._socketClient.unpipe(this._splitter);\n this._splitter.unpipe(this._decoder);\n return new AfcService(this._socketClient);\n }\n\n _receivePlistPromise (timeout = 10000) {\n return new B((resolve, reject) => {\n this._decoder.once('data', resolve);\n setTimeout(() => reject(new Error(`Failed to receive any data within the timeout: ${timeout}`)), timeout);\n });\n }\n}\n\nexport { HouseArrestService, HOUSE_ARREST_SERVICE_NAME };\nexport default HouseArrestService;\n"],"mappings":";;;;;;;;AAAA,IAAAA,oBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAF,sBAAA,CAAAC,OAAA;AACA,IAAAE,oBAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,UAAA,GAAAH,OAAA;AACA,IAAAI,IAAA,GAAAL,sBAAA,CAAAC,OAAA;AACA,IAAAK,SAAA,GAAAN,sBAAA,CAAAC,OAAA;AACA,IAAAM,YAAA,GAAAN,OAAA;AAGA,MAAMO,yBAAyB,GAAG,+BAA+B;AAACC,OAAA,CAAAD,yBAAA,GAAAA,yBAAA;AAClE,MAAME,cAAc,GAAG,CAAC,GAAGC,aAAE;AAE7B,MAAMC,kBAAkB,SAASC,8BAAiB,CAAC;EACjDC,WAAWA,CAAEC,YAAY,EAAE;IACzB,KAAK,CAACA,YAAY,CAAC;IAEnB,IAAI,CAACC,QAAQ,GAAG,IAAIC,4BAAmB,
|
|
1
|
+
{"version":3,"file":"index.js","names":["_plistServiceDecoder","_interopRequireDefault","require","_plistServiceEncoder","_lengthBasedSplitter","_constants","_afc","_bluebird","_baseService","HOUSE_ARREST_SERVICE_NAME","exports","MAX_FRAME_SIZE","KB","HouseArrestService","BaseServiceSocket","constructor","socketClient","_decoder","PlistServiceDecoder","_splitter","LengthBasedSplitter","readableStream","littleEndian","maxFrameLength","lengthFieldOffset","lengthFieldLength","lengthAdjustment","_socketClient","pipe","_encoder","PlistServiceEncoder","_assignClientFailureHandlers","vendContainer","bundleId","responsePromise","_receivePlistPromise","write","Command","Identifier","response","Status","Error","unpipe","AfcService","vendDocuments","timeout","B","resolve","reject","once","setTimeout","_default","default"],"sources":["../../../lib/house-arrest/index.js"],"sourcesContent":["import PlistServiceDecoder from '../plist-service/transformer/plist-service-decoder';\nimport PlistServiceEncoder from '../plist-service/transformer/plist-service-encoder';\nimport LengthBasedSplitter from '../util/transformer/length-based-splitter';\nimport { KB } from '../constants';\nimport AfcService from '../afc';\nimport B from 'bluebird';\nimport { BaseServiceSocket } from '../base-service';\n\n\nconst HOUSE_ARREST_SERVICE_NAME = 'com.apple.mobile.house_arrest';\nconst MAX_FRAME_SIZE = 1 * KB;\n\nclass HouseArrestService extends BaseServiceSocket {\n constructor (socketClient) {\n super(socketClient);\n\n this._decoder = new PlistServiceDecoder();\n this._splitter = new LengthBasedSplitter({\n readableStream: socketClient,\n littleEndian: false,\n maxFrameLength: MAX_FRAME_SIZE,\n lengthFieldOffset: 0,\n lengthFieldLength: 4,\n lengthAdjustment: 4,\n });\n this._socketClient.pipe(this._splitter).pipe(this._decoder);\n\n this._encoder = new PlistServiceEncoder();\n this._encoder.pipe(this._socketClient);\n this._assignClientFailureHandlers(this._encoder);\n }\n\n /**\n * Vends into the application container and returns an AfcService\n * @param {string} bundleId The bundle id of the app container that we will enter to\n * @throws Will throw an error if house arrest fails to access the application's container\n * @returns {AfcService}\n */\n async vendContainer (bundleId) {\n const responsePromise = this._receivePlistPromise();\n this._encoder.write({\n Command: 'VendContainer',\n Identifier: bundleId,\n });\n const response = await responsePromise;\n if (response.Status !== 'Complete') {\n throw new Error(`Failed to vend into the application container. Error: ${response.Error}`);\n }\n this._socketClient.unpipe(this._splitter);\n this._splitter.unpipe(this._decoder);\n return new AfcService(this._socketClient);\n }\n\n /**\n * Vends into the application documents and returns an AfcService\n * @param {string} bundleId The bundle id of the app documents that we will enter to\n * @throws Will throw an error if house arrest fails to access the application's documents\n * @returns {AfcService}\n */\n async vendDocuments (bundleId) {\n const responsePromise = this._receivePlistPromise();\n this._encoder.write({\n Command: 'VendDocuments',\n Identifier: bundleId,\n });\n const response = await responsePromise;\n if (response.Status !== 'Complete') {\n throw new Error(`Failed to vend into the application documents. Error: ${response.Error}`);\n }\n this._socketClient.unpipe(this._splitter);\n this._splitter.unpipe(this._decoder);\n return new AfcService(this._socketClient);\n }\n\n _receivePlistPromise (timeout = 10000) {\n return new B((resolve, reject) => {\n this._decoder.once('data', resolve);\n setTimeout(() => reject(new Error(`Failed to receive any data within the timeout: ${timeout}`)), timeout);\n });\n }\n}\n\nexport { HouseArrestService, HOUSE_ARREST_SERVICE_NAME };\nexport default HouseArrestService;\n"],"mappings":"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"}
|
|
@@ -106,4 +106,4 @@ class InstallationProxyService extends _baseService.BaseServicePlist {
|
|
|
106
106
|
exports.InstallationProxyService = InstallationProxyService;
|
|
107
107
|
var _default = InstallationProxyService;
|
|
108
108
|
exports.default = _default;
|
|
109
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYmFzZVNlcnZpY2UiLCJJTlNUQUxMQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FIiwiZXhwb3J0cyIsIkluc3RhbGxhdGlvblByb3h5U2VydmljZSIsIkJhc2VTZXJ2aWNlUGxpc3QiLCJpbnN0YWxsQXBwbGljYXRpb24iLCJwYXRoIiwiY2xpZW50T3B0aW9ucyIsInRpbWVvdXQiLCJyZXF1ZXN0IiwiQ29tbWFuZCIsIlBhY2thZ2VQYXRoIiwiQ2xpZW50T3B0aW9ucyIsIl9wbGlzdFNlcnZpY2UiLCJzZW5kUGxpc3QiLCJfd2FpdE1lc3NhZ2VDb21wbGV0aW9uIiwidXBncmFkZUFwcGxpY2F0aW9uIiwibGlzdEFwcGxpY2F0aW9ucyIsIm9wdHMiLCJhcHBsaWNhdGlvblR5cGUiLCJBcHBsaWNhdGlvblR5cGUiLCJyZXR1cm5BdHRyaWJ1dGVzIiwiUmV0dXJuQXR0cmlidXRlcyIsIm1lc3NhZ2VzIiwicmVkdWNlIiwiYWNjIiwibWVzc2FnZSIsIkN1cnJlbnRMaXN0IiwiZm9yRWFjaCIsImFwcCIsIkNGQnVuZGxlSWRlbnRpZmllciIsImxvb2t1cEFwcGxpY2F0aW9ucyIsImJ1bmRsZUlkcyIsIkJ1bmRsZUlEcyIsIl8iLCJpc1N0cmluZyIsIkxvb2t1cFJlc3VsdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuaW5zdGFsbEFwcGxpY2F0aW9uIiwiYnVuZGxlSWQiLCJBcHBsaWNhdGlvbklkZW50aWZpZXIiLCJpIiwiTnVtYmVyIiwiTUFYX1NBRkVfSU5URUdFUiIsImRhdGEiLCJyZWNlaXZlUGxpc3QiLCJwdXNoIiwiX2lzRmluaXNoZWQiLCJyZXNwb25zZSIsIlN0YXR1cyIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9pbnN0YWxsYXRpb24tcHJveHkvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VTZXJ2aWNlUGxpc3QgfSBmcm9tICcuLi9iYXNlLXNlcnZpY2UnO1xuXG4vKlxuICogaHR0cHM6Ly9naXRodWIuY29tL3Rtb3RoeTIwMDEzL2xpYmltb2JpbGVkZXZpY2UtbWFzdGVyL2Jsb2IvZWNkODliNDIwMjFjZjZmN2VmZTlhZDI3MWIzYmRkYzdkZDRiMjgxZS9zcmMvaW5zdGFsbGF0aW9uX3Byb3h5LmNcbiAqL1xuXG5jb25zdCBJTlNUQUxMQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FID0gJ2NvbS5hcHBsZS5tb2JpbGUuaW5zdGFsbGF0aW9uX3Byb3h5JztcblxuY2xhc3MgSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2VQbGlzdCB7XG4gIC8qKlxuICAgKiBJbnN0YWxsIHRoZSBhcHBsaWNhdGlvbiBvbiB0aGUgcmVsYXRpdmUgcGF0aCBvbiB0aGUgcGhvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggd2hlcmUgdGhlIC5hcHAgYW5kIC5pcGEgaXMgbG9jYXRlZCBhdCBvbiB0aGUgcGhvbmVcbiAgICogQHBhcmFtIHtPYmplY3R9IGNsaWVudE9wdGlvbnMgVGhlIGV4dHJhIG9wdGlvbnMgdGhhdCB3YW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIGluc3RhbGxkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0IFs2MDAwMF0gVGhlIHRpbWVvdXQgYmV0d2VlbiBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoZSBwaG9uZSBhcyBzdGF0dXMgdXBkYXRlc1xuICAgKi9cbiAgYXN5bmMgaW5zdGFsbEFwcGxpY2F0aW9uIChwYXRoLCBjbGllbnRPcHRpb25zID0ge30sIHRpbWVvdXQgPSA2MDAwMCkge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBDb21tYW5kOiAnSW5zdGFsbCcsXG4gICAgICBQYWNrYWdlUGF0aDogcGF0aCxcbiAgICAgIENsaWVudE9wdGlvbnM6IGNsaWVudE9wdGlvbnNcbiAgICB9O1xuXG4gICAgdGhpcy5fcGxpc3RTZXJ2aWNlLnNlbmRQbGlzdChyZXF1ZXN0KTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fd2FpdE1lc3NhZ2VDb21wbGV0aW9uKHRpbWVvdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZ3JhZGVzIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiBmcm9tIHRoZSByZWxhdGl2ZSBwYXRoIG9uIHRoZSBwaG9uZS5cbiAgICogSXQgaXMgcmVxdWlyZWQgdGhhdCBhIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIHNhbWUgYXBwIGlzIGFscmVhZHkgaW5zdGFsbGVkIGluIG9yZGVyXG4gICAqIHRvIGNhbGwgdGhpcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHdoZXJlIHRoZSAuYXBwIGFuZCAuaXBhIGlzIGxvY2F0ZWQgYXQgb24gdGhlIHBob25lXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjbGllbnRPcHRpb25zIFRoZSBleHRyYSBvcHRpb25zIHRoYXQgd2FudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBpbnN0YWxsZFxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZW91dCBbNjAwMDBdIFRoZSB0aW1lb3V0IGJldHdlZW4gbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSB0aGUgcGhvbmUgYXMgc3RhdHVzIHVwZGF0ZXNcbiAgICovXG4gIGFzeW5jIHVwZ3JhZGVBcHBsaWNhdGlvbiAocGF0aCwgY2xpZW50T3B0aW9ucyA9IHt9LCB0aW1lb3V0ID0gNjAwMDApIHtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgQ29tbWFuZDogJ1VwZ3JhZGUnLFxuICAgICAgUGFja2FnZVBhdGg6IHBhdGgsXG4gICAgICBDbGllbnRPcHRpb25zOiBjbGllbnRPcHRpb25zXG4gICAgfTtcblxuICAgIHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3QocmVxdWVzdCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3dhaXRNZXNzYWdlQ29tcGxldGlvbih0aW1lb3V0KTtcbiAgfVxuXG4gIC8qKlxuICogQHR5cGVkZWYge09iamVjdH0gTGlzdEFwcGxpY2F0aW9uT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBsaWNhdGlvblR5cGUgb2YgdGhlIHdoaWNoIGdyb3VwIHlvdSB3YW50IHRvIGxpc3QuIFRoZXNlIGNhbiBiZSBVc2VyLCBTeXN0ZW0gb3IgbGVhdmUgaXQgZW1wdHkgZm9yIGJvdGhcbiAqIEBwcm9wZXJ0eSB7QXJyYXl9IHJldHVybkF0dHJpYnV0ZXMgdGhlIGZpZWxkcyB3aGljaCBzaG91bGQgYmUgZmlsdGVyZWQgYW5kIHJldHVybmVkIHRvIHRoZSBjbGllbnQuIExlYXZlIHRoaXMgcGFyYW1ldGVyIGVtcHR5IGlmIHlvdSBkb24ndCB3YW50IHRvIGZpbHRlclxuICovXG5cbiAgLyoqXG4gICAqIExpc3RzIGFwcGxpY2F0aW9ucyBhY2NvcmRpbmcgdG8gdGhlIG9wdHMgYW5kIHJldHVybnMgdGhlbSBhcyBhIG1hcFxuICAgKiBAcGFyYW0ge0xpc3RBcHBsaWNhdGlvbk9wdGlvbnN9IG9wdHMgdGhlIGxpc3Rpbmcgb3B0aW9ucyB0aGF0IHdhbnRzIHRvIGJlIHBhc3NlZFxuICAgKiBAcmV0dXJucyBBIG1hcCBvZiB0aGUgYXBwbGljYXRpb25zIHdoaWNoIHRoZSBrZXkgaXMgdGhlIGJ1bmRsZUlkXG4gICAqL1xuICBhc3luYyBsaXN0QXBwbGljYXRpb25zIChvcHRzID0ge30pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgQ29tbWFuZDogJ0Jyb3dzZScsXG4gICAgICBDbGllbnRPcHRpb25zOiB7fVxuICAgIH07XG5cbiAgICBpZiAob3B0cy5hcHBsaWNhdGlvblR5cGUpIHtcbiAgICAgIHJlcXVlc3QuQ2xpZW50T3B0aW9ucy5BcHBsaWNhdGlvblR5cGUgPSBvcHRzLmFwcGxpY2F0aW9uVHlwZTtcbiAgICB9XG4gICAgaWYgKG9wdHMucmV0dXJuQXR0cmlidXRlcykge1xuICAgICAgcmVxdWVzdC5DbGllbnRPcHRpb25zLlJldHVybkF0dHJpYnV0ZXMgPSBvcHRzLnJldHVybkF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gICAgdGhpcy5fcGxpc3RTZXJ2aWNlLnNlbmRQbGlzdChyZXF1ZXN0KTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMuX3dhaXRNZXNzYWdlQ29tcGxldGlvbigpO1xuICAgIHJldHVybiBtZXNzYWdlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgbWVzc2FnZSkge1xuICAgICAgaWYgKCFtZXNzYWdlLkN1cnJlbnRMaXN0KSB7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9XG4gICAgICBtZXNzYWdlLkN1cnJlbnRMaXN0LmZvckVhY2goZnVuY3Rpb24gKGFwcCkge1xuICAgICAgICBhY2NbYXBwLkNGQnVuZGxlSWRlbnRpZmllcl0gPSBhcHA7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG5cbiAgLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBMb29rdXBBcHBsaWNhdGlvbk9wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXBwbGljYXRpb25UeXBlIG9mIHRoZSB3aGljaCBncm91cCB5b3Ugd2FudCB0byBsaXN0LiBUaGVzZSBjYW4gYmUgVXNlciwgU3lzdGVtIG9yIGxlYXZlIGl0IGVtcHR5IGZvciBib3RoXG4gKiBAcHJvcGVydHkge0FycmF5fSByZXR1cm5BdHRyaWJ1dGVzIHRoZSBmaWVsZHMgd2hpY2ggc2hvdWxkIGJlIGZpbHRlcmVkIGFuZCByZXR1cm5lZCB0byB0aGUgY2xpZW50LiBMZWF2ZSB0aGlzIHBhcmFtZXRlciBlbXB0eSBpZiB5b3UgZG9uJ3Qgd2FudCB0byBmaWx0ZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfEFycmF5fSBidW5kbGVJZHMgQnVuZGxlIElkcyBvZiB0aGUgYXBwcyB0aGF0IHNob3VsZCBiZSBzZWFyY2hlZFxuICovXG5cbiAgLyoqXG4gICAqIExpc3RzIGFwcGxpY2F0aW9ucyBhY2NvcmRpbmcgdG8gdGhlIG9wdHMgYW5kIHJldHVybnMgdGhlbSBhcyBhIG1hcFxuICAgKiBAcGFyYW0ge0xvb2t1cEFwcGxpY2F0aW9uT3B0aW9uc30gb3B0cyB0aGUgbG9va3VwIG9wdGlvbnMgdGhhdCB3YW50cyB0byBiZSBwYXNzZWRcbiAgICogQHJldHVybnMgQSBtYXAgb2YgdGhlIGFwcGxpY2F0aW9ucyB3aGljaCB0aGUga2V5IGlzIHRoZSBidW5kbGVJZFxuICAgKi9cbiAgYXN5bmMgbG9va3VwQXBwbGljYXRpb25zIChvcHRzID0ge30pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgQ29tbWFuZDogJ0xvb2t1cCcsXG4gICAgICBDbGllbnRPcHRpb25zOiB7fVxuICAgIH07XG4gICAgaWYgKG9wdHMuYnVuZGxlSWRzKSB7XG4gICAgICByZXF1ZXN0LkNsaWVudE9wdGlvbnMuQnVuZGxlSURzID0gXy5pc1N0cmluZyhvcHRzLmJ1bmRsZUlkcykgPyBbb3B0cy5idW5kbGVJZHNdIDogb3B0cy5idW5kbGVJZHM7XG4gICAgfVxuICAgIGlmIChvcHRzLmFwcGxpY2F0aW9uVHlwZSkge1xuICAgICAgcmVxdWVzdC5DbGllbnRPcHRpb25zLkFwcGxpY2F0aW9uVHlwZSA9IG9wdHMuYXBwbGljYXRpb25UeXBlO1xuICAgIH1cbiAgICBpZiAob3B0cy5yZXR1cm5BdHRyaWJ1dGVzKSB7XG4gICAgICByZXF1ZXN0LkNsaWVudE9wdGlvbnMuUmV0dXJuQXR0cmlidXRlcyA9IG9wdHMucmV0dXJuQXR0cmlidXRlcztcbiAgICB9XG5cbiAgICB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gYXdhaXQgdGhpcy5fd2FpdE1lc3NhZ2VDb21wbGV0aW9uKCk7XG4gICAgZm9yIChjb25zdCBtZXNzYWdlIG9mIG1lc3NhZ2VzKSB7XG4gICAgICBpZiAobWVzc2FnZS5Mb29rdXBSZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2UuTG9va3VwUmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIExvb2t1cFJlc3VsdCBpbiB0aGUgcmVzcG9uc2U6IFJlc3BvbnNlOiAke0pTT04uc3RyaW5naWZ5KG1lc3NhZ2VzKX1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmluc3RhbGxzIGFuIGFwcGxpY2F0aW9uIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gYnVuZGxlSWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJ1bmRsZUlkIG9mIHRoZSBhcHAgdGhhdCBuZWVkcyB0byBiZSBwYXNzZWQgZm9yIHVuaW5zdGFsbGF0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0IFRoZSB0aW1lb3V0IGJldHdlZW4gbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSB0aGUgcGhvbmUgYXMgc3RhdHVzIHVwZGF0ZXNcbiAgICovXG4gIGFzeW5jIHVuaW5zdGFsbEFwcGxpY2F0aW9uIChidW5kbGVJZCwgdGltZW91dCA9IDIwMDAwKSB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIENvbW1hbmQ6ICdVbmluc3RhbGwnLFxuICAgICAgQXBwbGljYXRpb25JZGVudGlmaWVyOiBidW5kbGVJZFxuICAgIH07XG5cbiAgICB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0KHJlcXVlc3QpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl93YWl0TWVzc2FnZUNvbXBsZXRpb24odGltZW91dCk7XG4gIH1cblxuICBhc3luYyBfd2FpdE1lc3NhZ2VDb21wbGV0aW9uICh0aW1lb3V0KSB7XG4gICAgbGV0IG1lc3NhZ2VzID0gW107XG4gICAgLy8gSnVzdCBhZGRlZCBmb3Igc2FmZXR5LiBUaGlzIHNob3VsZG4ndCBoYXBwZW5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSOyBpKyspIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLl9wbGlzdFNlcnZpY2UucmVjZWl2ZVBsaXN0KHRpbWVvdXQpO1xuICAgICAgbWVzc2FnZXMucHVzaChkYXRhKTtcbiAgICAgIGlmICh0aGlzLl9pc0ZpbmlzaGVkKGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBtZXNzYWdlcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfaXNGaW5pc2hlZCAocmVzcG9uc2UpIHtcbiAgICBpZiAocmVzcG9uc2UuRXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlKX1gKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlc3BvbnNlLlN0YXR1cykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2UuU3RhdHVzID09PSAnQ29tcGxldGUnO1xuICB9XG59XG5cbmV4cG9ydCB7IEluc3RhbGxhdGlvblByb3h5U2VydmljZSwgSU5TVEFMTEFUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSB9O1xuZXhwb3J0IGRlZmF1bHQgSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFlBQUEsR0FBQUQsT0FBQTtBQU1BLE1BQU1FLCtCQUErQixHQUFHLHFDQUFxQztBQUFDQyxPQUFBLENBQUFELCtCQUFBLEdBQUFBLCtCQUFBO0FBRTlFLE1BQU1FLHdCQUF3QixTQUFTQyw2QkFBZ0IsQ0FBQztFQU90RCxNQUFNQyxrQkFBa0JBLENBQUVDLElBQUksRUFBRUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFQyxPQUFPLEdBQUcsS0FBSyxFQUFFO0lBQ25FLE1BQU1DLE9BQU8sR0FBRztNQUNkQyxPQUFPLEVBQUUsU0FBUztNQUNsQkMsV0FBVyxFQUFFTCxJQUFJO01BQ2pCTSxhQUFhLEVBQUVMO0lBQ2pCLENBQUM7SUFFRCxJQUFJLENBQUNNLGFBQWEsQ0FBQ0MsU0FB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
|
|
109
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYmFzZVNlcnZpY2UiLCJJTlNUQUxMQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FIiwiZXhwb3J0cyIsIkluc3RhbGxhdGlvblByb3h5U2VydmljZSIsIkJhc2VTZXJ2aWNlUGxpc3QiLCJpbnN0YWxsQXBwbGljYXRpb24iLCJwYXRoIiwiY2xpZW50T3B0aW9ucyIsInRpbWVvdXQiLCJyZXF1ZXN0IiwiQ29tbWFuZCIsIlBhY2thZ2VQYXRoIiwiQ2xpZW50T3B0aW9ucyIsIl9wbGlzdFNlcnZpY2UiLCJzZW5kUGxpc3QiLCJfd2FpdE1lc3NhZ2VDb21wbGV0aW9uIiwidXBncmFkZUFwcGxpY2F0aW9uIiwibGlzdEFwcGxpY2F0aW9ucyIsIm9wdHMiLCJhcHBsaWNhdGlvblR5cGUiLCJBcHBsaWNhdGlvblR5cGUiLCJyZXR1cm5BdHRyaWJ1dGVzIiwiUmV0dXJuQXR0cmlidXRlcyIsIm1lc3NhZ2VzIiwicmVkdWNlIiwiYWNjIiwibWVzc2FnZSIsIkN1cnJlbnRMaXN0IiwiZm9yRWFjaCIsImFwcCIsIkNGQnVuZGxlSWRlbnRpZmllciIsImxvb2t1cEFwcGxpY2F0aW9ucyIsImJ1bmRsZUlkcyIsIkJ1bmRsZUlEcyIsIl8iLCJpc1N0cmluZyIsIkxvb2t1cFJlc3VsdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuaW5zdGFsbEFwcGxpY2F0aW9uIiwiYnVuZGxlSWQiLCJBcHBsaWNhdGlvbklkZW50aWZpZXIiLCJpIiwiTnVtYmVyIiwiTUFYX1NBRkVfSU5URUdFUiIsImRhdGEiLCJyZWNlaXZlUGxpc3QiLCJwdXNoIiwiX2lzRmluaXNoZWQiLCJyZXNwb25zZSIsIlN0YXR1cyIsIl9kZWZhdWx0IiwiZGVmYXVsdCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9pbnN0YWxsYXRpb24tcHJveHkvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VTZXJ2aWNlUGxpc3QgfSBmcm9tICcuLi9iYXNlLXNlcnZpY2UnO1xuXG4vKlxuICogaHR0cHM6Ly9naXRodWIuY29tL3Rtb3RoeTIwMDEzL2xpYmltb2JpbGVkZXZpY2UtbWFzdGVyL2Jsb2IvZWNkODliNDIwMjFjZjZmN2VmZTlhZDI3MWIzYmRkYzdkZDRiMjgxZS9zcmMvaW5zdGFsbGF0aW9uX3Byb3h5LmNcbiAqL1xuXG5jb25zdCBJTlNUQUxMQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FID0gJ2NvbS5hcHBsZS5tb2JpbGUuaW5zdGFsbGF0aW9uX3Byb3h5JztcblxuY2xhc3MgSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2VQbGlzdCB7XG4gIC8qKlxuICAgKiBJbnN0YWxsIHRoZSBhcHBsaWNhdGlvbiBvbiB0aGUgcmVsYXRpdmUgcGF0aCBvbiB0aGUgcGhvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggd2hlcmUgdGhlIC5hcHAgYW5kIC5pcGEgaXMgbG9jYXRlZCBhdCBvbiB0aGUgcGhvbmVcbiAgICogQHBhcmFtIHtPYmplY3R9IGNsaWVudE9wdGlvbnMgVGhlIGV4dHJhIG9wdGlvbnMgdGhhdCB3YW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIGluc3RhbGxkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0IFs2MDAwMF0gVGhlIHRpbWVvdXQgYmV0d2VlbiBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoZSBwaG9uZSBhcyBzdGF0dXMgdXBkYXRlc1xuICAgKi9cbiAgYXN5bmMgaW5zdGFsbEFwcGxpY2F0aW9uIChwYXRoLCBjbGllbnRPcHRpb25zID0ge30sIHRpbWVvdXQgPSA2MDAwMCkge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBDb21tYW5kOiAnSW5zdGFsbCcsXG4gICAgICBQYWNrYWdlUGF0aDogcGF0aCxcbiAgICAgIENsaWVudE9wdGlvbnM6IGNsaWVudE9wdGlvbnNcbiAgICB9O1xuXG4gICAgdGhpcy5fcGxpc3RTZXJ2aWNlLnNlbmRQbGlzdChyZXF1ZXN0KTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fd2FpdE1lc3NhZ2VDb21wbGV0aW9uKHRpbWVvdXQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZ3JhZGVzIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiBmcm9tIHRoZSByZWxhdGl2ZSBwYXRoIG9uIHRoZSBwaG9uZS5cbiAgICogSXQgaXMgcmVxdWlyZWQgdGhhdCBhIHByZXZpb3VzIHZlcnNpb24gb2YgdGhlIHNhbWUgYXBwIGlzIGFscmVhZHkgaW5zdGFsbGVkIGluIG9yZGVyXG4gICAqIHRvIGNhbGwgdGhpcyBBUEkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoIFRoZSBwYXRoIHdoZXJlIHRoZSAuYXBwIGFuZCAuaXBhIGlzIGxvY2F0ZWQgYXQgb24gdGhlIHBob25lXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBjbGllbnRPcHRpb25zIFRoZSBleHRyYSBvcHRpb25zIHRoYXQgd2FudHMgdG8gYmUgcGFzc2VkIHRvIHRoZSBpbnN0YWxsZFxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZW91dCBbNjAwMDBdIFRoZSB0aW1lb3V0IGJldHdlZW4gbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSB0aGUgcGhvbmUgYXMgc3RhdHVzIHVwZGF0ZXNcbiAgICovXG4gIGFzeW5jIHVwZ3JhZGVBcHBsaWNhdGlvbiAocGF0aCwgY2xpZW50T3B0aW9ucyA9IHt9LCB0aW1lb3V0ID0gNjAwMDApIHtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgQ29tbWFuZDogJ1VwZ3JhZGUnLFxuICAgICAgUGFja2FnZVBhdGg6IHBhdGgsXG4gICAgICBDbGllbnRPcHRpb25zOiBjbGllbnRPcHRpb25zXG4gICAgfTtcblxuICAgIHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3QocmVxdWVzdCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuX3dhaXRNZXNzYWdlQ29tcGxldGlvbih0aW1lb3V0KTtcbiAgfVxuXG4gIC8qKlxuICogQHR5cGVkZWYge09iamVjdH0gTGlzdEFwcGxpY2F0aW9uT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBsaWNhdGlvblR5cGUgb2YgdGhlIHdoaWNoIGdyb3VwIHlvdSB3YW50IHRvIGxpc3QuIFRoZXNlIGNhbiBiZSBVc2VyLCBTeXN0ZW0gb3IgbGVhdmUgaXQgZW1wdHkgZm9yIGJvdGhcbiAqIEBwcm9wZXJ0eSB7QXJyYXl9IHJldHVybkF0dHJpYnV0ZXMgdGhlIGZpZWxkcyB3aGljaCBzaG91bGQgYmUgZmlsdGVyZWQgYW5kIHJldHVybmVkIHRvIHRoZSBjbGllbnQuIExlYXZlIHRoaXMgcGFyYW1ldGVyIGVtcHR5IGlmIHlvdSBkb24ndCB3YW50IHRvIGZpbHRlclxuICovXG5cbiAgLyoqXG4gICAqIExpc3RzIGFwcGxpY2F0aW9ucyBhY2NvcmRpbmcgdG8gdGhlIG9wdHMgYW5kIHJldHVybnMgdGhlbSBhcyBhIG1hcFxuICAgKiBAcGFyYW0ge0xpc3RBcHBsaWNhdGlvbk9wdGlvbnN9IG9wdHMgdGhlIGxpc3Rpbmcgb3B0aW9ucyB0aGF0IHdhbnRzIHRvIGJlIHBhc3NlZFxuICAgKiBAcmV0dXJucyBBIG1hcCBvZiB0aGUgYXBwbGljYXRpb25zIHdoaWNoIHRoZSBrZXkgaXMgdGhlIGJ1bmRsZUlkXG4gICAqL1xuICBhc3luYyBsaXN0QXBwbGljYXRpb25zIChvcHRzID0ge30pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgQ29tbWFuZDogJ0Jyb3dzZScsXG4gICAgICBDbGllbnRPcHRpb25zOiB7fVxuICAgIH07XG5cbiAgICBpZiAob3B0cy5hcHBsaWNhdGlvblR5cGUpIHtcbiAgICAgIHJlcXVlc3QuQ2xpZW50T3B0aW9ucy5BcHBsaWNhdGlvblR5cGUgPSBvcHRzLmFwcGxpY2F0aW9uVHlwZTtcbiAgICB9XG4gICAgaWYgKG9wdHMucmV0dXJuQXR0cmlidXRlcykge1xuICAgICAgcmVxdWVzdC5DbGllbnRPcHRpb25zLlJldHVybkF0dHJpYnV0ZXMgPSBvcHRzLnJldHVybkF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gICAgdGhpcy5fcGxpc3RTZXJ2aWNlLnNlbmRQbGlzdChyZXF1ZXN0KTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMuX3dhaXRNZXNzYWdlQ29tcGxldGlvbigpO1xuICAgIHJldHVybiBtZXNzYWdlcy5yZWR1Y2UoZnVuY3Rpb24gKGFjYywgbWVzc2FnZSkge1xuICAgICAgaWYgKCFtZXNzYWdlLkN1cnJlbnRMaXN0KSB7XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9XG4gICAgICBtZXNzYWdlLkN1cnJlbnRMaXN0LmZvckVhY2goZnVuY3Rpb24gKGFwcCkge1xuICAgICAgICBhY2NbYXBwLkNGQnVuZGxlSWRlbnRpZmllcl0gPSBhcHA7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG5cbiAgLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBMb29rdXBBcHBsaWNhdGlvbk9wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXBwbGljYXRpb25UeXBlIG9mIHRoZSB3aGljaCBncm91cCB5b3Ugd2FudCB0byBsaXN0LiBUaGVzZSBjYW4gYmUgVXNlciwgU3lzdGVtIG9yIGxlYXZlIGl0IGVtcHR5IGZvciBib3RoXG4gKiBAcHJvcGVydHkge0FycmF5fSByZXR1cm5BdHRyaWJ1dGVzIHRoZSBmaWVsZHMgd2hpY2ggc2hvdWxkIGJlIGZpbHRlcmVkIGFuZCByZXR1cm5lZCB0byB0aGUgY2xpZW50LiBMZWF2ZSB0aGlzIHBhcmFtZXRlciBlbXB0eSBpZiB5b3UgZG9uJ3Qgd2FudCB0byBmaWx0ZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfEFycmF5fSBidW5kbGVJZHMgQnVuZGxlIElkcyBvZiB0aGUgYXBwcyB0aGF0IHNob3VsZCBiZSBzZWFyY2hlZFxuICovXG5cbiAgLyoqXG4gICAqIExpc3RzIGFwcGxpY2F0aW9ucyBhY2NvcmRpbmcgdG8gdGhlIG9wdHMgYW5kIHJldHVybnMgdGhlbSBhcyBhIG1hcFxuICAgKiBAcGFyYW0ge0xvb2t1cEFwcGxpY2F0aW9uT3B0aW9uc30gb3B0cyB0aGUgbG9va3VwIG9wdGlvbnMgdGhhdCB3YW50cyB0byBiZSBwYXNzZWRcbiAgICogQHJldHVybnMgQSBtYXAgb2YgdGhlIGFwcGxpY2F0aW9ucyB3aGljaCB0aGUga2V5IGlzIHRoZSBidW5kbGVJZFxuICAgKi9cbiAgYXN5bmMgbG9va3VwQXBwbGljYXRpb25zIChvcHRzID0ge30pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgQ29tbWFuZDogJ0xvb2t1cCcsXG4gICAgICBDbGllbnRPcHRpb25zOiB7fVxuICAgIH07XG4gICAgaWYgKG9wdHMuYnVuZGxlSWRzKSB7XG4gICAgICByZXF1ZXN0LkNsaWVudE9wdGlvbnMuQnVuZGxlSURzID0gXy5pc1N0cmluZyhvcHRzLmJ1bmRsZUlkcykgPyBbb3B0cy5idW5kbGVJZHNdIDogb3B0cy5idW5kbGVJZHM7XG4gICAgfVxuICAgIGlmIChvcHRzLmFwcGxpY2F0aW9uVHlwZSkge1xuICAgICAgcmVxdWVzdC5DbGllbnRPcHRpb25zLkFwcGxpY2F0aW9uVHlwZSA9IG9wdHMuYXBwbGljYXRpb25UeXBlO1xuICAgIH1cbiAgICBpZiAob3B0cy5yZXR1cm5BdHRyaWJ1dGVzKSB7XG4gICAgICByZXF1ZXN0LkNsaWVudE9wdGlvbnMuUmV0dXJuQXR0cmlidXRlcyA9IG9wdHMucmV0dXJuQXR0cmlidXRlcztcbiAgICB9XG5cbiAgICB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gYXdhaXQgdGhpcy5fd2FpdE1lc3NhZ2VDb21wbGV0aW9uKCk7XG4gICAgZm9yIChjb25zdCBtZXNzYWdlIG9mIG1lc3NhZ2VzKSB7XG4gICAgICBpZiAobWVzc2FnZS5Mb29rdXBSZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2UuTG9va3VwUmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIExvb2t1cFJlc3VsdCBpbiB0aGUgcmVzcG9uc2U6IFJlc3BvbnNlOiAke0pTT04uc3RyaW5naWZ5KG1lc3NhZ2VzKX1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmluc3RhbGxzIGFuIGFwcGxpY2F0aW9uIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gYnVuZGxlSWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJ1bmRsZUlkIG9mIHRoZSBhcHAgdGhhdCBuZWVkcyB0byBiZSBwYXNzZWQgZm9yIHVuaW5zdGFsbGF0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0IFRoZSB0aW1lb3V0IGJldHdlZW4gbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSB0aGUgcGhvbmUgYXMgc3RhdHVzIHVwZGF0ZXNcbiAgICovXG4gIGFzeW5jIHVuaW5zdGFsbEFwcGxpY2F0aW9uIChidW5kbGVJZCwgdGltZW91dCA9IDIwMDAwKSB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIENvbW1hbmQ6ICdVbmluc3RhbGwnLFxuICAgICAgQXBwbGljYXRpb25JZGVudGlmaWVyOiBidW5kbGVJZFxuICAgIH07XG5cbiAgICB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0KHJlcXVlc3QpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl93YWl0TWVzc2FnZUNvbXBsZXRpb24odGltZW91dCk7XG4gIH1cblxuICBhc3luYyBfd2FpdE1lc3NhZ2VDb21wbGV0aW9uICh0aW1lb3V0KSB7XG4gICAgbGV0IG1lc3NhZ2VzID0gW107XG4gICAgLy8gSnVzdCBhZGRlZCBmb3Igc2FmZXR5LiBUaGlzIHNob3VsZG4ndCBoYXBwZW5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSOyBpKyspIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLl9wbGlzdFNlcnZpY2UucmVjZWl2ZVBsaXN0KHRpbWVvdXQpO1xuICAgICAgbWVzc2FnZXMucHVzaChkYXRhKTtcbiAgICAgIGlmICh0aGlzLl9pc0ZpbmlzaGVkKGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBtZXNzYWdlcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfaXNGaW5pc2hlZCAocmVzcG9uc2UpIHtcbiAgICBpZiAocmVzcG9uc2UuRXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlKX1gKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlc3BvbnNlLlN0YXR1cykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2UuU3RhdHVzID09PSAnQ29tcGxldGUnO1xuICB9XG59XG5cbmV4cG9ydCB7IEluc3RhbGxhdGlvblByb3h5U2VydmljZSwgSU5TVEFMTEFUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSB9O1xuZXhwb3J0IGRlZmF1bHQgSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFlBQUEsR0FBQUQsT0FBQTtBQU1BLE1BQU1FLCtCQUErQixHQUFHLHFDQUFxQztBQUFDQyxPQUFBLENBQUFELCtCQUFBLEdBQUFBLCtCQUFBO0FBRTlFLE1BQU1FLHdCQUF3QixTQUFTQyw2QkFBZ0IsQ0FBQztFQU90RCxNQUFNQyxrQkFBa0JBLENBQUVDLElBQUksRUFBRUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxFQUFFQyxPQUFPLEdBQUcsS0FBSyxFQUFFO0lBQ25FLE1BQU1DLE9BQU8sR0FBRztNQUNkQyxPQUFPLEVBQUUsU0FBUztNQUNsQkMsV0FBVyxFQUFFTCxJQUFJO01BQ2pCTSxhQUFhLEVBQUVMO0lBQ2pCLENBQUM7SUFFRCxJQUFJLENBQUNNLGFBQWEsQ0FBQ0MsU0FB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
|