appium-android-driver 4.50.0 → 4.51.0

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.
@@ -119,6 +119,9 @@ let commonCapConstraints = {
119
119
  chromedriverDisableBuildCheck: {
120
120
  isBoolean: true
121
121
  },
122
+ chromeLoggingPrefs: {
123
+ isObject: true
124
+ },
122
125
  autoWebviewTimeout: {
123
126
  isNumber: true
124
127
  },
@@ -295,4 +298,4 @@ var _default = desiredCapConstraints;
295
298
  exports.default = _default;require('source-map-support').install();
296
299
 
297
300
 
298
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kZXNpcmVkLWNhcHMuanMiXSwibmFtZXMiOlsiY29tbW9uQ2FwQ29uc3RyYWludHMiLCJwbGF0Zm9ybU5hbWUiLCJpc1N0cmluZyIsImluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZSIsInByZXNlbmNlIiwiYXBwIiwiYXBwQWN0aXZpdHkiLCJhcHBQYWNrYWdlIiwiYXBwV2FpdEFjdGl2aXR5IiwiYXBwV2FpdFBhY2thZ2UiLCJhcHBXYWl0RHVyYXRpb24iLCJpc051bWJlciIsImRldmljZVJlYWR5VGltZW91dCIsImFuZHJvaWRDb3ZlcmFnZSIsImFuZHJvaWREZXZpY2VSZWFkeVRpbWVvdXQiLCJhbmRyb2lkRGV2aWNlU29ja2V0IiwiYW5kcm9pZEluc3RhbGxUaW1lb3V0IiwiYWRiUG9ydCIsInJlbW90ZUFkYkhvc3QiLCJhZGJFeGVjVGltZW91dCIsImF2ZCIsImF2ZExhdW5jaFRpbWVvdXQiLCJhdmRSZWFkeVRpbWVvdXQiLCJhdmRBcmdzIiwiYXZkRW52IiwiaXNPYmplY3QiLCJ1c2VLZXlzdG9yZSIsImlzQm9vbGVhbiIsImtleXN0b3JlUGF0aCIsImtleXN0b3JlUGFzc3dvcmQiLCJrZXlBbGlhcyIsImtleVBhc3N3b3JkIiwid2Vidmlld0RldnRvb2xzUG9ydCIsImVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzIiwiZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uIiwiY2hyb21lRHJpdmVyUG9ydCIsImNocm9tZWRyaXZlclBvcnQiLCJjaHJvbWVkcml2ZXJQb3J0cyIsImlzQXJyYXkiLCJjaHJvbWVkcml2ZXJBcmdzIiwiY2hyb21lZHJpdmVyRXhlY3V0YWJsZSIsImNocm9tZWRyaXZlckV4ZWN1dGFibGVEaXIiLCJjaHJvbWVkcml2ZXJDaHJvbWVNYXBwaW5nRmlsZSIsImNocm9tZWRyaXZlclVzZVN5c3RlbUV4ZWN1dGFibGUiLCJjaHJvbWVkcml2ZXJEaXNhYmxlQnVpbGRDaGVjayIsImF1dG9XZWJ2aWV3VGltZW91dCIsImludGVudEFjdGlvbiIsImludGVudENhdGVnb3J5IiwiaW50ZW50RmxhZ3MiLCJvcHRpb25hbEludGVudEFyZ3VtZW50cyIsImRvbnRTdG9wQXBwT25SZXNldCIsInVuaWNvZGVLZXlib2FyZCIsInJlc2V0S2V5Ym9hcmQiLCJub1NpZ24iLCJyZWNyZWF0ZUNocm9tZURyaXZlclNlc3Npb25zIiwiYXV0b0xhdW5jaCIsIm5hdGl2ZVdlYlNjcmVlbnNob3QiLCJhbmRyb2lkU2NyZWVuc2hvdFBhdGgiLCJhbmRyb2lkSW5zdGFsbFBhdGgiLCJjbGVhclN5c3RlbUZpbGVzIiwiZXh0cmFjdENocm9tZUFuZHJvaWRQYWNrYWdlRnJvbUNvbnRleHROYW1lIiwiYXV0b0dyYW50UGVybWlzc2lvbnMiLCJzaGFyZWRQcmVmZXJlbmNlcyIsIm5ldHdvcmtTcGVlZCIsImdwc0VuYWJsZWQiLCJpc0hlYWRsZXNzIiwic2hvd0Nocm9tZWRyaXZlckxvZyIsInNraXBVbmxvY2siLCJjbGVhckRldmljZUxvZ3NPblN0YXJ0IiwidW5sb2NrVHlwZSIsInVubG9ja0tleSIsInVubG9ja1N0cmF0ZWd5Iiwib3RoZXJBcHBzIiwidW5pbnN0YWxsT3RoZXJQYWNrYWdlcyIsImFsbG93VGVzdFBhY2thZ2VzIiwicGFnZUxvYWRTdHJhdGVneSIsImxvY2FsZVNjcmlwdCIsInNraXBEZXZpY2VJbml0aWFsaXphdGlvbiIsInJlbW90ZUFwcHNDYWNoZUxpbWl0IiwiYnVpbGRUb29sc1ZlcnNpb24iLCJza2lwTG9nY2F0Q2FwdHVyZSIsImNocm9tZU9wdGlvbnMiLCJlbmFibGVQZXJmb3JtYW5jZUxvZ2dpbmciLCJ1c2VyUHJvZmlsZSIsImJyb3dzZXJOYW1lIiwiZW5mb3JjZUFwcEluc3RhbGwiLCJzdXBwcmVzc0tpbGxTZXJ2ZXIiLCJhbGxvd09mZmxpbmVEZXZpY2VzIiwiaWdub3JlSGlkZGVuQXBpUG9saWN5RXJyb3IiLCJ1bmxvY2tTdWNjZXNzVGltZW91dCIsIm1vY2tMb2NhdGlvbkFwcCIsImxvZ2NhdEZvcm1hdCIsImxvZ2NhdEZpbHRlclNwZWNzIiwiYWxsb3dEZWxheUFkYiIsInVpYXV0b21hdG9yQ2FwQ29uc3RyYWludHMiLCJpZ25vcmVVbmltcG9ydGFudFZpZXdzIiwiZGlzYWJsZUFuZHJvaWRXYXRjaGVycyIsImFjY2VwdFNzbENlcnRzIiwiYW5kcm9pZE5hdHVyYWxPcmllbnRhdGlvbiIsImRpc2FibGVXaW5kb3dBbmltYXRpb24iLCJib290c3RyYXBQb3J0IiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFJQSxvQkFBb0IsR0FBRztBQUN6QkMsRUFBQUEsWUFBWSxFQUFFO0FBQ1pDLElBQUFBLFFBQVEsRUFBRSxJQURFO0FBRVpDLElBQUFBLHdCQUF3QixFQUFFLENBQUMsU0FBRCxDQUZkO0FBR1pDLElBQUFBLFFBQVEsRUFBRTtBQUhFLEdBRFc7QUFNekJDLEVBQUFBLEdBQUcsRUFBRTtBQUNISCxJQUFBQSxRQUFRLEVBQUU7QUFEUCxHQU5vQjtBQVN6QkksRUFBQUEsV0FBVyxFQUFFO0FBQ1hKLElBQUFBLFFBQVEsRUFBRTtBQURDLEdBVFk7QUFZekJLLEVBQUFBLFVBQVUsRUFBRTtBQUNWTCxJQUFBQSxRQUFRLEVBQUU7QUFEQSxHQVphO0FBZXpCTSxFQUFBQSxlQUFlLEVBQUU7QUFDZk4sSUFBQUEsUUFBUSxFQUFFO0FBREssR0FmUTtBQWtCekJPLEVBQUFBLGNBQWMsRUFBRTtBQUNkUCxJQUFBQSxRQUFRLEVBQUU7QUFESSxHQWxCUztBQXFCekJRLEVBQUFBLGVBQWUsRUFBRTtBQUNmQyxJQUFBQSxRQUFRLEVBQUU7QUFESyxHQXJCUTtBQXdCekJDLEVBQUFBLGtCQUFrQixFQUFFO0FBQ2xCRCxJQUFBQSxRQUFRLEVBQUU7QUFEUSxHQXhCSztBQTJCekJFLEVBQUFBLGVBQWUsRUFBRTtBQUNmWCxJQUFBQSxRQUFRLEVBQUU7QUFESyxHQTNCUTtBQThCekJZLEVBQUFBLHlCQUF5QixFQUFFO0FBQ3pCSCxJQUFBQSxRQUFRLEVBQUU7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O0FBREUsR0EvUFc7QUFrUXpCMEYsRUFBQUEsaUJBQWlCLEVBQUU7QUFDakJ0RCxJQUFBQSxPQUFPLEVBQUU7QUFEUSxHQWxRTTtBQXFRekJ1RCxFQUFBQSxhQUFhLEVBQUU7QUFDYmxFLElBQUFBLFNBQVMsRUFBRTtBQURFO0FBclFVLENBQTNCOztBQTBRQSxJQUFJbUUseUJBQXlCLEdBQUc7QUFDOUJDLEVBQUFBLHNCQUFzQixFQUFFO0FBQ3RCcEUsSUFBQUEsU0FBUyxFQUFFO0FBRFcsR0FETTtBQUk5QnFFLEVBQUFBLHNCQUFzQixFQUFFO0FBQ3RCckUsSUFBQUEsU0FBUyxFQUFFO0FBRFcsR0FKTTtBQU85QnNFLEVBQUFBLGNBQWMsRUFBRTtBQUNkdEUsSUFBQUEsU0FBUyxFQUFFO0FBREcsR0FQYztBQVU5QnVFLEVBQUFBLHlCQUF5QixFQUFFO0FBQ3pCdkUsSUFBQUEsU0FBUyxFQUFFO0FBRGMsR0FWRztBQWE5QndFLEVBQUFBLHNCQUFzQixFQUFFO0FBQ3RCeEUsSUFBQUEsU0FBUyxFQUFFO0FBRFcsR0FiTTtBQWdCOUJ5RSxFQUFBQSxhQUFhLEVBQUU7QUFDYnpGLElBQUFBLFFBQVEsRUFBRTtBQURHO0FBaEJlLENBQWhDO0FBcUJBLElBQUkwRixxQkFBcUIsR0FBRyxFQUE1QjtBQUVBQyxNQUFNLENBQUNDLE1BQVAsQ0FBY0YscUJBQWQsRUFBcUNyRyxvQkFBckMsRUFDYzhGLHlCQURkO2VBR2VPLHFCIiwic291cmNlc0NvbnRlbnQiOlsibGV0IGNvbW1vbkNhcENvbnN0cmFpbnRzID0ge1xuICBwbGF0Zm9ybU5hbWU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZSxcbiAgICBpbmNsdXNpb25DYXNlSW5zZW5zaXRpdmU6IFsnQW5kcm9pZCddLFxuICAgIHByZXNlbmNlOiB0cnVlXG4gIH0sXG4gIGFwcDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFwcEFjdGl2aXR5OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXBwUGFja2FnZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFwcFdhaXRBY3Rpdml0eToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFwcFdhaXRQYWNrYWdlOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXBwV2FpdER1cmF0aW9uOiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgZGV2aWNlUmVhZHlUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYW5kcm9pZENvdmVyYWdlOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYW5kcm9pZERldmljZVJlYWR5VGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGFuZHJvaWREZXZpY2VTb2NrZXQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhbmRyb2lkSW5zdGFsbFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBhZGJQb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgcmVtb3RlQWRiSG9zdDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFkYkV4ZWNUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYXZkOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXZkTGF1bmNoVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGF2ZFJlYWR5VGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGF2ZEFyZ3M6IHtcbiAgICAvLyBjb3VsZCBiZSBhIHN0cmluZyBvciBhbiBhcnJheVxuICB9LFxuICBhdmRFbnY6IHtcbiAgICBpc09iamVjdDogdHJ1ZVxuICB9LFxuICB1c2VLZXlzdG9yZToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBrZXlzdG9yZVBhdGg6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBrZXlzdG9yZVBhc3N3b3JkOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAga2V5QWxpYXM6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBrZXlQYXNzd29yZDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHdlYnZpZXdEZXZ0b29sc1BvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlczoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgLy8gdGhpcyBvbmUgaXMgZGVwcmVjYXRlZFxuICBjaHJvbWVEcml2ZXJQb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgLy8gZHVwbGljYXRlIG9mIGFib3ZlIHdpdGggYmV0dGVyIHNwZWxsaW5nXG4gIGNocm9tZWRyaXZlclBvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBjaHJvbWVkcml2ZXJQb3J0czoge1xuICAgIGlzQXJyYXk6IHRydWVcbiAgfSxcbiAgY2hyb21lZHJpdmVyQXJnczoge1xuICAgIGlzT2JqZWN0OiB0cnVlLFxuICB9LFxuICBjaHJvbWVkcml2ZXJFeGVjdXRhYmxlOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgY2hyb21lZHJpdmVyRXhlY3V0YWJsZURpcjoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGNocm9tZWRyaXZlckNocm9tZU1hcHBpbmdGaWxlOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgY2hyb21lZHJpdmVyVXNlU3lzdGVtRXhlY3V0YWJsZToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBjaHJvbWVkcml2ZXJEaXNhYmxlQnVpbGRDaGVjazoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhdXRvV2Vidmlld1RpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBpbnRlbnRBY3Rpb246IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBpbnRlbnRDYXRlZ29yeToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGludGVudEZsYWdzOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHM6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBkb250U3RvcEFwcE9uUmVzZXQ6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdW5pY29kZUtleWJvYXJkOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHJlc2V0S2V5Ym9hcmQ6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgbm9TaWduOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHJlY3JlYXRlQ2hyb21lRHJpdmVyU2Vzc2lvbnM6IHtcbiAgICBpc0Jvb2xlYW46IGZhbHNlXG4gIH0sXG4gIGF1dG9MYXVuY2g6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgbmF0aXZlV2ViU2NyZWVuc2hvdDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhbmRyb2lkU2NyZWVuc2hvdFBhdGg6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhbmRyb2lkSW5zdGFsbFBhdGg6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBjbGVhclN5c3RlbUZpbGVzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGV4dHJhY3RDaHJvbWVBbmRyb2lkUGFja2FnZUZyb21Db250ZXh0TmFtZToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhdXRvR3JhbnRQZXJtaXNzaW9uczoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzaGFyZWRQcmVmZXJlbmNlczoge1xuICAgIGlzT2JqZWN0OiB0cnVlXG4gIH0sXG4gIG5ldHdvcmtTcGVlZDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGdwc0VuYWJsZWQ6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgaXNIZWFkbGVzczoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzaG93Q2hyb21lZHJpdmVyTG9nOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNraXBVbmxvY2s6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgY2xlYXJEZXZpY2VMb2dzT25TdGFydDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB1bmxvY2tUeXBlOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgdW5sb2NrS2V5OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgdW5sb2NrU3RyYXRlZ3k6IHtcbiAgICBpc1N0cmluZzogdHJ1ZSxcbiAgICBpbmNsdXNpb25DYXNlSW5zZW5zaXRpdmU6IFsnbG9ja3NldHRpbmdzJywgJ3VpYXV0b21hdG9yJ10sXG4gIH0sXG4gIG90aGVyQXBwczoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHVuaW5zdGFsbE90aGVyUGFja2FnZXM6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhbGxvd1Rlc3RQYWNrYWdlczoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBwYWdlTG9hZFN0cmF0ZWd5OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgbG9jYWxlU2NyaXB0OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc2tpcERldmljZUluaXRpYWxpemF0aW9uOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHJlbW90ZUFwcHNDYWNoZUxpbWl0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYnVpbGRUb29sc1ZlcnNpb246IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBza2lwTG9nY2F0Q2FwdHVyZToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBjaHJvbWVPcHRpb25zOiB7XG4gICAgaXNPYmplY3Q6IHRydWVcbiAgfSxcbiAgZW5hYmxlUGVyZm9ybWFuY2VMb2dnaW5nOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHVzZXJQcm9maWxlOiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYnJvd3Nlck5hbWU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBlbmZvcmNlQXBwSW5zdGFsbDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzdXBwcmVzc0tpbGxTZXJ2ZXI6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgYWxsb3dPZmZsaW5lRGV2aWNlczoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBpZ25vcmVIaWRkZW5BcGlQb2xpY3lFcnJvcjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB1bmxvY2tTdWNjZXNzVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIG1vY2tMb2NhdGlvbkFwcDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGxvZ2NhdEZvcm1hdDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGxvZ2NhdEZpbHRlclNwZWNzOiB7XG4gICAgaXNBcnJheTogdHJ1ZVxuICB9LFxuICBhbGxvd0RlbGF5QWRiOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH1cbn07XG5cbmxldCB1aWF1dG9tYXRvckNhcENvbnN0cmFpbnRzID0ge1xuICBpZ25vcmVVbmltcG9ydGFudFZpZXdzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGRpc2FibGVBbmRyb2lkV2F0Y2hlcnM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgYWNjZXB0U3NsQ2VydHM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgYW5kcm9pZE5hdHVyYWxPcmllbnRhdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBkaXNhYmxlV2luZG93QW5pbWF0aW9uOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGJvb3RzdHJhcFBvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxufTtcblxubGV0IGRlc2lyZWRDYXBDb25zdHJhaW50cyA9IHt9O1xuXG5PYmplY3QuYXNzaWduKGRlc2lyZWRDYXBDb25zdHJhaW50cywgY29tbW9uQ2FwQ29uc3RyYWludHMsXG4gICAgICAgICAgICAgIHVpYXV0b21hdG9yQ2FwQ29uc3RyYWludHMpO1xuXG5leHBvcnQgZGVmYXVsdCBkZXNpcmVkQ2FwQ29uc3RyYWludHM7XG5leHBvcnQgeyBjb21tb25DYXBDb25zdHJhaW50cyB9O1xuIl0sImZpbGUiOiJsaWIvZGVzaXJlZC1jYXBzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
301
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kZXNpcmVkLWNhcHMuanMiXSwibmFtZXMiOlsiY29tbW9uQ2FwQ29uc3RyYWludHMiLCJwbGF0Zm9ybU5hbWUiLCJpc1N0cmluZyIsImluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZSIsInByZXNlbmNlIiwiYXBwIiwiYXBwQWN0aXZpdHkiLCJhcHBQYWNrYWdlIiwiYXBwV2FpdEFjdGl2aXR5IiwiYXBwV2FpdFBhY2thZ2UiLCJhcHBXYWl0RHVyYXRpb24iLCJpc051bWJlciIsImRldmljZVJlYWR5VGltZW91dCIsImFuZHJvaWRDb3ZlcmFnZSIsImFuZHJvaWREZXZpY2VSZWFkeVRpbWVvdXQiLCJhbmRyb2lkRGV2aWNlU29ja2V0IiwiYW5kcm9pZEluc3RhbGxUaW1lb3V0IiwiYWRiUG9ydCIsInJlbW90ZUFkYkhvc3QiLCJhZGJFeGVjVGltZW91dCIsImF2ZCIsImF2ZExhdW5jaFRpbWVvdXQiLCJhdmRSZWFkeVRpbWVvdXQiLCJhdmRBcmdzIiwiYXZkRW52IiwiaXNPYmplY3QiLCJ1c2VLZXlzdG9yZSIsImlzQm9vbGVhbiIsImtleXN0b3JlUGF0aCIsImtleXN0b3JlUGFzc3dvcmQiLCJrZXlBbGlhcyIsImtleVBhc3N3b3JkIiwid2Vidmlld0RldnRvb2xzUG9ydCIsImVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzIiwiZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uIiwiY2hyb21lRHJpdmVyUG9ydCIsImNocm9tZWRyaXZlclBvcnQiLCJjaHJvbWVkcml2ZXJQb3J0cyIsImlzQXJyYXkiLCJjaHJvbWVkcml2ZXJBcmdzIiwiY2hyb21lZHJpdmVyRXhlY3V0YWJsZSIsImNocm9tZWRyaXZlckV4ZWN1dGFibGVEaXIiLCJjaHJvbWVkcml2ZXJDaHJvbWVNYXBwaW5nRmlsZSIsImNocm9tZWRyaXZlclVzZVN5c3RlbUV4ZWN1dGFibGUiLCJjaHJvbWVkcml2ZXJEaXNhYmxlQnVpbGRDaGVjayIsImNocm9tZUxvZ2dpbmdQcmVmcyIsImF1dG9XZWJ2aWV3VGltZW91dCIsImludGVudEFjdGlvbiIsImludGVudENhdGVnb3J5IiwiaW50ZW50RmxhZ3MiLCJvcHRpb25hbEludGVudEFyZ3VtZW50cyIsImRvbnRTdG9wQXBwT25SZXNldCIsInVuaWNvZGVLZXlib2FyZCIsInJlc2V0S2V5Ym9hcmQiLCJub1NpZ24iLCJyZWNyZWF0ZUNocm9tZURyaXZlclNlc3Npb25zIiwiYXV0b0xhdW5jaCIsIm5hdGl2ZVdlYlNjcmVlbnNob3QiLCJhbmRyb2lkU2NyZWVuc2hvdFBhdGgiLCJhbmRyb2lkSW5zdGFsbFBhdGgiLCJjbGVhclN5c3RlbUZpbGVzIiwiZXh0cmFjdENocm9tZUFuZHJvaWRQYWNrYWdlRnJvbUNvbnRleHROYW1lIiwiYXV0b0dyYW50UGVybWlzc2lvbnMiLCJzaGFyZWRQcmVmZXJlbmNlcyIsIm5ldHdvcmtTcGVlZCIsImdwc0VuYWJsZWQiLCJpc0hlYWRsZXNzIiwic2hvd0Nocm9tZWRyaXZlckxvZyIsInNraXBVbmxvY2siLCJjbGVhckRldmljZUxvZ3NPblN0YXJ0IiwidW5sb2NrVHlwZSIsInVubG9ja0tleSIsInVubG9ja1N0cmF0ZWd5Iiwib3RoZXJBcHBzIiwidW5pbnN0YWxsT3RoZXJQYWNrYWdlcyIsImFsbG93VGVzdFBhY2thZ2VzIiwicGFnZUxvYWRTdHJhdGVneSIsImxvY2FsZVNjcmlwdCIsInNraXBEZXZpY2VJbml0aWFsaXphdGlvbiIsInJlbW90ZUFwcHNDYWNoZUxpbWl0IiwiYnVpbGRUb29sc1ZlcnNpb24iLCJza2lwTG9nY2F0Q2FwdHVyZSIsImNocm9tZU9wdGlvbnMiLCJlbmFibGVQZXJmb3JtYW5jZUxvZ2dpbmciLCJ1c2VyUHJvZmlsZSIsImJyb3dzZXJOYW1lIiwiZW5mb3JjZUFwcEluc3RhbGwiLCJzdXBwcmVzc0tpbGxTZXJ2ZXIiLCJhbGxvd09mZmxpbmVEZXZpY2VzIiwiaWdub3JlSGlkZGVuQXBpUG9saWN5RXJyb3IiLCJ1bmxvY2tTdWNjZXNzVGltZW91dCIsIm1vY2tMb2NhdGlvbkFwcCIsImxvZ2NhdEZvcm1hdCIsImxvZ2NhdEZpbHRlclNwZWNzIiwiYWxsb3dEZWxheUFkYiIsInVpYXV0b21hdG9yQ2FwQ29uc3RyYWludHMiLCJpZ25vcmVVbmltcG9ydGFudFZpZXdzIiwiZGlzYWJsZUFuZHJvaWRXYXRjaGVycyIsImFjY2VwdFNzbENlcnRzIiwiYW5kcm9pZE5hdHVyYWxPcmllbnRhdGlvbiIsImRpc2FibGVXaW5kb3dBbmltYXRpb24iLCJib290c3RyYXBQb3J0IiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxJQUFJQSxvQkFBb0IsR0FBRztBQUN6QkMsRUFBQUEsWUFBWSxFQUFFO0FBQ1pDLElBQUFBLFFBQVEsRUFBRSxJQURFO0FBRVpDLElBQUFBLHdCQUF3QixFQUFFLENBQUMsU0FBRCxDQUZkO0FBR1pDLElBQUFBLFFBQVEsRUFBRTtBQUhFLEdBRFc7QUFNekJDLEVBQUFBLEdBQUcsRUFBRTtBQUNISCxJQUFBQSxRQUFRLEVBQUU7QUFEUCxHQU5vQjtBQVN6QkksRUFBQUEsV0FBVyxFQUFFO0FBQ1hKLElBQUFBLFFBQVEsRUFBRTtBQURDLEdBVFk7QUFZekJLLEVBQUFBLFVBQVUsRUFBRTtBQUNWTCxJQUFBQSxRQUFRLEVBQUU7QUFEQSxHQVphO0FBZXpCTSxFQUFBQSxlQUFlLEVBQUU7QUFDZk4sSUFBQUEsUUFBUSxFQUFFO0FBREssR0FmUTtBQWtCekJPLEVBQUFBLGNBQWMsRUFBRTtBQUNkUCxJQUFBQSxRQUFRLEVBQUU7QUFESSxHQWxCUztBQXFCekJRLEVBQUFBLGVBQWUsRUFBRTtBQUNmQyxJQUFBQSxRQUFRLEVBQUU7QUFESyxHQXJCUTtBQXdCekJDLEVBQUFBLGtCQUFrQixFQUFFO0FBQ2xCRCxJQUFBQSxRQUFRLEVBQUU7QUFEUSxHQXhCSztBQTJCekJFLEVBQUFBLGVBQWUsRUFBRTtBQUNmWCxJQUFBQSxRQUFRLEVBQUU7QUFESyxHQTNCUTtBQThCekJZLEVBQUFBLHlCQUF5QixFQUFFO0FB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RTtBQUNmekYsSUFBQUEsUUFBUSxFQUFFO0FBREssR0EvUFE7QUFrUXpCMEYsRUFBQUEsWUFBWSxFQUFFO0FBQ1oxRixJQUFBQSxRQUFRLEVBQUU7QUFERSxHQWxRVztBQXFRekIyRixFQUFBQSxpQkFBaUIsRUFBRTtBQUNqQnZELElBQUFBLE9BQU8sRUFBRTtBQURRLEdBclFNO0FBd1F6QndELEVBQUFBLGFBQWEsRUFBRTtBQUNibkUsSUFBQUEsU0FBUyxFQUFFO0FBREU7QUF4UVUsQ0FBM0I7O0FBNlFBLElBQUlvRSx5QkFBeUIsR0FBRztBQUM5QkMsRUFBQUEsc0JBQXNCLEVBQUU7QUFDdEJyRSxJQUFBQSxTQUFTLEVBQUU7QUFEVyxHQURNO0FBSTlCc0UsRUFBQUEsc0JBQXNCLEVBQUU7QUFDdEJ0RSxJQUFBQSxTQUFTLEVBQUU7QUFEVyxHQUpNO0FBTzlCdUUsRUFBQUEsY0FBYyxFQUFFO0FBQ2R2RSxJQUFBQSxTQUFTLEVBQUU7QUFERyxHQVBjO0FBVTlCd0UsRUFBQUEseUJBQXlCLEVBQUU7QUFDekJ4RSxJQUFBQSxTQUFTLEVBQUU7QUFEYyxHQVZHO0FBYTlCeUUsRUFBQUEsc0JBQXNCLEVBQUU7QUFDdEJ6RSxJQUFBQSxTQUFTLEVBQUU7QUFEVyxHQWJNO0FBZ0I5QjBFLEVBQUFBLGFBQWEsRUFBRTtBQUNiMUYsSUFBQUEsUUFBUSxFQUFFO0FBREc7QUFoQmUsQ0FBaEM7QUFxQkEsSUFBSTJGLHFCQUFxQixHQUFHLEVBQTVCO0FBRUFDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjRixxQkFBZCxFQUFxQ3RHLG9CQUFyQyxFQUNjK0YseUJBRGQ7ZUFHZU8scUIiLCJzb3VyY2VzQ29udGVudCI6WyJsZXQgY29tbW9uQ2FwQ29uc3RyYWludHMgPSB7XG4gIHBsYXRmb3JtTmFtZToge1xuICAgIGlzU3RyaW5nOiB0cnVlLFxuICAgIGluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZTogWydBbmRyb2lkJ10sXG4gICAgcHJlc2VuY2U6IHRydWVcbiAgfSxcbiAgYXBwOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXBwQWN0aXZpdHk6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhcHBQYWNrYWdlOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXBwV2FpdEFjdGl2aXR5OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXBwV2FpdFBhY2thZ2U6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhcHBXYWl0RHVyYXRpb246IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBkZXZpY2VSZWFkeVRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBhbmRyb2lkQ292ZXJhZ2U6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhbmRyb2lkRGV2aWNlUmVhZHlUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYW5kcm9pZERldmljZVNvY2tldDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFuZHJvaWRJbnN0YWxsVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGFkYlBvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICByZW1vdGVBZGJIb3N0OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYWRiRXhlY1RpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBhdmQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhdmRMYXVuY2hUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYXZkUmVhZHlUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYXZkQXJnczoge1xuICAgIC8vIGNvdWxkIGJlIGEgc3RyaW5nIG9yIGFuIGFycmF5XG4gIH0sXG4gIGF2ZEVudjoge1xuICAgIGlzT2JqZWN0OiB0cnVlXG4gIH0sXG4gIHVzZUtleXN0b3JlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGtleXN0b3JlUGF0aDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGtleXN0b3JlUGFzc3dvcmQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBrZXlBbGlhczoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGtleVBhc3N3b3JkOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgd2Vidmlld0RldnRvb2xzUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICAvLyB0aGlzIG9uZSBpcyBkZXByZWNhdGVkXG4gIGNocm9tZURyaXZlclBvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICAvLyBkdXBsaWNhdGUgb2YgYWJvdmUgd2l0aCBiZXR0ZXIgc3BlbGxpbmdcbiAgY2hyb21lZHJpdmVyUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGNocm9tZWRyaXZlclBvcnRzOiB7XG4gICAgaXNBcnJheTogdHJ1ZVxuICB9LFxuICBjaHJvbWVkcml2ZXJBcmdzOiB7XG4gICAgaXNPYmplY3Q6IHRydWUsXG4gIH0sXG4gIGNocm9tZWRyaXZlckV4ZWN1dGFibGU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBjaHJvbWVkcml2ZXJFeGVjdXRhYmxlRGlyOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgY2hyb21lZHJpdmVyQ2hyb21lTWFwcGluZ0ZpbGU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBjaHJvbWVkcml2ZXJVc2VTeXN0ZW1FeGVjdXRhYmxlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGNocm9tZWRyaXZlckRpc2FibGVCdWlsZENoZWNrOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGNocm9tZUxvZ2dpbmdQcmVmczoge1xuICAgIGlzT2JqZWN0OiB0cnVlXG4gIH0sXG4gIGF1dG9XZWJ2aWV3VGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGludGVudEFjdGlvbjoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGludGVudENhdGVnb3J5OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgaW50ZW50RmxhZ3M6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBvcHRpb25hbEludGVudEFyZ3VtZW50czoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGRvbnRTdG9wQXBwT25SZXNldDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB1bmljb2RlS2V5Ym9hcmQ6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgcmVzZXRLZXlib2FyZDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBub1NpZ246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgcmVjcmVhdGVDaHJvbWVEcml2ZXJTZXNzaW9uczoge1xuICAgIGlzQm9vbGVhbjogZmFsc2VcbiAgfSxcbiAgYXV0b0xhdW5jaDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBuYXRpdmVXZWJTY3JlZW5zaG90OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGFuZHJvaWRTY3JlZW5zaG90UGF0aDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFuZHJvaWRJbnN0YWxsUGF0aDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGNsZWFyU3lzdGVtRmlsZXM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZXh0cmFjdENocm9tZUFuZHJvaWRQYWNrYWdlRnJvbUNvbnRleHROYW1lOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGF1dG9HcmFudFBlcm1pc3Npb25zOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNoYXJlZFByZWZlcmVuY2VzOiB7XG4gICAgaXNPYmplY3Q6IHRydWVcbiAgfSxcbiAgbmV0d29ya1NwZWVkOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgZ3BzRW5hYmxlZDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBpc0hlYWRsZXNzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNob3dDaHJvbWVkcml2ZXJMb2c6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2tpcFVubG9jazoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBjbGVhckRldmljZUxvZ3NPblN0YXJ0OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHVubG9ja1R5cGU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICB1bmxvY2tLZXk6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICB1bmxvY2tTdHJhdGVneToge1xuICAgIGlzU3RyaW5nOiB0cnVlLFxuICAgIGluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZTogWydsb2Nrc2V0dGluZ3MnLCAndWlhdXRvbWF0b3InXSxcbiAgfSxcbiAgb3RoZXJBcHBzOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgdW5pbnN0YWxsT3RoZXJQYWNrYWdlczoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGFsbG93VGVzdFBhY2thZ2VzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHBhZ2VMb2FkU3RyYXRlZ3k6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBsb2NhbGVTY3JpcHQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBza2lwRGV2aWNlSW5pdGlhbGl6YXRpb246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgcmVtb3RlQXBwc0NhY2hlTGltaXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBidWlsZFRvb2xzVmVyc2lvbjoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHNraXBMb2djYXRDYXB0dXJlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGNocm9tZU9wdGlvbnM6IHtcbiAgICBpc09iamVjdDogdHJ1ZVxuICB9LFxuICBlbmFibGVQZXJmb3JtYW5jZUxvZ2dpbmc6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdXNlclByb2ZpbGU6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBicm93c2VyTmFtZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGVuZm9yY2VBcHBJbnN0YWxsOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHN1cHByZXNzS2lsbFNlcnZlcjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhbGxvd09mZmxpbmVEZXZpY2VzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHVubG9ja1N1Y2Nlc3NUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgbW9ja0xvY2F0aW9uQXBwOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgbG9nY2F0Rm9ybWF0OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgbG9nY2F0RmlsdGVyU3BlY3M6IHtcbiAgICBpc0FycmF5OiB0cnVlXG4gIH0sXG4gIGFsbG93RGVsYXlBZGI6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfVxufTtcblxubGV0IHVpYXV0b21hdG9yQ2FwQ29uc3RyYWludHMgPSB7XG4gIGlnbm9yZVVuaW1wb3J0YW50Vmlld3M6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgZGlzYWJsZUFuZHJvaWRXYXRjaGVyczoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhY2NlcHRTc2xDZXJ0czoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhbmRyb2lkTmF0dXJhbE9yaWVudGF0aW9uOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGRpc2FibGVXaW5kb3dBbmltYXRpb246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgYm9vdHN0cmFwUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG59O1xuXG5sZXQgZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge307XG5cbk9iamVjdC5hc3NpZ24oZGVzaXJlZENhcENvbnN0cmFpbnRzLCBjb21tb25DYXBDb25zdHJhaW50cyxcbiAgICAgICAgICAgICAgdWlhdXRvbWF0b3JDYXBDb25zdHJhaW50cyk7XG5cbmV4cG9ydCBkZWZhdWx0IGRlc2lyZWRDYXBDb25zdHJhaW50cztcbmV4cG9ydCB7IGNvbW1vbkNhcENvbnN0cmFpbnRzIH07XG4iXSwiZmlsZSI6ImxpYi9kZXNpcmVkLWNhcHMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
@@ -408,12 +408,16 @@ helpers.createChromedriverCaps = function createChromedriverCaps(opts, deviceId,
408
408
 
409
409
  caps.chromeOptions.androidDeviceSerial = deviceId;
410
410
 
411
- if (opts.loggingPrefs) {
412
- caps.loggingPrefs = opts.loggingPrefs;
411
+ if (_lodash.default.isPlainObject(opts.loggingPrefs) || _lodash.default.isPlainObject(opts.chromeLoggingPrefs)) {
412
+ if (opts.loggingPrefs) {
413
+ _logger.default.warn(`The 'loggingPrefs' cap is deprecated; use the 'chromeLoggingPrefs' cap instead`);
414
+ }
415
+
416
+ caps.loggingPrefs = opts.chromeLoggingPrefs || opts.loggingPrefs;
413
417
  }
414
418
 
415
419
  if (opts.enablePerformanceLogging) {
416
- _logger.default.warn(`The 'enablePerformanceLogging' cap is deprecated; simply use ` + `the 'loggingPrefs' cap instead, with a 'performance' key set to 'ALL'`);
420
+ _logger.default.warn(`The 'enablePerformanceLogging' cap is deprecated; simply use ` + `the 'chromeLoggingPrefs' cap instead, with a 'performance' key set to 'ALL'`);
417
421
 
418
422
  const newPref = {
419
423
  performance: 'ALL'
@@ -453,4 +457,4 @@ var _default = helpers;
453
457
  exports.default = _default;require('source-map-support').install();
454
458
 
455
459
 
456
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi93ZWJ2aWV3LWhlbHBlcnMuanMiXSwibmFtZXMiOlsiTkFUSVZFX1dJTiIsIldFQlZJRVdfV0lOIiwiQ0hST01JVU1fV0lOIiwiV0VCVklFV19CQVNFIiwiV0VCVklFV19QSURfUEFUVEVSTiIsIlJlZ0V4cCIsIldFQlZJRVdfUEtHX1BBVFRFUk4iLCJERVZUT09MU19TT0NLRVRfUEFUVEVSTiIsIkNST1NTV0FMS19TT0NLRVRfUEFUVEVSTiIsIkNIUk9NSVVNX0RFVlRPT0xTX1NPQ0tFVCIsIkNIUk9NRV9QQUNLQUdFX05BTUUiLCJLTk9XTl9DSFJPTUVfUEFDS0FHRV9OQU1FUyIsIkRFVlRPT0xTX1BPUlRTX1JBTkdFIiwiV0VCVklFV1NfREVUQUlMU19DQUNIRSIsIkxSVSIsIm1heCIsInVwZGF0ZUFnZU9uR2V0IiwiQ0RQX1JFUV9USU1FT1VUIiwiREVWVE9PTFNfUE9SVF9BTExPQ0FUSU9OX0dVQVJEIiwidXRpbCIsImdldExvY2tGaWxlR3VhcmQiLCJwYXRoIiwicmVzb2x2ZSIsIm9zIiwidG1wZGlyIiwidGltZW91dCIsInRyeVJlY292ZXJ5IiwiaGVscGVycyIsInRvRGV0YWlsc0NhY2hlS2V5IiwiYWRiIiwid2VidmlldyIsImN1ckRldmljZUlkIiwiZ2V0UG90ZW50aWFsV2Vidmlld1Byb2NzIiwib3V0Iiwic2hlbGwiLCJuYW1lcyIsImFsbE1hdGNoZXMiLCJsaW5lIiwic3BsaXQiLCJmbGFncyIsInN0Iiwic29ja1BhdGgiLCJ0cmltIiwic3RhcnRzV2l0aCIsInB1c2giLCJ0ZXN0IiwiXyIsImlzRW1wdHkiLCJsb2dnZXIiLCJkZWJ1ZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJsZW5ndGgiLCJwbHVyYWxpemUiLCJ1bmlxIiwid2Vidmlld3NGcm9tUHJvY3MiLCJkZXZpY2VTb2NrZXQiLCJzb2NrZXROYW1lcyIsIndlYnZpZXdzIiwic29ja2V0TmFtZSIsInByb2MiLCJzb2NrZXROYW1lTWF0Y2giLCJleGVjIiwiY3Jvc3N3YWxrTWF0Y2giLCJhbGxvY2F0ZURldnRvb2xzUG9ydCIsIndlYnZpZXdEZXZ0b29sc1BvcnQiLCJyZW1vdGVQb3J0IiwicmVwbGFjZSIsInN0YXJ0UG9ydCIsImVuZFBvcnQiLCJsb2NhbFBvcnQiLCJlIiwiRXJyb3IiLCJhZGJFeGVjIiwiY29sbGVjdFdlYnZpZXdzRGV0YWlscyIsIndlYnZpZXdzTWFwcGluZyIsIm9wdHMiLCJlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyIsImVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiIsImluZm8iLCJkZXRhaWxDb2xsZWN0b3JzIiwiaXRlbSIsImNkcEluZm8iLCJwYWdlcyIsImNkcExpc3QiLCJyZW1vdmVQb3J0Rm9yd2FyZCIsIkIiLCJhbGwiLCJ1cmwiLCJkYXRhIiwicHJvY0Zyb21XZWJ2aWV3IiwicGlkTWF0Y2giLCJwaWQiLCJwa2ciLCJnZXROYW1lQnlQaWQiLCJwYXJzZVdlYnZpZXdOYW1lcyIsImlzQ2hyb21lU2Vzc2lvbiIsInJlc3VsdCIsIndlYnZpZXdOYW1lIiwiZ2V0V2ViVmlld3NNYXBwaW5nIiwiYW5kcm9pZERldmljZVNvY2tldCIsIndlYnZpZXdNYXBwaW5nIiwid3ZOYW1lIiwicHJvY2VzcyIsInVuZGVmaW5lZCIsInBrZ01hdGNoIiwibmFtZSIsImlkIiwid2FybiIsIm1lc3NhZ2UiLCJrZXkiLCJzZXQiLCJoYXMiLCJkZWwiLCJnZXRXZWJ2aWV3RGV0YWlscyIsImdldCIsImNyZWF0ZUNocm9tZWRyaXZlckNhcHMiLCJkZXZpY2VJZCIsIndlYlZpZXdEZXRhaWxzIiwiY2FwcyIsImNocm9tZU9wdGlvbnMiLCJhbmRyb2lkUGFja2FnZSIsImFwcFBhY2thZ2UiLCJpc0Jvb2xlYW4iLCJjaHJvbWVVc2VSdW5uaW5nQXBwIiwiYW5kcm9pZFVzZVJ1bm5pbmdBcHAiLCJjaHJvbWVBbmRyb2lkUGFja2FnZSIsImNocm9tZUFuZHJvaWRBY3Rpdml0eSIsImFuZHJvaWRBY3Rpdml0eSIsImNocm9tZUFuZHJvaWRQcm9jZXNzIiwiYW5kcm9pZFByb2Nlc3MiLCJ0b0xvd2VyIiwiYnJvd3Nlck5hbWUiLCJhcHBBY3Rpdml0eSIsInBhZ2VMb2FkU3RyYXRlZ3kiLCJpc0Nocm9tZSIsImluY2x1ZGVzIiwiYW5kcm9pZERldmljZVNlcmlhbCIsImxvZ2dpbmdQcmVmcyIsImVuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZyIsIm5ld1ByZWYiLCJwZXJmb3JtYW5jZSIsIk9iamVjdCIsImFzc2lnbiIsIkFyZ3VtZW50cyIsImFyZ3MiLCJwcm90ZWN0ZWRDYXBOYW1lcyIsIm9wdCIsInZhbCIsInRvUGFpcnMiLCJpc1VuZGVmaW5lZCIsIm9wdE5hbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLFlBQW5COztBQUNBLE1BQU1DLFdBQVcsR0FBRyxTQUFwQjs7QUFDQSxNQUFNQyxZQUFZLEdBQUcsVUFBckI7O0FBQ0EsTUFBTUMsWUFBWSxHQUFJLEdBQUVGLFdBQVksR0FBcEM7O0FBQ0EsTUFBTUcsbUJBQW1CLEdBQUcsSUFBSUMsTUFBSixDQUFZLElBQUdGLFlBQWEsUUFBNUIsQ0FBNUI7QUFDQSxNQUFNRyxtQkFBbUIsR0FBRyxJQUFJRCxNQUFKLENBQVksSUFBR0YsWUFBYSxvQkFBNUIsQ0FBNUI7QUFDQSxNQUFNSSx1QkFBdUIsR0FBRyxtQ0FBaEM7QUFDQSxNQUFNQyx3QkFBd0IsR0FBRyw2QkFBakM7QUFDQSxNQUFNQyx3QkFBd0IsR0FBRyx3QkFBakM7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxvQkFBNUI7QUFDQSxNQUFNQywwQkFBMEIsR0FBRyxDQUNqQ0QsbUJBRGlDLEVBRWpDLGlCQUZpQyxFQUdqQyxnQkFIaUMsRUFJakMsbUJBSmlDLENBQW5DOztBQU1BLE1BQU1FLG9CQUFvQixHQUFHLENBQUMsS0FBRCxFQUFRLEtBQVIsQ0FBN0I7QUFDQSxNQUFNQyxzQkFBc0IsR0FBRyxJQUFJQyxpQkFBSixDQUFRO0FBQ3JD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Q0QsTUFBSSxDQUFDckcsZ0JBQUVDLE9BQUYsQ0FBVW1HLGlCQUFWLENBQUwsRUFBbUM7QUFDakNsRyxvQkFBTytCLElBQVAsQ0FBWSxrRUFDVixnQ0FERjs7QUFFQSxTQUFLLE1BQU13RSxPQUFYLElBQXNCTCxpQkFBdEIsRUFBeUM7QUFDdkNsRyxzQkFBTytCLElBQVAsQ0FBYSxLQUFJd0UsT0FBUSxLQUFJckcsSUFBSSxDQUFDQyxTQUFMLENBQWV5QixJQUFJLENBQUM0QyxhQUFMLENBQW1CK0IsT0FBbkIsQ0FBZixDQUE0QyxHQUF6RTtBQUNEO0FBQ0Y7O0FBRUQsU0FBT2hDLElBQVA7QUFDRCxDQWpGRDs7ZUFtRmU1RixPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IHV0aWwgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgeyBmaW5kQVBvcnROb3RJblVzZSB9IGZyb20gJ3BvcnRzY2FubmVyJztcbmltcG9ydCBMUlUgZnJvbSAnbHJ1LWNhY2hlJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IG9zIGZyb20gJ29zJztcblxuY29uc3QgTkFUSVZFX1dJTiA9ICdOQVRJVkVfQVBQJztcbmNvbnN0IFdFQlZJRVdfV0lOID0gJ1dFQlZJRVcnO1xuY29uc3QgQ0hST01JVU1fV0lOID0gJ0NIUk9NSVVNJztcbmNvbnN0IFdFQlZJRVdfQkFTRSA9IGAke1dFQlZJRVdfV0lOfV9gO1xuY29uc3QgV0VCVklFV19QSURfUEFUVEVSTiA9IG5ldyBSZWdFeHAoYF4ke1dFQlZJRVdfQkFTRX0oXFxcXGQrKWApO1xuY29uc3QgV0VCVklFV19QS0dfUEFUVEVSTiA9IG5ldyBSZWdFeHAoYF4ke1dFQlZJRVdfQkFTRX0oW15cXFxcZFxcXFxzXVtcXFxcdy5dKilgKTtcbmNvbnN0IERFVlRPT0xTX1NPQ0tFVF9QQVRURVJOID0gL0BbXFx3Ll0rX2RldnRvb2xzX3JlbW90ZV8/KFxcZCspP1xcYi87XG5jb25zdCBDUk9TU1dBTEtfU09DS0VUX1BBVFRFUk4gPSAvQChbXFx3Ll0rKV9kZXZ0b29sc19yZW1vdGVcXGIvO1xuY29uc3QgQ0hST01JVU1fREVWVE9PTFNfU09DS0VUID0gJ2Nocm9tZV9kZXZ0b29sc19yZW1vdGUnO1xuY29uc3QgQ0hST01FX1BBQ0tBR0VfTkFNRSA9ICdjb20uYW5kcm9pZC5jaHJvbWUnO1xuY29uc3QgS05PV05fQ0hST01FX1BBQ0tBR0VfTkFNRVMgPSBbXG4gIENIUk9NRV9QQUNLQUdFX05BTUUsXG4gICdjb20uY2hyb21lLmJldGEnLFxuICAnY29tLmNocm9tZS5kZXYnLFxuICAnY29tLmNocm9tZS5jYW5hcnknLFxuXTtcbmNvbnN0IERFVlRPT0xTX1BPUlRTX1JBTkdFID0gWzEwOTAwLCAxMTAwMF07XG5jb25zdCBXRUJWSUVXU19ERVRBSUxTX0NBQ0hFID0gbmV3IExSVSh7XG4gIG1heDogMTAwLFxuICB1cGRhdGVBZ2VPbkdldDogdHJ1ZSxcbn0pO1xuY29uc3QgQ0RQX1JFUV9USU1FT1VUID0gMjAwMDsgLy8gbXNcbmNvbnN0IERFVlRPT0xTX1BPUlRfQUxMT0NBVElPTl9HVUFSRCA9IHV0aWwuZ2V0TG9ja0ZpbGVHdWFyZChcbiAgcGF0aC5yZXNvbHZlKG9zLnRtcGRpcigpLCAnYW5kcm9pZF9kZXZ0b29sc19wb3J0X2d1YXJkJyksXG4gIHt0aW1lb3V0OiA3LCB0cnlSZWNvdmVyeTogdHJ1ZX1cbik7XG5cbmNvbnN0IGhlbHBlcnMgPSB7fTtcblxuZnVuY3Rpb24gdG9EZXRhaWxzQ2FjaGVLZXkgKGFkYiwgd2Vidmlldykge1xuICByZXR1cm4gYCR7YWRiPy5jdXJEZXZpY2VJZH06JHt3ZWJ2aWV3fWA7XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBnZXRzIGEgbGlzdCBvZiBhbmRyb2lkIHN5c3RlbSBwcm9jZXNzZXMgYW5kIHJldHVybnMgb25lc1xuICogdGhhdCBsb29rIGxpa2Ugd2Vidmlld3NcbiAqIFNlZSBodHRwczovL2NzLmNocm9taXVtLm9yZy9jaHJvbWl1bS9zcmMvY2hyb21lL2Jyb3dzZXIvZGV2dG9vbHMvZGV2aWNlL2FuZHJvaWRfZGV2aWNlX2luZm9fcXVlcnkuY2NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gYWRiIC0gYW4gQURCIGluc3RhbmNlXG4gKlxuICogQHJldHVybiB7QXJyYXkuPHN0cmluZz59IC0gYSBsaXN0IG9mIG1hdGNoaW5nIHdlYnZpZXcgc29ja2V0IG5hbWVzIChpbmNsdWRpbmcgdGhlIGxlYWRpbmcgJ0AnKVxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRQb3RlbnRpYWxXZWJ2aWV3UHJvY3MgKGFkYikge1xuICBjb25zdCBvdXQgPSBhd2FpdCBhZGIuc2hlbGwoWydjYXQnLCAnL3Byb2MvbmV0L3VuaXgnXSk7XG4gIGNvbnN0IG5hbWVzID0gW107XG4gIGNvbnN0IGFsbE1hdGNoZXMgPSBbXTtcbiAgZm9yIChjb25zdCBsaW5lIG9mIG91dC5zcGxpdCgnXFxuJykpIHtcbiAgICAvLyBOdW0gUmVmQ291bnQgUHJvdG9jb2wgRmxhZ3MgVHlwZSBTdCBJbm9kZSBQYXRoXG4gICAgY29uc3QgWywsLCBmbGFncywsIHN0LCwgc29ja1BhdGhdID0gbGluZS50cmltKCkuc3BsaXQoL1xccysvKTtcbiAgICBpZiAoIXNvY2tQYXRoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHNvY2tQYXRoLnN0YXJ0c1dpdGgoJ0AnKSkge1xuICAgICAgYWxsTWF0Y2hlcy5wdXNoKGxpbmUudHJpbSgpKTtcbiAgICB9XG4gICAgaWYgKGZsYWdzICE9PSAnMDAwMTAwMDAnIHx8IHN0ICE9PSAnMDEnKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKCFERVZUT09MU19TT0NLRVRfUEFUVEVSTi50ZXN0KHNvY2tQYXRoKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbmFtZXMucHVzaChzb2NrUGF0aCk7XG4gIH1cbiAgaWYgKF8uaXNFbXB0eShuYW1lcykpIHtcbiAgICBsb2dnZXIuZGVidWcoJ0ZvdW5kIG5vIGFjdGl2ZSBkZXZ0b29scyBzb2NrZXRzJyk7XG4gICAgaWYgKCFfLmlzRW1wdHkoYWxsTWF0Y2hlcykpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhgT3RoZXIgc29ja2V0cyBhcmU6ICR7SlNPTi5zdHJpbmdpZnkoYWxsTWF0Y2hlcywgbnVsbCwgMil9YCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxvZ2dlci5kZWJ1ZyhgUGFyc2VkICR7bmFtZXMubGVuZ3RofSBhY3RpdmUgZGV2dG9vbHMgJHt1dGlsLnBsdXJhbGl6ZSgnc29ja2V0JywgbmFtZXMubGVuZ3RoLCBmYWxzZSl9OiBgICtcbiAgICAgIEpTT04uc3RyaW5naWZ5KG5hbWVzKSk7XG4gIH1cbiAgLy8gc29tZXRpbWVzIHRoZSB3ZWJ2aWV3IHByb2Nlc3Mgc2hvd3MgdXAgbXVsdGlwbGUgdGltZXMgcGVyIGFwcFxuICByZXR1cm4gXy51bmlxKG5hbWVzKTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXZWJ2aWV3UHJvY1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHByb2MgLSBUaGUgd2VidmlldyBwcm9jZXNzIG5hbWUgKGFzIHJldHVybmVkIGJ5XG4gKiBnZXRQb3RlbnRpYWxXZWJ2aWV3UHJvY3NcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB3ZWJ2aWV3IC0gVGhlIGFjdHVhbCB3ZWJ2aWV3IGNvbnRleHQgbmFtZVxuICovXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gcmV0cmlldmVzIGEgbGlzdCBvZiBzeXN0ZW0gcHJvY2Vzc2VzIHRoYXQgbG9vayBsaWtlIHdlYnZpZXdzLFxuICogYW5kIHJldHVybnMgdGhlbSBhbG9uZyB3aXRoIHRoZSB3ZWJ2aWV3IGNvbnRleHQgbmFtZSBhcHByb3ByaWF0ZSBmb3IgaXQuXG4gKiBJZiB3ZSBwYXNzIGluIGEgZGV2aWNlU29ja2V0LCB3ZSBvbmx5IGF0dGVtcHQgdG8gZmluZCB3ZWJ2aWV3cyB3aGljaCBtYXRjaFxuICogdGhhdCBzb2NrZXQgbmFtZSAodGhpcyBpcyBmb3IgYXBwcyB3aGljaCBlbWJlZCBDaHJvbWl1bSwgd2hpY2ggaXNuJ3QgdGhlXG4gKiBzYW1lIGFzIGNocm9tZS1iYWNrZWQgd2Vidmlld3MpLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBhZGIgLSBhbiBBREIgaW5zdGFuY2VcbiAqIEBwYXJhbSB7P3N0cmluZ30gZGV2aWNlU29ja2V0IC0gdGhlIGV4cGxpY3RseS1uYW1lZCBkZXZpY2Ugc29ja2V0IHRvIHVzZVxuICpcbiAqIEByZXR1cm4ge0FycmF5LjxXZWJ2aWV3UHJvYz59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHdlYnZpZXdzRnJvbVByb2NzIChhZGIsIGRldmljZVNvY2tldCA9IG51bGwpIHtcbiAgY29uc3Qgc29ja2V0TmFtZXMgPSBhd2FpdCBnZXRQb3RlbnRpYWxXZWJ2aWV3UHJvY3MoYWRiKTtcbiAgY29uc3Qgd2Vidmlld3MgPSBbXTtcbiAgZm9yIChjb25zdCBzb2NrZXROYW1lIG9mIHNvY2tldE5hbWVzKSB7XG4gICAgaWYgKGRldmljZVNvY2tldCA9PT0gQ0hST01JVU1fREVWVE9PTFNfU09DS0VUICYmIHNvY2tldE5hbWUgPT09IGBAJHtkZXZpY2VTb2NrZXR9YCkge1xuICAgICAgd2Vidmlld3MucHVzaCh7XG4gICAgICAgIHByb2M6IHNvY2tldE5hbWUsXG4gICAgICAgIHdlYnZpZXc6IENIUk9NSVVNX1dJTixcbiAgICAgIH0pO1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3Qgc29ja2V0TmFtZU1hdGNoID0gREVWVE9PTFNfU09DS0VUX1BBVFRFUk4uZXhlYyhzb2NrZXROYW1lKTtcbiAgICBpZiAoIXNvY2tldE5hbWVNYXRjaCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGNyb3Nzd2Fsa01hdGNoID0gQ1JPU1NXQUxLX1NPQ0tFVF9QQVRURVJOLmV4ZWMoc29ja2V0TmFtZSk7XG4gICAgaWYgKCFzb2NrZXROYW1lTWF0Y2hbMV0gJiYgIWNyb3Nzd2Fsa01hdGNoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoZGV2aWNlU29ja2V0ICYmIHNvY2tldE5hbWUgPT09IGBAJHtkZXZpY2VTb2NrZXR9YCB8fCAhZGV2aWNlU29ja2V0KSB7XG4gICAgICB3ZWJ2aWV3cy5wdXNoKHtcbiAgICAgICAgcHJvYzogc29ja2V0TmFtZSxcbiAgICAgICAgd2Vidmlldzogc29ja2V0TmFtZU1hdGNoWzFdXG4gICAgICAgICAgPyBgJHtXRUJWSUVXX0JBU0V9JHtzb2NrZXROYW1lTWF0Y2hbMV19YFxuICAgICAgICAgIDogYCR7V0VCVklFV19CQVNFfSR7Y3Jvc3N3YWxrTWF0Y2hbMV19YCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gd2Vidmlld3M7XG59XG5cbi8qKlxuICogQWxsb2NhdGVzIGEgbG9jYWwgcG9ydCBmb3IgZGV2dG9vbHMgY29tbXVuaWNhdGlvblxuICpcbiAqIEBwYXJhbSB7QURCfSBhZGIgQURCIGluc3RhbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30gc29ja2V0TmFtZSBUaGUgcmVtb3RlIFVuaXggc29ja2V0IG5hbWVcbiAqIEBwYXJhbSB7P251bWJlcn0gd2Vidmlld0RldnRvb2xzUG9ydCBUaGUgbG9jYWwgcG9ydCBudW1iZXIgb3IgbnVsbCB0byBhcHBseVxuICogYXV0b2RldGVjdGlvblxuICogQHJldHVybnMge251bWJlcn0gVGhlIGxvY2FsIHBvcnQgbnVtYmVyIGlmIHRoZSByZW1vdGUgc29ja2V0IGhhcyBiZWVuIGZvcndhcmRlZFxuICogc3VjY2Vzc2Z1bGx5IG9yIGBudWxsYCBvdGhlcndpc2VcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgYWxsb2NhdGluZyB0aGUgbG9jYWwgcG9ydFxuICovXG5hc3luYyBmdW5jdGlvbiBhbGxvY2F0ZURldnRvb2xzUG9ydCAoYWRiLCBzb2NrZXROYW1lLCB3ZWJ2aWV3RGV2dG9vbHNQb3J0ID0gbnVsbCkge1xuICAvLyBzb2NrZXQgbmFtZXMgY29tZSB3aXRoICdAJywgYnV0IHRoaXMgc2hvdWxkIG5vdCBiZSBhIHBhcnQgb2YgdGhlIGFic3RyYWN0XG4gIC8vIHJlbW90ZSBwb3J0LCBzbyByZW1vdmUgaXRcbiAgY29uc3QgcmVtb3RlUG9ydCA9IHNvY2tldE5hbWUucmVwbGFjZSgvXkAvLCAnJyk7XG4gIGxldCBbc3RhcnRQb3J0LCBlbmRQb3J0XSA9IERFVlRPT0xTX1BPUlRTX1JBTkdFO1xuICBpZiAod2Vidmlld0RldnRvb2xzUG9ydCkge1xuICAgIGVuZFBvcnQgPSB3ZWJ2aWV3RGV2dG9vbHNQb3J0ICsgKGVuZFBvcnQgLSBzdGFydFBvcnQpO1xuICAgIHN0YXJ0UG9ydCA9IHdlYnZpZXdEZXZ0b29sc1BvcnQ7XG4gIH1cbiAgbG9nZ2VyLmRlYnVnKGBGb3J3YXJkaW5nIHJlbW90ZSBwb3J0ICR7cmVtb3RlUG9ydH0gdG8gYSBsb2NhbCBgICtcbiAgICBgcG9ydCBpbiByYW5nZSAke3N0YXJ0UG9ydH0uLiR7ZW5kUG9ydH1gKTtcbiAgaWYgKCF3ZWJ2aWV3RGV2dG9vbHNQb3J0KSB7XG4gICAgbG9nZ2VyLmRlYnVnKGBZb3UgY291bGQgdXNlIHRoZSAnd2Vidmlld0RldnRvb2xzUG9ydCcgY2FwYWJpbGl0eSB0byBjdXN0b21pemUgYCArXG4gICAgICBgdGhlIHN0YXJ0aW5nIHBvcnQgbnVtYmVyYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IERFVlRPT0xTX1BPUlRfQUxMT0NBVElPTl9HVUFSRChhc3luYyAoKSA9PiB7XG4gICAgbGV0IGxvY2FsUG9ydDtcbiAgICB0cnkge1xuICAgICAgbG9jYWxQb3J0ID0gYXdhaXQgZmluZEFQb3J0Tm90SW5Vc2Uoc3RhcnRQb3J0LCBlbmRQb3J0KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIGFueSBmcmVlIHBvcnQgdG8gZm9yd2FyZCB0aGUgRGV2dG9vbHMgc29ja2V0IGAgK1xuICAgICAgICBgaW4gcmFuZ2UgJHtzdGFydFBvcnR9Li4ke2VuZFBvcnR9LiBZb3UgY291bGQgc2V0IHRoZSBzdGFydGluZyBwb3J0IG51bWJlciBgICtcbiAgICAgICAgYG1hbnVhbGx5IGJ5IHByb3ZpZGluZyB0aGUgJ3dlYnZpZXdEZXZ0b29sc1BvcnQnIGNhcGFiaWxpdHlgKTtcbiAgICB9XG4gICAgYXdhaXQgYWRiLmFkYkV4ZWMoWydmb3J3YXJkJywgYHRjcDoke2xvY2FsUG9ydH1gLCBgbG9jYWxhYnN0cmFjdDoke3JlbW90ZVBvcnR9YF0pO1xuICAgIHJldHVybiBsb2NhbFBvcnQ7XG4gIH0pO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFdlYnZpZXdQcm9wc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHByb2MgVGhlIG5hbWUgb2YgdGhlIERldnRvb2xzIFVuaXggc29ja2V0XG4gKiBAcHJvcGVydHkge3N0cmluZ30gd2VidmlldyBUaGUgd2ViIHZpZXcgYWxpYXMuIExvb2tzIGxpa2UgYFdFQlZJRVdfYFxuICogcHJlZml4IHBsdXMgUElEIG9yIHBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHs/T2JqZWN0fSBpbmZvIFdlYnZpZXcgaW5mb3JtYXRpb24gYXMgaXQgaXMgcmV0cmlldmVkIGJ5XG4gKiAvanNvbi92ZXJzaW9uIENEUCBlbmRwb2ludFxuICogQHByb3BlcnR5IHs/QXJyYXk8T2JqZWN0Pn0gcGFnZXMgV2VidmlldyBwYWdlcyBsaXN0IGFzIGl0IGlzIHJldHJpZXZlZCBieVxuICogL2pzb24vbGlzdCBDRFAgZW5kcG9pbnRcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERldGFpbENvbGxlY3Rpb25PcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8bnVtYmVyfSB3ZWJ2aWV3RGV2dG9vbHNQb3J0IFRoZSBzdGFydGluZyBwb3J0IHRvIHVzZSBmb3Igd2VidmlldyBwYWdlXG4gKiBwcmVzZW5jZSBjaGVjayAoaWYgbm90IHRoZSBkZWZhdWx0IG9mIDkyMjIpLlxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMgV2hldGhlciB0byBjaGVjayBmb3Igd2Vidmlld1xuICogcGFnZXMgcHJlc2VuY2VcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uIFdoZXRoZXIgdG8gY29sbGVjdFxuICogd2ViIHZpZXcgZGV0YWlscyBhbmQgc2VuZCB0aGVtIHRvIENocm9tZWRyaXZlciBjb25zdHJ1Y3Rvciwgc28gaXQgY291bGRcbiAqIHNlbGVjdCBhIGJpbmFyeSBtb3JlIHByZWNpc2VseSBiYXNlZCBvbiB0aGlzIGluZm8uXG4gKi9cblxuLyoqXG4gKiBUaGlzIGlzIGEgd3JhcHBlciBmb3IgQ2hyb21lIERlYnVnZ2VyIFByb3RvY29sIGRhdGEgY29sbGVjdGlvbi5cbiAqIE5vIGVycm9yIGlzIHRocm93biBpZiBDRFAgcmVxdWVzdCBmYWlscyAtIGluIHN1Y2ggY2FzZSBubyBkYXRhIHdpbGwgYmVcbiAqIHJlY29yZGVkIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgYHdlYnZpZXdzTWFwcGluZ2AgaXRlbS5cbiAqXG4gKiBAcGFyYW0ge0FEQn0gYWRiIFRoZSBBREIgaW5zdGFuY2VcbiAqIEBwYXJhbSB7QXJyYXk8V2Vidmlld1Byb3BzPn0gd2Vidmlld3NNYXBwaW5nIFRoZSBjdXJyZW50IHdlYnZpZXdzIG1hcHBpbmdcbiAqICEhISBFYWNoIGl0ZW0gb2YgdGhpcyBhcnJheSBnZXRzIG11dGF0ZWQgKGBpbmZvYC9gcGFnZXNgIHByb3BlcnRpZXMgZ2V0IGFkZGVkXG4gKiBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgYG9wdHNgKSBpZiB0aGUgcmVxdWVzdGVkIGRldGFpbHMgaGF2ZSBiZWVuXG4gKiBzdWNjZXNzZnVsbHkgcmV0cmlldmVkIGZvciBpdCAhISFcbiAqIEBwYXJhbSB7RGV0YWlsQ29sbGVjdGlvbk9wdGlvbnN9IG9wdHMgSWYgYm90aCBgZW5zdXJlV2Vidmlld3NIYXZlUGFnZXNgIGFuZFxuICogYGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbmAgcHJvcGVydGllcyBhcmUgZmFsc3kgdGhlbiBubyBkZXRhaWxzIGNvbGxlY3Rpb25cbiAqIGlzIHBlcmZvcm1lZFxuICovXG5hc3luYyBmdW5jdGlvbiBjb2xsZWN0V2Vidmlld3NEZXRhaWxzIChhZGIsIHdlYnZpZXdzTWFwcGluZywgb3B0cyA9IHt9KSB7XG4gIGlmIChfLmlzRW1wdHkod2Vidmlld3NNYXBwaW5nKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICB3ZWJ2aWV3RGV2dG9vbHNQb3J0ID0gbnVsbCxcbiAgICBlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyA9IG51bGwsXG4gICAgZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uID0gbnVsbCxcbiAgfSA9IG9wdHM7XG5cbiAgaWYgKCFlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcykge1xuICAgIGxvZ2dlci5pbmZvKGBOb3QgY2hlY2tpbmcgd2hldGhlciB3ZWJ2aWV3cyBoYXZlIGFjdGl2ZSBwYWdlczsgdXNlIHRoZSBgICtcbiAgICAgIGAnZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMnIGNhcCB0byB0dXJuIHRoaXMgY2hlY2sgb25gKTtcbiAgfVxuXG4gIGlmICghZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uKSB7XG4gICAgbG9nZ2VyLmluZm8oYE5vdCBjb2xsZWN0aW5nIHdlYiB2aWV3IGRldGFpbHMuIERldGFpbHMgY29sbGVjdGlvbiBtaWdodCBoZWxwIGAgK1xuICAgICAgYHRvIG1ha2UgQ2hyb21lZHJpdmVyIGluaXRpYWxpemF0aW9uIG1vcmUgcHJlY2lzZS4gVXNlIHRoZSAnZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uJyBgICtcbiAgICAgIGBjYXAgdG8gdHVybiBpdCBvbmApO1xuICB9XG5cbiAgaWYgKCFlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyAmJiAhZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gQ29ubmVjdCB0byBlYWNoIGRldnRvb2xzIHNvY2tldCBhbmQgcmV0cmlldmUgd2ViIHZpZXcgZGV0YWlsc1xuICBsb2dnZXIuZGVidWcoYENvbGxlY3RpbmcgQ0RQIGRhdGEgb2YgJHt1dGlsLnBsdXJhbGl6ZSgnd2VidmlldycsIHdlYnZpZXdzTWFwcGluZy5sZW5ndGgsIHRydWUpfWApO1xuICBjb25zdCBkZXRhaWxDb2xsZWN0b3JzID0gW107XG4gIGZvciAoY29uc3QgaXRlbSBvZiB3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgICBkZXRhaWxDb2xsZWN0b3JzLnB1c2goKGFzeW5jICgpID0+IHtcbiAgICAgIGxldCBsb2NhbFBvcnQ7XG4gICAgICB0cnkge1xuICAgICAgICBsb2NhbFBvcnQgPSBhd2FpdCBhbGxvY2F0ZURldnRvb2xzUG9ydChhZGIsIGl0ZW0ucHJvYywgd2Vidmlld0RldnRvb2xzUG9ydCk7XG4gICAgICAgIGlmIChlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24pIHtcbiAgICAgICAgICBpdGVtLmluZm8gPSBhd2FpdCBjZHBJbmZvKGxvY2FsUG9ydCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzKSB7XG4gICAgICAgICAgaXRlbS5wYWdlcyA9IGF3YWl0IGNkcExpc3QobG9jYWxQb3J0KTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsb2dnZXIuZGVidWcoZSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAobG9jYWxQb3J0KSB7XG4gICAgICAgICAgYXdhaXQgYWRiLnJlbW92ZVBvcnRGb3J3YXJkKGxvY2FsUG9ydCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSgpKTtcbiAgfVxuICBhd2FpdCBCLmFsbChkZXRhaWxDb2xsZWN0b3JzKTtcbiAgbG9nZ2VyLmRlYnVnKGBDRFAgZGF0YSBjb2xsZWN0aW9uIGNvbXBsZXRlZGApO1xufVxuXG4vLyBodHRwczovL2Nocm9tZWRldnRvb2xzLmdpdGh1Yi5pby9kZXZ0b29scy1wcm90b2NvbC9cbmFzeW5jIGZ1bmN0aW9uIGNkcExpc3QgKGxvY2FsUG9ydCkge1xuICByZXR1cm4gKGF3YWl0IGF4aW9zKHtcbiAgICB1cmw6IGBodHRwOi8vMTI3LjAuMC4xOiR7bG9jYWxQb3J0fS9qc29uL2xpc3RgLFxuICAgIHRpbWVvdXQ6IENEUF9SRVFfVElNRU9VVCxcbiAgfSkpLmRhdGE7XG59XG5cbi8vIGh0dHBzOi8vY2hyb21lZGV2dG9vbHMuZ2l0aHViLmlvL2RldnRvb2xzLXByb3RvY29sL1xuYXN5bmMgZnVuY3Rpb24gY2RwSW5mbyAobG9jYWxQb3J0KSB7XG4gIHJldHVybiAoYXdhaXQgYXhpb3Moe1xuICAgIHVybDogYGh0dHA6Ly8xMjcuMC4wLjE6JHtsb2NhbFBvcnR9L2pzb24vdmVyc2lvbmAsXG4gICAgdGltZW91dDogQ0RQX1JFUV9USU1FT1VULFxuICB9KSkuZGF0YTtcbn1cblxuLyoqXG4gKiBUYWtlIGEgd2VidmlldyBuYW1lIGxpa2UgV0VCVklFV180Mjk2IGFuZCB1c2UgJ2FkYiBzaGVsbCBwcycgdG8gZmlndXJlIG91dFxuICogd2hpY2ggYXBwIHBhY2thZ2UgaXMgYXNzb2NpYXRlZCB3aXRoIHRoYXQgd2Vidmlldy4gT25lIG9mIHRoZSByZWFzb25zIHdlXG4gKiB3YW50IHRvIGRvIHRoaXMgaXMgdG8gbWFrZSBzdXJlIHdlJ3JlIGxpc3Rpbmcgd2Vidmlld3MgZm9yIHRoZSBhY3R1YWwgQVVULFxuICogbm90IHNvbWUgb3RoZXIgcnVubmluZyBhcHBcbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gYWRiIC0gYW4gQURCIGluc3RhbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30gd2VidmlldyAtIGEgd2VidmlldyBwcm9jZXNzIG5hbWVcbiAqXG4gKiBAcmV0dXJucyB7c3RyaW5nfSAtIHRoZSBwYWNrYWdlIG5hbWUgb2YgdGhlIGFwcCBydW5uaW5nIHRoZSB3ZWJ2aWV3XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSByZXRyaWV2aW5nIHRoZSBwcm9jZXNzIG5hbWVcbiAqL1xuaGVscGVycy5wcm9jRnJvbVdlYnZpZXcgPSBhc3luYyBmdW5jdGlvbiBwcm9jRnJvbVdlYnZpZXcgKGFkYiwgd2Vidmlldykge1xuICBjb25zdCBwaWRNYXRjaCA9IFdFQlZJRVdfUElEX1BBVFRFUk4uZXhlYyh3ZWJ2aWV3KTtcbiAgaWYgKCFwaWRNYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgUElEIGZvciB3ZWJ2aWV3ICcke3dlYnZpZXd9J2ApO1xuICB9XG5cbiAgY29uc3QgcGlkID0gcGlkTWF0Y2hbMV07XG4gIGxvZ2dlci5kZWJ1ZyhgJHt3ZWJ2aWV3fSBtYXBwZWQgdG8gcGlkICR7cGlkfWApO1xuICBsb2dnZXIuZGVidWcoYEdldHRpbmcgcHJvY2VzcyBuYW1lIGZvciB3ZWJ2aWV3ICcke3dlYnZpZXd9J2ApO1xuICBjb25zdCBwa2cgPSBhd2FpdCBhZGIuZ2V0TmFtZUJ5UGlkKHBpZCk7XG4gIGxvZ2dlci5kZWJ1ZyhgR290IHByb2Nlc3MgbmFtZTogJyR7cGtnfSdgKTtcbiAgcmV0dXJuIHBrZztcbn07XG5cbi8qKlxuICogUGFyc2Ugd2VidmlldyBuYW1lcyBmb3IgZ2V0Q29udGV4dHNcbiAqXG4gKiBAcGFyYW0ge0FycmF5PFdlYnZpZXdzTWFwcGluZz59IHdlYnZpZXdzTWFwcGluZyBTZWUgbm90ZSBvbiBnZXRXZWJWaWV3c01hcHBpbmdcbiAqIEBwYXJhbSB7R2V0V2Vidmlld3NPcHRzfSBvcHRzIFNlZSBub3RlIG9uIGdldFdlYlZpZXdzTWFwcGluZ1xuICogQHJldHVybiB7QXJyYXkuPHN0cmluZz59IC0gYSBsaXN0IG9mIHdlYnZpZXcgbmFtZXNcbiAqL1xuaGVscGVycy5wYXJzZVdlYnZpZXdOYW1lcyA9IGZ1bmN0aW9uIHBhcnNlV2Vidmlld05hbWVzICh3ZWJ2aWV3c01hcHBpbmcsIHtcbiAgZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMgPSB0cnVlLFxuICBpc0Nocm9tZVNlc3Npb24gPSBmYWxzZVxufSA9IHt9KSB7XG4gIGlmIChpc0Nocm9tZVNlc3Npb24pIHtcbiAgICByZXR1cm4gW0NIUk9NSVVNX1dJTl07XG4gIH1cblxuICBjb25zdCByZXN1bHQgPSBbXTtcbiAgZm9yIChjb25zdCB7d2VidmlldywgcGFnZXMsIHByb2MsIHdlYnZpZXdOYW1lfSBvZiB3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgICBpZiAoZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMgJiYgcGFnZXM/Lmxlbmd0aCA9PT0gMCkge1xuICAgICAgbG9nZ2VyLmluZm8oYFNraXBwaW5nIHRoZSB3ZWJ2aWV3ICcke3dlYnZpZXd9JyBhdCAnJHtwcm9jfScgYCArXG4gICAgICAgIGBzaW5jZSBpdCBoYXMgcmVwb3J0ZWQgaGF2aW5nIHplcm8gcGFnZXNgKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAod2Vidmlld05hbWUpIHtcbiAgICAgIHJlc3VsdC5wdXNoKHdlYnZpZXdOYW1lKTtcbiAgICB9XG4gIH1cbiAgbG9nZ2VyLmRlYnVnKGBGb3VuZCAke3V0aWwucGx1cmFsaXplKCd3ZWJ2aWV3JywgcmVzdWx0Lmxlbmd0aCwgdHJ1ZSl9OiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdCl9YCk7XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEdldFdlYnZpZXdzT3B0c1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGFuZHJvaWREZXZpY2VTb2NrZXQgW251bGxdIC0gZGV2aWNlIHNvY2tldCBuYW1lXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzIFt0cnVlXSAtIHdoZXRoZXIgdG8gY2hlY2sgZm9yIHdlYnZpZXdcbiAqIHBhZ2UgcHJlc2VuY2VcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB3ZWJ2aWV3RGV2dG9vbHNQb3J0IFs5MjIyXSAtIHBvcnQgdG8gdXNlIGZvciB3ZWJ2aWV3IHBhZ2VcbiAqIHByZXNlbmNlIGNoZWNrLlxuICogQHByb3BlcnR5IHtib29sZWFufSBlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24gW3RydWVdIC0gd2hldGhlciB0byBjb2xsZWN0XG4gKiB3ZWIgdmlldyBkZXRhaWxzIGFuZCBzZW5kIHRoZW0gdG8gQ2hyb21lZHJpdmVyIGNvbnN0cnVjdG9yLCBzbyBpdCBjb3VsZFxuICogc2VsZWN0IGEgYmluYXJ5IG1vcmUgcHJlY2lzZWx5IGJhc2VkIG9uIHRoaXMgaW5mby5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gaXNDaHJvbWVTZXNzaW9uIFtmYWxzZV0gLSB0cnVlIGlmIENocm9tZVNlc3Npb25cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFdlYnZpZXdzTWFwcGluZ1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHByb2MgU2VlIG5vdGUgb24gV2Vidmlld1Byb3BzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gd2VidmlldyBTZWUgbm90ZSBvbiBXZWJ2aWV3UHJvcHNcbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaW5mbyBTZWUgbm90ZSBvbiBXZWJ2aWV3UHJvcHNcbiAqIEBwcm9wZXJ0eSB7P0FycmF5PE9iamVjdD59IHBhZ2VzIFNlZSBub3RlIG9uIFdlYnZpZXdQcm9wc1xuICogQHByb3Blcnkgez9zdHJpbmd9IHdlYnZpZXdOYW1lIEFuIGFjdHVhbCB3ZWJ2aWV3IG5hbWUgZm9yIHN3aXRjaGluZyBjb250ZXh0XG4gKi9cblxuLyoqXG4gKiBHZXQgYSBsaXN0IG9mIGF2YWlsYWJsZSB3ZWJ2aWV3cyBtYXBwaW5nIGJ5IGludHJvc3BlY3RpbmcgcHJvY2Vzc2VzIHdpdGggYWRiLFxuICogd2hlcmUgd2Vidmlld3MgYXJlIGxpc3RlZC4gSXQncyBwb3NzaWJsZSB0byBwYXNzIGluIGEgJ2RldmljZVNvY2tldCcgYXJnLCB3aGljaFxuICogbGltaXRzIHRoZSB3ZWJ2aWV3IHBvc3NpYmlsaXRpZXMgdG8gdGhlIG9uZSBydW5uaW5nIG9uIHRoZSBDaHJvbWl1bSBkZXZ0b29sc1xuICogc29ja2V0IHdlJ3JlIGludGVyZXN0ZWQgaW4gKHNlZSBub3RlIG9uIHdlYnZpZXdzRnJvbVByb2NzKS4gV2UgY2FuIGFsc29cbiAqIGRpcmVjdCB0aGlzIG1ldGhvZCB0byB2ZXJpZnkgd2hldGhlciBhIHBhcnRpY3VsYXIgd2VidmlldyBwcm9jZXNzIGFjdHVhbGx5XG4gKiBoYXMgYW55IHBhZ2VzIChpZiBhIHByb2Nlc3MgZXhpc3RzIGJ1dCBubyBwYWdlcyBhcmUgZm91bmQsIENocm9tZWRyaXZlciB3aWxsXG4gKiBub3QgYWN0dWFsbHkgYmUgYWJsZSB0byBjb25uZWN0IHRvIGl0LCBzbyB0aGlzIHNlcnZlcyBhcyBhIGd1YXJkIGZvciB0aGF0XG4gKiBzdHJhbmdlIGZhaWx1cmUgbW9kZSkuIFRoZSBzdHJhdGVneSBmb3IgY2hlY2tpbmcgd2hldGhlciBhbnkgcGFnZXMgYXJlXG4gKiBhY3RpdmUgaW52b2x2ZXMgc2VuZGluZyBhIHJlcXVlc3QgdG8gdGhlIHJlbW90ZSBkZWJ1ZyBzZXJ2ZXIgb24gdGhlIGRldmljZSxcbiAqIGhlbmNlIGl0IGlzIGFsc28gcG9zc2libGUgdG8gc3BlY2lmeSB0aGUgcG9ydCBvbiB0aGUgaG9zdCBtYWNoaW5lIHdoaWNoXG4gKiBzaG91bGQgYmUgdXNlZCBmb3IgdGhpcyBjb21tdW5pY2F0aW9uLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBhZGIgLSBhbiBBREIgaW5zdGFuY2VcbiAqIEBwYXJhbSB7R2V0V2Vidmlld3NPcHRzfSBvcHRzXG4gKlxuICogQHJldHVybiB7QXJyYXk8V2Vidmlld3NNYXBwaW5nPn0gd2Vidmlld3NNYXBwaW5nXG4gKi9cbmhlbHBlcnMuZ2V0V2ViVmlld3NNYXBwaW5nID0gYXN5bmMgZnVuY3Rpb24gZ2V0V2ViVmlld3NNYXBwaW5nIChhZGIsIHtcbiAgYW5kcm9pZERldmljZVNvY2tldCA9IG51bGwsXG4gIGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzID0gdHJ1ZSxcbiAgd2Vidmlld0RldnRvb2xzUG9ydCA9IG51bGwsXG4gIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiA9IHRydWUsXG4gIGlzQ2hyb21lU2Vzc2lvbiA9IGZhbHNlXG59ID0ge30pIHtcbiAgaWYgKGlzQ2hyb21lU2Vzc2lvbikge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGxvZ2dlci5kZWJ1ZygnR2V0dGluZyBhIGxpc3Qgb2YgYXZhaWxhYmxlIHdlYnZpZXdzJyk7XG4gIGNvbnN0IHdlYnZpZXdzTWFwcGluZyA9IGF3YWl0IHdlYnZpZXdzRnJvbVByb2NzKGFkYiwgYW5kcm9pZERldmljZVNvY2tldCk7XG5cbiAgYXdhaXQgY29sbGVjdFdlYnZpZXdzRGV0YWlscyhhZGIsIHdlYnZpZXdzTWFwcGluZywge1xuICAgIGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzLFxuICAgIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbixcbiAgICB3ZWJ2aWV3RGV2dG9vbHNQb3J0LFxuICB9KTtcblxuICBmb3IgKGNvbnN0IHdlYnZpZXdNYXBwaW5nIG9mIHdlYnZpZXdzTWFwcGluZykge1xuICAgIGNvbnN0IHt3ZWJ2aWV3LCBpbmZvfSA9IHdlYnZpZXdNYXBwaW5nO1xuICAgIHdlYnZpZXdNYXBwaW5nLndlYnZpZXdOYW1lID0gbnVsbDtcblxuICAgIGxldCB3dk5hbWUgPSB3ZWJ2aWV3O1xuICAgIGxldCBwcm9jZXNzID0gdW5kZWZpbmVkO1xuICAgIGlmICghYW5kcm9pZERldmljZVNvY2tldCkge1xuICAgICAgY29uc3QgcGtnTWF0Y2ggPSBXRUJWSUVXX1BLR19QQVRURVJOLmV4ZWMod2Vidmlldyk7XG4gICAgICB0cnkge1xuICAgICAgICAvLyB3ZWIgdmlldyBuYW1lIGNvdWxkIGVpdGhlciBiZSBzdWZmaXhlZCB3aXRoIFBJRCBvciB0aGUgcGFja2FnZSBuYW1lXG4gICAgICAgIC8vIHBhY2thZ2UgbmFtZXMgY291bGQgbm90IHN0YXJ0IHdpdGggYSBkaWdpdFxuICAgICAgICBjb25zdCBwa2cgPSBwa2dNYXRjaCA/IHBrZ01hdGNoWzFdIDogYXdhaXQgaGVscGVycy5wcm9jRnJvbVdlYnZpZXcoYWRiLCB3ZWJ2aWV3KTtcbiAgICAgICAgd3ZOYW1lID0gYCR7V0VCVklFV19CQVNFfSR7cGtnfWA7XG4gICAgICAgIGNvbnN0IHBpZE1hdGNoID0gV0VCVklFV19QSURfUEFUVEVSTi5leGVjKHdlYnZpZXcpO1xuICAgICAgICBwcm9jZXNzID0ge1xuICAgICAgICAgIG5hbWU6IHBrZyxcbiAgICAgICAgICBpZDogcGlkTWF0Y2ggPyBwaWRNYXRjaFsxXSA6IG51bGwsXG4gICAgICAgIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZ2dlci53YXJuKGUubWVzc2FnZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHdlYnZpZXdNYXBwaW5nLndlYnZpZXdOYW1lID0gd3ZOYW1lO1xuICAgIGNvbnN0IGtleSA9IHRvRGV0YWlsc0NhY2hlS2V5KGFkYiwgd3ZOYW1lKTtcbiAgICBpZiAoaW5mbyB8fCBwcm9jZXNzKSB7XG4gICAgICBXRUJWSUVXU19ERVRBSUxTX0NBQ0hFLnNldChrZXksIHsgaW5mbywgcHJvY2VzcyB9KTtcbiAgICB9IGVsc2UgaWYgKFdFQlZJRVdTX0RFVEFJTFNfQ0FDSEUuaGFzKGtleSkpIHtcbiAgICAgIFdFQlZJRVdTX0RFVEFJTFNfQ0FDSEUuZGVsKGtleSk7XG4gICAgfVxuICB9XG4gIHJldHVybiB3ZWJ2aWV3c01hcHBpbmc7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFByb2Nlc3NJbmZvXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbmFtZSBUaGUgcHJvY2VzcyBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGlkIFRoZSBwcm9jZXNzIGlkIChpZiBjb3VsZCBiZSByZXRyaWV2ZWQpXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXZWJWaWV3RGV0YWlsc1xuICogQHByb3BlcnR5IHs/UHJvY2Vzc0luZm99IHByb2Nlc3MgLSBXZWIgdmlldyBwcm9jZXNzIGRldGFpbHNcbiAqIEBwcm9wZXJ0eSB7T2JqZWN0fSBpbmZvIC0gV2ViIHZpZXcgZGV0YWlscyBhcyByZXR1cm5lZCBieSAvanNvbi92ZXJzaW9uIENEUCBlbmRwb2ludCwgZm9yIGV4YW1wbGU6XG4gKiB7XG4gKiAgXCJCcm93c2VyXCI6IFwiQ2hyb21lLzcyLjAuMzYwMS4wXCIsXG4gKiAgXCJQcm90b2NvbC1WZXJzaW9uXCI6IFwiMS4zXCIsXG4gKiAgXCJVc2VyLUFnZW50XCI6IFwiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTNfNikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzcyLjAuMzYwMS4wIFNhZmFyaS81MzcuMzZcIixcbiAqICBcIlY4LVZlcnNpb25cIjogXCI3LjIuMjMzXCIsXG4gKiAgXCJXZWJLaXQtVmVyc2lvblwiOiBcIjUzNy4zNiAoQGNmZWRlOWRiMWQxNTRkZTA0NjhjYjA1Mzg0NzlmMzRjMDc1NWEwZjQpXCIsXG4gKiAgXCJ3ZWJTb2NrZXREZWJ1Z2dlclVybFwiOiBcIndzOi8vbG9jYWxob3N0OjkyMjIvZGV2dG9vbHMvYnJvd3Nlci9iMGI4YTRmYi1iYjE3LTQzNTktOTUzMy1hOGQ5ZjM5MDhiZDhcIlxuICogfVxuICovXG5cbi8qKlxuICogUmV0cmlldmVzIHdlYiB2aWV3IGRldGFpbHMgcHJldmlvdXNseSBjYWNoZWQgYnkgYGdldFdlYnZpZXdzYCBjYWxsXG4gKlxuICogQHBhcmFtIHtBREJ9IGFkYiBBREIgaW5zdGFuY2VcbiAqIEBwYXJhbSB7c3RyaW5nfSB3ZWJ2aWV3IFRoZSBuYW1lIG9mIHRoZSB3ZWIgdmlld1xuICogQHJldHVybnMgez9XZWJWaWV3RGV0YWlsc30gRWl0aGVyIGB1bmRlZmluZWRgIG9yIHRoZSByZWNlbnQgd2ViIHZpZXcgZGV0YWlsc1xuICovXG5oZWxwZXJzLmdldFdlYnZpZXdEZXRhaWxzID0gZnVuY3Rpb24gZ2V0V2Vidmlld0RldGFpbHMgKGFkYiwgd2Vidmlldykge1xuICBjb25zdCBrZXkgPSB0b0RldGFpbHNDYWNoZUtleShhZGIsIHdlYnZpZXcpO1xuICByZXR1cm4gV0VCVklFV1NfREVUQUlMU19DQUNIRS5nZXQoa2V5KTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIENocm9tZSBkcml2ZXIgY2FwYWJpbGl0aWVzIGJhc2VkIG9uIHRoZSBwcm92aWRlZFxuICogQXBwaXVtIGNhcGFiaWxpdGllc1xuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRzIFVzZXItcHJvdmlkZWQgY2FwYWJpbGl0aWVzIG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IGRldmljZUlkIFRoZSBpZGVudGlmaWVyIG9mIHRoZSBBbmRyb2lkIGRldmljZSB1bmRlciB0ZXN0XG4gKiBAcGFyYW0gez9XZWJWaWV3RGV0YWlsc30gd2ViVmlld0RldGFpbHNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBjYXBhYmlsaXRpZXMgb2JqZWN0LlxuICogU2VlIGh0dHBzOi8vY2hyb21lZHJpdmVyLmNocm9taXVtLm9yZy9jYXBhYmlsaXRpZXMgZm9yIG1vcmUgZGV0YWlscy5cbiAqL1xuaGVscGVycy5jcmVhdGVDaHJvbWVkcml2ZXJDYXBzID0gZnVuY3Rpb24gY3JlYXRlQ2hyb21lZHJpdmVyQ2FwcyAob3B0cywgZGV2aWNlSWQsIHdlYlZpZXdEZXRhaWxzKSB7XG4gIGNvbnN0IGNhcHMgPSB7IGNocm9tZU9wdGlvbnM6IHt9IH07XG5cbiAgY29uc3QgYW5kcm9pZFBhY2thZ2UgPSBvcHRzLmNocm9tZU9wdGlvbnM/LmFuZHJvaWRQYWNrYWdlIHx8IG9wdHMuYXBwUGFja2FnZTtcbiAgaWYgKGFuZHJvaWRQYWNrYWdlKSB7XG4gICAgLy8gY2hyb21lZHJpdmVyIHJhaXNlcyBhbiBpbnZhbGlkIGFyZ3VtZW50IGVycm9yIHdoZW4gYW5kcm9pZFBhY2thZ2UgaXMgJ251bGwnXG4gICAgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQYWNrYWdlID0gYW5kcm9pZFBhY2thZ2U7XG4gIH1cbiAgaWYgKF8uaXNCb29sZWFuKG9wdHMuY2hyb21lVXNlUnVubmluZ0FwcCkpIHtcbiAgICBjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZFVzZVJ1bm5pbmdBcHAgPSBvcHRzLmNocm9tZVVzZVJ1bm5pbmdBcHA7XG4gIH1cbiAgaWYgKG9wdHMuY2hyb21lQW5kcm9pZFBhY2thZ2UpIHtcbiAgICBjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZFBhY2thZ2UgPSBvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlO1xuICB9XG4gIGlmIChvcHRzLmNocm9tZUFuZHJvaWRBY3Rpdml0eSkge1xuICAgIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkQWN0aXZpdHkgPSBvcHRzLmNocm9tZUFuZHJvaWRBY3Rpdml0eTtcbiAgfVxuICBpZiAob3B0cy5jaHJvbWVBbmRyb2lkUHJvY2Vzcykge1xuICAgIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkUHJvY2VzcyA9IG9wdHMuY2hyb21lQW5kcm9pZFByb2Nlc3M7XG4gIH0gZWxzZSBpZiAod2ViVmlld0RldGFpbHM/LnByb2Nlc3M/Lm5hbWUgJiYgd2ViVmlld0RldGFpbHM/LnByb2Nlc3M/LmlkKSB7XG4gICAgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQcm9jZXNzID0gd2ViVmlld0RldGFpbHMucHJvY2Vzcy5uYW1lO1xuICB9XG4gIGlmIChfLnRvTG93ZXIob3B0cy5icm93c2VyTmFtZSkgPT09ICdjaHJvbWl1bS13ZWJ2aWV3Jykge1xuICAgIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkQWN0aXZpdHkgPSBvcHRzLmFwcEFjdGl2aXR5O1xuICB9XG4gIGlmIChvcHRzLnBhZ2VMb2FkU3RyYXRlZ3kpIHtcbiAgICBjYXBzLnBhZ2VMb2FkU3RyYXRlZ3kgPSBvcHRzLnBhZ2VMb2FkU3RyYXRlZ3k7XG4gIH1cbiAgY29uc3QgaXNDaHJvbWUgPSBfLnRvTG93ZXIoY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQYWNrYWdlKSA9PT0gJ2Nocm9tZSc7XG4gIGlmIChfLmluY2x1ZGVzKEtOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTLCBjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZFBhY2thZ2UpIHx8IGlzQ2hyb21lKSB7XG4gICAgLy8gaWYgd2UgaGF2ZSBleHRyYWN0ZWQgcGFja2FnZSBmcm9tIGNvbnRleHQgbmFtZSwgaXQgY291bGQgY29tZSBpbiBhcyBiYXJlXG4gICAgLy8gXCJjaHJvbWVcIiwgYW5kIHNvIHdlIHNob3VsZCBtYWtlIHN1cmUgdGhlIGRldGFpbHMgYXJlIGNvcnJlY3QsIGluY2x1ZGluZ1xuICAgIC8vIG5vdCB1c2luZyBhbiBhY3Rpdml0eSBvciBwcm9jZXNzIGlkXG4gICAgaWYgKGlzQ2hyb21lKSB7XG4gICAgICBjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZFBhY2thZ2UgPSBDSFJPTUVfUEFDS0FHRV9OQU1FO1xuICAgIH1cbiAgICBkZWxldGUgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRBY3Rpdml0eTtcbiAgICBkZWxldGUgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQcm9jZXNzO1xuICB9XG4gIC8vIGFkZCBkZXZpY2UgaWQgZnJvbSBhZGJcbiAgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWREZXZpY2VTZXJpYWwgPSBkZXZpY2VJZDtcblxuICBpZiAob3B0cy5sb2dnaW5nUHJlZnMpIHtcbiAgICBjYXBzLmxvZ2dpbmdQcmVmcyA9IG9wdHMubG9nZ2luZ1ByZWZzO1xuICB9XG4gIGlmIChvcHRzLmVuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZykge1xuICAgIGxvZ2dlci53YXJuKGBUaGUgJ2VuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZycgY2FwIGlzIGRlcHJlY2F0ZWQ7IHNpbXBseSB1c2UgYCArXG4gICAgICBgdGhlICdsb2dnaW5nUHJlZnMnIGNhcCBpbnN0ZWFkLCB3aXRoIGEgJ3BlcmZvcm1hbmNlJyBrZXkgc2V0IHRvICdBTEwnYCk7XG4gICAgY29uc3QgbmV3UHJlZiA9IHtwZXJmb3JtYW5jZTogJ0FMTCd9O1xuICAgIC8vIGRvbid0IG92ZXJ3cml0ZSBvdGhlciBsb2dnaW5nIHByZWZzIHRoYXQgaGF2ZSBiZWVuIHNlbnQgaW4gaWYgdGhleSBleGlzdFxuICAgIGNhcHMubG9nZ2luZ1ByZWZzID0gY2Fwcy5sb2dnaW5nUHJlZnMgP1xuICAgICAgT2JqZWN0LmFzc2lnbih7fSwgY2Fwcy5sb2dnaW5nUHJlZnMsIG5ld1ByZWYpIDpcbiAgICAgIG5ld1ByZWY7XG4gIH1cblxuICBpZiAob3B0cy5jaHJvbWVPcHRpb25zPy5Bcmd1bWVudHMpIHtcbiAgICAvLyBtZXJnZSBgQXJndW1lbnRzYCBhbmQgYGFyZ3NgXG4gICAgb3B0cy5jaHJvbWVPcHRpb25zLmFyZ3MgPSBbLi4uKG9wdHMuY2hyb21lT3B0aW9ucy5hcmdzIHx8IFtdKSwgLi4ub3B0cy5jaHJvbWVPcHRpb25zLkFyZ3VtZW50c107XG4gICAgZGVsZXRlIG9wdHMuY2hyb21lT3B0aW9ucy5Bcmd1bWVudHM7XG4gIH1cblxuICBsb2dnZXIuZGVidWcoJ1ByZWNhbGN1bGF0ZWQgQ2hyb21lZHJpdmVyIGNhcGFiaWxpdGllczogJyArXG4gICAgSlNPTi5zdHJpbmdpZnkoY2Fwcy5jaHJvbWVPcHRpb25zLCBudWxsLCAyKSk7XG5cbiAgY29uc3QgcHJvdGVjdGVkQ2FwTmFtZXMgPSBbXTtcbiAgZm9yIChjb25zdCBbb3B0LCB2YWxdIG9mIF8udG9QYWlycyhvcHRzLmNocm9tZU9wdGlvbnMpKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQoY2Fwcy5jaHJvbWVPcHRpb25zW29wdF0pKSB7XG4gICAgICBjYXBzLmNocm9tZU9wdGlvbnNbb3B0XSA9IHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvdGVjdGVkQ2FwTmFtZXMucHVzaChvcHQpO1xuICAgIH1cbiAgfVxuICBpZiAoIV8uaXNFbXB0eShwcm90ZWN0ZWRDYXBOYW1lcykpIHtcbiAgICBsb2dnZXIuaW5mbygnVGhlIGZvbGxvd2luZyBDaHJvbWVkcml2ZXIgY2FwYWJpbGl0aWVzIGNhbm5vdCBiZSBvdmVycmlkZGVuICcgK1xuICAgICAgJ2J5IHRoZSBwcm92aWRlZCBjaHJvbWVPcHRpb25zOicpO1xuICAgIGZvciAoY29uc3Qgb3B0TmFtZSBvZiBwcm90ZWN0ZWRDYXBOYW1lcykge1xuICAgICAgbG9nZ2VyLmluZm8oYCAgJHtvcHROYW1lfSAoJHtKU09OLnN0cmluZ2lmeShvcHRzLmNocm9tZU9wdGlvbnNbb3B0TmFtZV0pfSlgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2Fwcztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGhlbHBlcnM7XG5leHBvcnQgeyBoZWxwZXJzLCBOQVRJVkVfV0lOLCBXRUJWSUVXX1dJTiwgV0VCVklFV19CQVNFLCBDSFJPTUlVTV9XSU4sIEtOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTIH07XG4iXSwiZmlsZSI6ImxpYi93ZWJ2aWV3LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
460
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi93ZWJ2aWV3LWhlbHBlcnMuanMiXSwibmFtZXMiOlsiTkFUSVZFX1dJTiIsIldFQlZJRVdfV0lOIiwiQ0hST01JVU1fV0lOIiwiV0VCVklFV19CQVNFIiwiV0VCVklFV19QSURfUEFUVEVSTiIsIlJlZ0V4cCIsIldFQlZJRVdfUEtHX1BBVFRFUk4iLCJERVZUT09MU19TT0NLRVRfUEFUVEVSTiIsIkNST1NTV0FMS19TT0NLRVRfUEFUVEVSTiIsIkNIUk9NSVVNX0RFVlRPT0xTX1NPQ0tFVCIsIkNIUk9NRV9QQUNLQUdFX05BTUUiLCJLTk9XTl9DSFJPTUVfUEFDS0FHRV9OQU1FUyIsIkRFVlRPT0xTX1BPUlRTX1JBTkdFIiwiV0VCVklFV1NfREVUQUlMU19DQUNIRSIsIkxSVSIsIm1heCIsInVwZGF0ZUFnZU9uR2V0IiwiQ0RQX1JFUV9USU1FT1VUIiwiREVWVE9PTFNfUE9SVF9BTExPQ0FUSU9OX0dVQVJEIiwidXRpbCIsImdldExvY2tGaWxlR3VhcmQiLCJwYXRoIiwicmVzb2x2ZSIsIm9zIiwidG1wZGlyIiwidGltZW91dCIsInRyeVJlY292ZXJ5IiwiaGVscGVycyIsInRvRGV0YWlsc0NhY2hlS2V5IiwiYWRiIiwid2VidmlldyIsImN1ckRldmljZUlkIiwiZ2V0UG90ZW50aWFsV2Vidmlld1Byb2NzIiwib3V0Iiwic2hlbGwiLCJuYW1lcyIsImFsbE1hdGNoZXMiLCJsaW5lIiwic3BsaXQiLCJmbGFncyIsInN0Iiwic29ja1BhdGgiLCJ0cmltIiwic3RhcnRzV2l0aCIsInB1c2giLCJ0ZXN0IiwiXyIsImlzRW1wdHkiLCJsb2dnZXIiLCJkZWJ1ZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJsZW5ndGgiLCJwbHVyYWxpemUiLCJ1bmlxIiwid2Vidmlld3NGcm9tUHJvY3MiLCJkZXZpY2VTb2NrZXQiLCJzb2NrZXROYW1lcyIsIndlYnZpZXdzIiwic29ja2V0TmFtZSIsInByb2MiLCJzb2NrZXROYW1lTWF0Y2giLCJleGVjIiwiY3Jvc3N3YWxrTWF0Y2giLCJhbGxvY2F0ZURldnRvb2xzUG9ydCIsIndlYnZpZXdEZXZ0b29sc1BvcnQiLCJyZW1vdGVQb3J0IiwicmVwbGFjZSIsInN0YXJ0UG9ydCIsImVuZFBvcnQiLCJsb2NhbFBvcnQiLCJlIiwiRXJyb3IiLCJhZGJFeGVjIiwiY29sbGVjdFdlYnZpZXdzRGV0YWlscyIsIndlYnZpZXdzTWFwcGluZyIsIm9wdHMiLCJlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyIsImVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiIsImluZm8iLCJkZXRhaWxDb2xsZWN0b3JzIiwiaXRlbSIsImNkcEluZm8iLCJwYWdlcyIsImNkcExpc3QiLCJyZW1vdmVQb3J0Rm9yd2FyZCIsIkIiLCJhbGwiLCJ1cmwiLCJkYXRhIiwicHJvY0Zyb21XZWJ2aWV3IiwicGlkTWF0Y2giLCJwaWQiLCJwa2ciLCJnZXROYW1lQnlQaWQiLCJwYXJzZVdlYnZpZXdOYW1lcyIsImlzQ2hyb21lU2Vzc2lvbiIsInJlc3VsdCIsIndlYnZpZXdOYW1lIiwiZ2V0V2ViVmlld3NNYXBwaW5nIiwiYW5kcm9pZERldmljZVNvY2tldCIsIndlYnZpZXdNYXBwaW5nIiwid3ZOYW1lIiwicHJvY2VzcyIsInVuZGVmaW5lZCIsInBrZ01hdGNoIiwibmFtZSIsImlkIiwid2FybiIsIm1lc3NhZ2UiLCJrZXkiLCJzZXQiLCJoYXMiLCJkZWwiLCJnZXRXZWJ2aWV3RGV0YWlscyIsImdldCIsImNyZWF0ZUNocm9tZWRyaXZlckNhcHMiLCJkZXZpY2VJZCIsIndlYlZpZXdEZXRhaWxzIiwiY2FwcyIsImNocm9tZU9wdGlvbnMiLCJhbmRyb2lkUGFja2FnZSIsImFwcFBhY2thZ2UiLCJpc0Jvb2xlYW4iLCJjaHJvbWVVc2VSdW5uaW5nQXBwIiwiYW5kcm9pZFVzZVJ1bm5pbmdBcHAiLCJjaHJvbWVBbmRyb2lkUGFja2FnZSIsImNocm9tZUFuZHJvaWRBY3Rpdml0eSIsImFuZHJvaWRBY3Rpdml0eSIsImNocm9tZUFuZHJvaWRQcm9jZXNzIiwiYW5kcm9pZFByb2Nlc3MiLCJ0b0xvd2VyIiwiYnJvd3Nlck5hbWUiLCJhcHBBY3Rpdml0eSIsInBhZ2VMb2FkU3RyYXRlZ3kiLCJpc0Nocm9tZSIsImluY2x1ZGVzIiwiYW5kcm9pZERldmljZVNlcmlhbCIsImlzUGxhaW5PYmplY3QiLCJsb2dnaW5nUHJlZnMiLCJjaHJvbWVMb2dnaW5nUHJlZnMiLCJlbmFibGVQZXJmb3JtYW5jZUxvZ2dpbmciLCJuZXdQcmVmIiwicGVyZm9ybWFuY2UiLCJPYmplY3QiLCJhc3NpZ24iLCJBcmd1bWVudHMiLCJhcmdzIiwicHJvdGVjdGVkQ2FwTmFtZXMiLCJvcHQiLCJ2YWwiLCJ0b1BhaXJzIiwiaXNVbmRlZmluZWQiLCJvcHROYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLFVBQVUsR0FBRyxZQUFuQjs7QUFDQSxNQUFNQyxXQUFXLEdBQUcsU0FBcEI7O0FBQ0EsTUFBTUMsWUFBWSxHQUFHLFVBQXJCOztBQUNBLE1BQU1DLFlBQVksR0FBSSxHQUFFRixXQUFZLEdBQXBDOztBQUNBLE1BQU1HLG1CQUFtQixHQUFHLElBQUlDLE1BQUosQ0FBWSxJQUFHRixZQUFhLFFBQTVCLENBQTVCO0FBQ0EsTUFBTUcsbUJBQW1CLEdBQUcsSUFBSUQsTUFBSixDQUFZLElBQUdGLFlBQWEsb0JBQTVCLENBQTVCO0FBQ0EsTUFBTUksdUJBQXVCLEdBQUcsbUNBQWhDO0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcsNkJBQWpDO0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcsd0JBQWpDO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsb0JBQTVCO0FBQ0EsTUFBTUMsMEJBQTBCLEdBQUcsQ0FDakNELG1CQURpQyxFQUVqQyxpQkFGaUMsRUFHakMsZ0JBSGlDLEVBSWpDLG1CQUppQyxDQUFuQzs7QUFNQSxNQUFNRSxvQkFBb0IsR0FBRyxDQUFDLEtBQUQsRUFBUSxLQUFSLENBQTdCO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsSUFBSUMsaUJBQUosQ0FBUTtBQUNyQ0MsRUFBQUEsR0FBRyxFQUFFLEdBRGdDO0FBRXJDQyxFQUFBQSxjQUFjLEVBQUU7QUFGcUIsQ0FBUixDQUEvQjtBQUlBLE1BQU1DLGVBQWUsR0FBRyxJQUF4Qjs7QUFDQSxNQUFNQyw4QkFBOEIsR0FBR0Msb0JBQUtDLGdCQUFMLENBQ3JDQyxjQUFLQyxPQUFMLENBQWFDLFlBQUdDLE1BQUgsRUFBYixFQUEwQiw2QkFBMUIsQ0FEcUMsRUFFckM7QUFBQ0MsRUFBQUEsT0FBTyxFQUFFLENBQVY7QUFBYUMsRUFBQUEsV0FBVyxFQUFFO0FBQTFCLENBRnFDLENBQXZDOztBQUtBLE1BQU1DLE9BQU8sR0FBRyxFQUFoQjs7O0FBRUEsU0FBU0MsaUJBQVQsQ0FBNEJDLEdBQTVCLEVBQWlDQyxPQUFqQyxFQUEwQztBQUN4QyxTQUFRLEdBQUVELEdBQUgsYUFBR0EsR0FBSCx1QkFBR0EsR0FBRyxDQUFFRSxXQUFZLElBQUdELE9BQVEsRUFBdEM7QUFDRDs7QUFZRCxlQUFlRSx3QkFBZixDQUF5Q0gsR0FBekMsRUFBOEM7QUFDNUMsUUFBTUksR0FBRyxHQUFHLE1BQU1KLEdBQUcsQ0FBQ0ssS0FBSixDQUFVLENBQUMsS0FBRCxFQUFRLGdCQUFSLENBQVYsQ0FBbEI7QUFDQSxRQUFNQyxLQUFLLEdBQUcsRUFBZDtBQUNBLFFBQU1DLFVBQVUsR0FBRyxFQUFuQjs7QUFDQSxPQUFLLE1BQU1DLElBQVgsSUFBbUJKLEdBQUcsQ0FBQ0ssS0FBSixDQUFVLElBQVYsQ0FBbkIsRUFBb0M7QUFFbEMsVUFBTSxLQUFLQyxLQUFMLEdBQWFDLEVBQWIsR0FBa0JDLFFBQWxCLElBQThCSixJQUFJLENBQUNLLElBQUwsR0FBWUosS0FBWixDQUFrQixLQUFsQixDQUFwQzs7QUFDQSxRQUFJLENBQUNHLFFBQUwsRUFBZTtBQUNiO0FBQ0Q7O0FBQ0QsUUFBSUEsUUFBUSxDQUFDRSxVQUFULENBQW9CLEdBQXBCLENBQUosRUFBOEI7QUFDNUJQLE1BQUFBLFVBQVUsQ0FBQ1EsSUFBWCxDQUFnQlAsSUFBSSxDQUFDSyxJQUFMLEVBQWhCO0FBQ0Q7O0FBQ0QsUUFBSUgsS0FBSyxLQUFLLFVBQVYsSUFBd0JDLEVBQUUsS0FBSyxJQUFuQyxFQUF5QztBQUN2QztBQUNEOztBQUNELFFBQUksQ0FBQ2pDLHVCQUF1QixDQUFDc0MsSUFBeEIsQ0FBNkJKLFFBQTdCLENBQUwsRUFBNkM7QUFDM0M7QUFDRDs7QUFFRE4sSUFBQUEsS0FBSyxDQUFDUyxJQUFOLENBQVdILFFBQVg7QUFDRDs7QUFDRCxNQUFJSyxnQkFBRUMsT0FBRixDQUFVWixLQUFWLENBQUosRUFBc0I7QUFDcEJhLG9CQUFPQyxLQUFQLENBQWEsa0NBQWI7O0FBQ0EsUUFBSSxDQUFDSCxnQkFBRUMsT0FBRixDQUFVWCxVQUFWLENBQUwsRUFBNEI7QUFDMUJZLHNCQUFPQyxLQUFQLENBQWMsc0JBQXFCQyxJQUFJLENBQUNDLFNBQUwsQ0FBZWYsVUFBZixFQUEyQixJQUEzQixFQUFpQyxDQUFqQyxDQUFvQyxFQUF2RTtBQUNEO0FBQ0YsR0FMRCxNQUtPO0FBQ0xZLG9CQUFPQyxLQUFQLENBQWMsVUFBU2QsS0FBSyxDQUFDaUIsTUFBTyxvQkFBbUJqQyxvQkFBS2tDLFNBQUwsQ0FBZSxRQUFmLEVBQXlCbEIsS0FBSyxDQUFDaUIsTUFBL0IsRUFBdUMsS0FBdkMsQ0FBOEMsSUFBeEYsR0FDWEYsSUFBSSxDQUFDQyxTQUFMLENBQWVoQixLQUFmLENBREY7QUFFRDs7QUFFRCxTQUFPVyxnQkFBRVEsSUFBRixDQUFPbkIsS0FBUCxDQUFQO0FBQ0Q7O0FBb0JELGVBQWVvQixpQkFBZixDQUFrQzFCLEdBQWxDLEVBQXVDMkIsWUFBWSxHQUFHLElBQXRELEVBQTREO0FBQzFELFFBQU1DLFdBQVcsR0FBRyxNQUFNekIsd0JBQXdCLENBQUNILEdBQUQsQ0FBbEQ7QUFDQSxRQUFNNkIsUUFBUSxHQUFHLEVBQWpCOztBQUNBLE9BQUssTUFBTUMsVUFBWCxJQUF5QkYsV0FBekIsRUFBc0M7QUFDcEMsUUFBSUQsWUFBWSxLQUFLL0Msd0JBQWpCLElBQTZDa0QsVUFBVSxLQUFNLElBQUdILFlBQWEsRUFBakYsRUFBb0Y7QUFDbEZFLE1BQUFBLFFBQVEsQ0FBQ2QsSUFBVCxDQUFjO0FBQ1pnQixRQUFBQSxJQUFJLEVBQUVELFVBRE07QUFFWjdCLFFBQUFBLE9BQU8sRUFBRTVCO0FBRkcsT0FBZDtBQUlBO0FBQ0Q7O0FBRUQsVUFBTTJELGVBQWUsR0FBR3RELHVCQUF1QixDQUFDdUQsSUFBeEIsQ0FBNkJILFVBQTdCLENBQXhCOztBQUNBLFFBQUksQ0FBQ0UsZUFBTCxFQUFzQjtBQUNwQjtBQUNEOztBQUNELFVBQU1FLGNBQWMsR0FBR3ZELHdCQUF3QixDQUFDc0QsSUFBekIsQ0FBOEJILFVBQTlCLENBQXZCOztBQUNBLFFBQUksQ0FBQ0UsZUFBZSxDQUFDLENBQUQsQ0FBaEIsSUFBdUIsQ0FBQ0UsY0FBNUIsRUFBNEM7QUFDMUM7QUFDRDs7QUFFRCxRQUFJUCxZQUFZLElBQUlHLFVBQVUsS0FBTSxJQUFHSCxZQUFhLEVBQWhELElBQXFELENBQUNBLFlBQTFELEVBQXdFO0FBQ3RFRSxNQUFBQSxRQUFRLENBQUNkLElBQVQsQ0FBYztBQUNaZ0IsUUFBQUEsSUFBSSxFQUFFRCxVQURNO0FBRVo3QixRQUFBQSxPQUFPLEVBQUUrQixlQUFlLENBQUMsQ0FBRCxDQUFmLEdBQ0osR0FBRTFELFlBQWEsR0FBRTBELGVBQWUsQ0FBQyxDQUFELENBQUksRUFEaEMsR0FFSixHQUFFMUQsWUFBYSxHQUFFNEQsY0FBYyxDQUFDLENBQUQsQ0FBSTtBQUo1QixPQUFkO0FBTUQ7QUFDRjs7QUFDRCxTQUFPTCxRQUFQO0FBQ0Q7O0FBYUQsZUFBZU0sb0JBQWYsQ0FBcUNuQyxHQUFyQyxFQUEwQzhCLFVBQTFDLEVBQXNETSxtQkFBbUIsR0FBRyxJQUE1RSxFQUFrRjtBQUdoRixRQUFNQyxVQUFVLEdBQUdQLFVBQVUsQ0FBQ1EsT0FBWCxDQUFtQixJQUFuQixFQUF5QixFQUF6QixDQUFuQjtBQUNBLE1BQUksQ0FBQ0MsU0FBRCxFQUFZQyxPQUFaLElBQXVCekQsb0JBQTNCOztBQUNBLE1BQUlxRCxtQkFBSixFQUF5QjtBQUN2QkksSUFBQUEsT0FBTyxHQUFHSixtQkFBbUIsSUFBSUksT0FBTyxHQUFHRCxTQUFkLENBQTdCO0FBQ0FBLElBQUFBLFNBQVMsR0FBR0gsbUJBQVo7QUFDRDs7QUFDRGpCLGtCQUFPQyxLQUFQLENBQWMsMEJBQXlCaUIsVUFBVyxjQUFyQyxHQUNWLGlCQUFnQkUsU0FBVSxLQUFJQyxPQUFRLEVBRHpDOztBQUVBLE1BQUksQ0FBQ0osbUJBQUwsRUFBMEI7QUFDeEJqQixvQkFBT0MsS0FBUCxDQUFjLGtFQUFELEdBQ1YsMEJBREg7QUFFRDs7QUFDRCxTQUFPLE1BQU0vQiw4QkFBOEIsQ0FBQyxZQUFZO0FBQ3RELFFBQUlvRCxTQUFKOztBQUNBLFFBQUk7QUFDRkEsTUFBQUEsU0FBUyxHQUFHLE1BQU0sb0NBQWtCRixTQUFsQixFQUE2QkMsT0FBN0IsQ0FBbEI7QUFDRCxLQUZELENBRUUsT0FBT0UsQ0FBUCxFQUFVO0FBQ1YsWUFBTSxJQUFJQyxLQUFKLENBQVcsMkRBQUQsR0FDYixZQUFXSixTQUFVLEtBQUlDLE9BQVEsMkNBRHBCLEdBRWIsNERBRkcsQ0FBTjtBQUdEOztBQUNELFVBQU14QyxHQUFHLENBQUM0QyxPQUFKLENBQVksQ0FBQyxTQUFELEVBQWEsT0FBTUgsU0FBVSxFQUE3QixFQUFpQyxpQkFBZ0JKLFVBQVcsRUFBNUQsQ0FBWixDQUFOO0FBQ0EsV0FBT0ksU0FBUDtBQUNELEdBWDBDLENBQTNDO0FBWUQ7O0FBc0NELGVBQWVJLHNCQUFmLENBQXVDN0MsR0FBdkMsRUFBNEM4QyxlQUE1QyxFQUE2REMsSUFBSSxHQUFHLEVBQXBFLEVBQXdFO0FBQ3RFLE1BQUk5QixnQkFBRUMsT0FBRixDQUFVNEIsZUFBVixDQUFKLEVBQWdDO0FBQzlCO0FBQ0Q7O0FBRUQsUUFBTTtBQUNKVixJQUFBQSxtQkFBbUIsR0FBRyxJQURsQjtBQUVKWSxJQUFBQSx1QkFBdUIsR0FBRyxJQUZ0QjtBQUdKQyxJQUFBQSw4QkFBOEIsR0FBRztBQUg3QixNQUlGRixJQUpKOztBQU1BLE1BQUksQ0FBQ0MsdUJBQUwsRUFBOEI7QUFDNUI3QixvQkFBTytCLElBQVAsQ0FBYSwyREFBRCxHQUNULHFEQURIO0FBRUQ7O0FBRUQsTUFBSSxDQUFDRCw4QkFBTCxFQUFxQztBQUNuQzlCLG9CQUFPK0IsSUFBUCxDQUFhLGlFQUFELEdBQ1QsNkZBRFMsR0FFVCxtQkFGSDtBQUdEOztBQUVELE1BQUksQ0FBQ0YsdUJBQUQsSUFBNEIsQ0FBQ0MsOEJBQWpDLEVBQWlFO0FBQy9EO0FBQ0Q7O0FBR0Q5QixrQkFBT0MsS0FBUCxDQUFjLDBCQUF5QjlCLG9CQUFLa0MsU0FBTCxDQUFlLFNBQWYsRUFBMEJzQixlQUFlLENBQUN2QixNQUExQyxFQUFrRCxJQUFsRCxDQUF3RCxFQUEvRjs7QUFDQSxRQUFNNEIsZ0JBQWdCLEdBQUcsRUFBekI7O0FBQ0EsT0FBSyxNQUFNQyxJQUFYLElBQW1CTixlQUFuQixFQUFvQztBQUNsQ0ssSUFBQUEsZ0JBQWdCLENBQUNwQyxJQUFqQixDQUFzQixDQUFDLFlBQVk7QUFDakMsVUFBSTBCLFNBQUo7O0FBQ0EsVUFBSTtBQUNGQSxRQUFBQSxTQUFTLEdBQUcsTUFBTU4sb0JBQW9CLENBQUNuQyxHQUFELEVBQU1vRCxJQUFJLENBQUNyQixJQUFYLEVBQWlCSyxtQkFBakIsQ0FBdEM7O0FBQ0EsWUFBSWEsOEJBQUosRUFBb0M7QUFDbENHLFVBQUFBLElBQUksQ0FBQ0YsSUFBTCxHQUFZLE1BQU1HLE9BQU8sQ0FBQ1osU0FBRCxDQUF6QjtBQUNEOztBQUNELFlBQUlPLHVCQUFKLEVBQTZCO0FBQzNCSSxVQUFBQSxJQUFJLENBQUNFLEtBQUwsR0FBYSxNQUFNQyxPQUFPLENBQUNkLFNBQUQsQ0FBMUI7QUFDRDtBQUNGLE9BUkQsQ0FRRSxPQUFPQyxDQUFQLEVBQVU7QUFDVnZCLHdCQUFPQyxLQUFQLENBQWFzQixDQUFiO0FBQ0QsT0FWRCxTQVVVO0FBQ1IsWUFBSUQsU0FBSixFQUFlO0FBQ2IsZ0JBQU16QyxHQUFHLENBQUN3RCxpQkFBSixDQUFzQmYsU0FBdEIsQ0FBTjtBQUNEO0FBQ0Y7QUFDRixLQWpCcUIsR0FBdEI7QUFrQkQ7O0FBQ0QsUUFBTWdCLGtCQUFFQyxHQUFGLENBQU1QLGdCQUFOLENBQU47O0FBQ0FoQyxrQkFBT0MsS0FBUCxDQUFjLCtCQUFkO0FBQ0Q7O0FBR0QsZUFBZW1DLE9BQWYsQ0FBd0JkLFNBQXhCLEVBQW1DO0FBQ2pDLFNBQU8sQ0FBQyxNQUFNLG9CQUFNO0FBQ2xCa0IsSUFBQUEsR0FBRyxFQUFHLG9CQUFtQmxCLFNBQVUsWUFEakI7QUFFbEI3QyxJQUFBQSxPQUFPLEVBQUVSO0FBRlMsR0FBTixDQUFQLEVBR0h3RSxJQUhKO0FBSUQ7O0FBR0QsZUFBZVAsT0FBZixDQUF3QlosU0FBeEIsRUFBbUM7QUFDakMsU0FBTyxDQUFDLE1BQU0sb0JBQU07QUFDbEJrQixJQUFBQSxHQUFHLEVBQUcsb0JBQW1CbEIsU0FBVSxlQURqQjtBQUVsQjdDLElBQUFBLE9BQU8sRUFBRVI7QUFGUyxHQUFOLENBQVAsRUFHSHdFLElBSEo7QUFJRDs7QUFjRDlELE9BQU8sQ0FBQytELGVBQVIsR0FBMEIsZUFBZUEsZUFBZixDQUFnQzdELEdBQWhDLEVBQXFDQyxPQUFyQyxFQUE4QztBQUN0RSxRQUFNNkQsUUFBUSxHQUFHdkYsbUJBQW1CLENBQUMwRCxJQUFwQixDQUF5QmhDLE9BQXpCLENBQWpCOztBQUNBLE1BQUksQ0FBQzZELFFBQUwsRUFBZTtBQUNiLFVBQU0sSUFBSW5CLEtBQUosQ0FBVyxtQ0FBa0MxQyxPQUFRLEdBQXJELENBQU47QUFDRDs7QUFFRCxRQUFNOEQsR0FBRyxHQUFHRCxRQUFRLENBQUMsQ0FBRCxDQUFwQjs7QUFDQTNDLGtCQUFPQyxLQUFQLENBQWMsR0FBRW5CLE9BQVEsa0JBQWlCOEQsR0FBSSxFQUE3Qzs7QUFDQTVDLGtCQUFPQyxLQUFQLENBQWMscUNBQW9DbkIsT0FBUSxHQUExRDs7QUFDQSxRQUFNK0QsR0FBRyxHQUFHLE1BQU1oRSxHQUFHLENBQUNpRSxZQUFKLENBQWlCRixHQUFqQixDQUFsQjs7QUFDQTVDLGtCQUFPQyxLQUFQLENBQWMsc0JBQXFCNEMsR0FBSSxHQUF2Qzs7QUFDQSxTQUFPQSxHQUFQO0FBQ0QsQ0FaRDs7QUFxQkFsRSxPQUFPLENBQUNvRSxpQkFBUixHQUE0QixTQUFTQSxpQkFBVCxDQUE0QnBCLGVBQTVCLEVBQTZDO0FBQ3ZFRSxFQUFBQSx1QkFBdUIsR0FBRyxJQUQ2QztBQUV2RW1CLEVBQUFBLGVBQWUsR0FBRztBQUZxRCxJQUdyRSxFQUh3QixFQUdwQjtBQUNOLE1BQUlBLGVBQUosRUFBcUI7QUFDbkIsV0FBTyxDQUFDOUYsWUFBRCxDQUFQO0FBQ0Q7O0FBRUQsUUFBTStGLE1BQU0sR0FBRyxFQUFmOztBQUNBLE9BQUssTUFBTTtBQUFDbkUsSUFBQUEsT0FBRDtBQUFVcUQsSUFBQUEsS0FBVjtBQUFpQnZCLElBQUFBLElBQWpCO0FBQXVCc0MsSUFBQUE7QUFBdkIsR0FBWCxJQUFrRHZCLGVBQWxELEVBQW1FO0FBQ2pFLFFBQUlFLHVCQUF1QixJQUFJLENBQUFNLEtBQUssU0FBTCxJQUFBQSxLQUFLLFdBQUwsWUFBQUEsS0FBSyxDQUFFL0IsTUFBUCxNQUFrQixDQUFqRCxFQUFvRDtBQUNsREosc0JBQU8rQixJQUFQLENBQWEseUJBQXdCakQsT0FBUSxTQUFROEIsSUFBSyxJQUE5QyxHQUNULHlDQURIOztBQUVBO0FBQ0Q7O0FBQ0QsUUFBSXNDLFdBQUosRUFBaUI7QUFDZkQsTUFBQUEsTUFBTSxDQUFDckQsSUFBUCxDQUFZc0QsV0FBWjtBQUNEO0FBQ0Y7O0FBQ0RsRCxrQkFBT0MsS0FBUCxDQUFjLFNBQVE5QixvQkFBS2tDLFNBQUwsQ0FBZSxTQUFmLEVBQTBCNEMsTUFBTSxDQUFDN0MsTUFBakMsRUFBeUMsSUFBekMsQ0FBK0MsS0FBSUYsSUFBSSxDQUFDQyxTQUFMLENBQWU4QyxNQUFmLENBQXVCLEVBQWhHOztBQUNBLFNBQU9BLE1BQVA7QUFDRCxDQXJCRDs7QUErREF0RSxPQUFPLENBQUN3RSxrQkFBUixHQUE2QixlQUFlQSxrQkFBZixDQUFtQ3RFLEdBQW5DLEVBQXdDO0FBQ25FdUUsRUFBQUEsbUJBQW1CLEdBQUcsSUFENkM7QUFFbkV2QixFQUFBQSx1QkFBdUIsR0FBRyxJQUZ5QztBQUduRVosRUFBQUEsbUJBQW1CLEdBQUcsSUFINkM7QUFJbkVhLEVBQUFBLDhCQUE4QixHQUFHLElBSmtDO0FBS25Fa0IsRUFBQUEsZUFBZSxHQUFHO0FBTGlELElBTWpFLEVBTnlCLEVBTXJCO0FBQ04sTUFBSUEsZUFBSixFQUFxQjtBQUNuQixXQUFPLEVBQVA7QUFDRDs7QUFFRGhELGtCQUFPQyxLQUFQLENBQWEsc0NBQWI7O0FBQ0EsUUFBTTBCLGVBQWUsR0FBRyxNQUFNcEIsaUJBQWlCLENBQUMxQixHQUFELEVBQU11RSxtQkFBTixDQUEvQztBQUVBLFFBQU0xQixzQkFBc0IsQ0FBQzdDLEdBQUQsRUFBTThDLGVBQU4sRUFBdUI7QUFDakRFLElBQUFBLHVCQURpRDtBQUVqREMsSUFBQUEsOEJBRmlEO0FBR2pEYixJQUFBQTtBQUhpRCxHQUF2QixDQUE1Qjs7QUFNQSxPQUFLLE1BQU1vQyxjQUFYLElBQTZCMUIsZUFBN0IsRUFBOEM7QUFDNUMsVUFBTTtBQUFDN0MsTUFBQUEsT0FBRDtBQUFVaUQsTUFBQUE7QUFBVixRQUFrQnNCLGNBQXhCO0FBQ0FBLElBQUFBLGNBQWMsQ0FBQ0gsV0FBZixHQUE2QixJQUE3QjtBQUVBLFFBQUlJLE1BQU0sR0FBR3hFLE9BQWI7QUFDQSxRQUFJeUUsT0FBTyxHQUFHQyxTQUFkOztBQUNBLFFBQUksQ0FBQ0osbUJBQUwsRUFBMEI7QUFDeEIsWUFBTUssUUFBUSxHQUFHbkcsbUJBQW1CLENBQUN3RCxJQUFwQixDQUF5QmhDLE9BQXpCLENBQWpCOztBQUNBLFVBQUk7QUFHRixjQUFNK0QsR0FBRyxHQUFHWSxRQUFRLEdBQUdBLFFBQVEsQ0FBQyxDQUFELENBQVgsR0FBaUIsTUFBTTlFLE9BQU8sQ0FBQytELGVBQVIsQ0FBd0I3RCxHQUF4QixFQUE2QkMsT0FBN0IsQ0FBM0M7QUFDQXdFLFFBQUFBLE1BQU0sR0FBSSxHQUFFbkcsWUFBYSxHQUFFMEYsR0FBSSxFQUEvQjtBQUNBLGNBQU1GLFFBQVEsR0FBR3ZGLG1CQUFtQixDQUFDMEQsSUFBcEIsQ0FBeUJoQyxPQUF6QixDQUFqQjtBQUNBeUUsUUFBQUEsT0FBTyxHQUFHO0FBQ1JHLFVBQUFBLElBQUksRUFBRWIsR0FERTtBQUVSYyxVQUFBQSxFQUFFLEVBQUVoQixRQUFRLEdBQUdBLFFBQVEsQ0FBQyxDQUFELENBQVgsR0FBaUI7QUFGckIsU0FBVjtBQUlELE9BVkQsQ0FVRSxPQUFPcEIsQ0FBUCxFQUFVO0FBQ1Z2Qix3QkFBTzRELElBQVAsQ0FBWXJDLENBQUMsQ0FBQ3NDLE9BQWQ7O0FBQ0E7QUFDRDtBQUNGOztBQUVEUixJQUFBQSxjQUFjLENBQUNILFdBQWYsR0FBNkJJLE1BQTdCO0FBQ0EsVUFBTVEsR0FBRyxHQUFHbEYsaUJBQWlCLENBQUNDLEdBQUQsRUFBTXlFLE1BQU4sQ0FBN0I7O0FBQ0EsUUFBSXZCLElBQUksSUFBSXdCLE9BQVosRUFBcUI7QUFDbkIxRixNQUFBQSxzQkFBc0IsQ0FBQ2tHLEdBQXZCLENBQTJCRCxHQUEzQixFQUFnQztBQUFFL0IsUUFBQUEsSUFBRjtBQUFRd0IsUUFBQUE7QUFBUixPQUFoQztBQUNELEtBRkQsTUFFTyxJQUFJMUYsc0JBQXNCLENBQUNtRyxHQUF2QixDQUEyQkYsR0FBM0IsQ0FBSixFQUFxQztBQUMxQ2pHLE1BQUFBLHNCQUFzQixDQUFDb0csR0FBdkIsQ0FBMkJILEdBQTNCO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPbkMsZUFBUDtBQUNELENBckREOztBQWtGQWhELE9BQU8sQ0FBQ3VGLGlCQUFSLEdBQTRCLFNBQVNBLGlCQUFULENBQTRCckYsR0FBNUIsRUFBaUNDLE9BQWpDLEVBQTBDO0FBQ3BFLFFBQU1nRixHQUFHLEdBQUdsRixpQkFBaUIsQ0FBQ0MsR0FBRCxFQUFNQyxPQUFOLENBQTdCO0FBQ0EsU0FBT2pCLHNCQUFzQixDQUFDc0csR0FBdkIsQ0FBMkJMLEdBQTNCLENBQVA7QUFDRCxDQUhEOztBQWVBbkYsT0FBTyxDQUFDeUYsc0JBQVIsR0FBaUMsU0FBU0Esc0JBQVQsQ0FBaUN4QyxJQUFqQyxFQUF1Q3lDLFFBQXZDLEVBQWlEQyxjQUFqRCxFQUFpRTtBQUFBOztBQUNoRyxRQUFNQyxJQUFJLEdBQUc7QUFBRUMsSUFBQUEsYUFBYSxFQUFFO0FBQWpCLEdBQWI7QUFFQSxRQUFNQyxjQUFjLEdBQUcsd0JBQUE3QyxJQUFJLENBQUM0QyxhQUFMLDRFQUFvQkMsY0FBcEIsS0FBc0M3QyxJQUFJLENBQUM4QyxVQUFsRTs7QUFDQSxNQUFJRCxjQUFKLEVBQW9CO0FBRWxCRixJQUFBQSxJQUFJLENBQUNDLGFBQUwsQ0FBbUJDLGNBQW5CLEdBQW9DQSxjQUFwQztBQUNEOztBQUNELE1BQUkzRSxnQkFBRTZFLFNBQUYsQ0FBWS9DLElBQUksQ0FBQ2dELG1CQUFqQixDQUFKLEVBQTJDO0FBQ3pDTCxJQUFBQSxJQUFJLENBQUNDLGFBQUwsQ0FBbUJLLG9CQUFuQixHQUEwQ2pELElBQUksQ0FBQ2dELG1CQUEvQztBQUNEOztBQUNELE1BQUloRCxJQUFJLENBQUNrRCxvQkFBVCxFQUErQjtBQUM3QlAsSUFBQUEsSUFBSSxDQUFDQyxhQUFMLENBQW1CQyxjQUFuQixHQUFvQzdDLElBQUksQ0FBQ2tELG9CQUF6QztBQUNEOztBQUNELE1BQUlsRCxJQUFJLENBQUNtRCxxQkFBVCxFQUFnQztBQUM5QlIsSUFBQUEsSUFBSSxDQUFDQyxhQUFMLENBQW1CUSxlQUFuQixHQUFxQ3BELElBQUksQ0FBQ21ELHFCQUExQztBQUNEOztBQUNELE1BQUluRCxJQUFJLENBQUNxRCxvQkFBVCxFQUErQjtBQUM3QlYsSUFBQUEsSUFBSSxDQUFDQyxhQUFMLENBQW1CVSxjQUFuQixHQUFvQ3RELElBQUksQ0FBQ3FELG9CQUF6QztBQUNELEdBRkQsTUFFTyxJQUFJWCxjQUFjLFNBQWQsSUFBQUEsY0FBYyxXQUFkLDZCQUFBQSxjQUFjLENBQUVmLE9BQWhCLHdFQUF5QkcsSUFBekIsSUFBaUNZLGNBQWpDLGFBQWlDQSxjQUFqQyx5Q0FBaUNBLGNBQWMsQ0FBRWYsT0FBakQsbURBQWlDLHVCQUF5QkksRUFBOUQsRUFBa0U7QUFDdkVZLElBQUFBLElBQUksQ0FBQ0MsYUFBTCxDQUFtQlUsY0FBbkIsR0FBb0NaLGNBQWMsQ0FBQ2YsT0FBZixDQUF1QkcsSUFBM0Q7QUFDRDs7QUFDRCxNQUFJNUQsZ0JBQUVxRixPQUFGLENBQVV2RCxJQUFJLENBQUN3RCxXQUFmLE1BQWdDLGtCQUFwQyxFQUF3RDtBQUN0RGIsSUFBQUEsSUFBSSxDQUFDQyxhQUFMLENBQW1CUSxlQUFuQixHQUFxQ3BELElBQUksQ0FBQ3lELFdBQTFDO0FBQ0Q7O0FBQ0QsTUFBSXpELElBQUksQ0FBQzBELGdCQUFULEVBQTJCO0FBQ3pCZixJQUFBQSxJQUFJLENBQUNlLGdCQUFMLEdBQXdCMUQsSUFBSSxDQUFDMEQsZ0JBQTdCO0FBQ0Q7O0FBQ0QsUUFBTUMsUUFBUSxHQUFHekYsZ0JBQUVxRixPQUFGLENBQVVaLElBQUksQ0FBQ0MsYUFBTCxDQUFtQkMsY0FBN0IsTUFBaUQsUUFBbEU7O0FBQ0EsTUFBSTNFLGdCQUFFMEYsUUFBRixDQUFXN0gsMEJBQVgsRUFBdUM0RyxJQUFJLENBQUNDLGFBQUwsQ0FBbUJDLGNBQTFELEtBQTZFYyxRQUFqRixFQUEyRjtBQUl6RixRQUFJQSxRQUFKLEVBQWM7QUFDWmhCLE1BQUFBLElBQUksQ0FBQ0MsYUFBTCxDQUFtQkMsY0FBbkIsR0FBb0MvRyxtQkFBcEM7QUFDRDs7QUFDRCxXQUFPNkcsSUFBSSxDQUFDQyxhQUFMLENBQW1CUSxlQUExQjtBQUNBLFdBQU9ULElBQUksQ0FBQ0MsYUFBTCxDQUFtQlUsY0FBMUI7QUFDRDs7QUFFRFgsRUFBQUEsSUFBSSxDQUFDQyxhQUFMLENBQW1CaUIsbUJBQW5CLEdBQXlDcEIsUUFBekM7O0FBRUEsTUFBSXZFLGdCQUFFNEYsYUFBRixDQUFnQjlELElBQUksQ0FBQytELFlBQXJCLEtBQXNDN0YsZ0JBQUU0RixhQUFGLENBQWdCOUQsSUFBSSxDQUFDZ0Usa0JBQXJCLENBQTFDLEVBQW9GO0FBQ2xGLFFBQUloRSxJQUFJLENBQUMrRCxZQUFULEVBQXVCO0FBQ3JCM0Ysc0JBQU80RCxJQUFQLENBQWEsZ0ZBQWI7QUFDRDs7QUFDRFcsSUFBQUEsSUFBSSxDQUFDb0IsWUFBTCxHQUFvQi9ELElBQUksQ0FBQ2dFLGtCQUFMLElBQTJCaEUsSUFBSSxDQUFDK0QsWUFBcEQ7QUFDRDs7QUFDRCxNQUFJL0QsSUFBSSxDQUFDaUUsd0JBQVQsRUFBbUM7QUFDakM3RixvQkFBTzRELElBQVAsQ0FBYSwrREFBRCxHQUNULDZFQURIOztBQUVBLFVBQU1rQyxPQUFPLEdBQUc7QUFBQ0MsTUFBQUEsV0FBVyxFQUFFO0FBQWQsS0FBaEI7QUFFQXhCLElBQUFBLElBQUksQ0FBQ29CLFlBQUwsR0FBb0JwQixJQUFJLENBQUNvQixZQUFMLEdBQ2hCSyxNQUFNLENBQUNDLE1BQVAsQ0FBYyxFQUFkLEVBQWtCMUIsSUFBSSxDQUFDb0IsWUFBdkIsRUFBcUNHLE9BQXJDLENBRGdCLEdBRWhCQSxPQUZKO0FBR0Q7O0FBRUQsOEJBQUlsRSxJQUFJLENBQUM0QyxhQUFULGlEQUFJLHFCQUFvQjBCLFNBQXhCLEVBQW1DO0FBRWpDdEUsSUFBQUEsSUFBSSxDQUFDNEMsYUFBTCxDQUFtQjJCLElBQW5CLEdBQTBCLENBQUMsSUFBSXZFLElBQUksQ0FBQzRDLGFBQUwsQ0FBbUIyQixJQUFuQixJQUEyQixFQUEvQixDQUFELEVBQXFDLEdBQUd2RSxJQUFJLENBQUM0QyxhQUFMLENBQW1CMEIsU0FBM0QsQ0FBMUI7QUFDQSxXQUFPdEUsSUFBSSxDQUFDNEMsYUFBTCxDQUFtQjBCLFNBQTFCO0FBQ0Q7O0FBRURsRyxrQkFBT0MsS0FBUCxDQUFhLDhDQUNYQyxJQUFJLENBQUNDLFNBQUwsQ0FBZW9FLElBQUksQ0FBQ0MsYUFBcEIsRUFBbUMsSUFBbkMsRUFBeUMsQ0FBekMsQ0FERjs7QUFHQSxRQUFNNEIsaUJBQWlCLEdBQUcsRUFBMUI7O0FBQ0EsT0FBSyxNQUFNLENBQUNDLEdBQUQsRUFBTUMsR0FBTixDQUFYLElBQXlCeEcsZ0JBQUV5RyxPQUFGLENBQVUzRSxJQUFJLENBQUM0QyxhQUFmLENBQXpCLEVBQXdEO0FBQ3RELFFBQUkxRSxnQkFBRTBHLFdBQUYsQ0FBY2pDLElBQUksQ0FBQ0MsYUFBTCxDQUFtQjZCLEdBQW5CLENBQWQsQ0FBSixFQUE0QztBQUMxQzlCLE1BQUFBLElBQUksQ0FBQ0MsYUFBTCxDQUFtQjZCLEdBQW5CLElBQTBCQyxHQUExQjtBQUNELEtBRkQsTUFFTztBQUNMRixNQUFBQSxpQkFBaUIsQ0FBQ3hHLElBQWxCLENBQXVCeUcsR0FBdkI7QUFDRDtBQUNGOztBQUNELE1BQUksQ0FBQ3ZHLGdCQUFFQyxPQUFGLENBQVVxRyxpQkFBVixDQUFMLEVBQW1DO0FBQ2pDcEcsb0JBQU8rQixJQUFQLENBQVksa0VBQ1YsZ0NBREY7O0FBRUEsU0FBSyxNQUFNMEUsT0FBWCxJQUFzQkwsaUJBQXRCLEVBQXlDO0FBQ3ZDcEcsc0JBQU8rQixJQUFQLENBQWEsS0FBSTBFLE9BQVEsS0FBSXZHLElBQUksQ0FBQ0MsU0FBTCxDQUFleUIsSUFBSSxDQUFDNEMsYUFBTCxDQUFtQmlDLE9BQW5CLENBQWYsQ0FBNEMsR0FBekU7QUFDRDtBQUNGOztBQUVELFNBQU9sQyxJQUFQO0FBQ0QsQ0FwRkQ7O2VBc0ZlNUYsTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IHsgZmluZEFQb3J0Tm90SW5Vc2UgfSBmcm9tICdwb3J0c2Nhbm5lcic7XG5pbXBvcnQgTFJVIGZyb20gJ2xydS1jYWNoZSc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5cbmNvbnN0IE5BVElWRV9XSU4gPSAnTkFUSVZFX0FQUCc7XG5jb25zdCBXRUJWSUVXX1dJTiA9ICdXRUJWSUVXJztcbmNvbnN0IENIUk9NSVVNX1dJTiA9ICdDSFJPTUlVTSc7XG5jb25zdCBXRUJWSUVXX0JBU0UgPSBgJHtXRUJWSUVXX1dJTn1fYDtcbmNvbnN0IFdFQlZJRVdfUElEX1BBVFRFUk4gPSBuZXcgUmVnRXhwKGBeJHtXRUJWSUVXX0JBU0V9KFxcXFxkKylgKTtcbmNvbnN0IFdFQlZJRVdfUEtHX1BBVFRFUk4gPSBuZXcgUmVnRXhwKGBeJHtXRUJWSUVXX0JBU0V9KFteXFxcXGRcXFxcc11bXFxcXHcuXSopYCk7XG5jb25zdCBERVZUT09MU19TT0NLRVRfUEFUVEVSTiA9IC9AW1xcdy5dK19kZXZ0b29sc19yZW1vdGVfPyhcXGQrKT9cXGIvO1xuY29uc3QgQ1JPU1NXQUxLX1NPQ0tFVF9QQVRURVJOID0gL0AoW1xcdy5dKylfZGV2dG9vbHNfcmVtb3RlXFxiLztcbmNvbnN0IENIUk9NSVVNX0RFVlRPT0xTX1NPQ0tFVCA9ICdjaHJvbWVfZGV2dG9vbHNfcmVtb3RlJztcbmNvbnN0IENIUk9NRV9QQUNLQUdFX05BTUUgPSAnY29tLmFuZHJvaWQuY2hyb21lJztcbmNvbnN0IEtOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTID0gW1xuICBDSFJPTUVfUEFDS0FHRV9OQU1FLFxuICAnY29tLmNocm9tZS5iZXRhJyxcbiAgJ2NvbS5jaHJvbWUuZGV2JyxcbiAgJ2NvbS5jaHJvbWUuY2FuYXJ5Jyxcbl07XG5jb25zdCBERVZUT09MU19QT1JUU19SQU5HRSA9IFsxMDkwMCwgMTEwMDBdO1xuY29uc3QgV0VCVklFV1NfREVUQUlMU19DQUNIRSA9IG5ldyBMUlUoe1xuICBtYXg6IDEwMCxcbiAgdXBkYXRlQWdlT25HZXQ6IHRydWUsXG59KTtcbmNvbnN0IENEUF9SRVFfVElNRU9VVCA9IDIwMDA7IC8vIG1zXG5jb25zdCBERVZUT09MU19QT1JUX0FMTE9DQVRJT05fR1VBUkQgPSB1dGlsLmdldExvY2tGaWxlR3VhcmQoXG4gIHBhdGgucmVzb2x2ZShvcy50bXBkaXIoKSwgJ2FuZHJvaWRfZGV2dG9vbHNfcG9ydF9ndWFyZCcpLFxuICB7dGltZW91dDogNywgdHJ5UmVjb3Zlcnk6IHRydWV9XG4pO1xuXG5jb25zdCBoZWxwZXJzID0ge307XG5cbmZ1bmN0aW9uIHRvRGV0YWlsc0NhY2hlS2V5IChhZGIsIHdlYnZpZXcpIHtcbiAgcmV0dXJuIGAke2FkYj8uY3VyRGV2aWNlSWR9OiR7d2Vidmlld31gO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gZ2V0cyBhIGxpc3Qgb2YgYW5kcm9pZCBzeXN0ZW0gcHJvY2Vzc2VzIGFuZCByZXR1cm5zIG9uZXNcbiAqIHRoYXQgbG9vayBsaWtlIHdlYnZpZXdzXG4gKiBTZWUgaHR0cHM6Ly9jcy5jaHJvbWl1bS5vcmcvY2hyb21pdW0vc3JjL2Nocm9tZS9icm93c2VyL2RldnRvb2xzL2RldmljZS9hbmRyb2lkX2RldmljZV9pbmZvX3F1ZXJ5LmNjXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGFkYiAtIGFuIEFEQiBpbnN0YW5jZVxuICpcbiAqIEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fSAtIGEgbGlzdCBvZiBtYXRjaGluZyB3ZWJ2aWV3IHNvY2tldCBuYW1lcyAoaW5jbHVkaW5nIHRoZSBsZWFkaW5nICdAJylcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0UG90ZW50aWFsV2Vidmlld1Byb2NzIChhZGIpIHtcbiAgY29uc3Qgb3V0ID0gYXdhaXQgYWRiLnNoZWxsKFsnY2F0JywgJy9wcm9jL25ldC91bml4J10pO1xuICBjb25zdCBuYW1lcyA9IFtdO1xuICBjb25zdCBhbGxNYXRjaGVzID0gW107XG4gIGZvciAoY29uc3QgbGluZSBvZiBvdXQuc3BsaXQoJ1xcbicpKSB7XG4gICAgLy8gTnVtIFJlZkNvdW50IFByb3RvY29sIEZsYWdzIFR5cGUgU3QgSW5vZGUgUGF0aFxuICAgIGNvbnN0IFssLCwgZmxhZ3MsLCBzdCwsIHNvY2tQYXRoXSA9IGxpbmUudHJpbSgpLnNwbGl0KC9cXHMrLyk7XG4gICAgaWYgKCFzb2NrUGF0aCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChzb2NrUGF0aC5zdGFydHNXaXRoKCdAJykpIHtcbiAgICAgIGFsbE1hdGNoZXMucHVzaChsaW5lLnRyaW0oKSk7XG4gICAgfVxuICAgIGlmIChmbGFncyAhPT0gJzAwMDEwMDAwJyB8fCBzdCAhPT0gJzAxJykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmICghREVWVE9PTFNfU09DS0VUX1BBVFRFUk4udGVzdChzb2NrUGF0aCkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIG5hbWVzLnB1c2goc29ja1BhdGgpO1xuICB9XG4gIGlmIChfLmlzRW1wdHkobmFtZXMpKSB7XG4gICAgbG9nZ2VyLmRlYnVnKCdGb3VuZCBubyBhY3RpdmUgZGV2dG9vbHMgc29ja2V0cycpO1xuICAgIGlmICghXy5pc0VtcHR5KGFsbE1hdGNoZXMpKSB7XG4gICAgICBsb2dnZXIuZGVidWcoYE90aGVyIHNvY2tldHMgYXJlOiAke0pTT04uc3RyaW5naWZ5KGFsbE1hdGNoZXMsIG51bGwsIDIpfWApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBsb2dnZXIuZGVidWcoYFBhcnNlZCAke25hbWVzLmxlbmd0aH0gYWN0aXZlIGRldnRvb2xzICR7dXRpbC5wbHVyYWxpemUoJ3NvY2tldCcsIG5hbWVzLmxlbmd0aCwgZmFsc2UpfTogYCArXG4gICAgICBKU09OLnN0cmluZ2lmeShuYW1lcykpO1xuICB9XG4gIC8vIHNvbWV0aW1lcyB0aGUgd2VidmlldyBwcm9jZXNzIHNob3dzIHVwIG11bHRpcGxlIHRpbWVzIHBlciBhcHBcbiAgcmV0dXJuIF8udW5pcShuYW1lcyk7XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gV2Vidmlld1Byb2NcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcm9jIC0gVGhlIHdlYnZpZXcgcHJvY2VzcyBuYW1lIChhcyByZXR1cm5lZCBieVxuICogZ2V0UG90ZW50aWFsV2Vidmlld1Byb2NzXG4gKiBAcHJvcGVydHkge3N0cmluZ30gd2VidmlldyAtIFRoZSBhY3R1YWwgd2VidmlldyBjb250ZXh0IG5hbWVcbiAqL1xuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIHJldHJpZXZlcyBhIGxpc3Qgb2Ygc3lzdGVtIHByb2Nlc3NlcyB0aGF0IGxvb2sgbGlrZSB3ZWJ2aWV3cyxcbiAqIGFuZCByZXR1cm5zIHRoZW0gYWxvbmcgd2l0aCB0aGUgd2VidmlldyBjb250ZXh0IG5hbWUgYXBwcm9wcmlhdGUgZm9yIGl0LlxuICogSWYgd2UgcGFzcyBpbiBhIGRldmljZVNvY2tldCwgd2Ugb25seSBhdHRlbXB0IHRvIGZpbmQgd2Vidmlld3Mgd2hpY2ggbWF0Y2hcbiAqIHRoYXQgc29ja2V0IG5hbWUgKHRoaXMgaXMgZm9yIGFwcHMgd2hpY2ggZW1iZWQgQ2hyb21pdW0sIHdoaWNoIGlzbid0IHRoZVxuICogc2FtZSBhcyBjaHJvbWUtYmFja2VkIHdlYnZpZXdzKS5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gYWRiIC0gYW4gQURCIGluc3RhbmNlXG4gKiBAcGFyYW0gez9zdHJpbmd9IGRldmljZVNvY2tldCAtIHRoZSBleHBsaWN0bHktbmFtZWQgZGV2aWNlIHNvY2tldCB0byB1c2VcbiAqXG4gKiBAcmV0dXJuIHtBcnJheS48V2Vidmlld1Byb2M+fVxuICovXG5hc3luYyBmdW5jdGlvbiB3ZWJ2aWV3c0Zyb21Qcm9jcyAoYWRiLCBkZXZpY2VTb2NrZXQgPSBudWxsKSB7XG4gIGNvbnN0IHNvY2tldE5hbWVzID0gYXdhaXQgZ2V0UG90ZW50aWFsV2Vidmlld1Byb2NzKGFkYik7XG4gIGNvbnN0IHdlYnZpZXdzID0gW107XG4gIGZvciAoY29uc3Qgc29ja2V0TmFtZSBvZiBzb2NrZXROYW1lcykge1xuICAgIGlmIChkZXZpY2VTb2NrZXQgPT09IENIUk9NSVVNX0RFVlRPT0xTX1NPQ0tFVCAmJiBzb2NrZXROYW1lID09PSBgQCR7ZGV2aWNlU29ja2V0fWApIHtcbiAgICAgIHdlYnZpZXdzLnB1c2goe1xuICAgICAgICBwcm9jOiBzb2NrZXROYW1lLFxuICAgICAgICB3ZWJ2aWV3OiBDSFJPTUlVTV9XSU4sXG4gICAgICB9KTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHNvY2tldE5hbWVNYXRjaCA9IERFVlRPT0xTX1NPQ0tFVF9QQVRURVJOLmV4ZWMoc29ja2V0TmFtZSk7XG4gICAgaWYgKCFzb2NrZXROYW1lTWF0Y2gpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBjcm9zc3dhbGtNYXRjaCA9IENST1NTV0FMS19TT0NLRVRfUEFUVEVSTi5leGVjKHNvY2tldE5hbWUpO1xuICAgIGlmICghc29ja2V0TmFtZU1hdGNoWzFdICYmICFjcm9zc3dhbGtNYXRjaCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGRldmljZVNvY2tldCAmJiBzb2NrZXROYW1lID09PSBgQCR7ZGV2aWNlU29ja2V0fWAgfHwgIWRldmljZVNvY2tldCkge1xuICAgICAgd2Vidmlld3MucHVzaCh7XG4gICAgICAgIHByb2M6IHNvY2tldE5hbWUsXG4gICAgICAgIHdlYnZpZXc6IHNvY2tldE5hbWVNYXRjaFsxXVxuICAgICAgICAgID8gYCR7V0VCVklFV19CQVNFfSR7c29ja2V0TmFtZU1hdGNoWzFdfWBcbiAgICAgICAgICA6IGAke1dFQlZJRVdfQkFTRX0ke2Nyb3Nzd2Fsa01hdGNoWzFdfWAsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHdlYnZpZXdzO1xufVxuXG4vKipcbiAqIEFsbG9jYXRlcyBhIGxvY2FsIHBvcnQgZm9yIGRldnRvb2xzIGNvbW11bmljYXRpb25cbiAqXG4gKiBAcGFyYW0ge0FEQn0gYWRiIEFEQiBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IHNvY2tldE5hbWUgVGhlIHJlbW90ZSBVbml4IHNvY2tldCBuYW1lXG4gKiBAcGFyYW0gez9udW1iZXJ9IHdlYnZpZXdEZXZ0b29sc1BvcnQgVGhlIGxvY2FsIHBvcnQgbnVtYmVyIG9yIG51bGwgdG8gYXBwbHlcbiAqIGF1dG9kZXRlY3Rpb25cbiAqIEByZXR1cm5zIHtudW1iZXJ9IFRoZSBsb2NhbCBwb3J0IG51bWJlciBpZiB0aGUgcmVtb3RlIHNvY2tldCBoYXMgYmVlbiBmb3J3YXJkZWRcbiAqIHN1Y2Nlc3NmdWxseSBvciBgbnVsbGAgb3RoZXJ3aXNlXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGFsbG9jYXRpbmcgdGhlIGxvY2FsIHBvcnRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gYWxsb2NhdGVEZXZ0b29sc1BvcnQgKGFkYiwgc29ja2V0TmFtZSwgd2Vidmlld0RldnRvb2xzUG9ydCA9IG51bGwpIHtcbiAgLy8gc29ja2V0IG5hbWVzIGNvbWUgd2l0aCAnQCcsIGJ1dCB0aGlzIHNob3VsZCBub3QgYmUgYSBwYXJ0IG9mIHRoZSBhYnN0cmFjdFxuICAvLyByZW1vdGUgcG9ydCwgc28gcmVtb3ZlIGl0XG4gIGNvbnN0IHJlbW90ZVBvcnQgPSBzb2NrZXROYW1lLnJlcGxhY2UoL15ALywgJycpO1xuICBsZXQgW3N0YXJ0UG9ydCwgZW5kUG9ydF0gPSBERVZUT09MU19QT1JUU19SQU5HRTtcbiAgaWYgKHdlYnZpZXdEZXZ0b29sc1BvcnQpIHtcbiAgICBlbmRQb3J0ID0gd2Vidmlld0RldnRvb2xzUG9ydCArIChlbmRQb3J0IC0gc3RhcnRQb3J0KTtcbiAgICBzdGFydFBvcnQgPSB3ZWJ2aWV3RGV2dG9vbHNQb3J0O1xuICB9XG4gIGxvZ2dlci5kZWJ1ZyhgRm9yd2FyZGluZyByZW1vdGUgcG9ydCAke3JlbW90ZVBvcnR9IHRvIGEgbG9jYWwgYCArXG4gICAgYHBvcnQgaW4gcmFuZ2UgJHtzdGFydFBvcnR9Li4ke2VuZFBvcnR9YCk7XG4gIGlmICghd2Vidmlld0RldnRvb2xzUG9ydCkge1xuICAgIGxvZ2dlci5kZWJ1ZyhgWW91IGNvdWxkIHVzZSB0aGUgJ3dlYnZpZXdEZXZ0b29sc1BvcnQnIGNhcGFiaWxpdHkgdG8gY3VzdG9taXplIGAgK1xuICAgICAgYHRoZSBzdGFydGluZyBwb3J0IG51bWJlcmApO1xuICB9XG4gIHJldHVybiBhd2FpdCBERVZUT09MU19QT1JUX0FMTE9DQVRJT05fR1VBUkQoYXN5bmMgKCkgPT4ge1xuICAgIGxldCBsb2NhbFBvcnQ7XG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsUG9ydCA9IGF3YWl0IGZpbmRBUG9ydE5vdEluVXNlKHN0YXJ0UG9ydCwgZW5kUG9ydCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCBhbnkgZnJlZSBwb3J0IHRvIGZvcndhcmQgdGhlIERldnRvb2xzIHNvY2tldCBgICtcbiAgICAgICAgYGluIHJhbmdlICR7c3RhcnRQb3J0fS4uJHtlbmRQb3J0fS4gWW91IGNvdWxkIHNldCB0aGUgc3RhcnRpbmcgcG9ydCBudW1iZXIgYCArXG4gICAgICAgIGBtYW51YWxseSBieSBwcm92aWRpbmcgdGhlICd3ZWJ2aWV3RGV2dG9vbHNQb3J0JyBjYXBhYmlsaXR5YCk7XG4gICAgfVxuICAgIGF3YWl0IGFkYi5hZGJFeGVjKFsnZm9yd2FyZCcsIGB0Y3A6JHtsb2NhbFBvcnR9YCwgYGxvY2FsYWJzdHJhY3Q6JHtyZW1vdGVQb3J0fWBdKTtcbiAgICByZXR1cm4gbG9jYWxQb3J0O1xuICB9KTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXZWJ2aWV3UHJvcHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcm9jIFRoZSBuYW1lIG9mIHRoZSBEZXZ0b29scyBVbml4IHNvY2tldFxuICogQHByb3BlcnR5IHtzdHJpbmd9IHdlYnZpZXcgVGhlIHdlYiB2aWV3IGFsaWFzLiBMb29rcyBsaWtlIGBXRUJWSUVXX2BcbiAqIHByZWZpeCBwbHVzIFBJRCBvciBwYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P09iamVjdH0gaW5mbyBXZWJ2aWV3IGluZm9ybWF0aW9uIGFzIGl0IGlzIHJldHJpZXZlZCBieVxuICogL2pzb24vdmVyc2lvbiBDRFAgZW5kcG9pbnRcbiAqIEBwcm9wZXJ0eSB7P0FycmF5PE9iamVjdD59IHBhZ2VzIFdlYnZpZXcgcGFnZXMgbGlzdCBhcyBpdCBpcyByZXRyaWV2ZWQgYnlcbiAqIC9qc29uL2xpc3QgQ0RQIGVuZHBvaW50XG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZXRhaWxDb2xsZWN0aW9uT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gd2Vidmlld0RldnRvb2xzUG9ydCBUaGUgc3RhcnRpbmcgcG9ydCB0byB1c2UgZm9yIHdlYnZpZXcgcGFnZVxuICogcHJlc2VuY2UgY2hlY2sgKGlmIG5vdCB0aGUgZGVmYXVsdCBvZiA5MjIyKS5cbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzIFdoZXRoZXIgdG8gY2hlY2sgZm9yIHdlYnZpZXdcbiAqIHBhZ2VzIHByZXNlbmNlXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiBXaGV0aGVyIHRvIGNvbGxlY3RcbiAqIHdlYiB2aWV3IGRldGFpbHMgYW5kIHNlbmQgdGhlbSB0byBDaHJvbWVkcml2ZXIgY29uc3RydWN0b3IsIHNvIGl0IGNvdWxkXG4gKiBzZWxlY3QgYSBiaW5hcnkgbW9yZSBwcmVjaXNlbHkgYmFzZWQgb24gdGhpcyBpbmZvLlxuICovXG5cbi8qKlxuICogVGhpcyBpcyBhIHdyYXBwZXIgZm9yIENocm9tZSBEZWJ1Z2dlciBQcm90b2NvbCBkYXRhIGNvbGxlY3Rpb24uXG4gKiBObyBlcnJvciBpcyB0aHJvd24gaWYgQ0RQIHJlcXVlc3QgZmFpbHMgLSBpbiBzdWNoIGNhc2Ugbm8gZGF0YSB3aWxsIGJlXG4gKiByZWNvcmRlZCBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGB3ZWJ2aWV3c01hcHBpbmdgIGl0ZW0uXG4gKlxuICogQHBhcmFtIHtBREJ9IGFkYiBUaGUgQURCIGluc3RhbmNlXG4gKiBAcGFyYW0ge0FycmF5PFdlYnZpZXdQcm9wcz59IHdlYnZpZXdzTWFwcGluZyBUaGUgY3VycmVudCB3ZWJ2aWV3cyBtYXBwaW5nXG4gKiAhISEgRWFjaCBpdGVtIG9mIHRoaXMgYXJyYXkgZ2V0cyBtdXRhdGVkIChgaW5mb2AvYHBhZ2VzYCBwcm9wZXJ0aWVzIGdldCBhZGRlZFxuICogYmFzZWQgb24gdGhlIHByb3ZpZGVkIGBvcHRzYCkgaWYgdGhlIHJlcXVlc3RlZCBkZXRhaWxzIGhhdmUgYmVlblxuICogc3VjY2Vzc2Z1bGx5IHJldHJpZXZlZCBmb3IgaXQgISEhXG4gKiBAcGFyYW0ge0RldGFpbENvbGxlY3Rpb25PcHRpb25zfSBvcHRzIElmIGJvdGggYGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzYCBhbmRcbiAqIGBlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb25gIHByb3BlcnRpZXMgYXJlIGZhbHN5IHRoZW4gbm8gZGV0YWlscyBjb2xsZWN0aW9uXG4gKiBpcyBwZXJmb3JtZWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY29sbGVjdFdlYnZpZXdzRGV0YWlscyAoYWRiLCB3ZWJ2aWV3c01hcHBpbmcsIG9wdHMgPSB7fSkge1xuICBpZiAoXy5pc0VtcHR5KHdlYnZpZXdzTWFwcGluZykpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB7XG4gICAgd2Vidmlld0RldnRvb2xzUG9ydCA9IG51bGwsXG4gICAgZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMgPSBudWxsLFxuICAgIGVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbiA9IG51bGwsXG4gIH0gPSBvcHRzO1xuXG4gIGlmICghZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMpIHtcbiAgICBsb2dnZXIuaW5mbyhgTm90IGNoZWNraW5nIHdoZXRoZXIgd2Vidmlld3MgaGF2ZSBhY3RpdmUgcGFnZXM7IHVzZSB0aGUgYCArXG4gICAgICBgJ2Vuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzJyBjYXAgdG8gdHVybiB0aGlzIGNoZWNrIG9uYCk7XG4gIH1cblxuICBpZiAoIWVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbikge1xuICAgIGxvZ2dlci5pbmZvKGBOb3QgY29sbGVjdGluZyB3ZWIgdmlldyBkZXRhaWxzLiBEZXRhaWxzIGNvbGxlY3Rpb24gbWlnaHQgaGVscCBgICtcbiAgICAgIGB0byBtYWtlIENocm9tZWRyaXZlciBpbml0aWFsaXphdGlvbiBtb3JlIHByZWNpc2UuIFVzZSB0aGUgJ2VuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbicgYCArXG4gICAgICBgY2FwIHRvIHR1cm4gaXQgb25gKTtcbiAgfVxuXG4gIGlmICghZW5zdXJlV2Vidmlld3NIYXZlUGFnZXMgJiYgIWVuYWJsZVdlYnZpZXdEZXRhaWxzQ29sbGVjdGlvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIENvbm5lY3QgdG8gZWFjaCBkZXZ0b29scyBzb2NrZXQgYW5kIHJldHJpZXZlIHdlYiB2aWV3IGRldGFpbHNcbiAgbG9nZ2VyLmRlYnVnKGBDb2xsZWN0aW5nIENEUCBkYXRhIG9mICR7dXRpbC5wbHVyYWxpemUoJ3dlYnZpZXcnLCB3ZWJ2aWV3c01hcHBpbmcubGVuZ3RoLCB0cnVlKX1gKTtcbiAgY29uc3QgZGV0YWlsQ29sbGVjdG9ycyA9IFtdO1xuICBmb3IgKGNvbnN0IGl0ZW0gb2Ygd2Vidmlld3NNYXBwaW5nKSB7XG4gICAgZGV0YWlsQ29sbGVjdG9ycy5wdXNoKChhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgbG9jYWxQb3J0O1xuICAgICAgdHJ5IHtcbiAgICAgICAgbG9jYWxQb3J0ID0gYXdhaXQgYWxsb2NhdGVEZXZ0b29sc1BvcnQoYWRiLCBpdGVtLnByb2MsIHdlYnZpZXdEZXZ0b29sc1BvcnQpO1xuICAgICAgICBpZiAoZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uKSB7XG4gICAgICAgICAgaXRlbS5pbmZvID0gYXdhaXQgY2RwSW5mbyhsb2NhbFBvcnQpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcykge1xuICAgICAgICAgIGl0ZW0ucGFnZXMgPSBhd2FpdCBjZHBMaXN0KGxvY2FsUG9ydCk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgbG9nZ2VyLmRlYnVnKGUpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKGxvY2FsUG9ydCkge1xuICAgICAgICAgIGF3YWl0IGFkYi5yZW1vdmVQb3J0Rm9yd2FyZChsb2NhbFBvcnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkoKSk7XG4gIH1cbiAgYXdhaXQgQi5hbGwoZGV0YWlsQ29sbGVjdG9ycyk7XG4gIGxvZ2dlci5kZWJ1ZyhgQ0RQIGRhdGEgY29sbGVjdGlvbiBjb21wbGV0ZWRgKTtcbn1cblxuLy8gaHR0cHM6Ly9jaHJvbWVkZXZ0b29scy5naXRodWIuaW8vZGV2dG9vbHMtcHJvdG9jb2wvXG5hc3luYyBmdW5jdGlvbiBjZHBMaXN0IChsb2NhbFBvcnQpIHtcbiAgcmV0dXJuIChhd2FpdCBheGlvcyh7XG4gICAgdXJsOiBgaHR0cDovLzEyNy4wLjAuMToke2xvY2FsUG9ydH0vanNvbi9saXN0YCxcbiAgICB0aW1lb3V0OiBDRFBfUkVRX1RJTUVPVVQsXG4gIH0pKS5kYXRhO1xufVxuXG4vLyBodHRwczovL2Nocm9tZWRldnRvb2xzLmdpdGh1Yi5pby9kZXZ0b29scy1wcm90b2NvbC9cbmFzeW5jIGZ1bmN0aW9uIGNkcEluZm8gKGxvY2FsUG9ydCkge1xuICByZXR1cm4gKGF3YWl0IGF4aW9zKHtcbiAgICB1cmw6IGBodHRwOi8vMTI3LjAuMC4xOiR7bG9jYWxQb3J0fS9qc29uL3ZlcnNpb25gLFxuICAgIHRpbWVvdXQ6IENEUF9SRVFfVElNRU9VVCxcbiAgfSkpLmRhdGE7XG59XG5cbi8qKlxuICogVGFrZSBhIHdlYnZpZXcgbmFtZSBsaWtlIFdFQlZJRVdfNDI5NiBhbmQgdXNlICdhZGIgc2hlbGwgcHMnIHRvIGZpZ3VyZSBvdXRcbiAqIHdoaWNoIGFwcCBwYWNrYWdlIGlzIGFzc29jaWF0ZWQgd2l0aCB0aGF0IHdlYnZpZXcuIE9uZSBvZiB0aGUgcmVhc29ucyB3ZVxuICogd2FudCB0byBkbyB0aGlzIGlzIHRvIG1ha2Ugc3VyZSB3ZSdyZSBsaXN0aW5nIHdlYnZpZXdzIGZvciB0aGUgYWN0dWFsIEFVVCxcbiAqIG5vdCBzb21lIG90aGVyIHJ1bm5pbmcgYXBwXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IGFkYiAtIGFuIEFEQiBpbnN0YW5jZVxuICogQHBhcmFtIHtzdHJpbmd9IHdlYnZpZXcgLSBhIHdlYnZpZXcgcHJvY2VzcyBuYW1lXG4gKlxuICogQHJldHVybnMge3N0cmluZ30gLSB0aGUgcGFja2FnZSBuYW1lIG9mIHRoZSBhcHAgcnVubmluZyB0aGUgd2Vidmlld1xuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgcmV0cmlldmluZyB0aGUgcHJvY2VzcyBuYW1lXG4gKi9cbmhlbHBlcnMucHJvY0Zyb21XZWJ2aWV3ID0gYXN5bmMgZnVuY3Rpb24gcHJvY0Zyb21XZWJ2aWV3IChhZGIsIHdlYnZpZXcpIHtcbiAgY29uc3QgcGlkTWF0Y2ggPSBXRUJWSUVXX1BJRF9QQVRURVJOLmV4ZWMod2Vidmlldyk7XG4gIGlmICghcGlkTWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIFBJRCBmb3Igd2VidmlldyAnJHt3ZWJ2aWV3fSdgKTtcbiAgfVxuXG4gIGNvbnN0IHBpZCA9IHBpZE1hdGNoWzFdO1xuICBsb2dnZXIuZGVidWcoYCR7d2Vidmlld30gbWFwcGVkIHRvIHBpZCAke3BpZH1gKTtcbiAgbG9nZ2VyLmRlYnVnKGBHZXR0aW5nIHByb2Nlc3MgbmFtZSBmb3Igd2VidmlldyAnJHt3ZWJ2aWV3fSdgKTtcbiAgY29uc3QgcGtnID0gYXdhaXQgYWRiLmdldE5hbWVCeVBpZChwaWQpO1xuICBsb2dnZXIuZGVidWcoYEdvdCBwcm9jZXNzIG5hbWU6ICcke3BrZ30nYCk7XG4gIHJldHVybiBwa2c7XG59O1xuXG4vKipcbiAqIFBhcnNlIHdlYnZpZXcgbmFtZXMgZm9yIGdldENvbnRleHRzXG4gKlxuICogQHBhcmFtIHtBcnJheTxXZWJ2aWV3c01hcHBpbmc+fSB3ZWJ2aWV3c01hcHBpbmcgU2VlIG5vdGUgb24gZ2V0V2ViVmlld3NNYXBwaW5nXG4gKiBAcGFyYW0ge0dldFdlYnZpZXdzT3B0c30gb3B0cyBTZWUgbm90ZSBvbiBnZXRXZWJWaWV3c01hcHBpbmdcbiAqIEByZXR1cm4ge0FycmF5LjxzdHJpbmc+fSAtIGEgbGlzdCBvZiB3ZWJ2aWV3IG5hbWVzXG4gKi9cbmhlbHBlcnMucGFyc2VXZWJ2aWV3TmFtZXMgPSBmdW5jdGlvbiBwYXJzZVdlYnZpZXdOYW1lcyAod2Vidmlld3NNYXBwaW5nLCB7XG4gIGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzID0gdHJ1ZSxcbiAgaXNDaHJvbWVTZXNzaW9uID0gZmFsc2Vcbn0gPSB7fSkge1xuICBpZiAoaXNDaHJvbWVTZXNzaW9uKSB7XG4gICAgcmV0dXJuIFtDSFJPTUlVTV9XSU5dO1xuICB9XG5cbiAgY29uc3QgcmVzdWx0ID0gW107XG4gIGZvciAoY29uc3Qge3dlYnZpZXcsIHBhZ2VzLCBwcm9jLCB3ZWJ2aWV3TmFtZX0gb2Ygd2Vidmlld3NNYXBwaW5nKSB7XG4gICAgaWYgKGVuc3VyZVdlYnZpZXdzSGF2ZVBhZ2VzICYmIHBhZ2VzPy5sZW5ndGggPT09IDApIHtcbiAgICAgIGxvZ2dlci5pbmZvKGBTa2lwcGluZyB0aGUgd2VidmlldyAnJHt3ZWJ2aWV3fScgYXQgJyR7cHJvY30nIGAgK1xuICAgICAgICBgc2luY2UgaXQgaGFzIHJlcG9ydGVkIGhhdmluZyB6ZXJvIHBhZ2VzYCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgaWYgKHdlYnZpZXdOYW1lKSB7XG4gICAgICByZXN1bHQucHVzaCh3ZWJ2aWV3TmFtZSk7XG4gICAgfVxuICB9XG4gIGxvZ2dlci5kZWJ1ZyhgRm91bmQgJHt1dGlsLnBsdXJhbGl6ZSgnd2VidmlldycsIHJlc3VsdC5sZW5ndGgsIHRydWUpfTogJHtKU09OLnN0cmluZ2lmeShyZXN1bHQpfWApO1xuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBHZXRXZWJ2aWV3c09wdHNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhbmRyb2lkRGV2aWNlU29ja2V0IFtudWxsXSAtIGRldmljZSBzb2NrZXQgbmFtZVxuICogQHByb3BlcnR5IHtib29sZWFufSBlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyBbdHJ1ZV0gLSB3aGV0aGVyIHRvIGNoZWNrIGZvciB3ZWJ2aWV3XG4gKiBwYWdlIHByZXNlbmNlXG4gKiBAcHJvcGVydHkge251bWJlcn0gd2Vidmlld0RldnRvb2xzUG9ydCBbOTIyMl0gLSBwb3J0IHRvIHVzZSBmb3Igd2VidmlldyBwYWdlXG4gKiBwcmVzZW5jZSBjaGVjay5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZW5hYmxlV2Vidmlld0RldGFpbHNDb2xsZWN0aW9uIFt0cnVlXSAtIHdoZXRoZXIgdG8gY29sbGVjdFxuICogd2ViIHZpZXcgZGV0YWlscyBhbmQgc2VuZCB0aGVtIHRvIENocm9tZWRyaXZlciBjb25zdHJ1Y3Rvciwgc28gaXQgY291bGRcbiAqIHNlbGVjdCBhIGJpbmFyeSBtb3JlIHByZWNpc2VseSBiYXNlZCBvbiB0aGlzIGluZm8uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzQ2hyb21lU2Vzc2lvbiBbZmFsc2VdIC0gdHJ1ZSBpZiBDaHJvbWVTZXNzaW9uXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBXZWJ2aWV3c01hcHBpbmdcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBwcm9jIFNlZSBub3RlIG9uIFdlYnZpZXdQcm9wc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IHdlYnZpZXcgU2VlIG5vdGUgb24gV2Vidmlld1Byb3BzXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGluZm8gU2VlIG5vdGUgb24gV2Vidmlld1Byb3BzXG4gKiBAcHJvcGVydHkgez9BcnJheTxPYmplY3Q+fSBwYWdlcyBTZWUgbm90ZSBvbiBXZWJ2aWV3UHJvcHNcbiAqIEBwcm9wZXJ5IHs/c3RyaW5nfSB3ZWJ2aWV3TmFtZSBBbiBhY3R1YWwgd2VidmlldyBuYW1lIGZvciBzd2l0Y2hpbmcgY29udGV4dFxuICovXG5cbi8qKlxuICogR2V0IGEgbGlzdCBvZiBhdmFpbGFibGUgd2Vidmlld3MgbWFwcGluZyBieSBpbnRyb3NwZWN0aW5nIHByb2Nlc3NlcyB3aXRoIGFkYixcbiAqIHdoZXJlIHdlYnZpZXdzIGFyZSBsaXN0ZWQuIEl0J3MgcG9zc2libGUgdG8gcGFzcyBpbiBhICdkZXZpY2VTb2NrZXQnIGFyZywgd2hpY2hcbiAqIGxpbWl0cyB0aGUgd2VidmlldyBwb3NzaWJpbGl0aWVzIHRvIHRoZSBvbmUgcnVubmluZyBvbiB0aGUgQ2hyb21pdW0gZGV2dG9vbHNcbiAqIHNvY2tldCB3ZSdyZSBpbnRlcmVzdGVkIGluIChzZWUgbm90ZSBvbiB3ZWJ2aWV3c0Zyb21Qcm9jcykuIFdlIGNhbiBhbHNvXG4gKiBkaXJlY3QgdGhpcyBtZXRob2QgdG8gdmVyaWZ5IHdoZXRoZXIgYSBwYXJ0aWN1bGFyIHdlYnZpZXcgcHJvY2VzcyBhY3R1YWxseVxuICogaGFzIGFueSBwYWdlcyAoaWYgYSBwcm9jZXNzIGV4aXN0cyBidXQgbm8gcGFnZXMgYXJlIGZvdW5kLCBDaHJvbWVkcml2ZXIgd2lsbFxuICogbm90IGFjdHVhbGx5IGJlIGFibGUgdG8gY29ubmVjdCB0byBpdCwgc28gdGhpcyBzZXJ2ZXMgYXMgYSBndWFyZCBmb3IgdGhhdFxuICogc3RyYW5nZSBmYWlsdXJlIG1vZGUpLiBUaGUgc3RyYXRlZ3kgZm9yIGNoZWNraW5nIHdoZXRoZXIgYW55IHBhZ2VzIGFyZVxuICogYWN0aXZlIGludm9sdmVzIHNlbmRpbmcgYSByZXF1ZXN0IHRvIHRoZSByZW1vdGUgZGVidWcgc2VydmVyIG9uIHRoZSBkZXZpY2UsXG4gKiBoZW5jZSBpdCBpcyBhbHNvIHBvc3NpYmxlIHRvIHNwZWNpZnkgdGhlIHBvcnQgb24gdGhlIGhvc3QgbWFjaGluZSB3aGljaFxuICogc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXMgY29tbXVuaWNhdGlvbi5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gYWRiIC0gYW4gQURCIGluc3RhbmNlXG4gKiBAcGFyYW0ge0dldFdlYnZpZXdzT3B0c30gb3B0c1xuICpcbiAqIEByZXR1cm4ge0FycmF5PFdlYnZpZXdzTWFwcGluZz59IHdlYnZpZXdzTWFwcGluZ1xuICovXG5oZWxwZXJzLmdldFdlYlZpZXdzTWFwcGluZyA9IGFzeW5jIGZ1bmN0aW9uIGdldFdlYlZpZXdzTWFwcGluZyAoYWRiLCB7XG4gIGFuZHJvaWREZXZpY2VTb2NrZXQgPSBudWxsLFxuICBlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyA9IHRydWUsXG4gIHdlYnZpZXdEZXZ0b29sc1BvcnQgPSBudWxsLFxuICBlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24gPSB0cnVlLFxuICBpc0Nocm9tZVNlc3Npb24gPSBmYWxzZVxufSA9IHt9KSB7XG4gIGlmIChpc0Nocm9tZVNlc3Npb24pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBsb2dnZXIuZGVidWcoJ0dldHRpbmcgYSBsaXN0IG9mIGF2YWlsYWJsZSB3ZWJ2aWV3cycpO1xuICBjb25zdCB3ZWJ2aWV3c01hcHBpbmcgPSBhd2FpdCB3ZWJ2aWV3c0Zyb21Qcm9jcyhhZGIsIGFuZHJvaWREZXZpY2VTb2NrZXQpO1xuXG4gIGF3YWl0IGNvbGxlY3RXZWJ2aWV3c0RldGFpbHMoYWRiLCB3ZWJ2aWV3c01hcHBpbmcsIHtcbiAgICBlbnN1cmVXZWJ2aWV3c0hhdmVQYWdlcyxcbiAgICBlbmFibGVXZWJ2aWV3RGV0YWlsc0NvbGxlY3Rpb24sXG4gICAgd2Vidmlld0RldnRvb2xzUG9ydCxcbiAgfSk7XG5cbiAgZm9yIChjb25zdCB3ZWJ2aWV3TWFwcGluZyBvZiB3ZWJ2aWV3c01hcHBpbmcpIHtcbiAgICBjb25zdCB7d2VidmlldywgaW5mb30gPSB3ZWJ2aWV3TWFwcGluZztcbiAgICB3ZWJ2aWV3TWFwcGluZy53ZWJ2aWV3TmFtZSA9IG51bGw7XG5cbiAgICBsZXQgd3ZOYW1lID0gd2VidmlldztcbiAgICBsZXQgcHJvY2VzcyA9IHVuZGVmaW5lZDtcbiAgICBpZiAoIWFuZHJvaWREZXZpY2VTb2NrZXQpIHtcbiAgICAgIGNvbnN0IHBrZ01hdGNoID0gV0VCVklFV19QS0dfUEFUVEVSTi5leGVjKHdlYnZpZXcpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gd2ViIHZpZXcgbmFtZSBjb3VsZCBlaXRoZXIgYmUgc3VmZml4ZWQgd2l0aCBQSUQgb3IgdGhlIHBhY2thZ2UgbmFtZVxuICAgICAgICAvLyBwYWNrYWdlIG5hbWVzIGNvdWxkIG5vdCBzdGFydCB3aXRoIGEgZGlnaXRcbiAgICAgICAgY29uc3QgcGtnID0gcGtnTWF0Y2ggPyBwa2dNYXRjaFsxXSA6IGF3YWl0IGhlbHBlcnMucHJvY0Zyb21XZWJ2aWV3KGFkYiwgd2Vidmlldyk7XG4gICAgICAgIHd2TmFtZSA9IGAke1dFQlZJRVdfQkFTRX0ke3BrZ31gO1xuICAgICAgICBjb25zdCBwaWRNYXRjaCA9IFdFQlZJRVdfUElEX1BBVFRFUk4uZXhlYyh3ZWJ2aWV3KTtcbiAgICAgICAgcHJvY2VzcyA9IHtcbiAgICAgICAgICBuYW1lOiBwa2csXG4gICAgICAgICAgaWQ6IHBpZE1hdGNoID8gcGlkTWF0Y2hbMV0gOiBudWxsLFxuICAgICAgICB9O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsb2dnZXIud2FybihlLm1lc3NhZ2UpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB3ZWJ2aWV3TWFwcGluZy53ZWJ2aWV3TmFtZSA9IHd2TmFtZTtcbiAgICBjb25zdCBrZXkgPSB0b0RldGFpbHNDYWNoZUtleShhZGIsIHd2TmFtZSk7XG4gICAgaWYgKGluZm8gfHwgcHJvY2Vzcykge1xuICAgICAgV0VCVklFV1NfREVUQUlMU19DQUNIRS5zZXQoa2V5LCB7IGluZm8sIHByb2Nlc3MgfSk7XG4gICAgfSBlbHNlIGlmIChXRUJWSUVXU19ERVRBSUxTX0NBQ0hFLmhhcyhrZXkpKSB7XG4gICAgICBXRUJWSUVXU19ERVRBSUxTX0NBQ0hFLmRlbChrZXkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gd2Vidmlld3NNYXBwaW5nO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBQcm9jZXNzSW5mb1xuICogQHByb3BlcnR5IHtzdHJpbmd9IG5hbWUgVGhlIHByb2Nlc3MgbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZCBUaGUgcHJvY2VzcyBpZCAoaWYgY291bGQgYmUgcmV0cmlldmVkKVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gV2ViVmlld0RldGFpbHNcbiAqIEBwcm9wZXJ0eSB7P1Byb2Nlc3NJbmZvfSBwcm9jZXNzIC0gV2ViIHZpZXcgcHJvY2VzcyBkZXRhaWxzXG4gKiBAcHJvcGVydHkge09iamVjdH0gaW5mbyAtIFdlYiB2aWV3IGRldGFpbHMgYXMgcmV0dXJuZWQgYnkgL2pzb24vdmVyc2lvbiBDRFAgZW5kcG9pbnQsIGZvciBleGFtcGxlOlxuICoge1xuICogIFwiQnJvd3NlclwiOiBcIkNocm9tZS83Mi4wLjM2MDEuMFwiLFxuICogIFwiUHJvdG9jb2wtVmVyc2lvblwiOiBcIjEuM1wiLFxuICogIFwiVXNlci1BZ2VudFwiOiBcIk1vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzEzXzYpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS83Mi4wLjM2MDEuMCBTYWZhcmkvNTM3LjM2XCIsXG4gKiAgXCJWOC1WZXJzaW9uXCI6IFwiNy4yLjIzM1wiLFxuICogIFwiV2ViS2l0LVZlcnNpb25cIjogXCI1MzcuMzYgKEBjZmVkZTlkYjFkMTU0ZGUwNDY4Y2IwNTM4NDc5ZjM0YzA3NTVhMGY0KVwiLFxuICogIFwid2ViU29ja2V0RGVidWdnZXJVcmxcIjogXCJ3czovL2xvY2FsaG9zdDo5MjIyL2RldnRvb2xzL2Jyb3dzZXIvYjBiOGE0ZmItYmIxNy00MzU5LTk1MzMtYThkOWYzOTA4YmQ4XCJcbiAqIH1cbiAqL1xuXG4vKipcbiAqIFJldHJpZXZlcyB3ZWIgdmlldyBkZXRhaWxzIHByZXZpb3VzbHkgY2FjaGVkIGJ5IGBnZXRXZWJ2aWV3c2AgY2FsbFxuICpcbiAqIEBwYXJhbSB7QURCfSBhZGIgQURCIGluc3RhbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30gd2VidmlldyBUaGUgbmFtZSBvZiB0aGUgd2ViIHZpZXdcbiAqIEByZXR1cm5zIHs/V2ViVmlld0RldGFpbHN9IEVpdGhlciBgdW5kZWZpbmVkYCBvciB0aGUgcmVjZW50IHdlYiB2aWV3IGRldGFpbHNcbiAqL1xuaGVscGVycy5nZXRXZWJ2aWV3RGV0YWlscyA9IGZ1bmN0aW9uIGdldFdlYnZpZXdEZXRhaWxzIChhZGIsIHdlYnZpZXcpIHtcbiAgY29uc3Qga2V5ID0gdG9EZXRhaWxzQ2FjaGVLZXkoYWRiLCB3ZWJ2aWV3KTtcbiAgcmV0dXJuIFdFQlZJRVdTX0RFVEFJTFNfQ0FDSEUuZ2V0KGtleSk7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBDaHJvbWUgZHJpdmVyIGNhcGFiaWxpdGllcyBiYXNlZCBvbiB0aGUgcHJvdmlkZWRcbiAqIEFwcGl1bSBjYXBhYmlsaXRpZXNcbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0cyBVc2VyLXByb3ZpZGVkIGNhcGFiaWxpdGllcyBvYmplY3RcbiAqIEBwYXJhbSB7c3RyaW5nfSBkZXZpY2VJZCBUaGUgaWRlbnRpZmllciBvZiB0aGUgQW5kcm9pZCBkZXZpY2UgdW5kZXIgdGVzdFxuICogQHBhcmFtIHs/V2ViVmlld0RldGFpbHN9IHdlYlZpZXdEZXRhaWxzXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgY2FwYWJpbGl0aWVzIG9iamVjdC5cbiAqIFNlZSBodHRwczovL2Nocm9tZWRyaXZlci5jaHJvbWl1bS5vcmcvY2FwYWJpbGl0aWVzIGZvciBtb3JlIGRldGFpbHMuXG4gKi9cbmhlbHBlcnMuY3JlYXRlQ2hyb21lZHJpdmVyQ2FwcyA9IGZ1bmN0aW9uIGNyZWF0ZUNocm9tZWRyaXZlckNhcHMgKG9wdHMsIGRldmljZUlkLCB3ZWJWaWV3RGV0YWlscykge1xuICBjb25zdCBjYXBzID0geyBjaHJvbWVPcHRpb25zOiB7fSB9O1xuXG4gIGNvbnN0IGFuZHJvaWRQYWNrYWdlID0gb3B0cy5jaHJvbWVPcHRpb25zPy5hbmRyb2lkUGFja2FnZSB8fCBvcHRzLmFwcFBhY2thZ2U7XG4gIGlmIChhbmRyb2lkUGFja2FnZSkge1xuICAgIC8vIGNocm9tZWRyaXZlciByYWlzZXMgYW4gaW52YWxpZCBhcmd1bWVudCBlcnJvciB3aGVuIGFuZHJvaWRQYWNrYWdlIGlzICdudWxsJ1xuICAgIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkUGFja2FnZSA9IGFuZHJvaWRQYWNrYWdlO1xuICB9XG4gIGlmIChfLmlzQm9vbGVhbihvcHRzLmNocm9tZVVzZVJ1bm5pbmdBcHApKSB7XG4gICAgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRVc2VSdW5uaW5nQXBwID0gb3B0cy5jaHJvbWVVc2VSdW5uaW5nQXBwO1xuICB9XG4gIGlmIChvcHRzLmNocm9tZUFuZHJvaWRQYWNrYWdlKSB7XG4gICAgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQYWNrYWdlID0gb3B0cy5jaHJvbWVBbmRyb2lkUGFja2FnZTtcbiAgfVxuICBpZiAob3B0cy5jaHJvbWVBbmRyb2lkQWN0aXZpdHkpIHtcbiAgICBjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZEFjdGl2aXR5ID0gb3B0cy5jaHJvbWVBbmRyb2lkQWN0aXZpdHk7XG4gIH1cbiAgaWYgKG9wdHMuY2hyb21lQW5kcm9pZFByb2Nlc3MpIHtcbiAgICBjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZFByb2Nlc3MgPSBvcHRzLmNocm9tZUFuZHJvaWRQcm9jZXNzO1xuICB9IGVsc2UgaWYgKHdlYlZpZXdEZXRhaWxzPy5wcm9jZXNzPy5uYW1lICYmIHdlYlZpZXdEZXRhaWxzPy5wcm9jZXNzPy5pZCkge1xuICAgIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkUHJvY2VzcyA9IHdlYlZpZXdEZXRhaWxzLnByb2Nlc3MubmFtZTtcbiAgfVxuICBpZiAoXy50b0xvd2VyKG9wdHMuYnJvd3Nlck5hbWUpID09PSAnY2hyb21pdW0td2VidmlldycpIHtcbiAgICBjYXBzLmNocm9tZU9wdGlvbnMuYW5kcm9pZEFjdGl2aXR5ID0gb3B0cy5hcHBBY3Rpdml0eTtcbiAgfVxuICBpZiAob3B0cy5wYWdlTG9hZFN0cmF0ZWd5KSB7XG4gICAgY2Fwcy5wYWdlTG9hZFN0cmF0ZWd5ID0gb3B0cy5wYWdlTG9hZFN0cmF0ZWd5O1xuICB9XG4gIGNvbnN0IGlzQ2hyb21lID0gXy50b0xvd2VyKGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkUGFja2FnZSkgPT09ICdjaHJvbWUnO1xuICBpZiAoXy5pbmNsdWRlcyhLTk9XTl9DSFJPTUVfUEFDS0FHRV9OQU1FUywgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQYWNrYWdlKSB8fCBpc0Nocm9tZSkge1xuICAgIC8vIGlmIHdlIGhhdmUgZXh0cmFjdGVkIHBhY2thZ2UgZnJvbSBjb250ZXh0IG5hbWUsIGl0IGNvdWxkIGNvbWUgaW4gYXMgYmFyZVxuICAgIC8vIFwiY2hyb21lXCIsIGFuZCBzbyB3ZSBzaG91bGQgbWFrZSBzdXJlIHRoZSBkZXRhaWxzIGFyZSBjb3JyZWN0LCBpbmNsdWRpbmdcbiAgICAvLyBub3QgdXNpbmcgYW4gYWN0aXZpdHkgb3IgcHJvY2VzcyBpZFxuICAgIGlmIChpc0Nocm9tZSkge1xuICAgICAgY2Fwcy5jaHJvbWVPcHRpb25zLmFuZHJvaWRQYWNrYWdlID0gQ0hST01FX1BBQ0tBR0VfTkFNRTtcbiAgICB9XG4gICAgZGVsZXRlIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkQWN0aXZpdHk7XG4gICAgZGVsZXRlIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkUHJvY2VzcztcbiAgfVxuICAvLyBhZGQgZGV2aWNlIGlkIGZyb20gYWRiXG4gIGNhcHMuY2hyb21lT3B0aW9ucy5hbmRyb2lkRGV2aWNlU2VyaWFsID0gZGV2aWNlSWQ7XG5cbiAgaWYgKF8uaXNQbGFpbk9iamVjdChvcHRzLmxvZ2dpbmdQcmVmcykgfHwgXy5pc1BsYWluT2JqZWN0KG9wdHMuY2hyb21lTG9nZ2luZ1ByZWZzKSkge1xuICAgIGlmIChvcHRzLmxvZ2dpbmdQcmVmcykge1xuICAgICAgbG9nZ2VyLndhcm4oYFRoZSAnbG9nZ2luZ1ByZWZzJyBjYXAgaXMgZGVwcmVjYXRlZDsgdXNlIHRoZSAnY2hyb21lTG9nZ2luZ1ByZWZzJyBjYXAgaW5zdGVhZGApO1xuICAgIH1cbiAgICBjYXBzLmxvZ2dpbmdQcmVmcyA9IG9wdHMuY2hyb21lTG9nZ2luZ1ByZWZzIHx8IG9wdHMubG9nZ2luZ1ByZWZzO1xuICB9XG4gIGlmIChvcHRzLmVuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZykge1xuICAgIGxvZ2dlci53YXJuKGBUaGUgJ2VuYWJsZVBlcmZvcm1hbmNlTG9nZ2luZycgY2FwIGlzIGRlcHJlY2F0ZWQ7IHNpbXBseSB1c2UgYCArXG4gICAgICBgdGhlICdjaHJvbWVMb2dnaW5nUHJlZnMnIGNhcCBpbnN0ZWFkLCB3aXRoIGEgJ3BlcmZvcm1hbmNlJyBrZXkgc2V0IHRvICdBTEwnYCk7XG4gICAgY29uc3QgbmV3UHJlZiA9IHtwZXJmb3JtYW5jZTogJ0FMTCd9O1xuICAgIC8vIGRvbid0IG92ZXJ3cml0ZSBvdGhlciBsb2dnaW5nIHByZWZzIHRoYXQgaGF2ZSBiZWVuIHNlbnQgaW4gaWYgdGhleSBleGlzdFxuICAgIGNhcHMubG9nZ2luZ1ByZWZzID0gY2Fwcy5sb2dnaW5nUHJlZnNcbiAgICAgID8gT2JqZWN0LmFzc2lnbih7fSwgY2Fwcy5sb2dnaW5nUHJlZnMsIG5ld1ByZWYpXG4gICAgICA6IG5ld1ByZWY7XG4gIH1cblxuICBpZiAob3B0cy5jaHJvbWVPcHRpb25zPy5Bcmd1bWVudHMpIHtcbiAgICAvLyBtZXJnZSBgQXJndW1lbnRzYCBhbmQgYGFyZ3NgXG4gICAgb3B0cy5jaHJvbWVPcHRpb25zLmFyZ3MgPSBbLi4uKG9wdHMuY2hyb21lT3B0aW9ucy5hcmdzIHx8IFtdKSwgLi4ub3B0cy5jaHJvbWVPcHRpb25zLkFyZ3VtZW50c107XG4gICAgZGVsZXRlIG9wdHMuY2hyb21lT3B0aW9ucy5Bcmd1bWVudHM7XG4gIH1cblxuICBsb2dnZXIuZGVidWcoJ1ByZWNhbGN1bGF0ZWQgQ2hyb21lZHJpdmVyIGNhcGFiaWxpdGllczogJyArXG4gICAgSlNPTi5zdHJpbmdpZnkoY2Fwcy5jaHJvbWVPcHRpb25zLCBudWxsLCAyKSk7XG5cbiAgY29uc3QgcHJvdGVjdGVkQ2FwTmFtZXMgPSBbXTtcbiAgZm9yIChjb25zdCBbb3B0LCB2YWxdIG9mIF8udG9QYWlycyhvcHRzLmNocm9tZU9wdGlvbnMpKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQoY2Fwcy5jaHJvbWVPcHRpb25zW29wdF0pKSB7XG4gICAgICBjYXBzLmNocm9tZU9wdGlvbnNbb3B0XSA9IHZhbDtcbiAgICB9IGVsc2Uge1xuICAgICAgcHJvdGVjdGVkQ2FwTmFtZXMucHVzaChvcHQpO1xuICAgIH1cbiAgfVxuICBpZiAoIV8uaXNFbXB0eShwcm90ZWN0ZWRDYXBOYW1lcykpIHtcbiAgICBsb2dnZXIuaW5mbygnVGhlIGZvbGxvd2luZyBDaHJvbWVkcml2ZXIgY2FwYWJpbGl0aWVzIGNhbm5vdCBiZSBvdmVycmlkZGVuICcgK1xuICAgICAgJ2J5IHRoZSBwcm92aWRlZCBjaHJvbWVPcHRpb25zOicpO1xuICAgIGZvciAoY29uc3Qgb3B0TmFtZSBvZiBwcm90ZWN0ZWRDYXBOYW1lcykge1xuICAgICAgbG9nZ2VyLmluZm8oYCAgJHtvcHROYW1lfSAoJHtKU09OLnN0cmluZ2lmeShvcHRzLmNocm9tZU9wdGlvbnNbb3B0TmFtZV0pfSlgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2Fwcztcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGhlbHBlcnM7XG5leHBvcnQgeyBoZWxwZXJzLCBOQVRJVkVfV0lOLCBXRUJWSUVXX1dJTiwgV0VCVklFV19CQVNFLCBDSFJPTUlVTV9XSU4sIEtOT1dOX0NIUk9NRV9QQUNLQUdFX05BTUVTIH07XG4iXSwiZmlsZSI6ImxpYi93ZWJ2aWV3LWhlbHBlcnMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
@@ -114,6 +114,9 @@ let commonCapConstraints = {
114
114
  chromedriverDisableBuildCheck: {
115
115
  isBoolean: true
116
116
  },
117
+ chromeLoggingPrefs: {
118
+ isObject: true
119
+ },
117
120
  autoWebviewTimeout: {
118
121
  isNumber: true
119
122
  },
@@ -517,17 +517,20 @@ helpers.createChromedriverCaps = function createChromedriverCaps (opts, deviceId
517
517
  // add device id from adb
518
518
  caps.chromeOptions.androidDeviceSerial = deviceId;
519
519
 
520
- if (opts.loggingPrefs) {
521
- caps.loggingPrefs = opts.loggingPrefs;
520
+ if (_.isPlainObject(opts.loggingPrefs) || _.isPlainObject(opts.chromeLoggingPrefs)) {
521
+ if (opts.loggingPrefs) {
522
+ logger.warn(`The 'loggingPrefs' cap is deprecated; use the 'chromeLoggingPrefs' cap instead`);
523
+ }
524
+ caps.loggingPrefs = opts.chromeLoggingPrefs || opts.loggingPrefs;
522
525
  }
523
526
  if (opts.enablePerformanceLogging) {
524
527
  logger.warn(`The 'enablePerformanceLogging' cap is deprecated; simply use ` +
525
- `the 'loggingPrefs' cap instead, with a 'performance' key set to 'ALL'`);
528
+ `the 'chromeLoggingPrefs' cap instead, with a 'performance' key set to 'ALL'`);
526
529
  const newPref = {performance: 'ALL'};
527
530
  // don't overwrite other logging prefs that have been sent in if they exist
528
- caps.loggingPrefs = caps.loggingPrefs ?
529
- Object.assign({}, caps.loggingPrefs, newPref) :
530
- newPref;
531
+ caps.loggingPrefs = caps.loggingPrefs
532
+ ? Object.assign({}, caps.loggingPrefs, newPref)
533
+ : newPref;
531
534
  }
532
535
 
533
536
  if (opts.chromeOptions?.Arguments) {
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  "mobile",
10
10
  "mobile testing"
11
11
  ],
12
- "version": "4.50.0",
12
+ "version": "4.51.0",
13
13
  "author": "appium",
14
14
  "license": "Apache-2.0",
15
15
  "repository": {