UNPKG

react-film

Version:

React component for showing carousel just like a film strip

256 lines (246 loc) 25.8 kB
import "core-js/modules/es.object.keys.js"; import "core-js/modules/es.symbol.js"; import "core-js/modules/es.array.filter.js"; import "core-js/modules/es.object.get-own-property-descriptor.js"; import "core-js/modules/es.array.for-each.js"; import "core-js/modules/web.dom-collections.for-each.js"; import "core-js/modules/es.object.get-own-property-descriptors.js"; import "core-js/modules/es.object.define-properties.js"; import "core-js/modules/es.object.define-property.js"; import _defineProperty from "@babel/runtime/helpers/defineProperty"; import "core-js/modules/es.array.join.js"; import "core-js/modules/es.array.map.js"; function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } /* eslint no-magic-numbers: "off" */ import patchStyleOptions from './patchStyleOptions'; var createDotsStyle = function createDotsStyle(_ref) { var dotBoxSize = _ref.dotBoxSize; return { '& .react-film__dots': { alignItems: 'center', bottom: 0, display: 'flex', height: dotBoxSize, justifyContent: 'center', listStyleType: 'none', margin: 0, padding: 0, width: '100%' } }; }; var createDotStyle = function createDotStyle(_ref2) { var cursor = _ref2.cursor, dotBoxSize = _ref2.dotBoxSize, dotSize = _ref2.dotSize; return { '& .react-film__dot': { alignItems: 'center', display: 'flex', height: dotBoxSize, justifyContent: 'center', position: 'relative', width: dotBoxSize, '& .react-film__dot__input': _objectSpread(_objectSpread({}, cursor ? { cursor: cursor } : {}), {}, { height: '100%', left: 0, margin: 0, opacity: 0, position: 'absolute', top: 0, touchAction: 'none', userSelect: 'none', width: '100%' }), '& .react-film__dot__handle': { background: 'rgba(0, 0, 0, .2)', borderRadius: dotSize / 2, height: dotSize, width: dotSize }, '&:hover .react-film__dot__handle, & .react-film__dot__input:focus + .react-film__dot__handle': { background: 'rgba(0, 0, 0, .4)' }, '& .react-film__dot__input:active + .react-film__dot__handle': { background: 'rgba(0, 0, 0, .8)' }, '& .react-film__dot__input:checked:not(:active) + .react-film__dot__handle': { background: 'rgba(0, 0, 0, .6)' } } }; }; var createFlipperStyle = function createFlipperStyle(_ref3) { var cursor = _ref3.cursor, flipperBoxWidth = _ref3.flipperBoxWidth, flipperSize = _ref3.flipperSize; return { '& .react-film__flipper': _objectSpread(_objectSpread({}, cursor ? { cursor: cursor } : {}), {}, { background: 'Transparent', border: 0, height: '100%', outline: 0, overflow: 'hidden', position: 'absolute', top: 0, touchAction: 'none', userSelect: 'none', width: flipperBoxWidth, zIndex: 1, '&.react-film__flipper--left': { left: 0, '& .react-film__flipper__slider': { left: 0 } }, '&.react-film__flipper--right': { right: 0, '& .react-film__flipper__slider': { right: 0 } }, '& .react-film__flipper__slider': { alignItems: 'center', display: 'flex', height: '100%', justifyContent: 'center', position: 'absolute', top: 0, width: '100%' }, '& .react-film__flipper__body': { backgroundColor: 'rgba(0, 0, 0, .6)', borderRadius: '50%', color: 'rgba(255, 255, 255, .6)', fontFamily: ['Consolas', 'monospace'].map(function (font) { return "'".concat(font, "'"); }).join(', '), fontSize: 16, height: flipperSize, lineHeight: "".concat(flipperSize, "px"), overflow: 'hidden', position: 'relative', transitionDuration: '100ms', transitionProperty: 'background-color', width: flipperSize }, '&:hover, &:focus': { '& .react-film__flipper__body': { backgroundColor: 'rgba(0, 0, 0, .8)', color: 'rgba(255, 255, 255, .8)', transitionDuration: 0 } }, '&:active .react-film__flipper__body': { backgroundColor: 'Black', color: 'White', transitionDuration: 0 } }) }; }; var createFilmstripStyle = function createFilmstripStyle() { return { '& .react-film__filmstrip': { MsOverflowStyle: 'none', overflowX: 'scroll', overflowY: 'hidden', overscrollBehaviorX: 'contain', position: 'relative', touchAction: 'manipulation', zIndex: 0, '&::-webkit-scrollbar': { display: 'none' }, '& .react-film__filmstrip__list': { display: 'flex', listStyleType: 'none', margin: 0, padding: 0 } } }; }; var createScrollBarStyle = function createScrollBarStyle(_ref4) { var autoHide = _ref4.autoHide, scrollBarHeight = _ref4.scrollBarHeight, scrollBarMargin = _ref4.scrollBarMargin; return { '& .react-film__scroll-bar': { bottom: autoHide ? -30 : 0, boxSizing: 'border-box', padding: scrollBarMargin, position: 'absolute', transitionDelay: '1s', transitionDuration: '300ms', transitionProperty: 'bottom', width: '100%', '& .react-film__scroll-bar__handle': { backdropFilter: 'blur(4px)', background: 'rgba(255, 255, 255, .4)', borderRadius: scrollBarHeight / 2, height: scrollBarHeight } } }; }; var createRootStyle = function createRootStyle(_ref5) { var autoHide = _ref5.autoHide, autoHideFlipperOnEdge = _ref5.autoHideFlipperOnEdge, flipperBoxWidth = _ref5.flipperBoxWidth, flipperSize = _ref5.flipperSize; return { '& .react-film__main': _objectSpread({ overflow: 'hidden', position: 'relative' }, autoHide ? { '&:hover, &.react-film__main--scrolling': { '& .react-film__main__slider': { transitionDelay: '0s', '&.react-film__main__slider--bottom': { bottom: 0 }, '&.react-film__main__slider--left': _defineProperty({}, autoHideFlipperOnEdge ? '&:not(.react-film__main__slider--hide)' : '&', { left: 0 }), '&.react-film__main__slider--right': _defineProperty({}, autoHideFlipperOnEdge ? '&:not(.react-film__main__slider--hide)' : '&', { right: 0 }) } }, '& .react-film__main__overlay:focus .react-film__main__slider:not(.react-film__main__slider--hide)': { transitionDelay: '0s', '&.react-film__main__slider--left': { left: 0 }, '&.react-film__main__slider--right': { right: 0 } }, '& .react-film__main__slider': { transitionDelay: '1s', transitionDuration: '300ms', '&.react-film__main__slider--left': { left: (flipperBoxWidth + flipperSize) / -2, transitionProperty: 'left' }, '&.react-film__main__slider--right': { right: (flipperBoxWidth + flipperSize) / -2, transitionProperty: 'right' } } } : {}) }; }; export default function createBasicStyleSet(styleOptions) { styleOptions = patchStyleOptions(styleOptions); return { root: _objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({}, createDotsStyle(styleOptions)), createDotStyle(styleOptions)), createFilmstripStyle(styleOptions)), createFlipperStyle(styleOptions)), createRootStyle(styleOptions)), createScrollBarStyle(styleOptions)) }; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jcmVhdGVCYXNpY1N0eWxlU2V0LmpzIl0sIm5hbWVzIjpbInBhdGNoU3R5bGVPcHRpb25zIiwiY3JlYXRlRG90c1N0eWxlIiwiZG90Qm94U2l6ZSIsImFsaWduSXRlbXMiLCJib3R0b20iLCJkaXNwbGF5IiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJsaXN0U3R5bGVUeXBlIiwibWFyZ2luIiwicGFkZGluZyIsIndpZHRoIiwiY3JlYXRlRG90U3R5bGUiLCJjdXJzb3IiLCJkb3RTaXplIiwicG9zaXRpb24iLCJsZWZ0Iiwib3BhY2l0eSIsInRvcCIsInRvdWNoQWN0aW9uIiwidXNlclNlbGVjdCIsImJhY2tncm91bmQiLCJib3JkZXJSYWRpdXMiLCJjcmVhdGVGbGlwcGVyU3R5bGUiLCJmbGlwcGVyQm94V2lkdGgiLCJmbGlwcGVyU2l6ZSIsImJvcmRlciIsIm91dGxpbmUiLCJvdmVyZmxvdyIsInpJbmRleCIsInJpZ2h0IiwiYmFja2dyb3VuZENvbG9yIiwiY29sb3IiLCJmb250RmFtaWx5IiwibWFwIiwiZm9udCIsImpvaW4iLCJmb250U2l6ZSIsImxpbmVIZWlnaHQiLCJ0cmFuc2l0aW9uRHVyYXRpb24iLCJ0cmFuc2l0aW9uUHJvcGVydHkiLCJjcmVhdGVGaWxtc3RyaXBTdHlsZSIsIk1zT3ZlcmZsb3dTdHlsZSIsIm92ZXJmbG93WCIsIm92ZXJmbG93WSIsIm92ZXJzY3JvbGxCZWhhdmlvclgiLCJjcmVhdGVTY3JvbGxCYXJTdHlsZSIsImF1dG9IaWRlIiwic2Nyb2xsQmFySGVpZ2h0Iiwic2Nyb2xsQmFyTWFyZ2luIiwiYm94U2l6aW5nIiwidHJhbnNpdGlvbkRlbGF5IiwiYmFja2Ryb3BGaWx0ZXIiLCJjcmVhdGVSb290U3R5bGUiLCJhdXRvSGlkZUZsaXBwZXJPbkVkZ2UiLCJjcmVhdGVCYXNpY1N0eWxlU2V0Iiwic3R5bGVPcHRpb25zIiwicm9vdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUVB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LCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQgbm8tbWFnaWMtbnVtYmVyczogXCJvZmZcIiAqL1xuXG5pbXBvcnQgcGF0Y2hTdHlsZU9wdGlvbnMgZnJvbSAnLi9wYXRjaFN0eWxlT3B0aW9ucyc7XG5cbmNvbnN0IGNyZWF0ZURvdHNTdHlsZSA9ICh7IGRvdEJveFNpemUgfSkgPT4gKHtcbiAgJyYgLnJlYWN0LWZpbG1fX2RvdHMnOiB7XG4gICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgYm90dG9tOiAwLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBoZWlnaHQ6IGRvdEJveFNpemUsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIGxpc3RTdHlsZVR5cGU6ICdub25lJyxcbiAgICBtYXJnaW46IDAsXG4gICAgcGFkZGluZzogMCxcbiAgICB3aWR0aDogJzEwMCUnXG4gIH1cbn0pO1xuXG5jb25zdCBjcmVhdGVEb3RTdHlsZSA9ICh7IGN1cnNvciwgZG90Qm94U2l6ZSwgZG90U2l6ZSB9KSA9PiAoe1xuICAnJiAucmVhY3QtZmlsbV9fZG90Jzoge1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBoZWlnaHQ6IGRvdEJveFNpemUsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHdpZHRoOiBkb3RCb3hTaXplLFxuXG4gICAgJyYgLnJlYWN0LWZpbG1fX2RvdF9faW5wdXQnOiB7XG4gICAgICAuLi4oY3Vyc29yID8geyBjdXJzb3IgfSA6IHt9KSxcblxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgbWFyZ2luOiAwLFxuICAgICAgb3BhY2l0eTogMCxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdG9wOiAwLFxuICAgICAgdG91Y2hBY3Rpb246ICdub25lJyxcbiAgICAgIHVzZXJTZWxlY3Q6ICdub25lJyxcbiAgICAgIHdpZHRoOiAnMTAwJSdcbiAgICB9LFxuXG4gICAgJyYgLnJlYWN0LWZpbG1fX2RvdF9faGFuZGxlJzoge1xuICAgICAgYmFja2dyb3VuZDogJ3JnYmEoMCwgMCwgMCwgLjIpJyxcbiAgICAgIGJvcmRlclJhZGl1czogZG90U2l6ZSAvIDIsXG4gICAgICBoZWlnaHQ6IGRvdFNpemUsXG4gICAgICB3aWR0aDogZG90U2l6ZVxuICAgIH0sXG5cbiAgICAnJjpob3ZlciAucmVhY3QtZmlsbV9fZG90X19oYW5kbGUsICYgLnJlYWN0LWZpbG1fX2RvdF9faW5wdXQ6Zm9jdXMgKyAucmVhY3QtZmlsbV9fZG90X19oYW5kbGUnOiB7XG4gICAgICBiYWNrZ3JvdW5kOiAncmdiYSgwLCAwLCAwLCAuNCknXG4gICAgfSxcblxuICAgICcmIC5yZWFjdC1maWxtX19kb3RfX2lucHV0OmFjdGl2ZSArIC5yZWFjdC1maWxtX19kb3RfX2hhbmRsZSc6IHtcbiAgICAgIGJhY2tncm91bmQ6ICdyZ2JhKDAsIDAsIDAsIC44KSdcbiAgICB9LFxuXG4gICAgJyYgLnJlYWN0LWZpbG1fX2RvdF9faW5wdXQ6Y2hlY2tlZDpub3QoOmFjdGl2ZSkgKyAucmVhY3QtZmlsbV9fZG90X19oYW5kbGUnOiB7XG4gICAgICBiYWNrZ3JvdW5kOiAncmdiYSgwLCAwLCAwLCAuNiknXG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgY3JlYXRlRmxpcHBlclN0eWxlID0gKHsgY3Vyc29yLCBmbGlwcGVyQm94V2lkdGgsIGZsaXBwZXJTaXplIH0pID0+ICh7XG4gICcmIC5yZWFjdC1maWxtX19mbGlwcGVyJzoge1xuICAgIC4uLihjdXJzb3IgPyB7IGN1cnNvciB9IDoge30pLFxuXG4gICAgYmFja2dyb3VuZDogJ1RyYW5zcGFyZW50JyxcbiAgICBib3JkZXI6IDAsXG4gICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgb3V0bGluZTogMCxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgdG9wOiAwLFxuICAgIHRvdWNoQWN0aW9uOiAnbm9uZScsXG4gICAgdXNlclNlbGVjdDogJ25vbmUnLFxuICAgIHdpZHRoOiBmbGlwcGVyQm94V2lkdGgsXG4gICAgekluZGV4OiAxLFxuXG4gICAgJyYucmVhY3QtZmlsbV9fZmxpcHBlci0tbGVmdCc6IHtcbiAgICAgIGxlZnQ6IDAsXG5cbiAgICAgICcmIC5yZWFjdC1maWxtX19mbGlwcGVyX19zbGlkZXInOiB7XG4gICAgICAgIGxlZnQ6IDBcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgJyYucmVhY3QtZmlsbV9fZmxpcHBlci0tcmlnaHQnOiB7XG4gICAgICByaWdodDogMCxcblxuICAgICAgJyYgLnJlYWN0LWZpbG1fX2ZsaXBwZXJfX3NsaWRlcic6IHtcbiAgICAgICAgcmlnaHQ6IDBcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgJyYgLnJlYWN0LWZpbG1fX2ZsaXBwZXJfX3NsaWRlcic6IHtcbiAgICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgaGVpZ2h0OiAnMTAwJScsXG4gICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHRvcDogMCxcbiAgICAgIHdpZHRoOiAnMTAwJSdcbiAgICB9LFxuXG4gICAgJyYgLnJlYWN0LWZpbG1fX2ZsaXBwZXJfX2JvZHknOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIC42KScsXG4gICAgICBib3JkZXJSYWRpdXM6ICc1MCUnLFxuICAgICAgY29sb3I6ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIC42KScsXG4gICAgICBmb250RmFtaWx5OiBbJ0NvbnNvbGFzJywgJ21vbm9zcGFjZSddLm1hcChmb250ID0+IGAnJHtmb250fSdgKS5qb2luKCcsICcpLFxuICAgICAgZm9udFNpemU6IDE2LFxuICAgICAgaGVpZ2h0OiBmbGlwcGVyU2l6ZSxcbiAgICAgIGxpbmVIZWlnaHQ6IGAke2ZsaXBwZXJTaXplfXB4YCxcbiAgICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiAnMTAwbXMnLFxuICAgICAgdHJhbnNpdGlvblByb3BlcnR5OiAnYmFja2dyb3VuZC1jb2xvcicsXG4gICAgICB3aWR0aDogZmxpcHBlclNpemVcbiAgICB9LFxuXG4gICAgJyY6aG92ZXIsICY6Zm9jdXMnOiB7XG4gICAgICAnJiAucmVhY3QtZmlsbV9fZmxpcHBlcl9fYm9keSc6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAuOCknLFxuICAgICAgICBjb2xvcjogJ3JnYmEoMjU1LCAyNTUsIDI1NSwgLjgpJyxcbiAgICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiAwXG4gICAgICB9XG4gICAgfSxcblxuICAgICcmOmFjdGl2ZSAucmVhY3QtZmlsbV9fZmxpcHBlcl9fYm9keSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ0JsYWNrJyxcbiAgICAgIGNvbG9yOiAnV2hpdGUnLFxuICAgICAgdHJhbnNpdGlvbkR1cmF0aW9uOiAwXG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgY3JlYXRlRmlsbXN0cmlwU3R5bGUgPSAoKSA9PiAoe1xuICAnJiAucmVhY3QtZmlsbV9fZmlsbXN0cmlwJzoge1xuICAgIE1zT3ZlcmZsb3dTdHlsZTogJ25vbmUnLFxuICAgIG92ZXJmbG93WDogJ3Njcm9sbCcsXG4gICAgb3ZlcmZsb3dZOiAnaGlkZGVuJyxcbiAgICBvdmVyc2Nyb2xsQmVoYXZpb3JYOiAnY29udGFpbicsXG4gICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgdG91Y2hBY3Rpb246ICdtYW5pcHVsYXRpb24nLFxuICAgIHpJbmRleDogMCxcblxuICAgICcmOjotd2Via2l0LXNjcm9sbGJhcic6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJ1xuICAgIH0sXG5cbiAgICAnJiAucmVhY3QtZmlsbV9fZmlsbXN0cmlwX19saXN0Jzoge1xuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgbGlzdFN0eWxlVHlwZTogJ25vbmUnLFxuICAgICAgbWFyZ2luOiAwLFxuICAgICAgcGFkZGluZzogMFxuICAgIH1cbiAgfVxufSk7XG5cbmNvbnN0IGNyZWF0ZVNjcm9sbEJhclN0eWxlID0gKHsgYXV0b0hpZGUsIHNjcm9sbEJhckhlaWdodCwgc2Nyb2xsQmFyTWFyZ2luIH0pID0+ICh7XG4gICcmIC5yZWFjdC1maWxtX19zY3JvbGwtYmFyJzoge1xuICAgIGJvdHRvbTogYXV0b0hpZGUgPyAtMzAgOiAwLFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIHBhZGRpbmc6IHNjcm9sbEJhck1hcmdpbixcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0cmFuc2l0aW9uRGVsYXk6ICcxcycsXG4gICAgdHJhbnNpdGlvbkR1cmF0aW9uOiAnMzAwbXMnLFxuICAgIHRyYW5zaXRpb25Qcm9wZXJ0eTogJ2JvdHRvbScsXG4gICAgd2lkdGg6ICcxMDAlJyxcblxuICAgICcmIC5yZWFjdC1maWxtX19zY3JvbGwtYmFyX19oYW5kbGUnOiB7XG4gICAgICBiYWNrZHJvcEZpbHRlcjogJ2JsdXIoNHB4KScsXG4gICAgICBiYWNrZ3JvdW5kOiAncmdiYSgyNTUsIDI1NSwgMjU1LCAuNCknLFxuICAgICAgYm9yZGVyUmFkaXVzOiBzY3JvbGxCYXJIZWlnaHQgLyAyLFxuICAgICAgaGVpZ2h0OiBzY3JvbGxCYXJIZWlnaHRcbiAgICB9XG4gIH1cbn0pO1xuXG5jb25zdCBjcmVhdGVSb290U3R5bGUgPSAoeyBhdXRvSGlkZSwgYXV0b0hpZGVGbGlwcGVyT25FZGdlLCBmbGlwcGVyQm94V2lkdGgsIGZsaXBwZXJTaXplIH0pID0+ICh7XG4gICcmIC5yZWFjdC1maWxtX19tYWluJzoge1xuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcblxuICAgIC4uLihhdXRvSGlkZVxuICAgICAgPyB7XG4gICAgICAgICAgJyY6aG92ZXIsICYucmVhY3QtZmlsbV9fbWFpbi0tc2Nyb2xsaW5nJzoge1xuICAgICAgICAgICAgJyYgLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlcic6IHtcbiAgICAgICAgICAgICAgdHJhbnNpdGlvbkRlbGF5OiAnMHMnLFxuXG4gICAgICAgICAgICAgICcmLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlci0tYm90dG9tJzoge1xuICAgICAgICAgICAgICAgIGJvdHRvbTogMFxuICAgICAgICAgICAgICB9LFxuXG4gICAgICAgICAgICAgICcmLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlci0tbGVmdCc6IHtcbiAgICAgICAgICAgICAgICBbYXV0b0hpZGVGbGlwcGVyT25FZGdlID8gJyY6bm90KC5yZWFjdC1maWxtX19tYWluX19zbGlkZXItLWhpZGUpJyA6ICcmJ106IHtcbiAgICAgICAgICAgICAgICAgIGxlZnQ6IDBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICAgJyYucmVhY3QtZmlsbV9fbWFpbl9fc2xpZGVyLS1yaWdodCc6IHtcbiAgICAgICAgICAgICAgICBbYXV0b0hpZGVGbGlwcGVyT25FZGdlID8gJyY6bm90KC5yZWFjdC1maWxtX19tYWluX19zbGlkZXItLWhpZGUpJyA6ICcmJ106IHtcbiAgICAgICAgICAgICAgICAgIHJpZ2h0OiAwXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcblxuICAgICAgICAgICcmIC5yZWFjdC1maWxtX19tYWluX19vdmVybGF5OmZvY3VzIC5yZWFjdC1maWxtX19tYWluX19zbGlkZXI6bm90KC5yZWFjdC1maWxtX19tYWluX19zbGlkZXItLWhpZGUpJzoge1xuICAgICAgICAgICAgdHJhbnNpdGlvbkRlbGF5OiAnMHMnLFxuXG4gICAgICAgICAgICAnJi5yZWFjdC1maWxtX19tYWluX19zbGlkZXItLWxlZnQnOiB7XG4gICAgICAgICAgICAgIGxlZnQ6IDBcbiAgICAgICAgICAgIH0sXG5cbiAgICAgICAgICAgICcmLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlci0tcmlnaHQnOiB7XG4gICAgICAgICAgICAgIHJpZ2h0OiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcblxuICAgICAgICAgICcmIC5yZWFjdC1maWxtX19tYWluX19zbGlkZXInOiB7XG4gICAgICAgICAgICB0cmFuc2l0aW9uRGVsYXk6ICcxcycsXG4gICAgICAgICAgICB0cmFuc2l0aW9uRHVyYXRpb246ICczMDBtcycsXG5cbiAgICAgICAgICAgICcmLnJlYWN0LWZpbG1fX21haW5fX3NsaWRlci0tbGVmdCc6IHtcbiAgICAgICAgICAgICAgbGVmdDogKGZsaXBwZXJCb3hXaWR0aCArIGZsaXBwZXJTaXplKSAvIC0yLFxuICAgICAgICAgICAgICB0cmFuc2l0aW9uUHJvcGVydHk6ICdsZWZ0J1xuICAgICAgICAgICAgfSxcblxuICAgICAgICAgICAgJyYucmVhY3QtZmlsbV9fbWFpbl9fc2xpZGVyLS1yaWdodCc6IHtcbiAgICAgICAgICAgICAgcmlnaHQ6IChmbGlwcGVyQm94V2lkdGggKyBmbGlwcGVyU2l6ZSkgLyAtMixcbiAgICAgICAgICAgICAgdHJhbnNpdGlvblByb3BlcnR5OiAncmlnaHQnXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA6IHt9KVxuICB9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlQmFzaWNTdHlsZVNldChzdHlsZU9wdGlvbnMpIHtcbiAgc3R5bGVPcHRpb25zID0gcGF0Y2hTdHlsZU9wdGlvbnMoc3R5bGVPcHRpb25zKTtcblxuICByZXR1cm4ge1xuICAgIHJvb3Q6IHtcbiAgICAgIC4uLmNyZWF0ZURvdHNTdHlsZShzdHlsZU9wdGlvbnMpLFxuICAgICAgLi4uY3JlYXRlRG90U3R5bGUoc3R5bGVPcHRpb25zKSxcbiAgICAgIC4uLmNyZWF0ZUZpbG1zdHJpcFN0eWxlKHN0eWxlT3B0aW9ucyksXG4gICAgICAuLi5jcmVhdGVGbGlwcGVyU3R5bGUoc3R5bGVPcHRpb25zKSxcbiAgICAgIC4uLmNyZWF0ZVJvb3RTdHlsZShzdHlsZU9wdGlvbnMpLFxuICAgICAgLi4uY3JlYXRlU2Nyb2xsQmFyU3R5bGUoc3R5bGVPcHRpb25zKVxuICAgIH1cbiAgfTtcbn1cbiJdfQ==