).';\n\n\t\t// Cache references to key DOM elements\n\t\tdom.wrapper = revealElement;\n\t\tdom.slides = revealElement.querySelector( '.slides' );\n\n\t\tif( !dom.slides ) throw 'Unable to find slides container (
).';\n\n\t\t// Compose our config object in order of increasing precedence:\n\t\t// 1. Default reveal.js options\n\t\t// 2. Options provided via Reveal.configure() prior to\n\t\t// initialization\n\t\t// 3. Options passed to the Reveal constructor\n\t\t// 4. Options passed to Reveal.initialize\n\t\t// 5. Query params\n\t\tconfig = { ...defaultConfig, ...config, ...options, ...initOptions, ...Util.getQueryHash() };\n\n\t\tsetViewport();\n\n\t\t// Force a layout when the whole page, incl fonts, has loaded\n\t\twindow.addEventListener( 'load', layout, false );\n\n\t\t// Register plugins and load dependencies, then move on to #start()\n\t\tplugins.load( config.plugins, config.dependencies ).then( start );\n\n\t\treturn new Promise( resolve => Reveal.on( 'ready', resolve ) );\n\n\t}\n\n\t/**\n\t * Encase the presentation in a reveal.js viewport. The\n\t * extent of the viewport differs based on configuration.\n\t */\n\tfunction setViewport() {\n\n\t\t// Embedded decks use the reveal element as their viewport\n\t\tif( config.embedded === true ) {\n\t\t\tdom.viewport = Util.closest( revealElement, '.reveal-viewport' ) || revealElement;\n\t\t}\n\t\t// Full-page decks use the body as their viewport\n\t\telse {\n\t\t\tdom.viewport = document.body;\n\t\t\tdocument.documentElement.classList.add( 'reveal-full-page' );\n\t\t}\n\n\t\tdom.viewport.classList.add( 'reveal-viewport' );\n\n\t}\n\n\t/**\n\t * Starts up reveal.js by binding input events and navigating\n\t * to the current URL deeplink if there is one.\n\t */\n\tfunction start() {\n\n\t\tready = true;\n\n\t\t// Remove slides hidden with data-visibility\n\t\tremoveHiddenSlides();\n\n\t\t// Make sure we've got all the DOM elements we need\n\t\tsetupDOM();\n\n\t\t// Listen to messages posted to this window\n\t\tsetupPostMessage();\n\n\t\t// Prevent the slides from being scrolled out of view\n\t\tsetupScrollPrevention();\n\n\t\t// Adds bindings for fullscreen mode\n\t\tsetupFullscreen();\n\n\t\t// Resets all vertical slides so that only the first is visible\n\t\tresetVerticalSlides();\n\n\t\t// Updates the presentation to match the current configuration values\n\t\tconfigure();\n\n\t\t// Read the initial hash\n\t\tlocation.readURL();\n\n\t\t// Create slide backgrounds\n\t\tbackgrounds.update( true );\n\n\t\t// Notify listeners that the presentation is ready but use a 1ms\n\t\t// timeout to ensure it's not fired synchronously after #initialize()\n\t\tsetTimeout( () => {\n\t\t\t// Enable transitions now that we're loaded\n\t\t\tdom.slides.classList.remove( 'no-transition' );\n\n\t\t\tdom.wrapper.classList.add( 'ready' );\n\n\t\t\tdispatchEvent({\n\t\t\t\ttype: 'ready',\n\t\t\t\tdata: {\n\t\t\t\t\tindexh,\n\t\t\t\t\tindexv,\n\t\t\t\t\tcurrentSlide\n\t\t\t\t}\n\t\t\t});\n\t\t}, 1 );\n\n\t\t// Special setup and config is required when printing to PDF\n\t\tif( print.isPrintingPDF() ) {\n\t\t\tremoveEventListeners();\n\n\t\t\t// The document needs to have loaded for the PDF layout\n\t\t\t// measurements to be accurate\n\t\t\tif( document.readyState === 'complete' ) {\n\t\t\t\tprint.setupPDF();\n\t\t\t}\n\t\t\telse {\n\t\t\t\twindow.addEventListener( 'load', () => {\n\t\t\t\t\tprint.setupPDF();\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Removes all slides with data-visibility=\"hidden\". This\n\t * is done right before the rest of the presentation is\n\t * initialized.\n\t *\n\t * If you want to show all hidden slides, initialize\n\t * reveal.js with showHiddenSlides set to true.\n\t */\n\tfunction removeHiddenSlides() {\n\n\t\tif( !config.showHiddenSlides ) {\n\t\t\tUtil.queryAll( dom.wrapper, 'section[data-visibility=\"hidden\"]' ).forEach( slide => {\n\t\t\t\tslide.parentNode.removeChild( slide );\n\t\t\t} );\n\t\t}\n\n\t}\n\n\t/**\n\t * Finds and stores references to DOM elements which are\n\t * required by the presentation. If a required element is\n\t * not found, it is created.\n\t */\n\tfunction setupDOM() {\n\n\t\t// Prevent transitions while we're loading\n\t\tdom.slides.classList.add( 'no-transition' );\n\n\t\tif( Device.isMobile ) {\n\t\t\tdom.wrapper.classList.add( 'no-hover' );\n\t\t}\n\t\telse {\n\t\t\tdom.wrapper.classList.remove( 'no-hover' );\n\t\t}\n\n\t\tbackgrounds.render();\n\t\tslideNumber.render();\n\t\tjumpToSlide.render();\n\t\tcontrols.render();\n\t\tprogress.render();\n\t\tnotes.render();\n\n\t\t// Overlay graphic which is displayed during the paused mode\n\t\tdom.pauseOverlay = Util.createSingletonNode( dom.wrapper, 'div', 'pause-overlay', config.controls ? '
' : null );\n\n\t\tdom.statusElement = createStatusElement();\n\n\t\tdom.wrapper.setAttribute( 'role', 'application' );\n\t}\n\n\t/**\n\t * Creates a hidden div with role aria-live to announce the\n\t * current slide content. Hide the div off-screen to make it\n\t * available only to Assistive Technologies.\n\t *\n\t * @return {HTMLElement}\n\t */\n\tfunction createStatusElement() {\n\n\t\tlet statusElement = dom.wrapper.querySelector( '.aria-status' );\n\t\tif( !statusElement ) {\n\t\t\tstatusElement = document.createElement( 'div' );\n\t\t\tstatusElement.style.position = 'absolute';\n\t\t\tstatusElement.style.height = '1px';\n\t\t\tstatusElement.style.width = '1px';\n\t\t\tstatusElement.style.overflow = 'hidden';\n\t\t\tstatusElement.style.clip = 'rect( 1px, 1px, 1px, 1px )';\n\t\t\tstatusElement.classList.add( 'aria-status' );\n\t\t\tstatusElement.setAttribute( 'aria-live', 'polite' );\n\t\t\tstatusElement.setAttribute( 'aria-atomic','true' );\n\t\t\tdom.wrapper.appendChild( statusElement );\n\t\t}\n\t\treturn statusElement;\n\n\t}\n\n\t/**\n\t * Announces the given text to screen readers.\n\t */\n\tfunction announceStatus( value ) {\n\n\t\tdom.statusElement.textContent = value;\n\n\t}\n\n\t/**\n\t * Converts the given HTML element into a string of text\n\t * that can be announced to a screen reader. Hidden\n\t * elements are excluded.\n\t */\n\tfunction getStatusText( node ) {\n\n\t\tlet text = '';\n\n\t\t// Text node\n\t\tif( node.nodeType === 3 ) {\n\t\t\ttext += node.textContent;\n\t\t}\n\t\t// Element node\n\t\telse if( node.nodeType === 1 ) {\n\n\t\t\tlet isAriaHidden = node.getAttribute( 'aria-hidden' );\n\t\t\tlet isDisplayHidden = window.getComputedStyle( node )['display'] === 'none';\n\t\t\tif( isAriaHidden !== 'true' && !isDisplayHidden ) {\n\n\t\t\t\tArray.from( node.childNodes ).forEach( child => {\n\t\t\t\t\ttext += getStatusText( child );\n\t\t\t\t} );\n\n\t\t\t}\n\n\t\t}\n\n\t\ttext = text.trim();\n\n\t\treturn text === '' ? '' : text + ' ';\n\n\t}\n\n\t/**\n\t * This is an unfortunate necessity. Some actions β such as\n\t * an input field being focused in an iframe or using the\n\t * keyboard to expand text selection beyond the bounds of\n\t * a slide β can trigger our content to be pushed out of view.\n\t * This scrolling can not be prevented by hiding overflow in\n\t * CSS (we already do) so we have to resort to repeatedly\n\t * checking if the slides have been offset :(\n\t */\n\tfunction setupScrollPrevention() {\n\n\t\tsetInterval( () => {\n\t\t\tif( dom.wrapper.scrollTop !== 0 || dom.wrapper.scrollLeft !== 0 ) {\n\t\t\t\tdom.wrapper.scrollTop = 0;\n\t\t\t\tdom.wrapper.scrollLeft = 0;\n\t\t\t}\n\t\t}, 1000 );\n\n\t}\n\n\t/**\n\t * After entering fullscreen we need to force a layout to\n\t * get our presentations to scale correctly. This behavior\n\t * is inconsistent across browsers but a force layout seems\n\t * to normalize it.\n\t */\n\tfunction setupFullscreen() {\n\n\t\tdocument.addEventListener( 'fullscreenchange', onFullscreenChange );\n\t\tdocument.addEventListener( 'webkitfullscreenchange', onFullscreenChange );\n\n\t}\n\n\t/**\n\t * Registers a listener to postMessage events, this makes it\n\t * possible to call all reveal.js API methods from another\n\t * window. For example:\n\t *\n\t * revealWindow.postMessage( JSON.stringify({\n\t * method: 'slide',\n\t * args: [ 2 ]\n\t * }), '*' );\n\t */\n\tfunction setupPostMessage() {\n\n\t\tif( config.postMessage ) {\n\t\t\twindow.addEventListener( 'message', onPostMessage, false );\n\t\t}\n\n\t}\n\n\t/**\n\t * Applies the configuration settings from the config\n\t * object. May be called multiple times.\n\t *\n\t * @param {object} options\n\t */\n\tfunction configure( options ) {\n\n\t\tconst oldConfig = { ...config }\n\n\t\t// New config options may be passed when this method\n\t\t// is invoked through the API after initialization\n\t\tif( typeof options === 'object' ) Util.extend( config, options );\n\n\t\t// Abort if reveal.js hasn't finished loading, config\n\t\t// changes will be applied automatically once ready\n\t\tif( Reveal.isReady() === false ) return;\n\n\t\tconst numberOfSlides = dom.wrapper.querySelectorAll( SLIDES_SELECTOR ).length;\n\n\t\t// The transition is added as a class on the .reveal element\n\t\tdom.wrapper.classList.remove( oldConfig.transition );\n\t\tdom.wrapper.classList.add( config.transition );\n\n\t\tdom.wrapper.setAttribute( 'data-transition-speed', config.transitionSpeed );\n\t\tdom.wrapper.setAttribute( 'data-background-transition', config.backgroundTransition );\n\n\t\t// Expose our configured slide dimensions as custom props\n\t\tdom.viewport.style.setProperty( '--slide-width', config.width + 'px' );\n\t\tdom.viewport.style.setProperty( '--slide-height', config.height + 'px' );\n\n\t\tif( config.shuffle ) {\n\t\t\tshuffle();\n\t\t}\n\n\t\tUtil.toggleClass( dom.wrapper, 'embedded', config.embedded );\n\t\tUtil.toggleClass( dom.wrapper, 'rtl', config.rtl );\n\t\tUtil.toggleClass( dom.wrapper, 'center', config.center );\n\n\t\t// Exit the paused mode if it was configured off\n\t\tif( config.pause === false ) {\n\t\t\tresume();\n\t\t}\n\n\t\t// Iframe link previews\n\t\tif( config.previewLinks ) {\n\t\t\tenablePreviewLinks();\n\t\t\tdisablePreviewLinks( '[data-preview-link=false]' );\n\t\t}\n\t\telse {\n\t\t\tdisablePreviewLinks();\n\t\t\tenablePreviewLinks( '[data-preview-link]:not([data-preview-link=false])' );\n\t\t}\n\n\t\t// Reset all changes made by auto-animations\n\t\tautoAnimate.reset();\n\n\t\t// Remove existing auto-slide controls\n\t\tif( autoSlidePlayer ) {\n\t\t\tautoSlidePlayer.destroy();\n\t\t\tautoSlidePlayer = null;\n\t\t}\n\n\t\t// Generate auto-slide controls if needed\n\t\tif( numberOfSlides > 1 && config.autoSlide && config.autoSlideStoppable ) {\n\t\t\tautoSlidePlayer = new Playback( dom.wrapper, () => {\n\t\t\t\treturn Math.min( Math.max( ( Date.now() - autoSlideStartTime ) / autoSlide, 0 ), 1 );\n\t\t\t} );\n\n\t\t\tautoSlidePlayer.on( 'click', onAutoSlidePlayerClick );\n\t\t\tautoSlidePaused = false;\n\t\t}\n\n\t\t// Add the navigation mode to the DOM so we can adjust styling\n\t\tif( config.navigationMode !== 'default' ) {\n\t\t\tdom.wrapper.setAttribute( 'data-navigation-mode', config.navigationMode );\n\t\t}\n\t\telse {\n\t\t\tdom.wrapper.removeAttribute( 'data-navigation-mode' );\n\t\t}\n\n\t\tnotes.configure( config, oldConfig );\n\t\tfocus.configure( config, oldConfig );\n\t\tpointer.configure( config, oldConfig );\n\t\tcontrols.configure( config, oldConfig );\n\t\tprogress.configure( config, oldConfig );\n\t\tkeyboard.configure( config, oldConfig );\n\t\tfragments.configure( config, oldConfig );\n\t\tslideNumber.configure( config, oldConfig );\n\n\t\tsync();\n\n\t}\n\n\t/**\n\t * Binds all event listeners.\n\t */\n\tfunction addEventListeners() {\n\n\t\teventsAreBound = true;\n\n\t\twindow.addEventListener( 'resize', onWindowResize, false );\n\n\t\tif( config.touch ) touch.bind();\n\t\tif( config.keyboard ) keyboard.bind();\n\t\tif( config.progress ) progress.bind();\n\t\tif( config.respondToHashChanges ) location.bind();\n\t\tcontrols.bind();\n\t\tfocus.bind();\n\n\t\tdom.slides.addEventListener( 'click', onSlidesClicked, false );\n\t\tdom.slides.addEventListener( 'transitionend', onTransitionEnd, false );\n\t\tdom.pauseOverlay.addEventListener( 'click', resume, false );\n\n\t\tif( config.focusBodyOnPageVisibilityChange ) {\n\t\t\tdocument.addEventListener( 'visibilitychange', onPageVisibilityChange, false );\n\t\t}\n\n\t}\n\n\t/**\n\t * Unbinds all event listeners.\n\t */\n\tfunction removeEventListeners() {\n\n\t\teventsAreBound = false;\n\n\t\ttouch.unbind();\n\t\tfocus.unbind();\n\t\tkeyboard.unbind();\n\t\tcontrols.unbind();\n\t\tprogress.unbind();\n\t\tlocation.unbind();\n\n\t\twindow.removeEventListener( 'resize', onWindowResize, false );\n\n\t\tdom.slides.removeEventListener( 'click', onSlidesClicked, false );\n\t\tdom.slides.removeEventListener( 'transitionend', onTransitionEnd, false );\n\t\tdom.pauseOverlay.removeEventListener( 'click', resume, false );\n\n\t}\n\n\t/**\n\t * Uninitializes reveal.js by undoing changes made to the\n\t * DOM and removing all event listeners.\n\t */\n\tfunction destroy() {\n\n\t\tremoveEventListeners();\n\t\tcancelAutoSlide();\n\t\tdisablePreviewLinks();\n\n\t\t// Destroy controllers\n\t\tnotes.destroy();\n\t\tfocus.destroy();\n\t\tplugins.destroy();\n\t\tpointer.destroy();\n\t\tcontrols.destroy();\n\t\tprogress.destroy();\n\t\tbackgrounds.destroy();\n\t\tslideNumber.destroy();\n\t\tjumpToSlide.destroy();\n\n\t\t// Remove event listeners\n\t\tdocument.removeEventListener( 'fullscreenchange', onFullscreenChange );\n\t\tdocument.removeEventListener( 'webkitfullscreenchange', onFullscreenChange );\n\t\tdocument.removeEventListener( 'visibilitychange', onPageVisibilityChange, false );\n\t\twindow.removeEventListener( 'message', onPostMessage, false );\n\t\twindow.removeEventListener( 'load', layout, false );\n\n\t\t// Undo DOM changes\n\t\tif( dom.pauseOverlay ) dom.pauseOverlay.remove();\n\t\tif( dom.statusElement ) dom.statusElement.remove();\n\n\t\tdocument.documentElement.classList.remove( 'reveal-full-page' );\n\n\t\tdom.wrapper.classList.remove( 'ready', 'center', 'has-horizontal-slides', 'has-vertical-slides' );\n\t\tdom.wrapper.removeAttribute( 'data-transition-speed' );\n\t\tdom.wrapper.removeAttribute( 'data-background-transition' );\n\n\t\tdom.viewport.classList.remove( 'reveal-viewport' );\n\t\tdom.viewport.style.removeProperty( '--slide-width' );\n\t\tdom.viewport.style.removeProperty( '--slide-height' );\n\n\t\tdom.slides.style.removeProperty( 'width' );\n\t\tdom.slides.style.removeProperty( 'height' );\n\t\tdom.slides.style.removeProperty( 'zoom' );\n\t\tdom.slides.style.removeProperty( 'left' );\n\t\tdom.slides.style.removeProperty( 'top' );\n\t\tdom.slides.style.removeProperty( 'bottom' );\n\t\tdom.slides.style.removeProperty( 'right' );\n\t\tdom.slides.style.removeProperty( 'transform' );\n\n\t\tArray.from( dom.wrapper.querySelectorAll( SLIDES_SELECTOR ) ).forEach( slide => {\n\t\t\tslide.style.removeProperty( 'display' );\n\t\t\tslide.style.removeProperty( 'top' );\n\t\t\tslide.removeAttribute( 'hidden' );\n\t\t\tslide.removeAttribute( 'aria-hidden' );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Adds a listener to one of our custom reveal.js events,\n\t * like slidechanged.\n\t */\n\tfunction on( type, listener, useCapture ) {\n\n\t\trevealElement.addEventListener( type, listener, useCapture );\n\n\t}\n\n\t/**\n\t * Unsubscribes from a reveal.js event.\n\t */\n\tfunction off( type, listener, useCapture ) {\n\n\t\trevealElement.removeEventListener( type, listener, useCapture );\n\n\t}\n\n\t/**\n\t * Applies CSS transforms to the slides container. The container\n\t * is transformed from two separate sources: layout and the overview\n\t * mode.\n\t *\n\t * @param {object} transforms\n\t */\n\tfunction transformSlides( transforms ) {\n\n\t\t// Pick up new transforms from arguments\n\t\tif( typeof transforms.layout === 'string' ) slidesTransform.layout = transforms.layout;\n\t\tif( typeof transforms.overview === 'string' ) slidesTransform.overview = transforms.overview;\n\n\t\t// Apply the transforms to the slides container\n\t\tif( slidesTransform.layout ) {\n\t\t\tUtil.transformElement( dom.slides, slidesTransform.layout + ' ' + slidesTransform.overview );\n\t\t}\n\t\telse {\n\t\t\tUtil.transformElement( dom.slides, slidesTransform.overview );\n\t\t}\n\n\t}\n\n\t/**\n\t * Dispatches an event of the specified type from the\n\t * reveal DOM element.\n\t */\n\tfunction dispatchEvent({ target=dom.wrapper, type, data, bubbles=true }) {\n\n\t\tlet event = document.createEvent( 'HTMLEvents', 1, 2 );\n\t\tevent.initEvent( type, bubbles, true );\n\t\tUtil.extend( event, data );\n\t\ttarget.dispatchEvent( event );\n\n\t\tif( target === dom.wrapper ) {\n\t\t\t// If we're in an iframe, post each reveal.js event to the\n\t\t\t// parent window. Used by the notes plugin\n\t\t\tdispatchPostMessage( type );\n\t\t}\n\n\t\treturn event;\n\n\t}\n\n\t/**\n\t * Dispatched a postMessage of the given type from our window.\n\t */\n\tfunction dispatchPostMessage( type, data ) {\n\n\t\tif( config.postMessageEvents && window.parent !== window.self ) {\n\t\t\tlet message = {\n\t\t\t\tnamespace: 'reveal',\n\t\t\t\teventName: type,\n\t\t\t\tstate: getState()\n\t\t\t};\n\n\t\t\tUtil.extend( message, data );\n\n\t\t\twindow.parent.postMessage( JSON.stringify( message ), '*' );\n\t\t}\n\n\t}\n\n\t/**\n\t * Bind preview frame links.\n\t *\n\t * @param {string} [selector=a] - selector for anchors\n\t */\n\tfunction enablePreviewLinks( selector = 'a' ) {\n\n\t\tArray.from( dom.wrapper.querySelectorAll( selector ) ).forEach( element => {\n\t\t\tif( /^(http|www)/gi.test( element.getAttribute( 'href' ) ) ) {\n\t\t\t\telement.addEventListener( 'click', onPreviewLinkClicked, false );\n\t\t\t}\n\t\t} );\n\n\t}\n\n\t/**\n\t * Unbind preview frame links.\n\t */\n\tfunction disablePreviewLinks( selector = 'a' ) {\n\n\t\tArray.from( dom.wrapper.querySelectorAll( selector ) ).forEach( element => {\n\t\t\tif( /^(http|www)/gi.test( element.getAttribute( 'href' ) ) ) {\n\t\t\t\telement.removeEventListener( 'click', onPreviewLinkClicked, false );\n\t\t\t}\n\t\t} );\n\n\t}\n\n\t/**\n\t * Opens a preview window for the target URL.\n\t *\n\t * @param {string} url - url for preview iframe src\n\t */\n\tfunction showPreview( url ) {\n\n\t\tcloseOverlay();\n\n\t\tdom.overlay = document.createElement( 'div' );\n\t\tdom.overlay.classList.add( 'overlay' );\n\t\tdom.overlay.classList.add( 'overlay-preview' );\n\t\tdom.wrapper.appendChild( dom.overlay );\n\n\t\tdom.overlay.innerHTML =\n\t\t\t`
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t
\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tUnable to load iframe. This is likely due to the site's policy (x-frame-options).\n\t\t\t\t\n\t\t\t
`;\n\n\t\tdom.overlay.querySelector( 'iframe' ).addEventListener( 'load', event => {\n\t\t\tdom.overlay.classList.add( 'loaded' );\n\t\t}, false );\n\n\t\tdom.overlay.querySelector( '.close' ).addEventListener( 'click', event => {\n\t\t\tcloseOverlay();\n\t\t\tevent.preventDefault();\n\t\t}, false );\n\n\t\tdom.overlay.querySelector( '.external' ).addEventListener( 'click', event => {\n\t\t\tcloseOverlay();\n\t\t}, false );\n\n\t}\n\n\t/**\n\t * Open or close help overlay window.\n\t *\n\t * @param {Boolean} [override] Flag which overrides the\n\t * toggle logic and forcibly sets the desired state. True means\n\t * help is open, false means it's closed.\n\t */\n\tfunction toggleHelp( override ){\n\n\t\tif( typeof override === 'boolean' ) {\n\t\t\toverride ? showHelp() : closeOverlay();\n\t\t}\n\t\telse {\n\t\t\tif( dom.overlay ) {\n\t\t\t\tcloseOverlay();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tshowHelp();\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Opens an overlay window with help material.\n\t */\n\tfunction showHelp() {\n\n\t\tif( config.help ) {\n\n\t\t\tcloseOverlay();\n\n\t\t\tdom.overlay = document.createElement( 'div' );\n\t\t\tdom.overlay.classList.add( 'overlay' );\n\t\t\tdom.overlay.classList.add( 'overlay-help' );\n\t\t\tdom.wrapper.appendChild( dom.overlay );\n\n\t\t\tlet html = '
Keyboard Shortcuts
';\n\n\t\t\tlet shortcuts = keyboard.getShortcuts(),\n\t\t\t\tbindings = keyboard.getBindings();\n\n\t\t\thtml += '
KEY | ACTION | ';\n\t\t\tfor( let key in shortcuts ) {\n\t\t\t\thtml += `${key} | ${shortcuts[ key ]} |
`;\n\t\t\t}\n\n\t\t\t// Add custom key bindings that have associated descriptions\n\t\t\tfor( let binding in bindings ) {\n\t\t\t\tif( bindings[binding].key && bindings[binding].description ) {\n\t\t\t\t\thtml += `${bindings[binding].key} | ${bindings[binding].description} |
`;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\thtml += '
';\n\n\t\t\tdom.overlay.innerHTML = `\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
${html}
\n\t\t\t\t
\n\t\t\t`;\n\n\t\t\tdom.overlay.querySelector( '.close' ).addEventListener( 'click', event => {\n\t\t\t\tcloseOverlay();\n\t\t\t\tevent.preventDefault();\n\t\t\t}, false );\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Closes any currently open overlay.\n\t */\n\tfunction closeOverlay() {\n\n\t\tif( dom.overlay ) {\n\t\t\tdom.overlay.parentNode.removeChild( dom.overlay );\n\t\t\tdom.overlay = null;\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Applies JavaScript-controlled layout rules to the\n\t * presentation.\n\t */\n\tfunction layout() {\n\n\t\tif( dom.wrapper && !print.isPrintingPDF() ) {\n\n\t\t\tif( !config.disableLayout ) {\n\n\t\t\t\t// On some mobile devices '100vh' is taller than the visible\n\t\t\t\t// viewport which leads to part of the presentation being\n\t\t\t\t// cut off. To work around this we define our own '--vh' custom\n\t\t\t\t// property where 100x adds up to the correct height.\n\t\t\t\t//\n\t\t\t\t// https://css-tricks.com/the-trick-to-viewport-units-on-mobile/\n\t\t\t\tif( Device.isMobile && !config.embedded ) {\n\t\t\t\t\tdocument.documentElement.style.setProperty( '--vh', ( window.innerHeight * 0.01 ) + 'px' );\n\t\t\t\t}\n\n\t\t\t\tconst size = getComputedSlideSize();\n\n\t\t\t\tconst oldScale = scale;\n\n\t\t\t\t// Layout the contents of the slides\n\t\t\t\tlayoutSlideContents( config.width, config.height );\n\n\t\t\t\tdom.slides.style.width = size.width + 'px';\n\t\t\t\tdom.slides.style.height = size.height + 'px';\n\n\t\t\t\t// Determine scale of content to fit within available space\n\t\t\t\tscale = Math.min( size.presentationWidth / size.width, size.presentationHeight / size.height );\n\n\t\t\t\t// Respect max/min scale settings\n\t\t\t\tscale = Math.max( scale, config.minScale );\n\t\t\t\tscale = Math.min( scale, config.maxScale );\n\n\t\t\t\t// Don't apply any scaling styles if scale is 1\n\t\t\t\tif( scale === 1 ) {\n\t\t\t\t\tdom.slides.style.zoom = '';\n\t\t\t\t\tdom.slides.style.left = '';\n\t\t\t\t\tdom.slides.style.top = '';\n\t\t\t\t\tdom.slides.style.bottom = '';\n\t\t\t\t\tdom.slides.style.right = '';\n\t\t\t\t\ttransformSlides( { layout: '' } );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tdom.slides.style.zoom = '';\n\t\t\t\t\tdom.slides.style.left = '50%';\n\t\t\t\t\tdom.slides.style.top = '50%';\n\t\t\t\t\tdom.slides.style.bottom = 'auto';\n\t\t\t\t\tdom.slides.style.right = 'auto';\n\t\t\t\t\ttransformSlides( { layout: 'translate(-50%, -50%) scale('+ scale +')' } );\n\t\t\t\t}\n\n\t\t\t\t// Select all slides, vertical and horizontal\n\t\t\t\tconst slides = Array.from( dom.wrapper.querySelectorAll( SLIDES_SELECTOR ) );\n\n\t\t\t\tfor( let i = 0, len = slides.length; i < len; i++ ) {\n\t\t\t\t\tconst slide = slides[ i ];\n\n\t\t\t\t\t// Don't bother updating invisible slides\n\t\t\t\t\tif( slide.style.display === 'none' ) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif( config.center || slide.classList.contains( 'center' ) ) {\n\t\t\t\t\t\t// Vertical stacks are not centred since their section\n\t\t\t\t\t\t// children will be\n\t\t\t\t\t\tif( slide.classList.contains( 'stack' ) ) {\n\t\t\t\t\t\t\tslide.style.top = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tslide.style.top = Math.max( ( size.height - slide.scrollHeight ) / 2, 0 ) + 'px';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tslide.style.top = '';\n\t\t\t\t\t}\n\n\t\t\t\t}\n\n\t\t\t\tif( oldScale !== scale ) {\n\t\t\t\t\tdispatchEvent({\n\t\t\t\t\t\ttype: 'resize',\n\t\t\t\t\t\tdata: {\n\t\t\t\t\t\t\toldScale,\n\t\t\t\t\t\t\tscale,\n\t\t\t\t\t\t\tsize\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdom.viewport.style.setProperty( '--slide-scale', scale );\n\n\t\t\tprogress.update();\n\t\t\tbackgrounds.updateParallax();\n\n\t\t\tif( overview.isActive() ) {\n\t\t\t\toverview.update();\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Applies layout logic to the contents of all slides in\n\t * the presentation.\n\t *\n\t * @param {string|number} width\n\t * @param {string|number} height\n\t */\n\tfunction layoutSlideContents( width, height ) {\n\n\t\t// Handle sizing of elements with the 'r-stretch' class\n\t\tUtil.queryAll( dom.slides, 'section > .stretch, section > .r-stretch' ).forEach( element => {\n\n\t\t\t// Determine how much vertical space we can use\n\t\t\tlet remainingHeight = Util.getRemainingHeight( element, height );\n\n\t\t\t// Consider the aspect ratio of media elements\n\t\t\tif( /(img|video)/gi.test( element.nodeName ) ) {\n\t\t\t\tconst nw = element.naturalWidth || element.videoWidth,\n\t\t\t\t\t nh = element.naturalHeight || element.videoHeight;\n\n\t\t\t\tconst es = Math.min( width / nw, remainingHeight / nh );\n\n\t\t\t\telement.style.width = ( nw * es ) + 'px';\n\t\t\t\telement.style.height = ( nh * es ) + 'px';\n\n\t\t\t}\n\t\t\telse {\n\t\t\t\telement.style.width = width + 'px';\n\t\t\t\telement.style.height = remainingHeight + 'px';\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Calculates the computed pixel size of our slides. These\n\t * values are based on the width and height configuration\n\t * options.\n\t *\n\t * @param {number} [presentationWidth=dom.wrapper.offsetWidth]\n\t * @param {number} [presentationHeight=dom.wrapper.offsetHeight]\n\t */\n\tfunction getComputedSlideSize( presentationWidth, presentationHeight ) {\n\t\tlet width = config.width;\n\t\tlet height = config.height;\n\n\t\tif( config.disableLayout ) {\n\t\t\twidth = dom.slides.offsetWidth;\n\t\t\theight = dom.slides.offsetHeight;\n\t\t}\n\n\t\tconst size = {\n\t\t\t// Slide size\n\t\t\twidth: width,\n\t\t\theight: height,\n\n\t\t\t// Presentation size\n\t\t\tpresentationWidth: presentationWidth || dom.wrapper.offsetWidth,\n\t\t\tpresentationHeight: presentationHeight || dom.wrapper.offsetHeight\n\t\t};\n\n\t\t// Reduce available space by margin\n\t\tsize.presentationWidth -= ( size.presentationWidth * config.margin );\n\t\tsize.presentationHeight -= ( size.presentationHeight * config.margin );\n\n\t\t// Slide width may be a percentage of available width\n\t\tif( typeof size.width === 'string' && /%$/.test( size.width ) ) {\n\t\t\tsize.width = parseInt( size.width, 10 ) / 100 * size.presentationWidth;\n\t\t}\n\n\t\t// Slide height may be a percentage of available height\n\t\tif( typeof size.height === 'string' && /%$/.test( size.height ) ) {\n\t\t\tsize.height = parseInt( size.height, 10 ) / 100 * size.presentationHeight;\n\t\t}\n\n\t\treturn size;\n\n\t}\n\n\t/**\n\t * Stores the vertical index of a stack so that the same\n\t * vertical slide can be selected when navigating to and\n\t * from the stack.\n\t *\n\t * @param {HTMLElement} stack The vertical stack element\n\t * @param {string|number} [v=0] Index to memorize\n\t */\n\tfunction setPreviousVerticalIndex( stack, v ) {\n\n\t\tif( typeof stack === 'object' && typeof stack.setAttribute === 'function' ) {\n\t\t\tstack.setAttribute( 'data-previous-indexv', v || 0 );\n\t\t}\n\n\t}\n\n\t/**\n\t * Retrieves the vertical index which was stored using\n\t * #setPreviousVerticalIndex() or 0 if no previous index\n\t * exists.\n\t *\n\t * @param {HTMLElement} stack The vertical stack element\n\t */\n\tfunction getPreviousVerticalIndex( stack ) {\n\n\t\tif( typeof stack === 'object' && typeof stack.setAttribute === 'function' && stack.classList.contains( 'stack' ) ) {\n\t\t\t// Prefer manually defined start-indexv\n\t\t\tconst attributeName = stack.hasAttribute( 'data-start-indexv' ) ? 'data-start-indexv' : 'data-previous-indexv';\n\n\t\t\treturn parseInt( stack.getAttribute( attributeName ) || 0, 10 );\n\t\t}\n\n\t\treturn 0;\n\n\t}\n\n\t/**\n\t * Checks if the current or specified slide is vertical\n\t * (nested within another slide).\n\t *\n\t * @param {HTMLElement} [slide=currentSlide] The slide to check\n\t * orientation of\n\t * @return {Boolean}\n\t */\n\tfunction isVerticalSlide( slide = currentSlide ) {\n\n\t\treturn slide && slide.parentNode && !!slide.parentNode.nodeName.match( /section/i );\n\n\t}\n\n\t/**\n\t * Returns true if we're on the last slide in the current\n\t * vertical stack.\n\t */\n\tfunction isLastVerticalSlide() {\n\n\t\tif( currentSlide && isVerticalSlide( currentSlide ) ) {\n\t\t\t// Does this slide have a next sibling?\n\t\t\tif( currentSlide.nextElementSibling ) return false;\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Returns true if we're currently on the first slide in\n\t * the presentation.\n\t */\n\tfunction isFirstSlide() {\n\n\t\treturn indexh === 0 && indexv === 0;\n\n\t}\n\n\t/**\n\t * Returns true if we're currently on the last slide in\n\t * the presenation. If the last slide is a stack, we only\n\t * consider this the last slide if it's at the end of the\n\t * stack.\n\t */\n\tfunction isLastSlide() {\n\n\t\tif( currentSlide ) {\n\t\t\t// Does this slide have a next sibling?\n\t\t\tif( currentSlide.nextElementSibling ) return false;\n\n\t\t\t// If it's vertical, does its parent have a next sibling?\n\t\t\tif( isVerticalSlide( currentSlide ) && currentSlide.parentNode.nextElementSibling ) return false;\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\n\t}\n\n\t/**\n\t * Enters the paused mode which fades everything on screen to\n\t * black.\n\t */\n\tfunction pause() {\n\n\t\tif( config.pause ) {\n\t\t\tconst wasPaused = dom.wrapper.classList.contains( 'paused' );\n\n\t\t\tcancelAutoSlide();\n\t\t\tdom.wrapper.classList.add( 'paused' );\n\n\t\t\tif( wasPaused === false ) {\n\t\t\t\tdispatchEvent({ type: 'paused' });\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Exits from the paused mode.\n\t */\n\tfunction resume() {\n\n\t\tconst wasPaused = dom.wrapper.classList.contains( 'paused' );\n\t\tdom.wrapper.classList.remove( 'paused' );\n\n\t\tcueAutoSlide();\n\n\t\tif( wasPaused ) {\n\t\t\tdispatchEvent({ type: 'resumed' });\n\t\t}\n\n\t}\n\n\t/**\n\t * Toggles the paused mode on and off.\n\t */\n\tfunction togglePause( override ) {\n\n\t\tif( typeof override === 'boolean' ) {\n\t\t\toverride ? pause() : resume();\n\t\t}\n\t\telse {\n\t\t\tisPaused() ? resume() : pause();\n\t\t}\n\n\t}\n\n\t/**\n\t * Checks if we are currently in the paused mode.\n\t *\n\t * @return {Boolean}\n\t */\n\tfunction isPaused() {\n\n\t\treturn dom.wrapper.classList.contains( 'paused' );\n\n\t}\n\n\t/**\n\t * Toggles visibility of the jump-to-slide UI.\n\t */\n\tfunction toggleJumpToSlide( override ) {\n\n\t\tif( typeof override === 'boolean' ) {\n\t\t\toverride ? jumpToSlide.show() : jumpToSlide.hide();\n\t\t}\n\t\telse {\n\t\t\tjumpToSlide.isVisible() ? jumpToSlide.hide() : jumpToSlide.show();\n\t\t}\n\n\t}\n\n\t/**\n\t * Toggles the auto slide mode on and off.\n\t *\n\t * @param {Boolean} [override] Flag which sets the desired state.\n\t * True means autoplay starts, false means it stops.\n\t */\n\n\tfunction toggleAutoSlide( override ) {\n\n\t\tif( typeof override === 'boolean' ) {\n\t\t\toverride ? resumeAutoSlide() : pauseAutoSlide();\n\t\t}\n\n\t\telse {\n\t\t\tautoSlidePaused ? resumeAutoSlide() : pauseAutoSlide();\n\t\t}\n\n\t}\n\n\t/**\n\t * Checks if the auto slide mode is currently on.\n\t *\n\t * @return {Boolean}\n\t */\n\tfunction isAutoSliding() {\n\n\t\treturn !!( autoSlide && !autoSlidePaused );\n\n\t}\n\n\t/**\n\t * Steps from the current point in the presentation to the\n\t * slide which matches the specified horizontal and vertical\n\t * indices.\n\t *\n\t * @param {number} [h=indexh] Horizontal index of the target slide\n\t * @param {number} [v=indexv] Vertical index of the target slide\n\t * @param {number} [f] Index of a fragment within the\n\t * target slide to activate\n\t * @param {number} [origin] Origin for use in multimaster environments\n\t */\n\tfunction slide( h, v, f, origin ) {\n\n\t\t// Dispatch an event before the slide\n\t\tconst slidechange = dispatchEvent({\n\t\t\ttype: 'beforeslidechange',\n\t\t\tdata: {\n\t\t\t\tindexh: h === undefined ? indexh : h,\n\t\t\t\tindexv: v === undefined ? indexv : v,\n\t\t\t\torigin\n\t\t\t}\n\t\t});\n\n\t\t// Abort if this slide change was prevented by an event listener\n\t\tif( slidechange.defaultPrevented ) return;\n\n\t\t// Remember where we were at before\n\t\tpreviousSlide = currentSlide;\n\n\t\t// Query all horizontal slides in the deck\n\t\tconst horizontalSlides = dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR );\n\n\t\t// Abort if there are no slides\n\t\tif( horizontalSlides.length === 0 ) return;\n\n\t\t// If no vertical index is specified and the upcoming slide is a\n\t\t// stack, resume at its previous vertical index\n\t\tif( v === undefined && !overview.isActive() ) {\n\t\t\tv = getPreviousVerticalIndex( horizontalSlides[ h ] );\n\t\t}\n\n\t\t// If we were on a vertical stack, remember what vertical index\n\t\t// it was on so we can resume at the same position when returning\n\t\tif( previousSlide && previousSlide.parentNode && previousSlide.parentNode.classList.contains( 'stack' ) ) {\n\t\t\tsetPreviousVerticalIndex( previousSlide.parentNode, indexv );\n\t\t}\n\n\t\t// Remember the state before this slide\n\t\tconst stateBefore = state.concat();\n\n\t\t// Reset the state array\n\t\tstate.length = 0;\n\n\t\tlet indexhBefore = indexh || 0,\n\t\t\tindexvBefore = indexv || 0;\n\n\t\t// Activate and transition to the new slide\n\t\tindexh = updateSlides( HORIZONTAL_SLIDES_SELECTOR, h === undefined ? indexh : h );\n\t\tindexv = updateSlides( VERTICAL_SLIDES_SELECTOR, v === undefined ? indexv : v );\n\n\t\t// Dispatch an event if the slide changed\n\t\tlet slideChanged = ( indexh !== indexhBefore || indexv !== indexvBefore );\n\n\t\t// Ensure that the previous slide is never the same as the current\n\t\tif( !slideChanged ) previousSlide = null;\n\n\t\t// Find the current horizontal slide and any possible vertical slides\n\t\t// within it\n\t\tlet currentHorizontalSlide = horizontalSlides[ indexh ],\n\t\t\tcurrentVerticalSlides = currentHorizontalSlide.querySelectorAll( 'section' );\n\n\t\t// Store references to the previous and current slides\n\t\tcurrentSlide = currentVerticalSlides[ indexv ] || currentHorizontalSlide;\n\n\t\tlet autoAnimateTransition = false;\n\n\t\t// Detect if we're moving between two auto-animated slides\n\t\tif( slideChanged && previousSlide && currentSlide && !overview.isActive() ) {\n\n\t\t\t// If this is an auto-animated transition, we disable the\n\t\t\t// regular slide transition\n\t\t\t//\n\t\t\t// Note 20-03-2020:\n\t\t\t// This needs to happen before we update slide visibility,\n\t\t\t// otherwise transitions will still run in Safari.\n\t\t\tif( previousSlide.hasAttribute( 'data-auto-animate' ) && currentSlide.hasAttribute( 'data-auto-animate' )\n\t\t\t\t\t&& previousSlide.getAttribute( 'data-auto-animate-id' ) === currentSlide.getAttribute( 'data-auto-animate-id' )\n\t\t\t\t\t&& !( ( indexh > indexhBefore || indexv > indexvBefore ) ? currentSlide : previousSlide ).hasAttribute( 'data-auto-animate-restart' ) ) {\n\n\t\t\t\tautoAnimateTransition = true;\n\t\t\t\tdom.slides.classList.add( 'disable-slide-transitions' );\n\t\t\t}\n\n\t\t\ttransition = 'running';\n\n\t\t}\n\n\t\t// Update the visibility of slides now that the indices have changed\n\t\tupdateSlidesVisibility();\n\n\t\tlayout();\n\n\t\t// Update the overview if it's currently active\n\t\tif( overview.isActive() ) {\n\t\t\toverview.update();\n\t\t}\n\n\t\t// Show fragment, if specified\n\t\tif( typeof f !== 'undefined' ) {\n\t\t\tfragments.goto( f );\n\t\t}\n\n\t\t// Solves an edge case where the previous slide maintains the\n\t\t// 'present' class when navigating between adjacent vertical\n\t\t// stacks\n\t\tif( previousSlide && previousSlide !== currentSlide ) {\n\t\t\tpreviousSlide.classList.remove( 'present' );\n\t\t\tpreviousSlide.setAttribute( 'aria-hidden', 'true' );\n\n\t\t\t// Reset all slides upon navigate to home\n\t\t\tif( isFirstSlide() ) {\n\t\t\t\t// Launch async task\n\t\t\t\tsetTimeout( () => {\n\t\t\t\t\tgetVerticalStacks().forEach( slide => {\n\t\t\t\t\t\tsetPreviousVerticalIndex( slide, 0 );\n\t\t\t\t\t} );\n\t\t\t\t}, 0 );\n\t\t\t}\n\t\t}\n\n\t\t// Apply the new state\n\t\tstateLoop: for( let i = 0, len = state.length; i < len; i++ ) {\n\t\t\t// Check if this state existed on the previous slide. If it\n\t\t\t// did, we will avoid adding it repeatedly\n\t\t\tfor( let j = 0; j < stateBefore.length; j++ ) {\n\t\t\t\tif( stateBefore[j] === state[i] ) {\n\t\t\t\t\tstateBefore.splice( j, 1 );\n\t\t\t\t\tcontinue stateLoop;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tdom.viewport.classList.add( state[i] );\n\n\t\t\t// Dispatch custom event matching the state's name\n\t\t\tdispatchEvent({ type: state[i] });\n\t\t}\n\n\t\t// Clean up the remains of the previous state\n\t\twhile( stateBefore.length ) {\n\t\t\tdom.viewport.classList.remove( stateBefore.pop() );\n\t\t}\n\n\t\tif( slideChanged ) {\n\t\t\tdispatchEvent({\n\t\t\t\ttype: 'slidechanged',\n\t\t\t\tdata: {\n\t\t\t\t\tindexh,\n\t\t\t\t\tindexv,\n\t\t\t\t\tpreviousSlide,\n\t\t\t\t\tcurrentSlide,\n\t\t\t\t\torigin\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t// Handle embedded content\n\t\tif( slideChanged || !previousSlide ) {\n\t\t\tslideContent.stopEmbeddedContent( previousSlide );\n\t\t\tslideContent.startEmbeddedContent( currentSlide );\n\t\t}\n\n\t\t// Announce the current slide contents to screen readers\n\t\t// Use animation frame to prevent getComputedStyle in getStatusText\n\t\t// from triggering layout mid-frame\n\t\trequestAnimationFrame( () => {\n\t\t\tannounceStatus( getStatusText( currentSlide ) );\n\t\t});\n\n\t\tprogress.update();\n\t\tcontrols.update();\n\t\tnotes.update();\n\t\tbackgrounds.update();\n\t\tbackgrounds.updateParallax();\n\t\tslideNumber.update();\n\t\tfragments.update();\n\n\t\t// Update the URL hash\n\t\tlocation.writeURL();\n\n\t\tcueAutoSlide();\n\n\t\t// Auto-animation\n\t\tif( autoAnimateTransition ) {\n\n\t\t\tsetTimeout( () => {\n\t\t\t\tdom.slides.classList.remove( 'disable-slide-transitions' );\n\t\t\t}, 0 );\n\n\t\t\tif( config.autoAnimate ) {\n\t\t\t\t// Run the auto-animation between our slides\n\t\t\t\tautoAnimate.run( previousSlide, currentSlide );\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Syncs the presentation with the current DOM. Useful\n\t * when new slides or control elements are added or when\n\t * the configuration has changed.\n\t */\n\tfunction sync() {\n\n\t\t// Subscribe to input\n\t\tremoveEventListeners();\n\t\taddEventListeners();\n\n\t\t// Force a layout to make sure the current config is accounted for\n\t\tlayout();\n\n\t\t// Reflect the current autoSlide value\n\t\tautoSlide = config.autoSlide;\n\n\t\t// Start auto-sliding if it's enabled\n\t\tcueAutoSlide();\n\n\t\t// Re-create all slide backgrounds\n\t\tbackgrounds.create();\n\n\t\t// Write the current hash to the URL\n\t\tlocation.writeURL();\n\n\t\tif( config.sortFragmentsOnSync === true ) {\n\t\t\tfragments.sortAll();\n\t\t}\n\n\t\tcontrols.update();\n\t\tprogress.update();\n\n\t\tupdateSlidesVisibility();\n\n\t\tnotes.update();\n\t\tnotes.updateVisibility();\n\t\tbackgrounds.update( true );\n\t\tslideNumber.update();\n\t\tslideContent.formatEmbeddedContent();\n\n\t\t// Start or stop embedded content depending on global config\n\t\tif( config.autoPlayMedia === false ) {\n\t\t\tslideContent.stopEmbeddedContent( currentSlide, { unloadIframes: false } );\n\t\t}\n\t\telse {\n\t\t\tslideContent.startEmbeddedContent( currentSlide );\n\t\t}\n\n\t\tif( overview.isActive() ) {\n\t\t\toverview.layout();\n\t\t}\n\n\t}\n\n\t/**\n\t * Updates reveal.js to keep in sync with new slide attributes. For\n\t * example, if you add a new `data-background-image` you can call\n\t * this to have reveal.js render the new background image.\n\t *\n\t * Similar to #sync() but more efficient when you only need to\n\t * refresh a specific slide.\n\t *\n\t * @param {HTMLElement} slide\n\t */\n\tfunction syncSlide( slide = currentSlide ) {\n\n\t\tbackgrounds.sync( slide );\n\t\tfragments.sync( slide );\n\n\t\tslideContent.load( slide );\n\n\t\tbackgrounds.update();\n\t\tnotes.update();\n\n\t}\n\n\t/**\n\t * Resets all vertical slides so that only the first\n\t * is visible.\n\t */\n\tfunction resetVerticalSlides() {\n\n\t\tgetHorizontalSlides().forEach( horizontalSlide => {\n\n\t\t\tUtil.queryAll( horizontalSlide, 'section' ).forEach( ( verticalSlide, y ) => {\n\n\t\t\t\tif( y > 0 ) {\n\t\t\t\t\tverticalSlide.classList.remove( 'present' );\n\t\t\t\t\tverticalSlide.classList.remove( 'past' );\n\t\t\t\t\tverticalSlide.classList.add( 'future' );\n\t\t\t\t\tverticalSlide.setAttribute( 'aria-hidden', 'true' );\n\t\t\t\t}\n\n\t\t\t} );\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Randomly shuffles all slides in the deck.\n\t */\n\tfunction shuffle( slides = getHorizontalSlides() ) {\n\n\t\tslides.forEach( ( slide, i ) => {\n\n\t\t\t// Insert the slide next to a randomly picked sibling slide\n\t\t\t// slide. This may cause the slide to insert before itself,\n\t\t\t// but that's not an issue.\n\t\t\tlet beforeSlide = slides[ Math.floor( Math.random() * slides.length ) ];\n\t\t\tif( beforeSlide.parentNode === slide.parentNode ) {\n\t\t\t\tslide.parentNode.insertBefore( slide, beforeSlide );\n\t\t\t}\n\n\t\t\t// Randomize the order of vertical slides (if there are any)\n\t\t\tlet verticalSlides = slide.querySelectorAll( 'section' );\n\t\t\tif( verticalSlides.length ) {\n\t\t\t\tshuffle( verticalSlides );\n\t\t\t}\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Updates one dimension of slides by showing the slide\n\t * with the specified index.\n\t *\n\t * @param {string} selector A CSS selector that will fetch\n\t * the group of slides we are working with\n\t * @param {number} index The index of the slide that should be\n\t * shown\n\t *\n\t * @return {number} The index of the slide that is now shown,\n\t * might differ from the passed in index if it was out of\n\t * bounds.\n\t */\n\tfunction updateSlides( selector, index ) {\n\n\t\t// Select all slides and convert the NodeList result to\n\t\t// an array\n\t\tlet slides = Util.queryAll( dom.wrapper, selector ),\n\t\t\tslidesLength = slides.length;\n\n\t\tlet printMode = print.isPrintingPDF();\n\t\tlet loopedForwards = false;\n\t\tlet loopedBackwards = false;\n\n\t\tif( slidesLength ) {\n\n\t\t\t// Should the index loop?\n\t\t\tif( config.loop ) {\n\t\t\t\tif( index >= slidesLength ) loopedForwards = true;\n\n\t\t\t\tindex %= slidesLength;\n\n\t\t\t\tif( index < 0 ) {\n\t\t\t\t\tindex = slidesLength + index;\n\t\t\t\t\tloopedBackwards = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Enforce max and minimum index bounds\n\t\t\tindex = Math.max( Math.min( index, slidesLength - 1 ), 0 );\n\n\t\t\tfor( let i = 0; i < slidesLength; i++ ) {\n\t\t\t\tlet element = slides[i];\n\n\t\t\t\tlet reverse = config.rtl && !isVerticalSlide( element );\n\n\t\t\t\t// Avoid .remove() with multiple args for IE11 support\n\t\t\t\telement.classList.remove( 'past' );\n\t\t\t\telement.classList.remove( 'present' );\n\t\t\t\telement.classList.remove( 'future' );\n\n\t\t\t\t// http://www.w3.org/html/wg/drafts/html/master/editing.html#the-hidden-attribute\n\t\t\t\telement.setAttribute( 'hidden', '' );\n\t\t\t\telement.setAttribute( 'aria-hidden', 'true' );\n\n\t\t\t\t// If this element contains vertical slides\n\t\t\t\tif( element.querySelector( 'section' ) ) {\n\t\t\t\t\telement.classList.add( 'stack' );\n\t\t\t\t}\n\n\t\t\t\t// If we're printing static slides, all slides are \"present\"\n\t\t\t\tif( printMode ) {\n\t\t\t\t\telement.classList.add( 'present' );\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tif( i < index ) {\n\t\t\t\t\t// Any element previous to index is given the 'past' class\n\t\t\t\t\telement.classList.add( reverse ? 'future' : 'past' );\n\n\t\t\t\t\tif( config.fragments ) {\n\t\t\t\t\t\t// Show all fragments in prior slides\n\t\t\t\t\t\tshowFragmentsIn( element );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if( i > index ) {\n\t\t\t\t\t// Any element subsequent to index is given the 'future' class\n\t\t\t\t\telement.classList.add( reverse ? 'past' : 'future' );\n\n\t\t\t\t\tif( config.fragments ) {\n\t\t\t\t\t\t// Hide all fragments in future slides\n\t\t\t\t\t\thideFragmentsIn( element );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Update the visibility of fragments when a presentation loops\n\t\t\t\t// in either direction\n\t\t\t\telse if( i === index && config.fragments ) {\n\t\t\t\t\tif( loopedForwards ) {\n\t\t\t\t\t\thideFragmentsIn( element );\n\t\t\t\t\t}\n\t\t\t\t\telse if( loopedBackwards ) {\n\t\t\t\t\t\tshowFragmentsIn( element );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlet slide = slides[index];\n\t\t\tlet wasPresent = slide.classList.contains( 'present' );\n\n\t\t\t// Mark the current slide as present\n\t\t\tslide.classList.add( 'present' );\n\t\t\tslide.removeAttribute( 'hidden' );\n\t\t\tslide.removeAttribute( 'aria-hidden' );\n\n\t\t\tif( !wasPresent ) {\n\t\t\t\t// Dispatch an event indicating the slide is now visible\n\t\t\t\tdispatchEvent({\n\t\t\t\t\ttarget: slide,\n\t\t\t\t\ttype: 'visible',\n\t\t\t\t\tbubbles: false\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If this slide has a state associated with it, add it\n\t\t\t// onto the current state of the deck\n\t\t\tlet slideState = slide.getAttribute( 'data-state' );\n\t\t\tif( slideState ) {\n\t\t\t\tstate = state.concat( slideState.split( ' ' ) );\n\t\t\t}\n\n\t\t}\n\t\telse {\n\t\t\t// Since there are no slides we can't be anywhere beyond the\n\t\t\t// zeroth index\n\t\t\tindex = 0;\n\t\t}\n\n\t\treturn index;\n\n\t}\n\n\t/**\n\t * Shows all fragment elements within the given contaienr.\n\t */\n\tfunction showFragmentsIn( container ) {\n\n\t\tUtil.queryAll( container, '.fragment' ).forEach( fragment => {\n\t\t\tfragment.classList.add( 'visible' );\n\t\t\tfragment.classList.remove( 'current-fragment' );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Hides all fragment elements within the given contaienr.\n\t */\n\tfunction hideFragmentsIn( container ) {\n\n\t\tUtil.queryAll( container, '.fragment.visible' ).forEach( fragment => {\n\t\t\tfragment.classList.remove( 'visible', 'current-fragment' );\n\t\t} );\n\n\t}\n\n\t/**\n\t * Optimization method; hide all slides that are far away\n\t * from the present slide.\n\t */\n\tfunction updateSlidesVisibility() {\n\n\t\t// Select all slides and convert the NodeList result to\n\t\t// an array\n\t\tlet horizontalSlides = getHorizontalSlides(),\n\t\t\thorizontalSlidesLength = horizontalSlides.length,\n\t\t\tdistanceX,\n\t\t\tdistanceY;\n\n\t\tif( horizontalSlidesLength && typeof indexh !== 'undefined' ) {\n\n\t\t\t// The number of steps away from the present slide that will\n\t\t\t// be visible\n\t\t\tlet viewDistance = overview.isActive() ? 10 : config.viewDistance;\n\n\t\t\t// Shorten the view distance on devices that typically have\n\t\t\t// less resources\n\t\t\tif( Device.isMobile ) {\n\t\t\t\tviewDistance = overview.isActive() ? 6 : config.mobileViewDistance;\n\t\t\t}\n\n\t\t\t// All slides need to be visible when exporting to PDF\n\t\t\tif( print.isPrintingPDF() ) {\n\t\t\t\tviewDistance = Number.MAX_VALUE;\n\t\t\t}\n\n\t\t\tfor( let x = 0; x < horizontalSlidesLength; x++ ) {\n\t\t\t\tlet horizontalSlide = horizontalSlides[x];\n\n\t\t\t\tlet verticalSlides = Util.queryAll( horizontalSlide, 'section' ),\n\t\t\t\t\tverticalSlidesLength = verticalSlides.length;\n\n\t\t\t\t// Determine how far away this slide is from the present\n\t\t\t\tdistanceX = Math.abs( ( indexh || 0 ) - x ) || 0;\n\n\t\t\t\t// If the presentation is looped, distance should measure\n\t\t\t\t// 1 between the first and last slides\n\t\t\t\tif( config.loop ) {\n\t\t\t\t\tdistanceX = Math.abs( ( ( indexh || 0 ) - x ) % ( horizontalSlidesLength - viewDistance ) ) || 0;\n\t\t\t\t}\n\n\t\t\t\t// Show the horizontal slide if it's within the view distance\n\t\t\t\tif( distanceX < viewDistance ) {\n\t\t\t\t\tslideContent.load( horizontalSlide );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tslideContent.unload( horizontalSlide );\n\t\t\t\t}\n\n\t\t\t\tif( verticalSlidesLength ) {\n\n\t\t\t\t\tlet oy = getPreviousVerticalIndex( horizontalSlide );\n\n\t\t\t\t\tfor( let y = 0; y < verticalSlidesLength; y++ ) {\n\t\t\t\t\t\tlet verticalSlide = verticalSlides[y];\n\n\t\t\t\t\t\tdistanceY = x === ( indexh || 0 ) ? Math.abs( ( indexv || 0 ) - y ) : Math.abs( y - oy );\n\n\t\t\t\t\t\tif( distanceX + distanceY < viewDistance ) {\n\t\t\t\t\t\t\tslideContent.load( verticalSlide );\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tslideContent.unload( verticalSlide );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Flag if there are ANY vertical slides, anywhere in the deck\n\t\t\tif( hasVerticalSlides() ) {\n\t\t\t\tdom.wrapper.classList.add( 'has-vertical-slides' );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdom.wrapper.classList.remove( 'has-vertical-slides' );\n\t\t\t}\n\n\t\t\t// Flag if there are ANY horizontal slides, anywhere in the deck\n\t\t\tif( hasHorizontalSlides() ) {\n\t\t\t\tdom.wrapper.classList.add( 'has-horizontal-slides' );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tdom.wrapper.classList.remove( 'has-horizontal-slides' );\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Determine what available routes there are for navigation.\n\t *\n\t * @return {{left: boolean, right: boolean, up: boolean, down: boolean}}\n\t */\n\tfunction availableRoutes({ includeFragments = false } = {}) {\n\n\t\tlet horizontalSlides = dom.wrapper.querySelectorAll( HORIZONTAL_SLIDES_SELECTOR ),\n\t\t\tverticalSlides = dom.wrapper.querySelectorAll( VERTICAL_SLIDES_SELECTOR );\n\n\t\tlet routes = {\n\t\t\tleft: indexh > 0,\n\t\t\tright: indexh < horizontalSlides.length - 1,\n\t\t\tup: indexv > 0,\n\t\t\tdown: indexv < verticalSlides.length - 1\n\t\t};\n\n\t\t// Looped presentations can always be navigated as long as\n\t\t// there are slides available\n\t\tif( config.loop ) {\n\t\t\tif( horizontalSlides.length > 1 ) {\n\t\t\t\troutes.left = true;\n\t\t\t\troutes.right = true;\n\t\t\t}\n\n\t\t\tif( verticalSlides.length > 1 ) {\n\t\t\t\troutes.up = true;\n\t\t\t\troutes.down = true;\n\t\t\t}\n\t\t}\n\n\t\tif ( horizontalSlides.length > 1 && config.navigationMode === 'linear' ) {\n\t\t\troutes.right = routes.right || routes.down;\n\t\t\troutes.left = routes.left || routes.up;\n\t\t}\n\n\t\t// If includeFragments is set, a route will be considered\n\t\t// available if either a slid OR fragment is available in\n\t\t// the given direction\n\t\tif( includeFragments === true ) {\n\t\t\tlet fragmentRoutes = fragments.availableRoutes();\n\t\t\troutes.left = routes.left || fragmentRoutes.prev;\n\t\t\troutes.up = routes.up || fragmentRoutes.prev;\n\t\t\troutes.down = routes.down || fragmentRoutes.next;\n\t\t\troutes.right = routes.right || fragmentRoutes.next;\n\t\t}\n\n\t\t// Reverse horizontal controls for rtl\n\t\tif( config.rtl ) {\n\t\t\tlet left = routes.left;\n\t\t\troutes.left = routes.right;\n\t\t\troutes.right = left;\n\t\t}\n\n\t\treturn routes;\n\n\t}\n\n\t/**\n\t * Returns the number of past slides. This can be used as a global\n\t * flattened index for slides.\n\t *\n\t * @param {HTMLElement} [slide=currentSlide] The slide we're counting before\n\t *\n\t * @return {number} Past slide count\n\t */\n\tfunction getSlidePastCount( slide = currentSlide ) {\n\n\t\tlet horizontalSlides = getHorizontalSlides();\n\n\t\t// The number of past slides\n\t\tlet pastCount = 0;\n\n\t\t// Step through all slides and count the past ones\n\t\tmainLoop: for( let i = 0; i < horizontalSlides.length; i++ ) {\n\n\t\t\tlet horizontalSlide = horizontalSlides[i];\n\t\t\tlet verticalSlides = horizontalSlide.querySelectorAll( 'section' );\n\n\t\t\tfor( let j = 0; j < verticalSlides.length; j++ ) {\n\n\t\t\t\t// Stop as soon as we arrive at the present\n\t\t\t\tif( verticalSlides[j] === slide ) {\n\t\t\t\t\tbreak mainLoop;\n\t\t\t\t}\n\n\t\t\t\t// Don't count slides with the \"uncounted\" class\n\t\t\t\tif( verticalSlides[j].dataset.visibility !== 'uncounted' ) {\n\t\t\t\t\tpastCount++;\n\t\t\t\t}\n\n\t\t\t}\n\n\t\t\t// Stop as soon as we arrive at the present\n\t\t\tif( horizontalSlide === slide ) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// Don't count the wrapping section for vertical slides and\n\t\t\t// slides marked as uncounted\n\t\t\tif( horizontalSlide.classList.contains( 'stack' ) === false && horizontalSlide.dataset.visibility !== 'uncounted' ) {\n\t\t\t\tpastCount++;\n\t\t\t}\n\n\t\t}\n\n\t\treturn pastCount;\n\n\t}\n\n\t/**\n\t * Returns a value ranging from 0-1 that represents\n\t * how far into the presentation we have navigated.\n\t *\n\t * @return {number}\n\t */\n\tfunction getProgress() {\n\n\t\t// The number of past and total slides\n\t\tlet totalCount = getTotalSlides();\n\t\tlet pastCount = getSlidePastCount();\n\n\t\tif( currentSlide ) {\n\n\t\t\tlet allFragments = currentSlide.querySelectorAll( '.fragment' );\n\n\t\t\t// If there are fragments in the current slide those should be\n\t\t\t// accounted for in the progress.\n\t\t\tif( allFragments.length > 0 ) {\n\t\t\t\tlet visibleFragments = currentSlide.querySelectorAll( '.fragment.visible' );\n\n\t\t\t\t// This value represents how big a portion of the slide progress\n\t\t\t\t// that is made up by its fragments (0-1)\n\t\t\t\tlet fragmentWeight = 0.9;\n\n\t\t\t\t// Add fragment progress to the past slide count\n\t\t\t\tpastCount += ( visibleFragments.length / allFragments.length ) * fragmentWeight;\n\t\t\t}\n\n\t\t}\n\n\t\treturn Math.min( pastCount / ( totalCount - 1 ), 1 );\n\n\t}\n\n\t/**\n\t * Retrieves the h/v location and fragment of the current,\n\t * or specified, slide.\n\t *\n\t * @param {HTMLElement} [slide] If specified, the returned\n\t * index will be for this slide rather than the currently\n\t * active one\n\t *\n\t * @return {{h: number, v: number, f: number}}\n\t */\n\tfunction getIndices( slide ) {\n\n\t\t// By default, return the current indices\n\t\tlet h = indexh,\n\t\t\tv = indexv,\n\t\t\tf;\n\n\t\t// If a slide is specified, return the indices of that slide\n\t\tif( slide ) {\n\t\t\tlet isVertical = isVerticalSlide( slide );\n\t\t\tlet slideh = isVertical ? slide.parentNode : slide;\n\n\t\t\t// Select all horizontal slides\n\t\t\tlet horizontalSlides = getHorizontalSlides();\n\n\t\t\t// Now that we know which the horizontal slide is, get its index\n\t\t\th = Math.max( horizontalSlides.indexOf( slideh ), 0 );\n\n\t\t\t// Assume we're not vertical\n\t\t\tv = undefined;\n\n\t\t\t// If this is a vertical slide, grab the vertical index\n\t\t\tif( isVertical ) {\n\t\t\t\tv = Math.max( Util.queryAll( slide.parentNode, 'section' ).indexOf( slide ), 0 );\n\t\t\t}\n\t\t}\n\n\t\tif( !slide && currentSlide ) {\n\t\t\tlet hasFragments = currentSlide.querySelectorAll( '.fragment' ).length > 0;\n\t\t\tif( hasFragments ) {\n\t\t\t\tlet currentFragment = currentSlide.querySelector( '.current-fragment' );\n\t\t\t\tif( currentFragment && currentFragment.hasAttribute( 'data-fragment-index' ) ) {\n\t\t\t\t\tf = parseInt( currentFragment.getAttribute( 'data-fragment-index' ), 10 );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tf = currentSlide.querySelectorAll( '.fragment.visible' ).length - 1;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn { h, v, f };\n\n\t}\n\n\t/**\n\t * Retrieves all slides in this presentation.\n\t */\n\tfunction getSlides() {\n\n\t\treturn Util.queryAll( dom.wrapper, SLIDES_SELECTOR + ':not(.stack):not([data-visibility=\"uncounted\"])' );\n\n\t}\n\n\t/**\n\t * Returns a list of all horizontal slides in the deck. Each\n\t * vertical stack is included as one horizontal slide in the\n\t * resulting array.\n\t */\n\tfunction getHorizontalSlides() {\n\n\t\treturn Util.queryAll( dom.wrapper, HORIZONTAL_SLIDES_SELECTOR );\n\n\t}\n\n\t/**\n\t * Returns all vertical slides that exist within this deck.\n\t */\n\tfunction getVerticalSlides() {\n\n\t\treturn Util.queryAll( dom.wrapper, '.slides>section>section' );\n\n\t}\n\n\t/**\n\t * Returns all vertical stacks (each stack can contain multiple slides).\n\t */\n\tfunction getVerticalStacks() {\n\n\t\treturn Util.queryAll( dom.wrapper, HORIZONTAL_SLIDES_SELECTOR + '.stack');\n\n\t}\n\n\t/**\n\t * Returns true if there are at least two horizontal slides.\n\t */\n\tfunction hasHorizontalSlides() {\n\n\t\treturn getHorizontalSlides().length > 1;\n\t}\n\n\t/**\n\t * Returns true if there are at least two vertical slides.\n\t */\n\tfunction hasVerticalSlides() {\n\n\t\treturn getVerticalSlides().length > 1;\n\n\t}\n\n\t/**\n\t * Returns an array of objects where each object represents the\n\t * attributes on its respective slide.\n\t */\n\tfunction getSlidesAttributes() {\n\n\t\treturn getSlides().map( slide => {\n\n\t\t\tlet attributes = {};\n\t\t\tfor( let i = 0; i < slide.attributes.length; i++ ) {\n\t\t\t\tlet attribute = slide.attributes[ i ];\n\t\t\t\tattributes[ attribute.name ] = attribute.value;\n\t\t\t}\n\t\t\treturn attributes;\n\n\t\t} );\n\n\t}\n\n\t/**\n\t * Retrieves the total number of slides in this presentation.\n\t *\n\t * @return {number}\n\t */\n\tfunction getTotalSlides() {\n\n\t\treturn getSlides().length;\n\n\t}\n\n\t/**\n\t * Returns the slide element matching the specified index.\n\t *\n\t * @return {HTMLElement}\n\t */\n\tfunction getSlide( x, y ) {\n\n\t\tlet horizontalSlide = getHorizontalSlides()[ x ];\n\t\tlet verticalSlides = horizontalSlide && horizontalSlide.querySelectorAll( 'section' );\n\n\t\tif( verticalSlides && verticalSlides.length && typeof y === 'number' ) {\n\t\t\treturn verticalSlides ? verticalSlides[ y ] : undefined;\n\t\t}\n\n\t\treturn horizontalSlide;\n\n\t}\n\n\t/**\n\t * Returns the background element for the given slide.\n\t * All slides, even the ones with no background properties\n\t * defined, have a background element so as long as the\n\t * index is valid an element will be returned.\n\t *\n\t * @param {mixed} x Horizontal background index OR a slide\n\t * HTML element\n\t * @param {number} y Vertical background index\n\t * @return {(HTMLElement[]|*)}\n\t */\n\tfunction getSlideBackground( x, y ) {\n\n\t\tlet slide = typeof x === 'number' ? getSlide( x, y ) : x;\n\t\tif( slide ) {\n\t\t\treturn slide.slideBackgroundElement;\n\t\t}\n\n\t\treturn undefined;\n\n\t}\n\n\t/**\n\t * Retrieves the current state of the presentation as\n\t * an object. This state can then be restored at any\n\t * time.\n\t *\n\t * @return {{indexh: number, indexv: number, indexf: number, paused: boolean, overview: boolean}}\n\t */\n\tfunction getState() {\n\n\t\tlet indices = getIndices();\n\n\t\treturn {\n\t\t\tindexh: indices.h,\n\t\t\tindexv: indices.v,\n\t\t\tindexf: indices.f,\n\t\t\tpaused: isPaused(),\n\t\t\toverview: overview.isActive()\n\t\t};\n\n\t}\n\n\t/**\n\t * Restores the presentation to the given state.\n\t *\n\t * @param {object} state As generated by getState()\n\t * @see {@link getState} generates the parameter `state`\n\t */\n\tfunction setState( state ) {\n\n\t\tif( typeof state === 'object' ) {\n\t\t\tslide( Util.deserialize( state.indexh ), Util.deserialize( state.indexv ), Util.deserialize( state.indexf ) );\n\n\t\t\tlet pausedFlag = Util.deserialize( state.paused ),\n\t\t\t\toverviewFlag = Util.deserialize( state.overview );\n\n\t\t\tif( typeof pausedFlag === 'boolean' && pausedFlag !== isPaused() ) {\n\t\t\t\ttogglePause( pausedFlag );\n\t\t\t}\n\n\t\t\tif( typeof overviewFlag === 'boolean' && overviewFlag !== overview.isActive() ) {\n\t\t\t\toverview.toggle( overviewFlag );\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Cues a new automated slide if enabled in the config.\n\t */\n\tfunction cueAutoSlide() {\n\n\t\tcancelAutoSlide();\n\n\t\tif( currentSlide && config.autoSlide !== false ) {\n\n\t\t\tlet fragment = currentSlide.querySelector( '.current-fragment' );\n\n\t\t\t// When the slide first appears there is no \"current\" fragment so\n\t\t\t// we look for a data-autoslide timing on the first fragment\n\t\t\tif( !fragment ) fragment = currentSlide.querySelector( '.fragment' );\n\n\t\t\tlet fragmentAutoSlide = fragment ? fragment.getAttribute( 'data-autoslide' ) : null;\n\t\t\tlet parentAutoSlide = currentSlide.parentNode ? currentSlide.parentNode.getAttribute( 'data-autoslide' ) : null;\n\t\t\tlet slideAutoSlide = currentSlide.getAttribute( 'data-autoslide' );\n\n\t\t\t// Pick value in the following priority order:\n\t\t\t// 1. Current fragment's data-autoslide\n\t\t\t// 2. Current slide's data-autoslide\n\t\t\t// 3. Parent slide's data-autoslide\n\t\t\t// 4. Global autoSlide setting\n\t\t\tif( fragmentAutoSlide ) {\n\t\t\t\tautoSlide = parseInt( fragmentAutoSlide, 10 );\n\t\t\t}\n\t\t\telse if( slideAutoSlide ) {\n\t\t\t\tautoSlide = parseInt( slideAutoSlide, 10 );\n\t\t\t}\n\t\t\telse if( parentAutoSlide ) {\n\t\t\t\tautoSlide = parseInt( parentAutoSlide, 10 );\n\t\t\t}\n\t\t\telse {\n\t\t\t\tautoSlide = config.autoSlide;\n\n\t\t\t\t// If there are media elements with data-autoplay,\n\t\t\t\t// automatically set the autoSlide duration to the\n\t\t\t\t// length of that media. Not applicable if the slide\n\t\t\t\t// is divided up into fragments.\n\t\t\t\t// playbackRate is accounted for in the duration.\n\t\t\t\tif( currentSlide.querySelectorAll( '.fragment' ).length === 0 ) {\n\t\t\t\t\tUtil.queryAll( currentSlide, 'video, audio' ).forEach( el => {\n\t\t\t\t\t\tif( el.hasAttribute( 'data-autoplay' ) ) {\n\t\t\t\t\t\t\tif( autoSlide && (el.duration * 1000 / el.playbackRate ) > autoSlide ) {\n\t\t\t\t\t\t\t\tautoSlide = ( el.duration * 1000 / el.playbackRate ) + 1000;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Cue the next auto-slide if:\n\t\t\t// - There is an autoSlide value\n\t\t\t// - Auto-sliding isn't paused by the user\n\t\t\t// - The presentation isn't paused\n\t\t\t// - The overview isn't active\n\t\t\t// - The presentation isn't over\n\t\t\tif( autoSlide && !autoSlidePaused && !isPaused() && !overview.isActive() && ( !isLastSlide() || fragments.availableRoutes().next || config.loop === true ) ) {\n\t\t\t\tautoSlideTimeout = setTimeout( () => {\n\t\t\t\t\tif( typeof config.autoSlideMethod === 'function' ) {\n\t\t\t\t\t\tconfig.autoSlideMethod()\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tnavigateNext();\n\t\t\t\t\t}\n\t\t\t\t\tcueAutoSlide();\n\t\t\t\t}, autoSlide );\n\t\t\t\tautoSlideStartTime = Date.now();\n\t\t\t}\n\n\t\t\tif( autoSlidePlayer ) {\n\t\t\t\tautoSlidePlayer.setPlaying( autoSlideTimeout !== -1 );\n\t\t\t}\n\n\t\t}\n\n\t}\n\n\t/**\n\t * Cancels any ongoing request to auto-slide.\n\t */\n\tfunction cancelAutoSlide() {\n\n\t\tclearTimeout( autoSlideTimeout );\n\t\tautoSlideTimeout = -1;\n\n\t}\n\n\tfunction pauseAutoSlide() {\n\n\t\tif( autoSlide && !autoSlidePaused ) {\n\t\t\tautoSlidePaused = true;\n\t\t\tdispatchEvent({ type: 'autoslidepaused' });\n\t\t\tclearTimeout( autoSlideTimeout );\n\n\t\t\tif( autoSlidePlayer ) {\n\t\t\t\tautoSlidePlayer.setPlaying( false );\n\t\t\t}\n\t\t}\n\n\t}\n\n\tfunction resumeAutoSlide() {\n\n\t\tif( autoSlide && autoSlidePaused ) {\n\t\t\tautoSlidePaused = false;\n\t\t\tdispatchEvent({ type: 'autoslideresumed' });\n\t\t\tcueAutoSlide();\n\t\t}\n\n\t}\n\n\tfunction navigateLeft({skipFragments=false}={}) {\n\n\t\tnavigationHistory.hasNavigatedHorizontally = true;\n\n\t\t// Reverse for RTL\n\t\tif( config.rtl ) {\n\t\t\tif( ( overview.isActive() || skipFragments || fragments.next() === false ) && availableRoutes().left ) {\n\t\t\t\tslide( indexh + 1, config.navigationMode === 'grid' ? indexv : undefined );\n\t\t\t}\n\t\t}\n\t\t// Normal navigation\n\t\telse if( ( overview.isActive() || skipFragments || fragments.prev() === false ) && availableRoutes().left ) {\n\t\t\tslide( indexh - 1, config.navigationMode === 'grid' ? indexv : undefined );\n\t\t}\n\n\t}\n\n\tfunction navigateRight({skipFragments=false}={}) {\n\n\t\tnavigationHistory.hasNavigatedHorizontally = true;\n\n\t\t// Reverse for RTL\n\t\tif( config.rtl ) {\n\t\t\tif( ( overview.isActive() || skipFragments || fragments.prev() === false ) && availableRoutes().right ) {\n\t\t\t\tslide( indexh - 1, config.navigationMode === 'grid' ? indexv : undefined );\n\t\t\t}\n\t\t}\n\t\t// Normal navigation\n\t\telse if( ( overview.isActive() || skipFragments || fragments.next() === false ) && availableRoutes().right ) {\n\t\t\tslide( indexh + 1, config.navigationMode === 'grid' ? indexv : undefined );\n\t\t}\n\n\t}\n\n\tfunction navigateUp({skipFragments=false}={}) {\n\n\t\t// Prioritize hiding fragments\n\t\tif( ( overview.isActive() || skipFragments || fragments.prev() === false ) && availableRoutes().up ) {\n\t\t\tslide( indexh, indexv - 1 );\n\t\t}\n\n\t}\n\n\tfunction navigateDown({skipFragments=false}={}) {\n\n\t\tnavigationHistory.hasNavigatedVertically = true;\n\n\t\t// Prioritize revealing fragments\n\t\tif( ( overview.isActive() || skipFragments || fragments.next() === false ) && availableRoutes().down ) {\n\t\t\tslide( indexh, indexv + 1 );\n\t\t}\n\n\t}\n\n\t/**\n\t * Navigates backwards, prioritized in the following order:\n\t * 1) Previous fragment\n\t * 2) Previous vertical slide\n\t * 3) Previous horizontal slide\n\t */\n\tfunction navigatePrev({skipFragments=false}={}) {\n\n\t\t// Prioritize revealing fragments\n\t\tif( skipFragments || fragments.prev() === false ) {\n\t\t\tif( availableRoutes().up ) {\n\t\t\t\tnavigateUp({skipFragments});\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Fetch the previous horizontal slide, if there is one\n\t\t\t\tlet previousSlide;\n\n\t\t\t\tif( config.rtl ) {\n\t\t\t\t\tpreviousSlide = Util.queryAll( dom.wrapper, HORIZONTAL_SLIDES_SELECTOR + '.future' ).pop();\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tpreviousSlide = Util.queryAll( dom.wrapper, HORIZONTAL_SLIDES_SELECTOR + '.past' ).pop();\n\t\t\t\t}\n\n\t\t\t\t// When going backwards and arriving on a stack we start\n\t\t\t\t// at the bottom of the stack\n\t\t\t\tif( previousSlide && previousSlide.classList.contains( 'stack' ) ) {\n\t\t\t\t\tlet v = ( previousSlide.querySelectorAll( 'section' ).length - 1 ) || undefined;\n\t\t\t\t\tlet h = indexh - 1;\n\t\t\t\t\tslide( h, v );\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tnavigateLeft({skipFragments});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * The reverse of #navigatePrev().\n\t */\n\tfunction navigateNext({skipFragments=false}={}) {\n\n\t\tnavigationHistory.hasNavigatedHorizontally = true;\n\t\tnavigationHistory.hasNavigatedVertically = true;\n\n\t\t// Prioritize revealing fragments\n\t\tif( skipFragments || fragments.next() === false ) {\n\n\t\t\tlet routes = availableRoutes();\n\n\t\t\t// When looping is enabled `routes.down` is always available\n\t\t\t// so we need a separate check for when we've reached the\n\t\t\t// end of a stack and should move horizontally\n\t\t\tif( routes.down && routes.right && config.loop && isLastVerticalSlide() ) {\n\t\t\t\troutes.down = false;\n\t\t\t}\n\n\t\t\tif( routes.down ) {\n\t\t\t\tnavigateDown({skipFragments});\n\t\t\t}\n\t\t\telse if( config.rtl ) {\n\t\t\t\tnavigateLeft({skipFragments});\n\t\t\t}\n\t\t\telse {\n\t\t\t\tnavigateRight({skipFragments});\n\t\t\t}\n\t\t}\n\n\t}\n\n\n\t// --------------------------------------------------------------------//\n\t// ----------------------------- EVENTS -------------------------------//\n\t// --------------------------------------------------------------------//\n\n\t/**\n\t * Called by all event handlers that are based on user\n\t * input.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onUserInput( event ) {\n\n\t\tif( config.autoSlideStoppable ) {\n\t\t\tpauseAutoSlide();\n\t\t}\n\n\t}\n\n\t/**\n\t* Listener for post message events posted to this window.\n\t*/\n\tfunction onPostMessage( event ) {\n\n\t\tlet data = event.data;\n\n\t\t// Make sure we're dealing with JSON\n\t\tif( typeof data === 'string' && data.charAt( 0 ) === '{' && data.charAt( data.length - 1 ) === '}' ) {\n\t\t\tdata = JSON.parse( data );\n\n\t\t\t// Check if the requested method can be found\n\t\t\tif( data.method && typeof Reveal[data.method] === 'function' ) {\n\n\t\t\t\tif( POST_MESSAGE_METHOD_BLACKLIST.test( data.method ) === false ) {\n\n\t\t\t\t\tconst result = Reveal[data.method].apply( Reveal, data.args );\n\n\t\t\t\t\t// Dispatch a postMessage event with the returned value from\n\t\t\t\t\t// our method invocation for getter functions\n\t\t\t\t\tdispatchPostMessage( 'callback', { method: data.method, result: result } );\n\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconsole.warn( 'reveal.js: \"'+ data.method +'\" is is blacklisted from the postMessage API' );\n\t\t\t\t}\n\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Event listener for transition end on the current slide.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onTransitionEnd( event ) {\n\n\t\tif( transition === 'running' && /section/gi.test( event.target.nodeName ) ) {\n\t\t\ttransition = 'idle';\n\t\t\tdispatchEvent({\n\t\t\t\ttype: 'slidetransitionend',\n\t\t\t\tdata: { indexh, indexv, previousSlide, currentSlide }\n\t\t\t});\n\t\t}\n\n\t}\n\n\t/**\n\t * A global listener for all click events inside of the\n\t * .slides container.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onSlidesClicked( event ) {\n\n\t\tconst anchor = Util.closest( event.target, 'a[href^=\"#\"]' );\n\n\t\t// If a hash link is clicked, we find the target slide\n\t\t// and navigate to it. We previously relied on 'hashchange'\n\t\t// for links like these but that prevented media with\n\t\t// audio tracks from playing in mobile browsers since it\n\t\t// wasn't considered a direct interaction with the document.\n\t\tif( anchor ) {\n\t\t\tconst hash = anchor.getAttribute( 'href' );\n\t\t\tconst indices = location.getIndicesFromHash( hash );\n\n\t\t\tif( indices ) {\n\t\t\t\tReveal.slide( indices.h, indices.v, indices.f );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Handler for the window level 'resize' event.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onWindowResize( event ) {\n\n\t\tlayout();\n\n\t}\n\n\t/**\n\t * Handle for the window level 'visibilitychange' event.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onPageVisibilityChange( event ) {\n\n\t\t// If, after clicking a link or similar and we're coming back,\n\t\t// focus the document.body to ensure we can use keyboard shortcuts\n\t\tif( document.hidden === false && document.activeElement !== document.body ) {\n\t\t\t// Not all elements support .blur() - SVGs among them.\n\t\t\tif( typeof document.activeElement.blur === 'function' ) {\n\t\t\t\tdocument.activeElement.blur();\n\t\t\t}\n\t\t\tdocument.body.focus();\n\t\t}\n\n\t}\n\n\t/**\n\t * Handler for the document level 'fullscreenchange' event.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onFullscreenChange( event ) {\n\n\t\tlet element = document.fullscreenElement || document.webkitFullscreenElement;\n\t\tif( element === dom.wrapper ) {\n\t\t\tevent.stopImmediatePropagation();\n\n\t\t\t// Timeout to avoid layout shift in Safari\n\t\t\tsetTimeout( () => {\n\t\t\t\tReveal.layout();\n\t\t\t\tReveal.focus.focus(); // focus.focus :'(\n\t\t\t}, 1 );\n\t\t}\n\n\t}\n\n\t/**\n\t * Handles clicks on links that are set to preview in the\n\t * iframe overlay.\n\t *\n\t * @param {object} event\n\t */\n\tfunction onPreviewLinkClicked( event ) {\n\n\t\tif( event.currentTarget && event.currentTarget.hasAttribute( 'href' ) ) {\n\t\t\tlet url = event.currentTarget.getAttribute( 'href' );\n\t\t\tif( url ) {\n\t\t\t\tshowPreview( url );\n\t\t\t\tevent.preventDefault();\n\t\t\t}\n\t\t}\n\n\t}\n\n\t/**\n\t * Handles click on the auto-sliding controls element.\n\t *\n\t * @param {object} [event]\n\t */\n\tfunction onAutoSlidePlayerClick( event ) {\n\n\t\t// Replay\n\t\tif( isLastSlide() && config.loop === false ) {\n\t\t\tslide( 0, 0 );\n\t\t\tresumeAutoSlide();\n\t\t}\n\t\t// Resume\n\t\telse if( autoSlidePaused ) {\n\t\t\tresumeAutoSlide();\n\t\t}\n\t\t// Pause\n\t\telse {\n\t\t\tpauseAutoSlide();\n\t\t}\n\n\t}\n\n\n\t// --------------------------------------------------------------------//\n\t// ------------------------------- API --------------------------------//\n\t// --------------------------------------------------------------------//\n\n\t// The public reveal.js API\n\tconst API = {\n\t\tVERSION,\n\n\t\tinitialize,\n\t\tconfigure,\n\t\tdestroy,\n\n\t\tsync,\n\t\tsyncSlide,\n\t\tsyncFragments: fragments.sync.bind( fragments ),\n\n\t\t// Navigation methods\n\t\tslide,\n\t\tleft: navigateLeft,\n\t\tright: navigateRight,\n\t\tup: navigateUp,\n\t\tdown: navigateDown,\n\t\tprev: navigatePrev,\n\t\tnext: navigateNext,\n\n\t\t// Navigation aliases\n\t\tnavigateLeft, navigateRight, navigateUp, navigateDown, navigatePrev, navigateNext,\n\n\t\t// Fragment methods\n\t\tnavigateFragment: fragments.goto.bind( fragments ),\n\t\tprevFragment: fragments.prev.bind( fragments ),\n\t\tnextFragment: fragments.next.bind( fragments ),\n\n\t\t// Event binding\n\t\ton,\n\t\toff,\n\n\t\t// Legacy event binding methods left in for backwards compatibility\n\t\taddEventListener: on,\n\t\tremoveEventListener: off,\n\n\t\t// Forces an update in slide layout\n\t\tlayout,\n\n\t\t// Randomizes the order of slides\n\t\tshuffle,\n\n\t\t// Returns an object with the available routes as booleans (left/right/top/bottom)\n\t\tavailableRoutes,\n\n\t\t// Returns an object with the available fragments as booleans (prev/next)\n\t\tavailableFragments: fragments.availableRoutes.bind( fragments ),\n\n\t\t// Toggles a help overlay with keyboard shortcuts\n\t\ttoggleHelp,\n\n\t\t// Toggles the overview mode on/off\n\t\ttoggleOverview: overview.toggle.bind( overview ),\n\n\t\t// Toggles the \"black screen\" mode on/off\n\t\ttogglePause,\n\n\t\t// Toggles the auto slide mode on/off\n\t\ttoggleAutoSlide,\n\n\t\t// Toggles visibility of the jump-to-slide UI\n\t\ttoggleJumpToSlide,\n\n\t\t// Slide navigation checks\n\t\tisFirstSlide,\n\t\tisLastSlide,\n\t\tisLastVerticalSlide,\n\t\tisVerticalSlide,\n\n\t\t// State checks\n\t\tisPaused,\n\t\tisAutoSliding,\n\t\tisSpeakerNotes: notes.isSpeakerNotesWindow.bind( notes ),\n\t\tisOverview: overview.isActive.bind( overview ),\n\t\tisFocused: focus.isFocused.bind( focus ),\n\t\tisPrintingPDF: print.isPrintingPDF.bind( print ),\n\n\t\t// Checks if reveal.js has been loaded and is ready for use\n\t\tisReady: () => ready,\n\n\t\t// Slide preloading\n\t\tloadSlide: slideContent.load.bind( slideContent ),\n\t\tunloadSlide: slideContent.unload.bind( slideContent ),\n\n\t\t// Preview management\n\t\tshowPreview,\n\t\thidePreview: closeOverlay,\n\n\t\t// Adds or removes all internal event listeners\n\t\taddEventListeners,\n\t\tremoveEventListeners,\n\t\tdispatchEvent,\n\n\t\t// Facility for persisting and restoring the presentation state\n\t\tgetState,\n\t\tsetState,\n\n\t\t// Presentation progress on range of 0-1\n\t\tgetProgress,\n\n\t\t// Returns the indices of the current, or specified, slide\n\t\tgetIndices,\n\n\t\t// Returns an Array of key:value maps of the attributes of each\n\t\t// slide in the deck\n\t\tgetSlidesAttributes,\n\n\t\t// Returns the number of slides that we have passed\n\t\tgetSlidePastCount,\n\n\t\t// Returns the total number of slides\n\t\tgetTotalSlides,\n\n\t\t// Returns the slide element at the specified index\n\t\tgetSlide,\n\n\t\t// Returns the previous slide element, may be null\n\t\tgetPreviousSlide: () => previousSlide,\n\n\t\t// Returns the current slide element\n\t\tgetCurrentSlide: () => currentSlide,\n\n\t\t// Returns the slide background element at the specified index\n\t\tgetSlideBackground,\n\n\t\t// Returns the speaker notes string for a slide, or null\n\t\tgetSlideNotes: notes.getSlideNotes.bind( notes ),\n\n\t\t// Returns an Array of all slides\n\t\tgetSlides,\n\n\t\t// Returns an array with all horizontal/vertical slides in the deck\n\t\tgetHorizontalSlides,\n\t\tgetVerticalSlides,\n\n\t\t// Checks if the presentation contains two or more horizontal\n\t\t// and vertical slides\n\t\thasHorizontalSlides,\n\t\thasVerticalSlides,\n\n\t\t// Checks if the deck has navigated on either axis at least once\n\t\thasNavigatedHorizontally: () => navigationHistory.hasNavigatedHorizontally,\n\t\thasNavigatedVertically: () => navigationHistory.hasNavigatedVertically,\n\n\t\t// Adds/removes a custom key binding\n\t\taddKeyBinding: keyboard.addKeyBinding.bind( keyboard ),\n\t\tremoveKeyBinding: keyboard.removeKeyBinding.bind( keyboard ),\n\n\t\t// Programmatically triggers a keyboard event\n\t\ttriggerKey: keyboard.triggerKey.bind( keyboard ),\n\n\t\t// Registers a new shortcut to include in the help overlay\n\t\tregisterKeyboardShortcut: keyboard.registerKeyboardShortcut.bind( keyboard ),\n\n\t\tgetComputedSlideSize,\n\n\t\t// Returns the current scale of the presentation content\n\t\tgetScale: () => scale,\n\n\t\t// Returns the current configuration object\n\t\tgetConfig: () => config,\n\n\t\t// Helper method, retrieves query string as a key:value map\n\t\tgetQueryHash: Util.getQueryHash,\n\n\t\t// Returns the path to the current slide as represented in the URL\n\t\tgetSlidePath: location.getHash.bind( location ),\n\n\t\t// Returns reveal.js DOM elements\n\t\tgetRevealElement: () => revealElement,\n\t\tgetSlidesElement: () => dom.slides,\n\t\tgetViewportElement: () => dom.viewport,\n\t\tgetBackgroundsElement: () => backgrounds.element,\n\n\t\t// API for registering and retrieving plugins\n\t\tregisterPlugin: plugins.registerPlugin.bind( plugins ),\n\t\thasPlugin: plugins.hasPlugin.bind( plugins ),\n\t\tgetPlugin: plugins.getPlugin.bind( plugins ),\n\t\tgetPlugins: plugins.getRegisteredPlugins.bind( plugins )\n\n\t};\n\n\t// Our internal API which controllers have access to\n\tUtil.extend( Reveal, {\n\t\t...API,\n\n\t\t// Methods for announcing content to screen readers\n\t\tannounceStatus,\n\t\tgetStatusText,\n\n\t\t// Controllers\n\t\tprint,\n\t\tfocus,\n\t\tprogress,\n\t\tcontrols,\n\t\tlocation,\n\t\toverview,\n\t\tfragments,\n\t\tslideContent,\n\t\tslideNumber,\n\n\t\tonUserInput,\n\t\tcloseOverlay,\n\t\tupdateSlidesVisibility,\n\t\tlayoutSlideContents,\n\t\ttransformSlides,\n\t\tcueAutoSlide,\n\t\tcancelAutoSlide\n\t} );\n\n\treturn API;\n\n};\n","import Deck, { VERSION } from './reveal.js'\n\n/**\n * Expose the Reveal class to the window. To create a\n * new instance:\n * let deck = new Reveal( document.querySelector( '.reveal' ), {\n * controls: false\n * } );\n * deck.initialize().then(() => {\n * // reveal.js is ready\n * });\n */\nlet Reveal = Deck;\n\n\n/**\n * The below is a thin shell that mimics the pre 4.0\n * reveal.js API and ensures backwards compatibility.\n * This API only allows for one Reveal instance per\n * page, whereas the new API above lets you run many\n * presentations on the same page.\n *\n * Reveal.initialize( { controls: false } ).then(() => {\n * // reveal.js is ready\n * });\n */\n\nlet enqueuedAPICalls = [];\n\nReveal.initialize = options => {\n\n\t// Create our singleton reveal.js instance\n\tObject.assign( Reveal, new Deck( document.querySelector( '.reveal' ), options ) );\n\n\t// Invoke any enqueued API calls\n\tenqueuedAPICalls.map( method => method( Reveal ) );\n\n\treturn Reveal.initialize();\n\n}\n\n/**\n * The pre 4.0 API let you add event listener before\n * initializing. We maintain the same behavior by\n * queuing up premature API calls and invoking all\n * of them when Reveal.initialize is called.\n */\n[ 'configure', 'on', 'off', 'addEventListener', 'removeEventListener', 'registerPlugin' ].forEach( method => {\n\tReveal[method] = ( ...args ) => {\n\t\tenqueuedAPICalls.push( deck => deck[method].call( null, ...args ) );\n\t}\n} );\n\nReveal.isReady = () => false;\n\nReveal.VERSION = VERSION;\n\nexport default Reveal;"],"names":["extend","a","b","i","queryAll","el","selector","Array","from","querySelectorAll","toggleClass","className","value","classList","add","remove","deserialize","match","parseFloat","transformElement","element","transform","style","matches","target","matchesMethod","matchesSelector","msMatchesSelector","call","closest","parentNode","createSingletonNode","container","tagname","classname","innerHTML","nodes","length","testNode","node","document","createElement","appendChild","createStyleSheet","tag","type","styleSheet","cssText","createTextNode","head","getQueryHash","query","location","search","replace","split","shift","pop","unescape","getRemainingHeight","height","newHeight","oldHeight","offsetHeight","removeProperty","fileExtensionToMimeMap","UA","navigator","userAgent","isMobile","test","platform","maxTouchPoints","isAndroid","Object","defineProperty","fitty_module","_extends","assign","arguments","source","key","prototype","hasOwnProperty","w","toArray","nl","slice","DrawState","fitties","redrawFrame","requestRedraw","cancelAnimationFrame","requestAnimationFrame","redraw","filter","f","dirty","active","redrawAll","forEach","styleComputed","computeStyle","shouldPreStyle","applyStyle","fittiesToRedraw","shouldRedraw","calculateStyles","markAsClean","dispatchFitEvent","availableWidth","clientWidth","currentWidth","scrollWidth","previousFontSize","currentFontSize","Math","min","max","minSize","maxSize","whiteSpace","multiLine","getComputedStyle","getPropertyValue","display","preStyle","preStyleTestCompleted","fontSize","dispatchEvent","CustomEvent","detail","oldValue","newValue","scaleFactor","fit","destroy","_","observeMutations","observer","disconnect","originalStyle","subscribe","unsubscribe","MutationObserver","observe","defaultOptions","subtree","childList","characterData","resizeDebounce","onWindowResized","clearTimeout","setTimeout","fitty","observeWindowDelay","events","set","enabled","method","e","observeWindow","fitAll","fittyCreate","elements","options","fittyOptions","publicFitties","map","newbie","push","init","unfreeze","freeze","undefined","window","SlideContent","constructor","Reveal","startEmbeddedIframe","this","bind","shouldPreload","preload","getConfig","preloadIframes","hasAttribute","load","slide","tagName","setAttribute","getAttribute","removeAttribute","media","sources","background","slideBackgroundElement","backgroundContent","slideBackgroundContentElement","backgroundIframe","backgroundImage","backgroundVideo","backgroundVideoLoop","backgroundVideoMuted","trim","url","encodeURI","c","charCodeAt","toString","toUpperCase","encodeRFC3986URI","decodeURI","join","isSpeakerNotes","video","muted","filename","getMimeTypeFromFile","excludeIframes","iframe","width","maxHeight","maxWidth","backgroundIframeElement","querySelector","layout","scopeElement","unload","getSlideBackground","formatEmbeddedContent","_appendParamToIframeSource","sourceAttribute","sourceURL","param","getSlidesElement","src","indexOf","startEmbeddedContent","autoplay","autoPlayMedia","play","readyState","startEmbeddedMedia","promise","catch","controls","addEventListener","removeEventListener","event","isAttachedToDOM","isVisible","currentTime","contentWindow","postMessage","stopEmbeddedContent","unloadIframes","pause","SlideNumber","render","getRevealElement","configure","config","oldConfig","slideNumberDisplay","slideNumber","isPrintingPDF","showSlideNumber","update","getSlideNumber","getCurrentSlide","format","getHorizontalSlides","horizontalOffset","dataset","visibility","getSlidePastCount","getTotalSlides","indices","getIndices","h","sep","isVerticalSlide","v","getHash","formatNumber","delimiter","isNaN","JumpToSlide","onInput","onBlur","onKeyDown","jumpInput","placeholder","show","indicesOnShow","focus","hide","jumpTimeout","jump","getIndicesFromHash","oneBasedIndex","jumpAfter","delay","regex","RegExp","getSlides","find","innerText","cancel","confirm","keyCode","stopImmediatePropagation","colorToRgb","color","hex3","r","parseInt","charAt","g","hex6","rgb","rgba","Backgrounds","create","slideh","backgroundStack","createBackground","slidev","parallaxBackgroundImage","backgroundSize","parallaxBackgroundSize","backgroundRepeat","parallaxBackgroundRepeat","backgroundPosition","parallaxBackgroundPosition","contentElement","sync","data","backgroundColor","backgroundGradient","backgroundTransition","backgroundOpacity","dataPreload","opacity","contrastColor","computedBackgroundStyle","includeAll","currentSlide","currentBackground","horizontalPast","rtl","horizontalFuture","childNodes","backgroundh","backgroundv","previousBackground","slideContent","currentBackgroundContent","backgroundImageURL","previousBackgroundHash","currentBackgroundHash","classToBubble","contains","updateParallax","backgroundWidth","backgroundHeight","horizontalSlides","verticalSlides","getVerticalSlides","horizontalOffsetMultiplier","slideWidth","offsetWidth","horizontalSlideCount","parallaxBackgroundHorizontal","verticalOffsetMultiplier","verticalOffset","slideHeight","verticalSlideCount","parallaxBackgroundVertical","SLIDES_SELECTOR","HORIZONTAL_SLIDES_SELECTOR","VERTICAL_SLIDES_SELECTOR","POST_MESSAGE_METHOD_BLACKLIST","FRAGMENT_STYLE_REGEX","autoAnimateCounter","AutoAnimate","run","fromSlide","toSlide","reset","allSlides","toSlideIndex","fromSlideIndex","autoAnimateStyleSheet","animationOptions","getAutoAnimateOptions","autoAnimate","slideDirection","fromSlideIsHidden","css","getAutoAnimatableElements","autoAnimateElements","to","autoAnimateUnmatched","defaultUnmatchedDuration","duration","defaultUnmatchedDelay","getUnmatchedAutoAnimateElements","unmatchedElement","unmatchedOptions","id","autoAnimateTarget","fontWeight","sheet","removeChild","elementOptions","easing","fromProps","getAutoAnimatableProperties","toProps","styles","translate","scale","presentationScale","getScale","delta","x","y","scaleX","scaleY","round","propertyName","toValue","fromValue","explicitValue","toStyleProperties","keys","inheritedOptions","autoAnimateEasing","autoAnimateDuration","autoAnimatedParent","autoAnimateDelay","direction","properties","bounds","measure","center","getBoundingClientRect","offsetLeft","offsetTop","computedStyles","autoAnimateStyles","property","pairs","autoAnimateMatcher","getAutoAnimatePairs","reserved","pair","index","textNodes","findAutoAnimateMatches","nodeName","textContent","getLocalBoundingBox","fromScope","toScope","serializer","fromMatches","toMatches","fromElement","primaryIndex","secondaryIndex","rootElement","children","reduce","result","containsAnimatedElements","concat","Fragments","fragments","disable","enable","availableRoutes","hiddenFragments","prev","next","sort","grouped","ordered","unordered","sorted","fragment","group","sortAll","horizontalSlide","verticalSlide","changedFragments","shown","hidden","maxIndex","currentFragment","wasVisible","announceStatus","getStatusText","bubbles","goto","offset","lastVisibleFragment","progress","fragmentInURL","writeURL","Overview","onSlideClicked","activate","overview","isActive","cancelAutoSlide","getBackgroundsElement","margin","slideSize","getComputedSlideSize","overviewSlideWidth","overviewSlideHeight","updateSlidesVisibility","hslide","vslide","hbackground","vbackground","vmin","innerWidth","innerHeight","transformSlides","deactivate","cueAutoSlide","toggle","override","preventDefault","Keyboard","shortcuts","bindings","onDocumentKeyDown","onDocumentKeyPress","navigationMode","unbind","addKeyBinding","binding","callback","description","removeKeyBinding","triggerKey","registerKeyboardShortcut","getShortcuts","getBindings","shiftKey","charCode","toggleHelp","keyboardCondition","isFocused","autoSlideWasPaused","isAutoSliding","onUserInput","activeElementIsCE","activeElement","isContentEditable","activeElementIsInput","activeElementIsNotes","unusedModifier","altKey","ctrlKey","metaKey","resumeKeyCodes","keyboard","isPaused","useLinearMode","hasHorizontalSlides","hasVerticalSlides","triggered","apply","action","skipFragments","left","right","up","Number","MAX_VALUE","down","togglePause","requestMethod","documentElement","requestFullscreen","webkitRequestFullscreen","webkitRequestFullScreen","mozRequestFullScreen","msRequestFullscreen","enterFullscreen","embedded","getViewportElement","autoSlideStoppable","toggleAutoSlide","jumpToSlide","toggleJumpToSlide","closeOverlay","Location","writeURLTimeout","replaceStateTimestamp","onWindowHashChange","hash","name","bits","hashIndexBase","hashOneBasedIndex","getElementById","decodeURIComponent","error","readURL","currentIndices","newIndices","history","debouncedReplaceState","pathname","replaceState","Date","now","replaceStateTimeout","MAX_REPLACE_STATE_FREQUENCY","s","encodeURIComponent","Controls","onNavigateLeftClicked","onNavigateRightClicked","onNavigateUpClicked","onNavigateDownClicked","onNavigatePrevClicked","onNavigateNextClicked","revealElement","controlsLeft","controlsRight","controlsUp","controlsDown","controlsPrev","controlsNext","controlsRightArrow","controlsLeftArrow","controlsDownArrow","controlsLayout","controlsBackArrows","pointerEvents","eventName","routes","fragmentsRoutes","controlsTutorial","hasNavigatedVertically","hasNavigatedHorizontally","Progress","onProgressClicked","bar","getProgress","getMaxWidth","slides","slidesTotal","slideIndex","floor","clientX","targetIndices","Pointer","lastMouseWheelStep","cursorHidden","cursorInactiveTimeout","onDocumentCursorActive","onDocumentMouseScroll","mouseWheel","hideInactiveCursor","showCursor","cursor","hideCursor","hideCursorTime","wheelDelta","loadScript","script","async","defer","onload","onreadystatechange","onerror","err","Error","insertBefore","lastChild","Plugins","reveal","state","registeredPlugins","asyncDependencies","plugins","dependencies","registerPlugin","Promise","resolve","scripts","scriptsToLoad","condition","scriptLoadedCallback","initPlugins","then","console","warn","pluginValues","values","pluginsToInitialize","loadAsync","initNextPlugin","afterPlugInitialized","plugin","hasPlugin","getPlugin","getRegisteredPlugins","Print","injectPageNumbers","pageWidth","pageHeight","body","viewportElement","presentationBackground","viewportStyles","layoutSlideContents","slideScrollHeights","scrollHeight","pages","pageContainer","top","contentHeight","numberOfPages","ceil","pdfMaxPagesPerSlide","page","pdfPageHeightOffset","showNotes","notes","getSlideNotes","notesSpacing","notesLayout","notesElement","bottom","numberElement","pdfSeparateFragments","fragmentGroups","previousFragmentStep","clonedPage","cloneNode","fragmentNumber","Touch","touchStartX","touchStartY","touchStartCount","touchCaptured","onPointerDown","onPointerMove","onPointerUp","onTouchStart","onTouchMove","onTouchEnd","msPointerEnabled","isSwipePrevented","touches","clientY","currentX","currentY","includeFragments","deltaX","deltaY","abs","pointerType","MSPOINTER_TYPE_TOUCH","STATE_FOCUS","STATE_BLUR","Focus","onRevealPointerDown","onDocumentPointerDown","blur","Notes","print","updateVisibility","hasNotes","isSpeakerNotesWindow","notesElements","Playback","progressCheck","diameter","diameter2","thickness","playing","progressOffset","canvas","context","getContext","setPlaying","wasPlaying","animate","progressBefore","radius","iconSize","endAngle","PI","startAngle","save","clearRect","beginPath","arc","fillStyle","fill","lineWidth","strokeStyle","stroke","fillRect","moveTo","lineTo","restore","on","listener","off","minScale","maxScale","respondToHashChanges","disableLayout","touch","loop","shuffle","help","showHiddenSlides","autoSlide","autoSlideMethod","defaultTiming","previewLinks","postMessageEvents","focusBodyOnPageVisibilityChange","transition","transitionSpeed","POSITIVE_INFINITY","viewDistance","mobileViewDistance","sortFragmentsOnSync","VERSION","indexh","indexv","previousSlide","autoSlidePlayer","ready","navigationHistory","slidesTransform","dom","autoSlideTimeout","autoSlideStartTime","autoSlidePaused","backgrounds","pointer","initialize","initOptions","wrapper","defaultConfig","Util","setViewport","start","viewport","removeHiddenSlides","setupDOM","setupPostMessage","setupScrollPrevention","setupFullscreen","resetVerticalSlides","removeEventListeners","setupPDF","Device","pauseOverlay","statusElement","createStatusElement","position","overflow","clip","text","nodeType","isAriaHidden","isDisplayHidden","child","setInterval","scrollTop","scrollLeft","onFullscreenChange","onPostMessage","isReady","numberOfSlides","setProperty","resume","enablePreviewLinks","disablePreviewLinks","onAutoSlidePlayerClick","addEventListeners","onWindowResize","onSlidesClicked","onTransitionEnd","onPageVisibilityChange","useCapture","transforms","createEvent","initEvent","dispatchPostMessage","parent","self","message","namespace","getState","JSON","stringify","onPreviewLinkClicked","showPreview","overlay","showHelp","html","size","oldScale","presentationWidth","presentationHeight","zoom","len","remainingHeight","nw","naturalWidth","videoWidth","nh","naturalHeight","videoHeight","es","setPreviousVerticalIndex","stack","getPreviousVerticalIndex","attributeName","isLastVerticalSlide","nextElementSibling","isFirstSlide","isLastSlide","wasPaused","resumeAutoSlide","pauseAutoSlide","origin","defaultPrevented","stateBefore","indexhBefore","indexvBefore","updateSlides","slideChanged","currentHorizontalSlide","currentVerticalSlides","autoAnimateTransition","getVerticalStacks","stateLoop","j","splice","syncSlide","beforeSlide","random","slidesLength","printMode","loopedForwards","loopedBackwards","reverse","showFragmentsIn","hideFragmentsIn","wasPresent","slideState","distanceX","distanceY","horizontalSlidesLength","verticalSlidesLength","oy","fragmentRoutes","pastCount","mainLoop","totalCount","allFragments","fragmentWeight","isVertical","getSlidesAttributes","attributes","attribute","getSlide","indexf","paused","setState","pausedFlag","overviewFlag","fragmentAutoSlide","parentAutoSlide","slideAutoSlide","playbackRate","navigateNext","navigateLeft","navigateRight","navigateUp","navigateDown","navigatePrev","parse","args","anchor","fullscreenElement","webkitFullscreenElement","currentTarget","API","syncFragments","navigateFragment","prevFragment","nextFragment","availableFragments","toggleOverview","isOverview","loadSlide","unloadSlide","hidePreview","getPreviousSlide","getSlidePath","getPlugins","Deck","enqueuedAPICalls","deck"],"mappings":";;;;;;;uOAOO,MAAMA,EAAS,CAAEC,EAAGC,SAErB,IAAIC,KAAKD,EACbD,EAAGE,GAAMD,EAAGC,UAGNF,CAAP,EAOYG,EAAW,CAAEC,EAAIC,IAEtBC,MAAMC,KAAMH,EAAGI,iBAAkBH,IAO5BI,EAAc,CAAEL,EAAIM,EAAWC,KACvCA,EACHP,EAAGQ,UAAUC,IAAKH,GAGlBN,EAAGQ,UAAUE,OAAQJ,IAUVK,EAAgBJ,OAEP,iBAAVA,EAAqB,IACjB,SAAVA,EAAmB,OAAO,KACzB,GAAc,SAAVA,EAAmB,OAAO,EAC9B,GAAc,UAAVA,EAAoB,OAAO,EAC/B,GAAIA,EAAMK,MAAO,eAAkB,OAAOC,WAAYN,UAGrDA,CAAP,EA4BYO,EAAmB,CAAEC,EAASC,KAE1CD,EAAQE,MAAMD,UAAYA,CAA1B,EAaYE,EAAU,CAAEC,EAAQlB,SAE5BmB,EAAgBD,EAAOD,SAAWC,EAAOE,iBAAmBF,EAAOG,2BAE5DF,IAAiBA,EAAcG,KAAMJ,EAAQlB,GAAxD,EAeYuB,EAAU,CAAEL,EAAQlB,QAGF,mBAAnBkB,EAAOK,eACVL,EAAOK,QAASvB,QAIjBkB,GAAS,IACXD,EAASC,EAAQlB,UACbkB,EAIRA,EAASA,EAAOM,kBAGV,IAAP,EAuCYC,EAAsB,CAAEC,EAAWC,EAASC,EAAWC,EAAU,UAGzEC,EAAQJ,EAAUvB,iBAAkB,IAAMyB,OAIzC,IAAI/B,EAAI,EAAGA,EAAIiC,EAAMC,OAAQlC,IAAM,KACnCmC,EAAWF,EAAMjC,MACjBmC,EAASR,aAAeE,SACpBM,MAKLC,EAAOC,SAASC,cAAeR,UACnCM,EAAK5B,UAAYuB,EACjBK,EAAKJ,UAAYA,EACjBH,EAAUU,YAAaH,GAEhBA,CAAP,EASYI,EAAqB/B,QAE7BgC,EAAMJ,SAASC,cAAe,gBAClCG,EAAIC,KAAO,WAEPjC,GAASA,EAAMyB,OAAS,IACvBO,EAAIE,WACPF,EAAIE,WAAWC,QAAUnC,EAGzBgC,EAAIF,YAAaF,SAASQ,eAAgBpC,KAI5C4B,SAASS,KAAKP,YAAaE,GAEpBA,CAAP,EAOYM,EAAe,SAEvBC,EAAQ,GAEZC,SAASC,OAAOC,QAAS,4BAA4BrD,IACpDkD,EAAOlD,EAAEsD,MAAO,KAAMC,SAAYvD,EAAEsD,MAAO,KAAME,KAAjD,QAII,IAAItD,KAAKgD,EAAQ,KACjBvC,EAAQuC,EAAOhD,GAEnBgD,EAAOhD,GAAMa,EAAa0C,SAAU9C,gBAKA,IAA1BuC,EAAK,qBAA0CA,EAAK,aAExDA,CAAP,EAaYQ,EAAqB,CAAEvC,EAASwC,EAAS,QAEjDxC,EAAU,KACTyC,EAAWC,EAAY1C,EAAQE,MAAMsC,cAIzCxC,EAAQE,MAAMsC,OAAS,MAIvBxC,EAAQU,WAAWR,MAAMsC,OAAS,OAElCC,EAAYD,EAASxC,EAAQU,WAAWiC,aAGxC3C,EAAQE,MAAMsC,OAASE,EAAY,KAGnC1C,EAAQU,WAAWR,MAAM0C,eAAe,UAEjCH,SAGDD,CAAP,EAIKK,EAAyB,KACvB,gBACA,gBACA,iBACC,kBACA,cChSHC,EAAKC,UAAUC,UAERC,EAAW,+BAA+BC,KAAMJ,IAC9B,aAAvBC,UAAUI,UAA2BJ,UAAUK,eAAiB,EAEhD,UAAUF,KAAMJ,IAAS,QAAQI,KAAMJ,GAExD,MAAMO,EAAY,YAAYH,KAAMJ,YCD3CQ,OAAOC,eAAeC,EAAS,aAAc,CAC3ChE,OAAO,IAGT,IAAIiE,EAAWH,OAAOI,QAAU,SAAUtD,GAAU,IAAK,IAAIrB,EAAI,EAAGA,EAAI4E,UAAU1C,OAAQlC,IAAK,CAAE,IAAI6E,EAASD,UAAU5E,GAAI,IAAK,IAAI8E,KAAOD,EAAcN,OAAOQ,UAAUC,eAAevD,KAAKoD,EAAQC,KAAQzD,EAAOyD,GAAOD,EAAOC,IAAY,OAAOzD,eAErO,SAAU4D,GAG1B,GAAKA,EAAL,CAGA,IAAIC,EAAU,SAAiBC,GAC7B,MAAO,GAAGC,MAAM3D,KAAK0D,IAInBE,EACI,EADJA,EAEa,EAFbA,EAGY,EAHZA,EAIK,EAILC,EAAU,GAGVC,EAAc,KACdC,EAAgB,0BAA2BP,EAAI,WACjDA,EAAEQ,qBAAqBF,GACvBA,EAAcN,EAAES,uBAAsB,WACpC,OAAOC,EAAOL,EAAQM,QAAO,SAAUC,GACrC,OAAOA,EAAEC,OAASD,EAAEE,eAGtB,aAGAC,EAAY,SAAmBtD,GACjC,OAAO,WACL4C,EAAQW,SAAQ,SAAUJ,GACxB,OAAOA,EAAEC,MAAQpD,KAEnB8C,MAKAG,EAAS,SAAgBL,GAK3BA,EAAQM,QAAO,SAAUC,GACvB,OAAQA,EAAEK,iBACTD,SAAQ,SAAUJ,GACnBA,EAAEK,cAAgBC,EAAaN,MAIjCP,EAAQM,OAAOQ,GAAgBH,QAAQI,GAGvC,IAAIC,EAAkBhB,EAAQM,OAAOW,GAGrCD,EAAgBL,QAAQO,GAGxBF,EAAgBL,SAAQ,SAAUJ,GAChCQ,EAAWR,GACXY,EAAYZ,MAIdS,EAAgBL,QAAQS,IAGtBD,EAAc,SAAqBZ,GACrC,OAAOA,EAAEC,MAAQT,GAGfmB,EAAkB,SAAyBX,GAG7CA,EAAEc,eAAiBd,EAAE5E,QAAQU,WAAWiF,YAGxCf,EAAEgB,aAAehB,EAAE5E,QAAQ6F,YAG3BjB,EAAEkB,iBAAmBlB,EAAEmB,gBAGvBnB,EAAEmB,gBAAkBC,KAAKC,IAAID,KAAKE,IAAItB,EAAEuB,QAASvB,EAAEc,eAAiBd,EAAEgB,aAAehB,EAAEkB,kBAAmBlB,EAAEwB,SAG5GxB,EAAEyB,WAAazB,EAAE0B,WAAa1B,EAAEmB,kBAAoBnB,EAAEuB,QAAU,SAAW,UAIzEb,EAAe,SAAsBV,GACvC,OAAOA,EAAEC,QAAUT,GAA0BQ,EAAEC,QAAUT,GAA0BQ,EAAE5E,QAAQU,WAAWiF,cAAgBf,EAAEc,gBAIxHR,EAAe,SAAsBN,GAGvC,IAAI1E,EAAQ8D,EAAEuC,iBAAiB3B,EAAE5E,QAAS,MAG1C4E,EAAEmB,gBAAkBjG,WAAWI,EAAMsG,iBAAiB,cAGtD5B,EAAE6B,QAAUvG,EAAMsG,iBAAiB,WACnC5B,EAAEyB,WAAanG,EAAMsG,iBAAiB,gBAIpCrB,EAAiB,SAAwBP,GAE3C,IAAI8B,GAAW,EAGf,OAAI9B,EAAE+B,wBAGD,UAAUzD,KAAK0B,EAAE6B,WACpBC,GAAW,EACX9B,EAAE6B,QAAU,gBAIO,WAAjB7B,EAAEyB,aACJK,GAAW,EACX9B,EAAEyB,WAAa,UAIjBzB,EAAE+B,uBAAwB,EAEnBD,IAILtB,EAAa,SAAoBR,GACnCA,EAAE5E,QAAQE,MAAMmG,WAAazB,EAAEyB,WAC/BzB,EAAE5E,QAAQE,MAAMuG,QAAU7B,EAAE6B,QAC5B7B,EAAE5E,QAAQE,MAAM0G,SAAWhC,EAAEmB,gBAAkB,MAI7CN,EAAmB,SAA0Bb,GAC/CA,EAAE5E,QAAQ6G,cAAc,IAAIC,YAAY,MAAO,CAC7CC,OAAQ,CACNC,SAAUpC,EAAEkB,iBACZmB,SAAUrC,EAAEmB,gBACZmB,YAAatC,EAAEmB,gBAAkBnB,EAAEkB,sBAMrCqB,EAAM,SAAavC,EAAGnD,GACxB,OAAO,WACLmD,EAAEC,MAAQpD,EACLmD,EAAEE,QACPP,MA0BA6C,EAAU,SAAiBxC,GAC7B,OAAO,WAGLP,EAAUA,EAAQM,QAAO,SAAU0C,GACjC,OAAOA,EAAErH,UAAY4E,EAAE5E,WAIrB4E,EAAE0C,kBAAkB1C,EAAE2C,SAASC,aAGnC5C,EAAE5E,QAAQE,MAAMmG,WAAazB,EAAE6C,cAAcpB,WAC7CzB,EAAE5E,QAAQE,MAAMuG,QAAU7B,EAAE6C,cAAchB,QAC1C7B,EAAE5E,QAAQE,MAAM0G,SAAWhC,EAAE6C,cAAcb,WAK3Cc,EAAY,SAAmB9C,GACjC,OAAO,WACDA,EAAEE,SACNF,EAAEE,QAAS,EACXP,OAKAoD,EAAc,SAAqB/C,GACrC,OAAO,WACL,OAAOA,EAAEE,QAAS,IAIlBwC,EAAmB,SAA0B1C,GAG1CA,EAAE0C,mBAGP1C,EAAE2C,SAAW,IAAIK,iBAAiBT,EAAIvC,EAAGR,IAGzCQ,EAAE2C,SAASM,QAAQjD,EAAE5E,QAAS4E,EAAE0C,oBAW9BQ,EAAiB,CACnB3B,QAAS,GACTC,QAAS,IACTE,WAAW,EACXgB,iBAAkB,qBAAsBtD,GAXL,CACnC+D,SAAS,EACTC,WAAW,EACXC,eAAe,IAgEbC,EAAiB,KACjBC,EAAkB,WACpBnE,EAAEoE,aAAaF,GACfA,EAAiBlE,EAAEqE,WAAWtD,EAAUX,GAAyBkE,EAAMC,qBAIrEC,EAAS,CAAC,SAAU,qBAkBxB,OAjBAlF,OAAOC,eAAe+E,EAAO,gBAAiB,CAC5CG,IAAK,SAAaC,GAChB,IAAIC,GAAUD,EAAU,MAAQ,UAAY,gBAC5CF,EAAOxD,SAAQ,SAAU4D,GACvB5E,EAAE2E,GAAQC,EAAGT,SAMnBG,EAAMO,eAAgB,EACtBP,EAAMC,mBAAqB,IAG3BD,EAAMQ,OAAS/D,EAAUX,GAGlBkE,EA7EP,SAASS,EAAYC,EAAUC,GAG7B,IAAIC,EAAezF,EAAS,GAAIqE,EAAgBmB,GAG5CE,EAAgBH,EAASI,KAAI,SAAUpJ,GAGzC,IAAI4E,EAAInB,EAAS,GAAIyF,EAAc,CAGjClJ,QAASA,EACT8E,QAAQ,IAOV,OAxGO,SAAcF,GAGvBA,EAAE6C,cAAgB,CAChBpB,WAAYzB,EAAE5E,QAAQE,MAAMmG,WAC5BI,QAAS7B,EAAE5E,QAAQE,MAAMuG,QACzBG,SAAUhC,EAAE5E,QAAQE,MAAM0G,UAI5BU,EAAiB1C,GAGjBA,EAAEyE,QAAS,EAGXzE,EAAEC,OAAQ,EAGVR,EAAQiF,KAAK1E,GAkFX2E,CAAK3E,GAGE,CACL5E,QAASA,EACTmH,IAAKA,EAAIvC,EAAGR,GACZoF,SAAU9B,EAAU9C,GACpB6E,OAAQ9B,EAAY/C,GACpB+C,YAAaP,EAAQxC,OAQzB,OAHAL,IAGO4E,EAIT,SAASb,EAAMlI,GACb,IAAI6I,EAAUtF,UAAU1C,OAAS,QAAsByI,IAAjB/F,UAAU,GAAmBA,UAAU,GAAK,GAIlF,MAAyB,iBAAXvD,EAGd2I,EAAY9E,EAAQ7C,SAAS/B,iBAAiBe,IAAU6I,GAGxDF,EAAY,CAAC3I,GAAS6I,GAAS,GA8BnC,CAzUkB,CAyUE,oBAAXU,OAAyB,KAAOA,QC5U1B,MAAMC,EAEpBC,YAAaC,QAEPA,OAASA,OAETC,oBAAsBC,KAAKD,oBAAoBE,KAAMD,MAU3DE,cAAelK,OAGVmK,EAAUH,KAAKF,OAAOM,YAAYC,qBAIf,kBAAZF,IACVA,EAAUnK,EAAQsK,aAAc,iBAG1BH,EAURI,KAAMC,EAAOvB,EAAU,IAGtBuB,EAAMtK,MAAMuG,QAAUuD,KAAKF,OAAOM,YAAY3D,QAG9CzH,EAAUwL,EAAO,qEAAsExF,SAAShF,KACvE,WAApBA,EAAQyK,SAAwBT,KAAKE,cAAelK,MACvDA,EAAQ0K,aAAc,MAAO1K,EAAQ2K,aAAc,aACnD3K,EAAQ0K,aAAc,mBAAoB,IAC1C1K,EAAQ4K,gBAAiB,gBAK3B5L,EAAUwL,EAAO,gBAAiBxF,SAAS6F,QACtCC,EAAU,EAEd9L,EAAU6L,EAAO,oBAAqB7F,SAASpB,IAC9CA,EAAO8G,aAAc,MAAO9G,EAAO+G,aAAc,aACjD/G,EAAOgH,gBAAiB,YACxBhH,EAAO8G,aAAc,mBAAoB,IACzCI,GAAW,CAAX,IAIG7H,GAA8B,UAAlB4H,EAAMJ,SACrBI,EAAMH,aAAc,cAAe,IAKhCI,EAAU,GACbD,EAAMN,cAMJQ,EAAaP,EAAMQ,0BACnBD,EAAa,CAChBA,EAAW7K,MAAMuG,QAAU,YAEvBwE,EAAoBT,EAAMU,8BAC1BC,EAAmBX,EAAMG,aAAc,8BAGM,IAA7CI,EAAWT,aAAc,eAA4B,CACxDS,EAAWL,aAAc,cAAe,YAEpCU,EAAkBZ,EAAMG,aAAc,yBACzCU,EAAkBb,EAAMG,aAAc,yBACtCW,EAAsBd,EAAMF,aAAc,8BAC1CiB,EAAuBf,EAAMF,aAAc,kCAGxCc,EAEE,SAASlI,KAAMkI,EAAgBI,QACnCP,EAAkB/K,MAAMkL,gBAAmB,OAAMA,EAAgBI,UAIjEP,EAAkB/K,MAAMkL,gBAAkBA,EAAgBjJ,MAAO,KAAMiH,KAAK2B,GAGnE,OHgMiB,EAAEU,EAAI,KAC9BC,UAAUD,GACdvJ,QAAQ,OAAQ,KAChBA,QAAQ,OAAQ,KAChBA,QACF,YACCyJ,GAAO,IAAGA,EAAEC,WAAW,GAAGC,SAAS,IAAIC,kBGtMrBC,CADAC,UAAUjB,EAAWS,cAEjCS,KAAM,UAIN,GAAKZ,IAAoBrB,KAAKF,OAAOoC,iBAAmB,KACxDC,EAAQ/K,SAASC,cAAe,SAEhCiK,GACHa,EAAMzB,aAAc,OAAQ,IAGzBa,IACHY,EAAMC,OAAQ,GAQXnJ,IACHkJ,EAAMC,OAAQ,EACdD,EAAMzB,aAAc,cAAe,KAIpCW,EAAgBlJ,MAAO,KAAM6C,SAASpB,QACjCnC,EH0JyB,EAAE4K,EAAS,KACtCxJ,EAAuBwJ,EAASlK,MAAM,KAAKE,OG3JlCiK,CAAqB1I,GAE/BuI,EAAMpL,WADHU,EACiB,gBAAemC,YAAiBnC,MAGhC,gBAAemC,SAIrCqH,EAAkB3J,YAAa6K,QAG3B,GAAIhB,IAA+C,IAA3BlC,EAAQsD,eAA0B,KAC1DC,EAASpL,SAASC,cAAe,UACrCmL,EAAO9B,aAAc,kBAAmB,IACxC8B,EAAO9B,aAAc,qBAAsB,IAC3C8B,EAAO9B,aAAc,wBAAyB,IAC9C8B,EAAO9B,aAAc,QAAS,YAE9B8B,EAAO9B,aAAc,WAAYS,GAEjCqB,EAAOtM,MAAMuM,MAAS,OACtBD,EAAOtM,MAAMsC,OAAS,OACtBgK,EAAOtM,MAAMwM,UAAY,OACzBF,EAAOtM,MAAMyM,SAAW,OAExB1B,EAAkB3J,YAAakL,QAK7BI,EAA0B3B,EAAkB4B,cAAe,oBAC3DD,GAGC5C,KAAKE,cAAea,KAAiB,0BAA0B7H,KAAMiI,IACpEyB,EAAwBjC,aAAc,SAAYQ,GACrDyB,EAAwBlC,aAAc,MAAOS,QAQ5C2B,OAAQtC,GAOdsC,OAAQC,GAKP5N,MAAMC,KAAM2N,EAAa1N,iBAAkB,gBAAkB2F,SAAShF,IACrEsI,EAAOtI,EAAS,CACfmG,QAAS,GACTC,QAA0C,GAAjC4D,KAAKF,OAAOM,YAAY5H,OACjC8E,kBAAkB,EAClBuB,eAAe,GAJhB,IAgBFmE,OAAQxC,GAGPA,EAAMtK,MAAMuG,QAAU,WAGlBsE,EAAaf,KAAKF,OAAOmD,mBAAoBzC,GAC7CO,IACHA,EAAW7K,MAAMuG,QAAU,OAG3BzH,EAAU+L,EAAY,eAAgB/F,SAAShF,IAC9CA,EAAQ4K,gBAAiB,WAK3B5L,EAAUwL,EAAO,6FAA8FxF,SAAShF,IACvHA,EAAQ0K,aAAc,WAAY1K,EAAQ2K,aAAc,QACxD3K,EAAQ4K,gBAAiB,UAI1B5L,EAAUwL,EAAO,0DAA2DxF,SAASpB,IACpFA,EAAO8G,aAAc,WAAY9G,EAAO+G,aAAc,QACtD/G,EAAOgH,gBAAiB,UAQ1BsC,4BAEKC,EAA6B,CAAEC,EAAiBC,EAAWC,KAC9DtO,EAAUgL,KAAKF,OAAOyD,mBAAoB,UAAWH,EAAiB,MAAOC,EAAW,MAAOrI,SAAS/F,QACnGuO,EAAMvO,EAAG0L,aAAcyC,GACvBI,IAAiC,IAA1BA,EAAIC,QAASH,IACvBrO,EAAGyL,aAAc0C,EAAiBI,GAAS,KAAKtK,KAAMsK,GAAc,IAAN,KAAcF,OAM/EH,EAA4B,MAAO,qBAAsB,iBACzDA,EAA4B,WAAY,qBAAsB,iBAG9DA,EAA4B,MAAO,oBAAqB,SACxDA,EAA4B,WAAY,oBAAqB,SAU9DO,qBAAsB1N,GAEjBA,IAAYgK,KAAKF,OAAOoC,mBAG3BlN,EAAUgB,EAAS,oBAAqBgF,SAAS/F,IAGhDA,EAAGyL,aAAc,MAAOzL,EAAG0L,aAAc,WAI1C3L,EAAUgB,EAAS,gBAAiBgF,SAAS/F,OACxCwB,EAASxB,EAAI,eAAkBwB,EAASxB,EAAI,gCAK5C0O,EAAW3D,KAAKF,OAAOM,YAAYwD,iBAIf,kBAAbD,IACVA,EAAW1O,EAAGqL,aAAc,oBAAuB7J,EAASxB,EAAI,sBAG7D0O,GAA+B,mBAAZ1O,EAAG4O,QAGrB5O,EAAG6O,WAAa,OACdC,mBAAoB,CAAE3N,OAAQnB,SAI/B,GAAIgE,EAAW,KACf+K,EAAU/O,EAAG4O,OAIbG,GAAoC,mBAAlBA,EAAQC,QAAwC,IAAhBhP,EAAGiP,UACxDF,EAAQC,OAAO,KACdhP,EAAGiP,UAAW,EAGdjP,EAAGkP,iBAAkB,QAAQ,KAC5BlP,EAAGiP,UAAW,CAAd,YAOHjP,EAAGmP,oBAAqB,aAAcpE,KAAK+D,oBAC3C9O,EAAGkP,iBAAkB,aAAcnE,KAAK+D,uBAO3C/O,EAAUgB,EAAS,eAAgBgF,SAAS/F,IACvCwB,EAASxB,EAAI,eAAkBwB,EAASxB,EAAI,2BAI3C8K,oBAAqB,CAAE3J,OAAQnB,OAIrCD,EAAUgB,EAAS,oBAAqBgF,SAAS/F,IAC5CwB,EAASxB,EAAI,eAAkBwB,EAASxB,EAAI,sBAI5CA,EAAG0L,aAAc,SAAY1L,EAAG0L,aAAc,cACjD1L,EAAGmP,oBAAqB,OAAQpE,KAAKD,qBACrC9K,EAAGkP,iBAAkB,OAAQnE,KAAKD,qBAClC9K,EAAGyL,aAAc,MAAOzL,EAAG0L,aAAc,kBAc7CoD,mBAAoBM,OAEfC,IAAoB7N,EAAS4N,EAAMjO,OAAQ,QAC9CmO,IAAiB9N,EAAS4N,EAAMjO,OAAQ,YAErCkO,GAAmBC,IACtBF,EAAMjO,OAAOoO,YAAc,EAC3BH,EAAMjO,OAAOyN,QAGdQ,EAAMjO,OAAOgO,oBAAqB,aAAcpE,KAAK+D,oBAUtDhE,oBAAqBsE,OAEhB7B,EAAS6B,EAAMjO,UAEfoM,GAAUA,EAAOiC,cAAgB,KAEhCH,IAAoB7N,EAAS4N,EAAMjO,OAAQ,QAC9CmO,IAAiB9N,EAAS4N,EAAMjO,OAAQ,eAErCkO,GAAmBC,EAAY,KAG9BZ,EAAW3D,KAAKF,OAAOM,YAAYwD,cAIf,kBAAbD,IACVA,EAAWnB,EAAOlC,aAAc,oBAAuB7J,EAAS+L,EAAQ,sBAIrE,wBAAwBtJ,KAAMsJ,EAAO7B,aAAc,SAAagD,EACnEnB,EAAOiC,cAAcC,YAAa,mDAAoD,KAG9E,uBAAuBxL,KAAMsJ,EAAO7B,aAAc,SAAagD,EACvEnB,EAAOiC,cAAcC,YAAa,oBAAqB,KAIvDlC,EAAOiC,cAAcC,YAAa,cAAe,OAerDC,oBAAqB3O,EAASiJ,EAAU,IAEvCA,EAAUrK,EAAQ,CAEjBgQ,eAAe,GACb3F,GAECjJ,GAAWA,EAAQU,aAEtB1B,EAAUgB,EAAS,gBAAiBgF,SAAS/F,IACvCA,EAAGqL,aAAc,gBAAuC,mBAAbrL,EAAG4P,QAClD5P,EAAGyL,aAAa,wBAAyB,IACzCzL,EAAG4P,YAKL7P,EAAUgB,EAAS,UAAWgF,SAAS/F,IAClCA,EAAGwP,eAAgBxP,EAAGwP,cAAcC,YAAa,aAAc,KACnEzP,EAAGmP,oBAAqB,OAAQpE,KAAKD,wBAItC/K,EAAUgB,EAAS,qCAAsCgF,SAAS/F,KAC5DA,EAAGqL,aAAc,gBAAmBrL,EAAGwP,eAAyD,mBAAjCxP,EAAGwP,cAAcC,aACpFzP,EAAGwP,cAAcC,YAAa,oDAAqD,QAKrF1P,EAAUgB,EAAS,oCAAqCgF,SAAS/F,KAC3DA,EAAGqL,aAAc,gBAAmBrL,EAAGwP,eAAyD,mBAAjCxP,EAAGwP,cAAcC,aACpFzP,EAAGwP,cAAcC,YAAa,qBAAsB,SAIxB,IAA1BzF,EAAQ2F,eAEX5P,EAAUgB,EAAS,oBAAqBgF,SAAS/F,IAGhDA,EAAGyL,aAAc,MAAO,eACxBzL,EAAG2L,gBAAiB,YCrdV,MAAMkE,EAEpBjF,YAAaC,QAEPA,OAASA,EAIfiF,cAEM/O,QAAUoB,SAASC,cAAe,YAClCrB,QAAQT,UAAY,oBACpBuK,OAAOkF,mBAAmB1N,YAAa0I,KAAKhK,SAOlDiP,UAAWC,EAAQC,OAEdC,EAAqB,OACrBF,EAAOG,cAAgBrF,KAAKF,OAAOwF,kBACP,QAA3BJ,EAAOK,iBAGyB,YAA3BL,EAAOK,iBAAiCvF,KAAKF,OAAOoC,oBAF5DkD,EAAqB,cAOlBpP,QAAQE,MAAMuG,QAAU2I,EAO9BI,SAGKxF,KAAKF,OAAOM,YAAYiF,aAAerF,KAAKhK,eAC1CA,QAAQe,UAAYiJ,KAAKyF,kBAShCA,eAAgBjF,EAAQR,KAAKF,OAAO4F,uBAG/BlQ,EADA0P,EAASlF,KAAKF,OAAOM,YAErBuF,EAAS,SAEsB,mBAAvBT,EAAOG,YAClB7P,EAAQ0P,EAAOG,YAAa7E,OACtB,CAE4B,iBAAvB0E,EAAOG,cACjBM,EAAST,EAAOG,aAKZ,IAAInM,KAAMyM,IAAyD,IAA7C3F,KAAKF,OAAO8F,sBAAsB3O,SAC5D0O,EAAS,SAINE,EAAmBrF,GAAsC,cAA7BA,EAAMsF,QAAQC,WAA6B,EAAI,SAE/EvQ,EAAQ,GACAmQ,OACF,IACJnQ,EAAM8J,KAAMU,KAAKF,OAAOkG,kBAAmBxF,GAAUqF,aAEjD,MACJrQ,EAAM8J,KAAMU,KAAKF,OAAOkG,kBAAmBxF,GAAUqF,EAAkB,IAAK7F,KAAKF,OAAOmG,oCAGpFC,EAAUlG,KAAKF,OAAOqG,WAAY3F,GACtChL,EAAM8J,KAAM4G,EAAQE,EAAIP,OACpBQ,EAAiB,QAAXV,EAAmB,IAAM,IAC/B3F,KAAKF,OAAOwG,gBAAiB9F,IAAUhL,EAAM8J,KAAM+G,EAAKH,EAAQK,EAAI,QAIvE9E,EAAM,IAAMzB,KAAKF,OAAO9H,SAASwO,QAAShG,UACvCR,KAAKyG,aAAcjR,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIiM,GAczDgF,aAAc5R,EAAG6R,EAAW5R,EAAG2M,EAAM,IAAMzB,KAAKF,OAAO9H,SAASwO,iBAE9C,iBAAN1R,GAAmB6R,MAAO7R,GAQ5B,YAAW2M,+CACc5M,2BARxB,YAAW4M,+CACa5M,4DACQ6R,oDACR5R,2BAWnCsI,eAEMpH,QAAQL,UC3HA,MAAMiR,EAEpB/G,YAAaC,QAEPA,OAASA,OAET+G,QAAU7G,KAAK6G,QAAQ5G,KAAMD,WAC7B8G,OAAS9G,KAAK8G,OAAO7G,KAAMD,WAC3B+G,UAAY/G,KAAK+G,UAAU9G,KAAMD,MAIvC+E,cAEM/O,QAAUoB,SAASC,cAAe,YAClCrB,QAAQT,UAAY,qBAElByR,UAAY5P,SAASC,cAAe,cACpC2P,UAAUvP,KAAO,YACjBuP,UAAUzR,UAAY,2BACtByR,UAAUC,YAAc,qBAC1BD,UAAU7C,iBAAkB,QAASnE,KAAK6G,cAC1CG,UAAU7C,iBAAkB,UAAWnE,KAAK+G,gBAC5CC,UAAU7C,iBAAkB,OAAQnE,KAAK8G,aAEvC9Q,QAAQsB,YAAa0I,KAAKgH,WAIlCE,YAEMC,cAAgBnH,KAAKF,OAAOqG,kBAE5BrG,OAAOkF,mBAAmB1N,YAAa0I,KAAKhK,cAC5CgR,UAAUI,QAIhBC,OAEKrH,KAAKuE,mBACHvO,QAAQL,cACRqR,UAAUxR,MAAQ,GAEvB4I,aAAc4B,KAAKsH,oBACZtH,KAAKsH,aAKd/C,oBAEUvE,KAAKhK,QAAQU,WAOvB6Q,OAECnJ,aAAc4B,KAAKsH,oBACZtH,KAAKsH,kBAENvP,EAAQiI,KAAKgH,UAAUxR,MAAMgM,KAAM,QACrC0E,EAAUlG,KAAKF,OAAO9H,SAASwP,mBAAoBzP,EAAO,CAAE0P,eAAe,WAI1EvB,GAAW,OAAOhN,KAAMnB,IAAWA,EAAMd,OAAS,IACtDiP,EAAUlG,KAAK/H,OAAQF,IAGpBmO,GAAqB,KAAVnO,QACT+H,OAAOU,MAAO0F,EAAQE,EAAGF,EAAQK,EAAGL,EAAQtL,IAC1C,SAGFkF,OAAOU,MAAOR,KAAKmH,cAAcf,EAAGpG,KAAKmH,cAAcZ,EAAGvG,KAAKmH,cAAcvM,IAC3E,GAKT8M,UAAWC,GAEVvJ,aAAc4B,KAAKsH,kBACdA,YAAcjJ,YAAY,IAAM2B,KAAKuH,QAAQI,GAQnD1P,OAAQF,SAED6P,EAAQ,IAAIC,OAAQ,MAAQ9P,EAAMyJ,OAAS,MAAO,KAElDhB,EAAQR,KAAKF,OAAOgI,YAAYC,MAAQvH,GACtCoH,EAAM1O,KAAMsH,EAAMwH,oBAGtBxH,EACIR,KAAKF,OAAOqG,WAAY3F,GAGxB,KASTyH,cAEMnI,OAAOU,MAAOR,KAAKmH,cAAcf,EAAGpG,KAAKmH,cAAcZ,EAAGvG,KAAKmH,cAAcvM,QAC7EyM,OAINa,eAEMX,YACAF,OAINjK,eAEM4J,UAAU5C,oBAAqB,QAASpE,KAAK6G,cAC7CG,UAAU5C,oBAAqB,UAAWpE,KAAK+G,gBAC/CC,UAAU5C,oBAAqB,OAAQpE,KAAK8G,aAE5C9Q,QAAQL,SAIdoR,UAAW1C,GAEY,KAAlBA,EAAM8D,aACJD,UAEqB,KAAlB7D,EAAM8D,eACTF,SAEL5D,EAAM+D,4BAKRvB,QAASxC,QAEHqD,UAAW,KAIjBZ,SAECzI,YAAY,IAAM2B,KAAKqH,QAAQ,ICtJ1B,MAAMgB,EAAeC,QAEvBC,EAAOD,EAAMzS,MAAO,wBACpB0S,GAAQA,EAAK,UAChBA,EAAOA,EAAK,GACL,CACNC,EAAsC,GAAnCC,SAAUF,EAAKG,OAAQ,GAAK,IAC/BC,EAAsC,GAAnCF,SAAUF,EAAKG,OAAQ,GAAK,IAC/B5T,EAAsC,GAAnC2T,SAAUF,EAAKG,OAAQ,GAAK,SAI7BE,EAAON,EAAMzS,MAAO,wBACpB+S,GAAQA,EAAK,UAChBA,EAAOA,EAAK,GACL,CACNJ,EAAGC,SAAUG,EAAKzO,MAAO,EAAG,GAAK,IACjCwO,EAAGF,SAAUG,EAAKzO,MAAO,EAAG,GAAK,IACjCrF,EAAG2T,SAAUG,EAAKzO,MAAO,EAAG,GAAK,SAI/B0O,EAAMP,EAAMzS,MAAO,uDACnBgT,QACI,CACNL,EAAGC,SAAUI,EAAI,GAAI,IACrBF,EAAGF,SAAUI,EAAI,GAAI,IACrB/T,EAAG2T,SAAUI,EAAI,GAAI,SAInBC,EAAOR,EAAMzS,MAAO,uFACpBiT,EACI,CACNN,EAAGC,SAAUK,EAAK,GAAI,IACtBH,EAAGF,SAAUK,EAAK,GAAI,IACtBhU,EAAG2T,SAAUK,EAAK,GAAI,IACtBjU,EAAGiB,WAAYgT,EAAK,KAIf,IAAP,EClDc,MAAMC,EAEpBlJ,YAAaC,QAEPA,OAASA,EAIfiF,cAEM/O,QAAUoB,SAASC,cAAe,YAClCrB,QAAQT,UAAY,mBACpBuK,OAAOkF,mBAAmB1N,YAAa0I,KAAKhK,SASlDgT,cAGMhT,QAAQe,UAAY,QACpBf,QAAQP,UAAUC,IAAK,sBAGvBoK,OAAO8F,sBAAsB5K,SAASiO,QAEtCC,EAAkBlJ,KAAKmJ,iBAAkBF,EAAQjJ,KAAKhK,SAG1DhB,EAAUiU,EAAQ,WAAYjO,SAASoO,SAEjCD,iBAAkBC,EAAQF,GAE/BA,EAAgBzT,UAAUC,IAAK,eAO7BsK,KAAKF,OAAOM,YAAYiJ,8BAEtBrT,QAAQE,MAAMkL,gBAAkB,QAAUpB,KAAKF,OAAOM,YAAYiJ,wBAA0B,UAC5FrT,QAAQE,MAAMoT,eAAiBtJ,KAAKF,OAAOM,YAAYmJ,4BACvDvT,QAAQE,MAAMsT,iBAAmBxJ,KAAKF,OAAOM,YAAYqJ,8BACzDzT,QAAQE,MAAMwT,mBAAqB1J,KAAKF,OAAOM,YAAYuJ,2BAMhEtL,YAAY,UACNyB,OAAOkF,mBAAmBvP,UAAUC,IAAK,6BAC5C,UAKEM,QAAQE,MAAMkL,gBAAkB,QAChCtB,OAAOkF,mBAAmBvP,UAAUE,OAAQ,4BAcnDwT,iBAAkB3I,EAAO5J,OAGpBZ,EAAUoB,SAASC,cAAe,OACtCrB,EAAQT,UAAY,oBAAsBiL,EAAMjL,UAAU2C,QAAS,sBAAuB,QAGtF0R,EAAiBxS,SAASC,cAAe,cAC7CuS,EAAerU,UAAY,2BAE3BS,EAAQsB,YAAasS,GACrBhT,EAAUU,YAAatB,GAEvBwK,EAAMQ,uBAAyBhL,EAC/BwK,EAAMU,8BAAgC0I,OAGjCC,KAAMrJ,GAEJxK,EAUR6T,KAAMrJ,SAECxK,EAAUwK,EAAMQ,uBACrB4I,EAAiBpJ,EAAMU,8BAElB4I,EAAO,CACZ/I,WAAYP,EAAMG,aAAc,mBAChC2I,eAAgB9I,EAAMG,aAAc,wBACpCS,gBAAiBZ,EAAMG,aAAc,yBACrCU,gBAAiBb,EAAMG,aAAc,yBACrCQ,iBAAkBX,EAAMG,aAAc,0BACtCoJ,gBAAiBvJ,EAAMG,aAAc,yBACrCqJ,mBAAoBxJ,EAAMG,aAAc,4BACxC6I,iBAAkBhJ,EAAMG,aAAc,0BACtC+I,mBAAoBlJ,EAAMG,aAAc,4BACxCsJ,qBAAsBzJ,EAAMG,aAAc,8BAC1CuJ,kBAAmB1J,EAAMG,aAAc,4BAGlCwJ,EAAc3J,EAAMF,aAAc,gBAIxCE,EAAM/K,UAAUE,OAAQ,uBACxB6K,EAAM/K,UAAUE,OAAQ,wBAExBK,EAAQ4K,gBAAiB,eACzB5K,EAAQ4K,gBAAiB,wBACzB5K,EAAQ4K,gBAAiB,wBACzB5K,EAAQ4K,gBAAiB,8BACzB5K,EAAQE,MAAM6T,gBAAkB,GAEhCH,EAAe1T,MAAMoT,eAAiB,GACtCM,EAAe1T,MAAMsT,iBAAmB,GACxCI,EAAe1T,MAAMwT,mBAAqB,GAC1CE,EAAe1T,MAAMkL,gBAAkB,GACvCwI,EAAe1T,MAAMkU,QAAU,GAC/BR,EAAe7S,UAAY,GAEvB+S,EAAK/I,aAEJ,sBAAsB7H,KAAM4Q,EAAK/I,aAAgB,gDAAgD7H,KAAM4Q,EAAK/I,YAC/GP,EAAME,aAAc,wBAAyBoJ,EAAK/I,YAGlD/K,EAAQE,MAAM6K,WAAa+I,EAAK/I,aAO9B+I,EAAK/I,YAAc+I,EAAKC,iBAAmBD,EAAKE,oBAAsBF,EAAK1I,iBAAmB0I,EAAKzI,iBAAmByI,EAAK3I,mBAC9HnL,EAAQ0K,aAAc,uBAAwBoJ,EAAK/I,WACvC+I,EAAKR,eACLQ,EAAK1I,gBACL0I,EAAKzI,gBACLyI,EAAK3I,iBACL2I,EAAKC,gBACLD,EAAKE,mBACLF,EAAKN,iBACLM,EAAKJ,mBACLI,EAAKG,qBACLH,EAAKI,mBAIdJ,EAAKR,gBAAiBtT,EAAQ0K,aAAc,uBAAwBoJ,EAAKR,gBACzEQ,EAAKC,kBAAkB/T,EAAQE,MAAM6T,gBAAkBD,EAAKC,iBAC5DD,EAAKE,qBAAqBhU,EAAQE,MAAMkL,gBAAkB0I,EAAKE,oBAC/DF,EAAKG,sBAAuBjU,EAAQ0K,aAAc,6BAA8BoJ,EAAKG,sBAErFE,GAAcnU,EAAQ0K,aAAc,eAAgB,IAGpDoJ,EAAKR,iBAAiBM,EAAe1T,MAAMoT,eAAiBQ,EAAKR,gBACjEQ,EAAKN,mBAAmBI,EAAe1T,MAAMsT,iBAAmBM,EAAKN,kBACrEM,EAAKJ,qBAAqBE,EAAe1T,MAAMwT,mBAAqBI,EAAKJ,oBACzEI,EAAKI,oBAAoBN,EAAe1T,MAAMkU,QAAUN,EAAKI,uBAK7DG,EAAgBP,EAAKC,oBAGpBM,IAAkBhC,EAAYgC,GAAkB,KAChDC,EAA0B3K,OAAOpD,iBAAkBvG,GACnDsU,GAA2BA,EAAwBP,kBACtDM,EAAgBC,EAAwBP,oBAItCM,EAAgB,OACbxB,EAAMR,EAAYgC,GAKpBxB,GAAiB,IAAVA,EAAIhU,ID/II,iBAFWyT,ECkJR+B,KDhJQ/B,EAAQD,EAAYC,KAEhDA,GACgB,IAAVA,EAAME,EAAoB,IAAVF,EAAMK,EAAoB,IAAVL,EAAMxT,GAAY,IAGrD,MC0ImC,IACtC0L,EAAM/K,UAAUC,IAAK,uBAGrB8K,EAAM/K,UAAUC,IAAK,yBDtJO4S,MCoKhC9C,OAAQ+E,GAAa,OAEhBC,EAAexK,KAAKF,OAAO4F,kBAC3BQ,EAAUlG,KAAKF,OAAOqG,aAEtBsE,EAAoB,KAGpBC,EAAiB1K,KAAKF,OAAOM,YAAYuK,IAAM,SAAW,OAC7DC,EAAmB5K,KAAKF,OAAOM,YAAYuK,IAAM,OAAS,YAI3DxV,MAAMC,KAAM4K,KAAKhK,QAAQ6U,YAAa7P,SAAS,CAAE8P,EAAa1E,KAE7D0E,EAAYrV,UAAUE,OAAQ,OAAQ,UAAW,UAE7CyQ,EAAIF,EAAQE,EACf0E,EAAYrV,UAAUC,IAAKgV,GAElBtE,EAAIF,EAAQE,EACrB0E,EAAYrV,UAAUC,IAAKkV,IAG3BE,EAAYrV,UAAUC,IAAK,WAG3B+U,EAAoBK,IAGjBP,GAAcnE,IAAMF,EAAQE,IAC/BpR,EAAU8V,EAAa,qBAAsB9P,SAAS,CAAE+P,EAAaxE,KAEpEwE,EAAYtV,UAAUE,OAAQ,OAAQ,UAAW,UAE7C4Q,EAAIL,EAAQK,EACfwE,EAAYtV,UAAUC,IAAK,QAElB6Q,EAAIL,EAAQK,EACrBwE,EAAYtV,UAAUC,IAAK,WAG3BqV,EAAYtV,UAAUC,IAAK,WAGvB0Q,IAAMF,EAAQE,IAAIqE,EAAoBM,UAS1C/K,KAAKgL,yBAEHlL,OAAOmL,aAAatG,oBAAqB3E,KAAKgL,mBAAoB,CAAEpG,eAAgB5E,KAAKF,OAAOmL,aAAa/K,cAAeF,KAAKgL,sBAKnIP,EAAoB,MAElB3K,OAAOmL,aAAavH,qBAAsB+G,OAE3CS,EAA2BT,EAAkB5H,cAAe,gCAC5DqI,EAA2B,KAE1BC,EAAqBD,EAAyBhV,MAAMkL,iBAAmB,GAGvE,SAASlI,KAAMiS,KAClBD,EAAyBhV,MAAMkL,gBAAkB,GACjDzB,OAAOpD,iBAAkB2O,GAA2Bd,QACpDc,EAAyBhV,MAAMkL,gBAAkB+J,OAO/CC,EAAyBpL,KAAKgL,mBAAqBhL,KAAKgL,mBAAmBrK,aAAc,wBAA2B,KACpH0K,EAAwBZ,EAAkB9J,aAAc,wBACxD0K,GAAyBA,IAA0BD,GAA0BX,IAAsBzK,KAAKgL,yBACtGhV,QAAQP,UAAUC,IAAK,sBAGxBsV,mBAAqBP,EAMvBD,IACD,uBAAwB,uBAAwBxP,SAASsQ,IACtDd,EAAa/U,UAAU8V,SAAUD,QAC/BxL,OAAOkF,mBAAmBvP,UAAUC,IAAK4V,QAGzCxL,OAAOkF,mBAAmBvP,UAAUE,OAAQ2V,KAEhDtL,MAIJ3B,YAAY,UACNrI,QAAQP,UAAUE,OAAQ,mBAC7B,GAQJ6V,qBAEKtF,EAAUlG,KAAKF,OAAOqG,gBAEtBnG,KAAKF,OAAOM,YAAYiJ,wBAA0B,KAMpDoC,EAAiBC,EAJdC,EAAmB3L,KAAKF,OAAO8F,sBAClCgG,EAAiB5L,KAAKF,OAAO+L,oBAE1BvC,EAAiBtJ,KAAKhK,QAAQE,MAAMoT,eAAenR,MAAO,KAGhC,IAA1BmR,EAAerS,OAClBwU,EAAkBC,EAAmBjD,SAAUa,EAAe,GAAI,KAGlEmC,EAAkBhD,SAAUa,EAAe,GAAI,IAC/CoC,EAAmBjD,SAAUa,EAAe,GAAI,SAKhDwC,EACAjG,EAHGkG,EAAa/L,KAAKhK,QAAQgW,YAC7BC,EAAuBN,EAAiB1U,OAKxC6U,EADmE,iBAAzD9L,KAAKF,OAAOM,YAAY8L,6BACLlM,KAAKF,OAAOM,YAAY8L,6BAGxBD,EAAuB,GAAMR,EAAkBM,IAAiBE,EAAqB,GAAM,EAGzHpG,EAAmBiG,EAA6B5F,EAAQE,GAAK,MAI5D+F,EACAC,EAHGC,EAAcrM,KAAKhK,QAAQ2C,aAC9B2T,EAAqBV,EAAe3U,OAKpCkV,EADiE,iBAAvDnM,KAAKF,OAAOM,YAAYmM,2BACPvM,KAAKF,OAAOM,YAAYmM,4BAGtBb,EAAmBW,IAAkBC,EAAmB,GAGtFF,EAAiBE,EAAqB,EAAKH,EAA2BjG,EAAQK,EAAI,OAE7EvQ,QAAQE,MAAMwT,mBAAqB7D,EAAmB,OAASuG,EAAiB,MAMvFhP,eAEMpH,QAAQL,UChZR,MAAM6W,EAAkB,kBAClBC,EAA6B,kBAC7BC,EAA2B,kCAG3BC,EAAgC,qFAGhCC,EAAuB,uGCLpC,IAAIC,EAAqB,EAMV,MAAMC,EAEpBjN,YAAaC,QAEPA,OAASA,EAUfiN,IAAKC,EAAWC,QAGVC,YAEDC,EAAYnN,KAAKF,OAAOgI,YACxBsF,EAAeD,EAAU1J,QAASwJ,GAClCI,EAAiBF,EAAU1J,QAASuJ,MAKpCA,EAAU1M,aAAc,sBAAyB2M,EAAQ3M,aAAc,sBACtE0M,EAAUrM,aAAc,0BAA6BsM,EAAQtM,aAAc,2BACxEyM,EAAeC,EAAiBJ,EAAUD,GAAY1M,aAAc,6BAAgC,MAGtGgN,sBAAwBtN,KAAKsN,uBAAyB/V,QAEvDgW,EAAmBvN,KAAKwN,sBAAuBP,GAGnDD,EAAUlH,QAAQ2H,YAAc,UAChCR,EAAQnH,QAAQ2H,YAAc,UAG9BF,EAAiBG,eAAiBN,EAAeC,EAAiB,UAAY,eAK1EM,EAAgD,SAA5BX,EAAU9W,MAAMuG,QACpCkR,IAAoBX,EAAU9W,MAAMuG,QAAUuD,KAAKF,OAAOM,YAAY3D,aAGtEmR,EAAM5N,KAAK6N,0BAA2Bb,EAAWC,GAAU7N,KAAKJ,GAC5DgB,KAAK8N,oBAAqB9O,EAAS5J,KAAM4J,EAAS+O,GAAI/O,EAASC,SAAW,GAAIsO,EAAkBV,UAGpGc,IAAoBX,EAAU9W,MAAMuG,QAAU,QAGL,UAAzCwQ,EAAQnH,QAAQkI,uBAAqF,IAAjDhO,KAAKF,OAAOM,YAAY4N,qBAAgC,KAG3GC,EAAuD,GAA5BV,EAAiBW,SAC/CC,EAAoD,GAA5BZ,EAAiBW,cAErCE,gCAAiCnB,GAAUjS,SAASqT,QAEpDC,EAAmBtO,KAAKwN,sBAAuBa,EAAkBd,GACjEgB,EAAK,YAILD,EAAiBJ,WAAaX,EAAiBW,UAAYI,EAAiB3G,QAAU4F,EAAiB5F,QAC1G4G,EAAK,aAAe1B,IACpBe,EAAItO,KAAO,4DAA2DiP,6BAA8BD,EAAiBJ,kBAAkBI,EAAiB3G,cAGzJ0G,EAAiBvI,QAAQ0I,kBAAoBD,CAA7C,GAEEvO,MAGH4N,EAAItO,KAAO,8FAA6F2O,WAAkCE,cAOtIb,sBAAsBvW,UAAY6W,EAAI3L,KAAM,IAGjDxH,uBAAuB,KAClBuF,KAAKsN,wBAER/Q,iBAAkByD,KAAKsN,uBAAwBmB,WAE/CxB,EAAQnH,QAAQ2H,YAAc,mBAI3B3N,OAAOjD,cAAc,CACzBpF,KAAM,cACNqS,KAAM,CACLkD,YACAC,UACAyB,MAAO1O,KAAKsN,0BAYhBJ,QAGClY,EAAUgL,KAAKF,OAAOkF,mBAAoB,mDAAoDhK,SAAShF,IACtGA,EAAQ8P,QAAQ2H,YAAc,EAA9B,IAIDzY,EAAUgL,KAAKF,OAAOkF,mBAAoB,8BAA+BhK,SAAShF,WAC1EA,EAAQ8P,QAAQ0I,iBAAvB,IAIGxO,KAAKsN,uBAAyBtN,KAAKsN,sBAAsB5W,kBACvD4W,sBAAsB5W,WAAWiY,YAAa3O,KAAKsN,4BACnDA,sBAAwB,MAiB/BQ,oBAAqB1Y,EAAM2Y,EAAIa,EAAgBrB,EAAkBgB,GAIhEnZ,EAAK0Q,QAAQ0I,kBAAoB,GACjCT,EAAGjI,QAAQ0I,kBAAoBD,MAI3BtP,EAAUe,KAAKwN,sBAAuBO,EAAIR,QAIV,IAAzBqB,EAAejH,QAAwB1I,EAAQ0I,MAAQiH,EAAejH,YAC1C,IAA5BiH,EAAeV,WAA2BjP,EAAQiP,SAAWU,EAAeV,eAClD,IAA1BU,EAAeC,SAAyB5P,EAAQ4P,OAASD,EAAeC,YAE/EC,EAAY9O,KAAK+O,4BAA6B,OAAQ3Z,EAAMwZ,GAC/DI,EAAUhP,KAAK+O,4BAA6B,KAAMhB,EAAIa,MAKnDb,EAAGtY,UAAU8V,SAAU,qBAInByD,EAAQC,OAAR,QAEH7Z,EAAKK,UAAU8V,SAAU,aAAe,EAEjBnW,EAAKG,UAAUM,MAAO+W,IAA0B,CAAC,KAAM,MACzDmB,EAAGxY,UAAUM,MAAO+W,IAA0B,CAAC,KAAM,IAII,YAApCW,EAAiBG,gBAC7DK,EAAGtY,UAAUC,IAAK,UAAW,gBAUC,IAA7BkZ,EAAeM,YAAgD,IAAzBN,EAAeO,MAAkB,KAEtEC,EAAoBpP,KAAKF,OAAOuP,WAEhCC,EAAQ,CACXC,GAAKT,EAAUS,EAAIP,EAAQO,GAAMH,EACjCI,GAAKV,EAAUU,EAAIR,EAAQQ,GAAMJ,EACjCK,OAAQX,EAAUrM,MAAQuM,EAAQvM,MAClCiN,OAAQZ,EAAUtW,OAASwW,EAAQxW,QAIpC8W,EAAMC,EAAIvT,KAAK2T,MAAiB,IAAVL,EAAMC,GAAa,IACzCD,EAAME,EAAIxT,KAAK2T,MAAiB,IAAVL,EAAME,GAAa,IACzCF,EAAMG,OAASzT,KAAK2T,MAAsB,IAAfL,EAAMG,QAAkB,IACnDH,EAAMG,OAASzT,KAAK2T,MAAsB,IAAfL,EAAMG,QAAkB,QAE/CP,GAAyC,IAA7BN,EAAeM,YAAqC,IAAZI,EAAMC,GAAuB,IAAZD,EAAME,GAC9EL,GAAiC,IAAzBP,EAAeO,QAAsC,IAAjBG,EAAMG,QAAiC,IAAjBH,EAAMI,WAGrER,GAAaC,EAAQ,KAEpBlZ,EAAY,GAEZiZ,GAAYjZ,EAAUqJ,KAAO,aAAYgQ,EAAMC,QAAQD,EAAME,QAC7DL,GAAQlZ,EAAUqJ,KAAO,SAAQgQ,EAAMG,WAAWH,EAAMI,WAE5DZ,EAAUG,OAAV,UAAgChZ,EAAUgM,KAAM,KAChD6M,EAAUG,OAAO,oBAAsB,WAEvCD,EAAQC,OAAR,UAA8B,YAO3B,IAAIW,KAAgBZ,EAAQC,OAAS,OACnCY,EAAUb,EAAQC,OAAOW,GACzBE,EAAYhB,EAAUG,OAAOW,GAE/BC,IAAYC,SACRd,EAAQC,OAAOW,KAKQ,IAA1BC,EAAQE,gBACXf,EAAQC,OAAOW,GAAgBC,EAAQra,QAGR,IAA5Bsa,EAAUC,gBACbjB,EAAUG,OAAOW,GAAgBE,EAAUta,YAK1CoY,EAAM,GAENoC,EAAoB1W,OAAO2W,KAAMjB,EAAQC,WAIzCe,EAAkB/Y,OAAS,EAAI,CAGlC6X,EAAUG,OAAV,WAAiC,OAGjCD,EAAQC,OAAR,WAAgC,OAAMhQ,EAAQiP,aAAajP,EAAQ4P,UAAU5P,EAAQ0I,SACrFqH,EAAQC,OAAO,uBAAyBe,EAAkB/N,KAAM,MAChE+M,EAAQC,OAAO,eAAiBe,EAAkB/N,KAAM,MAYxD2L,EAAO,8BAA+BW,EAAI,OAR5BjV,OAAO2W,KAAMnB,EAAUG,QAAS7P,KAAKwQ,GAC3CA,EAAe,KAAOd,EAAUG,OAAOW,GAAgB,iBAC3D3N,KAAM,IAMH,6DACwDsM,EAAI,OALvDjV,OAAO2W,KAAMjB,EAAQC,QAAS7P,KAAKwQ,GACvCA,EAAe,KAAOZ,EAAQC,OAAOW,GAAgB,iBACzD3N,KAAM,IAGwE,WAI5E2L,EAYRJ,sBAAuBxX,EAASka,OAE3BjR,EAAU,CACb4P,OAAQ7O,KAAKF,OAAOM,YAAY+P,kBAChCjC,SAAUlO,KAAKF,OAAOM,YAAYgQ,oBAClCzI,MAAO,MAGR1I,EAAUrK,EAAQqK,EAASiR,GAGvBla,EAAQU,WAAa,KACpB2Z,EAAqB5Z,EAAST,EAAQU,WAAY,8BAClD2Z,IACHpR,EAAUe,KAAKwN,sBAAuB6C,EAAoBpR,WAIxDjJ,EAAQ8P,QAAQqK,oBACnBlR,EAAQ4P,OAAS7Y,EAAQ8P,QAAQqK,mBAG9Bna,EAAQ8P,QAAQsK,sBACnBnR,EAAQiP,SAAWpY,WAAYE,EAAQ8P,QAAQsK,sBAG5Cpa,EAAQ8P,QAAQwK,mBACnBrR,EAAQ0I,MAAQ7R,WAAYE,EAAQ8P,QAAQwK,mBAGtCrR,EAWR8P,4BAA6BwB,EAAWva,EAAS4Y,OAE5C1J,EAASlF,KAAKF,OAAOM,YAErBoQ,EAAa,CAAEvB,OAAQ,QAGM,IAA7BL,EAAeM,YAAgD,IAAzBN,EAAeO,MAAkB,KACtEsB,KAIkC,mBAA3B7B,EAAe8B,QACzBD,EAAS7B,EAAe8B,QAAS1a,WAG7BkP,EAAOyL,OAGVF,EAASza,EAAQ4a,4BAEb,KACAzB,EAAQnP,KAAKF,OAAOuP,WACxBoB,EAAS,CACRlB,EAAGvZ,EAAQ6a,WAAa1B,EACxBK,EAAGxZ,EAAQ8a,UAAY3B,EACvB1M,MAAOzM,EAAQgW,YAAcmD,EAC7B3W,OAAQxC,EAAQ2C,aAAewW,GAKlCqB,EAAWjB,EAAIkB,EAAOlB,EACtBiB,EAAWhB,EAAIiB,EAAOjB,EACtBgB,EAAW/N,MAAQgO,EAAOhO,MAC1B+N,EAAWhY,OAASiY,EAAOjY,aAGtBuY,EAAiBxU,iBAAkBvG,UAGvC4Y,EAAeK,QAAU/J,EAAO8L,mBAAoBhW,SAAS9E,QAC1DV,EAIiB,iBAAVU,IAAqBA,EAAQ,CAAE+a,SAAU/a,SAE1B,IAAfA,EAAMd,MAAsC,SAAdmb,EACxC/a,EAAQ,CAAEA,MAAOU,EAAMd,KAAM2a,eAAe,QAEhB,IAAb7Z,EAAM6X,IAAoC,OAAdwC,EAC3C/a,EAAQ,CAAEA,MAAOU,EAAM6X,GAAIgC,eAAe,IAInB,gBAAnB7Z,EAAM+a,WACTzb,EAAQM,WAAYib,EAAe,gBAAmBjb,WAAYib,EAAe,eAG9EpK,MAAMnR,KACTA,EAAQub,EAAe7a,EAAM+a,YAIjB,KAAVzb,IACHgb,EAAWvB,OAAO/Y,EAAM+a,UAAYzb,MAI/Bgb,EAeR3C,0BAA2Bb,EAAWC,OAIjCiE,GAFgE,mBAA/ClR,KAAKF,OAAOM,YAAY+Q,mBAAoCnR,KAAKF,OAAOM,YAAY+Q,mBAAqBnR,KAAKoR,qBAE/G5a,KAAMwJ,KAAMgN,EAAWC,GAEvCoE,EAAW,UAGRH,EAAMvW,QAAQ,CAAE2W,EAAMC,SACS,IAAjCF,EAAS5N,QAAS6N,EAAKvD,WAC1BsD,EAAS/R,KAAMgS,EAAKvD,KACb,KAYVqD,oBAAqBpE,EAAWC,OAE3BiE,EAAQ,SAGNM,EAAY,4CAIbC,uBAAwBP,EAAOlE,EAAWC,EAAS,aAAa9V,GAC7DA,EAAKua,SAAW,MAAQva,EAAKwJ,aAAc,kBAI9C8Q,uBAAwBP,EAAOlE,EAAWC,EAASuE,GAAWra,GAC3DA,EAAKua,SAAW,MAAQva,EAAK6Q,iBAIhCyJ,uBAAwBP,EAAOlE,EAAWC,EAb5B,sBAaiD9V,GAC5DA,EAAKua,SAAW,OAAUva,EAAKwJ,aAAc,QAAWxJ,EAAKwJ,aAAc,oBAI9E8Q,uBAAwBP,EAAOlE,EAAWC,EApB7B,OAoBiD9V,GAC3DA,EAAKua,SAAW,MAAQva,EAAK6Q,YAGrCkJ,EAAMlW,SAASsW,IAGVnb,EAASmb,EAAKlc,KAAMoc,GACvBF,EAAKrS,QAAU,CAAEkQ,OAAO,GAGhBhZ,EAASmb,EAAKlc,KA/BN,SAmChBkc,EAAKrS,QAAU,CAAEkQ,OAAO,EAAOF,OAAQ,CAAE,QAAS,gBAG7CwC,uBAAwBP,EAAOI,EAAKlc,KAAMkc,EAAKvD,GAAI,uBAAuB5W,GACvEA,EAAKwa,aACV,CACFxC,OAAO,EACPF,OAAQ,GACRyB,QAAS1Q,KAAK4R,oBAAoB3R,KAAMD,aAIpCyR,uBAAwBP,EAAOI,EAAKlc,KAAMkc,EAAKvD,GAAI,yCAAyC5W,GACzFA,EAAKwJ,aAAc,qBACxB,CACFwO,OAAO,EACPF,OAAQ,CAAE,SACVyB,QAAS1Q,KAAK4R,oBAAoB3R,KAAMD,WAKxCA,MAEIkR,EAWRU,oBAAqB5b,SAEdoZ,EAAoBpP,KAAKF,OAAOuP,iBAE/B,CACNE,EAAGvT,KAAK2T,MAAS3Z,EAAQ6a,WAAazB,EAAsB,KAAQ,IACpEI,EAAGxT,KAAK2T,MAAS3Z,EAAQ8a,UAAY1B,EAAsB,KAAQ,IACnE3M,MAAOzG,KAAK2T,MAAS3Z,EAAQgW,YAAcoD,EAAsB,KAAQ,IACzE5W,OAAQwD,KAAK2T,MAAS3Z,EAAQ2C,aAAeyW,EAAsB,KAAQ,KAgB7EqC,uBAAwBP,EAAOW,EAAWC,EAAS5c,EAAU6c,EAAYxE,OAEpEyE,EAAc,GACdC,EAAY,MAEb9X,MAAM3D,KAAMqb,EAAUxc,iBAAkBH,IAAa8F,SAAS,CAAEhF,EAASjB,WACrE8E,EAAMkY,EAAY/b,GACL,iBAAR6D,GAAoBA,EAAI5C,SAClC+a,EAAYnY,GAAOmY,EAAYnY,IAAQ,GACvCmY,EAAYnY,GAAKyF,KAAMtJ,UAItBmE,MAAM3D,KAAMsb,EAAQzc,iBAAkBH,IAAa8F,SAAS,CAAEhF,EAASjB,WACnE8E,EAAMkY,EAAY/b,OAIpBkc,KAHJD,EAAUpY,GAAOoY,EAAUpY,IAAQ,GACnCoY,EAAUpY,GAAKyF,KAAMtJ,GAKjBgc,EAAYnY,GAAO,OAChBsY,EAAeF,EAAUpY,GAAK5C,OAAS,EACvCmb,EAAiBJ,EAAYnY,GAAK5C,OAAS,EAI7C+a,EAAYnY,GAAMsY,IACrBD,EAAcF,EAAYnY,GAAMsY,GAChCH,EAAYnY,GAAMsY,GAAiB,MAI3BH,EAAYnY,GAAMuY,KAC1BF,EAAcF,EAAYnY,GAAMuY,GAChCJ,EAAYnY,GAAMuY,GAAmB,MAKnCF,GACHhB,EAAM5R,KAAK,CACVlK,KAAM8c,EACNnE,GAAI/X,EACJiJ,QAASsO,OAmBba,gCAAiCiE,SAEzB,GAAGlY,MAAM3D,KAAM6b,EAAYC,UAAWC,QAAQ,CAAEC,EAAQxc,WAExDyc,EAA2Bzc,EAAQ6M,cAAe,qCAKnD7M,EAAQsK,aAAc,6BAAiCmS,GAC3DD,EAAOlT,KAAMtJ,GAGVA,EAAQ6M,cAAe,gCAC1B2P,EAASA,EAAOE,OAAQ1S,KAAKoO,gCAAiCpY,KAGxDwc,CAAP,GAEE,KCpnBU,MAAMG,EAEpB9S,YAAaC,QAEPA,OAASA,EAOfmF,UAAWC,EAAQC,IAEO,IAArBD,EAAO0N,eACLC,WAE2B,IAAxB1N,EAAUyN,gBACbE,SASPD,UAEC7d,EAAUgL,KAAKF,OAAOyD,mBAAoB,aAAcvI,SAAShF,IAChEA,EAAQP,UAAUC,IAAK,WACvBM,EAAQP,UAAUE,OAAQ,uBAS5Bmd,SAEC9d,EAAUgL,KAAKF,OAAOyD,mBAAoB,aAAcvI,SAAShF,IAChEA,EAAQP,UAAUE,OAAQ,WAC1BK,EAAQP,UAAUE,OAAQ,uBAW5Bod,sBAEKvI,EAAexK,KAAKF,OAAO4F,qBAC3B8E,GAAgBxK,KAAKF,OAAOM,YAAYwS,UAAY,KACnDA,EAAYpI,EAAanV,iBAAkB,4BAC3C2d,EAAkBxI,EAAanV,iBAAkB,gDAE9C,CACN4d,KAAML,EAAU3b,OAAS+b,EAAgB/b,OAAS,EAClDic,OAAQF,EAAgB/b,cAIlB,CAAEgc,MAAM,EAAOC,MAAM,GAwB9BC,KAAMP,EAAWQ,GAAU,GAE1BR,EAAYzd,MAAMC,KAAMwd,OAEpBS,EAAU,GACbC,EAAY,GACZC,EAAS,GAGVX,EAAU5X,SAASwY,OACdA,EAASlT,aAAc,uBAA0B,KAChDiR,EAAQ9I,SAAU+K,EAAS7S,aAAc,uBAAyB,IAEjE0S,EAAQ9B,KACZ8B,EAAQ9B,GAAS,IAGlB8B,EAAQ9B,GAAOjS,KAAMkU,QAGrBF,EAAUhU,KAAM,CAAEkU,OAMpBH,EAAUA,EAAQX,OAAQY,OAItB/B,EAAQ,SAIZ8B,EAAQrY,SAASyY,IAChBA,EAAMzY,SAASwY,IACdD,EAAOjU,KAAMkU,GACbA,EAAS9S,aAAc,sBAAuB6Q,MAG/CA,QAGkB,IAAZ6B,EAAmBC,EAAUE,EAQrCG,eAEM5T,OAAO8F,sBAAsB5K,SAAS2Y,QAEtC/H,EAAiB5W,EAAU2e,EAAiB,WAChD/H,EAAe5Q,SAAS,CAAE4Y,EAAepE,UAEnC2D,KAAMS,EAAcve,iBAAkB,gBAEzC2K,MAE2B,IAA1B4L,EAAe3U,QAAe+I,KAAKmT,KAAMQ,EAAgBte,iBAAkB,iBAgBjFmQ,OAAQ+L,EAAOqB,OAEViB,EAAmB,CACtBC,MAAO,GACPC,OAAQ,IAGLvJ,EAAexK,KAAKF,OAAO4F,qBAC3B8E,GAAgBxK,KAAKF,OAAOM,YAAYwS,YAE3CA,EAAYA,GAAa5S,KAAKmT,KAAM3I,EAAanV,iBAAkB,eAErD4B,OAAS,KAElB+c,EAAW,KAEM,iBAAVzC,EAAqB,KAC3B0C,EAAkBjU,KAAKmT,KAAM3I,EAAanV,iBAAkB,sBAAwBgD,MACpF4b,IACH1C,EAAQ9I,SAAUwL,EAAgBtT,aAAc,wBAA2B,EAAG,KAIhFxL,MAAMC,KAAMwd,GAAY5X,SAAS,CAAE/F,EAAIF,QAElCE,EAAGqL,aAAc,yBACpBvL,EAAI0T,SAAUxT,EAAG0L,aAAc,uBAAyB,KAGzDqT,EAAWhY,KAAKE,IAAK8X,EAAUjf,GAG3BA,GAAKwc,EAAQ,KACZ2C,EAAajf,EAAGQ,UAAU8V,SAAU,WACxCtW,EAAGQ,UAAUC,IAAK,WAClBT,EAAGQ,UAAUE,OAAQ,oBAEjBZ,IAAMwc,SAEJzR,OAAOqU,eAAgBnU,KAAKF,OAAOsU,cAAenf,IAEvDA,EAAGQ,UAAUC,IAAK,yBACboK,OAAOmL,aAAavH,qBAAsBzO,IAG3Cif,IACJL,EAAiBC,MAAMxU,KAAMrK,QACxB6K,OAAOjD,cAAc,CACzBzG,OAAQnB,EACRwC,KAAM,UACN4c,SAAS,SAKP,KACAH,EAAajf,EAAGQ,UAAU8V,SAAU,WACxCtW,EAAGQ,UAAUE,OAAQ,WACrBV,EAAGQ,UAAUE,OAAQ,oBAEjBue,SACEpU,OAAOmL,aAAatG,oBAAqB1P,GAC9C4e,EAAiBE,OAAOzU,KAAMrK,QACzB6K,OAAOjD,cAAc,CACzBzG,OAAQnB,EACRwC,KAAM,SACN4c,SAAS,SAUb9C,EAAyB,iBAAVA,EAAqBA,GAAS,EAC7CA,EAAQvV,KAAKE,IAAKF,KAAKC,IAAKsV,EAAOyC,IAAa,GAChDxJ,EAAa9J,aAAc,gBAAiB6Q,UAMvCsC,EAYRhK,KAAMrJ,EAAQR,KAAKF,OAAO4F,0BAElB1F,KAAKmT,KAAM3S,EAAMnL,iBAAkB,cAe3Cif,KAAM/C,EAAOgD,EAAS,OAEjB/J,EAAexK,KAAKF,OAAO4F,qBAC3B8E,GAAgBxK,KAAKF,OAAOM,YAAYwS,UAAY,KAEnDA,EAAY5S,KAAKmT,KAAM3I,EAAanV,iBAAkB,gCACtDud,EAAU3b,OAAS,IAGD,iBAAVsa,EAAqB,KAC3BiD,EAAsBxU,KAAKmT,KAAM3I,EAAanV,iBAAkB,qCAAuCgD,MAG1GkZ,EADGiD,EACK/L,SAAU+L,EAAoB7T,aAAc,wBAA2B,EAAG,KAGzE,EAKX4Q,GAASgD,MAELV,EAAmB7T,KAAKwF,OAAQ+L,EAAOqB,UAEvCiB,EAAiBE,OAAO9c,aACtB6I,OAAOjD,cAAc,CACzBpF,KAAM,iBACNqS,KAAM,CACL0J,SAAUK,EAAiBE,OAAO,GAClCnB,UAAWiB,EAAiBE,UAK3BF,EAAiBC,MAAM7c,aACrB6I,OAAOjD,cAAc,CACzBpF,KAAM,gBACNqS,KAAM,CACL0J,SAAUK,EAAiBC,MAAM,GACjClB,UAAWiB,EAAiBC,cAK1BhU,OAAOoE,SAASsB,cAChB1F,OAAO2U,SAASjP,SAEjBxF,KAAKF,OAAOM,YAAYsU,oBACtB5U,OAAO9H,SAAS2c,cAGXd,EAAiBC,MAAM7c,SAAU4c,EAAiBE,OAAO9c,gBAM/D,EAURic,cAEQlT,KAAKsU,KAAM,KAAM,GAUzBrB,cAEQjT,KAAKsU,KAAM,MAAO,IC5WZ,MAAMM,EAEpB/U,YAAaC,QAEPA,OAASA,OAEThF,QAAS,OAET+Z,eAAiB7U,KAAK6U,eAAe5U,KAAMD,MAQjD8U,cAGK9U,KAAKF,OAAOM,YAAY2U,WAAa/U,KAAKgV,WAAa,MAErDla,QAAS,OAETgF,OAAOkF,mBAAmBvP,UAAUC,IAAK,iBAGzCoK,OAAOmV,uBAIPnV,OAAOyD,mBAAmBjM,YAAa0I,KAAKF,OAAOoV,yBAGxDlgB,EAAUgL,KAAKF,OAAOkF,mBAAoBwH,GAAkBxR,SAASwF,IAC/DA,EAAM/K,UAAU8V,SAAU,UAC9B/K,EAAM2D,iBAAkB,QAASnE,KAAK6U,gBAAgB,YAKlDM,EAAS,GACTC,EAAYpV,KAAKF,OAAOuV,4BACzBC,mBAAqBF,EAAU3S,MAAQ0S,OACvCI,oBAAsBH,EAAU5c,OAAS2c,EAG1CnV,KAAKF,OAAOM,YAAYuK,WACtB2K,oBAAsBtV,KAAKsV,yBAG5BxV,OAAO0V,8BAEP1S,cACA0C,cAEA1F,OAAOgD,eAENoD,EAAUlG,KAAKF,OAAOqG,kBAGvBrG,OAAOjD,cAAc,CACzBpF,KAAM,gBACNqS,KAAM,QACK5D,EAAQE,SACRF,EAAQK,eACFvG,KAAKF,OAAO4F,sBAYhC5C,cAGMhD,OAAO8F,sBAAsB5K,SAAS,CAAEya,EAAQrP,KACpDqP,EAAO/U,aAAc,eAAgB0F,GACrCrQ,EAAkB0f,EAAQ,eAAmBrP,EAAIpG,KAAKsV,mBAAuB,aAEzEG,EAAOhgB,UAAU8V,SAAU,UAE9BvW,EAAUygB,EAAQ,WAAYza,SAAS,CAAE0a,EAAQnP,KAChDmP,EAAOhV,aAAc,eAAgB0F,GACrCsP,EAAOhV,aAAc,eAAgB6F,GAErCxQ,EAAkB2f,EAAQ,kBAAsBnP,EAAIvG,KAAKuV,oBAAwB,SAAjF,OAOHpgB,MAAMC,KAAM4K,KAAKF,OAAOoV,wBAAwBrK,YAAa7P,SAAS,CAAE2a,EAAavP,KACpFrQ,EAAkB4f,EAAa,eAAmBvP,EAAIpG,KAAKsV,mBAAuB,aAElFtgB,EAAU2gB,EAAa,qBAAsB3a,SAAS,CAAE4a,EAAarP,KACpExQ,EAAkB6f,EAAa,kBAAsBrP,EAAIvG,KAAKuV,oBAAwB,SAAtF,OAUH/P,eAEOqQ,EAAO7Z,KAAKC,IAAK0D,OAAOmW,WAAYnW,OAAOoW,aAC3C5G,EAAQnT,KAAKE,IAAK2Z,EAAO,EAAG,KAAQA,EACpC3P,EAAUlG,KAAKF,OAAOqG,kBAEvBrG,OAAOkW,gBAAiB,CAC5BjB,SAAU,CACT,SAAU5F,EAAO,IACjB,eAAkBjJ,EAAQE,EAAIpG,KAAKsV,mBAAsB,MACzD,eAAkBpP,EAAQK,EAAIvG,KAAKuV,oBAAuB,OACzDtT,KAAM,OASVgU,gBAGKjW,KAAKF,OAAOM,YAAY2U,SAAW,MAEjCja,QAAS,OAETgF,OAAOkF,mBAAmBvP,UAAUE,OAAQ,iBAK5CmK,OAAOkF,mBAAmBvP,UAAUC,IAAK,yBAE9C2I,YAAY,UACNyB,OAAOkF,mBAAmBvP,UAAUE,OAAQ,2BAC/C,QAGEmK,OAAOkF,mBAAmB1N,YAAa0I,KAAKF,OAAOoV,yBAGxDlgB,EAAUgL,KAAKF,OAAOkF,mBAAoBwH,GAAkBxR,SAASwF,IACpEzK,EAAkByK,EAAO,IAEzBA,EAAM4D,oBAAqB,QAASpE,KAAK6U,gBAAgB,MAI1D7f,EAAUgL,KAAKF,OAAOoV,wBAAyB,qBAAsBla,SAAS+F,IAC7EhL,EAAkBgL,EAAY,GAA9B,SAGIjB,OAAOkW,gBAAiB,CAAEjB,SAAU,WAEnC7O,EAAUlG,KAAKF,OAAOqG,kBAEvBrG,OAAOU,MAAO0F,EAAQE,EAAGF,EAAQK,QACjCzG,OAAOgD,cACPhD,OAAOoW,oBAGPpW,OAAOjD,cAAc,CACzBpF,KAAM,iBACNqS,KAAM,QACK5D,EAAQE,SACRF,EAAQK,eACFvG,KAAKF,OAAO4F,sBAchCyQ,OAAQC,GAEiB,kBAAbA,EACVA,EAAWpW,KAAK8U,WAAa9U,KAAKiW,kBAG7BjB,WAAahV,KAAKiW,aAAejW,KAAK8U,WAW7CE,kBAEQhV,KAAKlF,OASb+Z,eAAgBxQ,MAEXrE,KAAKgV,WAAa,CACrB3Q,EAAMgS,qBAEFrgB,EAAUqO,EAAMjO,YAEbJ,IAAYA,EAAQ0b,SAAS7b,MAAO,cAC1CG,EAAUA,EAAQU,cAGfV,IAAYA,EAAQP,UAAU8V,SAAU,mBAEtC0K,aAEDjgB,EAAQ0b,SAAS7b,MAAO,cAAgB,KACvCuQ,EAAIqC,SAAUzS,EAAQ2K,aAAc,gBAAkB,IACzD4F,EAAIkC,SAAUzS,EAAQ2K,aAAc,gBAAkB,SAElDb,OAAOU,MAAO4F,EAAGG,MCjPZ,MAAM+P,EAEpBzW,YAAaC,QAEPA,OAASA,OAITyW,UAAY,QAGZC,SAAW,QAEXC,kBAAoBzW,KAAKyW,kBAAkBxW,KAAMD,WACjD0W,mBAAqB1W,KAAK0W,mBAAmBzW,KAAMD,MAOzDiF,UAAWC,EAAQC,GAEY,WAA1BD,EAAOyR,qBACLJ,UAAU,mDAAqD,kBAC/DA,UAAU,yCAAqD,wBAG/DA,UAAU,eAAmB,kBAC7BA,UAAU,qBAAmC,sBAC7CA,UAAU,iBAAmB,qBAC7BA,UAAU,iBAAmB,sBAC7BA,UAAU,iBAAmB,mBAC7BA,UAAU,iBAAmB,sBAG9BA,UAAU,wCAAiD,kCAC3DA,UAAU,0CAAiD,gCAC3DA,UAAU,WAAmC,aAC7CA,UAAL,EAAkD,kBAC7CA,UAAL,EAAkD,qBAC7CA,UAAU,UAAmC,iBAOnDtW,OAEC7I,SAAS+M,iBAAkB,UAAWnE,KAAKyW,mBAAmB,GAC9Drf,SAAS+M,iBAAkB,WAAYnE,KAAK0W,oBAAoB,GAOjEE,SAECxf,SAASgN,oBAAqB,UAAWpE,KAAKyW,mBAAmB,GACjErf,SAASgN,oBAAqB,WAAYpE,KAAK0W,oBAAoB,GAQpEG,cAAeC,EAASC,GAEA,iBAAZD,GAAwBA,EAAQ3O,aACrCqO,SAASM,EAAQ3O,SAAW,CAChC4O,SAAUA,EACVld,IAAKid,EAAQjd,IACbmd,YAAaF,EAAQE,kBAIjBR,SAASM,GAAW,CACxBC,SAAUA,EACVld,IAAK,KACLmd,YAAa,MAShBC,iBAAkB9O,UAEVnI,KAAKwW,SAASrO,GAStB+O,WAAY/O,QAENsO,kBAAmB,CAAEtO,YAU3BgP,yBAA0Btd,EAAKrE,QAEzB+gB,UAAU1c,GAAOrE,EAIvB4hB,sBAEQpX,KAAKuW,UAIbc,qBAEQrX,KAAKwW,SASbE,mBAAoBrS,GAGfA,EAAMiT,UAA+B,KAAnBjT,EAAMkT,eACtBzX,OAAO0X,aAUdf,kBAAmBpS,OAEda,EAASlF,KAAKF,OAAOM,eAIe,mBAA7B8E,EAAOuS,oBAAwE,IAApCvS,EAAOuS,kBAAkBpT,UACvE,KAKyB,YAA7Ba,EAAOuS,oBAAoCzX,KAAKF,OAAO4X,mBACnD,MAIJvP,EAAU9D,EAAM8D,QAGhBwP,GAAsB3X,KAAKF,OAAO8X,qBAEjC9X,OAAO+X,YAAaxT,OAGrByT,EAAoB1gB,SAAS2gB,gBAA8D,IAA7C3gB,SAAS2gB,cAAcC,kBACrEC,EAAuB7gB,SAAS2gB,eAAiB3gB,SAAS2gB,cAActX,SAAW,kBAAkBvH,KAAM9B,SAAS2gB,cAActX,SAClIyX,EAAuB9gB,SAAS2gB,eAAiB3gB,SAAS2gB,cAAcxiB,WAAa,iBAAiB2D,KAAM9B,SAAS2gB,cAAcxiB,WAMnI4iB,KAH6E,IAA3D,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAAI1U,QAASY,EAAM8D,UAGtB9D,EAAMiT,UAAYjT,EAAM+T,UAC5D/T,EAAMiT,UAAYjT,EAAM+T,QAAU/T,EAAMgU,SAAWhU,EAAMiU,YAI7DR,GAAqBG,GAAwBC,GAAwBC,EAAiB,WAItFte,EADA0e,EAAiB,CAAC,GAAG,GAAG,IAAI,QAID,iBAApBrT,EAAOsT,aACZ3e,KAAOqL,EAAOsT,SACW,gBAAzBtT,EAAOsT,SAAS3e,IACnB0e,EAAejZ,KAAMmJ,SAAU5O,EAAK,QAKnCmG,KAAKF,OAAO2Y,aAAqD,IAAvCF,EAAe9U,QAAS0E,UAC9C,MAKJuQ,EAA0C,WAA1BxT,EAAOyR,iBAAgC3W,KAAKF,OAAO6Y,wBAA0B3Y,KAAKF,OAAO8Y,oBAEzGC,GAAY,KAGe,iBAApB3T,EAAOsT,aAEZ3e,KAAOqL,EAAOsT,YAGd/P,SAAU5O,EAAK,MAASsO,EAAU,KAEjC3S,EAAQ0P,EAAOsT,SAAU3e,GAGR,mBAAVrE,EACVA,EAAMsjB,MAAO,KAAM,CAAEzU,IAGI,iBAAV7O,GAAsD,mBAAzBwK,KAAKF,OAAQtK,SACpDsK,OAAQtK,GAAQgB,OAGtBqiB,GAAY,MASG,IAAdA,MAEEhf,KAAOmG,KAAKwW,YAGZ/N,SAAU5O,EAAK,MAASsO,EAAU,KAEjC4Q,EAAS/Y,KAAKwW,SAAU3c,GAAMkd,SAGZ,mBAAXgC,EACVA,EAAOD,MAAO,KAAM,CAAEzU,IAGI,iBAAX0U,GAAwD,mBAA1B/Y,KAAKF,OAAQiZ,SACrDjZ,OAAQiZ,GAASviB,OAGvBqiB,GAAY,GAMG,IAAdA,IAGHA,GAAY,EAGI,KAAZ1Q,GAA8B,KAAZA,OAChBrI,OAAOmT,KAAK,CAAC+F,cAAe3U,EAAM+T,SAGnB,KAAZjQ,GAA8B,KAAZA,OACrBrI,OAAOoT,KAAK,CAAC8F,cAAe3U,EAAM+T,SAGnB,KAAZjQ,GAA8B,KAAZA,EACtB9D,EAAMiT,cACJxX,OAAOU,MAAO,IAEVR,KAAKF,OAAOiV,SAASC,YAAc0D,OACvC5Y,OAAOmT,KAAK,CAAC+F,cAAe3U,EAAM+T,cAGlCtY,OAAOmZ,KAAK,CAACD,cAAe3U,EAAM+T,SAIpB,KAAZjQ,GAA8B,KAAZA,EACtB9D,EAAMiT,cACJxX,OAAOU,MAAOR,KAAKF,OAAO8F,sBAAsB3O,OAAS,IAErD+I,KAAKF,OAAOiV,SAASC,YAAc0D,OACvC5Y,OAAOoT,KAAK,CAAC8F,cAAe3U,EAAM+T,cAGlCtY,OAAOoZ,MAAM,CAACF,cAAe3U,EAAM+T,SAIrB,KAAZjQ,GAA8B,KAAZA,EACtB9D,EAAMiT,cACJxX,OAAOU,WAAOd,EAAW,IAErBM,KAAKF,OAAOiV,SAASC,YAAc0D,OACvC5Y,OAAOmT,KAAK,CAAC+F,cAAe3U,EAAM+T,cAGlCtY,OAAOqZ,GAAG,CAACH,cAAe3U,EAAM+T,SAIlB,KAAZjQ,GAA8B,KAAZA,EACtB9D,EAAMiT,cACJxX,OAAOU,WAAOd,EAAW0Z,OAAOC,YAE5BrZ,KAAKF,OAAOiV,SAASC,YAAc0D,OACvC5Y,OAAOoT,KAAK,CAAC8F,cAAe3U,EAAM+T,cAGlCtY,OAAOwZ,KAAK,CAACN,cAAe3U,EAAM+T,SAIpB,KAAZjQ,OACHrI,OAAOU,MAAO,GAGC,KAAZ2H,OACHrI,OAAOU,MAAOR,KAAKF,OAAO8F,sBAAsB3O,OAAS,GAG1C,KAAZkR,GACJnI,KAAKF,OAAOiV,SAASC,iBACnBlV,OAAOiV,SAASkB,aAElB5R,EAAMiT,cACJxX,OAAOmT,KAAK,CAAC+F,cAAe3U,EAAM+T,cAGlCtY,OAAOoT,KAAK,CAAC8F,cAAe3U,EAAM+T,UAIpB,KAAZjQ,GAA8B,KAAZA,GAA8B,KAAZA,GAA8B,KAAZA,GAA8B,MAAZA,GAA+B,MAAZA,OAC9FrI,OAAOyZ,cAGQ,KAAZpR,EZvNmBnS,SAK1BwjB,GAHJxjB,EAAUA,GAAWoB,SAASqiB,iBAGFC,mBACvB1jB,EAAQ2jB,yBACR3jB,EAAQ4jB,yBACR5jB,EAAQ6jB,sBACR7jB,EAAQ8jB,oBAETN,GACHA,EAAcV,MAAO9iB,IY4MnB+jB,CAAiB7U,EAAO8U,SAAWha,KAAKF,OAAOma,qBAAuB7iB,SAASqiB,iBAG3D,KAAZtR,EACHjD,EAAOgV,yBACNpa,OAAOqa,gBAAiBxC,GAIV,KAAZxP,EACHjD,EAAOkV,kBACNta,OAAOua,oBAIbxB,GAAY,GAOVA,EACHxU,EAAMgS,gBAAkBhS,EAAMgS,iBAGV,KAAZlO,GAA8B,KAAZA,KACS,IAA/BnI,KAAKF,OAAOwa,qBACVxa,OAAOiV,SAASoB,SAGtB9R,EAAMgS,gBAAkBhS,EAAMgS,uBAK1BvW,OAAOoW,gBCvYC,MAAMqE,EAMpB1a,YAAaC,eAFiB,2IAIxBA,OAASA,OAGT0a,gBAAkB,OAElBC,sBAAwB,OAExBC,mBAAqB1a,KAAK0a,mBAAmBza,KAAMD,MAIzDC,OAECN,OAAOwE,iBAAkB,aAAcnE,KAAK0a,oBAAoB,GAIjE9D,SAECjX,OAAOyE,oBAAqB,aAAcpE,KAAK0a,oBAAoB,GAYpElT,mBAAoBmT,EAAKhb,OAAO3H,SAAS2iB,KAAM1b,EAAQ,QAGlD2b,EAAOD,EAAKziB,QAAS,QAAS,IAC9B2iB,EAAOD,EAAKziB,MAAO,QAIlB,WAAWe,KAAM2hB,EAAK,MAAQD,EAAK3jB,OAsBnC,OACEiO,EAASlF,KAAKF,OAAOM,gBAM1BxF,EALGkgB,EAAgB5V,EAAO6V,mBAAqB9b,EAAQwI,cAAgB,EAAI,EAGxErB,EAAMqC,SAAUoS,EAAK,GAAI,IAAOC,GAAmB,EACtDvU,EAAMkC,SAAUoS,EAAK,GAAI,IAAOC,GAAmB,SAGhD5V,EAAOwP,gBACV9Z,EAAI6N,SAAUoS,EAAK,GAAI,IACnBlU,MAAO/L,KACVA,OAAI8E,IAIC,CAAE0G,IAAGG,IAAG3L,KAtCiC,KAC5C5E,EAEA4E,EAGA,aAAa1B,KAAM0hB,KACtBhgB,EAAI6N,SAAUmS,EAAKziB,MAAO,KAAME,MAAO,IACvCuC,EAAI+L,MAAM/L,QAAK8E,EAAY9E,EAC3BggB,EAAOA,EAAKziB,MAAO,KAAMC,aAKzBpC,EAAUoB,SAAS4jB,eAAgBC,mBAAoBL,IAExD,MAAQM,OAEJllB,QACI,IAAKgK,KAAKF,OAAOqG,WAAYnQ,GAAW4E,YAuB1C,KAORugB,gBAEOC,EAAiBpb,KAAKF,OAAOqG,aAC7BkV,EAAarb,KAAKwH,qBAEpB6T,EACGA,EAAWjV,IAAMgV,EAAehV,GAAKiV,EAAW9U,IAAM6U,EAAe7U,QAAsB7G,IAAjB2b,EAAWzgB,QACpFkF,OAAOU,MAAO6a,EAAWjV,EAAGiV,EAAW9U,EAAG8U,EAAWzgB,QAMvDkF,OAAOU,MAAO4a,EAAehV,GAAK,EAAGgV,EAAe7U,GAAK,GAYhEoO,SAAUhN,OAELzC,EAASlF,KAAKF,OAAOM,YACrBoK,EAAexK,KAAKF,OAAO4F,qBAG/BtH,aAAc4B,KAAKwa,iBAGE,iBAAV7S,OACL6S,gBAAkBnc,WAAY2B,KAAK2U,SAAUhN,QAE9C,GAAI6C,EAAe,KAEnBmQ,EAAO3a,KAAKwG,UAIZtB,EAAOoW,QACV3b,OAAO3H,SAAS2iB,KAAOA,EAIfzV,EAAOyV,OAEF,MAATA,OACEY,sBAAuB5b,OAAO3H,SAASwjB,SAAW7b,OAAO3H,SAASC,aAGlEsjB,sBAAuB,IAAMZ,KAkBtCc,aAAcha,GAEb9B,OAAO2b,QAAQG,aAAc,KAAM,KAAMha,QACpCgZ,sBAAwBiB,KAAKC,MAInCJ,sBAAuB9Z,GAEtBrD,aAAc4B,KAAK4b,qBAEfF,KAAKC,MAAQ3b,KAAKya,sBAAwBza,KAAK6b,iCAC7CJ,aAAcha,QAGdma,oBAAsBvd,YAAY,IAAM2B,KAAKyb,aAAcha,IAAOzB,KAAK6b,6BAU9ErV,QAAShG,OAEJiB,EAAM,IAGNqa,EAAItb,GAASR,KAAKF,OAAO4F,kBACzB6I,EAAKuN,EAAIA,EAAEnb,aAAc,MAAS,KAClC4N,IACHA,EAAKwN,mBAAoBxN,QAGtBgD,EAAQvR,KAAKF,OAAOqG,WAAY3F,MAC/BR,KAAKF,OAAOM,YAAYsU,gBAC5BnD,EAAM3W,OAAI8E,GAKO,iBAAP6O,GAAmBA,EAAGtX,OAChCwK,EAAM,IAAM8M,EAIRgD,EAAM3W,GAAK,IAAI6G,GAAO,IAAM8P,EAAM3W,OAGlC,KACAkgB,EAAgB9a,KAAKF,OAAOM,YAAY2a,kBAAoB,EAAI,GAChExJ,EAAMnL,EAAI,GAAKmL,EAAMhL,EAAI,GAAKgL,EAAM3W,GAAK,KAAI6G,GAAO8P,EAAMnL,EAAI0U,IAC9DvJ,EAAMhL,EAAI,GAAKgL,EAAM3W,GAAK,KAAI6G,GAAO,KAAO8P,EAAMhL,EAAIuU,IACtDvJ,EAAM3W,GAAK,IAAI6G,GAAO,IAAM8P,EAAM3W,UAGhC6G,EASRiZ,mBAAoBrW,QAEd8W,WCjOQ,MAAMa,EAEpBnc,YAAaC,QAEPA,OAASA,OAETmc,sBAAwBjc,KAAKic,sBAAsBhc,KAAMD,WACzDkc,uBAAyBlc,KAAKkc,uBAAuBjc,KAAMD,WAC3Dmc,oBAAsBnc,KAAKmc,oBAAoBlc,KAAMD,WACrDoc,sBAAwBpc,KAAKoc,sBAAsBnc,KAAMD,WACzDqc,sBAAwBrc,KAAKqc,sBAAsBpc,KAAMD,WACzDsc,sBAAwBtc,KAAKsc,sBAAsBrc,KAAMD,MAI/D+E,eAEO4F,EAAM3K,KAAKF,OAAOM,YAAYuK,IAC9B4R,EAAgBvc,KAAKF,OAAOkF,wBAE7BhP,QAAUoB,SAASC,cAAe,cAClCrB,QAAQT,UAAY,gBACpBS,QAAQe,UACX,6CAA6C4T,EAAM,aAAe,mHACrBA,EAAM,iBAAmB,mRAInE7K,OAAOkF,mBAAmB1N,YAAa0I,KAAKhK,cAG5CwmB,aAAexnB,EAAUunB,EAAe,uBACxCE,cAAgBznB,EAAUunB,EAAe,wBACzCG,WAAa1nB,EAAUunB,EAAe,qBACtCI,aAAe3nB,EAAUunB,EAAe,uBACxCK,aAAe5nB,EAAUunB,EAAe,uBACxCM,aAAe7nB,EAAUunB,EAAe,uBAGxCO,mBAAqB9c,KAAKhK,QAAQ6M,cAAe,wBACjDka,kBAAoB/c,KAAKhK,QAAQ6M,cAAe,uBAChDma,kBAAoBhd,KAAKhK,QAAQ6M,cAAe,kBAOtDoC,UAAWC,EAAQC,QAEbnP,QAAQE,MAAMuG,QAAUyI,EAAOhB,SAAW,QAAU,YAEpDlO,QAAQ0K,aAAc,uBAAwBwE,EAAO+X,qBACrDjnB,QAAQ0K,aAAc,4BAA6BwE,EAAOgY,oBAIhEjd,WAIKkd,EAAgB,CAAE,aAAc,SAIhC9jB,IACH8jB,EAAgB,CAAE,eAGnBA,EAAcniB,SAASoiB,SACjBZ,aAAaxhB,SAAS/F,GAAMA,EAAGkP,iBAAkBiZ,EAAWpd,KAAKic,uBAAuB,UACxFQ,cAAczhB,SAAS/F,GAAMA,EAAGkP,iBAAkBiZ,EAAWpd,KAAKkc,wBAAwB,UAC1FQ,WAAW1hB,SAAS/F,GAAMA,EAAGkP,iBAAkBiZ,EAAWpd,KAAKmc,qBAAqB,UACpFQ,aAAa3hB,SAAS/F,GAAMA,EAAGkP,iBAAkBiZ,EAAWpd,KAAKoc,uBAAuB,UACxFQ,aAAa5hB,SAAS/F,GAAMA,EAAGkP,iBAAkBiZ,EAAWpd,KAAKqc,uBAAuB,UACxFQ,aAAa7hB,SAAS/F,GAAMA,EAAGkP,iBAAkBiZ,EAAWpd,KAAKsc,uBAAuB,QAK/F1F,UAEG,aAAc,SAAU5b,SAASoiB,SAC7BZ,aAAaxhB,SAAS/F,GAAMA,EAAGmP,oBAAqBgZ,EAAWpd,KAAKic,uBAAuB,UAC3FQ,cAAczhB,SAAS/F,GAAMA,EAAGmP,oBAAqBgZ,EAAWpd,KAAKkc,wBAAwB,UAC7FQ,WAAW1hB,SAAS/F,GAAMA,EAAGmP,oBAAqBgZ,EAAWpd,KAAKmc,qBAAqB,UACvFQ,aAAa3hB,SAAS/F,GAAMA,EAAGmP,oBAAqBgZ,EAAWpd,KAAKoc,uBAAuB,UAC3FQ,aAAa5hB,SAAS/F,GAAMA,EAAGmP,oBAAqBgZ,EAAWpd,KAAKqc,uBAAuB,UAC3FQ,aAAa7hB,SAAS/F,GAAMA,EAAGmP,oBAAqBgZ,EAAWpd,KAAKsc,uBAAuB,QAQlG9W,aAEK6X,EAASrd,KAAKF,OAAOiT,sBAGrB/S,KAAKwc,gBAAiBxc,KAAKyc,iBAAkBzc,KAAK0c,cAAe1c,KAAK2c,gBAAiB3c,KAAK4c,gBAAiB5c,KAAK6c,cAAc7hB,SAAS7D,IAC5IA,EAAK1B,UAAUE,OAAQ,UAAW,cAGlCwB,EAAKuJ,aAAc,WAAY,eAI5B2c,EAAOpE,MAAOjZ,KAAKwc,aAAaxhB,SAAS/F,IAAQA,EAAGQ,UAAUC,IAAK,WAAaT,EAAG2L,gBAAiB,eACpGyc,EAAOnE,OAAQlZ,KAAKyc,cAAczhB,SAAS/F,IAAQA,EAAGQ,UAAUC,IAAK,WAAaT,EAAG2L,gBAAiB,eACtGyc,EAAOlE,IAAKnZ,KAAK0c,WAAW1hB,SAAS/F,IAAQA,EAAGQ,UAAUC,IAAK,WAAaT,EAAG2L,gBAAiB,eAChGyc,EAAO/D,MAAOtZ,KAAK2c,aAAa3hB,SAAS/F,IAAQA,EAAGQ,UAAUC,IAAK,WAAaT,EAAG2L,gBAAiB,gBAGpGyc,EAAOpE,MAAQoE,EAAOlE,KAAKnZ,KAAK4c,aAAa5hB,SAAS/F,IAAQA,EAAGQ,UAAUC,IAAK,WAAaT,EAAG2L,gBAAiB,gBACjHyc,EAAOnE,OAASmE,EAAO/D,OAAOtZ,KAAK6c,aAAa7hB,SAAS/F,IAAQA,EAAGQ,UAAUC,IAAK,WAAaT,EAAG2L,gBAAiB,mBAGpH4J,EAAexK,KAAKF,OAAO4F,qBAC3B8E,EAAe,KAEd8S,EAAkBtd,KAAKF,OAAO8S,UAAUG,kBAGxCuK,EAAgBrK,MAAOjT,KAAK4c,aAAa5hB,SAAS/F,IAAQA,EAAGQ,UAAUC,IAAK,aAAc,WAAaT,EAAG2L,gBAAiB,eAC3H0c,EAAgBpK,MAAOlT,KAAK6c,aAAa7hB,SAAS/F,IAAQA,EAAGQ,UAAUC,IAAK,aAAc,WAAaT,EAAG2L,gBAAiB,eAI3HZ,KAAKF,OAAOwG,gBAAiBkE,IAC5B8S,EAAgBrK,MAAOjT,KAAK0c,WAAW1hB,SAAS/F,IAAQA,EAAGQ,UAAUC,IAAK,aAAc,WAAaT,EAAG2L,gBAAiB,eACzH0c,EAAgBpK,MAAOlT,KAAK2c,aAAa3hB,SAAS/F,IAAQA,EAAGQ,UAAUC,IAAK,aAAc,WAAaT,EAAG2L,gBAAiB,iBAG3H0c,EAAgBrK,MAAOjT,KAAKwc,aAAaxhB,SAAS/F,IAAQA,EAAGQ,UAAUC,IAAK,aAAc,WAAaT,EAAG2L,gBAAiB,eAC3H0c,EAAgBpK,MAAOlT,KAAKyc,cAAczhB,SAAS/F,IAAQA,EAAGQ,UAAUC,IAAK,aAAc,WAAaT,EAAG2L,gBAAiB,mBAK9HZ,KAAKF,OAAOM,YAAYmd,iBAAmB,KAE1CrX,EAAUlG,KAAKF,OAAOqG,cAIrBnG,KAAKF,OAAO0d,0BAA4BH,EAAO/D,UAC9C0D,kBAAkBvnB,UAAUC,IAAK,mBAGjCsnB,kBAAkBvnB,UAAUE,OAAQ,aAErCqK,KAAKF,OAAOM,YAAYuK,KAEtB3K,KAAKF,OAAO2d,4BAA8BJ,EAAOpE,MAAsB,IAAd/S,EAAQK,OAChEwW,kBAAkBtnB,UAAUC,IAAK,kBAGjCqnB,kBAAkBtnB,UAAUE,OAAQ,cAKrCqK,KAAKF,OAAO2d,4BAA8BJ,EAAOnE,OAAuB,IAAdhT,EAAQK,OACjEuW,mBAAmBrnB,UAAUC,IAAK,kBAGlConB,mBAAmBrnB,UAAUE,OAAQ,eAO/CyH,eAEMwZ,cACA5gB,QAAQL,SAOdsmB,sBAAuB5X,GAEtBA,EAAMgS,sBACDvW,OAAO+X,cAEmC,WAA3C7X,KAAKF,OAAOM,YAAYuW,oBACtB7W,OAAOmT,YAGPnT,OAAOmZ,OAKdiD,uBAAwB7X,GAEvBA,EAAMgS,sBACDvW,OAAO+X,cAEmC,WAA3C7X,KAAKF,OAAOM,YAAYuW,oBACtB7W,OAAOoT,YAGPpT,OAAOoZ,QAKdiD,oBAAqB9X,GAEpBA,EAAMgS,sBACDvW,OAAO+X,mBAEP/X,OAAOqZ,KAIbiD,sBAAuB/X,GAEtBA,EAAMgS,sBACDvW,OAAO+X,mBAEP/X,OAAOwZ,OAIb+C,sBAAuBhY,GAEtBA,EAAMgS,sBACDvW,OAAO+X,mBAEP/X,OAAOmT,OAIbqJ,sBAAuBjY,GAEtBA,EAAMgS,sBACDvW,OAAO+X,mBAEP/X,OAAOoT,QCjQC,MAAMwK,EAEpB7d,YAAaC,QAEPA,OAASA,OAET6d,kBAAoB3d,KAAK2d,kBAAkB1d,KAAMD,MAIvD+E,cAEM/O,QAAUoB,SAASC,cAAe,YAClCrB,QAAQT,UAAY,gBACpBuK,OAAOkF,mBAAmB1N,YAAa0I,KAAKhK,cAE5C4nB,IAAMxmB,SAASC,cAAe,aAC9BrB,QAAQsB,YAAa0I,KAAK4d,KAOhC3Y,UAAWC,EAAQC,QAEbnP,QAAQE,MAAMuG,QAAUyI,EAAOuP,SAAW,QAAU,OAI1DxU,OAEKD,KAAKF,OAAOM,YAAYqU,UAAYzU,KAAKhK,cACvCA,QAAQmO,iBAAkB,QAASnE,KAAK2d,mBAAmB,GAKlE/G,SAEM5W,KAAKF,OAAOM,YAAYqU,UAAYzU,KAAKhK,cACxCA,QAAQoO,oBAAqB,QAASpE,KAAK2d,mBAAmB,GAQrEnY,YAGKxF,KAAKF,OAAOM,YAAYqU,UAAYzU,KAAK4d,IAAM,KAE9CzO,EAAQnP,KAAKF,OAAO+d,cAGpB7d,KAAKF,OAAOmG,iBAAmB,IAClCkJ,EAAQ,QAGJyO,IAAI1nB,MAAMD,UAAY,UAAWkZ,EAAO,KAM/C2O,qBAEQ9d,KAAKF,OAAOkF,mBAAmBgH,YAYvC2R,kBAAmBtZ,QAEbvE,OAAO+X,YAAaxT,GAEzBA,EAAMgS,qBAEF0H,EAAS/d,KAAKF,OAAOgI,YACrBkW,EAAcD,EAAO9mB,OACrBgnB,EAAajiB,KAAKkiB,MAAS7Z,EAAM8Z,QAAUne,KAAK8d,cAAkBE,GAElEhe,KAAKF,OAAOM,YAAYuK,MAC3BsT,EAAaD,EAAcC,OAGxBG,EAAgBpe,KAAKF,OAAOqG,WAAW4X,EAAOE,SAC7Cne,OAAOU,MAAO4d,EAAchY,EAAGgY,EAAc7X,GAInDnJ,eAEMpH,QAAQL,UCtGA,MAAM0oB,EAEpBxe,YAAaC,QAEPA,OAASA,OAGTwe,mBAAqB,OAGrBC,cAAe,OAGfC,sBAAwB,OAExBC,uBAAyBze,KAAKye,uBAAuBxe,KAAMD,WAC3D0e,sBAAwB1e,KAAK0e,sBAAsBze,KAAMD,MAO/DiF,UAAWC,EAAQC,GAEdD,EAAOyZ,YACVvnB,SAAS+M,iBAAkB,iBAAkBnE,KAAK0e,uBAAuB,GACzEtnB,SAAS+M,iBAAkB,aAAcnE,KAAK0e,uBAAuB,KAGrEtnB,SAASgN,oBAAqB,iBAAkBpE,KAAK0e,uBAAuB,GAC5EtnB,SAASgN,oBAAqB,aAAcpE,KAAK0e,uBAAuB,IAIrExZ,EAAO0Z,oBACVxnB,SAAS+M,iBAAkB,YAAanE,KAAKye,wBAAwB,GACrErnB,SAAS+M,iBAAkB,YAAanE,KAAKye,wBAAwB,UAGhEI,aAELznB,SAASgN,oBAAqB,YAAapE,KAAKye,wBAAwB,GACxErnB,SAASgN,oBAAqB,YAAapE,KAAKye,wBAAwB,IAS1EI,aAEK7e,KAAKue,oBACHA,cAAe,OACfze,OAAOkF,mBAAmB9O,MAAM4oB,OAAS,IAShDC,cAE2B,IAAtB/e,KAAKue,oBACHA,cAAe,OACfze,OAAOkF,mBAAmB9O,MAAM4oB,OAAS,QAKhD1hB,eAEMyhB,aAELznB,SAASgN,oBAAqB,iBAAkBpE,KAAK0e,uBAAuB,GAC5EtnB,SAASgN,oBAAqB,aAAcpE,KAAK0e,uBAAuB,GACxEtnB,SAASgN,oBAAqB,YAAapE,KAAKye,wBAAwB,GACxErnB,SAASgN,oBAAqB,YAAapE,KAAKye,wBAAwB,GAUzEA,uBAAwBpa,QAElBwa,aAELzgB,aAAc4B,KAAKwe,4BAEdA,sBAAwBngB,WAAY2B,KAAK+e,WAAW9e,KAAMD,MAAQA,KAAKF,OAAOM,YAAY4e,gBAUhGN,sBAAuBra,MAElBqX,KAAKC,MAAQ3b,KAAKse,mBAAqB,IAAO,MAE5CA,mBAAqB5C,KAAKC,UAE3BrM,EAAQjL,EAAMtH,SAAWsH,EAAM4a,WAC/B3P,EAAQ,OACNxP,OAAOoT,OAEJ5D,EAAQ,QACXxP,OAAOmT,SClHT,MAAMiM,EAAa,CAAEzd,EAAKsV,WAE1BoI,EAAS/nB,SAASC,cAAe,UACvC8nB,EAAO1nB,KAAO,kBACd0nB,EAAOC,OAAQ,EACfD,EAAOE,OAAQ,EACfF,EAAO3b,IAAM/B,EAEW,mBAAbsV,IAGVoI,EAAOG,OAASH,EAAOI,mBAAqBlb,KACxB,SAAfA,EAAM5M,MAAmB,kBAAkByB,KAAMimB,EAAOrb,eAG3Dqb,EAAOG,OAASH,EAAOI,mBAAqBJ,EAAOK,QAAU,KAE7DzI,MAMFoI,EAAOK,QAAUC,IAGhBN,EAAOG,OAASH,EAAOI,mBAAqBJ,EAAOK,QAAU,KAE7DzI,EAAU,IAAI2I,MAAO,0BAA4BP,EAAO3b,IAAM,KAAOic,GAArE,SAOI5nB,EAAOT,SAASyL,cAAe,QACrChL,EAAK8nB,aAAcR,EAAQtnB,EAAK+nB,YCtClB,MAAMC,EAEpBhgB,YAAaigB,QAEPhgB,OAASggB,OAGTC,MAAQ,YAGRC,kBAAoB,QAEpBC,kBAAoB,GAiB1B1f,KAAM2f,EAASC,eAETJ,MAAQ,UAEbG,EAAQllB,QAASgF,KAAKogB,eAAengB,KAAMD,OAEpC,IAAIqgB,SAASC,QAEfC,EAAU,GACbC,EAAgB,KAEjBL,EAAanlB,SAAS8gB,IAEhBA,EAAE2E,YAAa3E,EAAE2E,cACjB3E,EAAEsD,WACAa,kBAAkB3gB,KAAMwc,GAG7ByE,EAAQjhB,KAAMwc,OAKbyE,EAAQtpB,OAAS,CACpBupB,EAAgBD,EAAQtpB,aAElBypB,EAAwB5E,IACzBA,GAA2B,mBAAfA,EAAE/E,UAA0B+E,EAAE/E,WAEtB,KAAlByJ,QACAG,cAAcC,KAAMN,IAK3BC,EAAQvlB,SAAS8gB,IACI,iBAATA,EAAEvN,SACP6R,eAAgBtE,GACrB4E,EAAsB5E,IAEG,iBAAVA,EAAEtY,IACjB0b,EAAYpD,EAAEtY,KAAK,IAAMkd,EAAqB5E,MAG9C+E,QAAQC,KAAM,6BAA8BhF,GAC5C4E,kBAKGC,cAAcC,KAAMN,MAW5BK,qBAEQ,IAAIN,SAASC,QAEfS,EAAeznB,OAAO0nB,OAAQhhB,KAAKggB,mBACnCiB,EAAsBF,EAAa9pB,UAGX,IAAxBgqB,OACEC,YAAYN,KAAMN,OAGnB,KAEAa,EAEAC,EAAuB,KACI,KAAxBH,OACAC,YAAYN,KAAMN,GAGvBa,KAIEpsB,EAAI,EAGRosB,EAAiB,SAEZE,EAASN,EAAahsB,QAGC,mBAAhBssB,EAAO9hB,KAAsB,KACnCyE,EAAUqd,EAAO9hB,KAAMS,KAAKF,QAG5BkE,GAAmC,mBAAjBA,EAAQ4c,KAC7B5c,EAAQ4c,KAAMQ,GAGdA,SAIDA,KAKFD,QAWHD,wBAEMnB,MAAQ,SAET/f,KAAKigB,kBAAkBhpB,aACrBgpB,kBAAkBjlB,SAAS8gB,IAC/BoD,EAAYpD,EAAEtY,IAAKsY,EAAE/E,SAArB,IAIKsJ,QAAQC,UAWhBF,eAAgBiB,GAIU,IAArB1nB,UAAU1C,QAAwC,iBAAjB0C,UAAU,IAC9C0nB,EAAS1nB,UAAU,IACZ4U,GAAK5U,UAAU,GAII,mBAAX0nB,IACfA,EAASA,SAGN9S,EAAK8S,EAAO9S,GAEE,iBAAPA,EACVsS,QAAQC,KAAM,mDAAqDO,QAE5B3hB,IAA/BM,KAAKggB,kBAAkBzR,SAC1ByR,kBAAkBzR,GAAM8S,EAIV,WAAfrhB,KAAK+f,OAA6C,mBAAhBsB,EAAO9hB,MAC5C8hB,EAAO9hB,KAAMS,KAAKF,SAInB+gB,QAAQC,KAAM,eAAgBvS,EAAI,wCAUpC+S,UAAW/S,WAEDvO,KAAKggB,kBAAkBzR,GAUjCgT,UAAWhT,UAEHvO,KAAKggB,kBAAkBzR,GAI/BiT,8BAEQxhB,KAAKggB,kBAIb5iB,UAEC9D,OAAO0nB,OAAQhhB,KAAKggB,mBAAoBhlB,SAASqmB,IAClB,mBAAnBA,EAAOjkB,SACjBikB,EAAOjkB,kBAIJ4iB,kBAAoB,QACpBC,kBAAoB,ICnPZ,MAAMwB,EAEpB5hB,YAAaC,QAEPA,OAASA,yBAURoF,EAASlF,KAAKF,OAAOM,YACrB2d,EAAS/oB,EAAUgL,KAAKF,OAAOkF,mBAAoBwH,GAGnDkV,EAAoBxc,EAAOG,aAAe,aAAanM,KAAMgM,EAAOK,iBAEpE6P,EAAYpV,KAAKF,OAAOuV,qBAAsB1V,OAAOmW,WAAYnW,OAAOoW,aAGxE4L,EAAY3lB,KAAKkiB,MAAO9I,EAAU3S,OAAU,EAAIyC,EAAOiQ,SAC5DyM,EAAa5lB,KAAKkiB,MAAO9I,EAAU5c,QAAW,EAAI0M,EAAOiQ,SAGpDpJ,EAAaqJ,EAAU3S,MAC5B4J,EAAc+I,EAAU5c,aAEnB,IAAI6nB,QAAS5lB,uBAGnBlD,EAAkB,cAAeoqB,EAAW,MAAOC,EAAY,qBAG/DrqB,EAAkB,iFAAkFwU,EAAY,kBAAmBM,EAAa,OAEhJjV,SAASqiB,gBAAgBhkB,UAAUC,IAAK,aACxC0B,SAASyqB,KAAK3rB,MAAMuM,MAAQkf,EAAY,KACxCvqB,SAASyqB,KAAK3rB,MAAMsC,OAASopB,EAAa,WAEpCE,EAAkB1qB,SAASyL,cAAe,wBAC5Ckf,KACAD,EAAkB,OACfE,EAAiBriB,OAAOpD,iBAAkBulB,GAC5CE,GAAkBA,EAAejhB,aACpCghB,EAAyBC,EAAejhB,kBAKpC,IAAIsf,QAAS5lB,4BACdqF,OAAOmiB,oBAAqBlW,EAAYM,SAGvC,IAAIgU,QAAS5lB,6BAEbynB,EAAqBnE,EAAO3e,KAAKoB,GAASA,EAAM2hB,eAEhDC,EAAQ,GACRC,EAAgBtE,EAAO,GAAGrnB,eAC5B2O,EAAc,EAGlB0Y,EAAO/iB,SAAS,SAAUwF,EAAO+Q,OAIY,IAAxC/Q,EAAM/K,UAAU8V,SAAU,SAAsB,KAE/C0N,GAAS0I,EAAY5V,GAAe,EACpCuW,GAAQV,EAAavV,GAAgB,QAEnCkW,EAAgBL,EAAoB3Q,OACtCiR,EAAgBxmB,KAAKE,IAAKF,KAAKymB,KAAMF,EAAgBX,GAAc,GAGvEY,EAAgBxmB,KAAKC,IAAKumB,EAAetd,EAAOwd,sBAG1B,IAAlBF,GAAuBtd,EAAOyL,QAAUnQ,EAAM/K,UAAU8V,SAAU,aACrE+W,EAAMtmB,KAAKE,KAAO0lB,EAAaW,GAAkB,EAAG,UAK/CI,EAAOvrB,SAASC,cAAe,UACrC+qB,EAAM9iB,KAAMqjB,GAEZA,EAAKptB,UAAY,WACjBotB,EAAKzsB,MAAMsC,QAAaopB,EAAa1c,EAAO0d,qBAAwBJ,EAAkB,KAIlFT,IACHY,EAAKzsB,MAAM6K,WAAaghB,GAGzBY,EAAKrrB,YAAakJ,GAGlBA,EAAMtK,MAAM+iB,KAAOA,EAAO,KAC1BzY,EAAMtK,MAAMosB,IAAMA,EAAM,KACxB9hB,EAAMtK,MAAMuM,MAAQsJ,EAAa,UAE5BjM,OAAOmL,aAAanI,OAAQtC,GAE7BA,EAAMQ,wBACT2hB,EAAKhD,aAAcnf,EAAMQ,uBAAwBR,GAI9C0E,EAAO2d,UAAY,OAGhBC,EAAQ9iB,KAAKF,OAAOijB,cAAeviB,MACrCsiB,EAAQ,OAELE,EAAe,EACfC,EAA0C,iBAArB/d,EAAO2d,UAAyB3d,EAAO2d,UAAY,SACxEK,EAAe9rB,SAASC,cAAe,OAC7C6rB,EAAaztB,UAAUC,IAAK,iBAC5BwtB,EAAaztB,UAAUC,IAAK,qBAC5BwtB,EAAaxiB,aAAc,cAAeuiB,GAC1CC,EAAansB,UAAY+rB,EAEL,kBAAhBG,EACHb,EAAM9iB,KAAM4jB,IAGZA,EAAahtB,MAAM+iB,KAAO+J,EAAe,KACzCE,EAAahtB,MAAMitB,OAASH,EAAe,KAC3CE,EAAahtB,MAAMuM,MAAUkf,EAAyB,EAAbqB,EAAmB,KAC5DL,EAAKrrB,YAAa4rB,QAQjBxB,EAAoB,OACjB0B,EAAgBhsB,SAASC,cAAe,OAC9C+rB,EAAc3tB,UAAUC,IAAK,gBAC7B0tB,EAAc3tB,UAAUC,IAAK,oBAC7B0tB,EAAcrsB,UAAYsO,IAC1Bsd,EAAKrrB,YAAa8rB,MAIfle,EAAOme,qBAAuB,OAK3BC,EAAiBtjB,KAAKF,OAAO8S,UAAUO,KAAMwP,EAAKttB,iBAAkB,cAAe,OAErFkuB,EAEJD,EAAetoB,SAAS,SAAU4X,EAAWrB,GAGxCgS,GACHA,EAAqBvoB,SAAS,SAAUwY,GACvCA,EAAS/d,UAAUE,OAAQ,uBAK7Bid,EAAU5X,SAAS,SAAUwY,GAC5BA,EAAS/d,UAAUC,IAAK,UAAW,sBACjCsK,YAGGwjB,EAAab,EAAKc,WAAW,MAG/B/B,EAAoB,OAEjBgC,EAAiBnS,EAAQ,EADTiS,EAAW3gB,cAAe,qBAElC9L,WAAa,IAAM2sB,EAGlCtB,EAAM9iB,KAAMkkB,GAEZD,EAAuB3Q,IAErB5S,MAGHsjB,EAAetoB,SAAS,SAAU4X,GACjCA,EAAU5X,SAAS,SAAUwY,GAC5BA,EAAS/d,UAAUE,OAAQ,UAAW,+BAOxCX,EAAU2tB,EAAM,4BAA6B3nB,SAAS,SAAUwY,GAC/DA,EAAS/d,UAAUC,IAAK,iBAMzBsK,YAEG,IAAIqgB,QAAS5lB,uBAEnB2nB,EAAMpnB,SAAS2nB,GAAQN,EAAc/qB,YAAaqrB,UAG7C7iB,OAAOmL,aAAanI,OAAQ9C,KAAKF,OAAOyD,yBAGxCzD,OAAOjD,cAAc,CAAEpF,KAAM,cAOnC6N,sBAEU,cAAgBpM,KAAMyG,OAAO3H,SAASC,SC/NlC,MAAM0rB,EAEpB9jB,YAAaC,QAEPA,OAASA,OAGT8jB,YAAc,OACdC,YAAc,OACdC,gBAAkB,OAClBC,eAAgB,OAEhBC,cAAgBhkB,KAAKgkB,cAAc/jB,KAAMD,WACzCikB,cAAgBjkB,KAAKikB,cAAchkB,KAAMD,WACzCkkB,YAAclkB,KAAKkkB,YAAYjkB,KAAMD,WACrCmkB,aAAenkB,KAAKmkB,aAAalkB,KAAMD,WACvCokB,YAAcpkB,KAAKokB,YAAYnkB,KAAMD,WACrCqkB,WAAarkB,KAAKqkB,WAAWpkB,KAAMD,MAOzCC,WAEKsc,EAAgBvc,KAAKF,OAAOkF,mBAE5B,kBAAmBrF,QAEtB4c,EAAcpY,iBAAkB,cAAenE,KAAKgkB,eAAe,GACnEzH,EAAcpY,iBAAkB,cAAenE,KAAKikB,eAAe,GACnE1H,EAAcpY,iBAAkB,YAAanE,KAAKkkB,aAAa,IAEvDvkB,OAAO5G,UAAUurB,kBAEzB/H,EAAcpY,iBAAkB,gBAAiBnE,KAAKgkB,eAAe,GACrEzH,EAAcpY,iBAAkB,gBAAiBnE,KAAKikB,eAAe,GACrE1H,EAAcpY,iBAAkB,cAAenE,KAAKkkB,aAAa,KAIjE3H,EAAcpY,iBAAkB,aAAcnE,KAAKmkB,cAAc,GACjE5H,EAAcpY,iBAAkB,YAAanE,KAAKokB,aAAa,GAC/D7H,EAAcpY,iBAAkB,WAAYnE,KAAKqkB,YAAY,IAQ/DzN,aAEK2F,EAAgBvc,KAAKF,OAAOkF,mBAEhCuX,EAAcnY,oBAAqB,cAAepE,KAAKgkB,eAAe,GACtEzH,EAAcnY,oBAAqB,cAAepE,KAAKikB,eAAe,GACtE1H,EAAcnY,oBAAqB,YAAapE,KAAKkkB,aAAa,GAElE3H,EAAcnY,oBAAqB,gBAAiBpE,KAAKgkB,eAAe,GACxEzH,EAAcnY,oBAAqB,gBAAiBpE,KAAKikB,eAAe,GACxE1H,EAAcnY,oBAAqB,cAAepE,KAAKkkB,aAAa,GAEpE3H,EAAcnY,oBAAqB,aAAcpE,KAAKmkB,cAAc,GACpE5H,EAAcnY,oBAAqB,YAAapE,KAAKokB,aAAa,GAClE7H,EAAcnY,oBAAqB,WAAYpE,KAAKqkB,YAAY,GAQjEE,iBAAkBnuB,MAGbD,EAASC,EAAQ,gBAAmB,OAAO,OAExCA,GAAyC,mBAAxBA,EAAOkK,cAA8B,IACxDlK,EAAOkK,aAAc,sBAAyB,OAAO,EACzDlK,EAASA,EAAOM,kBAGV,EAURytB,aAAc9f,MAETrE,KAAKukB,iBAAkBlgB,EAAMjO,QAAW,OAAO,OAE9CwtB,YAAcvf,EAAMmgB,QAAQ,GAAGrG,aAC/B0F,YAAcxf,EAAMmgB,QAAQ,GAAGC,aAC/BX,gBAAkBzf,EAAMmgB,QAAQvtB,OAStCmtB,YAAa/f,MAERrE,KAAKukB,iBAAkBlgB,EAAMjO,QAAW,OAAO,MAE/C8O,EAASlF,KAAKF,OAAOM,eAGpBJ,KAAK+jB,cA8ED1qB,GACRgL,EAAMgS,qBA/EmB,MACpBvW,OAAO+X,YAAaxT,OAErBqgB,EAAWrgB,EAAMmgB,QAAQ,GAAGrG,QAC5BwG,EAAWtgB,EAAMmgB,QAAQ,GAAGC,WAGH,IAAzBpgB,EAAMmgB,QAAQvtB,QAAyC,IAAzB+I,KAAK8jB,gBAAwB,KAE1D/Q,EAAkB/S,KAAKF,OAAOiT,gBAAgB,CAAE6R,kBAAkB,IAElEC,EAASH,EAAW1kB,KAAK4jB,YAC5BkB,EAASH,EAAW3kB,KAAK6jB,YAEtBgB,EAxIgB,IAwIY7oB,KAAK+oB,IAAKF,GAAW7oB,KAAK+oB,IAAKD,SACzDf,eAAgB,EACS,WAA1B7e,EAAOyR,eACNzR,EAAOyF,SACL7K,OAAOoT,YAGPpT,OAAOmT,YAIRnT,OAAOmZ,QAGL4L,GAtJW,IAsJkB7oB,KAAK+oB,IAAKF,GAAW7oB,KAAK+oB,IAAKD,SAC/Df,eAAgB,EACS,WAA1B7e,EAAOyR,eACNzR,EAAOyF,SACL7K,OAAOmT,YAGPnT,OAAOoT,YAIRpT,OAAOoZ,SAGL4L,EApKW,IAoKiB/R,EAAgBoG,SAC/C4K,eAAgB,EACS,WAA1B7e,EAAOyR,oBACL7W,OAAOmT,YAGPnT,OAAOqZ,MAGL2L,GA7KW,IA6KkB/R,EAAgBuG,YAChDyK,eAAgB,EACS,WAA1B7e,EAAOyR,oBACL7W,OAAOoT,YAGPpT,OAAOwZ,QAMVpU,EAAO8U,UACNha,KAAK+jB,eAAiB/jB,KAAKF,OAAOwG,oBACrCjC,EAAMgS,iBAMPhS,EAAMgS,mBAkBVgO,WAAYhgB,QAEN0f,eAAgB,EAStBC,cAAe3f,GAEVA,EAAM2gB,cAAgB3gB,EAAM4gB,sBAA8C,UAAtB5gB,EAAM2gB,cAC7D3gB,EAAMmgB,QAAU,CAAC,CAAErG,QAAS9Z,EAAM8Z,QAASsG,QAASpgB,EAAMogB,eACrDN,aAAc9f,IAUrB4f,cAAe5f,GAEVA,EAAM2gB,cAAgB3gB,EAAM4gB,sBAA8C,UAAtB5gB,EAAM2gB,cAC7D3gB,EAAMmgB,QAAU,CAAC,CAAErG,QAAS9Z,EAAM8Z,QAASsG,QAASpgB,EAAMogB,eACrDL,YAAa/f,IAUpB6f,YAAa7f,GAERA,EAAM2gB,cAAgB3gB,EAAM4gB,sBAA8C,UAAtB5gB,EAAM2gB,cAC7D3gB,EAAMmgB,QAAU,CAAC,CAAErG,QAAS9Z,EAAM8Z,QAASsG,QAASpgB,EAAMogB,eACrDJ,WAAYhgB,KCxPpB,MAAM6gB,EAAc,QACdC,EAAa,OAEJ,MAAMC,EAEpBvlB,YAAaC,QAEPA,OAASA,OAETulB,oBAAsBrlB,KAAKqlB,oBAAoBplB,KAAMD,WACrDslB,sBAAwBtlB,KAAKslB,sBAAsBrlB,KAAMD,MAO/DiF,UAAWC,EAAQC,GAEdD,EAAO8U,cACLuL,aAGAne,aACAwP,UAKP3W,OAEKD,KAAKF,OAAOM,YAAY4Z,eACtBla,OAAOkF,mBAAmBb,iBAAkB,cAAenE,KAAKqlB,qBAAqB,GAK5FzO,cAEM9W,OAAOkF,mBAAmBZ,oBAAqB,cAAepE,KAAKqlB,qBAAqB,GAC7FjuB,SAASgN,oBAAqB,cAAepE,KAAKslB,uBAAuB,GAI1Ele,QAEKpH,KAAK+f,QAAUmF,SACbplB,OAAOkF,mBAAmBvP,UAAUC,IAAK,WAC9C0B,SAAS+M,iBAAkB,cAAenE,KAAKslB,uBAAuB,SAGlEvF,MAAQmF,EAIdK,OAEKvlB,KAAK+f,QAAUoF,SACbrlB,OAAOkF,mBAAmBvP,UAAUE,OAAQ,WACjDyB,SAASgN,oBAAqB,cAAepE,KAAKslB,uBAAuB,SAGrEvF,MAAQoF,EAIdzN,mBAEQ1X,KAAK+f,QAAUmF,EAIvB9nB,eAEM0C,OAAOkF,mBAAmBvP,UAAUE,OAAQ,WAIlD0vB,oBAAqBhhB,QAEf+C,QAINke,sBAAuBjhB,OAElBkY,EAAgB9lB,EAAS4N,EAAMjO,OAAQ,WACtCmmB,GAAiBA,IAAkBvc,KAAKF,OAAOkF,yBAC9CugB,QC9FO,MAAMC,EAEpB3lB,YAAaC,QAEPA,OAASA,EAIfiF,cAEM/O,QAAUoB,SAASC,cAAe,YAClCrB,QAAQT,UAAY,qBACpBS,QAAQ0K,aAAc,qBAAsB,SAC5C1K,QAAQ0K,aAAc,WAAY,UAClCZ,OAAOkF,mBAAmB1N,YAAa0I,KAAKhK,SAOlDiP,UAAWC,EAAQC,GAEdD,EAAO2d,gBACL7sB,QAAQ0K,aAAc,cAA2C,iBAArBwE,EAAO2d,UAAyB3d,EAAO2d,UAAY,UAWtGrd,SAEKxF,KAAKF,OAAOM,YAAYyiB,WAAa7iB,KAAKhK,SAAWgK,KAAKF,OAAO4F,oBAAsB1F,KAAKF,OAAO2lB,MAAMngB,uBAEvGtP,QAAQe,UAAYiJ,KAAK+iB,iBAAmB,kEAYnD2C,mBAEK1lB,KAAKF,OAAOM,YAAYyiB,WAAa7iB,KAAK2lB,aAAe3lB,KAAKF,OAAO2lB,MAAMngB,qBACzExF,OAAOkF,mBAAmBvP,UAAUC,IAAK,mBAGzCoK,OAAOkF,mBAAmBvP,UAAUE,OAAQ,cASnDgwB,kBAEQ3lB,KAAKF,OAAOyD,mBAAmBlO,iBAAkB,6BAA8B4B,OAAS,EAUhG2uB,+BAEUjmB,OAAO3H,SAASC,OAAOpC,MAAO,cAaxCktB,cAAeviB,EAAQR,KAAKF,OAAO4F,sBAG9BlF,EAAMF,aAAc,qBAChBE,EAAMG,aAAc,kBAIxBklB,EAAgBrlB,EAAMnL,iBAAkB,sBACxCwwB,EACI1wB,MAAMC,KAAKywB,GAAezmB,KAAK8jB,GAAgBA,EAAansB,YAAYkL,KAAM,MAG/E,KAIR7E,eAEMpH,QAAQL,UC/GA,MAAMmwB,EASpBjmB,YAAajJ,EAAWmvB,QAGlBC,SAAW,SACXC,UAAYjmB,KAAKgmB,SAAS,OAC1BE,UAAY,OAGZC,SAAU,OAGV1R,SAAW,OAGX2R,eAAiB,OAEjBxvB,UAAYA,OACZmvB,cAAgBA,OAEhBM,OAASjvB,SAASC,cAAe,eACjCgvB,OAAO9wB,UAAY,gBACnB8wB,OAAO5jB,MAAQzC,KAAKgmB,cACpBK,OAAO7tB,OAASwH,KAAKgmB,cACrBK,OAAOnwB,MAAMuM,MAAQzC,KAAKimB,UAAY,UACtCI,OAAOnwB,MAAMsC,OAASwH,KAAKimB,UAAY,UACvCK,QAAUtmB,KAAKqmB,OAAOE,WAAY,WAElC3vB,UAAUU,YAAa0I,KAAKqmB,aAE5BthB,SAINyhB,WAAYhxB,SAELixB,EAAazmB,KAAKmmB,aAEnBA,QAAU3wB,GAGVixB,GAAczmB,KAAKmmB,aAClBO,eAGA3hB,SAKP2hB,gBAEOC,EAAiB3mB,KAAKyU,cAEvBA,SAAWzU,KAAK+lB,gBAIjBY,EAAiB,IAAO3mB,KAAKyU,SAAW,UACtC2R,eAAiBpmB,KAAKyU,eAGvB1P,SAED/E,KAAKmmB,SACR1rB,sBAAuBuF,KAAK0mB,QAAQzmB,KAAMD,OAQ5C+E,aAEK0P,EAAWzU,KAAKmmB,QAAUnmB,KAAKyU,SAAW,EAC7CmS,EAAW5mB,KAAKimB,UAAcjmB,KAAKkmB,UACnC3W,EAAIvP,KAAKimB,UACTzW,EAAIxP,KAAKimB,UACTY,EAAW,QAGPT,gBAAgD,IAA5B,EAAIpmB,KAAKomB,sBAE5BU,GAAe9qB,KAAK+qB,GAAK,EAAQtS,GAAuB,EAAVzY,KAAK+qB,IACnDC,GAAiBhrB,KAAK+qB,GAAK,EAAQ/mB,KAAKomB,gBAA6B,EAAVpqB,KAAK+qB,SAEjET,QAAQW,YACRX,QAAQY,UAAW,EAAG,EAAGlnB,KAAKgmB,SAAUhmB,KAAKgmB,eAG7CM,QAAQa,iBACRb,QAAQc,IAAK7X,EAAGC,EAAGoX,EAAS,EAAG,EAAa,EAAV5qB,KAAK+qB,IAAQ,QAC/CT,QAAQe,UAAY,4BACpBf,QAAQgB,YAGRhB,QAAQa,iBACRb,QAAQc,IAAK7X,EAAGC,EAAGoX,EAAQ,EAAa,EAAV5qB,KAAK+qB,IAAQ,QAC3CT,QAAQiB,UAAYvnB,KAAKkmB,eACzBI,QAAQkB,YAAc,kCACtBlB,QAAQmB,SAETznB,KAAKmmB,eAEHG,QAAQa,iBACRb,QAAQc,IAAK7X,EAAGC,EAAGoX,EAAQI,EAAYF,GAAU,QACjDR,QAAQiB,UAAYvnB,KAAKkmB,eACzBI,QAAQkB,YAAc,YACtBlB,QAAQmB,eAGTnB,QAAQpX,UAAWK,EAAMsX,GAAgBrX,EAAMqX,IAGhD7mB,KAAKmmB,cACHG,QAAQe,UAAY,YACpBf,QAAQoB,SAAU,EAAG,EAAGb,GAAkBA,QAC1CP,QAAQoB,SAAUb,GAAkB,EAAGA,GAAkBA,UAGzDP,QAAQa,iBACRb,QAAQpX,UAAW,EAAG,QACtBoX,QAAQqB,OAAQ,EAAG,QACnBrB,QAAQsB,OAAQf,GAAcA,SAC9BP,QAAQsB,OAAQ,EAAGf,QACnBP,QAAQe,UAAY,YACpBf,QAAQgB,aAGThB,QAAQuB,UAIdC,GAAIrwB,EAAMswB,QACJ1B,OAAOliB,iBAAkB1M,EAAMswB,GAAU,GAG/CC,IAAKvwB,EAAMswB,QACL1B,OAAOjiB,oBAAqB3M,EAAMswB,GAAU,GAGlD3qB,eAEM+oB,SAAU,EAEXnmB,KAAKqmB,OAAO3vB,iBACVE,UAAU+X,YAAa3O,KAAKqmB,eC5JrB,CAId5jB,MAAO,IACPjK,OAAQ,IAGR2c,OAAQ,IAGR8S,SAAU,GACVC,SAAU,EAGVhkB,UAAU,EAIVqZ,kBAAkB,EAGlBN,eAAgB,eAIhBC,mBAAoB,QAGpBzI,UAAU,EAgBVpP,aAAa,EAMbE,gBAAiB,MAIjBwV,mBAAmB,EAInBJ,MAAM,EAGNwN,sBAAsB,EAGtB/N,aAAa,EAGbkB,SAAS,EAGT9C,UAAU,EAMVf,kBAAmB,KAInB2Q,eAAe,EAGfrT,UAAU,EAGVpE,QAAQ,EAGR0X,OAAO,EAGPC,MAAM,EAGN3d,KAAK,EA0BLgM,eAAgB,UAGhB4R,SAAS,EAGT3V,WAAW,EAIX8B,eAAe,EAIfsF,UAAU,EAIVwO,MAAM,EAGN3jB,OAAO,EAGPge,WAAW,EAGX4F,kBAAkB,EAMlB7kB,cAAe,KAOfvD,eAAgB,KAGhBoN,aAAa,EAIb0D,mBAAoB,KAIpBhB,kBAAmB,OACnBC,oBAAqB,EACrBpC,sBAAsB,EAKtBgD,kBAAmB,CAClB,UACA,QACA,mBACA,UACA,YACA,cACA,iBACA,eACA,eACA,gBACA,UACA,kBAQD0X,UAAW,EAGXxO,oBAAoB,EAGpByO,gBAAiB,KAKjBC,cAAe,KAGfjK,YAAY,EAKZkK,cAAc,EAGdnkB,aAAa,EAGbokB,mBAAmB,EAGnBC,iCAAiC,EAGjCC,WAAY,QAGZC,gBAAiB,UAGjBhf,qBAAsB,OAGtBZ,wBAAyB,GAGzBE,uBAAwB,GAGxBE,yBAA0B,GAG1BE,2BAA4B,GAG5BuC,6BAA8B,KAC9BK,2BAA4B,KAI5BmW,oBAAqBtJ,OAAO8P,kBAG5B7F,sBAAsB,EAOtBT,qBAAsB,EAGtBuG,aAAc,EAKdC,mBAAoB,EAGpB3sB,QAAS,QAGTmiB,oBAAoB,EAGpBI,eAAgB,IAIhBqK,qBAAqB,EAGrBlJ,aAAc,GAGdD,QAAS,IC5QH,MAAMoJ,EAAU,QASR,WAAU/M,EAAetd,GAInCtF,UAAU1C,OAAS,IACtBgI,EAAUtF,UAAU,GACpB4iB,EAAgBnlB,SAASyL,cAAe,kBAGnC/C,EAAS,OASdypB,EACAC,EAGAC,EACAjf,EAiCAkf,EA5CGxkB,EAAS,GAGZykB,GAAQ,EAWRC,EAAoB,CACnBnM,0BAA0B,EAC1BD,wBAAwB,GAMzBuC,EAAQ,GAGR5Q,EAAQ,EAIR0a,EAAkB,CAAE/mB,OAAQ,GAAIiS,SAAU,IAG1C+U,EAAM,GAMNd,EAAa,OAGbN,EAAY,EAIZqB,EAAmB,EACnBC,GAAsB,EACtBC,GAAkB,EAKlBhf,GAAe,IAAIrL,EAAcE,GACjCuF,GAAc,IAAIP,EAAahF,GAC/Bsa,GAAc,IAAIxT,EAAa9G,GAC/B2N,GAAc,IAAIX,EAAahN,GAC/BoqB,GAAc,IAAInhB,EAAajJ,GAC/B8S,GAAY,IAAID,EAAW7S,GAC3BiV,GAAW,IAAIH,EAAU9U,GACzB0Y,GAAW,IAAIlC,EAAUxW,GACzB9H,GAAW,IAAIuiB,EAAUza,GACzBoE,GAAW,IAAI8X,EAAUlc,GACzB2U,GAAW,IAAIiJ,EAAU5d,GACzBqqB,GAAU,IAAI9L,EAASve,GACvBogB,GAAU,IAAIL,EAAS/f,GACvB2lB,GAAQ,IAAIhE,EAAO3hB,GACnBsH,GAAQ,IAAIge,EAAOtlB,GACnBuoB,GAAQ,IAAI1E,EAAO7jB,GACnBgjB,GAAQ,IAAI0C,EAAO1lB,YAKXsqB,GAAYC,OAEf9N,EAAgB,KAAM,8DAG3BuN,EAAIQ,QAAU/N,EACduN,EAAI/L,OAASxB,EAAc1Z,cAAe,YAErCinB,EAAI/L,OAAS,KAAM,iEASxB7Y,EAAS,IAAKqlB,KAAkBrlB,KAAWjG,KAAYorB,KAAgBG,KAEvEC,KAGA9qB,OAAOwE,iBAAkB,OAAQrB,IAAQ,GAGzCod,GAAQ3f,KAAM2E,EAAOgb,QAAShb,EAAOib,cAAeS,KAAM8J,IAEnD,IAAIrK,SAASC,GAAWxgB,EAAOgoB,GAAI,QAASxH,cAQ3CmK,MAGgB,IAApBvlB,EAAO8U,SACV8P,EAAIa,SAAWH,EAAcjO,EAAe,qBAAwBA,GAIpEuN,EAAIa,SAAWvzB,SAASyqB,KACxBzqB,SAASqiB,gBAAgBhkB,UAAUC,IAAK,qBAGzCo0B,EAAIa,SAASl1B,UAAUC,IAAK,4BAQpBg1B,KAERf,GAAQ,EAGRiB,KAGAC,KAGAC,KAGAC,KAGAC,KAGAC,KAGAhmB,KAGAjN,GAASmjB,UAGT+O,GAAY1kB,QAAQ,GAIpBnH,YAAY,KAEXyrB,EAAI/L,OAAOtoB,UAAUE,OAAQ,iBAE7Bm0B,EAAIQ,QAAQ70B,UAAUC,IAAK,SAE3BmH,GAAc,CACbpF,KAAM,QACNqS,KAAM,CACLyf,SACAC,SACAhf,iBALF,GAQE,GAGCib,GAAMngB,kBACT4lB,KAI4B,aAAxB9zB,SAAS0M,WACZ2hB,GAAM0F,WAGNxrB,OAAOwE,iBAAkB,QAAQ,KAChCshB,GAAM0F,wBAeDP,KAEH1lB,EAAOujB,kBACX+B,EAAeV,EAAIQ,QAAS,qCAAsCtvB,SAASwF,IAC1EA,EAAM9J,WAAWiY,YAAanO,eAWxBqqB,KAGRf,EAAI/L,OAAOtoB,UAAUC,IAAK,iBAEtB01B,EACHtB,EAAIQ,QAAQ70B,UAAUC,IAAK,YAG3Bo0B,EAAIQ,QAAQ70B,UAAUE,OAAQ,YAG/Bu0B,GAAYnlB,SACZM,GAAYN,SACZqV,GAAYrV,SACZb,GAASa,SACT0P,GAAS1P,SACT+d,GAAM/d,SAGN+kB,EAAIuB,aAAeb,EAA0BV,EAAIQ,QAAS,MAAO,gBAAiBplB,EAAOhB,SAAW,6DAA+D,MAEnK4lB,EAAIwB,cAAgBC,KAEpBzB,EAAIQ,QAAQ5pB,aAAc,OAAQ,wBAU1B6qB,SAEJD,EAAgBxB,EAAIQ,QAAQznB,cAAe,uBAC1CyoB,IACJA,EAAgBl0B,SAASC,cAAe,OACxCi0B,EAAcp1B,MAAMs1B,SAAW,WAC/BF,EAAcp1B,MAAMsC,OAAS,MAC7B8yB,EAAcp1B,MAAMuM,MAAQ,MAC5B6oB,EAAcp1B,MAAMu1B,SAAW,SAC/BH,EAAcp1B,MAAMw1B,KAAO,6BAC3BJ,EAAc71B,UAAUC,IAAK,eAC7B41B,EAAc5qB,aAAc,YAAa,UACzC4qB,EAAc5qB,aAAc,cAAc,QAC1CopB,EAAIQ,QAAQhzB,YAAag0B,IAEnBA,WAOCnX,GAAgB3e,GAExBs0B,EAAIwB,cAAc3Z,YAAcnc,WASxB4e,GAAejd,OAEnBw0B,EAAO,MAGW,IAAlBx0B,EAAKy0B,SACRD,GAAQx0B,EAAKwa,iBAGT,GAAsB,IAAlBxa,EAAKy0B,SAAiB,KAE1BC,EAAe10B,EAAKwJ,aAAc,eAClCmrB,EAAiE,SAA/CnsB,OAAOpD,iBAAkBpF,GAAzB,QACD,SAAjB00B,GAA4BC,GAE/B32B,MAAMC,KAAM+B,EAAK0T,YAAa7P,SAAS+wB,IACtCJ,GAAQvX,GAAe2X,EAAvB,WAOHJ,EAAOA,EAAKnqB,OAEI,KAATmqB,EAAc,GAAKA,EAAO,aAazBZ,KAERiB,aAAa,KACkB,IAA1BlC,EAAIQ,QAAQ2B,WAA8C,IAA3BnC,EAAIQ,QAAQ4B,aAC9CpC,EAAIQ,QAAQ2B,UAAY,EACxBnC,EAAIQ,QAAQ4B,WAAa,KAExB,cAUKlB,KAER5zB,SAAS+M,iBAAkB,mBAAoBgoB,IAC/C/0B,SAAS+M,iBAAkB,yBAA0BgoB,aAc7CrB,KAEJ5lB,EAAOR,aACV/E,OAAOwE,iBAAkB,UAAWioB,IAAe,YAW5CnnB,GAAWhG,SAEbkG,EAAY,IAAKD,MAIA,iBAAZjG,GAAuBurB,EAAatlB,EAAQjG,IAI7B,IAAtBa,EAAOusB,UAAuB,aAE5BC,EAAiBxC,EAAIQ,QAAQj1B,iBAAkBmX,GAAkBvV,OAGvE6yB,EAAIQ,QAAQ70B,UAAUE,OAAQwP,EAAU6jB,YACxCc,EAAIQ,QAAQ70B,UAAUC,IAAKwP,EAAO8jB,YAElCc,EAAIQ,QAAQ5pB,aAAc,wBAAyBwE,EAAO+jB,iBAC1Da,EAAIQ,QAAQ5pB,aAAc,6BAA8BwE,EAAO+E,sBAG/D6f,EAAIa,SAASz0B,MAAMq2B,YAAa,gBAAiBrnB,EAAOzC,MAAQ,MAChEqnB,EAAIa,SAASz0B,MAAMq2B,YAAa,iBAAkBrnB,EAAO1M,OAAS,MAE9D0M,EAAOqjB,SACVA,KAGDiC,EAAkBV,EAAIQ,QAAS,WAAYplB,EAAO8U,UAClDwQ,EAAkBV,EAAIQ,QAAS,MAAOplB,EAAOyF,KAC7C6f,EAAkBV,EAAIQ,QAAS,SAAUplB,EAAOyL,SAG3B,IAAjBzL,EAAOL,OACV2nB,KAIGtnB,EAAO2jB,cACV4D,KACAC,GAAqB,+BAGrBA,KACAD,GAAoB,uDAIrBhf,GAAYP,QAGRwc,IACHA,EAAgBtsB,UAChBssB,EAAkB,MAIf4C,EAAiB,GAAKpnB,EAAOwjB,WAAaxjB,EAAOgV,qBACpDwP,EAAkB,IAAI5D,EAAUgE,EAAIQ,SAAS,IACrCtuB,KAAKC,IAAKD,KAAKE,KAAOwf,KAAKC,MAAQqO,GAAuBtB,EAAW,GAAK,KAGlFgB,EAAgB5B,GAAI,QAAS6E,IAC7B1C,GAAkB,GAIW,YAA1B/kB,EAAOyR,eACVmT,EAAIQ,QAAQ5pB,aAAc,uBAAwBwE,EAAOyR,gBAGzDmT,EAAIQ,QAAQ1pB,gBAAiB,wBAG9BkiB,GAAM7d,UAAWC,EAAQC,GACzBiC,GAAMnC,UAAWC,EAAQC,GACzBglB,GAAQllB,UAAWC,EAAQC,GAC3BjB,GAASe,UAAWC,EAAQC,GAC5BsP,GAASxP,UAAWC,EAAQC,GAC5BqT,GAASvT,UAAWC,EAAQC,GAC5ByN,GAAU3N,UAAWC,EAAQC,GAC7BE,GAAYJ,UAAWC,EAAQC,GAE/B0E,cAOQ+iB,KAIRjtB,OAAOwE,iBAAkB,SAAU0oB,IAAgB,GAE/C3nB,EAAOmjB,OAAQA,GAAMpoB,OACrBiF,EAAOsT,UAAWA,GAASvY,OAC3BiF,EAAOuP,UAAWA,GAASxU,OAC3BiF,EAAOijB,sBAAuBnwB,GAASiI,OAC3CiE,GAASjE,OACTmH,GAAMnH,OAEN6pB,EAAI/L,OAAO5Z,iBAAkB,QAAS2oB,IAAiB,GACvDhD,EAAI/L,OAAO5Z,iBAAkB,gBAAiB4oB,IAAiB,GAC/DjD,EAAIuB,aAAalnB,iBAAkB,QAASqoB,IAAQ,GAEhDtnB,EAAO6jB,iCACV3xB,SAAS+M,iBAAkB,mBAAoB6oB,IAAwB,YAQhE9B,KAIR7C,GAAMzR,SACNxP,GAAMwP,SACN4B,GAAS5B,SACT1S,GAAS0S,SACTnC,GAASmC,SACT5e,GAAS4e,SAETjX,OAAOyE,oBAAqB,SAAUyoB,IAAgB,GAEtD/C,EAAI/L,OAAO3Z,oBAAqB,QAAS0oB,IAAiB,GAC1DhD,EAAI/L,OAAO3Z,oBAAqB,gBAAiB2oB,IAAiB,GAClEjD,EAAIuB,aAAajnB,oBAAqB,QAASooB,IAAQ,YAQ/CpvB,KAER8tB,KACAjW,KACAyX,KAGA5J,GAAM1lB,UACNgK,GAAMhK,UACN8iB,GAAQ9iB,UACR+sB,GAAQ/sB,UACR8G,GAAS9G,UACTqX,GAASrX,UACT8sB,GAAY9sB,UACZiI,GAAYjI,UACZgd,GAAYhd,UAGZhG,SAASgN,oBAAqB,mBAAoB+nB,IAClD/0B,SAASgN,oBAAqB,yBAA0B+nB,IACxD/0B,SAASgN,oBAAqB,mBAAoB4oB,IAAwB,GAC1ErtB,OAAOyE,oBAAqB,UAAWgoB,IAAe,GACtDzsB,OAAOyE,oBAAqB,OAAQtB,IAAQ,GAGxCgnB,EAAIuB,cAAevB,EAAIuB,aAAa11B,SACpCm0B,EAAIwB,eAAgBxB,EAAIwB,cAAc31B,SAE1CyB,SAASqiB,gBAAgBhkB,UAAUE,OAAQ,oBAE3Cm0B,EAAIQ,QAAQ70B,UAAUE,OAAQ,QAAS,SAAU,wBAAyB,uBAC1Em0B,EAAIQ,QAAQ1pB,gBAAiB,yBAC7BkpB,EAAIQ,QAAQ1pB,gBAAiB,8BAE7BkpB,EAAIa,SAASl1B,UAAUE,OAAQ,mBAC/Bm0B,EAAIa,SAASz0B,MAAM0C,eAAgB,iBACnCkxB,EAAIa,SAASz0B,MAAM0C,eAAgB,kBAEnCkxB,EAAI/L,OAAO7nB,MAAM0C,eAAgB,SACjCkxB,EAAI/L,OAAO7nB,MAAM0C,eAAgB,UACjCkxB,EAAI/L,OAAO7nB,MAAM0C,eAAgB,QACjCkxB,EAAI/L,OAAO7nB,MAAM0C,eAAgB,QACjCkxB,EAAI/L,OAAO7nB,MAAM0C,eAAgB,OACjCkxB,EAAI/L,OAAO7nB,MAAM0C,eAAgB,UACjCkxB,EAAI/L,OAAO7nB,MAAM0C,eAAgB,SACjCkxB,EAAI/L,OAAO7nB,MAAM0C,eAAgB,aAEjCzD,MAAMC,KAAM00B,EAAIQ,QAAQj1B,iBAAkBmX,IAAoBxR,SAASwF,IACtEA,EAAMtK,MAAM0C,eAAgB,WAC5B4H,EAAMtK,MAAM0C,eAAgB,OAC5B4H,EAAMI,gBAAiB,UACvBJ,EAAMI,gBAAiB,2BAShBknB,GAAIrwB,EAAMswB,EAAUkF,GAE5B1Q,EAAcpY,iBAAkB1M,EAAMswB,EAAUkF,YAOxCjF,GAAKvwB,EAAMswB,EAAUkF,GAE7B1Q,EAAcnY,oBAAqB3M,EAAMswB,EAAUkF,YAW3CjX,GAAiBkX,GAGQ,iBAAtBA,EAAWpqB,SAAsB+mB,EAAgB/mB,OAASoqB,EAAWpqB,QAC7C,iBAAxBoqB,EAAWnY,WAAwB8U,EAAgB9U,SAAWmY,EAAWnY,UAGhF8U,EAAgB/mB,OACnB0nB,EAAuBV,EAAI/L,OAAQ8L,EAAgB/mB,OAAS,IAAM+mB,EAAgB9U,UAGlFyV,EAAuBV,EAAI/L,OAAQ8L,EAAgB9U,mBAS5ClY,IAAczG,OAAEA,EAAO0zB,EAAIQ,QAAb7yB,KAAsBA,EAAtBqS,KAA4BA,EAA5BuK,QAAkCA,GAAQ,QAE5DhQ,EAAQjN,SAAS+1B,YAAa,aAAc,EAAG,UACnD9oB,EAAM+oB,UAAW31B,EAAM4c,GAAS,GAChCmW,EAAanmB,EAAOyF,GACpB1T,EAAOyG,cAAewH,GAElBjO,IAAW0zB,EAAIQ,SAGlB+C,GAAqB51B,GAGf4M,WAOCgpB,GAAqB51B,EAAMqS,MAE/B5E,EAAO4jB,mBAAqBnpB,OAAO2tB,SAAW3tB,OAAO4tB,KAAO,KAC3DC,EAAU,CACbC,UAAW,SACXrQ,UAAW3lB,EACXsoB,MAAO2N,MAGRlD,EAAagD,EAAS1jB,GAEtBnK,OAAO2tB,OAAO5oB,YAAaipB,KAAKC,UAAWJ,GAAW,eAU/Cf,GAAoBv3B,EAAW,KAEvCC,MAAMC,KAAM00B,EAAIQ,QAAQj1B,iBAAkBH,IAAa8F,SAAShF,IAC3D,gBAAgBkD,KAAMlD,EAAQ2K,aAAc,UAC/C3K,EAAQmO,iBAAkB,QAAS0pB,IAAsB,eASnDnB,GAAqBx3B,EAAW,KAExCC,MAAMC,KAAM00B,EAAIQ,QAAQj1B,iBAAkBH,IAAa8F,SAAShF,IAC3D,gBAAgBkD,KAAMlD,EAAQ2K,aAAc,UAC/C3K,EAAQoO,oBAAqB,QAASypB,IAAsB,eAWtDC,GAAarsB,GAErB6Y,KAEAwP,EAAIiE,QAAU32B,SAASC,cAAe,OACtCyyB,EAAIiE,QAAQt4B,UAAUC,IAAK,WAC3Bo0B,EAAIiE,QAAQt4B,UAAUC,IAAK,mBAC3Bo0B,EAAIQ,QAAQhzB,YAAawyB,EAAIiE,SAE7BjE,EAAIiE,QAAQh3B,UACV,iHAE4B0K,6JAIbA,uNAMjBqoB,EAAIiE,QAAQlrB,cAAe,UAAWsB,iBAAkB,QAAQE,IAC/DylB,EAAIiE,QAAQt4B,UAAUC,IAAK,aACzB,GAEHo0B,EAAIiE,QAAQlrB,cAAe,UAAWsB,iBAAkB,SAASE,IAChEiW,KACAjW,EAAMgS,oBACJ,GAEHyT,EAAIiE,QAAQlrB,cAAe,aAAcsB,iBAAkB,SAASE,IACnEiW,QACE,YAWK9C,GAAYpB,GAEI,kBAAbA,EACVA,EAAW4X,KAAa1T,KAGpBwP,EAAIiE,QACPzT,KAGA0T,cAQMA,QAEJ9oB,EAAOsjB,KAAO,CAEjBlO,KAEAwP,EAAIiE,QAAU32B,SAASC,cAAe,OACtCyyB,EAAIiE,QAAQt4B,UAAUC,IAAK,WAC3Bo0B,EAAIiE,QAAQt4B,UAAUC,IAAK,gBAC3Bo0B,EAAIQ,QAAQhzB,YAAawyB,EAAIiE,aAEzBE,EAAO,+CAEP1X,EAAYiC,GAASpB,eACxBZ,EAAWgC,GAASnB,cAErB4W,GAAQ,yCACH,IAAIp0B,KAAO0c,EACf0X,GAAS,WAAUp0B,aAAe0c,EAAW1c,mBAIzC,IAAIid,KAAWN,EACfA,EAASM,GAASjd,KAAO2c,EAASM,GAASE,cAC9CiX,GAAS,WAAUzX,EAASM,GAASjd,eAAe2c,EAASM,GAASE,yBAIxEiX,GAAQ,WAERnE,EAAIiE,QAAQh3B,UAAa,oLAKOk3B,kCAIhCnE,EAAIiE,QAAQlrB,cAAe,UAAWsB,iBAAkB,SAASE,IAChEiW,KACAjW,EAAMgS,oBACJ,aASIiE,aAEJwP,EAAIiE,UACPjE,EAAIiE,QAAQr3B,WAAWiY,YAAamb,EAAIiE,SACxCjE,EAAIiE,QAAU,MACP,YAWAjrB,QAEJgnB,EAAIQ,UAAY7E,GAAMngB,gBAAkB,KAEtCJ,EAAOkjB,cAAgB,CAQvBgD,IAAoBlmB,EAAO8U,UAC9B5iB,SAASqiB,gBAAgBvjB,MAAMq2B,YAAa,OAA+B,IAArB5sB,OAAOoW,YAAuB,YAG/EmY,EAAO7Y,KAEP8Y,EAAWhf,EAGjB8S,GAAqB/c,EAAOzC,MAAOyC,EAAO1M,QAE1CsxB,EAAI/L,OAAO7nB,MAAMuM,MAAQyrB,EAAKzrB,MAAQ,KACtCqnB,EAAI/L,OAAO7nB,MAAMsC,OAAS01B,EAAK11B,OAAS,KAGxC2W,EAAQnT,KAAKC,IAAKiyB,EAAKE,kBAAoBF,EAAKzrB,MAAOyrB,EAAKG,mBAAqBH,EAAK11B,QAGtF2W,EAAQnT,KAAKE,IAAKiT,EAAOjK,EAAO+iB,UAChC9Y,EAAQnT,KAAKC,IAAKkT,EAAOjK,EAAOgjB,UAGlB,IAAV/Y,GACH2a,EAAI/L,OAAO7nB,MAAMo4B,KAAO,GACxBxE,EAAI/L,OAAO7nB,MAAM+iB,KAAO,GACxB6Q,EAAI/L,OAAO7nB,MAAMosB,IAAM,GACvBwH,EAAI/L,OAAO7nB,MAAMitB,OAAS,GAC1B2G,EAAI/L,OAAO7nB,MAAMgjB,MAAQ,GACzBlD,GAAiB,CAAElT,OAAQ,OAG3BgnB,EAAI/L,OAAO7nB,MAAMo4B,KAAO,GACxBxE,EAAI/L,OAAO7nB,MAAM+iB,KAAO,MACxB6Q,EAAI/L,OAAO7nB,MAAMosB,IAAM,MACvBwH,EAAI/L,OAAO7nB,MAAMitB,OAAS,OAC1B2G,EAAI/L,OAAO7nB,MAAMgjB,MAAQ,OACzBlD,GAAiB,CAAElT,OAAQ,+BAAgCqM,EAAO,aAI7D4O,EAAS5oB,MAAMC,KAAM00B,EAAIQ,QAAQj1B,iBAAkBmX,QAEpD,IAAIzX,EAAI,EAAGw5B,EAAMxQ,EAAO9mB,OAAQlC,EAAIw5B,EAAKx5B,IAAM,OAC7CyL,EAAQud,EAAQhpB,GAGM,SAAxByL,EAAMtK,MAAMuG,UAIZyI,EAAOyL,QAAUnQ,EAAM/K,UAAU8V,SAAU,UAG1C/K,EAAM/K,UAAU8V,SAAU,SAC7B/K,EAAMtK,MAAMosB,IAAM,EAGlB9hB,EAAMtK,MAAMosB,IAAMtmB,KAAKE,KAAOgyB,EAAK11B,OAASgI,EAAM2hB,cAAiB,EAAG,GAAM,KAI7E3hB,EAAMtK,MAAMosB,IAAM,IAKhB6L,IAAahf,GAChBtS,GAAc,CACbpF,KAAM,SACNqS,KAAM,CACLqkB,WACAhf,QACA+e,UAMJpE,EAAIa,SAASz0B,MAAMq2B,YAAa,gBAAiBpd,GAEjDsF,GAASjP,SACT0kB,GAAY1e,iBAERuJ,GAASC,YACZD,GAASvP,mBAcHyc,GAAqBxf,EAAOjK,GAGpCgyB,EAAeV,EAAI/L,OAAQ,4CAA6C/iB,SAAShF,QAG5Ew4B,EAAkBhE,EAAyBx0B,EAASwC,MAGpD,gBAAgBU,KAAMlD,EAAQ0b,UAAa,OACxC+c,EAAKz4B,EAAQ04B,cAAgB14B,EAAQ24B,WACxCC,EAAK54B,EAAQ64B,eAAiB74B,EAAQ84B,YAEnCC,EAAK/yB,KAAKC,IAAKwG,EAAQgsB,EAAID,EAAkBI,GAEnD54B,EAAQE,MAAMuM,MAAUgsB,EAAKM,EAAO,KACpC/4B,EAAQE,MAAMsC,OAAWo2B,EAAKG,EAAO,UAIrC/4B,EAAQE,MAAMuM,MAAQA,EAAQ,KAC9BzM,EAAQE,MAAMsC,OAASg2B,EAAkB,iBAenCnZ,GAAsB+Y,EAAmBC,OAC7C5rB,EAAQyC,EAAOzC,MACfjK,EAAS0M,EAAO1M,OAEhB0M,EAAOkjB,gBACV3lB,EAAQqnB,EAAI/L,OAAO/R,YACnBxT,EAASsxB,EAAI/L,OAAOplB,oBAGfu1B,EAAO,CAEZzrB,MAAOA,EACPjK,OAAQA,EAGR41B,kBAAmBA,GAAqBtE,EAAIQ,QAAQte,YACpDqiB,mBAAoBA,GAAsBvE,EAAIQ,QAAQ3xB,qBAIvDu1B,EAAKE,mBAAuBF,EAAKE,kBAAoBlpB,EAAOiQ,OAC5D+Y,EAAKG,oBAAwBH,EAAKG,mBAAqBnpB,EAAOiQ,OAGpC,iBAAf+Y,EAAKzrB,OAAsB,KAAKvJ,KAAMg1B,EAAKzrB,SACrDyrB,EAAKzrB,MAAQgG,SAAUylB,EAAKzrB,MAAO,IAAO,IAAMyrB,EAAKE,mBAI3B,iBAAhBF,EAAK11B,QAAuB,KAAKU,KAAMg1B,EAAK11B,UACtD01B,EAAK11B,OAASiQ,SAAUylB,EAAK11B,OAAQ,IAAO,IAAM01B,EAAKG,oBAGjDH,WAYCc,GAA0BC,EAAO1oB,GAEpB,iBAAV0oB,GAAoD,mBAAvBA,EAAMvuB,cAC7CuuB,EAAMvuB,aAAc,uBAAwB6F,GAAK,YAY1C2oB,GAA0BD,MAEb,iBAAVA,GAAoD,mBAAvBA,EAAMvuB,cAA+BuuB,EAAMx5B,UAAU8V,SAAU,SAAY,OAE5G4jB,EAAgBF,EAAM3uB,aAAc,qBAAwB,oBAAsB,8BAEjFmI,SAAUwmB,EAAMtuB,aAAcwuB,IAAmB,EAAG,WAGrD,WAYC7oB,GAAiB9F,EAAQgK,UAE1BhK,GAASA,EAAM9J,cAAgB8J,EAAM9J,WAAWgb,SAAS7b,MAAO,qBAQ/Du5B,cAEJ5kB,IAAgBlE,GAAiBkE,MAEhCA,EAAa6kB,4BAaVC,YAEU,IAAX/F,GAA2B,IAAXC,WAUf+F,aAEJ/kB,KAECA,EAAa6kB,sBAGb/oB,GAAiBkE,KAAkBA,EAAa9T,WAAW24B,8BAaxDxqB,QAEJK,EAAOL,MAAQ,OACZ2qB,EAAY1F,EAAIQ,QAAQ70B,UAAU8V,SAAU,UAElD0J,KACA6U,EAAIQ,QAAQ70B,UAAUC,IAAK,WAET,IAAd85B,GACH3yB,GAAc,CAAEpF,KAAM,qBAShB+0B,WAEFgD,EAAY1F,EAAIQ,QAAQ70B,UAAU8V,SAAU,UAClDue,EAAIQ,QAAQ70B,UAAUE,OAAQ,UAE9BugB,KAEIsZ,GACH3yB,GAAc,CAAEpF,KAAM,qBAQf8hB,GAAanD,GAEG,kBAAbA,EACVA,EAAWvR,KAAU2nB,KAGrB/T,KAAa+T,KAAW3nB,cAUjB4T,YAEDqR,EAAIQ,QAAQ70B,UAAU8V,SAAU,mBAO/B8O,GAAmBjE,GAEH,kBAAbA,EACVA,EAAWgE,GAAYlT,OAASkT,GAAY/S,OAG5C+S,GAAY7V,YAAc6V,GAAY/S,OAAS+S,GAAYlT,gBAYpDiT,GAAiB/D,GAED,kBAAbA,EACVA,EAAWqZ,KAAoBC,KAI/BzF,EAAkBwF,KAAoBC,cAU/B9X,cAEG8Q,GAAcuB,YAejBzpB,GAAO4F,EAAGG,EAAG3L,EAAG+0B,MAGJ9yB,GAAc,CACjCpF,KAAM,oBACNqS,KAAM,CACLyf,YAAc7pB,IAAN0G,EAAkBmjB,EAASnjB,EACnCojB,YAAc9pB,IAAN6G,EAAkBijB,EAASjjB,EACnCopB,YAKcC,iBAAmB,OAGnCnG,EAAgBjf,QAGVmB,EAAmBme,EAAIQ,QAAQj1B,iBAAkBoX,MAGvB,IAA5Bd,EAAiB1U,OAAe,YAI1ByI,IAAN6G,GAAoBwO,GAASC,aAChCzO,EAAI2oB,GAA0BvjB,EAAkBvF,KAK7CqjB,GAAiBA,EAAc/yB,YAAc+yB,EAAc/yB,WAAWjB,UAAU8V,SAAU,UAC7FyjB,GAA0BvF,EAAc/yB,WAAY8yB,SAI/CqG,EAAc9P,EAAMrN,SAG1BqN,EAAM9oB,OAAS,MAEX64B,EAAevG,GAAU,EAC5BwG,EAAevG,GAAU,EAG1BD,EAASyG,GAAcvjB,OAAkC/M,IAAN0G,EAAkBmjB,EAASnjB,GAC9EojB,EAASwG,GAActjB,OAAgChN,IAAN6G,EAAkBijB,EAASjjB,OAGxE0pB,EAAiB1G,IAAWuG,GAAgBtG,IAAWuG,EAGtDE,IAAexG,EAAgB,UAIhCyG,EAAyBvkB,EAAkB4d,GAC9C4G,EAAwBD,EAAuB76B,iBAAkB,WAGlEmV,EAAe2lB,EAAuB3G,IAAY0G,MAE9CE,GAAwB,EAGxBH,GAAgBxG,GAAiBjf,IAAiBuK,GAASC,aAQ1DyU,EAAcnpB,aAAc,sBAAyBkK,EAAalK,aAAc,sBAC/EmpB,EAAc9oB,aAAc,0BAA6B6J,EAAa7J,aAAc,2BAC/E4oB,EAASuG,GAAgBtG,EAASuG,EAAiBvlB,EAAeif,GAAgBnpB,aAAc,+BAEzG8vB,GAAwB,EACxBtG,EAAI/L,OAAOtoB,UAAUC,IAAK,8BAG3BszB,EAAa,WAKdxT,KAEA1S,KAGIiS,GAASC,YACZD,GAASvP,cAIO,IAAN5K,GACVgY,GAAU0B,KAAM1Z,GAMb6uB,GAAiBA,IAAkBjf,IACtCif,EAAch0B,UAAUE,OAAQ,WAChC8zB,EAAc/oB,aAAc,cAAe,QAGvC4uB,MAEHjxB,YAAY,KACXgyB,KAAoBr1B,SAASwF,IAC5BwuB,GAA0BxuB,EAAO,EAAjC,MAEC,IAKL8vB,EAAW,IAAK,IAAIv7B,EAAI,EAAGw5B,EAAMxO,EAAM9oB,OAAQlC,EAAIw5B,EAAKx5B,IAAM,KAGxD,IAAIw7B,EAAI,EAAGA,EAAIV,EAAY54B,OAAQs5B,OACnCV,EAAYU,KAAOxQ,EAAMhrB,GAAK,CACjC86B,EAAYW,OAAQD,EAAG,YACdD,EAIXxG,EAAIa,SAASl1B,UAAUC,IAAKqqB,EAAMhrB,IAGlC8H,GAAc,CAAEpF,KAAMsoB,EAAMhrB,UAItB86B,EAAY54B,QAClB6yB,EAAIa,SAASl1B,UAAUE,OAAQk6B,EAAYx3B,OAGxC43B,GACHpzB,GAAc,CACbpF,KAAM,eACNqS,KAAM,CACLyf,SACAC,SACAC,gBACAjf,eACAmlB,aAMCM,GAAiBxG,IACpBxe,GAAatG,oBAAqB8kB,GAClCxe,GAAavH,qBAAsB8G,IAMpC/P,uBAAuB,KACtB0Z,GAAgBC,GAAe5J,GAA/B,IAGDiK,GAASjP,SACTtB,GAASsB,SACTsd,GAAMtd,SACN0kB,GAAY1kB,SACZ0kB,GAAY1e,iBACZnG,GAAYG,SACZoN,GAAUpN,SAGVxN,GAAS2c,WAETuB,KAGIka,IAEH/xB,YAAY,KACXyrB,EAAI/L,OAAOtoB,UAAUE,OAAQ,+BAC3B,GAECuP,EAAOuI,aAEVA,GAAYV,IAAK0c,EAAejf,aAY1BX,KAGRqhB,KACA0B,KAGA9pB,KAGA4lB,EAAYxjB,EAAOwjB,UAGnBxS,KAGAgU,GAAYlhB,SAGZhR,GAAS2c,YAE0B,IAA/BzP,EAAOmkB,qBACVzW,GAAUc,UAGXxP,GAASsB,SACTiP,GAASjP,SAETgQ,KAEAsN,GAAMtd,SACNsd,GAAM4C,mBACNwE,GAAY1kB,QAAQ,GACpBH,GAAYG,SACZyF,GAAa/H,yBAGgB,IAAzBgC,EAAOtB,cACVqH,GAAatG,oBAAqB6F,EAAc,CAAE5F,eAAe,IAGjEqG,GAAavH,qBAAsB8G,GAGhCuK,GAASC,YACZD,GAASjS,kBAeF2tB,GAAWjwB,EAAQgK,GAE3B0f,GAAYrgB,KAAMrJ,GAClBoS,GAAU/I,KAAMrJ,GAEhByK,GAAa1K,KAAMC,GAEnB0pB,GAAY1kB,SACZsd,GAAMtd,kBAQEylB,KAERrlB,KAAsB5K,SAAS2Y,IAE9B6W,EAAe7W,EAAiB,WAAY3Y,SAAS,CAAE4Y,EAAepE,KAEjEA,EAAI,IACPoE,EAAcne,UAAUE,OAAQ,WAChCie,EAAcne,UAAUE,OAAQ,QAChCie,EAAcne,UAAUC,IAAK,UAC7Bke,EAAclT,aAAc,cAAe,wBAYtC6nB,GAASxK,EAASnY,MAE1BmY,EAAO/iB,SAAS,CAAEwF,EAAOzL,SAKpB27B,EAAc3S,EAAQ/hB,KAAKkiB,MAAOliB,KAAK20B,SAAW5S,EAAO9mB,SACzDy5B,EAAYh6B,aAAe8J,EAAM9J,YACpC8J,EAAM9J,WAAWipB,aAAcnf,EAAOkwB,OAInC9kB,EAAiBpL,EAAMnL,iBAAkB,WACzCuW,EAAe3U,QAClBsxB,GAAS3c,eAoBHokB,GAAc96B,EAAUqc,OAI5BwM,EAASyM,EAAeV,EAAIQ,QAASp1B,GACxC07B,EAAe7S,EAAO9mB,OAEnB45B,EAAYpL,GAAMngB,gBAClBwrB,GAAiB,EACjBC,GAAkB,KAElBH,EAAe,CAGd1rB,EAAOojB,OACN/W,GAASqf,IAAeE,GAAiB,IAE7Cvf,GAASqf,GAEG,IACXrf,EAAQqf,EAAerf,EACvBwf,GAAkB,IAKpBxf,EAAQvV,KAAKE,IAAKF,KAAKC,IAAKsV,EAAOqf,EAAe,GAAK,OAElD,IAAI77B,EAAI,EAAGA,EAAI67B,EAAc77B,IAAM,KACnCiB,EAAU+nB,EAAOhpB,GAEjBi8B,EAAU9rB,EAAOyF,MAAQrE,GAAiBtQ,GAG9CA,EAAQP,UAAUE,OAAQ,QAC1BK,EAAQP,UAAUE,OAAQ,WAC1BK,EAAQP,UAAUE,OAAQ,UAG1BK,EAAQ0K,aAAc,SAAU,IAChC1K,EAAQ0K,aAAc,cAAe,QAGjC1K,EAAQ6M,cAAe,YAC1B7M,EAAQP,UAAUC,IAAK,SAIpBm7B,EACH76B,EAAQP,UAAUC,IAAK,WAIpBX,EAAIwc,GAEPvb,EAAQP,UAAUC,IAAKs7B,EAAU,SAAW,QAExC9rB,EAAO0N,WAEVqe,GAAiBj7B,IAGVjB,EAAIwc,GAEZvb,EAAQP,UAAUC,IAAKs7B,EAAU,OAAS,UAEtC9rB,EAAO0N,WAEVse,GAAiBl7B,IAKVjB,IAAMwc,GAASrM,EAAO0N,YAC1Bke,EACHI,GAAiBl7B,GAET+6B,GACRE,GAAiBj7B,QAKhBwK,EAAQud,EAAOxM,GACf4f,EAAa3wB,EAAM/K,UAAU8V,SAAU,WAG3C/K,EAAM/K,UAAUC,IAAK,WACrB8K,EAAMI,gBAAiB,UACvBJ,EAAMI,gBAAiB,eAElBuwB,GAEJt0B,GAAc,CACbzG,OAAQoK,EACR/I,KAAM,UACN4c,SAAS,QAMP+c,EAAa5wB,EAAMG,aAAc,cACjCywB,IACHrR,EAAQA,EAAMrN,OAAQ0e,EAAWj5B,MAAO,YAOzCoZ,EAAQ,SAGFA,WAOC0f,GAAiBr6B,GAEzB4zB,EAAe5zB,EAAW,aAAcoE,SAASwY,IAChDA,EAAS/d,UAAUC,IAAK,WACxB8d,EAAS/d,UAAUE,OAAQ,gCAQpBu7B,GAAiBt6B,GAEzB4zB,EAAe5zB,EAAW,qBAAsBoE,SAASwY,IACxDA,EAAS/d,UAAUE,OAAQ,UAAW,gCAS/B6f,SAMP6b,EACAC,EAHG3lB,EAAmB/F,KACtB2rB,EAAyB5lB,EAAiB1U,UAIvCs6B,QAA4C,IAAXhI,EAAyB,KAIzDJ,EAAepU,GAASC,WAAa,GAAK9P,EAAOikB,aAIjDiC,IACHjC,EAAepU,GAASC,WAAa,EAAI9P,EAAOkkB,oBAI7C3D,GAAMngB,kBACT6jB,EAAe/P,OAAOC,eAGlB,IAAI9J,EAAI,EAAGA,EAAIgiB,EAAwBhiB,IAAM,KAC7CoE,EAAkBhI,EAAiB4D,GAEnC3D,EAAiB4e,EAAe7W,EAAiB,WACpD6d,EAAuB5lB,EAAe3U,UAGvCo6B,EAAYr1B,KAAK+oB,KAAOwE,GAAU,GAAMha,IAAO,EAI3CrK,EAAOojB,OACV+I,EAAYr1B,KAAK+oB,MAASwE,GAAU,GAAMha,IAAQgiB,EAAyBpI,KAAoB,GAI5FkI,EAAYlI,EACfle,GAAa1K,KAAMoT,GAGnB1I,GAAajI,OAAQ2Q,GAGlB6d,EAAuB,KAEtBC,EAAKvC,GAA0Bvb,OAE9B,IAAInE,EAAI,EAAGA,EAAIgiB,EAAsBhiB,IAAM,KAC3CoE,EAAgBhI,EAAe4D,GAEnC8hB,EAAY/hB,KAAQga,GAAU,GAAMvtB,KAAK+oB,KAAOyE,GAAU,GAAMha,GAAMxT,KAAK+oB,IAAKvV,EAAIiiB,GAEhFJ,EAAYC,EAAYnI,EAC3Ble,GAAa1K,KAAMqT,GAGnB3I,GAAajI,OAAQ4Q,KAQrBgF,KACHkR,EAAIQ,QAAQ70B,UAAUC,IAAK,uBAG3Bo0B,EAAIQ,QAAQ70B,UAAUE,OAAQ,uBAI3BgjB,KACHmR,EAAIQ,QAAQ70B,UAAUC,IAAK,yBAG3Bo0B,EAAIQ,QAAQ70B,UAAUE,OAAQ,mCAYxBod,IAAgB6R,iBAAEA,GAAmB,GAAU,QAEnDjZ,EAAmBme,EAAIQ,QAAQj1B,iBAAkBoX,GACpDb,EAAiBke,EAAIQ,QAAQj1B,iBAAkBqX,GAE5C2Q,EAAS,CACZpE,KAAMsQ,EAAS,EACfrQ,MAAOqQ,EAAS5d,EAAiB1U,OAAS,EAC1CkiB,GAAIqQ,EAAS,EACblQ,KAAMkQ,EAAS5d,EAAe3U,OAAS,MAKpCiO,EAAOojB,OACN3c,EAAiB1U,OAAS,IAC7BomB,EAAOpE,MAAO,EACdoE,EAAOnE,OAAQ,GAGZtN,EAAe3U,OAAS,IAC3BomB,EAAOlE,IAAK,EACZkE,EAAO/D,MAAO,IAIX3N,EAAiB1U,OAAS,GAA+B,WAA1BiO,EAAOyR,iBAC1C0G,EAAOnE,MAAQmE,EAAOnE,OAASmE,EAAO/D,KACtC+D,EAAOpE,KAAOoE,EAAOpE,MAAQoE,EAAOlE,KAMZ,IAArByL,EAA4B,KAC3B8M,EAAiB9e,GAAUG,kBAC/BsK,EAAOpE,KAAOoE,EAAOpE,MAAQyY,EAAeze,KAC5CoK,EAAOlE,GAAKkE,EAAOlE,IAAMuY,EAAeze,KACxCoK,EAAO/D,KAAO+D,EAAO/D,MAAQoY,EAAexe,KAC5CmK,EAAOnE,MAAQmE,EAAOnE,OAASwY,EAAexe,QAI3ChO,EAAOyF,IAAM,KACZsO,EAAOoE,EAAOpE,KAClBoE,EAAOpE,KAAOoE,EAAOnE,MACrBmE,EAAOnE,MAAQD,SAGToE,WAYCrX,GAAmBxF,EAAQgK,OAE/BmB,EAAmB/F,KAGnB+rB,EAAY,EAGhBC,EAAU,IAAK,IAAI78B,EAAI,EAAGA,EAAI4W,EAAiB1U,OAAQlC,IAAM,KAExD4e,EAAkBhI,EAAiB5W,GACnC6W,EAAiB+H,EAAgBte,iBAAkB,eAElD,IAAIk7B,EAAI,EAAGA,EAAI3kB,EAAe3U,OAAQs5B,IAAM,IAG5C3kB,EAAe2kB,KAAO/vB,QACnBoxB,EAIsC,cAAzChmB,EAAe2kB,GAAGzqB,QAAQC,YAC7B4rB,OAMEhe,IAAoBnT,SAM8B,IAAlDmT,EAAgBle,UAAU8V,SAAU,UAA8D,cAAvCoI,EAAgB7N,QAAQC,YACtF4rB,WAKKA,WAUC9T,SAGJgU,EAAa5rB,KACb0rB,EAAY3rB,QAEZwE,EAAe,KAEdsnB,EAAetnB,EAAanV,iBAAkB,gBAI9Cy8B,EAAa76B,OAAS,EAAI,KAKzB86B,EAAiB,GAGrBJ,GAPuBnnB,EAAanV,iBAAkB,qBAOtB4B,OAAS66B,EAAa76B,OAAW86B,UAK5D/1B,KAAKC,IAAK01B,GAAcE,EAAa,GAAK,YAczC1rB,GAAY3F,OAKnB5F,EAFGwL,EAAImjB,EACPhjB,EAAIijB,KAIDhpB,EAAQ,KACPwxB,EAAa1rB,GAAiB9F,GAC9ByI,EAAS+oB,EAAaxxB,EAAM9J,WAAa8J,EAGzCmL,EAAmB/F,KAGvBQ,EAAIpK,KAAKE,IAAKyP,EAAiBlI,QAASwF,GAAU,GAGlD1C,OAAI7G,EAGAsyB,IACHzrB,EAAIvK,KAAKE,IAAKsuB,EAAehqB,EAAM9J,WAAY,WAAY+M,QAASjD,GAAS,QAI1EA,GAASgK,EAAe,IACTA,EAAanV,iBAAkB,aAAc4B,OAAS,EACtD,KACdgd,EAAkBzJ,EAAa3H,cAAe,qBAEjDjI,EADGqZ,GAAmBA,EAAgB3T,aAAc,uBAChDmI,SAAUwL,EAAgBtT,aAAc,uBAAyB,IAGjE6J,EAAanV,iBAAkB,qBAAsB4B,OAAS,SAK9D,CAAEmP,IAAGG,IAAG3L,cAOPkN,YAED0iB,EAAeV,EAAIQ,QAAS9d,EAAkB,4DAS7C5G,YAED4kB,EAAeV,EAAIQ,QAAS7d,YAO3BZ,YAED2e,EAAeV,EAAIQ,QAAS,oCAO3B+F,YAED7F,EAAeV,EAAIQ,QAAS7d,EAA6B,mBAOxDkM,YAED/S,KAAsB3O,OAAS,WAM9B2hB,YAED/M,KAAoB5U,OAAS,WAQ5Bg7B,YAEDnqB,KAAY1I,KAAKoB,QAEnB0xB,EAAa,OACZ,IAAIn9B,EAAI,EAAGA,EAAIyL,EAAM0xB,WAAWj7B,OAAQlC,IAAM,KAC9Co9B,EAAY3xB,EAAM0xB,WAAYn9B,GAClCm9B,EAAYC,EAAUvX,MAASuX,EAAU38B,aAEnC08B,CAAP,aAWOjsB,YAED6B,KAAY7Q,gBASXm7B,GAAU7iB,EAAGC,OAEjBmE,EAAkB/N,KAAuB2J,GACzC3D,EAAiB+H,GAAmBA,EAAgBte,iBAAkB,kBAEtEuW,GAAkBA,EAAe3U,QAAuB,iBAANuY,EAC9C5D,EAAiBA,EAAgB4D,QAAM9P,EAGxCiU,WAeC1Q,GAAoBsM,EAAGC,OAE3BhP,EAAqB,iBAAN+O,EAAiB6iB,GAAU7iB,EAAGC,GAAMD,KACnD/O,SACIA,EAAMQ,gCAcN0sB,SAEJxnB,EAAUC,WAEP,CACNojB,OAAQrjB,EAAQE,EAChBojB,OAAQtjB,EAAQK,EAChB8rB,OAAQnsB,EAAQtL,EAChB03B,OAAQ7Z,KACR1D,SAAUA,GAASC,qBAWZud,GAAUxS,MAEG,iBAAVA,EAAqB,CAC/Bvf,GAAOgqB,EAAkBzK,EAAMwJ,QAAUiB,EAAkBzK,EAAMyJ,QAAUgB,EAAkBzK,EAAMsS,aAE/FG,EAAahI,EAAkBzK,EAAMuS,QACxCG,EAAejI,EAAkBzK,EAAMhL,UAEd,kBAAfyd,GAA4BA,IAAe/Z,MACrDc,GAAaiZ,GAGc,kBAAjBC,GAA8BA,IAAiB1d,GAASC,YAClED,GAASoB,OAAQsc,aASXvc,QAERjB,KAEIzK,IAAqC,IAArBtF,EAAOwjB,UAAsB,KAE5ClV,EAAWhJ,EAAa3H,cAAe,qBAItC2Q,IAAWA,EAAWhJ,EAAa3H,cAAe,kBAEnD6vB,EAAoBlf,EAAWA,EAAS7S,aAAc,kBAAqB,KAC3EgyB,EAAkBnoB,EAAa9T,WAAa8T,EAAa9T,WAAWiK,aAAc,kBAAqB,KACvGiyB,EAAiBpoB,EAAa7J,aAAc,kBAO5C+xB,EACHhK,EAAYjgB,SAAUiqB,EAAmB,IAEjCE,EACRlK,EAAYjgB,SAAUmqB,EAAgB,IAE9BD,EACRjK,EAAYjgB,SAAUkqB,EAAiB,KAGvCjK,EAAYxjB,EAAOwjB,UAOyC,IAAxDle,EAAanV,iBAAkB,aAAc4B,QAChDuzB,EAAehgB,EAAc,gBAAiBxP,SAAS/F,IAClDA,EAAGqL,aAAc,kBAChBooB,GAA4B,IAAdzzB,EAAGiZ,SAAkBjZ,EAAG49B,aAAiBnK,IAC1DA,EAA4B,IAAdzzB,EAAGiZ,SAAkBjZ,EAAG49B,aAAiB,UAaxDnK,GAAcuB,GAAoBxR,MAAe1D,GAASC,YAAiBua,OAAiB3c,GAAUG,kBAAkBG,OAAwB,IAAhBhO,EAAOojB,OAC1IyB,EAAmB1rB,YAAY,KACQ,mBAA3B6G,EAAOyjB,gBACjBzjB,EAAOyjB,kBAGPmK,KAED5c,OACEwS,GACHsB,EAAqBtO,KAAKC,OAGvB+N,GACHA,EAAgBlD,YAAkC,IAAtBuD,aAUtB9U,KAER7W,aAAc2rB,GACdA,GAAoB,WAIZ2F,KAEJhH,IAAcuB,IACjBA,GAAkB,EAClBptB,GAAc,CAAEpF,KAAM,oBACtB2G,aAAc2rB,GAEVL,GACHA,EAAgBlD,YAAY,aAMtBiJ,KAEJ/G,GAAauB,IAChBA,GAAkB,EAClBptB,GAAc,CAAEpF,KAAM,qBACtBye,eAKO6c,IAAa/Z,cAACA,GAAc,GAAO,IAE3C4Q,EAAkBnM,0BAA2B,EAGzCvY,EAAOyF,KACJoK,GAASC,YAAcgE,IAAsC,IAArBpG,GAAUM,SAAsBH,KAAkBkG,MAC/FzY,GAAO+oB,EAAS,EAA6B,SAA1BrkB,EAAOyR,eAA4B6S,OAAS9pB,IAItDqV,GAASC,YAAcgE,IAAsC,IAArBpG,GAAUK,SAAsBF,KAAkBkG,MACpGzY,GAAO+oB,EAAS,EAA6B,SAA1BrkB,EAAOyR,eAA4B6S,OAAS9pB,YAKxDszB,IAAcha,cAACA,GAAc,GAAO,IAE5C4Q,EAAkBnM,0BAA2B,EAGzCvY,EAAOyF,KACJoK,GAASC,YAAcgE,IAAsC,IAArBpG,GAAUK,SAAsBF,KAAkBmG,OAC/F1Y,GAAO+oB,EAAS,EAA6B,SAA1BrkB,EAAOyR,eAA4B6S,OAAS9pB,IAItDqV,GAASC,YAAcgE,IAAsC,IAArBpG,GAAUM,SAAsBH,KAAkBmG,OACpG1Y,GAAO+oB,EAAS,EAA6B,SAA1BrkB,EAAOyR,eAA4B6S,OAAS9pB,YAKxDuzB,IAAWja,cAACA,GAAc,GAAO,KAGnCjE,GAASC,YAAcgE,IAAsC,IAArBpG,GAAUK,SAAsBF,KAAkBoG,IAC/F3Y,GAAO+oB,EAAQC,EAAS,YAKjB0J,IAAala,cAACA,GAAc,GAAO,IAE3C4Q,EAAkBpM,wBAAyB,GAGrCzI,GAASC,YAAcgE,IAAsC,IAArBpG,GAAUM,SAAsBH,KAAkBuG,MAC/F9Y,GAAO+oB,EAAQC,EAAS,YAWjB2J,IAAana,cAACA,GAAc,GAAO,OAGvCA,IAAsC,IAArBpG,GAAUK,UAC1BF,KAAkBoG,GACrB8Z,GAAW,CAACja,sBAER,KAEAyQ,KAGHA,EADGvkB,EAAOyF,IACM6f,EAAeV,EAAIQ,QAAS7d,EAA6B,WAAYpU,MAGrEmyB,EAAeV,EAAIQ,QAAS7d,EAA6B,SAAUpU,MAKhFoxB,GAAiBA,EAAch0B,UAAU8V,SAAU,SAAY,KAC9DhF,EAAMkjB,EAAcp0B,iBAAkB,WAAY4B,OAAS,QAAOyI,EAEtEc,GADQ+oB,EAAS,EACPhjB,QAGVwsB,GAAa,CAAC/Z,4BAUT8Z,IAAa9Z,cAACA,GAAc,GAAO,OAE3C4Q,EAAkBnM,0BAA2B,EAC7CmM,EAAkBpM,wBAAyB,EAGvCxE,IAAsC,IAArBpG,GAAUM,OAAmB,KAE7CmK,EAAStK,KAKTsK,EAAO/D,MAAQ+D,EAAOnE,OAAShU,EAAOojB,MAAQ8G,OACjD/R,EAAO/D,MAAO,GAGX+D,EAAO/D,KACV4Z,GAAa,CAACla,kBAEN9T,EAAOyF,IACfooB,GAAa,CAAC/Z,kBAGdga,GAAc,CAACha,4BAiBTnB,GAAaxT,GAEjBa,EAAOgV,oBACVwV,cAQOtD,GAAe/nB,OAEnByF,EAAOzF,EAAMyF,QAGG,iBAATA,GAA0C,MAArBA,EAAKpB,OAAQ,IAAkD,MAAnCoB,EAAKpB,OAAQoB,EAAK7S,OAAS,KACtF6S,EAAO6jB,KAAKyF,MAAOtpB,GAGfA,EAAKnL,QAAyC,mBAAxBmB,EAAOgK,EAAKnL,aAEqB,IAAtDgO,EAA8BzT,KAAM4Q,EAAKnL,QAAqB,OAE3D6T,EAAS1S,EAAOgK,EAAKnL,QAAQma,MAAOhZ,EAAQgK,EAAKupB,MAIvDhG,GAAqB,WAAY,CAAE1uB,OAAQmL,EAAKnL,OAAQ6T,OAAQA,SAIhEqO,QAAQC,KAAM,eAAgBhX,EAAKnL,OAAQ,yDAatCouB,GAAiB1oB,GAEN,YAAf2kB,GAA4B,YAAY9vB,KAAMmL,EAAMjO,OAAOsb,YAC9DsX,EAAa,OACbnsB,GAAc,CACbpF,KAAM,qBACNqS,KAAM,CAAEyf,SAAQC,SAAQC,gBAAejf,4BAYjCsiB,GAAiBzoB,SAEnBivB,EAAS9I,EAAcnmB,EAAMjO,OAAQ,mBAOvCk9B,EAAS,OACN3Y,EAAO2Y,EAAO3yB,aAAc,QAC5BuF,EAAUlO,GAASwP,mBAAoBmT,GAEzCzU,IACHpG,EAAOU,MAAO0F,EAAQE,EAAGF,EAAQK,EAAGL,EAAQtL,GAC5CyJ,EAAMgS,4BAWAwW,GAAgBxoB,GAExBvB,cASQkqB,GAAwB3oB,IAIR,IAApBjN,SAAS2c,QAAoB3c,SAAS2gB,gBAAkB3gB,SAASyqB,OAEzB,mBAAhCzqB,SAAS2gB,cAAcwN,MACjCnuB,SAAS2gB,cAAcwN,OAExBnuB,SAASyqB,KAAKza,kBAUP+kB,GAAoB9nB,IAEdjN,SAASm8B,mBAAqBn8B,SAASo8B,2BACrC1J,EAAIQ,UACnBjmB,EAAM+D,2BAGN/J,YAAY,KACXyB,EAAOgD,SACPhD,EAAOsH,MAAMA,UACX,aAWIymB,GAAsBxpB,MAE1BA,EAAMovB,eAAiBpvB,EAAMovB,cAAcnzB,aAAc,QAAW,KACnEmB,EAAM4C,EAAMovB,cAAc9yB,aAAc,QACxCc,IACHqsB,GAAarsB,GACb4C,EAAMgS,4BAWAsW,GAAwBtoB,GAG5BkrB,OAAiC,IAAhBrqB,EAAOojB,MAC3B9nB,GAAO,EAAG,GACVivB,MAGQxF,EACRwF,KAIAC,WAWIgE,GAAM,CACXpK,UAEAc,cACAnlB,aACA7H,WAEAyM,QACA4mB,aACAkD,cAAe/gB,GAAU/I,KAAK5J,KAAM2S,IAGpCpS,SACAyY,KAAM8Z,GACN7Z,MAAO8Z,GACP7Z,GAAI8Z,GACJ3Z,KAAM4Z,GACNjgB,KAAMkgB,GACNjgB,KAAM4f,GAGNC,gBAAcC,iBAAeC,cAAYC,gBAAcC,gBAAcL,gBAGrEc,iBAAkBhhB,GAAU0B,KAAKrU,KAAM2S,IACvCihB,aAAcjhB,GAAUK,KAAKhT,KAAM2S,IACnCkhB,aAAclhB,GAAUM,KAAKjT,KAAM2S,IAGnCkV,MACAE,OAGA7jB,iBAAkB2jB,GAClB1jB,oBAAqB4jB,GAGrBllB,UAGAylB,WAGAxV,mBAGAghB,mBAAoBnhB,GAAUG,gBAAgB9S,KAAM2S,IAGpD4E,cAGAwc,eAAgBjf,GAASoB,OAAOlW,KAAM8U,IAGtCwE,eAGAY,mBAGAE,qBAGAiV,gBACAC,eACAH,uBACA9oB,mBAGAmS,YACAb,iBACA1V,eAAgB4gB,GAAM8C,qBAAqB3lB,KAAM6iB,IACjDmR,WAAYlf,GAASC,SAAS/U,KAAM8U,IACpC2C,UAAWtQ,GAAMsQ,UAAUzX,KAAMmH,IACjC9B,cAAemgB,GAAMngB,cAAcrF,KAAMwlB,IAGzC4G,QAAS,IAAM1C,EAGfuK,UAAWjpB,GAAa1K,KAAKN,KAAMgL,IACnCkpB,YAAalpB,GAAajI,OAAO/C,KAAMgL,IAGvC6iB,eACAsG,YAAa9Z,GAGbsS,qBACA1B,wBACAruB,iBAGA6wB,YACA6E,YAGA1U,eAGA1X,cAIA8rB,uBAGAjsB,qBAGAC,kBAGAmsB,YAGAiC,iBAAkB,IAAM5K,EAGxB/jB,gBAAiB,IAAM8E,EAGvBvH,sBAGA8f,cAAeD,GAAMC,cAAc9iB,KAAM6iB,IAGzChb,aAGAlC,uBACAiG,qBAIA8M,uBACAC,qBAGA6E,yBAA0B,IAAMmM,EAAkBnM,yBAClDD,uBAAwB,IAAMoM,EAAkBpM,uBAGhD3G,cAAe2B,GAAS3B,cAAc5W,KAAMuY,IAC5CvB,iBAAkBuB,GAASvB,iBAAiBhX,KAAMuY,IAGlDtB,WAAYsB,GAAStB,WAAWjX,KAAMuY,IAGtCrB,yBAA0BqB,GAASrB,yBAAyBlX,KAAMuY,IAElEnD,wBAGAhG,SAAU,IAAMF,EAGhB/O,UAAW,IAAM8E,EAGjBpN,aAAc0yB,EAGd8J,aAAct8B,GAASwO,QAAQvG,KAAMjI,IAGrCgN,iBAAkB,IAAMuX,EACxBhZ,iBAAkB,IAAMumB,EAAI/L,OAC5B9D,mBAAoB,IAAM6P,EAAIa,SAC9BzV,sBAAuB,IAAMgV,GAAYl0B,QAGzCoqB,eAAgBF,GAAQE,eAAengB,KAAMigB,IAC7CoB,UAAWpB,GAAQoB,UAAUrhB,KAAMigB,IACnCqB,UAAWrB,GAAQqB,UAAUthB,KAAMigB,IACnCqU,WAAYrU,GAAQsB,qBAAqBvhB,KAAMigB,YAKhDsK,EAAa1qB,EAAQ,IACjB4zB,GAGHvf,kBACAC,iBAGAqR,SACAre,SACAqN,YACAvQ,YACAlM,YACA+c,YACAnC,aACA3H,gBACA5F,eAEAwS,eACAyC,gBACA9E,0BACAyM,uBACAjM,mBACAE,gBACAjB,qBAGMye,EAEP,KC3wFG5zB,EAAS00B,EAeTC,EAAmB,UAEvB30B,EAAOsqB,WAAanrB,IAGnB3F,OAAOI,OAAQoG,EAAQ,IAAI00B,EAAMp9B,SAASyL,cAAe,WAAa5D,IAGtEw1B,EAAiBr1B,KAAKT,GAAUA,EAAQmB,KAEjCA,EAAOsqB,cAUf,CAAE,YAAa,KAAM,MAAO,mBAAoB,sBAAuB,kBAAmBpvB,SAAS2D,IAClGmB,EAAOnB,GAAU,IAAK00B,KACrBoB,EAAiBn1B,MAAMo1B,GAAQA,EAAK/1B,GAAQnI,KAAM,QAAS68B,KAD5D,IAKDvzB,EAAOusB,QAAU,KAAM,EAEvBvsB,EAAOwpB,QAAUA"}
\ No newline at end of file
diff --git a/dist/theme/beige.css b/dist/theme/beige.css
new file mode 100644
index 0000000..16eb913
--- /dev/null
+++ b/dist/theme/beige.css
@@ -0,0 +1,364 @@
+/**
+ * Beige theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+@import url(./fonts/league-gothic/league-gothic.css);
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 {
+ color: #fff;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #f7f3de;
+ --r-main-font: Lato, sans-serif;
+ --r-main-font-size: 40px;
+ --r-main-color: #333;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: League Gothic, Impact, sans-serif;
+ --r-heading-color: #333;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: normal;
+ --r-heading-text-transform: uppercase;
+ --r-heading-text-shadow: none;
+ --r-heading-font-weight: normal;
+ --r-heading1-text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15);
+ --r-heading1-size: 3.77em;
+ --r-heading2-size: 2.11em;
+ --r-heading3-size: 1.55em;
+ --r-heading4-size: 1em;
+ --r-code-font: monospace;
+ --r-link-color: #8b743d;
+ --r-link-color-dark: #564826;
+ --r-link-color-hover: #c0a86e;
+ --r-selection-background-color: rgba(79, 64, 28, 0.99);
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #f7f2d3;
+ background: -moz-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
+ background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, white), color-stop(100%, #f7f2d3));
+ background: -webkit-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
+ background: -o-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
+ background: -ms-radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
+ background: radial-gradient(center, circle cover, white 0%, #f7f2d3 100%);
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
\ No newline at end of file
diff --git a/dist/theme/black-contrast.css b/dist/theme/black-contrast.css
new file mode 100644
index 0000000..e69eb69
--- /dev/null
+++ b/dist/theme/black-contrast.css
@@ -0,0 +1,360 @@
+/**
+ * Black compact & high contrast reveal.js theme, with headers not in capitals.
+ *
+ * By Peter Kehl. Based on black.(s)css by Hakim El Hattab, http://hakim.se
+ *
+ * - Keep the source similar to black.css - for easy comparison.
+ * - $mainFontSize controls code blocks, too (although under some ratio).
+ */
+@import url(./fonts/source-sans-pro/source-sans-pro.css);
+section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 {
+ color: #000;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #000000;
+ --r-main-font: Source Sans Pro, Helvetica, sans-serif;
+ --r-main-font-size: 42px;
+ --r-main-color: #fff;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: Source Sans Pro, Helvetica, sans-serif;
+ --r-heading-color: #fff;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: normal;
+ --r-heading-text-transform: uppercase;
+ --r-heading-text-shadow: none;
+ --r-heading-font-weight: 600;
+ --r-heading1-text-shadow: none;
+ --r-heading1-size: 2.5em;
+ --r-heading2-size: 1.6em;
+ --r-heading3-size: 1.3em;
+ --r-heading4-size: 1em;
+ --r-code-font: monospace;
+ --r-link-color: #42affa;
+ --r-link-color-dark: #068de9;
+ --r-link-color-hover: #8dcffc;
+ --r-selection-background-color: #bee4fd;
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #000000;
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
\ No newline at end of file
diff --git a/dist/theme/black.css b/dist/theme/black.css
new file mode 100644
index 0000000..5117727
--- /dev/null
+++ b/dist/theme/black.css
@@ -0,0 +1,357 @@
+/**
+ * Black theme for reveal.js. This is the opposite of the 'white' theme.
+ *
+ * By Hakim El Hattab, http://hakim.se
+ */
+@import url(./fonts/source-sans-pro/source-sans-pro.css);
+section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 {
+ color: #222;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #191919;
+ --r-main-font: Source Sans Pro, Helvetica, sans-serif;
+ --r-main-font-size: 42px;
+ --r-main-color: #fff;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: Source Sans Pro, Helvetica, sans-serif;
+ --r-heading-color: #fff;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: normal;
+ --r-heading-text-transform: uppercase;
+ --r-heading-text-shadow: none;
+ --r-heading-font-weight: 600;
+ --r-heading1-text-shadow: none;
+ --r-heading1-size: 2.5em;
+ --r-heading2-size: 1.6em;
+ --r-heading3-size: 1.3em;
+ --r-heading4-size: 1em;
+ --r-code-font: monospace;
+ --r-link-color: #42affa;
+ --r-link-color-dark: #068de9;
+ --r-link-color-hover: #8dcffc;
+ --r-selection-background-color: rgba(66, 175, 250, 0.75);
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #191919;
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
\ No newline at end of file
diff --git a/dist/theme/blood.css b/dist/theme/blood.css
new file mode 100644
index 0000000..c48714f
--- /dev/null
+++ b/dist/theme/blood.css
@@ -0,0 +1,390 @@
+/**
+ * Blood theme for reveal.js
+ * Author: Walther http://github.com/Walther
+ *
+ * Designed to be used with highlight.js theme
+ * "monokai_sublime.css" available from
+ * https://github.com/isagalaev/highlight.js/
+ *
+ * For other themes, change $codeBackground accordingly.
+ *
+ */
+@import url(https://fonts.googleapis.com/css?family=Ubuntu:300,700,300italic,700italic);
+section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 {
+ color: #222;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #222;
+ --r-main-font: Ubuntu, sans-serif;
+ --r-main-font-size: 40px;
+ --r-main-color: #eee;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: Ubuntu, sans-serif;
+ --r-heading-color: #eee;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: normal;
+ --r-heading-text-transform: uppercase;
+ --r-heading-text-shadow: 2px 2px 2px #222;
+ --r-heading-font-weight: normal;
+ --r-heading1-text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15);
+ --r-heading1-size: 3.77em;
+ --r-heading2-size: 2.11em;
+ --r-heading3-size: 1.55em;
+ --r-heading4-size: 1em;
+ --r-code-font: monospace;
+ --r-link-color: #a23;
+ --r-link-color-dark: #6a1520;
+ --r-link-color-hover: #dd5566;
+ --r-selection-background-color: #a23;
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #222;
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
+.reveal p {
+ font-weight: 300;
+ text-shadow: 1px 1px #222;
+}
+
+section.has-light-background p, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4 {
+ text-shadow: none;
+}
+
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ font-weight: 700;
+}
+
+.reveal p code {
+ background-color: #23241f;
+ display: inline-block;
+ border-radius: 7px;
+}
+
+.reveal small code {
+ vertical-align: baseline;
+}
\ No newline at end of file
diff --git a/dist/theme/dracula.css b/dist/theme/dracula.css
new file mode 100644
index 0000000..3eb3306
--- /dev/null
+++ b/dist/theme/dracula.css
@@ -0,0 +1,414 @@
+@charset "UTF-8";
+/**
+ * Dracula Dark theme for reveal.js.
+ * Based on https://draculatheme.com
+ */
+/**
+ * Dracula colors by Zeno Rocha
+ * https://draculatheme.com/contribute
+ */
+html * {
+ color-profile: sRGB;
+ rendering-intent: auto;
+}
+
+section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 {
+ color: #282A36;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #282A36;
+ --r-main-font: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif;
+ --r-main-font-size: 40px;
+ --r-main-color: #F8F8F2;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: League Gothic, Impact, sans-serif;
+ --r-heading-color: #BD93F9;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: normal;
+ --r-heading-text-transform: none;
+ --r-heading-text-shadow: none;
+ --r-heading-font-weight: normal;
+ --r-heading1-text-shadow: none;
+ --r-heading1-size: 3.77em;
+ --r-heading2-size: 2.11em;
+ --r-heading3-size: 1.55em;
+ --r-heading4-size: 1em;
+ --r-code-font: Fira Code, Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace;
+ --r-link-color: #FF79C6;
+ --r-link-color-dark: #ff2da5;
+ --r-link-color-hover: #8BE9FD;
+ --r-selection-background-color: #44475A;
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #282A36;
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
+:root {
+ --r-bold-color: #FFB86C;
+ --r-italic-color: #F1FA8C;
+ --r-inline-code-color: #50FA7B;
+ --r-list-bullet-color: #8BE9FD;
+}
+
+.reveal strong, .reveal b {
+ color: var(--r-bold-color);
+}
+
+.reveal em, .reveal i, .reveal blockquote {
+ color: var(--r-italic-color);
+}
+
+.reveal code {
+ color: var(--r-inline-code-color);
+}
+
+.reveal ul {
+ list-style: none;
+}
+
+.reveal ul li::before {
+ content: "β’";
+ color: var(--r-list-bullet-color);
+ display: inline-block;
+ width: 1em;
+ margin-left: -1em;
+}
+
+.reveal ol {
+ list-style: none;
+ counter-reset: li;
+}
+
+.reveal ol li::before {
+ content: counter(li) ".";
+ color: var(--r-list-bullet-color);
+ display: inline-block;
+ width: 2em;
+ margin-left: -2.5em;
+ margin-right: 0.5em;
+ text-align: right;
+}
+
+.reveal ol li {
+ counter-increment: li;
+}
\ No newline at end of file
diff --git a/dist/theme/fonts/league-gothic/LICENSE b/dist/theme/fonts/league-gothic/LICENSE
new file mode 100644
index 0000000..29513e9
--- /dev/null
+++ b/dist/theme/fonts/league-gothic/LICENSE
@@ -0,0 +1,2 @@
+SIL Open Font License (OFL)
+http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=OFL
diff --git a/dist/theme/fonts/league-gothic/league-gothic.css b/dist/theme/fonts/league-gothic/league-gothic.css
new file mode 100644
index 0000000..32862f8
--- /dev/null
+++ b/dist/theme/fonts/league-gothic/league-gothic.css
@@ -0,0 +1,10 @@
+@font-face {
+ font-family: 'League Gothic';
+ src: url('./league-gothic.eot');
+ src: url('./league-gothic.eot?#iefix') format('embedded-opentype'),
+ url('./league-gothic.woff') format('woff'),
+ url('./league-gothic.ttf') format('truetype');
+
+ font-weight: normal;
+ font-style: normal;
+}
diff --git a/dist/theme/fonts/league-gothic/league-gothic.eot b/dist/theme/fonts/league-gothic/league-gothic.eot
new file mode 100755
index 0000000..f62619a
Binary files /dev/null and b/dist/theme/fonts/league-gothic/league-gothic.eot differ
diff --git a/dist/theme/fonts/league-gothic/league-gothic.ttf b/dist/theme/fonts/league-gothic/league-gothic.ttf
new file mode 100755
index 0000000..baa9a95
Binary files /dev/null and b/dist/theme/fonts/league-gothic/league-gothic.ttf differ
diff --git a/dist/theme/fonts/league-gothic/league-gothic.woff b/dist/theme/fonts/league-gothic/league-gothic.woff
new file mode 100755
index 0000000..8c1227b
Binary files /dev/null and b/dist/theme/fonts/league-gothic/league-gothic.woff differ
diff --git a/dist/theme/fonts/source-sans-pro/LICENSE b/dist/theme/fonts/source-sans-pro/LICENSE
new file mode 100644
index 0000000..71b7a02
--- /dev/null
+++ b/dist/theme/fonts/source-sans-pro/LICENSE
@@ -0,0 +1,45 @@
+SIL Open Font License
+
+Copyright 2010, 2012 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name βSourceβ. All Rights Reserved. Source is a trademark of Adobe Systems Incorporated in the United States and/or other countries.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL
+
+βββββββββββββββββββββββββββββ-
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+βββββββββββββββββββββββββββββ-
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+βFont Softwareβ refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation.
+
+βReserved Font Nameβ refers to any names specified as such after the copyright statement(s).
+
+βOriginal Versionβ refers to the collection of Font Software components as distributed by the Copyright Holder(s).
+
+βModified Versionβ refers to any derivative made by adding to, deleting, or substitutingβin part or in wholeβany of the components of the Original Version, by changing formats or by porting the Font Software to a new environment.
+
+βAuthorβ refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission.
+
+5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED βAS ISβ, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE.
\ No newline at end of file
diff --git a/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot b/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot
new file mode 100755
index 0000000..32fe466
Binary files /dev/null and b/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot differ
diff --git a/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf b/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf
new file mode 100755
index 0000000..f9ac13f
Binary files /dev/null and b/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf differ
diff --git a/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff b/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff
new file mode 100755
index 0000000..ceecbf1
Binary files /dev/null and b/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff differ
diff --git a/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot b/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot
new file mode 100755
index 0000000..4d29dda
Binary files /dev/null and b/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot differ
diff --git a/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf b/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf
new file mode 100755
index 0000000..00c833c
Binary files /dev/null and b/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf differ
diff --git a/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff b/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff
new file mode 100755
index 0000000..630754a
Binary files /dev/null and b/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff differ
diff --git a/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot b/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot
new file mode 100755
index 0000000..1104e07
Binary files /dev/null and b/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot differ
diff --git a/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf b/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf
new file mode 100755
index 0000000..6d0253d
Binary files /dev/null and b/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf differ
diff --git a/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff b/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff
new file mode 100755
index 0000000..8888cf8
Binary files /dev/null and b/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff differ
diff --git a/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot b/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot
new file mode 100755
index 0000000..cdf7334
Binary files /dev/null and b/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot differ
diff --git a/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf b/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf
new file mode 100755
index 0000000..5644299
Binary files /dev/null and b/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf differ
diff --git a/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff b/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff
new file mode 100755
index 0000000..7c2d3c7
Binary files /dev/null and b/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff differ
diff --git a/dist/theme/fonts/source-sans-pro/source-sans-pro.css b/dist/theme/fonts/source-sans-pro/source-sans-pro.css
new file mode 100644
index 0000000..99e4fb7
--- /dev/null
+++ b/dist/theme/fonts/source-sans-pro/source-sans-pro.css
@@ -0,0 +1,39 @@
+@font-face {
+ font-family: 'Source Sans Pro';
+ src: url('./source-sans-pro-regular.eot');
+ src: url('./source-sans-pro-regular.eot?#iefix') format('embedded-opentype'),
+ url('./source-sans-pro-regular.woff') format('woff'),
+ url('./source-sans-pro-regular.ttf') format('truetype');
+ font-weight: normal;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Source Sans Pro';
+ src: url('./source-sans-pro-italic.eot');
+ src: url('./source-sans-pro-italic.eot?#iefix') format('embedded-opentype'),
+ url('./source-sans-pro-italic.woff') format('woff'),
+ url('./source-sans-pro-italic.ttf') format('truetype');
+ font-weight: normal;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'Source Sans Pro';
+ src: url('./source-sans-pro-semibold.eot');
+ src: url('./source-sans-pro-semibold.eot?#iefix') format('embedded-opentype'),
+ url('./source-sans-pro-semibold.woff') format('woff'),
+ url('./source-sans-pro-semibold.ttf') format('truetype');
+ font-weight: 600;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Source Sans Pro';
+ src: url('./source-sans-pro-semibolditalic.eot');
+ src: url('./source-sans-pro-semibolditalic.eot?#iefix') format('embedded-opentype'),
+ url('./source-sans-pro-semibolditalic.woff') format('woff'),
+ url('./source-sans-pro-semibolditalic.ttf') format('truetype');
+ font-weight: 600;
+ font-style: italic;
+}
diff --git a/dist/theme/league.css b/dist/theme/league.css
new file mode 100644
index 0000000..ec11976
--- /dev/null
+++ b/dist/theme/league.css
@@ -0,0 +1,366 @@
+/**
+ * League theme for reveal.js.
+ *
+ * This was the default theme pre-3.0.0.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+@import url(./fonts/league-gothic/league-gothic.css);
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 {
+ color: #222;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #2b2b2b;
+ --r-main-font: Lato, sans-serif;
+ --r-main-font-size: 40px;
+ --r-main-color: #eee;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: League Gothic, Impact, sans-serif;
+ --r-heading-color: #eee;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: normal;
+ --r-heading-text-transform: uppercase;
+ --r-heading-text-shadow: 0px 0px 6px rgba(0, 0, 0, 0.2);
+ --r-heading-font-weight: normal;
+ --r-heading1-text-shadow: 0 1px 0 #ccc, 0 2px 0 #c9c9c9, 0 3px 0 #bbb, 0 4px 0 #b9b9b9, 0 5px 0 #aaa, 0 6px 1px rgba(0, 0, 0, 0.1), 0 0 5px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.3), 0 3px 5px rgba(0, 0, 0, 0.2), 0 5px 10px rgba(0, 0, 0, 0.25), 0 20px 20px rgba(0, 0, 0, 0.15);
+ --r-heading1-size: 3.77em;
+ --r-heading2-size: 2.11em;
+ --r-heading3-size: 1.55em;
+ --r-heading4-size: 1em;
+ --r-code-font: monospace;
+ --r-link-color: #13DAEC;
+ --r-link-color-dark: #0d99a5;
+ --r-link-color-hover: #71e9f4;
+ --r-selection-background-color: #FF5E99;
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #1c1e20;
+ background: -moz-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+ background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #555a5f), color-stop(100%, #1c1e20));
+ background: -webkit-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+ background: -o-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+ background: -ms-radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+ background: radial-gradient(center, circle cover, #555a5f 0%, #1c1e20 100%);
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
\ No newline at end of file
diff --git a/dist/theme/moon.css b/dist/theme/moon.css
new file mode 100644
index 0000000..de6f7cb
--- /dev/null
+++ b/dist/theme/moon.css
@@ -0,0 +1,365 @@
+/**
+ * Solarized Dark theme for reveal.js.
+ * Author: Achim Staebler
+ */
+@import url(./fonts/league-gothic/league-gothic.css);
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+/**
+ * Solarized colors by Ethan Schoonover
+ */
+html * {
+ color-profile: sRGB;
+ rendering-intent: auto;
+}
+
+section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 {
+ color: #222;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #002b36;
+ --r-main-font: Lato, sans-serif;
+ --r-main-font-size: 40px;
+ --r-main-color: #93a1a1;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: League Gothic, Impact, sans-serif;
+ --r-heading-color: #eee8d5;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: normal;
+ --r-heading-text-transform: uppercase;
+ --r-heading-text-shadow: none;
+ --r-heading-font-weight: normal;
+ --r-heading1-text-shadow: none;
+ --r-heading1-size: 3.77em;
+ --r-heading2-size: 2.11em;
+ --r-heading3-size: 1.55em;
+ --r-heading4-size: 1em;
+ --r-code-font: monospace;
+ --r-link-color: #268bd2;
+ --r-link-color-dark: #1a6091;
+ --r-link-color-hover: #78b9e6;
+ --r-selection-background-color: #d33682;
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #002b36;
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
\ No newline at end of file
diff --git a/dist/theme/night.css b/dist/theme/night.css
new file mode 100644
index 0000000..8ab9735
--- /dev/null
+++ b/dist/theme/night.css
@@ -0,0 +1,358 @@
+/**
+ * Black theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+@import url(https://fonts.googleapis.com/css?family=Montserrat:700);
+@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic,700italic);
+section.has-light-background, section.has-light-background h1, section.has-light-background h2, section.has-light-background h3, section.has-light-background h4, section.has-light-background h5, section.has-light-background h6 {
+ color: #222;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #111;
+ --r-main-font: Open Sans, sans-serif;
+ --r-main-font-size: 40px;
+ --r-main-color: #eee;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: Montserrat, Impact, sans-serif;
+ --r-heading-color: #eee;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: -0.03em;
+ --r-heading-text-transform: none;
+ --r-heading-text-shadow: none;
+ --r-heading-font-weight: normal;
+ --r-heading1-text-shadow: none;
+ --r-heading1-size: 3.77em;
+ --r-heading2-size: 2.11em;
+ --r-heading3-size: 1.55em;
+ --r-heading4-size: 1em;
+ --r-code-font: monospace;
+ --r-link-color: #e7ad52;
+ --r-link-color-dark: #d08a1d;
+ --r-link-color-hover: #f3d7ac;
+ --r-selection-background-color: #e7ad52;
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #111;
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
\ No newline at end of file
diff --git a/dist/theme/serif.css b/dist/theme/serif.css
new file mode 100644
index 0000000..738ffe8
--- /dev/null
+++ b/dist/theme/serif.css
@@ -0,0 +1,361 @@
+/**
+ * A simple theme for reveal.js presentations, similar
+ * to the default theme. The accent color is brown.
+ *
+ * This theme is Copyright (C) 2012-2013 Owen Versteeg, http://owenversteeg.com - it is MIT licensed.
+ */
+.reveal a {
+ line-height: 1.3em;
+}
+
+section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 {
+ color: #fff;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #F0F1EB;
+ --r-main-font: Palatino Linotype, Book Antiqua, Palatino, FreeSerif, serif;
+ --r-main-font-size: 40px;
+ --r-main-color: #000;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: Palatino Linotype, Book Antiqua, Palatino, FreeSerif, serif;
+ --r-heading-color: #383D3D;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: normal;
+ --r-heading-text-transform: none;
+ --r-heading-text-shadow: none;
+ --r-heading-font-weight: normal;
+ --r-heading1-text-shadow: none;
+ --r-heading1-size: 3.77em;
+ --r-heading2-size: 2.11em;
+ --r-heading3-size: 1.55em;
+ --r-heading4-size: 1em;
+ --r-code-font: monospace;
+ --r-link-color: #51483D;
+ --r-link-color-dark: #25211c;
+ --r-link-color-hover: #8b7c69;
+ --r-selection-background-color: #26351C;
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #F0F1EB;
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
\ No newline at end of file
diff --git a/dist/theme/simple.css b/dist/theme/simple.css
new file mode 100644
index 0000000..ffc16c9
--- /dev/null
+++ b/dist/theme/simple.css
@@ -0,0 +1,360 @@
+/**
+ * A simple theme for reveal.js presentations, similar
+ * to the default theme. The accent color is darkblue.
+ *
+ * This theme is Copyright (C) 2012 Owen Versteeg, https://github.com/StereotypicalApps. It is MIT licensed.
+ * reveal.js is Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+@import url(https://fonts.googleapis.com/css?family=News+Cycle:400,700);
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 {
+ color: #fff;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #fff;
+ --r-main-font: Lato, sans-serif;
+ --r-main-font-size: 40px;
+ --r-main-color: #000;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: News Cycle, Impact, sans-serif;
+ --r-heading-color: #000;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: normal;
+ --r-heading-text-transform: none;
+ --r-heading-text-shadow: none;
+ --r-heading-font-weight: normal;
+ --r-heading1-text-shadow: none;
+ --r-heading1-size: 3.77em;
+ --r-heading2-size: 2.11em;
+ --r-heading3-size: 1.55em;
+ --r-heading4-size: 1em;
+ --r-code-font: monospace;
+ --r-link-color: #00008B;
+ --r-link-color-dark: #00003f;
+ --r-link-color-hover: #0000f1;
+ --r-selection-background-color: rgba(0, 0, 0, 0.99);
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #fff;
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
\ No newline at end of file
diff --git a/dist/theme/sky.css b/dist/theme/sky.css
new file mode 100644
index 0000000..1720dfe
--- /dev/null
+++ b/dist/theme/sky.css
@@ -0,0 +1,368 @@
+/**
+ * Sky theme for reveal.js.
+ *
+ * Copyright (C) 2011-2012 Hakim El Hattab, http://hakim.se
+ */
+@import url(https://fonts.googleapis.com/css?family=Quicksand:400,700,400italic,700italic);
+@import url(https://fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700);
+.reveal a {
+ line-height: 1.3em;
+}
+
+section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 {
+ color: #fff;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #f7fbfc;
+ --r-main-font: Open Sans, sans-serif;
+ --r-main-font-size: 40px;
+ --r-main-color: #333;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: Quicksand, sans-serif;
+ --r-heading-color: #333;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: -0.08em;
+ --r-heading-text-transform: uppercase;
+ --r-heading-text-shadow: none;
+ --r-heading-font-weight: normal;
+ --r-heading1-text-shadow: none;
+ --r-heading1-size: 3.77em;
+ --r-heading2-size: 2.11em;
+ --r-heading3-size: 1.55em;
+ --r-heading4-size: 1em;
+ --r-code-font: monospace;
+ --r-link-color: #3b759e;
+ --r-link-color-dark: #264c66;
+ --r-link-color-hover: #74a7cb;
+ --r-selection-background-color: #134674;
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #add9e4;
+ background: -moz-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
+ background: -webkit-gradient(radial, center center, 0px, center center, 100%, color-stop(0%, #f7fbfc), color-stop(100%, #add9e4));
+ background: -webkit-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
+ background: -o-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
+ background: -ms-radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
+ background: radial-gradient(center, circle cover, #f7fbfc 0%, #add9e4 100%);
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
\ No newline at end of file
diff --git a/dist/theme/solarized.css b/dist/theme/solarized.css
new file mode 100644
index 0000000..978f48e
--- /dev/null
+++ b/dist/theme/solarized.css
@@ -0,0 +1,361 @@
+/**
+ * Solarized Light theme for reveal.js.
+ * Author: Achim Staebler
+ */
+@import url(./fonts/league-gothic/league-gothic.css);
+@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic);
+/**
+ * Solarized colors by Ethan Schoonover
+ */
+html * {
+ color-profile: sRGB;
+ rendering-intent: auto;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #fdf6e3;
+ --r-main-font: Lato, sans-serif;
+ --r-main-font-size: 40px;
+ --r-main-color: #657b83;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: League Gothic, Impact, sans-serif;
+ --r-heading-color: #586e75;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: normal;
+ --r-heading-text-transform: uppercase;
+ --r-heading-text-shadow: none;
+ --r-heading-font-weight: normal;
+ --r-heading1-text-shadow: none;
+ --r-heading1-size: 3.77em;
+ --r-heading2-size: 2.11em;
+ --r-heading3-size: 1.55em;
+ --r-heading4-size: 1em;
+ --r-code-font: monospace;
+ --r-link-color: #268bd2;
+ --r-link-color-dark: #1a6091;
+ --r-link-color-hover: #78b9e6;
+ --r-selection-background-color: #d33682;
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #fdf6e3;
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
\ No newline at end of file
diff --git a/dist/theme/white-contrast.css b/dist/theme/white-contrast.css
new file mode 100644
index 0000000..186c453
--- /dev/null
+++ b/dist/theme/white-contrast.css
@@ -0,0 +1,360 @@
+/**
+ * White compact & high contrast reveal.js theme, with headers not in capitals.
+ *
+ * By Peter Kehl. Based on white.(s)css by Hakim El Hattab, http://hakim.se
+ *
+ * - Keep the source similar to black.css - for easy comparison.
+ * - $mainFontSize controls code blocks, too (although under some ratio).
+ */
+@import url(./fonts/source-sans-pro/source-sans-pro.css);
+section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 {
+ color: #fff;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #fff;
+ --r-main-font: Source Sans Pro, Helvetica, sans-serif;
+ --r-main-font-size: 42px;
+ --r-main-color: #000;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: Source Sans Pro, Helvetica, sans-serif;
+ --r-heading-color: #000;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: normal;
+ --r-heading-text-transform: uppercase;
+ --r-heading-text-shadow: none;
+ --r-heading-font-weight: 600;
+ --r-heading1-text-shadow: none;
+ --r-heading1-size: 2.5em;
+ --r-heading2-size: 1.6em;
+ --r-heading3-size: 1.3em;
+ --r-heading4-size: 1em;
+ --r-code-font: monospace;
+ --r-link-color: #2a76dd;
+ --r-link-color-dark: #1a53a1;
+ --r-link-color-hover: #6ca0e8;
+ --r-selection-background-color: #98bdef;
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #fff;
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
\ No newline at end of file
diff --git a/dist/theme/white.css b/dist/theme/white.css
new file mode 100644
index 0000000..2218f39
--- /dev/null
+++ b/dist/theme/white.css
@@ -0,0 +1,357 @@
+/**
+ * White theme for reveal.js. This is the opposite of the 'black' theme.
+ *
+ * By Hakim El Hattab, http://hakim.se
+ */
+@import url(./fonts/source-sans-pro/source-sans-pro.css);
+section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 {
+ color: #fff;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #fff;
+ --r-main-font: Source Sans Pro, Helvetica, sans-serif;
+ --r-main-font-size: 42px;
+ --r-main-color: #222;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: Source Sans Pro, Helvetica, sans-serif;
+ --r-heading-color: #222;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: normal;
+ --r-heading-text-transform: uppercase;
+ --r-heading-text-shadow: none;
+ --r-heading-font-weight: 600;
+ --r-heading1-text-shadow: none;
+ --r-heading1-size: 2.5em;
+ --r-heading2-size: 1.6em;
+ --r-heading3-size: 1.3em;
+ --r-heading4-size: 1em;
+ --r-code-font: monospace;
+ --r-link-color: #2a76dd;
+ --r-link-color-dark: #1a53a1;
+ --r-link-color-hover: #6ca0e8;
+ --r-selection-background-color: #98bdef;
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #fff;
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
\ No newline at end of file
diff --git a/dist/theme/white_contrast_compact_verbatim_headers.css b/dist/theme/white_contrast_compact_verbatim_headers.css
new file mode 100644
index 0000000..55e8838
--- /dev/null
+++ b/dist/theme/white_contrast_compact_verbatim_headers.css
@@ -0,0 +1,360 @@
+/**
+ * White compact & high contrast reveal.js theme, with headers not in capitals.
+ *
+ * By Peter Kehl. Based on white.(s)css by Hakim El Hattab, http://hakim.se
+ *
+ * - Keep the source similar to black.css - for easy comparison.
+ * - $mainFontSize controls code blocks, too (although under some ratio).
+ */
+@import url(./fonts/source-sans-pro/source-sans-pro.css);
+section.has-dark-background, section.has-dark-background h1, section.has-dark-background h2, section.has-dark-background h3, section.has-dark-background h4, section.has-dark-background h5, section.has-dark-background h6 {
+ color: #fff;
+}
+
+/*********************************************
+ * GLOBAL STYLES
+ *********************************************/
+:root {
+ --r-background-color: #fff;
+ --r-main-font: Source Sans Pro, Helvetica, sans-serif;
+ --r-main-font-size: 25px;
+ --r-main-color: #000;
+ --r-block-margin: 20px;
+ --r-heading-margin: 0 0 20px 0;
+ --r-heading-font: Source Sans Pro, Helvetica, sans-serif;
+ --r-heading-color: #000;
+ --r-heading-line-height: 1.2;
+ --r-heading-letter-spacing: normal;
+ --r-heading-text-transform: none;
+ --r-heading-text-shadow: none;
+ --r-heading-font-weight: 450;
+ --r-heading1-text-shadow: none;
+ --r-heading1-size: 2.5em;
+ --r-heading2-size: 1.6em;
+ --r-heading3-size: 1.3em;
+ --r-heading4-size: 1em;
+ --r-code-font: monospace;
+ --r-link-color: #2a76dd;
+ --r-link-color-dark: #1a53a1;
+ --r-link-color-hover: #6ca0e8;
+ --r-selection-background-color: #98bdef;
+ --r-selection-color: #fff;
+}
+
+.reveal-viewport {
+ background: #fff;
+ background-color: var(--r-background-color);
+}
+
+.reveal {
+ font-family: var(--r-main-font);
+ font-size: var(--r-main-font-size);
+ font-weight: normal;
+ color: var(--r-main-color);
+}
+
+.reveal ::selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal ::-moz-selection {
+ color: var(--r-selection-color);
+ background: var(--r-selection-background-color);
+ text-shadow: none;
+}
+
+.reveal .slides section,
+.reveal .slides section > section {
+ line-height: 1.3;
+ font-weight: inherit;
+}
+
+/*********************************************
+ * HEADERS
+ *********************************************/
+.reveal h1,
+.reveal h2,
+.reveal h3,
+.reveal h4,
+.reveal h5,
+.reveal h6 {
+ margin: var(--r-heading-margin);
+ color: var(--r-heading-color);
+ font-family: var(--r-heading-font);
+ font-weight: var(--r-heading-font-weight);
+ line-height: var(--r-heading-line-height);
+ letter-spacing: var(--r-heading-letter-spacing);
+ text-transform: var(--r-heading-text-transform);
+ text-shadow: var(--r-heading-text-shadow);
+ word-wrap: break-word;
+}
+
+.reveal h1 {
+ font-size: var(--r-heading1-size);
+}
+
+.reveal h2 {
+ font-size: var(--r-heading2-size);
+}
+
+.reveal h3 {
+ font-size: var(--r-heading3-size);
+}
+
+.reveal h4 {
+ font-size: var(--r-heading4-size);
+}
+
+.reveal h1 {
+ text-shadow: var(--r-heading1-text-shadow);
+}
+
+/*********************************************
+ * OTHER
+ *********************************************/
+.reveal p {
+ margin: var(--r-block-margin) 0;
+ line-height: 1.3;
+}
+
+/* Remove trailing margins after titles */
+.reveal h1:last-child,
+.reveal h2:last-child,
+.reveal h3:last-child,
+.reveal h4:last-child,
+.reveal h5:last-child,
+.reveal h6:last-child {
+ margin-bottom: 0;
+}
+
+/* Ensure certain elements are never larger than the slide itself */
+.reveal img,
+.reveal video,
+.reveal iframe {
+ max-width: 95%;
+ max-height: 95%;
+}
+
+.reveal strong,
+.reveal b {
+ font-weight: bold;
+}
+
+.reveal em {
+ font-style: italic;
+}
+
+.reveal ol,
+.reveal dl,
+.reveal ul {
+ display: inline-block;
+ text-align: left;
+ margin: 0 0 0 1em;
+}
+
+.reveal ol {
+ list-style-type: decimal;
+}
+
+.reveal ul {
+ list-style-type: disc;
+}
+
+.reveal ul ul {
+ list-style-type: square;
+}
+
+.reveal ul ul ul {
+ list-style-type: circle;
+}
+
+.reveal ul ul,
+.reveal ul ol,
+.reveal ol ol,
+.reveal ol ul {
+ display: block;
+ margin-left: 40px;
+}
+
+.reveal dt {
+ font-weight: bold;
+}
+
+.reveal dd {
+ margin-left: 40px;
+}
+
+.reveal blockquote {
+ display: block;
+ position: relative;
+ width: 70%;
+ margin: var(--r-block-margin) auto;
+ padding: 5px;
+ font-style: italic;
+ background: rgba(255, 255, 255, 0.05);
+ box-shadow: 0px 0px 2px rgba(0, 0, 0, 0.2);
+}
+
+.reveal blockquote p:first-child,
+.reveal blockquote p:last-child {
+ display: inline-block;
+}
+
+.reveal q {
+ font-style: italic;
+}
+
+.reveal pre {
+ display: block;
+ position: relative;
+ width: 90%;
+ margin: var(--r-block-margin) auto;
+ text-align: left;
+ font-size: 0.55em;
+ font-family: var(--r-code-font);
+ line-height: 1.2em;
+ word-wrap: break-word;
+ box-shadow: 0px 5px 15px rgba(0, 0, 0, 0.15);
+}
+
+.reveal code {
+ font-family: var(--r-code-font);
+ text-transform: none;
+ tab-size: 2;
+}
+
+.reveal pre code {
+ display: block;
+ padding: 5px;
+ overflow: auto;
+ max-height: 400px;
+ word-wrap: normal;
+}
+
+.reveal .code-wrapper {
+ white-space: normal;
+}
+
+.reveal .code-wrapper code {
+ white-space: pre;
+}
+
+.reveal table {
+ margin: auto;
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+.reveal table th {
+ font-weight: bold;
+}
+
+.reveal table th,
+.reveal table td {
+ text-align: left;
+ padding: 0.2em 0.5em 0.2em 0.5em;
+ border-bottom: 1px solid;
+}
+
+.reveal table th[align=center],
+.reveal table td[align=center] {
+ text-align: center;
+}
+
+.reveal table th[align=right],
+.reveal table td[align=right] {
+ text-align: right;
+}
+
+.reveal table tbody tr:last-child th,
+.reveal table tbody tr:last-child td {
+ border-bottom: none;
+}
+
+.reveal sup {
+ vertical-align: super;
+ font-size: smaller;
+}
+
+.reveal sub {
+ vertical-align: sub;
+ font-size: smaller;
+}
+
+.reveal small {
+ display: inline-block;
+ font-size: 0.6em;
+ line-height: 1.2em;
+ vertical-align: top;
+}
+
+.reveal small * {
+ vertical-align: top;
+}
+
+.reveal img {
+ margin: var(--r-block-margin) 0;
+}
+
+/*********************************************
+ * LINKS
+ *********************************************/
+.reveal a {
+ color: var(--r-link-color);
+ text-decoration: none;
+ transition: color 0.15s ease;
+}
+
+.reveal a:hover {
+ color: var(--r-link-color-hover);
+ text-shadow: none;
+ border: none;
+}
+
+.reveal .roll span:after {
+ color: #fff;
+ background: var(--r-link-color-dark);
+}
+
+/*********************************************
+ * Frame helper
+ *********************************************/
+.reveal .r-frame {
+ border: 4px solid var(--r-main-color);
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.15);
+}
+
+.reveal a .r-frame {
+ transition: all 0.15s linear;
+}
+
+.reveal a:hover .r-frame {
+ border-color: var(--r-link-color);
+ box-shadow: 0 0 20px rgba(0, 0, 0, 0.55);
+}
+
+/*********************************************
+ * NAVIGATION CONTROLS
+ *********************************************/
+.reveal .controls {
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PROGRESS BAR
+ *********************************************/
+.reveal .progress {
+ background: rgba(0, 0, 0, 0.2);
+ color: var(--r-link-color);
+}
+
+/*********************************************
+ * PRINT BACKGROUND
+ *********************************************/
+@media print {
+ .backgrounds {
+ background-color: var(--r-background-color);
+ }
+}
\ No newline at end of file
diff --git a/favicon.ico b/favicon.ico
new file mode 100644
index 0000000..895fc96
Binary files /dev/null and b/favicon.ico differ
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..9d61529
--- /dev/null
+++ b/index.html
@@ -0,0 +1,23 @@
+
+
+
+
+
reveal-md
+
+
+
+
+
+
+
diff --git a/plugin/highlight/highlight.esm.js b/plugin/highlight/highlight.esm.js
new file mode 100644
index 0000000..c84e986
--- /dev/null
+++ b/plugin/highlight/highlight.esm.js
@@ -0,0 +1,5 @@
+var e={exports:{}};function t(e){return e instanceof Map?e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((function(a){var n=e[a];"object"!=typeof n||Object.isFrozen(n)||t(n)})),e}e.exports=t,e.exports.default=t;class a{constructor(e){void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}ignoreMatch(){this.isMatchIgnored=!0}}function n(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function r(e,...t){const a=Object.create(null);for(const t in e)a[t]=e[t];return t.forEach((function(e){for(const t in e)a[t]=e[t]})),a}const i=e=>!!e.scope||e.sublanguage&&e.language;class o{constructor(e,t){this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){this.buffer+=n(e)}openNode(e){if(!i(e))return;let t="";t=e.sublanguage?`language-${e.language}`:((e,{prefix:t})=>{if(e.includes(".")){const a=e.split(".");return[`${t}${a.shift()}`,...a.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")}return`${t}${e}`})(e.scope,{prefix:this.classPrefix}),this.span(t)}closeNode(e){i(e)&&(this.buffer+="")}value(){return this.buffer}span(e){this.buffer+=`
`}}const s=(e={})=>{const t={children:[]};return Object.assign(t,e),t};class l{constructor(){this.rootNode=s(),this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t=s({scope:e});this.add(t),this.stack.push(t)}closeNode(){if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{l._collapse(e)})))}}class c extends l{constructor(e){super(),this.options=e}addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const a=e.root;a.sublanguage=!0,a.language=t,this.add(a)}toHTML(){return new o(this,this.options).value()}finalize(){return!0}}function _(e){return e?"string"==typeof e?e:e.source:null}function d(e){return u("(?=",e,")")}function m(e){return u("(?:",e,")*")}function p(e){return u("(?:",e,")?")}function u(...e){return e.map((e=>_(e))).join("")}function g(...e){const t=function(e){const t=e[e.length-1];return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}}(e);return"("+(t.capture?"":"?:")+e.map((e=>_(e))).join("|")+")"}function E(e){return new RegExp(e.toString()+"|").exec("").length-1}const S=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function b(e,{joinWith:t}){let a=0;return e.map((e=>{a+=1;const t=a;let n=_(e),r="";for(;n.length>0;){const e=S.exec(n);if(!e){r+=n;break}r+=n.substring(0,e.index),n=n.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+String(Number(e[1])+t):(r+=e[0],"("===e[0]&&a++)}return r})).map((e=>`(${e})`)).join(t)}const T="[a-zA-Z]\\w*",f="[a-zA-Z_]\\w*",C="\\b\\d+(\\.\\d+)?",N="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",R="\\b(0b[01]+)",O={begin:"\\\\[\\s\\S]",relevance:0},h={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[O]},v={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[O]},I=function(e,t,a={}){const n=r({scope:"comment",begin:e,end:t,contains:[]},a);n.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0});const i=g("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);return n.contains.push({begin:u(/[ ]+/,"(",i,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),n},A=I("//","$"),y=I("/\\*","\\*/"),D=I("#","$"),M={scope:"number",begin:C,relevance:0},L={scope:"number",begin:N,relevance:0},x={scope:"number",begin:R,relevance:0},w={begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[O,{begin:/\[/,end:/\]/,relevance:0,contains:[O]}]}]},P={scope:"title",begin:T,relevance:0},k={scope:"title",begin:f,relevance:0},U={begin:"\\.\\s*"+f,relevance:0};var F=Object.freeze({__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:T,UNDERSCORE_IDENT_RE:f,NUMBER_RE:C,C_NUMBER_RE:N,BINARY_NUMBER_RE:R,RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",SHEBANG:(e={})=>{const t=/^#![ ]*\//;return e.binary&&(e.begin=u(t,/.*\b/,e.binary,/\b.*/)),r({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},BACKSLASH_ESCAPE:O,APOS_STRING_MODE:h,QUOTE_STRING_MODE:v,PHRASAL_WORDS_MODE:{begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},COMMENT:I,C_LINE_COMMENT_MODE:A,C_BLOCK_COMMENT_MODE:y,HASH_COMMENT_MODE:D,NUMBER_MODE:M,C_NUMBER_MODE:L,BINARY_NUMBER_MODE:x,REGEXP_MODE:w,TITLE_MODE:P,UNDERSCORE_TITLE_MODE:k,METHOD_GUARD:U,END_SAME_AS_BEGIN:function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{t.data._beginMatch!==e[1]&&t.ignoreMatch()}})}});function B(e,t){"."===e.input[e.index-1]&&t.ignoreMatch()}function G(e,t){void 0!==e.className&&(e.scope=e.className,delete e.className)}function Y(e,t){t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",e.__beforeBegin=B,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,void 0===e.relevance&&(e.relevance=0))}function H(e,t){Array.isArray(e.illegal)&&(e.illegal=g(...e.illegal))}function V(e,t){if(e.match){if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match,delete e.match}}function q(e,t){void 0===e.relevance&&(e.relevance=1)}const z=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const a=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]})),e.keywords=a.keywords,e.begin=u(a.beforeMatch,d(a.begin)),e.starts={relevance:0,contains:[Object.assign(a,{endsParent:!0})]},e.relevance=0,delete a.beforeMatch},$=["of","and","for","in","not","or","if","then","parent","list","value"];function W(e,t,a="keyword"){const n=Object.create(null);return"string"==typeof e?r(a,e.split(" ")):Array.isArray(e)?r(a,e):Object.keys(e).forEach((function(a){Object.assign(n,W(e[a],t,a))})),n;function r(e,a){t&&(a=a.map((e=>e.toLowerCase()))),a.forEach((function(t){const a=t.split("|");n[a[0]]=[e,Q(a[0],a[1])]}))}}function Q(e,t){return t?Number(t):function(e){return $.includes(e.toLowerCase())}(e)?0:1}const K={},j=e=>{console.error(e)},X=(e,...t)=>{console.log(`WARN: ${e}`,...t)},Z=(e,t)=>{K[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),K[`${e}/${t}`]=!0)},J=new Error;function ee(e,t,{key:a}){let n=0;const r=e[a],i={},o={};for(let e=1;e<=t.length;e++)o[e+n]=r[e],i[e+n]=!0,n+=E(t[e-1]);e[a]=o,e[a]._emit=i,e[a]._multi=!0}function te(e){!function(e){e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,delete e.scope)}(e),"string"==typeof e.beginScope&&(e.beginScope={_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope}),function(e){if(Array.isArray(e.begin)){if(e.skip||e.excludeBegin||e.returnBegin)throw j("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),J;if("object"!=typeof e.beginScope||null===e.beginScope)throw j("beginScope must be object"),J;ee(e,e.begin,{key:"beginScope"}),e.begin=b(e.begin,{joinWith:""})}}(e),function(e){if(Array.isArray(e.end)){if(e.skip||e.excludeEnd||e.returnEnd)throw j("skip, excludeEnd, returnEnd not compatible with endScope: {}"),J;if("object"!=typeof e.endScope||null===e.endScope)throw j("endScope must be object"),J;ee(e,e.end,{key:"endScope"}),e.end=b(e.end,{joinWith:""})}}(e)}function ae(e){function t(t,a){return new RegExp(_(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(a?"g":""))}class a{constructor(){this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}addRule(e,t){t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),this.matchAt+=E(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null);const e=this.regexes.map((e=>e[1]));this.matcherRe=t(b(e,{joinWith:"|"}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t)return null;const a=t.findIndex(((e,t)=>t>0&&void 0!==e)),n=this.matchIndexes[a];return t.splice(0,a),Object.assign(t,n)}}class n{constructor(){this.rules=[],this.multiRegexes=[],this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new a;return this.rules.slice(e).forEach((([e,a])=>t.addRule(e,a))),t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let a=t.exec(e);if(this.resumingScanAtSamePosition())if(a&&a.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,a=t.exec(e)}return a&&(this.regexIndex+=a.position+1,this.regexIndex===this.count&&this.considerAll()),a}}if(e.compilerExtensions||(e.compilerExtensions=[]),e.contains&&e.contains.includes("self"))throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.");return e.classNameAliases=r(e.classNameAliases||{}),function a(i,o){const s=i;if(i.isCompiled)return s;[G,V,te,z].forEach((e=>e(i,o))),e.compilerExtensions.forEach((e=>e(i,o))),i.__beforeBegin=null,[Y,H,q].forEach((e=>e(i,o))),i.isCompiled=!0;let l=null;return"object"==typeof i.keywords&&i.keywords.$pattern&&(i.keywords=Object.assign({},i.keywords),l=i.keywords.$pattern,delete i.keywords.$pattern),l=l||/\w+/,i.keywords&&(i.keywords=W(i.keywords,e.case_insensitive)),s.keywordPatternRe=t(l,!0),o&&(i.begin||(i.begin=/\B|\b/),s.beginRe=t(s.begin),i.end||i.endsWithParent||(i.end=/\B|\b/),i.end&&(s.endRe=t(s.end)),s.terminatorEnd=_(s.end)||"",i.endsWithParent&&o.terminatorEnd&&(s.terminatorEnd+=(i.end?"|":"")+o.terminatorEnd)),i.illegal&&(s.illegalRe=t(i.illegal)),i.contains||(i.contains=[]),i.contains=[].concat(...i.contains.map((function(e){return function(e){e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((function(t){return r(e,{variants:null},t)})));if(e.cachedVariants)return e.cachedVariants;if(ne(e))return r(e,{starts:e.starts?r(e.starts):null});if(Object.isFrozen(e))return r(e);return e}("self"===e?i:e)}))),i.contains.forEach((function(e){a(e,s)})),i.starts&&a(i.starts,o),s.matcher=function(e){const t=new n;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t}(s),s}(e)}function ne(e){return!!e&&(e.endsWithParent||ne(e.starts))}class re extends Error{constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}const ie=n,oe=r,se=Symbol("nomatch");var le=function(t){const n=Object.create(null),r=Object.create(null),i=[];let o=!0;const s="Could not find the language '{}', did you forget to load/include a language module?",l={disableAutodetect:!0,name:"Plain text",contains:[]};let _={ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:c};function E(e){return _.noHighlightRe.test(e)}function S(e,t,a){let n="",r="";"object"==typeof t?(n=e,a=t.ignoreIllegals,r=t.language):(Z("10.7.0","highlight(lang, code, ...args) has been deprecated."),Z("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),r=e,n=t),void 0===a&&(a=!0);const i={code:n,language:r};v("before:highlight",i);const o=i.result?i.result:b(i.language,i.code,a);return o.code=i.code,v("after:highlight",o),o}function b(e,t,r,i){const l=Object.create(null);function c(){if(!h.keywords)return void I.addText(A);let e=0;h.keywordPatternRe.lastIndex=0;let t=h.keywordPatternRe.exec(A),a="";for(;t;){a+=A.substring(e,t.index);const r=C.case_insensitive?t[0].toLowerCase():t[0],i=(n=r,h.keywords[n]);if(i){const[e,n]=i;if(I.addText(a),a="",l[r]=(l[r]||0)+1,l[r]<=7&&(y+=n),e.startsWith("_"))a+=t[0];else{const a=C.classNameAliases[e]||e;I.addKeyword(t[0],a)}}else a+=t[0];e=h.keywordPatternRe.lastIndex,t=h.keywordPatternRe.exec(A)}var n;a+=A.substring(e),I.addText(a)}function d(){null!=h.subLanguage?function(){if(""===A)return;let e=null;if("string"==typeof h.subLanguage){if(!n[h.subLanguage])return void I.addText(A);e=b(h.subLanguage,A,!0,v[h.subLanguage]),v[h.subLanguage]=e._top}else e=T(A,h.subLanguage.length?h.subLanguage:null);h.relevance>0&&(y+=e.relevance),I.addSublanguage(e._emitter,e.language)}():c(),A=""}function m(e,t){let a=1;const n=t.length-1;for(;a<=n;){if(!e._emit[a]){a++;continue}const n=C.classNameAliases[e[a]]||e[a],r=t[a];n?I.addKeyword(r,n):(A=r,c(),A=""),a++}}function p(e,t){return e.scope&&"string"==typeof e.scope&&I.openNode(C.classNameAliases[e.scope]||e.scope),e.beginScope&&(e.beginScope._wrap?(I.addKeyword(A,C.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),A=""):e.beginScope._multi&&(m(e.beginScope,t),A="")),h=Object.create(e,{parent:{value:h}}),h}function u(e,t,n){let r=function(e,t){const a=e&&e.exec(t);return a&&0===a.index}(e.endRe,n);if(r){if(e["on:end"]){const n=new a(e);e["on:end"](t,n),n.isMatchIgnored&&(r=!1)}if(r){for(;e.endsParent&&e.parent;)e=e.parent;return e}}if(e.endsWithParent)return u(e.parent,t,n)}function g(e){return 0===h.matcher.regexIndex?(A+=e[0],1):(L=!0,0)}function E(e){const a=e[0],n=t.substring(e.index),r=u(h,e,n);if(!r)return se;const i=h;h.endScope&&h.endScope._wrap?(d(),I.addKeyword(a,h.endScope._wrap)):h.endScope&&h.endScope._multi?(d(),m(h.endScope,e)):i.skip?A+=a:(i.returnEnd||i.excludeEnd||(A+=a),d(),i.excludeEnd&&(A=a));do{h.scope&&I.closeNode(),h.skip||h.subLanguage||(y+=h.relevance),h=h.parent}while(h!==r.parent);return r.starts&&p(r.starts,e),i.returnEnd?0:a.length}let S={};function f(n,i){const s=i&&i[0];if(A+=n,null==s)return d(),0;if("begin"===S.type&&"end"===i.type&&S.index===i.index&&""===s){if(A+=t.slice(i.index,i.index+1),!o){const t=new Error(`0 width match regex (${e})`);throw t.languageName=e,t.badRule=S.rule,t}return 1}if(S=i,"begin"===i.type)return function(e){const t=e[0],n=e.rule,r=new a(n),i=[n.__beforeBegin,n["on:begin"]];for(const a of i)if(a&&(a(e,r),r.isMatchIgnored))return g(t);return n.skip?A+=t:(n.excludeBegin&&(A+=t),d(),n.returnBegin||n.excludeBegin||(A=t)),p(n,e),n.returnBegin?0:t.length}(i);if("illegal"===i.type&&!r){const e=new Error('Illegal lexeme "'+s+'" for mode "'+(h.scope||"")+'"');throw e.mode=h,e}if("end"===i.type){const e=E(i);if(e!==se)return e}if("illegal"===i.type&&""===s)return 1;if(M>1e5&&M>3*i.index){throw new Error("potential infinite loop, way more iterations than matches")}return A+=s,s.length}const C=R(e);if(!C)throw j(s.replace("{}",e)),new Error('Unknown language: "'+e+'"');const N=ae(C);let O="",h=i||N;const v={},I=new _.__emitter(_);!function(){const e=[];for(let t=h;t!==C;t=t.parent)t.scope&&e.unshift(t.scope);e.forEach((e=>I.openNode(e)))}();let A="",y=0,D=0,M=0,L=!1;try{for(h.matcher.considerAll();;){M++,L?L=!1:h.matcher.considerAll(),h.matcher.lastIndex=D;const e=h.matcher.exec(t);if(!e)break;const a=f(t.substring(D,e.index),e);D=e.index+a}return f(t.substring(D)),I.closeAllNodes(),I.finalize(),O=I.toHTML(),{language:e,value:O,relevance:y,illegal:!1,_emitter:I,_top:h}}catch(a){if(a.message&&a.message.includes("Illegal"))return{language:e,value:ie(t),illegal:!0,relevance:0,_illegalBy:{message:a.message,index:D,context:t.slice(D-100,D+100),mode:a.mode,resultSoFar:O},_emitter:I};if(o)return{language:e,value:ie(t),illegal:!1,relevance:0,errorRaised:a,_emitter:I,_top:h};throw a}}function T(e,t){t=t||_.languages||Object.keys(n);const a=function(e){const t={value:ie(e),illegal:!1,relevance:0,_top:l,_emitter:new _.__emitter(_)};return t._emitter.addText(e),t}(e),r=t.filter(R).filter(h).map((t=>b(t,e,!1)));r.unshift(a);const i=r.sort(((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if(R(e.language).supersetOf===t.language)return 1;if(R(t.language).supersetOf===e.language)return-1}return 0})),[o,s]=i,c=o;return c.secondBest=s,c}function f(e){let t=null;const a=function(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const a=_.languageDetectRe.exec(t);if(a){const t=R(a[1]);return t||(X(s.replace("{}",a[1])),X("Falling back to no-highlight mode for this block.",e)),t?a[1]:"no-highlight"}return t.split(/\s+/).find((e=>E(e)||R(e)))}(e);if(E(a))return;if(v("before:highlightElement",{el:e,language:a}),e.children.length>0&&(_.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),console.warn("The element with unescaped HTML:"),console.warn(e)),_.throwUnescapedHTML)){throw new re("One of your code blocks includes unescaped HTML.",e.innerHTML)}t=e;const n=t.textContent,i=a?S(n,{language:a,ignoreIllegals:!0}):T(n);e.innerHTML=i.value,function(e,t,a){const n=t&&r[t]||a;e.classList.add("hljs"),e.classList.add(`language-${n}`)}(e,a,i.language),e.result={language:i.language,re:i.relevance,relevance:i.relevance},i.secondBest&&(e.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance}),v("after:highlightElement",{el:e,result:i,text:n})}let C=!1;function N(){if("loading"===document.readyState)return void(C=!0);document.querySelectorAll(_.cssSelector).forEach(f)}function R(e){return e=(e||"").toLowerCase(),n[e]||n[r[e]]}function O(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{r[e.toLowerCase()]=t}))}function h(e){const t=R(e);return t&&!t.disableAutodetect}function v(e,t){const a=e;i.forEach((function(e){e[a]&&e[a](t)}))}"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(function(){C&&N()}),!1),Object.assign(t,{highlight:S,highlightAuto:T,highlightAll:N,highlightElement:f,highlightBlock:function(e){return Z("10.7.0","highlightBlock will be removed entirely in v12.0"),Z("10.7.0","Please use highlightElement now."),f(e)},configure:function(e){_=oe(_,e)},initHighlighting:()=>{N(),Z("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},initHighlightingOnLoad:function(){N(),Z("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")},registerLanguage:function(e,a){let r=null;try{r=a(t)}catch(t){if(j("Language definition for '{}' could not be registered.".replace("{}",e)),!o)throw t;j(t),r=l}r.name||(r.name=e),n[e]=r,r.rawDefinition=a.bind(null,t),r.aliases&&O(r.aliases,{languageName:e})},unregisterLanguage:function(e){delete n[e];for(const t of Object.keys(r))r[t]===e&&delete r[t]},listLanguages:function(){return Object.keys(n)},getLanguage:R,registerAliases:O,autoDetection:h,inherit:oe,addPlugin:function(e){!function(e){e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))})}(e),i.push(e)}}),t.debugMode=function(){o=!1},t.safeMode=function(){o=!0},t.versionString="11.7.0",t.regex={concat:u,lookahead:d,either:g,optional:p,anyNumberOfTimes:m};for(const t in F)"object"==typeof F[t]&&e.exports(F[t]);return Object.assign(t,F),t}({}),ce=le;le.HighlightJS=le,le.default=le;var _e=function(e){const t="[A-Za-zΠ-Π―Π°-ΡΡΠ_][A-Za-zΠ-Π―Π°-ΡΡΠ_0-9]+",a="Π΄Π°Π»Π΅Π΅ Π²ΠΎΠ·Π²ΡΠ°Ρ Π²ΡΠ·Π²Π°ΡΡΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ Π΄Π»Ρ Π΅ΡΠ»ΠΈ ΠΈ ΠΈΠ· ΠΈΠ»ΠΈ ΠΈΠ½Π°ΡΠ΅ ΠΈΠ½Π°ΡΠ΅Π΅ΡΠ»ΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½Π΅ΡΠ΅ΡΠ»ΠΈ ΠΊΠΎΠ½Π΅ΡΠΏΠΎΠΏΡΡΠΊΠΈ ΠΊΠΎΠ½Π΅ΡΡΠΈΠΊΠ»Π° Π½Π΅ Π½ΠΎΠ²ΡΠΉ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ ΠΏΠ΅ΡΠ΅ΠΌ ΠΏΠΎ ΠΏΠΎΠΊΠ° ΠΏΠΎΠΏΡΡΠΊΠ° ΠΏΡΠ΅ΡΠ²Π°ΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΠΎΠ³Π΄Π° ΡΠΈΠΊΠ» ΡΠΊΡΠΏΠΎΡΡ ",n="null ΠΈΡΡΠΈΠ½Π° Π»ΠΎΠΆΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ",r=e.inherit(e.NUMBER_MODE),i={className:"string",begin:'"|\\|',end:'"|$',contains:[{begin:'""'}]},o={begin:"'",end:"'",excludeBegin:!0,excludeEnd:!0,contains:[{className:"number",begin:"\\d{4}([\\.\\\\/:-]?\\d{2}){0,5}"}]},s=e.inherit(e.C_LINE_COMMENT_MODE);return{name:"1C:Enterprise",case_insensitive:!0,keywords:{$pattern:t,keyword:a,built_in:"ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΡΡΡΠ°Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΡΡΡΠΎΠΊ ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ ansitooem oemtoansi Π²Π²Π΅ΡΡΠΈΠ²ΠΈΠ΄ΡΡΠ±ΠΊΠΎΠ½ΡΠΎ Π²Π²Π΅ΡΡΠΈΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ Π²Π²Π΅ΡΡΠΈΠΏΠ΅ΡΠΈΠΎΠ΄ Π²Π²Π΅ΡΡΠΈΠΏΠ»Π°Π½ΡΡΠ΅ΡΠΎΠ² Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉΠΏΠ»Π°Π½ΡΡΠ΅ΡΠΎΠ² Π΄Π°ΡΠ°Π³ΠΎΠ΄ Π΄Π°ΡΠ°ΠΌΠ΅ΡΡΡ Π΄Π°ΡΠ°ΡΠΈΡΠ»ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊΡΠΈΡΡΠ΅ΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Π²ΡΡΡΠΎΠΊΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΈΠ·ΡΡΡΠΎΠΊΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈΠ± ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠΎΠ΄ΡΠΈΠΌΠ² ΠΊΠΎΠ½Π³ΠΎΠ΄Π° ΠΊΠΎΠ½Π΅ΡΠΏΠ΅ΡΠΈΠΎΠ΄Π°Π±ΠΈ ΠΊΠΎΠ½Π΅ΡΡΠ°ΡΡΡΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎΠΏΠ΅ΡΠΈΠΎΠ΄Π°Π±ΠΈ ΠΊΠΎΠ½Π΅ΡΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° ΠΊΠΎΠ½ΠΊΠ²Π°ΡΡΠ°Π»Π° ΠΊΠΎΠ½ΠΌΠ΅ΡΡΡΠ° ΠΊΠΎΠ½Π½Π΅Π΄Π΅Π»ΠΈ Π»ΠΎΠ³ Π»ΠΎΠ³10 ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΡΠ±ΠΊΠΎΠ½ΡΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π°Π·Π²Π°Π½ΠΈΠ΅Π½Π°Π±ΠΎΡΠ°ΠΏΡΠ°Π² Π½Π°Π·Π½Π°ΡΠΈΡΡΠ²ΠΈΠ΄ Π½Π°Π·Π½Π°ΡΠΈΡΡΡΡΠ΅Ρ Π½Π°ΠΉΡΠΈΡΡΡΠ»ΠΊΠΈ Π½Π°ΡΠ°Π»ΠΎΠΏΠ΅ΡΠΈΠΎΠ΄Π°Π±ΠΈ Π½Π°ΡΠ°Π»ΠΎΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π° Π½Π°ΡΠ³ΠΎΠ΄Π° Π½Π°ΡΠΊΠ²Π°ΡΡΠ°Π»Π° Π½Π°ΡΠΌΠ΅ΡΡΡΠ° Π½Π°ΡΠ½Π΅Π΄Π΅Π»ΠΈ Π½ΠΎΠΌΠ΅ΡΠ΄Π½ΡΠ³ΠΎΠ΄Π° Π½ΠΎΠΌΠ΅ΡΠ΄Π½ΡΠ½Π΅Π΄Π΅Π»ΠΈ Π½ΠΎΠΌΠ΅ΡΠ½Π΅Π΄Π΅Π»ΠΈΠ³ΠΎΠ΄Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉΠΆΡΡΠ½Π°Π»ΡΠ°ΡΡΠ΅ΡΠΎΠ² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉΠΏΠ»Π°Π½ΡΡΠ΅ΡΠΎΠ² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉΡΠ·ΡΠΊ ΠΎΡΠΈΡΡΠΈΡΡΠΎΠΊΠ½ΠΎΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠ΅ΡΠΈΠΎΠ΄ΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΠ²ΡΠ΅ΠΌΡΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠ΄Π°ΡΡΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠ·Π½Π°ΡΠ΅Π½ΠΈΡΠΎΡΠ±ΠΎΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠΏΠΎΠ·ΠΈΡΠΈΡΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠΏΡΡΡΠΎΠ΅Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠ° ΠΏΡΠ΅ΡΠΈΠΊΡΠ°Π²ΡΠΎΠ½ΡΠΌΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠΏΠΈΡΡ ΠΏΡΡΡΠΎΠ΅Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π·ΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΠΏΠΎΠ·ΠΈΡΠΈΡΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠ°ΡΡΡΠΈΡΠ°ΡΡΡΠ΅Π³ΠΈΡΡΡΡΠ½Π° ΡΠ°ΡΡΡΠΈΡΠ°ΡΡΡΠ΅Π³ΠΈΡΡΡΡΠΏΠΎ ΡΠΈΠΌΠ² ΡΠΎΠ·Π΄Π°ΡΡΠΎΠ±ΡΠ΅ΠΊΡ ΡΡΠ°ΡΡΡΠ²ΠΎΠ·Π²ΡΠ°ΡΠ° ΡΡΡΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΡΡΠΎΠΊ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡΠΏΠΎΠ·ΠΈΡΠΈΡΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΡΠ΅ΡΠΏΠΎΠΊΠΎΠ΄Ρ ΡΠ΅ΠΊΡΡΠ΅Π΅Π²ΡΠ΅ΠΌΡ ΡΠΈΠΏΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ·Π½Π°ΡΠ΅Π½ΠΈΡΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΠ°Π½Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΠ°ΠΏΠΎ ΡΠΈΠΊΡΡΠ°Π±Π»ΠΎΠ½ ΡΠ°Π±Π»ΠΎΠ½ acos asin atan base64Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ base64ΡΡΡΠΎΠΊΠ° cos exp log log10 pow sin sqrt tan xmlΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ xmlΡΡΡΠΎΠΊΠ° xmlΡΠΈΠΏ xmlΡΠΈΠΏΠ·Π½Ρ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ΠΎΠΊΠ½ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉΡΠ΅ΠΆΠΈΠΌ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉΡΠ΅ΠΆΠΈΠΌΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡΠ΄Π°Π½Π½ΡΡ
Π±ΡΠ»Π΅Π²ΠΎ Π²Π²Π΅ΡΡΠΈΠ΄Π°ΡΡ Π²Π²Π΅ΡΡΠΈΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²Π²Π΅ΡΡΠΈΡΡΡΠΎΠΊΡ Π²Π²Π΅ΡΡΠΈΡΠΈΡΠ»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡΡΠ΅Π½ΠΈΡxml Π²ΠΎΠΏΡΠΎΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅Π³ Π²ΡΠ³ΡΡΠ·ΠΈΡΡΠΆΡΡΠ½Π°Π»ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡΠΏΡΠΎΠ²Π΅ΡΠΊΡΠΏΡΠ°Π²Π΄ΠΎΡΡΡΠΏΠ° Π²ΡΡΠΈΡΠ»ΠΈΡΡ Π³ΠΎΠ΄ Π΄Π°Π½Π½ΡΠ΅ΡΠΎΡΠΌΡΠ²Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π°ΡΠ° Π΄Π΅Π½Ρ Π΄Π΅Π½ΡΠ³ΠΎΠ΄Π° Π΄Π΅Π½ΡΠ½Π΅Π΄Π΅Π»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡΠΌΠ΅ΡΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΠ΄Π°Π½Π½ΡΠ΅Π΄Π»ΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΡΠ°Π±ΠΎΡΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°Π²Π΅ΡΡΠΈΡΡΡΠ°Π±ΠΎΡΡΡΠΈΡΡΠ΅ΠΌΡ Π·Π°Π³ΡΡΠ·ΠΈΡΡΠ²Π½Π΅ΡΠ½ΡΡΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π·Π°ΠΊΡΡΡΡΡΠΏΡΠ°Π²ΠΊΡ Π·Π°ΠΏΠΈΡΠ°ΡΡjson Π·Π°ΠΏΠΈΡΠ°ΡΡxml Π·Π°ΠΏΠΈΡΠ°ΡΡΠ΄Π°ΡΡjson Π·Π°ΠΏΠΈΡΡΠΆΡΡΠ½Π°Π»Π°ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡΠ·Π½Π°ΡΠ΅Π½ΠΈΡΡΠ²ΠΎΠΉΡΡΠ² Π·Π°ΠΏΡΠΎΡΠΈΡΡΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°ΠΏΡΡΡΠΈΡΡΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡΡΠΈΡΡΠ΅ΠΌΡ Π·Π°ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°ΡΡΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Π²Π΄Π°Π½Π½ΡΠ΅ΡΠΎΡΠΌΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Π²ΡΡΡΠΎΠΊΡΠ²Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Π²ΡΠ°ΠΉΠ» Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΈΠ·ΡΡΡΠΎΠΊΠΈΠ²Π½ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΈΠ·ΡΠ°ΠΉΠ»Π° ΠΈΠ·xmlΡΠΈΠΏΠ° ΠΈΠΌΠΏΠΎΡΡΠΌΠΎΠ΄Π΅Π»ΠΈxdto ΠΈΠΌΡΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ° ΠΈΠΌΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ±ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠ±Π°Π·Ρ ΠΊΠΎΠ΄ΡΠΈΠΌΠ²ΠΎΠ»Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠΎΠ½Π΅ΡΠ³ΠΎΠ΄Π° ΠΊΠΎΠ½Π΅ΡΠ΄Π½Ρ ΠΊΠΎΠ½Π΅ΡΠΊΠ²Π°ΡΡΠ°Π»Π° ΠΊΠΎΠ½Π΅ΡΠΌΠ΅ΡΡΡΠ° ΠΊΠΎΠ½Π΅ΡΠΌΠΈΠ½ΡΡΡ ΠΊΠΎΠ½Π΅ΡΠ½Π΅Π΄Π΅Π»ΠΈ ΠΊΠΎΠ½Π΅ΡΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠ±Π°Π·ΡΠ΄Π°Π½Π½ΡΡ
ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π°Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π° ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡΠ΄Π°Π½Π½ΡΠ΅ΡΠΎΡΠΌΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡΡΠ°ΠΉΠ» ΠΊΡΠ°ΡΠΊΠΎΠ΅ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΎΡΠΈΠ±ΠΊΠΈ Π»Π΅Π² ΠΌΠ°ΠΊΡ ΠΌΠ΅ΡΡΠ½ΠΎΠ΅Π²ΡΠ΅ΠΌΡ ΠΌΠ΅ΡΡΡ ΠΌΠΈΠ½ ΠΌΠΈΠ½ΡΡΠ° ΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΡΠΉΡΠ΅ΠΆΠΈΠΌ Π½Π°ΠΉΡΠΈ Π½Π°ΠΉΡΠΈΠ½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ΡΠΈΠΌΠ²ΠΎΠ»Ρxml Π½Π°ΠΉΡΠΈΠΎΠΊΠ½ΠΎΠΏΠΎΠ½Π°Π²ΠΈΠ³Π°ΡΠΈΠΎΠ½Π½ΠΎΠΉΡΡΡΠ»ΠΊΠ΅ Π½Π°ΠΉΡΠΈΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅Π½Π°ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΉΡΠΈΠΏΠΎΡΡΡΠ»ΠΊΠ°ΠΌ Π½Π°ΠΉΡΠΈΡΠ°ΠΉΠ»Ρ Π½Π°ΡΠ°Π»ΠΎΠ³ΠΎΠ΄Π° Π½Π°ΡΠ°Π»ΠΎΠ΄Π½Ρ Π½Π°ΡΠ°Π»ΠΎΠΊΠ²Π°ΡΡΠ°Π»Π° Π½Π°ΡΠ°Π»ΠΎΠΌΠ΅ΡΡΡΠ° Π½Π°ΡΠ°Π»ΠΎΠΌΠΈΠ½ΡΡΡ Π½Π°ΡΠ°Π»ΠΎΠ½Π΅Π΄Π΅Π»ΠΈ Π½Π°ΡΠ°Π»ΠΎΡΠ°ΡΠ° Π½Π°ΡΠ°ΡΡΠ·Π°ΠΏΡΠΎΡΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΡΠ°ΡΡΠ·Π°ΠΏΡΡΠΊΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°ΡΠ°ΡΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΡΠ°ΠΉΠ»Π° Π½Π°ΡΠ°ΡΡΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠ°ΠΉΠ»Π° Π½Π°ΡΠ°ΡΡΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅Π²Π½Π΅ΡΠ½Π΅ΠΉΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π°ΡΠ°ΡΡΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΡΠ°Π±ΠΎΡΡΡΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠ΅ΠΉ Π½Π°ΡΠ°ΡΡΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΡΠ°Π±ΠΎΡΡΡΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π½Π°ΡΠ°ΡΡΠΏΠΎΠΈΡΠΊΡΠ°ΠΉΠ»ΠΎΠ² Π½Π°ΡΠ°ΡΡΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π°ΡΠ°ΡΡΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π°ΡΠ°ΡΡΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΡΠ°ΡΡΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π°ΡΠ°ΡΡΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠ°ΠΉΠ»Π° Π½Π°ΡΠ°ΡΡΠΏΠΎΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π°ΡΠ°ΡΡΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅Π΄Π²ΠΎΠΈΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΈΠ·ΡΠ°ΠΉΠ»Π° Π½Π°ΡΠ°ΡΡΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° Π½Π°ΡΠ°ΡΡΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ Π½Π°ΡΠ°ΡΡΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π°ΡΠ°ΡΡΡΡΡΠ°Π½ΠΎΠ²ΠΊΡΠ²Π½Π΅ΡΠ½Π΅ΠΉΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π°ΡΠ°ΡΡΡΡΡΠ°Π½ΠΎΠ²ΠΊΡΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΡΠ°Π±ΠΎΡΡΡΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠ΅ΠΉ Π½Π°ΡΠ°ΡΡΡΡΡΠ°Π½ΠΎΠ²ΠΊΡΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΡΠ°Π±ΠΎΡΡΡΡΠ°ΠΉΠ»Π°ΠΌΠΈ Π½Π΅Π΄Π΅Π»ΡΠ³ΠΎΠ΄Π° Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π½ΠΎΠΌΠ΅ΡΡΠ΅Π°Π½ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠ±Π°Π·Ρ Π½ΠΎΠΌΠ΅ΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠ±Π°Π·Ρ Π½ΡΠ΅Π³ Π½ΡΡΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡΠ½ΡΠΌΠ΅ΡΠ°ΡΠΈΡΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΠΏΡΠ΅ΡΡΠ²Π°Π½ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΠ°ΠΉΠ»Ρ ΠΎΠΊΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΠΏΠΎΠ²Π΅ΡΡΠΈΡΡ ΠΎΠΏΠΎΠ²Π΅ΡΡΠΈΡΡΠΎΠ±ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ΠΎΡΠΊΠ»ΡΡΠΈΡΡΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ·Π°ΠΏΡΠΎΡΠ°Π½Π°ΡΡΡΠΎΠ΅ΠΊΠΊΠ»ΠΈΠ΅Π½ΡΠ°Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΎΡΠΊΡΡΡΡΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠΊΡΡΡΡΠΈΠ½Π΄Π΅ΠΊΡΡΠΏΡΠ°Π²ΠΊΠΈ ΠΎΡΠΊΡΡΡΡΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ΡΠΏΡΠ°Π²ΠΊΠΈ ΠΎΡΠΊΡΡΡΡΡΠΏΡΠ°Π²ΠΊΡ ΠΎΡΠΊΡΡΡΡΡΠΎΡΠΌΡ ΠΎΡΠΊΡΡΡΡΡΠΎΡΠΌΡΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎ ΠΎΡΠΌΠ΅Π½ΠΈΡΡΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡ ΠΎΡΠΈΡΡΠΈΡΡΠΆΡΡΠ½Π°Π»ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΎΡΠΈΡΡΠΈΡΡΠ½Π°ΡΡΡΠΎΠΉΠΊΠΈΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡΠΈΡΡΠΈΡΡΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ΄ΠΎΡΡΡΠΏΠ° ΠΏΠ΅ΡΠ΅ΠΉΡΠΈΠΏΠΎΠ½Π°Π²ΠΈΠ³Π°ΡΠΈΠΎΠ½Π½ΠΎΠΉΡΡΡΠ»ΠΊΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΡΡΡΠ°ΠΉΠ» ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΠ²Π½Π΅ΡΠ½ΡΡΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ·Π°ΠΏΡΠΎΡΠ°Π½Π°ΡΡΡΠΎΠ΅ΠΊΠΊΠ»ΠΈΠ΅Π½ΡΠ°Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠ°Π±ΠΎΡΡΡΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠ΅ΠΉ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠ°Π±ΠΎΡΡΡΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΠ²Π²ΠΎΠ΄Π΄Π°ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΠ²Π²ΠΎΠ΄Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΠ²Π²ΠΎΠ΄ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΠ²Π²ΠΎΠ΄ΡΠΈΡΠ»Π° ΠΏΠΎΠΊΠ°Π·Π°ΡΡΠ²ΠΎΠΏΡΠΎΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ±ΠΎΡΠΈΠ±ΠΊΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΠ½Π°ΠΊΠ°ΡΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠΊΠ°Π·Π°ΡΡΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ΠΈΠΌΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡcomΠΎΠ±ΡΠ΅ΠΊΡ ΠΏΠΎΠ»ΡΡΠΈΡΡxmlΡΠΈΠΏ ΠΏΠΎΠ»ΡΡΠΈΡΡΠ°Π΄ΡΠ΅ΡΠΏΠΎΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡΡΠ΅Π°Π½ΡΠΎΠ² ΠΏΠΎΠ»ΡΡΠΈΡΡΠ²ΡΠ΅ΠΌΡΠ·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡΡΠΏΡΡΠ΅Π³ΠΎΡΠ΅Π°Π½ΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠ²ΡΠ΅ΠΌΡΠ·Π°ΡΡΠΏΠ°Π½ΠΈΡΠΏΠ°ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎΡΠ΅Π°Π½ΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠ²ΡΠ΅ΠΌΡΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΏΠΎΠ»ΡΡΠΈΡΡΠ΄Π°Π½Π½ΡΠ΅Π²ΡΠ±ΠΎΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠ΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΊΠ»ΠΈΠ΅Π½ΡΠ°Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΠ΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ΠΊΠΎΠ΄ΡΠ»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡΠ΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ΡΠ°ΡΠΎΠ²ΡΠ΅ΠΏΠΎΡΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠ·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΠ·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΠ·Π½Π°ΡΠ΅Π½ΠΈΡΠΎΡΠ±ΠΎΡΠ°ΠΆΡΡΠ½Π°Π»Π°ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΈΠ·Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎΡ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠΈΠΌΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎΡΠ°ΠΉΠ»Π° ΠΏΠΎΠ»ΡΡΠΈΡΡΠΈΠΌΡΠΊΠ»ΠΈΠ΅Π½ΡΠ°Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΡΠΊΡΠ°Π½ΠΎΠ²ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΆΡΡΠ½Π°Π»Π°ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΡΠΎΠ±ΡΡΠΈΡΠΆΡΡΠ½Π°Π»Π°ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΊΡΠ°ΡΠΊΠΈΠΉΠ·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΌΠ°ΠΊΠ΅ΡΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΌΠ°ΡΠΊΡΠ²ΡΠ΅ΡΠ°ΠΉΠ»Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΌΠ°ΡΠΊΡΠ²ΡΠ΅ΡΠ°ΠΉΠ»ΡΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠΌΠ°ΡΠΊΡΠ²ΡΠ΅ΡΠ°ΠΉΠ»ΡΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΏΠΎΠ°Π΄ΡΠ΅ΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡΠ΄Π»ΠΈΠ½ΡΠΏΠ°ΡΠΎΠ»Π΅ΠΉΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΠΎΠ»ΡΡΠΈΡΡΠ½Π°Π²ΠΈΠ³Π°ΡΠΈΠΎΠ½Π½ΡΡΡΡΡΠ»ΠΊΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΠ½Π°Π²ΠΈΠ³Π°ΡΠΈΠΎΠ½Π½ΡΡΡΡΡΠ»ΠΊΡΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠ±Π°Π·Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΠ±Π°Π·ΡΠ΄Π°Π½Π½ΡΡ
ΠΏΠΎΠ»ΡΡΠΈΡΡΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠ±Π°Π·Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΎΠ±ΡΠΈΠΉΠΌΠ°ΠΊΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΎΠ±ΡΡΡΡΠΎΡΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΎΠΊΠ½Π° ΠΏΠΎΠ»ΡΡΠΈΡΡΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡΠΎΡΠΌΠ΅ΡΠΊΡΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎΡΠ΅ΠΆΠΈΠΌΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
ΠΎΠΏΡΠΈΠΉΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΠΏΠΎΠ»Π½ΠΎΠ΅ΠΈΠΌΡΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡΠ½Π°Π²ΠΈΠ³Π°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΡΡΠ»ΠΎΠΊ ΠΏΠΎΠ»ΡΡΠΈΡΡΠΏΡΠΎΠ²Π΅ΡΠΊΡΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈΠΏΠ°ΡΠΎΠ»Π΅ΠΉΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΠΏΡΡΠΈ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΠΏΡΡΠΈΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠ°Π·Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΠΏΡΡΠΈΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠ΅Π°Π½ΡΡΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠ±Π°Π·Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠΊΠΎΡΠΎΡΡΡΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠ±Π°Π·Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΈΡΠΎΡΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠΎΡΡΠ°Π²ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°odata ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡΡΡΠΊΡΡΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΡΠ±Π°Π·ΡΠ΄Π°Π½Π½ΡΡ
ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠ΅ΠΊΡΡΠΈΠΉΡΠ΅Π°Π½ΡΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠ±Π°Π·Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠ°ΠΉΠ» ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠ°ΠΉΠ»Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠΎΡΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡΠΎΠΏΡΠΈΡ ΠΏΠΎΠ»ΡΡΠΈΡΡΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡΠΎΠΏΡΠΈΡΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΡΠ°ΡΠΎΠ²ΠΎΠΉΠΏΠΎΡΡΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠ±Π°Π·Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈΠΎΡ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡΠ²ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡΡΠ°ΠΉΠ» ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡΡΠ°ΠΉΠ»Ρ ΠΏΡΠ°Π² ΠΏΡΠ°Π²ΠΎΠ΄ΠΎΡΡΡΠΏΠ° ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΊΠΎΠ΄Π°Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΏΠ΅ΡΠΈΠΎΠ΄Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΏΡΠ°Π²Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎΠ±ΡΡΠΈΡΠΆΡΡΠ½Π°Π»Π°ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠ°ΡΠΎΠ²ΠΎΠ³ΠΎΠΏΠΎΡΡΠ° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠΈΡΡΡΠ°Π±ΠΎΡΡΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉΡΠ΅ΠΆΠΈΠΌ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡΠ²ΡΠ·ΠΎΠ² ΠΏΡΠΎΡΠΈΡΠ°ΡΡjson ΠΏΡΠΎΡΠΈΡΠ°ΡΡxml ΠΏΡΠΎΡΠΈΡΠ°ΡΡΠ΄Π°ΡΡjson ΠΏΡΡΡΠ°ΡΡΡΡΠΎΠΊΠ° ΡΠ°Π±ΠΎΡΠΈΠΉΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡΠ΄Π°Π½Π½ΡΠ΅Π΄Π»ΡΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡΡΠ°ΠΉΠ» ΡΠ°Π·ΠΎΡΠ²Π°ΡΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΡΠ²Π½Π΅ΡΠ½ΠΈΠΌΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌΠ΄Π°Π½Π½ΡΡ
ΡΠ°ΡΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡΡΡΡΠΎΠΊΡ ΡΠΎΠ»ΡΠ΄ΠΎΡΡΡΠΏΠ½Π° ΡΠ΅ΠΊΡΠ½Π΄Π° ΡΠΈΠ³Π½Π°Π» ΡΠΈΠΌΠ²ΠΎΠ» ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡΠΆΡΡΠ½Π°Π»ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅Π»Π΅ΡΠ½Π΅Π³ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡΠ±ΡΡΠ΅ΡΡΠ΄Π²ΠΎΠΈΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΡΠΎΠ·Π΄Π°ΡΡΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠΎΠ·Π΄Π°ΡΡΡΠ°Π±ΡΠΈΠΊΡxdto ΡΠΎΠΊΡΠ» ΡΠΎΠΊΡΠ»ΠΏ ΡΠΎΠΊΡΠΏ ΡΠΎΠΎΠ±ΡΠΈΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡΠ½Π°ΡΡΡΠΎΠΉΠΊΠΈΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠ΅Π΄ ΡΡΡΠ΄Π»ΠΈΠ½Π° ΡΡΡΠ·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡΠ½Π° ΡΡΡΠ·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΡΡΠ½Π°ΠΉΡΠΈ ΡΡΡΠ½Π°ΡΠΈΠ½Π°Π΅ΡΡΡΡ ΡΡΡΠΎΠΊΠ° ΡΡΡΠΎΠΊΠ°ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠ±Π°Π·Ρ ΡΡΡΠΏΠΎΠ»ΡΡΠΈΡΡΡΡΡΠΎΠΊΡ ΡΡΡΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΡΡΡΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΡΡΡΡΡΠ°Π²Π½ΠΈΡΡ ΡΡΡΡΠΈΡΠ»ΠΎΠ²Ρ
ΠΎΠΆΠ΄Π΅Π½ΠΈΠΉ ΡΡΡΡΠΈΡΠ»ΠΎΡΡΡΠΎΠΊ ΡΡΡΡΠ°Π±Π»ΠΎΠ½ ΡΠ΅ΠΊΡΡΠ°ΡΠ΄Π°ΡΠ° ΡΠ΅ΠΊΡΡΠ°ΡΠ΄Π°ΡΠ°ΡΠ΅Π°Π½ΡΠ° ΡΠ΅ΠΊΡΡΠ°ΡΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°ΡΠ΄Π°ΡΠ° ΡΠ΅ΠΊΡΡΠ°ΡΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½Π°ΡΠ΄Π°ΡΠ°Π²ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
ΡΠ΅ΠΊΡΡΠΈΠΉΠ²Π°ΡΠΈΠ°Π½ΡΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΈΠΉΠ²Π°ΡΠΈΠ°Π½ΡΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎΡΡΠΈΡΡΠ°ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΈΠΉΠΊΠΎΠ΄Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉΡΠ΅ΠΆΠΈΠΌΠ·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΠΊΡΡΠΈΠΉΡΠ·ΡΠΊ ΡΠ΅ΠΊΡΡΠΈΠΉΡΠ·ΡΠΊΡΠΈΡΡΠ΅ΠΌΡ ΡΠΈΠΏ ΡΠΈΠΏΠ·Π½Ρ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠ°ΠΊΡΠΈΠ²Π½Π° ΡΡΠ΅Π³ ΡΠ΄Π°Π»ΠΈΡΡΠ΄Π°Π½Π½ΡΠ΅ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠ±Π°Π·Ρ ΡΠ΄Π°Π»ΠΈΡΡΠΈΠ·Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎΡ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° ΡΠ΄Π°Π»ΠΈΡΡΠΎΠ±ΡΠ΅ΠΊΡΡ ΡΠ΄Π°Π»ΠΈΡΡΡΠ°ΠΉΠ»Ρ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΠ΅Π²ΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉΡΠ΅ΠΆΠΈΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉΡΠ΅ΠΆΠΈΠΌΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡΠ΄Π°Π½Π½ΡΡ
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΡΡΠ΅Π°Π½ΡΠΎΠ² ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠ²Π½Π΅ΡΠ½ΡΡΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠ²ΡΠ΅ΠΌΡΠ·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡΡΠΏΡΡΠ΅Π³ΠΎΡΠ΅Π°Π½ΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠ²ΡΠ΅ΠΌΡΠ·Π°ΡΡΠΏΠ°Π½ΠΈΡΠΏΠ°ΡΡΠΈΠ²Π½ΠΎΠ³ΠΎΡΠ΅Π°Π½ΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠ²ΡΠ΅ΠΌΡΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠ·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠ·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊΡΠΈΡΡΠ΅ΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΆΡΡΠ½Π°Π»Π°ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΡΠΎΠ±ΡΡΠΈΡΠΆΡΡΠ½Π°Π»Π°ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠΊΡΠ°ΡΠΊΠΈΠΉΠ·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡΠ΄Π»ΠΈΠ½ΡΠΏΠ°ΡΠΎΠ»Π΅ΠΉΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠΌΠΎΠ½ΠΎΠΏΠΎΠ»ΡΠ½ΡΠΉΡΠ΅ΠΆΠΈΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠ½Π°ΡΡΡΠΎΠΉΠΊΠΈΠΊΠ»ΠΈΠ΅Π½ΡΠ°Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠ±Π°Π·Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠΎΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ³ΠΎΡΠ΅ΠΆΠΈΠΌΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ
ΠΎΠΏΡΠΈΠΉΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉΡΠ΅ΠΆΠΈΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΠΏΡΠΎΠ²Π΅ΡΠΊΡΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈΠΏΠ°ΡΠΎΠ»Π΅ΠΉΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠ°Π±ΠΎΡΡΡΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠ΅ΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠ°Π±ΠΎΡΡΡΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ΡΠ²Π½Π΅ΡΠ½ΠΈΠΌΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌΠ΄Π°Π½Π½ΡΡ
ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΈΡΠΎΡΠΌΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΠΎΡΡΠ°Π²ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°odata ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΠ°ΡΠΎΠ²ΠΎΠΉΠΏΠΎΡΡΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠ±Π°Π·Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΠ°ΡΠΎΠ²ΠΎΠΉΠΏΠΎΡΡΡΠ΅Π°Π½ΡΠ° ΡΠΎΡΠΌΠ°Ρ ΡΠ΅Π» ΡΠ°Ρ ΡΠ°ΡΠΎΠ²ΠΎΠΉΠΏΠΎΡΡ ΡΠ°ΡΠΎΠ²ΠΎΠΉΠΏΠΎΡΡΡΠ΅Π°Π½ΡΠ° ΡΠΈΡΠ»ΠΎ ΡΠΈΡΠ»ΠΎΠΏΡΠΎΠΏΠΈΡΡΡ ΡΡΠΎΠ°Π΄ΡΠ΅ΡΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎΡ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° wsΡΡΡΠ»ΠΊΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠ°ΠΊΠ΅ΡΠΎΠ²ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΡΠΈΠ»Π΅ΠΉ Π±ΠΈΠ·Π½Π΅ΡΠΏΡΠΎΡΠ΅ΡΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈΠ΄Π°Π½Π½ΡΡ
Π²Π½Π΅ΡΠ½ΠΈΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π½Π΅ΡΠ½ΠΈΠ΅ΠΎΡΡΠ΅ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ΠΏΠΎΠΊΡΠΏΠΊΠΈ Π³Π»Π°Π²Π½ΡΠΉΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π³Π»Π°Π²Π½ΡΠΉΡΡΠΈΠ»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΡ ΠΆΡΡΠ½Π°Π»ΡΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² Π·Π°Π΄Π°ΡΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ±ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΡΠ°Π±ΠΎΡΠ΅ΠΉΠ΄Π°ΡΡ ΠΈΡΡΠΎΡΠΈΡΡΠ°Π±ΠΎΡΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ ΠΊΡΠΈΡΠ΅ΡΠΈΠΈΠΎΡΠ±ΠΎΡΠ° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠ΅ΠΊΠ»Π°ΠΌΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠ°Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ
ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎΡΡΠ΅ΡΡ ΠΏΠ°Π½Π΅Π»ΡΠ·Π°Π΄Π°ΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ·Π°ΠΏΡΡΠΊΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΠ΅Π°Π½ΡΠ° ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΠ»Π°Π½ΡΠ²ΠΈΠ΄ΠΎΠ²ΡΠ°ΡΡΠ΅ΡΠ° ΠΏΠ»Π°Π½ΡΠ²ΠΈΠ΄ΠΎΠ²Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΠΏΠ»Π°Π½ΡΠΎΠ±ΠΌΠ΅Π½Π° ΠΏΠ»Π°Π½ΡΡΡΠ΅ΡΠΎΠ² ΠΏΠΎΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉΠΏΠΎΠΈΡΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉΠ±Π°Π·Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΠΏΠΎΠΊΡΠΏΠΎΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΠ΄Π°ΡΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅Π³ΠΈΡΡΡΡΠ±ΡΡ
Π³Π°Π»ΡΠ΅ΡΠΈΠΈ ΡΠ΅Π³ΠΈΡΡΡΡΠ½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ ΡΠ΅Π³ΠΈΡΡΡΡΡΠ°ΡΡΠ΅ΡΠ° ΡΠ΅Π³ΠΈΡΡΡΡΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΡΠ΅Π·Π°Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡxdto ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°Π³Π΅ΠΎΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΡΠ»ΡΡΠΈΠΌΠ΅Π΄ΠΈΠ° ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ΅ΠΊΠ»Π°ΠΌΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΏΠΎΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΡΠ΅Π»Π΅ΡΠΎΠ½ΠΈΠΈ ΡΠ°Π±ΡΠΈΠΊΠ°xdto ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ΠΏΠΎΡΠΎΠΊΠΈ ΡΠΎΠ½ΠΎΠ²ΡΠ΅Π·Π°Π΄Π°Π½ΠΈΡ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°Π½Π°ΡΡΡΠΎΠ΅ΠΊ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²ΠΎΡΡΠ΅ΡΠΎΠ² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅Π½Π°ΡΡΡΠΎΠ΅ΠΊΠ΄Π°Π½Π½ΡΡ
ΡΠΎΡΠΌ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΎΠ±ΡΠΈΡ
Π½Π°ΡΡΡΠΎΠ΅ΠΊ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
Π½Π°ΡΡΡΠΎΠ΅ΠΊΠ΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΡ
ΡΠΏΠΈΡΠΊΠΎΠ² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
Π½Π°ΡΡΡΠΎΠ΅ΠΊΠΎΡΡΠ΅ΡΠΎΠ² Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
Π½Π°ΡΡΡΠΎΠ΅ΠΊ ",class:"webΡΠ²Π΅ΡΠ° windowsΡΠ²Π΅ΡΠ° windowsΡΡΠΈΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ ΡΠ°ΠΌΠΊΠΈΡΡΠΈΠ»Ρ ΡΠΈΠΌΠ²ΠΎΠ»Ρ ΡΠ²Π΅ΡΠ°ΡΡΠΈΠ»Ρ ΡΡΠΈΡΡΡΡΡΠΈΠ»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅Π΄Π°Π½Π½ΡΡ
ΡΠΎΡΠΌΡΠ²Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
Π°Π²ΡΠΎΠ½ΡΠΌΠ΅ΡΠ°ΡΠΈΡΠ²ΡΠΎΡΠΌΠ΅ Π°Π²ΡΠΎΡΠ°Π·Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ΡΠ΅ΡΠΈΠΉ Π°Π½ΠΈΠΌΠ°ΡΠΈΡΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π²Π°ΡΠΈΠ°Π½ΡΠ²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΡΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²ΠΈΠ·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² Π²Π°ΡΠΈΠ°Π½ΡΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠ²ΡΡΠΎΡΠΎΠΉΡΠ°Π±Π»ΠΈΡΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½Π°ΡΠΏΡΠΎΠΊΡΡΡΠΊΠ°ΡΠΎΡΠΌΡ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΡΠ½ΠΎΠ΅ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π²ΠΈΠ΄Π³ΡΡΠΏΠΏΡΡΠΎΡΠΌΡ Π²ΠΈΠ΄Π΄Π΅ΠΊΠΎΡΠ°ΡΠΈΠΈΡΠΎΡΠΌΡ Π²ΠΈΠ΄Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΎΡΠΌΡ Π²ΠΈΠ΄ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠ΄Π°Π½Π½ΡΡ
Π²ΠΈΠ΄ΠΊΠ½ΠΎΠΏΠΊΠΈΡΠΎΡΠΌΡ Π²ΠΈΠ΄ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΠ΅Π»Ρ Π²ΠΈΠ΄ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉΠΊΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ Π²ΠΈΠ΄ΠΏΠΎΠ»ΡΡΠΎΡΠΌΡ Π²ΠΈΠ΄ΡΠ»Π°ΠΆΠΊΠ° Π²Π»ΠΈΡΠ½ΠΈΠ΅ΡΠ°Π·ΠΌΠ΅ΡΠ°Π½Π°ΠΏΡΠ·ΡΡΠ΅ΠΊΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ°ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊ Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ°ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½Π½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²ΡΠΎΡΠΌΡ Π³ΡΡΠΏΠΏΡΠΈΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉΡΠ΅ΠΆΠΈΠΌΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΌΠ΅ΠΆΠ΄ΡΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈΡΠΎΡΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅Π²ΡΠ²ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΏΠΎΠ»ΠΎΡΡΠΏΡΠΎΠΊΡΡΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ΅Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΡΠΎΡΠΊΠΈΠ±ΠΈΡΠΆΠ΅Π²ΠΎΠΉΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΈΡΡΠΎΡΠΈΡΠ²ΡΠ±ΠΎΡΠ°ΠΏΡΠΈΠ²Π²ΠΎΠ΄Π΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉΠΎΡΠΈΡΠΎΡΠ΅ΠΊΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ·Π½Π°ΡΠ΅Π½ΠΈΡΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΏΡΠ·ΡΡΡΠΊΠ°Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠ³ΡΡΠΏΠΏΡΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΡΠ΅ΡΠΈΠΉ Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅Π΄Π΅ΡΠ΅Π²Π° Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΏΠΈΡΠΊΠ° ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΡΠ΅ΠΊΡΡΠ°ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡΠ΄Π΅Π½Π΄ΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠ΅ΡΠΎΠΊΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠ΅ΡΠΎΠΊΡΠ²ΠΎΠ΄Π½ΠΎΠΉΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΎΡΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅Π²Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅Π²Π»Π΅Π³Π΅Π½Π΄Π΅Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅Π³ΡΡΠΏΠΏΡΠΊΠ½ΠΎΠΏΠΎΠΊ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΡΠΊΠ°Π»ΡΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅Π·Π½Π°ΡΠ΅Π½ΠΈΠΉΡΠ²ΠΎΠ΄Π½ΠΎΠΉΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΈΠ·ΠΌΠ΅ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π°Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡΠ³Π°Π½ΡΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΊΠ½ΠΎΠΏΠΊΠΈΠ²ΡΠ±ΠΎΡΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΉΡΠΎΡΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΎΠ±ΡΡΠ½ΠΎΠΉΠ³ΡΡΠΏΠΏΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉΠΏΡΠ·ΡΡΡΠΊΠΎΠ²ΠΎΠΉΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΏΠ°Π½Π΅Π»ΠΈΠΏΠΎΠΈΡΠΊΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΠΏΡΠΈΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠ°Π·ΠΌΠ΅ΡΠΊΠΈΠΏΠΎΠ»ΠΎΡΡΡΠ΅Π³ΡΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΡΡΠ°Π½ΠΈΡΡΠΎΡΠΌΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠ°Π±Π»ΠΈΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠ΅ΠΊΡΡΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΡΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡΠ³Π°Π½ΡΠ° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΎΠ±ΡΡΠ½ΠΎΠΉΠ³ΡΡΠΏΠΏΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΡΠΈΠ³ΡΡΡΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠ°Π»ΠΈΡΡΠ°ΡΠ²Π΅ΡΠΎΠ²Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΎΠ±ΡΡΠ½ΠΎΠΉΠ³ΡΡΠΏΠΏΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°ΠΌΠ°ΡΡΡΠ°Π±Π°Π΄Π΅Π½Π΄ΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°ΠΌΠ°ΡΡΡΠ°Π±Π°Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡΠ³Π°Π½ΡΠ° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ°ΠΌΠ°ΡΡΡΠ°Π±Π°ΡΠ²ΠΎΠ΄Π½ΠΎΠΉΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠΈΡΠΊΠ²ΡΠ°Π±Π»ΠΈΡΠ΅ΠΏΡΠΈΠ²Π²ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΎΡΠΌΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈΠΊΠ½ΠΎΠΏΠΊΠΈΡΠΎΡΠΌΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉΡΡ
Π΅ΠΌΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉΠΏΠ°Π½Π΅Π»ΠΈΡΠΎΡΠΌΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉΠΏΠ°Π½Π΅Π»ΠΈΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΎΡΠΌΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΎΠΏΠΎΡΠ½ΠΎΠΉΡΠΎΡΠΊΠΈΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉΠΊΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΏΠΎΠ΄ΠΏΠΈΡΠ΅ΠΉΡΠΊΠ°Π»ΡΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉΠΈΠ·ΠΌΠ΅ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΡΡΠΎΠΊΠΈΠΏΠΎΠΈΡΠΊΠ° ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠ΅ΠΊΡΡΠ°ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉΠ»ΠΈΠ½ΠΈΠΈ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΏΠΎΠΈΡΠΊΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΊΠ°Π»ΡΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΏΠΎΡΡΠ΄ΠΎΠΊΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠΎΡΠ΅ΠΊΠ³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠΉΠ³ΠΈΡΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΡΡΠ΄ΠΎΠΊΡΠ΅ΡΠΈΠΉΠ²Π»Π΅Π³Π΅Π½Π΄Π΅Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠ°Π·ΠΌΠ΅ΡΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΡΠΊΠ°Π»ΡΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠ°ΡΡΡΠ³ΠΈΠ²Π°Π½ΠΈΠ΅ΠΏΠΎΠ²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡΠ³Π°Π½ΡΠ° ΡΠ΅ΠΆΠΈΠΌΠ°Π²ΡΠΎΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ²Π²ΠΎΠ΄Π°ΡΡΡΠΎΠΊΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌΠ²ΡΠ±ΠΎΡΠ°Π½Π΅Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠ²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡΠ΄Π°ΡΡ ΡΠ΅ΠΆΠΈΠΌΠ²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡΡΡΡΠΎΠΊΠΈΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌΠ²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡΡΠ°Π±Π»ΠΈΡΡ ΡΠ΅ΠΆΠΈΠΌΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ΅ΠΆΠΈΠΌΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡΠ΄ΠΈΠ°Π»ΠΎΠ³Π°ΠΏΠ΅ΡΠ°ΡΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΠ΅ΠΆΠΈΠΌΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡΠΏΡΠΎΡΠΌΠΎΡΡΠ° ΡΠ΅ΠΆΠΈΠΌΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎΠΎΠΊΠ½Π°ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠΎΡΠΊΡΡΡΠΈΡΠΎΠΊΠ½Π°ΡΠΎΡΠΌΡ ΡΠ΅ΠΆΠΈΠΌΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠ²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠ³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉΡΡ
Π΅ΠΌΡ ΡΠ΅ΠΆΠΈΠΌΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉΡΠ΅ΡΠΈΠΈ ΡΠ΅ΠΆΠΈΠΌΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈΡΠ΅ΡΠΊΠΈΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉΡΡ
Π΅ΠΌΡ ΡΠ΅ΠΆΠΈΠΌΠΏΠΎΠ»ΡΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠ΅ΠΆΠΈΠΌΠΏΡΠΎΠ±Π΅Π»ΠΎΠ²Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠ΅ΠΆΠΈΠΌΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠ½Π°ΡΡΡΠ°Π½ΠΈΡΠ΅ ΡΠ΅ΠΆΠΈΠΌΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ ΡΠ΅ΠΆΠΈΠΌΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΡΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠ΅ΠΆΠΈΠΌΡΠ³Π»Π°ΠΆΠΈΠ²Π°Π½ΠΈΡΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ° ΡΠ΅ΠΆΠΈΠΌΡΠΏΠΈΡΠΊΠ°Π·Π°Π΄Π°Ρ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠ΅Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅Π΄Π°Π½Π½ΡΡ
ΡΠΎΡΠΌΡΠ²Π½Π°ΡΡΡΠΎΠΉΠΊΠ°Ρ
ΡΠΏΠΎΡΠΎΠ±Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΡΠ΅ΠΊΡΡΠ°Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΡΠΊΠ°Π»ΡΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΠ΅Π³ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ³ΡΡΠΏΠΏΠ°ΠΊΠΎΠΌΠ°Π½Π΄ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΡΡΠ°ΡΡΡΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΡΠΈΠ»ΡΡΡΡΠ΅Π»ΠΊΠΈ ΡΠΈΠΏΠ°ΠΏΠΏΡΠΎΠΊΡΠΈΠΌΠ°ΡΠΈΠΈΠ»ΠΈΠ½ΠΈΠΈΡΡΠ΅Π½Π΄Π°Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠΈΠΏΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠΈΠΏΠ΅Π΄ΠΈΠ½ΠΈΡΡΡΠΊΠ°Π»ΡΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΈΠΏΠΈΠΌΠΏΠΎΡΡΠ°ΡΠ΅ΡΠΈΠΉΡΠ»ΠΎΡΠ³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉΡΡ
Π΅ΠΌΡ ΡΠΈΠΏΠ»ΠΈΠ½ΠΈΠΈΠ³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉΡΡ
Π΅ΠΌΡ ΡΠΈΠΏΠ»ΠΈΠ½ΠΈΠΈΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠΈΠΏΠΌΠ°ΡΠΊΠ΅ΡΠ°Π³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉΡΡ
Π΅ΠΌΡ ΡΠΈΠΏΠΌΠ°ΡΠΊΠ΅ΡΠ°Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠΈΠΏΠΎΠ±Π»Π°ΡΡΠΈΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡ ΡΠΈΠΏΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Π΄Π°Π½Π½ΡΡ
Π³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉΡΡ
Π΅ΠΌΡ ΡΠΈΠΏΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ΅ΡΠΈΠΈΡΠ»ΠΎΡΠ³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉΡΡ
Π΅ΠΌΡ ΡΠΈΠΏΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠΎΡΠ΅ΡΠ½ΠΎΠ³ΠΎΠΎΠ±ΡΠ΅ΠΊΡΠ°Π³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉΡΡ
Π΅ΠΌΡ ΡΠΈΠΏΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠΊΠ°Π»ΡΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Π»Π΅Π³Π΅Π½Π΄ΡΠ³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉΡΡ
Π΅ΠΌΡ ΡΠΈΠΏΠΏΠΎΠΈΡΠΊΠ°ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²Π³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉΡΡ
Π΅ΠΌΡ ΡΠΈΠΏΠΏΡΠΎΠ΅ΠΊΡΠΈΠΈΠ³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉΡΡ
Π΅ΠΌΡ ΡΠΈΠΏΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΏΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠΎΠ²ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΏΡΠ°ΠΌΠΊΠΈΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΠΏΡΠ²ΠΎΠ΄Π½ΠΎΠΉΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠΈΠΏΡΠ²ΡΠ·ΠΈΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡΠ³Π°Π½ΡΠ° ΡΠΈΠΏΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉΠΏΠΎΡΠ΅ΡΠΈΡΠΌΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠΈΠΏΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡΠΎΡΠ΅ΠΊΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠΈΠΏΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉΠ»ΠΈΠ½ΠΈΠΈ ΡΠΈΠΏΡΡΠΎΡΠΎΠ½ΡΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉΡΡ
Π΅ΠΌΡ ΡΠΈΠΏΡΠΎΡΠΌΡΠΎΡΡΠ΅ΡΠ° ΡΠΈΠΏΡΠΊΠ°Π»ΡΡΠ°Π΄Π°ΡΠ½ΠΎΠΉΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠ°ΠΊΡΠΎΡΠ»ΠΈΠ½ΠΈΠΈΡΡΠ΅Π½Π΄Π°Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ ΡΠΈΠ³ΡΡΠ°ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠΈΠ³ΡΡΡΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉΡΡ
Π΅ΠΌΡ ΡΠΈΠΊΡΠ°ΡΠΈΡΠ²ΡΠ°Π±Π»ΠΈΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠ΄Π½ΡΡΠΊΠ°Π»ΡΠ²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠΎΡΠΌΠ°ΡΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΠΈΡΠΈΠ½Π°ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½Π½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²ΡΠΎΡΠΌΡ Π²ΠΈΠ΄Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡΠ±ΡΡ
Π³Π°Π»ΡΠ΅ΡΠΈΠΈ Π²ΠΈΠ΄Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡΠ½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ Π²ΠΈΠ΄ΠΏΠ΅ΡΠΈΠΎΠ΄Π°ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠ°ΡΡΠ΅ΡΠ° Π²ΠΈΠ΄ΡΡΠ΅ΡΠ° Π²ΠΈΠ΄ΡΠΎΡΠΊΠΈΠΌΠ°ΡΡΡΡΡΠ°Π±ΠΈΠ·Π½Π΅ΡΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅Π°Π³ΡΠ΅Π³Π°ΡΠ°ΡΠ΅Π³ΠΈΡΡΡΠ°Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅Π³ΡΡΠΏΠΏΠΈΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΡΠ΅ΠΆΠΈΠΌΠ°ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΡΡΠ΅Π·Π° ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡΠ°Π³ΡΠ΅Π³Π°ΡΠ°ΡΠ΅Π³ΠΈΡΡΡΠ°Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ°Π²ΡΠΎΠ²ΡΠ΅ΠΌΡ ΡΠ΅ΠΆΠΈΠΌΠ·Π°ΠΏΠΈΡΠΈΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠ΅ΠΆΠΈΠΌΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π°Π²ΡΠΎΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉΠ½ΠΎΠΌΠ΅ΡΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠ°ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Π΄Π°Π½Π½ΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΈΡΠΎΠ³ΠΎΠ²ΠΊΠΎΠ»ΠΎΠ½ΠΎΠΊΡΠ²ΠΎΠ΄Π½ΠΎΠΉΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΈΡΠΎΠ³ΠΎΠ²ΡΡΡΠΎΠΊΡΠ²ΠΎΠ΄Π½ΠΎΠΉΡΠ°Π±Π»ΠΈΡΡ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠ΅ΠΊΡΡΠ°ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΏΠΎΡΠΎΠ±ΡΡΠ΅Π½ΠΈΡΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΈΠΏΠ΄Π²ΡΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉΠΏΠ΅ΡΠ°ΡΠΈ ΡΠΈΠΏΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΠΎΠ±Π»Π°ΡΡΠΈΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΈΠΏΠΊΡΡΡΠΎΡΠΎΠ²ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΈΠΏΠ»ΠΈΠ½ΠΈΠΈΡΠΈΡΡΠ½ΠΊΠ°ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΈΠΏΠ»ΠΈΠ½ΠΈΠΈΡΡΠ΅ΠΉΠΊΠΈΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΈΠΏΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π°ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΈΠΏΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠ²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΈΠΏΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠ»ΠΈΠ½ΠΈΠΉΡΠ²ΠΎΠ΄Π½ΠΎΠΉΡΠ°Π±Π»ΠΈΡΡ ΡΠΈΠΏΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡΡΠ΅ΠΊΡΡΠ°ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΈΠΏΡΠΈΡΡΠ½ΠΊΠ°ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΈΠΏΡΠΌΠ΅ΡΠ΅Π½ΠΈΡΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΈΠΏΡΠ·ΠΎΡΠ°ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΈΠΏΡΠ°ΠΉΠ»Π°ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΎΡΠ½ΠΎΡΡΡΠΏΠ΅ΡΠ°ΡΠΈ ΡΠ΅ΡΠ΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΡΡΠ°Π½ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅Π²ΡΠ΅ΠΌΠ΅Π½ΠΈΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊΠ° ΡΠΈΠΏΡΠ°ΠΉΠ»Π°ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎΠ΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΎΠ±Ρ
ΠΎΠ΄ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Π·Π°ΠΏΡΠΎΡΠ° ΡΠΈΠΏΠ·Π°ΠΏΠΈΡΠΈΠ·Π°ΠΏΡΠΎΡΠ° Π²ΠΈΠ΄Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π»ΡΠΎΡΡΠ΅ΡΠ° ΡΠΈΠΏΠ΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ ΡΠΈΠΏΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π»ΡΠΎΡΡΠ΅ΡΠ° ΡΠΈΠΏΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠΈΡΠΎΠ³ΠΎΠ² Π΄ΠΎΡΡΡΠΏΠΊΡΠ°ΠΉΠ»Ρ ΡΠ΅ΠΆΠΈΠΌΠ΄ΠΈΠ°Π»ΠΎΠ³Π°Π²ΡΠ±ΠΎΡΠ°ΡΠ°ΠΉΠ»Π° ΡΠ΅ΠΆΠΈΠΌΠΎΡΠΊΡΡΡΠΈΡΡΠ°ΠΉΠ»Π° ΡΠΈΠΏΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ·Π°ΠΏΡΠΎΡΠ° Π²ΠΈΠ΄Π΄Π°Π½Π½ΡΡ
Π°Π½Π°Π»ΠΈΠ·Π° ΠΌΠ΅ΡΠΎΠ΄ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΏΠ΅Π΄ΠΈΠ½ΠΈΡΡΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Π°Π²ΡΠ΅ΠΌΠ΅Π½ΠΈΠ°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠ·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΡΠ°Π±Π»ΠΈΡΡΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Π°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡΡΠΈΡΠ»ΠΎΠ²ΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉΠ°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΠΈΡΠΊΠ°Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠΉ ΡΠΈΠΏΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈΠ°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
Π΄Π΅ΡΠ΅Π²ΠΎΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΏΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈΠ°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
ΠΊΠ»Π°ΡΡΠ΅ΡΠΈΠ·Π°ΡΠΈΡ ΡΠΈΠΏΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈΠ°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
ΠΎΠ±ΡΠ°ΡΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ° ΡΠΈΠΏΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈΠ°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΠΈΡΠΊΠ°ΡΡΠΎΡΠΈΠ°ΡΠΈΠΉ ΡΠΈΠΏΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈΠ°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΠΈΡΠΊΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΡΠΈΠΏΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈΠΌΠΎΠ΄Π΅Π»ΠΈΠΏΡΠΎΠ³Π½ΠΎΠ·Π° ΡΠΈΠΏΠΌΠ΅ΡΡΡΠ°ΡΡΡΠΎΡΠ½ΠΈΡΠ°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠΎΡΡΠ΅ΡΠ΅Π½ΠΈΡΠΏΡΠ°Π²ΠΈΠ»Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΏΠΎΠ»ΡΠ°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΠΈΠ°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π½ΠΈΡΠΏΡΠ°Π²ΠΈΠ»Π°ΡΡΠΎΡΠΈΠ°ΡΠΈΠΈΠ°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΡΠΏΠΎΡΡΠ΄ΠΎΡΠΈΠ²Π°Π½ΠΈΡΡΠ°Π±Π»ΠΎΠ½ΠΎΠ²ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉΠ°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΡΠΏΡΠΎΡΠ΅Π½ΠΈΡΠ΄Π΅ΡΠ΅Π²Π°ΡΠ΅ΡΠ΅Π½ΠΈΠΉ wsΠ½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Π²Π°ΡΠΈΠ°Π½Ρxpathxs Π²Π°ΡΠΈΠ°Π½ΡΠ·Π°ΠΏΠΈΡΠΈΠ΄Π°ΡΡjson Π²Π°ΡΠΈΠ°Π½ΡΠΏΡΠΎΡΡΠΎΠ³ΠΎΡΠΈΠΏΠ°xs Π²ΠΈΠ΄Π³ΡΡΠΏΠΏΡΠΌΠΎΠ΄Π΅Π»ΠΈxs Π²ΠΈΠ΄ΡΠ°ΡΠ΅ΡΠ°xdto Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π»Ρdom Π·Π°Π²Π΅ΡΡΠ΅Π½Π½ΠΎΡΡΡΠΏΡΠΎΡΡΠΎΠ³ΠΎΡΠΈΠΏΠ°xs Π·Π°Π²Π΅ΡΡΠ΅Π½Π½ΠΎΡΡΡΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎΡΠΈΠΏΠ°xs Π·Π°Π²Π΅ΡΡΠ΅Π½Π½ΠΎΡΡΡΡΡ
Π΅ΠΌΡxs Π·Π°ΠΏΡΠ΅ΡΠ΅Π½Π½ΡΠ΅ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈxs ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΠ³ΡΡΠΏΠΏΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈxs ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡΠ°ΡΡΠΈΠ±ΡΡΠ°xs ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΠΈxs ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΈΠΌΠ΅Π½xs ΠΌΠ΅ΡΠΎΠ΄Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡxs ΠΌΠΎΠ΄Π΅Π»ΡΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎxs Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΡΠΈΠΏΠ°xml Π½Π΅Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠ΅ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈxs ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΡ
ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²xs ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎxs ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅Π·Π½Π°ΡΠ΅Π½ΠΈΡxs ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠΎΡΠ±ΠΎΡΠ°ΡΠ·Π»ΠΎΠ²dom ΠΏΠ΅ΡΠ΅Π½ΠΎΡΡΡΡΠΎΠΊjson ΠΏΠΎΠ·ΠΈΡΠΈΡΠ²Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅dom ΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΠ΅ΡΠΈΠΌΠ²ΠΎΠ»Ρxml ΡΠΈΠΏΠ°ΡΡΠΈΠ±ΡΡΠ°xml ΡΠΈΠΏΠ·Π½Π°ΡΠ΅Π½ΠΈΡjson ΡΠΈΠΏΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎxml ΡΠΈΠΏΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡxs ΡΠΈΠΏΠΏΡΠΎΠ²Π΅ΡΠΊΠΈxml ΡΠΈΠΏΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°domxpath ΡΠΈΠΏΡΠ·Π»Π°dom ΡΠΈΠΏΡΠ·Π»Π°xml ΡΠΎΡΠΌΠ°xml ΡΠΎΡΠΌΠ°ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡxs ΡΠΎΡΠΌΠ°ΡΠ΄Π°ΡΡjson ΡΠΊΡΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²json Π²ΠΈΠ΄ΡΡΠ°Π²Π½Π΅Π½ΠΈΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΈΡΠΎΠ³ΠΎΠ²ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΏΠΎΠ»Π΅ΠΉΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΏΠΎΠ»ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠΎΠ²ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠ΅ΡΡΡΡΠΎΠ²ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠ±ΡΡ
Π³Π°Π»ΡΠ΅ΡΡΠΊΠΎΠ³ΠΎΠΎΡΡΠ°ΡΠΊΠ°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠ²ΡΠ²ΠΎΠ΄Π°ΡΠ΅ΠΊΡΡΠ°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠ³ΡΡΠΏΠΏΡΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²ΠΎΡΠ±ΠΎΡΠ°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΠΏΠ΅ΡΠΈΠΎΠ΄Π°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠ·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°ΠΏΠΎΠ»Π΅ΠΉΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠΌΠ°ΠΊΠ΅ΡΠ°Π³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠΌΠ°ΠΊΠ΅ΡΠ°ΠΎΠ±Π»Π°ΡΡΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠΎΡΡΠ°ΡΠΊΠ°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠΏΠ΅ΡΠΈΠΎΠ΄Π°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡΡΠ΅ΠΊΡΡΠ°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΡΠ²ΡΠ·ΠΈΠ½Π°Π±ΠΎΡΠΎΠ²Π΄Π°Π½Π½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Π»Π΅Π³Π΅Π½Π΄ΡΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡΠΎΡΠ±ΠΎΡΠ°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ΅ΠΆΠΈΠΌΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ΅ΠΆΠΈΠΌΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠ½Π°ΡΡΡΠΎΠ΅ΠΊΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΏΠΎΡΠΎΠ±Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠ½Π°ΡΡΡΠΎΠ΅ΠΊΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ΅ΠΆΠΈΠΌΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
Π°Π²ΡΠΎΠΏΠΎΠ·ΠΈΡΠΈΡΡΠ΅ΡΡΡΡΠΎΠ²ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
Π²Π°ΡΠΈΠ°Π½ΡΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠ΅ΡΡΡΡΠΎΠ²Π²Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ΅ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠΈΠΊΡΠ°ΡΠΈΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
Π²Π°ΠΆΠ½ΠΎΡΡΡΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ΅ΠΊΡΡΠ°ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΏΠΎΡΠΎΠ±ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎΠ²Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΏΠΎΡΠΎΠ±ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡΠ½Π΅asciiΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΡΠ΅ΠΊΡΡΠ°ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠΏΠΎΡΡΡ ΡΡΠ°ΡΡΡΡΠ°Π·Π±ΠΎΡΠ°ΠΏΠΎΡΡΠΎΠ²ΠΎΠ³ΠΎΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΠ·Π°ΠΏΠΈΡΠΈΠΆΡΡΠ½Π°Π»Π°ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΡΡΠ°ΡΡΡΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΈΠ·Π°ΠΏΠΈΡΠΈΠΆΡΡΠ½Π°Π»Π°ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΡΡΠΎΠ²Π΅Π½ΡΠΆΡΡΠ½Π°Π»Π°ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ²ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΡΠ΅ΠΆΠΈΠΌΠ²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ²ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΡΠ΅ΠΆΠΈΠΌΠΏΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΡ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ°ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΎΠ²ΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°ΠΈΠΌΠ΅Π½ΡΠ°ΠΉΠ»ΠΎΠ²Π²zipΡΠ°ΠΉΠ»Π΅ ΠΌΠ΅ΡΠΎΠ΄ΡΠΆΠ°ΡΠΈΡzip ΠΌΠ΅ΡΠΎΠ΄ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡzip ΡΠ΅ΠΆΠΈΠΌΠ²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΏΡΡΠ΅ΠΉΡΠ°ΠΉΠ»ΠΎΠ²zip ΡΠ΅ΠΆΠΈΠΌΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ²zip ΡΠ΅ΠΆΠΈΠΌΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΡΠΏΡΡΠ΅ΠΉzip ΡΡΠΎΠ²Π΅Π½ΡΡΠΆΠ°ΡΠΈΡzip Π·Π²ΡΠΊΠΎΠ²ΠΎΠ΅ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π°ΠΊΡΡΡΠΎΠΊΠ΅ ΠΏΠΎΠ·ΠΈΡΠΈΡΠ²ΠΏΠΎΡΠΎΠΊΠ΅ ΠΏΠΎΡΡΠ΄ΠΎΠΊΠ±Π°ΠΉΡΠΎΠ² ΡΠ΅ΠΆΠΈΠΌΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ΅ΠΆΠΈΠΌΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉΠ΄Π°Π½Π½ΡΡ
ΡΠ΅ΡΠ²ΠΈΡΠ²ΡΡΡΠΎΠ΅Π½Π½ΡΡ
ΠΏΠΎΠΊΡΠΏΠΎΠΊ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎΠ·Π°Π΄Π°Π½ΠΈΡ ΡΠΈΠΏΠΏΠΎΠ΄ΠΏΠΈΡΡΠΈΠΊΠ°Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ
ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΡΡΠΎΠ²Π΅Π½ΡΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡΠ·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡftp Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΏΠΎΡΡΠ΄ΠΊΠ°ΡΡ
Π΅ΠΌΡΠ·Π°ΠΏΡΠΎΡΠ° ΡΠΈΠΏΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡΠΏΠ΅ΡΠΈΠΎΠ΄Π°ΠΌΠΈΡΡ
Π΅ΠΌΡΠ·Π°ΠΏΡΠΎΡΠ° ΡΠΈΠΏΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠΉΡΠΎΡΠΊΠΈΡΡ
Π΅ΠΌΡΠ·Π°ΠΏΡΠΎΡΠ° ΡΠΈΠΏΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡΡ
Π΅ΠΌΡΠ·Π°ΠΏΡΠΎΡΠ° ΡΠΈΠΏΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉΡΠ°Π±Π»ΠΈΡΡΡΡ
Π΅ΠΌΡΠ·Π°ΠΏΡΠΎΡΠ° ΡΠΈΠΏΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡΡΡ
Π΅ΠΌΡΠ·Π°ΠΏΡΠΎΡΠ° httpΠΌΠ΅ΡΠΎΠ΄ Π°Π²ΡΠΎΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΎΠ±ΡΠ΅Π³ΠΎΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ° Π°Π²ΡΠΎΠΏΡΠ΅ΡΠΈΠΊΡΠ½ΠΎΠΌΠ΅ΡΠ°Π·Π°Π΄Π°ΡΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠ²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ³ΠΎΡΠ·ΡΠΊΠ° Π²ΠΈΠ΄ΠΈΠ΅ΡΠ°ΡΡ
ΠΈΠΈ Π²ΠΈΠ΄ΡΠ΅Π³ΠΈΡΡΡΠ°Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ Π²ΠΈΠ΄ΡΠ°Π±Π»ΠΈΡΡΠ²Π½Π΅ΡΠ½Π΅Π³ΠΎΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Π΄Π°Π½Π½ΡΡ
Π·Π°ΠΏΠΈΡΡΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉΠΏΡΠΈΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠ΅ΠΉ ΠΈΠ½Π΄Π΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅Π±Π°Π·ΡΠΏΠ»Π°Π½Π°Π²ΠΈΠ΄ΠΎΠ²ΡΠ°ΡΡΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅Π±ΡΡΡΡΠΎΠ³ΠΎΠ²ΡΠ±ΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΎΠ±ΡΠ΅Π³ΠΎΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΏΠΎΠ΄ΡΠΈΠ½Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΏΠΎΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎΠΏΠΎΠΈΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΎΠ±ΡΠ΅Π³ΠΎΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ° Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ΅ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅Π²ΠΈΠ΄Π°ΡΠ°ΡΡΠ΅ΡΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅Π²ΠΈΠ΄Π°Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅Π·Π°Π΄Π°ΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΏΠ»Π°Π½Π°ΠΎΠ±ΠΌΠ΅Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠ° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΡΠ΅ΡΠ° ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅Π³ΡΠ°Π½ΠΈΡΡΠΏΡΠΈΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡΠ½ΠΎΠΌΠ΅ΡΠ°Π±ΠΈΠ·Π½Π΅ΡΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡΠ½ΠΎΠΌΠ΅ΡΠ°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠ°ΡΡΠ΅ΡΠ° ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ½ΠΎΡΡΡΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΡΡ
Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉΠΏΠΎΠΈΡΠΊΠΏΡΠΈΠ²Π²ΠΎΠ΄Π΅ΠΏΠΎΡΡΡΠΎΠΊΠ΅ ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ½ΠΎΡΡΡΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΏΡΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΠΎΠ±ΡΠ΅Π³ΠΎΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅Π΄Π°Π½Π½ΡΡ
ΠΎΠ±ΡΠ΅Π³ΠΎΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΠΎΠ±ΡΠ΅Π³ΠΎΡΠ΅ΠΊΠ²ΠΈΠ·ΠΈΡΠ° ΡΠ΅ΠΆΠΈΠΌΠ°Π²ΡΠΎΠ½ΡΠΌΠ΅ΡΠ°ΡΠΈΠΈΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ΅ΠΆΠΈΠΌΠ·Π°ΠΏΠΈΡΠΈΡΠ΅Π³ΠΈΡΡΡΠ° ΡΠ΅ΠΆΠΈΠΌΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡΠΌΠΎΠ΄Π°Π»ΡΠ½ΠΎΡΡΠΈ ΡΠ΅ΠΆΠΈΠΌΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ²ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉΠΏΠ»Π°ΡΡΠΎΡΠΌΡΠΈΠ²Π½Π΅ΡΠ½ΠΈΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΡΠ΅ΠΆΠΈΠΌΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡΡΠ΅Π°Π½ΡΠΎΠ² ΡΠ΅ΠΆΠΈΠΌΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡΠ΄Π°Π½Π½ΡΡ
Π²ΡΠ±ΠΎΡΠ°ΠΏΡΠΈΠ²Π²ΠΎΠ΄Π΅ΠΏΠΎΡΡΡΠΎΠΊΠ΅ ΡΠ΅ΠΆΠΈΠΌΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΡΠ΅ΠΆΠΈΠΌΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠ΅ΠΆΠΈΠΌΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΠ±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΎΠΉΠ΄Π°Π½Π½ΡΡ
ΠΏΠΎΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ΅ΡΠΈΠΈΠΊΠΎΠ΄ΠΎΠ²ΠΏΠ»Π°Π½Π°Π²ΠΈΠ΄ΠΎΠ²Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΡΠ΅ΡΠΈΠΈΠΊΠΎΠ΄ΠΎΠ²ΠΏΠ»Π°Π½Π°ΡΡΠ΅ΡΠΎΠ² ΡΠ΅ΡΠΈΠΈΠΊΠΎΠ΄ΠΎΠ²ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠ° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΏΡΠΈΠ²Π²ΠΎΠ΄Π΅ ΡΠΏΠΎΡΠΎΠ±Π²ΡΠ±ΠΎΡΠ° ΡΠΏΠΎΡΠΎΠ±ΠΏΠΎΠΈΡΠΊΠ°ΡΡΡΠΎΠΊΠΈΠΏΡΠΈΠ²Π²ΠΎΠ΄Π΅ΠΏΠΎΡΡΡΠΎΠΊΠ΅ ΡΠΏΠΎΡΠΎΠ±ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΏΠ΄Π°Π½Π½ΡΡ
ΡΠ°Π±Π»ΠΈΡΡΠ²Π½Π΅ΡΠ½Π΅Π³ΠΎΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Π΄Π°Π½Π½ΡΡ
ΡΠΈΠΏΠΊΠΎΠ΄Π°ΠΏΠ»Π°Π½Π°Π²ΠΈΠ΄ΠΎΠ²ΡΠ°ΡΡΠ΅ΡΠ° ΡΠΈΠΏΠΊΠΎΠ΄Π°ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠ° ΡΠΈΠΏΠΌΠ°ΠΊΠ΅ΡΠ° ΡΠΈΠΏΠ½ΠΎΠΌΠ΅ΡΠ°Π±ΠΈΠ·Π½Π΅ΡΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠΈΠΏΠ½ΠΎΠΌΠ΅ΡΠ°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° ΡΠΈΠΏΠ½ΠΎΠΌΠ΅ΡΠ°Π·Π°Π΄Π°ΡΠΈ ΡΠΈΠΏΡΠΎΡΠΌΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ Π²Π°ΠΆΠ½ΠΎΡΡΡΠΏΡΠΎΠ±Π»Π΅ΠΌΡΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΌΠ°ΡΡΡΠ°Π±Π°ΡΠΎΡΠΌΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎΡΡΠΈΡΡΠ°ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π²Π°ΡΠΈΠ°Π½ΡΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉΠ΄Π°ΡΡΠ½Π°ΡΠ°Π»Π° Π²ΠΈΠ΄Π³ΡΠ°Π½ΠΈΡΡ Π²ΠΈΠ΄ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π²ΠΈΠ΄ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡΠΏΠΎΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎΠΏΠΎΠΈΡΠΊΠ° Π²ΠΈΠ΄ΡΠ°ΠΌΠΊΠΈ Π²ΠΈΠ΄ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π²ΠΈΠ΄ΡΠ²Π΅ΡΠ° Π²ΠΈΠ΄ΡΠΈΡΠ»ΠΎΠ²ΠΎΠ³ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ Π²ΠΈΠ΄ΡΡΠΈΡΡΠ° Π΄ΠΎΠΏΡΡΡΠΈΠΌΠ°ΡΠ΄Π»ΠΈΠ½Π° Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉΠ·Π½Π°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅byteordermark ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎΠΏΠΎΠΈΡΠΊΠ° ΠΈΡΡΠΎΡΠ½ΠΈΠΊΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΊΠ»Π°Π²ΠΈΡΠ° ΠΊΠΎΠ΄Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°xbase ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠ°ΡΠ΅ΠΊΡΡΠ° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΏΠΎΠΈΡΠΊΠ° Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΡΠΎΡΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΏΡΠ΅Π΄ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΏΡΠΈΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈΠ΄Π°Π½Π½ΡΡ
ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΏΠ°Π½Π΅Π»ΠΈΡΠ°Π·Π΄Π΅Π»ΠΎΠ² ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ΄ΠΈΠ°Π»ΠΎΠ³Π°Π²ΠΎΠΏΡΠΎΡ ΡΠ΅ΠΆΠΈΠΌΠ·Π°ΠΏΡΡΠΊΠ°ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠΎΠΊΡΡΠ³Π»Π΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠΎΡΠΊΡΡΡΠΈΡΡΠΎΡΠΌΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠΏΠΎΠ»Π½ΠΎΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎΠΏΠΎΠΈΡΠΊΠ° ΡΠΊΠΎΡΠΎΡΡΡΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅Π²Π½Π΅ΡΠ½Π΅Π³ΠΎΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°Π΄Π°Π½Π½ΡΡ
ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΠ±Π°Π·ΡΠ΄Π°Π½Π½ΡΡ
ΡΠΏΠΎΡΠΎΠ±Π²ΡΠ±ΠΎΡΠ°ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠ°windows ΡΠΏΠΎΡΠΎΠ±ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡΡΡΡΠΎΠΊΠΈ ΡΡΠ°ΡΡΡΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠ²Π½Π΅ΡΠ½Π΅ΠΉΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠΈΠΏΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠΈΠΏΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡΠΊΠ»Π°Π²ΠΈΡΠΈenter ΡΠΈΠΏΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈΠΎΠ²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈΠ±Π°Π·ΡΠ΄Π°Π½Π½ΡΡ
ΡΡΠΎΠ²Π΅Π½ΡΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈΡΡΠ°Π½Π·Π°ΠΊΡΠΈΠΉ Ρ
Π΅ΡΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΡΡΠΈΠ΄Π°ΡΡ",type:"comΠΎΠ±ΡΠ΅ΠΊΡ ftpΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ httpΠ·Π°ΠΏΡΠΎΡ httpΡΠ΅ΡΠ²ΠΈΡΠΎΡΠ²Π΅Ρ httpΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ wsΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ wsΠΏΡΠΎΠΊΡΠΈ xbase Π°Π½Π°Π»ΠΈΠ·Π΄Π°Π½Π½ΡΡ
Π°Π½Π½ΠΎΡΠ°ΡΠΈΡxs Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ°Π΄Π°Π½Π½ΡΡ
Π±ΡΡΠ΅ΡΠ΄Π²ΠΎΠΈΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅xs Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ
ΡΠΈΡΠ΅Π» Π³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°ΡΡΡ
Π΅ΠΌΠ° Π³Π΅ΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠ°ΡΡΡ
Π΅ΠΌΠ° Π³ΡΡΠΏΠΏΠ°ΠΌΠΎΠ΄Π΅Π»ΠΈxs Π΄Π°Π½Π½ΡΠ΅ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
Π΄Π²ΠΎΠΈΡΠ½ΡΠ΅Π΄Π°Π½Π½ΡΠ΅ Π΄Π΅Π½Π΄ΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ°Π³Π°Π½ΡΠ° Π΄ΠΈΠ°Π»ΠΎΠ³Π²ΡΠ±ΠΎΡΠ°ΡΠ°ΠΉΠ»Π° Π΄ΠΈΠ°Π»ΠΎΠ³Π²ΡΠ±ΠΎΡΠ°ΡΠ²Π΅ΡΠ° Π΄ΠΈΠ°Π»ΠΎΠ³Π²ΡΠ±ΠΎΡΠ°ΡΡΠΈΡΡΠ° Π΄ΠΈΠ°Π»ΠΎΠ³ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΡΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Π½ΠΈΡ Π΄ΠΈΠ°Π»ΠΎΠ³ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎΠΏΠ΅ΡΠΈΠΎΠ΄Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρdom Π΄ΠΎΠΊΡΠΌΠ΅Π½Ρhtml Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡxs Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΡdom Π·Π°ΠΏΠΈΡΡfastinfoset Π·Π°ΠΏΠΈΡΡhtml Π·Π°ΠΏΠΈΡΡjson Π·Π°ΠΏΠΈΡΡxml Π·Π°ΠΏΠΈΡΡzipΡΠ°ΠΉΠ»Π° Π·Π°ΠΏΠΈΡΡΠ΄Π°Π½Π½ΡΡ
Π·Π°ΠΏΠΈΡΡΡΠ΅ΠΊΡΡΠ° Π·Π°ΠΏΠΈΡΡΡΠ·Π»ΠΎΠ²dom Π·Π°ΠΏΡΠΎΡ Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠ΅ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅openssl Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΏΠΎΠ»Π΅ΠΉΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΈΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ΡΠ΅ΠΊΡΡΠ° ΠΈΠΌΠΏΠΎΡΡxs ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠΏΠΎΡΡΠ° ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠΏΠΎΡΡΠΎΠ²ΠΎΠ΅ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠΏΠΎΡΡΠΎΠ²ΡΠΉΠΏΡΠΎΡΠΈΠ»Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠΏΡΠΎΠΊΡΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΄Π»ΡΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡxs ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅Π°ΡΡΠΈΠ±ΡΡΠ°xs ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΡΠΎΠ±ΡΡΠΈΡΠΆΡΡΠ½Π°Π»Π°ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ΄ΠΎΡΡΡΠΏΠ½ΡΡ
Π½Π°ΡΡΡΠΎΠ΅ΠΊΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΈΡΠ΅ΡΠ°ΡΠΎΡΡΠ·Π»ΠΎΠ²dom ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡΠ΄Π°ΡΡ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡΠ΄Π²ΠΎΠΈΡΠ½ΡΡ
Π΄Π°Π½Π½ΡΡ
ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡΡΡΡΠΎΠΊΠΈ ΠΊΠ²Π°Π»ΠΈΡΠΈΠΊΠ°ΡΠΎΡΡΡΠΈΡΠ»Π° ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠΌΠ°ΠΊΠ΅ΡΠ°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΡΠΈΠΊΠ½Π°ΡΡΡΠΎΠ΅ΠΊΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠΌΠ°ΠΊΠ΅ΡΠ°ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ½Π°ΡΡΡΠΎΠ΅ΠΊΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡΠΎΡΠΌΠ°ΡΠ½ΠΎΠΉΡΡΡΠΎΠΊΠΈ Π»ΠΈΠ½ΠΈΡ ΠΌΠ°ΠΊΠ΅ΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΌΠ°ΠΊΠ΅ΡΠΎΠ±Π»Π°ΡΡΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΌΠ°ΠΊΠ΅ΡΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΌΠ°ΡΠΊΠ°xs ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ Π½Π°Π±ΠΎΡΡΡ
Π΅ΠΌxml Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈjson ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΎΠ±Ρ
ΠΎΠ΄Π΄Π΅ΡΠ΅Π²Π°dom ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅Π°ΡΡΠΈΠ±ΡΡΠ°xs ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅Π½ΠΎΡΠ°ΡΠΈΠΈxs ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°xs ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡΡΠΎΠ±ΡΡΠΈΡΠ΄ΠΎΡΡΡΠΏΠΆΡΡΠ½Π°Π»Π°ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡΡΠΎΠ±ΡΡΠΈΡΠΎΡΠΊΠ°Π·Π²Π΄ΠΎΡΡΡΠΏΠ΅ΠΆΡΡΠ½Π°Π»Π°ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈΡΠ°ΡΡΠΈΡΡΠΎΠ²ΠΊΠΈΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎΡΠ°ΠΉΠ»Π° ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠΈΠΏΠΎΠ² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Π³ΡΡΠΏΠΏΡΠ°ΡΡΠΈΠ±ΡΡΠΎΠ²xs ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Π³ΡΡΠΏΠΏΡΠΌΠΎΠ΄Π΅Π»ΠΈxs ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΎΡΡΠΈxs ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΏΡΠΎΡΡΠΎΠ³ΠΎΡΠΈΠΏΠ°xs ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎΡΡΠ°Π²Π½ΠΎΠ³ΠΎΡΠΈΠΏΠ°xs ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΈΠΏΠ°Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°dom ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡxpathxs ΠΎΡΠ±ΠΎΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΏΠ°ΠΊΠ΅ΡΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΡΡ
Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ²ΡΠ±ΠΎΡΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ·Π°ΠΏΠΈΡΠΈjson ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ·Π°ΠΏΠΈΡΠΈxml ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΡΡΠ΅Π½ΠΈΡxml ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅xs ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²ΡΠΈΠΊ ΠΏΠΎΠ»Π΅Π°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΠ»Π΅ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π»Ρdom ΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ·Π°ΠΏΡΠΎΡΠ° ΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π»ΡΠΎΡΡΠ΅ΡΠ° ΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π»ΡΠΎΡΡΠ΅ΡΠ°Π°Π½Π°Π»ΠΈΠ·Π°Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π»ΡΡΡ
Π΅ΠΌxml ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΡΠΎΠΊΠ²ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎΡΡΠ° ΠΏΠΎΡΡΠΎΠ²ΠΎΠ΅ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅xsl ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΊΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠΌΡxml ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ²ΡΠ²ΠΎΠ΄Π°ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
Π²ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ²ΡΠ²ΠΎΠ΄Π°ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
Π²ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΉΠ΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ°Π·ΡΠΌΠ΅Π½ΠΎΠ²Π°ΡΠ΅Π»ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΈΠΌΠ΅Π½dom ΡΠ°ΠΌΠΊΠ° ΡΠ°ΡΠΏΠΈΡΠ°Π½ΠΈΠ΅ΡΠ΅Π³Π»Π°ΠΌΠ΅Π½ΡΠ½ΠΎΠ³ΠΎΠ·Π°Π΄Π°Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ΅ΠΈΠΌΡxml ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡΡΠ΅Π½ΠΈΡΠ΄Π°Π½Π½ΡΡ
ΡΠ²ΠΎΠ΄Π½Π°ΡΠ΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΠ° ΡΠ²ΡΠ·ΡΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Π²ΡΠ±ΠΎΡΠ° ΡΠ²ΡΠ·ΡΠΏΠΎΡΠΈΠΏΡ ΡΠ²ΡΠ·ΡΠΏΠΎΡΠΈΠΏΡΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡxdto ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΊΠ»ΠΈΠ΅Π½ΡΠ°windows ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΊΠ»ΠΈΠ΅Π½ΡΠ°ΡΠ°ΠΉΠ» ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΠΊΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΡΡΠΈΡ
ΡΠ΅Π½ΡΡΠΎΠ²windows ΡΠ΅ΡΡΠΈΡΠΈΠΊΠ°ΡΡΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΡΡΡΠΈΡ
ΡΠ΅Π½ΡΡΠΎΠ²ΡΠ°ΠΉΠ» ΡΠΆΠ°ΡΠΈΠ΅Π΄Π°Π½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ½Π°ΡΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ΠΊΠ»Π°Π²ΠΈΡ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°ΡΠ΄Π°ΡΠ°Π½Π°ΡΠ°Π»Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉΠΏΠ΅ΡΠΈΠΎΠ΄ ΡΡ
Π΅ΠΌΠ°xml ΡΡ
Π΅ΠΌΠ°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
ΡΠ°Π±Π»ΠΈΡΠ½ΡΠΉΠ΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉΠ΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΠ΅ΡΡΠΈΡΡΠ΅ΠΌΠΎΠ΅ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ΄Π°Π½Π½ΡΡ
xml ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ°Π±ΡΠΈΠΊΠ°xdto ΡΠ°ΠΉΠ» ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉΠΏΠΎΡΠΎΠΊ ΡΠ°ΡΠ΅ΡΠ΄Π»ΠΈΠ½Ρxs ΡΠ°ΡΠ΅ΡΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π°ΡΠ°Π·ΡΡΠ΄ΠΎΠ²Π΄ΡΠΎΠ±Π½ΠΎΠΉΡΠ°ΡΡΠΈxs ΡΠ°ΡΠ΅ΡΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎΠ²ΠΊΠ»ΡΡΠ°ΡΡΠ΅Π³ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡxs ΡΠ°ΡΠ΅ΡΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π³ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡxs ΡΠ°ΡΠ΅ΡΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉΠ΄Π»ΠΈΠ½Ρxs ΡΠ°ΡΠ΅ΡΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎΠ²ΠΊΠ»ΡΡΠ°ΡΡΠ΅Π³ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡxs ΡΠ°ΡΠ΅ΡΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎΠΈΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π³ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡxs ΡΠ°ΡΠ΅ΡΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉΠ΄Π»ΠΈΠ½Ρxs ΡΠ°ΡΠ΅ΡΠΎΠ±ΡΠ°Π·ΡΠ°xs ΡΠ°ΡΠ΅ΡΠΎΠ±ΡΠ΅Π³ΠΎΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π°ΡΠ°Π·ΡΡΠ΄ΠΎΠ²xs ΡΠ°ΡΠ΅ΡΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡxs ΡΠ°ΡΠ΅ΡΠΏΡΠΎΠ±Π΅Π»ΡΠ½ΡΡ
ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ²xs ΡΠΈΠ»ΡΡΡΡΠ·Π»ΠΎΠ²dom ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½Π°ΡΡΡΡΠΎΠΊΠ° ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉΠ΄ΠΎΠΊΡΠΌΠ΅Π½Ρ ΡΡΠ°Π³ΠΌΠ΅Π½Ρxs Ρ
Π΅ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅Π΄Π°Π½Π½ΡΡ
Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ²Π΅Ρ ΡΡΠ΅Π½ΠΈΠ΅fastinfoset ΡΡΠ΅Π½ΠΈΠ΅html ΡΡΠ΅Π½ΠΈΠ΅json ΡΡΠ΅Π½ΠΈΠ΅xml ΡΡΠ΅Π½ΠΈΠ΅zipΡΠ°ΠΉΠ»Π° ΡΡΠ΅Π½ΠΈΠ΅Π΄Π°Π½Π½ΡΡ
ΡΡΠ΅Π½ΠΈΠ΅ΡΠ΅ΠΊΡΡΠ° ΡΡΠ΅Π½ΠΈΠ΅ΡΠ·Π»ΠΎΠ²dom ΡΡΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈΠ΄Π°Π½Π½ΡΡ
comsafearray Π΄Π΅ΡΠ΅Π²ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΏΠΈΡΠΎΠΊΠ·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΡΡΡΠΊΡΡΡΠ° ΡΠ°Π±Π»ΠΈΡΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½Π°ΡΡΡΡΡΠΊΡΡΡΠ° ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉΠΌΠ°ΡΡΠΈΠ² ",literal:n},contains:[{className:"meta",begin:"#|&",end:"$",keywords:{$pattern:t,keyword:a+"Π·Π°Π³ΡΡΠ·ΠΈΡΡΠΈΠ·ΡΠ°ΠΉΠ»Π° Π²Π΅Π±ΠΊΠ»ΠΈΠ΅Π½Ρ Π²ΠΌΠ΅ΡΡΠΎ Π²Π½Π΅ΡΠ½Π΅Π΅ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΊΠΎΠ½Π΅ΡΠΎΠ±Π»Π°ΡΡΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠ΅ΡΠ²Π΅Ρ Π½Π°ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ Π½Π°ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅Π½Π°ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π½Π°ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅Π½Π°ΡΠ΅ΡΠ²Π΅ΡΠ΅Π±Π΅Π·ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π°ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π½Π°ΡΠ΅ΡΠ²Π΅ΡΠ΅Π±Π΅Π·ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΎΠ±Π»Π°ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΠΎΡΠ»Π΅ ΡΠ΅ΡΠ²Π΅Ρ ΡΠΎΠ»ΡΡΡΠΉΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ±ΡΡΠ½ΠΎΠ΅ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ»ΡΡΡΠΉΠΊΠ»ΠΈΠ΅Π½ΡΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠ΅ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ½ΠΊΠΈΠΉΠΊΠ»ΠΈΠ΅Π½Ρ "},contains:[s]},{className:"function",variants:[{begin:"ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°|ΡΡΠ½ΠΊΡΠΈΡ",end:"\\)",keywords:"ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ"},{begin:"ΠΊΠΎΠ½Π΅ΡΠΏΡΠΎΡΠ΅Π΄ΡΡΡ|ΠΊΠΎΠ½Π΅ΡΡΡΠ½ΠΊΡΠΈΠΈ",keywords:"ΠΊΠΎΠ½Π΅ΡΠΏΡΠΎΡΠ΅Π΄ΡΡΡ ΠΊΠΎΠ½Π΅ΡΡΡΠ½ΠΊΡΠΈΠΈ"}],contains:[{begin:"\\(",end:"\\)",endsParent:!0,contains:[{className:"params",begin:t,end:",",excludeEnd:!0,endsWithParent:!0,keywords:{$pattern:t,keyword:"Π·Π½Π°Ρ",literal:n},contains:[r,i,o]},s]},e.inherit(e.TITLE_MODE,{begin:t})]},s,{className:"symbol",begin:"~",end:";|:",excludeEnd:!0},r,i,o]}};var de=function(e){const t=e.regex,a=e.COMMENT(/;/,/$/);return{name:"Augmented Backus-Naur Form",illegal:/[!@#$^&',?+~`|:]/,keywords:["ALPHA","BIT","CHAR","CR","CRLF","CTL","DIGIT","DQUOTE","HEXDIG","HTAB","LF","LWSP","OCTET","SP","VCHAR","WSP"],contains:[{scope:"operator",match:/=\/?/},{scope:"attribute",match:t.concat(/^[a-zA-Z][a-zA-Z0-9-]*/,/(?=\s*=)/)},a,{scope:"symbol",match:/%b[0-1]+(-[0-1]+|(\.[0-1]+)+)?/},{scope:"symbol",match:/%d[0-9]+(-[0-9]+|(\.[0-9]+)+)?/},{scope:"symbol",match:/%x[0-9A-F]+(-[0-9A-F]+|(\.[0-9A-F]+)+)?/},{scope:"symbol",match:/%[si](?=".*")/},e.QUOTE_STRING_MODE,e.NUMBER_MODE]}};var me=function(e){const t=e.regex,a=["GET","POST","HEAD","PUT","DELETE","CONNECT","OPTIONS","PATCH","TRACE"];return{name:"Apache Access Log",contains:[{className:"number",begin:/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?\b/,relevance:5},{className:"number",begin:/\b\d+\b/,relevance:0},{className:"string",begin:t.concat(/"/,t.either(...a)),end:/"/,keywords:a,illegal:/\n/,relevance:5,contains:[{begin:/HTTP\/[12]\.\d'/,relevance:5}]},{className:"string",begin:/\[\d[^\]\n]{8,}\]/,illegal:/\n/,relevance:1},{className:"string",begin:/\[/,end:/\]/,illegal:/\n/,relevance:0},{className:"string",begin:/"Mozilla\/\d\.\d \(/,end:/"/,illegal:/\n/,relevance:3},{className:"string",begin:/"/,end:/"/,illegal:/\n/,relevance:0}]}};var pe=function(e){const t=e.regex,a=/[a-zA-Z_$][a-zA-Z0-9_$]*/,n=t.concat(a,t.concat("(\\.",a,")*")),r={className:"rest_arg",begin:/[.]{3}/,end:a,relevance:10};return{name:"ActionScript",aliases:["as"],keywords:{keyword:["as","break","case","catch","class","const","continue","default","delete","do","dynamic","each","else","extends","final","finally","for","function","get","if","implements","import","in","include","instanceof","interface","internal","is","namespace","native","new","override","package","private","protected","public","return","set","static","super","switch","this","throw","try","typeof","use","var","void","while","with"],literal:["true","false","null","undefined"]},contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.C_NUMBER_MODE,{match:[/\bpackage/,/\s+/,n],className:{1:"keyword",3:"title.class"}},{match:[/\b(?:class|interface|extends|implements)/,/\s+/,a],className:{1:"keyword",3:"title.class"}},{className:"meta",beginKeywords:"import include",end:/;/,keywords:{keyword:"import include"}},{beginKeywords:"function",end:/[{;]/,excludeEnd:!0,illegal:/\S/,contains:[e.inherit(e.TITLE_MODE,{className:"title.function"}),{className:"params",begin:/\(/,end:/\)/,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,r]},{begin:t.concat(/:\s*/,/([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/)}]},e.METHOD_GUARD],illegal:/#/}};var ue=function(e){const t="\\d(_|\\d)*",a="[eE][-+]?"+t,n="\\b("+(t+"#\\w+(\\.\\w+)?#("+a+")?")+"|"+(t+"(\\."+t+")?("+a+")?")+")",r="[A-Za-z](_?[A-Za-z0-9.])*",i="[]\\{\\}%#'\"",o=e.COMMENT("--","$"),s={begin:"\\s+:\\s+",end:"\\s*(:=|;|\\)|=>|$)",illegal:i,contains:[{beginKeywords:"loop for declare others",endsParent:!0},{className:"keyword",beginKeywords:"not null constant access function procedure in out aliased exception"},{className:"type",begin:r,endsParent:!0,relevance:0}]};return{name:"Ada",case_insensitive:!0,keywords:{keyword:["abort","else","new","return","abs","elsif","not","reverse","abstract","end","accept","entry","select","access","exception","of","separate","aliased","exit","or","some","all","others","subtype","and","for","out","synchronized","array","function","overriding","at","tagged","generic","package","task","begin","goto","pragma","terminate","body","private","then","if","procedure","type","case","in","protected","constant","interface","is","raise","use","declare","range","delay","limited","record","when","delta","loop","rem","while","digits","renames","with","do","mod","requeue","xor"],literal:["True","False"]},contains:[o,{className:"string",begin:/"/,end:/"/,contains:[{begin:/""/,relevance:0}]},{className:"string",begin:/'.'/},{className:"number",begin:n,relevance:0},{className:"symbol",begin:"'"+r},{className:"title",begin:"(\\bwith\\s+)?(\\bprivate\\s+)?\\bpackage\\s+(\\bbody\\s+)?",end:"(is|$)",keywords:"package body",excludeBegin:!0,excludeEnd:!0,illegal:i},{begin:"(\\b(with|overriding)\\s+)?\\b(function|procedure)\\s+",end:"(\\bis|\\bwith|\\brenames|\\)\\s*;)",keywords:"overriding function procedure with is renames return",returnBegin:!0,contains:[o,{className:"title",begin:"(\\bwith\\s+)?\\b(function|procedure)\\s+",end:"(\\(|\\s+|$)",excludeBegin:!0,excludeEnd:!0,illegal:i},s,{className:"type",begin:"\\breturn\\s+",end:"(\\s+|;|$)",keywords:"return",excludeBegin:!0,excludeEnd:!0,endsParent:!0,illegal:i}]},{className:"type",begin:"\\b(sub)?type\\s+",end:"\\s+",keywords:"type",excludeBegin:!0,illegal:i},s]}};var ge=function(e){const t={className:"built_in",begin:"\\b(void|bool|int8|int16|int32|int64|int|uint8|uint16|uint32|uint64|uint|string|ref|array|double|float|auto|dictionary)"},a={className:"symbol",begin:"[a-zA-Z0-9_]+@"},n={className:"keyword",begin:"<",end:">",contains:[t,a]};return t.contains=[n],a.contains=[n],{name:"AngelScript",aliases:["asc"],keywords:["for","in|0","break","continue","while","do|0","return","if","else","case","switch","namespace","is","cast","or","and","xor","not","get|0","in","inout|10","out","override","set|0","private","public","const","default|0","final","shared","external","mixin|10","enum","typedef","funcdef","this","super","import","from","interface","abstract|0","try","catch","protected","explicit","property"],illegal:"(^using\\s+[A-Za-z0-9_\\.]+;$|\\bfunction\\s*[^\\(])",contains:[{className:"string",begin:"'",end:"'",illegal:"\\n",contains:[e.BACKSLASH_ESCAPE],relevance:0},{className:"string",begin:'"""',end:'"""'},{className:"string",begin:'"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE],relevance:0},e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"string",begin:"^\\s*\\[",end:"\\]"},{beginKeywords:"interface namespace",end:/\{/,illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]},{beginKeywords:"class",end:/\{/,illegal:"[;.\\-]",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+",contains:[{begin:"[:,]\\s*",contains:[{className:"symbol",begin:"[a-zA-Z0-9_]+"}]}]}]},t,a,{className:"literal",begin:"\\b(null|true|false)"},{className:"number",relevance:0,begin:"(-?)(\\b0[xXbBoOdD][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?f?|\\.\\d+f?)([eE][-+]?\\d+f?)?)"}]}};var Ee=function(e){const t={className:"number",begin:/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}(:\d{1,5})?/};return{name:"Apache config",aliases:["apacheconf"],case_insensitive:!0,contains:[e.HASH_COMMENT_MODE,{className:"section",begin:/<\/?/,end:/>/,contains:[t,{className:"number",begin:/:\d{1,5}/},e.inherit(e.QUOTE_STRING_MODE,{relevance:0})]},{className:"attribute",begin:/\w+/,relevance:0,keywords:{_:["order","deny","allow","setenv","rewriterule","rewriteengine","rewritecond","documentroot","sethandler","errordocument","loadmodule","options","header","listen","serverroot","servername"]},starts:{end:/$/,relevance:0,keywords:{literal:"on off all deny allow"},contains:[{className:"meta",begin:/\s\[/,end:/\]$/},{className:"variable",begin:/[\$%]\{/,end:/\}/,contains:["self",{className:"number",begin:/[$%]\d+/}]},t,{className:"number",begin:/\b\d+/},e.QUOTE_STRING_MODE]}}],illegal:/\S/}};var Se=function(e){const t=e.regex,a=e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),n={className:"params",begin:/\(/,end:/\)/,contains:["self",e.C_NUMBER_MODE,a]},r=e.COMMENT(/--/,/$/),i=[r,e.COMMENT(/\(\*/,/\*\)/,{contains:["self",r]}),e.HASH_COMMENT_MODE];return{name:"AppleScript",aliases:["osascript"],keywords:{keyword:"about above after against and around as at back before beginning behind below beneath beside between but by considering contain contains continue copy div does eighth else end equal equals error every exit fifth first for fourth from front get given global if ignoring in into is it its last local me middle mod my ninth not of on onto or over prop property put ref reference repeat returning script second set seventh since sixth some tell tenth that the|0 then third through thru timeout times to transaction try until where while whose with without",literal:"AppleScript false linefeed return pi quote result space tab true",built_in:"alias application boolean class constant date file integer list number real record string text activate beep count delay launch log offset read round run say summarize write character characters contents day frontmost id item length month name|0 paragraph paragraphs rest reverse running time version weekday word words year"},contains:[a,e.C_NUMBER_MODE,{className:"built_in",begin:t.concat(/\b/,t.either(/clipboard info/,/the clipboard/,/info for/,/list (disks|folder)/,/mount volume/,/path to/,/(close|open for) access/,/(get|set) eof/,/current date/,/do shell script/,/get volume settings/,/random number/,/set volume/,/system attribute/,/system info/,/time to GMT/,/(load|run|store) script/,/scripting components/,/ASCII (character|number)/,/localized string/,/choose (application|color|file|file name|folder|from list|remote application|URL)/,/display (alert|dialog)/),/\b/)},{className:"built_in",begin:/^\s*return\b/},{className:"literal",begin:/\b(text item delimiters|current application|missing value)\b/},{className:"keyword",begin:t.concat(/\b/,t.either(/apart from/,/aside from/,/instead of/,/out of/,/greater than/,/isn't|(doesn't|does not) (equal|come before|come after|contain)/,/(greater|less) than( or equal)?/,/(starts?|ends|begins?) with/,/contained by/,/comes (before|after)/,/a (ref|reference)/,/POSIX (file|path)/,/(date|time) string/,/quoted form/),/\b/)},{beginKeywords:"on",illegal:/[${=;\n]/,contains:[e.UNDERSCORE_TITLE_MODE,n]},...i],illegal:/\/\/|->|=>|\[\[/}};var be=function(e){const t="[A-Za-z_][0-9A-Za-z_]*",a={keyword:["if","for","while","var","new","function","do","return","void","else","break"],literal:["BackSlash","DoubleQuote","false","ForwardSlash","Infinity","NaN","NewLine","null","PI","SingleQuote","Tab","TextFormatting","true","undefined"],built_in:["Abs","Acos","All","Angle","Any","Area","AreaGeodetic","Array","Asin","Atan","Atan2","Attachments","Average","Back","Bearing","Boolean","Buffer","BufferGeodetic","Ceil","Centroid","Clip","Concatenate","Console","Constrain","Contains","ConvertDirection","Cos","Count","Crosses","Cut","Date","DateAdd","DateDiff","Day","Decode","DefaultValue","Densify","DensifyGeodetic","Dictionary","Difference","Disjoint","Distance","DistanceGeodetic","Distinct","Domain","DomainCode","DomainName","EnvelopeIntersects","Equals","Erase","Exp","Expects","Extent","Feature","FeatureSet","FeatureSetByAssociation","FeatureSetById","FeatureSetByName","FeatureSetByPortalItem","FeatureSetByRelationshipName","Filter","Find","First","Floor","FromCharCode","FromCodePoint","FromJSON","GdbVersion","Generalize","Geometry","GetFeatureSet","GetUser","GroupBy","Guid","Hash","HasKey","Hour","IIf","Includes","IndexOf","Insert","Intersection","Intersects","IsEmpty","IsNan","ISOMonth","ISOWeek","ISOWeekday","ISOYear","IsSelfIntersecting","IsSimple","Left|0","Length","Length3D","LengthGeodetic","Log","Lower","Map","Max","Mean","Mid","Millisecond","Min","Minute","Month","MultiPartToSinglePart","Multipoint","NextSequenceValue","None","Now","Number","Offset|0","OrderBy","Overlaps","Point","Polygon","Polyline","Pop","Portal","Pow","Proper","Push","Random","Reduce","Relate","Replace","Resize","Reverse","Right|0","RingIsClockwise","Rotate","Round","Schema","Second","SetGeometry","Simplify","Sin","Slice","Sort","Splice","Split","Sqrt","Stdev","SubtypeCode","SubtypeName","Subtypes","Sum","SymmetricDifference","Tan","Text","Timestamp","ToCharCode","ToCodePoint","Today","ToHex","ToLocal","Top|0","Touches","ToUTC","TrackAccelerationAt","TrackAccelerationWindow","TrackCurrentAcceleration","TrackCurrentDistance","TrackCurrentSpeed","TrackCurrentTime","TrackDistanceAt","TrackDistanceWindow","TrackDuration","TrackFieldWindow","TrackGeometryWindow","TrackIndex","TrackSpeedAt","TrackSpeedWindow","TrackStartTime","TrackWindow","Trim","TypeOf","Union","Upper","UrlEncode","Variance","Week","Weekday","When","Within","Year"]},n={className:"number",variants:[{begin:"\\b(0[bB][01]+)"},{begin:"\\b(0[oO][0-7]+)"},{begin:e.C_NUMBER_RE}],relevance:0},r={className:"subst",begin:"\\$\\{",end:"\\}",keywords:a,contains:[]},i={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,r]};r.contains=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,n,e.REGEXP_MODE];const o=r.contains.concat([e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]);return{name:"ArcGIS Arcade",case_insensitive:!0,keywords:a,contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,i,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,{className:"symbol",begin:"\\$[datastore|feature|layer|map|measure|sourcefeature|sourcelayer|targetfeature|targetlayer|value|view]+"},n,{begin:/[{,]\s*/,relevance:0,contains:[{begin:t+"\\s*:",returnBegin:!0,relevance:0,contains:[{className:"attr",begin:t,relevance:0}]}]},{begin:"("+e.RE_STARTERS_RE+"|\\b(return)\\b)\\s*",keywords:"return",contains:[e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,e.REGEXP_MODE,{className:"function",begin:"(\\(.*?\\)|"+t+")\\s*=>",returnBegin:!0,end:"\\s*=>",contains:[{className:"params",variants:[{begin:t},{begin:/\(\s*\)/},{begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:a,contains:o}]}]}],relevance:0},{beginKeywords:"function",end:/\{/,excludeEnd:!0,contains:[e.inherit(e.TITLE_MODE,{className:"title.function",begin:t}),{className:"params",begin:/\(/,end:/\)/,excludeBegin:!0,excludeEnd:!0,contains:o}],illegal:/\[|%/},{begin:/\$[(.]/}],illegal:/#(?!!)/}};var Te=function(e){const t={type:["boolean","byte","word","String"],built_in:["KeyboardController","MouseController","SoftwareSerial","EthernetServer","EthernetClient","LiquidCrystal","RobotControl","GSMVoiceCall","EthernetUDP","EsploraTFT","HttpClient","RobotMotor","WiFiClient","GSMScanner","FileSystem","Scheduler","GSMServer","YunClient","YunServer","IPAddress","GSMClient","GSMModem","Keyboard","Ethernet","Console","GSMBand","Esplora","Stepper","Process","WiFiUDP","GSM_SMS","Mailbox","USBHost","Firmata","PImage","Client","Server","GSMPIN","FileIO","Bridge","Serial","EEPROM","Stream","Mouse","Audio","Servo","File","Task","GPRS","WiFi","Wire","TFT","GSM","SPI","SD"],_hints:["setup","loop","runShellCommandAsynchronously","analogWriteResolution","retrieveCallingNumber","printFirmwareVersion","analogReadResolution","sendDigitalPortPair","noListenOnLocalhost","readJoystickButton","setFirmwareVersion","readJoystickSwitch","scrollDisplayRight","getVoiceCallStatus","scrollDisplayLeft","writeMicroseconds","delayMicroseconds","beginTransmission","getSignalStrength","runAsynchronously","getAsynchronously","listenOnLocalhost","getCurrentCarrier","readAccelerometer","messageAvailable","sendDigitalPorts","lineFollowConfig","countryNameWrite","runShellCommand","readStringUntil","rewindDirectory","readTemperature","setClockDivider","readLightSensor","endTransmission","analogReference","detachInterrupt","countryNameRead","attachInterrupt","encryptionType","readBytesUntil","robotNameWrite","readMicrophone","robotNameRead","cityNameWrite","userNameWrite","readJoystickY","readJoystickX","mouseReleased","openNextFile","scanNetworks","noInterrupts","digitalWrite","beginSpeaker","mousePressed","isActionDone","mouseDragged","displayLogos","noAutoscroll","addParameter","remoteNumber","getModifiers","keyboardRead","userNameRead","waitContinue","processInput","parseCommand","printVersion","readNetworks","writeMessage","blinkVersion","cityNameRead","readMessage","setDataMode","parsePacket","isListening","setBitOrder","beginPacket","isDirectory","motorsWrite","drawCompass","digitalRead","clearScreen","serialEvent","rightToLeft","setTextSize","leftToRight","requestFrom","keyReleased","compassRead","analogWrite","interrupts","WiFiServer","disconnect","playMelody","parseFloat","autoscroll","getPINUsed","setPINUsed","setTimeout","sendAnalog","readSlider","analogRead","beginWrite","createChar","motorsStop","keyPressed","tempoWrite","readButton","subnetMask","debugPrint","macAddress","writeGreen","randomSeed","attachGPRS","readString","sendString","remotePort","releaseAll","mouseMoved","background","getXChange","getYChange","answerCall","getResult","voiceCall","endPacket","constrain","getSocket","writeJSON","getButton","available","connected","findUntil","readBytes","exitValue","readGreen","writeBlue","startLoop","IPAddress","isPressed","sendSysex","pauseMode","gatewayIP","setCursor","getOemKey","tuneWrite","noDisplay","loadImage","switchPIN","onRequest","onReceive","changePIN","playFile","noBuffer","parseInt","overflow","checkPIN","knobRead","beginTFT","bitClear","updateIR","bitWrite","position","writeRGB","highByte","writeRed","setSpeed","readBlue","noStroke","remoteIP","transfer","shutdown","hangCall","beginSMS","endWrite","attached","maintain","noCursor","checkReg","checkPUK","shiftOut","isValid","shiftIn","pulseIn","connect","println","localIP","pinMode","getIMEI","display","noBlink","process","getBand","running","beginSD","drawBMP","lowByte","setBand","release","bitRead","prepare","pointTo","readRed","setMode","noFill","remove","listen","stroke","detach","attach","noTone","exists","buffer","height","bitSet","circle","config","cursor","random","IRread","setDNS","endSMS","getKey","micros","millis","begin","print","write","ready","flush","width","isPIN","blink","clear","press","mkdir","rmdir","close","point","yield","image","BSSID","click","delay","read","text","move","peek","beep","rect","line","open","seek","fill","size","turn","stop","home","find","step","tone","sqrt","RSSI","SSID","end","bit","tan","cos","sin","pow","map","abs","max","min","get","run","put"],literal:["DIGITAL_MESSAGE","FIRMATA_STRING","ANALOG_MESSAGE","REPORT_DIGITAL","REPORT_ANALOG","INPUT_PULLUP","SET_PIN_MODE","INTERNAL2V56","SYSTEM_RESET","LED_BUILTIN","INTERNAL1V1","SYSEX_START","INTERNAL","EXTERNAL","DEFAULT","OUTPUT","INPUT","HIGH","LOW"]},a=function(e){const t=e.regex,a=e.COMMENT("//","$",{contains:[{begin:/\\\n/}]}),n="decltype\\(auto\\)",r="[a-zA-Z_]\\w*::",i="(?!struct)("+n+"|"+t.optional(r)+"[a-zA-Z_]\\w*"+t.optional("<[^<>]+>")+")",o={className:"type",begin:"\\b[a-z\\d_]*_t\\b"},s={className:"string",variants:[{begin:'(u8?|U|L)?"',end:'"',illegal:"\\n",contains:[e.BACKSLASH_ESCAPE]},{begin:"(u8?|U|L)?'(\\\\(x[0-9A-Fa-f]{2}|u[0-9A-Fa-f]{4,8}|[0-7]{3}|\\S)|.)",end:"'",illegal:"."},e.END_SAME_AS_BEGIN({begin:/(?:u8?|U|L)?R"([^()\\ ]{0,16})\(/,end:/\)([^()\\ ]{0,16})"/})]},l={className:"number",variants:[{begin:"\\b(0b[01']+)"},{begin:"(-?)\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)((ll|LL|l|L)(u|U)?|(u|U)(ll|LL|l|L)?|f|F|b|B)"},{begin:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],relevance:0},c={className:"meta",begin:/#\s*[a-z]+\b/,end:/$/,keywords:{keyword:"if else elif endif define undef warning error line pragma _Pragma ifdef ifndef include"},contains:[{begin:/\\\n/,relevance:0},e.inherit(s,{className:"string"}),{className:"string",begin:/<.*?>/},a,e.C_BLOCK_COMMENT_MODE]},_={className:"title",begin:t.optional(r)+e.IDENT_RE,relevance:0},d=t.optional(r)+e.IDENT_RE+"\\s*\\(",m={type:["bool","char","char16_t","char32_t","char8_t","double","float","int","long","short","void","wchar_t","unsigned","signed","const","static"],keyword:["alignas","alignof","and","and_eq","asm","atomic_cancel","atomic_commit","atomic_noexcept","auto","bitand","bitor","break","case","catch","class","co_await","co_return","co_yield","compl","concept","const_cast|10","consteval","constexpr","constinit","continue","decltype","default","delete","do","dynamic_cast|10","else","enum","explicit","export","extern","false","final","for","friend","goto","if","import","inline","module","mutable","namespace","new","noexcept","not","not_eq","nullptr","operator","or","or_eq","override","private","protected","public","reflexpr","register","reinterpret_cast|10","requires","return","sizeof","static_assert","static_cast|10","struct","switch","synchronized","template","this","thread_local","throw","transaction_safe","transaction_safe_dynamic","true","try","typedef","typeid","typename","union","using","virtual","volatile","while","xor","xor_eq"],literal:["NULL","false","nullopt","nullptr","true"],built_in:["_Pragma"],_type_hints:["any","auto_ptr","barrier","binary_semaphore","bitset","complex","condition_variable","condition_variable_any","counting_semaphore","deque","false_type","future","imaginary","initializer_list","istringstream","jthread","latch","lock_guard","multimap","multiset","mutex","optional","ostringstream","packaged_task","pair","promise","priority_queue","queue","recursive_mutex","recursive_timed_mutex","scoped_lock","set","shared_future","shared_lock","shared_mutex","shared_timed_mutex","shared_ptr","stack","string_view","stringstream","timed_mutex","thread","true_type","tuple","unique_lock","unique_ptr","unordered_map","unordered_multimap","unordered_multiset","unordered_set","variant","vector","weak_ptr","wstring","wstring_view"]},p={className:"function.dispatch",relevance:0,keywords:{_hint:["abort","abs","acos","apply","as_const","asin","atan","atan2","calloc","ceil","cerr","cin","clog","cos","cosh","cout","declval","endl","exchange","exit","exp","fabs","floor","fmod","forward","fprintf","fputs","free","frexp","fscanf","future","invoke","isalnum","isalpha","iscntrl","isdigit","isgraph","islower","isprint","ispunct","isspace","isupper","isxdigit","labs","launder","ldexp","log","log10","make_pair","make_shared","make_shared_for_overwrite","make_tuple","make_unique","malloc","memchr","memcmp","memcpy","memset","modf","move","pow","printf","putchar","puts","realloc","scanf","sin","sinh","snprintf","sprintf","sqrt","sscanf","std","stderr","stdin","stdout","strcat","strchr","strcmp","strcpy","strcspn","strlen","strncat","strncmp","strncpy","strpbrk","strrchr","strspn","strstr","swap","tan","tanh","terminate","to_underlying","tolower","toupper","vfprintf","visit","vprintf","vsprintf"]},begin:t.concat(/\b/,/(?!decltype)/,/(?!if)/,/(?!for)/,/(?!switch)/,/(?!while)/,e.IDENT_RE,t.lookahead(/(<[^<>]+>|)\s*\(/))},u=[p,c,o,a,e.C_BLOCK_COMMENT_MODE,l,s],g={variants:[{begin:/=/,end:/;/},{begin:/\(/,end:/\)/},{beginKeywords:"new throw return else",end:/;/}],keywords:m,contains:u.concat([{begin:/\(/,end:/\)/,keywords:m,contains:u.concat(["self"]),relevance:0}]),relevance:0},E={className:"function",begin:"("+i+"[\\*&\\s]+)+"+d,returnBegin:!0,end:/[{;=]/,excludeEnd:!0,keywords:m,illegal:/[^\w\s\*&:<>.]/,contains:[{begin:n,keywords:m,relevance:0},{begin:d,returnBegin:!0,contains:[_],relevance:0},{begin:/::/,relevance:0},{begin:/:/,endsWithParent:!0,contains:[s,l]},{relevance:0,match:/,/},{className:"params",begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:[a,e.C_BLOCK_COMMENT_MODE,s,l,o,{begin:/\(/,end:/\)/,keywords:m,relevance:0,contains:["self",a,e.C_BLOCK_COMMENT_MODE,s,l,o]}]},o,a,e.C_BLOCK_COMMENT_MODE,c]};return{name:"C++",aliases:["cc","c++","h++","hpp","hh","hxx","cxx"],keywords:m,illegal:"",classNameAliases:{"function.dispatch":"built_in"},contains:[].concat(g,E,p,u,[c,{begin:"\\b(deque|list|queue|priority_queue|pair|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array|tuple|optional|variant|function)\\s*<(?!<)",end:">",keywords:m,contains:["self",o]},{begin:e.IDENT_RE+"::",keywords:m},{match:[/\b(?:enum(?:\s+(?:class|struct))?|class|struct|union)/,/\s+/,/\w+/],className:{1:"keyword",3:"title.class"}}])}}(e),n=a.keywords;return n.type=[...n.type,...t.type],n.literal=[...n.literal,...t.literal],n.built_in=[...n.built_in,...t.built_in],n._hints=t._hints,a.name="Arduino",a.aliases=["ino"],a.supersetOf="cpp",a};var fe=function(e){const t={variants:[e.COMMENT("^[ \\t]*(?=#)","$",{relevance:0,excludeBegin:!0}),e.COMMENT("[;@]","$",{relevance:0}),e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE]};return{name:"ARM Assembly",case_insensitive:!0,aliases:["arm"],keywords:{$pattern:"\\.?"+e.IDENT_RE,meta:".2byte .4byte .align .ascii .asciz .balign .byte .code .data .else .end .endif .endm .endr .equ .err .exitm .extern .global .hword .if .ifdef .ifndef .include .irp .long .macro .rept .req .section .set .skip .space .text .word .arm .thumb .code16 .code32 .force_thumb .thumb_func .ltorg ALIAS ALIGN ARM AREA ASSERT ATTR CN CODE CODE16 CODE32 COMMON CP DATA DCB DCD DCDU DCDO DCFD DCFDU DCI DCQ DCQU DCW DCWU DN ELIF ELSE END ENDFUNC ENDIF ENDP ENTRY EQU EXPORT EXPORTAS EXTERN FIELD FILL FUNCTION GBLA GBLL GBLS GET GLOBAL IF IMPORT INCBIN INCLUDE INFO KEEP LCLA LCLL LCLS LTORG MACRO MAP MEND MEXIT NOFP OPT PRESERVE8 PROC QN READONLY RELOC REQUIRE REQUIRE8 RLIST FN ROUT SETA SETL SETS SN SPACE SUBT THUMB THUMBX TTL WHILE WEND ",built_in:"r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 pc lr sp ip sl sb fp a1 a2 a3 a4 v1 v2 v3 v4 v5 v6 v7 v8 f0 f1 f2 f3 f4 f5 f6 f7 p0 p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 c0 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13 q14 q15 cpsr_c cpsr_x cpsr_s cpsr_f cpsr_cx cpsr_cxs cpsr_xs cpsr_xsf cpsr_sf cpsr_cxsf spsr_c spsr_x spsr_s spsr_f spsr_cx spsr_cxs spsr_xs spsr_xsf spsr_sf spsr_cxsf s0 s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 s11 s12 s13 s14 s15 s16 s17 s18 s19 s20 s21 s22 s23 s24 s25 s26 s27 s28 s29 s30 s31 d0 d1 d2 d3 d4 d5 d6 d7 d8 d9 d10 d11 d12 d13 d14 d15 d16 d17 d18 d19 d20 d21 d22 d23 d24 d25 d26 d27 d28 d29 d30 d31 {PC} {VAR} {TRUE} {FALSE} {OPT} {CONFIG} {ENDIAN} {CODESIZE} {CPU} {FPU} {ARCHITECTURE} {PCSTOREOFFSET} {ARMASM_VERSION} {INTER} {ROPI} {RWPI} {SWST} {NOSWST} . @"},contains:[{className:"keyword",begin:"\\b(adc|(qd?|sh?|u[qh]?)?add(8|16)?|usada?8|(q|sh?|u[qh]?)?(as|sa)x|and|adrl?|sbc|rs[bc]|asr|b[lx]?|blx|bxj|cbn?z|tb[bh]|bic|bfc|bfi|[su]bfx|bkpt|cdp2?|clz|clrex|cmp|cmn|cpsi[ed]|cps|setend|dbg|dmb|dsb|eor|isb|it[te]{0,3}|lsl|lsr|ror|rrx|ldm(([id][ab])|f[ds])?|ldr((s|ex)?[bhd])?|movt?|mvn|mra|mar|mul|[us]mull|smul[bwt][bt]|smu[as]d|smmul|smmla|mla|umlaal|smlal?([wbt][bt]|d)|mls|smlsl?[ds]|smc|svc|sev|mia([bt]{2}|ph)?|mrr?c2?|mcrr2?|mrs|msr|orr|orn|pkh(tb|bt)|rbit|rev(16|sh)?|sel|[su]sat(16)?|nop|pop|push|rfe([id][ab])?|stm([id][ab])?|str(ex)?[bhd]?|(qd?)?sub|(sh?|q|u[qh]?)?sub(8|16)|[su]xt(a?h|a?b(16)?)|srs([id][ab])?|swpb?|swi|smi|tst|teq|wfe|wfi|yield)(eq|ne|cs|cc|mi|pl|vs|vc|hi|ls|ge|lt|gt|le|al|hs|lo)?[sptrx]?(?=\\s)"},t,e.QUOTE_STRING_MODE,{className:"string",begin:"'",end:"[^\\\\]'",relevance:0},{className:"title",begin:"\\|",end:"\\|",illegal:"\\n",relevance:0},{className:"number",variants:[{begin:"[#$=]?0x[0-9a-f]+"},{begin:"[#$=]?0b[01]+"},{begin:"[#$=]\\d+"},{begin:"\\b\\d+"}],relevance:0},{className:"symbol",variants:[{begin:"^[ \\t]*[a-z_\\.\\$][a-z0-9_\\.\\$]+:"},{begin:"^[a-z_\\.\\$][a-z0-9_\\.\\$]+"},{begin:"[=#]\\w+"}],relevance:0}]}};var Ce=function(e){const t=e.regex,a=t.concat(/[\p{L}_]/u,t.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),n={className:"symbol",begin:/&[a-z]+;|[0-9]+;|[a-f0-9]+;/},r={begin:/\s/,contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}]},i=e.inherit(r,{begin:/\(/,end:/\)/}),o=e.inherit(e.APOS_STRING_MODE,{className:"string"}),s=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),l={endsWithParent:!0,illegal:/,relevance:0,contains:[{className:"attr",begin:/[\p{L}0-9._:-]+/u,relevance:0},{begin:/=\s*/,relevance:0,contains:[{className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[n]},{begin:/'/,end:/'/,contains:[n]},{begin:/[^\s"'=<>`]+/}]}]}]};return{name:"HTML, XML",aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[r,s,o,i,{begin:/\[/,end:/\]/,contains:[{className:"meta",begin://,contains:[r,i,s,o]}]}]},e.COMMENT(//,{relevance:10}),{begin://,relevance:10},n,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,relevance:10,contains:[s]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",begin:/\n\t\n\n\t\n\n\t\tLoading speaker view...
\n\n\t\t\n\t\tUpcoming
\n\t\t\n\t\t\t
\n\t\t\t\t
Time Click to Reset
\n\t\t\t\t
\n\t\t\t\t\t0:00 AM\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t00:00:00\n\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t
Pacing β Time to finish current slide
\n\t\t\t\t
\n\t\t\t\t\t00:00:00\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
Notes
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\n\t\t
\n\n\t\t
+
+
\ No newline at end of file
diff --git a/plugin/search/plugin.js b/plugin/search/plugin.js
new file mode 100644
index 0000000..5d09ce6
--- /dev/null
+++ b/plugin/search/plugin.js
@@ -0,0 +1,243 @@
+/*!
+ * Handles finding a text string anywhere in the slides and showing the next occurrence to the user
+ * by navigatating to that slide and highlighting it.
+ *
+ * @author Jon Snyder , February 2013
+ */
+
+const Plugin = () => {
+
+ // The reveal.js instance this plugin is attached to
+ let deck;
+
+ let searchElement;
+ let searchButton;
+ let searchInput;
+
+ let matchedSlides;
+ let currentMatchedIndex;
+ let searchboxDirty;
+ let hilitor;
+
+ function render() {
+
+ searchElement = document.createElement( 'div' );
+ searchElement.classList.add( 'searchbox' );
+ searchElement.style.position = 'absolute';
+ searchElement.style.top = '10px';
+ searchElement.style.right = '10px';
+ searchElement.style.zIndex = 10;
+
+ //embedded base64 search icon Designed by Sketchdock - http://www.sketchdock.com/:
+ searchElement.innerHTML = `
+ `;
+
+ searchInput = searchElement.querySelector( '.searchinput' );
+ searchInput.style.width = '240px';
+ searchInput.style.fontSize = '14px';
+ searchInput.style.padding = '4px 6px';
+ searchInput.style.color = '#000';
+ searchInput.style.background = '#fff';
+ searchInput.style.borderRadius = '2px';
+ searchInput.style.border = '0';
+ searchInput.style.outline = '0';
+ searchInput.style.boxShadow = '0 2px 18px rgba(0, 0, 0, 0.2)';
+ searchInput.style['-webkit-appearance'] = 'none';
+
+ deck.getRevealElement().appendChild( searchElement );
+
+ // searchButton.addEventListener( 'click', function(event) {
+ // doSearch();
+ // }, false );
+
+ searchInput.addEventListener( 'keyup', function( event ) {
+ switch (event.keyCode) {
+ case 13:
+ event.preventDefault();
+ doSearch();
+ searchboxDirty = false;
+ break;
+ default:
+ searchboxDirty = true;
+ }
+ }, false );
+
+ closeSearch();
+
+ }
+
+ function openSearch() {
+ if( !searchElement ) render();
+
+ searchElement.style.display = 'inline';
+ searchInput.focus();
+ searchInput.select();
+ }
+
+ function closeSearch() {
+ if( !searchElement ) render();
+
+ searchElement.style.display = 'none';
+ if(hilitor) hilitor.remove();
+ }
+
+ function toggleSearch() {
+ if( !searchElement ) render();
+
+ if (searchElement.style.display !== 'inline') {
+ openSearch();
+ }
+ else {
+ closeSearch();
+ }
+ }
+
+ function doSearch() {
+ //if there's been a change in the search term, perform a new search:
+ if (searchboxDirty) {
+ var searchstring = searchInput.value;
+
+ if (searchstring === '') {
+ if(hilitor) hilitor.remove();
+ matchedSlides = null;
+ }
+ else {
+ //find the keyword amongst the slides
+ hilitor = new Hilitor("slidecontent");
+ matchedSlides = hilitor.apply(searchstring);
+ currentMatchedIndex = 0;
+ }
+ }
+
+ if (matchedSlides) {
+ //navigate to the next slide that has the keyword, wrapping to the first if necessary
+ if (matchedSlides.length && (matchedSlides.length <= currentMatchedIndex)) {
+ currentMatchedIndex = 0;
+ }
+ if (matchedSlides.length > currentMatchedIndex) {
+ deck.slide(matchedSlides[currentMatchedIndex].h, matchedSlides[currentMatchedIndex].v);
+ currentMatchedIndex++;
+ }
+ }
+ }
+
+ // Original JavaScript code by Chirp Internet: www.chirp.com.au
+ // Please acknowledge use of this code by including this header.
+ // 2/2013 jon: modified regex to display any match, not restricted to word boundaries.
+ function Hilitor(id, tag) {
+
+ var targetNode = document.getElementById(id) || document.body;
+ var hiliteTag = tag || "EM";
+ var skipTags = new RegExp("^(?:" + hiliteTag + "|SCRIPT|FORM)$");
+ var colors = ["#ff6", "#a0ffff", "#9f9", "#f99", "#f6f"];
+ var wordColor = [];
+ var colorIdx = 0;
+ var matchRegex = "";
+ var matchingSlides = [];
+
+ this.setRegex = function(input)
+ {
+ input = input.replace(/^[^\w]+|[^\w]+$/g, "").replace(/[^\w'-]+/g, "|");
+ matchRegex = new RegExp("(" + input + ")","i");
+ }
+
+ this.getRegex = function()
+ {
+ return matchRegex.toString().replace(/^\/\\b\(|\)\\b\/i$/g, "").replace(/\|/g, " ");
+ }
+
+ // recursively apply word highlighting
+ this.hiliteWords = function(node)
+ {
+ if(node == undefined || !node) return;
+ if(!matchRegex) return;
+ if(skipTags.test(node.nodeName)) return;
+
+ if(node.hasChildNodes()) {
+ for(var i=0; i < node.childNodes.length; i++)
+ this.hiliteWords(node.childNodes[i]);
+ }
+ if(node.nodeType == 3) { // NODE_TEXT
+ var nv, regs;
+ if((nv = node.nodeValue) && (regs = matchRegex.exec(nv))) {
+ //find the slide's section element and save it in our list of matching slides
+ var secnode = node;
+ while (secnode != null && secnode.nodeName != 'SECTION') {
+ secnode = secnode.parentNode;
+ }
+
+ var slideIndex = deck.getIndices(secnode);
+ var slidelen = matchingSlides.length;
+ var alreadyAdded = false;
+ for (var i=0; i < slidelen; i++) {
+ if ( (matchingSlides[i].h === slideIndex.h) && (matchingSlides[i].v === slideIndex.v) ) {
+ alreadyAdded = true;
+ }
+ }
+ if (! alreadyAdded) {
+ matchingSlides.push(slideIndex);
+ }
+
+ if(!wordColor[regs[0].toLowerCase()]) {
+ wordColor[regs[0].toLowerCase()] = colors[colorIdx++ % colors.length];
+ }
+
+ var match = document.createElement(hiliteTag);
+ match.appendChild(document.createTextNode(regs[0]));
+ match.style.backgroundColor = wordColor[regs[0].toLowerCase()];
+ match.style.fontStyle = "inherit";
+ match.style.color = "#000";
+
+ var after = node.splitText(regs.index);
+ after.nodeValue = after.nodeValue.substring(regs[0].length);
+ node.parentNode.insertBefore(match, after);
+ }
+ }
+ };
+
+ // remove highlighting
+ this.remove = function()
+ {
+ var arr = document.getElementsByTagName(hiliteTag);
+ var el;
+ while(arr.length && (el = arr[0])) {
+ el.parentNode.replaceChild(el.firstChild, el);
+ }
+ };
+
+ // start highlighting at target node
+ this.apply = function(input)
+ {
+ if(input == undefined || !input) return;
+ this.remove();
+ this.setRegex(input);
+ this.hiliteWords(targetNode);
+ return matchingSlides;
+ };
+
+ }
+
+ return {
+
+ id: 'search',
+
+ init: reveal => {
+
+ deck = reveal;
+ deck.registerKeyboardShortcut( 'CTRL + Shift + F', 'Search' );
+
+ document.addEventListener( 'keydown', function( event ) {
+ if( event.key == "F" && (event.ctrlKey || event.metaKey) ) { //Control+Shift+f
+ event.preventDefault();
+ toggleSearch();
+ }
+ }, false );
+
+ },
+
+ open: openSearch
+
+ }
+};
+
+export default Plugin;
\ No newline at end of file
diff --git a/plugin/search/search.esm.js b/plugin/search/search.esm.js
new file mode 100644
index 0000000..d362036
--- /dev/null
+++ b/plugin/search/search.esm.js
@@ -0,0 +1,7 @@
+/*!
+ * Handles finding a text string anywhere in the slides and showing the next occurrence to the user
+ * by navigatating to that slide and highlighting it.
+ *
+ * @author Jon Snyder
, February 2013
+ */
+export default()=>{let e,t,n,l,i,o,r;function s(){t=document.createElement("div"),t.classList.add("searchbox"),t.style.position="absolute",t.style.top="10px",t.style.right="10px",t.style.zIndex=10,t.innerHTML='\n\t\t',n=t.querySelector(".searchinput"),n.style.width="240px",n.style.fontSize="14px",n.style.padding="4px 6px",n.style.color="#000",n.style.background="#fff",n.style.borderRadius="2px",n.style.border="0",n.style.outline="0",n.style.boxShadow="0 2px 18px rgba(0, 0, 0, 0.2)",n.style["-webkit-appearance"]="none",e.getRevealElement().appendChild(t),n.addEventListener("keyup",(function(t){if(13===t.keyCode)t.preventDefault(),function(){if(o){var t=n.value;""===t?(r&&r.remove(),l=null):(r=new c("slidecontent"),l=r.apply(t),i=0)}l&&(l.length&&l.length<=i&&(i=0),l.length>i&&(e.slide(l[i].h,l[i].v),i++))}(),o=!1;else o=!0}),!1),d()}function a(){t||s(),t.style.display="inline",n.focus(),n.select()}function d(){t||s(),t.style.display="none",r&&r.remove()}function c(t,n){var l=document.getElementById(t)||document.body,i=n||"EM",o=new RegExp("^(?:"+i+"|SCRIPT|FORM)$"),r=["#ff6","#a0ffff","#9f9","#f99","#f6f"],s=[],a=0,d="",c=[];this.setRegex=function(e){e=e.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w'-]+/g,"|"),d=new RegExp("("+e+")","i")},this.getRegex=function(){return d.toString().replace(/^\/\\b\(|\)\\b\/i$/g,"").replace(/\|/g," ")},this.hiliteWords=function(t){if(null!=t&&t&&d&&!o.test(t.nodeName)){if(t.hasChildNodes())for(var n=0;n{e=n,e.registerKeyboardShortcut("CTRL + Shift + F","Search"),document.addEventListener("keydown",(function(e){"F"==e.key&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),t||s(),"inline"!==t.style.display?a():d())}),!1)},open:a}};
diff --git a/plugin/search/search.js b/plugin/search/search.js
new file mode 100644
index 0000000..dc96e1d
--- /dev/null
+++ b/plugin/search/search.js
@@ -0,0 +1,7 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).RevealSearch=t()}(this,(function(){"use strict";
+/*!
+ * Handles finding a text string anywhere in the slides and showing the next occurrence to the user
+ * by navigatating to that slide and highlighting it.
+ *
+ * @author Jon Snyder , February 2013
+ */return()=>{let e,t,n,l,o,i,r;function s(){t=document.createElement("div"),t.classList.add("searchbox"),t.style.position="absolute",t.style.top="10px",t.style.right="10px",t.style.zIndex=10,t.innerHTML='\n\t\t',n=t.querySelector(".searchinput"),n.style.width="240px",n.style.fontSize="14px",n.style.padding="4px 6px",n.style.color="#000",n.style.background="#fff",n.style.borderRadius="2px",n.style.border="0",n.style.outline="0",n.style.boxShadow="0 2px 18px rgba(0, 0, 0, 0.2)",n.style["-webkit-appearance"]="none",e.getRevealElement().appendChild(t),n.addEventListener("keyup",(function(t){if(13===t.keyCode)t.preventDefault(),function(){if(i){var t=n.value;""===t?(r&&r.remove(),l=null):(r=new c("slidecontent"),l=r.apply(t),o=0)}l&&(l.length&&l.length<=o&&(o=0),l.length>o&&(e.slide(l[o].h,l[o].v),o++))}(),i=!1;else i=!0}),!1),d()}function a(){t||s(),t.style.display="inline",n.focus(),n.select()}function d(){t||s(),t.style.display="none",r&&r.remove()}function c(t,n){var l=document.getElementById(t)||document.body,o=n||"EM",i=new RegExp("^(?:"+o+"|SCRIPT|FORM)$"),r=["#ff6","#a0ffff","#9f9","#f99","#f6f"],s=[],a=0,d="",c=[];this.setRegex=function(e){e=e.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w'-]+/g,"|"),d=new RegExp("("+e+")","i")},this.getRegex=function(){return d.toString().replace(/^\/\\b\(|\)\\b\/i$/g,"").replace(/\|/g," ")},this.hiliteWords=function(t){if(null!=t&&t&&d&&!i.test(t.nodeName)){if(t.hasChildNodes())for(var n=0;n{e=n,e.registerKeyboardShortcut("CTRL + Shift + F","Search"),document.addEventListener("keydown",(function(e){"F"==e.key&&(e.ctrlKey||e.metaKey)&&(e.preventDefault(),t||s(),"inline"!==t.style.display?a():d())}),!1)},open:a}}}));
diff --git a/plugin/zoom/plugin.js b/plugin/zoom/plugin.js
new file mode 100644
index 0000000..960fb81
--- /dev/null
+++ b/plugin/zoom/plugin.js
@@ -0,0 +1,264 @@
+/*!
+ * reveal.js Zoom plugin
+ */
+const Plugin = {
+
+ id: 'zoom',
+
+ init: function( reveal ) {
+
+ reveal.getRevealElement().addEventListener( 'mousedown', function( event ) {
+ var defaultModifier = /Linux/.test( window.navigator.platform ) ? 'ctrl' : 'alt';
+
+ var modifier = ( reveal.getConfig().zoomKey ? reveal.getConfig().zoomKey : defaultModifier ) + 'Key';
+ var zoomLevel = ( reveal.getConfig().zoomLevel ? reveal.getConfig().zoomLevel : 2 );
+
+ if( event[ modifier ] && !reveal.isOverview() ) {
+ event.preventDefault();
+
+ zoom.to({
+ x: event.clientX,
+ y: event.clientY,
+ scale: zoomLevel,
+ pan: false
+ });
+ }
+ } );
+
+ },
+
+ destroy: () => {
+
+ zoom.reset();
+
+ }
+
+};
+
+export default () => Plugin;
+
+/*!
+ * zoom.js 0.3 (modified for use with reveal.js)
+ * http://lab.hakim.se/zoom-js
+ * MIT licensed
+ *
+ * Copyright (C) 2011-2014 Hakim El Hattab, http://hakim.se
+ */
+var zoom = (function(){
+
+ // The current zoom level (scale)
+ var level = 1;
+
+ // The current mouse position, used for panning
+ var mouseX = 0,
+ mouseY = 0;
+
+ // Timeout before pan is activated
+ var panEngageTimeout = -1,
+ panUpdateInterval = -1;
+
+ // Check for transform support so that we can fallback otherwise
+ var supportsTransforms = 'transform' in document.body.style;
+
+ if( supportsTransforms ) {
+ // The easing that will be applied when we zoom in/out
+ document.body.style.transition = 'transform 0.8s ease';
+ }
+
+ // Zoom out if the user hits escape
+ document.addEventListener( 'keyup', function( event ) {
+ if( level !== 1 && event.keyCode === 27 ) {
+ zoom.out();
+ }
+ } );
+
+ // Monitor mouse movement for panning
+ document.addEventListener( 'mousemove', function( event ) {
+ if( level !== 1 ) {
+ mouseX = event.clientX;
+ mouseY = event.clientY;
+ }
+ } );
+
+ /**
+ * Applies the CSS required to zoom in, prefers the use of CSS3
+ * transforms but falls back on zoom for IE.
+ *
+ * @param {Object} rect
+ * @param {Number} scale
+ */
+ function magnify( rect, scale ) {
+
+ var scrollOffset = getScrollOffset();
+
+ // Ensure a width/height is set
+ rect.width = rect.width || 1;
+ rect.height = rect.height || 1;
+
+ // Center the rect within the zoomed viewport
+ rect.x -= ( window.innerWidth - ( rect.width * scale ) ) / 2;
+ rect.y -= ( window.innerHeight - ( rect.height * scale ) ) / 2;
+
+ if( supportsTransforms ) {
+ // Reset
+ if( scale === 1 ) {
+ document.body.style.transform = '';
+ }
+ // Scale
+ else {
+ var origin = scrollOffset.x +'px '+ scrollOffset.y +'px',
+ transform = 'translate('+ -rect.x +'px,'+ -rect.y +'px) scale('+ scale +')';
+
+ document.body.style.transformOrigin = origin;
+ document.body.style.transform = transform;
+ }
+ }
+ else {
+ // Reset
+ if( scale === 1 ) {
+ document.body.style.position = '';
+ document.body.style.left = '';
+ document.body.style.top = '';
+ document.body.style.width = '';
+ document.body.style.height = '';
+ document.body.style.zoom = '';
+ }
+ // Scale
+ else {
+ document.body.style.position = 'relative';
+ document.body.style.left = ( - ( scrollOffset.x + rect.x ) / scale ) + 'px';
+ document.body.style.top = ( - ( scrollOffset.y + rect.y ) / scale ) + 'px';
+ document.body.style.width = ( scale * 100 ) + '%';
+ document.body.style.height = ( scale * 100 ) + '%';
+ document.body.style.zoom = scale;
+ }
+ }
+
+ level = scale;
+
+ if( document.documentElement.classList ) {
+ if( level !== 1 ) {
+ document.documentElement.classList.add( 'zoomed' );
+ }
+ else {
+ document.documentElement.classList.remove( 'zoomed' );
+ }
+ }
+ }
+
+ /**
+ * Pan the document when the mosue cursor approaches the edges
+ * of the window.
+ */
+ function pan() {
+ var range = 0.12,
+ rangeX = window.innerWidth * range,
+ rangeY = window.innerHeight * range,
+ scrollOffset = getScrollOffset();
+
+ // Up
+ if( mouseY < rangeY ) {
+ window.scroll( scrollOffset.x, scrollOffset.y - ( 1 - ( mouseY / rangeY ) ) * ( 14 / level ) );
+ }
+ // Down
+ else if( mouseY > window.innerHeight - rangeY ) {
+ window.scroll( scrollOffset.x, scrollOffset.y + ( 1 - ( window.innerHeight - mouseY ) / rangeY ) * ( 14 / level ) );
+ }
+
+ // Left
+ if( mouseX < rangeX ) {
+ window.scroll( scrollOffset.x - ( 1 - ( mouseX / rangeX ) ) * ( 14 / level ), scrollOffset.y );
+ }
+ // Right
+ else if( mouseX > window.innerWidth - rangeX ) {
+ window.scroll( scrollOffset.x + ( 1 - ( window.innerWidth - mouseX ) / rangeX ) * ( 14 / level ), scrollOffset.y );
+ }
+ }
+
+ function getScrollOffset() {
+ return {
+ x: window.scrollX !== undefined ? window.scrollX : window.pageXOffset,
+ y: window.scrollY !== undefined ? window.scrollY : window.pageYOffset
+ }
+ }
+
+ return {
+ /**
+ * Zooms in on either a rectangle or HTML element.
+ *
+ * @param {Object} options
+ * - element: HTML element to zoom in on
+ * OR
+ * - x/y: coordinates in non-transformed space to zoom in on
+ * - width/height: the portion of the screen to zoom in on
+ * - scale: can be used instead of width/height to explicitly set scale
+ */
+ to: function( options ) {
+
+ // Due to an implementation limitation we can't zoom in
+ // to another element without zooming out first
+ if( level !== 1 ) {
+ zoom.out();
+ }
+ else {
+ options.x = options.x || 0;
+ options.y = options.y || 0;
+
+ // If an element is set, that takes precedence
+ if( !!options.element ) {
+ // Space around the zoomed in element to leave on screen
+ var padding = 20;
+ var bounds = options.element.getBoundingClientRect();
+
+ options.x = bounds.left - padding;
+ options.y = bounds.top - padding;
+ options.width = bounds.width + ( padding * 2 );
+ options.height = bounds.height + ( padding * 2 );
+ }
+
+ // If width/height values are set, calculate scale from those values
+ if( options.width !== undefined && options.height !== undefined ) {
+ options.scale = Math.max( Math.min( window.innerWidth / options.width, window.innerHeight / options.height ), 1 );
+ }
+
+ if( options.scale > 1 ) {
+ options.x *= options.scale;
+ options.y *= options.scale;
+
+ magnify( options, options.scale );
+
+ if( options.pan !== false ) {
+
+ // Wait with engaging panning as it may conflict with the
+ // zoom transition
+ panEngageTimeout = setTimeout( function() {
+ panUpdateInterval = setInterval( pan, 1000 / 60 );
+ }, 800 );
+
+ }
+ }
+ }
+ },
+
+ /**
+ * Resets the document zoom state to its default.
+ */
+ out: function() {
+ clearTimeout( panEngageTimeout );
+ clearInterval( panUpdateInterval );
+
+ magnify( { x: 0, y: 0 }, 1 );
+
+ level = 1;
+ },
+
+ // Alias
+ magnify: function( options ) { this.to( options ) },
+ reset: function() { this.out() },
+
+ zoomLevel: function() {
+ return level;
+ }
+ }
+
+})();
diff --git a/plugin/zoom/zoom.esm.js b/plugin/zoom/zoom.esm.js
new file mode 100644
index 0000000..3b66c57
--- /dev/null
+++ b/plugin/zoom/zoom.esm.js
@@ -0,0 +1,11 @@
+/*!
+ * reveal.js Zoom plugin
+ */
+const e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(o){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;o[i]&&!e.isOverview()&&(o.preventDefault(),t.to({x:o.clientX,y:o.clientY,scale:d,pan:!1}))}))},destroy:()=>{t.reset()}};var t=function(){var e=1,o=0,n=0,i=-1,d=-1,l="transform"in document.body.style;function s(t,o){var n=r();if(t.width=t.width||1,t.height=t.height||1,t.x-=(window.innerWidth-t.width*o)/2,t.y-=(window.innerHeight-t.height*o)/2,l)if(1===o)document.body.style.transform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-t.x+"px,"+-t.y+"px) scale("+o+")";document.body.style.transformOrigin=i,document.body.style.transform=d}else 1===o?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+t.x)/o+"px",document.body.style.top=-(n.y+t.y)/o+"px",document.body.style.width=100*o+"%",document.body.style.height=100*o+"%",document.body.style.zoom=o);e=o,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function c(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=r();nwindow.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),owindow.innerWidth-t&&window.scroll(d.x+(1-(window.innerWidth-o)/t)*(14/e),d.y)}function r(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return l&&(document.body.style.transition="transform 0.8s ease"),document.addEventListener("keyup",(function(o){1!==e&&27===o.keyCode&&t.out()})),document.addEventListener("mousemove",(function(t){1!==e&&(o=t.clientX,n=t.clientY)})),{to:function(o){if(1!==e)t.out();else{if(o.x=o.x||0,o.y=o.y||0,o.element){var n=o.element.getBoundingClientRect();o.x=n.left-20,o.y=n.top-20,o.width=n.width+40,o.height=n.height+40}void 0!==o.width&&void 0!==o.height&&(o.scale=Math.max(Math.min(window.innerWidth/o.width,window.innerHeight/o.height),1)),o.scale>1&&(o.x*=o.scale,o.y*=o.scale,s(o,o.scale),!1!==o.pan&&(i=setTimeout((function(){d=setInterval(c,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),s({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();
+/*!
+ * zoom.js 0.3 (modified for use with reveal.js)
+ * http://lab.hakim.se/zoom-js
+ * MIT licensed
+ *
+ * Copyright (C) 2011-2014 Hakim El Hattab, http://hakim.se
+ */export default()=>e;
diff --git a/plugin/zoom/zoom.js b/plugin/zoom/zoom.js
new file mode 100644
index 0000000..7ac2127
--- /dev/null
+++ b/plugin/zoom/zoom.js
@@ -0,0 +1,11 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).RevealZoom=t()}(this,(function(){"use strict";
+/*!
+ * reveal.js Zoom plugin
+ */const e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(o){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;o[i]&&!e.isOverview()&&(o.preventDefault(),t.to({x:o.clientX,y:o.clientY,scale:d,pan:!1}))}))},destroy:()=>{t.reset()}};var t=function(){var e=1,o=0,n=0,i=-1,d=-1,l="transform"in document.body.style;function s(t,o){var n=r();if(t.width=t.width||1,t.height=t.height||1,t.x-=(window.innerWidth-t.width*o)/2,t.y-=(window.innerHeight-t.height*o)/2,l)if(1===o)document.body.style.transform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-t.x+"px,"+-t.y+"px) scale("+o+")";document.body.style.transformOrigin=i,document.body.style.transform=d}else 1===o?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+t.x)/o+"px",document.body.style.top=-(n.y+t.y)/o+"px",document.body.style.width=100*o+"%",document.body.style.height=100*o+"%",document.body.style.zoom=o);e=o,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function c(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=r();nwindow.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),owindow.innerWidth-t&&window.scroll(d.x+(1-(window.innerWidth-o)/t)*(14/e),d.y)}function r(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return l&&(document.body.style.transition="transform 0.8s ease"),document.addEventListener("keyup",(function(o){1!==e&&27===o.keyCode&&t.out()})),document.addEventListener("mousemove",(function(t){1!==e&&(o=t.clientX,n=t.clientY)})),{to:function(o){if(1!==e)t.out();else{if(o.x=o.x||0,o.y=o.y||0,o.element){var n=o.element.getBoundingClientRect();o.x=n.left-20,o.y=n.top-20,o.width=n.width+40,o.height=n.height+40}void 0!==o.width&&void 0!==o.height&&(o.scale=Math.max(Math.min(window.innerWidth/o.width,window.innerHeight/o.height),1)),o.scale>1&&(o.x*=o.scale,o.y*=o.scale,s(o,o.scale),!1!==o.pan&&(i=setTimeout((function(){d=setInterval(c,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),s({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();
+/*!
+ * zoom.js 0.3 (modified for use with reveal.js)
+ * http://lab.hakim.se/zoom-js
+ * MIT licensed
+ *
+ * Copyright (C) 2011-2014 Hakim El Hattab, http://hakim.se
+ */return()=>e}));
diff --git a/talk.html b/talk.html
new file mode 100644
index 0000000..6f662fa
--- /dev/null
+++ b/talk.html
@@ -0,0 +1,625 @@
+
+
+
+
+
+
+ Test your (data science) work!
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+