studiokit-scaffolding-js 7.0.12-next.1.4 → 7.0.12-next.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/ActionList.js +170 -34
- package/lib/components/AlertDialog.js +133 -9
- package/lib/components/AlertWithIcon.js +92 -25
- package/lib/components/ConnectedModal.js +43 -13
- package/lib/components/Dropdowns/GroupsDropdown.js +69 -44
- package/lib/components/Dropdowns/ManagedNavDropdown.js +100 -67
- package/lib/components/Dropdowns/UserDropdown.js +111 -21
- package/lib/components/Dropdowns/index.js +27 -9
- package/lib/components/EntityOwnerList.js +52 -18
- package/lib/components/Error.js +106 -11
- package/lib/components/ErrorBoundary.js +134 -35
- package/lib/components/ErrorMessage.js +44 -9
- package/lib/components/Forms/DateField.js +61 -42
- package/lib/components/Forms/TimeField.js +81 -42
- package/lib/components/Forms/index.js +27 -4
- package/lib/components/Groups/CreateEditCopySaveButtons.js +114 -11
- package/lib/components/Groups/ExternalGroups/Attach.js +212 -148
- package/lib/components/Groups/ExternalGroups/Table.js +181 -45
- package/lib/components/Groups/GroupCreateOrEditCommonProps.js +5 -1
- package/lib/components/Groups/RosterSyncInfo.js +147 -20
- package/lib/components/HOC/AccessibleAppComponent.js +98 -73
- package/lib/components/HOC/ActivityRequiredComponent.js +92 -49
- package/lib/components/HOC/AsyncComponent.js +54 -39
- package/lib/components/HOC/AuthenticatedComponent.js +58 -38
- package/lib/components/HOC/CollectionComponent.js +170 -110
- package/lib/components/HOC/CollectionFirstItemComponent.js +51 -38
- package/lib/components/HOC/CollectionItemComponent.js +168 -106
- package/lib/components/HOC/ConnectedModalComponent.js +109 -80
- package/lib/components/HOC/DataDependentComponent.js +29 -21
- package/lib/components/HOC/EntityComponent.js +71 -57
- package/lib/components/HOC/FullscreenModalComponent.js +163 -123
- package/lib/components/HOC/GroupActivityRequiredComponent.js +45 -31
- package/lib/components/HOC/GuidComponent.js +29 -22
- package/lib/components/HOC/ModelContextDependencyVerifyComponent.js +41 -31
- package/lib/components/HOC/ModelErrorRedirectComponent.js +51 -47
- package/lib/components/HOC/SearchPersistorComponent.js +240 -166
- package/lib/components/HOC/UnauthenticatedComponent.js +37 -25
- package/lib/components/HOC/UserComponent.js +12 -7
- package/lib/components/Icons/IconAlphaList.js +33 -5
- package/lib/components/Icons/IconExternalUser.js +33 -5
- package/lib/components/Icons/IconImpersonation.js +33 -5
- package/lib/components/Icons/IconStopImpersonating.js +33 -5
- package/lib/components/Icons/IconTable.js +35 -7
- package/lib/components/Icons/IconTableDeleteCol.js +33 -5
- package/lib/components/Icons/IconTableDeleteRow.js +33 -5
- package/lib/components/Icons/IconTableInsertCol.js +33 -5
- package/lib/components/Icons/IconTableInsertRow.js +33 -5
- package/lib/components/Impersonation/Button.js +77 -13
- package/lib/components/Impersonation/Link.js +77 -13
- package/lib/components/Impersonation/UserDetail.js +66 -9
- package/lib/components/Loading.js +26 -4
- package/lib/components/LockDownBrowser/Check.js +194 -49
- package/lib/components/LockDownBrowser/ExitButton.js +26 -9
- package/lib/components/LockDownBrowser/Launch.js +70 -62
- package/lib/components/Lti/Confirm.js +152 -11
- package/lib/components/Lti/CreateNonLtiGroupAlertDialog.js +170 -33
- package/lib/components/Lti/Launch.js +105 -24
- package/lib/components/Lti/LaunchGroup.js +85 -13
- package/lib/components/ManageTable.js +309 -87
- package/lib/components/ManageTableNoDataComponent.js +42 -4
- package/lib/components/NewVersionAlert.js +82 -46
- package/lib/components/NotFound.js +86 -10
- package/lib/components/Notifications.js +185 -126
- package/lib/components/PaginationNextButton.js +33 -6
- package/lib/components/PaginationPreviousButton.js +33 -6
- package/lib/components/Quill/CustomToolbar.js +432 -218
- package/lib/components/Quill/Formats/Image.js +73 -63
- package/lib/components/Quill/Formats/List.js +45 -45
- package/lib/components/Quill/Formats/Video.js +28 -24
- package/lib/components/Quill/ImageDropModule.js +147 -117
- package/lib/components/Quill/ImageWarning.js +47 -9
- package/lib/components/Quill/ImageWithAltTextModal.js +425 -86
- package/lib/components/Quill/Specs/CustomImageSpec.js +42 -34
- package/lib/components/Quill/Specs/CustomVideoSpec.js +34 -28
- package/lib/components/Quill/TableModule/Blots/BaseTableBlot.js +98 -98
- package/lib/components/Quill/TableModule/Blots/TableBlot.js +52 -47
- package/lib/components/Quill/TableModule/Blots/TableBodyBlot.js +53 -48
- package/lib/components/Quill/TableModule/Blots/TableCellBlot.js +224 -221
- package/lib/components/Quill/TableModule/Blots/TableContainer.js +80 -83
- package/lib/components/Quill/TableModule/Blots/TableRowBlot.js +75 -70
- package/lib/components/Quill/TableModule/constants.js +45 -41
- package/lib/components/Quill/TableModule/index.js +362 -301
- package/lib/components/Quill/TableModule/utils.js +42 -38
- package/lib/components/Quill/accessibilityFix.js +234 -232
- package/lib/components/Quill/index.js +34 -28
- package/lib/components/RefreshIndicator/Bordered.js +47 -6
- package/lib/components/RefreshIndicator/Inline.js +47 -8
- package/lib/components/RefreshIndicator/index.js +263 -59
- package/lib/components/SearchControls.js +216 -11
- package/lib/components/SentryRoute.js +11 -6
- package/lib/components/Tables/RoleFilter.js +69 -32
- package/lib/components/Tables/TextFilter.js +62 -13
- package/lib/components/UserRoles/Add.js +199 -96
- package/lib/components/UserRoles/Context.js +11 -7
- package/lib/components/UserRoles/RoleCell.js +181 -72
- package/lib/components/UserRoles/Select.js +157 -17
- package/lib/components/UserRoles/Table.js +221 -80
- package/lib/components/UserRoles/index.js +534 -384
- package/lib/config/eslint/index.js +32 -28
- package/lib/config/eslint/lib/order.js +26 -27
- package/lib/config/eslint/lib/prettier.js +20 -18
- package/lib/config/eslint/lib/typescript.js +93 -112
- package/lib/config/eslint/react.js +24 -14
- package/lib/constants/baseActivity.js +30 -26
- package/lib/constants/baseRole.js +14 -10
- package/lib/constants/configuration.js +33 -29
- package/lib/constants/externalProviderType.js +10 -6
- package/lib/constants/fetchErrorData.js +15 -11
- package/lib/constants/index.js +137 -14
- package/lib/constants/lockDownBrowser.js +28 -24
- package/lib/constants/mockData.js +382 -297
- package/lib/constants/modelStatus.js +15 -11
- package/lib/constants/notificationType.js +12 -8
- package/lib/constants/operatingSystem.js +12 -8
- package/lib/constants/shard.js +11 -7
- package/lib/constants/table.js +21 -21
- package/lib/constants/tier.js +12 -8
- package/lib/constants/userRole.js +15 -5
- package/lib/endpointMappings.js +197 -181
- package/lib/hooks/useCollection.js +82 -62
- package/lib/hooks/useCollectionConfiguration.js +228 -83
- package/lib/hooks/useCollectionItem.js +154 -54
- package/lib/hooks/useGuid.js +20 -8
- package/lib/hooks/usePrevious.js +19 -13
- package/lib/index.js +157 -25
- package/lib/redux/actionCreator.js +50 -28
- package/lib/redux/actions/AuthAction.js +44 -31
- package/lib/redux/actions/ModalAction.js +10 -6
- package/lib/redux/actions/ModelAction.js +77 -39
- package/lib/redux/actions/NotificationAction.js +10 -6
- package/lib/redux/actions/SearchAction.js +9 -5
- package/lib/redux/actions/index.js +60 -7
- package/lib/redux/configureReducers.js +60 -49
- package/lib/redux/configureStore.js +83 -87
- package/lib/redux/helpers.js +6 -2
- package/lib/redux/reducers/authReducer.js +50 -43
- package/lib/redux/reducers/index.js +41 -13
- package/lib/redux/reducers/modalsReducer.js +47 -29
- package/lib/redux/reducers/modelsReducer.js +178 -173
- package/lib/redux/reducers/notificationsReducer.js +24 -18
- package/lib/redux/reducers/searchReducer.js +25 -19
- package/lib/redux/sagas/appInsightsSaga.js +22 -18
- package/lib/redux/sagas/authSaga.js +253 -218
- package/lib/redux/sagas/caliperSaga.js +159 -143
- package/lib/redux/sagas/clockOffsetSaga.js +34 -31
- package/lib/redux/sagas/configurationSaga.js +11 -7
- package/lib/redux/sagas/downtimeApiErrorSaga.js +20 -17
- package/lib/redux/sagas/errorSaga.js +27 -21
- package/lib/redux/sagas/googleAnalyticsSaga.js +28 -24
- package/lib/redux/sagas/identityProviderSaga.js +22 -18
- package/lib/redux/sagas/initialDataLoadSaga.js +37 -28
- package/lib/redux/sagas/lockDownBrowserErrorSaga.js +29 -20
- package/lib/redux/sagas/modelFetchSaga.js +355 -322
- package/lib/redux/sagas/noStoreSaga.js +61 -48
- package/lib/redux/sagas/postLoginDataSaga.js +45 -34
- package/lib/redux/sagas/postLoginRedirectSaga.js +27 -27
- package/lib/redux/sagas/rootSaga.js +82 -57
- package/lib/redux/sagas/sentrySaga.js +29 -25
- package/lib/redux/sagas/userIdSaga.js +16 -12
- package/lib/services/codeProviderService.js +25 -19
- package/lib/services/dateService.js +12 -7
- package/lib/services/documentService.js +17 -12
- package/lib/services/fetchService.js +129 -112
- package/lib/services/persistenceService.js +33 -29
- package/lib/services/ticketProviderService.js +29 -23
- package/lib/services/tokenPersistenceService.js +12 -8
- package/lib/services/windowService.js +18 -14
- package/lib/startup.js +132 -114
- package/lib/types/AppConfiguration.js +5 -1
- package/lib/types/Artifact.js +11 -7
- package/lib/types/BaseReduxState.js +5 -1
- package/lib/types/Client.js +5 -1
- package/lib/types/Collection.js +5 -1
- package/lib/types/Configuration.js +5 -1
- package/lib/types/DeepLinkingResponseRequest.js +5 -1
- package/lib/types/DeletableModel.js +5 -1
- package/lib/types/Event.js +5 -1
- package/lib/types/ExternalGroup.js +5 -1
- package/lib/types/ExternalProvider.js +5 -1
- package/lib/types/ExternalTerm.js +5 -1
- package/lib/types/Group.js +5 -1
- package/lib/types/IdentityProvider.js +5 -1
- package/lib/types/LtiLaunch.js +5 -1
- package/lib/types/NameOnlyEntity.js +5 -1
- package/lib/types/Notification.js +5 -1
- package/lib/types/OptionalRecord.js +5 -1
- package/lib/types/OwnerSchedule.js +5 -1
- package/lib/types/PropertyOfType.js +5 -1
- package/lib/types/Quill.js +5 -1
- package/lib/types/RoleDescription.js +5 -1
- package/lib/types/Search.js +5 -1
- package/lib/types/SimpleLocation.js +5 -1
- package/lib/types/UniTime.js +5 -1
- package/lib/types/User.js +5 -1
- package/lib/types/UserRole.js +5 -1
- package/lib/types/auth/AuthState.js +5 -1
- package/lib/types/auth/CasV1LoginRequestBody.js +5 -1
- package/lib/types/auth/ClientCredentials.js +5 -1
- package/lib/types/auth/CodeProviderService.js +5 -1
- package/lib/types/auth/LocalLoginRequestBody.js +5 -1
- package/lib/types/auth/TicketProviderService.js +5 -1
- package/lib/types/auth/TokenPersistenceService.js +5 -1
- package/lib/types/auth/index.js +82 -9
- package/lib/types/externals.d.js +2 -0
- package/lib/types/index.js +313 -30
- package/lib/types/net/EndpointConfig.js +5 -1
- package/lib/types/net/EndpointMapping.js +5 -1
- package/lib/types/net/EndpointMappings.js +5 -1
- package/lib/types/net/ErrorHandler.js +5 -1
- package/lib/types/net/FetchConfig.js +5 -1
- package/lib/types/net/FetchErrorData.js +10 -6
- package/lib/types/net/FetchResult.js +5 -1
- package/lib/types/net/HTTPMethod.js +5 -1
- package/lib/types/net/HTTPStatusCode.js +16 -12
- package/lib/types/net/Metadata.js +5 -1
- package/lib/types/net/Model.js +5 -1
- package/lib/types/net/ModelCollection.js +5 -1
- package/lib/types/net/ModelsState.js +5 -1
- package/lib/types/net/OAuthToken.js +5 -1
- package/lib/types/net/OAuthTokenOrNull.js +5 -1
- package/lib/types/net/TokenAccessFunction.js +5 -1
- package/lib/types/net/index.js +181 -18
- package/lib/utils/baseActivity.js +133 -123
- package/lib/utils/baseRole.js +37 -33
- package/lib/utils/collection.js +425 -298
- package/lib/utils/cookies.js +22 -19
- package/lib/utils/date.js +303 -279
- package/lib/utils/dom.js +176 -165
- package/lib/utils/domainIdentifier.js +9 -5
- package/lib/utils/entityUserRole.js +6 -2
- package/lib/utils/error.js +17 -15
- package/lib/utils/events.js +40 -31
- package/lib/utils/externalGroup.js +22 -18
- package/lib/utils/externalProviders.js +8 -4
- package/lib/utils/externalTerms.js +10 -3
- package/lib/utils/fetch.js +179 -180
- package/lib/utils/group.js +18 -7
- package/lib/utils/groupDates.js +37 -33
- package/lib/utils/groupRoles.js +25 -21
- package/lib/utils/lockDownBrowser.js +15 -11
- package/lib/utils/logger.js +26 -22
- package/lib/utils/lti.js +9 -4
- package/lib/utils/model.js +36 -41
- package/lib/utils/number.js +21 -18
- package/lib/utils/promise.js +28 -21
- package/lib/utils/quill.js +65 -62
- package/lib/utils/route.js +58 -55
- package/lib/utils/search.js +76 -80
- package/lib/utils/shard.js +37 -37
- package/lib/utils/sort.js +50 -42
- package/lib/utils/string.js +13 -8
- package/lib/utils/table.js +38 -33
- package/lib/utils/timezone.js +10 -6
- package/lib/utils/url.js +142 -142
- package/lib/utils/user.js +58 -55
- package/lib/utils/userAgent.js +10 -10
- package/lib/utils/userRole.js +57 -49
- package/package.json +17 -3
|
@@ -1,50 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isLineInTableCell = exports.isLineBeforeTable = exports.isLineAfterTable = exports.isInstanceOfBlot = void 0;
|
|
4
7
|
exports.newId = newId;
|
|
5
|
-
|
|
6
|
-
|
|
8
|
+
exports.rangeRemovalWillDeleteCellWithoutRow = void 0;
|
|
9
|
+
var _logger = require("../../../utils/logger");
|
|
10
|
+
var _constants = require("./constants");
|
|
7
11
|
const isInstanceOfBlot = (blot, blotName) => blot.statics.blotName === blotName;
|
|
8
12
|
exports.isInstanceOfBlot = isInstanceOfBlot;
|
|
9
|
-
const isLineInTableCell =
|
|
13
|
+
const isLineInTableCell = line => isInstanceOfBlot(line.parent, _constants.TABLE_BLOT_NAME.TD);
|
|
10
14
|
exports.isLineInTableCell = isLineInTableCell;
|
|
11
|
-
const isLineBeforeTable =
|
|
15
|
+
const isLineBeforeTable = line => isInstanceOfBlot(line.next, _constants.TABLE_BLOT_NAME.TABLE_CONTAINER);
|
|
12
16
|
exports.isLineBeforeTable = isLineBeforeTable;
|
|
13
|
-
const isLineAfterTable =
|
|
17
|
+
const isLineAfterTable = line => isInstanceOfBlot(line.prev, _constants.TABLE_BLOT_NAME.TABLE_CONTAINER);
|
|
14
18
|
exports.isLineAfterTable = isLineAfterTable;
|
|
15
19
|
const rangeRemovalWillDeleteCellWithoutRow = (quill, range) => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
return willDeleteCellWithoutRow;
|
|
20
|
+
const lines = quill.getLines(range);
|
|
21
|
+
const willDeleteCellWithoutRow = lines.some(line => {
|
|
22
|
+
if (isLineInTableCell(line)) {
|
|
23
|
+
const cell = line.parent;
|
|
24
|
+
const cellOffset = cell.offset(quill.scroll);
|
|
25
|
+
const cellLength = cell.length();
|
|
26
|
+
const willDeleteCell =
|
|
27
|
+
// starts in cell and goes out of cell, or is exactly the cell
|
|
28
|
+
range.index >= cellOffset && range.index + range.length >= cellOffset + cellLength ||
|
|
29
|
+
// starts before cell and stops in cell
|
|
30
|
+
range.index < cellOffset && range.index + range.length < cellOffset + cellLength;
|
|
31
|
+
const row = cell.row();
|
|
32
|
+
if (!row) return false;
|
|
33
|
+
const rowOffset = row.offset(quill.scroll);
|
|
34
|
+
const rowLength = row.length();
|
|
35
|
+
const willDeleteRow = range.index <= rowOffset && range.index + range.length >= rowOffset + rowLength;
|
|
36
|
+
(0, _logger.getLogger)().debug('rangeRemovalWillDeleteCellWithoutRow line', {
|
|
37
|
+
range,
|
|
38
|
+
line,
|
|
39
|
+
cellOffset,
|
|
40
|
+
cellLength,
|
|
41
|
+
willDeleteCell,
|
|
42
|
+
willDeleteRow
|
|
43
|
+
});
|
|
44
|
+
return willDeleteCell && !willDeleteRow;
|
|
45
|
+
}
|
|
46
|
+
return false;
|
|
47
|
+
}, {});
|
|
48
|
+
return willDeleteCellWithoutRow;
|
|
46
49
|
};
|
|
47
50
|
exports.rangeRemovalWillDeleteCellWithoutRow = rangeRemovalWillDeleteCellWithoutRow;
|
|
48
51
|
function newId(prefix) {
|
|
49
|
-
|
|
52
|
+
return `${prefix}-${Math.random().toString(36).slice(2, 6)}`;
|
|
50
53
|
}
|
|
54
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9nZ2VyIiwicmVxdWlyZSIsIl9jb25zdGFudHMiLCJpc0luc3RhbmNlT2ZCbG90IiwiYmxvdCIsImJsb3ROYW1lIiwic3RhdGljcyIsImV4cG9ydHMiLCJpc0xpbmVJblRhYmxlQ2VsbCIsImxpbmUiLCJwYXJlbnQiLCJUQUJMRV9CTE9UX05BTUUiLCJURCIsImlzTGluZUJlZm9yZVRhYmxlIiwibmV4dCIsIlRBQkxFX0NPTlRBSU5FUiIsImlzTGluZUFmdGVyVGFibGUiLCJwcmV2IiwicmFuZ2VSZW1vdmFsV2lsbERlbGV0ZUNlbGxXaXRob3V0Um93IiwicXVpbGwiLCJyYW5nZSIsImxpbmVzIiwiZ2V0TGluZXMiLCJ3aWxsRGVsZXRlQ2VsbFdpdGhvdXRSb3ciLCJzb21lIiwiY2VsbCIsImNlbGxPZmZzZXQiLCJvZmZzZXQiLCJzY3JvbGwiLCJjZWxsTGVuZ3RoIiwibGVuZ3RoIiwid2lsbERlbGV0ZUNlbGwiLCJpbmRleCIsInJvdyIsInJvd09mZnNldCIsInJvd0xlbmd0aCIsIndpbGxEZWxldGVSb3ciLCJnZXRMb2dnZXIiLCJkZWJ1ZyIsIm5ld0lkIiwicHJlZml4IiwiTWF0aCIsInJhbmRvbSIsInRvU3RyaW5nIiwic2xpY2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9RdWlsbC9UYWJsZU1vZHVsZS91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCbG90IH0gZnJvbSAncGFyY2htZW50L2Rpc3Qvc3JjL2Jsb3QvYWJzdHJhY3QvYmxvdCdcclxuaW1wb3J0IHsgUmFuZ2VTdGF0aWMgfSBmcm9tICdxdWlsbCdcclxuaW1wb3J0IHsgUXVpbGwgfSBmcm9tICdyZWFjdC1xdWlsbCdcclxuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbG9nZ2VyJ1xyXG5pbXBvcnQgeyBUYWJsZUNlbGxCbG90IH0gZnJvbSAnLi9CbG90cy9UYWJsZUNlbGxCbG90J1xyXG5pbXBvcnQgeyBUQUJMRV9CTE9UX05BTUUgfSBmcm9tICcuL2NvbnN0YW50cydcclxuXHJcbmV4cG9ydCBjb25zdCBpc0luc3RhbmNlT2ZCbG90ID0gKGJsb3Q6IEJsb3QsIGJsb3ROYW1lOiBzdHJpbmcpID0+IChibG90IGFzIGFueSkuc3RhdGljcy5ibG90TmFtZSA9PT0gYmxvdE5hbWVcclxuXHJcbmV4cG9ydCBjb25zdCBpc0xpbmVJblRhYmxlQ2VsbCA9IChsaW5lOiBCbG90KSA9PiBpc0luc3RhbmNlT2ZCbG90KGxpbmUucGFyZW50LCBUQUJMRV9CTE9UX05BTUUuVEQpXHJcblxyXG5leHBvcnQgY29uc3QgaXNMaW5lQmVmb3JlVGFibGUgPSAobGluZTogQmxvdCkgPT4gaXNJbnN0YW5jZU9mQmxvdChsaW5lLm5leHQsIFRBQkxFX0JMT1RfTkFNRS5UQUJMRV9DT05UQUlORVIpXHJcblxyXG5leHBvcnQgY29uc3QgaXNMaW5lQWZ0ZXJUYWJsZSA9IChsaW5lOiBCbG90KSA9PiBpc0luc3RhbmNlT2ZCbG90KGxpbmUucHJldiwgVEFCTEVfQkxPVF9OQU1FLlRBQkxFX0NPTlRBSU5FUilcclxuXHJcbmV4cG9ydCBjb25zdCByYW5nZVJlbW92YWxXaWxsRGVsZXRlQ2VsbFdpdGhvdXRSb3cgPSAocXVpbGw6IFF1aWxsLCByYW5nZTogUmFuZ2VTdGF0aWMpID0+IHtcclxuXHRjb25zdCBsaW5lcyA9IHF1aWxsLmdldExpbmVzKHJhbmdlKVxyXG5cdGNvbnN0IHdpbGxEZWxldGVDZWxsV2l0aG91dFJvdyA9IGxpbmVzLnNvbWUoKGxpbmU6IEJsb3QpID0+IHtcclxuXHRcdGlmIChpc0xpbmVJblRhYmxlQ2VsbChsaW5lKSkge1xyXG5cdFx0XHRjb25zdCBjZWxsID0gbGluZS5wYXJlbnQgYXMgVGFibGVDZWxsQmxvdFxyXG5cdFx0XHRjb25zdCBjZWxsT2Zmc2V0ID0gY2VsbC5vZmZzZXQocXVpbGwuc2Nyb2xsKVxyXG5cdFx0XHRjb25zdCBjZWxsTGVuZ3RoID0gY2VsbC5sZW5ndGgoKVxyXG5cdFx0XHRjb25zdCB3aWxsRGVsZXRlQ2VsbCA9XHJcblx0XHRcdFx0Ly8gc3RhcnRzIGluIGNlbGwgYW5kIGdvZXMgb3V0IG9mIGNlbGwsIG9yIGlzIGV4YWN0bHkgdGhlIGNlbGxcclxuXHRcdFx0XHQocmFuZ2UuaW5kZXggPj0gY2VsbE9mZnNldCAmJiByYW5nZS5pbmRleCArIHJhbmdlLmxlbmd0aCA+PSBjZWxsT2Zmc2V0ICsgY2VsbExlbmd0aCkgfHxcclxuXHRcdFx0XHQvLyBzdGFydHMgYmVmb3JlIGNlbGwgYW5kIHN0b3BzIGluIGNlbGxcclxuXHRcdFx0XHQocmFuZ2UuaW5kZXggPCBjZWxsT2Zmc2V0ICYmIHJhbmdlLmluZGV4ICsgcmFuZ2UubGVuZ3RoIDwgY2VsbE9mZnNldCArIGNlbGxMZW5ndGgpXHJcblx0XHRcdGNvbnN0IHJvdyA9IGNlbGwucm93KClcclxuXHRcdFx0aWYgKCFyb3cpIHJldHVybiBmYWxzZVxyXG5cdFx0XHRjb25zdCByb3dPZmZzZXQgPSByb3cub2Zmc2V0KHF1aWxsLnNjcm9sbClcclxuXHRcdFx0Y29uc3Qgcm93TGVuZ3RoID0gcm93Lmxlbmd0aCgpXHJcblx0XHRcdGNvbnN0IHdpbGxEZWxldGVSb3cgPSByYW5nZS5pbmRleCA8PSByb3dPZmZzZXQgJiYgcmFuZ2UuaW5kZXggKyByYW5nZS5sZW5ndGggPj0gcm93T2Zmc2V0ICsgcm93TGVuZ3RoXHJcblx0XHRcdGdldExvZ2dlcigpLmRlYnVnKCdyYW5nZVJlbW92YWxXaWxsRGVsZXRlQ2VsbFdpdGhvdXRSb3cgbGluZScsIHtcclxuXHRcdFx0XHRyYW5nZSxcclxuXHRcdFx0XHRsaW5lLFxyXG5cdFx0XHRcdGNlbGxPZmZzZXQsXHJcblx0XHRcdFx0Y2VsbExlbmd0aCxcclxuXHRcdFx0XHR3aWxsRGVsZXRlQ2VsbCxcclxuXHRcdFx0XHR3aWxsRGVsZXRlUm93XHJcblx0XHRcdH0pXHJcblx0XHRcdHJldHVybiB3aWxsRGVsZXRlQ2VsbCAmJiAhd2lsbERlbGV0ZVJvd1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGZhbHNlXHJcblx0fSwge30pXHJcblx0cmV0dXJuIHdpbGxEZWxldGVDZWxsV2l0aG91dFJvd1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gbmV3SWQocHJlZml4OiBzdHJpbmcpIHtcclxuXHRyZXR1cm4gYCR7cHJlZml4fS0ke01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIsIDYpfWBcclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBR0EsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBRU8sTUFBTUUsZ0JBQWdCLEdBQUdBLENBQUNDLElBQVUsRUFBRUMsUUFBZ0IsS0FBTUQsSUFBSSxDQUFTRSxPQUFPLENBQUNELFFBQVEsS0FBS0EsUUFBUTtBQUFBRSxPQUFBLENBQUFKLGdCQUFBLEdBQUFBLGdCQUFBO0FBRXRHLE1BQU1LLGlCQUFpQixHQUFJQyxJQUFVLElBQUtOLGdCQUFnQixDQUFDTSxJQUFJLENBQUNDLE1BQU0sRUFBRUMsMEJBQWUsQ0FBQ0MsRUFBRSxDQUFDO0FBQUFMLE9BQUEsQ0FBQUMsaUJBQUEsR0FBQUEsaUJBQUE7QUFFM0YsTUFBTUssaUJBQWlCLEdBQUlKLElBQVUsSUFBS04sZ0JBQWdCLENBQUNNLElBQUksQ0FBQ0ssSUFBSSxFQUFFSCwwQkFBZSxDQUFDSSxlQUFlLENBQUM7QUFBQVIsT0FBQSxDQUFBTSxpQkFBQSxHQUFBQSxpQkFBQTtBQUV0RyxNQUFNRyxnQkFBZ0IsR0FBSVAsSUFBVSxJQUFLTixnQkFBZ0IsQ0FBQ00sSUFBSSxDQUFDUSxJQUFJLEVBQUVOLDBCQUFlLENBQUNJLGVBQWUsQ0FBQztBQUFBUixPQUFBLENBQUFTLGdCQUFBLEdBQUFBLGdCQUFBO0FBRXJHLE1BQU1FLG9DQUFvQyxHQUFHQSxDQUFDQyxLQUFZLEVBQUVDLEtBQWtCLEtBQUs7RUFDekYsTUFBTUMsS0FBSyxHQUFHRixLQUFLLENBQUNHLFFBQVEsQ0FBQ0YsS0FBSyxDQUFDO0VBQ25DLE1BQU1HLHdCQUF3QixHQUFHRixLQUFLLENBQUNHLElBQUksQ0FBRWYsSUFBVSxJQUFLO0lBQzNELElBQUlELGlCQUFpQixDQUFDQyxJQUFJLENBQUMsRUFBRTtNQUM1QixNQUFNZ0IsSUFBSSxHQUFHaEIsSUFBSSxDQUFDQyxNQUF1QjtNQUN6QyxNQUFNZ0IsVUFBVSxHQUFHRCxJQUFJLENBQUNFLE1BQU0sQ0FBQ1IsS0FBSyxDQUFDUyxNQUFNLENBQUM7TUFDNUMsTUFBTUMsVUFBVSxHQUFHSixJQUFJLENBQUNLLE1BQU0sQ0FBQyxDQUFDO01BQ2hDLE1BQU1DLGNBQWM7TUFDbkI7TUFDQ1gsS0FBSyxDQUFDWSxLQUFLLElBQUlOLFVBQVUsSUFBSU4sS0FBSyxDQUFDWSxLQUFLLEdBQUdaLEtBQUssQ0FBQ1UsTUFBTSxJQUFJSixVQUFVLEdBQUdHLFVBQVU7TUFDbkY7TUFDQ1QsS0FBSyxDQUFDWSxLQUFLLEdBQUdOLFVBQVUsSUFBSU4sS0FBSyxDQUFDWSxLQUFLLEdBQUdaLEtBQUssQ0FBQ1UsTUFBTSxHQUFHSixVQUFVLEdBQUdHLFVBQVc7TUFDbkYsTUFBTUksR0FBRyxHQUFHUixJQUFJLENBQUNRLEdBQUcsQ0FBQyxDQUFDO01BQ3RCLElBQUksQ0FBQ0EsR0FBRyxFQUFFLE9BQU8sS0FBSztNQUN0QixNQUFNQyxTQUFTLEdBQUdELEdBQUcsQ0FBQ04sTUFBTSxDQUFDUixLQUFLLENBQUNTLE1BQU0sQ0FBQztNQUMxQyxNQUFNTyxTQUFTLEdBQUdGLEdBQUcsQ0FBQ0gsTUFBTSxDQUFDLENBQUM7TUFDOUIsTUFBTU0sYUFBYSxHQUFHaEIsS0FBSyxDQUFDWSxLQUFLLElBQUlFLFNBQVMsSUFBSWQsS0FBSyxDQUFDWSxLQUFLLEdBQUdaLEtBQUssQ0FBQ1UsTUFBTSxJQUFJSSxTQUFTLEdBQUdDLFNBQVM7TUFDckcsSUFBQUUsaUJBQVMsRUFBQyxDQUFDLENBQUNDLEtBQUssQ0FBQywyQ0FBMkMsRUFBRTtRQUM5RGxCLEtBQUs7UUFDTFgsSUFBSTtRQUNKaUIsVUFBVTtRQUNWRyxVQUFVO1FBQ1ZFLGNBQWM7UUFDZEs7TUFDRCxDQUFDLENBQUM7TUFDRixPQUFPTCxjQUFjLElBQUksQ0FBQ0ssYUFBYTtJQUN4QztJQUNBLE9BQU8sS0FBSztFQUNiLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztFQUNOLE9BQU9iLHdCQUF3QjtBQUNoQyxDQUFDO0FBQUFoQixPQUFBLENBQUFXLG9DQUFBLEdBQUFBLG9DQUFBO0FBRU0sU0FBU3FCLEtBQUtBLENBQUNDLE1BQWMsRUFBRTtFQUNyQyxPQUFPLEdBQUdBLE1BQU0sSUFBSUMsSUFBSSxDQUFDQyxNQUFNLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUNDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDN0QiLCJpZ25vcmVMaXN0IjpbXX0=
|