Orderapplication/assets/icon/fma.png000064400000000473147577724760012610 0ustar00‰PNG  IHDRóÿaIDATxÚcd 011;ùO@Œˆÿâ4€ĄíĐ&†J!  *ú‚ïȚe`đŠdÈòf`Ńûl€ˆ ܧ’±™țÿCçt†żï?]đȘJżÿÀđcȚf†Fa>†9Śà0è"N3ˆ?±Ù/(Ë0“Q˜è‚3 ɌìP/0"0ȅXp  2Đ!†9ŻŻbw! š2Ż/i€.̀Sd` 3à(™X€ p€Llaì&Ó'Àh|č‘<„}€031äOÈeèàƞ^pś_țNaȇiReÀž™đï@|—$[±/àK8ŹÆÉæIENDźB`‚application/library/codemirror/lib/codemirror.js000064400001271311147577724760016171 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // This is CodeMirror (http://codemirror.net), a code editor // implemented in JavaScript on top of the browser's DOM. // // You can find some technical background for some of the code below // at http://marijnhaverbeke.nl/blog/#cm-internals . (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS module.exports = mod(); else if (typeof define == "function" && define.amd) // AMD return define([], mod); else // Plain browser env (this || window).CodeMirror = mod(); })(function() { "use strict"; // BROWSER SNIFFING // Kludges for bugs and behavior differences that can't be feature // detected are enabled based on userAgent etc sniffing. var userAgent = navigator.userAgent; var platform = navigator.platform; var gecko = /gecko\/\d/i.test(userAgent); var ie_upto10 = /MSIE \d/.test(userAgent); var ie_11up = /Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(userAgent); var ie = ie_upto10 || ie_11up; var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : ie_11up[1]); var webkit = /WebKit\//.test(userAgent); var qtwebkit = webkit && /Qt\/\d+\.\d+/.test(userAgent); var chrome = /Chrome\//.test(userAgent); var presto = /Opera\//.test(userAgent); var safari = /Apple Computer/.test(navigator.vendor); var mac_geMountainLion = /Mac OS X 1\d\D([8-9]|\d\d)\D/.test(userAgent); var phantom = /PhantomJS/.test(userAgent); var ios = /AppleWebKit/.test(userAgent) && /Mobile\/\w+/.test(userAgent); // This is woefully incomplete. Suggestions for alternative methods welcome. var mobile = ios || /Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent); var mac = ios || /Mac/.test(platform); var chromeOS = /\bCrOS\b/.test(userAgent); var windows = /win/i.test(platform); var presto_version = presto && userAgent.match(/Version\/(\d*\.\d*)/); if (presto_version) presto_version = Number(presto_version[1]); if (presto_version && presto_version >= 15) { presto = false; webkit = true; } // Some browsers use the wrong event properties to signal cmd/ctrl on OS X var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)); var captureRightClick = gecko || (ie && ie_version >= 9); // Optimize some code when these features are not used. var sawReadOnlySpans = false, sawCollapsedSpans = false; // EDITOR CONSTRUCTOR // A CodeMirror instance represents an editor. This is the object // that user code is usually dealing with. function CodeMirror(place, options) { if (!(this instanceof CodeMirror)) return new CodeMirror(place, options); this.options = options = options ? copyObj(options) : {}; // Determine effective options based on given values and defaults. copyObj(defaults, options, false); setGuttersForLineNumbers(options); var doc = options.value; if (typeof doc == "string") doc = new Doc(doc, options.mode, null, options.lineSeparator); this.doc = doc; var input = new CodeMirror.inputStyles[options.inputStyle](this); var display = this.display = new Display(place, doc, input); display.wrapper.CodeMirror = this; updateGutters(this); themeChanged(this); if (options.lineWrapping) this.display.wrapper.className += " CodeMirror-wrap"; if (options.autofocus && !mobile) display.input.focus(); initScrollbars(this); this.state = { keyMaps: [], // stores maps added by addKeyMap overlays: [], // highlighting overlays, as added by addOverlay modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info overwrite: false, delayingBlurEvent: false, focused: false, suppressEdits: false, // used to disable editing during key handlers when in readOnly mode pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll selectingText: false, draggingText: false, highlight: new Delayed(), // stores highlight worker timeout keySeq: null, // Unfinished key sequence specialChars: null }; var cm = this; // Override magic textarea content restore that IE sometimes does // on our hidden textarea on reload if (ie && ie_version < 11) setTimeout(function() { cm.display.input.reset(true); }, 20); registerEventHandlers(this); ensureGlobalHandlers(); startOperation(this); this.curOp.forceUpdate = true; attachDoc(this, doc); if ((options.autofocus && !mobile) || cm.hasFocus()) setTimeout(bind(onFocus, this), 20); else onBlur(this); for (var opt in optionHandlers) if (optionHandlers.hasOwnProperty(opt)) optionHandlers[opt](this, options[opt], Init); maybeUpdateLineNumberWidth(this); if (options.finishInit) options.finishInit(this); for (var i = 0; i < initHooks.length; ++i) initHooks[i](this); endOperation(this); // Suppress optimizelegibility in Webkit, since it breaks text // measuring on line wrapping boundaries. if (webkit && options.lineWrapping && getComputedStyle(display.lineDiv).textRendering == "optimizelegibility") display.lineDiv.style.textRendering = "auto"; } // DISPLAY CONSTRUCTOR // The display handles the DOM integration, both for input reading // and content drawing. It holds references to DOM nodes and // display-related state. function Display(place, doc, input) { var d = this; this.input = input; // Covers bottom-right square when both scrollbars are present. d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler"); d.scrollbarFiller.setAttribute("cm-not-content", "true"); // Covers bottom of gutter when coverGutterNextToScrollbar is on // and h scrollbar is present. d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler"); d.gutterFiller.setAttribute("cm-not-content", "true"); // Will contain the actual code, positioned to cover the viewport. d.lineDiv = elt("div", null, "CodeMirror-code"); // Elements are added to these to represent selection and cursors. d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1"); d.cursorDiv = elt("div", null, "CodeMirror-cursors"); // A visibility: hidden element used to find the size of things. d.measure = elt("div", null, "CodeMirror-measure"); // When lines outside of the viewport are measured, they are drawn in this. d.lineMeasure = elt("div", null, "CodeMirror-measure"); // Wraps everything that needs to exist inside the vertically-padded coordinate system d.lineSpace = elt("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], null, "position: relative; outline: none"); // Moved around its parent to cover visible view. d.mover = elt("div", [elt("div", [d.lineSpace], "CodeMirror-lines")], null, "position: relative"); // Set to the height of the document, allowing scrolling. d.sizer = elt("div", [d.mover], "CodeMirror-sizer"); d.sizerWidth = null; // Behavior of elts with overflow: auto and padding is // inconsistent across browsers. This is used to ensure the // scrollable area is big enough. d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerGap + "px; width: 1px;"); // Will contain the gutters, if any. d.gutters = elt("div", null, "CodeMirror-gutters"); d.lineGutter = null; // Actual scrollable element. d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll"); d.scroller.setAttribute("tabIndex", "-1"); // The element in which the editor lives. d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror"); // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; } if (!webkit && !(gecko && mobile)) d.scroller.draggable = true; if (place) { if (place.appendChild) place.appendChild(d.wrapper); else place(d.wrapper); } // Current rendered range (may be bigger than the view window). d.viewFrom = d.viewTo = doc.first; d.reportedViewFrom = d.reportedViewTo = doc.first; // Information about the rendered lines. d.view = []; d.renderedView = null; // Holds info about a single rendered line when it was rendered // for measurement, while not in view. d.externalMeasured = null; // Empty space (in pixels) above the view d.viewOffset = 0; d.lastWrapHeight = d.lastWrapWidth = 0; d.updateLineNumbers = null; d.nativeBarWidth = d.barHeight = d.barWidth = 0; d.scrollbarsClipped = false; // Used to only resize the line number gutter when necessary (when // the amount of lines crosses a boundary that makes its width change) d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; // Set to true when a non-horizontal-scrolling line widget is // added. As an optimization, line widget aligning is skipped when // this is false. d.alignWidgets = false; d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; // Tracks the maximum line length so that the horizontal scrollbar // can be kept static when scrolling. d.maxLine = null; d.maxLineLength = 0; d.maxLineChanged = false; // Used for measuring wheel scrolling granularity d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; // True when shift is held down. d.shift = false; // Used to track whether anything happened since the context menu // was opened. d.selForContextMenu = null; d.activeTouch = null; input.init(d); } // STATE UPDATES // Used to get the editor into a consistent state again when options change. function loadMode(cm) { cm.doc.mode = CodeMirror.getMode(cm.options, cm.doc.modeOption); resetModeState(cm); } function resetModeState(cm) { cm.doc.iter(function(line) { if (line.stateAfter) line.stateAfter = null; if (line.styles) line.styles = null; }); cm.doc.frontier = cm.doc.first; startWorker(cm, 100); cm.state.modeGen++; if (cm.curOp) regChange(cm); } function wrappingChanged(cm) { if (cm.options.lineWrapping) { addClass(cm.display.wrapper, "CodeMirror-wrap"); cm.display.sizer.style.minWidth = ""; cm.display.sizerWidth = null; } else { rmClass(cm.display.wrapper, "CodeMirror-wrap"); findMaxLine(cm); } estimateLineHeights(cm); regChange(cm); clearCaches(cm); setTimeout(function(){updateScrollbars(cm);}, 100); } // Returns a function that estimates the height of a line, to use as // first approximation until the line becomes visible (and is thus // properly measurable). function estimateHeight(cm) { var th = textHeight(cm.display), wrapping = cm.options.lineWrapping; var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); return function(line) { if (lineIsHidden(cm.doc, line)) return 0; var widgetsHeight = 0; if (line.widgets) for (var i = 0; i < line.widgets.length; i++) { if (line.widgets[i].height) widgetsHeight += line.widgets[i].height; } if (wrapping) return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th; else return widgetsHeight + th; }; } function estimateLineHeights(cm) { var doc = cm.doc, est = estimateHeight(cm); doc.iter(function(line) { var estHeight = est(line); if (estHeight != line.height) updateLineHeight(line, estHeight); }); } function themeChanged(cm) { cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-"); clearCaches(cm); } function guttersChanged(cm) { updateGutters(cm); regChange(cm); setTimeout(function(){alignHorizontally(cm);}, 20); } // Rebuild the gutter elements, ensure the margin to the left of the // code matches their width. function updateGutters(cm) { var gutters = cm.display.gutters, specs = cm.options.gutters; removeChildren(gutters); for (var i = 0; i < specs.length; ++i) { var gutterClass = specs[i]; var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)); if (gutterClass == "CodeMirror-linenumbers") { cm.display.lineGutter = gElt; gElt.style.width = (cm.display.lineNumWidth || 1) + "px"; } } gutters.style.display = i ? "" : "none"; updateGutterSpace(cm); } function updateGutterSpace(cm) { var width = cm.display.gutters.offsetWidth; cm.display.sizer.style.marginLeft = width + "px"; } // Compute the character length of a line, taking into account // collapsed ranges (see markText) that might hide parts, and join // other lines onto it. function lineLength(line) { if (line.height == 0) return 0; var len = line.text.length, merged, cur = line; while (merged = collapsedSpanAtStart(cur)) { var found = merged.find(0, true); cur = found.from.line; len += found.from.ch - found.to.ch; } cur = line; while (merged = collapsedSpanAtEnd(cur)) { var found = merged.find(0, true); len -= cur.text.length - found.from.ch; cur = found.to.line; len += cur.text.length - found.to.ch; } return len; } // Find the longest line in the document. function findMaxLine(cm) { var d = cm.display, doc = cm.doc; d.maxLine = getLine(doc, doc.first); d.maxLineLength = lineLength(d.maxLine); d.maxLineChanged = true; doc.iter(function(line) { var len = lineLength(line); if (len > d.maxLineLength) { d.maxLineLength = len; d.maxLine = line; } }); } // Make sure the gutters options contains the element // "CodeMirror-linenumbers" when the lineNumbers option is true. function setGuttersForLineNumbers(options) { var found = indexOf(options.gutters, "CodeMirror-linenumbers"); if (found == -1 && options.lineNumbers) { options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]); } else if (found > -1 && !options.lineNumbers) { options.gutters = options.gutters.slice(0); options.gutters.splice(found, 1); } } // SCROLLBARS // Prepare DOM reads needed to update the scrollbars. Done in one // shot to minimize update/measure roundtrips. function measureForScrollbars(cm) { var d = cm.display, gutterW = d.gutters.offsetWidth; var docH = Math.round(cm.doc.height + paddingVert(cm.display)); return { clientHeight: d.scroller.clientHeight, viewHeight: d.wrapper.clientHeight, scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth, viewWidth: d.wrapper.clientWidth, barLeft: cm.options.fixedGutter ? gutterW : 0, docHeight: docH, scrollHeight: docH + scrollGap(cm) + d.barHeight, nativeBarWidth: d.nativeBarWidth, gutterWidth: gutterW }; } function NativeScrollbars(place, scroll, cm) { this.cm = cm; var vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"); var horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar"); place(vert); place(horiz); on(vert, "scroll", function() { if (vert.clientHeight) scroll(vert.scrollTop, "vertical"); }); on(horiz, "scroll", function() { if (horiz.clientWidth) scroll(horiz.scrollLeft, "horizontal"); }); this.checkedZeroWidth = false; // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). if (ie && ie_version < 8) this.horiz.style.minHeight = this.vert.style.minWidth = "18px"; } NativeScrollbars.prototype = copyObj({ update: function(measure) { var needsH = measure.scrollWidth > measure.clientWidth + 1; var needsV = measure.scrollHeight > measure.clientHeight + 1; var sWidth = measure.nativeBarWidth; if (needsV) { this.vert.style.display = "block"; this.vert.style.bottom = needsH ? sWidth + "px" : "0"; var totalHeight = measure.viewHeight - (needsH ? sWidth : 0); // A bug in IE8 can cause this value to be negative, so guard it. this.vert.firstChild.style.height = Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + "px"; } else { this.vert.style.display = ""; this.vert.firstChild.style.height = "0"; } if (needsH) { this.horiz.style.display = "block"; this.horiz.style.right = needsV ? sWidth + "px" : "0"; this.horiz.style.left = measure.barLeft + "px"; var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0); this.horiz.firstChild.style.width = (measure.scrollWidth - measure.clientWidth + totalWidth) + "px"; } else { this.horiz.style.display = ""; this.horiz.firstChild.style.width = "0"; } if (!this.checkedZeroWidth && measure.clientHeight > 0) { if (sWidth == 0) this.zeroWidthHack(); this.checkedZeroWidth = true; } return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}; }, setScrollLeft: function(pos) { if (this.horiz.scrollLeft != pos) this.horiz.scrollLeft = pos; if (this.disableHoriz) this.enableZeroWidthBar(this.horiz, this.disableHoriz); }, setScrollTop: function(pos) { if (this.vert.scrollTop != pos) this.vert.scrollTop = pos; if (this.disableVert) this.enableZeroWidthBar(this.vert, this.disableVert); }, zeroWidthHack: function() { var w = mac && !mac_geMountainLion ? "12px" : "18px"; this.horiz.style.height = this.vert.style.width = w; this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none"; this.disableHoriz = new Delayed; this.disableVert = new Delayed; }, enableZeroWidthBar: function(bar, delay) { bar.style.pointerEvents = "auto"; function maybeDisable() { // To find out whether the scrollbar is still visible, we // check whether the element under the pixel in the bottom // left corner of the scrollbar box is the scrollbar box // itself (when the bar is still visible) or its filler child // (when the bar is hidden). If it is still visible, we keep // it enabled, if it's hidden, we disable pointer events. var box = bar.getBoundingClientRect(); var elt = document.elementFromPoint(box.left + 1, box.bottom - 1); if (elt != bar) bar.style.pointerEvents = "none"; else delay.set(1000, maybeDisable); } delay.set(1000, maybeDisable); }, clear: function() { var parent = this.horiz.parentNode; parent.removeChild(this.horiz); parent.removeChild(this.vert); } }, NativeScrollbars.prototype); function NullScrollbars() {} NullScrollbars.prototype = copyObj({ update: function() { return {bottom: 0, right: 0}; }, setScrollLeft: function() {}, setScrollTop: function() {}, clear: function() {} }, NullScrollbars.prototype); CodeMirror.scrollbarModel = {"native": NativeScrollbars, "null": NullScrollbars}; function initScrollbars(cm) { if (cm.display.scrollbars) { cm.display.scrollbars.clear(); if (cm.display.scrollbars.addClass) rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); } cm.display.scrollbars = new CodeMirror.scrollbarModel[cm.options.scrollbarStyle](function(node) { cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); // Prevent clicks in the scrollbars from killing focus on(node, "mousedown", function() { if (cm.state.focused) setTimeout(function() { cm.display.input.focus(); }, 0); }); node.setAttribute("cm-not-content", "true"); }, function(pos, axis) { if (axis == "horizontal") setScrollLeft(cm, pos); else setScrollTop(cm, pos); }, cm); if (cm.display.scrollbars.addClass) addClass(cm.display.wrapper, cm.display.scrollbars.addClass); } function updateScrollbars(cm, measure) { if (!measure) measure = measureForScrollbars(cm); var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight; updateScrollbarsInner(cm, measure); for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) { if (startWidth != cm.display.barWidth && cm.options.lineWrapping) updateHeightsInViewport(cm); updateScrollbarsInner(cm, measureForScrollbars(cm)); startWidth = cm.display.barWidth; startHeight = cm.display.barHeight; } } // Re-synchronize the fake scrollbars with the actual size of the // content. function updateScrollbarsInner(cm, measure) { var d = cm.display; var sizes = d.scrollbars.update(measure); d.sizer.style.paddingRight = (d.barWidth = sizes.right) + "px"; d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + "px"; d.heightForcer.style.borderBottom = sizes.bottom + "px solid transparent" if (sizes.right && sizes.bottom) { d.scrollbarFiller.style.display = "block"; d.scrollbarFiller.style.height = sizes.bottom + "px"; d.scrollbarFiller.style.width = sizes.right + "px"; } else d.scrollbarFiller.style.display = ""; if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { d.gutterFiller.style.display = "block"; d.gutterFiller.style.height = sizes.bottom + "px"; d.gutterFiller.style.width = measure.gutterWidth + "px"; } else d.gutterFiller.style.display = ""; } // Compute the lines that are visible in a given viewport (defaults // the the current scroll position). viewport may contain top, // height, and ensure (see op.scrollToPos) properties. function visibleLines(display, doc, viewport) { var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop; top = Math.floor(top - paddingTop(display)); var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight; var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom); // Ensure is a {from: {line, ch}, to: {line, ch}} object, and // forces those lines into the viewport (if possible). if (viewport && viewport.ensure) { var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line; if (ensureFrom < from) { from = ensureFrom; to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight); } else if (Math.min(ensureTo, doc.lastLine()) >= to) { from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight); to = ensureTo; } } return {from: from, to: Math.max(to, from + 1)}; } // LINE NUMBERS // Re-align line numbers and gutter marks to compensate for // horizontal scrolling. function alignHorizontally(cm) { var display = cm.display, view = display.view; if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return; var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft; var gutterW = display.gutters.offsetWidth, left = comp + "px"; for (var i = 0; i < view.length; i++) if (!view[i].hidden) { if (cm.options.fixedGutter) { if (view[i].gutter) view[i].gutter.style.left = left; if (view[i].gutterBackground) view[i].gutterBackground.style.left = left; } var align = view[i].alignable; if (align) for (var j = 0; j < align.length; j++) align[j].style.left = left; } if (cm.options.fixedGutter) display.gutters.style.left = (comp + gutterW) + "px"; } // Used to ensure that the line number gutter is still the right // size for the current document size. Returns true when an update // is needed. function maybeUpdateLineNumberWidth(cm) { if (!cm.options.lineNumbers) return false; var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display; if (last.length != display.lineNumChars) { var test = display.measure.appendChild(elt("div", [elt("div", last)], "CodeMirror-linenumber CodeMirror-gutter-elt")); var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW; display.lineGutter.style.width = ""; display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1; display.lineNumWidth = display.lineNumInnerWidth + padding; display.lineNumChars = display.lineNumInnerWidth ? last.length : -1; display.lineGutter.style.width = display.lineNumWidth + "px"; updateGutterSpace(cm); return true; } return false; } function lineNumberFor(options, i) { return String(options.lineNumberFormatter(i + options.firstLineNumber)); } // Computes display.scroller.scrollLeft + display.gutters.offsetWidth, // but using getBoundingClientRect to get a sub-pixel-accurate // result. function compensateForHScroll(display) { return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left; } // DISPLAY DRAWING function DisplayUpdate(cm, viewport, force) { var display = cm.display; this.viewport = viewport; // Store some values that we'll need later (but don't want to force a relayout for) this.visible = visibleLines(display, cm.doc, viewport); this.editorIsHidden = !display.wrapper.offsetWidth; this.wrapperHeight = display.wrapper.clientHeight; this.wrapperWidth = display.wrapper.clientWidth; this.oldDisplayWidth = displayWidth(cm); this.force = force; this.dims = getDimensions(cm); this.events = []; } DisplayUpdate.prototype.signal = function(emitter, type) { if (hasHandler(emitter, type)) this.events.push(arguments); }; DisplayUpdate.prototype.finish = function() { for (var i = 0; i < this.events.length; i++) signal.apply(null, this.events[i]); }; function maybeClipScrollbars(cm) { var display = cm.display; if (!display.scrollbarsClipped && display.scroller.offsetWidth) { display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth; display.heightForcer.style.height = scrollGap(cm) + "px"; display.sizer.style.marginBottom = -display.nativeBarWidth + "px"; display.sizer.style.borderRightWidth = scrollGap(cm) + "px"; display.scrollbarsClipped = true; } } // Does the actual updating of the line display. Bails out // (returning false) when there is nothing to be done and forced is // false. function updateDisplayIfNeeded(cm, update) { var display = cm.display, doc = cm.doc; if (update.editorIsHidden) { resetView(cm); return false; } // Bail out if the visible area is already rendered and nothing changed. if (!update.force && update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && display.renderedView == display.view && countDirtyView(cm) == 0) return false; if (maybeUpdateLineNumberWidth(cm)) { resetView(cm); update.dims = getDimensions(cm); } // Compute a suitable new viewport (from & to) var end = doc.first + doc.size; var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first); var to = Math.min(end, update.visible.to + cm.options.viewportMargin); if (display.viewFrom < from && from - display.viewFrom < 20) from = Math.max(doc.first, display.viewFrom); if (display.viewTo > to && display.viewTo - to < 20) to = Math.min(end, display.viewTo); if (sawCollapsedSpans) { from = visualLineNo(cm.doc, from); to = visualLineEndNo(cm.doc, to); } var different = from != display.viewFrom || to != display.viewTo || display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth; adjustView(cm, from, to); display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)); // Position the mover div to align with the current scroll position cm.display.mover.style.top = display.viewOffset + "px"; var toUpdate = countDirtyView(cm); if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) return false; // For big changes, we hide the enclosing element during the // update, since that speeds up the operations on most browsers. var focused = activeElt(); if (toUpdate > 4) display.lineDiv.style.display = "none"; patchDisplay(cm, display.updateLineNumbers, update.dims); if (toUpdate > 4) display.lineDiv.style.display = ""; display.renderedView = display.view; // There might have been a widget with a focused element that got // hidden or updated, if so re-focus it. if (focused && activeElt() != focused && focused.offsetHeight) focused.focus(); // Prevent selection and cursors from interfering with the scroll // width and height. removeChildren(display.cursorDiv); removeChildren(display.selectionDiv); display.gutters.style.height = display.sizer.style.minHeight = 0; if (different) { display.lastWrapHeight = update.wrapperHeight; display.lastWrapWidth = update.wrapperWidth; startWorker(cm, 400); } display.updateLineNumbers = null; return true; } function postUpdateDisplay(cm, update) { var viewport = update.viewport; for (var first = true;; first = false) { if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { // Clip forced viewport to actual scrollable area. if (viewport && viewport.top != null) viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; // Updated line heights might result in the drawn area not // actually covering the viewport. Keep looping until it does. update.visible = visibleLines(cm.display, cm.doc, viewport); if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) break; } if (!updateDisplayIfNeeded(cm, update)) break; updateHeightsInViewport(cm); var barMeasure = measureForScrollbars(cm); updateSelection(cm); updateScrollbars(cm, barMeasure); setDocumentHeight(cm, barMeasure); } update.signal(cm, "update", cm); if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo); cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo; } } function updateDisplaySimple(cm, viewport) { var update = new DisplayUpdate(cm, viewport); if (updateDisplayIfNeeded(cm, update)) { updateHeightsInViewport(cm); postUpdateDisplay(cm, update); var barMeasure = measureForScrollbars(cm); updateSelection(cm); updateScrollbars(cm, barMeasure); setDocumentHeight(cm, barMeasure); update.finish(); } } function setDocumentHeight(cm, measure) { cm.display.sizer.style.minHeight = measure.docHeight + "px"; cm.display.heightForcer.style.top = measure.docHeight + "px"; cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + "px"; } // Read the actual heights of the rendered lines, and update their // stored heights to match. function updateHeightsInViewport(cm) { var display = cm.display; var prevBottom = display.lineDiv.offsetTop; for (var i = 0; i < display.view.length; i++) { var cur = display.view[i], height; if (cur.hidden) continue; if (ie && ie_version < 8) { var bot = cur.node.offsetTop + cur.node.offsetHeight; height = bot - prevBottom; prevBottom = bot; } else { var box = cur.node.getBoundingClientRect(); height = box.bottom - box.top; } var diff = cur.line.height - height; if (height < 2) height = textHeight(display); if (diff > .001 || diff < -.001) { updateLineHeight(cur.line, height); updateWidgetHeight(cur.line); if (cur.rest) for (var j = 0; j < cur.rest.length; j++) updateWidgetHeight(cur.rest[j]); } } } // Read and store the height of line widgets associated with the // given line. function updateWidgetHeight(line) { if (line.widgets) for (var i = 0; i < line.widgets.length; ++i) line.widgets[i].height = line.widgets[i].node.parentNode.offsetHeight; } // Do a bulk-read of the DOM positions and sizes needed to draw the // view, so that we don't interleave reading and writing to the DOM. function getDimensions(cm) { var d = cm.display, left = {}, width = {}; var gutterLeft = d.gutters.clientLeft; for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft; width[cm.options.gutters[i]] = n.clientWidth; } return {fixedPos: compensateForHScroll(d), gutterTotalWidth: d.gutters.offsetWidth, gutterLeft: left, gutterWidth: width, wrapperWidth: d.wrapper.clientWidth}; } // Sync the actual display DOM structure with display.view, removing // nodes for lines that are no longer in view, and creating the ones // that are not there yet, and updating the ones that are out of // date. function patchDisplay(cm, updateNumbersFrom, dims) { var display = cm.display, lineNumbers = cm.options.lineNumbers; var container = display.lineDiv, cur = container.firstChild; function rm(node) { var next = node.nextSibling; // Works around a throw-scroll bug in OS X Webkit if (webkit && mac && cm.display.currentWheelTarget == node) node.style.display = "none"; else node.parentNode.removeChild(node); return next; } var view = display.view, lineN = display.viewFrom; // Loop over the elements in the view, syncing cur (the DOM nodes // in display.lineDiv) with the view as we go. for (var i = 0; i < view.length; i++) { var lineView = view[i]; if (lineView.hidden) { } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet var node = buildLineElement(cm, lineView, lineN, dims); container.insertBefore(node, cur); } else { // Already drawn while (cur != lineView.node) cur = rm(cur); var updateNumber = lineNumbers && updateNumbersFrom != null && updateNumbersFrom <= lineN && lineView.lineNumber; if (lineView.changes) { if (indexOf(lineView.changes, "gutter") > -1) updateNumber = false; updateLineForChanges(cm, lineView, lineN, dims); } if (updateNumber) { removeChildren(lineView.lineNumber); lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))); } cur = lineView.node.nextSibling; } lineN += lineView.size; } while (cur) cur = rm(cur); } // When an aspect of a line changes, a string is added to // lineView.changes. This updates the relevant part of the line's // DOM structure. function updateLineForChanges(cm, lineView, lineN, dims) { for (var j = 0; j < lineView.changes.length; j++) { var type = lineView.changes[j]; if (type == "text") updateLineText(cm, lineView); else if (type == "gutter") updateLineGutter(cm, lineView, lineN, dims); else if (type == "class") updateLineClasses(lineView); else if (type == "widget") updateLineWidgets(cm, lineView, dims); } lineView.changes = null; } // Lines with gutter elements, widgets or a background class need to // be wrapped, and have the extra elements added to the wrapper div function ensureLineWrapped(lineView) { if (lineView.node == lineView.text) { lineView.node = elt("div", null, null, "position: relative"); if (lineView.text.parentNode) lineView.text.parentNode.replaceChild(lineView.node, lineView.text); lineView.node.appendChild(lineView.text); if (ie && ie_version < 8) lineView.node.style.zIndex = 2; } return lineView.node; } function updateLineBackground(lineView) { var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass; if (cls) cls += " CodeMirror-linebackground"; if (lineView.background) { if (cls) lineView.background.className = cls; else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; } } else if (cls) { var wrap = ensureLineWrapped(lineView); lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild); } } // Wrapper around buildLineContent which will reuse the structure // in display.externalMeasured when possible. function getLineContent(cm, lineView) { var ext = cm.display.externalMeasured; if (ext && ext.line == lineView.line) { cm.display.externalMeasured = null; lineView.measure = ext.measure; return ext.built; } return buildLineContent(cm, lineView); } // Redraw the line's text. Interacts with the background and text // classes because the mode may output tokens that influence these // classes. function updateLineText(cm, lineView) { var cls = lineView.text.className; var built = getLineContent(cm, lineView); if (lineView.text == lineView.node) lineView.node = built.pre; lineView.text.parentNode.replaceChild(built.pre, lineView.text); lineView.text = built.pre; if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { lineView.bgClass = built.bgClass; lineView.textClass = built.textClass; updateLineClasses(lineView); } else if (cls) { lineView.text.className = cls; } } function updateLineClasses(lineView) { updateLineBackground(lineView); if (lineView.line.wrapClass) ensureLineWrapped(lineView).className = lineView.line.wrapClass; else if (lineView.node != lineView.text) lineView.node.className = ""; var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass; lineView.text.className = textClass || ""; } function updateLineGutter(cm, lineView, lineN, dims) { if (lineView.gutter) { lineView.node.removeChild(lineView.gutter); lineView.gutter = null; } if (lineView.gutterBackground) { lineView.node.removeChild(lineView.gutterBackground); lineView.gutterBackground = null; } if (lineView.line.gutterClass) { var wrap = ensureLineWrapped(lineView); lineView.gutterBackground = elt("div", null, "CodeMirror-gutter-background " + lineView.line.gutterClass, "left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px; width: " + dims.gutterTotalWidth + "px"); wrap.insertBefore(lineView.gutterBackground, lineView.text); } var markers = lineView.line.gutterMarkers; if (cm.options.lineNumbers || markers) { var wrap = ensureLineWrapped(lineView); var gutterWrap = lineView.gutter = elt("div", null, "CodeMirror-gutter-wrapper", "left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px"); cm.display.input.setUneditable(gutterWrap); wrap.insertBefore(gutterWrap, lineView.text); if (lineView.line.gutterClass) gutterWrap.className += " " + lineView.line.gutterClass; if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) lineView.lineNumber = gutterWrap.appendChild( elt("div", lineNumberFor(cm.options, lineN), "CodeMirror-linenumber CodeMirror-gutter-elt", "left: " + dims.gutterLeft["CodeMirror-linenumbers"] + "px; width: " + cm.display.lineNumInnerWidth + "px")); if (markers) for (var k = 0; k < cm.options.gutters.length; ++k) { var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id]; if (found) gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", "left: " + dims.gutterLeft[id] + "px; width: " + dims.gutterWidth[id] + "px")); } } } function updateLineWidgets(cm, lineView, dims) { if (lineView.alignable) lineView.alignable = null; for (var node = lineView.node.firstChild, next; node; node = next) { var next = node.nextSibling; if (node.className == "CodeMirror-linewidget") lineView.node.removeChild(node); } insertLineWidgets(cm, lineView, dims); } // Build a line's DOM representation from scratch function buildLineElement(cm, lineView, lineN, dims) { var built = getLineContent(cm, lineView); lineView.text = lineView.node = built.pre; if (built.bgClass) lineView.bgClass = built.bgClass; if (built.textClass) lineView.textClass = built.textClass; updateLineClasses(lineView); updateLineGutter(cm, lineView, lineN, dims); insertLineWidgets(cm, lineView, dims); return lineView.node; } // A lineView may contain multiple logical lines (when merged by // collapsed spans). The widgets for all of them need to be drawn. function insertLineWidgets(cm, lineView, dims) { insertLineWidgetsFor(cm, lineView.line, lineView, dims, true); if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) { if (!line.widgets) return; var wrap = ensureLineWrapped(lineView); for (var i = 0, ws = line.widgets; i < ws.length; ++i) { var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget"); if (!widget.handleMouseEvents) node.setAttribute("cm-ignore-events", "true"); positionLineWidget(widget, node, lineView, dims); cm.display.input.setUneditable(node); if (allowAbove && widget.above) wrap.insertBefore(node, lineView.gutter || lineView.text); else wrap.appendChild(node); signalLater(widget, "redraw"); } } function positionLineWidget(widget, node, lineView, dims) { if (widget.noHScroll) { (lineView.alignable || (lineView.alignable = [])).push(node); var width = dims.wrapperWidth; node.style.left = dims.fixedPos + "px"; if (!widget.coverGutter) { width -= dims.gutterTotalWidth; node.style.paddingLeft = dims.gutterTotalWidth + "px"; } node.style.width = width + "px"; } if (widget.coverGutter) { node.style.zIndex = 5; node.style.position = "relative"; if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + "px"; } } // POSITION OBJECT // A Pos instance represents a position within the text. var Pos = CodeMirror.Pos = function(line, ch) { if (!(this instanceof Pos)) return new Pos(line, ch); this.line = line; this.ch = ch; }; // Compare two positions, return 0 if they are the same, a negative // number when a is less, and a positive number otherwise. var cmp = CodeMirror.cmpPos = function(a, b) { return a.line - b.line || a.ch - b.ch; }; function copyPos(x) {return Pos(x.line, x.ch);} function maxPos(a, b) { return cmp(a, b) < 0 ? b : a; } function minPos(a, b) { return cmp(a, b) < 0 ? a : b; } // INPUT HANDLING function ensureFocus(cm) { if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); } } // This will be set to a {lineWise: bool, text: [string]} object, so // that, when pasting, we know what kind of selections the copied // text was made out of. var lastCopied = null; function applyTextInput(cm, inserted, deleted, sel, origin) { var doc = cm.doc; cm.display.shift = false; if (!sel) sel = doc.sel; var paste = cm.state.pasteIncoming || origin == "paste"; var textLines = doc.splitLines(inserted), multiPaste = null // When pasing N lines into N selections, insert one line per selection if (paste && sel.ranges.length > 1) { if (lastCopied && lastCopied.text.join("\n") == inserted) { if (sel.ranges.length % lastCopied.text.length == 0) { multiPaste = []; for (var i = 0; i < lastCopied.text.length; i++) multiPaste.push(doc.splitLines(lastCopied.text[i])); } } else if (textLines.length == sel.ranges.length) { multiPaste = map(textLines, function(l) { return [l]; }); } } // Normal behavior is to insert the new text into every selection for (var i = sel.ranges.length - 1; i >= 0; i--) { var range = sel.ranges[i]; var from = range.from(), to = range.to(); if (range.empty()) { if (deleted && deleted > 0) // Handle deletion from = Pos(from.line, from.ch - deleted); else if (cm.state.overwrite && !paste) // Handle overwrite to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); else if (lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == inserted) from = to = Pos(from.line, 0) } var updateInput = cm.curOp.updateInput; var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i % multiPaste.length] : textLines, origin: origin || (paste ? "paste" : cm.state.cutIncoming ? "cut" : "+input")}; makeChange(cm.doc, changeEvent); signalLater(cm, "inputRead", cm, changeEvent); } if (inserted && !paste) triggerElectric(cm, inserted); ensureCursorVisible(cm); cm.curOp.updateInput = updateInput; cm.curOp.typing = true; cm.state.pasteIncoming = cm.state.cutIncoming = false; } function handlePaste(e, cm) { var pasted = e.clipboardData && e.clipboardData.getData("Text"); if (pasted) { e.preventDefault(); if (!cm.isReadOnly() && !cm.options.disableInput) runInOp(cm, function() { applyTextInput(cm, pasted, 0, null, "paste"); }); return true; } } function triggerElectric(cm, inserted) { // When an 'electric' character is inserted, immediately trigger a reindent if (!cm.options.electricChars || !cm.options.smartIndent) return; var sel = cm.doc.sel; for (var i = sel.ranges.length - 1; i >= 0; i--) { var range = sel.ranges[i]; if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) continue; var mode = cm.getModeAt(range.head); var indented = false; if (mode.electricChars) { for (var j = 0; j < mode.electricChars.length; j++) if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { indented = indentLine(cm, range.head.line, "smart"); break; } } else if (mode.electricInput) { if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) indented = indentLine(cm, range.head.line, "smart"); } if (indented) signalLater(cm, "electricInput", cm, range.head.line); } } function copyableRanges(cm) { var text = [], ranges = []; for (var i = 0; i < cm.doc.sel.ranges.length; i++) { var line = cm.doc.sel.ranges[i].head.line; var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)}; ranges.push(lineRange); text.push(cm.getRange(lineRange.anchor, lineRange.head)); } return {text: text, ranges: ranges}; } function disableBrowserMagic(field, spellcheck) { field.setAttribute("autocorrect", "off"); field.setAttribute("autocapitalize", "off"); field.setAttribute("spellcheck", !!spellcheck); } // TEXTAREA INPUT STYLE function TextareaInput(cm) { this.cm = cm; // See input.poll and input.reset this.prevInput = ""; // Flag that indicates whether we expect input to appear real soon // now (after some event like 'keypress' or 'input') and are // polling intensively. this.pollingFast = false; // Self-resetting timeout for the poller this.polling = new Delayed(); // Tracks when input.reset has punted to just putting a short // string into the textarea instead of the full selection. this.inaccurateSelection = false; // Used to work around IE issue with selection being forgotten when focus moves away from textarea this.hasSelection = false; this.composing = null; }; function hiddenTextarea() { var te = elt("textarea", null, null, "position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; outline: none"); var div = elt("div", [te], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); // The textarea is kept positioned near the cursor to prevent the // fact that it'll be scrolled into view on input from scrolling // our fake cursor out of view. On webkit, when wrap=off, paste is // very slow. So make the area wide instead. if (webkit) te.style.width = "1000px"; else te.setAttribute("wrap", "off"); // If border: 0; -- iOS fails to open keyboard (issue #1287) if (ios) te.style.border = "1px solid black"; disableBrowserMagic(te); return div; } TextareaInput.prototype = copyObj({ init: function(display) { var input = this, cm = this.cm; // Wraps and hides input textarea var div = this.wrapper = hiddenTextarea(); // The semihidden textarea that is focused when the editor is // focused, and receives input. var te = this.textarea = div.firstChild; display.wrapper.insertBefore(div, display.wrapper.firstChild); // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore) if (ios) te.style.width = "0px"; on(te, "input", function() { if (ie && ie_version >= 9 && input.hasSelection) input.hasSelection = null; input.poll(); }); on(te, "paste", function(e) { if (signalDOMEvent(cm, e) || handlePaste(e, cm)) return cm.state.pasteIncoming = true; input.fastPoll(); }); function prepareCopyCut(e) { if (signalDOMEvent(cm, e)) return if (cm.somethingSelected()) { lastCopied = {lineWise: false, text: cm.getSelections()}; if (input.inaccurateSelection) { input.prevInput = ""; input.inaccurateSelection = false; te.value = lastCopied.text.join("\n"); selectInput(te); } } else if (!cm.options.lineWiseCopyCut) { return; } else { var ranges = copyableRanges(cm); lastCopied = {lineWise: true, text: ranges.text}; if (e.type == "cut") { cm.setSelections(ranges.ranges, null, sel_dontScroll); } else { input.prevInput = ""; te.value = ranges.text.join("\n"); selectInput(te); } } if (e.type == "cut") cm.state.cutIncoming = true; } on(te, "cut", prepareCopyCut); on(te, "copy", prepareCopyCut); on(display.scroller, "paste", function(e) { if (eventInWidget(display, e) || signalDOMEvent(cm, e)) return; cm.state.pasteIncoming = true; input.focus(); }); // Prevent normal selection in the editor (we handle our own) on(display.lineSpace, "selectstart", function(e) { if (!eventInWidget(display, e)) e_preventDefault(e); }); on(te, "compositionstart", function() { var start = cm.getCursor("from"); if (input.composing) input.composing.range.clear() input.composing = { start: start, range: cm.markText(start, cm.getCursor("to"), {className: "CodeMirror-composing"}) }; }); on(te, "compositionend", function() { if (input.composing) { input.poll(); input.composing.range.clear(); input.composing = null; } }); }, prepareSelection: function() { // Redraw the selection and/or cursor var cm = this.cm, display = cm.display, doc = cm.doc; var result = prepareSelection(cm); // Move the hidden textarea near the cursor to prevent scrolling artifacts if (cm.options.moveInputWithCursor) { var headPos = cursorCoords(cm, doc.sel.primary().head, "div"); var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect(); result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, headPos.top + lineOff.top - wrapOff.top)); result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, headPos.left + lineOff.left - wrapOff.left)); } return result; }, showSelection: function(drawn) { var cm = this.cm, display = cm.display; removeChildrenAndAdd(display.cursorDiv, drawn.cursors); removeChildrenAndAdd(display.selectionDiv, drawn.selection); if (drawn.teTop != null) { this.wrapper.style.top = drawn.teTop + "px"; this.wrapper.style.left = drawn.teLeft + "px"; } }, // Reset the input to correspond to the selection (or to be empty, // when not typing and nothing is selected) reset: function(typing) { if (this.contextMenuPending) return; var minimal, selected, cm = this.cm, doc = cm.doc; if (cm.somethingSelected()) { this.prevInput = ""; var range = doc.sel.primary(); minimal = hasCopyEvent && (range.to().line - range.from().line > 100 || (selected = cm.getSelection()).length > 1000); var content = minimal ? "-" : selected || cm.getSelection(); this.textarea.value = content; if (cm.state.focused) selectInput(this.textarea); if (ie && ie_version >= 9) this.hasSelection = content; } else if (!typing) { this.prevInput = this.textarea.value = ""; if (ie && ie_version >= 9) this.hasSelection = null; } this.inaccurateSelection = minimal; }, getField: function() { return this.textarea; }, supportsTouch: function() { return false; }, focus: function() { if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt() != this.textarea)) { try { this.textarea.focus(); } catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM } }, blur: function() { this.textarea.blur(); }, resetPosition: function() { this.wrapper.style.top = this.wrapper.style.left = 0; }, receivedFocus: function() { this.slowPoll(); }, // Poll for input changes, using the normal rate of polling. This // runs as long as the editor is focused. slowPoll: function() { var input = this; if (input.pollingFast) return; input.polling.set(this.cm.options.pollInterval, function() { input.poll(); if (input.cm.state.focused) input.slowPoll(); }); }, // When an event has just come in that is likely to add or change // something in the input textarea, we poll faster, to ensure that // the change appears on the screen quickly. fastPoll: function() { var missed = false, input = this; input.pollingFast = true; function p() { var changed = input.poll(); if (!changed && !missed) {missed = true; input.polling.set(60, p);} else {input.pollingFast = false; input.slowPoll();} } input.polling.set(20, p); }, // Read input from the textarea, and update the document to match. // When something is selected, it is present in the textarea, and // selected (unless it is huge, in which case a placeholder is // used). When nothing is selected, the cursor sits after previously // seen text (can be empty), which is stored in prevInput (we must // not reset the textarea when typing, because that breaks IME). poll: function() { var cm = this.cm, input = this.textarea, prevInput = this.prevInput; // Since this is called a *lot*, try to bail out as cheaply as // possible when it is clear that nothing happened. hasSelection // will be the case when there is a lot of text in the textarea, // in which case reading its value would be expensive. if (this.contextMenuPending || !cm.state.focused || (hasSelection(input) && !prevInput && !this.composing) || cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) return false; var text = input.value; // If nothing changed, bail. if (text == prevInput && !cm.somethingSelected()) return false; // Work around nonsensical selection resetting in IE9/10, and // inexplicable appearance of private area unicode characters on // some key combos in Mac (#2689). if (ie && ie_version >= 9 && this.hasSelection === text || mac && /[\uf700-\uf7ff]/.test(text)) { cm.display.input.reset(); return false; } if (cm.doc.sel == cm.display.selForContextMenu) { var first = text.charCodeAt(0); if (first == 0x200b && !prevInput) prevInput = "\u200b"; if (first == 0x21da) { this.reset(); return this.cm.execCommand("undo"); } } // Find the part of the input that is actually new var same = 0, l = Math.min(prevInput.length, text.length); while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same; var self = this; runInOp(cm, function() { applyTextInput(cm, text.slice(same), prevInput.length - same, null, self.composing ? "*compose" : null); // Don't leave long text in the textarea, since it makes further polling slow if (text.length > 1000 || text.indexOf("\n") > -1) input.value = self.prevInput = ""; else self.prevInput = text; if (self.composing) { self.composing.range.clear(); self.composing.range = cm.markText(self.composing.start, cm.getCursor("to"), {className: "CodeMirror-composing"}); } }); return true; }, ensurePolled: function() { if (this.pollingFast && this.poll()) this.pollingFast = false; }, onKeyPress: function() { if (ie && ie_version >= 9) this.hasSelection = null; this.fastPoll(); }, onContextMenu: function(e) { var input = this, cm = input.cm, display = cm.display, te = input.textarea; var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop; if (!pos || presto) return; // Opera is difficult. // Reset the current text selection only if the click is done outside of the selection // and 'resetSelectionOnContextMenu' option is true. var reset = cm.options.resetSelectionOnContextMenu; if (reset && cm.doc.sel.contains(pos) == -1) operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText; input.wrapper.style.cssText = "position: absolute" var wrapperBox = input.wrapper.getBoundingClientRect() te.style.cssText = "position: absolute; width: 30px; height: 30px; top: " + (e.clientY - wrapperBox.top - 5) + "px; left: " + (e.clientX - wrapperBox.left - 5) + "px; z-index: 1000; background: " + (ie ? "rgba(255, 255, 255, .05)" : "transparent") + "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"; if (webkit) var oldScrollY = window.scrollY; // Work around Chrome issue (#2712) display.input.focus(); if (webkit) window.scrollTo(null, oldScrollY); display.input.reset(); // Adds "Select all" to context menu in FF if (!cm.somethingSelected()) te.value = input.prevInput = " "; input.contextMenuPending = true; display.selForContextMenu = cm.doc.sel; clearTimeout(display.detectingSelectAll); // Select-all will be greyed out if there's nothing to select, so // this adds a zero-width space so that we can later check whether // it got selected. function prepareSelectAllHack() { if (te.selectionStart != null) { var selected = cm.somethingSelected(); var extval = "\u200b" + (selected ? te.value : ""); te.value = "\u21da"; // Used to catch context-menu undo te.value = extval; input.prevInput = selected ? "" : "\u200b"; te.selectionStart = 1; te.selectionEnd = extval.length; // Re-set this, in case some other handler touched the // selection in the meantime. display.selForContextMenu = cm.doc.sel; } } function rehide() { input.contextMenuPending = false; input.wrapper.style.cssText = oldWrapperCSS te.style.cssText = oldCSS; if (ie && ie_version < 9) display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); // Try to detect the user choosing select-all if (te.selectionStart != null) { if (!ie || (ie && ie_version < 9)) prepareSelectAllHack(); var i = 0, poll = function() { if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && te.selectionEnd > 0 && input.prevInput == "\u200b") operation(cm, commands.selectAll)(cm); else if (i++ < 10) display.detectingSelectAll = setTimeout(poll, 500); else display.input.reset(); }; display.detectingSelectAll = setTimeout(poll, 200); } } if (ie && ie_version >= 9) prepareSelectAllHack(); if (captureRightClick) { e_stop(e); var mouseup = function() { off(window, "mouseup", mouseup); setTimeout(rehide, 20); }; on(window, "mouseup", mouseup); } else { setTimeout(rehide, 50); } }, readOnlyChanged: function(val) { if (!val) this.reset(); }, setUneditable: nothing, needsContentAttribute: false }, TextareaInput.prototype); // CONTENTEDITABLE INPUT STYLE function ContentEditableInput(cm) { this.cm = cm; this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null; this.polling = new Delayed(); this.gracePeriod = false; } ContentEditableInput.prototype = copyObj({ init: function(display) { var input = this, cm = input.cm; var div = input.div = display.lineDiv; disableBrowserMagic(div, cm.options.spellcheck); on(div, "paste", function(e) { if (signalDOMEvent(cm, e) || handlePaste(e, cm)) return // IE doesn't fire input events, so we schedule a read for the pasted content in this way if (ie_version <= 11) setTimeout(operation(cm, function() { if (!input.pollContent()) regChange(cm); }), 20) }) on(div, "compositionstart", function(e) { var data = e.data; input.composing = {sel: cm.doc.sel, data: data, startData: data}; if (!data) return; var prim = cm.doc.sel.primary(); var line = cm.getLine(prim.head.line); var found = line.indexOf(data, Math.max(0, prim.head.ch - data.length)); if (found > -1 && found <= prim.head.ch) input.composing.sel = simpleSelection(Pos(prim.head.line, found), Pos(prim.head.line, found + data.length)); }); on(div, "compositionupdate", function(e) { input.composing.data = e.data; }); on(div, "compositionend", function(e) { var ours = input.composing; if (!ours) return; if (e.data != ours.startData && !/\u200b/.test(e.data)) ours.data = e.data; // Need a small delay to prevent other code (input event, // selection polling) from doing damage when fired right after // compositionend. setTimeout(function() { if (!ours.handled) input.applyComposition(ours); if (input.composing == ours) input.composing = null; }, 50); }); on(div, "touchstart", function() { input.forceCompositionEnd(); }); on(div, "input", function() { if (input.composing) return; if (cm.isReadOnly() || !input.pollContent()) runInOp(input.cm, function() {regChange(cm);}); }); function onCopyCut(e) { if (signalDOMEvent(cm, e)) return if (cm.somethingSelected()) { lastCopied = {lineWise: false, text: cm.getSelections()}; if (e.type == "cut") cm.replaceSelection("", null, "cut"); } else if (!cm.options.lineWiseCopyCut) { return; } else { var ranges = copyableRanges(cm); lastCopied = {lineWise: true, text: ranges.text}; if (e.type == "cut") { cm.operation(function() { cm.setSelections(ranges.ranges, 0, sel_dontScroll); cm.replaceSelection("", null, "cut"); }); } } if (e.clipboardData) { e.clipboardData.clearData(); var content = lastCopied.text.join("\n") // iOS exposes the clipboard API, but seems to discard content inserted into it e.clipboardData.setData("Text", content); if (e.clipboardData.getData("Text") == content) { e.preventDefault(); return } } // Old-fashioned briefly-focus-a-textarea hack var kludge = hiddenTextarea(), te = kludge.firstChild; cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild); te.value = lastCopied.text.join("\n"); var hadFocus = document.activeElement; selectInput(te); setTimeout(function() { cm.display.lineSpace.removeChild(kludge); hadFocus.focus(); if (hadFocus == div) input.showPrimarySelection() }, 50); } on(div, "copy", onCopyCut); on(div, "cut", onCopyCut); }, prepareSelection: function() { var result = prepareSelection(this.cm, false); result.focus = this.cm.state.focused; return result; }, showSelection: function(info, takeFocus) { if (!info || !this.cm.display.view.length) return; if (info.focus || takeFocus) this.showPrimarySelection(); this.showMultipleSelections(info); }, showPrimarySelection: function() { var sel = window.getSelection(), prim = this.cm.doc.sel.primary(); var curAnchor = domToPos(this.cm, sel.anchorNode, sel.anchorOffset); var curFocus = domToPos(this.cm, sel.focusNode, sel.focusOffset); if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && cmp(minPos(curAnchor, curFocus), prim.from()) == 0 && cmp(maxPos(curAnchor, curFocus), prim.to()) == 0) return; var start = posToDOM(this.cm, prim.from()); var end = posToDOM(this.cm, prim.to()); if (!start && !end) return; var view = this.cm.display.view; var old = sel.rangeCount && sel.getRangeAt(0); if (!start) { start = {node: view[0].measure.map[2], offset: 0}; } else if (!end) { // FIXME dangerously hacky var measure = view[view.length - 1].measure; var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map; end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]}; } try { var rng = range(start.node, start.offset, end.offset, end.node); } catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible if (rng) { if (!gecko && this.cm.state.focused) { sel.collapse(start.node, start.offset); if (!rng.collapsed) sel.addRange(rng); } else { sel.removeAllRanges(); sel.addRange(rng); } if (old && sel.anchorNode == null) sel.addRange(old); else if (gecko) this.startGracePeriod(); } this.rememberSelection(); }, startGracePeriod: function() { var input = this; clearTimeout(this.gracePeriod); this.gracePeriod = setTimeout(function() { input.gracePeriod = false; if (input.selectionChanged()) input.cm.operation(function() { input.cm.curOp.selectionChanged = true; }); }, 20); }, showMultipleSelections: function(info) { removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors); removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection); }, rememberSelection: function() { var sel = window.getSelection(); this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset; this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset; }, selectionInEditor: function() { var sel = window.getSelection(); if (!sel.rangeCount) return false; var node = sel.getRangeAt(0).commonAncestorContainer; return contains(this.div, node); }, focus: function() { if (this.cm.options.readOnly != "nocursor") this.div.focus(); }, blur: function() { this.div.blur(); }, getField: function() { return this.div; }, supportsTouch: function() { return true; }, receivedFocus: function() { var input = this; if (this.selectionInEditor()) this.pollSelection(); else runInOp(this.cm, function() { input.cm.curOp.selectionChanged = true; }); function poll() { if (input.cm.state.focused) { input.pollSelection(); input.polling.set(input.cm.options.pollInterval, poll); } } this.polling.set(this.cm.options.pollInterval, poll); }, selectionChanged: function() { var sel = window.getSelection(); return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset; }, pollSelection: function() { if (!this.composing && !this.gracePeriod && this.selectionChanged()) { var sel = window.getSelection(), cm = this.cm; this.rememberSelection(); var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset); var head = domToPos(cm, sel.focusNode, sel.focusOffset); if (anchor && head) runInOp(cm, function() { setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll); if (anchor.bad || head.bad) cm.curOp.selectionChanged = true; }); } }, pollContent: function() { var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary(); var from = sel.from(), to = sel.to(); if (from.line < display.viewFrom || to.line > display.viewTo - 1) return false; var fromIndex; if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) { var fromLine = lineNo(display.view[0].line); var fromNode = display.view[0].node; } else { var fromLine = lineNo(display.view[fromIndex].line); var fromNode = display.view[fromIndex - 1].node.nextSibling; } var toIndex = findViewIndex(cm, to.line); if (toIndex == display.view.length - 1) { var toLine = display.viewTo - 1; var toNode = display.lineDiv.lastChild; } else { var toLine = lineNo(display.view[toIndex + 1].line) - 1; var toNode = display.view[toIndex + 1].node.previousSibling; } var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine)); var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length)); while (newText.length > 1 && oldText.length > 1) { if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; } else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; } else break; } var cutFront = 0, cutEnd = 0; var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length); while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) ++cutFront; var newBot = lst(newText), oldBot = lst(oldText); var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), oldBot.length - (oldText.length == 1 ? cutFront : 0)); while (cutEnd < maxCutEnd && newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) ++cutEnd; newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd); newText[0] = newText[0].slice(cutFront); var chFrom = Pos(fromLine, cutFront); var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0); if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) { replaceRange(cm.doc, newText, chFrom, chTo, "+input"); return true; } }, ensurePolled: function() { this.forceCompositionEnd(); }, reset: function() { this.forceCompositionEnd(); }, forceCompositionEnd: function() { if (!this.composing || this.composing.handled) return; this.applyComposition(this.composing); this.composing.handled = true; this.div.blur(); this.div.focus(); }, applyComposition: function(composing) { if (this.cm.isReadOnly()) operation(this.cm, regChange)(this.cm) else if (composing.data && composing.data != composing.startData) operation(this.cm, applyTextInput)(this.cm, composing.data, 0, composing.sel); }, setUneditable: function(node) { node.contentEditable = "false" }, onKeyPress: function(e) { e.preventDefault(); if (!this.cm.isReadOnly()) operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }, readOnlyChanged: function(val) { this.div.contentEditable = String(val != "nocursor") }, onContextMenu: nothing, resetPosition: nothing, needsContentAttribute: true }, ContentEditableInput.prototype); function posToDOM(cm, pos) { var view = findViewForLine(cm, pos.line); if (!view || view.hidden) return null; var line = getLine(cm.doc, pos.line); var info = mapFromLineView(view, line, pos.line); var order = getOrder(line), side = "left"; if (order) { var partPos = getBidiPartAt(order, pos.ch); side = partPos % 2 ? "right" : "left"; } var result = nodeAndOffsetInLineMap(info.map, pos.ch, side); result.offset = result.collapse == "right" ? result.end : result.start; return result; } function badPos(pos, bad) { if (bad) pos.bad = true; return pos; } function domToPos(cm, node, offset) { var lineNode; if (node == cm.display.lineDiv) { lineNode = cm.display.lineDiv.childNodes[offset]; if (!lineNode) return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true); node = null; offset = 0; } else { for (lineNode = node;; lineNode = lineNode.parentNode) { if (!lineNode || lineNode == cm.display.lineDiv) return null; if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) break; } } for (var i = 0; i < cm.display.view.length; i++) { var lineView = cm.display.view[i]; if (lineView.node == lineNode) return locateNodeInLineView(lineView, node, offset); } } function locateNodeInLineView(lineView, node, offset) { var wrapper = lineView.text.firstChild, bad = false; if (!node || !contains(wrapper, node)) return badPos(Pos(lineNo(lineView.line), 0), true); if (node == wrapper) { bad = true; node = wrapper.childNodes[offset]; offset = 0; if (!node) { var line = lineView.rest ? lst(lineView.rest) : lineView.line; return badPos(Pos(lineNo(line), line.text.length), bad); } } var textNode = node.nodeType == 3 ? node : null, topNode = node; if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) { textNode = node.firstChild; if (offset) offset = textNode.nodeValue.length; } while (topNode.parentNode != wrapper) topNode = topNode.parentNode; var measure = lineView.measure, maps = measure.maps; function find(textNode, topNode, offset) { for (var i = -1; i < (maps ? maps.length : 0); i++) { var map = i < 0 ? measure.map : maps[i]; for (var j = 0; j < map.length; j += 3) { var curNode = map[j + 2]; if (curNode == textNode || curNode == topNode) { var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]); var ch = map[j] + offset; if (offset < 0 || curNode != textNode) ch = map[j + (offset ? 1 : 0)]; return Pos(line, ch); } } } } var found = find(textNode, topNode, offset); if (found) return badPos(found, bad); // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) { found = find(after, after.firstChild, 0); if (found) return badPos(Pos(found.line, found.ch - dist), bad); else dist += after.textContent.length; } for (var before = topNode.previousSibling, dist = offset; before; before = before.previousSibling) { found = find(before, before.firstChild, -1); if (found) return badPos(Pos(found.line, found.ch + dist), bad); else dist += before.textContent.length; } } function domTextBetween(cm, from, to, fromLine, toLine) { var text = "", closing = false, lineSep = cm.doc.lineSeparator(); function recognizeMarker(id) { return function(marker) { return marker.id == id; }; } function walk(node) { if (node.nodeType == 1) { var cmText = node.getAttribute("cm-text"); if (cmText != null) { if (cmText == "") cmText = node.textContent.replace(/\u200b/g, ""); text += cmText; return; } var markerID = node.getAttribute("cm-marker"), range; if (markerID) { var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID)); if (found.length && (range = found[0].find())) text += getBetween(cm.doc, range.from, range.to).join(lineSep); return; } if (node.getAttribute("contenteditable") == "false") return; for (var i = 0; i < node.childNodes.length; i++) walk(node.childNodes[i]); if (/^(pre|div|p)$/i.test(node.nodeName)) closing = true; } else if (node.nodeType == 3) { var val = node.nodeValue; if (!val) return; if (closing) { text += lineSep; closing = false; } text += val; } } for (;;) { walk(from); if (from == to) break; from = from.nextSibling; } return text; } CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput}; // SELECTION / CURSOR // Selection objects are immutable. A new one is created every time // the selection changes. A selection is one or more non-overlapping // (and non-touching) ranges, sorted, and an integer that indicates // which one is the primary selection (the one that's scrolled into // view, that getCursor returns, etc). function Selection(ranges, primIndex) { this.ranges = ranges; this.primIndex = primIndex; } Selection.prototype = { primary: function() { return this.ranges[this.primIndex]; }, equals: function(other) { if (other == this) return true; if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false; for (var i = 0; i < this.ranges.length; i++) { var here = this.ranges[i], there = other.ranges[i]; if (cmp(here.anchor, there.anchor) != 0 || cmp(here.head, there.head) != 0) return false; } return true; }, deepCopy: function() { for (var out = [], i = 0; i < this.ranges.length; i++) out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); return new Selection(out, this.primIndex); }, somethingSelected: function() { for (var i = 0; i < this.ranges.length; i++) if (!this.ranges[i].empty()) return true; return false; }, contains: function(pos, end) { if (!end) end = pos; for (var i = 0; i < this.ranges.length; i++) { var range = this.ranges[i]; if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) return i; } return -1; } }; function Range(anchor, head) { this.anchor = anchor; this.head = head; } Range.prototype = { from: function() { return minPos(this.anchor, this.head); }, to: function() { return maxPos(this.anchor, this.head); }, empty: function() { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch; } }; // Take an unsorted, potentially overlapping set of ranges, and // build a selection out of it. 'Consumes' ranges array (modifying // it). function normalizeSelection(ranges, primIndex) { var prim = ranges[primIndex]; ranges.sort(function(a, b) { return cmp(a.from(), b.from()); }); primIndex = indexOf(ranges, prim); for (var i = 1; i < ranges.length; i++) { var cur = ranges[i], prev = ranges[i - 1]; if (cmp(prev.to(), cur.from()) >= 0) { var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; if (i <= primIndex) --primIndex; ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); } } return new Selection(ranges, primIndex); } function simpleSelection(anchor, head) { return new Selection([new Range(anchor, head || anchor)], 0); } // Most of the external API clips given positions to make sure they // actually exist within the document. function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));} function clipPos(doc, pos) { if (pos.line < doc.first) return Pos(doc.first, 0); var last = doc.first + doc.size - 1; if (pos.line > last) return Pos(last, getLine(doc, last).text.length); return clipToLen(pos, getLine(doc, pos.line).text.length); } function clipToLen(pos, linelen) { var ch = pos.ch; if (ch == null || ch > linelen) return Pos(pos.line, linelen); else if (ch < 0) return Pos(pos.line, 0); else return pos; } function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size;} function clipPosArray(doc, array) { for (var out = [], i = 0; i < array.length; i++) out[i] = clipPos(doc, array[i]); return out; } // SELECTION UPDATES // The 'scroll' parameter given to many of these indicated whether // the new cursor position should be scrolled into view after // modifying the selection. // If shift is held or the extend flag is set, extends a range to // include a given position (and optionally a second position). // Otherwise, simply returns the range between the given positions. // Used for cursor motion and such. function extendRange(doc, range, head, other) { if (doc.cm && doc.cm.display.shift || doc.extend) { var anchor = range.anchor; if (other) { var posBefore = cmp(head, anchor) < 0; if (posBefore != (cmp(other, anchor) < 0)) { anchor = head; head = other; } else if (posBefore != (cmp(head, other) < 0)) { head = other; } } return new Range(anchor, head); } else { return new Range(other || head, head); } } // Extend the primary selection range, discard the rest. function extendSelection(doc, head, other, options) { setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options); } // Extend all selections (pos is an array of selections with length // equal the number of selections) function extendSelections(doc, heads, options) { for (var out = [], i = 0; i < doc.sel.ranges.length; i++) out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null); var newSel = normalizeSelection(out, doc.sel.primIndex); setSelection(doc, newSel, options); } // Updates a single range in the selection. function replaceOneSelection(doc, i, range, options) { var ranges = doc.sel.ranges.slice(0); ranges[i] = range; setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options); } // Reset the selection to a single range. function setSimpleSelection(doc, anchor, head, options) { setSelection(doc, simpleSelection(anchor, head), options); } // Give beforeSelectionChange handlers a change to influence a // selection update. function filterSelectionChange(doc, sel, options) { var obj = { ranges: sel.ranges, update: function(ranges) { this.ranges = []; for (var i = 0; i < ranges.length; i++) this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), clipPos(doc, ranges[i].head)); }, origin: options && options.origin }; signal(doc, "beforeSelectionChange", doc, obj); if (doc.cm) signal(doc.cm, "beforeSelectionChange", doc.cm, obj); if (obj.ranges != sel.ranges) return normalizeSelection(obj.ranges, obj.ranges.length - 1); else return sel; } function setSelectionReplaceHistory(doc, sel, options) { var done = doc.history.done, last = lst(done); if (last && last.ranges) { done[done.length - 1] = sel; setSelectionNoUndo(doc, sel, options); } else { setSelection(doc, sel, options); } } // Set a new selection. function setSelection(doc, sel, options) { setSelectionNoUndo(doc, sel, options); addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options); } function setSelectionNoUndo(doc, sel, options) { if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) sel = filterSelectionChange(doc, sel, options); var bias = options && options.bias || (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1); setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)); if (!(options && options.scroll === false) && doc.cm) ensureCursorVisible(doc.cm); } function setSelectionInner(doc, sel) { if (sel.equals(doc.sel)) return; doc.sel = sel; if (doc.cm) { doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true; signalCursorActivity(doc.cm); } signalLater(doc, "cursorActivity", doc); } // Verify that the selection does not partially select any atomic // marked ranges. function reCheckSelection(doc) { setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll); } // Return a selection that does not partially select any atomic // ranges. function skipAtomicInSelection(doc, sel, bias, mayClear) { var out; for (var i = 0; i < sel.ranges.length; i++) { var range = sel.ranges[i]; var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i]; var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear); var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear); if (out || newAnchor != range.anchor || newHead != range.head) { if (!out) out = sel.ranges.slice(0, i); out[i] = new Range(newAnchor, newHead); } } return out ? normalizeSelection(out, sel.primIndex) : sel; } function skipAtomicInner(doc, pos, oldPos, dir, mayClear) { var line = getLine(doc, pos.line); if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) { var sp = line.markedSpans[i], m = sp.marker; if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) { if (mayClear) { signal(m, "beforeCursorEnter"); if (m.explicitlyCleared) { if (!line.markedSpans) break; else {--i; continue;} } } if (!m.atomic) continue; if (oldPos) { var near = m.find(dir < 0 ? 1 : -1), diff; if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft) near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) return skipAtomicInner(doc, near, pos, dir, mayClear); } var far = m.find(dir < 0 ? -1 : 1); if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight) far = movePos(doc, far, dir, far.line == pos.line ? line : null); return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null; } } return pos; } // Ensure a given position is not inside an atomic range. function skipAtomic(doc, pos, oldPos, bias, mayClear) { var dir = bias || 1; var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) || skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true)); if (!found) { doc.cantEdit = true; return Pos(doc.first, 0); } return found; } function movePos(doc, pos, dir, line) { if (dir < 0 && pos.ch == 0) { if (pos.line > doc.first) return clipPos(doc, Pos(pos.line - 1)); else return null; } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) { if (pos.line < doc.first + doc.size - 1) return Pos(pos.line + 1, 0); else return null; } else { return new Pos(pos.line, pos.ch + dir); } } // SELECTION DRAWING function updateSelection(cm) { cm.display.input.showSelection(cm.display.input.prepareSelection()); } function prepareSelection(cm, primary) { var doc = cm.doc, result = {}; var curFragment = result.cursors = document.createDocumentFragment(); var selFragment = result.selection = document.createDocumentFragment(); for (var i = 0; i < doc.sel.ranges.length; i++) { if (primary === false && i == doc.sel.primIndex) continue; var range = doc.sel.ranges[i]; if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) continue; var collapsed = range.empty(); if (collapsed || cm.options.showCursorWhenSelecting) drawSelectionCursor(cm, range.head, curFragment); if (!collapsed) drawSelectionRange(cm, range, selFragment); } return result; } // Draws a cursor for the given range function drawSelectionCursor(cm, head, output) { var pos = cursorCoords(cm, head, "div", null, null, !cm.options.singleCursorHeightPerLine); var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")); cursor.style.left = pos.left + "px"; cursor.style.top = pos.top + "px"; cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px"; if (pos.other) { // Secondary cursor, shown when on a 'jump' in bi-directional text var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")); otherCursor.style.display = ""; otherCursor.style.left = pos.other.left + "px"; otherCursor.style.top = pos.other.top + "px"; otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px"; } } // Draws the given range as a highlighted selection function drawSelectionRange(cm, range, output) { var display = cm.display, doc = cm.doc; var fragment = document.createDocumentFragment(); var padding = paddingH(cm.display), leftSide = padding.left; var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right; function add(left, top, width, bottom) { if (top < 0) top = 0; top = Math.round(top); bottom = Math.round(bottom); fragment.appendChild(elt("div", null, "CodeMirror-selected", "position: absolute; left: " + left + "px; top: " + top + "px; width: " + (width == null ? rightSide - left : width) + "px; height: " + (bottom - top) + "px")); } function drawForLine(line, fromArg, toArg) { var lineObj = getLine(doc, line); var lineLen = lineObj.text.length; var start, end; function coords(ch, bias) { return charCoords(cm, Pos(line, ch), "div", lineObj, bias); } iterateBidiSections(getOrder(lineObj), fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir) { var leftPos = coords(from, "left"), rightPos, left, right; if (from == to) { rightPos = leftPos; left = right = leftPos.left; } else { rightPos = coords(to - 1, "right"); if (dir == "rtl") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; } left = leftPos.left; right = rightPos.right; } if (fromArg == null && from == 0) left = leftSide; if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part add(left, leftPos.top, null, leftPos.bottom); left = leftSide; if (leftPos.bottom < rightPos.top) add(left, leftPos.bottom, null, rightPos.top); } if (toArg == null && to == lineLen) right = rightSide; if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left) start = leftPos; if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right) end = rightPos; if (left < leftSide + 1) left = leftSide; add(left, rightPos.top, right - left, rightPos.bottom); }); return {start: start, end: end}; } var sFrom = range.from(), sTo = range.to(); if (sFrom.line == sTo.line) { drawForLine(sFrom.line, sFrom.ch, sTo.ch); } else { var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line); var singleVLine = visualLine(fromLine) == visualLine(toLine); var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end; var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start; if (singleVLine) { if (leftEnd.top < rightStart.top - 2) { add(leftEnd.right, leftEnd.top, null, leftEnd.bottom); add(leftSide, rightStart.top, rightStart.left, rightStart.bottom); } else { add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom); } } if (leftEnd.bottom < rightStart.top) add(leftSide, leftEnd.bottom, null, rightStart.top); } output.appendChild(fragment); } // Cursor-blinking function restartBlink(cm) { if (!cm.state.focused) return; var display = cm.display; clearInterval(display.blinker); var on = true; display.cursorDiv.style.visibility = ""; if (cm.options.cursorBlinkRate > 0) display.blinker = setInterval(function() { display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; }, cm.options.cursorBlinkRate); else if (cm.options.cursorBlinkRate < 0) display.cursorDiv.style.visibility = "hidden"; } // HIGHLIGHT WORKER function startWorker(cm, time) { if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo) cm.state.highlight.set(time, bind(highlightWorker, cm)); } function highlightWorker(cm) { var doc = cm.doc; if (doc.frontier < doc.first) doc.frontier = doc.first; if (doc.frontier >= cm.display.viewTo) return; var end = +new Date + cm.options.workTime; var state = copyState(doc.mode, getStateBefore(cm, doc.frontier)); var changedLines = []; doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) { if (doc.frontier >= cm.display.viewFrom) { // Visible var oldStyles = line.styles, tooLong = line.text.length > cm.options.maxHighlightLength; var highlighted = highlightLine(cm, line, tooLong ? copyState(doc.mode, state) : state, true); line.styles = highlighted.styles; var oldCls = line.styleClasses, newCls = highlighted.classes; if (newCls) line.styleClasses = newCls; else if (oldCls) line.styleClasses = null; var ischange = !oldStyles || oldStyles.length != line.styles.length || oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass); for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i]; if (ischange) changedLines.push(doc.frontier); line.stateAfter = tooLong ? state : copyState(doc.mode, state); } else { if (line.text.length <= cm.options.maxHighlightLength) processLine(cm, line.text, state); line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null; } ++doc.frontier; if (+new Date > end) { startWorker(cm, cm.options.workDelay); return true; } }); if (changedLines.length) runInOp(cm, function() { for (var i = 0; i < changedLines.length; i++) regLineChange(cm, changedLines[i], "text"); }); } // Finds the line to start with when starting a parse. Tries to // find a line with a stateAfter, so that it can start with a // valid state. If that fails, it returns the line with the // smallest indentation, which tends to need the least context to // parse correctly. function findStartLine(cm, n, precise) { var minindent, minline, doc = cm.doc; var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100); for (var search = n; search > lim; --search) { if (search <= doc.first) return doc.first; var line = getLine(doc, search - 1); if (line.stateAfter && (!precise || search <= doc.frontier)) return search; var indented = countColumn(line.text, null, cm.options.tabSize); if (minline == null || minindent > indented) { minline = search - 1; minindent = indented; } } return minline; } function getStateBefore(cm, n, precise) { var doc = cm.doc, display = cm.display; if (!doc.mode.startState) return true; var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter; if (!state) state = startState(doc.mode); else state = copyState(doc.mode, state); doc.iter(pos, n, function(line) { processLine(cm, line.text, state); var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo; line.stateAfter = save ? copyState(doc.mode, state) : null; ++pos; }); if (precise) doc.frontier = pos; return state; } // POSITION MEASUREMENT function paddingTop(display) {return display.lineSpace.offsetTop;} function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight;} function paddingH(display) { if (display.cachedPaddingH) return display.cachedPaddingH; var e = removeChildrenAndAdd(display.measure, elt("pre", "x")); var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle; var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)}; if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data; return data; } function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth; } function displayWidth(cm) { return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth; } function displayHeight(cm) { return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight; } // Ensure the lineView.wrapping.heights array is populated. This is // an array of bottom offsets for the lines that make up a drawn // line. When lineWrapping is on, there might be more than one // height. function ensureLineHeights(cm, lineView, rect) { var wrapping = cm.options.lineWrapping; var curWidth = wrapping && displayWidth(cm); if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { var heights = lineView.measure.heights = []; if (wrapping) { lineView.measure.width = curWidth; var rects = lineView.text.firstChild.getClientRects(); for (var i = 0; i < rects.length - 1; i++) { var cur = rects[i], next = rects[i + 1]; if (Math.abs(cur.bottom - next.bottom) > 2) heights.push((cur.bottom + next.top) / 2 - rect.top); } } heights.push(rect.bottom - rect.top); } } // Find a line map (mapping character offsets to text nodes) and a // measurement cache for the given line number. (A line view might // contain multiple lines when collapsed ranges are present.) function mapFromLineView(lineView, line, lineN) { if (lineView.line == line) return {map: lineView.measure.map, cache: lineView.measure.cache}; for (var i = 0; i < lineView.rest.length; i++) if (lineView.rest[i] == line) return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]}; for (var i = 0; i < lineView.rest.length; i++) if (lineNo(lineView.rest[i]) > lineN) return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true}; } // Render a line into the hidden node display.externalMeasured. Used // when measurement is needed for a line that's not in the viewport. function updateExternalMeasurement(cm, line) { line = visualLine(line); var lineN = lineNo(line); var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN); view.lineN = lineN; var built = view.built = buildLineContent(cm, view); view.text = built.pre; removeChildrenAndAdd(cm.display.lineMeasure, built.pre); return view; } // Get a {top, bottom, left, right} box (in line-local coordinates) // for a given character. function measureChar(cm, line, ch, bias) { return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias); } // Find a line view that corresponds to the given line number. function findViewForLine(cm, lineN) { if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) return cm.display.view[findViewIndex(cm, lineN)]; var ext = cm.display.externalMeasured; if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) return ext; } // Measurement can be split in two steps, the set-up work that // applies to the whole line, and the measurement of the actual // character. Functions like coordsChar, that need to do a lot of // measurements in a row, can thus ensure that the set-up work is // only done once. function prepareMeasureForLine(cm, line) { var lineN = lineNo(line); var view = findViewForLine(cm, lineN); if (view && !view.text) { view = null; } else if (view && view.changes) { updateLineForChanges(cm, view, lineN, getDimensions(cm)); cm.curOp.forceUpdate = true; } if (!view) view = updateExternalMeasurement(cm, line); var info = mapFromLineView(view, line, lineN); return { line: line, view: view, rect: null, map: info.map, cache: info.cache, before: info.before, hasHeights: false }; } // Given a prepared measurement object, measures the position of an // actual character (or fetches it from the cache). function measureCharPrepared(cm, prepared, ch, bias, varHeight) { if (prepared.before) ch = -1; var key = ch + (bias || ""), found; if (prepared.cache.hasOwnProperty(key)) { found = prepared.cache[key]; } else { if (!prepared.rect) prepared.rect = prepared.view.text.getBoundingClientRect(); if (!prepared.hasHeights) { ensureLineHeights(cm, prepared.view, prepared.rect); prepared.hasHeights = true; } found = measureCharInner(cm, prepared, ch, bias); if (!found.bogus) prepared.cache[key] = found; } return {left: found.left, right: found.right, top: varHeight ? found.rtop : found.top, bottom: varHeight ? found.rbottom : found.bottom}; } var nullRect = {left: 0, right: 0, top: 0, bottom: 0}; function nodeAndOffsetInLineMap(map, ch, bias) { var node, start, end, collapse; // First, search the line map for the text node corresponding to, // or closest to, the target character. for (var i = 0; i < map.length; i += 3) { var mStart = map[i], mEnd = map[i + 1]; if (ch < mStart) { start = 0; end = 1; collapse = "left"; } else if (ch < mEnd) { start = ch - mStart; end = start + 1; } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { end = mEnd - mStart; start = end - 1; if (ch >= mEnd) collapse = "right"; } if (start != null) { node = map[i + 2]; if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) collapse = bias; if (bias == "left" && start == 0) while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { node = map[(i -= 3) + 2]; collapse = "left"; } if (bias == "right" && start == mEnd - mStart) while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { node = map[(i += 3) + 2]; collapse = "right"; } break; } } return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}; } function getUsefulRect(rects, bias) { var rect = nullRect if (bias == "left") for (var i = 0; i < rects.length; i++) { if ((rect = rects[i]).left != rect.right) break } else for (var i = rects.length - 1; i >= 0; i--) { if ((rect = rects[i]).left != rect.right) break } return rect } function measureCharInner(cm, prepared, ch, bias) { var place = nodeAndOffsetInLineMap(prepared.map, ch, bias); var node = place.node, start = place.start, end = place.end, collapse = place.collapse; var rect; if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. for (var i = 0; i < 4; i++) { // Retry a maximum of 4 times when nonsense rectangles are returned while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) --start; while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) ++end; if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) rect = node.parentNode.getBoundingClientRect(); else rect = getUsefulRect(range(node, start, end).getClientRects(), bias) if (rect.left || rect.right || start == 0) break; end = start; start = start - 1; collapse = "right"; } if (ie && ie_version < 11) rect = maybeUpdateRectForZooming(cm.display.measure, rect); } else { // If it is a widget, simply get the box for the whole widget. if (start > 0) collapse = bias = "right"; var rects; if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) rect = rects[bias == "right" ? rects.length - 1 : 0]; else rect = node.getBoundingClientRect(); } if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) { var rSpan = node.parentNode.getClientRects()[0]; if (rSpan) rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; else rect = nullRect; } var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top; var mid = (rtop + rbot) / 2; var heights = prepared.view.measure.heights; for (var i = 0; i < heights.length - 1; i++) if (mid < heights[i]) break; var top = i ? heights[i - 1] : 0, bot = heights[i]; var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, top: top, bottom: bot}; if (!rect.left && !rect.right) result.bogus = true; if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; } return result; } // Work around problem with bounding client rects on ranges being // returned incorrectly when zoomed on IE10 and below. function maybeUpdateRectForZooming(measure, rect) { if (!window.screen || screen.logicalXDPI == null || screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) return rect; var scaleX = screen.logicalXDPI / screen.deviceXDPI; var scaleY = screen.logicalYDPI / screen.deviceYDPI; return {left: rect.left * scaleX, right: rect.right * scaleX, top: rect.top * scaleY, bottom: rect.bottom * scaleY}; } function clearLineMeasurementCacheFor(lineView) { if (lineView.measure) { lineView.measure.cache = {}; lineView.measure.heights = null; if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) lineView.measure.caches[i] = {}; } } function clearLineMeasurementCache(cm) { cm.display.externalMeasure = null; removeChildren(cm.display.lineMeasure); for (var i = 0; i < cm.display.view.length; i++) clearLineMeasurementCacheFor(cm.display.view[i]); } function clearCaches(cm) { clearLineMeasurementCache(cm); cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null; if (!cm.options.lineWrapping) cm.display.maxLineChanged = true; cm.display.lineNumChars = null; } function pageScrollX() { return window.pageXOffset || (document.documentElement || document.body).scrollLeft; } function pageScrollY() { return window.pageYOffset || (document.documentElement || document.body).scrollTop; } // Converts a {top, bottom, left, right} box from line-local // coordinates into another coordinate system. Context may be one of // "line", "div" (display.lineDiv), "local"/null (editor), "window", // or "page". function intoCoordSystem(cm, lineObj, rect, context) { if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) { var size = widgetHeight(lineObj.widgets[i]); rect.top += size; rect.bottom += size; } if (context == "line") return rect; if (!context) context = "local"; var yOff = heightAtLine(lineObj); if (context == "local") yOff += paddingTop(cm.display); else yOff -= cm.display.viewOffset; if (context == "page" || context == "window") { var lOff = cm.display.lineSpace.getBoundingClientRect(); yOff += lOff.top + (context == "window" ? 0 : pageScrollY()); var xOff = lOff.left + (context == "window" ? 0 : pageScrollX()); rect.left += xOff; rect.right += xOff; } rect.top += yOff; rect.bottom += yOff; return rect; } // Coverts a box from "div" coords to another coordinate system. // Context may be "window", "page", "div", or "local"/null. function fromCoordSystem(cm, coords, context) { if (context == "div") return coords; var left = coords.left, top = coords.top; // First move into "page" coordinate system if (context == "page") { left -= pageScrollX(); top -= pageScrollY(); } else if (context == "local" || !context) { var localBox = cm.display.sizer.getBoundingClientRect(); left += localBox.left; top += localBox.top; } var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect(); return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}; } function charCoords(cm, pos, context, lineObj, bias) { if (!lineObj) lineObj = getLine(cm.doc, pos.line); return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context); } // Returns a box for a given cursor position, which may have an // 'other' property containing the position of the secondary cursor // on a bidi boundary. function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) { lineObj = lineObj || getLine(cm.doc, pos.line); if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj); function get(ch, right) { var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight); if (right) m.left = m.right; else m.right = m.left; return intoCoordSystem(cm, lineObj, m, context); } function getBidi(ch, partPos) { var part = order[partPos], right = part.level % 2; if (ch == bidiLeft(part) && partPos && part.level < order[partPos - 1].level) { part = order[--partPos]; ch = bidiRight(part) - (part.level % 2 ? 0 : 1); right = true; } else if (ch == bidiRight(part) && partPos < order.length - 1 && part.level < order[partPos + 1].level) { part = order[++partPos]; ch = bidiLeft(part) - part.level % 2; right = false; } if (right && ch == part.to && ch > part.from) return get(ch - 1); return get(ch, right); } var order = getOrder(lineObj), ch = pos.ch; if (!order) return get(ch); var partPos = getBidiPartAt(order, ch); var val = getBidi(ch, partPos); if (bidiOther != null) val.other = getBidi(ch, bidiOther); return val; } // Used to cheaply estimate the coordinates for a position. Used for // intermediate scroll updates. function estimateCoords(cm, pos) { var left = 0, pos = clipPos(cm.doc, pos); if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch; var lineObj = getLine(cm.doc, pos.line); var top = heightAtLine(lineObj) + paddingTop(cm.display); return {left: left, right: left, top: top, bottom: top + lineObj.height}; } // Positions returned by coordsChar contain some extra information. // xRel is the relative x position of the input coordinates compared // to the found position (so xRel > 0 means the coordinates are to // the right of the character position, for example). When outside // is true, that means the coordinates lie outside the line's // vertical range. function PosWithInfo(line, ch, outside, xRel) { var pos = Pos(line, ch); pos.xRel = xRel; if (outside) pos.outside = true; return pos; } // Compute the character position closest to the given coordinates. // Input must be lineSpace-local ("div" coordinate system). function coordsChar(cm, x, y) { var doc = cm.doc; y += cm.display.viewOffset; if (y < 0) return PosWithInfo(doc.first, 0, true, -1); var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1; if (lineN > last) return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, true, 1); if (x < 0) x = 0; var lineObj = getLine(doc, lineN); for (;;) { var found = coordsCharInner(cm, lineObj, lineN, x, y); var merged = collapsedSpanAtEnd(lineObj); var mergedPos = merged && merged.find(0, true); if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0)) lineN = lineNo(lineObj = mergedPos.to.line); else return found; } } function coordsCharInner(cm, lineObj, lineNo, x, y) { var innerOff = y - heightAtLine(lineObj); var wrongLine = false, adjust = 2 * cm.display.wrapper.clientWidth; var preparedMeasure = prepareMeasureForLine(cm, lineObj); function getX(ch) { var sp = cursorCoords(cm, Pos(lineNo, ch), "line", lineObj, preparedMeasure); wrongLine = true; if (innerOff > sp.bottom) return sp.left - adjust; else if (innerOff < sp.top) return sp.left + adjust; else wrongLine = false; return sp.left; } var bidi = getOrder(lineObj), dist = lineObj.text.length; var from = lineLeft(lineObj), to = lineRight(lineObj); var fromX = getX(from), fromOutside = wrongLine, toX = getX(to), toOutside = wrongLine; if (x > toX) return PosWithInfo(lineNo, to, toOutside, 1); // Do a binary search between these bounds. for (;;) { if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) { var ch = x < fromX || x - fromX <= toX - x ? from : to; var outside = ch == from ? fromOutside : toOutside var xDiff = x - (ch == from ? fromX : toX); // This is a kludge to handle the case where the coordinates // are after a line-wrapped line. We should replace it with a // more general handling of cursor positions around line // breaks. (Issue #4078) if (toOutside && !bidi && !/\s/.test(lineObj.text.charAt(ch)) && xDiff > 0 && ch < lineObj.text.length && preparedMeasure.view.measure.heights.length > 1) { var charSize = measureCharPrepared(cm, preparedMeasure, ch, "right"); if (innerOff <= charSize.bottom && innerOff >= charSize.top && Math.abs(x - charSize.right) < xDiff) { outside = false ch++ xDiff = x - charSize.right } } while (isExtendingChar(lineObj.text.charAt(ch))) ++ch; var pos = PosWithInfo(lineNo, ch, outside, xDiff < -1 ? -1 : xDiff > 1 ? 1 : 0); return pos; } var step = Math.ceil(dist / 2), middle = from + step; if (bidi) { middle = from; for (var i = 0; i < step; ++i) middle = moveVisually(lineObj, middle, 1); } var middleX = getX(middle); if (middleX > x) {to = middle; toX = middleX; if (toOutside = wrongLine) toX += 1000; dist = step;} else {from = middle; fromX = middleX; fromOutside = wrongLine; dist -= step;} } } var measureText; // Compute the default text height. function textHeight(display) { if (display.cachedTextHeight != null) return display.cachedTextHeight; if (measureText == null) { measureText = elt("pre"); // Measure a bunch of lines, for browsers that compute // fractional heights. for (var i = 0; i < 49; ++i) { measureText.appendChild(document.createTextNode("x")); measureText.appendChild(elt("br")); } measureText.appendChild(document.createTextNode("x")); } removeChildrenAndAdd(display.measure, measureText); var height = measureText.offsetHeight / 50; if (height > 3) display.cachedTextHeight = height; removeChildren(display.measure); return height || 1; } // Compute the default character width. function charWidth(display) { if (display.cachedCharWidth != null) return display.cachedCharWidth; var anchor = elt("span", "xxxxxxxxxx"); var pre = elt("pre", [anchor]); removeChildrenAndAdd(display.measure, pre); var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10; if (width > 2) display.cachedCharWidth = width; return width || 10; } // OPERATIONS // Operations are used to wrap a series of changes to the editor // state in such a way that each change won't have to update the // cursor and display (which would be awkward, slow, and // error-prone). Instead, display updates are batched and then all // combined and executed at once. var operationGroup = null; var nextOpId = 0; // Start a new operation. function startOperation(cm) { cm.curOp = { cm: cm, viewChanged: false, // Flag that indicates that lines might need to be redrawn startHeight: cm.doc.height, // Used to detect need to update scrollbar forceUpdate: false, // Used to force a redraw updateInput: null, // Whether to reset the input textarea typing: false, // Whether this reset should be careful to leave existing text (for compositing) changeObjs: null, // Accumulated changes, for firing change events cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already selectionChanged: false, // Whether the selection needs to be redrawn updateMaxLine: false, // Set when the widest line needs to be determined anew scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet scrollToPos: null, // Used to scroll to a specific position focus: false, id: ++nextOpId // Unique ID }; if (operationGroup) { operationGroup.ops.push(cm.curOp); } else { cm.curOp.ownsGroup = operationGroup = { ops: [cm.curOp], delayedCallbacks: [] }; } } function fireCallbacksForOps(group) { // Calls delayed callbacks and cursorActivity handlers until no // new ones appear var callbacks = group.delayedCallbacks, i = 0; do { for (; i < callbacks.length; i++) callbacks[i].call(null); for (var j = 0; j < group.ops.length; j++) { var op = group.ops[j]; if (op.cursorActivityHandlers) while (op.cursorActivityCalled < op.cursorActivityHandlers.length) op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } } while (i < callbacks.length); } // Finish an operation, updating the display and signalling delayed events function endOperation(cm) { var op = cm.curOp, group = op.ownsGroup; if (!group) return; try { fireCallbacksForOps(group); } finally { operationGroup = null; for (var i = 0; i < group.ops.length; i++) group.ops[i].cm.curOp = null; endOperations(group); } } // The DOM updates done when an operation finishes are batched so // that the minimum number of relayouts are required. function endOperations(group) { var ops = group.ops; for (var i = 0; i < ops.length; i++) // Read DOM endOperation_R1(ops[i]); for (var i = 0; i < ops.length; i++) // Write DOM (maybe) endOperation_W1(ops[i]); for (var i = 0; i < ops.length; i++) // Read DOM endOperation_R2(ops[i]); for (var i = 0; i < ops.length; i++) // Write DOM (maybe) endOperation_W2(ops[i]); for (var i = 0; i < ops.length; i++) // Read DOM endOperation_finish(ops[i]); } function endOperation_R1(op) { var cm = op.cm, display = cm.display; maybeClipScrollbars(cm); if (op.updateMaxLine) findMaxLine(cm); op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || op.scrollToPos.to.line >= display.viewTo) || display.maxLineChanged && cm.options.lineWrapping; op.update = op.mustUpdate && new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate); } function endOperation_W1(op) { op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update); } function endOperation_R2(op) { var cm = op.cm, display = cm.display; if (op.updatedDisplay) updateHeightsInViewport(cm); op.barMeasure = measureForScrollbars(cm); // If the max line changed since it was last measured, measure it, // and ensure the document's width matches it. // updateDisplay_W2 will use these properties to do the actual resizing if (display.maxLineChanged && !cm.options.lineWrapping) { op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3; cm.display.sizerWidth = op.adjustWidthTo; op.barMeasure.scrollWidth = Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth); op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm)); } if (op.updatedDisplay || op.selectionChanged) op.preparedSelection = display.input.prepareSelection(op.focus); } function endOperation_W2(op) { var cm = op.cm; if (op.adjustWidthTo != null) { cm.display.sizer.style.minWidth = op.adjustWidthTo + "px"; if (op.maxScrollLeft < cm.doc.scrollLeft) setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); cm.display.maxLineChanged = false; } var takeFocus = op.focus && op.focus == activeElt() && (!document.hasFocus || document.hasFocus()) if (op.preparedSelection) cm.display.input.showSelection(op.preparedSelection, takeFocus); if (op.updatedDisplay || op.startHeight != cm.doc.height) updateScrollbars(cm, op.barMeasure); if (op.updatedDisplay) setDocumentHeight(cm, op.barMeasure); if (op.selectionChanged) restartBlink(cm); if (cm.state.focused && op.updateInput) cm.display.input.reset(op.typing); if (takeFocus) ensureFocus(op.cm); } function endOperation_finish(op) { var cm = op.cm, display = cm.display, doc = cm.doc; if (op.updatedDisplay) postUpdateDisplay(cm, op.update); // Abort mouse wheel delta measurement, when scrolling explicitly if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) display.wheelStartX = display.wheelStartY = null; // Propagate the scroll position to the actual DOM scroller if (op.scrollTop != null && (display.scroller.scrollTop != op.scrollTop || op.forceScroll)) { doc.scrollTop = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop)); display.scrollbars.setScrollTop(doc.scrollTop); display.scroller.scrollTop = doc.scrollTop; } if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) { doc.scrollLeft = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft)); display.scrollbars.setScrollLeft(doc.scrollLeft); display.scroller.scrollLeft = doc.scrollLeft; alignHorizontally(cm); } // If we need to scroll a specific position into view, do so. if (op.scrollToPos) { var coords = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin); if (op.scrollToPos.isCursor && cm.state.focused) maybeScrollWindow(cm, coords); } // Fire events for markers that are hidden/unidden by editing or // undoing var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers; if (hidden) for (var i = 0; i < hidden.length; ++i) if (!hidden[i].lines.length) signal(hidden[i], "hide"); if (unhidden) for (var i = 0; i < unhidden.length; ++i) if (unhidden[i].lines.length) signal(unhidden[i], "unhide"); if (display.wrapper.offsetHeight) doc.scrollTop = cm.display.scroller.scrollTop; // Fire change events, and delayed event handlers if (op.changeObjs) signal(cm, "changes", cm, op.changeObjs); if (op.update) op.update.finish(); } // Run the given function in an operation function runInOp(cm, f) { if (cm.curOp) return f(); startOperation(cm); try { return f(); } finally { endOperation(cm); } } // Wraps a function in an operation. Returns the wrapped function. function operation(cm, f) { return function() { if (cm.curOp) return f.apply(cm, arguments); startOperation(cm); try { return f.apply(cm, arguments); } finally { endOperation(cm); } }; } // Used to add methods to editor and doc instances, wrapping them in // operations. function methodOp(f) { return function() { if (this.curOp) return f.apply(this, arguments); startOperation(this); try { return f.apply(this, arguments); } finally { endOperation(this); } }; } function docMethodOp(f) { return function() { var cm = this.cm; if (!cm || cm.curOp) return f.apply(this, arguments); startOperation(cm); try { return f.apply(this, arguments); } finally { endOperation(cm); } }; } // VIEW TRACKING // These objects are used to represent the visible (currently drawn) // part of the document. A LineView may correspond to multiple // logical lines, if those are connected by collapsed ranges. function LineView(doc, line, lineN) { // The starting line this.line = line; // Continuing lines, if any this.rest = visualLineContinued(line); // Number of logical lines in this visual line this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1; this.node = this.text = null; this.hidden = lineIsHidden(doc, line); } // Create a range of LineView objects for the given lines. function buildViewArray(cm, from, to) { var array = [], nextPos; for (var pos = from; pos < to; pos = nextPos) { var view = new LineView(cm.doc, getLine(cm.doc, pos), pos); nextPos = pos + view.size; array.push(view); } return array; } // Updates the display.view data structure for a given change to the // document. From and to are in pre-change coordinates. Lendiff is // the amount of lines added or subtracted by the change. This is // used for changes that span multiple lines, or change the way // lines are divided into visual lines. regLineChange (below) // registers single-line changes. function regChange(cm, from, to, lendiff) { if (from == null) from = cm.doc.first; if (to == null) to = cm.doc.first + cm.doc.size; if (!lendiff) lendiff = 0; var display = cm.display; if (lendiff && to < display.viewTo && (display.updateLineNumbers == null || display.updateLineNumbers > from)) display.updateLineNumbers = from; cm.curOp.viewChanged = true; if (from >= display.viewTo) { // Change after if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) resetView(cm); } else if (to <= display.viewFrom) { // Change before if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { resetView(cm); } else { display.viewFrom += lendiff; display.viewTo += lendiff; } } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap resetView(cm); } else if (from <= display.viewFrom) { // Top overlap var cut = viewCuttingPoint(cm, to, to + lendiff, 1); if (cut) { display.view = display.view.slice(cut.index); display.viewFrom = cut.lineN; display.viewTo += lendiff; } else { resetView(cm); } } else if (to >= display.viewTo) { // Bottom overlap var cut = viewCuttingPoint(cm, from, from, -1); if (cut) { display.view = display.view.slice(0, cut.index); display.viewTo = cut.lineN; } else { resetView(cm); } } else { // Gap in the middle var cutTop = viewCuttingPoint(cm, from, from, -1); var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1); if (cutTop && cutBot) { display.view = display.view.slice(0, cutTop.index) .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) .concat(display.view.slice(cutBot.index)); display.viewTo += lendiff; } else { resetView(cm); } } var ext = display.externalMeasured; if (ext) { if (to < ext.lineN) ext.lineN += lendiff; else if (from < ext.lineN + ext.size) display.externalMeasured = null; } } // Register a change to a single line. Type must be one of "text", // "gutter", "class", "widget" function regLineChange(cm, line, type) { cm.curOp.viewChanged = true; var display = cm.display, ext = cm.display.externalMeasured; if (ext && line >= ext.lineN && line < ext.lineN + ext.size) display.externalMeasured = null; if (line < display.viewFrom || line >= display.viewTo) return; var lineView = display.view[findViewIndex(cm, line)]; if (lineView.node == null) return; var arr = lineView.changes || (lineView.changes = []); if (indexOf(arr, type) == -1) arr.push(type); } // Clear the view. function resetView(cm) { cm.display.viewFrom = cm.display.viewTo = cm.doc.first; cm.display.view = []; cm.display.viewOffset = 0; } // Find the view element corresponding to a given line. Return null // when the line isn't visible. function findViewIndex(cm, n) { if (n >= cm.display.viewTo) return null; n -= cm.display.viewFrom; if (n < 0) return null; var view = cm.display.view; for (var i = 0; i < view.length; i++) { n -= view[i].size; if (n < 0) return i; } } function viewCuttingPoint(cm, oldN, newN, dir) { var index = findViewIndex(cm, oldN), diff, view = cm.display.view; if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) return {index: index, lineN: newN}; for (var i = 0, n = cm.display.viewFrom; i < index; i++) n += view[i].size; if (n != oldN) { if (dir > 0) { if (index == view.length - 1) return null; diff = (n + view[index].size) - oldN; index++; } else { diff = n - oldN; } oldN += diff; newN += diff; } while (visualLineNo(cm.doc, newN) != newN) { if (index == (dir < 0 ? 0 : view.length - 1)) return null; newN += dir * view[index - (dir < 0 ? 1 : 0)].size; index += dir; } return {index: index, lineN: newN}; } // Force the view to cover a given range, adding empty view element // or clipping off existing ones as needed. function adjustView(cm, from, to) { var display = cm.display, view = display.view; if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { display.view = buildViewArray(cm, from, to); display.viewFrom = from; } else { if (display.viewFrom > from) display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); else if (display.viewFrom < from) display.view = display.view.slice(findViewIndex(cm, from)); display.viewFrom = from; if (display.viewTo < to) display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); else if (display.viewTo > to) display.view = display.view.slice(0, findViewIndex(cm, to)); } display.viewTo = to; } // Count the number of lines in the view whose DOM representation is // out of date (or nonexistent). function countDirtyView(cm) { var view = cm.display.view, dirty = 0; for (var i = 0; i < view.length; i++) { var lineView = view[i]; if (!lineView.hidden && (!lineView.node || lineView.changes)) ++dirty; } return dirty; } // EVENT HANDLERS // Attach the necessary event handlers when initializing the editor function registerEventHandlers(cm) { var d = cm.display; on(d.scroller, "mousedown", operation(cm, onMouseDown)); // Older IE's will not fire a second mousedown for a double click if (ie && ie_version < 11) on(d.scroller, "dblclick", operation(cm, function(e) { if (signalDOMEvent(cm, e)) return; var pos = posFromMouse(cm, e); if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) return; e_preventDefault(e); var word = cm.findWordAt(pos); extendSelection(cm.doc, word.anchor, word.head); })); else on(d.scroller, "dblclick", function(e) { signalDOMEvent(cm, e) || e_preventDefault(e); }); // Some browsers fire contextmenu *after* opening the menu, at // which point we can't mess with it anymore. Context menu is // handled in onMouseDown for these browsers. if (!captureRightClick) on(d.scroller, "contextmenu", function(e) {onContextMenu(cm, e);}); // Used to suppress mouse event handling when a touch happens var touchFinished, prevTouch = {end: 0}; function finishTouch() { if (d.activeTouch) { touchFinished = setTimeout(function() {d.activeTouch = null;}, 1000); prevTouch = d.activeTouch; prevTouch.end = +new Date; } }; function isMouseLikeTouchEvent(e) { if (e.touches.length != 1) return false; var touch = e.touches[0]; return touch.radiusX <= 1 && touch.radiusY <= 1; } function farAway(touch, other) { if (other.left == null) return true; var dx = other.left - touch.left, dy = other.top - touch.top; return dx * dx + dy * dy > 20 * 20; } on(d.scroller, "touchstart", function(e) { if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e)) { clearTimeout(touchFinished); var now = +new Date; d.activeTouch = {start: now, moved: false, prev: now - prevTouch.end <= 300 ? prevTouch : null}; if (e.touches.length == 1) { d.activeTouch.left = e.touches[0].pageX; d.activeTouch.top = e.touches[0].pageY; } } }); on(d.scroller, "touchmove", function() { if (d.activeTouch) d.activeTouch.moved = true; }); on(d.scroller, "touchend", function(e) { var touch = d.activeTouch; if (touch && !eventInWidget(d, e) && touch.left != null && !touch.moved && new Date - touch.start < 300) { var pos = cm.coordsChar(d.activeTouch, "page"), range; if (!touch.prev || farAway(touch, touch.prev)) // Single tap range = new Range(pos, pos); else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap range = cm.findWordAt(pos); else // Triple tap range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); cm.setSelection(range.anchor, range.head); cm.focus(); e_preventDefault(e); } finishTouch(); }); on(d.scroller, "touchcancel", finishTouch); // Sync scrolling between fake scrollbars and real scrollable // area, ensure viewport is updated when scrolling. on(d.scroller, "scroll", function() { if (d.scroller.clientHeight) { setScrollTop(cm, d.scroller.scrollTop); setScrollLeft(cm, d.scroller.scrollLeft, true); signal(cm, "scroll", cm); } }); // Listen to wheel events in order to try and update the viewport on time. on(d.scroller, "mousewheel", function(e){onScrollWheel(cm, e);}); on(d.scroller, "DOMMouseScroll", function(e){onScrollWheel(cm, e);}); // Prevent wrapper from ever scrolling on(d.wrapper, "scroll", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }); d.dragFunctions = { enter: function(e) {if (!signalDOMEvent(cm, e)) e_stop(e);}, over: function(e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }}, start: function(e){onDragStart(cm, e);}, drop: operation(cm, onDrop), leave: function(e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }} }; var inp = d.input.getField(); on(inp, "keyup", function(e) { onKeyUp.call(cm, e); }); on(inp, "keydown", operation(cm, onKeyDown)); on(inp, "keypress", operation(cm, onKeyPress)); on(inp, "focus", bind(onFocus, cm)); on(inp, "blur", bind(onBlur, cm)); } function dragDropChanged(cm, value, old) { var wasOn = old && old != CodeMirror.Init; if (!value != !wasOn) { var funcs = cm.display.dragFunctions; var toggle = value ? on : off; toggle(cm.display.scroller, "dragstart", funcs.start); toggle(cm.display.scroller, "dragenter", funcs.enter); toggle(cm.display.scroller, "dragover", funcs.over); toggle(cm.display.scroller, "dragleave", funcs.leave); toggle(cm.display.scroller, "drop", funcs.drop); } } // Called when the window resizes function onResize(cm) { var d = cm.display; if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth) return; // Might be a text scaling operation, clear size caches. d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; d.scrollbarsClipped = false; cm.setSize(); } // MOUSE EVENTS // Return true when the given mouse event happened in a widget function eventInWidget(display, e) { for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { if (!n || (n.nodeType == 1 && n.getAttribute("cm-ignore-events") == "true") || (n.parentNode == display.sizer && n != display.mover)) return true; } } // Given a mouse event, find the corresponding position. If liberal // is false, it checks whether a gutter or scrollbar was clicked, // and returns null if it was. forRect is used by rectangular // selections, and tries to estimate a character position even for // coordinates beyond the right of the text. function posFromMouse(cm, e, liberal, forRect) { var display = cm.display; if (!liberal && e_target(e).getAttribute("cm-not-content") == "true") return null; var x, y, space = display.lineSpace.getBoundingClientRect(); // Fails unpredictably on IE[67] when mouse is dragged around quickly. try { x = e.clientX - space.left; y = e.clientY - space.top; } catch (e) { return null; } var coords = coordsChar(cm, x, y), line; if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length; coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)); } return coords; } // A mouse down can be a single click, double click, triple click, // start of selection drag, start of text drag, new cursor // (ctrl-click), rectangle drag (alt-drag), or xwin // middle-click-paste. Or it might be a click on something we should // not interfere with, such as a scrollbar or widget. function onMouseDown(e) { var cm = this, display = cm.display; if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) return; display.shift = e.shiftKey; if (eventInWidget(display, e)) { if (!webkit) { // Briefly turn off draggability, to allow widgets to do // normal dragging things. display.scroller.draggable = false; setTimeout(function(){display.scroller.draggable = true;}, 100); } return; } if (clickInGutter(cm, e)) return; var start = posFromMouse(cm, e); window.focus(); switch (e_button(e)) { case 1: // #3261: make sure, that we're not starting a second selection if (cm.state.selectingText) cm.state.selectingText(e); else if (start) leftButtonDown(cm, e, start); else if (e_target(e) == display.scroller) e_preventDefault(e); break; case 2: if (webkit) cm.state.lastMiddleDown = +new Date; if (start) extendSelection(cm.doc, start); setTimeout(function() {display.input.focus();}, 20); e_preventDefault(e); break; case 3: if (captureRightClick) onContextMenu(cm, e); else delayBlurEvent(cm); break; } } var lastClick, lastDoubleClick; function leftButtonDown(cm, e, start) { if (ie) setTimeout(bind(ensureFocus, cm), 0); else cm.curOp.focus = activeElt(); var now = +new Date, type; if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) { type = "triple"; } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) { type = "double"; lastDoubleClick = {time: now, pos: start}; } else { type = "single"; lastClick = {time: now, pos: start}; } var sel = cm.doc.sel, modifier = mac ? e.metaKey : e.ctrlKey, contained; if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && type == "single" && (contained = sel.contains(start)) > -1 && (cmp((contained = sel.ranges[contained]).from(), start) < 0 || start.xRel > 0) && (cmp(contained.to(), start) > 0 || start.xRel < 0)) leftButtonStartDrag(cm, e, start, modifier); else leftButtonSelect(cm, e, start, type, modifier); } // Start a text drag. When it ends, see if any dragging actually // happen, and treat as a click if it didn't. function leftButtonStartDrag(cm, e, start, modifier) { var display = cm.display, startTime = +new Date; var dragEnd = operation(cm, function(e2) { if (webkit) display.scroller.draggable = false; cm.state.draggingText = false; off(document, "mouseup", dragEnd); off(display.scroller, "drop", dragEnd); if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) { e_preventDefault(e2); if (!modifier && +new Date - 200 < startTime) extendSelection(cm.doc, start); // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081) if (webkit || ie && ie_version == 9) setTimeout(function() {document.body.focus(); display.input.focus();}, 20); else display.input.focus(); } }); // Let the drag handler handle this. if (webkit) display.scroller.draggable = true; cm.state.draggingText = dragEnd; dragEnd.copy = mac ? e.altKey : e.ctrlKey // IE's approach to draggable if (display.scroller.dragDrop) display.scroller.dragDrop(); on(document, "mouseup", dragEnd); on(display.scroller, "drop", dragEnd); } // Normal selection, as opposed to text dragging. function leftButtonSelect(cm, e, start, type, addNew) { var display = cm.display, doc = cm.doc; e_preventDefault(e); var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges; if (addNew && !e.shiftKey) { ourIndex = doc.sel.contains(start); if (ourIndex > -1) ourRange = ranges[ourIndex]; else ourRange = new Range(start, start); } else { ourRange = doc.sel.primary(); ourIndex = doc.sel.primIndex; } if (chromeOS ? e.shiftKey && e.metaKey : e.altKey) { type = "rect"; if (!addNew) ourRange = new Range(start, start); start = posFromMouse(cm, e, true, true); ourIndex = -1; } else if (type == "double") { var word = cm.findWordAt(start); if (cm.display.shift || doc.extend) ourRange = extendRange(doc, ourRange, word.anchor, word.head); else ourRange = word; } else if (type == "triple") { var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0))); if (cm.display.shift || doc.extend) ourRange = extendRange(doc, ourRange, line.anchor, line.head); else ourRange = line; } else { ourRange = extendRange(doc, ourRange, start); } if (!addNew) { ourIndex = 0; setSelection(doc, new Selection([ourRange], 0), sel_mouse); startSel = doc.sel; } else if (ourIndex == -1) { ourIndex = ranges.length; setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex), {scroll: false, origin: "*mouse"}); } else if (ranges.length > 1 && ranges[ourIndex].empty() && type == "single" && !e.shiftKey) { setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), {scroll: false, origin: "*mouse"}); startSel = doc.sel; } else { replaceOneSelection(doc, ourIndex, ourRange, sel_mouse); } var lastPos = start; function extendTo(pos) { if (cmp(lastPos, pos) == 0) return; lastPos = pos; if (type == "rect") { var ranges = [], tabSize = cm.options.tabSize; var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize); var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize); var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol); for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); line <= end; line++) { var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize); if (left == right) ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); else if (text.length > leftPos) ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); } if (!ranges.length) ranges.push(new Range(start, start)); setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), {origin: "*mouse", scroll: false}); cm.scrollIntoView(pos); } else { var oldRange = ourRange; var anchor = oldRange.anchor, head = pos; if (type != "single") { if (type == "double") var range = cm.findWordAt(pos); else var range = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0))); if (cmp(range.anchor, anchor) > 0) { head = range.head; anchor = minPos(oldRange.from(), range.anchor); } else { head = range.anchor; anchor = maxPos(oldRange.to(), range.head); } } var ranges = startSel.ranges.slice(0); ranges[ourIndex] = new Range(clipPos(doc, anchor), head); setSelection(doc, normalizeSelection(ranges, ourIndex), sel_mouse); } } var editorSize = display.wrapper.getBoundingClientRect(); // Used to ensure timeout re-tries don't fire when another extend // happened in the meantime (clearTimeout isn't reliable -- at // least on Chrome, the timeouts still happen even when cleared, // if the clear happens after their scheduled firing time). var counter = 0; function extend(e) { var curCount = ++counter; var cur = posFromMouse(cm, e, true, type == "rect"); if (!cur) return; if (cmp(cur, lastPos) != 0) { cm.curOp.focus = activeElt(); extendTo(cur); var visible = visibleLines(display, doc); if (cur.line >= visible.to || cur.line < visible.from) setTimeout(operation(cm, function(){if (counter == curCount) extend(e);}), 150); } else { var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0; if (outside) setTimeout(operation(cm, function() { if (counter != curCount) return; display.scroller.scrollTop += outside; extend(e); }), 50); } } function done(e) { cm.state.selectingText = false; counter = Infinity; e_preventDefault(e); display.input.focus(); off(document, "mousemove", move); off(document, "mouseup", up); doc.history.lastSelOrigin = null; } var move = operation(cm, function(e) { if (!e_button(e)) done(e); else extend(e); }); var up = operation(cm, done); cm.state.selectingText = up; on(document, "mousemove", move); on(document, "mouseup", up); } // Determines whether an event happened in the gutter, and fires the // handlers for the corresponding event. function gutterEvent(cm, e, type, prevent) { try { var mX = e.clientX, mY = e.clientY; } catch(e) { return false; } if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) return false; if (prevent) e_preventDefault(e); var display = cm.display; var lineBox = display.lineDiv.getBoundingClientRect(); if (mY > lineBox.bottom || !hasHandler(cm, type)) return e_defaultPrevented(e); mY -= lineBox.top - display.viewOffset; for (var i = 0; i < cm.options.gutters.length; ++i) { var g = display.gutters.childNodes[i]; if (g && g.getBoundingClientRect().right >= mX) { var line = lineAtHeight(cm.doc, mY); var gutter = cm.options.gutters[i]; signal(cm, type, cm, line, gutter, e); return e_defaultPrevented(e); } } } function clickInGutter(cm, e) { return gutterEvent(cm, e, "gutterClick", true); } // Kludge to work around strange IE behavior where it'll sometimes // re-fire a series of drag-related events right after the drop (#1551) var lastDrop = 0; function onDrop(e) { var cm = this; clearDragCursor(cm); if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return; e_preventDefault(e); if (ie) lastDrop = +new Date; var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files; if (!pos || cm.isReadOnly()) return; // Might be a file drop, in which case we simply extract the text // and insert it. if (files && files.length && window.FileReader && window.File) { var n = files.length, text = Array(n), read = 0; var loadFile = function(file, i) { if (cm.options.allowDropFileTypes && indexOf(cm.options.allowDropFileTypes, file.type) == -1) return; var reader = new FileReader; reader.onload = operation(cm, function() { var content = reader.result; if (/[\x00-\x08\x0e-\x1f]{2}/.test(content)) content = ""; text[i] = content; if (++read == n) { pos = clipPos(cm.doc, pos); var change = {from: pos, to: pos, text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())), origin: "paste"}; makeChange(cm.doc, change); setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change))); } }); reader.readAsText(file); }; for (var i = 0; i < n; ++i) loadFile(files[i], i); } else { // Normal drop // Don't do a replace if the drop happened inside of the selected text. if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { cm.state.draggingText(e); // Ensure the editor is re-focused setTimeout(function() {cm.display.input.focus();}, 20); return; } try { var text = e.dataTransfer.getData("Text"); if (text) { if (cm.state.draggingText && !cm.state.draggingText.copy) var selected = cm.listSelections(); setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)); if (selected) for (var i = 0; i < selected.length; ++i) replaceRange(cm.doc, "", selected[i].anchor, selected[i].head, "drag"); cm.replaceSelection(text, "around", "paste"); cm.display.input.focus(); } } catch(e){} } } function onDragStart(cm, e) { if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return; } if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return; e.dataTransfer.setData("Text", cm.getSelection()); e.dataTransfer.effectAllowed = "copyMove" // Use dummy image instead of default browsers image. // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. if (e.dataTransfer.setDragImage && !safari) { var img = elt("img", null, null, "position: fixed; left: 0; top: 0;"); img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; if (presto) { img.width = img.height = 1; cm.display.wrapper.appendChild(img); // Force a relayout, or Opera won't use our image for some obscure reason img._top = img.offsetTop; } e.dataTransfer.setDragImage(img, 0, 0); if (presto) img.parentNode.removeChild(img); } } function onDragOver(cm, e) { var pos = posFromMouse(cm, e); if (!pos) return; var frag = document.createDocumentFragment(); drawSelectionCursor(cm, pos, frag); if (!cm.display.dragCursor) { cm.display.dragCursor = elt("div", null, "CodeMirror-cursors CodeMirror-dragcursors"); cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv); } removeChildrenAndAdd(cm.display.dragCursor, frag); } function clearDragCursor(cm) { if (cm.display.dragCursor) { cm.display.lineSpace.removeChild(cm.display.dragCursor); cm.display.dragCursor = null; } } // SCROLL EVENTS // Sync the scrollable area and scrollbars, ensure the viewport // covers the visible area. function setScrollTop(cm, val) { if (Math.abs(cm.doc.scrollTop - val) < 2) return; cm.doc.scrollTop = val; if (!gecko) updateDisplaySimple(cm, {top: val}); if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val; cm.display.scrollbars.setScrollTop(val); if (gecko) updateDisplaySimple(cm); startWorker(cm, 100); } // Sync scroller and scrollbar, ensure the gutter elements are // aligned. function setScrollLeft(cm, val, isScroller) { if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) return; val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth); cm.doc.scrollLeft = val; alignHorizontally(cm); if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val; cm.display.scrollbars.setScrollLeft(val); } // Since the delta values reported on mouse wheel events are // unstandardized between browsers and even browser versions, and // generally horribly unpredictable, this code starts by measuring // the scroll effect that the first few mouse wheel events have, // and, from that, detects the way it can convert deltas to pixel // offsets afterwards. // // The reason we want to know the amount a wheel event will scroll // is that it gives us a chance to update the display before the // actual scrolling happens, reducing flickering. var wheelSamples = 0, wheelPixelsPerUnit = null; // Fill in a browser-detected starting value on browsers where we // know one. These don't have to be accurate -- the result of them // being wrong would just be a slight flicker on the first wheel // scroll (if it is large enough). if (ie) wheelPixelsPerUnit = -.53; else if (gecko) wheelPixelsPerUnit = 15; else if (chrome) wheelPixelsPerUnit = -.7; else if (safari) wheelPixelsPerUnit = -1/3; var wheelEventDelta = function(e) { var dx = e.wheelDeltaX, dy = e.wheelDeltaY; if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) dx = e.detail; if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) dy = e.detail; else if (dy == null) dy = e.wheelDelta; return {x: dx, y: dy}; }; CodeMirror.wheelEventPixels = function(e) { var delta = wheelEventDelta(e); delta.x *= wheelPixelsPerUnit; delta.y *= wheelPixelsPerUnit; return delta; }; function onScrollWheel(cm, e) { var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y; var display = cm.display, scroll = display.scroller; // Quit if there's nothing to scroll here var canScrollX = scroll.scrollWidth > scroll.clientWidth; var canScrollY = scroll.scrollHeight > scroll.clientHeight; if (!(dx && canScrollX || dy && canScrollY)) return; // Webkit browsers on OS X abort momentum scrolls when the target // of the scroll event is removed from the scrollable element. // This hack (see related code in patchDisplay) makes sure the // element is kept around. if (dy && mac && webkit) { outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { for (var i = 0; i < view.length; i++) { if (view[i].node == cur) { cm.display.currentWheelTarget = cur; break outer; } } } } // On some browsers, horizontal scrolling will cause redraws to // happen before the gutter has been realigned, causing it to // wriggle around in a most unseemly way. When we have an // estimated pixels/delta value, we just handle horizontal // scrolling entirely here. It'll be slightly off from native, but // better than glitching out. if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { if (dy && canScrollY) setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight))); setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth))); // Only prevent default scrolling if vertical scrolling is // actually possible. Otherwise, it causes vertical scroll // jitter on OSX trackpads when deltaX is small and deltaY // is large (issue #3579) if (!dy || (dy && canScrollY)) e_preventDefault(e); display.wheelStartX = null; // Abort measurement, if in progress return; } // 'Project' the visible viewport to cover the area that is being // scrolled into view (if we know enough to estimate it). if (dy && wheelPixelsPerUnit != null) { var pixels = dy * wheelPixelsPerUnit; var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight; if (pixels < 0) top = Math.max(0, top + pixels - 50); else bot = Math.min(cm.doc.height, bot + pixels + 50); updateDisplaySimple(cm, {top: top, bottom: bot}); } if (wheelSamples < 20) { if (display.wheelStartX == null) { display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop; display.wheelDX = dx; display.wheelDY = dy; setTimeout(function() { if (display.wheelStartX == null) return; var movedX = scroll.scrollLeft - display.wheelStartX; var movedY = scroll.scrollTop - display.wheelStartY; var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || (movedX && display.wheelDX && movedX / display.wheelDX); display.wheelStartX = display.wheelStartY = null; if (!sample) return; wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); ++wheelSamples; }, 200); } else { display.wheelDX += dx; display.wheelDY += dy; } } } // KEY EVENTS // Run a handler that was bound to a key. function doHandleBinding(cm, bound, dropShift) { if (typeof bound == "string") { bound = commands[bound]; if (!bound) return false; } // Ensure previous input has been read, so that the handler sees a // consistent view of the document cm.display.input.ensurePolled(); var prevShift = cm.display.shift, done = false; try { if (cm.isReadOnly()) cm.state.suppressEdits = true; if (dropShift) cm.display.shift = false; done = bound(cm) != Pass; } finally { cm.display.shift = prevShift; cm.state.suppressEdits = false; } return done; } function lookupKeyForEditor(cm, name, handle) { for (var i = 0; i < cm.state.keyMaps.length; i++) { var result = lookupKey(name, cm.state.keyMaps[i], handle, cm); if (result) return result; } return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm)) || lookupKey(name, cm.options.keyMap, handle, cm); } var stopSeq = new Delayed; function dispatchKey(cm, name, e, handle) { var seq = cm.state.keySeq; if (seq) { if (isModifierKey(name)) return "handled"; stopSeq.set(50, function() { if (cm.state.keySeq == seq) { cm.state.keySeq = null; cm.display.input.reset(); } }); name = seq + " " + name; } var result = lookupKeyForEditor(cm, name, handle); if (result == "multi") cm.state.keySeq = name; if (result == "handled") signalLater(cm, "keyHandled", cm, name, e); if (result == "handled" || result == "multi") { e_preventDefault(e); restartBlink(cm); } if (seq && !result && /\'$/.test(name)) { e_preventDefault(e); return true; } return !!result; } // Handle a key from the keydown event. function handleKeyBinding(cm, e) { var name = keyName(e, true); if (!name) return false; if (e.shiftKey && !cm.state.keySeq) { // First try to resolve full name (including 'Shift-'). Failing // that, see if there is a cursor-motion command (starting with // 'go') bound to the keyname without 'Shift-'. return dispatchKey(cm, "Shift-" + name, e, function(b) {return doHandleBinding(cm, b, true);}) || dispatchKey(cm, name, e, function(b) { if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) return doHandleBinding(cm, b); }); } else { return dispatchKey(cm, name, e, function(b) { return doHandleBinding(cm, b); }); } } // Handle a key from the keypress event function handleCharBinding(cm, e, ch) { return dispatchKey(cm, "'" + ch + "'", e, function(b) { return doHandleBinding(cm, b, true); }); } var lastStoppedKey = null; function onKeyDown(e) { var cm = this; cm.curOp.focus = activeElt(); if (signalDOMEvent(cm, e)) return; // IE does strange things with escape. if (ie && ie_version < 11 && e.keyCode == 27) e.returnValue = false; var code = e.keyCode; cm.display.shift = code == 16 || e.shiftKey; var handled = handleKeyBinding(cm, e); if (presto) { lastStoppedKey = handled ? code : null; // Opera has no cut event... we try to at least catch the key combo if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) cm.replaceSelection("", null, "cut"); } // Turn mouse into crosshair when Alt is held on Mac. if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) showCrossHair(cm); } function showCrossHair(cm) { var lineDiv = cm.display.lineDiv; addClass(lineDiv, "CodeMirror-crosshair"); function up(e) { if (e.keyCode == 18 || !e.altKey) { rmClass(lineDiv, "CodeMirror-crosshair"); off(document, "keyup", up); off(document, "mouseover", up); } } on(document, "keyup", up); on(document, "mouseover", up); } function onKeyUp(e) { if (e.keyCode == 16) this.doc.sel.shift = false; signalDOMEvent(this, e); } function onKeyPress(e) { var cm = this; if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) return; var keyCode = e.keyCode, charCode = e.charCode; if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;} if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) return; var ch = String.fromCharCode(charCode == null ? keyCode : charCode); if (handleCharBinding(cm, e, ch)) return; cm.display.input.onKeyPress(e); } // FOCUS/BLUR EVENTS function delayBlurEvent(cm) { cm.state.delayingBlurEvent = true; setTimeout(function() { if (cm.state.delayingBlurEvent) { cm.state.delayingBlurEvent = false; onBlur(cm); } }, 100); } function onFocus(cm) { if (cm.state.delayingBlurEvent) cm.state.delayingBlurEvent = false; if (cm.options.readOnly == "nocursor") return; if (!cm.state.focused) { signal(cm, "focus", cm); cm.state.focused = true; addClass(cm.display.wrapper, "CodeMirror-focused"); // This test prevents this from firing when a context // menu is closed (since the input reset would kill the // select-all detection hack) if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { cm.display.input.reset(); if (webkit) setTimeout(function() { cm.display.input.reset(true); }, 20); // Issue #1730 } cm.display.input.receivedFocus(); } restartBlink(cm); } function onBlur(cm) { if (cm.state.delayingBlurEvent) return; if (cm.state.focused) { signal(cm, "blur", cm); cm.state.focused = false; rmClass(cm.display.wrapper, "CodeMirror-focused"); } clearInterval(cm.display.blinker); setTimeout(function() {if (!cm.state.focused) cm.display.shift = false;}, 150); } // CONTEXT MENU HANDLING // To make the context menu work, we need to briefly unhide the // textarea (making it as unobtrusive as possible) to let the // right-click take effect on it. function onContextMenu(cm, e) { if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) return; if (signalDOMEvent(cm, e, "contextmenu")) return; cm.display.input.onContextMenu(e); } function contextMenuInGutter(cm, e) { if (!hasHandler(cm, "gutterContextMenu")) return false; return gutterEvent(cm, e, "gutterContextMenu", false); } // UPDATING // Compute the position of the end of a change (its 'to' property // refers to the pre-change end). var changeEnd = CodeMirror.changeEnd = function(change) { if (!change.text) return change.to; return Pos(change.from.line + change.text.length - 1, lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)); }; // Adjust a position to refer to the post-change position of the // same text, or the end of the change if the change covers it. function adjustForChange(pos, change) { if (cmp(pos, change.from) < 0) return pos; if (cmp(pos, change.to) <= 0) return changeEnd(change); var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch; if (pos.line == change.to.line) ch += changeEnd(change).ch - change.to.ch; return Pos(line, ch); } function computeSelAfterChange(doc, change) { var out = []; for (var i = 0; i < doc.sel.ranges.length; i++) { var range = doc.sel.ranges[i]; out.push(new Range(adjustForChange(range.anchor, change), adjustForChange(range.head, change))); } return normalizeSelection(out, doc.sel.primIndex); } function offsetPos(pos, old, nw) { if (pos.line == old.line) return Pos(nw.line, pos.ch - old.ch + nw.ch); else return Pos(nw.line + (pos.line - old.line), pos.ch); } // Used by replaceSelections to allow moving the selection to the // start or around the replaced test. Hint may be "start" or "around". function computeReplacedSel(doc, changes, hint) { var out = []; var oldPrev = Pos(doc.first, 0), newPrev = oldPrev; for (var i = 0; i < changes.length; i++) { var change = changes[i]; var from = offsetPos(change.from, oldPrev, newPrev); var to = offsetPos(changeEnd(change), oldPrev, newPrev); oldPrev = change.to; newPrev = to; if (hint == "around") { var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0; out[i] = new Range(inv ? to : from, inv ? from : to); } else { out[i] = new Range(from, from); } } return new Selection(out, doc.sel.primIndex); } // Allow "beforeChange" event handlers to influence a change function filterChange(doc, change, update) { var obj = { canceled: false, from: change.from, to: change.to, text: change.text, origin: change.origin, cancel: function() { this.canceled = true; } }; if (update) obj.update = function(from, to, text, origin) { if (from) this.from = clipPos(doc, from); if (to) this.to = clipPos(doc, to); if (text) this.text = text; if (origin !== undefined) this.origin = origin; }; signal(doc, "beforeChange", doc, obj); if (doc.cm) signal(doc.cm, "beforeChange", doc.cm, obj); if (obj.canceled) return null; return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}; } // Apply a change to a document, and add it to the document's // history, and propagating it to all linked documents. function makeChange(doc, change, ignoreReadOnly) { if (doc.cm) { if (!doc.cm.curOp) return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly); if (doc.cm.state.suppressEdits) return; } if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { change = filterChange(doc, change, true); if (!change) return; } // Possibly split or suppress the update based on the presence // of read-only spans in its range. var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to); if (split) { for (var i = split.length - 1; i >= 0; --i) makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text}); } else { makeChangeInner(doc, change); } } function makeChangeInner(doc, change) { if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) return; var selAfter = computeSelAfterChange(doc, change); addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN); makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)); var rebased = []; linkedDocs(doc, function(doc, sharedHist) { if (!sharedHist && indexOf(rebased, doc.history) == -1) { rebaseHist(doc.history, change); rebased.push(doc.history); } makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)); }); } // Revert a change stored in a document's history. function makeChangeFromHistory(doc, type, allowSelectionOnly) { if (doc.cm && doc.cm.state.suppressEdits && !allowSelectionOnly) return; var hist = doc.history, event, selAfter = doc.sel; var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done; // Verify that there is a useable event (so that ctrl-z won't // needlessly clear selection events) for (var i = 0; i < source.length; i++) { event = source[i]; if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) break; } if (i == source.length) return; hist.lastOrigin = hist.lastSelOrigin = null; for (;;) { event = source.pop(); if (event.ranges) { pushSelectionToHistory(event, dest); if (allowSelectionOnly && !event.equals(doc.sel)) { setSelection(doc, event, {clearRedo: false}); return; } selAfter = event; } else break; } // Build up a reverse change object to add to the opposite history // stack (redo when undoing, and vice versa). var antiChanges = []; pushSelectionToHistory(selAfter, dest); dest.push({changes: antiChanges, generation: hist.generation}); hist.generation = event.generation || ++hist.maxGeneration; var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange"); for (var i = event.changes.length - 1; i >= 0; --i) { var change = event.changes[i]; change.origin = type; if (filter && !filterChange(doc, change, false)) { source.length = 0; return; } antiChanges.push(historyChangeFromChange(doc, change)); var after = i ? computeSelAfterChange(doc, change) : lst(source); makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)); if (!i && doc.cm) doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); var rebased = []; // Propagate to the linked documents linkedDocs(doc, function(doc, sharedHist) { if (!sharedHist && indexOf(rebased, doc.history) == -1) { rebaseHist(doc.history, change); rebased.push(doc.history); } makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)); }); } } // Sub-views need their line numbers shifted when text is added // above or below them in the parent document. function shiftDoc(doc, distance) { if (distance == 0) return; doc.first += distance; doc.sel = new Selection(map(doc.sel.ranges, function(range) { return new Range(Pos(range.anchor.line + distance, range.anchor.ch), Pos(range.head.line + distance, range.head.ch)); }), doc.sel.primIndex); if (doc.cm) { regChange(doc.cm, doc.first, doc.first - distance, distance); for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) regLineChange(doc.cm, l, "gutter"); } } // More lower-level change function, handling only a single document // (not linked ones). function makeChangeSingleDoc(doc, change, selAfter, spans) { if (doc.cm && !doc.cm.curOp) return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans); if (change.to.line < doc.first) { shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)); return; } if (change.from.line > doc.lastLine()) return; // Clip the change to the size of this doc if (change.from.line < doc.first) { var shift = change.text.length - 1 - (doc.first - change.from.line); shiftDoc(doc, shift); change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), text: [lst(change.text)], origin: change.origin}; } var last = doc.lastLine(); if (change.to.line > last) { change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), text: [change.text[0]], origin: change.origin}; } change.removed = getBetween(doc, change.from, change.to); if (!selAfter) selAfter = computeSelAfterChange(doc, change); if (doc.cm) makeChangeSingleDocInEditor(doc.cm, change, spans); else updateDoc(doc, change, spans); setSelectionNoUndo(doc, selAfter, sel_dontScroll); } // Handle the interaction of a change to a document with the editor // that this document is part of. function makeChangeSingleDocInEditor(cm, change, spans) { var doc = cm.doc, display = cm.display, from = change.from, to = change.to; var recomputeMaxLength = false, checkWidthStart = from.line; if (!cm.options.lineWrapping) { checkWidthStart = lineNo(visualLine(getLine(doc, from.line))); doc.iter(checkWidthStart, to.line + 1, function(line) { if (line == display.maxLine) { recomputeMaxLength = true; return true; } }); } if (doc.sel.contains(change.from, change.to) > -1) signalCursorActivity(cm); updateDoc(doc, change, spans, estimateHeight(cm)); if (!cm.options.lineWrapping) { doc.iter(checkWidthStart, from.line + change.text.length, function(line) { var len = lineLength(line); if (len > display.maxLineLength) { display.maxLine = line; display.maxLineLength = len; display.maxLineChanged = true; recomputeMaxLength = false; } }); if (recomputeMaxLength) cm.curOp.updateMaxLine = true; } // Adjust frontier, schedule worker doc.frontier = Math.min(doc.frontier, from.line); startWorker(cm, 400); var lendiff = change.text.length - (to.line - from.line) - 1; // Remember that these lines changed, for updating the display if (change.full) regChange(cm); else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) regLineChange(cm, from.line, "text"); else regChange(cm, from.line, to.line + 1, lendiff); var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change"); if (changeHandler || changesHandler) { var obj = { from: from, to: to, text: change.text, removed: change.removed, origin: change.origin }; if (changeHandler) signalLater(cm, "change", cm, obj); if (changesHandler) (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); } cm.display.selForContextMenu = null; } function replaceRange(doc, code, from, to, origin) { if (!to) to = from; if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; } if (typeof code == "string") code = doc.splitLines(code); makeChange(doc, {from: from, to: to, text: code, origin: origin}); } // SCROLLING THINGS INTO VIEW // If an editor sits on the top or bottom of the window, partially // scrolled out of view, this ensures that the cursor is visible. function maybeScrollWindow(cm, coords) { if (signalDOMEvent(cm, "scrollCursorIntoView")) return; var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null; if (coords.top + box.top < 0) doScroll = true; else if (coords.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false; if (doScroll != null && !phantom) { var scrollNode = elt("div", "\u200b", null, "position: absolute; top: " + (coords.top - display.viewOffset - paddingTop(cm.display)) + "px; height: " + (coords.bottom - coords.top + scrollGap(cm) + display.barHeight) + "px; left: " + coords.left + "px; width: 2px;"); cm.display.lineSpace.appendChild(scrollNode); scrollNode.scrollIntoView(doScroll); cm.display.lineSpace.removeChild(scrollNode); } } // Scroll a given position into view (immediately), verifying that // it actually became visible (as line heights are accurately // measured, the position of something may 'drift' during drawing). function scrollPosIntoView(cm, pos, end, margin) { if (margin == null) margin = 0; for (var limit = 0; limit < 5; limit++) { var changed = false, coords = cursorCoords(cm, pos); var endCoords = !end || end == pos ? coords : cursorCoords(cm, end); var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left), Math.min(coords.top, endCoords.top) - margin, Math.max(coords.left, endCoords.left), Math.max(coords.bottom, endCoords.bottom) + margin); var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft; if (scrollPos.scrollTop != null) { setScrollTop(cm, scrollPos.scrollTop); if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true; } if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true; } if (!changed) break; } return coords; } // Scroll a given set of coordinates into view (immediately). function scrollIntoView(cm, x1, y1, x2, y2) { var scrollPos = calculateScrollPos(cm, x1, y1, x2, y2); if (scrollPos.scrollTop != null) setScrollTop(cm, scrollPos.scrollTop); if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft); } // Calculate a new scroll position needed to scroll the given // rectangle into view. Returns an object with scrollTop and // scrollLeft properties. When these are undefined, the // vertical/horizontal position does not need to be adjusted. function calculateScrollPos(cm, x1, y1, x2, y2) { var display = cm.display, snapMargin = textHeight(cm.display); if (y1 < 0) y1 = 0; var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop; var screen = displayHeight(cm), result = {}; if (y2 - y1 > screen) y2 = y1 + screen; var docBottom = cm.doc.height + paddingVert(display); var atTop = y1 < snapMargin, atBottom = y2 > docBottom - snapMargin; if (y1 < screentop) { result.scrollTop = atTop ? 0 : y1; } else if (y2 > screentop + screen) { var newTop = Math.min(y1, (atBottom ? docBottom : y2) - screen); if (newTop != screentop) result.scrollTop = newTop; } var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft; var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0); var tooWide = x2 - x1 > screenw; if (tooWide) x2 = x1 + screenw; if (x1 < 10) result.scrollLeft = 0; else if (x1 < screenleft) result.scrollLeft = Math.max(0, x1 - (tooWide ? 0 : 10)); else if (x2 > screenw + screenleft - 3) result.scrollLeft = x2 + (tooWide ? 0 : 10) - screenw; return result; } // Store a relative adjustment to the scroll position in the current // operation (to be applied when the operation finishes). function addToScrollPos(cm, left, top) { if (left != null || top != null) resolveScrollToPos(cm); if (left != null) cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left; if (top != null) cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; } // Make sure that at the end of the operation the current cursor is // shown. function ensureCursorVisible(cm) { resolveScrollToPos(cm); var cur = cm.getCursor(), from = cur, to = cur; if (!cm.options.lineWrapping) { from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur; to = Pos(cur.line, cur.ch + 1); } cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin, isCursor: true}; } // When an operation has its scrollToPos property set, and another // scroll action is applied before the end of the operation, this // 'simulates' scrolling that position into view in a cheap way, so // that the effect of intermediate scroll commands is not ignored. function resolveScrollToPos(cm) { var range = cm.curOp.scrollToPos; if (range) { cm.curOp.scrollToPos = null; var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to); var sPos = calculateScrollPos(cm, Math.min(from.left, to.left), Math.min(from.top, to.top) - range.margin, Math.max(from.right, to.right), Math.max(from.bottom, to.bottom) + range.margin); cm.scrollTo(sPos.scrollLeft, sPos.scrollTop); } } // API UTILITIES // Indent the given line. The how parameter can be "smart", // "add"/null, "subtract", or "prev". When aggressive is false // (typically set to true for forced single-line indents), empty // lines are not indented, and places where the mode returns Pass // are left alone. function indentLine(cm, n, how, aggressive) { var doc = cm.doc, state; if (how == null) how = "add"; if (how == "smart") { // Fall back to "prev" when the mode doesn't have an indentation // method. if (!doc.mode.indent) how = "prev"; else state = getStateBefore(cm, n); } var tabSize = cm.options.tabSize; var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize); if (line.stateAfter) line.stateAfter = null; var curSpaceString = line.text.match(/^\s*/)[0], indentation; if (!aggressive && !/\S/.test(line.text)) { indentation = 0; how = "not"; } else if (how == "smart") { indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text); if (indentation == Pass || indentation > 150) { if (!aggressive) return; how = "prev"; } } if (how == "prev") { if (n > doc.first) indentation = countColumn(getLine(doc, n-1).text, null, tabSize); else indentation = 0; } else if (how == "add") { indentation = curSpace + cm.options.indentUnit; } else if (how == "subtract") { indentation = curSpace - cm.options.indentUnit; } else if (typeof how == "number") { indentation = curSpace + how; } indentation = Math.max(0, indentation); var indentString = "", pos = 0; if (cm.options.indentWithTabs) for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";} if (pos < indentation) indentString += spaceStr(indentation - pos); if (indentString != curSpaceString) { replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input"); line.stateAfter = null; return true; } else { // Ensure that, if the cursor was in the whitespace at the start // of the line, it is moved to the end of that space. for (var i = 0; i < doc.sel.ranges.length; i++) { var range = doc.sel.ranges[i]; if (range.head.line == n && range.head.ch < curSpaceString.length) { var pos = Pos(n, curSpaceString.length); replaceOneSelection(doc, i, new Range(pos, pos)); break; } } } } // Utility for applying a change to a line by handle or number, // returning the number and optionally registering the line as // changed. function changeLine(doc, handle, changeType, op) { var no = handle, line = handle; if (typeof handle == "number") line = getLine(doc, clipLine(doc, handle)); else no = lineNo(handle); if (no == null) return null; if (op(line, no) && doc.cm) regLineChange(doc.cm, no, changeType); return line; } // Helper for deleting text near the selection(s), used to implement // backspace, delete, and similar functionality. function deleteNearSelection(cm, compute) { var ranges = cm.doc.sel.ranges, kill = []; // Build up a set of ranges to kill first, merging overlapping // ranges. for (var i = 0; i < ranges.length; i++) { var toKill = compute(ranges[i]); while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) { var replaced = kill.pop(); if (cmp(replaced.from, toKill.from) < 0) { toKill.from = replaced.from; break; } } kill.push(toKill); } // Next, remove those actual ranges. runInOp(cm, function() { for (var i = kill.length - 1; i >= 0; i--) replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete"); ensureCursorVisible(cm); }); } // Used for horizontal relative motion. Dir is -1 or 1 (left or // right), unit can be "char", "column" (like char, but doesn't // cross line boundaries), "word" (across next word), or "group" (to // the start of next group of word or non-word-non-whitespace // chars). The visually param controls whether, in right-to-left // text, direction 1 means to move towards the next index in the // string, or towards the character to the right of the current // position. The resulting position will have a hitSide=true // property if it reached the end of the document. function findPosH(doc, pos, dir, unit, visually) { var line = pos.line, ch = pos.ch, origDir = dir; var lineObj = getLine(doc, line); function findNextLine() { var l = line + dir; if (l < doc.first || l >= doc.first + doc.size) return false line = l; return lineObj = getLine(doc, l); } function moveOnce(boundToLine) { var next = (visually ? moveVisually : moveLogically)(lineObj, ch, dir, true); if (next == null) { if (!boundToLine && findNextLine()) { if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj); else ch = dir < 0 ? lineObj.text.length : 0; } else return false } else ch = next; return true; } if (unit == "char") { moveOnce() } else if (unit == "column") { moveOnce(true) } else if (unit == "word" || unit == "group") { var sawType = null, group = unit == "group"; var helper = doc.cm && doc.cm.getHelper(pos, "wordChars"); for (var first = true;; first = false) { if (dir < 0 && !moveOnce(!first)) break; var cur = lineObj.text.charAt(ch) || "\n"; var type = isWordChar(cur, helper) ? "w" : group && cur == "\n" ? "n" : !group || /\s/.test(cur) ? null : "p"; if (group && !first && !type) type = "s"; if (sawType && sawType != type) { if (dir < 0) {dir = 1; moveOnce();} break; } if (type) sawType = type; if (dir > 0 && !moveOnce(!first)) break; } } var result = skipAtomic(doc, Pos(line, ch), pos, origDir, true); if (!cmp(pos, result)) result.hitSide = true; return result; } // For relative vertical movement. Dir may be -1 or 1. Unit can be // "page" or "line". The resulting position will have a hitSide=true // property if it reached the end of the document. function findPosV(cm, pos, dir, unit) { var doc = cm.doc, x = pos.left, y; if (unit == "page") { var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight); y = pos.top + dir * (pageSize - (dir < 0 ? 1.5 : .5) * textHeight(cm.display)); } else if (unit == "line") { y = dir > 0 ? pos.bottom + 3 : pos.top - 3; } for (;;) { var target = coordsChar(cm, x, y); if (!target.outside) break; if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break; } y += dir * 5; } return target; } // EDITOR METHODS // The publicly visible API. Note that methodOp(f) means // 'wrap f in an operation, performed on its `this` parameter'. // This is not the complete set of editor methods. Most of the // methods defined on the Doc type are also injected into // CodeMirror.prototype, for backwards compatibility and // convenience. CodeMirror.prototype = { constructor: CodeMirror, focus: function(){window.focus(); this.display.input.focus();}, setOption: function(option, value) { var options = this.options, old = options[option]; if (options[option] == value && option != "mode") return; options[option] = value; if (optionHandlers.hasOwnProperty(option)) operation(this, optionHandlers[option])(this, value, old); }, getOption: function(option) {return this.options[option];}, getDoc: function() {return this.doc;}, addKeyMap: function(map, bottom) { this.state.keyMaps[bottom ? "push" : "unshift"](getKeyMap(map)); }, removeKeyMap: function(map) { var maps = this.state.keyMaps; for (var i = 0; i < maps.length; ++i) if (maps[i] == map || maps[i].name == map) { maps.splice(i, 1); return true; } }, addOverlay: methodOp(function(spec, options) { var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec); if (mode.startState) throw new Error("Overlays may not be stateful."); insertSorted(this.state.overlays, {mode: mode, modeSpec: spec, opaque: options && options.opaque, priority: (options && options.priority) || 0}, function(overlay) { return overlay.priority }) this.state.modeGen++; regChange(this); }), removeOverlay: methodOp(function(spec) { var overlays = this.state.overlays; for (var i = 0; i < overlays.length; ++i) { var cur = overlays[i].modeSpec; if (cur == spec || typeof spec == "string" && cur.name == spec) { overlays.splice(i, 1); this.state.modeGen++; regChange(this); return; } } }), indentLine: methodOp(function(n, dir, aggressive) { if (typeof dir != "string" && typeof dir != "number") { if (dir == null) dir = this.options.smartIndent ? "smart" : "prev"; else dir = dir ? "add" : "subtract"; } if (isLine(this.doc, n)) indentLine(this, n, dir, aggressive); }), indentSelection: methodOp(function(how) { var ranges = this.doc.sel.ranges, end = -1; for (var i = 0; i < ranges.length; i++) { var range = ranges[i]; if (!range.empty()) { var from = range.from(), to = range.to(); var start = Math.max(end, from.line); end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1; for (var j = start; j < end; ++j) indentLine(this, j, how); var newRanges = this.doc.sel.ranges; if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); } else if (range.head.line > end) { indentLine(this, range.head.line, how, true); end = range.head.line; if (i == this.doc.sel.primIndex) ensureCursorVisible(this); } } }), // Fetch the parser token for a given character. Useful for hacks // that want to inspect the mode state (say, for completion). getTokenAt: function(pos, precise) { return takeToken(this, pos, precise); }, getLineTokens: function(line, precise) { return takeToken(this, Pos(line), precise, true); }, getTokenTypeAt: function(pos) { pos = clipPos(this.doc, pos); var styles = getLineStyles(this, getLine(this.doc, pos.line)); var before = 0, after = (styles.length - 1) / 2, ch = pos.ch; var type; if (ch == 0) type = styles[2]; else for (;;) { var mid = (before + after) >> 1; if ((mid ? styles[mid * 2 - 1] : 0) >= ch) after = mid; else if (styles[mid * 2 + 1] < ch) before = mid + 1; else { type = styles[mid * 2 + 2]; break; } } var cut = type ? type.indexOf("cm-overlay ") : -1; return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1); }, getModeAt: function(pos) { var mode = this.doc.mode; if (!mode.innerMode) return mode; return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode; }, getHelper: function(pos, type) { return this.getHelpers(pos, type)[0]; }, getHelpers: function(pos, type) { var found = []; if (!helpers.hasOwnProperty(type)) return found; var help = helpers[type], mode = this.getModeAt(pos); if (typeof mode[type] == "string") { if (help[mode[type]]) found.push(help[mode[type]]); } else if (mode[type]) { for (var i = 0; i < mode[type].length; i++) { var val = help[mode[type][i]]; if (val) found.push(val); } } else if (mode.helperType && help[mode.helperType]) { found.push(help[mode.helperType]); } else if (help[mode.name]) { found.push(help[mode.name]); } for (var i = 0; i < help._global.length; i++) { var cur = help._global[i]; if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) found.push(cur.val); } return found; }, getStateAfter: function(line, precise) { var doc = this.doc; line = clipLine(doc, line == null ? doc.first + doc.size - 1: line); return getStateBefore(this, line + 1, precise); }, cursorCoords: function(start, mode) { var pos, range = this.doc.sel.primary(); if (start == null) pos = range.head; else if (typeof start == "object") pos = clipPos(this.doc, start); else pos = start ? range.from() : range.to(); return cursorCoords(this, pos, mode || "page"); }, charCoords: function(pos, mode) { return charCoords(this, clipPos(this.doc, pos), mode || "page"); }, coordsChar: function(coords, mode) { coords = fromCoordSystem(this, coords, mode || "page"); return coordsChar(this, coords.left, coords.top); }, lineAtHeight: function(height, mode) { height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top; return lineAtHeight(this.doc, height + this.display.viewOffset); }, heightAtLine: function(line, mode) { var end = false, lineObj; if (typeof line == "number") { var last = this.doc.first + this.doc.size - 1; if (line < this.doc.first) line = this.doc.first; else if (line > last) { line = last; end = true; } lineObj = getLine(this.doc, line); } else { lineObj = line; } return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page").top + (end ? this.doc.height - heightAtLine(lineObj) : 0); }, defaultTextHeight: function() { return textHeight(this.display); }, defaultCharWidth: function() { return charWidth(this.display); }, setGutterMarker: methodOp(function(line, gutterID, value) { return changeLine(this.doc, line, "gutter", function(line) { var markers = line.gutterMarkers || (line.gutterMarkers = {}); markers[gutterID] = value; if (!value && isEmpty(markers)) line.gutterMarkers = null; return true; }); }), clearGutter: methodOp(function(gutterID) { var cm = this, doc = cm.doc, i = doc.first; doc.iter(function(line) { if (line.gutterMarkers && line.gutterMarkers[gutterID]) { line.gutterMarkers[gutterID] = null; regLineChange(cm, i, "gutter"); if (isEmpty(line.gutterMarkers)) line.gutterMarkers = null; } ++i; }); }), lineInfo: function(line) { if (typeof line == "number") { if (!isLine(this.doc, line)) return null; var n = line; line = getLine(this.doc, line); if (!line) return null; } else { var n = lineNo(line); if (n == null) return null; } return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, widgets: line.widgets}; }, getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo};}, addWidget: function(pos, node, scroll, vert, horiz) { var display = this.display; pos = cursorCoords(this, clipPos(this.doc, pos)); var top = pos.bottom, left = pos.left; node.style.position = "absolute"; node.setAttribute("cm-ignore-events", "true"); this.display.input.setUneditable(node); display.sizer.appendChild(node); if (vert == "over") { top = pos.top; } else if (vert == "above" || vert == "near") { var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); // Default to positioning above (if specified and possible); otherwise default to positioning below if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) top = pos.top - node.offsetHeight; else if (pos.bottom + node.offsetHeight <= vspace) top = pos.bottom; if (left + node.offsetWidth > hspace) left = hspace - node.offsetWidth; } node.style.top = top + "px"; node.style.left = node.style.right = ""; if (horiz == "right") { left = display.sizer.clientWidth - node.offsetWidth; node.style.right = "0px"; } else { if (horiz == "left") left = 0; else if (horiz == "middle") left = (display.sizer.clientWidth - node.offsetWidth) / 2; node.style.left = left + "px"; } if (scroll) scrollIntoView(this, left, top, left + node.offsetWidth, top + node.offsetHeight); }, triggerOnKeyDown: methodOp(onKeyDown), triggerOnKeyPress: methodOp(onKeyPress), triggerOnKeyUp: onKeyUp, execCommand: function(cmd) { if (commands.hasOwnProperty(cmd)) return commands[cmd].call(null, this); }, triggerElectric: methodOp(function(text) { triggerElectric(this, text); }), findPosH: function(from, amount, unit, visually) { var dir = 1; if (amount < 0) { dir = -1; amount = -amount; } for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { cur = findPosH(this.doc, cur, dir, unit, visually); if (cur.hitSide) break; } return cur; }, moveH: methodOp(function(dir, unit) { var cm = this; cm.extendSelectionsBy(function(range) { if (cm.display.shift || cm.doc.extend || range.empty()) return findPosH(cm.doc, range.head, dir, unit, cm.options.rtlMoveVisually); else return dir < 0 ? range.from() : range.to(); }, sel_move); }), deleteH: methodOp(function(dir, unit) { var sel = this.doc.sel, doc = this.doc; if (sel.somethingSelected()) doc.replaceSelection("", null, "+delete"); else deleteNearSelection(this, function(range) { var other = findPosH(doc, range.head, dir, unit, false); return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}; }); }), findPosV: function(from, amount, unit, goalColumn) { var dir = 1, x = goalColumn; if (amount < 0) { dir = -1; amount = -amount; } for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { var coords = cursorCoords(this, cur, "div"); if (x == null) x = coords.left; else coords.left = x; cur = findPosV(this, coords, dir, unit); if (cur.hitSide) break; } return cur; }, moveV: methodOp(function(dir, unit) { var cm = this, doc = this.doc, goals = []; var collapse = !cm.display.shift && !doc.extend && doc.sel.somethingSelected(); doc.extendSelectionsBy(function(range) { if (collapse) return dir < 0 ? range.from() : range.to(); var headPos = cursorCoords(cm, range.head, "div"); if (range.goalColumn != null) headPos.left = range.goalColumn; goals.push(headPos.left); var pos = findPosV(cm, headPos, dir, unit); if (unit == "page" && range == doc.sel.primary()) addToScrollPos(cm, null, charCoords(cm, pos, "div").top - headPos.top); return pos; }, sel_move); if (goals.length) for (var i = 0; i < doc.sel.ranges.length; i++) doc.sel.ranges[i].goalColumn = goals[i]; }), // Find the word at the given position (as returned by coordsChar). findWordAt: function(pos) { var doc = this.doc, line = getLine(doc, pos.line).text; var start = pos.ch, end = pos.ch; if (line) { var helper = this.getHelper(pos, "wordChars"); if ((pos.xRel < 0 || end == line.length) && start) --start; else ++end; var startChar = line.charAt(start); var check = isWordChar(startChar, helper) ? function(ch) { return isWordChar(ch, helper); } : /\s/.test(startChar) ? function(ch) {return /\s/.test(ch);} : function(ch) {return !/\s/.test(ch) && !isWordChar(ch);}; while (start > 0 && check(line.charAt(start - 1))) --start; while (end < line.length && check(line.charAt(end))) ++end; } return new Range(Pos(pos.line, start), Pos(pos.line, end)); }, toggleOverwrite: function(value) { if (value != null && value == this.state.overwrite) return; if (this.state.overwrite = !this.state.overwrite) addClass(this.display.cursorDiv, "CodeMirror-overwrite"); else rmClass(this.display.cursorDiv, "CodeMirror-overwrite"); signal(this, "overwriteToggle", this, this.state.overwrite); }, hasFocus: function() { return this.display.input.getField() == activeElt(); }, isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit); }, scrollTo: methodOp(function(x, y) { if (x != null || y != null) resolveScrollToPos(this); if (x != null) this.curOp.scrollLeft = x; if (y != null) this.curOp.scrollTop = y; }), getScrollInfo: function() { var scroller = this.display.scroller; return {left: scroller.scrollLeft, top: scroller.scrollTop, height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight, width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth, clientHeight: displayHeight(this), clientWidth: displayWidth(this)}; }, scrollIntoView: methodOp(function(range, margin) { if (range == null) { range = {from: this.doc.sel.primary().head, to: null}; if (margin == null) margin = this.options.cursorScrollMargin; } else if (typeof range == "number") { range = {from: Pos(range, 0), to: null}; } else if (range.from == null) { range = {from: range, to: null}; } if (!range.to) range.to = range.from; range.margin = margin || 0; if (range.from.line != null) { resolveScrollToPos(this); this.curOp.scrollToPos = range; } else { var sPos = calculateScrollPos(this, Math.min(range.from.left, range.to.left), Math.min(range.from.top, range.to.top) - range.margin, Math.max(range.from.right, range.to.right), Math.max(range.from.bottom, range.to.bottom) + range.margin); this.scrollTo(sPos.scrollLeft, sPos.scrollTop); } }), setSize: methodOp(function(width, height) { var cm = this; function interpret(val) { return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; } if (width != null) cm.display.wrapper.style.width = interpret(width); if (height != null) cm.display.wrapper.style.height = interpret(height); if (cm.options.lineWrapping) clearLineMeasurementCache(this); var lineNo = cm.display.viewFrom; cm.doc.iter(lineNo, cm.display.viewTo, function(line) { if (line.widgets) for (var i = 0; i < line.widgets.length; i++) if (line.widgets[i].noHScroll) { regLineChange(cm, lineNo, "widget"); break; } ++lineNo; }); cm.curOp.forceUpdate = true; signal(cm, "refresh", this); }), operation: function(f){return runInOp(this, f);}, refresh: methodOp(function() { var oldHeight = this.display.cachedTextHeight; regChange(this); this.curOp.forceUpdate = true; clearCaches(this); this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop); updateGutterSpace(this); if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5) estimateLineHeights(this); signal(this, "refresh", this); }), swapDoc: methodOp(function(doc) { var old = this.doc; old.cm = null; attachDoc(this, doc); clearCaches(this); this.display.input.reset(); this.scrollTo(doc.scrollLeft, doc.scrollTop); this.curOp.forceScroll = true; signalLater(this, "swapDoc", this, old); return old; }), getInputField: function(){return this.display.input.getField();}, getWrapperElement: function(){return this.display.wrapper;}, getScrollerElement: function(){return this.display.scroller;}, getGutterElement: function(){return this.display.gutters;} }; eventMixin(CodeMirror); // OPTION DEFAULTS // The default configuration options. var defaults = CodeMirror.defaults = {}; // Functions to run when options are changed. var optionHandlers = CodeMirror.optionHandlers = {}; function option(name, deflt, handle, notOnInit) { CodeMirror.defaults[name] = deflt; if (handle) optionHandlers[name] = notOnInit ? function(cm, val, old) {if (old != Init) handle(cm, val, old);} : handle; } // Passed to option handlers when there is no old value. var Init = CodeMirror.Init = {toString: function(){return "CodeMirror.Init";}}; // These two are, on init, called from the constructor because they // have to be initialized before the editor can start at all. option("value", "", function(cm, val) { cm.setValue(val); }, true); option("mode", null, function(cm, val) { cm.doc.modeOption = val; loadMode(cm); }, true); option("indentUnit", 2, loadMode, true); option("indentWithTabs", false); option("smartIndent", true); option("tabSize", 4, function(cm) { resetModeState(cm); clearCaches(cm); regChange(cm); }, true); option("lineSeparator", null, function(cm, val) { cm.doc.lineSep = val; if (!val) return; var newBreaks = [], lineNo = cm.doc.first; cm.doc.iter(function(line) { for (var pos = 0;;) { var found = line.text.indexOf(val, pos); if (found == -1) break; pos = found + val.length; newBreaks.push(Pos(lineNo, found)); } lineNo++; }); for (var i = newBreaks.length - 1; i >= 0; i--) replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)) }); option("specialChars", /[\u0000-\u001f\u007f\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g, function(cm, val, old) { cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g"); if (old != CodeMirror.Init) cm.refresh(); }); option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true); option("electricChars", true); option("inputStyle", mobile ? "contenteditable" : "textarea", function() { throw new Error("inputStyle can not (yet) be changed in a running editor"); // FIXME }, true); option("spellcheck", false, function(cm, val) { cm.getInputField().spellcheck = val }, true); option("rtlMoveVisually", !windows); option("wholeLineUpdateBefore", true); option("theme", "default", function(cm) { themeChanged(cm); guttersChanged(cm); }, true); option("keyMap", "default", function(cm, val, old) { var next = getKeyMap(val); var prev = old != CodeMirror.Init && getKeyMap(old); if (prev && prev.detach) prev.detach(cm, next); if (next.attach) next.attach(cm, prev || null); }); option("extraKeys", null); option("lineWrapping", false, wrappingChanged, true); option("gutters", [], function(cm) { setGuttersForLineNumbers(cm.options); guttersChanged(cm); }, true); option("fixedGutter", true, function(cm, val) { cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0"; cm.refresh(); }, true); option("coverGutterNextToScrollbar", false, function(cm) {updateScrollbars(cm);}, true); option("scrollbarStyle", "native", function(cm) { initScrollbars(cm); updateScrollbars(cm); cm.display.scrollbars.setScrollTop(cm.doc.scrollTop); cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft); }, true); option("lineNumbers", false, function(cm) { setGuttersForLineNumbers(cm.options); guttersChanged(cm); }, true); option("firstLineNumber", 1, guttersChanged, true); option("lineNumberFormatter", function(integer) {return integer;}, guttersChanged, true); option("showCursorWhenSelecting", false, updateSelection, true); option("resetSelectionOnContextMenu", true); option("lineWiseCopyCut", true); option("readOnly", false, function(cm, val) { if (val == "nocursor") { onBlur(cm); cm.display.input.blur(); cm.display.disabled = true; } else { cm.display.disabled = false; } cm.display.input.readOnlyChanged(val) }); option("disableInput", false, function(cm, val) {if (!val) cm.display.input.reset();}, true); option("dragDrop", true, dragDropChanged); option("allowDropFileTypes", null); option("cursorBlinkRate", 530); option("cursorScrollMargin", 0); option("cursorHeight", 1, updateSelection, true); option("singleCursorHeightPerLine", true, updateSelection, true); option("workTime", 100); option("workDelay", 100); option("flattenSpans", true, resetModeState, true); option("addModeClass", false, resetModeState, true); option("pollInterval", 100); option("undoDepth", 200, function(cm, val){cm.doc.history.undoDepth = val;}); option("historyEventDelay", 1250); option("viewportMargin", 10, function(cm){cm.refresh();}, true); option("maxHighlightLength", 10000, resetModeState, true); option("moveInputWithCursor", true, function(cm, val) { if (!val) cm.display.input.resetPosition(); }); option("tabindex", null, function(cm, val) { cm.display.input.getField().tabIndex = val || ""; }); option("autofocus", null); // MODE DEFINITION AND QUERYING // Known modes, by name and by MIME var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {}; // Extra arguments are stored as the mode's dependencies, which is // used by (legacy) mechanisms like loadmode.js to automatically // load a mode. (Preferred mechanism is the require/define calls.) CodeMirror.defineMode = function(name, mode) { if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name; if (arguments.length > 2) mode.dependencies = Array.prototype.slice.call(arguments, 2); modes[name] = mode; }; CodeMirror.defineMIME = function(mime, spec) { mimeModes[mime] = spec; }; // Given a MIME type, a {name, ...options} config object, or a name // string, return a mode config object. CodeMirror.resolveMode = function(spec) { if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { spec = mimeModes[spec]; } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { var found = mimeModes[spec.name]; if (typeof found == "string") found = {name: found}; spec = createObj(found, spec); spec.name = found.name; } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { return CodeMirror.resolveMode("application/xml"); } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+json$/.test(spec)) { return CodeMirror.resolveMode("application/json"); } if (typeof spec == "string") return {name: spec}; else return spec || {name: "null"}; }; // Given a mode spec (anything that resolveMode accepts), find and // initialize an actual mode object. CodeMirror.getMode = function(options, spec) { var spec = CodeMirror.resolveMode(spec); var mfactory = modes[spec.name]; if (!mfactory) return CodeMirror.getMode(options, "text/plain"); var modeObj = mfactory(options, spec); if (modeExtensions.hasOwnProperty(spec.name)) { var exts = modeExtensions[spec.name]; for (var prop in exts) { if (!exts.hasOwnProperty(prop)) continue; if (modeObj.hasOwnProperty(prop)) modeObj["_" + prop] = modeObj[prop]; modeObj[prop] = exts[prop]; } } modeObj.name = spec.name; if (spec.helperType) modeObj.helperType = spec.helperType; if (spec.modeProps) for (var prop in spec.modeProps) modeObj[prop] = spec.modeProps[prop]; return modeObj; }; // Minimal default mode. CodeMirror.defineMode("null", function() { return {token: function(stream) {stream.skipToEnd();}}; }); CodeMirror.defineMIME("text/plain", "null"); // This can be used to attach properties to mode objects from // outside the actual mode definition. var modeExtensions = CodeMirror.modeExtensions = {}; CodeMirror.extendMode = function(mode, properties) { var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}); copyObj(properties, exts); }; // EXTENSIONS CodeMirror.defineExtension = function(name, func) { CodeMirror.prototype[name] = func; }; CodeMirror.defineDocExtension = function(name, func) { Doc.prototype[name] = func; }; CodeMirror.defineOption = option; var initHooks = []; CodeMirror.defineInitHook = function(f) {initHooks.push(f);}; var helpers = CodeMirror.helpers = {}; CodeMirror.registerHelper = function(type, name, value) { if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {_global: []}; helpers[type][name] = value; }; CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { CodeMirror.registerHelper(type, name, value); helpers[type]._global.push({pred: predicate, val: value}); }; // MODE STATE HANDLING // Utility functions for working with state. Exported because nested // modes need to do this for their inner modes. var copyState = CodeMirror.copyState = function(mode, state) { if (state === true) return state; if (mode.copyState) return mode.copyState(state); var nstate = {}; for (var n in state) { var val = state[n]; if (val instanceof Array) val = val.concat([]); nstate[n] = val; } return nstate; }; var startState = CodeMirror.startState = function(mode, a1, a2) { return mode.startState ? mode.startState(a1, a2) : true; }; // Given a mode and a state (for that mode), find the inner mode and // state at the position that the state refers to. CodeMirror.innerMode = function(mode, state) { while (mode.innerMode) { var info = mode.innerMode(state); if (!info || info.mode == mode) break; state = info.state; mode = info.mode; } return info || {mode: mode, state: state}; }; // STANDARD COMMANDS // Commands are parameter-less actions that can be performed on an // editor, mostly used for keybindings. var commands = CodeMirror.commands = { selectAll: function(cm) {cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);}, singleSelection: function(cm) { cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); }, killLine: function(cm) { deleteNearSelection(cm, function(range) { if (range.empty()) { var len = getLine(cm.doc, range.head.line).text.length; if (range.head.ch == len && range.head.line < cm.lastLine()) return {from: range.head, to: Pos(range.head.line + 1, 0)}; else return {from: range.head, to: Pos(range.head.line, len)}; } else { return {from: range.from(), to: range.to()}; } }); }, deleteLine: function(cm) { deleteNearSelection(cm, function(range) { return {from: Pos(range.from().line, 0), to: clipPos(cm.doc, Pos(range.to().line + 1, 0))}; }); }, delLineLeft: function(cm) { deleteNearSelection(cm, function(range) { return {from: Pos(range.from().line, 0), to: range.from()}; }); }, delWrappedLineLeft: function(cm) { deleteNearSelection(cm, function(range) { var top = cm.charCoords(range.head, "div").top + 5; var leftPos = cm.coordsChar({left: 0, top: top}, "div"); return {from: leftPos, to: range.from()}; }); }, delWrappedLineRight: function(cm) { deleteNearSelection(cm, function(range) { var top = cm.charCoords(range.head, "div").top + 5; var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); return {from: range.from(), to: rightPos }; }); }, undo: function(cm) {cm.undo();}, redo: function(cm) {cm.redo();}, undoSelection: function(cm) {cm.undoSelection();}, redoSelection: function(cm) {cm.redoSelection();}, goDocStart: function(cm) {cm.extendSelection(Pos(cm.firstLine(), 0));}, goDocEnd: function(cm) {cm.extendSelection(Pos(cm.lastLine()));}, goLineStart: function(cm) { cm.extendSelectionsBy(function(range) { return lineStart(cm, range.head.line); }, {origin: "+move", bias: 1}); }, goLineStartSmart: function(cm) { cm.extendSelectionsBy(function(range) { return lineStartSmart(cm, range.head); }, {origin: "+move", bias: 1}); }, goLineEnd: function(cm) { cm.extendSelectionsBy(function(range) { return lineEnd(cm, range.head.line); }, {origin: "+move", bias: -1}); }, goLineRight: function(cm) { cm.extendSelectionsBy(function(range) { var top = cm.charCoords(range.head, "div").top + 5; return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); }, sel_move); }, goLineLeft: function(cm) { cm.extendSelectionsBy(function(range) { var top = cm.charCoords(range.head, "div").top + 5; return cm.coordsChar({left: 0, top: top}, "div"); }, sel_move); }, goLineLeftSmart: function(cm) { cm.extendSelectionsBy(function(range) { var top = cm.charCoords(range.head, "div").top + 5; var pos = cm.coordsChar({left: 0, top: top}, "div"); if (pos.ch < cm.getLine(pos.line).search(/\S/)) return lineStartSmart(cm, range.head); return pos; }, sel_move); }, goLineUp: function(cm) {cm.moveV(-1, "line");}, goLineDown: function(cm) {cm.moveV(1, "line");}, goPageUp: function(cm) {cm.moveV(-1, "page");}, goPageDown: function(cm) {cm.moveV(1, "page");}, goCharLeft: function(cm) {cm.moveH(-1, "char");}, goCharRight: function(cm) {cm.moveH(1, "char");}, goColumnLeft: function(cm) {cm.moveH(-1, "column");}, goColumnRight: function(cm) {cm.moveH(1, "column");}, goWordLeft: function(cm) {cm.moveH(-1, "word");}, goGroupRight: function(cm) {cm.moveH(1, "group");}, goGroupLeft: function(cm) {cm.moveH(-1, "group");}, goWordRight: function(cm) {cm.moveH(1, "word");}, delCharBefore: function(cm) {cm.deleteH(-1, "char");}, delCharAfter: function(cm) {cm.deleteH(1, "char");}, delWordBefore: function(cm) {cm.deleteH(-1, "word");}, delWordAfter: function(cm) {cm.deleteH(1, "word");}, delGroupBefore: function(cm) {cm.deleteH(-1, "group");}, delGroupAfter: function(cm) {cm.deleteH(1, "group");}, indentAuto: function(cm) {cm.indentSelection("smart");}, indentMore: function(cm) {cm.indentSelection("add");}, indentLess: function(cm) {cm.indentSelection("subtract");}, insertTab: function(cm) {cm.replaceSelection("\t");}, insertSoftTab: function(cm) { var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize; for (var i = 0; i < ranges.length; i++) { var pos = ranges[i].from(); var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize); spaces.push(spaceStr(tabSize - col % tabSize)); } cm.replaceSelections(spaces); }, defaultTab: function(cm) { if (cm.somethingSelected()) cm.indentSelection("add"); else cm.execCommand("insertTab"); }, transposeChars: function(cm) { runInOp(cm, function() { var ranges = cm.listSelections(), newSel = []; for (var i = 0; i < ranges.length; i++) { var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text; if (line) { if (cur.ch == line.length) cur = new Pos(cur.line, cur.ch - 1); if (cur.ch > 0) { cur = new Pos(cur.line, cur.ch + 1); cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), Pos(cur.line, cur.ch - 2), cur, "+transpose"); } else if (cur.line > cm.doc.first) { var prev = getLine(cm.doc, cur.line - 1).text; if (prev) cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + prev.charAt(prev.length - 1), Pos(cur.line - 1, prev.length - 1), Pos(cur.line, 1), "+transpose"); } } newSel.push(new Range(cur, cur)); } cm.setSelections(newSel); }); }, newlineAndIndent: function(cm) { runInOp(cm, function() { var len = cm.listSelections().length; for (var i = 0; i < len; i++) { var range = cm.listSelections()[i]; cm.replaceRange(cm.doc.lineSeparator(), range.anchor, range.head, "+input"); cm.indentLine(range.from().line + 1, null, true); } ensureCursorVisible(cm); }); }, openLine: function(cm) {cm.replaceSelection("\n", "start")}, toggleOverwrite: function(cm) {cm.toggleOverwrite();} }; // STANDARD KEYMAPS var keyMap = CodeMirror.keyMap = {}; keyMap.basic = { "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", "Tab": "defaultTab", "Shift-Tab": "indentAuto", "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", "Esc": "singleSelection" }; // Note that the save and find-related commands aren't defined by // default. User code or addons can define them. Unknown commands // are simply ignored. keyMap.pcDefault = { "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", fallthrough: "basic" }; // Very basic readline/emacs-style bindings, which are standard on Mac. keyMap.emacsy = { "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars", "Ctrl-O": "openLine" }; keyMap.macDefault = { "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", fallthrough: ["basic", "emacsy"] }; keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; // KEYMAP DISPATCH function normalizeKeyName(name) { var parts = name.split(/-(?!$)/), name = parts[parts.length - 1]; var alt, ctrl, shift, cmd; for (var i = 0; i < parts.length - 1; i++) { var mod = parts[i]; if (/^(cmd|meta|m)$/i.test(mod)) cmd = true; else if (/^a(lt)?$/i.test(mod)) alt = true; else if (/^(c|ctrl|control)$/i.test(mod)) ctrl = true; else if (/^s(hift)$/i.test(mod)) shift = true; else throw new Error("Unrecognized modifier name: " + mod); } if (alt) name = "Alt-" + name; if (ctrl) name = "Ctrl-" + name; if (cmd) name = "Cmd-" + name; if (shift) name = "Shift-" + name; return name; } // This is a kludge to keep keymaps mostly working as raw objects // (backwards compatibility) while at the same time support features // like normalization and multi-stroke key bindings. It compiles a // new normalized keymap, and then updates the old object to reflect // this. CodeMirror.normalizeKeyMap = function(keymap) { var copy = {}; for (var keyname in keymap) if (keymap.hasOwnProperty(keyname)) { var value = keymap[keyname]; if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) continue; if (value == "...") { delete keymap[keyname]; continue; } var keys = map(keyname.split(" "), normalizeKeyName); for (var i = 0; i < keys.length; i++) { var val, name; if (i == keys.length - 1) { name = keys.join(" "); val = value; } else { name = keys.slice(0, i + 1).join(" "); val = "..."; } var prev = copy[name]; if (!prev) copy[name] = val; else if (prev != val) throw new Error("Inconsistent bindings for " + name); } delete keymap[keyname]; } for (var prop in copy) keymap[prop] = copy[prop]; return keymap; }; var lookupKey = CodeMirror.lookupKey = function(key, map, handle, context) { map = getKeyMap(map); var found = map.call ? map.call(key, context) : map[key]; if (found === false) return "nothing"; if (found === "...") return "multi"; if (found != null && handle(found)) return "handled"; if (map.fallthrough) { if (Object.prototype.toString.call(map.fallthrough) != "[object Array]") return lookupKey(key, map.fallthrough, handle, context); for (var i = 0; i < map.fallthrough.length; i++) { var result = lookupKey(key, map.fallthrough[i], handle, context); if (result) return result; } } }; // Modifier key presses don't count as 'real' key presses for the // purpose of keymap fallthrough. var isModifierKey = CodeMirror.isModifierKey = function(value) { var name = typeof value == "string" ? value : keyNames[value.keyCode]; return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod"; }; // Look up the name of a key as indicated by an event object. var keyName = CodeMirror.keyName = function(event, noShift) { if (presto && event.keyCode == 34 && event["char"]) return false; var base = keyNames[event.keyCode], name = base; if (name == null || event.altGraphKey) return false; if (event.altKey && base != "Alt") name = "Alt-" + name; if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != "Ctrl") name = "Ctrl-" + name; if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != "Cmd") name = "Cmd-" + name; if (!noShift && event.shiftKey && base != "Shift") name = "Shift-" + name; return name; }; function getKeyMap(val) { return typeof val == "string" ? keyMap[val] : val; } // FROMTEXTAREA CodeMirror.fromTextArea = function(textarea, options) { options = options ? copyObj(options) : {}; options.value = textarea.value; if (!options.tabindex && textarea.tabIndex) options.tabindex = textarea.tabIndex; if (!options.placeholder && textarea.placeholder) options.placeholder = textarea.placeholder; // Set autofocus to true if this textarea is focused, or if it has // autofocus and no other element is focused. if (options.autofocus == null) { var hasFocus = activeElt(); options.autofocus = hasFocus == textarea || textarea.getAttribute("autofocus") != null && hasFocus == document.body; } function save() {textarea.value = cm.getValue();} if (textarea.form) { on(textarea.form, "submit", save); // Deplorable hack to make the submit method do the right thing. if (!options.leaveSubmitMethodAlone) { var form = textarea.form, realSubmit = form.submit; try { var wrappedSubmit = form.submit = function() { save(); form.submit = realSubmit; form.submit(); form.submit = wrappedSubmit; }; } catch(e) {} } } options.finishInit = function(cm) { cm.save = save; cm.getTextArea = function() { return textarea; }; cm.toTextArea = function() { cm.toTextArea = isNaN; // Prevent this from being ran twice save(); textarea.parentNode.removeChild(cm.getWrapperElement()); textarea.style.display = ""; if (textarea.form) { off(textarea.form, "submit", save); if (typeof textarea.form.submit == "function") textarea.form.submit = realSubmit; } }; }; textarea.style.display = "none"; var cm = CodeMirror(function(node) { textarea.parentNode.insertBefore(node, textarea.nextSibling); }, options); return cm; }; // STRING STREAM // Fed to the mode parsers, provides helper functions to make // parsers more succinct. var StringStream = CodeMirror.StringStream = function(string, tabSize) { this.pos = this.start = 0; this.string = string; this.tabSize = tabSize || 8; this.lastColumnPos = this.lastColumnValue = 0; this.lineStart = 0; }; StringStream.prototype = { eol: function() {return this.pos >= this.string.length;}, sol: function() {return this.pos == this.lineStart;}, peek: function() {return this.string.charAt(this.pos) || undefined;}, next: function() { if (this.pos < this.string.length) return this.string.charAt(this.pos++); }, eat: function(match) { var ch = this.string.charAt(this.pos); if (typeof match == "string") var ok = ch == match; else var ok = ch && (match.test ? match.test(ch) : match(ch)); if (ok) {++this.pos; return ch;} }, eatWhile: function(match) { var start = this.pos; while (this.eat(match)){} return this.pos > start; }, eatSpace: function() { var start = this.pos; while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; return this.pos > start; }, skipToEnd: function() {this.pos = this.string.length;}, skipTo: function(ch) { var found = this.string.indexOf(ch, this.pos); if (found > -1) {this.pos = found; return true;} }, backUp: function(n) {this.pos -= n;}, column: function() { if (this.lastColumnPos < this.start) { this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue); this.lastColumnPos = this.start; } return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); }, indentation: function() { return countColumn(this.string, null, this.tabSize) - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); }, match: function(pattern, consume, caseInsensitive) { if (typeof pattern == "string") { var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; var substr = this.string.substr(this.pos, pattern.length); if (cased(substr) == cased(pattern)) { if (consume !== false) this.pos += pattern.length; return true; } } else { var match = this.string.slice(this.pos).match(pattern); if (match && match.index > 0) return null; if (match && consume !== false) this.pos += match[0].length; return match; } }, current: function(){return this.string.slice(this.start, this.pos);}, hideFirstChars: function(n, inner) { this.lineStart += n; try { return inner(); } finally { this.lineStart -= n; } } }; // TEXTMARKERS // Created with markText and setBookmark methods. A TextMarker is a // handle that can be used to clear or find a marked position in the // document. Line objects hold arrays (markedSpans) containing // {from, to, marker} object pointing to such marker objects, and // indicating that such a marker is present on that line. Multiple // lines may point to the same marker when it spans across lines. // The spans will have null for their from/to properties when the // marker continues beyond the start/end of the line. Markers have // links back to the lines they currently touch. var nextMarkerId = 0; var TextMarker = CodeMirror.TextMarker = function(doc, type) { this.lines = []; this.type = type; this.doc = doc; this.id = ++nextMarkerId; }; eventMixin(TextMarker); // Clear the marker. TextMarker.prototype.clear = function() { if (this.explicitlyCleared) return; var cm = this.doc.cm, withOp = cm && !cm.curOp; if (withOp) startOperation(cm); if (hasHandler(this, "clear")) { var found = this.find(); if (found) signalLater(this, "clear", found.from, found.to); } var min = null, max = null; for (var i = 0; i < this.lines.length; ++i) { var line = this.lines[i]; var span = getMarkedSpanFor(line.markedSpans, this); if (cm && !this.collapsed) regLineChange(cm, lineNo(line), "text"); else if (cm) { if (span.to != null) max = lineNo(line); if (span.from != null) min = lineNo(line); } line.markedSpans = removeMarkedSpan(line.markedSpans, span); if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) updateLineHeight(line, textHeight(cm.display)); } if (cm && this.collapsed && !cm.options.lineWrapping) for (var i = 0; i < this.lines.length; ++i) { var visual = visualLine(this.lines[i]), len = lineLength(visual); if (len > cm.display.maxLineLength) { cm.display.maxLine = visual; cm.display.maxLineLength = len; cm.display.maxLineChanged = true; } } if (min != null && cm && this.collapsed) regChange(cm, min, max + 1); this.lines.length = 0; this.explicitlyCleared = true; if (this.atomic && this.doc.cantEdit) { this.doc.cantEdit = false; if (cm) reCheckSelection(cm.doc); } if (cm) signalLater(cm, "markerCleared", cm, this); if (withOp) endOperation(cm); if (this.parent) this.parent.clear(); }; // Find the position of the marker in the document. Returns a {from, // to} object by default. Side can be passed to get a specific side // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the // Pos objects returned contain a line object, rather than a line // number (used to prevent looking up the same line twice). TextMarker.prototype.find = function(side, lineObj) { if (side == null && this.type == "bookmark") side = 1; var from, to; for (var i = 0; i < this.lines.length; ++i) { var line = this.lines[i]; var span = getMarkedSpanFor(line.markedSpans, this); if (span.from != null) { from = Pos(lineObj ? line : lineNo(line), span.from); if (side == -1) return from; } if (span.to != null) { to = Pos(lineObj ? line : lineNo(line), span.to); if (side == 1) return to; } } return from && {from: from, to: to}; }; // Signals that the marker's widget changed, and surrounding layout // should be recomputed. TextMarker.prototype.changed = function() { var pos = this.find(-1, true), widget = this, cm = this.doc.cm; if (!pos || !cm) return; runInOp(cm, function() { var line = pos.line, lineN = lineNo(pos.line); var view = findViewForLine(cm, lineN); if (view) { clearLineMeasurementCacheFor(view); cm.curOp.selectionChanged = cm.curOp.forceUpdate = true; } cm.curOp.updateMaxLine = true; if (!lineIsHidden(widget.doc, line) && widget.height != null) { var oldHeight = widget.height; widget.height = null; var dHeight = widgetHeight(widget) - oldHeight; if (dHeight) updateLineHeight(line, line.height + dHeight); } }); }; TextMarker.prototype.attachLine = function(line) { if (!this.lines.length && this.doc.cm) { var op = this.doc.cm.curOp; if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); } this.lines.push(line); }; TextMarker.prototype.detachLine = function(line) { this.lines.splice(indexOf(this.lines, line), 1); if (!this.lines.length && this.doc.cm) { var op = this.doc.cm.curOp; (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); } }; // Collapsed markers have unique ids, in order to be able to order // them, which is needed for uniquely determining an outer marker // when they overlap (they may nest, but not partially overlap). var nextMarkerId = 0; // Create a marker, wire it up to the right lines, and function markText(doc, from, to, options, type) { // Shared markers (across linked documents) are handled separately // (markTextShared will call out to this again, once per // document). if (options && options.shared) return markTextShared(doc, from, to, options, type); // Ensure we are in an operation. if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type); var marker = new TextMarker(doc, type), diff = cmp(from, to); if (options) copyObj(options, marker, false); // Don't connect empty markers unless clearWhenEmpty is false if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) return marker; if (marker.replacedWith) { // Showing up as a widget implies collapsed (widget replaces text) marker.collapsed = true; marker.widgetNode = elt("span", [marker.replacedWith], "CodeMirror-widget"); if (!options.handleMouseEvents) marker.widgetNode.setAttribute("cm-ignore-events", "true"); if (options.insertLeft) marker.widgetNode.insertLeft = true; } if (marker.collapsed) { if (conflictingCollapsedRange(doc, from.line, from, to, marker) || from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) throw new Error("Inserting collapsed marker partially overlapping an existing one"); sawCollapsedSpans = true; } if (marker.addToHistory) addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN); var curLine = from.line, cm = doc.cm, updateMaxLine; doc.iter(curLine, to.line + 1, function(line) { if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) updateMaxLine = true; if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0); addMarkedSpan(line, new MarkedSpan(marker, curLine == from.line ? from.ch : null, curLine == to.line ? to.ch : null)); ++curLine; }); // lineIsHidden depends on the presence of the spans, so needs a second pass if (marker.collapsed) doc.iter(from.line, to.line + 1, function(line) { if (lineIsHidden(doc, line)) updateLineHeight(line, 0); }); if (marker.clearOnEnter) on(marker, "beforeCursorEnter", function() { marker.clear(); }); if (marker.readOnly) { sawReadOnlySpans = true; if (doc.history.done.length || doc.history.undone.length) doc.clearHistory(); } if (marker.collapsed) { marker.id = ++nextMarkerId; marker.atomic = true; } if (cm) { // Sync editor state if (updateMaxLine) cm.curOp.updateMaxLine = true; if (marker.collapsed) regChange(cm, from.line, to.line + 1); else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css) for (var i = from.line; i <= to.line; i++) regLineChange(cm, i, "text"); if (marker.atomic) reCheckSelection(cm.doc); signalLater(cm, "markerAdded", cm, marker); } return marker; } // SHARED TEXTMARKERS // A shared marker spans multiple linked documents. It is // implemented as a meta-marker-object controlling multiple normal // markers. var SharedTextMarker = CodeMirror.SharedTextMarker = function(markers, primary) { this.markers = markers; this.primary = primary; for (var i = 0; i < markers.length; ++i) markers[i].parent = this; }; eventMixin(SharedTextMarker); SharedTextMarker.prototype.clear = function() { if (this.explicitlyCleared) return; this.explicitlyCleared = true; for (var i = 0; i < this.markers.length; ++i) this.markers[i].clear(); signalLater(this, "clear"); }; SharedTextMarker.prototype.find = function(side, lineObj) { return this.primary.find(side, lineObj); }; function markTextShared(doc, from, to, options, type) { options = copyObj(options); options.shared = false; var markers = [markText(doc, from, to, options, type)], primary = markers[0]; var widget = options.widgetNode; linkedDocs(doc, function(doc) { if (widget) options.widgetNode = widget.cloneNode(true); markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)); for (var i = 0; i < doc.linked.length; ++i) if (doc.linked[i].isParent) return; primary = lst(markers); }); return new SharedTextMarker(markers, primary); } function findSharedMarkers(doc) { return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function(m) { return m.parent; }); } function copySharedMarkers(doc, markers) { for (var i = 0; i < markers.length; i++) { var marker = markers[i], pos = marker.find(); var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to); if (cmp(mFrom, mTo)) { var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type); marker.markers.push(subMark); subMark.parent = marker; } } } function detachSharedMarkers(markers) { for (var i = 0; i < markers.length; i++) { var marker = markers[i], linked = [marker.primary.doc];; linkedDocs(marker.primary.doc, function(d) { linked.push(d); }); for (var j = 0; j < marker.markers.length; j++) { var subMarker = marker.markers[j]; if (indexOf(linked, subMarker.doc) == -1) { subMarker.parent = null; marker.markers.splice(j--, 1); } } } } // TEXTMARKER SPANS function MarkedSpan(marker, from, to) { this.marker = marker; this.from = from; this.to = to; } // Search an array of spans for a span matching the given marker. function getMarkedSpanFor(spans, marker) { if (spans) for (var i = 0; i < spans.length; ++i) { var span = spans[i]; if (span.marker == marker) return span; } } // Remove a span from an array, returning undefined if no spans are // left (we don't store arrays for lines without spans). function removeMarkedSpan(spans, span) { for (var r, i = 0; i < spans.length; ++i) if (spans[i] != span) (r || (r = [])).push(spans[i]); return r; } // Add a span to a line. function addMarkedSpan(line, span) { line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span]; span.marker.attachLine(line); } // Used for the algorithm that adjusts markers for a change in the // document. These functions cut an array of spans at a given // character position, returning an array of remaining chunks (or // undefined if nothing remains). function markedSpansBefore(old, startCh, isInsert) { if (old) for (var i = 0, nw; i < old.length; ++i) { var span = old[i], marker = span.marker; var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh); (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)); } } return nw; } function markedSpansAfter(old, endCh, isInsert) { if (old) for (var i = 0, nw; i < old.length; ++i) { var span = old[i], marker = span.marker; var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh); (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, span.to == null ? null : span.to - endCh)); } } return nw; } // Given a change object, compute the new set of marker spans that // cover the line in which the change took place. Removes spans // entirely within the change, reconnects spans belonging to the // same marker that appear on both sides of the change, and cuts off // spans partially within the change. Returns an array of span // arrays with one element for each line in (after) the change. function stretchSpansOverChange(doc, change) { if (change.full) return null; var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans; var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; if (!oldFirst && !oldLast) return null; var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0; // Get the spans that 'stick out' on both sides var first = markedSpansBefore(oldFirst, startCh, isInsert); var last = markedSpansAfter(oldLast, endCh, isInsert); // Next, merge those two ends var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0); if (first) { // Fix up .to properties of first for (var i = 0; i < first.length; ++i) { var span = first[i]; if (span.to == null) { var found = getMarkedSpanFor(last, span.marker); if (!found) span.to = startCh; else if (sameLine) span.to = found.to == null ? null : found.to + offset; } } } if (last) { // Fix up .from in last (or move them into first in case of sameLine) for (var i = 0; i < last.length; ++i) { var span = last[i]; if (span.to != null) span.to += offset; if (span.from == null) { var found = getMarkedSpanFor(first, span.marker); if (!found) { span.from = offset; if (sameLine) (first || (first = [])).push(span); } } else { span.from += offset; if (sameLine) (first || (first = [])).push(span); } } } // Make sure we didn't create any zero-length spans if (first) first = clearEmptySpans(first); if (last && last != first) last = clearEmptySpans(last); var newMarkers = [first]; if (!sameLine) { // Fill gap with whole-line-spans var gap = change.text.length - 2, gapMarkers; if (gap > 0 && first) for (var i = 0; i < first.length; ++i) if (first[i].to == null) (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i].marker, null, null)); for (var i = 0; i < gap; ++i) newMarkers.push(gapMarkers); newMarkers.push(last); } return newMarkers; } // Remove spans that are empty and don't have a clearWhenEmpty // option of false. function clearEmptySpans(spans) { for (var i = 0; i < spans.length; ++i) { var span = spans[i]; if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) spans.splice(i--, 1); } if (!spans.length) return null; return spans; } // Used for un/re-doing changes from the history. Combines the // result of computing the existing spans with the set of spans that // existed in the history (so that deleting around a span and then // undoing brings back the span). function mergeOldSpans(doc, change) { var old = getOldSpans(doc, change); var stretched = stretchSpansOverChange(doc, change); if (!old) return stretched; if (!stretched) return old; for (var i = 0; i < old.length; ++i) { var oldCur = old[i], stretchCur = stretched[i]; if (oldCur && stretchCur) { spans: for (var j = 0; j < stretchCur.length; ++j) { var span = stretchCur[j]; for (var k = 0; k < oldCur.length; ++k) if (oldCur[k].marker == span.marker) continue spans; oldCur.push(span); } } else if (stretchCur) { old[i] = stretchCur; } } return old; } // Used to 'clip' out readOnly ranges when making a change. function removeReadOnlyRanges(doc, from, to) { var markers = null; doc.iter(from.line, to.line + 1, function(line) { if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) { var mark = line.markedSpans[i].marker; if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) (markers || (markers = [])).push(mark); } }); if (!markers) return null; var parts = [{from: from, to: to}]; for (var i = 0; i < markers.length; ++i) { var mk = markers[i], m = mk.find(0); for (var j = 0; j < parts.length; ++j) { var p = parts[j]; if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) continue; var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to); if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) newParts.push({from: p.from, to: m.from}); if (dto > 0 || !mk.inclusiveRight && !dto) newParts.push({from: m.to, to: p.to}); parts.splice.apply(parts, newParts); j += newParts.length - 1; } } return parts; } // Connect or disconnect spans from a line. function detachMarkedSpans(line) { var spans = line.markedSpans; if (!spans) return; for (var i = 0; i < spans.length; ++i) spans[i].marker.detachLine(line); line.markedSpans = null; } function attachMarkedSpans(line, spans) { if (!spans) return; for (var i = 0; i < spans.length; ++i) spans[i].marker.attachLine(line); line.markedSpans = spans; } // Helpers used when computing which overlapping collapsed span // counts as the larger one. function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; } function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; } // Returns a number indicating which of two overlapping collapsed // spans is larger (and thus includes the other). Falls back to // comparing ids when the spans cover exactly the same range. function compareCollapsedMarkers(a, b) { var lenDiff = a.lines.length - b.lines.length; if (lenDiff != 0) return lenDiff; var aPos = a.find(), bPos = b.find(); var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b); if (fromCmp) return -fromCmp; var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b); if (toCmp) return toCmp; return b.id - a.id; } // Find out whether a line ends or starts in a collapsed span. If // so, return the marker for that span. function collapsedSpanAtSide(line, start) { var sps = sawCollapsedSpans && line.markedSpans, found; if (sps) for (var sp, i = 0; i < sps.length; ++i) { sp = sps[i]; if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && (!found || compareCollapsedMarkers(found, sp.marker) < 0)) found = sp.marker; } return found; } function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true); } function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false); } // Test whether there exists a collapsed span that partially // overlaps (covers the start or end, but not both) of a new span. // Such overlap is not allowed. function conflictingCollapsedRange(doc, lineNo, from, to, marker) { var line = getLine(doc, lineNo); var sps = sawCollapsedSpans && line.markedSpans; if (sps) for (var i = 0; i < sps.length; ++i) { var sp = sps[i]; if (!sp.marker.collapsed) continue; var found = sp.marker.find(0); var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue; if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) || fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0)) return true; } } // A visual line is a line as drawn on the screen. Folding, for // example, can cause multiple logical lines to appear on the same // visual line. This finds the start of the visual line that the // given line is part of (usually that is the line itself). function visualLine(line) { var merged; while (merged = collapsedSpanAtStart(line)) line = merged.find(-1, true).line; return line; } // Returns an array of logical lines that continue the visual line // started by the argument, or undefined if there are no such lines. function visualLineContinued(line) { var merged, lines; while (merged = collapsedSpanAtEnd(line)) { line = merged.find(1, true).line; (lines || (lines = [])).push(line); } return lines; } // Get the line number of the start of the visual line that the // given line number is part of. function visualLineNo(doc, lineN) { var line = getLine(doc, lineN), vis = visualLine(line); if (line == vis) return lineN; return lineNo(vis); } // Get the line number of the start of the next visual line after // the given line. function visualLineEndNo(doc, lineN) { if (lineN > doc.lastLine()) return lineN; var line = getLine(doc, lineN), merged; if (!lineIsHidden(doc, line)) return lineN; while (merged = collapsedSpanAtEnd(line)) line = merged.find(1, true).line; return lineNo(line) + 1; } // Compute whether a line is hidden. Lines count as hidden when they // are part of a visual line that starts with another line, or when // they are entirely covered by collapsed, non-widget span. function lineIsHidden(doc, line) { var sps = sawCollapsedSpans && line.markedSpans; if (sps) for (var sp, i = 0; i < sps.length; ++i) { sp = sps[i]; if (!sp.marker.collapsed) continue; if (sp.from == null) return true; if (sp.marker.widgetNode) continue; if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) return true; } } function lineIsHiddenInner(doc, line, span) { if (span.to == null) { var end = span.marker.find(1, true); return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)); } if (span.marker.inclusiveRight && span.to == line.text.length) return true; for (var sp, i = 0; i < line.markedSpans.length; ++i) { sp = line.markedSpans[i]; if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && (sp.to == null || sp.to != span.from) && (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && lineIsHiddenInner(doc, line, sp)) return true; } } // LINE WIDGETS // Line widgets are block elements displayed above or below a line. var LineWidget = CodeMirror.LineWidget = function(doc, node, options) { if (options) for (var opt in options) if (options.hasOwnProperty(opt)) this[opt] = options[opt]; this.doc = doc; this.node = node; }; eventMixin(LineWidget); function adjustScrollWhenAboveVisible(cm, line, diff) { if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) addToScrollPos(cm, null, diff); } LineWidget.prototype.clear = function() { var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line); if (no == null || !ws) return; for (var i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1); if (!ws.length) line.widgets = null; var height = widgetHeight(this); updateLineHeight(line, Math.max(0, line.height - height)); if (cm) runInOp(cm, function() { adjustScrollWhenAboveVisible(cm, line, -height); regLineChange(cm, no, "widget"); }); }; LineWidget.prototype.changed = function() { var oldH = this.height, cm = this.doc.cm, line = this.line; this.height = null; var diff = widgetHeight(this) - oldH; if (!diff) return; updateLineHeight(line, line.height + diff); if (cm) runInOp(cm, function() { cm.curOp.forceUpdate = true; adjustScrollWhenAboveVisible(cm, line, diff); }); }; function widgetHeight(widget) { if (widget.height != null) return widget.height; var cm = widget.doc.cm; if (!cm) return 0; if (!contains(document.body, widget.node)) { var parentStyle = "position: relative;"; if (widget.coverGutter) parentStyle += "margin-left: -" + cm.display.gutters.offsetWidth + "px;"; if (widget.noHScroll) parentStyle += "width: " + cm.display.wrapper.clientWidth + "px;"; removeChildrenAndAdd(cm.display.measure, elt("div", [widget.node], null, parentStyle)); } return widget.height = widget.node.parentNode.offsetHeight; } function addLineWidget(doc, handle, node, options) { var widget = new LineWidget(doc, node, options); var cm = doc.cm; if (cm && widget.noHScroll) cm.display.alignWidgets = true; changeLine(doc, handle, "widget", function(line) { var widgets = line.widgets || (line.widgets = []); if (widget.insertAt == null) widgets.push(widget); else widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); widget.line = line; if (cm && !lineIsHidden(doc, line)) { var aboveVisible = heightAtLine(line) < doc.scrollTop; updateLineHeight(line, line.height + widgetHeight(widget)); if (aboveVisible) addToScrollPos(cm, null, widget.height); cm.curOp.forceUpdate = true; } return true; }); return widget; } // LINE DATA STRUCTURE // Line objects. These hold state related to a line, including // highlighting info (the styles array). var Line = CodeMirror.Line = function(text, markedSpans, estimateHeight) { this.text = text; attachMarkedSpans(this, markedSpans); this.height = estimateHeight ? estimateHeight(this) : 1; }; eventMixin(Line); Line.prototype.lineNo = function() { return lineNo(this); }; // Change the content (text, markers) of a line. Automatically // invalidates cached information and tries to re-estimate the // line's height. function updateLine(line, text, markedSpans, estimateHeight) { line.text = text; if (line.stateAfter) line.stateAfter = null; if (line.styles) line.styles = null; if (line.order != null) line.order = null; detachMarkedSpans(line); attachMarkedSpans(line, markedSpans); var estHeight = estimateHeight ? estimateHeight(line) : 1; if (estHeight != line.height) updateLineHeight(line, estHeight); } // Detach a line from the document tree and its markers. function cleanUpLine(line) { line.parent = null; detachMarkedSpans(line); } function extractLineClasses(type, output) { if (type) for (;;) { var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/); if (!lineClass) break; type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length); var prop = lineClass[1] ? "bgClass" : "textClass"; if (output[prop] == null) output[prop] = lineClass[2]; else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(output[prop])) output[prop] += " " + lineClass[2]; } return type; } function callBlankLine(mode, state) { if (mode.blankLine) return mode.blankLine(state); if (!mode.innerMode) return; var inner = CodeMirror.innerMode(mode, state); if (inner.mode.blankLine) return inner.mode.blankLine(inner.state); } function readToken(mode, stream, state, inner) { for (var i = 0; i < 10; i++) { if (inner) inner[0] = CodeMirror.innerMode(mode, state).mode; var style = mode.token(stream, state); if (stream.pos > stream.start) return style; } throw new Error("Mode " + mode.name + " failed to advance stream."); } // Utility for getTokenAt and getLineTokens function takeToken(cm, pos, precise, asArray) { function getObj(copy) { return {start: stream.start, end: stream.pos, string: stream.current(), type: style || null, state: copy ? copyState(doc.mode, state) : state}; } var doc = cm.doc, mode = doc.mode, style; pos = clipPos(doc, pos); var line = getLine(doc, pos.line), state = getStateBefore(cm, pos.line, precise); var stream = new StringStream(line.text, cm.options.tabSize), tokens; if (asArray) tokens = []; while ((asArray || stream.pos < pos.ch) && !stream.eol()) { stream.start = stream.pos; style = readToken(mode, stream, state); if (asArray) tokens.push(getObj(true)); } return asArray ? tokens : getObj(); } // Run the given mode's parser over a line, calling f for each token. function runMode(cm, text, mode, state, f, lineClasses, forceToEnd) { var flattenSpans = mode.flattenSpans; if (flattenSpans == null) flattenSpans = cm.options.flattenSpans; var curStart = 0, curStyle = null; var stream = new StringStream(text, cm.options.tabSize), style; var inner = cm.options.addModeClass && [null]; if (text == "") extractLineClasses(callBlankLine(mode, state), lineClasses); while (!stream.eol()) { if (stream.pos > cm.options.maxHighlightLength) { flattenSpans = false; if (forceToEnd) processLine(cm, text, state, stream.pos); stream.pos = text.length; style = null; } else { style = extractLineClasses(readToken(mode, stream, state, inner), lineClasses); } if (inner) { var mName = inner[0].name; if (mName) style = "m-" + (style ? mName + " " + style : mName); } if (!flattenSpans || curStyle != style) { while (curStart < stream.start) { curStart = Math.min(stream.start, curStart + 50000); f(curStart, curStyle); } curStyle = style; } stream.start = stream.pos; } while (curStart < stream.pos) { // Webkit seems to refuse to render text nodes longer than 57444 characters var pos = Math.min(stream.pos, curStart + 50000); f(pos, curStyle); curStart = pos; } } // Compute a style array (an array starting with a mode generation // -- for invalidation -- followed by pairs of end positions and // style strings), which is used to highlight the tokens on the // line. function highlightLine(cm, line, state, forceToEnd) { // A styles array always starts with a number identifying the // mode/overlays that it is based on (for easy invalidation). var st = [cm.state.modeGen], lineClasses = {}; // Compute the base array of styles runMode(cm, line.text, cm.doc.mode, state, function(end, style) { st.push(end, style); }, lineClasses, forceToEnd); // Run overlays, adjust style array. for (var o = 0; o < cm.state.overlays.length; ++o) { var overlay = cm.state.overlays[o], i = 1, at = 0; runMode(cm, line.text, overlay.mode, true, function(end, style) { var start = i; // Ensure there's a token end at the current position, and that i points at it while (at < end) { var i_end = st[i]; if (i_end > end) st.splice(i, 1, end, st[i+1], i_end); i += 2; at = Math.min(end, i_end); } if (!style) return; if (overlay.opaque) { st.splice(start, i - start, end, "cm-overlay " + style); i = start + 2; } else { for (; start < i; start += 2) { var cur = st[start+1]; st[start+1] = (cur ? cur + " " : "") + "cm-overlay " + style; } } }, lineClasses); } return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}; } function getLineStyles(cm, line, updateFrontier) { if (!line.styles || line.styles[0] != cm.state.modeGen) { var state = getStateBefore(cm, lineNo(line)); var result = highlightLine(cm, line, line.text.length > cm.options.maxHighlightLength ? copyState(cm.doc.mode, state) : state); line.stateAfter = state; line.styles = result.styles; if (result.classes) line.styleClasses = result.classes; else if (line.styleClasses) line.styleClasses = null; if (updateFrontier === cm.doc.frontier) cm.doc.frontier++; } return line.styles; } // Lightweight form of highlight -- proceed over this line and // update state, but don't save a style array. Used for lines that // aren't currently visible. function processLine(cm, text, state, startAt) { var mode = cm.doc.mode; var stream = new StringStream(text, cm.options.tabSize); stream.start = stream.pos = startAt || 0; if (text == "") callBlankLine(mode, state); while (!stream.eol()) { readToken(mode, stream, state); stream.start = stream.pos; } } // Convert a style as returned by a mode (either null, or a string // containing one or more styles) to a CSS style. This is cached, // and also looks for line-wide styles. var styleToClassCache = {}, styleToClassCacheWithMode = {}; function interpretTokenStyle(style, options) { if (!style || /^\s*$/.test(style)) return null; var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache; return cache[style] || (cache[style] = style.replace(/\S+/g, "cm-$&")); } // Render the DOM representation of the text of a line. Also builds // up a 'line map', which points at the DOM nodes that represent // specific stretches of text, and is used by the measuring code. // The returned object contains the DOM node, this map, and // information about line-wide styles that were set by the mode. function buildLineContent(cm, lineView) { // The padding-right forces the element to have a 'border', which // is needed on Webkit to be able to get line-level bounding // rectangles for it (in measureChar). var content = elt("span", null, null, webkit ? "padding-right: .1px" : null); var builder = {pre: elt("pre", [content], "CodeMirror-line"), content: content, col: 0, pos: 0, cm: cm, trailingSpace: false, splitSpaces: (ie || webkit) && cm.getOption("lineWrapping")}; lineView.measure = {}; // Iterate over the logical lines that make up this visual line. for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { var line = i ? lineView.rest[i - 1] : lineView.line, order; builder.pos = 0; builder.addToken = buildToken; // Optionally wire in some hacks into the token-rendering // algorithm, to deal with browser quirks. if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line))) builder.addToken = buildTokenBadBidi(builder.addToken, order); builder.map = []; var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line); insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate)); if (line.styleClasses) { if (line.styleClasses.bgClass) builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || ""); if (line.styleClasses.textClass) builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || ""); } // Ensure at least a single node is present, for measuring. if (builder.map.length == 0) builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); // Store the map and a cache object for the current logical line if (i == 0) { lineView.measure.map = builder.map; lineView.measure.cache = {}; } else { (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map); (lineView.measure.caches || (lineView.measure.caches = [])).push({}); } } // See issue #2901 if (webkit) { var last = builder.content.lastChild if (/\bcm-tab\b/.test(last.className) || (last.querySelector && last.querySelector(".cm-tab"))) builder.content.className = "cm-tab-wrap-hack"; } signal(cm, "renderLine", cm, lineView.line, builder.pre); if (builder.pre.className) builder.textClass = joinClasses(builder.pre.className, builder.textClass || ""); return builder; } function defaultSpecialCharPlaceholder(ch) { var token = elt("span", "\u2022", "cm-invalidchar"); token.title = "\\u" + ch.charCodeAt(0).toString(16); token.setAttribute("aria-label", token.title); return token; } // Build up the DOM representation for a single token, and add it to // the line map. Takes care to render special characters separately. function buildToken(builder, text, style, startStyle, endStyle, title, css) { if (!text) return; var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text var special = builder.cm.state.specialChars, mustWrap = false; if (!special.test(text)) { builder.col += text.length; var content = document.createTextNode(displayText); builder.map.push(builder.pos, builder.pos + text.length, content); if (ie && ie_version < 9) mustWrap = true; builder.pos += text.length; } else { var content = document.createDocumentFragment(), pos = 0; while (true) { special.lastIndex = pos; var m = special.exec(text); var skipped = m ? m.index - pos : text.length - pos; if (skipped) { var txt = document.createTextNode(displayText.slice(pos, pos + skipped)); if (ie && ie_version < 9) content.appendChild(elt("span", [txt])); else content.appendChild(txt); builder.map.push(builder.pos, builder.pos + skipped, txt); builder.col += skipped; builder.pos += skipped; } if (!m) break; pos += skipped + 1; if (m[0] == "\t") { var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize; var txt = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")); txt.setAttribute("role", "presentation"); txt.setAttribute("cm-text", "\t"); builder.col += tabWidth; } else if (m[0] == "\r" || m[0] == "\n") { var txt = content.appendChild(elt("span", m[0] == "\r" ? "\u240d" : "\u2424", "cm-invalidchar")); txt.setAttribute("cm-text", m[0]); builder.col += 1; } else { var txt = builder.cm.options.specialCharPlaceholder(m[0]); txt.setAttribute("cm-text", m[0]); if (ie && ie_version < 9) content.appendChild(elt("span", [txt])); else content.appendChild(txt); builder.col += 1; } builder.map.push(builder.pos, builder.pos + 1, txt); builder.pos++; } } builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32 if (style || startStyle || endStyle || mustWrap || css) { var fullStyle = style || ""; if (startStyle) fullStyle += startStyle; if (endStyle) fullStyle += endStyle; var token = elt("span", [content], fullStyle, css); if (title) token.title = title; return builder.content.appendChild(token); } builder.content.appendChild(content); } function splitSpaces(text, trailingBefore) { if (text.length > 1 && !/ /.test(text)) return text var spaceBefore = trailingBefore, result = "" for (var i = 0; i < text.length; i++) { var ch = text.charAt(i) if (ch == " " && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32)) ch = "\u00a0" result += ch spaceBefore = ch == " " } return result } // Work around nonsense dimensions being reported for stretches of // right-to-left text. function buildTokenBadBidi(inner, order) { return function(builder, text, style, startStyle, endStyle, title, css) { style = style ? style + " cm-force-border" : "cm-force-border"; var start = builder.pos, end = start + text.length; for (;;) { // Find the part that overlaps with the start of this text for (var i = 0; i < order.length; i++) { var part = order[i]; if (part.to > start && part.from <= start) break; } if (part.to >= end) return inner(builder, text, style, startStyle, endStyle, title, css); inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css); startStyle = null; text = text.slice(part.to - start); start = part.to; } }; } function buildCollapsedSpan(builder, size, marker, ignoreWidget) { var widget = !ignoreWidget && marker.widgetNode; if (widget) builder.map.push(builder.pos, builder.pos + size, widget); if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) { if (!widget) widget = builder.content.appendChild(document.createElement("span")); widget.setAttribute("cm-marker", marker.id); } if (widget) { builder.cm.display.input.setUneditable(widget); builder.content.appendChild(widget); } builder.pos += size; builder.trailingSpace = false } // Outputs a number of spans to make up a line, taking highlighting // and marked text into account. function insertLineContent(line, builder, styles) { var spans = line.markedSpans, allText = line.text, at = 0; if (!spans) { for (var i = 1; i < styles.length; i+=2) builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder.cm.options)); return; } var len = allText.length, pos = 0, i = 1, text = "", style, css; var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed; for (;;) { if (nextChange == pos) { // Update current marker set spanStyle = spanEndStyle = spanStartStyle = title = css = ""; collapsed = null; nextChange = Infinity; var foundBookmarks = [], endStyles for (var j = 0; j < spans.length; ++j) { var sp = spans[j], m = sp.marker; if (m.type == "bookmark" && sp.from == pos && m.widgetNode) { foundBookmarks.push(m); } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) { if (sp.to != null && sp.to != pos && nextChange > sp.to) { nextChange = sp.to; spanEndStyle = ""; } if (m.className) spanStyle += " " + m.className; if (m.css) css = (css ? css + ";" : "") + m.css; if (m.startStyle && sp.from == pos) spanStartStyle += " " + m.startStyle; if (m.endStyle && sp.to == nextChange) (endStyles || (endStyles = [])).push(m.endStyle, sp.to) if (m.title && !title) title = m.title; if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) collapsed = sp; } else if (sp.from > pos && nextChange > sp.from) { nextChange = sp.from; } } if (endStyles) for (var j = 0; j < endStyles.length; j += 2) if (endStyles[j + 1] == nextChange) spanEndStyle += " " + endStyles[j] if (!collapsed || collapsed.from == pos) for (var j = 0; j < foundBookmarks.length; ++j) buildCollapsedSpan(builder, 0, foundBookmarks[j]); if (collapsed && (collapsed.from || 0) == pos) { buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, collapsed.marker, collapsed.from == null); if (collapsed.to == null) return; if (collapsed.to == pos) collapsed = false; } } if (pos >= len) break; var upto = Math.min(len, nextChange); while (true) { if (text) { var end = pos + text.length; if (!collapsed) { var tokenText = end > upto ? text.slice(0, upto - pos) : text; builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title, css); } if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;} pos = end; spanStartStyle = ""; } text = allText.slice(at, at = styles[i++]); style = interpretTokenStyle(styles[i++], builder.cm.options); } } } // DOCUMENT DATA STRUCTURE // By default, updates that start and end at the beginning of a line // are treated specially, in order to make the association of line // widgets and marker elements with the text behave more intuitive. function isWholeLineUpdate(doc, change) { return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && (!doc.cm || doc.cm.options.wholeLineUpdateBefore); } // Perform a change on the document data structure. function updateDoc(doc, change, markedSpans, estimateHeight) { function spansFor(n) {return markedSpans ? markedSpans[n] : null;} function update(line, text, spans) { updateLine(line, text, spans, estimateHeight); signalLater(line, "change", line, change); } function linesFor(start, end) { for (var i = start, result = []; i < end; ++i) result.push(new Line(text[i], spansFor(i), estimateHeight)); return result; } var from = change.from, to = change.to, text = change.text; var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line); var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line; // Adjust the line structure if (change.full) { doc.insert(0, linesFor(0, text.length)); doc.remove(text.length, doc.size - text.length); } else if (isWholeLineUpdate(doc, change)) { // This is a whole-line replace. Treated specially to make // sure line objects move the way they are supposed to. var added = linesFor(0, text.length - 1); update(lastLine, lastLine.text, lastSpans); if (nlines) doc.remove(from.line, nlines); if (added.length) doc.insert(from.line, added); } else if (firstLine == lastLine) { if (text.length == 1) { update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans); } else { var added = linesFor(1, text.length - 1); added.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)); update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); doc.insert(from.line + 1, added); } } else if (text.length == 1) { update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)); doc.remove(from.line + 1, nlines); } else { update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans); var added = linesFor(1, text.length - 1); if (nlines > 1) doc.remove(from.line + 1, nlines - 1); doc.insert(from.line + 1, added); } signalLater(doc, "change", doc, change); } // The document is represented as a BTree consisting of leaves, with // chunk of lines in them, and branches, with up to ten leaves or // other branch nodes below them. The top node is always a branch // node, and is the document object itself (meaning it has // additional methods and properties). // // All nodes have parent links. The tree is used both to go from // line numbers to line objects, and to go from objects to numbers. // It also indexes by height, and is used to convert between height // and line object, and to find the total height of the document. // // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html function LeafChunk(lines) { this.lines = lines; this.parent = null; for (var i = 0, height = 0; i < lines.length; ++i) { lines[i].parent = this; height += lines[i].height; } this.height = height; } LeafChunk.prototype = { chunkSize: function() { return this.lines.length; }, // Remove the n lines at offset 'at'. removeInner: function(at, n) { for (var i = at, e = at + n; i < e; ++i) { var line = this.lines[i]; this.height -= line.height; cleanUpLine(line); signalLater(line, "delete"); } this.lines.splice(at, n); }, // Helper used to collapse a small branch into a single leaf. collapse: function(lines) { lines.push.apply(lines, this.lines); }, // Insert the given array of lines at offset 'at', count them as // having the given height. insertInner: function(at, lines, height) { this.height += height; this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); for (var i = 0; i < lines.length; ++i) lines[i].parent = this; }, // Used to iterate over a part of the tree. iterN: function(at, n, op) { for (var e = at + n; at < e; ++at) if (op(this.lines[at])) return true; } }; function BranchChunk(children) { this.children = children; var size = 0, height = 0; for (var i = 0; i < children.length; ++i) { var ch = children[i]; size += ch.chunkSize(); height += ch.height; ch.parent = this; } this.size = size; this.height = height; this.parent = null; } BranchChunk.prototype = { chunkSize: function() { return this.size; }, removeInner: function(at, n) { this.size -= n; for (var i = 0; i < this.children.length; ++i) { var child = this.children[i], sz = child.chunkSize(); if (at < sz) { var rm = Math.min(n, sz - at), oldHeight = child.height; child.removeInner(at, rm); this.height -= oldHeight - child.height; if (sz == rm) { this.children.splice(i--, 1); child.parent = null; } if ((n -= rm) == 0) break; at = 0; } else at -= sz; } // If the result is smaller than 25 lines, ensure that it is a // single leaf node. if (this.size - n < 25 && (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { var lines = []; this.collapse(lines); this.children = [new LeafChunk(lines)]; this.children[0].parent = this; } }, collapse: function(lines) { for (var i = 0; i < this.children.length; ++i) this.children[i].collapse(lines); }, insertInner: function(at, lines, height) { this.size += lines.length; this.height += height; for (var i = 0; i < this.children.length; ++i) { var child = this.children[i], sz = child.chunkSize(); if (at <= sz) { child.insertInner(at, lines, height); if (child.lines && child.lines.length > 50) { // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced. // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest. var remaining = child.lines.length % 25 + 25 for (var pos = remaining; pos < child.lines.length;) { var leaf = new LeafChunk(child.lines.slice(pos, pos += 25)); child.height -= leaf.height; this.children.splice(++i, 0, leaf); leaf.parent = this; } child.lines = child.lines.slice(0, remaining); this.maybeSpill(); } break; } at -= sz; } }, // When a node has grown, check whether it should be split. maybeSpill: function() { if (this.children.length <= 10) return; var me = this; do { var spilled = me.children.splice(me.children.length - 5, 5); var sibling = new BranchChunk(spilled); if (!me.parent) { // Become the parent node var copy = new BranchChunk(me.children); copy.parent = me; me.children = [copy, sibling]; me = copy; } else { me.size -= sibling.size; me.height -= sibling.height; var myIndex = indexOf(me.parent.children, me); me.parent.children.splice(myIndex + 1, 0, sibling); } sibling.parent = me.parent; } while (me.children.length > 10); me.parent.maybeSpill(); }, iterN: function(at, n, op) { for (var i = 0; i < this.children.length; ++i) { var child = this.children[i], sz = child.chunkSize(); if (at < sz) { var used = Math.min(n, sz - at); if (child.iterN(at, used, op)) return true; if ((n -= used) == 0) break; at = 0; } else at -= sz; } } }; var nextDocId = 0; var Doc = CodeMirror.Doc = function(text, mode, firstLine, lineSep) { if (!(this instanceof Doc)) return new Doc(text, mode, firstLine, lineSep); if (firstLine == null) firstLine = 0; BranchChunk.call(this, [new LeafChunk([new Line("", null)])]); this.first = firstLine; this.scrollTop = this.scrollLeft = 0; this.cantEdit = false; this.cleanGeneration = 1; this.frontier = firstLine; var start = Pos(firstLine, 0); this.sel = simpleSelection(start); this.history = new History(null); this.id = ++nextDocId; this.modeOption = mode; this.lineSep = lineSep; this.extend = false; if (typeof text == "string") text = this.splitLines(text); updateDoc(this, {from: start, to: start, text: text}); setSelection(this, simpleSelection(start), sel_dontScroll); }; Doc.prototype = createObj(BranchChunk.prototype, { constructor: Doc, // Iterate over the document. Supports two forms -- with only one // argument, it calls that for each line in the document. With // three, it iterates over the range given by the first two (with // the second being non-inclusive). iter: function(from, to, op) { if (op) this.iterN(from - this.first, to - from, op); else this.iterN(this.first, this.first + this.size, from); }, // Non-public interface for adding and removing lines. insert: function(at, lines) { var height = 0; for (var i = 0; i < lines.length; ++i) height += lines[i].height; this.insertInner(at - this.first, lines, height); }, remove: function(at, n) { this.removeInner(at - this.first, n); }, // From here, the methods are part of the public interface. Most // are also available from CodeMirror (editor) instances. getValue: function(lineSep) { var lines = getLines(this, this.first, this.first + this.size); if (lineSep === false) return lines; return lines.join(lineSep || this.lineSeparator()); }, setValue: docMethodOp(function(code) { var top = Pos(this.first, 0), last = this.first + this.size - 1; makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), text: this.splitLines(code), origin: "setValue", full: true}, true); setSelection(this, simpleSelection(top)); }), replaceRange: function(code, from, to, origin) { from = clipPos(this, from); to = to ? clipPos(this, to) : from; replaceRange(this, code, from, to, origin); }, getRange: function(from, to, lineSep) { var lines = getBetween(this, clipPos(this, from), clipPos(this, to)); if (lineSep === false) return lines; return lines.join(lineSep || this.lineSeparator()); }, getLine: function(line) {var l = this.getLineHandle(line); return l && l.text;}, getLineHandle: function(line) {if (isLine(this, line)) return getLine(this, line);}, getLineNumber: function(line) {return lineNo(line);}, getLineHandleVisualStart: function(line) { if (typeof line == "number") line = getLine(this, line); return visualLine(line); }, lineCount: function() {return this.size;}, firstLine: function() {return this.first;}, lastLine: function() {return this.first + this.size - 1;}, clipPos: function(pos) {return clipPos(this, pos);}, getCursor: function(start) { var range = this.sel.primary(), pos; if (start == null || start == "head") pos = range.head; else if (start == "anchor") pos = range.anchor; else if (start == "end" || start == "to" || start === false) pos = range.to(); else pos = range.from(); return pos; }, listSelections: function() { return this.sel.ranges; }, somethingSelected: function() {return this.sel.somethingSelected();}, setCursor: docMethodOp(function(line, ch, options) { setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options); }), setSelection: docMethodOp(function(anchor, head, options) { setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options); }), extendSelection: docMethodOp(function(head, other, options) { extendSelection(this, clipPos(this, head), other && clipPos(this, other), options); }), extendSelections: docMethodOp(function(heads, options) { extendSelections(this, clipPosArray(this, heads), options); }), extendSelectionsBy: docMethodOp(function(f, options) { var heads = map(this.sel.ranges, f); extendSelections(this, clipPosArray(this, heads), options); }), setSelections: docMethodOp(function(ranges, primary, options) { if (!ranges.length) return; for (var i = 0, out = []; i < ranges.length; i++) out[i] = new Range(clipPos(this, ranges[i].anchor), clipPos(this, ranges[i].head)); if (primary == null) primary = Math.min(ranges.length - 1, this.sel.primIndex); setSelection(this, normalizeSelection(out, primary), options); }), addSelection: docMethodOp(function(anchor, head, options) { var ranges = this.sel.ranges.slice(0); ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))); setSelection(this, normalizeSelection(ranges, ranges.length - 1), options); }), getSelection: function(lineSep) { var ranges = this.sel.ranges, lines; for (var i = 0; i < ranges.length; i++) { var sel = getBetween(this, ranges[i].from(), ranges[i].to()); lines = lines ? lines.concat(sel) : sel; } if (lineSep === false) return lines; else return lines.join(lineSep || this.lineSeparator()); }, getSelections: function(lineSep) { var parts = [], ranges = this.sel.ranges; for (var i = 0; i < ranges.length; i++) { var sel = getBetween(this, ranges[i].from(), ranges[i].to()); if (lineSep !== false) sel = sel.join(lineSep || this.lineSeparator()); parts[i] = sel; } return parts; }, replaceSelection: function(code, collapse, origin) { var dup = []; for (var i = 0; i < this.sel.ranges.length; i++) dup[i] = code; this.replaceSelections(dup, collapse, origin || "+input"); }, replaceSelections: docMethodOp(function(code, collapse, origin) { var changes = [], sel = this.sel; for (var i = 0; i < sel.ranges.length; i++) { var range = sel.ranges[i]; changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin}; } var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse); for (var i = changes.length - 1; i >= 0; i--) makeChange(this, changes[i]); if (newSel) setSelectionReplaceHistory(this, newSel); else if (this.cm) ensureCursorVisible(this.cm); }), undo: docMethodOp(function() {makeChangeFromHistory(this, "undo");}), redo: docMethodOp(function() {makeChangeFromHistory(this, "redo");}), undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true);}), redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true);}), setExtending: function(val) {this.extend = val;}, getExtending: function() {return this.extend;}, historySize: function() { var hist = this.history, done = 0, undone = 0; for (var i = 0; i < hist.done.length; i++) if (!hist.done[i].ranges) ++done; for (var i = 0; i < hist.undone.length; i++) if (!hist.undone[i].ranges) ++undone; return {undo: done, redo: undone}; }, clearHistory: function() {this.history = new History(this.history.maxGeneration);}, markClean: function() { this.cleanGeneration = this.changeGeneration(true); }, changeGeneration: function(forceSplit) { if (forceSplit) this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; return this.history.generation; }, isClean: function (gen) { return this.history.generation == (gen || this.cleanGeneration); }, getHistory: function() { return {done: copyHistoryArray(this.history.done), undone: copyHistoryArray(this.history.undone)}; }, setHistory: function(histData) { var hist = this.history = new History(this.history.maxGeneration); hist.done = copyHistoryArray(histData.done.slice(0), null, true); hist.undone = copyHistoryArray(histData.undone.slice(0), null, true); }, addLineClass: docMethodOp(function(handle, where, cls) { return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function(line) { var prop = where == "text" ? "textClass" : where == "background" ? "bgClass" : where == "gutter" ? "gutterClass" : "wrapClass"; if (!line[prop]) line[prop] = cls; else if (classTest(cls).test(line[prop])) return false; else line[prop] += " " + cls; return true; }); }), removeLineClass: docMethodOp(function(handle, where, cls) { return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function(line) { var prop = where == "text" ? "textClass" : where == "background" ? "bgClass" : where == "gutter" ? "gutterClass" : "wrapClass"; var cur = line[prop]; if (!cur) return false; else if (cls == null) line[prop] = null; else { var found = cur.match(classTest(cls)); if (!found) return false; var end = found.index + found[0].length; line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null; } return true; }); }), addLineWidget: docMethodOp(function(handle, node, options) { return addLineWidget(this, handle, node, options); }), removeLineWidget: function(widget) { widget.clear(); }, markText: function(from, to, options) { return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || "range"); }, setBookmark: function(pos, options) { var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), insertLeft: options && options.insertLeft, clearWhenEmpty: false, shared: options && options.shared, handleMouseEvents: options && options.handleMouseEvents}; pos = clipPos(this, pos); return markText(this, pos, pos, realOpts, "bookmark"); }, findMarksAt: function(pos) { pos = clipPos(this, pos); var markers = [], spans = getLine(this, pos.line).markedSpans; if (spans) for (var i = 0; i < spans.length; ++i) { var span = spans[i]; if ((span.from == null || span.from <= pos.ch) && (span.to == null || span.to >= pos.ch)) markers.push(span.marker.parent || span.marker); } return markers; }, findMarks: function(from, to, filter) { from = clipPos(this, from); to = clipPos(this, to); var found = [], lineNo = from.line; this.iter(from.line, to.line + 1, function(line) { var spans = line.markedSpans; if (spans) for (var i = 0; i < spans.length; i++) { var span = spans[i]; if (!(span.to != null && lineNo == from.line && from.ch >= span.to || span.from == null && lineNo != from.line || span.from != null && lineNo == to.line && span.from >= to.ch) && (!filter || filter(span.marker))) found.push(span.marker.parent || span.marker); } ++lineNo; }); return found; }, getAllMarks: function() { var markers = []; this.iter(function(line) { var sps = line.markedSpans; if (sps) for (var i = 0; i < sps.length; ++i) if (sps[i].from != null) markers.push(sps[i].marker); }); return markers; }, posFromIndex: function(off) { var ch, lineNo = this.first, sepSize = this.lineSeparator().length; this.iter(function(line) { var sz = line.text.length + sepSize; if (sz > off) { ch = off; return true; } off -= sz; ++lineNo; }); return clipPos(this, Pos(lineNo, ch)); }, indexFromPos: function (coords) { coords = clipPos(this, coords); var index = coords.ch; if (coords.line < this.first || coords.ch < 0) return 0; var sepSize = this.lineSeparator().length; this.iter(this.first, coords.line, function (line) { index += line.text.length + sepSize; }); return index; }, copy: function(copyHistory) { var doc = new Doc(getLines(this, this.first, this.first + this.size), this.modeOption, this.first, this.lineSep); doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft; doc.sel = this.sel; doc.extend = false; if (copyHistory) { doc.history.undoDepth = this.history.undoDepth; doc.setHistory(this.getHistory()); } return doc; }, linkedDoc: function(options) { if (!options) options = {}; var from = this.first, to = this.first + this.size; if (options.from != null && options.from > from) from = options.from; if (options.to != null && options.to < to) to = options.to; var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep); if (options.sharedHist) copy.history = this.history; (this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}); copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}]; copySharedMarkers(copy, findSharedMarkers(this)); return copy; }, unlinkDoc: function(other) { if (other instanceof CodeMirror) other = other.doc; if (this.linked) for (var i = 0; i < this.linked.length; ++i) { var link = this.linked[i]; if (link.doc != other) continue; this.linked.splice(i, 1); other.unlinkDoc(this); detachSharedMarkers(findSharedMarkers(this)); break; } // If the histories were shared, split them again if (other.history == this.history) { var splitIds = [other.id]; linkedDocs(other, function(doc) {splitIds.push(doc.id);}, true); other.history = new History(null); other.history.done = copyHistoryArray(this.history.done, splitIds); other.history.undone = copyHistoryArray(this.history.undone, splitIds); } }, iterLinkedDocs: function(f) {linkedDocs(this, f);}, getMode: function() {return this.mode;}, getEditor: function() {return this.cm;}, splitLines: function(str) { if (this.lineSep) return str.split(this.lineSep); return splitLinesAuto(str); }, lineSeparator: function() { return this.lineSep || "\n"; } }); // Public alias. Doc.prototype.eachLine = Doc.prototype.iter; // Set up methods on CodeMirror's prototype to redirect to the editor's document. var dontDelegate = "iter insert remove copy getEditor constructor".split(" "); for (var prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) CodeMirror.prototype[prop] = (function(method) { return function() {return method.apply(this.doc, arguments);}; })(Doc.prototype[prop]); eventMixin(Doc); // Call f for all linked documents. function linkedDocs(doc, f, sharedHistOnly) { function propagate(doc, skip, sharedHist) { if (doc.linked) for (var i = 0; i < doc.linked.length; ++i) { var rel = doc.linked[i]; if (rel.doc == skip) continue; var shared = sharedHist && rel.sharedHist; if (sharedHistOnly && !shared) continue; f(rel.doc, shared); propagate(rel.doc, doc, shared); } } propagate(doc, null, true); } // Attach a document to an editor. function attachDoc(cm, doc) { if (doc.cm) throw new Error("This document is already in use."); cm.doc = doc; doc.cm = cm; estimateLineHeights(cm); loadMode(cm); if (!cm.options.lineWrapping) findMaxLine(cm); cm.options.mode = doc.modeOption; regChange(cm); } // LINE UTILITIES // Find the line object corresponding to the given line number. function getLine(doc, n) { n -= doc.first; if (n < 0 || n >= doc.size) throw new Error("There is no line " + (n + doc.first) + " in the document."); for (var chunk = doc; !chunk.lines;) { for (var i = 0;; ++i) { var child = chunk.children[i], sz = child.chunkSize(); if (n < sz) { chunk = child; break; } n -= sz; } } return chunk.lines[n]; } // Get the part of a document between two positions, as an array of // strings. function getBetween(doc, start, end) { var out = [], n = start.line; doc.iter(start.line, end.line + 1, function(line) { var text = line.text; if (n == end.line) text = text.slice(0, end.ch); if (n == start.line) text = text.slice(start.ch); out.push(text); ++n; }); return out; } // Get the lines between from and to, as array of strings. function getLines(doc, from, to) { var out = []; doc.iter(from, to, function(line) { out.push(line.text); }); return out; } // Update the height of a line, propagating the height change // upwards to parent nodes. function updateLineHeight(line, height) { var diff = height - line.height; if (diff) for (var n = line; n; n = n.parent) n.height += diff; } // Given a line object, find its line number by walking up through // its parent links. function lineNo(line) { if (line.parent == null) return null; var cur = line.parent, no = indexOf(cur.lines, line); for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { for (var i = 0;; ++i) { if (chunk.children[i] == cur) break; no += chunk.children[i].chunkSize(); } } return no + cur.first; } // Find the line at the given vertical position, using the height // information in the document tree. function lineAtHeight(chunk, h) { var n = chunk.first; outer: do { for (var i = 0; i < chunk.children.length; ++i) { var child = chunk.children[i], ch = child.height; if (h < ch) { chunk = child; continue outer; } h -= ch; n += child.chunkSize(); } return n; } while (!chunk.lines); for (var i = 0; i < chunk.lines.length; ++i) { var line = chunk.lines[i], lh = line.height; if (h < lh) break; h -= lh; } return n + i; } // Find the height above the given line. function heightAtLine(lineObj) { lineObj = visualLine(lineObj); var h = 0, chunk = lineObj.parent; for (var i = 0; i < chunk.lines.length; ++i) { var line = chunk.lines[i]; if (line == lineObj) break; else h += line.height; } for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { for (var i = 0; i < p.children.length; ++i) { var cur = p.children[i]; if (cur == chunk) break; else h += cur.height; } } return h; } // Get the bidi ordering for the given line (and cache it). Returns // false for lines that are fully left-to-right, and an array of // BidiSpan objects otherwise. function getOrder(line) { var order = line.order; if (order == null) order = line.order = bidiOrdering(line.text); return order; } // HISTORY function History(startGen) { // Arrays of change events and selections. Doing something adds an // event to done and clears undo. Undoing moves events from done // to undone, redoing moves them in the other direction. this.done = []; this.undone = []; this.undoDepth = Infinity; // Used to track when changes can be merged into a single undo // event this.lastModTime = this.lastSelTime = 0; this.lastOp = this.lastSelOp = null; this.lastOrigin = this.lastSelOrigin = null; // Used by the isClean() method this.generation = this.maxGeneration = startGen || 1; } // Create a history change event from an updateDoc-style change // object. function historyChangeFromChange(doc, change) { var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)}; attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); linkedDocs(doc, function(doc) {attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);}, true); return histChange; } // Pop all selection events off the end of a history array. Stop at // a change event. function clearSelectionEvents(array) { while (array.length) { var last = lst(array); if (last.ranges) array.pop(); else break; } } // Find the top change event in the history. Pop off selection // events that are in the way. function lastChangeEvent(hist, force) { if (force) { clearSelectionEvents(hist.done); return lst(hist.done); } else if (hist.done.length && !lst(hist.done).ranges) { return lst(hist.done); } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { hist.done.pop(); return lst(hist.done); } } // Register a change in the history. Merges changes that are within // a single operation, or are close together with an origin that // allows merging (starting with "+") into a single event. function addChangeToHistory(doc, change, selAfter, opId) { var hist = doc.history; hist.undone.length = 0; var time = +new Date, cur; if ((hist.lastOp == opId || hist.lastOrigin == change.origin && change.origin && ((change.origin.charAt(0) == "+" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) || change.origin.charAt(0) == "*")) && (cur = lastChangeEvent(hist, hist.lastOp == opId))) { // Merge this change into the last event var last = lst(cur.changes); if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { // Optimized case for simple insertion -- don't want to add // new changesets for every character typed last.to = changeEnd(change); } else { // Add new sub-event cur.changes.push(historyChangeFromChange(doc, change)); } } else { // Can not be merged, start a new event. var before = lst(hist.done); if (!before || !before.ranges) pushSelectionToHistory(doc.sel, hist.done); cur = {changes: [historyChangeFromChange(doc, change)], generation: hist.generation}; hist.done.push(cur); while (hist.done.length > hist.undoDepth) { hist.done.shift(); if (!hist.done[0].ranges) hist.done.shift(); } } hist.done.push(selAfter); hist.generation = ++hist.maxGeneration; hist.lastModTime = hist.lastSelTime = time; hist.lastOp = hist.lastSelOp = opId; hist.lastOrigin = hist.lastSelOrigin = change.origin; if (!last) signal(doc, "historyAdded"); } function selectionEventCanBeMerged(doc, origin, prev, sel) { var ch = origin.charAt(0); return ch == "*" || ch == "+" && prev.ranges.length == sel.ranges.length && prev.somethingSelected() == sel.somethingSelected() && new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500); } // Called whenever the selection changes, sets the new selection as // the pending selection in the history, and pushes the old pending // selection into the 'done' array when it was significantly // different (in number of selected ranges, emptiness, or time). function addSelectionToHistory(doc, sel, opId, options) { var hist = doc.history, origin = options && options.origin; // A new event is started when the previous origin does not match // the current, or the origins don't allow matching. Origins // starting with * are always merged, those starting with + are // merged when similar and close together in time. if (opId == hist.lastSelOp || (origin && hist.lastSelOrigin == origin && (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) hist.done[hist.done.length - 1] = sel; else pushSelectionToHistory(sel, hist.done); hist.lastSelTime = +new Date; hist.lastSelOrigin = origin; hist.lastSelOp = opId; if (options && options.clearRedo !== false) clearSelectionEvents(hist.undone); } function pushSelectionToHistory(sel, dest) { var top = lst(dest); if (!(top && top.ranges && top.equals(sel))) dest.push(sel); } // Used to store marked span information in the history. function attachLocalSpans(doc, change, from, to) { var existing = change["spans_" + doc.id], n = 0; doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) { if (line.markedSpans) (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans; ++n; }); } // When un/re-doing restores text containing marked spans, those // that have been explicitly cleared should not be restored. function removeClearedSpans(spans) { if (!spans) return null; for (var i = 0, out; i < spans.length; ++i) { if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i); } else if (out) out.push(spans[i]); } return !out ? spans : out.length ? out : null; } // Retrieve and filter the old marked spans stored in a change event. function getOldSpans(doc, change) { var found = change["spans_" + doc.id]; if (!found) return null; for (var i = 0, nw = []; i < change.text.length; ++i) nw.push(removeClearedSpans(found[i])); return nw; } // Used both to provide a JSON-safe object in .getHistory, and, when // detaching a document, to split the history in two function copyHistoryArray(events, newGroup, instantiateSel) { for (var i = 0, copy = []; i < events.length; ++i) { var event = events[i]; if (event.ranges) { copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event); continue; } var changes = event.changes, newChanges = []; copy.push({changes: newChanges}); for (var j = 0; j < changes.length; ++j) { var change = changes[j], m; newChanges.push({from: change.from, to: change.to, text: change.text}); if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\d+)$/)) { if (indexOf(newGroup, Number(m[1])) > -1) { lst(newChanges)[prop] = change[prop]; delete change[prop]; } } } } return copy; } // Rebasing/resetting history to deal with externally-sourced changes function rebaseHistSelSingle(pos, from, to, diff) { if (to < pos.line) { pos.line += diff; } else if (from < pos.line) { pos.line = from; pos.ch = 0; } } // Tries to rebase an array of history events given a change in the // document. If the change touches the same lines as the event, the // event, and everything 'behind' it, is discarded. If the change is // before the event, the event's positions are updated. Uses a // copy-on-write scheme for the positions, to avoid having to // reallocate them all on every rebase, but also avoid problems with // shared position objects being unsafely updated. function rebaseHistArray(array, from, to, diff) { for (var i = 0; i < array.length; ++i) { var sub = array[i], ok = true; if (sub.ranges) { if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; } for (var j = 0; j < sub.ranges.length; j++) { rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff); rebaseHistSelSingle(sub.ranges[j].head, from, to, diff); } continue; } for (var j = 0; j < sub.changes.length; ++j) { var cur = sub.changes[j]; if (to < cur.from.line) { cur.from = Pos(cur.from.line + diff, cur.from.ch); cur.to = Pos(cur.to.line + diff, cur.to.ch); } else if (from <= cur.to.line) { ok = false; break; } } if (!ok) { array.splice(0, i + 1); i = 0; } } } function rebaseHist(hist, change) { var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1; rebaseHistArray(hist.done, from, to, diff); rebaseHistArray(hist.undone, from, to, diff); } // EVENT UTILITIES // Due to the fact that we still support jurassic IE versions, some // compatibility wrappers are needed. var e_preventDefault = CodeMirror.e_preventDefault = function(e) { if (e.preventDefault) e.preventDefault(); else e.returnValue = false; }; var e_stopPropagation = CodeMirror.e_stopPropagation = function(e) { if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; }; function e_defaultPrevented(e) { return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false; } var e_stop = CodeMirror.e_stop = function(e) {e_preventDefault(e); e_stopPropagation(e);}; function e_target(e) {return e.target || e.srcElement;} function e_button(e) { var b = e.which; if (b == null) { if (e.button & 1) b = 1; else if (e.button & 2) b = 3; else if (e.button & 4) b = 2; } if (mac && e.ctrlKey && b == 1) b = 3; return b; } // EVENT HANDLING // Lightweight event framework. on/off also work on DOM nodes, // registering native DOM handlers. var on = CodeMirror.on = function(emitter, type, f) { if (emitter.addEventListener) emitter.addEventListener(type, f, false); else if (emitter.attachEvent) emitter.attachEvent("on" + type, f); else { var map = emitter._handlers || (emitter._handlers = {}); var arr = map[type] || (map[type] = []); arr.push(f); } }; var noHandlers = [] function getHandlers(emitter, type, copy) { var arr = emitter._handlers && emitter._handlers[type] if (copy) return arr && arr.length > 0 ? arr.slice() : noHandlers else return arr || noHandlers } var off = CodeMirror.off = function(emitter, type, f) { if (emitter.removeEventListener) emitter.removeEventListener(type, f, false); else if (emitter.detachEvent) emitter.detachEvent("on" + type, f); else { var handlers = getHandlers(emitter, type, false) for (var i = 0; i < handlers.length; ++i) if (handlers[i] == f) { handlers.splice(i, 1); break; } } }; var signal = CodeMirror.signal = function(emitter, type /*, values...*/) { var handlers = getHandlers(emitter, type, true) if (!handlers.length) return; var args = Array.prototype.slice.call(arguments, 2); for (var i = 0; i < handlers.length; ++i) handlers[i].apply(null, args); }; var orphanDelayedCallbacks = null; // Often, we want to signal events at a point where we are in the // middle of some work, but don't want the handler to start calling // other methods on the editor, which might be in an inconsistent // state or simply not expect any other events to happen. // signalLater looks whether there are any handlers, and schedules // them to be executed when the last operation ends, or, if no // operation is active, when a timeout fires. function signalLater(emitter, type /*, values...*/) { var arr = getHandlers(emitter, type, false) if (!arr.length) return; var args = Array.prototype.slice.call(arguments, 2), list; if (operationGroup) { list = operationGroup.delayedCallbacks; } else if (orphanDelayedCallbacks) { list = orphanDelayedCallbacks; } else { list = orphanDelayedCallbacks = []; setTimeout(fireOrphanDelayed, 0); } function bnd(f) {return function(){f.apply(null, args);};}; for (var i = 0; i < arr.length; ++i) list.push(bnd(arr[i])); } function fireOrphanDelayed() { var delayed = orphanDelayedCallbacks; orphanDelayedCallbacks = null; for (var i = 0; i < delayed.length; ++i) delayed[i](); } // The DOM events that CodeMirror handles can be overridden by // registering a (non-DOM) handler on the editor for the event name, // and preventDefault-ing the event in that handler. function signalDOMEvent(cm, e, override) { if (typeof e == "string") e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; signal(cm, override || e.type, cm, e); return e_defaultPrevented(e) || e.codemirrorIgnore; } function signalCursorActivity(cm) { var arr = cm._handlers && cm._handlers.cursorActivity; if (!arr) return; var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []); for (var i = 0; i < arr.length; ++i) if (indexOf(set, arr[i]) == -1) set.push(arr[i]); } function hasHandler(emitter, type) { return getHandlers(emitter, type).length > 0 } // Add on and off methods to a constructor's prototype, to make // registering events on such objects more convenient. function eventMixin(ctor) { ctor.prototype.on = function(type, f) {on(this, type, f);}; ctor.prototype.off = function(type, f) {off(this, type, f);}; } // MISC UTILITIES // Number of pixels added to scroller and sizer to hide scrollbar var scrollerGap = 30; // Returned or thrown by various protocols to signal 'I'm not // handling this'. var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}}; // Reused option objects for setSelection & friends var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"}; function Delayed() {this.id = null;} Delayed.prototype.set = function(ms, f) { clearTimeout(this.id); this.id = setTimeout(f, ms); }; // Counts the column offset in a string, taking tabs into account. // Used mostly to find indentation. var countColumn = CodeMirror.countColumn = function(string, end, tabSize, startIndex, startValue) { if (end == null) { end = string.search(/[^\s\u00a0]/); if (end == -1) end = string.length; } for (var i = startIndex || 0, n = startValue || 0;;) { var nextTab = string.indexOf("\t", i); if (nextTab < 0 || nextTab >= end) return n + (end - i); n += nextTab - i; n += tabSize - (n % tabSize); i = nextTab + 1; } }; // The inverse of countColumn -- find the offset that corresponds to // a particular column. var findColumn = CodeMirror.findColumn = function(string, goal, tabSize) { for (var pos = 0, col = 0;;) { var nextTab = string.indexOf("\t", pos); if (nextTab == -1) nextTab = string.length; var skipped = nextTab - pos; if (nextTab == string.length || col + skipped >= goal) return pos + Math.min(skipped, goal - col); col += nextTab - pos; col += tabSize - (col % tabSize); pos = nextTab + 1; if (col >= goal) return pos; } } var spaceStrs = [""]; function spaceStr(n) { while (spaceStrs.length <= n) spaceStrs.push(lst(spaceStrs) + " "); return spaceStrs[n]; } function lst(arr) { return arr[arr.length-1]; } var selectInput = function(node) { node.select(); }; if (ios) // Mobile Safari apparently has a bug where select() is broken. selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; else if (ie) // Suppress mysterious IE10 errors selectInput = function(node) { try { node.select(); } catch(_e) {} }; function indexOf(array, elt) { for (var i = 0; i < array.length; ++i) if (array[i] == elt) return i; return -1; } function map(array, f) { var out = []; for (var i = 0; i < array.length; i++) out[i] = f(array[i], i); return out; } function insertSorted(array, value, score) { var pos = 0, priority = score(value) while (pos < array.length && score(array[pos]) <= priority) pos++ array.splice(pos, 0, value) } function nothing() {} function createObj(base, props) { var inst; if (Object.create) { inst = Object.create(base); } else { nothing.prototype = base; inst = new nothing(); } if (props) copyObj(props, inst); return inst; }; function copyObj(obj, target, overwrite) { if (!target) target = {}; for (var prop in obj) if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) target[prop] = obj[prop]; return target; } function bind(f) { var args = Array.prototype.slice.call(arguments, 1); return function(){return f.apply(null, args);}; } var nonASCIISingleCaseWordChar = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; var isWordCharBasic = CodeMirror.isWordChar = function(ch) { return /\w/.test(ch) || ch > "\x80" && (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)); }; function isWordChar(ch, helper) { if (!helper) return isWordCharBasic(ch); if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) return true; return helper.test(ch); } function isEmpty(obj) { for (var n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false; return true; } // Extending unicode characters. A series of a non-extending char + // any number of extending chars is treated as a single unit as far // as editing and measuring is concerned. This is not fully correct, // since some scripts/fonts/browsers also treat other configurations // of code points as a group. var extendingChars = /[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/; function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); } // DOM UTILITIES function elt(tag, content, className, style) { var e = document.createElement(tag); if (className) e.className = className; if (style) e.style.cssText = style; if (typeof content == "string") e.appendChild(document.createTextNode(content)); else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]); return e; } var range; if (document.createRange) range = function(node, start, end, endNode) { var r = document.createRange(); r.setEnd(endNode || node, end); r.setStart(node, start); return r; }; else range = function(node, start, end) { var r = document.body.createTextRange(); try { r.moveToElementText(node.parentNode); } catch(e) { return r; } r.collapse(true); r.moveEnd("character", end); r.moveStart("character", start); return r; }; function removeChildren(e) { for (var count = e.childNodes.length; count > 0; --count) e.removeChild(e.firstChild); return e; } function removeChildrenAndAdd(parent, e) { return removeChildren(parent).appendChild(e); } var contains = CodeMirror.contains = function(parent, child) { if (child.nodeType == 3) // Android browser always returns false when child is a textnode child = child.parentNode; if (parent.contains) return parent.contains(child); do { if (child.nodeType == 11) child = child.host; if (child == parent) return true; } while (child = child.parentNode); }; function activeElt() { var activeElement = document.activeElement; while (activeElement && activeElement.root && activeElement.root.activeElement) activeElement = activeElement.root.activeElement; return activeElement; } // Older versions of IE throws unspecified error when touching // document.activeElement in some cases (during loading, in iframe) if (ie && ie_version < 11) activeElt = function() { try { return document.activeElement; } catch(e) { return document.body; } }; function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*"); } var rmClass = CodeMirror.rmClass = function(node, cls) { var current = node.className; var match = classTest(cls).exec(current); if (match) { var after = current.slice(match.index + match[0].length); node.className = current.slice(0, match.index) + (after ? match[1] + after : ""); } }; var addClass = CodeMirror.addClass = function(node, cls) { var current = node.className; if (!classTest(cls).test(current)) node.className += (current ? " " : "") + cls; }; function joinClasses(a, b) { var as = a.split(" "); for (var i = 0; i < as.length; i++) if (as[i] && !classTest(as[i]).test(b)) b += " " + as[i]; return b; } // WINDOW-WIDE EVENTS // These must be handled carefully, because naively registering a // handler for each editor will cause the editors to never be // garbage collected. function forEachCodeMirror(f) { if (!document.body.getElementsByClassName) return; var byClass = document.body.getElementsByClassName("CodeMirror"); for (var i = 0; i < byClass.length; i++) { var cm = byClass[i].CodeMirror; if (cm) f(cm); } } var globalsRegistered = false; function ensureGlobalHandlers() { if (globalsRegistered) return; registerGlobalHandlers(); globalsRegistered = true; } function registerGlobalHandlers() { // When the window resizes, we need to refresh active editors. var resizeTimer; on(window, "resize", function() { if (resizeTimer == null) resizeTimer = setTimeout(function() { resizeTimer = null; forEachCodeMirror(onResize); }, 100); }); // When the window loses focus, we want to show the editor as blurred on(window, "blur", function() { forEachCodeMirror(onBlur); }); } // FEATURE DETECTION // Detect drag-and-drop var dragAndDrop = function() { // There is *some* kind of drag-and-drop support in IE6-8, but I // couldn't get it to work yet. if (ie && ie_version < 9) return false; var div = elt('div'); return "draggable" in div || "dragDrop" in div; }(); var zwspSupported; function zeroWidthElement(measure) { if (zwspSupported == null) { var test = elt("span", "\u200b"); removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])); if (measure.firstChild.offsetHeight != 0) zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); } var node = zwspSupported ? elt("span", "\u200b") : elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px"); node.setAttribute("cm-text", ""); return node; } // Feature-detect IE's crummy client rect reporting for bidi text var badBidiRects; function hasBadBidiRects(measure) { if (badBidiRects != null) return badBidiRects; var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")); var r0 = range(txt, 0, 1).getBoundingClientRect(); var r1 = range(txt, 1, 2).getBoundingClientRect(); removeChildren(measure); if (!r0 || r0.left == r0.right) return false; // Safari returns null in some cases (#2780) return badBidiRects = (r1.right - r0.right < 3); } // See if "".split is the broken IE version, if so, provide an // alternative way to split lines. var splitLinesAuto = CodeMirror.splitLines = "\n\nb".split(/\n/).length != 3 ? function(string) { var pos = 0, result = [], l = string.length; while (pos <= l) { var nl = string.indexOf("\n", pos); if (nl == -1) nl = string.length; var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); var rt = line.indexOf("\r"); if (rt != -1) { result.push(line.slice(0, rt)); pos += rt + 1; } else { result.push(line); pos = nl + 1; } } return result; } : function(string){return string.split(/\r\n?|\n/);}; var hasSelection = window.getSelection ? function(te) { try { return te.selectionStart != te.selectionEnd; } catch(e) { return false; } } : function(te) { try {var range = te.ownerDocument.selection.createRange();} catch(e) {} if (!range || range.parentElement() != te) return false; return range.compareEndPoints("StartToEnd", range) != 0; }; var hasCopyEvent = (function() { var e = elt("div"); if ("oncopy" in e) return true; e.setAttribute("oncopy", "return;"); return typeof e.oncopy == "function"; })(); var badZoomedRects = null; function hasBadZoomedRects(measure) { if (badZoomedRects != null) return badZoomedRects; var node = removeChildrenAndAdd(measure, elt("span", "x")); var normal = node.getBoundingClientRect(); var fromRange = range(node, 0, 1).getBoundingClientRect(); return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1; } // KEY NAMES var keyNames = CodeMirror.keyNames = { 3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", 19: "Pause", 20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", 36: "Home", 37: "Left", 38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", 46: "Delete", 59: ";", 61: "=", 91: "Mod", 92: "Mod", 93: "Mod", 106: "*", 107: "=", 109: "-", 110: ".", 111: "/", 127: "Delete", 173: "-", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\\", 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63272: "Delete", 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert" }; (function() { // Number keys for (var i = 0; i < 10; i++) keyNames[i + 48] = keyNames[i + 96] = String(i); // Alphabetic keys for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i); // Function keys for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = "F" + i; })(); // BIDI HELPERS function iterateBidiSections(order, from, to, f) { if (!order) return f(from, to, "ltr"); var found = false; for (var i = 0; i < order.length; ++i) { var part = order[i]; if (part.from < to && part.to > from || from == to && part.to == from) { f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr"); found = true; } } if (!found) f(from, to, "ltr"); } function bidiLeft(part) { return part.level % 2 ? part.to : part.from; } function bidiRight(part) { return part.level % 2 ? part.from : part.to; } function lineLeft(line) { var order = getOrder(line); return order ? bidiLeft(order[0]) : 0; } function lineRight(line) { var order = getOrder(line); if (!order) return line.text.length; return bidiRight(lst(order)); } function lineStart(cm, lineN) { var line = getLine(cm.doc, lineN); var visual = visualLine(line); if (visual != line) lineN = lineNo(visual); var order = getOrder(visual); var ch = !order ? 0 : order[0].level % 2 ? lineRight(visual) : lineLeft(visual); return Pos(lineN, ch); } function lineEnd(cm, lineN) { var merged, line = getLine(cm.doc, lineN); while (merged = collapsedSpanAtEnd(line)) { line = merged.find(1, true).line; lineN = null; } var order = getOrder(line); var ch = !order ? line.text.length : order[0].level % 2 ? lineLeft(line) : lineRight(line); return Pos(lineN == null ? lineNo(line) : lineN, ch); } function lineStartSmart(cm, pos) { var start = lineStart(cm, pos.line); var line = getLine(cm.doc, start.line); var order = getOrder(line); if (!order || order[0].level == 0) { var firstNonWS = Math.max(0, line.text.search(/\S/)); var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch; return Pos(start.line, inWS ? 0 : firstNonWS); } return start; } function compareBidiLevel(order, a, b) { var linedir = order[0].level; if (a == linedir) return true; if (b == linedir) return false; return a < b; } var bidiOther; function getBidiPartAt(order, pos) { bidiOther = null; for (var i = 0, found; i < order.length; ++i) { var cur = order[i]; if (cur.from < pos && cur.to > pos) return i; if ((cur.from == pos || cur.to == pos)) { if (found == null) { found = i; } else if (compareBidiLevel(order, cur.level, order[found].level)) { if (cur.from != cur.to) bidiOther = found; return i; } else { if (cur.from != cur.to) bidiOther = i; return found; } } } return found; } function moveInLine(line, pos, dir, byUnit) { if (!byUnit) return pos + dir; do pos += dir; while (pos > 0 && isExtendingChar(line.text.charAt(pos))); return pos; } // This is needed in order to move 'visually' through bi-directional // text -- i.e., pressing left should make the cursor go left, even // when in RTL text. The tricky part is the 'jumps', where RTL and // LTR text touch each other. This often requires the cursor offset // to move more than one unit, in order to visually move one unit. function moveVisually(line, start, dir, byUnit) { var bidi = getOrder(line); if (!bidi) return moveLogically(line, start, dir, byUnit); var pos = getBidiPartAt(bidi, start), part = bidi[pos]; var target = moveInLine(line, start, part.level % 2 ? -dir : dir, byUnit); for (;;) { if (target > part.from && target < part.to) return target; if (target == part.from || target == part.to) { if (getBidiPartAt(bidi, target) == pos) return target; part = bidi[pos += dir]; return (dir > 0) == part.level % 2 ? part.to : part.from; } else { part = bidi[pos += dir]; if (!part) return null; if ((dir > 0) == part.level % 2) target = moveInLine(line, part.to, -1, byUnit); else target = moveInLine(line, part.from, 1, byUnit); } } } function moveLogically(line, start, dir, byUnit) { var target = start + dir; if (byUnit) while (target > 0 && isExtendingChar(line.text.charAt(target))) target += dir; return target < 0 || target > line.text.length ? null : target; } // Bidirectional ordering algorithm // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm // that this (partially) implements. // One-char codes used for character types: // L (L): Left-to-Right // R (R): Right-to-Left // r (AL): Right-to-Left Arabic // 1 (EN): European Number // + (ES): European Number Separator // % (ET): European Number Terminator // n (AN): Arabic Number // , (CS): Common Number Separator // m (NSM): Non-Spacing Mark // b (BN): Boundary Neutral // s (B): Paragraph Separator // t (S): Segment Separator // w (WS): Whitespace // N (ON): Other Neutrals // Returns null if characters are ordered as they appear // (left-to-right), or an array of sections ({from, to, level} // objects) in the order in which they occur visually. var bidiOrdering = (function() { // Character types for codepoints 0 to 0xff var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN"; // Character types for codepoints 0x600 to 0x6ff var arabicTypes = "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm"; function charType(code) { if (code <= 0xf7) return lowTypes.charAt(code); else if (0x590 <= code && code <= 0x5f4) return "R"; else if (0x600 <= code && code <= 0x6ed) return arabicTypes.charAt(code - 0x600); else if (0x6ee <= code && code <= 0x8ac) return "r"; else if (0x2000 <= code && code <= 0x200b) return "w"; else if (code == 0x200c) return "b"; else return "L"; } var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/; // Browsers seem to always treat the boundaries of block elements as being L. var outerType = "L"; function BidiSpan(level, from, to) { this.level = level; this.from = from; this.to = to; } return function(str) { if (!bidiRE.test(str)) return false; var len = str.length, types = []; for (var i = 0, type; i < len; ++i) types.push(type = charType(str.charCodeAt(i))); // W1. Examine each non-spacing mark (NSM) in the level run, and // change the type of the NSM to the type of the previous // character. If the NSM is at the start of the level run, it will // get the type of sor. for (var i = 0, prev = outerType; i < len; ++i) { var type = types[i]; if (type == "m") types[i] = prev; else prev = type; } // W2. Search backwards from each instance of a European number // until the first strong type (R, L, AL, or sor) is found. If an // AL is found, change the type of the European number to Arabic // number. // W3. Change all ALs to R. for (var i = 0, cur = outerType; i < len; ++i) { var type = types[i]; if (type == "1" && cur == "r") types[i] = "n"; else if (isStrong.test(type)) { cur = type; if (type == "r") types[i] = "R"; } } // W4. A single European separator between two European numbers // changes to a European number. A single common separator between // two numbers of the same type changes to that type. for (var i = 1, prev = types[0]; i < len - 1; ++i) { var type = types[i]; if (type == "+" && prev == "1" && types[i+1] == "1") types[i] = "1"; else if (type == "," && prev == types[i+1] && (prev == "1" || prev == "n")) types[i] = prev; prev = type; } // W5. A sequence of European terminators adjacent to European // numbers changes to all European numbers. // W6. Otherwise, separators and terminators change to Other // Neutral. for (var i = 0; i < len; ++i) { var type = types[i]; if (type == ",") types[i] = "N"; else if (type == "%") { for (var end = i + 1; end < len && types[end] == "%"; ++end) {} var replace = (i && types[i-1] == "!") || (end < len && types[end] == "1") ? "1" : "N"; for (var j = i; j < end; ++j) types[j] = replace; i = end - 1; } } // W7. Search backwards from each instance of a European number // until the first strong type (R, L, or sor) is found. If an L is // found, then change the type of the European number to L. for (var i = 0, cur = outerType; i < len; ++i) { var type = types[i]; if (cur == "L" && type == "1") types[i] = "L"; else if (isStrong.test(type)) cur = type; } // N1. A sequence of neutrals takes the direction of the // surrounding strong text if the text on both sides has the same // direction. European and Arabic numbers act as if they were R in // terms of their influence on neutrals. Start-of-level-run (sor) // and end-of-level-run (eor) are used at level run boundaries. // N2. Any remaining neutrals take the embedding direction. for (var i = 0; i < len; ++i) { if (isNeutral.test(types[i])) { for (var end = i + 1; end < len && isNeutral.test(types[end]); ++end) {} var before = (i ? types[i-1] : outerType) == "L"; var after = (end < len ? types[end] : outerType) == "L"; var replace = before || after ? "L" : "R"; for (var j = i; j < end; ++j) types[j] = replace; i = end - 1; } } // Here we depart from the documented algorithm, in order to avoid // building up an actual levels array. Since there are only three // levels (0, 1, 2) in an implementation that doesn't take // explicit embedding into account, we can build up the order on // the fly, without following the level-based algorithm. var order = [], m; for (var i = 0; i < len;) { if (countsAsLeft.test(types[i])) { var start = i; for (++i; i < len && countsAsLeft.test(types[i]); ++i) {} order.push(new BidiSpan(0, start, i)); } else { var pos = i, at = order.length; for (++i; i < len && types[i] != "L"; ++i) {} for (var j = pos; j < i;) { if (countsAsNum.test(types[j])) { if (pos < j) order.splice(at, 0, new BidiSpan(1, pos, j)); var nstart = j; for (++j; j < i && countsAsNum.test(types[j]); ++j) {} order.splice(at, 0, new BidiSpan(2, nstart, j)); pos = j; } else ++j; } if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i)); } } if (order[0].level == 1 && (m = str.match(/^\s+/))) { order[0].from = m[0].length; order.unshift(new BidiSpan(0, 0, m[0].length)); } if (lst(order).level == 1 && (m = str.match(/\s+$/))) { lst(order).to -= m[0].length; order.push(new BidiSpan(0, len - m[0].length, len)); } if (order[0].level == 2) order.unshift(new BidiSpan(1, order[0].to, order[0].to)); if (order[0].level != lst(order).level) order.push(new BidiSpan(order[0].level, len, len)); return order; }; })(); // THE END CodeMirror.version = "5.18.2"; return CodeMirror; }); application/library/codemirror/lib/codemirror.css000064400000020166147577724760016344 0ustar00/* BASICS */ .CodeMirror { /* Set height, width, borders, and global font properties here */ font-family: monospace; height: inherit; color: black; } /* PADDING */ .CodeMirror-lines { padding: 4px 0; /* Vertical padding around content */ } .CodeMirror pre { padding: 0 4px; /* Horizontal padding of content */ } .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { background-color: white; /* The little square between H and V scrollbars */ } /* GUTTER */ .CodeMirror-gutters { border-right: 1px solid #ddd; background-color: #f7f7f7; white-space: nowrap; } .CodeMirror-linenumbers {} .CodeMirror-linenumber { padding: 0 3px 0 5px; min-width: 20px; text-align: right; color: #999; white-space: nowrap; } .CodeMirror-guttermarker { color: black; } .CodeMirror-guttermarker-subtle { color: #999; } /* CURSOR */ .CodeMirror-cursor { border-left: 1px solid black; border-right: none; width: 0; } /* Shown when moving in bi-directional text */ .CodeMirror div.CodeMirror-secondarycursor { border-left: 1px solid silver; } .cm-fat-cursor .CodeMirror-cursor { width: auto; border: 0 !important; background: #7e7; } .cm-fat-cursor div.CodeMirror-cursors { z-index: 1; } .cm-animate-fat-cursor { width: auto; border: 0; -webkit-animation: blink 1.06s steps(1) infinite; -moz-animation: blink 1.06s steps(1) infinite; animation: blink 1.06s steps(1) infinite; background-color: #7e7; } @-moz-keyframes blink { 0% {} 50% { background-color: transparent; } 100% {} } @-webkit-keyframes blink { 0% {} 50% { background-color: transparent; } 100% {} } @keyframes blink { 0% {} 50% { background-color: transparent; } 100% {} } /* Can style cursor different in overwrite (non-insert) mode */ .CodeMirror-overwrite .CodeMirror-cursor {} .cm-tab { display: inline-block; text-decoration: inherit; } .CodeMirror-rulers { position: absolute; left: 0; right: 0; top: -50px; bottom: -20px; overflow: hidden; } .CodeMirror-ruler { border-left: 1px solid #ccc; top: 0; bottom: 0; position: absolute; } /* DEFAULT THEME */ .cm-s-default .cm-header {color: blue;} .cm-s-default .cm-quote {color: #090;} .cm-negative {color: #d44;} .cm-positive {color: #292;} .cm-header, .cm-strong {font-weight: bold;} .cm-em {font-style: italic;} .cm-link {text-decoration: underline;} .cm-strikethrough {text-decoration: line-through;} .cm-s-default .cm-keyword {color: #708;} .cm-s-default .cm-atom {color: #219;} .cm-s-default .cm-number {color: #164;} .cm-s-default .cm-def {color: #00f;} .cm-s-default .cm-variable, .cm-s-default .cm-punctuation, .cm-s-default .cm-property, .cm-s-default .cm-operator {} .cm-s-default .cm-variable-2 {color: #05a;} .cm-s-default .cm-variable-3 {color: #085;} .cm-s-default .cm-comment {color: #a50;} .cm-s-default .cm-string {color: #a11;} .cm-s-default .cm-string-2 {color: #f50;} .cm-s-default .cm-meta {color: #555;} .cm-s-default .cm-qualifier {color: #555;} .cm-s-default .cm-builtin {color: #30a;} .cm-s-default .cm-bracket {color: #997;} .cm-s-default .cm-tag {color: #170;} .cm-s-default .cm-attribute {color: #00c;} .cm-s-default .cm-hr {color: #999;} .cm-s-default .cm-link {color: #00c;} .cm-s-default .cm-error {color: #f00;} .cm-invalidchar {color: #f00;} .CodeMirror-composing { border-bottom: 2px solid; } /* Default styles for common addons */ div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;} div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} .CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } .CodeMirror-activeline-background {background: #e8f2ff;} /* STOP */ /* The rest of this file contains styles related to the mechanics of the editor. You probably shouldn't touch them. */ .CodeMirror { position: relative; overflow: hidden; background: white; } .CodeMirror-scroll { overflow: scroll !important; /* Things will break if this is overridden */ /* 30px is the magic margin used to hide the element's real scrollbars */ /* See overflow: hidden in .CodeMirror */ margin-bottom: -30px; margin-right: -30px; padding-bottom: 30px; height: 100%; outline: none; /* Prevent dragging from highlighting the element */ position: relative; } .CodeMirror-sizer { position: relative; border-right: 30px solid transparent; } /* The fake, visible scrollbars. Used to force redraw during scrolling before actual scrolling happens, thus preventing shaking and flickering artifacts. */ .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { position: absolute; z-index: 6; display: none; } .CodeMirror-vscrollbar { right: 0; top: 0; overflow-x: hidden; overflow-y: scroll; } .CodeMirror-hscrollbar { bottom: 0; left: 0; overflow-y: hidden; overflow-x: scroll; } .CodeMirror-scrollbar-filler { right: 0; bottom: 0; } .CodeMirror-gutter-filler { left: 0; bottom: 0; } .CodeMirror-gutters { position: absolute; left: 0; top: 0; min-height: 100%; z-index: 3; } .CodeMirror-gutter { white-space: normal; height: 100%; display: inline-block; vertical-align: top; margin-bottom: -30px; /* Hack to make IE7 behave */ *zoom:1; *display:inline; } .CodeMirror-gutter-wrapper { position: absolute; z-index: 4; background: none !important; border: none !important; } .CodeMirror-gutter-background { position: absolute; top: 0; bottom: 0; z-index: 4; } .CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; } .CodeMirror-gutter-wrapper { -webkit-user-select: none; -moz-user-select: none; user-select: none; } .CodeMirror-lines { cursor: text; min-height: 1px; /* prevents collapsing before first draw */ } .CodeMirror pre { /* Reset some styles that the rest of the page might have set */ -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; border-width: 0; background: transparent; font-family: inherit; font-size: inherit; margin: 0; white-space: pre; word-wrap: normal; line-height: inherit; color: inherit; z-index: 2; position: relative; overflow: visible; -webkit-tap-highlight-color: transparent; -webkit-font-variant-ligatures: none; font-variant-ligatures: none; } .CodeMirror-wrap pre { word-wrap: break-word; white-space: pre-wrap; word-break: normal; } .CodeMirror-linebackground { position: absolute; left: 0; right: 0; top: 0; bottom: 0; z-index: 0; } .CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; } .CodeMirror-widget {} .CodeMirror-code { outline: none; } /* Force content-box sizing for the elements where we expect it */ .CodeMirror-scroll, .CodeMirror-sizer, .CodeMirror-gutter, .CodeMirror-gutters, .CodeMirror-linenumber { -moz-box-sizing: content-box; box-sizing: content-box; } .CodeMirror-measure { position: absolute; width: 100%; height: 0; overflow: hidden; visibility: hidden; } .CodeMirror-cursor { position: absolute; pointer-events: none; } .CodeMirror-measure pre { position: static; } div.CodeMirror-cursors { visibility: hidden; position: relative; z-index: 3; } div.CodeMirror-dragcursors { visibility: visible; } .CodeMirror-focused div.CodeMirror-cursors { visibility: visible; } .CodeMirror-selected { background: #d9d9d9; } .CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } .CodeMirror-crosshair { cursor: crosshair; } .CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } .CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } .cm-searching { background: #ffa; background: rgba(255, 255, 0, .4); } /* IE7 hack to prevent it from returning funny offsetTops on the spans */ .CodeMirror span { *vertical-align: text-bottom; } /* Used to force a border model for a node */ .cm-force-border { padding-right: .1px; } @media print { /* Hide the cursor when printing */ .CodeMirror div.CodeMirror-cursors { visibility: hidden; } } /* See issue #2901 */ .cm-tab-wrap-hack:after { content: ''; } /* Help users use markselection to safely style text background */ span.CodeMirror-selectedtext { background: none; } application/library/codemirror/mode/apl/apl.js000064400000011200147577724760015516 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("apl", function() { var builtInOps = { ".": "innerProduct", "\\": "scan", "/": "reduce", "⌿": "reduce1Axis", "⍀": "scan1Axis", "š": "each", "⍣": "power" }; var builtInFuncs = { "+": ["conjugate", "add"], "−": ["negate", "subtract"], "×": ["signOf", "multiply"], "Ă·": ["reciprocal", "divide"], "⌈": ["ceiling", "greaterOf"], "⌊": ["floor", "lesserOf"], "∣": ["absolute", "residue"], "⍳": ["indexGenerate", "indexOf"], "?": ["roll", "deal"], "⋆": ["exponentiate", "toThePowerOf"], "⍟": ["naturalLog", "logToTheBase"], "○": ["piTimes", "circularFuncs"], "!": ["factorial", "binomial"], "âŒč": ["matrixInverse", "matrixDivide"], "<": [null, "lessThan"], "≀": [null, "lessThanOrEqual"], "=": [null, "equals"], ">": [null, "greaterThan"], "≄": [null, "greaterThanOrEqual"], "≠": [null, "notEqual"], "≡": ["depth", "match"], "≱": [null, "notMatch"], "∈": ["enlist", "membership"], "⍷": [null, "find"], "âˆȘ": ["unique", "union"], "∩": [null, "intersection"], "∌": ["not", "without"], "√": [null, "or"], "∧": [null, "and"], "⍱": [null, "nor"], "âČ": [null, "nand"], "⍎": ["shapeOf", "reshape"], ",": ["ravel", "catenate"], "âȘ": [null, "firstAxisCatenate"], "⌜": ["reverse", "rotate"], "⊖": ["axis1Reverse", "axis1Rotate"], "⍉": ["transpose", null], "↑": ["first", "take"], "↓": [null, "drop"], "⊂": ["enclose", "partitionWithAxis"], "⊃": ["diclose", "pick"], "⌷": [null, "index"], "⍋": ["gradeUp", null], "⍒": ["gradeDown", null], "⊀": ["encode", null], "⊄": ["decode", null], "⍕": ["format", "formatByExample"], "⍎": ["execute", null], "⊣": ["stop", "left"], "⊱": ["pass", "right"] }; var isOperator = /[\.\/⌿⍀¹⍣]/; var isNiladic = /⍬/; var isFunction = /[\+âˆ’Ă—Ă·âŒˆâŒŠâˆŁâł\?⋆⍟○!âŒč<≀=>â‰„â‰ â‰Ąâ‰ąâˆˆâ·âˆȘ∩∌√∧⍱âČ⍎,âȘâŒœâŠ–â‰â†‘â†“âŠ‚âŠƒâŒ·â‹â’âŠ€âŠ„â•âŽâŠŁâŠą]/; var isArrow = /←/; var isComment = /[⍝#].*$/; var stringEater = function(type) { var prev; prev = false; return function(c) { prev = c; if (c === type) { return prev === "\\"; } return true; }; }; return { startState: function() { return { prev: false, func: false, op: false, string: false, escape: false }; }, token: function(stream, state) { var ch, funcName; if (stream.eatSpace()) { return null; } ch = stream.next(); if (ch === '"' || ch === "'") { stream.eatWhile(stringEater(ch)); stream.next(); state.prev = true; return "string"; } if (/[\[{\(]/.test(ch)) { state.prev = false; return null; } if (/[\]}\)]/.test(ch)) { state.prev = true; return null; } if (isNiladic.test(ch)) { state.prev = false; return "niladic"; } if (/[ÂŻ\d]/.test(ch)) { if (state.func) { state.func = false; state.prev = false; } else { state.prev = true; } stream.eatWhile(/[\w\.]/); return "number"; } if (isOperator.test(ch)) { return "operator apl-" + builtInOps[ch]; } if (isArrow.test(ch)) { return "apl-arrow"; } if (isFunction.test(ch)) { funcName = "apl-"; if (builtInFuncs[ch] != null) { if (state.prev) { funcName += builtInFuncs[ch][1]; } else { funcName += builtInFuncs[ch][0]; } } state.func = true; state.prev = false; return "function " + funcName; } if (isComment.test(ch)) { stream.skipToEnd(); return "comment"; } if (ch === "∘" && stream.peek() === ".") { stream.next(); return "function jot-dot"; } stream.eatWhile(/[\w\$_]/); state.prev = true; return "keyword"; } }; }); CodeMirror.defineMIME("text/apl", "apl"); }); application/library/codemirror/mode/apl/index.html000064400000004203147577724760016406 0ustar00 CodeMirror: APL mode

APL mode

Simple mode that tries to handle APL as well as it can.

It attempts to label functions/operators based upon monadic/dyadic usage (but this is far from fully fleshed out). This means there are meaningful classnames so hover states can have popups etc.

MIME types defined: text/apl (APL code)

application/library/codemirror/mode/asciiarmor/index.html000064400000002411147577724760017762 0ustar00 CodeMirror: ASCII Armor (PGP) mode

ASCII Armor (PGP) mode

MIME types defined: application/pgp, application/pgp-keys, application/pgp-signature

application/library/codemirror/mode/asciiarmor/asciiarmor.js000064400000004512147577724760020460 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function errorIfNotEmpty(stream) { var nonWS = stream.match(/^\s*\S/); stream.skipToEnd(); return nonWS ? "error" : null; } CodeMirror.defineMode("asciiarmor", function() { return { token: function(stream, state) { var m; if (state.state == "top") { if (stream.sol() && (m = stream.match(/^-----BEGIN (.*)?-----\s*$/))) { state.state = "headers"; state.type = m[1]; return "tag"; } return errorIfNotEmpty(stream); } else if (state.state == "headers") { if (stream.sol() && stream.match(/^\w+:/)) { state.state = "header"; return "atom"; } else { var result = errorIfNotEmpty(stream); if (result) state.state = "body"; return result; } } else if (state.state == "header") { stream.skipToEnd(); state.state = "headers"; return "string"; } else if (state.state == "body") { if (stream.sol() && (m = stream.match(/^-----END (.*)?-----\s*$/))) { if (m[1] != state.type) return "error"; state.state = "end"; return "tag"; } else { if (stream.eatWhile(/[A-Za-z0-9+\/=]/)) { return null; } else { stream.next(); return "error"; } } } else if (state.state == "end") { return errorIfNotEmpty(stream); } }, blankLine: function(state) { if (state.state == "headers") state.state = "body"; }, startState: function() { return {state: "top", type: null}; } }; }); CodeMirror.defineMIME("application/pgp", "asciiarmor"); CodeMirror.defineMIME("application/pgp-keys", "asciiarmor"); CodeMirror.defineMIME("application/pgp-signature", "asciiarmor"); }); application/library/codemirror/mode/asn.1/index.html000064400000004256147577724760016562 0ustar00ï»ż CodeMirror: ASN.1 mode

ASN.1 example


Language: Abstract Syntax Notation One (ASN.1)

MIME types defined: text/x-ttcn-asn


The development of this mode has been sponsored by Ericsson .

Coded by Asmelash Tsegay Gebretsadkan

application/library/codemirror/mode/asn.1/asn.1.js000064400000017067147577724760016047 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("asn.1", function(config, parserConfig) { var indentUnit = config.indentUnit, keywords = parserConfig.keywords || {}, cmipVerbs = parserConfig.cmipVerbs || {}, compareTypes = parserConfig.compareTypes || {}, status = parserConfig.status || {}, tags = parserConfig.tags || {}, storage = parserConfig.storage || {}, modifier = parserConfig.modifier || {}, accessTypes = parserConfig.accessTypes|| {}, multiLineStrings = parserConfig.multiLineStrings, indentStatements = parserConfig.indentStatements !== false; var isOperatorChar = /[\|\^]/; var curPunc; function tokenBase(stream, state) { var ch = stream.next(); if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (/[\[\]\(\){}:=,;]/.test(ch)) { curPunc = ch; return "punctuation"; } if (ch == "-"){ if (stream.eat("-")) { stream.skipToEnd(); return "comment"; } } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\-]/); var cur = stream.current(); if (keywords.propertyIsEnumerable(cur)) return "keyword"; if (cmipVerbs.propertyIsEnumerable(cur)) return "variable cmipVerbs"; if (compareTypes.propertyIsEnumerable(cur)) return "atom compareTypes"; if (status.propertyIsEnumerable(cur)) return "comment status"; if (tags.propertyIsEnumerable(cur)) return "variable-3 tags"; if (storage.propertyIsEnumerable(cur)) return "builtin storage"; if (modifier.propertyIsEnumerable(cur)) return "string-2 modifier"; if (accessTypes.propertyIsEnumerable(cur)) return "atom accessTypes"; return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped){ var afterNext = stream.peek(); //look if the character if the quote is like the B in '10100010'B if (afterNext){ afterNext = afterNext.toLowerCase(); if(afterNext == "b" || afterNext == "h" || afterNext == "o") stream.next(); } end = true; break; } escaped = !escaped && next == "\\"; } if (end || !(escaped || multiLineStrings)) state.tokenize = null; return "string"; }; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { var indent = state.indented; if (state.context && state.context.type == "statement") indent = state.context.indented; return state.context = new Context(indent, col, type, null, state.context); } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } //Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) return null; curPunc = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment") return style; if (ctx.align == null) ctx.align = true; if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement"){ popContext(state); } else if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "}") { while (ctx.type == "statement") ctx = popContext(state); if (ctx.type == "}") ctx = popContext(state); while (ctx.type == "statement") ctx = popContext(state); } else if (curPunc == ctx.type) popContext(state); else if (indentStatements && (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement"))) pushContext(state, stream.column(), "statement"); state.startOfLine = false; return style; }, electricChars: "{}", lineComment: "--", fold: "brace" }; }); function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } CodeMirror.defineMIME("text/x-ttcn-asn", { name: "asn.1", keywords: words("DEFINITIONS OBJECTS IF DERIVED INFORMATION ACTION" + " REPLY ANY NAMED CHARACTERIZED BEHAVIOUR REGISTERED" + " WITH AS IDENTIFIED CONSTRAINED BY PRESENT BEGIN" + " IMPORTS FROM UNITS SYNTAX MIN-ACCESS MAX-ACCESS" + " MINACCESS MAXACCESS REVISION STATUS DESCRIPTION" + " SEQUENCE SET COMPONENTS OF CHOICE DistinguishedName" + " ENUMERATED SIZE MODULE END INDEX AUGMENTS EXTENSIBILITY" + " IMPLIED EXPORTS"), cmipVerbs: words("ACTIONS ADD GET NOTIFICATIONS REPLACE REMOVE"), compareTypes: words("OPTIONAL DEFAULT MANAGED MODULE-TYPE MODULE_IDENTITY" + " MODULE-COMPLIANCE OBJECT-TYPE OBJECT-IDENTITY" + " OBJECT-COMPLIANCE MODE CONFIRMED CONDITIONAL" + " SUBORDINATE SUPERIOR CLASS TRUE FALSE NULL" + " TEXTUAL-CONVENTION"), status: words("current deprecated mandatory obsolete"), tags: words("APPLICATION AUTOMATIC EXPLICIT IMPLICIT PRIVATE TAGS" + " UNIVERSAL"), storage: words("BOOLEAN INTEGER OBJECT IDENTIFIER BIT OCTET STRING" + " UTCTime InterfaceIndex IANAifType CMIP-Attribute" + " REAL PACKAGE PACKAGES IpAddress PhysAddress" + " NetworkAddress BITS BMPString TimeStamp TimeTicks" + " TruthValue RowStatus DisplayString GeneralString" + " GraphicString IA5String NumericString" + " PrintableString SnmpAdminAtring TeletexString" + " UTF8String VideotexString VisibleString StringStore" + " ISO646String T61String UniversalString Unsigned32" + " Integer32 Gauge Gauge32 Counter Counter32 Counter64"), modifier: words("ATTRIBUTE ATTRIBUTES MANDATORY-GROUP MANDATORY-GROUPS" + " GROUP GROUPS ELEMENTS EQUALITY ORDERING SUBSTRINGS" + " DEFINED"), accessTypes: words("not-accessible accessible-for-notify read-only" + " read-create read-write"), multiLineStrings: true }); }); application/library/codemirror/mode/asterisk/index.html000064400000010757147577724760017472 0ustar00 CodeMirror: Asterisk dialplan mode

Asterisk dialplan mode

MIME types defined: text/x-asterisk.

application/library/codemirror/mode/asterisk/asterisk.js000064400000016415147577724760017655 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /* * ===================================================================================== * * Filename: mode/asterisk/asterisk.js * * Description: CodeMirror mode for Asterisk dialplan * * Created: 05/17/2012 09:20:25 PM * Revision: none * * Author: Stas Kobzar (stas@modulis.ca), * Company: Modulis.ca Inc. * * ===================================================================================== */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("asterisk", function() { var atoms = ["exten", "same", "include","ignorepat","switch"], dpcmd = ["#include","#exec"], apps = [ "addqueuemember","adsiprog","aelsub","agentlogin","agentmonitoroutgoing","agi", "alarmreceiver","amd","answer","authenticate","background","backgrounddetect", "bridge","busy","callcompletioncancel","callcompletionrequest","celgenuserevent", "changemonitor","chanisavail","channelredirect","chanspy","clearhash","confbridge", "congestion","continuewhile","controlplayback","dahdiacceptr2call","dahdibarge", "dahdiras","dahdiscan","dahdisendcallreroutingfacility","dahdisendkeypadfacility", "datetime","dbdel","dbdeltree","deadagi","dial","dictate","directory","disa", "dumpchan","eagi","echo","endwhile","exec","execif","execiftime","exitwhile","extenspy", "externalivr","festival","flash","followme","forkcdr","getcpeid","gosub","gosubif", "goto","gotoif","gotoiftime","hangup","iax2provision","ices","importvar","incomplete", "ivrdemo","jabberjoin","jabberleave","jabbersend","jabbersendgroup","jabberstatus", "jack","log","macro","macroexclusive","macroexit","macroif","mailboxexists","meetme", "meetmeadmin","meetmechanneladmin","meetmecount","milliwatt","minivmaccmess","minivmdelete", "minivmgreet","minivmmwi","minivmnotify","minivmrecord","mixmonitor","monitor","morsecode", "mp3player","mset","musiconhold","nbscat","nocdr","noop","odbc","odbc","odbcfinish", "originate","ospauth","ospfinish","osplookup","ospnext","page","park","parkandannounce", "parkedcall","pausemonitor","pausequeuemember","pickup","pickupchan","playback","playtones", "privacymanager","proceeding","progress","queue","queuelog","raiseexception","read","readexten", "readfile","receivefax","receivefax","receivefax","record","removequeuemember", "resetcdr","retrydial","return","ringing","sayalpha","saycountedadj","saycountednoun", "saycountpl","saydigits","saynumber","sayphonetic","sayunixtime","senddtmf","sendfax", "sendfax","sendfax","sendimage","sendtext","sendurl","set","setamaflags", "setcallerpres","setmusiconhold","sipaddheader","sipdtmfmode","sipremoveheader","skel", "slastation","slatrunk","sms","softhangup","speechactivategrammar","speechbackground", "speechcreate","speechdeactivategrammar","speechdestroy","speechloadgrammar","speechprocessingsound", "speechstart","speechunloadgrammar","stackpop","startmusiconhold","stopmixmonitor","stopmonitor", "stopmusiconhold","stopplaytones","system","testclient","testserver","transfer","tryexec", "trysystem","unpausemonitor","unpausequeuemember","userevent","verbose","vmauthenticate", "vmsayname","voicemail","voicemailmain","wait","waitexten","waitfornoise","waitforring", "waitforsilence","waitmusiconhold","waituntil","while","zapateller" ]; function basicToken(stream,state){ var cur = ''; var ch = stream.next(); // comment if(ch == ";") { stream.skipToEnd(); return "comment"; } // context if(ch == '[') { stream.skipTo(']'); stream.eat(']'); return "header"; } // string if(ch == '"') { stream.skipTo('"'); return "string"; } if(ch == "'") { stream.skipTo("'"); return "string-2"; } // dialplan commands if(ch == '#') { stream.eatWhile(/\w/); cur = stream.current(); if(dpcmd.indexOf(cur) !== -1) { stream.skipToEnd(); return "strong"; } } // application args if(ch == '$'){ var ch1 = stream.peek(); if(ch1 == '{'){ stream.skipTo('}'); stream.eat('}'); return "variable-3"; } } // extension stream.eatWhile(/\w/); cur = stream.current(); if(atoms.indexOf(cur) !== -1) { state.extenStart = true; switch(cur) { case 'same': state.extenSame = true; break; case 'include': case 'switch': case 'ignorepat': state.extenInclude = true;break; default:break; } return "atom"; } } return { startState: function() { return { extenStart: false, extenSame: false, extenInclude: false, extenExten: false, extenPriority: false, extenApplication: false }; }, token: function(stream, state) { var cur = ''; if(stream.eatSpace()) return null; // extension started if(state.extenStart){ stream.eatWhile(/[^\s]/); cur = stream.current(); if(/^=>?$/.test(cur)){ state.extenExten = true; state.extenStart = false; return "strong"; } else { state.extenStart = false; stream.skipToEnd(); return "error"; } } else if(state.extenExten) { // set exten and priority state.extenExten = false; state.extenPriority = true; stream.eatWhile(/[^,]/); if(state.extenInclude) { stream.skipToEnd(); state.extenPriority = false; state.extenInclude = false; } if(state.extenSame) { state.extenPriority = false; state.extenSame = false; state.extenApplication = true; } return "tag"; } else if(state.extenPriority) { state.extenPriority = false; state.extenApplication = true; stream.next(); // get comma if(state.extenSame) return null; stream.eatWhile(/[^,]/); return "number"; } else if(state.extenApplication) { stream.eatWhile(/,/); cur = stream.current(); if(cur === ',') return null; stream.eatWhile(/\w/); cur = stream.current().toLowerCase(); state.extenApplication = false; if(apps.indexOf(cur) !== -1){ return "def strong"; } } else{ return basicToken(stream,state); } return null; } }; }); CodeMirror.defineMIME("text/x-asterisk", "asterisk"); }); application/library/codemirror/mode/brainfuck/brainfuck.js000064400000004176147577724760020114 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Brainfuck mode created by Michael Kaminsky https://github.com/mkaminsky11 (function(mod) { if (typeof exports == "object" && typeof module == "object") mod(require("../../lib/codemirror")) else if (typeof define == "function" && define.amd) define(["../../lib/codemirror"], mod) else mod(CodeMirror) })(function(CodeMirror) { "use strict" var reserve = "><+-.,[]".split(""); /* comments can be either: placed behind lines +++ this is a comment where reserved characters cannot be used or in a loop [ this is ok to use [ ] and stuff ] or preceded by # */ CodeMirror.defineMode("brainfuck", function() { return { startState: function() { return { commentLine: false, left: 0, right: 0, commentLoop: false } }, token: function(stream, state) { if (stream.eatSpace()) return null if(stream.sol()){ state.commentLine = false; } var ch = stream.next().toString(); if(reserve.indexOf(ch) !== -1){ if(state.commentLine === true){ if(stream.eol()){ state.commentLine = false; } return "comment"; } if(ch === "]" || ch === "["){ if(ch === "["){ state.left++; } else{ state.right++; } return "bracket"; } else if(ch === "+" || ch === "-"){ return "keyword"; } else if(ch === "<" || ch === ">"){ return "atom"; } else if(ch === "." || ch === ","){ return "def"; } } else{ state.commentLine = true; if(stream.eol()){ state.commentLine = false; } return "comment"; } if(stream.eol()){ state.commentLine = false; } } }; }); CodeMirror.defineMIME("text/x-brainfuck","brainfuck") }); application/library/codemirror/mode/brainfuck/index.html000064400000006412147577724760017602 0ustar00 CodeMirror: Brainfuck mode

Brainfuck mode

A mode for Brainfuck

MIME types defined: text/x-brainfuck

application/library/codemirror/mode/clike/index.html000064400000023571147577724760016732 0ustar00 CodeMirror: C-like mode

C-like mode

C++ example

Objective-C example

Java example

Scala example

Kotlin mode

Ceylon mode

Simple mode that tries to handle C-like languages as well as it can. Takes two configuration parameters: keywords, an object whose property names are the keywords in the language, and useCPP, which determines whether C preprocessor directives are recognized.

MIME types defined: text/x-csrc (C), text/x-c++src (C++), text/x-java (Java), text/x-csharp (C#), text/x-objectivec (Objective-C), text/x-scala (Scala), text/x-vertex x-shader/x-fragment (shader programs), text/x-squirrel (Squirrel) and text/x-ceylon (Ceylon)

application/library/codemirror/mode/clike/clike.js000064400000074016147577724760016362 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function Context(indented, column, type, info, align, prev) { this.indented = indented; this.column = column; this.type = type; this.info = info; this.align = align; this.prev = prev; } function pushContext(state, col, type, info) { var indent = state.indented; if (state.context && state.context.type != "statement" && type != "statement") indent = state.context.indented; return state.context = new Context(indent, col, type, info, null, state.context); } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } function typeBefore(stream, state, pos) { if (state.prevToken == "variable" || state.prevToken == "variable-3") return true; if (/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(stream.string.slice(0, pos))) return true; if (state.typeAtEndOfLine && stream.column() == stream.indentation()) return true; } function isTopScope(context) { for (;;) { if (!context || context.type == "top") return true; if (context.type == "}" && context.prev.info != "namespace") return false; context = context.prev; } } CodeMirror.defineMode("clike", function(config, parserConfig) { var indentUnit = config.indentUnit, statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, dontAlignCalls = parserConfig.dontAlignCalls, keywords = parserConfig.keywords || {}, types = parserConfig.types || {}, builtin = parserConfig.builtin || {}, blockKeywords = parserConfig.blockKeywords || {}, defKeywords = parserConfig.defKeywords || {}, atoms = parserConfig.atoms || {}, hooks = parserConfig.hooks || {}, multiLineStrings = parserConfig.multiLineStrings, indentStatements = parserConfig.indentStatements !== false, indentSwitch = parserConfig.indentSwitch !== false, namespaceSeparator = parserConfig.namespaceSeparator, isPunctuationChar = parserConfig.isPunctuationChar || /[\[\]{}\(\),;\:\.]/, numberStart = parserConfig.numberStart || /[\d\.]/, number = parserConfig.number || /^(?:0x[a-f\d]+|0b[01]+|(?:\d+\.?\d*|\.\d+)(?:e[-+]?\d+)?)(u|ll?|l|f)?/i, isOperatorChar = parserConfig.isOperatorChar || /[+\-*&%=<>!?|\/]/, endStatement = parserConfig.endStatement || /^[;:,]$/; var curPunc, isDefKeyword; function tokenBase(stream, state) { var ch = stream.next(); if (hooks[ch]) { var result = hooks[ch](stream, state); if (result !== false) return result; } if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (isPunctuationChar.test(ch)) { curPunc = ch; return null; } if (numberStart.test(ch)) { stream.backUp(1) if (stream.match(number)) return "number" stream.next() } if (ch == "/") { if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } if (isOperatorChar.test(ch)) { while (!stream.match(/^\/[\/*]/, false) && stream.eat(isOperatorChar)) {} return "operator"; } stream.eatWhile(/[\w\$_\xa1-\uffff]/); if (namespaceSeparator) while (stream.match(namespaceSeparator)) stream.eatWhile(/[\w\$_\xa1-\uffff]/); var cur = stream.current(); if (contains(keywords, cur)) { if (contains(blockKeywords, cur)) curPunc = "newstatement"; if (contains(defKeywords, cur)) isDefKeyword = true; return "keyword"; } if (contains(types, cur)) return "variable-3"; if (contains(builtin, cur)) { if (contains(blockKeywords, cur)) curPunc = "newstatement"; return "builtin"; } if (contains(atoms, cur)) return "atom"; return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) {end = true; break;} escaped = !escaped && next == "\\"; } if (end || !(escaped || multiLineStrings)) state.tokenize = null; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = null; break; } maybeEnd = (ch == "*"); } return "comment"; } function maybeEOL(stream, state) { if (parserConfig.typeFirstDefinitions && stream.eol() && isTopScope(state.context)) state.typeAtEndOfLine = typeBefore(stream, state, stream.pos) } // Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", null, false), indented: 0, startOfLine: true, prevToken: null }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) { maybeEOL(stream, state); return null; } curPunc = isDefKeyword = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment" || style == "meta") return style; if (ctx.align == null) ctx.align = true; if (endStatement.test(curPunc)) while (state.context.type == "statement") popContext(state); else if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "}") { while (ctx.type == "statement") ctx = popContext(state); if (ctx.type == "}") ctx = popContext(state); while (ctx.type == "statement") ctx = popContext(state); } else if (curPunc == ctx.type) popContext(state); else if (indentStatements && (((ctx.type == "}" || ctx.type == "top") && curPunc != ";") || (ctx.type == "statement" && curPunc == "newstatement"))) { pushContext(state, stream.column(), "statement", stream.current()); } if (style == "variable" && ((state.prevToken == "def" || (parserConfig.typeFirstDefinitions && typeBefore(stream, state, stream.start) && isTopScope(state.context) && stream.match(/^\s*\(/, false))))) style = "def"; if (hooks.token) { var result = hooks.token(stream, state, style); if (result !== undefined) style = result; } if (style == "def" && parserConfig.styleDefs === false) style = "variable"; state.startOfLine = false; state.prevToken = isDefKeyword ? "def" : style || curPunc; maybeEOL(stream, state); return style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase && state.tokenize != null || state.typeAtEndOfLine) return CodeMirror.Pass; var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; if (parserConfig.dontIndentStatements) while (ctx.type == "statement" && parserConfig.dontIndentStatements.test(ctx.info)) ctx = ctx.prev if (hooks.indent) { var hook = hooks.indent(state, ctx, textAfter); if (typeof hook == "number") return hook } var closing = firstChar == ctx.type; var switchBlock = ctx.prev && ctx.prev.info == "switch"; if (parserConfig.allmanIndentation && /[{(]/.test(firstChar)) { while (ctx.type != "top" && ctx.type != "}") ctx = ctx.prev return ctx.indented } if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); if (ctx.align && (!dontAlignCalls || ctx.type != ")")) return ctx.column + (closing ? 0 : 1); if (ctx.type == ")" && !closing) return ctx.indented + statementIndentUnit; return ctx.indented + (closing ? 0 : indentUnit) + (!closing && switchBlock && !/^(?:case|default)\b/.test(textAfter) ? indentUnit : 0); }, electricInput: indentSwitch ? /^\s*(?:case .*?:|default:|\{\}?|\})$/ : /^\s*[{}]$/, blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//", fold: "brace" }; }); function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } function contains(words, word) { if (typeof words === "function") { return words(word); } else { return words.propertyIsEnumerable(word); } } var cKeywords = "auto if break case register continue return default do sizeof " + "static else struct switch extern typedef union for goto while enum const volatile"; var cTypes = "int long char short double float unsigned signed void size_t ptrdiff_t"; function cppHook(stream, state) { if (!state.startOfLine) return false for (var ch, next = null; ch = stream.peek();) { if (ch == "\\" && stream.match(/^.$/)) { next = cppHook break } else if (ch == "/" && stream.match(/^\/[\/\*]/, false)) { break } stream.next() } state.tokenize = next return "meta" } function pointerHook(_stream, state) { if (state.prevToken == "variable-3") return "variable-3"; return false; } function cpp14Literal(stream) { stream.eatWhile(/[\w\.']/); return "number"; } function cpp11StringHook(stream, state) { stream.backUp(1); // Raw strings. if (stream.match(/(R|u8R|uR|UR|LR)/)) { var match = stream.match(/"([^\s\\()]{0,16})\(/); if (!match) { return false; } state.cpp11RawStringDelim = match[1]; state.tokenize = tokenRawString; return tokenRawString(stream, state); } // Unicode strings/chars. if (stream.match(/(u8|u|U|L)/)) { if (stream.match(/["']/, /* eat */ false)) { return "string"; } return false; } // Ignore this hook. stream.next(); return false; } function cppLooksLikeConstructor(word) { var lastTwo = /(\w+)::(\w+)$/.exec(word); return lastTwo && lastTwo[1] == lastTwo[2]; } // C#-style strings where "" escapes a quote. function tokenAtString(stream, state) { var next; while ((next = stream.next()) != null) { if (next == '"' && !stream.eat('"')) { state.tokenize = null; break; } } return "string"; } // C++11 raw string literal is "( anything )", where // can be a string up to 16 characters long. function tokenRawString(stream, state) { // Escape characters that have special regex meanings. var delim = state.cpp11RawStringDelim.replace(/[^\w\s]/g, '\\$&'); var match = stream.match(new RegExp(".*?\\)" + delim + '"')); if (match) state.tokenize = null; else stream.skipToEnd(); return "string"; } function def(mimes, mode) { if (typeof mimes == "string") mimes = [mimes]; var words = []; function add(obj) { if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop)) words.push(prop); } add(mode.keywords); add(mode.types); add(mode.builtin); add(mode.atoms); if (words.length) { mode.helperType = mimes[0]; CodeMirror.registerHelper("hintWords", mimes[0], words); } for (var i = 0; i < mimes.length; ++i) CodeMirror.defineMIME(mimes[i], mode); } def(["text/x-csrc", "text/x-c", "text/x-chdr"], { name: "clike", keywords: words(cKeywords), types: words(cTypes + " bool _Complex _Bool float_t double_t intptr_t intmax_t " + "int8_t int16_t int32_t int64_t uintptr_t uintmax_t uint8_t uint16_t " + "uint32_t uint64_t"), blockKeywords: words("case do else for if switch while struct"), defKeywords: words("struct"), typeFirstDefinitions: true, atoms: words("null true false"), hooks: {"#": cppHook, "*": pointerHook}, modeProps: {fold: ["brace", "include"]} }); def(["text/x-c++src", "text/x-c++hdr"], { name: "clike", keywords: words(cKeywords + " asm dynamic_cast namespace reinterpret_cast try explicit new " + "static_cast typeid catch operator template typename class friend private " + "this using const_cast inline public throw virtual delete mutable protected " + "alignas alignof constexpr decltype nullptr noexcept thread_local final " + "static_assert override"), types: words(cTypes + " bool wchar_t"), blockKeywords: words("catch class do else finally for if struct switch try while"), defKeywords: words("class namespace struct enum union"), typeFirstDefinitions: true, atoms: words("true false null"), dontIndentStatements: /^template$/, hooks: { "#": cppHook, "*": pointerHook, "u": cpp11StringHook, "U": cpp11StringHook, "L": cpp11StringHook, "R": cpp11StringHook, "0": cpp14Literal, "1": cpp14Literal, "2": cpp14Literal, "3": cpp14Literal, "4": cpp14Literal, "5": cpp14Literal, "6": cpp14Literal, "7": cpp14Literal, "8": cpp14Literal, "9": cpp14Literal, token: function(stream, state, style) { if (style == "variable" && stream.peek() == "(" && (state.prevToken == ";" || state.prevToken == null || state.prevToken == "}") && cppLooksLikeConstructor(stream.current())) return "def"; } }, namespaceSeparator: "::", modeProps: {fold: ["brace", "include"]} }); def("text/x-java", { name: "clike", keywords: words("abstract assert break case catch class const continue default " + "do else enum extends final finally float for goto if implements import " + "instanceof interface native new package private protected public " + "return static strictfp super switch synchronized this throw throws transient " + "try volatile while"), types: words("byte short int long float double boolean char void Boolean Byte Character Double Float " + "Integer Long Number Object Short String StringBuffer StringBuilder Void"), blockKeywords: words("catch class do else finally for if switch try while"), defKeywords: words("class interface package enum"), typeFirstDefinitions: true, atoms: words("true false null"), endStatement: /^[;:]$/, number: /^(?:0x[a-f\d_]+|0b[01_]+|(?:[\d_]+\.?\d*|\.\d+)(?:e[-+]?[\d_]+)?)(u|ll?|l|f)?/i, hooks: { "@": function(stream) { stream.eatWhile(/[\w\$_]/); return "meta"; } }, modeProps: {fold: ["brace", "import"]} }); def("text/x-csharp", { name: "clike", keywords: words("abstract as async await base break case catch checked class const continue" + " default delegate do else enum event explicit extern finally fixed for" + " foreach goto if implicit in interface internal is lock namespace new" + " operator out override params private protected public readonly ref return sealed" + " sizeof stackalloc static struct switch this throw try typeof unchecked" + " unsafe using virtual void volatile while add alias ascending descending dynamic from get" + " global group into join let orderby partial remove select set value var yield"), types: words("Action Boolean Byte Char DateTime DateTimeOffset Decimal Double Func" + " Guid Int16 Int32 Int64 Object SByte Single String Task TimeSpan UInt16 UInt32" + " UInt64 bool byte char decimal double short int long object" + " sbyte float string ushort uint ulong"), blockKeywords: words("catch class do else finally for foreach if struct switch try while"), defKeywords: words("class interface namespace struct var"), typeFirstDefinitions: true, atoms: words("true false null"), hooks: { "@": function(stream, state) { if (stream.eat('"')) { state.tokenize = tokenAtString; return tokenAtString(stream, state); } stream.eatWhile(/[\w\$_]/); return "meta"; } } }); function tokenTripleString(stream, state) { var escaped = false; while (!stream.eol()) { if (!escaped && stream.match('"""')) { state.tokenize = null; break; } escaped = stream.next() == "\\" && !escaped; } return "string"; } def("text/x-scala", { name: "clike", keywords: words( /* scala */ "abstract case catch class def do else extends final finally for forSome if " + "implicit import lazy match new null object override package private protected return " + "sealed super this throw trait try type val var while with yield _ : = => <- <: " + "<% >: # @ " + /* package scala */ "assert assume require print println printf readLine readBoolean readByte readShort " + "readChar readInt readLong readFloat readDouble " + ":: #:: " ), types: words( "AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either " + "Enumeration Equiv Error Exception Fractional Function IndexedSeq Int Integral Iterable " + "Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering " + "Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder " + "StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector " + /* package java.lang */ "Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " + "Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " + "Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " + "StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void" ), multiLineStrings: true, blockKeywords: words("catch class do else finally for forSome if match switch try while"), defKeywords: words("class def object package trait type val var"), atoms: words("true false null"), indentStatements: false, indentSwitch: false, hooks: { "@": function(stream) { stream.eatWhile(/[\w\$_]/); return "meta"; }, '"': function(stream, state) { if (!stream.match('""')) return false; state.tokenize = tokenTripleString; return state.tokenize(stream, state); }, "'": function(stream) { stream.eatWhile(/[\w\$_\xa1-\uffff]/); return "atom"; }, "=": function(stream, state) { var cx = state.context if (cx.type == "}" && cx.align && stream.eat(">")) { state.context = new Context(cx.indented, cx.column, cx.type, cx.info, null, cx.prev) return "operator" } else { return false } } }, modeProps: {closeBrackets: {triples: '"'}} }); function tokenKotlinString(tripleString){ return function (stream, state) { var escaped = false, next, end = false; while (!stream.eol()) { if (!tripleString && !escaped && stream.match('"') ) {end = true; break;} if (tripleString && stream.match('"""')) {end = true; break;} next = stream.next(); if(!escaped && next == "$" && stream.match('{')) stream.skipTo("}"); escaped = !escaped && next == "\\" && !tripleString; } if (end || !tripleString) state.tokenize = null; return "string"; } } def("text/x-kotlin", { name: "clike", keywords: words( /*keywords*/ "package as typealias class interface this super val " + "var fun for is in This throw return " + "break continue object if else while do try when !in !is as? " + /*soft keywords*/ "file import where by get set abstract enum open inner override private public internal " + "protected catch finally out final vararg reified dynamic companion constructor init " + "sealed field property receiver param sparam lateinit data inline noinline tailrec " + "external annotation crossinline const operator infix" ), types: words( /* package java.lang */ "Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable " + "Compiler Double Exception Float Integer Long Math Number Object Package Pair Process " + "Runtime Runnable SecurityManager Short StackTraceElement StrictMath String " + "StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void" ), intendSwitch: false, indentStatements: false, multiLineStrings: true, blockKeywords: words("catch class do else finally for if where try while enum"), defKeywords: words("class val var object package interface fun"), atoms: words("true false null this"), hooks: { '"': function(stream, state) { state.tokenize = tokenKotlinString(stream.match('""')); return state.tokenize(stream, state); } }, modeProps: {closeBrackets: {triples: '"'}} }); def(["x-shader/x-vertex", "x-shader/x-fragment"], { name: "clike", keywords: words("sampler1D sampler2D sampler3D samplerCube " + "sampler1DShadow sampler2DShadow " + "const attribute uniform varying " + "break continue discard return " + "for while do if else struct " + "in out inout"), types: words("float int bool void " + "vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 " + "mat2 mat3 mat4"), blockKeywords: words("for while do if else struct"), builtin: words("radians degrees sin cos tan asin acos atan " + "pow exp log exp2 sqrt inversesqrt " + "abs sign floor ceil fract mod min max clamp mix step smoothstep " + "length distance dot cross normalize ftransform faceforward " + "reflect refract matrixCompMult " + "lessThan lessThanEqual greaterThan greaterThanEqual " + "equal notEqual any all not " + "texture1D texture1DProj texture1DLod texture1DProjLod " + "texture2D texture2DProj texture2DLod texture2DProjLod " + "texture3D texture3DProj texture3DLod texture3DProjLod " + "textureCube textureCubeLod " + "shadow1D shadow2D shadow1DProj shadow2DProj " + "shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod " + "dFdx dFdy fwidth " + "noise1 noise2 noise3 noise4"), atoms: words("true false " + "gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex " + "gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 " + "gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 " + "gl_FogCoord gl_PointCoord " + "gl_Position gl_PointSize gl_ClipVertex " + "gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor " + "gl_TexCoord gl_FogFragCoord " + "gl_FragCoord gl_FrontFacing " + "gl_FragData gl_FragDepth " + "gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix " + "gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse " + "gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse " + "gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose " + "gl_ProjectionMatrixInverseTranspose " + "gl_ModelViewProjectionMatrixInverseTranspose " + "gl_TextureMatrixInverseTranspose " + "gl_NormalScale gl_DepthRange gl_ClipPlane " + "gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel " + "gl_FrontLightModelProduct gl_BackLightModelProduct " + "gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ " + "gl_FogParameters " + "gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords " + "gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats " + "gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits " + "gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits " + "gl_MaxDrawBuffers"), indentSwitch: false, hooks: {"#": cppHook}, modeProps: {fold: ["brace", "include"]} }); def("text/x-nesc", { name: "clike", keywords: words(cKeywords + "as atomic async call command component components configuration event generic " + "implementation includes interface module new norace nx_struct nx_union post provides " + "signal task uses abstract extends"), types: words(cTypes), blockKeywords: words("case do else for if switch while struct"), atoms: words("null true false"), hooks: {"#": cppHook}, modeProps: {fold: ["brace", "include"]} }); def("text/x-objectivec", { name: "clike", keywords: words(cKeywords + "inline restrict _Bool _Complex _Imaginary BOOL Class bycopy byref id IMP in " + "inout nil oneway out Protocol SEL self super atomic nonatomic retain copy readwrite readonly"), types: words(cTypes), atoms: words("YES NO NULL NILL ON OFF true false"), hooks: { "@": function(stream) { stream.eatWhile(/[\w\$]/); return "keyword"; }, "#": cppHook, indent: function(_state, ctx, textAfter) { if (ctx.type == "statement" && /^@\w/.test(textAfter)) return ctx.indented } }, modeProps: {fold: "brace"} }); def("text/x-squirrel", { name: "clike", keywords: words("base break clone continue const default delete enum extends function in class" + " foreach local resume return this throw typeof yield constructor instanceof static"), types: words(cTypes), blockKeywords: words("case catch class else for foreach if switch try while"), defKeywords: words("function local class"), typeFirstDefinitions: true, atoms: words("true false null"), hooks: {"#": cppHook}, modeProps: {fold: ["brace", "include"]} }); // Ceylon Strings need to deal with interpolation var stringTokenizer = null; function tokenCeylonString(type) { return function(stream, state) { var escaped = false, next, end = false; while (!stream.eol()) { if (!escaped && stream.match('"') && (type == "single" || stream.match('""'))) { end = true; break; } if (!escaped && stream.match('``')) { stringTokenizer = tokenCeylonString(type); end = true; break; } next = stream.next(); escaped = type == "single" && !escaped && next == "\\"; } if (end) state.tokenize = null; return "string"; } } def("text/x-ceylon", { name: "clike", keywords: words("abstracts alias assembly assert assign break case catch class continue dynamic else" + " exists extends finally for function given if import in interface is let module new" + " nonempty object of out outer package return satisfies super switch then this throw" + " try value void while"), types: function(word) { // In Ceylon all identifiers that start with an uppercase are types var first = word.charAt(0); return (first === first.toUpperCase() && first !== first.toLowerCase()); }, blockKeywords: words("case catch class dynamic else finally for function if interface module new object switch try while"), defKeywords: words("class dynamic function interface module object package value"), builtin: words("abstract actual aliased annotation by default deprecated doc final formal late license" + " native optional sealed see serializable shared suppressWarnings tagged throws variable"), isPunctuationChar: /[\[\]{}\(\),;\:\.`]/, isOperatorChar: /[+\-*&%=<>!?|^~:\/]/, numberStart: /[\d#$]/, number: /^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i, multiLineStrings: true, typeFirstDefinitions: true, atoms: words("true false null larger smaller equal empty finished"), indentSwitch: false, styleDefs: false, hooks: { "@": function(stream) { stream.eatWhile(/[\w\$_]/); return "meta"; }, '"': function(stream, state) { state.tokenize = tokenCeylonString(stream.match('""') ? "triple" : "single"); return state.tokenize(stream, state); }, '`': function(stream, state) { if (!stringTokenizer || !stream.match('`')) return false; state.tokenize = stringTokenizer; stringTokenizer = null; return state.tokenize(stream, state); }, "'": function(stream) { stream.eatWhile(/[\w\$_\xa1-\uffff]/); return "atom"; }, token: function(_stream, state, style) { if ((style == "variable" || style == "variable-3") && state.prevToken == ".") { return "variable-2"; } } }, modeProps: { fold: ["brace", "import"], closeBrackets: {triples: '"'} } }); }); application/library/codemirror/mode/clike/test.js000064400000003617147577724760016251 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-c"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("indent", "[variable-3 void] [def foo]([variable-3 void*] [variable a], [variable-3 int] [variable b]) {", " [variable-3 int] [variable c] [operator =] [variable b] [operator +]", " [number 1];", " [keyword return] [operator *][variable a];", "}"); MT("indent_switch", "[keyword switch] ([variable x]) {", " [keyword case] [number 10]:", " [keyword return] [number 20];", " [keyword default]:", " [variable printf]([string \"foo %c\"], [variable x]);", "}"); MT("def", "[variable-3 void] [def foo]() {}", "[keyword struct] [def bar]{}", "[variable-3 int] [variable-3 *][def baz]() {}"); MT("def_new_line", "::[variable std]::[variable SomeTerribleType][operator <][variable T][operator >]", "[def SomeLongMethodNameThatDoesntFitIntoOneLine]([keyword const] [variable MyType][operator &] [variable param]) {}") MT("double_block", "[keyword for] (;;)", " [keyword for] (;;)", " [variable x][operator ++];", "[keyword return];"); MT("preprocessor", "[meta #define FOO 3]", "[variable-3 int] [variable foo];", "[meta #define BAR\\]", "[meta 4]", "[variable-3 unsigned] [variable-3 int] [variable bar] [operator =] [number 8];", "[meta #include ][comment // comment]") var mode_cpp = CodeMirror.getMode({indentUnit: 2}, "text/x-c++src"); function MTCPP(name) { test.mode(name, mode_cpp, Array.prototype.slice.call(arguments, 1)); } MTCPP("cpp14_literal", "[number 10'000];", "[number 0b10'000];", "[number 0x10'000];", "[string '100000'];"); })(); application/library/codemirror/mode/clike/scala.html000064400000067546147577724760016720 0ustar00 CodeMirror: Scala mode

Scala mode

application/library/codemirror/mode/clojure/index.html000064400000004766147577724760017313 0ustar00 CodeMirror: Clojure mode

Clojure mode

MIME types defined: text/x-clojure.

application/library/codemirror/mode/clojure/clojure.js000064400000037205147577724760017311 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /** * Author: Hans Engel * Branched from CodeMirror's Scheme mode (by Koh Zi Han, based on implementation by Koh Zi Chun) */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("clojure", function (options) { var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", CHARACTER = "string-2", ATOM = "atom", NUMBER = "number", BRACKET = "bracket", KEYWORD = "keyword", VAR = "variable"; var INDENT_WORD_SKIP = options.indentUnit || 2; var NORMAL_INDENT_UNIT = options.indentUnit || 2; function makeKeywords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var atoms = makeKeywords("true false nil"); var keywords = makeKeywords( "defn defn- def def- defonce defmulti defmethod defmacro defstruct deftype defprotocol defrecord defproject deftest " + "slice defalias defhinted defmacro- defn-memo defnk defnk defonce- defunbound defunbound- defvar defvar- let letfn " + "do case cond condp for loop recur when when-not when-let when-first if if-let if-not . .. -> ->> doto and or dosync " + "doseq dotimes dorun doall load import unimport ns in-ns refer try catch finally throw with-open with-local-vars " + "binding gen-class gen-and-load-class gen-and-save-class handler-case handle"); var builtins = makeKeywords( "* *' *1 *2 *3 *agent* *allow-unresolved-vars* *assert* *clojure-version* *command-line-args* *compile-files* " + "*compile-path* *compiler-options* *data-readers* *e *err* *file* *flush-on-newline* *fn-loader* *in* " + "*math-context* *ns* *out* *print-dup* *print-length* *print-level* *print-meta* *print-readably* *read-eval* " + "*source-path* *unchecked-math* *use-context-classloader* *verbose-defrecords* *warn-on-reflection* + +' - -' -> " + "->> ->ArrayChunk ->Vec ->VecNode ->VecSeq -cache-protocol-fn -reset-methods .. / < <= = == > >= EMPTY-NODE accessor " + "aclone add-classpath add-watch agent agent-error agent-errors aget alength alias all-ns alter alter-meta! " + "alter-var-root amap ancestors and apply areduce array-map aset aset-boolean aset-byte aset-char aset-double " + "aset-float aset-int aset-long aset-short assert assoc assoc! assoc-in associative? atom await await-for await1 " + "bases bean bigdec bigint biginteger binding bit-and bit-and-not bit-clear bit-flip bit-not bit-or bit-set " + "bit-shift-left bit-shift-right bit-test bit-xor boolean boolean-array booleans bound-fn bound-fn* bound? butlast " + "byte byte-array bytes case cat cast char char-array char-escape-string char-name-string char? chars chunk chunk-append " + "chunk-buffer chunk-cons chunk-first chunk-next chunk-rest chunked-seq? class class? clear-agent-errors " + "clojure-version coll? comment commute comp comparator compare compare-and-set! compile complement completing concat cond condp " + "conj conj! cons constantly construct-proxy contains? count counted? create-ns create-struct cycle dec dec' decimal? " + "declare dedupe default-data-readers definline definterface defmacro defmethod defmulti defn defn- defonce defprotocol " + "defrecord defstruct deftype delay delay? deliver denominator deref derive descendants destructure disj disj! dissoc " + "dissoc! distinct distinct? doall dorun doseq dosync dotimes doto double double-array doubles drop drop-last " + "drop-while eduction empty empty? ensure enumeration-seq error-handler error-mode eval even? every-pred every? ex-data ex-info " + "extend extend-protocol extend-type extenders extends? false? ffirst file-seq filter filterv find find-keyword " + "find-ns find-protocol-impl find-protocol-method find-var first flatten float float-array float? floats flush fn fn? " + "fnext fnil for force format frequencies future future-call future-cancel future-cancelled? future-done? future? " + "gen-class gen-interface gensym get get-in get-method get-proxy-class get-thread-bindings get-validator group-by hash " + "hash-combine hash-map hash-set identical? identity if-let if-not ifn? import in-ns inc inc' init-proxy instance? " + "int int-array integer? interleave intern interpose into into-array ints io! isa? iterate iterator-seq juxt keep " + "keep-indexed key keys keyword keyword? last lazy-cat lazy-seq let letfn line-seq list list* list? load load-file " + "load-reader load-string loaded-libs locking long long-array longs loop macroexpand macroexpand-1 make-array " + "make-hierarchy map map-indexed map? mapcat mapv max max-key memfn memoize merge merge-with meta method-sig methods " + "min min-key mod munge name namespace namespace-munge neg? newline next nfirst nil? nnext not not-any? not-empty " + "not-every? not= ns ns-aliases ns-imports ns-interns ns-map ns-name ns-publics ns-refers ns-resolve ns-unalias " + "ns-unmap nth nthnext nthrest num number? numerator object-array odd? or parents partial partition partition-all " + "partition-by pcalls peek persistent! pmap pop pop! pop-thread-bindings pos? pr pr-str prefer-method prefers " + "primitives-classnames print print-ctor print-dup print-method print-simple print-str printf println println-str " + "prn prn-str promise proxy proxy-call-with-super proxy-mappings proxy-name proxy-super push-thread-bindings pvalues " + "quot rand rand-int rand-nth random-sample range ratio? rational? rationalize re-find re-groups re-matcher re-matches re-pattern " + "re-seq read read-line read-string realized? reduce reduce-kv reductions ref ref-history-count ref-max-history " + "ref-min-history ref-set refer refer-clojure reify release-pending-sends rem remove remove-all-methods " + "remove-method remove-ns remove-watch repeat repeatedly replace replicate require reset! reset-meta! resolve rest " + "restart-agent resultset-seq reverse reversible? rseq rsubseq satisfies? second select-keys send send-off seq seq? " + "seque sequence sequential? set set-error-handler! set-error-mode! set-validator! set? short short-array shorts " + "shuffle shutdown-agents slurp some some-fn sort sort-by sorted-map sorted-map-by sorted-set sorted-set-by sorted? " + "special-symbol? spit split-at split-with str string? struct struct-map subs subseq subvec supers swap! symbol " + "symbol? sync take take-last take-nth take-while test the-ns thread-bound? time to-array to-array-2d trampoline transduce " + "transient tree-seq true? type unchecked-add unchecked-add-int unchecked-byte unchecked-char unchecked-dec " + "unchecked-dec-int unchecked-divide-int unchecked-double unchecked-float unchecked-inc unchecked-inc-int " + "unchecked-int unchecked-long unchecked-multiply unchecked-multiply-int unchecked-negate unchecked-negate-int "+ "unchecked-remainder-int unchecked-short unchecked-subtract unchecked-subtract-int underive unquote " + "unquote-splicing update update-in update-proxy use val vals var-get var-set var? vary-meta vec vector vector-of " + "vector? volatile! volatile? vreset! vswap! when when-first when-let when-not while with-bindings with-bindings* with-in-str with-loading-context " + "with-local-vars with-meta with-open with-out-str with-precision with-redefs with-redefs-fn xml-seq zero? zipmap " + "*default-data-reader-fn* as-> cond-> cond->> reduced reduced? send-via set-agent-send-executor! " + "set-agent-send-off-executor! some-> some->>"); var indentKeys = makeKeywords( // Built-ins "ns fn def defn defmethod bound-fn if if-not case condp when while when-not when-first do future comment doto " + "locking proxy with-open with-precision reify deftype defrecord defprotocol extend extend-protocol extend-type " + "try catch " + // Binding forms "let letfn binding loop for doseq dotimes when-let if-let " + // Data structures "defstruct struct-map assoc " + // clojure.test "testing deftest " + // contrib "handler-case handle dotrace deftrace"); var tests = { digit: /\d/, digit_or_colon: /[\d:]/, hex: /[0-9a-f]/i, sign: /[+-]/, exponent: /e/i, keyword_char: /[^\s\(\[\;\)\]]/, symbol: /[\w*+!\-\._?:<>\/\xa1-\uffff]/, block_indent: /^(?:def|with)[^\/]+$|\/(?:def|with)/ }; function stateStack(indent, type, prev) { // represents a state stack object this.indent = indent; this.type = type; this.prev = prev; } function pushStack(state, indent, type) { state.indentStack = new stateStack(indent, type, state.indentStack); } function popStack(state) { state.indentStack = state.indentStack.prev; } function isNumber(ch, stream){ // hex if ( ch === '0' && stream.eat(/x/i) ) { stream.eatWhile(tests.hex); return true; } // leading sign if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) { stream.eat(tests.sign); ch = stream.next(); } if ( tests.digit.test(ch) ) { stream.eat(ch); stream.eatWhile(tests.digit); if ( '.' == stream.peek() ) { stream.eat('.'); stream.eatWhile(tests.digit); } else if ('/' == stream.peek() ) { stream.eat('/'); stream.eatWhile(tests.digit); } if ( stream.eat(tests.exponent) ) { stream.eat(tests.sign); stream.eatWhile(tests.digit); } return true; } return false; } // Eat character that starts after backslash \ function eatCharacter(stream) { var first = stream.next(); // Read special literals: backspace, newline, space, return. // Just read all lowercase letters. if (first && first.match(/[a-z]/) && stream.match(/[a-z]+/, true)) { return; } // Read unicode character: \u1000 \uA0a1 if (first === "u") { stream.match(/[0-9a-z]{4}/i, true); } } return { startState: function () { return { indentStack: null, indentation: 0, mode: false }; }, token: function (stream, state) { if (state.indentStack == null && stream.sol()) { // update indentation, but only if indentStack is empty state.indentation = stream.indentation(); } // skip spaces if (state.mode != "string" && stream.eatSpace()) { return null; } var returnType = null; switch(state.mode){ case "string": // multi-line string parsing mode var next, escaped = false; while ((next = stream.next()) != null) { if (next == "\"" && !escaped) { state.mode = false; break; } escaped = !escaped && next == "\\"; } returnType = STRING; // continue on in string mode break; default: // default parsing mode var ch = stream.next(); if (ch == "\"") { state.mode = "string"; returnType = STRING; } else if (ch == "\\") { eatCharacter(stream); returnType = CHARACTER; } else if (ch == "'" && !( tests.digit_or_colon.test(stream.peek()) )) { returnType = ATOM; } else if (ch == ";") { // comment stream.skipToEnd(); // rest of the line is a comment returnType = COMMENT; } else if (isNumber(ch,stream)){ returnType = NUMBER; } else if (ch == "(" || ch == "[" || ch == "{" ) { var keyWord = '', indentTemp = stream.column(), letter; /** Either (indent-word .. (non-indent-word .. (;something else, bracket, etc. */ if (ch == "(") while ((letter = stream.eat(tests.keyword_char)) != null) { keyWord += letter; } if (keyWord.length > 0 && (indentKeys.propertyIsEnumerable(keyWord) || tests.block_indent.test(keyWord))) { // indent-word pushStack(state, indentTemp + INDENT_WORD_SKIP, ch); } else { // non-indent word // we continue eating the spaces stream.eatSpace(); if (stream.eol() || stream.peek() == ";") { // nothing significant after // we restart indentation the user defined spaces after pushStack(state, indentTemp + NORMAL_INDENT_UNIT, ch); } else { pushStack(state, indentTemp + stream.current().length, ch); // else we match } } stream.backUp(stream.current().length - 1); // undo all the eating returnType = BRACKET; } else if (ch == ")" || ch == "]" || ch == "}") { returnType = BRACKET; if (state.indentStack != null && state.indentStack.type == (ch == ")" ? "(" : (ch == "]" ? "[" :"{"))) { popStack(state); } } else if ( ch == ":" ) { stream.eatWhile(tests.symbol); return ATOM; } else { stream.eatWhile(tests.symbol); if (keywords && keywords.propertyIsEnumerable(stream.current())) { returnType = KEYWORD; } else if (builtins && builtins.propertyIsEnumerable(stream.current())) { returnType = BUILTIN; } else if (atoms && atoms.propertyIsEnumerable(stream.current())) { returnType = ATOM; } else { returnType = VAR; } } } return returnType; }, indent: function (state) { if (state.indentStack == null) return state.indentation; return state.indentStack.indent; }, closeBrackets: {pairs: "()[]{}\"\""}, lineComment: ";;" }; }); CodeMirror.defineMIME("text/x-clojure", "clojure"); CodeMirror.defineMIME("text/x-clojurescript", "clojure"); CodeMirror.defineMIME("application/edn", "clojure"); }); application/library/codemirror/mode/cmake/cmake.js000064400000005050147577724760016334 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) define(["../../lib/codemirror"], mod); else mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("cmake", function () { var variable_regex = /({)?[a-zA-Z0-9_]+(})?/; function tokenString(stream, state) { var current, prev, found_var = false; while (!stream.eol() && (current = stream.next()) != state.pending) { if (current === '$' && prev != '\\' && state.pending == '"') { found_var = true; break; } prev = current; } if (found_var) { stream.backUp(1); } if (current == state.pending) { state.continueString = false; } else { state.continueString = true; } return "string"; } function tokenize(stream, state) { var ch = stream.next(); // Have we found a variable? if (ch === '$') { if (stream.match(variable_regex)) { return 'variable-2'; } return 'variable'; } // Should we still be looking for the end of a string? if (state.continueString) { // If so, go through the loop again stream.backUp(1); return tokenString(stream, state); } // Do we just have a function on our hands? // In 'cmake_minimum_required (VERSION 2.8.8)', 'cmake_minimum_required' is matched if (stream.match(/(\s+)?\w+\(/) || stream.match(/(\s+)?\w+\ \(/)) { stream.backUp(1); return 'def'; } if (ch == "#") { stream.skipToEnd(); return "comment"; } // Have we found a string? if (ch == "'" || ch == '"') { // Store the type (single or double) state.pending = ch; // Perform the looping function to find the end return tokenString(stream, state); } if (ch == '(' || ch == ')') { return 'bracket'; } if (ch.match(/[0-9]/)) { return 'number'; } stream.eatWhile(/[\w-]/); return null; } return { startState: function () { var state = {}; state.inDefinition = false; state.inInclude = false; state.continueString = false; state.pending = false; return state; }, token: function (stream, state) { if (stream.eatSpace()) return null; return tokenize(stream, state); } }; }); CodeMirror.defineMIME("text/x-cmake", "cmake"); }); application/library/codemirror/mode/cmake/index.html000064400000010070147577724760016711 0ustar00 CodeMirror: CMake mode

CMake mode

MIME types defined: text/x-cmake.

application/library/codemirror/mode/cobol/cobol.js000064400000024060147577724760016372 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /** * Author: Gautam Mehta * Branched from CodeMirror's Scheme mode */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("cobol", function () { var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", ATOM = "atom", NUMBER = "number", KEYWORD = "keyword", MODTAG = "header", COBOLLINENUM = "def", PERIOD = "link"; function makeKeywords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var atoms = makeKeywords("TRUE FALSE ZEROES ZEROS ZERO SPACES SPACE LOW-VALUE LOW-VALUES "); var keywords = makeKeywords( "ACCEPT ACCESS ACQUIRE ADD ADDRESS " + "ADVANCING AFTER ALIAS ALL ALPHABET " + "ALPHABETIC ALPHABETIC-LOWER ALPHABETIC-UPPER ALPHANUMERIC ALPHANUMERIC-EDITED " + "ALSO ALTER ALTERNATE AND ANY " + "ARE AREA AREAS ARITHMETIC ASCENDING " + "ASSIGN AT ATTRIBUTE AUTHOR AUTO " + "AUTO-SKIP AUTOMATIC B-AND B-EXOR B-LESS " + "B-NOT B-OR BACKGROUND-COLOR BACKGROUND-COLOUR BEEP " + "BEFORE BELL BINARY BIT BITS " + "BLANK BLINK BLOCK BOOLEAN BOTTOM " + "BY CALL CANCEL CD CF " + "CH CHARACTER CHARACTERS CLASS CLOCK-UNITS " + "CLOSE COBOL CODE CODE-SET COL " + "COLLATING COLUMN COMMA COMMIT COMMITMENT " + "COMMON COMMUNICATION COMP COMP-0 COMP-1 " + "COMP-2 COMP-3 COMP-4 COMP-5 COMP-6 " + "COMP-7 COMP-8 COMP-9 COMPUTATIONAL COMPUTATIONAL-0 " + "COMPUTATIONAL-1 COMPUTATIONAL-2 COMPUTATIONAL-3 COMPUTATIONAL-4 COMPUTATIONAL-5 " + "COMPUTATIONAL-6 COMPUTATIONAL-7 COMPUTATIONAL-8 COMPUTATIONAL-9 COMPUTE " + "CONFIGURATION CONNECT CONSOLE CONTAINED CONTAINS " + "CONTENT CONTINUE CONTROL CONTROL-AREA CONTROLS " + "CONVERTING COPY CORR CORRESPONDING COUNT " + "CRT CRT-UNDER CURRENCY CURRENT CURSOR " + "DATA DATE DATE-COMPILED DATE-WRITTEN DAY " + "DAY-OF-WEEK DB DB-ACCESS-CONTROL-KEY DB-DATA-NAME DB-EXCEPTION " + "DB-FORMAT-NAME DB-RECORD-NAME DB-SET-NAME DB-STATUS DBCS " + "DBCS-EDITED DE DEBUG-CONTENTS DEBUG-ITEM DEBUG-LINE " + "DEBUG-NAME DEBUG-SUB-1 DEBUG-SUB-2 DEBUG-SUB-3 DEBUGGING " + "DECIMAL-POINT DECLARATIVES DEFAULT DELETE DELIMITED " + "DELIMITER DEPENDING DESCENDING DESCRIBED DESTINATION " + "DETAIL DISABLE DISCONNECT DISPLAY DISPLAY-1 " + "DISPLAY-2 DISPLAY-3 DISPLAY-4 DISPLAY-5 DISPLAY-6 " + "DISPLAY-7 DISPLAY-8 DISPLAY-9 DIVIDE DIVISION " + "DOWN DROP DUPLICATE DUPLICATES DYNAMIC " + "EBCDIC EGI EJECT ELSE EMI " + "EMPTY EMPTY-CHECK ENABLE END END. END-ACCEPT END-ACCEPT. " + "END-ADD END-CALL END-COMPUTE END-DELETE END-DISPLAY " + "END-DIVIDE END-EVALUATE END-IF END-INVOKE END-MULTIPLY " + "END-OF-PAGE END-PERFORM END-READ END-RECEIVE END-RETURN " + "END-REWRITE END-SEARCH END-START END-STRING END-SUBTRACT " + "END-UNSTRING END-WRITE END-XML ENTER ENTRY " + "ENVIRONMENT EOP EQUAL EQUALS ERASE " + "ERROR ESI EVALUATE EVERY EXCEEDS " + "EXCEPTION EXCLUSIVE EXIT EXTEND EXTERNAL " + "EXTERNALLY-DESCRIBED-KEY FD FETCH FILE FILE-CONTROL " + "FILE-STREAM FILES FILLER FINAL FIND " + "FINISH FIRST FOOTING FOR FOREGROUND-COLOR " + "FOREGROUND-COLOUR FORMAT FREE FROM FULL " + "FUNCTION GENERATE GET GIVING GLOBAL " + "GO GOBACK GREATER GROUP HEADING " + "HIGH-VALUE HIGH-VALUES HIGHLIGHT I-O I-O-CONTROL " + "ID IDENTIFICATION IF IN INDEX " + "INDEX-1 INDEX-2 INDEX-3 INDEX-4 INDEX-5 " + "INDEX-6 INDEX-7 INDEX-8 INDEX-9 INDEXED " + "INDIC INDICATE INDICATOR INDICATORS INITIAL " + "INITIALIZE INITIATE INPUT INPUT-OUTPUT INSPECT " + "INSTALLATION INTO INVALID INVOKE IS " + "JUST JUSTIFIED KANJI KEEP KEY " + "LABEL LAST LD LEADING LEFT " + "LEFT-JUSTIFY LENGTH LENGTH-CHECK LESS LIBRARY " + "LIKE LIMIT LIMITS LINAGE LINAGE-COUNTER " + "LINE LINE-COUNTER LINES LINKAGE LOCAL-STORAGE " + "LOCALE LOCALLY LOCK " + "MEMBER MEMORY MERGE MESSAGE METACLASS " + "MODE MODIFIED MODIFY MODULES MOVE " + "MULTIPLE MULTIPLY NATIONAL NATIVE NEGATIVE " + "NEXT NO NO-ECHO NONE NOT " + "NULL NULL-KEY-MAP NULL-MAP NULLS NUMBER " + "NUMERIC NUMERIC-EDITED OBJECT OBJECT-COMPUTER OCCURS " + "OF OFF OMITTED ON ONLY " + "OPEN OPTIONAL OR ORDER ORGANIZATION " + "OTHER OUTPUT OVERFLOW OWNER PACKED-DECIMAL " + "PADDING PAGE PAGE-COUNTER PARSE PERFORM " + "PF PH PIC PICTURE PLUS " + "POINTER POSITION POSITIVE PREFIX PRESENT " + "PRINTING PRIOR PROCEDURE PROCEDURE-POINTER PROCEDURES " + "PROCEED PROCESS PROCESSING PROGRAM PROGRAM-ID " + "PROMPT PROTECTED PURGE QUEUE QUOTE " + "QUOTES RANDOM RD READ READY " + "REALM RECEIVE RECONNECT RECORD RECORD-NAME " + "RECORDS RECURSIVE REDEFINES REEL REFERENCE " + "REFERENCE-MONITOR REFERENCES RELATION RELATIVE RELEASE " + "REMAINDER REMOVAL RENAMES REPEATED REPLACE " + "REPLACING REPORT REPORTING REPORTS REPOSITORY " + "REQUIRED RERUN RESERVE RESET RETAINING " + "RETRIEVAL RETURN RETURN-CODE RETURNING REVERSE-VIDEO " + "REVERSED REWIND REWRITE RF RH " + "RIGHT RIGHT-JUSTIFY ROLLBACK ROLLING ROUNDED " + "RUN SAME SCREEN SD SEARCH " + "SECTION SECURE SECURITY SEGMENT SEGMENT-LIMIT " + "SELECT SEND SENTENCE SEPARATE SEQUENCE " + "SEQUENTIAL SET SHARED SIGN SIZE " + "SKIP1 SKIP2 SKIP3 SORT SORT-MERGE " + "SORT-RETURN SOURCE SOURCE-COMPUTER SPACE-FILL " + "SPECIAL-NAMES STANDARD STANDARD-1 STANDARD-2 " + "START STARTING STATUS STOP STORE " + "STRING SUB-QUEUE-1 SUB-QUEUE-2 SUB-QUEUE-3 SUB-SCHEMA " + "SUBFILE SUBSTITUTE SUBTRACT SUM SUPPRESS " + "SYMBOLIC SYNC SYNCHRONIZED SYSIN SYSOUT " + "TABLE TALLYING TAPE TENANT TERMINAL " + "TERMINATE TEST TEXT THAN THEN " + "THROUGH THRU TIME TIMES TITLE " + "TO TOP TRAILING TRAILING-SIGN TRANSACTION " + "TYPE TYPEDEF UNDERLINE UNEQUAL UNIT " + "UNSTRING UNTIL UP UPDATE UPON " + "USAGE USAGE-MODE USE USING VALID " + "VALIDATE VALUE VALUES VARYING VLR " + "WAIT WHEN WHEN-COMPILED WITH WITHIN " + "WORDS WORKING-STORAGE WRITE XML XML-CODE " + "XML-EVENT XML-NTEXT XML-TEXT ZERO ZERO-FILL " ); var builtins = makeKeywords("- * ** / + < <= = > >= "); var tests = { digit: /\d/, digit_or_colon: /[\d:]/, hex: /[0-9a-f]/i, sign: /[+-]/, exponent: /e/i, keyword_char: /[^\s\(\[\;\)\]]/, symbol: /[\w*+\-]/ }; function isNumber(ch, stream){ // hex if ( ch === '0' && stream.eat(/x/i) ) { stream.eatWhile(tests.hex); return true; } // leading sign if ( ( ch == '+' || ch == '-' ) && ( tests.digit.test(stream.peek()) ) ) { stream.eat(tests.sign); ch = stream.next(); } if ( tests.digit.test(ch) ) { stream.eat(ch); stream.eatWhile(tests.digit); if ( '.' == stream.peek()) { stream.eat('.'); stream.eatWhile(tests.digit); } if ( stream.eat(tests.exponent) ) { stream.eat(tests.sign); stream.eatWhile(tests.digit); } return true; } return false; } return { startState: function () { return { indentStack: null, indentation: 0, mode: false }; }, token: function (stream, state) { if (state.indentStack == null && stream.sol()) { // update indentation, but only if indentStack is empty state.indentation = 6 ; //stream.indentation(); } // skip spaces if (stream.eatSpace()) { return null; } var returnType = null; switch(state.mode){ case "string": // multi-line string parsing mode var next = false; while ((next = stream.next()) != null) { if (next == "\"" || next == "\'") { state.mode = false; break; } } returnType = STRING; // continue on in string mode break; default: // default parsing mode var ch = stream.next(); var col = stream.column(); if (col >= 0 && col <= 5) { returnType = COBOLLINENUM; } else if (col >= 72 && col <= 79) { stream.skipToEnd(); returnType = MODTAG; } else if (ch == "*" && col == 6) { // comment stream.skipToEnd(); // rest of the line is a comment returnType = COMMENT; } else if (ch == "\"" || ch == "\'") { state.mode = "string"; returnType = STRING; } else if (ch == "'" && !( tests.digit_or_colon.test(stream.peek()) )) { returnType = ATOM; } else if (ch == ".") { returnType = PERIOD; } else if (isNumber(ch,stream)){ returnType = NUMBER; } else { if (stream.current().match(tests.symbol)) { while (col < 71) { if (stream.eat(tests.symbol) === undefined) { break; } else { col++; } } } if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) { returnType = KEYWORD; } else if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase())) { returnType = BUILTIN; } else if (atoms && atoms.propertyIsEnumerable(stream.current().toUpperCase())) { returnType = ATOM; } else returnType = null; } } return returnType; }, indent: function (state) { if (state.indentStack == null) return state.indentation; return state.indentStack.indent; } }; }); CodeMirror.defineMIME("text/x-cobol", "cobol"); }); application/library/codemirror/mode/cobol/index.html000064400000017624147577724760016743 0ustar00 CodeMirror: COBOL mode

COBOL mode

Select Theme Select Font Size

application/library/codemirror/mode/coffeescript/coffeescript.js000064400000023234147577724760021330 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /** * Link to the project's GitHub page: * https://github.com/pickhardt/coffeescript-codemirror-mode */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("coffeescript", function(conf, parserConf) { var ERRORCLASS = "error"; function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b"); } var operators = /^(?:->|=>|\+[+=]?|-[\-=]?|\*[\*=]?|\/[\/=]?|[=!]=|<[><]?=?|>>?=?|%=?|&=?|\|=?|\^=?|\~|!|\?|(or|and|\|\||&&|\?)=)/; var delimiters = /^(?:[()\[\]{},:`=;]|\.\.?\.?)/; var identifiers = /^[_A-Za-z$][_A-Za-z$0-9]*/; var atProp = /^@[_A-Za-z$][_A-Za-z$0-9]*/; var wordOperators = wordRegexp(["and", "or", "not", "is", "isnt", "in", "instanceof", "typeof"]); var indentKeywords = ["for", "while", "loop", "if", "unless", "else", "switch", "try", "catch", "finally", "class"]; var commonKeywords = ["break", "by", "continue", "debugger", "delete", "do", "in", "of", "new", "return", "then", "this", "@", "throw", "when", "until", "extends"]; var keywords = wordRegexp(indentKeywords.concat(commonKeywords)); indentKeywords = wordRegexp(indentKeywords); var stringPrefixes = /^('{3}|\"{3}|['\"])/; var regexPrefixes = /^(\/{3}|\/)/; var commonConstants = ["Infinity", "NaN", "undefined", "null", "true", "false", "on", "off", "yes", "no"]; var constants = wordRegexp(commonConstants); // Tokenizers function tokenBase(stream, state) { // Handle scope changes if (stream.sol()) { if (state.scope.align === null) state.scope.align = false; var scopeOffset = state.scope.offset; if (stream.eatSpace()) { var lineOffset = stream.indentation(); if (lineOffset > scopeOffset && state.scope.type == "coffee") { return "indent"; } else if (lineOffset < scopeOffset) { return "dedent"; } return null; } else { if (scopeOffset > 0) { dedent(stream, state); } } } if (stream.eatSpace()) { return null; } var ch = stream.peek(); // Handle docco title comment (single line) if (stream.match("####")) { stream.skipToEnd(); return "comment"; } // Handle multi line comments if (stream.match("###")) { state.tokenize = longComment; return state.tokenize(stream, state); } // Single line comment if (ch === "#") { stream.skipToEnd(); return "comment"; } // Handle number literals if (stream.match(/^-?[0-9\.]/, false)) { var floatLiteral = false; // Floats if (stream.match(/^-?\d*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; } if (stream.match(/^-?\d+\.\d*/)) { floatLiteral = true; } if (stream.match(/^-?\.\d+/)) { floatLiteral = true; } if (floatLiteral) { // prevent from getting extra . on 1.. if (stream.peek() == "."){ stream.backUp(1); } return "number"; } // Integers var intLiteral = false; // Hex if (stream.match(/^-?0x[0-9a-f]+/i)) { intLiteral = true; } // Decimal if (stream.match(/^-?[1-9]\d*(e[\+\-]?\d+)?/)) { intLiteral = true; } // Zero by itself with no other piece of number. if (stream.match(/^-?0(?![\dx])/i)) { intLiteral = true; } if (intLiteral) { return "number"; } } // Handle strings if (stream.match(stringPrefixes)) { state.tokenize = tokenFactory(stream.current(), false, "string"); return state.tokenize(stream, state); } // Handle regex literals if (stream.match(regexPrefixes)) { if (stream.current() != "/" || stream.match(/^.*\//, false)) { // prevent highlight of division state.tokenize = tokenFactory(stream.current(), true, "string-2"); return state.tokenize(stream, state); } else { stream.backUp(1); } } // Handle operators and delimiters if (stream.match(operators) || stream.match(wordOperators)) { return "operator"; } if (stream.match(delimiters)) { return "punctuation"; } if (stream.match(constants)) { return "atom"; } if (stream.match(atProp) || state.prop && stream.match(identifiers)) { return "property"; } if (stream.match(keywords)) { return "keyword"; } if (stream.match(identifiers)) { return "variable"; } // Handle non-detected items stream.next(); return ERRORCLASS; } function tokenFactory(delimiter, singleline, outclass) { return function(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^'"\/\\]/); if (stream.eat("\\")) { stream.next(); if (singleline && stream.eol()) { return outclass; } } else if (stream.match(delimiter)) { state.tokenize = tokenBase; return outclass; } else { stream.eat(/['"\/]/); } } if (singleline) { if (parserConf.singleLineStringErrors) { outclass = ERRORCLASS; } else { state.tokenize = tokenBase; } } return outclass; }; } function longComment(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^#]/); if (stream.match("###")) { state.tokenize = tokenBase; break; } stream.eatWhile("#"); } return "comment"; } function indent(stream, state, type) { type = type || "coffee"; var offset = 0, align = false, alignOffset = null; for (var scope = state.scope; scope; scope = scope.prev) { if (scope.type === "coffee" || scope.type == "}") { offset = scope.offset + conf.indentUnit; break; } } if (type !== "coffee") { align = null; alignOffset = stream.column() + stream.current().length; } else if (state.scope.align) { state.scope.align = false; } state.scope = { offset: offset, type: type, prev: state.scope, align: align, alignOffset: alignOffset }; } function dedent(stream, state) { if (!state.scope.prev) return; if (state.scope.type === "coffee") { var _indent = stream.indentation(); var matched = false; for (var scope = state.scope; scope; scope = scope.prev) { if (_indent === scope.offset) { matched = true; break; } } if (!matched) { return true; } while (state.scope.prev && state.scope.offset !== _indent) { state.scope = state.scope.prev; } return false; } else { state.scope = state.scope.prev; return false; } } function tokenLexer(stream, state) { var style = state.tokenize(stream, state); var current = stream.current(); // Handle scope changes. if (current === "return") { state.dedent = true; } if (((current === "->" || current === "=>") && stream.eol()) || style === "indent") { indent(stream, state); } var delimiter_index = "[({".indexOf(current); if (delimiter_index !== -1) { indent(stream, state, "])}".slice(delimiter_index, delimiter_index+1)); } if (indentKeywords.exec(current)){ indent(stream, state); } if (current == "then"){ dedent(stream, state); } if (style === "dedent") { if (dedent(stream, state)) { return ERRORCLASS; } } delimiter_index = "])}".indexOf(current); if (delimiter_index !== -1) { while (state.scope.type == "coffee" && state.scope.prev) state.scope = state.scope.prev; if (state.scope.type == current) state.scope = state.scope.prev; } if (state.dedent && stream.eol()) { if (state.scope.type == "coffee" && state.scope.prev) state.scope = state.scope.prev; state.dedent = false; } return style; } var external = { startState: function(basecolumn) { return { tokenize: tokenBase, scope: {offset:basecolumn || 0, type:"coffee", prev: null, align: false}, prop: false, dedent: 0 }; }, token: function(stream, state) { var fillAlign = state.scope.align === null && state.scope; if (fillAlign && stream.sol()) fillAlign.align = false; var style = tokenLexer(stream, state); if (style && style != "comment") { if (fillAlign) fillAlign.align = true; state.prop = style == "punctuation" && stream.current() == "." } return style; }, indent: function(state, text) { if (state.tokenize != tokenBase) return 0; var scope = state.scope; var closer = text && "])}".indexOf(text.charAt(0)) > -1; if (closer) while (scope.type == "coffee" && scope.prev) scope = scope.prev; var closes = closer && scope.type === text.charAt(0); if (scope.align) return scope.alignOffset - (closes ? 1 : 0); else return (closes ? scope.prev : scope).offset; }, lineComment: "#", fold: "indent" }; return external; }); CodeMirror.defineMIME("text/x-coffeescript", "coffeescript"); CodeMirror.defineMIME("text/coffeescript", "coffeescript"); }); application/library/codemirror/mode/coffeescript/index.html000064400000053602147577724760020315 0ustar00 CodeMirror: CoffeeScript mode

CoffeeScript mode

MIME types defined: text/x-coffeescript.

The CoffeeScript mode was written by Jeff Pickhardt.

application/library/codemirror/mode/commonlisp/index.html000064400000015043147577724760020016 0ustar00 CodeMirror: Common Lisp mode

Common Lisp mode

MIME types defined: text/x-common-lisp.

application/library/codemirror/mode/commonlisp/commonlisp.js000064400000010610147577724760020532 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("commonlisp", function (config) { var specialForm = /^(block|let*|return-from|catch|load-time-value|setq|eval-when|locally|symbol-macrolet|flet|macrolet|tagbody|function|multiple-value-call|the|go|multiple-value-prog1|throw|if|progn|unwind-protect|labels|progv|let|quote)$/; var assumeBody = /^with|^def|^do|^prog|case$|^cond$|bind$|when$|unless$/; var numLiteral = /^(?:[+\-]?(?:\d+|\d*\.\d+)(?:[efd][+\-]?\d+)?|[+\-]?\d+(?:\/[+\-]?\d+)?|#b[+\-]?[01]+|#o[+\-]?[0-7]+|#x[+\-]?[\da-f]+)/; var symbol = /[^\s'`,@()\[\]";]/; var type; function readSym(stream) { var ch; while (ch = stream.next()) { if (ch == "\\") stream.next(); else if (!symbol.test(ch)) { stream.backUp(1); break; } } return stream.current(); } function base(stream, state) { if (stream.eatSpace()) {type = "ws"; return null;} if (stream.match(numLiteral)) return "number"; var ch = stream.next(); if (ch == "\\") ch = stream.next(); if (ch == '"') return (state.tokenize = inString)(stream, state); else if (ch == "(") { type = "open"; return "bracket"; } else if (ch == ")" || ch == "]") { type = "close"; return "bracket"; } else if (ch == ";") { stream.skipToEnd(); type = "ws"; return "comment"; } else if (/['`,@]/.test(ch)) return null; else if (ch == "|") { if (stream.skipTo("|")) { stream.next(); return "symbol"; } else { stream.skipToEnd(); return "error"; } } else if (ch == "#") { var ch = stream.next(); if (ch == "[") { type = "open"; return "bracket"; } else if (/[+\-=\.']/.test(ch)) return null; else if (/\d/.test(ch) && stream.match(/^\d*#/)) return null; else if (ch == "|") return (state.tokenize = inComment)(stream, state); else if (ch == ":") { readSym(stream); return "meta"; } else return "error"; } else { var name = readSym(stream); if (name == ".") return null; type = "symbol"; if (name == "nil" || name == "t" || name.charAt(0) == ":") return "atom"; if (state.lastType == "open" && (specialForm.test(name) || assumeBody.test(name))) return "keyword"; if (name.charAt(0) == "&") return "variable-2"; return "variable"; } } function inString(stream, state) { var escaped = false, next; while (next = stream.next()) { if (next == '"' && !escaped) { state.tokenize = base; break; } escaped = !escaped && next == "\\"; } return "string"; } function inComment(stream, state) { var next, last; while (next = stream.next()) { if (next == "#" && last == "|") { state.tokenize = base; break; } last = next; } type = "ws"; return "comment"; } return { startState: function () { return {ctx: {prev: null, start: 0, indentTo: 0}, lastType: null, tokenize: base}; }, token: function (stream, state) { if (stream.sol() && typeof state.ctx.indentTo != "number") state.ctx.indentTo = state.ctx.start + 1; type = null; var style = state.tokenize(stream, state); if (type != "ws") { if (state.ctx.indentTo == null) { if (type == "symbol" && assumeBody.test(stream.current())) state.ctx.indentTo = state.ctx.start + config.indentUnit; else state.ctx.indentTo = "next"; } else if (state.ctx.indentTo == "next") { state.ctx.indentTo = stream.column(); } state.lastType = type; } if (type == "open") state.ctx = {prev: state.ctx, start: stream.column(), indentTo: null}; else if (type == "close") state.ctx = state.ctx.prev || state.ctx; return style; }, indent: function (state, _textAfter) { var i = state.ctx.indentTo; return typeof i == "number" ? i : state.ctx.start + 1; }, closeBrackets: {pairs: "()[]{}\"\""}, lineComment: ";;", blockCommentStart: "#|", blockCommentEnd: "|#" }; }); CodeMirror.defineMIME("text/x-common-lisp", "commonlisp"); }); application/library/codemirror/mode/crystal/crystal.js000064400000026112147577724760017340 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("crystal", function(config) { function wordRegExp(words, end) { return new RegExp((end ? "" : "^") + "(?:" + words.join("|") + ")" + (end ? "$" : "\\b")); } function chain(tokenize, stream, state) { state.tokenize.push(tokenize); return tokenize(stream, state); } var operators = /^(?:[-+/%|&^]|\*\*?|[<>]{2})/; var conditionalOperators = /^(?:[=!]~|===|<=>|[<>=!]=?|[|&]{2}|~)/; var indexingOperators = /^(?:\[\][?=]?)/; var anotherOperators = /^(?:\.(?:\.{2})?|->|[?:])/; var idents = /^[a-z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/; var types = /^[A-Z_\u009F-\uFFFF][a-zA-Z0-9_\u009F-\uFFFF]*/; var keywords = wordRegExp([ "abstract", "alias", "as", "asm", "begin", "break", "case", "class", "def", "do", "else", "elsif", "end", "ensure", "enum", "extend", "for", "fun", "if", "ifdef", "include", "instance_sizeof", "lib", "macro", "module", "next", "of", "out", "pointerof", "private", "protected", "rescue", "return", "require", "sizeof", "struct", "super", "then", "type", "typeof", "union", "unless", "until", "when", "while", "with", "yield", "__DIR__", "__FILE__", "__LINE__" ]); var atomWords = wordRegExp(["true", "false", "nil", "self"]); var indentKeywordsArray = [ "def", "fun", "macro", "class", "module", "struct", "lib", "enum", "union", "if", "unless", "case", "while", "until", "begin", "then", "do", "for", "ifdef" ]; var indentKeywords = wordRegExp(indentKeywordsArray); var dedentKeywordsArray = [ "end", "else", "elsif", "rescue", "ensure" ]; var dedentKeywords = wordRegExp(dedentKeywordsArray); var dedentPunctualsArray = ["\\)", "\\}", "\\]"]; var dedentPunctuals = new RegExp("^(?:" + dedentPunctualsArray.join("|") + ")$"); var nextTokenizer = { "def": tokenFollowIdent, "fun": tokenFollowIdent, "macro": tokenMacroDef, "class": tokenFollowType, "module": tokenFollowType, "struct": tokenFollowType, "lib": tokenFollowType, "enum": tokenFollowType, "union": tokenFollowType }; var matching = {"[": "]", "{": "}", "(": ")", "<": ">"}; function tokenBase(stream, state) { if (stream.eatSpace()) { return null; } // Macros if (state.lastToken != "\\" && stream.match("{%", false)) { return chain(tokenMacro("%", "%"), stream, state); } if (state.lastToken != "\\" && stream.match("{{", false)) { return chain(tokenMacro("{", "}"), stream, state); } // Comments if (stream.peek() == "#") { stream.skipToEnd(); return "comment"; } // Variables and keywords var matched; if (stream.match(idents)) { stream.eat(/[?!]/); matched = stream.current(); if (stream.eat(":")) { return "atom"; } else if (state.lastToken == ".") { return "property"; } else if (keywords.test(matched)) { if (state.lastToken != "abstract" && indentKeywords.test(matched)) { if (!(matched == "fun" && state.blocks.indexOf("lib") >= 0)) { state.blocks.push(matched); state.currentIndent += 1; } } else if (dedentKeywords.test(matched)) { state.blocks.pop(); state.currentIndent -= 1; } if (nextTokenizer.hasOwnProperty(matched)) { state.tokenize.push(nextTokenizer[matched]); } return "keyword"; } else if (atomWords.test(matched)) { return "atom"; } return "variable"; } // Class variables and instance variables // or attributes if (stream.eat("@")) { if (stream.peek() == "[") { return chain(tokenNest("[", "]", "meta"), stream, state); } stream.eat("@"); stream.match(idents) || stream.match(types); return "variable-2"; } // Global variables if (stream.eat("$")) { stream.eat(/[0-9]+|\?/) || stream.match(idents) || stream.match(types); return "variable-3"; } // Constants and types if (stream.match(types)) { return "tag"; } // Symbols or ':' operator if (stream.eat(":")) { if (stream.eat("\"")) { return chain(tokenQuote("\"", "atom", false), stream, state); } else if (stream.match(idents) || stream.match(types) || stream.match(operators) || stream.match(conditionalOperators) || stream.match(indexingOperators)) { return "atom"; } stream.eat(":"); return "operator"; } // Strings if (stream.eat("\"")) { return chain(tokenQuote("\"", "string", true), stream, state); } // Strings or regexps or macro variables or '%' operator if (stream.peek() == "%") { var style = "string"; var embed = true; var delim; if (stream.match("%r")) { // Regexps style = "string-2"; delim = stream.next(); } else if (stream.match("%w")) { embed = false; delim = stream.next(); } else { if(delim = stream.match(/^%([^\w\s=])/)) { delim = delim[1]; } else if (stream.match(/^%[a-zA-Z0-9_\u009F-\uFFFF]*/)) { // Macro variables return "meta"; } else { // '%' operator return "operator"; } } if (matching.hasOwnProperty(delim)) { delim = matching[delim]; } return chain(tokenQuote(delim, style, embed), stream, state); } // Characters if (stream.eat("'")) { stream.match(/^(?:[^']|\\(?:[befnrtv0'"]|[0-7]{3}|u(?:[0-9a-fA-F]{4}|\{[0-9a-fA-F]{1,6}\})))/); stream.eat("'"); return "atom"; } // Numbers if (stream.eat("0")) { if (stream.eat("x")) { stream.match(/^[0-9a-fA-F]+/); } else if (stream.eat("o")) { stream.match(/^[0-7]+/); } else if (stream.eat("b")) { stream.match(/^[01]+/); } return "number"; } if (stream.eat(/\d/)) { stream.match(/^\d*(?:\.\d+)?(?:[eE][+-]?\d+)?/); return "number"; } // Operators if (stream.match(operators)) { stream.eat("="); // Operators can follow assign symbol. return "operator"; } if (stream.match(conditionalOperators) || stream.match(anotherOperators)) { return "operator"; } // Parens and braces if (matched = stream.match(/[({[]/, false)) { matched = matched[0]; return chain(tokenNest(matched, matching[matched], null), stream, state); } // Escapes if (stream.eat("\\")) { stream.next(); return "meta"; } stream.next(); return null; } function tokenNest(begin, end, style, started) { return function (stream, state) { if (!started && stream.match(begin)) { state.tokenize[state.tokenize.length - 1] = tokenNest(begin, end, style, true); state.currentIndent += 1; return style; } var nextStyle = tokenBase(stream, state); if (stream.current() === end) { state.tokenize.pop(); state.currentIndent -= 1; nextStyle = style; } return nextStyle; }; } function tokenMacro(begin, end, started) { return function (stream, state) { if (!started && stream.match("{" + begin)) { state.currentIndent += 1; state.tokenize[state.tokenize.length - 1] = tokenMacro(begin, end, true); return "meta"; } if (stream.match(end + "}")) { state.currentIndent -= 1; state.tokenize.pop(); return "meta"; } return tokenBase(stream, state); }; } function tokenMacroDef(stream, state) { if (stream.eatSpace()) { return null; } var matched; if (matched = stream.match(idents)) { if (matched == "def") { return "keyword"; } stream.eat(/[?!]/); } state.tokenize.pop(); return "def"; } function tokenFollowIdent(stream, state) { if (stream.eatSpace()) { return null; } if (stream.match(idents)) { stream.eat(/[!?]/); } else { stream.match(operators) || stream.match(conditionalOperators) || stream.match(indexingOperators); } state.tokenize.pop(); return "def"; } function tokenFollowType(stream, state) { if (stream.eatSpace()) { return null; } stream.match(types); state.tokenize.pop(); return "def"; } function tokenQuote(end, style, embed) { return function (stream, state) { var escaped = false; while (stream.peek()) { if (!escaped) { if (stream.match("{%", false)) { state.tokenize.push(tokenMacro("%", "%")); return style; } if (stream.match("{{", false)) { state.tokenize.push(tokenMacro("{", "}")); return style; } if (embed && stream.match("#{", false)) { state.tokenize.push(tokenNest("#{", "}", "meta")); return style; } var ch = stream.next(); if (ch == end) { state.tokenize.pop(); return style; } escaped = ch == "\\"; } else { stream.next(); escaped = false; } } return style; }; } return { startState: function () { return { tokenize: [tokenBase], currentIndent: 0, lastToken: null, blocks: [] }; }, token: function (stream, state) { var style = state.tokenize[state.tokenize.length - 1](stream, state); var token = stream.current(); if (style && style != "comment") { state.lastToken = token; } return style; }, indent: function (state, textAfter) { textAfter = textAfter.replace(/^\s*(?:\{%)?\s*|\s*(?:%\})?\s*$/g, ""); if (dedentKeywords.test(textAfter) || dedentPunctuals.test(textAfter)) { return config.indentUnit * (state.currentIndent - 1); } return config.indentUnit * state.currentIndent; }, fold: "indent", electricInput: wordRegExp(dedentPunctualsArray.concat(dedentKeywordsArray), true), lineComment: '#' }; }); CodeMirror.defineMIME("text/x-crystal", "crystal"); }); application/library/codemirror/mode/crystal/index.html000064400000005147147577724760017323 0ustar00 CodeMirror: Crystal mode

Crystal mode

MIME types defined: text/x-crystal.

application/library/codemirror/mode/css/scss.html000064400000005266147577724760016300 0ustar00 CodeMirror: SCSS mode

SCSS mode

The SCSS mode is a sub-mode of the CSS mode (defined in css.js).

Parsing/Highlighting Tests: normal, verbose.

application/library/codemirror/mode/css/index.html000064400000003570147577724760016430 0ustar00 CodeMirror: CSS mode

CSS mode

MIME types defined: text/css, text/x-scss (demo), text/x-less (demo).

Parsing/Highlighting Tests: normal, verbose.

application/library/codemirror/mode/css/gss_test.js000064400000000714147577724760016621 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { "use strict"; var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-gss"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "gss"); } MT("atComponent", "[def @component] {", "[tag foo] {", " [property color]: [keyword black];", "}", "}"); })(); application/library/codemirror/mode/css/gss.html000064400000005334147577724760016115 0ustar00 CodeMirror: Closure Stylesheets (GSS) mode

Closure Stylesheets (GSS) mode

A mode for Closure Stylesheets (GSS).

MIME type defined: text/x-gss.

Parsing/Highlighting Tests: normal, verbose.

application/library/codemirror/mode/css/less.html000064400000007742147577724760016274 0ustar00 CodeMirror: LESS mode

LESS mode

The LESS mode is a sub-mode of the CSS mode (defined in css.js).

Parsing/Highlighting Tests: normal, verbose.

application/library/codemirror/mode/css/test.js000064400000015201147577724760015742 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "css"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } // Error, because "foobarhello" is neither a known type or property, but // property was expected (after "and"), and it should be in parentheses. MT("atMediaUnknownType", "[def @media] [attribute screen] [keyword and] [error foobarhello] { }"); // Soft error, because "foobarhello" is not a known property or type. MT("atMediaUnknownProperty", "[def @media] [attribute screen] [keyword and] ([error foobarhello]) { }"); // Make sure nesting works with media queries MT("atMediaMaxWidthNested", "[def @media] [attribute screen] [keyword and] ([property max-width]: [number 25px]) { [tag foo] { } }"); MT("atMediaFeatureValueKeyword", "[def @media] ([property orientation]: [keyword landscape]) { }"); MT("atMediaUnknownFeatureValueKeyword", "[def @media] ([property orientation]: [error upsidedown]) { }"); MT("tagSelector", "[tag foo] { }"); MT("classSelector", "[qualifier .foo-bar_hello] { }"); MT("idSelector", "[builtin #foo] { [error #foo] }"); MT("tagSelectorUnclosed", "[tag foo] { [property margin]: [number 0] } [tag bar] { }"); MT("tagStringNoQuotes", "[tag foo] { [property font-family]: [variable hello] [variable world]; }"); MT("tagStringDouble", "[tag foo] { [property font-family]: [string \"hello world\"]; }"); MT("tagStringSingle", "[tag foo] { [property font-family]: [string 'hello world']; }"); MT("tagColorKeyword", "[tag foo] {", " [property color]: [keyword black];", " [property color]: [keyword navy];", " [property color]: [keyword yellow];", "}"); MT("tagColorHex3", "[tag foo] { [property background]: [atom #fff]; }"); MT("tagColorHex4", "[tag foo] { [property background]: [atom #ffff]; }"); MT("tagColorHex6", "[tag foo] { [property background]: [atom #ffffff]; }"); MT("tagColorHex8", "[tag foo] { [property background]: [atom #ffffffff]; }"); MT("tagColorHex5Invalid", "[tag foo] { [property background]: [atom&error #fffff]; }"); MT("tagColorHexInvalid", "[tag foo] { [property background]: [atom&error #ffg]; }"); MT("tagNegativeNumber", "[tag foo] { [property margin]: [number -5px]; }"); MT("tagPositiveNumber", "[tag foo] { [property padding]: [number 5px]; }"); MT("tagVendor", "[tag foo] { [meta -foo-][property box-sizing]: [meta -foo-][atom border-box]; }"); MT("tagBogusProperty", "[tag foo] { [property&error barhelloworld]: [number 0]; }"); MT("tagTwoProperties", "[tag foo] { [property margin]: [number 0]; [property padding]: [number 0]; }"); MT("tagTwoPropertiesURL", "[tag foo] { [property background]: [atom url]([string //example.com/foo.png]); [property padding]: [number 0]; }"); MT("indent_tagSelector", "[tag strong], [tag em] {", " [property background]: [atom rgba](", " [number 255], [number 255], [number 0], [number .2]", " );", "}"); MT("indent_atMedia", "[def @media] {", " [tag foo] {", " [property color]:", " [keyword yellow];", " }", "}"); MT("indent_comma", "[tag foo] {", " [property font-family]: [variable verdana],", " [atom sans-serif];", "}"); MT("indent_parentheses", "[tag foo]:[variable-3 before] {", " [property background]: [atom url](", "[string blahblah]", "[string etc]", "[string ]) [keyword !important];", "}"); MT("font_face", "[def @font-face] {", " [property font-family]: [string 'myfont'];", " [error nonsense]: [string 'abc'];", " [property src]: [atom url]([string http://blah]),", " [atom url]([string http://foo]);", "}"); MT("empty_url", "[def @import] [atom url]() [attribute screen];"); MT("parens", "[qualifier .foo] {", " [property background-image]: [variable fade]([atom #000], [number 20%]);", " [property border-image]: [atom linear-gradient](", " [atom to] [atom bottom],", " [variable fade]([atom #000], [number 20%]) [number 0%],", " [variable fade]([atom #000], [number 20%]) [number 100%]", " );", "}"); MT("css_variable", ":[variable-3 root] {", " [variable-2 --main-color]: [atom #06c];", "}", "[tag h1][builtin #foo] {", " [property color]: [atom var]([variable-2 --main-color]);", "}"); MT("supports", "[def @supports] ([keyword not] (([property text-align-last]: [atom justify]) [keyword or] ([meta -moz-][property text-align-last]: [atom justify])) {", " [property text-align-last]: [atom justify];", "}"); MT("document", "[def @document] [tag url]([string http://blah]),", " [tag url-prefix]([string https://]),", " [tag domain]([string blah.com]),", " [tag regexp]([string \".*blah.+\"]) {", " [builtin #id] {", " [property background-color]: [keyword white];", " }", " [tag foo] {", " [property font-family]: [variable Verdana], [atom sans-serif];", " }", "}"); MT("document_url", "[def @document] [tag url]([string http://blah]) { [qualifier .class] { } }"); MT("document_urlPrefix", "[def @document] [tag url-prefix]([string https://]) { [builtin #id] { } }"); MT("document_domain", "[def @document] [tag domain]([string blah.com]) { [tag foo] { } }"); MT("document_regexp", "[def @document] [tag regexp]([string \".*blah.+\"]) { [builtin #id] { } }"); MT("counter-style", "[def @counter-style] [variable binary] {", " [property system]: [atom numeric];", " [property symbols]: [number 0] [number 1];", " [property suffix]: [string \".\"];", " [property range]: [atom infinite];", " [property speak-as]: [atom numeric];", "}"); MT("counter-style-additive-symbols", "[def @counter-style] [variable simple-roman] {", " [property system]: [atom additive];", " [property additive-symbols]: [number 10] [variable X], [number 5] [variable V], [number 1] [variable I];", " [property range]: [number 1] [number 49];", "}"); MT("counter-style-use", "[tag ol][qualifier .roman] { [property list-style]: [variable simple-roman]; }"); MT("counter-style-symbols", "[tag ol] { [property list-style]: [atom symbols]([atom cyclic] [string \"*\"] [string \"\\2020\"] [string \"\\2021\"] [string \"\\A7\"]); }"); })(); application/library/codemirror/mode/css/less_test.js000064400000003517147577724760016777 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { "use strict"; var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-less"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "less"); } MT("variable", "[variable-2 @base]: [atom #f04615];", "[qualifier .class] {", " [property width]: [variable percentage]([number 0.5]); [comment // returns `50%`]", " [property color]: [variable saturate]([variable-2 @base], [number 5%]);", "}"); MT("amp", "[qualifier .child], [qualifier .sibling] {", " [qualifier .parent] [atom &] {", " [property color]: [keyword black];", " }", " [atom &] + [atom &] {", " [property color]: [keyword red];", " }", "}"); MT("mixin", "[qualifier .mixin] ([variable dark]; [variable-2 @color]) {", " [property color]: [atom darken]([variable-2 @color], [number 10%]);", "}", "[qualifier .mixin] ([variable light]; [variable-2 @color]) {", " [property color]: [atom lighten]([variable-2 @color], [number 10%]);", "}", "[qualifier .mixin] ([variable-2 @_]; [variable-2 @color]) {", " [property display]: [atom block];", "}", "[variable-2 @switch]: [variable light];", "[qualifier .class] {", " [qualifier .mixin]([variable-2 @switch]; [atom #888]);", "}"); MT("nest", "[qualifier .one] {", " [def @media] ([property width]: [number 400px]) {", " [property font-size]: [number 1.2em];", " [def @media] [attribute print] [keyword and] [property color] {", " [property color]: [keyword blue];", " }", " }", "}"); MT("interpolation", ".@{[variable foo]} { [property font-weight]: [atom bold]; }"); })(); application/library/codemirror/mode/css/scss_test.js000064400000006064147577724760017004 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-scss"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "scss"); } MT('url_with_quotation', "[tag foo] { [property background]:[atom url]([string test.jpg]) }"); MT('url_with_double_quotes', "[tag foo] { [property background]:[atom url]([string \"test.jpg\"]) }"); MT('url_with_single_quotes', "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) }"); MT('string', "[def @import] [string \"compass/css3\"]"); MT('important_keyword', "[tag foo] { [property background]:[atom url]([string \'test.jpg\']) [keyword !important] }"); MT('variable', "[variable-2 $blue]:[atom #333]"); MT('variable_as_attribute', "[tag foo] { [property color]:[variable-2 $blue] }"); MT('numbers', "[tag foo] { [property padding]:[number 10px] [number 10] [number 10em] [number 8in] }"); MT('number_percentage', "[tag foo] { [property width]:[number 80%] }"); MT('selector', "[builtin #hello][qualifier .world]{}"); MT('singleline_comment', "[comment // this is a comment]"); MT('multiline_comment', "[comment /*foobar*/]"); MT('attribute_with_hyphen', "[tag foo] { [property font-size]:[number 10px] }"); MT('string_after_attribute', "[tag foo] { [property content]:[string \"::\"] }"); MT('directives', "[def @include] [qualifier .mixin]"); MT('basic_structure', "[tag p] { [property background]:[keyword red]; }"); MT('nested_structure', "[tag p] { [tag a] { [property color]:[keyword red]; } }"); MT('mixin', "[def @mixin] [tag table-base] {}"); MT('number_without_semicolon', "[tag p] {[property width]:[number 12]}", "[tag a] {[property color]:[keyword red];}"); MT('atom_in_nested_block', "[tag p] { [tag a] { [property color]:[atom #000]; } }"); MT('interpolation_in_property', "[tag foo] { #{[variable-2 $hello]}:[number 2]; }"); MT('interpolation_in_selector', "[tag foo]#{[variable-2 $hello]} { [property color]:[atom #000]; }"); MT('interpolation_error', "[tag foo]#{[variable foo]} { [property color]:[atom #000]; }"); MT("divide_operator", "[tag foo] { [property width]:[number 4] [operator /] [number 2] }"); MT('nested_structure_with_id_selector', "[tag p] { [builtin #hello] { [property color]:[keyword red]; } }"); MT('indent_mixin', "[def @mixin] [tag container] (", " [variable-2 $a]: [number 10],", " [variable-2 $b]: [number 10])", "{}"); MT('indent_nested', "[tag foo] {", " [tag bar] {", " }", "}"); MT('indent_parentheses', "[tag foo] {", " [property color]: [atom darken]([variable-2 $blue],", " [number 9%]);", "}"); MT('indent_vardef', "[variable-2 $name]:", " [string 'val'];", "[tag tag] {", " [tag inner] {", " [property margin]: [number 3px];", " }", "}"); })(); application/library/codemirror/mode/css/css.js000064400000110535147577724760015561 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("css", function(config, parserConfig) { var inline = parserConfig.inline if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode("text/css"); var indentUnit = config.indentUnit, tokenHooks = parserConfig.tokenHooks, documentTypes = parserConfig.documentTypes || {}, mediaTypes = parserConfig.mediaTypes || {}, mediaFeatures = parserConfig.mediaFeatures || {}, mediaValueKeywords = parserConfig.mediaValueKeywords || {}, propertyKeywords = parserConfig.propertyKeywords || {}, nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {}, fontProperties = parserConfig.fontProperties || {}, counterDescriptors = parserConfig.counterDescriptors || {}, colorKeywords = parserConfig.colorKeywords || {}, valueKeywords = parserConfig.valueKeywords || {}, allowNested = parserConfig.allowNested, supportsAtComponent = parserConfig.supportsAtComponent === true; var type, override; function ret(style, tp) { type = tp; return style; } // Tokenizers function tokenBase(stream, state) { var ch = stream.next(); if (tokenHooks[ch]) { var result = tokenHooks[ch](stream, state); if (result !== false) return result; } if (ch == "@") { stream.eatWhile(/[\w\\\-]/); return ret("def", stream.current()); } else if (ch == "=" || (ch == "~" || ch == "|") && stream.eat("=")) { return ret(null, "compare"); } else if (ch == "\"" || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } else if (ch == "#") { stream.eatWhile(/[\w\\\-]/); return ret("atom", "hash"); } else if (ch == "!") { stream.match(/^\s*\w*/); return ret("keyword", "important"); } else if (/\d/.test(ch) || ch == "." && stream.eat(/\d/)) { stream.eatWhile(/[\w.%]/); return ret("number", "unit"); } else if (ch === "-") { if (/[\d.]/.test(stream.peek())) { stream.eatWhile(/[\w.%]/); return ret("number", "unit"); } else if (stream.match(/^-[\w\\\-]+/)) { stream.eatWhile(/[\w\\\-]/); if (stream.match(/^\s*:/, false)) return ret("variable-2", "variable-definition"); return ret("variable-2", "variable"); } else if (stream.match(/^\w+-/)) { return ret("meta", "meta"); } } else if (/[,+>*\/]/.test(ch)) { return ret(null, "select-op"); } else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) { return ret("qualifier", "qualifier"); } else if (/[:;{}\[\]\(\)]/.test(ch)) { return ret(null, ch); } else if ((ch == "u" && stream.match(/rl(-prefix)?\(/)) || (ch == "d" && stream.match("omain(")) || (ch == "r" && stream.match("egexp("))) { stream.backUp(1); state.tokenize = tokenParenthesized; return ret("property", "word"); } else if (/[\w\\\-]/.test(ch)) { stream.eatWhile(/[\w\\\-]/); return ret("property", "word"); } else { return ret(null, null); } } function tokenString(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) { if (quote == ")") stream.backUp(1); break; } escaped = !escaped && ch == "\\"; } if (ch == quote || !escaped && quote != ")") state.tokenize = null; return ret("string", "string"); }; } function tokenParenthesized(stream, state) { stream.next(); // Must be '(' if (!stream.match(/\s*[\"\')]/, false)) state.tokenize = tokenString(")"); else state.tokenize = null; return ret(null, "("); } // Context management function Context(type, indent, prev) { this.type = type; this.indent = indent; this.prev = prev; } function pushContext(state, stream, type, indent) { state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context); return type; } function popContext(state) { if (state.context.prev) state.context = state.context.prev; return state.context.type; } function pass(type, stream, state) { return states[state.context.type](type, stream, state); } function popAndPass(type, stream, state, n) { for (var i = n || 1; i > 0; i--) state.context = state.context.prev; return pass(type, stream, state); } // Parser function wordAsValue(stream) { var word = stream.current().toLowerCase(); if (valueKeywords.hasOwnProperty(word)) override = "atom"; else if (colorKeywords.hasOwnProperty(word)) override = "keyword"; else override = "variable"; } var states = {}; states.top = function(type, stream, state) { if (type == "{") { return pushContext(state, stream, "block"); } else if (type == "}" && state.context.prev) { return popContext(state); } else if (supportsAtComponent && /@component/.test(type)) { return pushContext(state, stream, "atComponentBlock"); } else if (/^@(-moz-)?document$/.test(type)) { return pushContext(state, stream, "documentTypes"); } else if (/^@(media|supports|(-moz-)?document|import)$/.test(type)) { return pushContext(state, stream, "atBlock"); } else if (/^@(font-face|counter-style)/.test(type)) { state.stateArg = type; return "restricted_atBlock_before"; } else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) { return "keyframes"; } else if (type && type.charAt(0) == "@") { return pushContext(state, stream, "at"); } else if (type == "hash") { override = "builtin"; } else if (type == "word") { override = "tag"; } else if (type == "variable-definition") { return "maybeprop"; } else if (type == "interpolation") { return pushContext(state, stream, "interpolation"); } else if (type == ":") { return "pseudo"; } else if (allowNested && type == "(") { return pushContext(state, stream, "parens"); } return state.context.type; }; states.block = function(type, stream, state) { if (type == "word") { var word = stream.current().toLowerCase(); if (propertyKeywords.hasOwnProperty(word)) { override = "property"; return "maybeprop"; } else if (nonStandardPropertyKeywords.hasOwnProperty(word)) { override = "string-2"; return "maybeprop"; } else if (allowNested) { override = stream.match(/^\s*:(?:\s|$)/, false) ? "property" : "tag"; return "block"; } else { override += " error"; return "maybeprop"; } } else if (type == "meta") { return "block"; } else if (!allowNested && (type == "hash" || type == "qualifier")) { override = "error"; return "block"; } else { return states.top(type, stream, state); } }; states.maybeprop = function(type, stream, state) { if (type == ":") return pushContext(state, stream, "prop"); return pass(type, stream, state); }; states.prop = function(type, stream, state) { if (type == ";") return popContext(state); if (type == "{" && allowNested) return pushContext(state, stream, "propBlock"); if (type == "}" || type == "{") return popAndPass(type, stream, state); if (type == "(") return pushContext(state, stream, "parens"); if (type == "hash" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) { override += " error"; } else if (type == "word") { wordAsValue(stream); } else if (type == "interpolation") { return pushContext(state, stream, "interpolation"); } return "prop"; }; states.propBlock = function(type, _stream, state) { if (type == "}") return popContext(state); if (type == "word") { override = "property"; return "maybeprop"; } return state.context.type; }; states.parens = function(type, stream, state) { if (type == "{" || type == "}") return popAndPass(type, stream, state); if (type == ")") return popContext(state); if (type == "(") return pushContext(state, stream, "parens"); if (type == "interpolation") return pushContext(state, stream, "interpolation"); if (type == "word") wordAsValue(stream); return "parens"; }; states.pseudo = function(type, stream, state) { if (type == "word") { override = "variable-3"; return state.context.type; } return pass(type, stream, state); }; states.documentTypes = function(type, stream, state) { if (type == "word" && documentTypes.hasOwnProperty(stream.current())) { override = "tag"; return state.context.type; } else { return states.atBlock(type, stream, state); } }; states.atBlock = function(type, stream, state) { if (type == "(") return pushContext(state, stream, "atBlock_parens"); if (type == "}" || type == ";") return popAndPass(type, stream, state); if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top"); if (type == "interpolation") return pushContext(state, stream, "interpolation"); if (type == "word") { var word = stream.current().toLowerCase(); if (word == "only" || word == "not" || word == "and" || word == "or") override = "keyword"; else if (mediaTypes.hasOwnProperty(word)) override = "attribute"; else if (mediaFeatures.hasOwnProperty(word)) override = "property"; else if (mediaValueKeywords.hasOwnProperty(word)) override = "keyword"; else if (propertyKeywords.hasOwnProperty(word)) override = "property"; else if (nonStandardPropertyKeywords.hasOwnProperty(word)) override = "string-2"; else if (valueKeywords.hasOwnProperty(word)) override = "atom"; else if (colorKeywords.hasOwnProperty(word)) override = "keyword"; else override = "error"; } return state.context.type; }; states.atComponentBlock = function(type, stream, state) { if (type == "}") return popAndPass(type, stream, state); if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top", false); if (type == "word") override = "error"; return state.context.type; }; states.atBlock_parens = function(type, stream, state) { if (type == ")") return popContext(state); if (type == "{" || type == "}") return popAndPass(type, stream, state, 2); return states.atBlock(type, stream, state); }; states.restricted_atBlock_before = function(type, stream, state) { if (type == "{") return pushContext(state, stream, "restricted_atBlock"); if (type == "word" && state.stateArg == "@counter-style") { override = "variable"; return "restricted_atBlock_before"; } return pass(type, stream, state); }; states.restricted_atBlock = function(type, stream, state) { if (type == "}") { state.stateArg = null; return popContext(state); } if (type == "word") { if ((state.stateArg == "@font-face" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) || (state.stateArg == "@counter-style" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase()))) override = "error"; else override = "property"; return "maybeprop"; } return "restricted_atBlock"; }; states.keyframes = function(type, stream, state) { if (type == "word") { override = "variable"; return "keyframes"; } if (type == "{") return pushContext(state, stream, "top"); return pass(type, stream, state); }; states.at = function(type, stream, state) { if (type == ";") return popContext(state); if (type == "{" || type == "}") return popAndPass(type, stream, state); if (type == "word") override = "tag"; else if (type == "hash") override = "builtin"; return "at"; }; states.interpolation = function(type, stream, state) { if (type == "}") return popContext(state); if (type == "{" || type == ";") return popAndPass(type, stream, state); if (type == "word") override = "variable"; else if (type != "variable" && type != "(" && type != ")") override = "error"; return "interpolation"; }; return { startState: function(base) { return {tokenize: null, state: inline ? "block" : "top", stateArg: null, context: new Context(inline ? "block" : "top", base || 0, null)}; }, token: function(stream, state) { if (!state.tokenize && stream.eatSpace()) return null; var style = (state.tokenize || tokenBase)(stream, state); if (style && typeof style == "object") { type = style[1]; style = style[0]; } override = style; state.state = states[state.state](type, stream, state); return override; }, indent: function(state, textAfter) { var cx = state.context, ch = textAfter && textAfter.charAt(0); var indent = cx.indent; if (cx.type == "prop" && (ch == "}" || ch == ")")) cx = cx.prev; if (cx.prev) { if (ch == "}" && (cx.type == "block" || cx.type == "top" || cx.type == "interpolation" || cx.type == "restricted_atBlock")) { // Resume indentation from parent context. cx = cx.prev; indent = cx.indent; } else if (ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") || ch == "{" && (cx.type == "at" || cx.type == "atBlock")) { // Dedent relative to current context. indent = Math.max(0, cx.indent - indentUnit); cx = cx.prev; } } return indent; }, electricChars: "}", blockCommentStart: "/*", blockCommentEnd: "*/", fold: "brace" }; }); function keySet(array) { var keys = {}; for (var i = 0; i < array.length; ++i) { keys[array[i]] = true; } return keys; } var documentTypes_ = [ "domain", "regexp", "url", "url-prefix" ], documentTypes = keySet(documentTypes_); var mediaTypes_ = [ "all", "aural", "braille", "handheld", "print", "projection", "screen", "tty", "tv", "embossed" ], mediaTypes = keySet(mediaTypes_); var mediaFeatures_ = [ "width", "min-width", "max-width", "height", "min-height", "max-height", "device-width", "min-device-width", "max-device-width", "device-height", "min-device-height", "max-device-height", "aspect-ratio", "min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio", "min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color", "max-color", "color-index", "min-color-index", "max-color-index", "monochrome", "min-monochrome", "max-monochrome", "resolution", "min-resolution", "max-resolution", "scan", "grid", "orientation", "device-pixel-ratio", "min-device-pixel-ratio", "max-device-pixel-ratio", "pointer", "any-pointer", "hover", "any-hover" ], mediaFeatures = keySet(mediaFeatures_); var mediaValueKeywords_ = [ "landscape", "portrait", "none", "coarse", "fine", "on-demand", "hover", "interlace", "progressive" ], mediaValueKeywords = keySet(mediaValueKeywords_); var propertyKeywords_ = [ "align-content", "align-items", "align-self", "alignment-adjust", "alignment-baseline", "anchor-point", "animation", "animation-delay", "animation-direction", "animation-duration", "animation-fill-mode", "animation-iteration-count", "animation-name", "animation-play-state", "animation-timing-function", "appearance", "azimuth", "backface-visibility", "background", "background-attachment", "background-blend-mode", "background-clip", "background-color", "background-image", "background-origin", "background-position", "background-repeat", "background-size", "baseline-shift", "binding", "bleed", "bookmark-label", "bookmark-level", "bookmark-state", "bookmark-target", "border", "border-bottom", "border-bottom-color", "border-bottom-left-radius", "border-bottom-right-radius", "border-bottom-style", "border-bottom-width", "border-collapse", "border-color", "border-image", "border-image-outset", "border-image-repeat", "border-image-slice", "border-image-source", "border-image-width", "border-left", "border-left-color", "border-left-style", "border-left-width", "border-radius", "border-right", "border-right-color", "border-right-style", "border-right-width", "border-spacing", "border-style", "border-top", "border-top-color", "border-top-left-radius", "border-top-right-radius", "border-top-style", "border-top-width", "border-width", "bottom", "box-decoration-break", "box-shadow", "box-sizing", "break-after", "break-before", "break-inside", "caption-side", "clear", "clip", "color", "color-profile", "column-count", "column-fill", "column-gap", "column-rule", "column-rule-color", "column-rule-style", "column-rule-width", "column-span", "column-width", "columns", "content", "counter-increment", "counter-reset", "crop", "cue", "cue-after", "cue-before", "cursor", "direction", "display", "dominant-baseline", "drop-initial-after-adjust", "drop-initial-after-align", "drop-initial-before-adjust", "drop-initial-before-align", "drop-initial-size", "drop-initial-value", "elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis", "flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap", "float", "float-offset", "flow-from", "flow-into", "font", "font-feature-settings", "font-family", "font-kerning", "font-language-override", "font-size", "font-size-adjust", "font-stretch", "font-style", "font-synthesis", "font-variant", "font-variant-alternates", "font-variant-caps", "font-variant-east-asian", "font-variant-ligatures", "font-variant-numeric", "font-variant-position", "font-weight", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow", "grid-auto-rows", "grid-column", "grid-column-end", "grid-column-gap", "grid-column-start", "grid-gap", "grid-row", "grid-row-end", "grid-row-gap", "grid-row-start", "grid-template", "grid-template-areas", "grid-template-columns", "grid-template-rows", "hanging-punctuation", "height", "hyphens", "icon", "image-orientation", "image-rendering", "image-resolution", "inline-box-align", "justify-content", "left", "letter-spacing", "line-break", "line-height", "line-stacking", "line-stacking-ruby", "line-stacking-shift", "line-stacking-strategy", "list-style", "list-style-image", "list-style-position", "list-style-type", "margin", "margin-bottom", "margin-left", "margin-right", "margin-top", "marker-offset", "marks", "marquee-direction", "marquee-loop", "marquee-play-count", "marquee-speed", "marquee-style", "max-height", "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index", "nav-left", "nav-right", "nav-up", "object-fit", "object-position", "opacity", "order", "orphans", "outline", "outline-color", "outline-offset", "outline-style", "outline-width", "overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y", "padding", "padding-bottom", "padding-left", "padding-right", "padding-top", "page", "page-break-after", "page-break-before", "page-break-inside", "page-policy", "pause", "pause-after", "pause-before", "perspective", "perspective-origin", "pitch", "pitch-range", "play-during", "position", "presentation-level", "punctuation-trim", "quotes", "region-break-after", "region-break-before", "region-break-inside", "region-fragment", "rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness", "right", "rotation", "rotation-point", "ruby-align", "ruby-overhang", "ruby-position", "ruby-span", "shape-image-threshold", "shape-inside", "shape-margin", "shape-outside", "size", "speak", "speak-as", "speak-header", "speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set", "tab-size", "table-layout", "target", "target-name", "target-new", "target-position", "text-align", "text-align-last", "text-decoration", "text-decoration-color", "text-decoration-line", "text-decoration-skip", "text-decoration-style", "text-emphasis", "text-emphasis-color", "text-emphasis-position", "text-emphasis-style", "text-height", "text-indent", "text-justify", "text-outline", "text-overflow", "text-shadow", "text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position", "text-wrap", "top", "transform", "transform-origin", "transform-style", "transition", "transition-delay", "transition-duration", "transition-property", "transition-timing-function", "unicode-bidi", "vertical-align", "visibility", "voice-balance", "voice-duration", "voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress", "voice-volume", "volume", "white-space", "widows", "width", "word-break", "word-spacing", "word-wrap", "z-index", // SVG-specific "clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color", "flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events", "color-interpolation", "color-interpolation-filters", "color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering", "marker", "marker-end", "marker-mid", "marker-start", "shape-rendering", "stroke", "stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin", "stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering", "baseline-shift", "dominant-baseline", "glyph-orientation-horizontal", "glyph-orientation-vertical", "text-anchor", "writing-mode" ], propertyKeywords = keySet(propertyKeywords_); var nonStandardPropertyKeywords_ = [ "scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color", "scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color", "scrollbar-3d-light-color", "scrollbar-track-color", "shape-inside", "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button", "searchfield-results-decoration", "zoom" ], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_); var fontProperties_ = [ "font-family", "src", "unicode-range", "font-variant", "font-feature-settings", "font-stretch", "font-weight", "font-style" ], fontProperties = keySet(fontProperties_); var counterDescriptors_ = [ "additive-symbols", "fallback", "negative", "pad", "prefix", "range", "speak-as", "suffix", "symbols", "system" ], counterDescriptors = keySet(counterDescriptors_); var colorKeywords_ = [ "aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige", "bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown", "burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue", "cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod", "darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen", "darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen", "darkslateblue", "darkslategray", "darkturquoise", "darkviolet", "deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick", "floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite", "gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew", "hotpink", "indianred", "indigo", "ivory", "khaki", "lavender", "lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral", "lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink", "lightsalmon", "lightseagreen", "lightskyblue", "lightslategray", "lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta", "maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple", "mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise", "mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin", "navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered", "orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred", "papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue", "purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown", "salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue", "slateblue", "slategray", "snow", "springgreen", "steelblue", "tan", "teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white", "whitesmoke", "yellow", "yellowgreen" ], colorKeywords = keySet(colorKeywords_); var valueKeywords_ = [ "above", "absolute", "activeborder", "additive", "activecaption", "afar", "after-white-space", "ahead", "alias", "all", "all-scroll", "alphabetic", "alternate", "always", "amharic", "amharic-abegede", "antialiased", "appworkspace", "arabic-indic", "armenian", "asterisks", "attr", "auto", "avoid", "avoid-column", "avoid-page", "avoid-region", "background", "backwards", "baseline", "below", "bidi-override", "binary", "bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box", "both", "bottom", "break", "break-all", "break-word", "bullets", "button", "button-bevel", "buttonface", "buttonhighlight", "buttonshadow", "buttontext", "calc", "cambodian", "capitalize", "caps-lock-indicator", "caption", "captiontext", "caret", "cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch", "cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote", "col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse", "compact", "condensed", "contain", "content", "content-box", "context-menu", "continuous", "copy", "counter", "counters", "cover", "crop", "cross", "crosshair", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal", "decimal-leading-zero", "default", "default-button", "dense", "destination-atop", "destination-in", "destination-out", "destination-over", "devanagari", "difference", "disc", "discard", "disclosure-closed", "disclosure-open", "document", "dot-dash", "dot-dot-dash", "dotted", "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out", "element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede", "ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er", "ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er", "ethiopic-halehame-aa-et", "ethiopic-halehame-am-et", "ethiopic-halehame-gez", "ethiopic-halehame-om-et", "ethiopic-halehame-sid-et", "ethiopic-halehame-so-et", "ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig", "ethiopic-numeric", "ew-resize", "exclusion", "expanded", "extends", "extra-condensed", "extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes", "forwards", "from", "geometricPrecision", "georgian", "graytext", "grid", "groove", "gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hard-light", "hebrew", "help", "hidden", "hide", "higher", "highlight", "highlighttext", "hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "hue", "icon", "ignore", "inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite", "infobackground", "infotext", "inherit", "initial", "inline", "inline-axis", "inline-block", "inline-flex", "inline-grid", "inline-table", "inset", "inside", "intrinsic", "invert", "italic", "japanese-formal", "japanese-informal", "justify", "kannada", "katakana", "katakana-iroha", "keep-all", "khmer", "korean-hangul-formal", "korean-hanja-formal", "korean-hanja-informal", "landscape", "lao", "large", "larger", "left", "level", "lighter", "lighten", "line-through", "linear", "linear-gradient", "lines", "list-item", "listbox", "listitem", "local", "logical", "loud", "lower", "lower-alpha", "lower-armenian", "lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian", "lower-roman", "lowercase", "ltr", "luminosity", "malayalam", "match", "matrix", "matrix3d", "media-controls-background", "media-current-time-display", "media-fullscreen-button", "media-mute-button", "media-play-button", "media-return-to-realtime-button", "media-rewind-button", "media-seek-back-button", "media-seek-forward-button", "media-slider", "media-sliderthumb", "media-time-remaining-display", "media-volume-slider", "media-volume-slider-container", "media-volume-sliderthumb", "medium", "menu", "menulist", "menulist-button", "menulist-text", "menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic", "mix", "mongolian", "monospace", "move", "multiple", "multiply", "myanmar", "n-resize", "narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop", "no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap", "ns-resize", "numbers", "numeric", "nw-resize", "nwse-resize", "oblique", "octal", "open-quote", "optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset", "outside", "outside-shape", "overlay", "overline", "padding", "padding-box", "painted", "page", "paused", "persian", "perspective", "plus-darker", "plus-lighter", "pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d", "progress", "push-button", "radial-gradient", "radio", "read-only", "read-write", "read-write-plaintext-only", "rectangle", "region", "relative", "repeat", "repeating-linear-gradient", "repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse", "rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY", "rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running", "s-resize", "sans-serif", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen", "scroll", "scrollbar", "se-resize", "searchfield", "searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button", "searchfield-results-decoration", "semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama", "simp-chinese-formal", "simp-chinese-informal", "single", "skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal", "slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow", "small", "small-caps", "small-caption", "smaller", "soft-light", "solid", "somali", "source-atop", "source-in", "source-out", "source-over", "space", "space-around", "space-between", "spell-out", "square", "square-button", "start", "static", "status-bar", "stretch", "stroke", "sub", "subpixel-antialiased", "super", "sw-resize", "symbolic", "symbols", "table", "table-caption", "table-cell", "table-column", "table-column-group", "table-footer-group", "table-header-group", "table-row", "table-row-group", "tamil", "telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai", "thick", "thin", "threeddarkshadow", "threedface", "threedhighlight", "threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er", "tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top", "trad-chinese-formal", "trad-chinese-informal", "translate", "translate3d", "translateX", "translateY", "translateZ", "transparent", "ultra-condensed", "ultra-expanded", "underline", "up", "upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal", "upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url", "var", "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted", "visibleStroke", "visual", "w-resize", "wait", "wave", "wider", "window", "windowframe", "windowtext", "words", "wrap", "wrap-reverse", "x-large", "x-small", "xor", "xx-large", "xx-small" ], valueKeywords = keySet(valueKeywords_); var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_) .concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_) .concat(valueKeywords_); CodeMirror.registerHelper("hintWords", "css", allWords); function tokenCComment(stream, state) { var maybeEnd = false, ch; while ((ch = stream.next()) != null) { if (maybeEnd && ch == "/") { state.tokenize = null; break; } maybeEnd = (ch == "*"); } return ["comment", "comment"]; } CodeMirror.defineMIME("text/css", { documentTypes: documentTypes, mediaTypes: mediaTypes, mediaFeatures: mediaFeatures, mediaValueKeywords: mediaValueKeywords, propertyKeywords: propertyKeywords, nonStandardPropertyKeywords: nonStandardPropertyKeywords, fontProperties: fontProperties, counterDescriptors: counterDescriptors, colorKeywords: colorKeywords, valueKeywords: valueKeywords, tokenHooks: { "/": function(stream, state) { if (!stream.eat("*")) return false; state.tokenize = tokenCComment; return tokenCComment(stream, state); } }, name: "css" }); CodeMirror.defineMIME("text/x-scss", { mediaTypes: mediaTypes, mediaFeatures: mediaFeatures, mediaValueKeywords: mediaValueKeywords, propertyKeywords: propertyKeywords, nonStandardPropertyKeywords: nonStandardPropertyKeywords, colorKeywords: colorKeywords, valueKeywords: valueKeywords, fontProperties: fontProperties, allowNested: true, tokenHooks: { "/": function(stream, state) { if (stream.eat("/")) { stream.skipToEnd(); return ["comment", "comment"]; } else if (stream.eat("*")) { state.tokenize = tokenCComment; return tokenCComment(stream, state); } else { return ["operator", "operator"]; } }, ":": function(stream) { if (stream.match(/\s*\{/)) return [null, "{"]; return false; }, "$": function(stream) { stream.match(/^[\w-]+/); if (stream.match(/^\s*:/, false)) return ["variable-2", "variable-definition"]; return ["variable-2", "variable"]; }, "#": function(stream) { if (!stream.eat("{")) return false; return [null, "interpolation"]; } }, name: "css", helperType: "scss" }); CodeMirror.defineMIME("text/x-less", { mediaTypes: mediaTypes, mediaFeatures: mediaFeatures, mediaValueKeywords: mediaValueKeywords, propertyKeywords: propertyKeywords, nonStandardPropertyKeywords: nonStandardPropertyKeywords, colorKeywords: colorKeywords, valueKeywords: valueKeywords, fontProperties: fontProperties, allowNested: true, tokenHooks: { "/": function(stream, state) { if (stream.eat("/")) { stream.skipToEnd(); return ["comment", "comment"]; } else if (stream.eat("*")) { state.tokenize = tokenCComment; return tokenCComment(stream, state); } else { return ["operator", "operator"]; } }, "@": function(stream) { if (stream.eat("{")) return [null, "interpolation"]; if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/, false)) return false; stream.eatWhile(/[\w\\\-]/); if (stream.match(/^\s*:/, false)) return ["variable-2", "variable-definition"]; return ["variable-2", "variable"]; }, "&": function() { return ["atom", "atom"]; } }, name: "css", helperType: "less" }); CodeMirror.defineMIME("text/x-gss", { documentTypes: documentTypes, mediaTypes: mediaTypes, mediaFeatures: mediaFeatures, propertyKeywords: propertyKeywords, nonStandardPropertyKeywords: nonStandardPropertyKeywords, fontProperties: fontProperties, counterDescriptors: counterDescriptors, colorKeywords: colorKeywords, valueKeywords: valueKeywords, supportsAtComponent: true, tokenHooks: { "/": function(stream, state) { if (!stream.eat("*")) return false; state.tokenize = tokenCComment; return tokenCComment(stream, state); } }, name: "css", helperType: "gss" }); }); application/library/codemirror/mode/cypher/index.html000064400000003564147577724760017135 0ustar00 CodeMirror: Cypher Mode for CodeMirror

Cypher Mode for CodeMirror

MIME types defined: application/x-cypher-query

application/library/codemirror/mode/cypher/cypher.js000064400000014205147577724760016762 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // By the Neo4j Team and contributors. // https://github.com/neo4j-contrib/CodeMirror (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var wordRegexp = function(words) { return new RegExp("^(?:" + words.join("|") + ")$", "i"); }; CodeMirror.defineMode("cypher", function(config) { var tokenBase = function(stream/*, state*/) { var ch = stream.next(); if (ch === "\"" || ch === "'") { stream.match(/.+?["']/); return "string"; } if (/[{}\(\),\.;\[\]]/.test(ch)) { curPunc = ch; return "node"; } else if (ch === "/" && stream.eat("/")) { stream.skipToEnd(); return "comment"; } else if (operatorChars.test(ch)) { stream.eatWhile(operatorChars); return null; } else { stream.eatWhile(/[_\w\d]/); if (stream.eat(":")) { stream.eatWhile(/[\w\d_\-]/); return "atom"; } var word = stream.current(); if (funcs.test(word)) return "builtin"; if (preds.test(word)) return "def"; if (keywords.test(word)) return "keyword"; return "variable"; } }; var pushContext = function(state, type, col) { return state.context = { prev: state.context, indent: state.indent, col: col, type: type }; }; var popContext = function(state) { state.indent = state.context.indent; return state.context = state.context.prev; }; var indentUnit = config.indentUnit; var curPunc; var funcs = wordRegexp(["abs", "acos", "allShortestPaths", "asin", "atan", "atan2", "avg", "ceil", "coalesce", "collect", "cos", "cot", "count", "degrees", "e", "endnode", "exp", "extract", "filter", "floor", "haversin", "head", "id", "keys", "labels", "last", "left", "length", "log", "log10", "lower", "ltrim", "max", "min", "node", "nodes", "percentileCont", "percentileDisc", "pi", "radians", "rand", "range", "reduce", "rel", "relationship", "relationships", "replace", "reverse", "right", "round", "rtrim", "shortestPath", "sign", "sin", "size", "split", "sqrt", "startnode", "stdev", "stdevp", "str", "substring", "sum", "tail", "tan", "timestamp", "toFloat", "toInt", "toString", "trim", "type", "upper"]); var preds = wordRegexp(["all", "and", "any", "contains", "exists", "has", "in", "none", "not", "or", "single", "xor"]); var keywords = wordRegexp(["as", "asc", "ascending", "assert", "by", "case", "commit", "constraint", "create", "csv", "cypher", "delete", "desc", "descending", "detach", "distinct", "drop", "else", "end", "ends", "explain", "false", "fieldterminator", "foreach", "from", "headers", "in", "index", "is", "join", "limit", "load", "match", "merge", "null", "on", "optional", "order", "periodic", "profile", "remove", "return", "scan", "set", "skip", "start", "starts", "then", "true", "union", "unique", "unwind", "using", "when", "where", "with"]); var operatorChars = /[*+\-<>=&|~%^]/; return { startState: function(/*base*/) { return { tokenize: tokenBase, context: null, indent: 0, col: 0 }; }, token: function(stream, state) { if (stream.sol()) { if (state.context && (state.context.align == null)) { state.context.align = false; } state.indent = stream.indentation(); } if (stream.eatSpace()) { return null; } var style = state.tokenize(stream, state); if (style !== "comment" && state.context && (state.context.align == null) && state.context.type !== "pattern") { state.context.align = true; } if (curPunc === "(") { pushContext(state, ")", stream.column()); } else if (curPunc === "[") { pushContext(state, "]", stream.column()); } else if (curPunc === "{") { pushContext(state, "}", stream.column()); } else if (/[\]\}\)]/.test(curPunc)) { while (state.context && state.context.type === "pattern") { popContext(state); } if (state.context && curPunc === state.context.type) { popContext(state); } } else if (curPunc === "." && state.context && state.context.type === "pattern") { popContext(state); } else if (/atom|string|variable/.test(style) && state.context) { if (/[\}\]]/.test(state.context.type)) { pushContext(state, "pattern", stream.column()); } else if (state.context.type === "pattern" && !state.context.align) { state.context.align = true; state.context.col = stream.column(); } } return style; }, indent: function(state, textAfter) { var firstChar = textAfter && textAfter.charAt(0); var context = state.context; if (/[\]\}]/.test(firstChar)) { while (context && context.type === "pattern") { context = context.prev; } } var closing = context && firstChar === context.type; if (!context) return 0; if (context.type === "keywords") return CodeMirror.commands.newlineAndIndent; if (context.align) return context.col + (closing ? 0 : 1); return context.indent + (closing ? 0 : indentUnit); } }; }); CodeMirror.modeExtensions["cypher"] = { autoFormatLineBreaks: function(text) { var i, lines, reProcessedPortion; var lines = text.split("\n"); var reProcessedPortion = /\s+\b(return|where|order by|match|with|skip|limit|create|delete|set)\b\s/g; for (var i = 0; i < lines.length; i++) lines[i] = lines[i].replace(reProcessedPortion, " \n$1 ").trim(); return lines.join("\n"); } }; CodeMirror.defineMIME("application/x-cypher-query", "cypher"); }); application/library/codemirror/mode/d/index.html000064400000014274147577724760016066 0ustar00 CodeMirror: D mode

D mode

Simple mode that handle D-Syntax (DLang Homepage).

MIME types defined: text/x-d .

application/library/codemirror/mode/d/d.js000064400000016616147577724760014654 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("d", function(config, parserConfig) { var indentUnit = config.indentUnit, statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, keywords = parserConfig.keywords || {}, builtin = parserConfig.builtin || {}, blockKeywords = parserConfig.blockKeywords || {}, atoms = parserConfig.atoms || {}, hooks = parserConfig.hooks || {}, multiLineStrings = parserConfig.multiLineStrings; var isOperatorChar = /[+\-*&%=<>!?|\/]/; var curPunc; function tokenBase(stream, state) { var ch = stream.next(); if (hooks[ch]) { var result = hooks[ch](stream, state); if (result !== false) return result; } if (ch == '"' || ch == "'" || ch == "`") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (/[\[\]{}\(\),;\:\.]/.test(ch)) { curPunc = ch; return null; } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } if (ch == "/") { if (stream.eat("+")) { state.tokenize = tokenComment; return tokenNestedComment(stream, state); } if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\$_\xa1-\uffff]/); var cur = stream.current(); if (keywords.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; return "keyword"; } if (builtin.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; return "builtin"; } if (atoms.propertyIsEnumerable(cur)) return "atom"; return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) {end = true; break;} escaped = !escaped && next == "\\"; } if (end || !(escaped || multiLineStrings)) state.tokenize = null; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = null; break; } maybeEnd = (ch == "*"); } return "comment"; } function tokenNestedComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = null; break; } maybeEnd = (ch == "+"); } return "comment"; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { var indent = state.indented; if (state.context && state.context.type == "statement") indent = state.context.indented; return state.context = new Context(indent, col, type, null, state.context); } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } // Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) return null; curPunc = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment" || style == "meta") return style; if (ctx.align == null) ctx.align = true; if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement") popContext(state); else if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "}") { while (ctx.type == "statement") ctx = popContext(state); if (ctx.type == "}") ctx = popContext(state); while (ctx.type == "statement") ctx = popContext(state); } else if (curPunc == ctx.type) popContext(state); else if (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement")) pushContext(state, stream.column(), "statement"); state.startOfLine = false; return style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; var closing = firstChar == ctx.type; if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); else if (ctx.align) return ctx.column + (closing ? 0 : 1); else return ctx.indented + (closing ? 0 : indentUnit); }, electricChars: "{}" }; }); function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var blockKeywords = "body catch class do else enum for foreach foreach_reverse if in interface mixin " + "out scope struct switch try union unittest version while with"; CodeMirror.defineMIME("text/x-d", { name: "d", keywords: words("abstract alias align asm assert auto break case cast cdouble cent cfloat const continue " + "debug default delegate delete deprecated export extern final finally function goto immutable " + "import inout invariant is lazy macro module new nothrow override package pragma private " + "protected public pure ref return shared short static super synchronized template this " + "throw typedef typeid typeof volatile __FILE__ __LINE__ __gshared __traits __vector __parameters " + blockKeywords), blockKeywords: words(blockKeywords), builtin: words("bool byte char creal dchar double float idouble ifloat int ireal long real short ubyte " + "ucent uint ulong ushort wchar wstring void size_t sizediff_t"), atoms: words("exit failure success true false null"), hooks: { "@": function(stream, _state) { stream.eatWhile(/[\w\$_]/); return "meta"; } } }); }); application/library/codemirror/mode/dart/index.html000064400000003133147577724760016565 0ustar00 CodeMirror: Dart mode

Dart mode

application/library/codemirror/mode/dart/dart.js000064400000011772147577724760016070 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../clike/clike")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../clike/clike"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var keywords = ("this super static final const abstract class extends external factory " + "implements get native operator set typedef with enum throw rethrow " + "assert break case continue default in return new deferred async await " + "try catch finally do else for if switch while import library export " + "part of show hide is as").split(" "); var blockKeywords = "try catch finally do else for if switch while".split(" "); var atoms = "true false null".split(" "); var builtins = "void bool num int double dynamic var String".split(" "); function set(words) { var obj = {}; for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } function pushInterpolationStack(state) { (state.interpolationStack || (state.interpolationStack = [])).push(state.tokenize); } function popInterpolationStack(state) { return (state.interpolationStack || (state.interpolationStack = [])).pop(); } function sizeInterpolationStack(state) { return state.interpolationStack ? state.interpolationStack.length : 0; } CodeMirror.defineMIME("application/dart", { name: "clike", keywords: set(keywords), blockKeywords: set(blockKeywords), builtin: set(builtins), atoms: set(atoms), hooks: { "@": function(stream) { stream.eatWhile(/[\w\$_\.]/); return "meta"; }, // custom string handling to deal with triple-quoted strings and string interpolation "'": function(stream, state) { return tokenString("'", stream, state, false); }, "\"": function(stream, state) { return tokenString("\"", stream, state, false); }, "r": function(stream, state) { var peek = stream.peek(); if (peek == "'" || peek == "\"") { return tokenString(stream.next(), stream, state, true); } return false; }, "}": function(_stream, state) { // "}" is end of interpolation, if interpolation stack is non-empty if (sizeInterpolationStack(state) > 0) { state.tokenize = popInterpolationStack(state); return null; } return false; }, "/": function(stream, state) { if (!stream.eat("*")) return false state.tokenize = tokenNestedComment(1) return state.tokenize(stream, state) } } }); function tokenString(quote, stream, state, raw) { var tripleQuoted = false; if (stream.eat(quote)) { if (stream.eat(quote)) tripleQuoted = true; else return "string"; //empty string } function tokenStringHelper(stream, state) { var escaped = false; while (!stream.eol()) { if (!raw && !escaped && stream.peek() == "$") { pushInterpolationStack(state); state.tokenize = tokenInterpolation; return "string"; } var next = stream.next(); if (next == quote && !escaped && (!tripleQuoted || stream.match(quote + quote))) { state.tokenize = null; break; } escaped = !raw && !escaped && next == "\\"; } return "string"; } state.tokenize = tokenStringHelper; return tokenStringHelper(stream, state); } function tokenInterpolation(stream, state) { stream.eat("$"); if (stream.eat("{")) { // let clike handle the content of ${...}, // we take over again when "}" appears (see hooks). state.tokenize = null; } else { state.tokenize = tokenInterpolationIdentifier; } return null; } function tokenInterpolationIdentifier(stream, state) { stream.eatWhile(/[\w_]/); state.tokenize = popInterpolationStack(state); return "variable"; } function tokenNestedComment(depth) { return function (stream, state) { var ch while (ch = stream.next()) { if (ch == "*" && stream.eat("/")) { if (depth == 1) { state.tokenize = null break } else { state.tokenize = tokenNestedComment(depth - 1) return state.tokenize(stream, state) } } else if (ch == "/" && stream.eat("*")) { state.tokenize = tokenNestedComment(depth + 1) return state.tokenize(stream, state) } } return "comment" } } CodeMirror.registerHelper("hintWords", "application/dart", keywords.concat(atoms).concat(builtins)); // This is needed to make loading through meta.js work. CodeMirror.defineMode("dart", function(conf) { return CodeMirror.getMode(conf, "application/dart"); }, "clike"); }); application/library/codemirror/mode/diff/index.html000064400000010471147577724760016546 0ustar00 CodeMirror: Diff mode

Diff mode

MIME types defined: text/x-diff.

application/library/codemirror/mode/diff/diff.js000064400000002162147577724760016015 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("diff", function() { var TOKEN_NAMES = { '+': 'positive', '-': 'negative', '@': 'meta' }; return { token: function(stream) { var tw_pos = stream.string.search(/[\t ]+?$/); if (!stream.sol() || tw_pos === 0) { stream.skipToEnd(); return ("error " + ( TOKEN_NAMES[stream.string.charAt(0)] || '')).replace(/ $/, ''); } var token_name = TOKEN_NAMES[stream.peek()] || stream.skipToEnd(); if (tw_pos === -1) { stream.skipToEnd(); } else { stream.pos = tw_pos; } return token_name; } }; }); CodeMirror.defineMIME("text/x-diff", "diff"); }); application/library/codemirror/mode/django/index.html000064400000004035147577724760017077 0ustar00 CodeMirror: Django template mode

Django template mode

Mode for HTML with embedded Django template markup.

MIME types defined: text/x-django

application/library/codemirror/mode/django/django.js000064400000027017147577724760016707 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../../addon/mode/overlay")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../../addon/mode/overlay"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("django:inner", function() { var keywords = ["block", "endblock", "for", "endfor", "true", "false", "filter", "endfilter", "loop", "none", "self", "super", "if", "elif", "endif", "as", "else", "import", "with", "endwith", "without", "context", "ifequal", "endifequal", "ifnotequal", "endifnotequal", "extends", "include", "load", "comment", "endcomment", "empty", "url", "static", "trans", "blocktrans", "endblocktrans", "now", "regroup", "lorem", "ifchanged", "endifchanged", "firstof", "debug", "cycle", "csrf_token", "autoescape", "endautoescape", "spaceless", "endspaceless", "ssi", "templatetag", "verbatim", "endverbatim", "widthratio"], filters = ["add", "addslashes", "capfirst", "center", "cut", "date", "default", "default_if_none", "dictsort", "dictsortreversed", "divisibleby", "escape", "escapejs", "filesizeformat", "first", "floatformat", "force_escape", "get_digit", "iriencode", "join", "last", "length", "length_is", "linebreaks", "linebreaksbr", "linenumbers", "ljust", "lower", "make_list", "phone2numeric", "pluralize", "pprint", "random", "removetags", "rjust", "safe", "safeseq", "slice", "slugify", "stringformat", "striptags", "time", "timesince", "timeuntil", "title", "truncatechars", "truncatechars_html", "truncatewords", "truncatewords_html", "unordered_list", "upper", "urlencode", "urlize", "urlizetrunc", "wordcount", "wordwrap", "yesno"], operators = ["==", "!=", "<", ">", "<=", ">="], wordOperators = ["in", "not", "or", "and"]; keywords = new RegExp("^\\b(" + keywords.join("|") + ")\\b"); filters = new RegExp("^\\b(" + filters.join("|") + ")\\b"); operators = new RegExp("^\\b(" + operators.join("|") + ")\\b"); wordOperators = new RegExp("^\\b(" + wordOperators.join("|") + ")\\b"); // We have to return "null" instead of null, in order to avoid string // styling as the default, when using Django templates inside HTML // element attributes function tokenBase (stream, state) { // Attempt to identify a variable, template or comment tag respectively if (stream.match("{{")) { state.tokenize = inVariable; return "tag"; } else if (stream.match("{%")) { state.tokenize = inTag; return "tag"; } else if (stream.match("{#")) { state.tokenize = inComment; return "comment"; } // Ignore completely any stream series that do not match the // Django template opening tags. while (stream.next() != null && !stream.match(/\{[{%#]/, false)) {} return null; } // A string can be included in either single or double quotes (this is // the delimiter). Mark everything as a string until the start delimiter // occurs again. function inString (delimiter, previousTokenizer) { return function (stream, state) { if (!state.escapeNext && stream.eat(delimiter)) { state.tokenize = previousTokenizer; } else { if (state.escapeNext) { state.escapeNext = false; } var ch = stream.next(); // Take into account the backslash for escaping characters, such as // the string delimiter. if (ch == "\\") { state.escapeNext = true; } } return "string"; }; } // Apply Django template variable syntax highlighting function inVariable (stream, state) { // Attempt to match a dot that precedes a property if (state.waitDot) { state.waitDot = false; if (stream.peek() != ".") { return "null"; } // Dot followed by a non-word character should be considered an error. if (stream.match(/\.\W+/)) { return "error"; } else if (stream.eat(".")) { state.waitProperty = true; return "null"; } else { throw Error ("Unexpected error while waiting for property."); } } // Attempt to match a pipe that precedes a filter if (state.waitPipe) { state.waitPipe = false; if (stream.peek() != "|") { return "null"; } // Pipe followed by a non-word character should be considered an error. if (stream.match(/\.\W+/)) { return "error"; } else if (stream.eat("|")) { state.waitFilter = true; return "null"; } else { throw Error ("Unexpected error while waiting for filter."); } } // Highlight properties if (state.waitProperty) { state.waitProperty = false; if (stream.match(/\b(\w+)\b/)) { state.waitDot = true; // A property can be followed by another property state.waitPipe = true; // A property can be followed by a filter return "property"; } } // Highlight filters if (state.waitFilter) { state.waitFilter = false; if (stream.match(filters)) { return "variable-2"; } } // Ignore all white spaces if (stream.eatSpace()) { state.waitProperty = false; return "null"; } // Identify numbers if (stream.match(/\b\d+(\.\d+)?\b/)) { return "number"; } // Identify strings if (stream.match("'")) { state.tokenize = inString("'", state.tokenize); return "string"; } else if (stream.match('"')) { state.tokenize = inString('"', state.tokenize); return "string"; } // Attempt to find the variable if (stream.match(/\b(\w+)\b/) && !state.foundVariable) { state.waitDot = true; state.waitPipe = true; // A property can be followed by a filter return "variable"; } // If found closing tag reset if (stream.match("}}")) { state.waitProperty = null; state.waitFilter = null; state.waitDot = null; state.waitPipe = null; state.tokenize = tokenBase; return "tag"; } // If nothing was found, advance to the next character stream.next(); return "null"; } function inTag (stream, state) { // Attempt to match a dot that precedes a property if (state.waitDot) { state.waitDot = false; if (stream.peek() != ".") { return "null"; } // Dot followed by a non-word character should be considered an error. if (stream.match(/\.\W+/)) { return "error"; } else if (stream.eat(".")) { state.waitProperty = true; return "null"; } else { throw Error ("Unexpected error while waiting for property."); } } // Attempt to match a pipe that precedes a filter if (state.waitPipe) { state.waitPipe = false; if (stream.peek() != "|") { return "null"; } // Pipe followed by a non-word character should be considered an error. if (stream.match(/\.\W+/)) { return "error"; } else if (stream.eat("|")) { state.waitFilter = true; return "null"; } else { throw Error ("Unexpected error while waiting for filter."); } } // Highlight properties if (state.waitProperty) { state.waitProperty = false; if (stream.match(/\b(\w+)\b/)) { state.waitDot = true; // A property can be followed by another property state.waitPipe = true; // A property can be followed by a filter return "property"; } } // Highlight filters if (state.waitFilter) { state.waitFilter = false; if (stream.match(filters)) { return "variable-2"; } } // Ignore all white spaces if (stream.eatSpace()) { state.waitProperty = false; return "null"; } // Identify numbers if (stream.match(/\b\d+(\.\d+)?\b/)) { return "number"; } // Identify strings if (stream.match("'")) { state.tokenize = inString("'", state.tokenize); return "string"; } else if (stream.match('"')) { state.tokenize = inString('"', state.tokenize); return "string"; } // Attempt to match an operator if (stream.match(operators)) { return "operator"; } // Attempt to match a word operator if (stream.match(wordOperators)) { return "keyword"; } // Attempt to match a keyword var keywordMatch = stream.match(keywords); if (keywordMatch) { if (keywordMatch[0] == "comment") { state.blockCommentTag = true; } return "keyword"; } // Attempt to match a variable if (stream.match(/\b(\w+)\b/)) { state.waitDot = true; state.waitPipe = true; // A property can be followed by a filter return "variable"; } // If found closing tag reset if (stream.match("%}")) { state.waitProperty = null; state.waitFilter = null; state.waitDot = null; state.waitPipe = null; // If the tag that closes is a block comment tag, we want to mark the // following code as comment, until the tag closes. if (state.blockCommentTag) { state.blockCommentTag = false; // Release the "lock" state.tokenize = inBlockComment; } else { state.tokenize = tokenBase; } return "tag"; } // If nothing was found, advance to the next character stream.next(); return "null"; } // Mark everything as comment inside the tag and the tag itself. function inComment (stream, state) { if (stream.match(/^.*?#\}/)) state.tokenize = tokenBase else stream.skipToEnd() return "comment"; } // Mark everything as a comment until the `blockcomment` tag closes. function inBlockComment (stream, state) { if (stream.match(/\{%\s*endcomment\s*%\}/, false)) { state.tokenize = inTag; stream.match("{%"); return "tag"; } else { stream.next(); return "comment"; } } return { startState: function () { return {tokenize: tokenBase}; }, token: function (stream, state) { return state.tokenize(stream, state); }, blockCommentStart: "{% comment %}", blockCommentEnd: "{% endcomment %}" }; }); CodeMirror.defineMode("django", function(config) { var htmlBase = CodeMirror.getMode(config, "text/html"); var djangoInner = CodeMirror.getMode(config, "django:inner"); return CodeMirror.overlayMode(htmlBase, djangoInner); }); CodeMirror.defineMIME("text/x-django", "django"); }); application/library/codemirror/mode/dockerfile/dockerfile.js000064400000004255147577724760020420 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../../addon/mode/simple"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; // Collect all Dockerfile directives var instructions = ["from", "maintainer", "run", "cmd", "expose", "env", "add", "copy", "entrypoint", "volume", "user", "workdir", "onbuild"], instructionRegex = "(" + instructions.join('|') + ")", instructionOnlyLine = new RegExp(instructionRegex + "\\s*$", "i"), instructionWithArguments = new RegExp(instructionRegex + "(\\s+)", "i"); CodeMirror.defineSimpleMode("dockerfile", { start: [ // Block comment: This is a line starting with a comment { regex: /#.*$/, token: "comment" }, // Highlight an instruction without any arguments (for convenience) { regex: instructionOnlyLine, token: "variable-2" }, // Highlight an instruction followed by arguments { regex: instructionWithArguments, token: ["variable-2", null], next: "arguments" }, { regex: /./, token: null } ], arguments: [ { // Line comment without instruction arguments is an error regex: /#.*$/, token: "error", next: "start" }, { regex: /[^#]+\\$/, token: null }, { // Match everything except for the inline comment regex: /[^#]+/, token: null, next: "start" }, { regex: /$/, token: null, next: "start" }, // Fail safe return to start { token: null, next: "start" } ], meta: { lineComment: "#" } }); CodeMirror.defineMIME("text/x-dockerfile", "dockerfile"); }); application/library/codemirror/mode/dockerfile/index.html000064400000004333147577724760017745 0ustar00 CodeMirror: Dockerfile mode

Dockerfile mode

Dockerfile syntax highlighting for CodeMirror. Depends on the simplemode addon.

MIME types defined: text/x-dockerfile

application/library/codemirror/mode/dtd/index.html000064400000006411147577724760016410 0ustar00 CodeMirror: DTD mode

DTD mode

MIME types defined: application/xml-dtd.

application/library/codemirror/mode/dtd/dtd.js000064400000011316147577724760015524 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /* DTD mode Ported to CodeMirror by Peter Kroon Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues GitHub: @peterkroon */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("dtd", function(config) { var indentUnit = config.indentUnit, type; function ret(style, tp) {type = tp; return style;} function tokenBase(stream, state) { var ch = stream.next(); if (ch == "<" && stream.eat("!") ) { if (stream.eatWhile(/[\-]/)) { state.tokenize = tokenSGMLComment; return tokenSGMLComment(stream, state); } else if (stream.eatWhile(/[\w]/)) return ret("keyword", "doindent"); } else if (ch == "<" && stream.eat("?")) { //xml declaration state.tokenize = inBlock("meta", "?>"); return ret("meta", ch); } else if (ch == "#" && stream.eatWhile(/[\w]/)) return ret("atom", "tag"); else if (ch == "|") return ret("keyword", "seperator"); else if (ch.match(/[\(\)\[\]\-\.,\+\?>]/)) return ret(null, ch);//if(ch === ">") return ret(null, "endtag"); else else if (ch.match(/[\[\]]/)) return ret("rule", ch); else if (ch == "\"" || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } else if (stream.eatWhile(/[a-zA-Z\?\+\d]/)) { var sc = stream.current(); if( sc.substr(sc.length-1,sc.length).match(/\?|\+/) !== null )stream.backUp(1); return ret("tag", "tag"); } else if (ch == "%" || ch == "*" ) return ret("number", "number"); else { stream.eatWhile(/[\w\\\-_%.{,]/); return ret(null, null); } } function tokenSGMLComment(stream, state) { var dashes = 0, ch; while ((ch = stream.next()) != null) { if (dashes >= 2 && ch == ">") { state.tokenize = tokenBase; break; } dashes = (ch == "-") ? dashes + 1 : 0; } return ret("comment", "comment"); } function tokenString(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) { state.tokenize = tokenBase; break; } escaped = !escaped && ch == "\\"; } return ret("string", "tag"); }; } function inBlock(style, terminator) { return function(stream, state) { while (!stream.eol()) { if (stream.match(terminator)) { state.tokenize = tokenBase; break; } stream.next(); } return style; }; } return { startState: function(base) { return {tokenize: tokenBase, baseIndent: base || 0, stack: []}; }, token: function(stream, state) { if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); var context = state.stack[state.stack.length-1]; if (stream.current() == "[" || type === "doindent" || type == "[") state.stack.push("rule"); else if (type === "endtag") state.stack[state.stack.length-1] = "endtag"; else if (stream.current() == "]" || type == "]" || (type == ">" && context == "rule")) state.stack.pop(); else if (type == "[") state.stack.push("["); return style; }, indent: function(state, textAfter) { var n = state.stack.length; if( textAfter.match(/\]\s+|\]/) )n=n-1; else if(textAfter.substr(textAfter.length-1, textAfter.length) === ">"){ if(textAfter.substr(0,1) === "<") {} else if( type == "doindent" && textAfter.length > 1 ) {} else if( type == "doindent")n--; else if( type == ">" && textAfter.length > 1) {} else if( type == "tag" && textAfter !== ">") {} else if( type == "tag" && state.stack[state.stack.length-1] == "rule")n--; else if( type == "tag")n++; else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule" && type === ">")n--; else if( textAfter === ">" && state.stack[state.stack.length-1] == "rule") {} else if( textAfter.substr(0,1) !== "<" && textAfter.substr(0,1) === ">" )n=n-1; else if( textAfter === ">") {} else n=n-1; //over rule them all if(type == null || type == "]")n--; } return state.baseIndent + n * indentUnit; }, electricChars: "]>" }; }); CodeMirror.defineMIME("application/xml-dtd", "dtd"); }); application/library/codemirror/mode/dylan/index.html000064400000031350147577724760016744 0ustar00 CodeMirror: Dylan mode

Dylan mode

MIME types defined: text/x-dylan.

application/library/codemirror/mode/dylan/dylan.js000064400000023256147577724760016422 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("dylan", function(_config) { // Words var words = { // Words that introduce unnamed definitions like "define interface" unnamedDefinition: ["interface"], // Words that introduce simple named definitions like "define library" namedDefinition: ["module", "library", "macro", "C-struct", "C-union", "C-function", "C-callable-wrapper" ], // Words that introduce type definitions like "define class". // These are also parameterized like "define method" and are // appended to otherParameterizedDefinitionWords typeParameterizedDefinition: ["class", "C-subtype", "C-mapped-subtype"], // Words that introduce trickier definitions like "define method". // These require special definitions to be added to startExpressions otherParameterizedDefinition: ["method", "function", "C-variable", "C-address" ], // Words that introduce module constant definitions. // These must also be simple definitions and are // appended to otherSimpleDefinitionWords constantSimpleDefinition: ["constant"], // Words that introduce module variable definitions. // These must also be simple definitions and are // appended to otherSimpleDefinitionWords variableSimpleDefinition: ["variable"], // Other words that introduce simple definitions // (without implicit bodies). otherSimpleDefinition: ["generic", "domain", "C-pointer-type", "table" ], // Words that begin statements with implicit bodies. statement: ["if", "block", "begin", "method", "case", "for", "select", "when", "unless", "until", "while", "iterate", "profiling", "dynamic-bind" ], // Patterns that act as separators in compound statements. // This may include any general pattern that must be indented // specially. separator: ["finally", "exception", "cleanup", "else", "elseif", "afterwards" ], // Keywords that do not require special indentation handling, // but which should be highlighted other: ["above", "below", "by", "from", "handler", "in", "instance", "let", "local", "otherwise", "slot", "subclass", "then", "to", "keyed-by", "virtual" ], // Condition signaling function calls signalingCalls: ["signal", "error", "cerror", "break", "check-type", "abort" ] }; words["otherDefinition"] = words["unnamedDefinition"] .concat(words["namedDefinition"]) .concat(words["otherParameterizedDefinition"]); words["definition"] = words["typeParameterizedDefinition"] .concat(words["otherDefinition"]); words["parameterizedDefinition"] = words["typeParameterizedDefinition"] .concat(words["otherParameterizedDefinition"]); words["simpleDefinition"] = words["constantSimpleDefinition"] .concat(words["variableSimpleDefinition"]) .concat(words["otherSimpleDefinition"]); words["keyword"] = words["statement"] .concat(words["separator"]) .concat(words["other"]); // Patterns var symbolPattern = "[-_a-zA-Z?!*@<>$%]+"; var symbol = new RegExp("^" + symbolPattern); var patterns = { // Symbols with special syntax symbolKeyword: symbolPattern + ":", symbolClass: "<" + symbolPattern + ">", symbolGlobal: "\\*" + symbolPattern + "\\*", symbolConstant: "\\$" + symbolPattern }; var patternStyles = { symbolKeyword: "atom", symbolClass: "tag", symbolGlobal: "variable-2", symbolConstant: "variable-3" }; // Compile all patterns to regular expressions for (var patternName in patterns) if (patterns.hasOwnProperty(patternName)) patterns[patternName] = new RegExp("^" + patterns[patternName]); // Names beginning "with-" and "without-" are commonly // used as statement macro patterns["keyword"] = [/^with(?:out)?-[-_a-zA-Z?!*@<>$%]+/]; var styles = {}; styles["keyword"] = "keyword"; styles["definition"] = "def"; styles["simpleDefinition"] = "def"; styles["signalingCalls"] = "builtin"; // protected words lookup table var wordLookup = {}; var styleLookup = {}; [ "keyword", "definition", "simpleDefinition", "signalingCalls" ].forEach(function(type) { words[type].forEach(function(word) { wordLookup[word] = type; styleLookup[word] = styles[type]; }); }); function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } function tokenBase(stream, state) { // String var ch = stream.peek(); if (ch == "'" || ch == '"') { stream.next(); return chain(stream, state, tokenString(ch, "string")); } // Comment else if (ch == "/") { stream.next(); if (stream.eat("*")) { return chain(stream, state, tokenComment); } else if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } stream.backUp(1); } // Decimal else if (/[+\-\d\.]/.test(ch)) { if (stream.match(/^[+-]?[0-9]*\.[0-9]*([esdx][+-]?[0-9]+)?/i) || stream.match(/^[+-]?[0-9]+([esdx][+-]?[0-9]+)/i) || stream.match(/^[+-]?\d+/)) { return "number"; } } // Hash else if (ch == "#") { stream.next(); // Symbol with string syntax ch = stream.peek(); if (ch == '"') { stream.next(); return chain(stream, state, tokenString('"', "string")); } // Binary number else if (ch == "b") { stream.next(); stream.eatWhile(/[01]/); return "number"; } // Hex number else if (ch == "x") { stream.next(); stream.eatWhile(/[\da-f]/i); return "number"; } // Octal number else if (ch == "o") { stream.next(); stream.eatWhile(/[0-7]/); return "number"; } // Token concatenation in macros else if (ch == '#') { stream.next(); return "punctuation"; } // Sequence literals else if ((ch == '[') || (ch == '(')) { stream.next(); return "bracket"; // Hash symbol } else if (stream.match(/f|t|all-keys|include|key|next|rest/i)) { return "atom"; } else { stream.eatWhile(/[-a-zA-Z]/); return "error"; } } else if (ch == "~") { stream.next(); ch = stream.peek(); if (ch == "=") { stream.next(); ch = stream.peek(); if (ch == "=") { stream.next(); return "operator"; } return "operator"; } return "operator"; } else if (ch == ":") { stream.next(); ch = stream.peek(); if (ch == "=") { stream.next(); return "operator"; } else if (ch == ":") { stream.next(); return "punctuation"; } } else if ("[](){}".indexOf(ch) != -1) { stream.next(); return "bracket"; } else if (".,".indexOf(ch) != -1) { stream.next(); return "punctuation"; } else if (stream.match("end")) { return "keyword"; } for (var name in patterns) { if (patterns.hasOwnProperty(name)) { var pattern = patterns[name]; if ((pattern instanceof Array && pattern.some(function(p) { return stream.match(p); })) || stream.match(pattern)) return patternStyles[name]; } } if (/[+\-*\/^=<>&|]/.test(ch)) { stream.next(); return "operator"; } if (stream.match("define")) { return "def"; } else { stream.eatWhile(/[\w\-]/); // Keyword if (wordLookup[stream.current()]) { return styleLookup[stream.current()]; } else if (stream.current().match(symbol)) { return "variable"; } else { stream.next(); return "variable-2"; } } } function tokenComment(stream, state) { var maybeEnd = false, maybeNested = false, nestedCount = 0, ch; while ((ch = stream.next())) { if (ch == "/" && maybeEnd) { if (nestedCount > 0) { nestedCount--; } else { state.tokenize = tokenBase; break; } } else if (ch == "*" && maybeNested) { nestedCount++; } maybeEnd = (ch == "*"); maybeNested = (ch == "/"); } return "comment"; } function tokenString(quote, style) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) { end = true; break; } escaped = !escaped && next == "\\"; } if (end || !escaped) { state.tokenize = tokenBase; } return style; }; } // Interface return { startState: function() { return { tokenize: tokenBase, currentIndent: 0 }; }, token: function(stream, state) { if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); return style; }, blockCommentStart: "/*", blockCommentEnd: "*/" }; }); CodeMirror.defineMIME("text/x-dylan", "dylan"); }); application/library/codemirror/mode/dylan/test.js000064400000005262147577724760016267 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "dylan"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT('comments', '[comment // This is a line comment]', '[comment /* This is a block comment */]', '[comment /* This is a multi]', '[comment line comment]', '[comment */]', '[comment /* And this is a /*]', '[comment /* nested */ comment */]'); MT('unary_operators', '[operator -][variable a]', '[operator -] [variable a]', '[operator ~][variable a]', '[operator ~] [variable a]'); MT('binary_operators', '[variable a] [operator +] [variable b]', '[variable a] [operator -] [variable b]', '[variable a] [operator *] [variable b]', '[variable a] [operator /] [variable b]', '[variable a] [operator ^] [variable b]', '[variable a] [operator =] [variable b]', '[variable a] [operator ==] [variable b]', '[variable a] [operator ~=] [variable b]', '[variable a] [operator ~==] [variable b]', '[variable a] [operator <] [variable b]', '[variable a] [operator <=] [variable b]', '[variable a] [operator >] [variable b]', '[variable a] [operator >=] [variable b]', '[variable a] [operator &] [variable b]', '[variable a] [operator |] [variable b]', '[variable a] [operator :=] [variable b]'); MT('integers', '[number 1]', '[number 123]', '[number -123]', '[number +456]', '[number #b010]', '[number #o073]', '[number #xabcDEF123]'); MT('floats', '[number .3]', '[number -1.]', '[number -2.335]', '[number +3.78d1]', '[number 3.78s-1]', '[number -3.32e+5]'); MT('characters_and_strings', "[string 'a']", "[string '\\\\'']", '[string ""]', '[string "a"]', '[string "abc def"]', '[string "More escaped characters: \\\\\\\\ \\\\a \\\\b \\\\e \\\\f \\\\n \\\\r \\\\t \\\\0 ..."]'); MT('brackets', '[bracket #[[]]]', '[bracket #()]', '[bracket #(][number 1][bracket )]', '[bracket [[][number 1][punctuation ,] [number 3][bracket ]]]', '[bracket ()]', '[bracket {}]', '[keyword if] [bracket (][variable foo][bracket )]', '[bracket (][number 1][bracket )]', '[bracket [[][number 1][bracket ]]]'); MT('hash_words', '[punctuation ##]', '[atom #f]', '[atom #F]', '[atom #t]', '[atom #T]', '[atom #all-keys]', '[atom #include]', '[atom #key]', '[atom #next]', '[atom #rest]', '[string #"foo"]', '[error #invalid]'); })(); application/library/codemirror/mode/ebnf/ebnf.js000064400000013705147577724760016026 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("ebnf", function (config) { var commentType = {slash: 0, parenthesis: 1}; var stateType = {comment: 0, _string: 1, characterClass: 2}; var bracesMode = null; if (config.bracesMode) bracesMode = CodeMirror.getMode(config, config.bracesMode); return { startState: function () { return { stringType: null, commentType: null, braced: 0, lhs: true, localState: null, stack: [], inDefinition: false }; }, token: function (stream, state) { if (!stream) return; //check for state changes if (state.stack.length === 0) { //strings if ((stream.peek() == '"') || (stream.peek() == "'")) { state.stringType = stream.peek(); stream.next(); // Skip quote state.stack.unshift(stateType._string); } else if (stream.match(/^\/\*/)) { //comments starting with /* state.stack.unshift(stateType.comment); state.commentType = commentType.slash; } else if (stream.match(/^\(\*/)) { //comments starting with (* state.stack.unshift(stateType.comment); state.commentType = commentType.parenthesis; } } //return state //stack has switch (state.stack[0]) { case stateType._string: while (state.stack[0] === stateType._string && !stream.eol()) { if (stream.peek() === state.stringType) { stream.next(); // Skip quote state.stack.shift(); // Clear flag } else if (stream.peek() === "\\") { stream.next(); stream.next(); } else { stream.match(/^.[^\\\"\']*/); } } return state.lhs ? "property string" : "string"; // Token style case stateType.comment: while (state.stack[0] === stateType.comment && !stream.eol()) { if (state.commentType === commentType.slash && stream.match(/\*\//)) { state.stack.shift(); // Clear flag state.commentType = null; } else if (state.commentType === commentType.parenthesis && stream.match(/\*\)/)) { state.stack.shift(); // Clear flag state.commentType = null; } else { stream.match(/^.[^\*]*/); } } return "comment"; case stateType.characterClass: while (state.stack[0] === stateType.characterClass && !stream.eol()) { if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) { state.stack.shift(); } } return "operator"; } var peek = stream.peek(); if (bracesMode !== null && (state.braced || peek === "{")) { if (state.localState === null) state.localState = CodeMirror.startState(bracesMode); var token = bracesMode.token(stream, state.localState), text = stream.current(); if (!token) { for (var i = 0; i < text.length; i++) { if (text[i] === "{") { if (state.braced === 0) { token = "matchingbracket"; } state.braced++; } else if (text[i] === "}") { state.braced--; if (state.braced === 0) { token = "matchingbracket"; } } } } return token; } //no stack switch (peek) { case "[": stream.next(); state.stack.unshift(stateType.characterClass); return "bracket"; case ":": case "|": case ";": stream.next(); return "operator"; case "%": if (stream.match("%%")) { return "header"; } else if (stream.match(/[%][A-Za-z]+/)) { return "keyword"; } else if (stream.match(/[%][}]/)) { return "matchingbracket"; } break; case "/": if (stream.match(/[\/][A-Za-z]+/)) { return "keyword"; } case "\\": if (stream.match(/[\][a-z]+/)) { return "string-2"; } case ".": if (stream.match(".")) { return "atom"; } case "*": case "-": case "+": case "^": if (stream.match(peek)) { return "atom"; } case "$": if (stream.match("$$")) { return "builtin"; } else if (stream.match(/[$][0-9]+/)) { return "variable-3"; } case "<": if (stream.match(/<<[a-zA-Z_]+>>/)) { return "builtin"; } } if (stream.match(/^\/\//)) { stream.skipToEnd(); return "comment"; } else if (stream.match(/return/)) { return "operator"; } else if (stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/)) { if (stream.match(/(?=[\(.])/)) { return "variable"; } else if (stream.match(/(?=[\s\n]*[:=])/)) { return "def"; } return "variable-2"; } else if (["[", "]", "(", ")"].indexOf(stream.peek()) != -1) { stream.next(); return "bracket"; } else if (!stream.eatSpace()) { stream.next(); } return null; } }; }); CodeMirror.defineMIME("text/x-ebnf", "ebnf"); }); application/library/codemirror/mode/ebnf/index.html000064400000004622147577724760016551 0ustar00 CodeMirror: EBNF Mode

EBNF Mode (bracesMode setting = "javascript")

The EBNF Mode

Created by Robert Plummer

application/library/codemirror/mode/ecl/ecl.js000064400000021213147577724760015501 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("ecl", function(config) { function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } function metaHook(stream, state) { if (!state.startOfLine) return false; stream.skipToEnd(); return "meta"; } var indentUnit = config.indentUnit; var keyword = words("abs acos allnodes ascii asin asstring atan atan2 ave case choose choosen choosesets clustersize combine correlation cos cosh count covariance cron dataset dedup define denormalize distribute distributed distribution ebcdic enth error evaluate event eventextra eventname exists exp failcode failmessage fetch fromunicode getisvalid global graph group hash hash32 hash64 hashcrc hashmd5 having if index intformat isvalid iterate join keyunicode length library limit ln local log loop map matched matchlength matchposition matchtext matchunicode max merge mergejoin min nolocal nonempty normalize parse pipe power preload process project pull random range rank ranked realformat recordof regexfind regexreplace regroup rejected rollup round roundup row rowdiff sample set sin sinh sizeof soapcall sort sorted sqrt stepped stored sum table tan tanh thisnode topn tounicode transfer trim truncate typeof ungroup unicodeorder variance which workunit xmldecode xmlencode xmltext xmlunicode"); var variable = words("apply assert build buildindex evaluate fail keydiff keypatch loadxml nothor notify output parallel sequential soapcall wait"); var variable_2 = words("__compressed__ all and any as atmost before beginc++ best between case const counter csv descend encrypt end endc++ endmacro except exclusive expire export extend false few first flat from full function group header heading hole ifblock import in interface joined keep keyed last left limit load local locale lookup macro many maxcount maxlength min skew module named nocase noroot noscan nosort not of only opt or outer overwrite packed partition penalty physicallength pipe quote record relationship repeat return right scan self separator service shared skew skip sql store terminator thor threshold token transform trim true type unicodeorder unsorted validate virtual whole wild within xml xpath"); var variable_3 = words("ascii big_endian boolean data decimal ebcdic integer pattern qstring real record rule set of string token udecimal unicode unsigned varstring varunicode"); var builtin = words("checkpoint deprecated failcode failmessage failure global independent onwarning persist priority recovery stored success wait when"); var blockKeywords = words("catch class do else finally for if switch try while"); var atoms = words("true false null"); var hooks = {"#": metaHook}; var isOperatorChar = /[+\-*&%=<>!?|\/]/; var curPunc; function tokenBase(stream, state) { var ch = stream.next(); if (hooks[ch]) { var result = hooks[ch](stream, state); if (result !== false) return result; } if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (/[\[\]{}\(\),;\:\.]/.test(ch)) { curPunc = ch; return null; } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } if (ch == "/") { if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\$_]/); var cur = stream.current().toLowerCase(); if (keyword.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; return "keyword"; } else if (variable.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; return "variable"; } else if (variable_2.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; return "variable-2"; } else if (variable_3.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; return "variable-3"; } else if (builtin.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; return "builtin"; } else { //Data types are of from KEYWORD## var i = cur.length - 1; while(i >= 0 && (!isNaN(cur[i]) || cur[i] == '_')) --i; if (i > 0) { var cur2 = cur.substr(0, i + 1); if (variable_3.propertyIsEnumerable(cur2)) { if (blockKeywords.propertyIsEnumerable(cur2)) curPunc = "newstatement"; return "variable-3"; } } } if (atoms.propertyIsEnumerable(cur)) return "atom"; return null; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) {end = true; break;} escaped = !escaped && next == "\\"; } if (end || !escaped) state.tokenize = tokenBase; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { return state.context = new Context(state.indented, col, type, null, state.context); } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } // Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) return null; curPunc = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment" || style == "meta") return style; if (ctx.align == null) ctx.align = true; if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state); else if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "}") { while (ctx.type == "statement") ctx = popContext(state); if (ctx.type == "}") ctx = popContext(state); while (ctx.type == "statement") ctx = popContext(state); } else if (curPunc == ctx.type) popContext(state); else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement")) pushContext(state, stream.column(), "statement"); state.startOfLine = false; return style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase && state.tokenize != null) return 0; var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; var closing = firstChar == ctx.type; if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : indentUnit); else if (ctx.align) return ctx.column + (closing ? 0 : 1); else return ctx.indented + (closing ? 0 : indentUnit); }, electricChars: "{}" }; }); CodeMirror.defineMIME("text/x-ecl", "ecl"); }); application/library/codemirror/mode/ecl/index.html000064400000002601147577724760016375 0ustar00 CodeMirror: ECL mode

ECL mode

Based on CodeMirror's clike mode. For more information see HPCC Systems web site.

MIME types defined: text/x-ecl.

application/library/codemirror/mode/eiffel/index.html000064400000031616147577724760017074 0ustar00 CodeMirror: Eiffel mode

Eiffel mode

MIME types defined: text/x-eiffel.

Created by YNH.

application/library/codemirror/mode/eiffel/eiffel.js000064400000007240147577724760016663 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("eiffel", function() { function wordObj(words) { var o = {}; for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true; return o; } var keywords = wordObj([ 'note', 'across', 'when', 'variant', 'until', 'unique', 'undefine', 'then', 'strip', 'select', 'retry', 'rescue', 'require', 'rename', 'reference', 'redefine', 'prefix', 'once', 'old', 'obsolete', 'loop', 'local', 'like', 'is', 'inspect', 'infix', 'include', 'if', 'frozen', 'from', 'external', 'export', 'ensure', 'end', 'elseif', 'else', 'do', 'creation', 'create', 'check', 'alias', 'agent', 'separate', 'invariant', 'inherit', 'indexing', 'feature', 'expanded', 'deferred', 'class', 'Void', 'True', 'Result', 'Precursor', 'False', 'Current', 'create', 'attached', 'detachable', 'as', 'and', 'implies', 'not', 'or' ]); var operators = wordObj([":=", "and then","and", "or","<<",">>"]); function chain(newtok, stream, state) { state.tokenize.push(newtok); return newtok(stream, state); } function tokenBase(stream, state) { if (stream.eatSpace()) return null; var ch = stream.next(); if (ch == '"'||ch == "'") { return chain(readQuoted(ch, "string"), stream, state); } else if (ch == "-"&&stream.eat("-")) { stream.skipToEnd(); return "comment"; } else if (ch == ":"&&stream.eat("=")) { return "operator"; } else if (/[0-9]/.test(ch)) { stream.eatWhile(/[xXbBCc0-9\.]/); stream.eat(/[\?\!]/); return "ident"; } else if (/[a-zA-Z_0-9]/.test(ch)) { stream.eatWhile(/[a-zA-Z_0-9]/); stream.eat(/[\?\!]/); return "ident"; } else if (/[=+\-\/*^%<>~]/.test(ch)) { stream.eatWhile(/[=+\-\/*^%<>~]/); return "operator"; } else { return null; } } function readQuoted(quote, style, unescaped) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && (unescaped || !escaped)) { state.tokenize.pop(); break; } escaped = !escaped && ch == "%"; } return style; }; } return { startState: function() { return {tokenize: [tokenBase]}; }, token: function(stream, state) { var style = state.tokenize[state.tokenize.length-1](stream, state); if (style == "ident") { var word = stream.current(); style = keywords.propertyIsEnumerable(stream.current()) ? "keyword" : operators.propertyIsEnumerable(stream.current()) ? "operator" : /^[A-Z][A-Z_0-9]*$/g.test(word) ? "tag" : /^0[bB][0-1]+$/g.test(word) ? "number" : /^0[cC][0-7]+$/g.test(word) ? "number" : /^0[xX][a-fA-F0-9]+$/g.test(word) ? "number" : /^([0-9]+\.[0-9]*)|([0-9]*\.[0-9]+)$/g.test(word) ? "number" : /^[0-9]+$/g.test(word) ? "number" : "variable"; } return style; }, lineComment: "--" }; }); CodeMirror.defineMIME("text/x-eiffel", "eiffel"); }); application/library/codemirror/mode/elm/index.html000064400000003150147577724760016407 0ustar00 CodeMirror: Elm mode

Elm mode

MIME types defined: text/x-elm.

application/library/codemirror/mode/elm/elm.js000064400000012660147577724760015533 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("elm", function() { function switchState(source, setState, f) { setState(f); return f(source, setState); } // These should all be Unicode extended, as per the Haskell 2010 report var smallRE = /[a-z_]/; var largeRE = /[A-Z]/; var digitRE = /[0-9]/; var hexitRE = /[0-9A-Fa-f]/; var octitRE = /[0-7]/; var idRE = /[a-z_A-Z0-9\']/; var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:\u03BB\u2192]/; var specialRE = /[(),;[\]`{}]/; var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer function normal() { return function (source, setState) { if (source.eatWhile(whiteCharRE)) { return null; } var ch = source.next(); if (specialRE.test(ch)) { if (ch == '{' && source.eat('-')) { var t = "comment"; if (source.eat('#')) t = "meta"; return switchState(source, setState, ncomment(t, 1)); } return null; } if (ch == '\'') { if (source.eat('\\')) source.next(); // should handle other escapes here else source.next(); if (source.eat('\'')) return "string"; return "error"; } if (ch == '"') { return switchState(source, setState, stringLiteral); } if (largeRE.test(ch)) { source.eatWhile(idRE); if (source.eat('.')) return "qualifier"; return "variable-2"; } if (smallRE.test(ch)) { var isDef = source.pos === 1; source.eatWhile(idRE); return isDef ? "variable-3" : "variable"; } if (digitRE.test(ch)) { if (ch == '0') { if (source.eat(/[xX]/)) { source.eatWhile(hexitRE); // should require at least 1 return "integer"; } if (source.eat(/[oO]/)) { source.eatWhile(octitRE); // should require at least 1 return "number"; } } source.eatWhile(digitRE); var t = "number"; if (source.eat('.')) { t = "number"; source.eatWhile(digitRE); // should require at least 1 } if (source.eat(/[eE]/)) { t = "number"; source.eat(/[-+]/); source.eatWhile(digitRE); // should require at least 1 } return t; } if (symbolRE.test(ch)) { if (ch == '-' && source.eat(/-/)) { source.eatWhile(/-/); if (!source.eat(symbolRE)) { source.skipToEnd(); return "comment"; } } source.eatWhile(symbolRE); return "builtin"; } return "error"; } } function ncomment(type, nest) { if (nest == 0) { return normal(); } return function(source, setState) { var currNest = nest; while (!source.eol()) { var ch = source.next(); if (ch == '{' && source.eat('-')) { ++currNest; } else if (ch == '-' && source.eat('}')) { --currNest; if (currNest == 0) { setState(normal()); return type; } } } setState(ncomment(type, currNest)); return type; } } function stringLiteral(source, setState) { while (!source.eol()) { var ch = source.next(); if (ch == '"') { setState(normal()); return "string"; } if (ch == '\\') { if (source.eol() || source.eat(whiteCharRE)) { setState(stringGap); return "string"; } if (!source.eat('&')) source.next(); // should handle other escapes here } } setState(normal()); return "error"; } function stringGap(source, setState) { if (source.eat('\\')) { return switchState(source, setState, stringLiteral); } source.next(); setState(normal()); return "error"; } var wellKnownWords = (function() { var wkw = {}; var keywords = [ "case", "of", "as", "if", "then", "else", "let", "in", "infix", "infixl", "infixr", "type", "alias", "input", "output", "foreign", "loopback", "module", "where", "import", "exposing", "_", "..", "|", ":", "=", "\\", "\"", "->", "<-" ]; for (var i = keywords.length; i--;) wkw[keywords[i]] = "keyword"; return wkw; })(); return { startState: function () { return { f: normal() }; }, copyState: function (s) { return { f: s.f }; }, token: function(stream, state) { var t = state.f(stream, function(s) { state.f = s; }); var w = stream.current(); return (wellKnownWords.hasOwnProperty(w)) ? wellKnownWords[w] : t; } }; }); CodeMirror.defineMIME("text/x-elm", "elm"); }); application/library/codemirror/mode/erlang/index.html000064400000004170147577724760017105 0ustar00 CodeMirror: Erlang mode

Erlang mode

MIME types defined: text/x-erlang.

application/library/codemirror/mode/erlang/erlang.js000064400000044645147577724760016731 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /*jshint unused:true, eqnull:true, curly:true, bitwise:true */ /*jshint undef:true, latedef:true, trailing:true */ /*global CodeMirror:true */ // erlang mode. // tokenizer -> token types -> CodeMirror styles // tokenizer maintains a parse stack // indenter uses the parse stack // TODO indenter: // bit syntax // old guard/bif/conversion clashes (e.g. "float/1") // type/spec/opaque (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMIME("text/x-erlang", "erlang"); CodeMirror.defineMode("erlang", function(cmCfg) { "use strict"; ///////////////////////////////////////////////////////////////////////////// // constants var typeWords = [ "-type", "-spec", "-export_type", "-opaque"]; var keywordWords = [ "after","begin","catch","case","cond","end","fun","if", "let","of","query","receive","try","when"]; var separatorRE = /[\->,;]/; var separatorWords = [ "->",";",","]; var operatorAtomWords = [ "and","andalso","band","bnot","bor","bsl","bsr","bxor", "div","not","or","orelse","rem","xor"]; var operatorSymbolRE = /[\+\-\*\/<>=\|:!]/; var operatorSymbolWords = [ "=","+","-","*","/",">",">=","<","=<","=:=","==","=/=","/=","||","<-","!"]; var openParenRE = /[<\(\[\{]/; var openParenWords = [ "<<","(","[","{"]; var closeParenRE = /[>\)\]\}]/; var closeParenWords = [ "}","]",")",">>"]; var guardWords = [ "is_atom","is_binary","is_bitstring","is_boolean","is_float", "is_function","is_integer","is_list","is_number","is_pid", "is_port","is_record","is_reference","is_tuple", "atom","binary","bitstring","boolean","function","integer","list", "number","pid","port","record","reference","tuple"]; var bifWords = [ "abs","adler32","adler32_combine","alive","apply","atom_to_binary", "atom_to_list","binary_to_atom","binary_to_existing_atom", "binary_to_list","binary_to_term","bit_size","bitstring_to_list", "byte_size","check_process_code","contact_binary","crc32", "crc32_combine","date","decode_packet","delete_module", "disconnect_node","element","erase","exit","float","float_to_list", "garbage_collect","get","get_keys","group_leader","halt","hd", "integer_to_list","internal_bif","iolist_size","iolist_to_binary", "is_alive","is_atom","is_binary","is_bitstring","is_boolean", "is_float","is_function","is_integer","is_list","is_number","is_pid", "is_port","is_process_alive","is_record","is_reference","is_tuple", "length","link","list_to_atom","list_to_binary","list_to_bitstring", "list_to_existing_atom","list_to_float","list_to_integer", "list_to_pid","list_to_tuple","load_module","make_ref","module_loaded", "monitor_node","node","node_link","node_unlink","nodes","notalive", "now","open_port","pid_to_list","port_close","port_command", "port_connect","port_control","pre_loaded","process_flag", "process_info","processes","purge_module","put","register", "registered","round","self","setelement","size","spawn","spawn_link", "spawn_monitor","spawn_opt","split_binary","statistics", "term_to_binary","time","throw","tl","trunc","tuple_size", "tuple_to_list","unlink","unregister","whereis"]; // upper case: [A-Z] [Ø-Þ] [À-Ö] // lower case: [a-z] [ß-ö] [Ăž-Ăż] var anumRE = /[\w@Ø-ÞÀ-Öß-öÞ-Ăż]/; var escapesRE = /[0-7]{1,3}|[bdefnrstv\\"']|\^[a-zA-Z]|x[0-9a-zA-Z]{2}|x{[0-9a-zA-Z]+}/; ///////////////////////////////////////////////////////////////////////////// // tokenizer function tokenizer(stream,state) { // in multi-line string if (state.in_string) { state.in_string = (!doubleQuote(stream)); return rval(state,stream,"string"); } // in multi-line atom if (state.in_atom) { state.in_atom = (!singleQuote(stream)); return rval(state,stream,"atom"); } // whitespace if (stream.eatSpace()) { return rval(state,stream,"whitespace"); } // attributes and type specs if (!peekToken(state) && stream.match(/-\s*[a-zß-öÞ-Ăż][\wØ-ÞÀ-Öß-öÞ-Ăż]*/)) { if (is_member(stream.current(),typeWords)) { return rval(state,stream,"type"); }else{ return rval(state,stream,"attribute"); } } var ch = stream.next(); // comment if (ch == '%') { stream.skipToEnd(); return rval(state,stream,"comment"); } // colon if (ch == ":") { return rval(state,stream,"colon"); } // macro if (ch == '?') { stream.eatSpace(); stream.eatWhile(anumRE); return rval(state,stream,"macro"); } // record if (ch == "#") { stream.eatSpace(); stream.eatWhile(anumRE); return rval(state,stream,"record"); } // dollar escape if (ch == "$") { if (stream.next() == "\\" && !stream.match(escapesRE)) { return rval(state,stream,"error"); } return rval(state,stream,"number"); } // dot if (ch == ".") { return rval(state,stream,"dot"); } // quoted atom if (ch == '\'') { if (!(state.in_atom = (!singleQuote(stream)))) { if (stream.match(/\s*\/\s*[0-9]/,false)) { stream.match(/\s*\/\s*[0-9]/,true); return rval(state,stream,"fun"); // 'f'/0 style fun } if (stream.match(/\s*\(/,false) || stream.match(/\s*:/,false)) { return rval(state,stream,"function"); } } return rval(state,stream,"atom"); } // string if (ch == '"') { state.in_string = (!doubleQuote(stream)); return rval(state,stream,"string"); } // variable if (/[A-Z_Ø-ÞÀ-Ö]/.test(ch)) { stream.eatWhile(anumRE); return rval(state,stream,"variable"); } // atom/keyword/BIF/function if (/[a-z_ß-öÞ-Ăż]/.test(ch)) { stream.eatWhile(anumRE); if (stream.match(/\s*\/\s*[0-9]/,false)) { stream.match(/\s*\/\s*[0-9]/,true); return rval(state,stream,"fun"); // f/0 style fun } var w = stream.current(); if (is_member(w,keywordWords)) { return rval(state,stream,"keyword"); }else if (is_member(w,operatorAtomWords)) { return rval(state,stream,"operator"); }else if (stream.match(/\s*\(/,false)) { // 'put' and 'erlang:put' are bifs, 'foo:put' is not if (is_member(w,bifWords) && ((peekToken(state).token != ":") || (peekToken(state,2).token == "erlang"))) { return rval(state,stream,"builtin"); }else if (is_member(w,guardWords)) { return rval(state,stream,"guard"); }else{ return rval(state,stream,"function"); } }else if (lookahead(stream) == ":") { if (w == "erlang") { return rval(state,stream,"builtin"); } else { return rval(state,stream,"function"); } }else if (is_member(w,["true","false"])) { return rval(state,stream,"boolean"); }else{ return rval(state,stream,"atom"); } } // number var digitRE = /[0-9]/; var radixRE = /[0-9a-zA-Z]/; // 36#zZ style int if (digitRE.test(ch)) { stream.eatWhile(digitRE); if (stream.eat('#')) { // 36#aZ style integer if (!stream.eatWhile(radixRE)) { stream.backUp(1); //"36#" - syntax error } } else if (stream.eat('.')) { // float if (!stream.eatWhile(digitRE)) { stream.backUp(1); // "3." - probably end of function } else { if (stream.eat(/[eE]/)) { // float with exponent if (stream.eat(/[-+]/)) { if (!stream.eatWhile(digitRE)) { stream.backUp(2); // "2e-" - syntax error } } else { if (!stream.eatWhile(digitRE)) { stream.backUp(1); // "2e" - syntax error } } } } } return rval(state,stream,"number"); // normal integer } // open parens if (nongreedy(stream,openParenRE,openParenWords)) { return rval(state,stream,"open_paren"); } // close parens if (nongreedy(stream,closeParenRE,closeParenWords)) { return rval(state,stream,"close_paren"); } // separators if (greedy(stream,separatorRE,separatorWords)) { return rval(state,stream,"separator"); } // operators if (greedy(stream,operatorSymbolRE,operatorSymbolWords)) { return rval(state,stream,"operator"); } return rval(state,stream,null); } ///////////////////////////////////////////////////////////////////////////// // utilities function nongreedy(stream,re,words) { if (stream.current().length == 1 && re.test(stream.current())) { stream.backUp(1); while (re.test(stream.peek())) { stream.next(); if (is_member(stream.current(),words)) { return true; } } stream.backUp(stream.current().length-1); } return false; } function greedy(stream,re,words) { if (stream.current().length == 1 && re.test(stream.current())) { while (re.test(stream.peek())) { stream.next(); } while (0 < stream.current().length) { if (is_member(stream.current(),words)) { return true; }else{ stream.backUp(1); } } stream.next(); } return false; } function doubleQuote(stream) { return quote(stream, '"', '\\'); } function singleQuote(stream) { return quote(stream,'\'','\\'); } function quote(stream,quoteChar,escapeChar) { while (!stream.eol()) { var ch = stream.next(); if (ch == quoteChar) { return true; }else if (ch == escapeChar) { stream.next(); } } return false; } function lookahead(stream) { var m = stream.match(/([\n\s]+|%[^\n]*\n)*(.)/,false); return m ? m.pop() : ""; } function is_member(element,list) { return (-1 < list.indexOf(element)); } function rval(state,stream,type) { // parse stack pushToken(state,realToken(type,stream)); // map erlang token type to CodeMirror style class // erlang -> CodeMirror tag switch (type) { case "atom": return "atom"; case "attribute": return "attribute"; case "boolean": return "atom"; case "builtin": return "builtin"; case "close_paren": return null; case "colon": return null; case "comment": return "comment"; case "dot": return null; case "error": return "error"; case "fun": return "meta"; case "function": return "tag"; case "guard": return "property"; case "keyword": return "keyword"; case "macro": return "variable-2"; case "number": return "number"; case "open_paren": return null; case "operator": return "operator"; case "record": return "bracket"; case "separator": return null; case "string": return "string"; case "type": return "def"; case "variable": return "variable"; default: return null; } } function aToken(tok,col,ind,typ) { return {token: tok, column: col, indent: ind, type: typ}; } function realToken(type,stream) { return aToken(stream.current(), stream.column(), stream.indentation(), type); } function fakeToken(type) { return aToken(type,0,0,type); } function peekToken(state,depth) { var len = state.tokenStack.length; var dep = (depth ? depth : 1); if (len < dep) { return false; }else{ return state.tokenStack[len-dep]; } } function pushToken(state,token) { if (!(token.type == "comment" || token.type == "whitespace")) { state.tokenStack = maybe_drop_pre(state.tokenStack,token); state.tokenStack = maybe_drop_post(state.tokenStack); } } function maybe_drop_pre(s,token) { var last = s.length-1; if (0 < last && s[last].type === "record" && token.type === "dot") { s.pop(); }else if (0 < last && s[last].type === "group") { s.pop(); s.push(token); }else{ s.push(token); } return s; } function maybe_drop_post(s) { var last = s.length-1; if (s[last].type === "dot") { return []; } if (s[last].type === "fun" && s[last-1].token === "fun") { return s.slice(0,last-1); } switch (s[s.length-1].token) { case "}": return d(s,{g:["{"]}); case "]": return d(s,{i:["["]}); case ")": return d(s,{i:["("]}); case ">>": return d(s,{i:["<<"]}); case "end": return d(s,{i:["begin","case","fun","if","receive","try"]}); case ",": return d(s,{e:["begin","try","when","->", ",","(","[","{","<<"]}); case "->": return d(s,{r:["when"], m:["try","if","case","receive"]}); case ";": return d(s,{E:["case","fun","if","receive","try","when"]}); case "catch":return d(s,{e:["try"]}); case "of": return d(s,{e:["case"]}); case "after":return d(s,{e:["receive","try"]}); default: return s; } } function d(stack,tt) { // stack is a stack of Token objects. // tt is an object; {type:tokens} // type is a char, tokens is a list of token strings. // The function returns (possibly truncated) stack. // It will descend the stack, looking for a Token such that Token.token // is a member of tokens. If it does not find that, it will normally (but // see "E" below) return stack. If it does find a match, it will remove // all the Tokens between the top and the matched Token. // If type is "m", that is all it does. // If type is "i", it will also remove the matched Token and the top Token. // If type is "g", like "i", but add a fake "group" token at the top. // If type is "r", it will remove the matched Token, but not the top Token. // If type is "e", it will keep the matched Token but not the top Token. // If type is "E", it behaves as for type "e", except if there is no match, // in which case it will return an empty stack. for (var type in tt) { var len = stack.length-1; var tokens = tt[type]; for (var i = len-1; -1 < i ; i--) { if (is_member(stack[i].token,tokens)) { var ss = stack.slice(0,i); switch (type) { case "m": return ss.concat(stack[i]).concat(stack[len]); case "r": return ss.concat(stack[len]); case "i": return ss; case "g": return ss.concat(fakeToken("group")); case "E": return ss.concat(stack[i]); case "e": return ss.concat(stack[i]); } } } } return (type == "E" ? [] : stack); } ///////////////////////////////////////////////////////////////////////////// // indenter function indenter(state,textAfter) { var t; var unit = cmCfg.indentUnit; var wordAfter = wordafter(textAfter); var currT = peekToken(state,1); var prevT = peekToken(state,2); if (state.in_string || state.in_atom) { return CodeMirror.Pass; }else if (!prevT) { return 0; }else if (currT.token == "when") { return currT.column+unit; }else if (wordAfter === "when" && prevT.type === "function") { return prevT.indent+unit; }else if (wordAfter === "(" && currT.token === "fun") { return currT.column+3; }else if (wordAfter === "catch" && (t = getToken(state,["try"]))) { return t.column; }else if (is_member(wordAfter,["end","after","of"])) { t = getToken(state,["begin","case","fun","if","receive","try"]); return t ? t.column : CodeMirror.Pass; }else if (is_member(wordAfter,closeParenWords)) { t = getToken(state,openParenWords); return t ? t.column : CodeMirror.Pass; }else if (is_member(currT.token,[",","|","||"]) || is_member(wordAfter,[",","|","||"])) { t = postcommaToken(state); return t ? t.column+t.token.length : unit; }else if (currT.token == "->") { if (is_member(prevT.token, ["receive","case","if","try"])) { return prevT.column+unit+unit; }else{ return prevT.column+unit; } }else if (is_member(currT.token,openParenWords)) { return currT.column+currT.token.length; }else{ t = defaultToken(state); return truthy(t) ? t.column+unit : 0; } } function wordafter(str) { var m = str.match(/,|[a-z]+|\}|\]|\)|>>|\|+|\(/); return truthy(m) && (m.index === 0) ? m[0] : ""; } function postcommaToken(state) { var objs = state.tokenStack.slice(0,-1); var i = getTokenIndex(objs,"type",["open_paren"]); return truthy(objs[i]) ? objs[i] : false; } function defaultToken(state) { var objs = state.tokenStack; var stop = getTokenIndex(objs,"type",["open_paren","separator","keyword"]); var oper = getTokenIndex(objs,"type",["operator"]); if (truthy(stop) && truthy(oper) && stop < oper) { return objs[stop+1]; } else if (truthy(stop)) { return objs[stop]; } else { return false; } } function getToken(state,tokens) { var objs = state.tokenStack; var i = getTokenIndex(objs,"token",tokens); return truthy(objs[i]) ? objs[i] : false; } function getTokenIndex(objs,propname,propvals) { for (var i = objs.length-1; -1 < i ; i--) { if (is_member(objs[i][propname],propvals)) { return i; } } return false; } function truthy(x) { return (x !== false) && (x != null); } ///////////////////////////////////////////////////////////////////////////// // this object defines the mode return { startState: function() { return {tokenStack: [], in_string: false, in_atom: false}; }, token: function(stream, state) { return tokenizer(stream, state); }, indent: function(state, textAfter) { return indenter(state,textAfter); }, lineComment: "%" }; }); }); application/library/codemirror/mode/factor/factor.js000064400000005547147577724760016743 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Factor syntax highlight - simple mode // // by Dimage Sapelkin (https://github.com/kerabromsmu) (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../../addon/mode/simple"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineSimpleMode("factor", { // The start state contains the rules that are intially used start: [ // comments {regex: /#?!.*/, token: "comment"}, // strings """, multiline --> state {regex: /"""/, token: "string", next: "string3"}, {regex: /"/, token: "string", next: "string"}, // numbers: dec, hex, unicode, bin, fractional, complex {regex: /(?:[+-]?)(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\d+.?\d*)/, token: "number"}, //{regex: /[+-]?/} //fractional // definition: defining word, defined word, etc {regex: /(\:)(\s+)(\S+)(\s+)(\()/, token: ["keyword", null, "def", null, "keyword"], next: "stack"}, // vocabulary using --> state {regex: /USING\:/, token: "keyword", next: "vocabulary"}, // vocabulary definition/use {regex: /(USE\:|IN\:)(\s+)(\S+)/, token: ["keyword", null, "variable-2"]}, // {regex: /<\S+>/, token: "builtin"}, // "keywords", incl. ; t f . [ ] { } defining words {regex: /;|t|f|if|\.|\[|\]|\{|\}|MAIN:/, token: "keyword"}, // any id (?) {regex: /\S+/, token: "variable"}, { regex: /./, token: null } ], vocabulary: [ {regex: /;/, token: "keyword", next: "start"}, {regex: /\S+/, token: "variable-2"}, { regex: /./, token: null } ], string: [ {regex: /(?:[^\\]|\\.)*?"/, token: "string", next: "start"}, {regex: /.*/, token: "string"} ], string3: [ {regex: /(?:[^\\]|\\.)*?"""/, token: "string", next: "start"}, {regex: /.*/, token: "string"} ], stack: [ {regex: /\)/, token: "meta", next: "start"}, {regex: /--/, token: "meta"}, {regex: /\S+/, token: "variable-3"}, { regex: /./, token: null } ], // The meta property contains global information about the mode. It // can contain properties like lineComment, which are supported by // all modes, and also directives like dontIndentStates, which are // specific to simple modes. meta: { dontIndentStates: ["start", "vocabulary", "string", "string3", "stack"], lineComment: [ "!", "#!" ] } }); CodeMirror.defineMIME("text/x-factor", "factor"); }); application/library/codemirror/mode/factor/index.html000064400000003750147577724760017116 0ustar00 CodeMirror: Factor mode

Factor mode

Simple mode that handles Factor Syntax (Factor on WikiPedia).

MIME types defined: text/x-factor.

application/library/codemirror/mode/fcl/index.html000064400000006023147577724760016400 0ustar00 CodeMirror: FCL mode

FCL mode

MIME type: text/x-fcl

application/library/codemirror/mode/fcl/fcl.js000064400000011137147577724760015507 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("fcl", function(config) { var indentUnit = config.indentUnit; var keywords = { "term": true, "method": true, "accu": true, "rule": true, "then": true, "is": true, "and": true, "or": true, "if": true, "default": true }; var start_blocks = { "var_input": true, "var_output": true, "fuzzify": true, "defuzzify": true, "function_block": true, "ruleblock": true }; var end_blocks = { "end_ruleblock": true, "end_defuzzify": true, "end_function_block": true, "end_fuzzify": true, "end_var": true }; var atoms = { "true": true, "false": true, "nan": true, "real": true, "min": true, "max": true, "cog": true, "cogs": true }; var isOperatorChar = /[+\-*&^%:=<>!|\/]/; function tokenBase(stream, state) { var ch = stream.next(); if (/[\d\.]/.test(ch)) { if (ch == ".") { stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/); } else if (ch == "0") { stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/); } else { stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/); } return "number"; } if (ch == "/" || ch == "(") { if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\$_\xa1-\uffff]/); var cur = stream.current().toLowerCase(); if (keywords.propertyIsEnumerable(cur) || start_blocks.propertyIsEnumerable(cur) || end_blocks.propertyIsEnumerable(cur)) { return "keyword"; } if (atoms.propertyIsEnumerable(cur)) return "atom"; return "variable"; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if ((ch == "/" || ch == ")") && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { return state.context = new Context(state.indented, col, type, null, state.context); } function popContext(state) { if (!state.context.prev) return; var t = state.context.type; if (t == "end_block") state.indented = state.context.indented; return state.context = state.context.prev; } // Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) return null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment") return style; if (ctx.align == null) ctx.align = true; var cur = stream.current().toLowerCase(); if (start_blocks.propertyIsEnumerable(cur)) pushContext(state, stream.column(), "end_block"); else if (end_blocks.propertyIsEnumerable(cur)) popContext(state); state.startOfLine = false; return style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase && state.tokenize != null) return 0; var ctx = state.context; var closing = end_blocks.propertyIsEnumerable(textAfter); if (ctx.align) return ctx.column + (closing ? 0 : 1); else return ctx.indented + (closing ? 0 : indentUnit); }, electricChars: "ryk", fold: "brace", blockCommentStart: "(*", blockCommentEnd: "*)", lineComment: "//" }; }); CodeMirror.defineMIME("text/x-fcl", "fcl"); }); application/library/codemirror/mode/forth/forth.js000064400000012156147577724760016445 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Author: Aliaksei Chapyzhenka (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function toWordList(words) { var ret = []; words.split(' ').forEach(function(e){ ret.push({name: e}); }); return ret; } var coreWordList = toWordList( 'INVERT AND OR XOR\ 2* 2/ LSHIFT RSHIFT\ 0= = 0< < > U< MIN MAX\ 2DROP 2DUP 2OVER 2SWAP ?DUP DEPTH DROP DUP OVER ROT SWAP\ >R R> R@\ + - 1+ 1- ABS NEGATE\ S>D * M* UM*\ FM/MOD SM/REM UM/MOD */ */MOD / /MOD MOD\ HERE , @ ! CELL+ CELLS C, C@ C! CHARS 2@ 2!\ ALIGN ALIGNED +! ALLOT\ CHAR [CHAR] [ ] BL\ FIND EXECUTE IMMEDIATE COUNT LITERAL STATE\ ; DOES> >BODY\ EVALUATE\ SOURCE >IN\ <# # #S #> HOLD SIGN BASE >NUMBER HEX DECIMAL\ FILL MOVE\ . CR EMIT SPACE SPACES TYPE U. .R U.R\ ACCEPT\ TRUE FALSE\ <> U> 0<> 0>\ NIP TUCK ROLL PICK\ 2>R 2R@ 2R>\ WITHIN UNUSED MARKER\ I J\ TO\ COMPILE, [COMPILE]\ SAVE-INPUT RESTORE-INPUT\ PAD ERASE\ 2LITERAL DNEGATE\ D- D+ D0< D0= D2* D2/ D< D= DMAX DMIN D>S DABS\ M+ M*/ D. D.R 2ROT DU<\ CATCH THROW\ FREE RESIZE ALLOCATE\ CS-PICK CS-ROLL\ GET-CURRENT SET-CURRENT FORTH-WORDLIST GET-ORDER SET-ORDER\ PREVIOUS SEARCH-WORDLIST WORDLIST FIND ALSO ONLY FORTH DEFINITIONS ORDER\ -TRAILING /STRING SEARCH COMPARE CMOVE CMOVE> BLANK SLITERAL'); var immediateWordList = toWordList('IF ELSE THEN BEGIN WHILE REPEAT UNTIL RECURSE [IF] [ELSE] [THEN] ?DO DO LOOP +LOOP UNLOOP LEAVE EXIT AGAIN CASE OF ENDOF ENDCASE'); CodeMirror.defineMode('forth', function() { function searchWordList (wordList, word) { var i; for (i = wordList.length - 1; i >= 0; i--) { if (wordList[i].name === word.toUpperCase()) { return wordList[i]; } } return undefined; } return { startState: function() { return { state: '', base: 10, coreWordList: coreWordList, immediateWordList: immediateWordList, wordList: [] }; }, token: function (stream, stt) { var mat; if (stream.eatSpace()) { return null; } if (stt.state === '') { // interpretation if (stream.match(/^(\]|:NONAME)(\s|$)/i)) { stt.state = ' compilation'; return 'builtin compilation'; } mat = stream.match(/^(\:)\s+(\S+)(\s|$)+/); if (mat) { stt.wordList.push({name: mat[2].toUpperCase()}); stt.state = ' compilation'; return 'def' + stt.state; } mat = stream.match(/^(VARIABLE|2VARIABLE|CONSTANT|2CONSTANT|CREATE|POSTPONE|VALUE|WORD)\s+(\S+)(\s|$)+/i); if (mat) { stt.wordList.push({name: mat[2].toUpperCase()}); return 'def' + stt.state; } mat = stream.match(/^(\'|\[\'\])\s+(\S+)(\s|$)+/); if (mat) { return 'builtin' + stt.state; } } else { // compilation // ; [ if (stream.match(/^(\;|\[)(\s)/)) { stt.state = ''; stream.backUp(1); return 'builtin compilation'; } if (stream.match(/^(\;|\[)($)/)) { stt.state = ''; return 'builtin compilation'; } if (stream.match(/^(POSTPONE)\s+\S+(\s|$)+/)) { return 'builtin'; } } // dynamic wordlist mat = stream.match(/^(\S+)(\s+|$)/); if (mat) { if (searchWordList(stt.wordList, mat[1]) !== undefined) { return 'variable' + stt.state; } // comments if (mat[1] === '\\') { stream.skipToEnd(); return 'comment' + stt.state; } // core words if (searchWordList(stt.coreWordList, mat[1]) !== undefined) { return 'builtin' + stt.state; } if (searchWordList(stt.immediateWordList, mat[1]) !== undefined) { return 'keyword' + stt.state; } if (mat[1] === '(') { stream.eatWhile(function (s) { return s !== ')'; }); stream.eat(')'); return 'comment' + stt.state; } // // strings if (mat[1] === '.(') { stream.eatWhile(function (s) { return s !== ')'; }); stream.eat(')'); return 'string' + stt.state; } if (mat[1] === 'S"' || mat[1] === '."' || mat[1] === 'C"') { stream.eatWhile(function (s) { return s !== '"'; }); stream.eat('"'); return 'string' + stt.state; } // numbers if (mat[1] - 0xfffffffff) { return 'number' + stt.state; } // if (mat[1].match(/^[-+]?[0-9]+\.[0-9]*/)) { // return 'number' + stt.state; // } return 'atom' + stt.state; } } }; }); CodeMirror.defineMIME("text/x-forth", "forth"); }); application/library/codemirror/mode/forth/index.html000064400000003367147577724760016766 0ustar00 CodeMirror: Forth mode

Forth mode

Simple mode that handle Forth-Syntax (Forth on WikiPedia).

MIME types defined: text/x-forth.

application/library/codemirror/mode/fortran/fortran.js000064400000020756147577724760017334 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("fortran", function() { function words(array) { var keys = {}; for (var i = 0; i < array.length; ++i) { keys[array[i]] = true; } return keys; } var keywords = words([ "abstract", "accept", "allocatable", "allocate", "array", "assign", "asynchronous", "backspace", "bind", "block", "byte", "call", "case", "class", "close", "common", "contains", "continue", "cycle", "data", "deallocate", "decode", "deferred", "dimension", "do", "elemental", "else", "encode", "end", "endif", "entry", "enumerator", "equivalence", "exit", "external", "extrinsic", "final", "forall", "format", "function", "generic", "go", "goto", "if", "implicit", "import", "include", "inquire", "intent", "interface", "intrinsic", "module", "namelist", "non_intrinsic", "non_overridable", "none", "nopass", "nullify", "open", "optional", "options", "parameter", "pass", "pause", "pointer", "print", "private", "program", "protected", "public", "pure", "read", "recursive", "result", "return", "rewind", "save", "select", "sequence", "stop", "subroutine", "target", "then", "to", "type", "use", "value", "volatile", "where", "while", "write"]); var builtins = words(["abort", "abs", "access", "achar", "acos", "adjustl", "adjustr", "aimag", "aint", "alarm", "all", "allocated", "alog", "amax", "amin", "amod", "and", "anint", "any", "asin", "associated", "atan", "besj", "besjn", "besy", "besyn", "bit_size", "btest", "cabs", "ccos", "ceiling", "cexp", "char", "chdir", "chmod", "clog", "cmplx", "command_argument_count", "complex", "conjg", "cos", "cosh", "count", "cpu_time", "cshift", "csin", "csqrt", "ctime", "c_funloc", "c_loc", "c_associated", "c_null_ptr", "c_null_funptr", "c_f_pointer", "c_null_char", "c_alert", "c_backspace", "c_form_feed", "c_new_line", "c_carriage_return", "c_horizontal_tab", "c_vertical_tab", "dabs", "dacos", "dasin", "datan", "date_and_time", "dbesj", "dbesj", "dbesjn", "dbesy", "dbesy", "dbesyn", "dble", "dcos", "dcosh", "ddim", "derf", "derfc", "dexp", "digits", "dim", "dint", "dlog", "dlog", "dmax", "dmin", "dmod", "dnint", "dot_product", "dprod", "dsign", "dsinh", "dsin", "dsqrt", "dtanh", "dtan", "dtime", "eoshift", "epsilon", "erf", "erfc", "etime", "exit", "exp", "exponent", "extends_type_of", "fdate", "fget", "fgetc", "float", "floor", "flush", "fnum", "fputc", "fput", "fraction", "fseek", "fstat", "ftell", "gerror", "getarg", "get_command", "get_command_argument", "get_environment_variable", "getcwd", "getenv", "getgid", "getlog", "getpid", "getuid", "gmtime", "hostnm", "huge", "iabs", "iachar", "iand", "iargc", "ibclr", "ibits", "ibset", "ichar", "idate", "idim", "idint", "idnint", "ieor", "ierrno", "ifix", "imag", "imagpart", "index", "int", "ior", "irand", "isatty", "ishft", "ishftc", "isign", "iso_c_binding", "is_iostat_end", "is_iostat_eor", "itime", "kill", "kind", "lbound", "len", "len_trim", "lge", "lgt", "link", "lle", "llt", "lnblnk", "loc", "log", "logical", "long", "lshift", "lstat", "ltime", "matmul", "max", "maxexponent", "maxloc", "maxval", "mclock", "merge", "move_alloc", "min", "minexponent", "minloc", "minval", "mod", "modulo", "mvbits", "nearest", "new_line", "nint", "not", "or", "pack", "perror", "precision", "present", "product", "radix", "rand", "random_number", "random_seed", "range", "real", "realpart", "rename", "repeat", "reshape", "rrspacing", "rshift", "same_type_as", "scale", "scan", "second", "selected_int_kind", "selected_real_kind", "set_exponent", "shape", "short", "sign", "signal", "sinh", "sin", "sleep", "sngl", "spacing", "spread", "sqrt", "srand", "stat", "sum", "symlnk", "system", "system_clock", "tan", "tanh", "time", "tiny", "transfer", "transpose", "trim", "ttynam", "ubound", "umask", "unlink", "unpack", "verify", "xor", "zabs", "zcos", "zexp", "zlog", "zsin", "zsqrt"]); var dataTypes = words(["c_bool", "c_char", "c_double", "c_double_complex", "c_float", "c_float_complex", "c_funptr", "c_int", "c_int16_t", "c_int32_t", "c_int64_t", "c_int8_t", "c_int_fast16_t", "c_int_fast32_t", "c_int_fast64_t", "c_int_fast8_t", "c_int_least16_t", "c_int_least32_t", "c_int_least64_t", "c_int_least8_t", "c_intmax_t", "c_intptr_t", "c_long", "c_long_double", "c_long_double_complex", "c_long_long", "c_ptr", "c_short", "c_signed_char", "c_size_t", "character", "complex", "double", "integer", "logical", "real"]); var isOperatorChar = /[+\-*&=<>\/\:]/; var litOperator = new RegExp("(\.and\.|\.or\.|\.eq\.|\.lt\.|\.le\.|\.gt\.|\.ge\.|\.ne\.|\.not\.|\.eqv\.|\.neqv\.)", "i"); function tokenBase(stream, state) { if (stream.match(litOperator)){ return 'operator'; } var ch = stream.next(); if (ch == "!") { stream.skipToEnd(); return "comment"; } if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (/[\[\]\(\),]/.test(ch)) { return null; } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\$_]/); var word = stream.current().toLowerCase(); if (keywords.hasOwnProperty(word)){ return 'keyword'; } if (builtins.hasOwnProperty(word) || dataTypes.hasOwnProperty(word)) { return 'builtin'; } return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) { end = true; break; } escaped = !escaped && next == "\\"; } if (end || !escaped) state.tokenize = null; return "string"; }; } // Interface return { startState: function() { return {tokenize: null}; }, token: function(stream, state) { if (stream.eatSpace()) return null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment" || style == "meta") return style; return style; } }; }); CodeMirror.defineMIME("text/x-fortran", "fortran"); }); application/library/codemirror/mode/fortran/index.html000064400000004674147577724760017321 0ustar00 CodeMirror: Fortran mode

Fortran mode

MIME types defined: text/x-fortran.

application/library/codemirror/mode/gas/gas.js000064400000021266147577724760015527 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("gas", function(_config, parserConfig) { 'use strict'; // If an architecture is specified, its initialization function may // populate this array with custom parsing functions which will be // tried in the event that the standard functions do not find a match. var custom = []; // The symbol used to start a line comment changes based on the target // architecture. // If no architecture is pased in "parserConfig" then only multiline // comments will have syntax support. var lineCommentStartSymbol = ""; // These directives are architecture independent. // Machine specific directives should go in their respective // architecture initialization function. // Reference: // http://sourceware.org/binutils/docs/as/Pseudo-Ops.html#Pseudo-Ops var directives = { ".abort" : "builtin", ".align" : "builtin", ".altmacro" : "builtin", ".ascii" : "builtin", ".asciz" : "builtin", ".balign" : "builtin", ".balignw" : "builtin", ".balignl" : "builtin", ".bundle_align_mode" : "builtin", ".bundle_lock" : "builtin", ".bundle_unlock" : "builtin", ".byte" : "builtin", ".cfi_startproc" : "builtin", ".comm" : "builtin", ".data" : "builtin", ".def" : "builtin", ".desc" : "builtin", ".dim" : "builtin", ".double" : "builtin", ".eject" : "builtin", ".else" : "builtin", ".elseif" : "builtin", ".end" : "builtin", ".endef" : "builtin", ".endfunc" : "builtin", ".endif" : "builtin", ".equ" : "builtin", ".equiv" : "builtin", ".eqv" : "builtin", ".err" : "builtin", ".error" : "builtin", ".exitm" : "builtin", ".extern" : "builtin", ".fail" : "builtin", ".file" : "builtin", ".fill" : "builtin", ".float" : "builtin", ".func" : "builtin", ".global" : "builtin", ".gnu_attribute" : "builtin", ".hidden" : "builtin", ".hword" : "builtin", ".ident" : "builtin", ".if" : "builtin", ".incbin" : "builtin", ".include" : "builtin", ".int" : "builtin", ".internal" : "builtin", ".irp" : "builtin", ".irpc" : "builtin", ".lcomm" : "builtin", ".lflags" : "builtin", ".line" : "builtin", ".linkonce" : "builtin", ".list" : "builtin", ".ln" : "builtin", ".loc" : "builtin", ".loc_mark_labels" : "builtin", ".local" : "builtin", ".long" : "builtin", ".macro" : "builtin", ".mri" : "builtin", ".noaltmacro" : "builtin", ".nolist" : "builtin", ".octa" : "builtin", ".offset" : "builtin", ".org" : "builtin", ".p2align" : "builtin", ".popsection" : "builtin", ".previous" : "builtin", ".print" : "builtin", ".protected" : "builtin", ".psize" : "builtin", ".purgem" : "builtin", ".pushsection" : "builtin", ".quad" : "builtin", ".reloc" : "builtin", ".rept" : "builtin", ".sbttl" : "builtin", ".scl" : "builtin", ".section" : "builtin", ".set" : "builtin", ".short" : "builtin", ".single" : "builtin", ".size" : "builtin", ".skip" : "builtin", ".sleb128" : "builtin", ".space" : "builtin", ".stab" : "builtin", ".string" : "builtin", ".struct" : "builtin", ".subsection" : "builtin", ".symver" : "builtin", ".tag" : "builtin", ".text" : "builtin", ".title" : "builtin", ".type" : "builtin", ".uleb128" : "builtin", ".val" : "builtin", ".version" : "builtin", ".vtable_entry" : "builtin", ".vtable_inherit" : "builtin", ".warning" : "builtin", ".weak" : "builtin", ".weakref" : "builtin", ".word" : "builtin" }; var registers = {}; function x86(_parserConfig) { lineCommentStartSymbol = "#"; registers.ax = "variable"; registers.eax = "variable-2"; registers.rax = "variable-3"; registers.bx = "variable"; registers.ebx = "variable-2"; registers.rbx = "variable-3"; registers.cx = "variable"; registers.ecx = "variable-2"; registers.rcx = "variable-3"; registers.dx = "variable"; registers.edx = "variable-2"; registers.rdx = "variable-3"; registers.si = "variable"; registers.esi = "variable-2"; registers.rsi = "variable-3"; registers.di = "variable"; registers.edi = "variable-2"; registers.rdi = "variable-3"; registers.sp = "variable"; registers.esp = "variable-2"; registers.rsp = "variable-3"; registers.bp = "variable"; registers.ebp = "variable-2"; registers.rbp = "variable-3"; registers.ip = "variable"; registers.eip = "variable-2"; registers.rip = "variable-3"; registers.cs = "keyword"; registers.ds = "keyword"; registers.ss = "keyword"; registers.es = "keyword"; registers.fs = "keyword"; registers.gs = "keyword"; } function armv6(_parserConfig) { // Reference: // http://infocenter.arm.com/help/topic/com.arm.doc.qrc0001l/QRC0001_UAL.pdf // http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/DDI0301H_arm1176jzfs_r0p7_trm.pdf lineCommentStartSymbol = "@"; directives.syntax = "builtin"; registers.r0 = "variable"; registers.r1 = "variable"; registers.r2 = "variable"; registers.r3 = "variable"; registers.r4 = "variable"; registers.r5 = "variable"; registers.r6 = "variable"; registers.r7 = "variable"; registers.r8 = "variable"; registers.r9 = "variable"; registers.r10 = "variable"; registers.r11 = "variable"; registers.r12 = "variable"; registers.sp = "variable-2"; registers.lr = "variable-2"; registers.pc = "variable-2"; registers.r13 = registers.sp; registers.r14 = registers.lr; registers.r15 = registers.pc; custom.push(function(ch, stream) { if (ch === '#') { stream.eatWhile(/\w/); return "number"; } }); } var arch = (parserConfig.architecture || "x86").toLowerCase(); if (arch === "x86") { x86(parserConfig); } else if (arch === "arm" || arch === "armv6") { armv6(parserConfig); } function nextUntilUnescaped(stream, end) { var escaped = false, next; while ((next = stream.next()) != null) { if (next === end && !escaped) { return false; } escaped = !escaped && next === "\\"; } return escaped; } function clikeComment(stream, state) { var maybeEnd = false, ch; while ((ch = stream.next()) != null) { if (ch === "/" && maybeEnd) { state.tokenize = null; break; } maybeEnd = (ch === "*"); } return "comment"; } return { startState: function() { return { tokenize: null }; }, token: function(stream, state) { if (state.tokenize) { return state.tokenize(stream, state); } if (stream.eatSpace()) { return null; } var style, cur, ch = stream.next(); if (ch === "/") { if (stream.eat("*")) { state.tokenize = clikeComment; return clikeComment(stream, state); } } if (ch === lineCommentStartSymbol) { stream.skipToEnd(); return "comment"; } if (ch === '"') { nextUntilUnescaped(stream, '"'); return "string"; } if (ch === '.') { stream.eatWhile(/\w/); cur = stream.current().toLowerCase(); style = directives[cur]; return style || null; } if (ch === '=') { stream.eatWhile(/\w/); return "tag"; } if (ch === '{') { return "braket"; } if (ch === '}') { return "braket"; } if (/\d/.test(ch)) { if (ch === "0" && stream.eat("x")) { stream.eatWhile(/[0-9a-fA-F]/); return "number"; } stream.eatWhile(/\d/); return "number"; } if (/\w/.test(ch)) { stream.eatWhile(/\w/); if (stream.eat(":")) { return 'tag'; } cur = stream.current().toLowerCase(); style = registers[cur]; return style || null; } for (var i = 0; i < custom.length; i++) { style = custom[i](ch, stream, state); if (style) { return style; } } }, lineComment: lineCommentStartSymbol, blockCommentStart: "/*", blockCommentEnd: "*/" }; }); }); application/library/codemirror/mode/gas/index.html000064400000003460147577724760016410 0ustar00 CodeMirror: Gas mode

Gas mode

Handles AT&T assembler syntax (more specifically this handles the GNU Assembler (gas) syntax.) It takes a single optional configuration parameter: architecture, which can be one of "ARM", "ARMv6" or "x86". Including the parameter adds syntax for the registers and special directives for the supplied architecture.

MIME types defined: text/x-gas

application/library/codemirror/mode/gfm/index.html000064400000005027147577724760016410 0ustar00 CodeMirror: GFM mode

GFM mode

Optionally depends on other modes for properly highlighted code blocks.

Parsing/Highlighting Tests: normal, verbose.

application/library/codemirror/mode/gfm/gfm.js000064400000012021147577724760015512 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../markdown/markdown"), require("../../addon/mode/overlay")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../markdown/markdown", "../../addon/mode/overlay"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var urlRE = /^((?:(?:aaas?|about|acap|adiumxtra|af[ps]|aim|apt|attachment|aw|beshare|bitcoin|bolo|callto|cap|chrome(?:-extension)?|cid|coap|com-eventbrite-attendee|content|crid|cvs|data|dav|dict|dlna-(?:playcontainer|playsingle)|dns|doi|dtn|dvb|ed2k|facetime|feed|file|finger|fish|ftp|geo|gg|git|gizmoproject|go|gopher|gtalk|h323|hcp|https?|iax|icap|icon|im|imap|info|ipn|ipp|irc[6s]?|iris(?:\.beep|\.lwz|\.xpc|\.xpcs)?|itms|jar|javascript|jms|keyparc|lastfm|ldaps?|magnet|mailto|maps|market|message|mid|mms|ms-help|msnim|msrps?|mtqp|mumble|mupdate|mvn|news|nfs|nih?|nntp|notes|oid|opaquelocktoken|palm|paparazzi|platform|pop|pres|proxy|psyc|query|res(?:ource)?|rmi|rsync|rtmp|rtsp|secondlife|service|session|sftp|sgn|shttp|sieve|sips?|skype|sm[bs]|snmp|soap\.beeps?|soldat|spotify|ssh|steam|svn|tag|teamspeak|tel(?:net)?|tftp|things|thismessage|tip|tn3270|tv|udp|unreal|urn|ut2004|vemmi|ventrilo|view-source|webcal|wss?|wtai|wyciwyg|xcon(?:-userid)?|xfire|xmlrpc\.beeps?|xmpp|xri|ymsgr|z39\.50[rs]?):(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]|\([^\s()<>]*\))+(?:\([^\s()<>]*\)|[^\s`*!()\[\]{};:'".,<>?«»“”‘’]))/i CodeMirror.defineMode("gfm", function(config, modeConfig) { var codeDepth = 0; function blankLine(state) { state.code = false; return null; } var gfmOverlay = { startState: function() { return { code: false, codeBlock: false, ateSpace: false }; }, copyState: function(s) { return { code: s.code, codeBlock: s.codeBlock, ateSpace: s.ateSpace }; }, token: function(stream, state) { state.combineTokens = null; // Hack to prevent formatting override inside code blocks (block and inline) if (state.codeBlock) { if (stream.match(/^```+/)) { state.codeBlock = false; return null; } stream.skipToEnd(); return null; } if (stream.sol()) { state.code = false; } if (stream.sol() && stream.match(/^```+/)) { stream.skipToEnd(); state.codeBlock = true; return null; } // If this block is changed, it may need to be updated in Markdown mode if (stream.peek() === '`') { stream.next(); var before = stream.pos; stream.eatWhile('`'); var difference = 1 + stream.pos - before; if (!state.code) { codeDepth = difference; state.code = true; } else { if (difference === codeDepth) { // Must be exact state.code = false; } } return null; } else if (state.code) { stream.next(); return null; } // Check if space. If so, links can be formatted later on if (stream.eatSpace()) { state.ateSpace = true; return null; } if (stream.sol() || state.ateSpace) { state.ateSpace = false; if (modeConfig.gitHubSpice !== false) { if(stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+@)?(?:[a-f0-9]{7,40}\b)/)) { // User/Project@SHA // User@SHA // SHA state.combineTokens = true; return "link"; } else if (stream.match(/^(?:[a-zA-Z0-9\-_]+\/)?(?:[a-zA-Z0-9\-_]+)?#[0-9]+\b/)) { // User/Project#Num // User#Num // #Num state.combineTokens = true; return "link"; } } } if (stream.match(urlRE) && stream.string.slice(stream.start - 2, stream.start) != "](" && (stream.start == 0 || /\W/.test(stream.string.charAt(stream.start - 1)))) { // URLs // Taken from http://daringfireball.net/2010/07/improved_regex_for_matching_urls // And then (issue #1160) simplified to make it not crash the Chrome Regexp engine // And then limited url schemes to the CommonMark list, so foo:bar isn't matched as a URL state.combineTokens = true; return "link"; } stream.next(); return null; }, blankLine: blankLine }; var markdownConfig = { underscoresBreakWords: false, taskLists: true, fencedCodeBlocks: '```', strikethrough: true }; for (var attr in modeConfig) { markdownConfig[attr] = modeConfig[attr]; } markdownConfig.name = "markdown"; return CodeMirror.overlayMode(CodeMirror.getMode(config, markdownConfig), gfmOverlay); }, "markdown"); CodeMirror.defineMIME("text/x-gfm", "gfm"); }); application/library/codemirror/mode/gfm/test.js000064400000016624147577724760015735 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({tabSize: 4}, "gfm"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: "gfm", highlightFormatting: true}); function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); } FT("codeBackticks", "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]"); FT("doubleBackticks", "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]"); FT("codeBlock", "[comment&formatting&formatting-code-block ```css]", "[tag foo]", "[comment&formatting&formatting-code-block ```]"); FT("taskList", "[variable-2&formatting&formatting-list&formatting-list-ul - ][meta&formatting&formatting-task [ ]]][variable-2 foo]", "[variable-2&formatting&formatting-list&formatting-list-ul - ][property&formatting&formatting-task [x]]][variable-2 foo]"); FT("formatting_strikethrough", "[strikethrough&formatting&formatting-strikethrough ~~][strikethrough foo][strikethrough&formatting&formatting-strikethrough ~~]"); FT("formatting_strikethrough", "foo [strikethrough&formatting&formatting-strikethrough ~~][strikethrough bar][strikethrough&formatting&formatting-strikethrough ~~]"); MT("emInWordAsterisk", "foo[em *bar*]hello"); MT("emInWordUnderscore", "foo_bar_hello"); MT("emStrongUnderscore", "[strong __][em&strong _foo__][em _] bar"); MT("fencedCodeBlocks", "[comment ```]", "[comment foo]", "", "[comment ```]", "bar"); MT("fencedCodeBlockModeSwitching", "[comment ```javascript]", "[variable foo]", "", "[comment ```]", "bar"); MT("fencedCodeBlockModeSwitchingObjc", "[comment ```objective-c]", "[keyword @property] [variable NSString] [operator *] [variable foo];", "[comment ```]", "bar"); MT("fencedCodeBlocksNoTildes", "~~~", "foo", "~~~"); MT("taskListAsterisk", "[variable-2 * []] foo]", // Invalid; must have space or x between [] "[variable-2 * [ ]]bar]", // Invalid; must have space after ] "[variable-2 * [x]]hello]", // Invalid; must have space after ] "[variable-2 * ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links " [variable-3 * ][property [x]]][variable-3 foo]"); // Valid; can be nested MT("taskListPlus", "[variable-2 + []] foo]", // Invalid; must have space or x between [] "[variable-2 + [ ]]bar]", // Invalid; must have space after ] "[variable-2 + [x]]hello]", // Invalid; must have space after ] "[variable-2 + ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links " [variable-3 + ][property [x]]][variable-3 foo]"); // Valid; can be nested MT("taskListDash", "[variable-2 - []] foo]", // Invalid; must have space or x between [] "[variable-2 - [ ]]bar]", // Invalid; must have space after ] "[variable-2 - [x]]hello]", // Invalid; must have space after ] "[variable-2 - ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links " [variable-3 - ][property [x]]][variable-3 foo]"); // Valid; can be nested MT("taskListNumber", "[variable-2 1. []] foo]", // Invalid; must have space or x between [] "[variable-2 2. [ ]]bar]", // Invalid; must have space after ] "[variable-2 3. [x]]hello]", // Invalid; must have space after ] "[variable-2 4. ][meta [ ]]][variable-2 [world]]]", // Valid; tests reference style links " [variable-3 1. ][property [x]]][variable-3 foo]"); // Valid; can be nested MT("SHA", "foo [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] bar"); MT("SHAEmphasis", "[em *foo ][em&link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); MT("shortSHA", "foo [link be6a8cc] bar"); MT("tooShortSHA", "foo be6a8c bar"); MT("longSHA", "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd22 bar"); MT("badSHA", "foo be6a8cc1c1ecfe9489fb51e4869af15a13fc2cg2 bar"); MT("userSHA", "foo [link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] hello"); MT("userSHAEmphasis", "[em *foo ][em&link bar@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); MT("userProjectSHA", "foo [link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2] world"); MT("userProjectSHAEmphasis", "[em *foo ][em&link bar/hello@be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2][em *]"); MT("num", "foo [link #1] bar"); MT("numEmphasis", "[em *foo ][em&link #1][em *]"); MT("badNum", "foo #1bar hello"); MT("userNum", "foo [link bar#1] hello"); MT("userNumEmphasis", "[em *foo ][em&link bar#1][em *]"); MT("userProjectNum", "foo [link bar/hello#1] world"); MT("userProjectNumEmphasis", "[em *foo ][em&link bar/hello#1][em *]"); MT("vanillaLink", "foo [link http://www.example.com/] bar"); MT("vanillaLinkNoScheme", "foo [link www.example.com] bar"); MT("vanillaLinkHttps", "foo [link https://www.example.com/] bar"); MT("vanillaLinkDataSchema", "foo [link data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==] bar"); MT("vanillaLinkPunctuation", "foo [link http://www.example.com/]. bar"); MT("vanillaLinkExtension", "foo [link http://www.example.com/index.html] bar"); MT("vanillaLinkEmphasis", "foo [em *][em&link http://www.example.com/index.html][em *] bar"); MT("notALink", "foo asfd:asdf bar"); MT("notALink", "[comment ```css]", "[tag foo] {[property color]:[keyword black];}", "[comment ```][link http://www.example.com/]"); MT("notALink", "[comment ``foo `bar` http://www.example.com/``] hello"); MT("notALink", "[comment `foo]", "[comment&link http://www.example.com/]", "[comment `] foo", "", "[link http://www.example.com/]"); MT("headerCodeBlockGithub", "[header&header-1 # heading]", "", "[comment ```]", "[comment code]", "[comment ```]", "", "Commit: [link be6a8cc1c1ecfe9489fb51e4869af15a13fc2cd2]", "Issue: [link #1]", "Link: [link http://www.example.com/]"); MT("strikethrough", "[strikethrough ~~foo~~]"); MT("strikethroughWithStartingSpace", "~~ foo~~"); MT("strikethroughUnclosedStrayTildes", "[strikethrough ~~foo~~~]"); MT("strikethroughUnclosedStrayTildes", "[strikethrough ~~foo ~~]"); MT("strikethroughUnclosedStrayTildes", "[strikethrough ~~foo ~~ bar]"); MT("strikethroughUnclosedStrayTildes", "[strikethrough ~~foo ~~ bar~~]hello"); MT("strikethroughOneLetter", "[strikethrough ~~a~~]"); MT("strikethroughWrapped", "[strikethrough ~~foo]", "[strikethrough foo~~]"); MT("strikethroughParagraph", "[strikethrough ~~foo]", "", "foo[strikethrough ~~bar]"); MT("strikethroughEm", "[strikethrough ~~foo][em&strikethrough *bar*][strikethrough ~~]"); MT("strikethroughEm", "[em *][em&strikethrough ~~foo~~][em *]"); MT("strikethroughStrong", "[strikethrough ~~][strong&strikethrough **foo**][strikethrough ~~]"); MT("strikethroughStrong", "[strong **][strong&strikethrough ~~foo~~][strong **]"); })(); application/library/codemirror/mode/gherkin/index.html000064400000003036147577724760017264 0ustar00 CodeMirror: Gherkin mode

Gherkin mode

MIME types defined: text/x-feature.

application/library/codemirror/mode/gherkin/gherkin.js000064400000031711147577724760017255 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /* Gherkin mode - http://www.cukes.info/ Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues */ // Following Objs from Brackets implementation: https://github.com/tregusti/brackets-gherkin/blob/master/main.js //var Quotes = { // SINGLE: 1, // DOUBLE: 2 //}; //var regex = { // keywords: /(Feature| {2}(Scenario|In order to|As|I)| {4}(Given|When|Then|And))/ //}; (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("gherkin", function () { return { startState: function () { return { lineNumber: 0, tableHeaderLine: false, allowFeature: true, allowBackground: false, allowScenario: false, allowSteps: false, allowPlaceholders: false, allowMultilineArgument: false, inMultilineString: false, inMultilineTable: false, inKeywordLine: false }; }, token: function (stream, state) { if (stream.sol()) { state.lineNumber++; state.inKeywordLine = false; if (state.inMultilineTable) { state.tableHeaderLine = false; if (!stream.match(/\s*\|/, false)) { state.allowMultilineArgument = false; state.inMultilineTable = false; } } } stream.eatSpace(); if (state.allowMultilineArgument) { // STRING if (state.inMultilineString) { if (stream.match('"""')) { state.inMultilineString = false; state.allowMultilineArgument = false; } else { stream.match(/.*/); } return "string"; } // TABLE if (state.inMultilineTable) { if (stream.match(/\|\s*/)) { return "bracket"; } else { stream.match(/[^\|]*/); return state.tableHeaderLine ? "header" : "string"; } } // DETECT START if (stream.match('"""')) { // String state.inMultilineString = true; return "string"; } else if (stream.match("|")) { // Table state.inMultilineTable = true; state.tableHeaderLine = true; return "bracket"; } } // LINE COMMENT if (stream.match(/#.*/)) { return "comment"; // TAG } else if (!state.inKeywordLine && stream.match(/@\S+/)) { return "tag"; // FEATURE } else if (!state.inKeywordLine && state.allowFeature && stream.match(/(機胜|ćŠŸèƒœ|ăƒ•ă‚ŁăƒŒăƒăƒŁ|Ʞ늄|àč‚àž„àžŁàž‡àž«àž„àž±àž|àž„àž§àžČàžĄàžȘàžČàžĄàžČàžŁàž–|àž„àž§àžČàžĄàž•àč‰àž­àž‡àžàžČàžŁàž—àžČàž‡àž˜àžžàžŁàžàžŽàžˆ|àČčàł†àČšàłàȚàČł|à°—à±à°Łà°źà±|àšźà©àščàšŸàš‚àšŠàš°àšŸ|àššàš•àš¶ àššà©àščàšŸàš°|àš–àšŸàšžà©€àš…àš€|à€°à„‚à€Ș à€Čà„‡à€–|ÙˆÙÛŒÚ˜ÚŻÛŒ|ŰźŰ§Ű”ÙŠŰ©|ŚȘŚ›Ś•Ś Ś”|Đ€ŃƒĐœĐșŃ†Ń–ĐŸĐœĐ°Đ»|Đ€ŃƒĐœĐșцоя|Đ€ŃƒĐœĐșŃ†ĐžĐŸĐœĐ°Đ»ĐœĐŸŃŃ‚|Đ€ŃƒĐœĐșŃ†ĐžĐŸĐœĐ°Đ»|ÒźĐ·Đ”ĐœŃ‡Ó™Đ»Đ”ĐșлДлДĐș|ĐĄĐČĐŸĐčстĐČĐŸ|ĐžŃĐŸĐ±ĐžĐœĐ°|ĐœÓ©ĐŒĐșĐžĐœĐ»Đ”Đș|ĐœĐŸĐłŃƒŃ›ĐœĐŸŃŃ‚|ΛΔÎčÏ„ÎżÏ…ÏÎłÎŻÎ±|ΔυΜατότητα|WƂaƛciwoƛć|VlastnosĆ„|Trajto|TĂ­nh năng|Savybė|Pretty much|PoĆŸiadavka|PoĆŸadavek|Potrzeba biznesowa|Özellik|Osobina|Ominaisuus|Omadus|OH HAI|Mogućnost|Mogucnost|JellemzƑ|HwĂŠt|Hwaet|FunzionalitĂ |FunktionalitĂ©it|FunktionalitĂ€t|Funkcja|Funkcionalnost|Funkcionalitāte|Funkcia|Fungsi|Functionaliteit|Funcționalitate|FuncĆŁionalitate|Functionalitate|Funcionalitat|Funcionalidade|FonctionnalitĂ©|Fitur|Fīča|Feature|Eiginleiki|Egenskap|Egenskab|CaracterĂ­stica|Caracteristica|Business Need|Aspekt|Arwedd|Ahoy matey!|Ability):/)) { state.allowScenario = true; state.allowBackground = true; state.allowPlaceholders = false; state.allowSteps = false; state.allowMultilineArgument = false; state.inKeywordLine = true; return "keyword"; // BACKGROUND } else if (!state.inKeywordLine && state.allowBackground && stream.match(/(èƒŒæ™Ż|ë°°êČœ|àčàž™àž§àž„àžŽàž”|àČčàČżàČšàłàČšàł†àČČàł†|చేà°Șà°„à±à°Żà°‚|àšȘàšżàš›à©‹àš•à©œ|à€Șà„ƒà€·à„à€ à€­à„‚à€źà€ż|ŰČمینه|Ű§Ù„ŰźÙ„ÙÙŠŰ©|ŚšŚ§Śą|барох|ĐŸŃ€Đ”ĐŽŃ‹ŃŃ‚ĐŸŃ€ĐžŃ|ĐŸŃ€Đ”ĐŽĐžŃŃ‚ĐŸŃ€ĐžŃ|ĐŸĐŸĐ·Đ°ĐŽĐžĐœĐ°|ĐŸĐ”Ń€Đ”ĐŽŃƒĐŒĐŸĐČĐ°|ĐžŃĐœĐŸĐČĐ°|ĐšĐŸĐœŃ‚Đ”Đșст|ĐšĐ”Ń€Đ”Ńˆ|΄πόÎČÎ±ÎžÏÎż|ZaƂoĆŒenia|Yo\-ho\-ho|Tausta|Taust|Situācija|Rerefons|Pozadina|Pozadie|PozadĂ­|Osnova|Latar Belakang|Kontext|Konteksts|Kontekstas|Kontekst|HĂĄttĂ©r|Hannergrond|Grundlage|GeçmiƟ|Fundo|Fono|First off|Dis is what went down|Dasar|Contexto|Contexte|Context|Contesto|CenĂĄrio de Fundo|Cenario de Fundo|Cefndir|Bối cáșŁnh|Bakgrunnur|Bakgrunn|Bakgrund|Baggrund|Background|B4|Antecedents|Antecedentes|Ær|Aer|Achtergrond):/)) { state.allowPlaceholders = false; state.allowSteps = true; state.allowBackground = false; state.allowMultilineArgument = false; state.inKeywordLine = true; return "keyword"; // SCENARIO OUTLINE } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(ć Žæ™Żć€§ç¶±|ćœșæ™Żć€§çșČ|ćŠ‡æœŹć€§ç¶±|ć‰§æœŹć€§çșČ|テンプレ|ă‚·ăƒŠăƒȘă‚Șăƒ†ăƒłăƒ—ăƒŹăƒŒăƒˆ|ă‚·ăƒŠăƒȘă‚Șテンプレ|ă‚·ăƒŠăƒȘă‚Șă‚ąă‚Šăƒˆăƒ©ă‚€ăƒł|ì‹œë‚˜ëŠŹì˜€ 개요|àžȘàžŁàžžàž›àč€àž«àž•àžžàžàžČàžŁàž“àčŒ|àč‚àž„àžŁàž‡àžȘàžŁàč‰àžČàž‡àž‚àž­àž‡àč€àž«àž•àžžàžàžČàžŁàž“àčŒ|àČ”àČżàČ”àČ°àČŁàł†|à°•à°„à°šà°‚|àšȘàšŸàš•àš„àšŸ àš°à©‚àšȘ àš°à©‡àš–àšŸ|àšȘàšŸàš•àš„àšŸ àšąàšŸàš‚àššàšŸ|à€Șà€°à€żà€Šà„ƒà€¶à„à€Ż à€°à„‚à€Șà€°à„‡à€–à€Ÿ|ŰłÙŠÙ†Ű§Ű±ÙŠÙˆ Ù…ŰźŰ·Ű·|Ű§Ù„ÚŻÙˆÛŒ ŰłÙ†Ű§Ű±ÛŒÙˆ|ŚȘŚ‘Ś Ś™ŚȘ ŚȘŚšŚ—Ś™Ś©|ĐĄŃ†Đ”ĐœĐ°Ń€ĐžĐčĐœŃ‹ÒŁ Ń‚Ó©Đ·Đ”Đ»Đ”ŃˆĐ”|ĐĄŃ†Đ”ĐœĐ°Ń€ĐžĐč струĐșтурасо|СтруĐșтура ŃŃ†Đ”ĐœĐ°Ń€Ń–ŃŽ|СтруĐșтура ŃŃ†Đ”ĐœĐ°Ń€ĐžŃ|СтруĐșтура ŃŃ†Đ”ĐœĐ°Ń€ĐžŃ˜Đ°|ĐĄĐșоца|Đ Đ°ĐŒĐșĐ° ĐœĐ° ŃŃ†Đ”ĐœĐ°Ń€ĐžĐč|ĐšĐŸĐœŃ†Đ”ĐżŃ‚|ΠΔρÎčÎłÏÎ±Ï†Îź ÎŁÎ”ÎœÎ±ÏÎŻÎżÏ…|Wharrimean is|Template Situai|Template Senario|Template Keadaan|Tapausaihio|Szenariogrundriss|Szablon scenariusza|Swa hwĂŠr swa|Swa hwaer swa|Struktura scenarija|Structură scenariu|Structura scenariu|Skica|Skenario konsep|Shiver me timbers|Senaryo taslağı|Schema dello scenario|Scenariomall|Scenariomal|Scenario Template|Scenario Outline|Scenario Amlinellol|Scenārijs pēc parauga|Scenarijaus ĆĄablonas|Reckon it's like|Raamstsenaarium|Plang vum Szenario|Plan du ScĂ©nario|Plan du scĂ©nario|Osnova scĂ©náƙe|Osnova ScenĂĄra|Náčrt ScenĂĄru|Náčrt ScĂ©náƙe|Náčrt ScenĂĄra|MISHUN SRSLY|Menggariskan Senario|LĂœsing DĂŠma|LĂœsing AtburĂ°arĂĄsar|Konturo de la scenaro|Koncept|Khung tĂŹnh huống|Khung kịch báșŁn|ForgatĂłkönyv vĂĄzlat|Esquema do CenĂĄrio|Esquema do Cenario|Esquema del escenario|Esquema de l'escenari|Esbozo do escenario|Delineação do CenĂĄrio|Delineacao do Cenario|All y'all|Abstrakt Scenario|Abstract Scenario):/)) { state.allowPlaceholders = true; state.allowSteps = true; state.allowMultilineArgument = false; state.inKeywordLine = true; return "keyword"; // EXAMPLES } else if (state.allowScenario && stream.match(/(äŸ‹ć­|䟋|ă‚”ăƒłăƒ—ăƒ«|예|àžŠàžžàž”àž‚àž­àž‡àč€àž«àž•àžžàžàžČàžŁàž“àčŒ|àžŠàžžàž”àž‚àž­àž‡àž•àž±àž§àž­àžąàčˆàžČàž‡|àȉàČŠàČŸàČčàČ°àČŁàł†àȗàČłàł|ఉఊటà°čà°°à°Łà°Čు|àš‰àšŠàšŸàščàš°àššàšŸàš‚|à€‰à€Šà€Ÿà€čà€°à€Ł|نمونه Ù‡Ű§|Ű§Ù…Ű«Ù„Ű©|Ś“Ś•Ś’ŚžŚŚ•ŚȘ|ÒźŃ€ĐœÓ™Đșләр|ĐĄŃ†Đ”ĐœĐ°Ń€ĐžŃ˜Đž|ĐŸŃ€ĐžĐŒĐ”Ń€Ń‹|ĐŸŃ€ĐžĐŒĐ”Ń€Đž|ПроĐșлаЎО|ĐœĐžŃĐŸĐ»Đ»Đ°Ń€|ĐœĐžŃĐ°Đ»Đ»Đ°Ń€|ÎŁÎ”ÎœÎŹÏÎčα|Î Î±ÏÎ±ÎŽÎ”ÎŻÎłÎŒÎ±Ï„Î±|You'll wanna|Voorbeelden|Variantai|Tapaukset|Se ĂŸe|Se the|Se Ă°e|Scenarios|Scenariji|Scenarijai|PrzykƂady|Primjeri|Primeri|Pƙíklady|PrĂ­klady|Piemēri|PĂ©ldĂĄk|PavyzdĆŸiai|Paraugs|Örnekler|Juhtumid|Exemplos|Exemples|Exemple|Exempel|EXAMPLZ|Examples|Esempi|Enghreifftiau|Ekzemploj|Eksempler|Ejemplos|Dữ liệu|Dead men tell no tales|DĂŠmi|Contoh|CenĂĄrios|Cenarios|Beispiller|Beispiele|AtburĂ°arĂĄsir):/)) { state.allowPlaceholders = false; state.allowSteps = true; state.allowBackground = false; state.allowMultilineArgument = true; return "keyword"; // SCENARIO } else if (!state.inKeywordLine && state.allowScenario && stream.match(/(ć Žæ™Ż|ćœșæ™Ż|ćŠ‡æœŹ|ć‰§æœŹ|ă‚·ăƒŠăƒȘă‚Ș|ì‹œë‚˜ëŠŹì˜€|àč€àž«àž•àžžàžàžČàžŁàž“àčŒ|àȕàČ„àČŸàČžàČŸàČ°àČŸàȂàȶ|à°žà°šà±à°šà°żà°”à±‡à°¶à°‚|àšȘàšŸàš•àš„àšŸ|à€Șà€°à€żà€Šà„ƒà€¶à„à€Ż|ŰłÙŠÙ†Ű§Ű±ÙŠÙˆ|ŰłÙ†Ű§Ű±ÛŒÙˆ|ŚȘŚšŚ—Ś™Ś©|ĐĄŃ†Đ”ĐœĐ°Ń€Ń–Đč|ĐĄŃ†Đ”ĐœĐ°Ń€ĐžĐŸ|ĐĄŃ†Đ”ĐœĐ°Ń€ĐžĐč|ĐŸŃ€ĐžĐŒĐ”Ń€|ÎŁÎ”ÎœÎŹÏÎčÎż|TĂŹnh huống|The thing of it is|Tapaus|Szenario|Swa|Stsenaarium|Skenario|Situai|Senaryo|Senario|Scenaro|Scenariusz|Scenariu|ScĂ©nario|Scenario|Scenarijus|Scenārijs|Scenarij|Scenarie|ScĂ©náƙ|ScenĂĄr|Primer|MISHUN|Kịch báșŁn|Keadaan|Heave to|ForgatĂłkönyv|Escenario|Escenari|CenĂĄrio|Cenario|Awww, look mate|AtburĂ°arĂĄs):/)) { state.allowPlaceholders = false; state.allowSteps = true; state.allowBackground = false; state.allowMultilineArgument = false; state.inKeywordLine = true; return "keyword"; // STEPS } else if (!state.inKeywordLine && state.allowSteps && stream.match(/(那éșŒ|那äčˆ|而䞔|當|ćœ“|ćč¶äž”|ćŒæ™‚|ćŒæ—¶|ć‰æ|ć‡èźŸ|ć‡èš­|恇漚|恇橂|äœ†æ˜Ż|äœ†ă—|侩侔|もし|ăȘらば|ただし|しかし|か぀|하지만|ìĄ°ê±Ž|뚌저|만음|만앜|당|ê·žëŠŹêł |ê·žëŸŹë©Ž|àčàž„àž° |àč€àžĄàž·àčˆàž­ |àčàž•àčˆ |àž”àž±àž‡àž™àž±àč‰àž™ |àžàžłàž«àž™àž”àčƒàž«àč‰ |àČžàłàČ„àČżàČ€àČżàČŻàČšàłàČšàł |àČźàČ€àłàČ€àł |àČšàČżàł•àČĄàČżàČŠ |àČšàȂàČ€àČ° |àȆàČŠàČ°àł† |à°źà°°à°żà°Żà± |చెà°Ș్à°Șà°Źà°Ąà°żà°šà°Šà°ż |à°•à°Ÿà°šà°ż |ఈ à°Șà°°à°żà°žà±à°„à°żà°€à°żà°Čో |అà°Ș్à°Șà±à°Ąà± |àšȘàš° |àš€àšŠ |àšœà©‡àš•àš° |àšœàšżàš”à©‡àš‚ àš•àšż |àšœàšŠà©‹àš‚ |àš…àš€à©‡ |à€Żà€Šà€ż |à€Șà€°à€šà„à€€à„ |à€Șà€° |à€€à€Ź |à€€à€Šà€Ÿ |à€€à€„à€Ÿ |à€œà€Ź |à€šà„‚à€‚à€•à€ż |à€•à€żà€šà„à€€à„ |à€•à€Šà€Ÿ |à€”à€° |à€…à€—à€° |و |Ù‡Ù†ÚŻŰ§Ù…ÛŒ |مŰȘى |لكن |ŰčÙ†ŰŻÙ…Ű§ |Ű«Ù… |ŰšÙŰ±Ű¶ |ۚۧ ÙŰ±Ű¶ |Ű§Ù…Ű§ |Ű§Ű°Ű§Ù‹ |ŰąÙ†ÚŻŰ§Ù‡ |Ś›ŚŚ©Śš |Ś•Ś’Ś |Ś‘Ś”Ś™Ś ŚȘŚŸ |ŚŚ–Ś™ |ŚŚ– |ŚŚ‘Śœ |ĐŻĐșŃ‰ĐŸ |ÒșÓ™ĐŒ |ĐŁĐœĐŽĐ° |ĐąĐŸĐŽŃ– |ĐąĐŸĐłĐŽĐ° |ĐąĐŸ |йаĐșжД |йа |Пусть |ĐŸŃ€ĐžĐżŃƒŃŃ‚ĐžĐŒĐŸ, Ń‰ĐŸ |ĐŸŃ€ĐžĐżŃƒŃŃ‚ĐžĐŒĐŸ |ĐžĐœĐŽĐ° |ĐĐŸ |ĐĐ”Ń…Đ°Đč |ĐÓ™Ń‚ĐžÒ—Ó™ĐŽÓ™ |ЛДĐșĐžĐœ |ЛәĐșĐžĐœ |ĐšĐŸĐ»Đž |ĐšĐŸĐłĐŽĐ° |ĐšĐŸĐłĐ°Ń‚ĐŸ |КаЮа |КаЮ |К Ń‚ĐŸĐŒŃƒ жД |І |И |Đ—Đ°ĐŽĐ°Ń‚ĐŸ |ЗаЮато |Đ—Đ°ĐŽĐ°Ń‚Đ” |ЕслО |Đ”ĐŸĐżŃƒŃŃ‚ĐžĐŒ |Đ”Đ°ĐœĐŸ |Đ”Đ°ĐŽĐ”ĐœĐŸ |Вә |Ва |Đ‘ĐžŃ€ĐŸĐș |Ó˜ĐŒĐŒĐ° |ӘĐčтоĐș |Әгәр |ĐĐŒĐŒĐŸ |АлО |АлД |Агар |А таĐșĐŸĐ¶ |А |΀ότΔ |ΌταΜ |ΚαÎč |Î”Î”ÎŽÎżÎŒÎ­ÎœÎżÏ… |ΑλλΏ |Þurh |Þegar |Þa ĂŸe |Þá |Þa |Zatati |ZakƂadając |Zadato |Zadate |Zadano |Zadani |Zadan |Za pƙedpokladu |Za predpokladu |Youse know when youse got |Youse know like when |Yna |Yeah nah |Y'know |Y |Wun |Wtedy |When y'all |When |Wenn |WEN |wann |Ve |VĂ  |Und |Un |ugeholl |Too right |Thurh |ThĂŹ |Then y'all |Then |Tha the |Tha |Tetapi |Tapi |Tak |Tada |Tad |Stel |Soit |Siis |Și |ƞi |Si |Sed |Se |SĂ„ |Quando |Quand |Quan |Pryd |Potom |Pokud |PokiaÄŸ |PerĂČ |Pero |Pak |Oraz |Onda |Ond |Oletetaan |Og |Och |O zaman |Niin |NhÆ°ng |NĂ€r |NĂ„r |Mutta |Men |Mas |Maka |Majd |Mając |Mais |Maar |mĂ€ |Ma |Lorsque |Lorsqu'|Logo |Let go and haul |Kun |Kuid |Kui |Kiedy |Khi |Ketika |Kemudian |Keď |KdyĆŸ |Kaj |Kai |Kada |Kad |JeĆŒeli |Jeƛli |Ja |It's just unbelievable |Ir |I CAN HAZ |I |Ha |Givun |Givet |Given y'all |Given |Gitt |Gegeven |Gegeben seien |Gegeben sei |Gdy |Gangway! |Fakat |Étant donnĂ©s |Etant donnĂ©s |Étant donnĂ©es |Etant donnĂ©es |Étant donnĂ©e |Etant donnĂ©e |Étant donnĂ© |Etant donnĂ© |Et |És |Entonces |EntĂłn |EntĂŁo |Entao |En |Eğer ki |Ef |Eeldades |E |Ðurh |Duota |Dun |DonitaÄ”o |Donat |Donada |Do |Diyelim ki |Diberi |Dengan |Den youse gotta |DEN |De |Dato |Dați fiind |DaĆŁi fiind |Dati fiind |Dati |Date fiind |Date |Data |Dat fiind |Dar |Dann |dann |Dan |Dados |Dado |Dadas |Dada |Ða Ă°e |Ða |Cuando |Cho |Cando |CĂąnd |Cand |Cal |But y'all |But at the end of the day I reckon |BUT |But |Buh |Blimey! |Biáșżt |Bet |Bagi |Aye |awer |Avast! |Atunci |Atesa |AtĂšs |Apabila |Anrhegedig a |Angenommen |And y'all |And |AN |An |an |Amikor |Amennyiben |Ama |Als |Alors |Allora |Ali |Aleshores |Ale |Akkor |Ak |Adott |Ac |Aber |A zĂĄroveƈ |A tieĆŸ |A taktieĆŸ |A takĂ© |A |a |7 |\* )/)) { state.inStep = true; state.allowPlaceholders = true; state.allowMultilineArgument = true; state.inKeywordLine = true; return "keyword"; // INLINE STRING } else if (stream.match(/"[^"]*"?/)) { return "string"; // PLACEHOLDER } else if (state.allowPlaceholders && stream.match(/<[^>]*>?/)) { return "variable"; // Fall through } else { stream.next(); stream.eatWhile(/[^@"<#]/); return null; } } }; }); CodeMirror.defineMIME("text/x-feature", "gherkin"); }); application/library/codemirror/mode/go/go.js000064400000013501147577724760015206 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("go", function(config) { var indentUnit = config.indentUnit; var keywords = { "break":true, "case":true, "chan":true, "const":true, "continue":true, "default":true, "defer":true, "else":true, "fallthrough":true, "for":true, "func":true, "go":true, "goto":true, "if":true, "import":true, "interface":true, "map":true, "package":true, "range":true, "return":true, "select":true, "struct":true, "switch":true, "type":true, "var":true, "bool":true, "byte":true, "complex64":true, "complex128":true, "float32":true, "float64":true, "int8":true, "int16":true, "int32":true, "int64":true, "string":true, "uint8":true, "uint16":true, "uint32":true, "uint64":true, "int":true, "uint":true, "uintptr":true, "error": true }; var atoms = { "true":true, "false":true, "iota":true, "nil":true, "append":true, "cap":true, "close":true, "complex":true, "copy":true, "imag":true, "len":true, "make":true, "new":true, "panic":true, "print":true, "println":true, "real":true, "recover":true }; var isOperatorChar = /[+\-*&^%:=<>!|\/]/; var curPunc; function tokenBase(stream, state) { var ch = stream.next(); if (ch == '"' || ch == "'" || ch == "`") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (/[\d\.]/.test(ch)) { if (ch == ".") { stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/); } else if (ch == "0") { stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/); } else { stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/); } return "number"; } if (/[\[\]{}\(\),;\:\.]/.test(ch)) { curPunc = ch; return null; } if (ch == "/") { if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\$_\xa1-\uffff]/); var cur = stream.current(); if (keywords.propertyIsEnumerable(cur)) { if (cur == "case" || cur == "default") curPunc = "case"; return "keyword"; } if (atoms.propertyIsEnumerable(cur)) return "atom"; return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) {end = true; break;} escaped = !escaped && quote != "`" && next == "\\"; } if (end || !(escaped || quote == "`")) state.tokenize = tokenBase; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { return state.context = new Context(state.indented, col, type, null, state.context); } function popContext(state) { if (!state.context.prev) return; var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } // Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; if (ctx.type == "case") ctx.type = "}"; } if (stream.eatSpace()) return null; curPunc = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment") return style; if (ctx.align == null) ctx.align = true; if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "case") ctx.type = "case"; else if (curPunc == "}" && ctx.type == "}") ctx = popContext(state); else if (curPunc == ctx.type) popContext(state); state.startOfLine = false; return style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase && state.tokenize != null) return 0; var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); if (ctx.type == "case" && /^(?:case|default)\b/.test(textAfter)) { state.context.type = "}"; return ctx.indented; } var closing = firstChar == ctx.type; if (ctx.align) return ctx.column + (closing ? 0 : 1); else return ctx.indented + (closing ? 0 : indentUnit); }, electricChars: "{}):", fold: "brace", blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//" }; }); CodeMirror.defineMIME("text/x-go", "go"); }); application/library/codemirror/mode/go/index.html000064400000004176147577724760016250 0ustar00 CodeMirror: Go mode

Go mode

MIME type: text/x-go

application/library/codemirror/mode/groovy/index.html000064400000004201147577724760017155 0ustar00 CodeMirror: Groovy mode

Groovy mode

MIME types defined: text/x-groovy

application/library/codemirror/mode/groovy/groovy.js000064400000017306147577724760017055 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("groovy", function(config) { function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var keywords = words( "abstract as assert boolean break byte case catch char class const continue def default " + "do double else enum extends final finally float for goto if implements import in " + "instanceof int interface long native new package private protected public return " + "short static strictfp super switch synchronized threadsafe throw throws transient " + "try void volatile while"); var blockKeywords = words("catch class do else finally for if switch try while enum interface def"); var standaloneKeywords = words("return break continue"); var atoms = words("null true false this"); var curPunc; function tokenBase(stream, state) { var ch = stream.next(); if (ch == '"' || ch == "'") { return startString(ch, stream, state); } if (/[\[\]{}\(\),;\:\.]/.test(ch)) { curPunc = ch; return null; } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); if (stream.eat(/eE/)) { stream.eat(/\+\-/); stream.eatWhile(/\d/); } return "number"; } if (ch == "/") { if (stream.eat("*")) { state.tokenize.push(tokenComment); return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } if (expectExpression(state.lastToken, false)) { return startString(ch, stream, state); } } if (ch == "-" && stream.eat(">")) { curPunc = "->"; return null; } if (/[+\-*&%=<>!?|\/~]/.test(ch)) { stream.eatWhile(/[+\-*&%=<>|~]/); return "operator"; } stream.eatWhile(/[\w\$_]/); if (ch == "@") { stream.eatWhile(/[\w\$_\.]/); return "meta"; } if (state.lastToken == ".") return "property"; if (stream.eat(":")) { curPunc = "proplabel"; return "property"; } var cur = stream.current(); if (atoms.propertyIsEnumerable(cur)) { return "atom"; } if (keywords.propertyIsEnumerable(cur)) { if (blockKeywords.propertyIsEnumerable(cur)) curPunc = "newstatement"; else if (standaloneKeywords.propertyIsEnumerable(cur)) curPunc = "standalone"; return "keyword"; } return "variable"; } tokenBase.isBase = true; function startString(quote, stream, state) { var tripleQuoted = false; if (quote != "/" && stream.eat(quote)) { if (stream.eat(quote)) tripleQuoted = true; else return "string"; } function t(stream, state) { var escaped = false, next, end = !tripleQuoted; while ((next = stream.next()) != null) { if (next == quote && !escaped) { if (!tripleQuoted) { break; } if (stream.match(quote + quote)) { end = true; break; } } if (quote == '"' && next == "$" && !escaped && stream.eat("{")) { state.tokenize.push(tokenBaseUntilBrace()); return "string"; } escaped = !escaped && next == "\\"; } if (end) state.tokenize.pop(); return "string"; } state.tokenize.push(t); return t(stream, state); } function tokenBaseUntilBrace() { var depth = 1; function t(stream, state) { if (stream.peek() == "}") { depth--; if (depth == 0) { state.tokenize.pop(); return state.tokenize[state.tokenize.length-1](stream, state); } } else if (stream.peek() == "{") { depth++; } return tokenBase(stream, state); } t.isBase = true; return t; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize.pop(); break; } maybeEnd = (ch == "*"); } return "comment"; } function expectExpression(last, newline) { return !last || last == "operator" || last == "->" || /[\.\[\{\(,;:]/.test(last) || last == "newstatement" || last == "keyword" || last == "proplabel" || (last == "standalone" && !newline); } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { return state.context = new Context(state.indented, col, type, null, state.context); } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } // Interface return { startState: function(basecolumn) { return { tokenize: [tokenBase], context: new Context((basecolumn || 0) - config.indentUnit, 0, "top", false), indented: 0, startOfLine: true, lastToken: null }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; // Automatic semicolon insertion if (ctx.type == "statement" && !expectExpression(state.lastToken, true)) { popContext(state); ctx = state.context; } } if (stream.eatSpace()) return null; curPunc = null; var style = state.tokenize[state.tokenize.length-1](stream, state); if (style == "comment") return style; if (ctx.align == null) ctx.align = true; if ((curPunc == ";" || curPunc == ":") && ctx.type == "statement") popContext(state); // Handle indentation for {x -> \n ... } else if (curPunc == "->" && ctx.type == "statement" && ctx.prev.type == "}") { popContext(state); state.context.align = false; } else if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "}") { while (ctx.type == "statement") ctx = popContext(state); if (ctx.type == "}") ctx = popContext(state); while (ctx.type == "statement") ctx = popContext(state); } else if (curPunc == ctx.type) popContext(state); else if (ctx.type == "}" || ctx.type == "top" || (ctx.type == "statement" && curPunc == "newstatement")) pushContext(state, stream.column(), "statement"); state.startOfLine = false; state.lastToken = curPunc || style; return style; }, indent: function(state, textAfter) { if (!state.tokenize[state.tokenize.length-1].isBase) return 0; var firstChar = textAfter && textAfter.charAt(0), ctx = state.context; if (ctx.type == "statement" && !expectExpression(state.lastToken, true)) ctx = ctx.prev; var closing = firstChar == ctx.type; if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : config.indentUnit); else if (ctx.align) return ctx.column + (closing ? 0 : 1); else return ctx.indented + (closing ? 0 : config.indentUnit); }, electricChars: "{}", closeBrackets: {triples: "'\""}, fold: "brace" }; }); CodeMirror.defineMIME("text/x-groovy", "groovy"); }); application/library/codemirror/mode/haml/index.html000064400000004027147577724760016557 0ustar00 CodeMirror: HAML mode

HAML mode

MIME types defined: text/x-haml.

Parsing/Highlighting Tests: normal, verbose.

application/library/codemirror/mode/haml/haml.js000064400000012351147577724760016040 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../ruby/ruby")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../ruby/ruby"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; // full haml mode. This handled embedded ruby and html fragments too CodeMirror.defineMode("haml", function(config) { var htmlMode = CodeMirror.getMode(config, {name: "htmlmixed"}); var rubyMode = CodeMirror.getMode(config, "ruby"); function rubyInQuote(endQuote) { return function(stream, state) { var ch = stream.peek(); if (ch == endQuote && state.rubyState.tokenize.length == 1) { // step out of ruby context as it seems to complete processing all the braces stream.next(); state.tokenize = html; return "closeAttributeTag"; } else { return ruby(stream, state); } }; } function ruby(stream, state) { if (stream.match("-#")) { stream.skipToEnd(); return "comment"; } return rubyMode.token(stream, state.rubyState); } function html(stream, state) { var ch = stream.peek(); // handle haml declarations. All declarations that cant be handled here // will be passed to html mode if (state.previousToken.style == "comment" ) { if (state.indented > state.previousToken.indented) { stream.skipToEnd(); return "commentLine"; } } if (state.startOfLine) { if (ch == "!" && stream.match("!!")) { stream.skipToEnd(); return "tag"; } else if (stream.match(/^%[\w:#\.]+=/)) { state.tokenize = ruby; return "hamlTag"; } else if (stream.match(/^%[\w:]+/)) { return "hamlTag"; } else if (ch == "/" ) { stream.skipToEnd(); return "comment"; } } if (state.startOfLine || state.previousToken.style == "hamlTag") { if ( ch == "#" || ch == ".") { stream.match(/[\w-#\.]*/); return "hamlAttribute"; } } // donot handle --> as valid ruby, make it HTML close comment instead if (state.startOfLine && !stream.match("-->", false) && (ch == "=" || ch == "-" )) { state.tokenize = ruby; return state.tokenize(stream, state); } if (state.previousToken.style == "hamlTag" || state.previousToken.style == "closeAttributeTag" || state.previousToken.style == "hamlAttribute") { if (ch == "(") { state.tokenize = rubyInQuote(")"); return state.tokenize(stream, state); } else if (ch == "{") { if (!stream.match(/^\{%.*/)) { state.tokenize = rubyInQuote("}"); return state.tokenize(stream, state); } } } return htmlMode.token(stream, state.htmlState); } return { // default to html mode startState: function() { var htmlState = CodeMirror.startState(htmlMode); var rubyState = CodeMirror.startState(rubyMode); return { htmlState: htmlState, rubyState: rubyState, indented: 0, previousToken: { style: null, indented: 0}, tokenize: html }; }, copyState: function(state) { return { htmlState : CodeMirror.copyState(htmlMode, state.htmlState), rubyState: CodeMirror.copyState(rubyMode, state.rubyState), indented: state.indented, previousToken: state.previousToken, tokenize: state.tokenize }; }, token: function(stream, state) { if (stream.sol()) { state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); state.startOfLine = false; // dont record comment line as we only want to measure comment line with // the opening comment block if (style && style != "commentLine") { state.previousToken = { style: style, indented: state.indented }; } // if current state is ruby and the previous token is not `,` reset the // tokenize to html if (stream.eol() && state.tokenize == ruby) { stream.backUp(1); var ch = stream.peek(); stream.next(); if (ch && ch != ",") { state.tokenize = html; } } // reprocess some of the specific style tag when finish setting previousToken if (style == "hamlTag") { style = "tag"; } else if (style == "commentLine") { style = "comment"; } else if (style == "hamlAttribute") { style = "attribute"; } else if (style == "closeAttributeTag") { style = null; } return style; } }; }, "htmlmixed", "ruby"); CodeMirror.defineMIME("text/x-haml", "haml"); }); application/library/codemirror/mode/haml/test.js000064400000005702147577724760016100 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "haml"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } // Requires at least one media query MT("elementName", "[tag %h1] Hey There"); MT("oneElementPerLine", "[tag %h1] Hey There %h2"); MT("idSelector", "[tag %h1][attribute #test] Hey There"); MT("classSelector", "[tag %h1][attribute .hello] Hey There"); MT("docType", "[tag !!! XML]"); MT("comment", "[comment / Hello WORLD]"); MT("notComment", "[tag %h1] This is not a / comment "); MT("attributes", "[tag %a]([variable title][operator =][string \"test\"]){[atom :title] [operator =>] [string \"test\"]}"); MT("htmlCode", "[tag&bracket <][tag h1][tag&bracket >]Title[tag&bracket ]"); MT("rubyBlock", "[operator =][variable-2 @item]"); MT("selectorRubyBlock", "[tag %a.selector=] [variable-2 @item]"); MT("nestedRubyBlock", "[tag %a]", " [operator =][variable puts] [string \"test\"]"); MT("multilinePlaintext", "[tag %p]", " Hello,", " World"); MT("multilineRuby", "[tag %p]", " [comment -# this is a comment]", " [comment and this is a comment too]", " Date/Time", " [operator -] [variable now] [operator =] [tag DateTime][operator .][property now]", " [tag %strong=] [variable now]", " [operator -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][property parse]([string \"December 31, 2006\"])", " [operator =][string \"Happy\"]", " [operator =][string \"Belated\"]", " [operator =][string \"Birthday\"]"); MT("multilineComment", "[comment /]", " [comment Multiline]", " [comment Comment]"); MT("hamlComment", "[comment -# this is a comment]"); MT("multilineHamlComment", "[comment -# this is a comment]", " [comment and this is a comment too]"); MT("multilineHTMLComment", "[comment ]"); MT("hamlAfterRubyTag", "[attribute .block]", " [tag %strong=] [variable now]", " [attribute .test]", " [operator =][variable now]", " [attribute .right]"); MT("stretchedRuby", "[operator =] [variable puts] [string \"Hello\"],", " [string \"World\"]"); MT("interpolationInHashAttribute", //"[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test"); "[tag %div]{[atom :id] [operator =>] [string \"#{][variable test][string }_#{][variable ting][string }\"]} test"); MT("interpolationInHTMLAttribute", "[tag %div]([variable title][operator =][string \"#{][variable test][string }_#{][variable ting]()[string }\"]) Test"); })(); application/library/codemirror/mode/handlebars/index.html000064400000004224147577724760017740 0ustar00 CodeMirror: Handlebars mode

Handlebars

Handlebars syntax highlighting for CodeMirror.

MIME types defined: text/x-handlebars-template

Supported options: base to set the mode to wrap. For example, use

mode: {name: "handlebars", base: "text/html"}

to highlight an HTML template.

application/library/codemirror/mode/handlebars/handlebars.js000064400000004174147577724760020410 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../../addon/mode/simple"), require("../../addon/mode/multiplex")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../../addon/mode/simple", "../../addon/mode/multiplex"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineSimpleMode("handlebars-tags", { start: [ { regex: /\{\{!--/, push: "dash_comment", token: "comment" }, { regex: /\{\{!/, push: "comment", token: "comment" }, { regex: /\{\{/, push: "handlebars", token: "tag" } ], handlebars: [ { regex: /\}\}/, pop: true, token: "tag" }, // Double and single quotes { regex: /"(?:[^\\"]|\\.)*"?/, token: "string" }, { regex: /'(?:[^\\']|\\.)*'?/, token: "string" }, // Handlebars keywords { regex: />|[#\/]([A-Za-z_]\w*)/, token: "keyword" }, { regex: /(?:else|this)\b/, token: "keyword" }, // Numeral { regex: /\d+/i, token: "number" }, // Atoms like = and . { regex: /=|~|@|true|false/, token: "atom" }, // Paths { regex: /(?:\.\.\/)*(?:[A-Za-z_][\w\.]*)+/, token: "variable-2" } ], dash_comment: [ { regex: /--\}\}/, pop: true, token: "comment" }, // Commented code { regex: /./, token: "comment"} ], comment: [ { regex: /\}\}/, pop: true, token: "comment" }, { regex: /./, token: "comment" } ] }); CodeMirror.defineMode("handlebars", function(config, parserConfig) { var handlebars = CodeMirror.getMode(config, "handlebars-tags"); if (!parserConfig || !parserConfig.base) return handlebars; return CodeMirror.multiplexingMode( CodeMirror.getMode(config, parserConfig.base), {open: "{{", close: "}}", mode: handlebars, parseDelimiters: true} ); }); CodeMirror.defineMIME("text/x-handlebars-template", "handlebars"); }); application/library/codemirror/mode/haskell/index.html000064400000004222147577724760017256 0ustar00 CodeMirror: Haskell mode

Haskell mode

MIME types defined: text/x-haskell.

application/library/codemirror/mode/haskell/haskell.js000064400000017645147577724760017257 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("haskell", function(_config, modeConfig) { function switchState(source, setState, f) { setState(f); return f(source, setState); } // These should all be Unicode extended, as per the Haskell 2010 report var smallRE = /[a-z_]/; var largeRE = /[A-Z]/; var digitRE = /\d/; var hexitRE = /[0-9A-Fa-f]/; var octitRE = /[0-7]/; var idRE = /[a-z_A-Z0-9'\xa1-\uffff]/; var symbolRE = /[-!#$%&*+.\/<=>?@\\^|~:]/; var specialRE = /[(),;[\]`{}]/; var whiteCharRE = /[ \t\v\f]/; // newlines are handled in tokenizer function normal(source, setState) { if (source.eatWhile(whiteCharRE)) { return null; } var ch = source.next(); if (specialRE.test(ch)) { if (ch == '{' && source.eat('-')) { var t = "comment"; if (source.eat('#')) { t = "meta"; } return switchState(source, setState, ncomment(t, 1)); } return null; } if (ch == '\'') { if (source.eat('\\')) { source.next(); // should handle other escapes here } else { source.next(); } if (source.eat('\'')) { return "string"; } return "error"; } if (ch == '"') { return switchState(source, setState, stringLiteral); } if (largeRE.test(ch)) { source.eatWhile(idRE); if (source.eat('.')) { return "qualifier"; } return "variable-2"; } if (smallRE.test(ch)) { source.eatWhile(idRE); return "variable"; } if (digitRE.test(ch)) { if (ch == '0') { if (source.eat(/[xX]/)) { source.eatWhile(hexitRE); // should require at least 1 return "integer"; } if (source.eat(/[oO]/)) { source.eatWhile(octitRE); // should require at least 1 return "number"; } } source.eatWhile(digitRE); var t = "number"; if (source.match(/^\.\d+/)) { t = "number"; } if (source.eat(/[eE]/)) { t = "number"; source.eat(/[-+]/); source.eatWhile(digitRE); // should require at least 1 } return t; } if (ch == "." && source.eat(".")) return "keyword"; if (symbolRE.test(ch)) { if (ch == '-' && source.eat(/-/)) { source.eatWhile(/-/); if (!source.eat(symbolRE)) { source.skipToEnd(); return "comment"; } } var t = "variable"; if (ch == ':') { t = "variable-2"; } source.eatWhile(symbolRE); return t; } return "error"; } function ncomment(type, nest) { if (nest == 0) { return normal; } return function(source, setState) { var currNest = nest; while (!source.eol()) { var ch = source.next(); if (ch == '{' && source.eat('-')) { ++currNest; } else if (ch == '-' && source.eat('}')) { --currNest; if (currNest == 0) { setState(normal); return type; } } } setState(ncomment(type, currNest)); return type; }; } function stringLiteral(source, setState) { while (!source.eol()) { var ch = source.next(); if (ch == '"') { setState(normal); return "string"; } if (ch == '\\') { if (source.eol() || source.eat(whiteCharRE)) { setState(stringGap); return "string"; } if (source.eat('&')) { } else { source.next(); // should handle other escapes here } } } setState(normal); return "error"; } function stringGap(source, setState) { if (source.eat('\\')) { return switchState(source, setState, stringLiteral); } source.next(); setState(normal); return "error"; } var wellKnownWords = (function() { var wkw = {}; function setType(t) { return function () { for (var i = 0; i < arguments.length; i++) wkw[arguments[i]] = t; }; } setType("keyword")( "case", "class", "data", "default", "deriving", "do", "else", "foreign", "if", "import", "in", "infix", "infixl", "infixr", "instance", "let", "module", "newtype", "of", "then", "type", "where", "_"); setType("keyword")( "\.\.", ":", "::", "=", "\\", "\"", "<-", "->", "@", "~", "=>"); setType("builtin")( "!!", "$!", "$", "&&", "+", "++", "-", ".", "/", "/=", "<", "<=", "=<<", "==", ">", ">=", ">>", ">>=", "^", "^^", "||", "*", "**"); setType("builtin")( "Bool", "Bounded", "Char", "Double", "EQ", "Either", "Enum", "Eq", "False", "FilePath", "Float", "Floating", "Fractional", "Functor", "GT", "IO", "IOError", "Int", "Integer", "Integral", "Just", "LT", "Left", "Maybe", "Monad", "Nothing", "Num", "Ord", "Ordering", "Rational", "Read", "ReadS", "Real", "RealFloat", "RealFrac", "Right", "Show", "ShowS", "String", "True"); setType("builtin")( "abs", "acos", "acosh", "all", "and", "any", "appendFile", "asTypeOf", "asin", "asinh", "atan", "atan2", "atanh", "break", "catch", "ceiling", "compare", "concat", "concatMap", "const", "cos", "cosh", "curry", "cycle", "decodeFloat", "div", "divMod", "drop", "dropWhile", "either", "elem", "encodeFloat", "enumFrom", "enumFromThen", "enumFromThenTo", "enumFromTo", "error", "even", "exp", "exponent", "fail", "filter", "flip", "floatDigits", "floatRadix", "floatRange", "floor", "fmap", "foldl", "foldl1", "foldr", "foldr1", "fromEnum", "fromInteger", "fromIntegral", "fromRational", "fst", "gcd", "getChar", "getContents", "getLine", "head", "id", "init", "interact", "ioError", "isDenormalized", "isIEEE", "isInfinite", "isNaN", "isNegativeZero", "iterate", "last", "lcm", "length", "lex", "lines", "log", "logBase", "lookup", "map", "mapM", "mapM_", "max", "maxBound", "maximum", "maybe", "min", "minBound", "minimum", "mod", "negate", "not", "notElem", "null", "odd", "or", "otherwise", "pi", "pred", "print", "product", "properFraction", "putChar", "putStr", "putStrLn", "quot", "quotRem", "read", "readFile", "readIO", "readList", "readLn", "readParen", "reads", "readsPrec", "realToFrac", "recip", "rem", "repeat", "replicate", "return", "reverse", "round", "scaleFloat", "scanl", "scanl1", "scanr", "scanr1", "seq", "sequence", "sequence_", "show", "showChar", "showList", "showParen", "showString", "shows", "showsPrec", "significand", "signum", "sin", "sinh", "snd", "span", "splitAt", "sqrt", "subtract", "succ", "sum", "tail", "take", "takeWhile", "tan", "tanh", "toEnum", "toInteger", "toRational", "truncate", "uncurry", "undefined", "unlines", "until", "unwords", "unzip", "unzip3", "userError", "words", "writeFile", "zip", "zip3", "zipWith", "zipWith3"); var override = modeConfig.overrideKeywords; if (override) for (var word in override) if (override.hasOwnProperty(word)) wkw[word] = override[word]; return wkw; })(); return { startState: function () { return { f: normal }; }, copyState: function (s) { return { f: s.f }; }, token: function(stream, state) { var t = state.f(stream, function(s) { state.f = s; }); var w = stream.current(); return wellKnownWords.hasOwnProperty(w) ? wellKnownWords[w] : t; }, blockCommentStart: "{-", blockCommentEnd: "-}", lineComment: "--" }; }); CodeMirror.defineMIME("text/x-haskell", "haskell"); }); application/library/codemirror/mode/haskell-literate/haskell-literate.js000064400000002556147577724760022670 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function (mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../haskell/haskell")) else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../haskell/haskell"], mod) else // Plain browser env mod(CodeMirror) })(function (CodeMirror) { "use strict" CodeMirror.defineMode("haskell-literate", function (config, parserConfig) { var baseMode = CodeMirror.getMode(config, (parserConfig && parserConfig.base) || "haskell") return { startState: function () { return { inCode: false, baseState: CodeMirror.startState(baseMode) } }, token: function (stream, state) { if (stream.sol()) { if (state.inCode = stream.eat(">")) return "meta" } if (state.inCode) { return baseMode.token(stream, state.baseState) } else { stream.skipToEnd() return "comment" } }, innerMode: function (state) { return state.inCode ? {state: state.baseState, mode: baseMode} : null } } }, "haskell") CodeMirror.defineMIME("text/x-literate-haskell", "haskell-literate") }); application/library/codemirror/mode/haskell-literate/index.html000064400000022245147577724760021072 0ustar00 CodeMirror: Haskell-literate mode

Haskell literate mode

MIME types defined: text/x-literate-haskell.

Parser configuration parameters recognized: base to set the base mode (defaults to "haskell").

application/library/codemirror/mode/haxe/haxe.js000064400000042240147577724760016050 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("haxe", function(config, parserConfig) { var indentUnit = config.indentUnit; // Tokenizer function kw(type) {return {type: type, style: "keyword"};} var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); var operator = kw("operator"), atom = {type: "atom", style: "atom"}, attribute = {type:"attribute", style: "attribute"}; var type = kw("typedef"); var keywords = { "if": A, "while": A, "else": B, "do": B, "try": B, "return": C, "break": C, "continue": C, "new": C, "throw": C, "var": kw("var"), "inline":attribute, "static": attribute, "using":kw("import"), "public": attribute, "private": attribute, "cast": kw("cast"), "import": kw("import"), "macro": kw("macro"), "function": kw("function"), "catch": kw("catch"), "untyped": kw("untyped"), "callback": kw("cb"), "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), "in": operator, "never": kw("property_access"), "trace":kw("trace"), "class": type, "abstract":type, "enum":type, "interface":type, "typedef":type, "extends":type, "implements":type, "dynamic":type, "true": atom, "false": atom, "null": atom }; var isOperatorChar = /[+\-*&%=<>!?|]/; function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } function toUnescaped(stream, end) { var escaped = false, next; while ((next = stream.next()) != null) { if (next == end && !escaped) return true; escaped = !escaped && next == "\\"; } } // Used as scratch variables to communicate multiple values without // consing up tons of objects. var type, content; function ret(tp, style, cont) { type = tp; content = cont; return style; } function haxeTokenBase(stream, state) { var ch = stream.next(); if (ch == '"' || ch == "'") { return chain(stream, state, haxeTokenString(ch)); } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { return ret(ch); } else if (ch == "0" && stream.eat(/x/i)) { stream.eatWhile(/[\da-f]/i); return ret("number", "number"); } else if (/\d/.test(ch) || ch == "-" && stream.eat(/\d/)) { stream.match(/^\d*(?:\.\d*(?!\.))?(?:[eE][+\-]?\d+)?/); return ret("number", "number"); } else if (state.reAllowed && (ch == "~" && stream.eat(/\//))) { toUnescaped(stream, "/"); stream.eatWhile(/[gimsu]/); return ret("regexp", "string-2"); } else if (ch == "/") { if (stream.eat("*")) { return chain(stream, state, haxeTokenComment); } else if (stream.eat("/")) { stream.skipToEnd(); return ret("comment", "comment"); } else { stream.eatWhile(isOperatorChar); return ret("operator", null, stream.current()); } } else if (ch == "#") { stream.skipToEnd(); return ret("conditional", "meta"); } else if (ch == "@") { stream.eat(/:/); stream.eatWhile(/[\w_]/); return ret ("metadata", "meta"); } else if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return ret("operator", null, stream.current()); } else { var word; if(/[A-Z]/.test(ch)) { stream.eatWhile(/[\w_<>]/); word = stream.current(); return ret("type", "variable-3", word); } else { stream.eatWhile(/[\w_]/); var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; return (known && state.kwAllowed) ? ret(known.type, known.style, word) : ret("variable", "variable", word); } } } function haxeTokenString(quote) { return function(stream, state) { if (toUnescaped(stream, quote)) state.tokenize = haxeTokenBase; return ret("string", "string"); }; } function haxeTokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = haxeTokenBase; break; } maybeEnd = (ch == "*"); } return ret("comment", "comment"); } // Parser var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true}; function HaxeLexical(indented, column, type, align, prev, info) { this.indented = indented; this.column = column; this.type = type; this.prev = prev; this.info = info; if (align != null) this.align = align; } function inScope(state, varname) { for (var v = state.localVars; v; v = v.next) if (v.name == varname) return true; } function parseHaxe(state, style, type, content, stream) { var cc = state.cc; // Communicate our context to the combinators. // (Less wasteful than consing up a hundred closures on every call.) cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; if (!state.lexical.hasOwnProperty("align")) state.lexical.align = true; while(true) { var combinator = cc.length ? cc.pop() : statement; if (combinator(type, content)) { while(cc.length && cc[cc.length - 1].lex) cc.pop()(); if (cx.marked) return cx.marked; if (type == "variable" && inScope(state, content)) return "variable-2"; if (type == "variable" && imported(state, content)) return "variable-3"; return style; } } } function imported(state, typename) { if (/[a-z]/.test(typename.charAt(0))) return false; var len = state.importedtypes.length; for (var i = 0; i= 0; i--) cx.cc.push(arguments[i]); } function cont() { pass.apply(null, arguments); return true; } function inList(name, list) { for (var v = list; v; v = v.next) if (v.name == name) return true; return false; } function register(varname) { var state = cx.state; if (state.context) { cx.marked = "def"; if (inList(varname, state.localVars)) return; state.localVars = {name: varname, next: state.localVars}; } else if (state.globalVars) { if (inList(varname, state.globalVars)) return; state.globalVars = {name: varname, next: state.globalVars}; } } // Combinators var defaultVars = {name: "this", next: null}; function pushcontext() { if (!cx.state.context) cx.state.localVars = defaultVars; cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; } function popcontext() { cx.state.localVars = cx.state.context.vars; cx.state.context = cx.state.context.prev; } popcontext.lex = true; function pushlex(type, info) { var result = function() { var state = cx.state; state.lexical = new HaxeLexical(state.indented, cx.stream.column(), type, null, state.lexical, info); }; result.lex = true; return result; } function poplex() { var state = cx.state; if (state.lexical.prev) { if (state.lexical.type == ")") state.indented = state.lexical.indented; state.lexical = state.lexical.prev; } } poplex.lex = true; function expect(wanted) { function f(type) { if (type == wanted) return cont(); else if (wanted == ";") return pass(); else return cont(f); } return f; } function statement(type) { if (type == "@") return cont(metadef); if (type == "var") return cont(pushlex("vardef"), vardef1, expect(";"), poplex); if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); if (type == "keyword b") return cont(pushlex("form"), statement, poplex); if (type == "{") return cont(pushlex("}"), pushcontext, block, poplex, popcontext); if (type == ";") return cont(); if (type == "attribute") return cont(maybeattribute); if (type == "function") return cont(functiondef); if (type == "for") return cont(pushlex("form"), expect("("), pushlex(")"), forspec1, expect(")"), poplex, statement, poplex); if (type == "variable") return cont(pushlex("stat"), maybelabel); if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), block, poplex, poplex); if (type == "case") return cont(expression, expect(":")); if (type == "default") return cont(expect(":")); if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), statement, poplex, popcontext); if (type == "import") return cont(importdef, expect(";")); if (type == "typedef") return cont(typedef); return pass(pushlex("stat"), expression, expect(";"), poplex); } function expression(type) { if (atomicTypes.hasOwnProperty(type)) return cont(maybeoperator); if (type == "type" ) return cont(maybeoperator); if (type == "function") return cont(functiondef); if (type == "keyword c") return cont(maybeexpression); if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeoperator); if (type == "operator") return cont(expression); if (type == "[") return cont(pushlex("]"), commasep(maybeexpression, "]"), poplex, maybeoperator); if (type == "{") return cont(pushlex("}"), commasep(objprop, "}"), poplex, maybeoperator); return cont(); } function maybeexpression(type) { if (type.match(/[;\}\)\],]/)) return pass(); return pass(expression); } function maybeoperator(type, value) { if (type == "operator" && /\+\+|--/.test(value)) return cont(maybeoperator); if (type == "operator" || type == ":") return cont(expression); if (type == ";") return; if (type == "(") return cont(pushlex(")"), commasep(expression, ")"), poplex, maybeoperator); if (type == ".") return cont(property, maybeoperator); if (type == "[") return cont(pushlex("]"), expression, expect("]"), poplex, maybeoperator); } function maybeattribute(type) { if (type == "attribute") return cont(maybeattribute); if (type == "function") return cont(functiondef); if (type == "var") return cont(vardef1); } function metadef(type) { if(type == ":") return cont(metadef); if(type == "variable") return cont(metadef); if(type == "(") return cont(pushlex(")"), commasep(metaargs, ")"), poplex, statement); } function metaargs(type) { if(type == "variable") return cont(); } function importdef (type, value) { if(type == "variable" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); } else if(type == "variable" || type == "property" || type == "." || value == "*") return cont(importdef); } function typedef (type, value) { if(type == "variable" && /[A-Z]/.test(value.charAt(0))) { registerimport(value); return cont(); } else if (type == "type" && /[A-Z]/.test(value.charAt(0))) { return cont(); } } function maybelabel(type) { if (type == ":") return cont(poplex, statement); return pass(maybeoperator, expect(";"), poplex); } function property(type) { if (type == "variable") {cx.marked = "property"; return cont();} } function objprop(type) { if (type == "variable") cx.marked = "property"; if (atomicTypes.hasOwnProperty(type)) return cont(expect(":"), expression); } function commasep(what, end) { function proceed(type) { if (type == ",") return cont(what, proceed); if (type == end) return cont(); return cont(expect(end)); } return function(type) { if (type == end) return cont(); else return pass(what, proceed); }; } function block(type) { if (type == "}") return cont(); return pass(statement, block); } function vardef1(type, value) { if (type == "variable"){register(value); return cont(typeuse, vardef2);} return cont(); } function vardef2(type, value) { if (value == "=") return cont(expression, vardef2); if (type == ",") return cont(vardef1); } function forspec1(type, value) { if (type == "variable") { register(value); return cont(forin, expression) } else { return pass() } } function forin(_type, value) { if (value == "in") return cont(); } function functiondef(type, value) { //function names starting with upper-case letters are recognised as types, so cludging them together here. if (type == "variable" || type == "type") {register(value); return cont(functiondef);} if (value == "new") return cont(functiondef); if (type == "(") return cont(pushlex(")"), pushcontext, commasep(funarg, ")"), poplex, typeuse, statement, popcontext); } function typeuse(type) { if(type == ":") return cont(typestring); } function typestring(type) { if(type == "type") return cont(); if(type == "variable") return cont(); if(type == "{") return cont(pushlex("}"), commasep(typeprop, "}"), poplex); } function typeprop(type) { if(type == "variable") return cont(typeuse); } function funarg(type, value) { if (type == "variable") {register(value); return cont(typeuse);} } // Interface return { startState: function(basecolumn) { var defaulttypes = ["Int", "Float", "String", "Void", "Std", "Bool", "Dynamic", "Array"]; var state = { tokenize: haxeTokenBase, reAllowed: true, kwAllowed: true, cc: [], lexical: new HaxeLexical((basecolumn || 0) - indentUnit, 0, "block", false), localVars: parserConfig.localVars, importedtypes: defaulttypes, context: parserConfig.localVars && {vars: parserConfig.localVars}, indented: 0 }; if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") state.globalVars = parserConfig.globalVars; return state; }, token: function(stream, state) { if (stream.sol()) { if (!state.lexical.hasOwnProperty("align")) state.lexical.align = false; state.indented = stream.indentation(); } if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); if (type == "comment") return style; state.reAllowed = !!(type == "operator" || type == "keyword c" || type.match(/^[\[{}\(,;:]$/)); state.kwAllowed = type != '.'; return parseHaxe(state, style, type, content, stream); }, indent: function(state, textAfter) { if (state.tokenize != haxeTokenBase) return 0; var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; var type = lexical.type, closing = firstChar == type; if (type == "vardef") return lexical.indented + 4; else if (type == "form" && firstChar == "{") return lexical.indented; else if (type == "stat" || type == "form") return lexical.indented + indentUnit; else if (lexical.info == "switch" && !closing) return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); else if (lexical.align) return lexical.column + (closing ? 0 : 1); else return lexical.indented + (closing ? 0 : indentUnit); }, electricChars: "{}", blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//" }; }); CodeMirror.defineMIME("text/x-haxe", "haxe"); CodeMirror.defineMode("hxml", function () { return { startState: function () { return { define: false, inString: false }; }, token: function (stream, state) { var ch = stream.peek(); var sol = stream.sol(); ///* comments */ if (ch == "#") { stream.skipToEnd(); return "comment"; } if (sol && ch == "-") { var style = "variable-2"; stream.eat(/-/); if (stream.peek() == "-") { stream.eat(/-/); style = "keyword a"; } if (stream.peek() == "D") { stream.eat(/[D]/); style = "keyword c"; state.define = true; } stream.eatWhile(/[A-Z]/i); return style; } var ch = stream.peek(); if (state.inString == false && ch == "'") { state.inString = true; ch = stream.next(); } if (state.inString == true) { if (stream.skipTo("'")) { } else { stream.skipToEnd(); } if (stream.peek() == "'") { stream.next(); state.inString = false; } return "string"; } stream.next(); return null; }, lineComment: "#" }; }); CodeMirror.defineMIME("text/x-hxml", "hxml"); }); application/library/codemirror/mode/haxe/index.html000064400000005021147577724760016556 0ustar00 CodeMirror: Haxe mode

Haxe mode

Hxml mode:

MIME types defined: text/x-haxe, text/x-hxml.

application/library/codemirror/mode/htmlembedded/index.html000064400000004046147577724760020255 0ustar00 CodeMirror: Html Embedded Scripts mode

Html Embedded Scripts mode

Mode for html embedded scripts like JSP and ASP.NET. Depends on multiplex and HtmlMixed which in turn depends on JavaScript, CSS and XML.
Other dependencies include those of the scripting language chosen.

MIME types defined: application/x-aspx (ASP.NET), application/x-ejs (Embedded Javascript), application/x-jsp (JavaServer Pages) and application/x-erb

application/library/codemirror/mode/htmlembedded/htmlembedded.js000064400000002611147577724760021230 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../../addon/mode/multiplex")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../../addon/mode/multiplex"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("htmlembedded", function(config, parserConfig) { return CodeMirror.multiplexingMode(CodeMirror.getMode(config, "htmlmixed"), { open: parserConfig.open || parserConfig.scriptStartRegex || "<%", close: parserConfig.close || parserConfig.scriptEndRegex || "%>", mode: CodeMirror.getMode(config, parserConfig.scriptingModeSpec) }); }, "htmlmixed"); CodeMirror.defineMIME("application/x-ejs", {name: "htmlembedded", scriptingModeSpec:"javascript"}); CodeMirror.defineMIME("application/x-aspx", {name: "htmlembedded", scriptingModeSpec:"text/x-csharp"}); CodeMirror.defineMIME("application/x-jsp", {name: "htmlembedded", scriptingModeSpec:"text/x-java"}); CodeMirror.defineMIME("application/x-erb", {name: "htmlembedded", scriptingModeSpec:"ruby"}); }); application/library/codemirror/mode/htmlmixed/htmlmixed.js000064400000012726147577724760020172 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript"), require("../css/css")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript", "../css/css"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var defaultTags = { script: [ ["lang", /(javascript|babel)/i, "javascript"], ["type", /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i, "javascript"], ["type", /./, "text/plain"], [null, null, "javascript"] ], style: [ ["lang", /^css$/i, "css"], ["type", /^(text\/)?(x-)?(stylesheet|css)$/i, "css"], ["type", /./, "text/plain"], [null, null, "css"] ] }; function maybeBackup(stream, pat, style) { var cur = stream.current(), close = cur.search(pat); if (close > -1) { stream.backUp(cur.length - close); } else if (cur.match(/<\/?$/)) { stream.backUp(cur.length); if (!stream.match(pat, false)) stream.match(cur); } return style; } var attrRegexpCache = {}; function getAttrRegexp(attr) { var regexp = attrRegexpCache[attr]; if (regexp) return regexp; return attrRegexpCache[attr] = new RegExp("\\s+" + attr + "\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*"); } function getAttrValue(text, attr) { var match = text.match(getAttrRegexp(attr)) return match ? /^\s*(.*?)\s*$/.exec(match[2])[1] : "" } function getTagRegexp(tagName, anchored) { return new RegExp((anchored ? "^" : "") + "<\/\s*" + tagName + "\s*>", "i"); } function addTags(from, to) { for (var tag in from) { var dest = to[tag] || (to[tag] = []); var source = from[tag]; for (var i = source.length - 1; i >= 0; i--) dest.unshift(source[i]) } } function findMatchingMode(tagInfo, tagText) { for (var i = 0; i < tagInfo.length; i++) { var spec = tagInfo[i]; if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2]; } } CodeMirror.defineMode("htmlmixed", function (config, parserConfig) { var htmlMode = CodeMirror.getMode(config, { name: "xml", htmlMode: true, multilineTagIndentFactor: parserConfig.multilineTagIndentFactor, multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag }); var tags = {}; var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes; addTags(defaultTags, tags); if (configTags) addTags(configTags, tags); if (configScript) for (var i = configScript.length - 1; i >= 0; i--) tags.script.unshift(["type", configScript[i].matches, configScript[i].mode]) function html(stream, state) { var style = htmlMode.token(stream, state.htmlState), tag = /\btag\b/.test(style), tagName if (tag && !/[<>\s\/]/.test(stream.current()) && (tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) && tags.hasOwnProperty(tagName)) { state.inTag = tagName + " " } else if (state.inTag && tag && />$/.test(stream.current())) { var inTag = /^([\S]+) (.*)/.exec(state.inTag) state.inTag = null var modeSpec = stream.current() == ">" && findMatchingMode(tags[inTag[1]], inTag[2]) var mode = CodeMirror.getMode(config, modeSpec) var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false); state.token = function (stream, state) { if (stream.match(endTagA, false)) { state.token = html; state.localState = state.localMode = null; return null; } return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState)); }; state.localMode = mode; state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, "")); } else if (state.inTag) { state.inTag += stream.current() if (stream.eol()) state.inTag += " " } return style; }; return { startState: function () { var state = CodeMirror.startState(htmlMode); return {token: html, inTag: null, localMode: null, localState: null, htmlState: state}; }, copyState: function (state) { var local; if (state.localState) { local = CodeMirror.copyState(state.localMode, state.localState); } return {token: state.token, inTag: state.inTag, localMode: state.localMode, localState: local, htmlState: CodeMirror.copyState(htmlMode, state.htmlState)}; }, token: function (stream, state) { return state.token(stream, state); }, indent: function (state, textAfter) { if (!state.localMode || /^\s*<\//.test(textAfter)) return htmlMode.indent(state.htmlState, textAfter); else if (state.localMode.indent) return state.localMode.indent(state.localState, textAfter); else return CodeMirror.Pass; }, innerMode: function (state) { return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode}; } }; }, "xml", "javascript", "css"); CodeMirror.defineMIME("text/html", "htmlmixed"); }); application/library/codemirror/mode/htmlmixed/index.html000064400000005772147577724760017641 0ustar00 CodeMirror: HTML mixed mode

HTML mixed mode

The HTML mixed mode depends on the XML, JavaScript, and CSS modes.

It takes an optional mode configuration option, scriptTypes, which can be used to add custom behavior for specific <script type="..."> tags. If given, it should hold an array of {matches, mode} objects, where matches is a string or regexp that matches the script type, and mode is either null, for script types that should stay in HTML mode, or a mode spec corresponding to the mode that should be used for the script.

MIME types defined: text/html (redefined, only takes effect if you load this parser after the XML parser).

application/library/codemirror/mode/http/http.js000064400000005353147577724760016140 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("http", function() { function failFirstLine(stream, state) { stream.skipToEnd(); state.cur = header; return "error"; } function start(stream, state) { if (stream.match(/^HTTP\/\d\.\d/)) { state.cur = responseStatusCode; return "keyword"; } else if (stream.match(/^[A-Z]+/) && /[ \t]/.test(stream.peek())) { state.cur = requestPath; return "keyword"; } else { return failFirstLine(stream, state); } } function responseStatusCode(stream, state) { var code = stream.match(/^\d+/); if (!code) return failFirstLine(stream, state); state.cur = responseStatusText; var status = Number(code[0]); if (status >= 100 && status < 200) { return "positive informational"; } else if (status >= 200 && status < 300) { return "positive success"; } else if (status >= 300 && status < 400) { return "positive redirect"; } else if (status >= 400 && status < 500) { return "negative client-error"; } else if (status >= 500 && status < 600) { return "negative server-error"; } else { return "error"; } } function responseStatusText(stream, state) { stream.skipToEnd(); state.cur = header; return null; } function requestPath(stream, state) { stream.eatWhile(/\S/); state.cur = requestProtocol; return "string-2"; } function requestProtocol(stream, state) { if (stream.match(/^HTTP\/\d\.\d$/)) { state.cur = header; return "keyword"; } else { return failFirstLine(stream, state); } } function header(stream) { if (stream.sol() && !stream.eat(/[ \t]/)) { if (stream.match(/^.*?:/)) { return "atom"; } else { stream.skipToEnd(); return "error"; } } else { stream.skipToEnd(); return "string"; } } function body(stream) { stream.skipToEnd(); return null; } return { token: function(stream, state) { var cur = state.cur; if (cur != header && cur != body && stream.eatSpace()) return null; return cur(stream, state); }, blankLine: function(state) { state.cur = body; }, startState: function() { return {cur: start}; } }; }); CodeMirror.defineMIME("message/http", "http"); }); application/library/codemirror/mode/http/index.html000064400000002561147577724760016616 0ustar00 CodeMirror: HTTP mode

HTTP mode

MIME types defined: message/http.

application/library/codemirror/mode/idl/index.html000064400000003141147577724760016402 0ustar00 CodeMirror: IDL mode

IDL mode

MIME types defined: text/x-idl.

application/library/codemirror/mode/idl/idl.js000064400000035051147577724760015520 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function wordRegexp(words) { return new RegExp('^((' + words.join(')|(') + '))\\b', 'i'); }; var builtinArray = [ 'a_correlate', 'abs', 'acos', 'adapt_hist_equal', 'alog', 'alog2', 'alog10', 'amoeba', 'annotate', 'app_user_dir', 'app_user_dir_query', 'arg_present', 'array_equal', 'array_indices', 'arrow', 'ascii_template', 'asin', 'assoc', 'atan', 'axis', 'axis', 'bandpass_filter', 'bandreject_filter', 'barplot', 'bar_plot', 'beseli', 'beselj', 'beselk', 'besely', 'beta', 'biginteger', 'bilinear', 'bin_date', 'binary_template', 'bindgen', 'binomial', 'bit_ffs', 'bit_population', 'blas_axpy', 'blk_con', 'boolarr', 'boolean', 'boxplot', 'box_cursor', 'breakpoint', 'broyden', 'bubbleplot', 'butterworth', 'bytarr', 'byte', 'byteorder', 'bytscl', 'c_correlate', 'calendar', 'caldat', 'call_external', 'call_function', 'call_method', 'call_procedure', 'canny', 'catch', 'cd', 'cdf', 'ceil', 'chebyshev', 'check_math', 'chisqr_cvf', 'chisqr_pdf', 'choldc', 'cholsol', 'cindgen', 'cir_3pnt', 'clipboard', 'close', 'clust_wts', 'cluster', 'cluster_tree', 'cmyk_convert', 'code_coverage', 'color_convert', 'color_exchange', 'color_quan', 'color_range_map', 'colorbar', 'colorize_sample', 'colormap_applicable', 'colormap_gradient', 'colormap_rotation', 'colortable', 'comfit', 'command_line_args', 'common', 'compile_opt', 'complex', 'complexarr', 'complexround', 'compute_mesh_normals', 'cond', 'congrid', 'conj', 'constrained_min', 'contour', 'contour', 'convert_coord', 'convol', 'convol_fft', 'coord2to3', 'copy_lun', 'correlate', 'cos', 'cosh', 'cpu', 'cramer', 'createboxplotdata', 'create_cursor', 'create_struct', 'create_view', 'crossp', 'crvlength', 'ct_luminance', 'cti_test', 'cursor', 'curvefit', 'cv_coord', 'cvttobm', 'cw_animate', 'cw_animate_getp', 'cw_animate_load', 'cw_animate_run', 'cw_arcball', 'cw_bgroup', 'cw_clr_index', 'cw_colorsel', 'cw_defroi', 'cw_field', 'cw_filesel', 'cw_form', 'cw_fslider', 'cw_light_editor', 'cw_light_editor_get', 'cw_light_editor_set', 'cw_orient', 'cw_palette_editor', 'cw_palette_editor_get', 'cw_palette_editor_set', 'cw_pdmenu', 'cw_rgbslider', 'cw_tmpl', 'cw_zoom', 'db_exists', 'dblarr', 'dcindgen', 'dcomplex', 'dcomplexarr', 'define_key', 'define_msgblk', 'define_msgblk_from_file', 'defroi', 'defsysv', 'delvar', 'dendro_plot', 'dendrogram', 'deriv', 'derivsig', 'determ', 'device', 'dfpmin', 'diag_matrix', 'dialog_dbconnect', 'dialog_message', 'dialog_pickfile', 'dialog_printersetup', 'dialog_printjob', 'dialog_read_image', 'dialog_write_image', 'dictionary', 'digital_filter', 'dilate', 'dindgen', 'dissolve', 'dist', 'distance_measure', 'dlm_load', 'dlm_register', 'doc_library', 'double', 'draw_roi', 'edge_dog', 'efont', 'eigenql', 'eigenvec', 'ellipse', 'elmhes', 'emboss', 'empty', 'enable_sysrtn', 'eof', 'eos', 'erase', 'erf', 'erfc', 'erfcx', 'erode', 'errorplot', 'errplot', 'estimator_filter', 'execute', 'exit', 'exp', 'expand', 'expand_path', 'expint', 'extrac', 'extract_slice', 'f_cvf', 'f_pdf', 'factorial', 'fft', 'file_basename', 'file_chmod', 'file_copy', 'file_delete', 'file_dirname', 'file_expand_path', 'file_gunzip', 'file_gzip', 'file_info', 'file_lines', 'file_link', 'file_mkdir', 'file_move', 'file_poll_input', 'file_readlink', 'file_same', 'file_search', 'file_tar', 'file_test', 'file_untar', 'file_unzip', 'file_which', 'file_zip', 'filepath', 'findgen', 'finite', 'fix', 'flick', 'float', 'floor', 'flow3', 'fltarr', 'flush', 'format_axis_values', 'forward_function', 'free_lun', 'fstat', 'fulstr', 'funct', 'function', 'fv_test', 'fx_root', 'fz_roots', 'gamma', 'gamma_ct', 'gauss_cvf', 'gauss_pdf', 'gauss_smooth', 'gauss2dfit', 'gaussfit', 'gaussian_function', 'gaussint', 'get_drive_list', 'get_dxf_objects', 'get_kbrd', 'get_login_info', 'get_lun', 'get_screen_size', 'getenv', 'getwindows', 'greg2jul', 'grib', 'grid_input', 'grid_tps', 'grid3', 'griddata', 'gs_iter', 'h_eq_ct', 'h_eq_int', 'hanning', 'hash', 'hdf', 'hdf5', 'heap_free', 'heap_gc', 'heap_nosave', 'heap_refcount', 'heap_save', 'help', 'hilbert', 'hist_2d', 'hist_equal', 'histogram', 'hls', 'hough', 'hqr', 'hsv', 'i18n_multibytetoutf8', 'i18n_multibytetowidechar', 'i18n_utf8tomultibyte', 'i18n_widechartomultibyte', 'ibeta', 'icontour', 'iconvertcoord', 'idelete', 'identity', 'idl_base64', 'idl_container', 'idl_validname', 'idlexbr_assistant', 'idlitsys_createtool', 'idlunit', 'iellipse', 'igamma', 'igetcurrent', 'igetdata', 'igetid', 'igetproperty', 'iimage', 'image', 'image_cont', 'image_statistics', 'image_threshold', 'imaginary', 'imap', 'indgen', 'int_2d', 'int_3d', 'int_tabulated', 'intarr', 'interpol', 'interpolate', 'interval_volume', 'invert', 'ioctl', 'iopen', 'ir_filter', 'iplot', 'ipolygon', 'ipolyline', 'iputdata', 'iregister', 'ireset', 'iresolve', 'irotate', 'isa', 'isave', 'iscale', 'isetcurrent', 'isetproperty', 'ishft', 'isocontour', 'isosurface', 'isurface', 'itext', 'itranslate', 'ivector', 'ivolume', 'izoom', 'journal', 'json_parse', 'json_serialize', 'jul2greg', 'julday', 'keyword_set', 'krig2d', 'kurtosis', 'kw_test', 'l64indgen', 'la_choldc', 'la_cholmprove', 'la_cholsol', 'la_determ', 'la_eigenproblem', 'la_eigenql', 'la_eigenvec', 'la_elmhes', 'la_gm_linear_model', 'la_hqr', 'la_invert', 'la_least_square_equality', 'la_least_squares', 'la_linear_equation', 'la_ludc', 'la_lumprove', 'la_lusol', 'la_svd', 'la_tridc', 'la_trimprove', 'la_triql', 'la_trired', 'la_trisol', 'label_date', 'label_region', 'ladfit', 'laguerre', 'lambda', 'lambdap', 'lambertw', 'laplacian', 'least_squares_filter', 'leefilt', 'legend', 'legendre', 'linbcg', 'lindgen', 'linfit', 'linkimage', 'list', 'll_arc_distance', 'lmfit', 'lmgr', 'lngamma', 'lnp_test', 'loadct', 'locale_get', 'logical_and', 'logical_or', 'logical_true', 'lon64arr', 'lonarr', 'long', 'long64', 'lsode', 'lu_complex', 'ludc', 'lumprove', 'lusol', 'm_correlate', 'machar', 'make_array', 'make_dll', 'make_rt', 'map', 'mapcontinents', 'mapgrid', 'map_2points', 'map_continents', 'map_grid', 'map_image', 'map_patch', 'map_proj_forward', 'map_proj_image', 'map_proj_info', 'map_proj_init', 'map_proj_inverse', 'map_set', 'matrix_multiply', 'matrix_power', 'max', 'md_test', 'mean', 'meanabsdev', 'mean_filter', 'median', 'memory', 'mesh_clip', 'mesh_decimate', 'mesh_issolid', 'mesh_merge', 'mesh_numtriangles', 'mesh_obj', 'mesh_smooth', 'mesh_surfacearea', 'mesh_validate', 'mesh_volume', 'message', 'min', 'min_curve_surf', 'mk_html_help', 'modifyct', 'moment', 'morph_close', 'morph_distance', 'morph_gradient', 'morph_hitormiss', 'morph_open', 'morph_thin', 'morph_tophat', 'multi', 'n_elements', 'n_params', 'n_tags', 'ncdf', 'newton', 'noise_hurl', 'noise_pick', 'noise_scatter', 'noise_slur', 'norm', 'obj_class', 'obj_destroy', 'obj_hasmethod', 'obj_isa', 'obj_new', 'obj_valid', 'objarr', 'on_error', 'on_ioerror', 'online_help', 'openr', 'openu', 'openw', 'oplot', 'oploterr', 'orderedhash', 'p_correlate', 'parse_url', 'particle_trace', 'path_cache', 'path_sep', 'pcomp', 'plot', 'plot3d', 'plot', 'plot_3dbox', 'plot_field', 'ploterr', 'plots', 'polar_contour', 'polar_surface', 'polyfill', 'polyshade', 'pnt_line', 'point_lun', 'polarplot', 'poly', 'poly_2d', 'poly_area', 'poly_fit', 'polyfillv', 'polygon', 'polyline', 'polywarp', 'popd', 'powell', 'pref_commit', 'pref_get', 'pref_set', 'prewitt', 'primes', 'print', 'printf', 'printd', 'pro', 'product', 'profile', 'profiler', 'profiles', 'project_vol', 'ps_show_fonts', 'psafm', 'pseudo', 'ptr_free', 'ptr_new', 'ptr_valid', 'ptrarr', 'pushd', 'qgrid3', 'qhull', 'qromb', 'qromo', 'qsimp', 'query_*', 'query_ascii', 'query_bmp', 'query_csv', 'query_dicom', 'query_gif', 'query_image', 'query_jpeg', 'query_jpeg2000', 'query_mrsid', 'query_pict', 'query_png', 'query_ppm', 'query_srf', 'query_tiff', 'query_video', 'query_wav', 'r_correlate', 'r_test', 'radon', 'randomn', 'randomu', 'ranks', 'rdpix', 'read', 'readf', 'read_ascii', 'read_binary', 'read_bmp', 'read_csv', 'read_dicom', 'read_gif', 'read_image', 'read_interfile', 'read_jpeg', 'read_jpeg2000', 'read_mrsid', 'read_pict', 'read_png', 'read_ppm', 'read_spr', 'read_srf', 'read_sylk', 'read_tiff', 'read_video', 'read_wav', 'read_wave', 'read_x11_bitmap', 'read_xwd', 'reads', 'readu', 'real_part', 'rebin', 'recall_commands', 'recon3', 'reduce_colors', 'reform', 'region_grow', 'register_cursor', 'regress', 'replicate', 'replicate_inplace', 'resolve_all', 'resolve_routine', 'restore', 'retall', 'return', 'reverse', 'rk4', 'roberts', 'rot', 'rotate', 'round', 'routine_filepath', 'routine_info', 'rs_test', 's_test', 'save', 'savgol', 'scale3', 'scale3d', 'scatterplot', 'scatterplot3d', 'scope_level', 'scope_traceback', 'scope_varfetch', 'scope_varname', 'search2d', 'search3d', 'sem_create', 'sem_delete', 'sem_lock', 'sem_release', 'set_plot', 'set_shading', 'setenv', 'sfit', 'shade_surf', 'shade_surf_irr', 'shade_volume', 'shift', 'shift_diff', 'shmdebug', 'shmmap', 'shmunmap', 'shmvar', 'show3', 'showfont', 'signum', 'simplex', 'sin', 'sindgen', 'sinh', 'size', 'skewness', 'skip_lun', 'slicer3', 'slide_image', 'smooth', 'sobel', 'socket', 'sort', 'spawn', 'sph_4pnt', 'sph_scat', 'spher_harm', 'spl_init', 'spl_interp', 'spline', 'spline_p', 'sprsab', 'sprsax', 'sprsin', 'sprstp', 'sqrt', 'standardize', 'stddev', 'stop', 'strarr', 'strcmp', 'strcompress', 'streamline', 'streamline', 'stregex', 'stretch', 'string', 'strjoin', 'strlen', 'strlowcase', 'strmatch', 'strmessage', 'strmid', 'strpos', 'strput', 'strsplit', 'strtrim', 'struct_assign', 'struct_hide', 'strupcase', 'surface', 'surface', 'surfr', 'svdc', 'svdfit', 'svsol', 'swap_endian', 'swap_endian_inplace', 'symbol', 'systime', 't_cvf', 't_pdf', 't3d', 'tag_names', 'tan', 'tanh', 'tek_color', 'temporary', 'terminal_size', 'tetra_clip', 'tetra_surface', 'tetra_volume', 'text', 'thin', 'thread', 'threed', 'tic', 'time_test2', 'timegen', 'timer', 'timestamp', 'timestamptovalues', 'tm_test', 'toc', 'total', 'trace', 'transpose', 'tri_surf', 'triangulate', 'trigrid', 'triql', 'trired', 'trisol', 'truncate_lun', 'ts_coef', 'ts_diff', 'ts_fcast', 'ts_smooth', 'tv', 'tvcrs', 'tvlct', 'tvrd', 'tvscl', 'typename', 'uindgen', 'uint', 'uintarr', 'ul64indgen', 'ulindgen', 'ulon64arr', 'ulonarr', 'ulong', 'ulong64', 'uniq', 'unsharp_mask', 'usersym', 'value_locate', 'variance', 'vector', 'vector_field', 'vel', 'velovect', 'vert_t3d', 'voigt', 'volume', 'voronoi', 'voxel_proj', 'wait', 'warp_tri', 'watershed', 'wdelete', 'wf_draw', 'where', 'widget_base', 'widget_button', 'widget_combobox', 'widget_control', 'widget_displaycontextmenu', 'widget_draw', 'widget_droplist', 'widget_event', 'widget_info', 'widget_label', 'widget_list', 'widget_propertysheet', 'widget_slider', 'widget_tab', 'widget_table', 'widget_text', 'widget_tree', 'widget_tree_move', 'widget_window', 'wiener_filter', 'window', 'window', 'write_bmp', 'write_csv', 'write_gif', 'write_image', 'write_jpeg', 'write_jpeg2000', 'write_nrif', 'write_pict', 'write_png', 'write_ppm', 'write_spr', 'write_srf', 'write_sylk', 'write_tiff', 'write_video', 'write_wav', 'write_wave', 'writeu', 'wset', 'wshow', 'wtn', 'wv_applet', 'wv_cwt', 'wv_cw_wavelet', 'wv_denoise', 'wv_dwt', 'wv_fn_coiflet', 'wv_fn_daubechies', 'wv_fn_gaussian', 'wv_fn_haar', 'wv_fn_morlet', 'wv_fn_paul', 'wv_fn_symlet', 'wv_import_data', 'wv_import_wavelet', 'wv_plot3d_wps', 'wv_plot_multires', 'wv_pwt', 'wv_tool_denoise', 'xbm_edit', 'xdisplayfile', 'xdxf', 'xfont', 'xinteranimate', 'xloadct', 'xmanager', 'xmng_tmpl', 'xmtool', 'xobjview', 'xobjview_rotate', 'xobjview_write_image', 'xpalette', 'xpcolor', 'xplot3d', 'xregistered', 'xroi', 'xsq_test', 'xsurface', 'xvaredit', 'xvolume', 'xvolume_rotate', 'xvolume_write_image', 'xyouts', 'zlib_compress', 'zlib_uncompress', 'zoom', 'zoom_24' ]; var builtins = wordRegexp(builtinArray); var keywordArray = [ 'begin', 'end', 'endcase', 'endfor', 'endwhile', 'endif', 'endrep', 'endforeach', 'break', 'case', 'continue', 'for', 'foreach', 'goto', 'if', 'then', 'else', 'repeat', 'until', 'switch', 'while', 'do', 'pro', 'function' ]; var keywords = wordRegexp(keywordArray); CodeMirror.registerHelper("hintWords", "idl", builtinArray.concat(keywordArray)); var identifiers = new RegExp('^[_a-z\xa1-\uffff][_a-z0-9\xa1-\uffff]*', 'i'); var singleOperators = /[+\-*&=<>\/@#~$]/; var boolOperators = new RegExp('(and|or|eq|lt|le|gt|ge|ne|not)', 'i'); function tokenBase(stream) { // whitespaces if (stream.eatSpace()) return null; // Handle one line Comments if (stream.match(';')) { stream.skipToEnd(); return 'comment'; } // Handle Number Literals if (stream.match(/^[0-9\.+-]/, false)) { if (stream.match(/^[+-]?0x[0-9a-fA-F]+/)) return 'number'; if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)) return 'number'; if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?/)) return 'number'; } // Handle Strings if (stream.match(/^"([^"]|(""))*"/)) { return 'string'; } if (stream.match(/^'([^']|(''))*'/)) { return 'string'; } // Handle words if (stream.match(keywords)) { return 'keyword'; } if (stream.match(builtins)) { return 'builtin'; } if (stream.match(identifiers)) { return 'variable'; } if (stream.match(singleOperators) || stream.match(boolOperators)) { return 'operator'; } // Handle non-detected items stream.next(); return null; }; CodeMirror.defineMode('idl', function() { return { token: function(stream) { return tokenBase(stream); } }; }); CodeMirror.defineMIME('text/x-idl', 'idl'); }); application/library/codemirror/mode/javascript/javascript.js000064400000070217147577724760020517 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function expressionAllowed(stream, state, backUp) { return /^(?:operator|sof|keyword c|case|new|[\[{}\(,;:]|=>)$/.test(state.lastType) || (state.lastType == "quasi" && /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0)))) } CodeMirror.defineMode("javascript", function(config, parserConfig) { var indentUnit = config.indentUnit; var statementIndent = parserConfig.statementIndent; var jsonldMode = parserConfig.jsonld; var jsonMode = parserConfig.json || jsonldMode; var isTS = parserConfig.typescript; var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/; // Tokenizer var keywords = function(){ function kw(type) {return {type: type, style: "keyword"};} var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c"); var operator = kw("operator"), atom = {type: "atom", style: "atom"}; var jsKeywords = { "if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B, "return": C, "break": C, "continue": C, "new": kw("new"), "delete": C, "throw": C, "debugger": C, "var": kw("var"), "const": kw("var"), "let": kw("var"), "function": kw("function"), "catch": kw("catch"), "for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"), "in": operator, "typeof": operator, "instanceof": operator, "true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom, "this": kw("this"), "class": kw("class"), "super": kw("atom"), "yield": C, "export": kw("export"), "import": kw("import"), "extends": C, "await": C, "async": kw("async") }; // Extend the 'normal' keywords with the TypeScript language extensions if (isTS) { var type = {type: "variable", style: "variable-3"}; var tsKeywords = { // object-like things "interface": kw("class"), "implements": C, "namespace": C, "module": kw("module"), "enum": kw("module"), // scope modifiers "public": kw("modifier"), "private": kw("modifier"), "protected": kw("modifier"), "abstract": kw("modifier"), // operators "as": operator, // types "string": type, "number": type, "boolean": type, "any": type }; for (var attr in tsKeywords) { jsKeywords[attr] = tsKeywords[attr]; } } return jsKeywords; }(); var isOperatorChar = /[+\-*&%=<>!?|~^]/; var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/; function readRegexp(stream) { var escaped = false, next, inSet = false; while ((next = stream.next()) != null) { if (!escaped) { if (next == "/" && !inSet) return; if (next == "[") inSet = true; else if (inSet && next == "]") inSet = false; } escaped = !escaped && next == "\\"; } } // Used as scratch variables to communicate multiple values without // consing up tons of objects. var type, content; function ret(tp, style, cont) { type = tp; content = cont; return style; } function tokenBase(stream, state) { var ch = stream.next(); if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) { return ret("number", "number"); } else if (ch == "." && stream.match("..")) { return ret("spread", "meta"); } else if (/[\[\]{}\(\),;\:\.]/.test(ch)) { return ret(ch); } else if (ch == "=" && stream.eat(">")) { return ret("=>", "operator"); } else if (ch == "0" && stream.eat(/x/i)) { stream.eatWhile(/[\da-f]/i); return ret("number", "number"); } else if (ch == "0" && stream.eat(/o/i)) { stream.eatWhile(/[0-7]/i); return ret("number", "number"); } else if (ch == "0" && stream.eat(/b/i)) { stream.eatWhile(/[01]/i); return ret("number", "number"); } else if (/\d/.test(ch)) { stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/); return ret("number", "number"); } else if (ch == "/") { if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } else if (stream.eat("/")) { stream.skipToEnd(); return ret("comment", "comment"); } else if (expressionAllowed(stream, state, 1)) { readRegexp(stream); stream.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/); return ret("regexp", "string-2"); } else { stream.eatWhile(isOperatorChar); return ret("operator", "operator", stream.current()); } } else if (ch == "`") { state.tokenize = tokenQuasi; return tokenQuasi(stream, state); } else if (ch == "#") { stream.skipToEnd(); return ret("error", "error"); } else if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return ret("operator", "operator", stream.current()); } else if (wordRE.test(ch)) { stream.eatWhile(wordRE); var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word]; return (known && state.lastType != ".") ? ret(known.type, known.style, word) : ret("variable", "variable", word); } } function tokenString(quote) { return function(stream, state) { var escaped = false, next; if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){ state.tokenize = tokenBase; return ret("jsonld-keyword", "meta"); } while ((next = stream.next()) != null) { if (next == quote && !escaped) break; escaped = !escaped && next == "\\"; } if (!escaped) state.tokenize = tokenBase; return ret("string", "string"); }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return ret("comment", "comment"); } function tokenQuasi(stream, state) { var escaped = false, next; while ((next = stream.next()) != null) { if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) { state.tokenize = tokenBase; break; } escaped = !escaped && next == "\\"; } return ret("quasi", "string-2", stream.current()); } var brackets = "([{}])"; // This is a crude lookahead trick to try and notice that we're // parsing the argument patterns for a fat-arrow function before we // actually hit the arrow token. It only works if the arrow is on // the same line as the arguments and there's no strange noise // (comments) in between. Fallback is to only notice when we hit the // arrow, and not declare the arguments as locals for the arrow // body. function findFatArrow(stream, state) { if (state.fatArrowAt) state.fatArrowAt = null; var arrow = stream.string.indexOf("=>", stream.start); if (arrow < 0) return; var depth = 0, sawSomething = false; for (var pos = arrow - 1; pos >= 0; --pos) { var ch = stream.string.charAt(pos); var bracket = brackets.indexOf(ch); if (bracket >= 0 && bracket < 3) { if (!depth) { ++pos; break; } if (--depth == 0) { if (ch == "(") sawSomething = true; break; } } else if (bracket >= 3 && bracket < 6) { ++depth; } else if (wordRE.test(ch)) { sawSomething = true; } else if (/["'\/]/.test(ch)) { return; } else if (sawSomething && !depth) { ++pos; break; } } if (sawSomething && !depth) state.fatArrowAt = pos; } // Parser var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true}; function JSLexical(indented, column, type, align, prev, info) { this.indented = indented; this.column = column; this.type = type; this.prev = prev; this.info = info; if (align != null) this.align = align; } function inScope(state, varname) { for (var v = state.localVars; v; v = v.next) if (v.name == varname) return true; for (var cx = state.context; cx; cx = cx.prev) { for (var v = cx.vars; v; v = v.next) if (v.name == varname) return true; } } function parseJS(state, style, type, content, stream) { var cc = state.cc; // Communicate our context to the combinators. // (Less wasteful than consing up a hundred closures on every call.) cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style; if (!state.lexical.hasOwnProperty("align")) state.lexical.align = true; while(true) { var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement; if (combinator(type, content)) { while(cc.length && cc[cc.length - 1].lex) cc.pop()(); if (cx.marked) return cx.marked; if (type == "variable" && inScope(state, content)) return "variable-2"; return style; } } } // Combinator utils var cx = {state: null, column: null, marked: null, cc: null}; function pass() { for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]); } function cont() { pass.apply(null, arguments); return true; } function register(varname) { function inList(list) { for (var v = list; v; v = v.next) if (v.name == varname) return true; return false; } var state = cx.state; cx.marked = "def"; if (state.context) { if (inList(state.localVars)) return; state.localVars = {name: varname, next: state.localVars}; } else { if (inList(state.globalVars)) return; if (parserConfig.globalVars) state.globalVars = {name: varname, next: state.globalVars}; } } // Combinators var defaultVars = {name: "this", next: {name: "arguments"}}; function pushcontext() { cx.state.context = {prev: cx.state.context, vars: cx.state.localVars}; cx.state.localVars = defaultVars; } function popcontext() { cx.state.localVars = cx.state.context.vars; cx.state.context = cx.state.context.prev; } function pushlex(type, info) { var result = function() { var state = cx.state, indent = state.indented; if (state.lexical.type == "stat") indent = state.lexical.indented; else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev) indent = outer.indented; state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info); }; result.lex = true; return result; } function poplex() { var state = cx.state; if (state.lexical.prev) { if (state.lexical.type == ")") state.indented = state.lexical.indented; state.lexical = state.lexical.prev; } } poplex.lex = true; function expect(wanted) { function exp(type) { if (type == wanted) return cont(); else if (wanted == ";") return pass(); else return cont(exp); }; return exp; } function statement(type, value) { if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex); if (type == "keyword a") return cont(pushlex("form"), expression, statement, poplex); if (type == "keyword b") return cont(pushlex("form"), statement, poplex); if (type == "{") return cont(pushlex("}"), block, poplex); if (type == ";") return cont(); if (type == "if") { if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex) cx.state.cc.pop()(); return cont(pushlex("form"), expression, statement, poplex, maybeelse); } if (type == "function") return cont(functiondef); if (type == "for") return cont(pushlex("form"), forspec, statement, poplex); if (type == "variable") return cont(pushlex("stat"), maybelabel); if (type == "switch") return cont(pushlex("form"), expression, pushlex("}", "switch"), expect("{"), block, poplex, poplex); if (type == "case") return cont(expression, expect(":")); if (type == "default") return cont(expect(":")); if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"), statement, poplex, popcontext); if (type == "class") return cont(pushlex("form"), className, poplex); if (type == "export") return cont(pushlex("stat"), afterExport, poplex); if (type == "import") return cont(pushlex("stat"), afterImport, poplex); if (type == "module") return cont(pushlex("form"), pattern, pushlex("}"), expect("{"), block, poplex, poplex) if (type == "async") return cont(statement) return pass(pushlex("stat"), expression, expect(";"), poplex); } function expression(type) { return expressionInner(type, false); } function expressionNoComma(type) { return expressionInner(type, true); } function expressionInner(type, noComma) { if (cx.state.fatArrowAt == cx.stream.start) { var body = noComma ? arrowBodyNoComma : arrowBody; if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext); else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext); } var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma; if (atomicTypes.hasOwnProperty(type)) return cont(maybeop); if (type == "function") return cont(functiondef, maybeop); if (type == "keyword c" || type == "async") return cont(noComma ? maybeexpressionNoComma : maybeexpression); if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop); if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression); if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop); if (type == "{") return contCommasep(objprop, "}", null, maybeop); if (type == "quasi") return pass(quasi, maybeop); if (type == "new") return cont(maybeTarget(noComma)); return cont(); } function maybeexpression(type) { if (type.match(/[;\}\)\],]/)) return pass(); return pass(expression); } function maybeexpressionNoComma(type) { if (type.match(/[;\}\)\],]/)) return pass(); return pass(expressionNoComma); } function maybeoperatorComma(type, value) { if (type == ",") return cont(expression); return maybeoperatorNoComma(type, value, false); } function maybeoperatorNoComma(type, value, noComma) { var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma; var expr = noComma == false ? expression : expressionNoComma; if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext); if (type == "operator") { if (/\+\+|--/.test(value)) return cont(me); if (value == "?") return cont(expression, expect(":"), expr); return cont(expr); } if (type == "quasi") { return pass(quasi, me); } if (type == ";") return; if (type == "(") return contCommasep(expressionNoComma, ")", "call", me); if (type == ".") return cont(property, me); if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me); } function quasi(type, value) { if (type != "quasi") return pass(); if (value.slice(value.length - 2) != "${") return cont(quasi); return cont(expression, continueQuasi); } function continueQuasi(type) { if (type == "}") { cx.marked = "string-2"; cx.state.tokenize = tokenQuasi; return cont(quasi); } } function arrowBody(type) { findFatArrow(cx.stream, cx.state); return pass(type == "{" ? statement : expression); } function arrowBodyNoComma(type) { findFatArrow(cx.stream, cx.state); return pass(type == "{" ? statement : expressionNoComma); } function maybeTarget(noComma) { return function(type) { if (type == ".") return cont(noComma ? targetNoComma : target); else return pass(noComma ? expressionNoComma : expression); }; } function target(_, value) { if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); } } function targetNoComma(_, value) { if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); } } function maybelabel(type) { if (type == ":") return cont(poplex, statement); return pass(maybeoperatorComma, expect(";"), poplex); } function property(type) { if (type == "variable") {cx.marked = "property"; return cont();} } function objprop(type, value) { if (type == "async") { cx.marked = "property"; return cont(objprop); } else if (type == "variable" || cx.style == "keyword") { cx.marked = "property"; if (value == "get" || value == "set") return cont(getterSetter); return cont(afterprop); } else if (type == "number" || type == "string") { cx.marked = jsonldMode ? "property" : (cx.style + " property"); return cont(afterprop); } else if (type == "jsonld-keyword") { return cont(afterprop); } else if (type == "modifier") { return cont(objprop) } else if (type == "[") { return cont(expression, expect("]"), afterprop); } else if (type == "spread") { return cont(expression); } else if (type == ":") { return pass(afterprop) } } function getterSetter(type) { if (type != "variable") return pass(afterprop); cx.marked = "property"; return cont(functiondef); } function afterprop(type) { if (type == ":") return cont(expressionNoComma); if (type == "(") return pass(functiondef); } function commasep(what, end) { function proceed(type, value) { if (type == ",") { var lex = cx.state.lexical; if (lex.info == "call") lex.pos = (lex.pos || 0) + 1; return cont(function(type, value) { if (type == end || value == end) return pass() return pass(what) }, proceed); } if (type == end || value == end) return cont(); return cont(expect(end)); } return function(type, value) { if (type == end || value == end) return cont(); return pass(what, proceed); }; } function contCommasep(what, end, info) { for (var i = 3; i < arguments.length; i++) cx.cc.push(arguments[i]); return cont(pushlex(end, info), commasep(what, end), poplex); } function block(type) { if (type == "}") return cont(); return pass(statement, block); } function maybetype(type) { if (isTS && type == ":") return cont(typeexpr); } function maybedefault(_, value) { if (value == "=") return cont(expressionNoComma); } function typeexpr(type) { if (type == "variable") {cx.marked = "variable-3"; return cont(afterType);} if (type == "{") return cont(commasep(typeprop, "}")) if (type == "(") return cont(commasep(typearg, ")"), maybeReturnType) } function maybeReturnType(type) { if (type == "=>") return cont(typeexpr) } function typeprop(type) { if (type == "variable" || cx.style == "keyword") { cx.marked = "property" return cont(typeprop) } else if (type == ":") { return cont(typeexpr) } } function typearg(type) { if (type == "variable") return cont(typearg) else if (type == ":") return cont(typeexpr) } function afterType(type, value) { if (value == "<") return cont(commasep(typeexpr, ">"), afterType) if (type == "[") return cont(expect("]"), afterType) } function vardef() { return pass(pattern, maybetype, maybeAssign, vardefCont); } function pattern(type, value) { if (type == "modifier") return cont(pattern) if (type == "variable") { register(value); return cont(); } if (type == "spread") return cont(pattern); if (type == "[") return contCommasep(pattern, "]"); if (type == "{") return contCommasep(proppattern, "}"); } function proppattern(type, value) { if (type == "variable" && !cx.stream.match(/^\s*:/, false)) { register(value); return cont(maybeAssign); } if (type == "variable") cx.marked = "property"; if (type == "spread") return cont(pattern); if (type == "}") return pass(); return cont(expect(":"), pattern, maybeAssign); } function maybeAssign(_type, value) { if (value == "=") return cont(expressionNoComma); } function vardefCont(type) { if (type == ",") return cont(vardef); } function maybeelse(type, value) { if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex); } function forspec(type) { if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex); } function forspec1(type) { if (type == "var") return cont(vardef, expect(";"), forspec2); if (type == ";") return cont(forspec2); if (type == "variable") return cont(formaybeinof); return pass(expression, expect(";"), forspec2); } function formaybeinof(_type, value) { if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } return cont(maybeoperatorComma, forspec2); } function forspec2(type, value) { if (type == ";") return cont(forspec3); if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); } return pass(expression, expect(";"), forspec3); } function forspec3(type) { if (type != ")") cont(expression); } function functiondef(type, value) { if (value == "*") {cx.marked = "keyword"; return cont(functiondef);} if (type == "variable") {register(value); return cont(functiondef);} if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, maybetype, statement, popcontext); } function funarg(type) { if (type == "spread") return cont(funarg); return pass(pattern, maybetype, maybedefault); } function className(type, value) { if (type == "variable") {register(value); return cont(classNameAfter);} } function classNameAfter(type, value) { if (value == "extends") return cont(isTS ? typeexpr : expression, classNameAfter); if (type == "{") return cont(pushlex("}"), classBody, poplex); } function classBody(type, value) { if (type == "variable" || cx.style == "keyword") { if (value == "static") { cx.marked = "keyword"; return cont(classBody); } cx.marked = "property"; if (value == "get" || value == "set") return cont(classGetterSetter, functiondef, classBody); return cont(functiondef, classBody); } if (value == "*") { cx.marked = "keyword"; return cont(classBody); } if (type == ";") return cont(classBody); if (type == "}") return cont(); } function classGetterSetter(type) { if (type != "variable") return pass(); cx.marked = "property"; return cont(); } function afterExport(_type, value) { if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); } if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); } return pass(statement); } function afterImport(type) { if (type == "string") return cont(); return pass(importSpec, maybeFrom); } function importSpec(type, value) { if (type == "{") return contCommasep(importSpec, "}"); if (type == "variable") register(value); if (value == "*") cx.marked = "keyword"; return cont(maybeAs); } function maybeAs(_type, value) { if (value == "as") { cx.marked = "keyword"; return cont(importSpec); } } function maybeFrom(_type, value) { if (value == "from") { cx.marked = "keyword"; return cont(expression); } } function arrayLiteral(type) { if (type == "]") return cont(); return pass(commasep(expressionNoComma, "]")); } function isContinuedStatement(state, textAfter) { return state.lastType == "operator" || state.lastType == "," || isOperatorChar.test(textAfter.charAt(0)) || /[,.]/.test(textAfter.charAt(0)); } // Interface return { startState: function(basecolumn) { var state = { tokenize: tokenBase, lastType: "sof", cc: [], lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false), localVars: parserConfig.localVars, context: parserConfig.localVars && {vars: parserConfig.localVars}, indented: basecolumn || 0 }; if (parserConfig.globalVars && typeof parserConfig.globalVars == "object") state.globalVars = parserConfig.globalVars; return state; }, token: function(stream, state) { if (stream.sol()) { if (!state.lexical.hasOwnProperty("align")) state.lexical.align = false; state.indented = stream.indentation(); findFatArrow(stream, state); } if (state.tokenize != tokenComment && stream.eatSpace()) return null; var style = state.tokenize(stream, state); if (type == "comment") return style; state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type; return parseJS(state, style, type, content, stream); }, indent: function(state, textAfter) { if (state.tokenize == tokenComment) return CodeMirror.Pass; if (state.tokenize != tokenBase) return 0; var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical; // Kludge to prevent 'maybelse' from blocking lexical scope pops if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) { var c = state.cc[i]; if (c == poplex) lexical = lexical.prev; else if (c != maybeelse) break; } if (lexical.type == "stat" && firstChar == "}") lexical = lexical.prev; if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat") lexical = lexical.prev; var type = lexical.type, closing = firstChar == type; if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0); else if (type == "form" && firstChar == "{") return lexical.indented; else if (type == "form") return lexical.indented + indentUnit; else if (type == "stat") return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0); else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false) return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit); else if (lexical.align) return lexical.column + (closing ? 0 : 1); else return lexical.indented + (closing ? 0 : indentUnit); }, electricInput: /^\s*(?:case .*?:|default:|\{|\})$/, blockCommentStart: jsonMode ? null : "/*", blockCommentEnd: jsonMode ? null : "*/", lineComment: jsonMode ? null : "//", fold: "brace", closeBrackets: "()[]{}''\"\"``", helperType: jsonMode ? "json" : "javascript", jsonldMode: jsonldMode, jsonMode: jsonMode, expressionAllowed: expressionAllowed, skipExpression: function(state) { var top = state.cc[state.cc.length - 1] if (top == expression || top == expressionNoComma) state.cc.pop() } }; }); CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/); CodeMirror.defineMIME("text/javascript", "javascript"); CodeMirror.defineMIME("text/ecmascript", "javascript"); CodeMirror.defineMIME("application/javascript", "javascript"); CodeMirror.defineMIME("application/x-javascript", "javascript"); CodeMirror.defineMIME("application/ecmascript", "javascript"); CodeMirror.defineMIME("application/json", {name: "javascript", json: true}); CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true}); CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true}); CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true }); CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true }); }); application/library/codemirror/mode/javascript/index.html000064400000010141147577724760017776 0ustar00 CodeMirror: JavaScript mode

JavaScript mode

JavaScript mode supports several configuration options:

  • json which will set the mode to expect JSON data rather than a JavaScript program.
  • jsonld which will set the mode to expect JSON-LD linked data rather than a JavaScript program (demo).
  • typescript which will activate additional syntax highlighting and some other things for TypeScript code (demo).
  • statementIndent which (given a number) will determine the amount of indentation to use for statements continued on a new line.
  • wordCharacters, a regexp that indicates which characters should be considered part of an identifier. Defaults to /[\w$]/, which does not handle non-ASCII identifiers. Can be set to something more elaborate to improve Unicode support.

MIME types defined: text/javascript, application/json, application/ld+json, text/typescript, application/typescript.

application/library/codemirror/mode/javascript/typescript.html000064400000003013147577724760021075 0ustar00 CodeMirror: TypeScript mode

TypeScript mode

This is a specialization of the JavaScript mode.

application/library/codemirror/mode/javascript/test.js000064400000017221147577724760017324 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "javascript"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("locals", "[keyword function] [def foo]([def a], [def b]) { [keyword var] [def c] [operator =] [number 10]; [keyword return] [variable-2 a] [operator +] [variable-2 c] [operator +] [variable d]; }"); MT("comma-and-binop", "[keyword function](){ [keyword var] [def x] [operator =] [number 1] [operator +] [number 2], [def y]; }"); MT("destructuring", "([keyword function]([def a], [[[def b], [def c] ]]) {", " [keyword let] {[def d], [property foo]: [def c][operator =][number 10], [def x]} [operator =] [variable foo]([variable-2 a]);", " [[[variable-2 c], [variable y] ]] [operator =] [variable-2 c];", "})();"); MT("destructure_trailing_comma", "[keyword let] {[def a], [def b],} [operator =] [variable foo];", "[keyword let] [def c];"); // Parser still in good state? MT("class_body", "[keyword class] [def Foo] {", " [property constructor]() {}", " [property sayName]() {", " [keyword return] [string-2 `foo${][variable foo][string-2 }oo`];", " }", "}"); MT("class", "[keyword class] [def Point] [keyword extends] [variable SuperThing] {", " [property get] [property prop]() { [keyword return] [number 24]; }", " [property constructor]([def x], [def y]) {", " [keyword super]([string 'something']);", " [keyword this].[property x] [operator =] [variable-2 x];", " }", "}"); MT("import", "[keyword function] [def foo]() {", " [keyword import] [def $] [keyword from] [string 'jquery'];", " [keyword import] { [def encrypt], [def decrypt] } [keyword from] [string 'crypto'];", "}"); MT("import_trailing_comma", "[keyword import] {[def foo], [def bar],} [keyword from] [string 'baz']") MT("const", "[keyword function] [def f]() {", " [keyword const] [[ [def a], [def b] ]] [operator =] [[ [number 1], [number 2] ]];", "}"); MT("for/of", "[keyword for]([keyword let] [def of] [keyword of] [variable something]) {}"); MT("generator", "[keyword function*] [def repeat]([def n]) {", " [keyword for]([keyword var] [def i] [operator =] [number 0]; [variable-2 i] [operator <] [variable-2 n]; [operator ++][variable-2 i])", " [keyword yield] [variable-2 i];", "}"); MT("quotedStringAddition", "[keyword let] [def f] [operator =] [variable a] [operator +] [string 'fatarrow'] [operator +] [variable c];"); MT("quotedFatArrow", "[keyword let] [def f] [operator =] [variable a] [operator +] [string '=>'] [operator +] [variable c];"); MT("fatArrow", "[variable array].[property filter]([def a] [operator =>] [variable-2 a] [operator +] [number 1]);", "[variable a];", // No longer in scope "[keyword let] [def f] [operator =] ([[ [def a], [def b] ]], [def c]) [operator =>] [variable-2 a] [operator +] [variable-2 c];", "[variable c];"); MT("spread", "[keyword function] [def f]([def a], [meta ...][def b]) {", " [variable something]([variable-2 a], [meta ...][variable-2 b]);", "}"); MT("quasi", "[variable re][string-2 `fofdlakj${][variable x] [operator +] ([variable re][string-2 `foo`]) [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]"); MT("quasi_no_function", "[variable x] [operator =] [string-2 `fofdlakj${][variable x] [operator +] [string-2 `foo`] [operator +] [number 1][string-2 }fdsa`] [operator +] [number 2]"); MT("indent_statement", "[keyword var] [def x] [operator =] [number 10]", "[variable x] [operator +=] [variable y] [operator +]", " [atom Infinity]", "[keyword debugger];"); MT("indent_if", "[keyword if] ([number 1])", " [keyword break];", "[keyword else] [keyword if] ([number 2])", " [keyword continue];", "[keyword else]", " [number 10];", "[keyword if] ([number 1]) {", " [keyword break];", "} [keyword else] [keyword if] ([number 2]) {", " [keyword continue];", "} [keyword else] {", " [number 10];", "}"); MT("indent_for", "[keyword for] ([keyword var] [def i] [operator =] [number 0];", " [variable i] [operator <] [number 100];", " [variable i][operator ++])", " [variable doSomething]([variable i]);", "[keyword debugger];"); MT("indent_c_style", "[keyword function] [def foo]()", "{", " [keyword debugger];", "}"); MT("indent_else", "[keyword for] (;;)", " [keyword if] ([variable foo])", " [keyword if] ([variable bar])", " [number 1];", " [keyword else]", " [number 2];", " [keyword else]", " [number 3];"); MT("indent_funarg", "[variable foo]([number 10000],", " [keyword function]([def a]) {", " [keyword debugger];", "};"); MT("indent_below_if", "[keyword for] (;;)", " [keyword if] ([variable foo])", " [number 1];", "[number 2];"); MT("multilinestring", "[keyword var] [def x] [operator =] [string 'foo\\]", "[string bar'];"); MT("scary_regexp", "[string-2 /foo[[/]]bar/];"); MT("indent_strange_array", "[keyword var] [def x] [operator =] [[", " [number 1],,", " [number 2],", "]];", "[number 10];"); MT("param_default", "[keyword function] [def foo]([def x] [operator =] [string-2 `foo${][number 10][string-2 }bar`]) {", " [keyword return] [variable-2 x];", "}"); MT("new_target", "[keyword function] [def F]([def target]) {", " [keyword if] ([variable-2 target] [operator &&] [keyword new].[keyword target].[property name]) {", " [keyword return] [keyword new]", " .[keyword target];", " }", "}"); var ts_mode = CodeMirror.getMode({indentUnit: 2}, "application/typescript") function TS(name) { test.mode(name, ts_mode, Array.prototype.slice.call(arguments, 1)) } TS("extend_type", "[keyword class] [def Foo] [keyword extends] [variable-3 Some][operator <][variable-3 Type][operator >] {}") TS("arrow_type", "[keyword let] [def x]: ([variable arg]: [variable-3 Type]) [operator =>] [variable-3 ReturnType]") var jsonld_mode = CodeMirror.getMode( {indentUnit: 2}, {name: "javascript", jsonld: true} ); function LD(name) { test.mode(name, jsonld_mode, Array.prototype.slice.call(arguments, 1)); } LD("json_ld_keywords", '{', ' [meta "@context"]: {', ' [meta "@base"]: [string "http://example.com"],', ' [meta "@vocab"]: [string "http://xmlns.com/foaf/0.1/"],', ' [property "likesFlavor"]: {', ' [meta "@container"]: [meta "@list"]', ' [meta "@reverse"]: [string "@beFavoriteOf"]', ' },', ' [property "nick"]: { [meta "@container"]: [meta "@set"] },', ' [property "nick"]: { [meta "@container"]: [meta "@index"] }', ' },', ' [meta "@graph"]: [[ {', ' [meta "@id"]: [string "http://dbpedia.org/resource/John_Lennon"],', ' [property "name"]: [string "John Lennon"],', ' [property "modified"]: {', ' [meta "@value"]: [string "2010-05-29T14:17:39+02:00"],', ' [meta "@type"]: [string "http://www.w3.org/2001/XMLSchema#dateTime"]', ' }', ' } ]]', '}'); LD("json_ld_fake", '{', ' [property "@fake"]: [string "@fake"],', ' [property "@contextual"]: [string "@identifier"],', ' [property "user@domain.com"]: [string "@graphical"],', ' [property "@ID"]: [string "@@ID"]', '}'); })(); application/library/codemirror/mode/javascript/json-ld.html000064400000004146147577724760020245 0ustar00 CodeMirror: JSON-LD mode

JSON-LD mode

This is a specialization of the JavaScript mode.

application/library/codemirror/mode/jinja2/index.html000064400000003333147577724760017012 0ustar00 CodeMirror: Jinja2 mode

Jinja2 mode

application/library/codemirror/mode/jinja2/jinja2.js000064400000010274147577724760016532 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("jinja2", function() { var keywords = ["and", "as", "block", "endblock", "by", "cycle", "debug", "else", "elif", "extends", "filter", "endfilter", "firstof", "for", "endfor", "if", "endif", "ifchanged", "endifchanged", "ifequal", "endifequal", "ifnotequal", "endifnotequal", "in", "include", "load", "not", "now", "or", "parsed", "regroup", "reversed", "spaceless", "endspaceless", "ssi", "templatetag", "openblock", "closeblock", "openvariable", "closevariable", "openbrace", "closebrace", "opencomment", "closecomment", "widthratio", "url", "with", "endwith", "get_current_language", "trans", "endtrans", "noop", "blocktrans", "endblocktrans", "get_available_languages", "get_current_language_bidi", "plural"], operator = /^[+\-*&%=<>!?|~^]/, sign = /^[:\[\(\{]/, atom = ["true", "false"], number = /^(\d[+\-\*\/])?\d+(\.\d+)?/; keywords = new RegExp("((" + keywords.join(")|(") + "))\\b"); atom = new RegExp("((" + atom.join(")|(") + "))\\b"); function tokenBase (stream, state) { var ch = stream.peek(); //Comment if (state.incomment) { if(!stream.skipTo("#}")) { stream.skipToEnd(); } else { stream.eatWhile(/\#|}/); state.incomment = false; } return "comment"; //Tag } else if (state.intag) { //After operator if(state.operator) { state.operator = false; if(stream.match(atom)) { return "atom"; } if(stream.match(number)) { return "number"; } } //After sign if(state.sign) { state.sign = false; if(stream.match(atom)) { return "atom"; } if(stream.match(number)) { return "number"; } } if(state.instring) { if(ch == state.instring) { state.instring = false; } stream.next(); return "string"; } else if(ch == "'" || ch == '"') { state.instring = ch; stream.next(); return "string"; } else if(stream.match(state.intag + "}") || stream.eat("-") && stream.match(state.intag + "}")) { state.intag = false; return "tag"; } else if(stream.match(operator)) { state.operator = true; return "operator"; } else if(stream.match(sign)) { state.sign = true; } else { if(stream.eat(" ") || stream.sol()) { if(stream.match(keywords)) { return "keyword"; } if(stream.match(atom)) { return "atom"; } if(stream.match(number)) { return "number"; } if(stream.sol()) { stream.next(); } } else { stream.next(); } } return "variable"; } else if (stream.eat("{")) { if (ch = stream.eat("#")) { state.incomment = true; if(!stream.skipTo("#}")) { stream.skipToEnd(); } else { stream.eatWhile(/\#|}/); state.incomment = false; } return "comment"; //Open tag } else if (ch = stream.eat(/\{|%/)) { //Cache close tag state.intag = ch; if(ch == "{") { state.intag = "}"; } stream.eat("-"); return "tag"; } } stream.next(); }; return { startState: function () { return {tokenize: tokenBase}; }, token: function (stream, state) { return state.tokenize(stream, state); } }; }); }); application/library/codemirror/mode/jsx/jsx.js000064400000012113147577724760015602 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript")) else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript"], mod) else // Plain browser env mod(CodeMirror) })(function(CodeMirror) { "use strict" // Depth means the amount of open braces in JS context, in XML // context 0 means not in tag, 1 means in tag, and 2 means in tag // and js block comment. function Context(state, mode, depth, prev) { this.state = state; this.mode = mode; this.depth = depth; this.prev = prev } function copyContext(context) { return new Context(CodeMirror.copyState(context.mode, context.state), context.mode, context.depth, context.prev && copyContext(context.prev)) } CodeMirror.defineMode("jsx", function(config, modeConfig) { var xmlMode = CodeMirror.getMode(config, {name: "xml", allowMissing: true, multilineTagIndentPastTag: false}) var jsMode = CodeMirror.getMode(config, modeConfig && modeConfig.base || "javascript") function flatXMLIndent(state) { var tagName = state.tagName state.tagName = null var result = xmlMode.indent(state, "") state.tagName = tagName return result } function token(stream, state) { if (state.context.mode == xmlMode) return xmlToken(stream, state, state.context) else return jsToken(stream, state, state.context) } function xmlToken(stream, state, cx) { if (cx.depth == 2) { // Inside a JS /* */ comment if (stream.match(/^.*?\*\//)) cx.depth = 1 else stream.skipToEnd() return "comment" } if (stream.peek() == "{") { xmlMode.skipAttribute(cx.state) var indent = flatXMLIndent(cx.state), xmlContext = cx.state.context // If JS starts on same line as tag if (xmlContext && stream.match(/^[^>]*>\s*$/, false)) { while (xmlContext.prev && !xmlContext.startOfLine) xmlContext = xmlContext.prev // If tag starts the line, use XML indentation level if (xmlContext.startOfLine) indent -= config.indentUnit // Else use JS indentation level else if (cx.prev.state.lexical) indent = cx.prev.state.lexical.indented // Else if inside of tag } else if (cx.depth == 1) { indent += config.indentUnit } state.context = new Context(CodeMirror.startState(jsMode, indent), jsMode, 0, state.context) return null } if (cx.depth == 1) { // Inside of tag if (stream.peek() == "<") { // Tag inside of tag xmlMode.skipAttribute(cx.state) state.context = new Context(CodeMirror.startState(xmlMode, flatXMLIndent(cx.state)), xmlMode, 0, state.context) return null } else if (stream.match("//")) { stream.skipToEnd() return "comment" } else if (stream.match("/*")) { cx.depth = 2 return token(stream, state) } } var style = xmlMode.token(stream, cx.state), cur = stream.current(), stop if (/\btag\b/.test(style)) { if (/>$/.test(cur)) { if (cx.state.context) cx.depth = 0 else state.context = state.context.prev } else if (/^ -1) { stream.backUp(cur.length - stop) } return style } function jsToken(stream, state, cx) { if (stream.peek() == "<" && jsMode.expressionAllowed(stream, cx.state)) { jsMode.skipExpression(cx.state) state.context = new Context(CodeMirror.startState(xmlMode, jsMode.indent(cx.state, "")), xmlMode, 0, state.context) return null } var style = jsMode.token(stream, cx.state) if (!style && cx.depth != null) { var cur = stream.current() if (cur == "{") { cx.depth++ } else if (cur == "}") { if (--cx.depth == 0) state.context = state.context.prev } } return style } return { startState: function() { return {context: new Context(CodeMirror.startState(jsMode), jsMode)} }, copyState: function(state) { return {context: copyContext(state.context)} }, token: token, indent: function(state, textAfter, fullLine) { return state.context.mode.indent(state.context.state, textAfter, fullLine) }, innerMode: function(state) { return state.context } } }, "xml", "javascript") CodeMirror.defineMIME("text/jsx", "jsx") CodeMirror.defineMIME("text/typescript-jsx", {name: "jsx", base: {name: "javascript", typescript: true}}) }); application/library/codemirror/mode/jsx/index.html000064400000004552147577724760016445 0ustar00 CodeMirror: JSX mode

JSX mode

JSX Mode for React's JavaScript syntax extension.

MIME types defined: text/jsx, text/typescript-jsx.

application/library/codemirror/mode/jsx/test.js000064400000005626147577724760015770 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "jsx") function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)) } MT("selfclose", "[keyword var] [def x] [operator =] [bracket&tag <] [tag foo] [bracket&tag />] [operator +] [number 1];") MT("openclose", "([bracket&tag <][tag foo][bracket&tag >]hello [atom &][bracket&tag ][operator ++])") MT("attr", "([bracket&tag <][tag foo] [attribute abc]=[string 'value'][bracket&tag >]hello [atom &][bracket&tag ][operator ++])") MT("braced_attr", "([bracket&tag <][tag foo] [attribute abc]={[number 10]}[bracket&tag >]hello [atom &][bracket&tag ][operator ++])") MT("braced_text", "([bracket&tag <][tag foo][bracket&tag >]hello {[number 10]} [atom &][bracket&tag ][operator ++])") MT("nested_tag", "([bracket&tag <][tag foo][bracket&tag ><][tag bar][bracket&tag >][operator ++])") MT("nested_jsx", "[keyword return] (", " [bracket&tag <][tag foo][bracket&tag >]", " say {[number 1] [operator +] [bracket&tag <][tag bar] [attribute attr]={[number 10]}[bracket&tag />]}!", " [bracket&tag ][operator ++]", ")") MT("preserve_js_context", "[variable x] [operator =] [string-2 `quasi${][bracket&tag <][tag foo][bracket&tag />][string-2 }quoted`]") MT("line_comment", "([bracket&tag <][tag foo] [comment // hello]", " [bracket&tag >][operator ++])") MT("line_comment_not_in_tag", "([bracket&tag <][tag foo][bracket&tag >] // hello", " [bracket&tag ][operator ++])") MT("block_comment", "([bracket&tag <][tag foo] [comment /* hello]", "[comment line 2]", "[comment line 3 */] [bracket&tag >][operator ++])") MT("block_comment_not_in_tag", "([bracket&tag <][tag foo][bracket&tag >]/* hello", " line 2", " line 3 */ [bracket&tag ][operator ++])") MT("missing_attr", "([bracket&tag <][tag foo] [attribute selected][bracket&tag />][operator ++])") MT("indent_js", "([bracket&tag <][tag foo][bracket&tag >]", " [bracket&tag <][tag bar] [attribute baz]={[keyword function]() {", " [keyword return] [number 10]", " }}[bracket&tag />]", " [bracket&tag ])") MT("spread", "([bracket&tag <][tag foo] [attribute bar]={[meta ...][variable baz] [operator /][number 2]}[bracket&tag />])") MT("tag_attribute", "([bracket&tag <][tag foo] [attribute bar]=[bracket&tag <][tag foo][bracket&tag />/>][operator ++])") })() application/library/codemirror/mode/julia/julia.js000064400000026246147577724760016416 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("julia", function(_conf, parserConf) { var ERRORCLASS = 'error'; function wordRegexp(words, end) { if (typeof end === 'undefined') { end = "\\b"; } return new RegExp("^((" + words.join(")|(") + "))" + end); } var octChar = "\\\\[0-7]{1,3}"; var hexChar = "\\\\x[A-Fa-f0-9]{1,2}"; var specialChar = "\\\\[abfnrtv0%?'\"\\\\]"; var singleChar = "([^\\u0027\\u005C\\uD800-\\uDFFF]|[\\uD800-\\uDFFF][\\uDC00-\\uDFFF])"; var operators = parserConf.operators || /^\.?[|&^\\%*+\-<>!=\/]=?|\?|~|:|\$|\.[<>]|<<=?|>>>?=?|\.[<>=]=|->?|\/\/|\bin\b(?!\()|[\u2208\u2209](?!\()/; var delimiters = parserConf.delimiters || /^[;,()[\]{}]/; var identifiers = parserConf.identifiers || /^[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/; var charsList = [octChar, hexChar, specialChar, singleChar]; var blockOpeners = ["begin", "function", "type", "immutable", "let", "macro", "for", "while", "quote", "if", "else", "elseif", "try", "finally", "catch", "do"]; var blockClosers = ["end", "else", "elseif", "catch", "finally"]; var keywordList = ['if', 'else', 'elseif', 'while', 'for', 'begin', 'let', 'end', 'do', 'try', 'catch', 'finally', 'return', 'break', 'continue', 'global', 'local', 'const', 'export', 'import', 'importall', 'using', 'function', 'macro', 'module', 'baremodule', 'type', 'immutable', 'quote', 'typealias', 'abstract', 'bitstype']; var builtinList = ['true', 'false', 'nothing', 'NaN', 'Inf']; //var stringPrefixes = new RegExp("^[br]?('|\")") var stringPrefixes = /^(`|"{3}|([brv]?"))/; var chars = wordRegexp(charsList, "'"); var keywords = wordRegexp(keywordList); var builtins = wordRegexp(builtinList); var openers = wordRegexp(blockOpeners); var closers = wordRegexp(blockClosers); var macro = /^@[_A-Za-z][\w]*/; var symbol = /^:[_A-Za-z\u00A1-\uFFFF][\w\u00A1-\uFFFF]*!*/; var typeAnnotation = /^::[^,;"{()=$\s]+({[^}]*}+)*/; function inArray(state) { var ch = currentScope(state); if (ch == '[') { return true; } return false; } function currentScope(state) { if (state.scopes.length == 0) { return null; } return state.scopes[state.scopes.length - 1]; } // tokenizers function tokenBase(stream, state) { // Handle multiline comments if (stream.match(/^#=/, false)) { state.tokenize = tokenComment; return state.tokenize(stream, state); } // Handle scope changes var leavingExpr = state.leavingExpr; if (stream.sol()) { leavingExpr = false; } state.leavingExpr = false; if (leavingExpr) { if (stream.match(/^'+/)) { return 'operator'; } } if (stream.match(/^\.{2,3}/)) { return 'operator'; } if (stream.eatSpace()) { return null; } var ch = stream.peek(); // Handle single line comments if (ch === '#') { stream.skipToEnd(); return 'comment'; } if (ch === '[') { state.scopes.push('['); } if (ch === '(') { state.scopes.push('('); } var scope = currentScope(state); if (scope == '[' && ch === ']') { state.scopes.pop(); state.leavingExpr = true; } if (scope == '(' && ch === ')') { state.scopes.pop(); state.leavingExpr = true; } var match; if (!inArray(state) && (match=stream.match(openers, false))) { state.scopes.push(match); } if (!inArray(state) && stream.match(closers, false)) { state.scopes.pop(); } if (inArray(state)) { if (state.lastToken == 'end' && stream.match(/^:/)) { return 'operator'; } if (stream.match(/^end/)) { return 'number'; } } if (stream.match(/^=>/)) { return 'operator'; } // Handle Number Literals if (stream.match(/^[0-9\.]/, false)) { var imMatcher = RegExp(/^im\b/); var numberLiteral = false; // Floats if (stream.match(/^\d*\.(?!\.)\d*([Eef][\+\-]?\d+)?/i)) { numberLiteral = true; } if (stream.match(/^\d+\.(?!\.)\d*/)) { numberLiteral = true; } if (stream.match(/^\.\d+/)) { numberLiteral = true; } if (stream.match(/^0x\.[0-9a-f]+p[\+\-]?\d+/i)) { numberLiteral = true; } // Integers if (stream.match(/^0x[0-9a-f]+/i)) { numberLiteral = true; } // Hex if (stream.match(/^0b[01]+/i)) { numberLiteral = true; } // Binary if (stream.match(/^0o[0-7]+/i)) { numberLiteral = true; } // Octal if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { numberLiteral = true; } // Decimal // Zero by itself with no other piece of number. if (stream.match(/^0(?![\dx])/i)) { numberLiteral = true; } if (numberLiteral) { // Integer literals may be "long" stream.match(imMatcher); state.leavingExpr = true; return 'number'; } } if (stream.match(/^<:/)) { return 'operator'; } if (stream.match(typeAnnotation)) { return 'builtin'; } // Handle symbols if (!leavingExpr && stream.match(symbol) || stream.match(/:\./)) { return 'builtin'; } // Handle parametric types if (stream.match(/^{[^}]*}(?=\()/)) { return 'builtin'; } // Handle operators and Delimiters if (stream.match(operators)) { return 'operator'; } // Handle Chars if (stream.match(/^'/)) { state.tokenize = tokenChar; return state.tokenize(stream, state); } // Handle Strings if (stream.match(stringPrefixes)) { state.tokenize = tokenStringFactory(stream.current()); return state.tokenize(stream, state); } if (stream.match(macro)) { return 'meta'; } if (stream.match(delimiters)) { return null; } if (stream.match(keywords)) { return 'keyword'; } if (stream.match(builtins)) { return 'builtin'; } var isDefinition = state.isDefinition || state.lastToken == 'function' || state.lastToken == 'macro' || state.lastToken == 'type' || state.lastToken == 'immutable'; if (stream.match(identifiers)) { if (isDefinition) { if (stream.peek() === '.') { state.isDefinition = true; return 'variable'; } state.isDefinition = false; return 'def'; } if (stream.match(/^({[^}]*})*\(/, false)) { return callOrDef(stream, state); } state.leavingExpr = true; return 'variable'; } // Handle non-detected items stream.next(); return ERRORCLASS; } function callOrDef(stream, state) { var match = stream.match(/^(\(\s*)/); if (match) { if (state.firstParenPos < 0) state.firstParenPos = state.scopes.length; state.scopes.push('('); state.charsAdvanced += match[1].length; } if (currentScope(state) == '(' && stream.match(/^\)/)) { state.scopes.pop(); state.charsAdvanced += 1; if (state.scopes.length <= state.firstParenPos) { var isDefinition = stream.match(/^\s*?=(?!=)/, false); stream.backUp(state.charsAdvanced); state.firstParenPos = -1; state.charsAdvanced = 0; if (isDefinition) return 'def'; return 'builtin'; } } // Unfortunately javascript does not support multiline strings, so we have // to undo anything done upto here if a function call or definition splits // over two or more lines. if (stream.match(/^$/g, false)) { stream.backUp(state.charsAdvanced); while (state.scopes.length > state.firstParenPos) state.scopes.pop(); state.firstParenPos = -1; state.charsAdvanced = 0; return 'builtin'; } state.charsAdvanced += stream.match(/^([^()]*)/)[1].length; return callOrDef(stream, state); } function tokenComment(stream, state) { if (stream.match(/^#=/)) { state.weakScopes++; } if (!stream.match(/.*?(?=(#=|=#))/)) { stream.skipToEnd(); } if (stream.match(/^=#/)) { state.weakScopes--; if (state.weakScopes == 0) state.tokenize = tokenBase; } return 'comment'; } function tokenChar(stream, state) { var isChar = false, match; if (stream.match(chars)) { isChar = true; } else if (match = stream.match(/\\u([a-f0-9]{1,4})(?=')/i)) { var value = parseInt(match[1], 16); if (value <= 55295 || value >= 57344) { // (U+0,U+D7FF), (U+E000,U+FFFF) isChar = true; stream.next(); } } else if (match = stream.match(/\\U([A-Fa-f0-9]{5,8})(?=')/)) { var value = parseInt(match[1], 16); if (value <= 1114111) { // U+10FFFF isChar = true; stream.next(); } } if (isChar) { state.leavingExpr = true; state.tokenize = tokenBase; return 'string'; } if (!stream.match(/^[^']+(?=')/)) { stream.skipToEnd(); } if (stream.match(/^'/)) { state.tokenize = tokenBase; } return ERRORCLASS; } function tokenStringFactory(delimiter) { while ('bruv'.indexOf(delimiter.charAt(0).toLowerCase()) >= 0) { delimiter = delimiter.substr(1); } var OUTCLASS = 'string'; function tokenString(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^"\\]/); if (stream.eat('\\')) { stream.next(); } else if (stream.match(delimiter)) { state.tokenize = tokenBase; state.leavingExpr = true; return OUTCLASS; } else { stream.eat(/["]/); } } return OUTCLASS; } tokenString.isString = true; return tokenString; } var external = { startState: function() { return { tokenize: tokenBase, scopes: [], weakScopes: 0, lastToken: null, leavingExpr: false, isDefinition: false, charsAdvanced: 0, firstParenPos: -1 }; }, token: function(stream, state) { var style = state.tokenize(stream, state); var current = stream.current(); if (current && style) { state.lastToken = current; } // Handle '.' connected identifiers if (current === '.') { style = stream.match(identifiers, false) || stream.match(macro, false) || stream.match(/\(/, false) ? 'operator' : ERRORCLASS; } return style; }, indent: function(state, textAfter) { var delta = 0; if (textAfter == "]" || textAfter == ")" || textAfter == "end" || textAfter == "else" || textAfter == "elseif" || textAfter == "catch" || textAfter == "finally") { delta = -1; } return (state.scopes.length + delta) * _conf.indentUnit; }, electricInput: /(end|else(if)?|catch|finally)$/, lineComment: "#", fold: "indent" }; return external; }); CodeMirror.defineMIME("text/x-julia", "julia"); }); application/library/codemirror/mode/julia/index.html000064400000004507147577724760016745 0ustar00 CodeMirror: Julia mode

Julia mode

MIME types defined: text/x-julia.

application/library/codemirror/mode/livescript/index.html000064400000023163147577724760020024 0ustar00 CodeMirror: LiveScript mode

LiveScript mode

MIME types defined: text/x-livescript.

The LiveScript mode was written by Kenneth Bentley.

application/library/codemirror/mode/livescript/livescript.js000064400000016764147577724760020562 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /** * Link to the project's GitHub page: * https://github.com/duralog/CodeMirror */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('livescript', function(){ var tokenBase = function(stream, state) { var next_rule = state.next || "start"; if (next_rule) { state.next = state.next; var nr = Rules[next_rule]; if (nr.splice) { for (var i$ = 0; i$ < nr.length; ++i$) { var r = nr[i$]; if (r.regex && stream.match(r.regex)) { state.next = r.next || state.next; return r.token; } } stream.next(); return 'error'; } if (stream.match(r = Rules[next_rule])) { if (r.regex && stream.match(r.regex)) { state.next = r.next; return r.token; } else { stream.next(); return 'error'; } } } stream.next(); return 'error'; }; var external = { startState: function(){ return { next: 'start', lastToken: {style: null, indent: 0, content: ""} }; }, token: function(stream, state){ while (stream.pos == stream.start) var style = tokenBase(stream, state); state.lastToken = { style: style, indent: stream.indentation(), content: stream.current() }; return style.replace(/\./g, ' '); }, indent: function(state){ var indentation = state.lastToken.indent; if (state.lastToken.content.match(indenter)) { indentation += 2; } return indentation; } }; return external; }); var identifier = '(?![\\d\\s])[$\\w\\xAA-\\uFFDC](?:(?!\\s)[$\\w\\xAA-\\uFFDC]|-[A-Za-z])*'; var indenter = RegExp('(?:[({[=:]|[-~]>|\\b(?:e(?:lse|xport)|d(?:o|efault)|t(?:ry|hen)|finally|import(?:\\s*all)?|const|var|let|new|catch(?:\\s*' + identifier + ')?))\\s*$'); var keywordend = '(?![$\\w]|-[A-Za-z]|\\s*:(?![:=]))'; var stringfill = { token: 'string', regex: '.+' }; var Rules = { start: [ { token: 'comment.doc', regex: '/\\*', next: 'comment' }, { token: 'comment', regex: '#.*' }, { token: 'keyword', regex: '(?:t(?:h(?:is|row|en)|ry|ypeof!?)|c(?:on(?:tinue|st)|a(?:se|tch)|lass)|i(?:n(?:stanceof)?|mp(?:ort(?:\\s+all)?|lements)|[fs])|d(?:e(?:fault|lete|bugger)|o)|f(?:or(?:\\s+own)?|inally|unction)|s(?:uper|witch)|e(?:lse|x(?:tends|port)|val)|a(?:nd|rguments)|n(?:ew|ot)|un(?:less|til)|w(?:hile|ith)|o[fr]|return|break|let|var|loop)' + keywordend }, { token: 'constant.language', regex: '(?:true|false|yes|no|on|off|null|void|undefined)' + keywordend }, { token: 'invalid.illegal', regex: '(?:p(?:ackage|r(?:ivate|otected)|ublic)|i(?:mplements|nterface)|enum|static|yield)' + keywordend }, { token: 'language.support.class', regex: '(?:R(?:e(?:gExp|ferenceError)|angeError)|S(?:tring|yntaxError)|E(?:rror|valError)|Array|Boolean|Date|Function|Number|Object|TypeError|URIError)' + keywordend }, { token: 'language.support.function', regex: '(?:is(?:NaN|Finite)|parse(?:Int|Float)|Math|JSON|(?:en|de)codeURI(?:Component)?)' + keywordend }, { token: 'variable.language', regex: '(?:t(?:hat|il|o)|f(?:rom|allthrough)|it|by|e)' + keywordend }, { token: 'identifier', regex: identifier + '\\s*:(?![:=])' }, { token: 'variable', regex: identifier }, { token: 'keyword.operator', regex: '(?:\\.{3}|\\s+\\?)' }, { token: 'keyword.variable', regex: '(?:@+|::|\\.\\.)', next: 'key' }, { token: 'keyword.operator', regex: '\\.\\s*', next: 'key' }, { token: 'string', regex: '\\\\\\S[^\\s,;)}\\]]*' }, { token: 'string.doc', regex: '\'\'\'', next: 'qdoc' }, { token: 'string.doc', regex: '"""', next: 'qqdoc' }, { token: 'string', regex: '\'', next: 'qstring' }, { token: 'string', regex: '"', next: 'qqstring' }, { token: 'string', regex: '`', next: 'js' }, { token: 'string', regex: '<\\[', next: 'words' }, { token: 'string.regex', regex: '//', next: 'heregex' }, { token: 'string.regex', regex: '\\/(?:[^[\\/\\n\\\\]*(?:(?:\\\\.|\\[[^\\]\\n\\\\]*(?:\\\\.[^\\]\\n\\\\]*)*\\])[^[\\/\\n\\\\]*)*)\\/[gimy$]{0,4}', next: 'key' }, { token: 'constant.numeric', regex: '(?:0x[\\da-fA-F][\\da-fA-F_]*|(?:[2-9]|[12]\\d|3[0-6])r[\\da-zA-Z][\\da-zA-Z_]*|(?:\\d[\\d_]*(?:\\.\\d[\\d_]*)?|\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[\\w$]*)' }, { token: 'lparen', regex: '[({[]' }, { token: 'rparen', regex: '[)}\\]]', next: 'key' }, { token: 'keyword.operator', regex: '\\S+' }, { token: 'text', regex: '\\s+' } ], heregex: [ { token: 'string.regex', regex: '.*?//[gimy$?]{0,4}', next: 'start' }, { token: 'string.regex', regex: '\\s*#{' }, { token: 'comment.regex', regex: '\\s+(?:#.*)?' }, { token: 'string.regex', regex: '\\S+' } ], key: [ { token: 'keyword.operator', regex: '[.?@!]+' }, { token: 'identifier', regex: identifier, next: 'start' }, { token: 'text', regex: '', next: 'start' } ], comment: [ { token: 'comment.doc', regex: '.*?\\*/', next: 'start' }, { token: 'comment.doc', regex: '.+' } ], qdoc: [ { token: 'string', regex: ".*?'''", next: 'key' }, stringfill ], qqdoc: [ { token: 'string', regex: '.*?"""', next: 'key' }, stringfill ], qstring: [ { token: 'string', regex: '[^\\\\\']*(?:\\\\.[^\\\\\']*)*\'', next: 'key' }, stringfill ], qqstring: [ { token: 'string', regex: '[^\\\\"]*(?:\\\\.[^\\\\"]*)*"', next: 'key' }, stringfill ], js: [ { token: 'string', regex: '[^\\\\`]*(?:\\\\.[^\\\\`]*)*`', next: 'key' }, stringfill ], words: [ { token: 'string', regex: '.*?\\]>', next: 'key' }, stringfill ] }; for (var idx in Rules) { var r = Rules[idx]; if (r.splice) { for (var i = 0, len = r.length; i < len; ++i) { var rr = r[i]; if (typeof rr.regex === 'string') { Rules[idx][i].regex = new RegExp('^' + rr.regex); } } } else if (typeof rr.regex === 'string') { Rules[idx].regex = new RegExp('^' + r.regex); } } CodeMirror.defineMIME('text/x-livescript', 'livescript'); }); application/library/codemirror/mode/lua/index.html000064400000004031147577724760016412 0ustar00 CodeMirror: Lua mode

Lua mode

Loosely based on Franciszek Wawrzak's CodeMirror 1 mode. One configuration parameter is supported, specials, to which you can provide an array of strings to have those identifiers highlighted with the lua-special style.

MIME types defined: text/x-lua.

application/library/codemirror/mode/lua/lua.js000064400000013476147577724760015551 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // LUA mode. Ported to CodeMirror 2 from Franciszek Wawrzak's // CodeMirror 1 mode. // highlights keywords, strings, comments (no leveling supported! ("[==[")), tokens, basic indenting (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("lua", function(config, parserConfig) { var indentUnit = config.indentUnit; function prefixRE(words) { return new RegExp("^(?:" + words.join("|") + ")", "i"); } function wordRE(words) { return new RegExp("^(?:" + words.join("|") + ")$", "i"); } var specials = wordRE(parserConfig.specials || []); // long list of standard functions from lua manual var builtins = wordRE([ "_G","_VERSION","assert","collectgarbage","dofile","error","getfenv","getmetatable","ipairs","load", "loadfile","loadstring","module","next","pairs","pcall","print","rawequal","rawget","rawset","require", "select","setfenv","setmetatable","tonumber","tostring","type","unpack","xpcall", "coroutine.create","coroutine.resume","coroutine.running","coroutine.status","coroutine.wrap","coroutine.yield", "debug.debug","debug.getfenv","debug.gethook","debug.getinfo","debug.getlocal","debug.getmetatable", "debug.getregistry","debug.getupvalue","debug.setfenv","debug.sethook","debug.setlocal","debug.setmetatable", "debug.setupvalue","debug.traceback", "close","flush","lines","read","seek","setvbuf","write", "io.close","io.flush","io.input","io.lines","io.open","io.output","io.popen","io.read","io.stderr","io.stdin", "io.stdout","io.tmpfile","io.type","io.write", "math.abs","math.acos","math.asin","math.atan","math.atan2","math.ceil","math.cos","math.cosh","math.deg", "math.exp","math.floor","math.fmod","math.frexp","math.huge","math.ldexp","math.log","math.log10","math.max", "math.min","math.modf","math.pi","math.pow","math.rad","math.random","math.randomseed","math.sin","math.sinh", "math.sqrt","math.tan","math.tanh", "os.clock","os.date","os.difftime","os.execute","os.exit","os.getenv","os.remove","os.rename","os.setlocale", "os.time","os.tmpname", "package.cpath","package.loaded","package.loaders","package.loadlib","package.path","package.preload", "package.seeall", "string.byte","string.char","string.dump","string.find","string.format","string.gmatch","string.gsub", "string.len","string.lower","string.match","string.rep","string.reverse","string.sub","string.upper", "table.concat","table.insert","table.maxn","table.remove","table.sort" ]); var keywords = wordRE(["and","break","elseif","false","nil","not","or","return", "true","function", "end", "if", "then", "else", "do", "while", "repeat", "until", "for", "in", "local" ]); var indentTokens = wordRE(["function", "if","repeat","do", "\\(", "{"]); var dedentTokens = wordRE(["end", "until", "\\)", "}"]); var dedentPartial = prefixRE(["end", "until", "\\)", "}", "else", "elseif"]); function readBracket(stream) { var level = 0; while (stream.eat("=")) ++level; stream.eat("["); return level; } function normal(stream, state) { var ch = stream.next(); if (ch == "-" && stream.eat("-")) { if (stream.eat("[") && stream.eat("[")) return (state.cur = bracketed(readBracket(stream), "comment"))(stream, state); stream.skipToEnd(); return "comment"; } if (ch == "\"" || ch == "'") return (state.cur = string(ch))(stream, state); if (ch == "[" && /[\[=]/.test(stream.peek())) return (state.cur = bracketed(readBracket(stream), "string"))(stream, state); if (/\d/.test(ch)) { stream.eatWhile(/[\w.%]/); return "number"; } if (/[\w_]/.test(ch)) { stream.eatWhile(/[\w\\\-_.]/); return "variable"; } return null; } function bracketed(level, style) { return function(stream, state) { var curlev = null, ch; while ((ch = stream.next()) != null) { if (curlev == null) {if (ch == "]") curlev = 0;} else if (ch == "=") ++curlev; else if (ch == "]" && curlev == level) { state.cur = normal; break; } else curlev = null; } return style; }; } function string(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) break; escaped = !escaped && ch == "\\"; } if (!escaped) state.cur = normal; return "string"; }; } return { startState: function(basecol) { return {basecol: basecol || 0, indentDepth: 0, cur: normal}; }, token: function(stream, state) { if (stream.eatSpace()) return null; var style = state.cur(stream, state); var word = stream.current(); if (style == "variable") { if (keywords.test(word)) style = "keyword"; else if (builtins.test(word)) style = "builtin"; else if (specials.test(word)) style = "variable-2"; } if ((style != "comment") && (style != "string")){ if (indentTokens.test(word)) ++state.indentDepth; else if (dedentTokens.test(word)) --state.indentDepth; } return style; }, indent: function(state, textAfter) { var closing = dedentPartial.test(textAfter); return state.basecol + indentUnit * (state.indentDepth - (closing ? 1 : 0)); }, lineComment: "--", blockCommentStart: "--[[", blockCommentEnd: "]]" }; }); CodeMirror.defineMIME("text/x-lua", "lua"); }); application/library/codemirror/mode/markdown/index.html000064400000025315147577724760017463 0ustar00 CodeMirror: Markdown mode

Markdown mode

You might want to use the Github-Flavored Markdown mode instead, which adds support for fenced code blocks and a few other things.

Optionally depends on the XML mode for properly highlighted inline XML blocks.

MIME types defined: text/x-markdown.

Parsing/Highlighting Tests: normal, verbose.

application/library/codemirror/mode/markdown/test.js000064400000071736147577724760017013 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({tabSize: 4}, "markdown"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } var modeHighlightFormatting = CodeMirror.getMode({tabSize: 4}, {name: "markdown", highlightFormatting: true}); function FT(name) { test.mode(name, modeHighlightFormatting, Array.prototype.slice.call(arguments, 1)); } var modeAtxNoSpace = CodeMirror.getMode({tabSize: 4}, {name: "markdown", allowAtxHeaderWithoutSpace: true}); function AtxNoSpaceTest(name) { test.mode(name, modeAtxNoSpace, Array.prototype.slice.call(arguments, 1)); } var modeFenced = CodeMirror.getMode({tabSize: 4}, {name: "markdown", fencedCodeBlocks: true}); function FencedTest(name) { test.mode(name, modeFenced, Array.prototype.slice.call(arguments, 1)); } var modeOverrideClasses = CodeMirror.getMode({tabsize: 4}, { name: "markdown", strikethrough: true, tokenTypeOverrides: { "header" : "override-header", "code" : "override-code", "quote" : "override-quote", "list1" : "override-list1", "list2" : "override-list2", "list3" : "override-list3", "hr" : "override-hr", "image" : "override-image", "imageAltText": "override-image-alt-text", "imageMarker": "override-image-marker", "linkInline" : "override-link-inline", "linkEmail" : "override-link-email", "linkText" : "override-link-text", "linkHref" : "override-link-href", "em" : "override-em", "strong" : "override-strong", "strikethrough" : "override-strikethrough" }}); function TokenTypeOverrideTest(name) { test.mode(name, modeOverrideClasses, Array.prototype.slice.call(arguments, 1)); } var modeFormattingOverride = CodeMirror.getMode({tabsize: 4}, { name: "markdown", highlightFormatting: true, tokenTypeOverrides: { "formatting" : "override-formatting" }}); function FormatTokenTypeOverrideTest(name) { test.mode(name, modeFormattingOverride, Array.prototype.slice.call(arguments, 1)); } FT("formatting_emAsterisk", "[em&formatting&formatting-em *][em foo][em&formatting&formatting-em *]"); FT("formatting_emUnderscore", "[em&formatting&formatting-em _][em foo][em&formatting&formatting-em _]"); FT("formatting_strongAsterisk", "[strong&formatting&formatting-strong **][strong foo][strong&formatting&formatting-strong **]"); FT("formatting_strongUnderscore", "[strong&formatting&formatting-strong __][strong foo][strong&formatting&formatting-strong __]"); FT("formatting_codeBackticks", "[comment&formatting&formatting-code `][comment foo][comment&formatting&formatting-code `]"); FT("formatting_doubleBackticks", "[comment&formatting&formatting-code ``][comment foo ` bar][comment&formatting&formatting-code ``]"); FT("formatting_atxHeader", "[header&header-1&formatting&formatting-header&formatting-header-1 # ][header&header-1 foo # bar ][header&header-1&formatting&formatting-header&formatting-header-1 #]"); FT("formatting_setextHeader", "foo", "[header&header-1&formatting&formatting-header&formatting-header-1 =]"); FT("formatting_blockquote", "[quote"e-1&formatting&formatting-quote&formatting-quote-1 > ][quote"e-1 foo]"); FT("formatting_list", "[variable-2&formatting&formatting-list&formatting-list-ul - ][variable-2 foo]"); FT("formatting_list", "[variable-2&formatting&formatting-list&formatting-list-ol 1. ][variable-2 foo]"); FT("formatting_link", "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string&url (][string&url http://example.com/][string&formatting&formatting-link-string&url )]"); FT("formatting_linkReference", "[link&formatting&formatting-link [][link foo][link&formatting&formatting-link ]]][string&formatting&formatting-link-string&url [][string&url bar][string&formatting&formatting-link-string&url ]]]", "[link&formatting&formatting-link [][link bar][link&formatting&formatting-link ]]:] [string&url http://example.com/]"); FT("formatting_linkWeb", "[link&formatting&formatting-link <][link http://example.com/][link&formatting&formatting-link >]"); FT("formatting_linkEmail", "[link&formatting&formatting-link <][link user@example.com][link&formatting&formatting-link >]"); FT("formatting_escape", "[formatting-escape \\*]"); FT("formatting_image", "[formatting&formatting-image&image&image-marker !][formatting&formatting-image&image&image-alt-text&link [[][image&image-alt-text&link alt text][formatting&formatting-image&image&image-alt-text&link ]]][formatting&formatting-link-string&string&url (][url&string http://link.to/image.jpg][formatting&formatting-link-string&string&url )]"); MT("plainText", "foo"); // Don't style single trailing space MT("trailingSpace1", "foo "); // Two or more trailing spaces should be styled with line break character MT("trailingSpace2", "foo[trailing-space-a ][trailing-space-new-line ]"); MT("trailingSpace3", "foo[trailing-space-a ][trailing-space-b ][trailing-space-new-line ]"); MT("trailingSpace4", "foo[trailing-space-a ][trailing-space-b ][trailing-space-a ][trailing-space-new-line ]"); // Code blocks using 4 spaces (regardless of CodeMirror.tabSize value) MT("codeBlocksUsing4Spaces", " [comment foo]"); // Code blocks using 4 spaces with internal indentation MT("codeBlocksUsing4SpacesIndentation", " [comment bar]", " [comment hello]", " [comment world]", " [comment foo]", "bar"); // Code blocks should end even after extra indented lines MT("codeBlocksWithTrailingIndentedLine", " [comment foo]", " [comment bar]", " [comment baz]", " ", "hello"); // Code blocks using 1 tab (regardless of CodeMirror.indentWithTabs value) MT("codeBlocksUsing1Tab", "\t[comment foo]"); // No code blocks directly after paragraph // http://spec.commonmark.org/0.19/#example-65 MT("noCodeBlocksAfterParagraph", "Foo", " Bar"); // Inline code using backticks MT("inlineCodeUsingBackticks", "foo [comment `bar`]"); // Block code using single backtick (shouldn't work) MT("blockCodeSingleBacktick", "[comment `]", "[comment foo]", "[comment `]"); // Unclosed backticks // Instead of simply marking as CODE, it would be nice to have an // incomplete flag for CODE, that is styled slightly different. MT("unclosedBackticks", "foo [comment `bar]"); // Per documentation: "To include a literal backtick character within a // code span, you can use multiple backticks as the opening and closing // delimiters" MT("doubleBackticks", "[comment ``foo ` bar``]"); // Tests based on Dingus // http://daringfireball.net/projects/markdown/dingus // // Multiple backticks within an inline code block MT("consecutiveBackticks", "[comment `foo```bar`]"); // Multiple backticks within an inline code block with a second code block MT("consecutiveBackticks", "[comment `foo```bar`] hello [comment `world`]"); // Unclosed with several different groups of backticks MT("unclosedBackticks", "[comment ``foo ``` bar` hello]"); // Closed with several different groups of backticks MT("closedBackticks", "[comment ``foo ``` bar` hello``] world"); // atx headers // http://daringfireball.net/projects/markdown/syntax#header MT("atxH1", "[header&header-1 # foo]"); MT("atxH2", "[header&header-2 ## foo]"); MT("atxH3", "[header&header-3 ### foo]"); MT("atxH4", "[header&header-4 #### foo]"); MT("atxH5", "[header&header-5 ##### foo]"); MT("atxH6", "[header&header-6 ###### foo]"); // http://spec.commonmark.org/0.19/#example-24 MT("noAtxH7", "####### foo"); // http://spec.commonmark.org/0.19/#example-25 MT("noAtxH1WithoutSpace", "#5 bolt"); // CommonMark requires a space after # but most parsers don't AtxNoSpaceTest("atxNoSpaceAllowed_H1NoSpace", "[header&header-1 #foo]"); AtxNoSpaceTest("atxNoSpaceAllowed_H4NoSpace", "[header&header-4 ####foo]"); AtxNoSpaceTest("atxNoSpaceAllowed_H1Space", "[header&header-1 # foo]"); // Inline styles should be parsed inside headers MT("atxH1inline", "[header&header-1 # foo ][header&header-1&em *bar*]"); // Setext headers - H1, H2 // Per documentation, "Any number of underlining =’s or -’s will work." // http://daringfireball.net/projects/markdown/syntax#header // Ideally, the text would be marked as `header` as well, but this is // not really feasible at the moment. So, instead, we're testing against // what works today, to avoid any regressions. // // Check if single underlining = works MT("setextH1", "foo", "[header&header-1 =]"); // Check if 3+ ='s work MT("setextH1", "foo", "[header&header-1 ===]"); // Check if single underlining - works MT("setextH2", "foo", "[header&header-2 -]"); // Check if 3+ -'s work MT("setextH2", "foo", "[header&header-2 ---]"); // http://spec.commonmark.org/0.19/#example-45 MT("setextH2AllowSpaces", "foo", " [header&header-2 ---- ]"); // http://spec.commonmark.org/0.19/#example-44 MT("noSetextAfterIndentedCodeBlock", " [comment foo]", "[hr ---]"); // http://spec.commonmark.org/0.19/#example-51 MT("noSetextAfterQuote", "[quote"e-1 > foo]", "[hr ---]"); MT("noSetextAfterList", "[variable-2 - foo]", "[hr ---]"); // Single-line blockquote with trailing space MT("blockquoteSpace", "[quote"e-1 > foo]"); // Single-line blockquote MT("blockquoteNoSpace", "[quote"e-1 >foo]"); // No blank line before blockquote MT("blockquoteNoBlankLine", "foo", "[quote"e-1 > bar]"); // Nested blockquote MT("blockquoteSpace", "[quote"e-1 > foo]", "[quote"e-1 >][quote"e-2 > foo]", "[quote"e-1 >][quote"e-2 >][quote"e-3 > foo]"); // Single-line blockquote followed by normal paragraph MT("blockquoteThenParagraph", "[quote"e-1 >foo]", "", "bar"); // Multi-line blockquote (lazy mode) MT("multiBlockquoteLazy", "[quote"e-1 >foo]", "[quote"e-1 bar]"); // Multi-line blockquote followed by normal paragraph (lazy mode) MT("multiBlockquoteLazyThenParagraph", "[quote"e-1 >foo]", "[quote"e-1 bar]", "", "hello"); // Multi-line blockquote (non-lazy mode) MT("multiBlockquote", "[quote"e-1 >foo]", "[quote"e-1 >bar]"); // Multi-line blockquote followed by normal paragraph (non-lazy mode) MT("multiBlockquoteThenParagraph", "[quote"e-1 >foo]", "[quote"e-1 >bar]", "", "hello"); // Header with leading space after continued blockquote (#3287, negative indentation) MT("headerAfterContinuedBlockquote", "[quote"e-1 > foo]", "[quote"e-1 bar]", "", " [header&header-1 # hello]"); // Check list types MT("listAsterisk", "foo", "bar", "", "[variable-2 * foo]", "[variable-2 * bar]"); MT("listPlus", "foo", "bar", "", "[variable-2 + foo]", "[variable-2 + bar]"); MT("listDash", "foo", "bar", "", "[variable-2 - foo]", "[variable-2 - bar]"); MT("listNumber", "foo", "bar", "", "[variable-2 1. foo]", "[variable-2 2. bar]"); // Lists require a preceding blank line (per Dingus) MT("listBogus", "foo", "1. bar", "2. hello"); // List after hr MT("listAfterHr", "[hr ---]", "[variable-2 - bar]"); // List after header MT("listAfterHeader", "[header&header-1 # foo]", "[variable-2 - bar]"); // hr after list MT("hrAfterList", "[variable-2 - foo]", "[hr -----]"); // Formatting in lists (*) MT("listAsteriskFormatting", "[variable-2 * ][variable-2&em *foo*][variable-2 bar]", "[variable-2 * ][variable-2&strong **foo**][variable-2 bar]", "[variable-2 * ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", "[variable-2 * ][variable-2&comment `foo`][variable-2 bar]"); // Formatting in lists (+) MT("listPlusFormatting", "[variable-2 + ][variable-2&em *foo*][variable-2 bar]", "[variable-2 + ][variable-2&strong **foo**][variable-2 bar]", "[variable-2 + ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", "[variable-2 + ][variable-2&comment `foo`][variable-2 bar]"); // Formatting in lists (-) MT("listDashFormatting", "[variable-2 - ][variable-2&em *foo*][variable-2 bar]", "[variable-2 - ][variable-2&strong **foo**][variable-2 bar]", "[variable-2 - ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", "[variable-2 - ][variable-2&comment `foo`][variable-2 bar]"); // Formatting in lists (1.) MT("listNumberFormatting", "[variable-2 1. ][variable-2&em *foo*][variable-2 bar]", "[variable-2 2. ][variable-2&strong **foo**][variable-2 bar]", "[variable-2 3. ][variable-2&strong **][variable-2&em&strong *foo**][variable-2&em *][variable-2 bar]", "[variable-2 4. ][variable-2&comment `foo`][variable-2 bar]"); // Paragraph lists MT("listParagraph", "[variable-2 * foo]", "", "[variable-2 * bar]"); // Multi-paragraph lists // // 4 spaces MT("listMultiParagraph", "[variable-2 * foo]", "", "[variable-2 * bar]", "", " [variable-2 hello]"); // 4 spaces, extra blank lines (should still be list, per Dingus) MT("listMultiParagraphExtra", "[variable-2 * foo]", "", "[variable-2 * bar]", "", "", " [variable-2 hello]"); // 4 spaces, plus 1 space (should still be list, per Dingus) MT("listMultiParagraphExtraSpace", "[variable-2 * foo]", "", "[variable-2 * bar]", "", " [variable-2 hello]", "", " [variable-2 world]"); // 1 tab MT("listTab", "[variable-2 * foo]", "", "[variable-2 * bar]", "", "\t[variable-2 hello]"); // No indent MT("listNoIndent", "[variable-2 * foo]", "", "[variable-2 * bar]", "", "hello"); MT("listCommonMarkIndentationCode", "[variable-2 * Code blocks also affect]", " [variable-3 * The next level starts where the contents start.]", " [variable-3 * Anything less than that will keep the item on the same level.]", " [variable-3 * Each list item can indent the first level further and further.]", " [variable-3 * For the most part, this makes sense while writing a list.]", " [keyword * This means two items with same indentation can be different levels.]", " [keyword * Each level has an indent requirement that can change between items.]", " [keyword * A list item that meets this will be part of the next level.]", " [variable-3 * Otherwise, it will be part of the level where it does meet this.]", " [variable-2 * World]"); // Blockquote MT("blockquote", "[variable-2 * foo]", "", "[variable-2 * bar]", "", " [variable-2"e"e-1 > hello]"); // Code block MT("blockquoteCode", "[variable-2 * foo]", "", "[variable-2 * bar]", "", " [comment > hello]", "", " [variable-2 world]"); // Code block followed by text MT("blockquoteCodeText", "[variable-2 * foo]", "", " [variable-2 bar]", "", " [comment hello]", "", " [variable-2 world]"); // Nested list MT("listAsteriskNested", "[variable-2 * foo]", "", " [variable-3 * bar]"); MT("listPlusNested", "[variable-2 + foo]", "", " [variable-3 + bar]"); MT("listDashNested", "[variable-2 - foo]", "", " [variable-3 - bar]"); MT("listNumberNested", "[variable-2 1. foo]", "", " [variable-3 2. bar]"); MT("listMixed", "[variable-2 * foo]", "", " [variable-3 + bar]", "", " [keyword - hello]", "", " [variable-2 1. world]"); MT("listBlockquote", "[variable-2 * foo]", "", " [variable-3 + bar]", "", " [quote"e-1&variable-3 > hello]"); MT("listCode", "[variable-2 * foo]", "", " [variable-3 + bar]", "", " [comment hello]"); // Code with internal indentation MT("listCodeIndentation", "[variable-2 * foo]", "", " [comment bar]", " [comment hello]", " [comment world]", " [comment foo]", " [variable-2 bar]"); // List nesting edge cases MT("listNested", "[variable-2 * foo]", "", " [variable-3 * bar]", "", " [variable-3 hello]" ); MT("listNested", "[variable-2 * foo]", "", " [variable-3 * bar]", "", " [keyword * foo]" ); // Code followed by text MT("listCodeText", "[variable-2 * foo]", "", " [comment bar]", "", "hello"); // Following tests directly from official Markdown documentation // http://daringfireball.net/projects/markdown/syntax#hr MT("hrSpace", "[hr * * *]"); MT("hr", "[hr ***]"); MT("hrLong", "[hr *****]"); MT("hrSpaceDash", "[hr - - -]"); MT("hrDashLong", "[hr ---------------------------------------]"); //Images MT("Images", "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://link.to/image.jpg)]") //Images with highlight alt text MT("imageEm", "[image&image-marker !][image&image-alt-text&link [[][image-alt-text&em&image&link *alt text*][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]"); MT("imageStrong", "[image&image-marker !][image&image-alt-text&link [[][image-alt-text&strong&image&link **alt text**][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]"); MT("imageEmStrong", "[image&image-marker !][image&image-alt-text&link [[][image-alt-text&image&strong&link **][image&image-alt-text&em&strong&link *alt text**][image&image-alt-text&em&link *][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)]"); // Inline link with title MT("linkTitle", "[link [[foo]]][string&url (http://example.com/ \"bar\")] hello"); // Inline link without title MT("linkNoTitle", "[link [[foo]]][string&url (http://example.com/)] bar"); // Inline link with image MT("linkImage", "[link [[][link&image&image-marker !][link&image&image-alt-text&link [[alt text]]][string&url (http://link.to/image.jpg)][link ]]][string&url (http://example.com/)] bar"); // Inline link with Em MT("linkEm", "[link [[][link&em *foo*][link ]]][string&url (http://example.com/)] bar"); // Inline link with Strong MT("linkStrong", "[link [[][link&strong **foo**][link ]]][string&url (http://example.com/)] bar"); // Inline link with EmStrong MT("linkEmStrong", "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string&url (http://example.com/)] bar"); // Image with title MT("imageTitle", "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://example.com/ \"bar\")] hello"); // Image without title MT("imageNoTitle", "[image&image-marker !][image&image-alt-text&link [[alt text]]][string&url (http://example.com/)] bar"); // Image with asterisks MT("imageAsterisks", "[image&image-marker !][image&image-alt-text&link [[ ][image&image-alt-text&em&link *alt text*][image&image-alt-text&link ]]][string&url (http://link.to/image.jpg)] bar"); // Not a link. Should be normal text due to square brackets being used // regularly in text, especially in quoted material, and no space is allowed // between square brackets and parentheses (per Dingus). MT("notALink", "[[foo]] (bar)"); // Reference-style links MT("linkReference", "[link [[foo]]][string&url [[bar]]] hello"); // Reference-style links with Em MT("linkReferenceEm", "[link [[][link&em *foo*][link ]]][string&url [[bar]]] hello"); // Reference-style links with Strong MT("linkReferenceStrong", "[link [[][link&strong **foo**][link ]]][string&url [[bar]]] hello"); // Reference-style links with EmStrong MT("linkReferenceEmStrong", "[link [[][link&strong **][link&em&strong *foo**][link&em *][link ]]][string&url [[bar]]] hello"); // Reference-style links with optional space separator (per documentation) // "You can optionally use a space to separate the sets of brackets" MT("linkReferenceSpace", "[link [[foo]]] [string&url [[bar]]] hello"); // Should only allow a single space ("...use *a* space...") MT("linkReferenceDoubleSpace", "[[foo]] [[bar]] hello"); // Reference-style links with implicit link name MT("linkImplicit", "[link [[foo]]][string&url [[]]] hello"); // @todo It would be nice if, at some point, the document was actually // checked to see if the referenced link exists // Link label, for reference-style links (taken from documentation) MT("labelNoTitle", "[link [[foo]]:] [string&url http://example.com/]"); MT("labelIndented", " [link [[foo]]:] [string&url http://example.com/]"); MT("labelSpaceTitle", "[link [[foo bar]]:] [string&url http://example.com/ \"hello\"]"); MT("labelDoubleTitle", "[link [[foo bar]]:] [string&url http://example.com/ \"hello\"] \"world\""); MT("labelTitleDoubleQuotes", "[link [[foo]]:] [string&url http://example.com/ \"bar\"]"); MT("labelTitleSingleQuotes", "[link [[foo]]:] [string&url http://example.com/ 'bar']"); MT("labelTitleParentheses", "[link [[foo]]:] [string&url http://example.com/ (bar)]"); MT("labelTitleInvalid", "[link [[foo]]:] [string&url http://example.com/] bar"); MT("labelLinkAngleBrackets", "[link [[foo]]:] [string&url \"bar\"]"); MT("labelTitleNextDoubleQuotes", "[link [[foo]]:] [string&url http://example.com/]", "[string \"bar\"] hello"); MT("labelTitleNextSingleQuotes", "[link [[foo]]:] [string&url http://example.com/]", "[string 'bar'] hello"); MT("labelTitleNextParentheses", "[link [[foo]]:] [string&url http://example.com/]", "[string (bar)] hello"); MT("labelTitleNextMixed", "[link [[foo]]:] [string&url http://example.com/]", "(bar\" hello"); MT("labelEscape", "[link [[foo \\]] ]]:] [string&url http://example.com/]"); MT("labelEscapeColon", "[link [[foo \\]]: bar]]:] [string&url http://example.com/]"); MT("labelEscapeEnd", "[[foo\\]]: http://example.com/"); MT("linkWeb", "[link ] foo"); MT("linkWebDouble", "[link ] foo [link ]"); MT("linkEmail", "[link ] foo"); MT("linkEmailDouble", "[link ] foo [link ]"); MT("emAsterisk", "[em *foo*] bar"); MT("emUnderscore", "[em _foo_] bar"); MT("emInWordAsterisk", "foo[em *bar*]hello"); MT("emInWordUnderscore", "foo[em _bar_]hello"); // Per documentation: "...surround an * or _ with spaces, it’ll be // treated as a literal asterisk or underscore." MT("emEscapedBySpaceIn", "foo [em _bar _ hello_] world"); MT("emEscapedBySpaceOut", "foo _ bar[em _hello_]world"); MT("emEscapedByNewline", "foo", "_ bar[em _hello_]world"); // Unclosed emphasis characters // Instead of simply marking as EM / STRONG, it would be nice to have an // incomplete flag for EM and STRONG, that is styled slightly different. MT("emIncompleteAsterisk", "foo [em *bar]"); MT("emIncompleteUnderscore", "foo [em _bar]"); MT("strongAsterisk", "[strong **foo**] bar"); MT("strongUnderscore", "[strong __foo__] bar"); MT("emStrongAsterisk", "[em *foo][em&strong **bar*][strong hello**] world"); MT("emStrongUnderscore", "[em _foo][em&strong __bar_][strong hello__] world"); // "...same character must be used to open and close an emphasis span."" MT("emStrongMixed", "[em _foo][em&strong **bar*hello__ world]"); MT("emStrongMixed", "[em *foo][em&strong __bar_hello** world]"); MT("linkWithNestedParens", "[link [[foo]]][string&url (bar(baz))]") // These characters should be escaped: // \ backslash // ` backtick // * asterisk // _ underscore // {} curly braces // [] square brackets // () parentheses // # hash mark // + plus sign // - minus sign (hyphen) // . dot // ! exclamation mark MT("escapeBacktick", "foo \\`bar\\`"); MT("doubleEscapeBacktick", "foo \\\\[comment `bar\\\\`]"); MT("escapeAsterisk", "foo \\*bar\\*"); MT("doubleEscapeAsterisk", "foo \\\\[em *bar\\\\*]"); MT("escapeUnderscore", "foo \\_bar\\_"); MT("doubleEscapeUnderscore", "foo \\\\[em _bar\\\\_]"); MT("escapeHash", "\\# foo"); MT("doubleEscapeHash", "\\\\# foo"); MT("escapeNewline", "\\", "[em *foo*]"); // Class override tests TokenTypeOverrideTest("overrideHeader1", "[override-header&override-header-1 # Foo]"); TokenTypeOverrideTest("overrideHeader2", "[override-header&override-header-2 ## Foo]"); TokenTypeOverrideTest("overrideHeader3", "[override-header&override-header-3 ### Foo]"); TokenTypeOverrideTest("overrideHeader4", "[override-header&override-header-4 #### Foo]"); TokenTypeOverrideTest("overrideHeader5", "[override-header&override-header-5 ##### Foo]"); TokenTypeOverrideTest("overrideHeader6", "[override-header&override-header-6 ###### Foo]"); TokenTypeOverrideTest("overrideCode", "[override-code `foo`]"); TokenTypeOverrideTest("overrideCodeBlock", "[override-code ```]", "[override-code foo]", "[override-code ```]"); TokenTypeOverrideTest("overrideQuote", "[override-quote&override-quote-1 > foo]", "[override-quote&override-quote-1 > bar]"); TokenTypeOverrideTest("overrideQuoteNested", "[override-quote&override-quote-1 > foo]", "[override-quote&override-quote-1 >][override-quote&override-quote-2 > bar]", "[override-quote&override-quote-1 >][override-quote&override-quote-2 >][override-quote&override-quote-3 > baz]"); TokenTypeOverrideTest("overrideLists", "[override-list1 - foo]", "", " [override-list2 + bar]", "", " [override-list3 * baz]", "", " [override-list1 1. qux]", "", " [override-list2 - quux]"); TokenTypeOverrideTest("overrideHr", "[override-hr * * *]"); TokenTypeOverrideTest("overrideImage", "[override-image&override-image-marker !][override-image&override-image-alt-text&link [[alt text]]][override-link-href&url (http://link.to/image.jpg)]"); TokenTypeOverrideTest("overrideLinkText", "[override-link-text [[foo]]][override-link-href&url (http://example.com)]"); TokenTypeOverrideTest("overrideLinkEmailAndInline", "[override-link-email <][override-link-inline foo@example.com>]"); TokenTypeOverrideTest("overrideEm", "[override-em *foo*]"); TokenTypeOverrideTest("overrideStrong", "[override-strong **foo**]"); TokenTypeOverrideTest("overrideStrikethrough", "[override-strikethrough ~~foo~~]"); FormatTokenTypeOverrideTest("overrideFormatting", "[override-formatting-escape \\*]"); // Tests to make sure GFM-specific things aren't getting through MT("taskList", "[variable-2 * [ ]] bar]"); MT("noFencedCodeBlocks", "~~~", "foo", "~~~"); FencedTest("fencedCodeBlocks", "[comment ```]", "[comment foo]", "[comment ```]", "bar"); FencedTest("fencedCodeBlocksMultipleChars", "[comment `````]", "[comment foo]", "[comment ```]", "[comment foo]", "[comment `````]", "bar"); FencedTest("fencedCodeBlocksTildes", "[comment ~~~]", "[comment foo]", "[comment ~~~]", "bar"); FencedTest("fencedCodeBlocksTildesMultipleChars", "[comment ~~~~~]", "[comment ~~~]", "[comment foo]", "[comment ~~~~~]", "bar"); FencedTest("fencedCodeBlocksMultipleChars", "[comment `````]", "[comment foo]", "[comment ```]", "[comment foo]", "[comment `````]", "bar"); FencedTest("fencedCodeBlocksMixed", "[comment ~~~]", "[comment ```]", "[comment foo]", "[comment ~~~]", "bar"); // Tests that require XML mode MT("xmlMode", "[tag&bracket <][tag div][tag&bracket >]", "*foo*", "[tag&bracket <][tag http://github.com][tag&bracket />]", "[tag&bracket ]", "[link ]"); MT("xmlModeWithMarkdownInside", "[tag&bracket <][tag div] [attribute markdown]=[string 1][tag&bracket >]", "[em *foo*]", "[link ]", "[tag ]", "[link ]", "[tag&bracket <][tag div][tag&bracket >]", "[tag&bracket ]"); })(); application/library/codemirror/mode/markdown/markdown.js000064400000062252147577724760017647 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../xml/xml"), require("../meta")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../xml/xml", "../meta"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("markdown", function(cmCfg, modeCfg) { var htmlMode = CodeMirror.getMode(cmCfg, "text/html"); var htmlModeMissing = htmlMode.name == "null" function getMode(name) { if (CodeMirror.findModeByName) { var found = CodeMirror.findModeByName(name); if (found) name = found.mime || found.mimes[0]; } var mode = CodeMirror.getMode(cmCfg, name); return mode.name == "null" ? null : mode; } // Should characters that affect highlighting be highlighted separate? // Does not include characters that will be output (such as `1.` and `-` for lists) if (modeCfg.highlightFormatting === undefined) modeCfg.highlightFormatting = false; // Maximum number of nested blockquotes. Set to 0 for infinite nesting. // Excess `>` will emit `error` token. if (modeCfg.maxBlockquoteDepth === undefined) modeCfg.maxBlockquoteDepth = 0; // Should underscores in words open/close em/strong? if (modeCfg.underscoresBreakWords === undefined) modeCfg.underscoresBreakWords = true; // Use `fencedCodeBlocks` to configure fenced code blocks. false to // disable, string to specify a precise regexp that the fence should // match, and true to allow three or more backticks or tildes (as // per CommonMark). // Turn on task lists? ("- [ ] " and "- [x] ") if (modeCfg.taskLists === undefined) modeCfg.taskLists = false; // Turn on strikethrough syntax if (modeCfg.strikethrough === undefined) modeCfg.strikethrough = false; // Allow token types to be overridden by user-provided token types. if (modeCfg.tokenTypeOverrides === undefined) modeCfg.tokenTypeOverrides = {}; var tokenTypes = { header: "header", code: "comment", quote: "quote", list1: "variable-2", list2: "variable-3", list3: "keyword", hr: "hr", image: "image", imageAltText: "image-alt-text", imageMarker: "image-marker", formatting: "formatting", linkInline: "link", linkEmail: "link", linkText: "link", linkHref: "string", em: "em", strong: "strong", strikethrough: "strikethrough" }; for (var tokenType in tokenTypes) { if (tokenTypes.hasOwnProperty(tokenType) && modeCfg.tokenTypeOverrides[tokenType]) { tokenTypes[tokenType] = modeCfg.tokenTypeOverrides[tokenType]; } } var hrRE = /^([*\-_])(?:\s*\1){2,}\s*$/ , ulRE = /^[*\-+]\s+/ , olRE = /^[0-9]+([.)])\s+/ , taskListRE = /^\[(x| )\](?=\s)/ // Must follow ulRE or olRE , atxHeaderRE = modeCfg.allowAtxHeaderWithoutSpace ? /^(#+)/ : /^(#+)(?: |$)/ , setextHeaderRE = /^ *(?:\={1,}|-{1,})\s*$/ , textRE = /^[^#!\[\]*_\\<>` "'(~]+/ , fencedCodeRE = new RegExp("^(" + (modeCfg.fencedCodeBlocks === true ? "~~~+|```+" : modeCfg.fencedCodeBlocks) + ")[ \\t]*([\\w+#\-]*)"); function switchInline(stream, state, f) { state.f = state.inline = f; return f(stream, state); } function switchBlock(stream, state, f) { state.f = state.block = f; return f(stream, state); } function lineIsEmpty(line) { return !line || !/\S/.test(line.string) } // Blocks function blankLine(state) { // Reset linkTitle state state.linkTitle = false; // Reset EM state state.em = false; // Reset STRONG state state.strong = false; // Reset strikethrough state state.strikethrough = false; // Reset state.quote state.quote = 0; // Reset state.indentedCode state.indentedCode = false; if (htmlModeMissing && state.f == htmlBlock) { state.f = inlineNormal; state.block = blockNormal; } // Reset state.trailingSpace state.trailingSpace = 0; state.trailingSpaceNewLine = false; // Mark this line as blank state.prevLine = state.thisLine state.thisLine = null return null; } function blockNormal(stream, state) { var sol = stream.sol(); var prevLineIsList = state.list !== false, prevLineIsIndentedCode = state.indentedCode; state.indentedCode = false; if (prevLineIsList) { if (state.indentationDiff >= 0) { // Continued list if (state.indentationDiff < 4) { // Only adjust indentation if *not* a code block state.indentation -= state.indentationDiff; } state.list = null; } else if (state.indentation > 0) { state.list = null; } else { // No longer a list state.list = false; } } var match = null; if (state.indentationDiff >= 4) { stream.skipToEnd(); if (prevLineIsIndentedCode || lineIsEmpty(state.prevLine)) { state.indentation -= 4; state.indentedCode = true; return tokenTypes.code; } else { return null; } } else if (stream.eatSpace()) { return null; } else if ((match = stream.match(atxHeaderRE)) && match[1].length <= 6) { state.header = match[1].length; if (modeCfg.highlightFormatting) state.formatting = "header"; state.f = state.inline; return getType(state); } else if (!lineIsEmpty(state.prevLine) && !state.quote && !prevLineIsList && !prevLineIsIndentedCode && (match = stream.match(setextHeaderRE))) { state.header = match[0].charAt(0) == '=' ? 1 : 2; if (modeCfg.highlightFormatting) state.formatting = "header"; state.f = state.inline; return getType(state); } else if (stream.eat('>')) { state.quote = sol ? 1 : state.quote + 1; if (modeCfg.highlightFormatting) state.formatting = "quote"; stream.eatSpace(); return getType(state); } else if (stream.peek() === '[') { return switchInline(stream, state, footnoteLink); } else if (stream.match(hrRE, true)) { state.hr = true; return tokenTypes.hr; } else if ((lineIsEmpty(state.prevLine) || prevLineIsList) && (stream.match(ulRE, false) || stream.match(olRE, false))) { var listType = null; if (stream.match(ulRE, true)) { listType = 'ul'; } else { stream.match(olRE, true); listType = 'ol'; } state.indentation = stream.column() + stream.current().length; state.list = true; // While this list item's marker's indentation // is less than the deepest list item's content's indentation, // pop the deepest list item indentation off the stack. while (state.listStack && stream.column() < state.listStack[state.listStack.length - 1]) { state.listStack.pop(); } // Add this list item's content's indentation to the stack state.listStack.push(state.indentation); if (modeCfg.taskLists && stream.match(taskListRE, false)) { state.taskList = true; } state.f = state.inline; if (modeCfg.highlightFormatting) state.formatting = ["list", "list-" + listType]; return getType(state); } else if (modeCfg.fencedCodeBlocks && (match = stream.match(fencedCodeRE, true))) { state.fencedChars = match[1] // try switching mode state.localMode = getMode(match[2]); if (state.localMode) state.localState = CodeMirror.startState(state.localMode); state.f = state.block = local; if (modeCfg.highlightFormatting) state.formatting = "code-block"; state.code = -1 return getType(state); } return switchInline(stream, state, state.inline); } function htmlBlock(stream, state) { var style = htmlMode.token(stream, state.htmlState); if (!htmlModeMissing) { var inner = CodeMirror.innerMode(htmlMode, state.htmlState) if ((inner.mode.name == "xml" && inner.state.tagStart === null && (!inner.state.context && inner.state.tokenize.isInText)) || (state.md_inside && stream.current().indexOf(">") > -1)) { state.f = inlineNormal; state.block = blockNormal; state.htmlState = null; } } return style; } function local(stream, state) { if (state.fencedChars && stream.match(state.fencedChars, false)) { state.localMode = state.localState = null; state.f = state.block = leavingLocal; return null; } else if (state.localMode) { return state.localMode.token(stream, state.localState); } else { stream.skipToEnd(); return tokenTypes.code; } } function leavingLocal(stream, state) { stream.match(state.fencedChars); state.block = blockNormal; state.f = inlineNormal; state.fencedChars = null; if (modeCfg.highlightFormatting) state.formatting = "code-block"; state.code = 1 var returnType = getType(state); state.code = 0 return returnType; } // Inline function getType(state) { var styles = []; if (state.formatting) { styles.push(tokenTypes.formatting); if (typeof state.formatting === "string") state.formatting = [state.formatting]; for (var i = 0; i < state.formatting.length; i++) { styles.push(tokenTypes.formatting + "-" + state.formatting[i]); if (state.formatting[i] === "header") { styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.header); } // Add `formatting-quote` and `formatting-quote-#` for blockquotes // Add `error` instead if the maximum blockquote nesting depth is passed if (state.formatting[i] === "quote") { if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { styles.push(tokenTypes.formatting + "-" + state.formatting[i] + "-" + state.quote); } else { styles.push("error"); } } } } if (state.taskOpen) { styles.push("meta"); return styles.length ? styles.join(' ') : null; } if (state.taskClosed) { styles.push("property"); return styles.length ? styles.join(' ') : null; } if (state.linkHref) { styles.push(tokenTypes.linkHref, "url"); } else { // Only apply inline styles to non-url text if (state.strong) { styles.push(tokenTypes.strong); } if (state.em) { styles.push(tokenTypes.em); } if (state.strikethrough) { styles.push(tokenTypes.strikethrough); } if (state.linkText) { styles.push(tokenTypes.linkText); } if (state.code) { styles.push(tokenTypes.code); } if (state.image) { styles.push(tokenTypes.image); } if (state.imageAltText) { styles.push(tokenTypes.imageAltText, "link"); } if (state.imageMarker) { styles.push(tokenTypes.imageMarker); } } if (state.header) { styles.push(tokenTypes.header, tokenTypes.header + "-" + state.header); } if (state.quote) { styles.push(tokenTypes.quote); // Add `quote-#` where the maximum for `#` is modeCfg.maxBlockquoteDepth if (!modeCfg.maxBlockquoteDepth || modeCfg.maxBlockquoteDepth >= state.quote) { styles.push(tokenTypes.quote + "-" + state.quote); } else { styles.push(tokenTypes.quote + "-" + modeCfg.maxBlockquoteDepth); } } if (state.list !== false) { var listMod = (state.listStack.length - 1) % 3; if (!listMod) { styles.push(tokenTypes.list1); } else if (listMod === 1) { styles.push(tokenTypes.list2); } else { styles.push(tokenTypes.list3); } } if (state.trailingSpaceNewLine) { styles.push("trailing-space-new-line"); } else if (state.trailingSpace) { styles.push("trailing-space-" + (state.trailingSpace % 2 ? "a" : "b")); } return styles.length ? styles.join(' ') : null; } function handleText(stream, state) { if (stream.match(textRE, true)) { return getType(state); } return undefined; } function inlineNormal(stream, state) { var style = state.text(stream, state); if (typeof style !== 'undefined') return style; if (state.list) { // List marker (*, +, -, 1., etc) state.list = null; return getType(state); } if (state.taskList) { var taskOpen = stream.match(taskListRE, true)[1] !== "x"; if (taskOpen) state.taskOpen = true; else state.taskClosed = true; if (modeCfg.highlightFormatting) state.formatting = "task"; state.taskList = false; return getType(state); } state.taskOpen = false; state.taskClosed = false; if (state.header && stream.match(/^#+$/, true)) { if (modeCfg.highlightFormatting) state.formatting = "header"; return getType(state); } // Get sol() value now, before character is consumed var sol = stream.sol(); var ch = stream.next(); // Matches link titles present on next line if (state.linkTitle) { state.linkTitle = false; var matchCh = ch; if (ch === '(') { matchCh = ')'; } matchCh = (matchCh+'').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); var regex = '^\\s*(?:[^' + matchCh + '\\\\]+|\\\\\\\\|\\\\.)' + matchCh; if (stream.match(new RegExp(regex), true)) { return tokenTypes.linkHref; } } // If this block is changed, it may need to be updated in GFM mode if (ch === '`') { var previousFormatting = state.formatting; if (modeCfg.highlightFormatting) state.formatting = "code"; stream.eatWhile('`'); var count = stream.current().length if (state.code == 0) { state.code = count return getType(state) } else if (count == state.code) { // Must be exact var t = getType(state) state.code = 0 return t } else { state.formatting = previousFormatting return getType(state) } } else if (state.code) { return getType(state); } if (ch === '\\') { stream.next(); if (modeCfg.highlightFormatting) { var type = getType(state); var formattingEscape = tokenTypes.formatting + "-escape"; return type ? type + " " + formattingEscape : formattingEscape; } } if (ch === '!' && stream.match(/\[[^\]]*\] ?(?:\(|\[)/, false)) { state.imageMarker = true; state.image = true; if (modeCfg.highlightFormatting) state.formatting = "image"; return getType(state); } if (ch === '[' && state.imageMarker) { state.imageMarker = false; state.imageAltText = true if (modeCfg.highlightFormatting) state.formatting = "image"; return getType(state); } if (ch === ']' && state.imageAltText) { if (modeCfg.highlightFormatting) state.formatting = "image"; var type = getType(state); state.imageAltText = false; state.image = false; state.inline = state.f = linkHref; return type; } if (ch === '[' && stream.match(/[^\]]*\](\(.*\)| ?\[.*?\])/, false) && !state.image) { state.linkText = true; if (modeCfg.highlightFormatting) state.formatting = "link"; return getType(state); } if (ch === ']' && state.linkText && stream.match(/\(.*?\)| ?\[.*?\]/, false)) { if (modeCfg.highlightFormatting) state.formatting = "link"; var type = getType(state); state.linkText = false; state.inline = state.f = linkHref; return type; } if (ch === '<' && stream.match(/^(https?|ftps?):\/\/(?:[^\\>]|\\.)+>/, false)) { state.f = state.inline = linkInline; if (modeCfg.highlightFormatting) state.formatting = "link"; var type = getType(state); if (type){ type += " "; } else { type = ""; } return type + tokenTypes.linkInline; } if (ch === '<' && stream.match(/^[^> \\]+@(?:[^\\>]|\\.)+>/, false)) { state.f = state.inline = linkInline; if (modeCfg.highlightFormatting) state.formatting = "link"; var type = getType(state); if (type){ type += " "; } else { type = ""; } return type + tokenTypes.linkEmail; } if (ch === '<' && stream.match(/^(!--|\w)/, false)) { var end = stream.string.indexOf(">", stream.pos); if (end != -1) { var atts = stream.string.substring(stream.start, end); if (/markdown\s*=\s*('|"){0,1}1('|"){0,1}/.test(atts)) state.md_inside = true; } stream.backUp(1); state.htmlState = CodeMirror.startState(htmlMode); return switchBlock(stream, state, htmlBlock); } if (ch === '<' && stream.match(/^\/\w*?>/)) { state.md_inside = false; return "tag"; } var ignoreUnderscore = false; if (!modeCfg.underscoresBreakWords) { if (ch === '_' && stream.peek() !== '_' && stream.match(/(\w)/, false)) { var prevPos = stream.pos - 2; if (prevPos >= 0) { var prevCh = stream.string.charAt(prevPos); if (prevCh !== '_' && prevCh.match(/(\w)/, false)) { ignoreUnderscore = true; } } } } if (ch === '*' || (ch === '_' && !ignoreUnderscore)) { if (sol && stream.peek() === ' ') { // Do nothing, surrounded by newline and space } else if (state.strong === ch && stream.eat(ch)) { // Remove STRONG if (modeCfg.highlightFormatting) state.formatting = "strong"; var t = getType(state); state.strong = false; return t; } else if (!state.strong && stream.eat(ch)) { // Add STRONG state.strong = ch; if (modeCfg.highlightFormatting) state.formatting = "strong"; return getType(state); } else if (state.em === ch) { // Remove EM if (modeCfg.highlightFormatting) state.formatting = "em"; var t = getType(state); state.em = false; return t; } else if (!state.em) { // Add EM state.em = ch; if (modeCfg.highlightFormatting) state.formatting = "em"; return getType(state); } } else if (ch === ' ') { if (stream.eat('*') || stream.eat('_')) { // Probably surrounded by spaces if (stream.peek() === ' ') { // Surrounded by spaces, ignore return getType(state); } else { // Not surrounded by spaces, back up pointer stream.backUp(1); } } } if (modeCfg.strikethrough) { if (ch === '~' && stream.eatWhile(ch)) { if (state.strikethrough) {// Remove strikethrough if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; var t = getType(state); state.strikethrough = false; return t; } else if (stream.match(/^[^\s]/, false)) {// Add strikethrough state.strikethrough = true; if (modeCfg.highlightFormatting) state.formatting = "strikethrough"; return getType(state); } } else if (ch === ' ') { if (stream.match(/^~~/, true)) { // Probably surrounded by space if (stream.peek() === ' ') { // Surrounded by spaces, ignore return getType(state); } else { // Not surrounded by spaces, back up pointer stream.backUp(2); } } } } if (ch === ' ') { if (stream.match(/ +$/, false)) { state.trailingSpace++; } else if (state.trailingSpace) { state.trailingSpaceNewLine = true; } } return getType(state); } function linkInline(stream, state) { var ch = stream.next(); if (ch === ">") { state.f = state.inline = inlineNormal; if (modeCfg.highlightFormatting) state.formatting = "link"; var type = getType(state); if (type){ type += " "; } else { type = ""; } return type + tokenTypes.linkInline; } stream.match(/^[^>]+/, true); return tokenTypes.linkInline; } function linkHref(stream, state) { // Check if space, and return NULL if so (to avoid marking the space) if(stream.eatSpace()){ return null; } var ch = stream.next(); if (ch === '(' || ch === '[') { state.f = state.inline = getLinkHrefInside(ch === "(" ? ")" : "]", 0); if (modeCfg.highlightFormatting) state.formatting = "link-string"; state.linkHref = true; return getType(state); } return 'error'; } var linkRE = { ")": /^(?:[^\\\(\)]|\\.|\((?:[^\\\(\)]|\\.)*\))*?(?=\))/, "]": /^(?:[^\\\[\]]|\\.|\[(?:[^\\\[\\]]|\\.)*\])*?(?=\])/ } function getLinkHrefInside(endChar) { return function(stream, state) { var ch = stream.next(); if (ch === endChar) { state.f = state.inline = inlineNormal; if (modeCfg.highlightFormatting) state.formatting = "link-string"; var returnState = getType(state); state.linkHref = false; return returnState; } stream.match(linkRE[endChar]) state.linkHref = true; return getType(state); }; } function footnoteLink(stream, state) { if (stream.match(/^([^\]\\]|\\.)*\]:/, false)) { state.f = footnoteLinkInside; stream.next(); // Consume [ if (modeCfg.highlightFormatting) state.formatting = "link"; state.linkText = true; return getType(state); } return switchInline(stream, state, inlineNormal); } function footnoteLinkInside(stream, state) { if (stream.match(/^\]:/, true)) { state.f = state.inline = footnoteUrl; if (modeCfg.highlightFormatting) state.formatting = "link"; var returnType = getType(state); state.linkText = false; return returnType; } stream.match(/^([^\]\\]|\\.)+/, true); return tokenTypes.linkText; } function footnoteUrl(stream, state) { // Check if space, and return NULL if so (to avoid marking the space) if(stream.eatSpace()){ return null; } // Match URL stream.match(/^[^\s]+/, true); // Check for link title if (stream.peek() === undefined) { // End of line, set flag to check next line state.linkTitle = true; } else { // More content on line, check if link title stream.match(/^(?:\s+(?:"(?:[^"\\]|\\\\|\\.)+"|'(?:[^'\\]|\\\\|\\.)+'|\((?:[^)\\]|\\\\|\\.)+\)))?/, true); } state.f = state.inline = inlineNormal; return tokenTypes.linkHref + " url"; } var mode = { startState: function() { return { f: blockNormal, prevLine: null, thisLine: null, block: blockNormal, htmlState: null, indentation: 0, inline: inlineNormal, text: handleText, formatting: false, linkText: false, linkHref: false, linkTitle: false, code: 0, em: false, strong: false, header: 0, hr: false, taskList: false, list: false, listStack: [], quote: 0, trailingSpace: 0, trailingSpaceNewLine: false, strikethrough: false, fencedChars: null }; }, copyState: function(s) { return { f: s.f, prevLine: s.prevLine, thisLine: s.thisLine, block: s.block, htmlState: s.htmlState && CodeMirror.copyState(htmlMode, s.htmlState), indentation: s.indentation, localMode: s.localMode, localState: s.localMode ? CodeMirror.copyState(s.localMode, s.localState) : null, inline: s.inline, text: s.text, formatting: false, linkTitle: s.linkTitle, code: s.code, em: s.em, strong: s.strong, strikethrough: s.strikethrough, header: s.header, hr: s.hr, taskList: s.taskList, list: s.list, listStack: s.listStack.slice(0), quote: s.quote, indentedCode: s.indentedCode, trailingSpace: s.trailingSpace, trailingSpaceNewLine: s.trailingSpaceNewLine, md_inside: s.md_inside, fencedChars: s.fencedChars }; }, token: function(stream, state) { // Reset state.formatting state.formatting = false; if (stream != state.thisLine) { var forceBlankLine = state.header || state.hr; // Reset state.header and state.hr state.header = 0; state.hr = false; if (stream.match(/^\s*$/, true) || forceBlankLine) { blankLine(state); if (!forceBlankLine) return null state.prevLine = null } state.prevLine = state.thisLine state.thisLine = stream // Reset state.taskList state.taskList = false; // Reset state.trailingSpace state.trailingSpace = 0; state.trailingSpaceNewLine = false; state.f = state.block; var indentation = stream.match(/^\s*/, true)[0].replace(/\t/g, ' ').length; state.indentationDiff = Math.min(indentation - state.indentation, 4); state.indentation = state.indentation + state.indentationDiff; if (indentation > 0) return null; } return state.f(stream, state); }, innerMode: function(state) { if (state.block == htmlBlock) return {state: state.htmlState, mode: htmlMode}; if (state.localState) return {state: state.localState, mode: state.localMode}; return {state: state, mode: mode}; }, blankLine: blankLine, getType: getType, fold: "markdown" }; return mode; }, "xml"); CodeMirror.defineMIME("text/x-markdown", "markdown"); }); application/library/codemirror/mode/mathematica/index.html000064400000004316147577724760020114 0ustar00 CodeMirror: Mathematica mode

Mathematica mode

MIME types defined: text/x-mathematica (Mathematica).

application/library/codemirror/mode/mathematica/mathematica.js000064400000012754147577724760020737 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Mathematica mode copyright (c) 2015 by Calin Barbat // Based on code by Patrick Scheibe (halirutan) // See: https://github.com/halirutan/Mathematica-Source-Highlighting/tree/master/src/lang-mma.js (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('mathematica', function(_config, _parserConfig) { // used pattern building blocks var Identifier = '[a-zA-Z\\$][a-zA-Z0-9\\$]*'; var pBase = "(?:\\d+)"; var pFloat = "(?:\\.\\d+|\\d+\\.\\d*|\\d+)"; var pFloatBase = "(?:\\.\\w+|\\w+\\.\\w*|\\w+)"; var pPrecision = "(?:`(?:`?"+pFloat+")?)"; // regular expressions var reBaseForm = new RegExp('(?:'+pBase+'(?:\\^\\^'+pFloatBase+pPrecision+'?(?:\\*\\^[+-]?\\d+)?))'); var reFloatForm = new RegExp('(?:' + pFloat + pPrecision + '?(?:\\*\\^[+-]?\\d+)?)'); var reIdInContext = new RegExp('(?:`?)(?:' + Identifier + ')(?:`(?:' + Identifier + '))*(?:`?)'); function tokenBase(stream, state) { var ch; // get next character ch = stream.next(); // string if (ch === '"') { state.tokenize = tokenString; return state.tokenize(stream, state); } // comment if (ch === '(') { if (stream.eat('*')) { state.commentLevel++; state.tokenize = tokenComment; return state.tokenize(stream, state); } } // go back one character stream.backUp(1); // look for numbers // Numbers in a baseform if (stream.match(reBaseForm, true, false)) { return 'number'; } // Mathematica numbers. Floats (1.2, .2, 1.) can have optionally a precision (`float) or an accuracy definition // (``float). Note: while 1.2` is possible 1.2`` is not. At the end an exponent (float*^+12) can follow. if (stream.match(reFloatForm, true, false)) { return 'number'; } /* In[23] and Out[34] */ if (stream.match(/(?:In|Out)\[[0-9]*\]/, true, false)) { return 'atom'; } // usage if (stream.match(/([a-zA-Z\$]+(?:`?[a-zA-Z0-9\$])*::usage)/, true, false)) { return 'meta'; } // message if (stream.match(/([a-zA-Z\$]+(?:`?[a-zA-Z0-9\$])*::[a-zA-Z\$][a-zA-Z0-9\$]*):?/, true, false)) { return 'string-2'; } // this makes a look-ahead match for something like variable:{_Integer} // the match is then forwarded to the mma-patterns tokenizer. if (stream.match(/([a-zA-Z\$][a-zA-Z0-9\$]*\s*:)(?:(?:[a-zA-Z\$][a-zA-Z0-9\$]*)|(?:[^:=>~@\^\&\*\)\[\]'\?,\|])).*/, true, false)) { return 'variable-2'; } // catch variables which are used together with Blank (_), BlankSequence (__) or BlankNullSequence (___) // Cannot start with a number, but can have numbers at any other position. Examples // blub__Integer, a1_, b34_Integer32 if (stream.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+[a-zA-Z\$][a-zA-Z0-9\$]*/, true, false)) { return 'variable-2'; } if (stream.match(/[a-zA-Z\$][a-zA-Z0-9\$]*_+/, true, false)) { return 'variable-2'; } if (stream.match(/_+[a-zA-Z\$][a-zA-Z0-9\$]*/, true, false)) { return 'variable-2'; } // Named characters in Mathematica, like \[Gamma]. if (stream.match(/\\\[[a-zA-Z\$][a-zA-Z0-9\$]*\]/, true, false)) { return 'variable-3'; } // Match all braces separately if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) { return 'bracket'; } // Catch Slots (#, ##, #3, ##9 and the V10 named slots #name). I have never seen someone using more than one digit after #, so we match // only one. if (stream.match(/(?:#[a-zA-Z\$][a-zA-Z0-9\$]*|#+[0-9]?)/, true, false)) { return 'variable-2'; } // Literals like variables, keywords, functions if (stream.match(reIdInContext, true, false)) { return 'keyword'; } // operators. Note that operators like @@ or /; are matched separately for each symbol. if (stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/, true, false)) { return 'operator'; } // everything else is an error stream.next(); // advance the stream. return 'error'; } function tokenString(stream, state) { var next, end = false, escaped = false; while ((next = stream.next()) != null) { if (next === '"' && !escaped) { end = true; break; } escaped = !escaped && next === '\\'; } if (end && !escaped) { state.tokenize = tokenBase; } return 'string'; }; function tokenComment(stream, state) { var prev, next; while(state.commentLevel > 0 && (next = stream.next()) != null) { if (prev === '(' && next === '*') state.commentLevel++; if (prev === '*' && next === ')') state.commentLevel--; prev = next; } if (state.commentLevel <= 0) { state.tokenize = tokenBase; } return 'comment'; } return { startState: function() {return {tokenize: tokenBase, commentLevel: 0};}, token: function(stream, state) { if (stream.eatSpace()) return null; return state.tokenize(stream, state); }, blockCommentStart: "(*", blockCommentEnd: "*)" }; }); CodeMirror.defineMIME('text/x-mathematica', { name: 'mathematica' }); }); application/library/codemirror/mode/mbox/index.html000064400000002415147577724760016602 0ustar00 CodeMirror: mbox mode

mbox mode

MIME types defined: application/mbox.

application/library/codemirror/mode/mbox/mbox.js000064400000007101147577724760016105 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var rfc2822 = [ "From", "Sender", "Reply-To", "To", "Cc", "Bcc", "Message-ID", "In-Reply-To", "References", "Resent-From", "Resent-Sender", "Resent-To", "Resent-Cc", "Resent-Bcc", "Resent-Message-ID", "Return-Path", "Received" ]; var rfc2822NoEmail = [ "Date", "Subject", "Comments", "Keywords", "Resent-Date" ]; CodeMirror.registerHelper("hintWords", "mbox", rfc2822.concat(rfc2822NoEmail)); var whitespace = /^[ \t]/; var separator = /^From /; // See RFC 4155 var rfc2822Header = new RegExp("^(" + rfc2822.join("|") + "): "); var rfc2822HeaderNoEmail = new RegExp("^(" + rfc2822NoEmail.join("|") + "): "); var header = /^[^:]+:/; // Optional fields defined in RFC 2822 var email = /^[^ ]+@[^ ]+/; var untilEmail = /^.*?(?=[^ ]+?@[^ ]+)/; var bracketedEmail = /^<.*?>/; var untilBracketedEmail = /^.*?(?=<.*>)/; function styleForHeader(header) { if (header === "Subject") return "header"; return "string"; } function readToken(stream, state) { if (stream.sol()) { // From last line state.inSeparator = false; if (state.inHeader && stream.match(whitespace)) { // Header folding return null; } else { state.inHeader = false; state.header = null; } if (stream.match(separator)) { state.inHeaders = true; state.inSeparator = true; return "atom"; } var match; var emailPermitted = false; if ((match = stream.match(rfc2822HeaderNoEmail)) || (emailPermitted = true) && (match = stream.match(rfc2822Header))) { state.inHeaders = true; state.inHeader = true; state.emailPermitted = emailPermitted; state.header = match[1]; return "atom"; } // Use vim's heuristics: recognize custom headers only if the line is in a // block of legitimate headers. if (state.inHeaders && (match = stream.match(header))) { state.inHeader = true; state.emailPermitted = true; state.header = match[1]; return "atom"; } state.inHeaders = false; stream.skipToEnd(); return null; } if (state.inSeparator) { if (stream.match(email)) return "link"; if (stream.match(untilEmail)) return "atom"; stream.skipToEnd(); return "atom"; } if (state.inHeader) { var style = styleForHeader(state.header); if (state.emailPermitted) { if (stream.match(bracketedEmail)) return style + " link"; if (stream.match(untilBracketedEmail)) return style; } stream.skipToEnd(); return style; } stream.skipToEnd(); return null; }; CodeMirror.defineMode("mbox", function() { return { startState: function() { return { // Is in a mbox separator inSeparator: false, // Is in a mail header inHeader: false, // If bracketed email is permitted. Only applicable when inHeader emailPermitted: false, // Name of current header header: null, // Is in a region of mail headers inHeaders: false }; }, token: readToken, blankLine: function(state) { state.inHeaders = state.inSeparator = state.inHeader = false; } }; }); CodeMirror.defineMIME("application/mbox", "mbox"); }); application/library/codemirror/mode/mirc/index.html000064400000013246147577724760016573 0ustar00 CodeMirror: mIRC mode

mIRC mode

MIME types defined: text/mirc.

application/library/codemirror/mode/mirc/mirc.js000064400000023542147577724760016066 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE //mIRC mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMIME("text/mirc", "mirc"); CodeMirror.defineMode("mirc", function() { function parseWords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var specials = parseWords("$! $$ $& $? $+ $abook $abs $active $activecid " + "$activewid $address $addtok $agent $agentname $agentstat $agentver " + "$alias $and $anick $ansi2mirc $aop $appactive $appstate $asc $asctime " + "$asin $atan $avoice $away $awaymsg $awaytime $banmask $base $bfind " + "$binoff $biton $bnick $bvar $bytes $calc $cb $cd $ceil $chan $chanmodes " + "$chantypes $chat $chr $cid $clevel $click $cmdbox $cmdline $cnick $color " + "$com $comcall $comchan $comerr $compact $compress $comval $cos $count " + "$cr $crc $creq $crlf $ctime $ctimer $ctrlenter $date $day $daylight " + "$dbuh $dbuw $dccignore $dccport $dde $ddename $debug $decode $decompress " + "$deltok $devent $dialog $did $didreg $didtok $didwm $disk $dlevel $dll " + "$dllcall $dname $dns $duration $ebeeps $editbox $emailaddr $encode $error " + "$eval $event $exist $feof $ferr $fgetc $file $filename $filtered $finddir " + "$finddirn $findfile $findfilen $findtok $fline $floor $fopen $fread $fserve " + "$fulladdress $fulldate $fullname $fullscreen $get $getdir $getdot $gettok $gmt " + "$group $halted $hash $height $hfind $hget $highlight $hnick $hotline " + "$hotlinepos $ial $ialchan $ibl $idle $iel $ifmatch $ignore $iif $iil " + "$inelipse $ini $inmidi $inpaste $inpoly $input $inrect $inroundrect " + "$insong $instok $int $inwave $ip $isalias $isbit $isdde $isdir $isfile " + "$isid $islower $istok $isupper $keychar $keyrpt $keyval $knick $lactive " + "$lactivecid $lactivewid $left $len $level $lf $line $lines $link $lock " + "$lock $locked $log $logstamp $logstampfmt $longfn $longip $lower $ltimer " + "$maddress $mask $matchkey $matchtok $md5 $me $menu $menubar $menucontext " + "$menutype $mid $middir $mircdir $mircexe $mircini $mklogfn $mnick $mode " + "$modefirst $modelast $modespl $mouse $msfile $network $newnick $nick $nofile " + "$nopath $noqt $not $notags $notify $null $numeric $numok $oline $onpoly " + "$opnick $or $ord $os $passivedcc $pic $play $pnick $port $portable $portfree " + "$pos $prefix $prop $protect $puttok $qt $query $rand $r $rawmsg $read $readomo " + "$readn $regex $regml $regsub $regsubex $remove $remtok $replace $replacex " + "$reptok $result $rgb $right $round $scid $scon $script $scriptdir $scriptline " + "$sdir $send $server $serverip $sfile $sha1 $shortfn $show $signal $sin " + "$site $sline $snick $snicks $snotify $sock $sockbr $sockerr $sockname " + "$sorttok $sound $sqrt $ssl $sreq $sslready $status $strip $str $stripped " + "$syle $submenu $switchbar $tan $target $ticks $time $timer $timestamp " + "$timestampfmt $timezone $tip $titlebar $toolbar $treebar $trust $ulevel " + "$ulist $upper $uptime $url $usermode $v1 $v2 $var $vcmd $vcmdstat $vcmdver " + "$version $vnick $vol $wid $width $wildsite $wildtok $window $wrap $xor"); var keywords = parseWords("abook ajinvite alias aline ame amsg anick aop auser autojoin avoice " + "away background ban bcopy beep bread break breplace bset btrunc bunset bwrite " + "channel clear clearall cline clipboard close cnick color comclose comopen " + "comreg continue copy creq ctcpreply ctcps dcc dccserver dde ddeserver " + "debug dec describe dialog did didtok disable disconnect dlevel dline dll " + "dns dqwindow drawcopy drawdot drawfill drawline drawpic drawrect drawreplace " + "drawrot drawsave drawscroll drawtext ebeeps echo editbox emailaddr enable " + "events exit fclose filter findtext finger firewall flash flist flood flush " + "flushini font fopen fseek fsend fserve fullname fwrite ghide gload gmove " + "gopts goto gplay gpoint gqreq groups gshow gsize gstop gtalk gunload hadd " + "halt haltdef hdec hdel help hfree hinc hload hmake hop hsave ial ialclear " + "ialmark identd if ignore iline inc invite iuser join kick linesep links list " + "load loadbuf localinfo log mdi me menubar mkdir mnick mode msg nick noop notice " + "notify omsg onotice part partall pdcc perform play playctrl pop protect pvoice " + "qme qmsg query queryn quit raw reload remini remote remove rename renwin " + "reseterror resetidle return rlevel rline rmdir run ruser save savebuf saveini " + "say scid scon server set showmirc signam sline sockaccept sockclose socklist " + "socklisten sockmark sockopen sockpause sockread sockrename sockudp sockwrite " + "sound speak splay sreq strip switchbar timer timestamp titlebar tnick tokenize " + "toolbar topic tray treebar ulist unload unset unsetall updatenl url uwho " + "var vcadd vcmd vcrem vol while whois window winhelp write writeint if isalnum " + "isalpha isaop isavoice isban ischan ishop isignore isin isincs isletter islower " + "isnotify isnum ison isop isprotect isreg isupper isvoice iswm iswmcs " + "elseif else goto menu nicklist status title icon size option text edit " + "button check radio box scroll list combo link tab item"); var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch"); var isOperatorChar = /[+\-*&%=<>!?^\/\|]/; function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } function tokenBase(stream, state) { var beforeParams = state.beforeParams; state.beforeParams = false; var ch = stream.next(); if (/[\[\]{}\(\),\.]/.test(ch)) { if (ch == "(" && beforeParams) state.inParams = true; else if (ch == ")") state.inParams = false; return null; } else if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } else if (ch == "\\") { stream.eat("\\"); stream.eat(/./); return "number"; } else if (ch == "/" && stream.eat("*")) { return chain(stream, state, tokenComment); } else if (ch == ";" && stream.match(/ *\( *\(/)) { return chain(stream, state, tokenUnparsed); } else if (ch == ";" && !state.inParams) { stream.skipToEnd(); return "comment"; } else if (ch == '"') { stream.eat(/"/); return "keyword"; } else if (ch == "$") { stream.eatWhile(/[$_a-z0-9A-Z\.:]/); if (specials && specials.propertyIsEnumerable(stream.current().toLowerCase())) { return "keyword"; } else { state.beforeParams = true; return "builtin"; } } else if (ch == "%") { stream.eatWhile(/[^,^\s^\(^\)]/); state.beforeParams = true; return "string"; } else if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } else { stream.eatWhile(/[\w\$_{}]/); var word = stream.current().toLowerCase(); if (keywords && keywords.propertyIsEnumerable(word)) return "keyword"; if (functions && functions.propertyIsEnumerable(word)) { state.beforeParams = true; return "keyword"; } return null; } } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function tokenUnparsed(stream, state) { var maybeEnd = 0, ch; while (ch = stream.next()) { if (ch == ";" && maybeEnd == 2) { state.tokenize = tokenBase; break; } if (ch == ")") maybeEnd++; else if (ch != " ") maybeEnd = 0; } return "meta"; } return { startState: function() { return { tokenize: tokenBase, beforeParams: false, inParams: false }; }, token: function(stream, state) { if (stream.eatSpace()) return null; return state.tokenize(stream, state); } }; }); }); application/library/codemirror/mode/mllike/mllike.js000064400000011632147577724760016731 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('mllike', function(_config, parserConfig) { var words = { 'let': 'keyword', 'rec': 'keyword', 'in': 'keyword', 'of': 'keyword', 'and': 'keyword', 'if': 'keyword', 'then': 'keyword', 'else': 'keyword', 'for': 'keyword', 'to': 'keyword', 'while': 'keyword', 'do': 'keyword', 'done': 'keyword', 'fun': 'keyword', 'function': 'keyword', 'val': 'keyword', 'type': 'keyword', 'mutable': 'keyword', 'match': 'keyword', 'with': 'keyword', 'try': 'keyword', 'open': 'builtin', 'ignore': 'builtin', 'begin': 'keyword', 'end': 'keyword' }; var extraWords = parserConfig.extraWords || {}; for (var prop in extraWords) { if (extraWords.hasOwnProperty(prop)) { words[prop] = parserConfig.extraWords[prop]; } } function tokenBase(stream, state) { var ch = stream.next(); if (ch === '"') { state.tokenize = tokenString; return state.tokenize(stream, state); } if (ch === '(') { if (stream.eat('*')) { state.commentLevel++; state.tokenize = tokenComment; return state.tokenize(stream, state); } } if (ch === '~') { stream.eatWhile(/\w/); return 'variable-2'; } if (ch === '`') { stream.eatWhile(/\w/); return 'quote'; } if (ch === '/' && parserConfig.slashComments && stream.eat('/')) { stream.skipToEnd(); return 'comment'; } if (/\d/.test(ch)) { stream.eatWhile(/[\d]/); if (stream.eat('.')) { stream.eatWhile(/[\d]/); } return 'number'; } if ( /[+\-*&%=<>!?|]/.test(ch)) { return 'operator'; } stream.eatWhile(/\w/); var cur = stream.current(); return words.hasOwnProperty(cur) ? words[cur] : 'variable'; } function tokenString(stream, state) { var next, end = false, escaped = false; while ((next = stream.next()) != null) { if (next === '"' && !escaped) { end = true; break; } escaped = !escaped && next === '\\'; } if (end && !escaped) { state.tokenize = tokenBase; } return 'string'; }; function tokenComment(stream, state) { var prev, next; while(state.commentLevel > 0 && (next = stream.next()) != null) { if (prev === '(' && next === '*') state.commentLevel++; if (prev === '*' && next === ')') state.commentLevel--; prev = next; } if (state.commentLevel <= 0) { state.tokenize = tokenBase; } return 'comment'; } return { startState: function() {return {tokenize: tokenBase, commentLevel: 0};}, token: function(stream, state) { if (stream.eatSpace()) return null; return state.tokenize(stream, state); }, blockCommentStart: "(*", blockCommentEnd: "*)", lineComment: parserConfig.slashComments ? "//" : null }; }); CodeMirror.defineMIME('text/x-ocaml', { name: 'mllike', extraWords: { 'succ': 'keyword', 'trace': 'builtin', 'exit': 'builtin', 'print_string': 'builtin', 'print_endline': 'builtin', 'true': 'atom', 'false': 'atom', 'raise': 'keyword' } }); CodeMirror.defineMIME('text/x-fsharp', { name: 'mllike', extraWords: { 'abstract': 'keyword', 'as': 'keyword', 'assert': 'keyword', 'base': 'keyword', 'class': 'keyword', 'default': 'keyword', 'delegate': 'keyword', 'downcast': 'keyword', 'downto': 'keyword', 'elif': 'keyword', 'exception': 'keyword', 'extern': 'keyword', 'finally': 'keyword', 'global': 'keyword', 'inherit': 'keyword', 'inline': 'keyword', 'interface': 'keyword', 'internal': 'keyword', 'lazy': 'keyword', 'let!': 'keyword', 'member' : 'keyword', 'module': 'keyword', 'namespace': 'keyword', 'new': 'keyword', 'null': 'keyword', 'override': 'keyword', 'private': 'keyword', 'public': 'keyword', 'return': 'keyword', 'return!': 'keyword', 'select': 'keyword', 'static': 'keyword', 'struct': 'keyword', 'upcast': 'keyword', 'use': 'keyword', 'use!': 'keyword', 'val': 'keyword', 'when': 'keyword', 'yield': 'keyword', 'yield!': 'keyword', 'List': 'builtin', 'Seq': 'builtin', 'Map': 'builtin', 'Set': 'builtin', 'int': 'builtin', 'string': 'builtin', 'raise': 'builtin', 'failwith': 'builtin', 'not': 'builtin', 'true': 'builtin', 'false': 'builtin' }, slashComments: true }); }); application/library/codemirror/mode/mllike/index.html000064400000010524147577724760017112 0ustar00 CodeMirror: ML-like mode

OCaml mode

F# mode

MIME types defined: text/x-ocaml (OCaml) and text/x-fsharp (F#).

application/library/codemirror/mode/modelica/index.html000064400000003727147577724760017421 0ustar00 CodeMirror: Modelica mode

Modelica mode

Simple mode that tries to handle Modelica as well as it can.

MIME types defined: text/x-modelica (Modlica code).

application/library/codemirror/mode/modelica/modelica.js000064400000015422147577724760017532 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Modelica support for CodeMirror, copyright (c) by Lennart Ochel (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); }) (function(CodeMirror) { "use strict"; CodeMirror.defineMode("modelica", function(config, parserConfig) { var indentUnit = config.indentUnit; var keywords = parserConfig.keywords || {}; var builtin = parserConfig.builtin || {}; var atoms = parserConfig.atoms || {}; var isSingleOperatorChar = /[;=\(:\),{}.*<>+\-\/^\[\]]/; var isDoubleOperatorChar = /(:=|<=|>=|==|<>|\.\+|\.\-|\.\*|\.\/|\.\^)/; var isDigit = /[0-9]/; var isNonDigit = /[_a-zA-Z]/; function tokenLineComment(stream, state) { stream.skipToEnd(); state.tokenize = null; return "comment"; } function tokenBlockComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (maybeEnd && ch == "/") { state.tokenize = null; break; } maybeEnd = (ch == "*"); } return "comment"; } function tokenString(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == '"' && !escaped) { state.tokenize = null; state.sol = false; break; } escaped = !escaped && ch == "\\"; } return "string"; } function tokenIdent(stream, state) { stream.eatWhile(isDigit); while (stream.eat(isDigit) || stream.eat(isNonDigit)) { } var cur = stream.current(); if(state.sol && (cur == "package" || cur == "model" || cur == "when" || cur == "connector")) state.level++; else if(state.sol && cur == "end" && state.level > 0) state.level--; state.tokenize = null; state.sol = false; if (keywords.propertyIsEnumerable(cur)) return "keyword"; else if (builtin.propertyIsEnumerable(cur)) return "builtin"; else if (atoms.propertyIsEnumerable(cur)) return "atom"; else return "variable"; } function tokenQIdent(stream, state) { while (stream.eat(/[^']/)) { } state.tokenize = null; state.sol = false; if(stream.eat("'")) return "variable"; else return "error"; } function tokenUnsignedNuber(stream, state) { stream.eatWhile(isDigit); if (stream.eat('.')) { stream.eatWhile(isDigit); } if (stream.eat('e') || stream.eat('E')) { if (!stream.eat('-')) stream.eat('+'); stream.eatWhile(isDigit); } state.tokenize = null; state.sol = false; return "number"; } // Interface return { startState: function() { return { tokenize: null, level: 0, sol: true }; }, token: function(stream, state) { if(state.tokenize != null) { return state.tokenize(stream, state); } if(stream.sol()) { state.sol = true; } // WHITESPACE if(stream.eatSpace()) { state.tokenize = null; return null; } var ch = stream.next(); // LINECOMMENT if(ch == '/' && stream.eat('/')) { state.tokenize = tokenLineComment; } // BLOCKCOMMENT else if(ch == '/' && stream.eat('*')) { state.tokenize = tokenBlockComment; } // TWO SYMBOL TOKENS else if(isDoubleOperatorChar.test(ch+stream.peek())) { stream.next(); state.tokenize = null; return "operator"; } // SINGLE SYMBOL TOKENS else if(isSingleOperatorChar.test(ch)) { state.tokenize = null; return "operator"; } // IDENT else if(isNonDigit.test(ch)) { state.tokenize = tokenIdent; } // Q-IDENT else if(ch == "'" && stream.peek() && stream.peek() != "'") { state.tokenize = tokenQIdent; } // STRING else if(ch == '"') { state.tokenize = tokenString; } // UNSIGNED_NUBER else if(isDigit.test(ch)) { state.tokenize = tokenUnsignedNuber; } // ERROR else { state.tokenize = null; return "error"; } return state.tokenize(stream, state); }, indent: function(state, textAfter) { if (state.tokenize != null) return CodeMirror.Pass; var level = state.level; if(/(algorithm)/.test(textAfter)) level--; if(/(equation)/.test(textAfter)) level--; if(/(initial algorithm)/.test(textAfter)) level--; if(/(initial equation)/.test(textAfter)) level--; if(/(end)/.test(textAfter)) level--; if(level > 0) return indentUnit*level; else return 0; }, blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//" }; }); function words(str) { var obj = {}, words = str.split(" "); for (var i=0; i", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"], "singlecomment" : ["//", "#"], "operators" : ["="] }, xu: { "keywords" : ["msc"], "options" : ["hscale", "width", "arcgradient", "wordwraparcs", "watermark"], "attributes" : ["label", "idurl", "id", "url", "linecolor", "linecolour", "textcolor", "textcolour", "textbgcolor", "textbgcolour", "arclinecolor", "arclinecolour", "arctextcolor", "arctextcolour", "arctextbgcolor", "arctextbgcolour", "arcskip"], "brackets" : ["\\{", "\\}"], // [ and ] are brackets too, but these get handled in with lists "arcsWords" : ["note", "abox", "rbox", "box", "alt", "else", "opt", "break", "par", "seq", "strict", "neg", "critical", "ignore", "consider", "assert", "loop", "ref", "exc"], "arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"], "singlecomment" : ["//", "#"], "operators" : ["="] }, msgenny: { "keywords" : null, "options" : ["hscale", "width", "arcgradient", "wordwraparcs", "watermark"], "attributes" : null, "brackets" : ["\\{", "\\}"], "arcsWords" : ["note", "abox", "rbox", "box", "alt", "else", "opt", "break", "par", "seq", "strict", "neg", "critical", "ignore", "consider", "assert", "loop", "ref", "exc"], "arcsOthers" : ["\\|\\|\\|", "\\.\\.\\.", "---", "--", "<->", "==", "<<=>>", "<=>", "\\.\\.", "<<>>", "::", "<:>", "->", "=>>", "=>", ">>", ":>", "<-", "<<=", "<=", "<<", "<:", "x-", "-x"], "singlecomment" : ["//", "#"], "operators" : ["="] } } CodeMirror.defineMode("mscgen", function(_, modeConfig) { var language = languages[modeConfig && modeConfig.language || "mscgen"] return { startState: startStateFn, copyState: copyStateFn, token: produceTokenFunction(language), lineComment : "#", blockCommentStart : "/*", blockCommentEnd : "*/" }; }); CodeMirror.defineMIME("text/x-mscgen", "mscgen"); CodeMirror.defineMIME("text/x-xu", {name: "mscgen", language: "xu"}); CodeMirror.defineMIME("text/x-msgenny", {name: "mscgen", language: "msgenny"}); function wordRegexpBoundary(pWords) { return new RegExp("\\b(" + pWords.join("|") + ")\\b", "i"); } function wordRegexp(pWords) { return new RegExp("(" + pWords.join("|") + ")", "i"); } function startStateFn() { return { inComment : false, inString : false, inAttributeList : false, inScript : false }; } function copyStateFn(pState) { return { inComment : pState.inComment, inString : pState.inString, inAttributeList : pState.inAttributeList, inScript : pState.inScript }; } function produceTokenFunction(pConfig) { return function(pStream, pState) { if (pStream.match(wordRegexp(pConfig.brackets), true, true)) { return "bracket"; } /* comments */ if (!pState.inComment) { if (pStream.match(/\/\*[^\*\/]*/, true, true)) { pState.inComment = true; return "comment"; } if (pStream.match(wordRegexp(pConfig.singlecomment), true, true)) { pStream.skipToEnd(); return "comment"; } } if (pState.inComment) { if (pStream.match(/[^\*\/]*\*\//, true, true)) pState.inComment = false; else pStream.skipToEnd(); return "comment"; } /* strings */ if (!pState.inString && pStream.match(/\"(\\\"|[^\"])*/, true, true)) { pState.inString = true; return "string"; } if (pState.inString) { if (pStream.match(/[^\"]*\"/, true, true)) pState.inString = false; else pStream.skipToEnd(); return "string"; } /* keywords & operators */ if (!!pConfig.keywords && pStream.match(wordRegexpBoundary(pConfig.keywords), true, true)) return "keyword"; if (pStream.match(wordRegexpBoundary(pConfig.options), true, true)) return "keyword"; if (pStream.match(wordRegexpBoundary(pConfig.arcsWords), true, true)) return "keyword"; if (pStream.match(wordRegexp(pConfig.arcsOthers), true, true)) return "keyword"; if (!!pConfig.operators && pStream.match(wordRegexp(pConfig.operators), true, true)) return "operator"; /* attribute lists */ if (!pConfig.inAttributeList && !!pConfig.attributes && pStream.match(/\[/, true, true)) { pConfig.inAttributeList = true; return "bracket"; } if (pConfig.inAttributeList) { if (pConfig.attributes !== null && pStream.match(wordRegexpBoundary(pConfig.attributes), true, true)) { return "attribute"; } if (pStream.match(/]/, true, true)) { pConfig.inAttributeList = false; return "bracket"; } } pStream.next(); return "base"; }; } }); application/library/codemirror/mode/mscgen/mscgen_test.js000064400000006777147577724760020004 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "mscgen"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("empty chart", "[keyword msc][bracket {]", "[base ]", "[bracket }]" ); MT("comments", "[comment // a single line comment]", "[comment # another single line comment /* and */ ignored here]", "[comment /* A multi-line comment even though it contains]", "[comment msc keywords and \"quoted text\"*/]"); MT("strings", "[string \"// a string\"]", "[string \"a string running over]", "[string two lines\"]", "[string \"with \\\"escaped quote\"]" ); MT("xĂč/ msgenny keywords classify as 'base'", "[base watermark]", "[base alt loop opt ref else break par seq assert]" ); MT("mscgen options classify as keyword", "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]" ); MT("mscgen arcs classify as keyword", "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]", "[keyword |||...---]", "[keyword ..--==::]", "[keyword ->]", "[keyword <-]", "[keyword <->]", "[keyword =>]", "[keyword <=]", "[keyword <=>]", "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]", "[keyword >>]", "[keyword <<]", "[keyword <<>>]", "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]", "[keyword :>]", "[keyword <:]", "[keyword <:>]" ); MT("within an attribute list, attributes classify as attribute", "[bracket [[][attribute label]", "[attribute id]","[attribute url]","[attribute idurl]", "[attribute linecolor]","[attribute linecolour]","[attribute textcolor]","[attribute textcolour]","[attribute textbgcolor]","[attribute textbgcolour]", "[attribute arclinecolor]","[attribute arclinecolour]","[attribute arctextcolor]","[attribute arctextcolour]","[attribute arctextbgcolor]","[attribute arctextbgcolour]", "[attribute arcskip][bracket ]]]" ); MT("outside an attribute list, attributes classify as base", "[base label]", "[base id]","[base url]","[base idurl]", "[base linecolor]","[base linecolour]","[base textcolor]","[base textcolour]","[base textbgcolor]","[base textbgcolour]", "[base arclinecolor]","[base arclinecolour]","[base arctextcolor]","[base arctextcolour]","[base arctextbgcolor]","[base arctextbgcolour]", "[base arcskip]" ); MT("a typical program", "[comment # typical mscgen program]", "[keyword msc][base ][bracket {]", "[keyword wordwraparcs][operator =][string \"true\"][base , ][keyword hscale][operator =][string \"0.8\"][keyword arcgradient][operator =][base 30;]", "[base a][bracket [[][attribute label][operator =][string \"Entity A\"][bracket ]]][base ,]", "[base b][bracket [[][attribute label][operator =][string \"Entity B\"][bracket ]]][base ,]", "[base c][bracket [[][attribute label][operator =][string \"Entity C\"][bracket ]]][base ;]", "[base a ][keyword =>>][base b][bracket [[][attribute label][operator =][string \"Hello entity B\"][bracket ]]][base ;]", "[base a ][keyword <<][base b][bracket [[][attribute label][operator =][string \"Here's an answer dude!\"][bracket ]]][base ;]", "[base c ][keyword :>][base *][bracket [[][attribute label][operator =][string \"What about me?\"][base , ][attribute textcolor][operator =][base red][bracket ]]][base ;]", "[bracket }]" ); })(); application/library/codemirror/mode/mscgen/index.html000064400000010327147577724760017112 0ustar00 CodeMirror: MscGen mode

MscGen mode

XĂč mode

MsGenny mode

Simple mode for highlighting MscGen and two derived sequence chart languages.

MIME types defined: text/x-mscgen text/x-xu text/x-msgenny

application/library/codemirror/mode/mscgen/xu_test.js000064400000007150147577724760017146 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-xu"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "xu"); } MT("empty chart", "[keyword msc][bracket {]", "[base ]", "[bracket }]" ); MT("comments", "[comment // a single line comment]", "[comment # another single line comment /* and */ ignored here]", "[comment /* A multi-line comment even though it contains]", "[comment msc keywords and \"quoted text\"*/]"); MT("strings", "[string \"// a string\"]", "[string \"a string running over]", "[string two lines\"]", "[string \"with \\\"escaped quote\"]" ); MT("xĂč/ msgenny keywords classify as 'keyword'", "[keyword watermark]", "[keyword alt]","[keyword loop]","[keyword opt]","[keyword ref]","[keyword else]","[keyword break]","[keyword par]","[keyword seq]","[keyword assert]" ); MT("mscgen options classify as keyword", "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]" ); MT("mscgen arcs classify as keyword", "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]", "[keyword |||...---]", "[keyword ..--==::]", "[keyword ->]", "[keyword <-]", "[keyword <->]", "[keyword =>]", "[keyword <=]", "[keyword <=>]", "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]", "[keyword >>]", "[keyword <<]", "[keyword <<>>]", "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]", "[keyword :>]", "[keyword <:]", "[keyword <:>]" ); MT("within an attribute list, attributes classify as attribute", "[bracket [[][attribute label]", "[attribute id]","[attribute url]","[attribute idurl]", "[attribute linecolor]","[attribute linecolour]","[attribute textcolor]","[attribute textcolour]","[attribute textbgcolor]","[attribute textbgcolour]", "[attribute arclinecolor]","[attribute arclinecolour]","[attribute arctextcolor]","[attribute arctextcolour]","[attribute arctextbgcolor]","[attribute arctextbgcolour]", "[attribute arcskip][bracket ]]]" ); MT("outside an attribute list, attributes classify as base", "[base label]", "[base id]","[base url]","[base idurl]", "[base linecolor]","[base linecolour]","[base textcolor]","[base textcolour]","[base textbgcolor]","[base textbgcolour]", "[base arclinecolor]","[base arclinecolour]","[base arctextcolor]","[base arctextcolour]","[base arctextbgcolor]","[base arctextbgcolour]", "[base arcskip]" ); MT("a typical program", "[comment # typical mscgen program]", "[keyword msc][base ][bracket {]", "[keyword wordwraparcs][operator =][string \"true\"][keyword hscale][operator =][string \"0.8\"][keyword arcgradient][operator =][base 30;]", "[base a][bracket [[][attribute label][operator =][string \"Entity A\"][bracket ]]][base ,]", "[base b][bracket [[][attribute label][operator =][string \"Entity B\"][bracket ]]][base ,]", "[base c][bracket [[][attribute label][operator =][string \"Entity C\"][bracket ]]][base ;]", "[base a ][keyword =>>][base b][bracket [[][attribute label][operator =][string \"Hello entity B\"][bracket ]]][base ;]", "[base a ][keyword <<][base b][bracket [[][attribute label][operator =][string \"Here's an answer dude!\"][bracket ]]][base ;]", "[base c ][keyword :>][base *][bracket [[][attribute label][operator =][string \"What about me?\"][base , ][attribute textcolor][operator =][base red][bracket ]]][base ;]", "[bracket }]" ); })(); application/library/codemirror/mode/mscgen/msgenny_test.js000064400000006031147577724760020167 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "text/x-msgenny"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), "msgenny"); } MT("comments", "[comment // a single line comment]", "[comment # another single line comment /* and */ ignored here]", "[comment /* A multi-line comment even though it contains]", "[comment msc keywords and \"quoted text\"*/]"); MT("strings", "[string \"// a string\"]", "[string \"a string running over]", "[string two lines\"]", "[string \"with \\\"escaped quote\"]" ); MT("xĂč/ msgenny keywords classify as 'keyword'", "[keyword watermark]", "[keyword alt]","[keyword loop]","[keyword opt]","[keyword ref]","[keyword else]","[keyword break]","[keyword par]","[keyword seq]","[keyword assert]" ); MT("mscgen options classify as keyword", "[keyword hscale]", "[keyword width]", "[keyword arcgradient]", "[keyword wordwraparcs]" ); MT("mscgen arcs classify as keyword", "[keyword note]","[keyword abox]","[keyword rbox]","[keyword box]", "[keyword |||...---]", "[keyword ..--==::]", "[keyword ->]", "[keyword <-]", "[keyword <->]", "[keyword =>]", "[keyword <=]", "[keyword <=>]", "[keyword =>>]", "[keyword <<=]", "[keyword <<=>>]", "[keyword >>]", "[keyword <<]", "[keyword <<>>]", "[keyword -x]", "[keyword x-]", "[keyword -X]", "[keyword X-]", "[keyword :>]", "[keyword <:]", "[keyword <:>]" ); MT("within an attribute list, mscgen/ xĂč attributes classify as base", "[base [[label]", "[base idurl id url]", "[base linecolor linecolour textcolor textcolour textbgcolor textbgcolour]", "[base arclinecolor arclinecolour arctextcolor arctextcolour arctextbgcolor arctextbgcolour]", "[base arcskip]]]" ); MT("outside an attribute list, mscgen/ xĂč attributes classify as base", "[base label]", "[base idurl id url]", "[base linecolor linecolour textcolor textcolour textbgcolor textbgcolour]", "[base arclinecolor arclinecolour arctextcolor arctextcolour arctextbgcolor arctextbgcolour]", "[base arcskip]" ); MT("a typical program", "[comment # typical msgenny program]", "[keyword wordwraparcs][operator =][string \"true\"][base , ][keyword hscale][operator =][string \"0.8\"][base , ][keyword arcgradient][operator =][base 30;]", "[base a : ][string \"Entity A\"][base ,]", "[base b : Entity B,]", "[base c : Entity C;]", "[base a ][keyword =>>][base b: ][string \"Hello entity B\"][base ;]", "[base a ][keyword alt][base c][bracket {]", "[base a ][keyword <<][base b: ][string \"Here's an answer dude!\"][base ;]", "[keyword ---][base : ][string \"sorry, won't march - comm glitch\"]", "[base a ][keyword x-][base b: ][string \"Here's an answer dude! (won't arrive...)\"][base ;]", "[bracket }]", "[base c ][keyword :>][base *: What about me?;]" ); })(); application/library/codemirror/mode/mumps/mumps.js000064400000012352147577724760016501 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /* This MUMPS Language script was constructed using vbscript.js as a template. */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("mumps", function() { function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); } var singleOperators = new RegExp("^[\\+\\-\\*/&#!_?\\\\<>=\\'\\[\\]]"); var doubleOperators = new RegExp("^(('=)|(<=)|(>=)|('>)|('<)|([[)|(]])|(^$))"); var singleDelimiters = new RegExp("^[\\.,:]"); var brackets = new RegExp("[()]"); var identifiers = new RegExp("^[%A-Za-z][A-Za-z0-9]*"); var commandKeywords = ["break","close","do","else","for","goto", "halt", "hang", "if", "job","kill","lock","merge","new","open", "quit", "read", "set", "tcommit", "trollback", "tstart", "use", "view", "write", "xecute", "b","c","d","e","f","g", "h", "i", "j","k","l","m","n","o", "q", "r", "s", "tc", "tro", "ts", "u", "v", "w", "x"]; // The following list includes instrinsic functions _and_ special variables var intrinsicFuncsWords = ["\\$ascii", "\\$char", "\\$data", "\\$ecode", "\\$estack", "\\$etrap", "\\$extract", "\\$find", "\\$fnumber", "\\$get", "\\$horolog", "\\$io", "\\$increment", "\\$job", "\\$justify", "\\$length", "\\$name", "\\$next", "\\$order", "\\$piece", "\\$qlength", "\\$qsubscript", "\\$query", "\\$quit", "\\$random", "\\$reverse", "\\$select", "\\$stack", "\\$test", "\\$text", "\\$translate", "\\$view", "\\$x", "\\$y", "\\$a", "\\$c", "\\$d", "\\$e", "\\$ec", "\\$es", "\\$et", "\\$f", "\\$fn", "\\$g", "\\$h", "\\$i", "\\$j", "\\$l", "\\$n", "\\$na", "\\$o", "\\$p", "\\$q", "\\$ql", "\\$qs", "\\$r", "\\$re", "\\$s", "\\$st", "\\$t", "\\$tr", "\\$v", "\\$z"]; var intrinsicFuncs = wordRegexp(intrinsicFuncsWords); var command = wordRegexp(commandKeywords); function tokenBase(stream, state) { if (stream.sol()) { state.label = true; state.commandMode = 0; } // The character has meaning in MUMPS. Ignoring consecutive // spaces would interfere with interpreting whether the next non-space // character belongs to the command or argument context. // Examine each character and update a mode variable whose interpretation is: // >0 => command 0 => argument <0 => command post-conditional var ch = stream.peek(); if (ch == " " || ch == "\t") { // Pre-process state.label = false; if (state.commandMode == 0) state.commandMode = 1; else if ((state.commandMode < 0) || (state.commandMode == 2)) state.commandMode = 0; } else if ((ch != ".") && (state.commandMode > 0)) { if (ch == ":") state.commandMode = -1; // SIS - Command post-conditional else state.commandMode = 2; } // Do not color parameter list as line tag if ((ch === "(") || (ch === "\u0009")) state.label = false; // MUMPS comment starts with ";" if (ch === ";") { stream.skipToEnd(); return "comment"; } // Number Literals // SIS/RLM - MUMPS permits canonic number followed by concatenate operator if (stream.match(/^[-+]?\d+(\.\d+)?([eE][-+]?\d+)?/)) return "number"; // Handle Strings if (ch == '"') { if (stream.skipTo('"')) { stream.next(); return "string"; } else { stream.skipToEnd(); return "error"; } } // Handle operators and Delimiters if (stream.match(doubleOperators) || stream.match(singleOperators)) return "operator"; // Prevents leading "." in DO block from falling through to error if (stream.match(singleDelimiters)) return null; if (brackets.test(ch)) { stream.next(); return "bracket"; } if (state.commandMode > 0 && stream.match(command)) return "variable-2"; if (stream.match(intrinsicFuncs)) return "builtin"; if (stream.match(identifiers)) return "variable"; // Detect dollar-sign when not a documented intrinsic function // "^" may introduce a GVN or SSVN - Color same as function if (ch === "$" || ch === "^") { stream.next(); return "builtin"; } // MUMPS Indirection if (ch === "@") { stream.next(); return "string-2"; } if (/[\w%]/.test(ch)) { stream.eatWhile(/[\w%]/); return "variable"; } // Handle non-detected items stream.next(); return "error"; } return { startState: function() { return { label: false, commandMode: 0 }; }, token: function(stream, state) { var style = tokenBase(stream, state); if (state.label) return "tag"; return style; } }; }); CodeMirror.defineMIME("text/x-mumps", "mumps"); }); application/library/codemirror/mode/mumps/index.html000064400000005060147577724760016775 0ustar00ï»ż CodeMirror: MUMPS mode

MUMPS mode

application/library/codemirror/mode/nginx/index.html000064400000012167147577724760016765 0ustar00ï»ż CodeMirror: NGINX mode

NGINX mode

MIME types defined: text/nginx.

application/library/codemirror/mode/nginx/nginx.js000064400000023664147577724760016455 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("nginx", function(config) { function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var keywords = words( /* ngxDirectiveControl */ "break return rewrite set" + /* ngxDirective */ " accept_mutex accept_mutex_delay access_log add_after_body add_before_body add_header addition_types aio alias allow ancient_browser ancient_browser_value auth_basic auth_basic_user_file auth_http auth_http_header auth_http_timeout autoindex autoindex_exact_size autoindex_localtime charset charset_types client_body_buffer_size client_body_in_file_only client_body_in_single_buffer client_body_temp_path client_body_timeout client_header_buffer_size client_header_timeout client_max_body_size connection_pool_size create_full_put_path daemon dav_access dav_methods debug_connection debug_points default_type degradation degrade deny devpoll_changes devpoll_events directio directio_alignment empty_gif env epoll_events error_log eventport_events expires fastcgi_bind fastcgi_buffer_size fastcgi_buffers fastcgi_busy_buffers_size fastcgi_cache fastcgi_cache_key fastcgi_cache_methods fastcgi_cache_min_uses fastcgi_cache_path fastcgi_cache_use_stale fastcgi_cache_valid fastcgi_catch_stderr fastcgi_connect_timeout fastcgi_hide_header fastcgi_ignore_client_abort fastcgi_ignore_headers fastcgi_index fastcgi_intercept_errors fastcgi_max_temp_file_size fastcgi_next_upstream fastcgi_param fastcgi_pass_header fastcgi_pass_request_body fastcgi_pass_request_headers fastcgi_read_timeout fastcgi_send_lowat fastcgi_send_timeout fastcgi_split_path_info fastcgi_store fastcgi_store_access fastcgi_temp_file_write_size fastcgi_temp_path fastcgi_upstream_fail_timeout fastcgi_upstream_max_fails flv geoip_city geoip_country google_perftools_profiles gzip gzip_buffers gzip_comp_level gzip_disable gzip_hash gzip_http_version gzip_min_length gzip_no_buffer gzip_proxied gzip_static gzip_types gzip_vary gzip_window if_modified_since ignore_invalid_headers image_filter image_filter_buffer image_filter_jpeg_quality image_filter_transparency imap_auth imap_capabilities imap_client_buffer index ip_hash keepalive_requests keepalive_timeout kqueue_changes kqueue_events large_client_header_buffers limit_conn limit_conn_log_level limit_rate limit_rate_after limit_req limit_req_log_level limit_req_zone limit_zone lingering_time lingering_timeout lock_file log_format log_not_found log_subrequest map_hash_bucket_size map_hash_max_size master_process memcached_bind memcached_buffer_size memcached_connect_timeout memcached_next_upstream memcached_read_timeout memcached_send_timeout memcached_upstream_fail_timeout memcached_upstream_max_fails merge_slashes min_delete_depth modern_browser modern_browser_value msie_padding msie_refresh multi_accept open_file_cache open_file_cache_errors open_file_cache_events open_file_cache_min_uses open_file_cache_valid open_log_file_cache output_buffers override_charset perl perl_modules perl_require perl_set pid pop3_auth pop3_capabilities port_in_redirect postpone_gzipping postpone_output protocol proxy proxy_bind proxy_buffer proxy_buffer_size proxy_buffering proxy_buffers proxy_busy_buffers_size proxy_cache proxy_cache_key proxy_cache_methods proxy_cache_min_uses proxy_cache_path proxy_cache_use_stale proxy_cache_valid proxy_connect_timeout proxy_headers_hash_bucket_size proxy_headers_hash_max_size proxy_hide_header proxy_ignore_client_abort proxy_ignore_headers proxy_intercept_errors proxy_max_temp_file_size proxy_method proxy_next_upstream proxy_pass_error_message proxy_pass_header proxy_pass_request_body proxy_pass_request_headers proxy_read_timeout proxy_redirect proxy_send_lowat proxy_send_timeout proxy_set_body proxy_set_header proxy_ssl_session_reuse proxy_store proxy_store_access proxy_temp_file_write_size proxy_temp_path proxy_timeout proxy_upstream_fail_timeout proxy_upstream_max_fails random_index read_ahead real_ip_header recursive_error_pages request_pool_size reset_timedout_connection resolver resolver_timeout rewrite_log rtsig_overflow_events rtsig_overflow_test rtsig_overflow_threshold rtsig_signo satisfy secure_link_secret send_lowat send_timeout sendfile sendfile_max_chunk server_name_in_redirect server_names_hash_bucket_size server_names_hash_max_size server_tokens set_real_ip_from smtp_auth smtp_capabilities smtp_client_buffer smtp_greeting_delay so_keepalive source_charset ssi ssi_ignore_recycled_buffers ssi_min_file_chunk ssi_silent_errors ssi_types ssi_value_length ssl ssl_certificate ssl_certificate_key ssl_ciphers ssl_client_certificate ssl_crl ssl_dhparam ssl_engine ssl_prefer_server_ciphers ssl_protocols ssl_session_cache ssl_session_timeout ssl_verify_client ssl_verify_depth starttls stub_status sub_filter sub_filter_once sub_filter_types tcp_nodelay tcp_nopush thread_stack_size timeout timer_resolution types_hash_bucket_size types_hash_max_size underscores_in_headers uninitialized_variable_warn use user userid userid_domain userid_expires userid_mark userid_name userid_p3p userid_path userid_service valid_referers variables_hash_bucket_size variables_hash_max_size worker_connections worker_cpu_affinity worker_priority worker_processes worker_rlimit_core worker_rlimit_nofile worker_rlimit_sigpending worker_threads working_directory xclient xml_entities xslt_stylesheet xslt_typesdrew@li229-23" ); var keywords_block = words( /* ngxDirectiveBlock */ "http mail events server types location upstream charset_map limit_except if geo map" ); var keywords_important = words( /* ngxDirectiveImportant */ "include root server server_name listen internal proxy_pass memcached_pass fastcgi_pass try_files" ); var indentUnit = config.indentUnit, type; function ret(style, tp) {type = tp; return style;} function tokenBase(stream, state) { stream.eatWhile(/[\w\$_]/); var cur = stream.current(); if (keywords.propertyIsEnumerable(cur)) { return "keyword"; } else if (keywords_block.propertyIsEnumerable(cur)) { return "variable-2"; } else if (keywords_important.propertyIsEnumerable(cur)) { return "string-2"; } /**/ var ch = stream.next(); if (ch == "@") {stream.eatWhile(/[\w\\\-]/); return ret("meta", stream.current());} else if (ch == "/" && stream.eat("*")) { state.tokenize = tokenCComment; return tokenCComment(stream, state); } else if (ch == "<" && stream.eat("!")) { state.tokenize = tokenSGMLComment; return tokenSGMLComment(stream, state); } else if (ch == "=") ret(null, "compare"); else if ((ch == "~" || ch == "|") && stream.eat("=")) return ret(null, "compare"); else if (ch == "\"" || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } else if (ch == "#") { stream.skipToEnd(); return ret("comment", "comment"); } else if (ch == "!") { stream.match(/^\s*\w*/); return ret("keyword", "important"); } else if (/\d/.test(ch)) { stream.eatWhile(/[\w.%]/); return ret("number", "unit"); } else if (/[,.+>*\/]/.test(ch)) { return ret(null, "select-op"); } else if (/[;{}:\[\]]/.test(ch)) { return ret(null, ch); } else { stream.eatWhile(/[\w\\\-]/); return ret("variable", "variable"); } } function tokenCComment(stream, state) { var maybeEnd = false, ch; while ((ch = stream.next()) != null) { if (maybeEnd && ch == "/") { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return ret("comment", "comment"); } function tokenSGMLComment(stream, state) { var dashes = 0, ch; while ((ch = stream.next()) != null) { if (dashes >= 2 && ch == ">") { state.tokenize = tokenBase; break; } dashes = (ch == "-") ? dashes + 1 : 0; } return ret("comment", "comment"); } function tokenString(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) break; escaped = !escaped && ch == "\\"; } if (!escaped) state.tokenize = tokenBase; return ret("string", "string"); }; } return { startState: function(base) { return {tokenize: tokenBase, baseIndent: base || 0, stack: []}; }, token: function(stream, state) { if (stream.eatSpace()) return null; type = null; var style = state.tokenize(stream, state); var context = state.stack[state.stack.length-1]; if (type == "hash" && context == "rule") style = "atom"; else if (style == "variable") { if (context == "rule") style = "number"; else if (!context || context == "@media{") style = "tag"; } if (context == "rule" && /^[\{\};]$/.test(type)) state.stack.pop(); if (type == "{") { if (context == "@media") state.stack[state.stack.length-1] = "@media{"; else state.stack.push("{"); } else if (type == "}") state.stack.pop(); else if (type == "@media") state.stack.push("@media"); else if (context == "{" && type != "comment") state.stack.push("rule"); return style; }, indent: function(state, textAfter) { var n = state.stack.length; if (/^\}/.test(textAfter)) n -= state.stack[state.stack.length-1] == "rule" ? 2 : 1; return state.baseIndent + n * indentUnit; }, electricChars: "}" }; }); CodeMirror.defineMIME("text/x-nginx-conf", "nginx"); }); application/library/codemirror/mode/nsis/index.html000064400000003344147577724760016613 0ustar00 CodeMirror: NSIS mode

NSIS mode

MIME types defined: text/x-nsis.

application/library/codemirror/mode/nsis/nsis.js000064400000016720147577724760016132 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Author: Jan T. Sott (http://github.com/idleberg) (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../../addon/mode/simple"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineSimpleMode("nsis",{ start:[ // Numbers {regex: /(?:[+-]?)(?:0x[\d,a-f]+)|(?:0o[0-7]+)|(?:0b[0,1]+)|(?:\d+.?\d*)/, token: "number"}, // Strings { regex: /"(?:[^\\"]|\\.)*"?/, token: "string" }, { regex: /'(?:[^\\']|\\.)*'?/, token: "string" }, { regex: /`(?:[^\\`]|\\.)*`?/, token: "string" }, // Compile Time Commands {regex: /(?:\!(include|addincludedir|addplugindir|appendfile|cd|delfile|echo|error|execute|packhdr|finalize|getdllversion|system|tempfile|warning|verbose|define|undef|insertmacro|makensis|searchparse|searchreplace))\b/, token: "keyword"}, // Conditional Compilation {regex: /(?:\!(if(?:n?def)?|ifmacron?def|macro))\b/, token: "keyword", indent: true}, {regex: /(?:\!(else|endif|macroend))\b/, token: "keyword", dedent: true}, // Runtime Commands {regex: /\b(?:Abort|AddBrandingImage|AddSize|AllowRootDirInstall|AllowSkipFiles|AutoCloseWindow|BGFont|BGGradient|BrandingText|BringToFront|Call|CallInstDLL|Caption|ChangeUI|CheckBitmap|ClearErrors|CompletedText|ComponentText|CopyFiles|CRCCheck|CreateDirectory|CreateFont|CreateShortCut|Delete|DeleteINISec|DeleteINIStr|DeleteRegKey|DeleteRegValue|DetailPrint|DetailsButtonText|DirText|DirVar|DirVerify|EnableWindow|EnumRegKey|EnumRegValue|Exch|Exec|ExecShell|ExecWait|ExpandEnvStrings|File|FileBufSize|FileClose|FileErrorText|FileOpen|FileRead|FileReadByte|FileReadUTF16LE|FileReadWord|FileWriteUTF16LE|FileSeek|FileWrite|FileWriteByte|FileWriteWord|FindClose|FindFirst|FindNext|FindWindow|FlushINI|GetCurInstType|GetCurrentAddress|GetDlgItem|GetDLLVersion|GetDLLVersionLocal|GetErrorLevel|GetFileTime|GetFileTimeLocal|GetFullPathName|GetFunctionAddress|GetInstDirError|GetLabelAddress|GetTempFileName|Goto|HideWindow|Icon|IfAbort|IfErrors|IfFileExists|IfRebootFlag|IfSilent|InitPluginsDir|InstallButtonText|InstallColors|InstallDir|InstallDirRegKey|InstProgressFlags|InstType|InstTypeGetText|InstTypeSetText|IntCmp|IntCmpU|IntFmt|IntOp|IsWindow|LangString|LicenseBkColor|LicenseData|LicenseForceSelection|LicenseLangString|LicenseText|LoadLanguageFile|LockWindow|LogSet|LogText|ManifestDPIAware|ManifestSupportedOS|MessageBox|MiscButtonText|Name|Nop|OutFile|Page|PageCallbacks|Pop|Push|Quit|ReadEnvStr|ReadINIStr|ReadRegDWORD|ReadRegStr|Reboot|RegDLL|Rename|RequestExecutionLevel|ReserveFile|Return|RMDir|SearchPath|SectionGetFlags|SectionGetInstTypes|SectionGetSize|SectionGetText|SectionIn|SectionSetFlags|SectionSetInstTypes|SectionSetSize|SectionSetText|SendMessage|SetAutoClose|SetBrandingImage|SetCompress|SetCompressor|SetCompressorDictSize|SetCtlColors|SetCurInstType|SetDatablockOptimize|SetDateSave|SetDetailsPrint|SetDetailsView|SetErrorLevel|SetErrors|SetFileAttributes|SetFont|SetOutPath|SetOverwrite|SetPluginUnload|SetRebootFlag|SetRegView|SetShellVarContext|SetSilent|ShowInstDetails|ShowUninstDetails|ShowWindow|SilentInstall|SilentUnInstall|Sleep|SpaceTexts|StrCmp|StrCmpS|StrCpy|StrLen|SubCaption|Unicode|UninstallButtonText|UninstallCaption|UninstallIcon|UninstallSubCaption|UninstallText|UninstPage|UnRegDLL|Var|VIAddVersionKey|VIFileVersion|VIProductVersion|WindowIcon|WriteINIStr|WriteRegBin|WriteRegDWORD|WriteRegExpandStr|WriteRegStr|WriteUninstaller|XPStyle)\b/, token: "keyword"}, {regex: /\b(?:Function|PageEx|Section(?:Group)?)\b/, token: "keyword", indent: true}, {regex: /\b(?:(Function|PageEx|Section(?:Group)?)End)\b/, token: "keyword", dedent: true}, // Command Options {regex: /\b(?:ARCHIVE|FILE_ATTRIBUTE_ARCHIVE|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_NORMAL|FILE_ATTRIBUTE_OFFLINE|FILE_ATTRIBUTE_READONLY|FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_TEMPORARY|HIDDEN|HKCC|HKCR|HKCU|HKDD|HKEY_CLASSES_ROOT|HKEY_CURRENT_CONFIG|HKEY_CURRENT_USER|HKEY_DYN_DATA|HKEY_LOCAL_MACHINE|HKEY_PERFORMANCE_DATA|HKEY_USERS|HKLM|HKPD|HKU|IDABORT|IDCANCEL|IDD_DIR|IDD_INST|IDD_INSTFILES|IDD_LICENSE|IDD_SELCOM|IDD_UNINST|IDD_VERIFY|IDIGNORE|IDNO|IDOK|IDRETRY|IDYES|MB_ABORTRETRYIGNORE|MB_DEFBUTTON1|MB_DEFBUTTON2|MB_DEFBUTTON3|MB_DEFBUTTON4|MB_ICONEXCLAMATION|MB_ICONINFORMATION|MB_ICONQUESTION|MB_ICONSTOP|MB_OK|MB_OKCANCEL|MB_RETRYCANCEL|MB_RIGHT|MB_RTLREADING|MB_SETFOREGROUND|MB_TOPMOST|MB_USERICON|MB_YESNO|MB_YESNOCANCEL|NORMAL|OFFLINE|READONLY|SHCTX|SHELL_CONTEXT|SW_HIDE|SW_SHOWDEFAULT|SW_SHOWMAXIMIZED|SW_SHOWMINIMIZED|SW_SHOWNORMAL|SYSTEM|TEMPORARY)\b/, token: "atom"}, {regex: /\b(?:admin|all|auto|both|bottom|bzip2|components|current|custom|directory|force|hide|highest|ifdiff|ifnewer|instfiles|lastused|leave|left|license|listonly|lzma|nevershow|none|normal|notset|right|show|silent|silentlog|textonly|top|try|un\.components|un\.custom|un\.directory|un\.instfiles|un\.license|uninstConfirm|user|Win10|Win7|Win8|WinVista|zlib)\b/, token: "builtin"}, // LogicLib.nsh {regex: /\$\{(?:And(?:If(?:Not)?|Unless)|Break|Case(?:Else)?|Continue|Default|Do(?:Until|While)?|Else(?:If(?:Not)?|Unless)?|End(?:If|Select|Switch)|Exit(?:Do|For|While)|For(?:Each)?|If(?:Cmd|Not(?:Then)?|Then)?|Loop(?:Until|While)?|Or(?:If(?:Not)?|Unless)|Select|Switch|Unless|While)\}/, token: "variable-2", indent: true}, // FileFunc.nsh {regex: /\$\{(?:BannerTrimPath|DirState|DriveSpace|Get(BaseName|Drives|ExeName|ExePath|FileAttributes|FileExt|FileName|FileVersion|Options|OptionsS|Parameters|Parent|Root|Size|Time)|Locate|RefreshShellIcons)\}/, token: "variable-2", dedent: true}, // Memento.nsh {regex: /\$\{(?:Memento(?:Section(?:Done|End|Restore|Save)?|UnselectedSection))\}/, token: "variable-2", dedent: true}, // TextFunc.nsh {regex: /\$\{(?:Config(?:Read|ReadS|Write|WriteS)|File(?:Join|ReadFromEnd|Recode)|Line(?:Find|Read|Sum)|Text(?:Compare|CompareS)|TrimNewLines)\}/, token: "variable-2", dedent: true}, // WinVer.nsh {regex: /\$\{(?:(?:At(?:Least|Most)|Is)(?:ServicePack|Win(?:7|8|10|95|98|200(?:0|3|8(?:R2)?)|ME|NT4|Vista|XP))|Is(?:NT|Server))\}/, token: "variable", dedent: true}, // WordFunc.nsh {regex: /\$\{(?:StrFilterS?|Version(?:Compare|Convert)|Word(?:AddS?|Find(?:(?:2|3)X)?S?|InsertS?|ReplaceS?))\}/, token: "variable-2", dedent: true}, // x64.nsh {regex: /\$\{(?:RunningX64)\}/, token: "variable", dedent: true}, {regex: /\$\{(?:Disable|Enable)X64FSRedirection\}/, token: "variable-2", dedent: true}, // Line Comment {regex: /(#|;).*/, token: "comment"}, // Block Comment {regex: /\/\*/, token: "comment", next: "comment"}, // Operator {regex: /[-+\/*=<>!]+/, token: "operator"}, // Variable {regex: /\$[\w]+/, token: "variable"}, // Constant {regex: /\${[\w]+}/,token: "variable-2"}, // Language String {regex: /\$\([\w]+\)/,token: "variable-3"} ], comment: [ {regex: /.*?\*\//, token: "comment", next: "start"}, {regex: /.*/, token: "comment"} ], meta: { electricInput: /^\s*((Function|PageEx|Section|Section(Group)?)End|(\!(endif|macroend))|\$\{(End(If|Unless|While)|Loop(Until)|Next)\})$/, blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: ["#", ";"] } }); CodeMirror.defineMIME("text/x-nsis", "nsis"); }); application/library/codemirror/mode/ntriples/index.html000064400000002515147577724760017476 0ustar00 CodeMirror: NTriples mode

NTriples mode

MIME types defined: text/n-triples.

application/library/codemirror/mode/ntriples/ntriples.js000064400000014763147577724760017707 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /********************************************************** * This script provides syntax highlighting support for * the Ntriples format. * Ntriples format specification: * http://www.w3.org/TR/rdf-testcases/#ntriples ***********************************************************/ /* The following expression defines the defined ASF grammar transitions. pre_subject -> { ( writing_subject_uri | writing_bnode_uri ) -> pre_predicate -> writing_predicate_uri -> pre_object -> writing_object_uri | writing_object_bnode | ( writing_object_literal -> writing_literal_lang | writing_literal_type ) -> post_object -> BEGIN } otherwise { -> ERROR } */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("ntriples", function() { var Location = { PRE_SUBJECT : 0, WRITING_SUB_URI : 1, WRITING_BNODE_URI : 2, PRE_PRED : 3, WRITING_PRED_URI : 4, PRE_OBJ : 5, WRITING_OBJ_URI : 6, WRITING_OBJ_BNODE : 7, WRITING_OBJ_LITERAL : 8, WRITING_LIT_LANG : 9, WRITING_LIT_TYPE : 10, POST_OBJ : 11, ERROR : 12 }; function transitState(currState, c) { var currLocation = currState.location; var ret; // Opening. if (currLocation == Location.PRE_SUBJECT && c == '<') ret = Location.WRITING_SUB_URI; else if(currLocation == Location.PRE_SUBJECT && c == '_') ret = Location.WRITING_BNODE_URI; else if(currLocation == Location.PRE_PRED && c == '<') ret = Location.WRITING_PRED_URI; else if(currLocation == Location.PRE_OBJ && c == '<') ret = Location.WRITING_OBJ_URI; else if(currLocation == Location.PRE_OBJ && c == '_') ret = Location.WRITING_OBJ_BNODE; else if(currLocation == Location.PRE_OBJ && c == '"') ret = Location.WRITING_OBJ_LITERAL; // Closing. else if(currLocation == Location.WRITING_SUB_URI && c == '>') ret = Location.PRE_PRED; else if(currLocation == Location.WRITING_BNODE_URI && c == ' ') ret = Location.PRE_PRED; else if(currLocation == Location.WRITING_PRED_URI && c == '>') ret = Location.PRE_OBJ; else if(currLocation == Location.WRITING_OBJ_URI && c == '>') ret = Location.POST_OBJ; else if(currLocation == Location.WRITING_OBJ_BNODE && c == ' ') ret = Location.POST_OBJ; else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '"') ret = Location.POST_OBJ; else if(currLocation == Location.WRITING_LIT_LANG && c == ' ') ret = Location.POST_OBJ; else if(currLocation == Location.WRITING_LIT_TYPE && c == '>') ret = Location.POST_OBJ; // Closing typed and language literal. else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '@') ret = Location.WRITING_LIT_LANG; else if(currLocation == Location.WRITING_OBJ_LITERAL && c == '^') ret = Location.WRITING_LIT_TYPE; // Spaces. else if( c == ' ' && ( currLocation == Location.PRE_SUBJECT || currLocation == Location.PRE_PRED || currLocation == Location.PRE_OBJ || currLocation == Location.POST_OBJ ) ) ret = currLocation; // Reset. else if(currLocation == Location.POST_OBJ && c == '.') ret = Location.PRE_SUBJECT; // Error else ret = Location.ERROR; currState.location=ret; } return { startState: function() { return { location : Location.PRE_SUBJECT, uris : [], anchors : [], bnodes : [], langs : [], types : [] }; }, token: function(stream, state) { var ch = stream.next(); if(ch == '<') { transitState(state, ch); var parsedURI = ''; stream.eatWhile( function(c) { if( c != '#' && c != '>' ) { parsedURI += c; return true; } return false;} ); state.uris.push(parsedURI); if( stream.match('#', false) ) return 'variable'; stream.next(); transitState(state, '>'); return 'variable'; } if(ch == '#') { var parsedAnchor = ''; stream.eatWhile(function(c) { if(c != '>' && c != ' ') { parsedAnchor+= c; return true; } return false;}); state.anchors.push(parsedAnchor); return 'variable-2'; } if(ch == '>') { transitState(state, '>'); return 'variable'; } if(ch == '_') { transitState(state, ch); var parsedBNode = ''; stream.eatWhile(function(c) { if( c != ' ' ) { parsedBNode += c; return true; } return false;}); state.bnodes.push(parsedBNode); stream.next(); transitState(state, ' '); return 'builtin'; } if(ch == '"') { transitState(state, ch); stream.eatWhile( function(c) { return c != '"'; } ); stream.next(); if( stream.peek() != '@' && stream.peek() != '^' ) { transitState(state, '"'); } return 'string'; } if( ch == '@' ) { transitState(state, '@'); var parsedLang = ''; stream.eatWhile(function(c) { if( c != ' ' ) { parsedLang += c; return true; } return false;}); state.langs.push(parsedLang); stream.next(); transitState(state, ' '); return 'string-2'; } if( ch == '^' ) { stream.next(); transitState(state, '^'); var parsedType = ''; stream.eatWhile(function(c) { if( c != '>' ) { parsedType += c; return true; } return false;} ); state.types.push(parsedType); stream.next(); transitState(state, '>'); return 'variable'; } if( ch == ' ' ) { transitState(state, ch); } if( ch == '.' ) { transitState(state, ch); } } }; }); CodeMirror.defineMIME("text/n-triples", "ntriples"); }); application/library/codemirror/mode/octave/index.html000064400000003415147577724760017117 0ustar00 CodeMirror: Octave mode

Octave mode

MIME types defined: text/x-octave.

application/library/codemirror/mode/octave/octave.js000064400000010557147577724760016746 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("octave", function() { function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b"); } var singleOperators = new RegExp("^[\\+\\-\\*/&|\\^~<>!@'\\\\]"); var singleDelimiters = new RegExp('^[\\(\\[\\{\\},:=;]'); var doubleOperators = new RegExp("^((==)|(~=)|(<=)|(>=)|(<<)|(>>)|(\\.[\\+\\-\\*/\\^\\\\]))"); var doubleDelimiters = new RegExp("^((!=)|(\\+=)|(\\-=)|(\\*=)|(/=)|(&=)|(\\|=)|(\\^=))"); var tripleDelimiters = new RegExp("^((>>=)|(<<=))"); var expressionEnd = new RegExp("^[\\]\\)]"); var identifiers = new RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*"); var builtins = wordRegexp([ 'error', 'eval', 'function', 'abs', 'acos', 'atan', 'asin', 'cos', 'cosh', 'exp', 'log', 'prod', 'sum', 'log10', 'max', 'min', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'reshape', 'break', 'zeros', 'default', 'margin', 'round', 'ones', 'rand', 'syn', 'ceil', 'floor', 'size', 'clear', 'zeros', 'eye', 'mean', 'std', 'cov', 'det', 'eig', 'inv', 'norm', 'rank', 'trace', 'expm', 'logm', 'sqrtm', 'linspace', 'plot', 'title', 'xlabel', 'ylabel', 'legend', 'text', 'grid', 'meshgrid', 'mesh', 'num2str', 'fft', 'ifft', 'arrayfun', 'cellfun', 'input', 'fliplr', 'flipud', 'ismember' ]); var keywords = wordRegexp([ 'return', 'case', 'switch', 'else', 'elseif', 'end', 'endif', 'endfunction', 'if', 'otherwise', 'do', 'for', 'while', 'try', 'catch', 'classdef', 'properties', 'events', 'methods', 'global', 'persistent', 'endfor', 'endwhile', 'printf', 'sprintf', 'disp', 'until', 'continue', 'pkg' ]); // tokenizers function tokenTranspose(stream, state) { if (!stream.sol() && stream.peek() === '\'') { stream.next(); state.tokenize = tokenBase; return 'operator'; } state.tokenize = tokenBase; return tokenBase(stream, state); } function tokenComment(stream, state) { if (stream.match(/^.*%}/)) { state.tokenize = tokenBase; return 'comment'; }; stream.skipToEnd(); return 'comment'; } function tokenBase(stream, state) { // whitespaces if (stream.eatSpace()) return null; // Handle one line Comments if (stream.match('%{')){ state.tokenize = tokenComment; stream.skipToEnd(); return 'comment'; } if (stream.match(/^[%#]/)){ stream.skipToEnd(); return 'comment'; } // Handle Number Literals if (stream.match(/^[0-9\.+-]/, false)) { if (stream.match(/^[+-]?0x[0-9a-fA-F]+[ij]?/)) { stream.tokenize = tokenBase; return 'number'; }; if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?[ij]?/)) { return 'number'; }; if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?[ij]?/)) { return 'number'; }; } if (stream.match(wordRegexp(['nan','NaN','inf','Inf']))) { return 'number'; }; // Handle Strings if (stream.match(/^"([^"]|(""))*"/)) { return 'string'; } ; if (stream.match(/^'([^']|(''))*'/)) { return 'string'; } ; // Handle words if (stream.match(keywords)) { return 'keyword'; } ; if (stream.match(builtins)) { return 'builtin'; } ; if (stream.match(identifiers)) { return 'variable'; } ; if (stream.match(singleOperators) || stream.match(doubleOperators)) { return 'operator'; }; if (stream.match(singleDelimiters) || stream.match(doubleDelimiters) || stream.match(tripleDelimiters)) { return null; }; if (stream.match(expressionEnd)) { state.tokenize = tokenTranspose; return null; }; // Handle non-detected items stream.next(); return 'error'; }; return { startState: function() { return { tokenize: tokenBase }; }, token: function(stream, state) { var style = state.tokenize(stream, state); if (style === 'number' || style === 'variable'){ state.tokenize = tokenTranspose; } return style; } }; }); CodeMirror.defineMIME("text/x-octave", "octave"); }); application/library/codemirror/mode/oz/index.html000064400000002555147577724760016272 0ustar00 CodeMirror: Oz mode

Oz mode

MIME type defined: text/x-oz.

application/library/codemirror/mode/oz/oz.js000064400000015002147577724760015252 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("oz", function (conf) { function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b"); } var singleOperators = /[\^@!\|<>#~\.\*\-\+\\/,=]/; var doubleOperators = /(<-)|(:=)|(=<)|(>=)|(<=)|(<:)|(>:)|(=:)|(\\=)|(\\=:)|(!!)|(==)|(::)/; var tripleOperators = /(:::)|(\.\.\.)|(=<:)|(>=:)/; var middle = ["in", "then", "else", "of", "elseof", "elsecase", "elseif", "catch", "finally", "with", "require", "prepare", "import", "export", "define", "do"]; var end = ["end"]; var atoms = wordRegexp(["true", "false", "nil", "unit"]); var commonKeywords = wordRegexp(["andthen", "at", "attr", "declare", "feat", "from", "lex", "mod", "mode", "orelse", "parser", "prod", "prop", "scanner", "self", "syn", "token"]); var openingKeywords = wordRegexp(["local", "proc", "fun", "case", "class", "if", "cond", "or", "dis", "choice", "not", "thread", "try", "raise", "lock", "for", "suchthat", "meth", "functor"]); var middleKeywords = wordRegexp(middle); var endKeywords = wordRegexp(end); // Tokenizers function tokenBase(stream, state) { if (stream.eatSpace()) { return null; } // Brackets if(stream.match(/[{}]/)) { return "bracket"; } // Special [] keyword if (stream.match(/(\[])/)) { return "keyword" } // Operators if (stream.match(tripleOperators) || stream.match(doubleOperators)) { return "operator"; } // Atoms if(stream.match(atoms)) { return 'atom'; } // Opening keywords var matched = stream.match(openingKeywords); if (matched) { if (!state.doInCurrentLine) state.currentIndent++; else state.doInCurrentLine = false; // Special matching for signatures if(matched[0] == "proc" || matched[0] == "fun") state.tokenize = tokenFunProc; else if(matched[0] == "class") state.tokenize = tokenClass; else if(matched[0] == "meth") state.tokenize = tokenMeth; return 'keyword'; } // Middle and other keywords if (stream.match(middleKeywords) || stream.match(commonKeywords)) { return "keyword" } // End keywords if (stream.match(endKeywords)) { state.currentIndent--; return 'keyword'; } // Eat the next char for next comparisons var ch = stream.next(); // Strings if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } // Numbers if (/[~\d]/.test(ch)) { if (ch == "~") { if(! /^[0-9]/.test(stream.peek())) return null; else if (( stream.next() == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) || stream.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/)) return "number"; } if ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) || stream.match(/^[0-9]*(\.[0-9]+)?([eE][~+]?[0-9]+)?/)) return "number"; return null; } // Comments if (ch == "%") { stream.skipToEnd(); return 'comment'; } else if (ch == "/") { if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } } // Single operators if(singleOperators.test(ch)) { return "operator"; } // If nothing match, we skip the entire alphanumerical block stream.eatWhile(/\w/); return "variable"; } function tokenClass(stream, state) { if (stream.eatSpace()) { return null; } stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)/); state.tokenize = tokenBase; return "variable-3" } function tokenMeth(stream, state) { if (stream.eatSpace()) { return null; } stream.match(/([a-zA-Z][A-Za-z0-9_]*)|(`.+`)/); state.tokenize = tokenBase; return "def" } function tokenFunProc(stream, state) { if (stream.eatSpace()) { return null; } if(!state.hasPassedFirstStage && stream.eat("{")) { state.hasPassedFirstStage = true; return "bracket"; } else if(state.hasPassedFirstStage) { stream.match(/([A-Z][A-Za-z0-9_]*)|(`.+`)|\$/); state.hasPassedFirstStage = false; state.tokenize = tokenBase; return "def" } else { state.tokenize = tokenBase; return null; } } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function tokenString(quote) { return function (stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) { end = true; break; } escaped = !escaped && next == "\\"; } if (end || !escaped) state.tokenize = tokenBase; return "string"; }; } function buildElectricInputRegEx() { // Reindentation should occur on [] or on a match of any of // the block closing keywords, at the end of a line. var allClosings = middle.concat(end); return new RegExp("[\\[\\]]|(" + allClosings.join("|") + ")$"); } return { startState: function () { return { tokenize: tokenBase, currentIndent: 0, doInCurrentLine: false, hasPassedFirstStage: false }; }, token: function (stream, state) { if (stream.sol()) state.doInCurrentLine = 0; return state.tokenize(stream, state); }, indent: function (state, textAfter) { var trueText = textAfter.replace(/^\s+|\s+$/g, ''); if (trueText.match(endKeywords) || trueText.match(middleKeywords) || trueText.match(/(\[])/)) return conf.indentUnit * (state.currentIndent - 1); if (state.currentIndent < 0) return 0; return state.currentIndent * conf.indentUnit; }, fold: "indent", electricInput: buildElectricInputRegEx(), lineComment: "%", blockCommentStart: "/*", blockCommentEnd: "*/" }; }); CodeMirror.defineMIME("text/x-oz", "oz"); }); application/library/codemirror/mode/pascal/index.html000064400000002640147577724760017100 0ustar00 CodeMirror: Pascal mode

Pascal mode

MIME types defined: text/x-pascal.

application/library/codemirror/mode/pascal/pascal.js000064400000005757147577724760016720 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("pascal", function() { function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var keywords = words("and array begin case const div do downto else end file for forward integer " + "boolean char function goto if in label mod nil not of or packed procedure " + "program record repeat set string then to type until var while with"); var atoms = {"null": true}; var isOperatorChar = /[+\-*&%=<>!?|\/]/; function tokenBase(stream, state) { var ch = stream.next(); if (ch == "#" && state.startOfLine) { stream.skipToEnd(); return "meta"; } if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (ch == "(" && stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (/[\[\]{}\(\),;\:\.]/.test(ch)) { return null; } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } if (ch == "/") { if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\$_]/); var cur = stream.current(); if (keywords.propertyIsEnumerable(cur)) return "keyword"; if (atoms.propertyIsEnumerable(cur)) return "atom"; return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) {end = true; break;} escaped = !escaped && next == "\\"; } if (end || !escaped) state.tokenize = null; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == ")" && maybeEnd) { state.tokenize = null; break; } maybeEnd = (ch == "*"); } return "comment"; } // Interface return { startState: function() { return {tokenize: null}; }, token: function(stream, state) { if (stream.eatSpace()) return null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment" || style == "meta") return style; return style; }, electricChars: "{}" }; }); CodeMirror.defineMIME("text/x-pascal", "pascal"); }); application/library/codemirror/mode/pegjs/index.html000064400000003542147577724760016747 0ustar00 CodeMirror: PEG.js Mode

PEG.js Mode

The PEG.js Mode

Created by Forbes Lindesay.

application/library/codemirror/mode/pegjs/pegjs.js000064400000006771147577724760016427 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../javascript/javascript")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../javascript/javascript"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("pegjs", function (config) { var jsMode = CodeMirror.getMode(config, "javascript"); function identifier(stream) { return stream.match(/^[a-zA-Z_][a-zA-Z0-9_]*/); } return { startState: function () { return { inString: false, stringType: null, inComment: false, inCharacterClass: false, braced: 0, lhs: true, localState: null }; }, token: function (stream, state) { if (stream) //check for state changes if (!state.inString && !state.inComment && ((stream.peek() == '"') || (stream.peek() == "'"))) { state.stringType = stream.peek(); stream.next(); // Skip quote state.inString = true; // Update state } if (!state.inString && !state.inComment && stream.match(/^\/\*/)) { state.inComment = true; } //return state if (state.inString) { while (state.inString && !stream.eol()) { if (stream.peek() === state.stringType) { stream.next(); // Skip quote state.inString = false; // Clear flag } else if (stream.peek() === '\\') { stream.next(); stream.next(); } else { stream.match(/^.[^\\\"\']*/); } } return state.lhs ? "property string" : "string"; // Token style } else if (state.inComment) { while (state.inComment && !stream.eol()) { if (stream.match(/\*\//)) { state.inComment = false; // Clear flag } else { stream.match(/^.[^\*]*/); } } return "comment"; } else if (state.inCharacterClass) { while (state.inCharacterClass && !stream.eol()) { if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) { state.inCharacterClass = false; } } } else if (stream.peek() === '[') { stream.next(); state.inCharacterClass = true; return 'bracket'; } else if (stream.match(/^\/\//)) { stream.skipToEnd(); return "comment"; } else if (state.braced || stream.peek() === '{') { if (state.localState === null) { state.localState = CodeMirror.startState(jsMode); } var token = jsMode.token(stream, state.localState); var text = stream.current(); if (!token) { for (var i = 0; i < text.length; i++) { if (text[i] === '{') { state.braced++; } else if (text[i] === '}') { state.braced--; } }; } return token; } else if (identifier(stream)) { if (stream.peek() === ':') { return 'variable'; } return 'variable-2'; } else if (['[', ']', '(', ')'].indexOf(stream.peek()) != -1) { stream.next(); return 'bracket'; } else if (!stream.eatSpace()) { stream.next(); } return null; } }; }, "javascript"); }); application/library/codemirror/mode/perl/perl.js000064400000155507147577724760016115 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // CodeMirror2 mode/perl/perl.js (text/x-perl) beta 0.10 (2011-11-08) // This is a part of CodeMirror from https://github.com/sabaca/CodeMirror_mode_perl (mail@sabaca.com) (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("perl",function(){ // http://perldoc.perl.org var PERL={ // null - magic touch // 1 - keyword // 2 - def // 3 - atom // 4 - operator // 5 - variable-2 (predefined) // [x,y] - x=1,2,3; y=must be defined if x{...} // PERL operators '->' : 4, '++' : 4, '--' : 4, '**' : 4, // ! ~ \ and unary + and - '=~' : 4, '!~' : 4, '*' : 4, '/' : 4, '%' : 4, 'x' : 4, '+' : 4, '-' : 4, '.' : 4, '<<' : 4, '>>' : 4, // named unary operators '<' : 4, '>' : 4, '<=' : 4, '>=' : 4, 'lt' : 4, 'gt' : 4, 'le' : 4, 'ge' : 4, '==' : 4, '!=' : 4, '<=>' : 4, 'eq' : 4, 'ne' : 4, 'cmp' : 4, '~~' : 4, '&' : 4, '|' : 4, '^' : 4, '&&' : 4, '||' : 4, '//' : 4, '..' : 4, '...' : 4, '?' : 4, ':' : 4, '=' : 4, '+=' : 4, '-=' : 4, '*=' : 4, // etc. ??? ',' : 4, '=>' : 4, '::' : 4, // list operators (rightward) 'not' : 4, 'and' : 4, 'or' : 4, 'xor' : 4, // PERL predefined variables (I know, what this is a paranoid idea, but may be needed for people, who learn PERL, and for me as well, ...and may be for you?;) 'BEGIN' : [5,1], 'END' : [5,1], 'PRINT' : [5,1], 'PRINTF' : [5,1], 'GETC' : [5,1], 'READ' : [5,1], 'READLINE' : [5,1], 'DESTROY' : [5,1], 'TIE' : [5,1], 'TIEHANDLE' : [5,1], 'UNTIE' : [5,1], 'STDIN' : 5, 'STDIN_TOP' : 5, 'STDOUT' : 5, 'STDOUT_TOP' : 5, 'STDERR' : 5, 'STDERR_TOP' : 5, '$ARG' : 5, '$_' : 5, '@ARG' : 5, '@_' : 5, '$LIST_SEPARATOR' : 5, '$"' : 5, '$PROCESS_ID' : 5, '$PID' : 5, '$$' : 5, '$REAL_GROUP_ID' : 5, '$GID' : 5, '$(' : 5, '$EFFECTIVE_GROUP_ID' : 5, '$EGID' : 5, '$)' : 5, '$PROGRAM_NAME' : 5, '$0' : 5, '$SUBSCRIPT_SEPARATOR' : 5, '$SUBSEP' : 5, '$;' : 5, '$REAL_USER_ID' : 5, '$UID' : 5, '$<' : 5, '$EFFECTIVE_USER_ID' : 5, '$EUID' : 5, '$>' : 5, '$a' : 5, '$b' : 5, '$COMPILING' : 5, '$^C' : 5, '$DEBUGGING' : 5, '$^D' : 5, '${^ENCODING}' : 5, '$ENV' : 5, '%ENV' : 5, '$SYSTEM_FD_MAX' : 5, '$^F' : 5, '@F' : 5, '${^GLOBAL_PHASE}' : 5, '$^H' : 5, '%^H' : 5, '@INC' : 5, '%INC' : 5, '$INPLACE_EDIT' : 5, '$^I' : 5, '$^M' : 5, '$OSNAME' : 5, '$^O' : 5, '${^OPEN}' : 5, '$PERLDB' : 5, '$^P' : 5, '$SIG' : 5, '%SIG' : 5, '$BASETIME' : 5, '$^T' : 5, '${^TAINT}' : 5, '${^UNICODE}' : 5, '${^UTF8CACHE}' : 5, '${^UTF8LOCALE}' : 5, '$PERL_VERSION' : 5, '$^V' : 5, '${^WIN32_SLOPPY_STAT}' : 5, '$EXECUTABLE_NAME' : 5, '$^X' : 5, '$1' : 5, // - regexp $1, $2... '$MATCH' : 5, '$&' : 5, '${^MATCH}' : 5, '$PREMATCH' : 5, '$`' : 5, '${^PREMATCH}' : 5, '$POSTMATCH' : 5, "$'" : 5, '${^POSTMATCH}' : 5, '$LAST_PAREN_MATCH' : 5, '$+' : 5, '$LAST_SUBMATCH_RESULT' : 5, '$^N' : 5, '@LAST_MATCH_END' : 5, '@+' : 5, '%LAST_PAREN_MATCH' : 5, '%+' : 5, '@LAST_MATCH_START' : 5, '@-' : 5, '%LAST_MATCH_START' : 5, '%-' : 5, '$LAST_REGEXP_CODE_RESULT' : 5, '$^R' : 5, '${^RE_DEBUG_FLAGS}' : 5, '${^RE_TRIE_MAXBUF}' : 5, '$ARGV' : 5, '@ARGV' : 5, 'ARGV' : 5, 'ARGVOUT' : 5, '$OUTPUT_FIELD_SEPARATOR' : 5, '$OFS' : 5, '$,' : 5, '$INPUT_LINE_NUMBER' : 5, '$NR' : 5, '$.' : 5, '$INPUT_RECORD_SEPARATOR' : 5, '$RS' : 5, '$/' : 5, '$OUTPUT_RECORD_SEPARATOR' : 5, '$ORS' : 5, '$\\' : 5, '$OUTPUT_AUTOFLUSH' : 5, '$|' : 5, '$ACCUMULATOR' : 5, '$^A' : 5, '$FORMAT_FORMFEED' : 5, '$^L' : 5, '$FORMAT_PAGE_NUMBER' : 5, '$%' : 5, '$FORMAT_LINES_LEFT' : 5, '$-' : 5, '$FORMAT_LINE_BREAK_CHARACTERS' : 5, '$:' : 5, '$FORMAT_LINES_PER_PAGE' : 5, '$=' : 5, '$FORMAT_TOP_NAME' : 5, '$^' : 5, '$FORMAT_NAME' : 5, '$~' : 5, '${^CHILD_ERROR_NATIVE}' : 5, '$EXTENDED_OS_ERROR' : 5, '$^E' : 5, '$EXCEPTIONS_BEING_CAUGHT' : 5, '$^S' : 5, '$WARNING' : 5, '$^W' : 5, '${^WARNING_BITS}' : 5, '$OS_ERROR' : 5, '$ERRNO' : 5, '$!' : 5, '%OS_ERROR' : 5, '%ERRNO' : 5, '%!' : 5, '$CHILD_ERROR' : 5, '$?' : 5, '$EVAL_ERROR' : 5, '$@' : 5, '$OFMT' : 5, '$#' : 5, '$*' : 5, '$ARRAY_BASE' : 5, '$[' : 5, '$OLD_PERL_VERSION' : 5, '$]' : 5, // PERL blocks 'if' :[1,1], elsif :[1,1], 'else' :[1,1], 'while' :[1,1], unless :[1,1], 'for' :[1,1], foreach :[1,1], // PERL functions 'abs' :1, // - absolute value function accept :1, // - accept an incoming socket connect alarm :1, // - schedule a SIGALRM 'atan2' :1, // - arctangent of Y/X in the range -PI to PI bind :1, // - binds an address to a socket binmode :1, // - prepare binary files for I/O bless :1, // - create an object bootstrap :1, // 'break' :1, // - break out of a "given" block caller :1, // - get context of the current subroutine call chdir :1, // - change your current working directory chmod :1, // - changes the permissions on a list of files chomp :1, // - remove a trailing record separator from a string chop :1, // - remove the last character from a string chown :1, // - change the ownership on a list of files chr :1, // - get character this number represents chroot :1, // - make directory new root for path lookups close :1, // - close file (or pipe or socket) handle closedir :1, // - close directory handle connect :1, // - connect to a remote socket 'continue' :[1,1], // - optional trailing block in a while or foreach 'cos' :1, // - cosine function crypt :1, // - one-way passwd-style encryption dbmclose :1, // - breaks binding on a tied dbm file dbmopen :1, // - create binding on a tied dbm file 'default' :1, // defined :1, // - test whether a value, variable, or function is defined 'delete' :1, // - deletes a value from a hash die :1, // - raise an exception or bail out 'do' :1, // - turn a BLOCK into a TERM dump :1, // - create an immediate core dump each :1, // - retrieve the next key/value pair from a hash endgrent :1, // - be done using group file endhostent :1, // - be done using hosts file endnetent :1, // - be done using networks file endprotoent :1, // - be done using protocols file endpwent :1, // - be done using passwd file endservent :1, // - be done using services file eof :1, // - test a filehandle for its end 'eval' :1, // - catch exceptions or compile and run code 'exec' :1, // - abandon this program to run another exists :1, // - test whether a hash key is present exit :1, // - terminate this program 'exp' :1, // - raise I to a power fcntl :1, // - file control system call fileno :1, // - return file descriptor from filehandle flock :1, // - lock an entire file with an advisory lock fork :1, // - create a new process just like this one format :1, // - declare a picture format with use by the write() function formline :1, // - internal function used for formats getc :1, // - get the next character from the filehandle getgrent :1, // - get next group record getgrgid :1, // - get group record given group user ID getgrnam :1, // - get group record given group name gethostbyaddr :1, // - get host record given its address gethostbyname :1, // - get host record given name gethostent :1, // - get next hosts record getlogin :1, // - return who logged in at this tty getnetbyaddr :1, // - get network record given its address getnetbyname :1, // - get networks record given name getnetent :1, // - get next networks record getpeername :1, // - find the other end of a socket connection getpgrp :1, // - get process group getppid :1, // - get parent process ID getpriority :1, // - get current nice value getprotobyname :1, // - get protocol record given name getprotobynumber :1, // - get protocol record numeric protocol getprotoent :1, // - get next protocols record getpwent :1, // - get next passwd record getpwnam :1, // - get passwd record given user login name getpwuid :1, // - get passwd record given user ID getservbyname :1, // - get services record given its name getservbyport :1, // - get services record given numeric port getservent :1, // - get next services record getsockname :1, // - retrieve the sockaddr for a given socket getsockopt :1, // - get socket options on a given socket given :1, // glob :1, // - expand filenames using wildcards gmtime :1, // - convert UNIX time into record or string using Greenwich time 'goto' :1, // - create spaghetti code grep :1, // - locate elements in a list test true against a given criterion hex :1, // - convert a string to a hexadecimal number 'import' :1, // - patch a module's namespace into your own index :1, // - find a substring within a string 'int' :1, // - get the integer portion of a number ioctl :1, // - system-dependent device control system call 'join' :1, // - join a list into a string using a separator keys :1, // - retrieve list of indices from a hash kill :1, // - send a signal to a process or process group last :1, // - exit a block prematurely lc :1, // - return lower-case version of a string lcfirst :1, // - return a string with just the next letter in lower case length :1, // - return the number of bytes in a string 'link' :1, // - create a hard link in the filesytem listen :1, // - register your socket as a server local : 2, // - create a temporary value for a global variable (dynamic scoping) localtime :1, // - convert UNIX time into record or string using local time lock :1, // - get a thread lock on a variable, subroutine, or method 'log' :1, // - retrieve the natural logarithm for a number lstat :1, // - stat a symbolic link m :null, // - match a string with a regular expression pattern map :1, // - apply a change to a list to get back a new list with the changes mkdir :1, // - create a directory msgctl :1, // - SysV IPC message control operations msgget :1, // - get SysV IPC message queue msgrcv :1, // - receive a SysV IPC message from a message queue msgsnd :1, // - send a SysV IPC message to a message queue my : 2, // - declare and assign a local variable (lexical scoping) 'new' :1, // next :1, // - iterate a block prematurely no :1, // - unimport some module symbols or semantics at compile time oct :1, // - convert a string to an octal number open :1, // - open a file, pipe, or descriptor opendir :1, // - open a directory ord :1, // - find a character's numeric representation our : 2, // - declare and assign a package variable (lexical scoping) pack :1, // - convert a list into a binary representation 'package' :1, // - declare a separate global namespace pipe :1, // - open a pair of connected filehandles pop :1, // - remove the last element from an array and return it pos :1, // - find or set the offset for the last/next m//g search print :1, // - output a list to a filehandle printf :1, // - output a formatted list to a filehandle prototype :1, // - get the prototype (if any) of a subroutine push :1, // - append one or more elements to an array q :null, // - singly quote a string qq :null, // - doubly quote a string qr :null, // - Compile pattern quotemeta :null, // - quote regular expression magic characters qw :null, // - quote a list of words qx :null, // - backquote quote a string rand :1, // - retrieve the next pseudorandom number read :1, // - fixed-length buffered input from a filehandle readdir :1, // - get a directory from a directory handle readline :1, // - fetch a record from a file readlink :1, // - determine where a symbolic link is pointing readpipe :1, // - execute a system command and collect standard output recv :1, // - receive a message over a Socket redo :1, // - start this loop iteration over again ref :1, // - find out the type of thing being referenced rename :1, // - change a filename require :1, // - load in external functions from a library at runtime reset :1, // - clear all variables of a given name 'return' :1, // - get out of a function early reverse :1, // - flip a string or a list rewinddir :1, // - reset directory handle rindex :1, // - right-to-left substring search rmdir :1, // - remove a directory s :null, // - replace a pattern with a string say :1, // - print with newline scalar :1, // - force a scalar context seek :1, // - reposition file pointer for random-access I/O seekdir :1, // - reposition directory pointer select :1, // - reset default output or do I/O multiplexing semctl :1, // - SysV semaphore control operations semget :1, // - get set of SysV semaphores semop :1, // - SysV semaphore operations send :1, // - send a message over a socket setgrent :1, // - prepare group file for use sethostent :1, // - prepare hosts file for use setnetent :1, // - prepare networks file for use setpgrp :1, // - set the process group of a process setpriority :1, // - set a process's nice value setprotoent :1, // - prepare protocols file for use setpwent :1, // - prepare passwd file for use setservent :1, // - prepare services file for use setsockopt :1, // - set some socket options shift :1, // - remove the first element of an array, and return it shmctl :1, // - SysV shared memory operations shmget :1, // - get SysV shared memory segment identifier shmread :1, // - read SysV shared memory shmwrite :1, // - write SysV shared memory shutdown :1, // - close down just half of a socket connection 'sin' :1, // - return the sine of a number sleep :1, // - block for some number of seconds socket :1, // - create a socket socketpair :1, // - create a pair of sockets 'sort' :1, // - sort a list of values splice :1, // - add or remove elements anywhere in an array 'split' :1, // - split up a string using a regexp delimiter sprintf :1, // - formatted print into a string 'sqrt' :1, // - square root function srand :1, // - seed the random number generator stat :1, // - get a file's status information state :1, // - declare and assign a state variable (persistent lexical scoping) study :1, // - optimize input data for repeated searches 'sub' :1, // - declare a subroutine, possibly anonymously 'substr' :1, // - get or alter a portion of a stirng symlink :1, // - create a symbolic link to a file syscall :1, // - execute an arbitrary system call sysopen :1, // - open a file, pipe, or descriptor sysread :1, // - fixed-length unbuffered input from a filehandle sysseek :1, // - position I/O pointer on handle used with sysread and syswrite system :1, // - run a separate program syswrite :1, // - fixed-length unbuffered output to a filehandle tell :1, // - get current seekpointer on a filehandle telldir :1, // - get current seekpointer on a directory handle tie :1, // - bind a variable to an object class tied :1, // - get a reference to the object underlying a tied variable time :1, // - return number of seconds since 1970 times :1, // - return elapsed time for self and child processes tr :null, // - transliterate a string truncate :1, // - shorten a file uc :1, // - return upper-case version of a string ucfirst :1, // - return a string with just the next letter in upper case umask :1, // - set file creation mode mask undef :1, // - remove a variable or function definition unlink :1, // - remove one link to a file unpack :1, // - convert binary structure into normal perl variables unshift :1, // - prepend more elements to the beginning of a list untie :1, // - break a tie binding to a variable use :1, // - load in a module at compile time utime :1, // - set a file's last access and modify times values :1, // - return a list of the values in a hash vec :1, // - test or set particular bits in a string wait :1, // - wait for any child process to die waitpid :1, // - wait for a particular child process to die wantarray :1, // - get void vs scalar vs list context of current subroutine call warn :1, // - print debugging info when :1, // write :1, // - print a picture record y :null}; // - transliterate a string var RXstyle="string-2"; var RXmodifiers=/[goseximacplud]/; // NOTE: "m", "s", "y" and "tr" need to correct real modifiers for each regexp type function tokenChain(stream,state,chain,style,tail){ // NOTE: chain.length > 2 is not working now (it's for s[...][...]geos;) state.chain=null; // 12 3tail state.style=null; state.tail=null; state.tokenize=function(stream,state){ var e=false,c,i=0; while(c=stream.next()){ if(c===chain[i]&&!e){ if(chain[++i]!==undefined){ state.chain=chain[i]; state.style=style; state.tail=tail;} else if(tail) stream.eatWhile(tail); state.tokenize=tokenPerl; return style;} e=!e&&c=="\\";} return style;}; return state.tokenize(stream,state);} function tokenSOMETHING(stream,state,string){ state.tokenize=function(stream,state){ if(stream.string==string) state.tokenize=tokenPerl; stream.skipToEnd(); return "string";}; return state.tokenize(stream,state);} function tokenPerl(stream,state){ if(stream.eatSpace()) return null; if(state.chain) return tokenChain(stream,state,state.chain,state.style,state.tail); if(stream.match(/^\-?[\d\.]/,false)) if(stream.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/)) return 'number'; if(stream.match(/^<<(?=\w)/)){ // NOTE: <"],RXstyle,RXmodifiers);} if(/[\^'"!~\/]/.test(c)){ eatSuffix(stream, 1); return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}} else if(c=="q"){ c=look(stream, 1); if(c=="("){ eatSuffix(stream, 2); return tokenChain(stream,state,[")"],"string");} if(c=="["){ eatSuffix(stream, 2); return tokenChain(stream,state,["]"],"string");} if(c=="{"){ eatSuffix(stream, 2); return tokenChain(stream,state,["}"],"string");} if(c=="<"){ eatSuffix(stream, 2); return tokenChain(stream,state,[">"],"string");} if(/[\^'"!~\/]/.test(c)){ eatSuffix(stream, 1); return tokenChain(stream,state,[stream.eat(c)],"string");}} else if(c=="w"){ c=look(stream, 1); if(c=="("){ eatSuffix(stream, 2); return tokenChain(stream,state,[")"],"bracket");} if(c=="["){ eatSuffix(stream, 2); return tokenChain(stream,state,["]"],"bracket");} if(c=="{"){ eatSuffix(stream, 2); return tokenChain(stream,state,["}"],"bracket");} if(c=="<"){ eatSuffix(stream, 2); return tokenChain(stream,state,[">"],"bracket");} if(/[\^'"!~\/]/.test(c)){ eatSuffix(stream, 1); return tokenChain(stream,state,[stream.eat(c)],"bracket");}} else if(c=="r"){ c=look(stream, 1); if(c=="("){ eatSuffix(stream, 2); return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);} if(c=="["){ eatSuffix(stream, 2); return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);} if(c=="{"){ eatSuffix(stream, 2); return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);} if(c=="<"){ eatSuffix(stream, 2); return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);} if(/[\^'"!~\/]/.test(c)){ eatSuffix(stream, 1); return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}} else if(/[\^'"!~\/(\[{<]/.test(c)){ if(c=="("){ eatSuffix(stream, 1); return tokenChain(stream,state,[")"],"string");} if(c=="["){ eatSuffix(stream, 1); return tokenChain(stream,state,["]"],"string");} if(c=="{"){ eatSuffix(stream, 1); return tokenChain(stream,state,["}"],"string");} if(c=="<"){ eatSuffix(stream, 1); return tokenChain(stream,state,[">"],"string");} if(/[\^'"!~\/]/.test(c)){ return tokenChain(stream,state,[stream.eat(c)],"string");}}}} if(ch=="m"){ var c=look(stream, -2); if(!(c&&/\w/.test(c))){ c=stream.eat(/[(\[{<\^'"!~\/]/); if(c){ if(/[\^'"!~\/]/.test(c)){ return tokenChain(stream,state,[c],RXstyle,RXmodifiers);} if(c=="("){ return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);} if(c=="["){ return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);} if(c=="{"){ return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);} if(c=="<"){ return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}}}} if(ch=="s"){ var c=/[\/>\]})\w]/.test(look(stream, -2)); if(!c){ c=stream.eat(/[(\[{<\^'"!~\/]/); if(c){ if(c=="[") return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); if(c=="{") return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); if(c=="<") return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); if(c=="(") return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}} if(ch=="y"){ var c=/[\/>\]})\w]/.test(look(stream, -2)); if(!c){ c=stream.eat(/[(\[{<\^'"!~\/]/); if(c){ if(c=="[") return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); if(c=="{") return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); if(c=="<") return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); if(c=="(") return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}} if(ch=="t"){ var c=/[\/>\]})\w]/.test(look(stream, -2)); if(!c){ c=stream.eat("r");if(c){ c=stream.eat(/[(\[{<\^'"!~\/]/); if(c){ if(c=="[") return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers); if(c=="{") return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers); if(c=="<") return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers); if(c=="(") return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers); return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}} if(ch=="`"){ return tokenChain(stream,state,[ch],"variable-2");} if(ch=="/"){ if(!/~\s*$/.test(prefix(stream))) return "operator"; else return tokenChain(stream,state,[ch],RXstyle,RXmodifiers);} if(ch=="$"){ var p=stream.pos; if(stream.eatWhile(/\d/)||stream.eat("{")&&stream.eatWhile(/\d/)&&stream.eat("}")) return "variable-2"; else stream.pos=p;} if(/[$@%]/.test(ch)){ var p=stream.pos; if(stream.eat("^")&&stream.eat(/[A-Z]/)||!/[@$%&]/.test(look(stream, -2))&&stream.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){ var c=stream.current(); if(PERL[c]) return "variable-2";} stream.pos=p;} if(/[$@%&]/.test(ch)){ if(stream.eatWhile(/[\w$\[\]]/)||stream.eat("{")&&stream.eatWhile(/[\w$\[\]]/)&&stream.eat("}")){ var c=stream.current(); if(PERL[c]) return "variable-2"; else return "variable";}} if(ch=="#"){ if(look(stream, -2)!="$"){ stream.skipToEnd(); return "comment";}} if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(ch)){ var p=stream.pos; stream.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/); if(PERL[stream.current()]) return "operator"; else stream.pos=p;} if(ch=="_"){ if(stream.pos==1){ if(suffix(stream, 6)=="_END__"){ return tokenChain(stream,state,['\0'],"comment");} else if(suffix(stream, 7)=="_DATA__"){ return tokenChain(stream,state,['\0'],"variable-2");} else if(suffix(stream, 7)=="_C__"){ return tokenChain(stream,state,['\0'],"string");}}} if(/\w/.test(ch)){ var p=stream.pos; if(look(stream, -2)=="{"&&(look(stream, 0)=="}"||stream.eatWhile(/\w/)&&look(stream, 0)=="}")) return "string"; else stream.pos=p;} if(/[A-Z]/.test(ch)){ var l=look(stream, -2); var p=stream.pos; stream.eatWhile(/[A-Z_]/); if(/[\da-z]/.test(look(stream, 0))){ stream.pos=p;} else{ var c=PERL[stream.current()]; if(!c) return "meta"; if(c[1]) c=c[0]; if(l!=":"){ if(c==1) return "keyword"; else if(c==2) return "def"; else if(c==3) return "atom"; else if(c==4) return "operator"; else if(c==5) return "variable-2"; else return "meta";} else return "meta";}} if(/[a-zA-Z_]/.test(ch)){ var l=look(stream, -2); stream.eatWhile(/\w/); var c=PERL[stream.current()]; if(!c) return "meta"; if(c[1]) c=c[0]; if(l!=":"){ if(c==1) return "keyword"; else if(c==2) return "def"; else if(c==3) return "atom"; else if(c==4) return "operator"; else if(c==5) return "variable-2"; else return "meta";} else return "meta";} return null;} return { startState: function() { return { tokenize: tokenPerl, chain: null, style: null, tail: null }; }, token: function(stream, state) { return (state.tokenize || tokenPerl)(stream, state); }, lineComment: '#' }; }); CodeMirror.registerHelper("wordChars", "perl", /[\w$]/); CodeMirror.defineMIME("text/x-perl", "perl"); // it's like "peek", but need for look-ahead or look-behind if index < 0 function look(stream, c){ return stream.string.charAt(stream.pos+(c||0)); } // return a part of prefix of current stream from current position function prefix(stream, c){ if(c){ var x=stream.pos-c; return stream.string.substr((x>=0?x:0),c);} else{ return stream.string.substr(0,stream.pos-1); } } // return a part of suffix of current stream from current position function suffix(stream, c){ var y=stream.string.length; var x=y-stream.pos+1; return stream.string.substr(stream.pos,(c&&c=(y=stream.string.length-1)) stream.pos=y; else stream.pos=x; } }); application/library/codemirror/mode/perl/index.html000064400000003006147577724760016574 0ustar00 CodeMirror: Perl mode

Perl mode

MIME types defined: text/x-perl.

application/library/codemirror/mode/php/index.html000064400000003720147577724760016424 0ustar00 CodeMirror: PHP mode

PHP mode

Simple HTML/PHP mode based on the C-like mode. Depends on XML, JavaScript, CSS, HTMLMixed, and C-like modes.

MIME types defined: application/x-httpd-php (HTML with PHP code), text/x-php (plain, non-wrapped PHP code).

application/library/codemirror/mode/php/php.js000064400000043460147577724760015561 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../clike/clike")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../clike/clike"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function keywords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } // Helper for phpString function matchSequence(list, end, escapes) { if (list.length == 0) return phpString(end); return function (stream, state) { var patterns = list[0]; for (var i = 0; i < patterns.length; i++) if (stream.match(patterns[i][0])) { state.tokenize = matchSequence(list.slice(1), end); return patterns[i][1]; } state.tokenize = phpString(end, escapes); return "string"; }; } function phpString(closing, escapes) { return function(stream, state) { return phpString_(stream, state, closing, escapes); }; } function phpString_(stream, state, closing, escapes) { // "Complex" syntax if (escapes !== false && stream.match("${", false) || stream.match("{$", false)) { state.tokenize = null; return "string"; } // Simple syntax if (escapes !== false && stream.match(/^\$[a-zA-Z_][a-zA-Z0-9_]*/)) { // After the variable name there may appear array or object operator. if (stream.match("[", false)) { // Match array operator state.tokenize = matchSequence([ [["[", null]], [[/\d[\w\.]*/, "number"], [/\$[a-zA-Z_][a-zA-Z0-9_]*/, "variable-2"], [/[\w\$]+/, "variable"]], [["]", null]] ], closing, escapes); } if (stream.match(/\-\>\w/, false)) { // Match object operator state.tokenize = matchSequence([ [["->", null]], [[/[\w]+/, "variable"]] ], closing, escapes); } return "variable-2"; } var escaped = false; // Normal string while (!stream.eol() && (escaped || escapes === false || (!stream.match("{$", false) && !stream.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/, false)))) { if (!escaped && stream.match(closing)) { state.tokenize = null; state.tokStack.pop(); state.tokStack.pop(); break; } escaped = stream.next() == "\\" && !escaped; } return "string"; } var phpKeywords = "abstract and array as break case catch class clone const continue declare default " + "do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final " + "for foreach function global goto if implements interface instanceof namespace " + "new or private protected public static switch throw trait try use var while xor " + "die echo empty exit eval include include_once isset list require require_once return " + "print unset __halt_compiler self static parent yield insteadof finally"; var phpAtoms = "true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__"; var phpBuiltin = "func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents file_put_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists array_intersect_key array_combine array_column pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count"; CodeMirror.registerHelper("hintWords", "php", [phpKeywords, phpAtoms, phpBuiltin].join(" ").split(" ")); CodeMirror.registerHelper("wordChars", "php", /[\w$]/); var phpConfig = { name: "clike", helperType: "php", keywords: keywords(phpKeywords), blockKeywords: keywords("catch do else elseif for foreach if switch try while finally"), defKeywords: keywords("class function interface namespace trait"), atoms: keywords(phpAtoms), builtin: keywords(phpBuiltin), multiLineStrings: true, hooks: { "$": function(stream) { stream.eatWhile(/[\w\$_]/); return "variable-2"; }, "<": function(stream, state) { var before; if (before = stream.match(/<<\s*/)) { var quoted = stream.eat(/['"]/); stream.eatWhile(/[\w\.]/); var delim = stream.current().slice(before[0].length + (quoted ? 2 : 1)); if (quoted) stream.eat(quoted); if (delim) { (state.tokStack || (state.tokStack = [])).push(delim, 0); state.tokenize = phpString(delim, quoted != "'"); return "string"; } } return false; }, "#": function(stream) { while (!stream.eol() && !stream.match("?>", false)) stream.next(); return "comment"; }, "/": function(stream) { if (stream.eat("/")) { while (!stream.eol() && !stream.match("?>", false)) stream.next(); return "comment"; } return false; }, '"': function(_stream, state) { (state.tokStack || (state.tokStack = [])).push('"', 0); state.tokenize = phpString('"'); return "string"; }, "{": function(_stream, state) { if (state.tokStack && state.tokStack.length) state.tokStack[state.tokStack.length - 1]++; return false; }, "}": function(_stream, state) { if (state.tokStack && state.tokStack.length > 0 && !--state.tokStack[state.tokStack.length - 1]) { state.tokenize = phpString(state.tokStack[state.tokStack.length - 2]); } return false; } } }; CodeMirror.defineMode("php", function(config, parserConfig) { var htmlMode = CodeMirror.getMode(config, "text/html"); var phpMode = CodeMirror.getMode(config, phpConfig); function dispatch(stream, state) { var isPHP = state.curMode == phpMode; if (stream.sol() && state.pending && state.pending != '"' && state.pending != "'") state.pending = null; if (!isPHP) { if (stream.match(/^<\?\w*/)) { state.curMode = phpMode; if (!state.php) state.php = CodeMirror.startState(phpMode, htmlMode.indent(state.html, "")) state.curState = state.php; return "meta"; } if (state.pending == '"' || state.pending == "'") { while (!stream.eol() && stream.next() != state.pending) {} var style = "string"; } else if (state.pending && stream.pos < state.pending.end) { stream.pos = state.pending.end; var style = state.pending.style; } else { var style = htmlMode.token(stream, state.curState); } if (state.pending) state.pending = null; var cur = stream.current(), openPHP = cur.search(/<\?/), m; if (openPHP != -1) { if (style == "string" && (m = cur.match(/[\'\"]$/)) && !/\?>/.test(cur)) state.pending = m[0]; else state.pending = {end: stream.pos, style: style}; stream.backUp(cur.length - openPHP); } return style; } else if (isPHP && state.php.tokenize == null && stream.match("?>")) { state.curMode = htmlMode; state.curState = state.html; if (!state.php.context.prev) state.php = null; return "meta"; } else { return phpMode.token(stream, state.curState); } } return { startState: function() { var html = CodeMirror.startState(htmlMode) var php = parserConfig.startOpen ? CodeMirror.startState(phpMode) : null return {html: html, php: php, curMode: parserConfig.startOpen ? phpMode : htmlMode, curState: parserConfig.startOpen ? php : html, pending: null}; }, copyState: function(state) { var html = state.html, htmlNew = CodeMirror.copyState(htmlMode, html), php = state.php, phpNew = php && CodeMirror.copyState(phpMode, php), cur; if (state.curMode == htmlMode) cur = htmlNew; else cur = phpNew; return {html: htmlNew, php: phpNew, curMode: state.curMode, curState: cur, pending: state.pending}; }, token: dispatch, indent: function(state, textAfter) { if ((state.curMode != phpMode && /^\s*<\//.test(textAfter)) || (state.curMode == phpMode && /^\?>/.test(textAfter))) return htmlMode.indent(state.html, textAfter); return state.curMode.indent(state.curState, textAfter); }, blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//", innerMode: function(state) { return {state: state.curState, mode: state.curMode}; } }; }, "htmlmixed", "clike"); CodeMirror.defineMIME("application/x-httpd-php", "php"); CodeMirror.defineMIME("application/x-httpd-php-open", {name: "php", startOpen: true}); CodeMirror.defineMIME("text/x-php", phpConfig); }); application/library/codemirror/mode/php/test.js000064400000014755147577724760015756 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "php"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT('simple_test', '[meta ]'); MT('variable_interpolation_non_alphanumeric', '[meta $/$\\$}$\\\"$:$;$?$|$[[$]]$+$=aaa"]', '[meta ?>]'); MT('variable_interpolation_digits', '[meta ]'); MT('variable_interpolation_simple_syntax_1', '[meta ]'); MT('variable_interpolation_simple_syntax_2', '[meta ]'); MT('variable_interpolation_simple_syntax_3', '[meta [variable aaaaa][string .aaaaaa"];', '[keyword echo] [string "aaa][variable-2 $aaaa][string ->][variable-2 $aaaaa][string .aaaaaa"];', '[keyword echo] [string "aaa][variable-2 $aaaa]->[variable aaaaa][string [[2]].aaaaaa"];', '[keyword echo] [string "aaa][variable-2 $aaaa]->[variable aaaaa][string ->aaaa2.aaaaaa"];', '[meta ?>]'); MT('variable_interpolation_escaping', '[meta aaa.aaa"];', '[keyword echo] [string "aaa\\$aaaa[[2]]aaa.aaa"];', '[keyword echo] [string "aaa\\$aaaa[[asd]]aaa.aaa"];', '[keyword echo] [string "aaa{\\$aaaa->aaa.aaa"];', '[keyword echo] [string "aaa{\\$aaaa[[2]]aaa.aaa"];', '[keyword echo] [string "aaa{\\aaaaa[[asd]]aaa.aaa"];', '[keyword echo] [string "aaa\\${aaaa->aaa.aaa"];', '[keyword echo] [string "aaa\\${aaaa[[2]]aaa.aaa"];', '[keyword echo] [string "aaa\\${aaaa[[asd]]aaa.aaa"];', '[meta ?>]'); MT('variable_interpolation_complex_syntax_1', '[meta aaa.aaa"];', '[keyword echo] [string "aaa][variable-2 $]{[variable-2 $aaaa]}[string ->aaa.aaa"];', '[keyword echo] [string "aaa][variable-2 $]{[variable-2 $aaaa][[',' [number 42]',']]}[string ->aaa.aaa"];', '[keyword echo] [string "aaa][variable-2 $]{[variable aaaa][meta ?>]aaaaaa'); MT('variable_interpolation_complex_syntax_2', '[meta } $aaaaaa.aaa"];', '[keyword echo] [string "][variable-2 $]{[variable aaa][comment /*}?>*/][[',' [string "aaa][variable-2 $aaa][string {}][variable-2 $]{[variable aaa]}[string "]',']]}[string ->aaa.aaa"];', '[keyword echo] [string "][variable-2 $]{[variable aaa][comment /*} } $aaa } */]}[string ->aaa.aaa"];'); function build_recursive_monsters(nt, t, n){ var monsters = [t]; for (var i = 1; i <= n; ++i) monsters[i] = nt.join(monsters[i - 1]); return monsters; } var m1 = build_recursive_monsters( ['[string "][variable-2 $]{[variable aaa] [operator +] ', '}[string "]'], '[comment /* }?>} */] [string "aaa][variable-2 $aaa][string .aaa"]', 10 ); MT('variable_interpolation_complex_syntax_3_1', '[meta ]'); var m2 = build_recursive_monsters( ['[string "a][variable-2 $]{[variable aaa] [operator +] ', ' [operator +] ', '}[string .a"]'], '[comment /* }?>{{ */] [string "a?>}{{aa][variable-2 $aaa][string .a}a?>a"]', 5 ); MT('variable_interpolation_complex_syntax_3_2', '[meta ]'); function build_recursive_monsters_2(mf1, mf2, nt, t, n){ var monsters = [t]; for (var i = 1; i <= n; ++i) monsters[i] = nt[0] + mf1[i - 1] + nt[1] + mf2[i - 1] + nt[2] + monsters[i - 1] + nt[3]; return monsters; } var m3 = build_recursive_monsters_2( m1, m2, ['[string "a][variable-2 $]{[variable aaa] [operator +] ', ' [operator +] ', ' [operator +] ', '}[string .a"]'], '[comment /* }?>{{ */] [string "a?>}{{aa][variable-2 $aaa][string .a}a?>a"]', 4 ); MT('variable_interpolation_complex_syntax_3_3', '[meta ]'); MT("variable_interpolation_heredoc", "[meta CodeMirror: Pig Latin mode

Pig Latin mode

Simple mode that handles Pig Latin language.

MIME type defined: text/x-pig (PIG code)

application/library/codemirror/mode/pig/pig.js000064400000013262147577724760015536 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /* * Pig Latin Mode for CodeMirror 2 * @author Prasanth Jayachandran * @link https://github.com/prasanthj/pig-codemirror-2 * This implementation is adapted from PL/SQL mode in CodeMirror 2. */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("pig", function(_config, parserConfig) { var keywords = parserConfig.keywords, builtins = parserConfig.builtins, types = parserConfig.types, multiLineStrings = parserConfig.multiLineStrings; var isOperatorChar = /[*+\-%<>=&?:\/!|]/; function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } function tokenComment(stream, state) { var isEnd = false; var ch; while(ch = stream.next()) { if(ch == "/" && isEnd) { state.tokenize = tokenBase; break; } isEnd = (ch == "*"); } return "comment"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while((next = stream.next()) != null) { if (next == quote && !escaped) { end = true; break; } escaped = !escaped && next == "\\"; } if (end || !(escaped || multiLineStrings)) state.tokenize = tokenBase; return "error"; }; } function tokenBase(stream, state) { var ch = stream.next(); // is a start of string? if (ch == '"' || ch == "'") return chain(stream, state, tokenString(ch)); // is it one of the special chars else if(/[\[\]{}\(\),;\.]/.test(ch)) return null; // is it a number? else if(/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } // multi line comment or operator else if (ch == "/") { if (stream.eat("*")) { return chain(stream, state, tokenComment); } else { stream.eatWhile(isOperatorChar); return "operator"; } } // single line comment or operator else if (ch=="-") { if(stream.eat("-")){ stream.skipToEnd(); return "comment"; } else { stream.eatWhile(isOperatorChar); return "operator"; } } // is it an operator else if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } else { // get the while word stream.eatWhile(/[\w\$_]/); // is it one of the listed keywords? if (keywords && keywords.propertyIsEnumerable(stream.current().toUpperCase())) { //keywords can be used as variables like flatten(group), group.$0 etc.. if (!stream.eat(")") && !stream.eat(".")) return "keyword"; } // is it one of the builtin functions? if (builtins && builtins.propertyIsEnumerable(stream.current().toUpperCase())) return "variable-2"; // is it one of the listed types? if (types && types.propertyIsEnumerable(stream.current().toUpperCase())) return "variable-3"; // default is a 'variable' return "variable"; } } // Interface return { startState: function() { return { tokenize: tokenBase, startOfLine: true }; }, token: function(stream, state) { if(stream.eatSpace()) return null; var style = state.tokenize(stream, state); return style; } }; }); (function() { function keywords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } // builtin funcs taken from trunk revision 1303237 var pBuiltins = "ABS ACOS ARITY ASIN ATAN AVG BAGSIZE BINSTORAGE BLOOM BUILDBLOOM CBRT CEIL " + "CONCAT COR COS COSH COUNT COUNT_STAR COV CONSTANTSIZE CUBEDIMENSIONS DIFF DISTINCT DOUBLEABS " + "DOUBLEAVG DOUBLEBASE DOUBLEMAX DOUBLEMIN DOUBLEROUND DOUBLESUM EXP FLOOR FLOATABS FLOATAVG " + "FLOATMAX FLOATMIN FLOATROUND FLOATSUM GENERICINVOKER INDEXOF INTABS INTAVG INTMAX INTMIN " + "INTSUM INVOKEFORDOUBLE INVOKEFORFLOAT INVOKEFORINT INVOKEFORLONG INVOKEFORSTRING INVOKER " + "ISEMPTY JSONLOADER JSONMETADATA JSONSTORAGE LAST_INDEX_OF LCFIRST LOG LOG10 LOWER LONGABS " + "LONGAVG LONGMAX LONGMIN LONGSUM MAX MIN MAPSIZE MONITOREDUDF NONDETERMINISTIC OUTPUTSCHEMA " + "PIGSTORAGE PIGSTREAMING RANDOM REGEX_EXTRACT REGEX_EXTRACT_ALL REPLACE ROUND SIN SINH SIZE " + "SQRT STRSPLIT SUBSTRING SUM STRINGCONCAT STRINGMAX STRINGMIN STRINGSIZE TAN TANH TOBAG " + "TOKENIZE TOMAP TOP TOTUPLE TRIM TEXTLOADER TUPLESIZE UCFIRST UPPER UTF8STORAGECONVERTER "; // taken from QueryLexer.g var pKeywords = "VOID IMPORT RETURNS DEFINE LOAD FILTER FOREACH ORDER CUBE DISTINCT COGROUP " + "JOIN CROSS UNION SPLIT INTO IF OTHERWISE ALL AS BY USING INNER OUTER ONSCHEMA PARALLEL " + "PARTITION GROUP AND OR NOT GENERATE FLATTEN ASC DESC IS STREAM THROUGH STORE MAPREDUCE " + "SHIP CACHE INPUT OUTPUT STDERROR STDIN STDOUT LIMIT SAMPLE LEFT RIGHT FULL EQ GT LT GTE LTE " + "NEQ MATCHES TRUE FALSE DUMP"; // data types var pTypes = "BOOLEAN INT LONG FLOAT DOUBLE CHARARRAY BYTEARRAY BAG TUPLE MAP "; CodeMirror.defineMIME("text/x-pig", { name: "pig", builtins: keywords(pBuiltins), keywords: keywords(pKeywords), types: keywords(pTypes) }); CodeMirror.registerHelper("hintWords", "pig", (pBuiltins + pTypes + pKeywords).split(" ")); }()); }); application/library/codemirror/mode/powershell/index.html000064400000016314147577724760020024 0ustar00 CodeMirror: Powershell mode

PowerShell mode

MIME types defined: application/x-powershell.

application/library/codemirror/mode/powershell/powershell.js000064400000031047147577724760020551 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { 'use strict'; if (typeof exports == 'object' && typeof module == 'object') // CommonJS mod(require('codemirror')); else if (typeof define == 'function' && define.amd) // AMD define(['codemirror'], mod); else // Plain browser env mod(window.CodeMirror); })(function(CodeMirror) { 'use strict'; CodeMirror.defineMode('powershell', function() { function buildRegexp(patterns, options) { options = options || {}; var prefix = options.prefix !== undefined ? options.prefix : '^'; var suffix = options.suffix !== undefined ? options.suffix : '\\b'; for (var i = 0; i < patterns.length; i++) { if (patterns[i] instanceof RegExp) { patterns[i] = patterns[i].source; } else { patterns[i] = patterns[i].replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&'); } } return new RegExp(prefix + '(' + patterns.join('|') + ')' + suffix, 'i'); } var notCharacterOrDash = '(?=[^A-Za-z\\d\\-_]|$)'; var varNames = /[\w\-:]/ var keywords = buildRegexp([ /begin|break|catch|continue|data|default|do|dynamicparam/, /else|elseif|end|exit|filter|finally|for|foreach|from|function|if|in/, /param|process|return|switch|throw|trap|try|until|where|while/ ], { suffix: notCharacterOrDash }); var punctuation = /[\[\]{},;`\.]|@[({]/; var wordOperators = buildRegexp([ 'f', /b?not/, /[ic]?split/, 'join', /is(not)?/, 'as', /[ic]?(eq|ne|[gl][te])/, /[ic]?(not)?(like|match|contains)/, /[ic]?replace/, /b?(and|or|xor)/ ], { prefix: '-' }); var symbolOperators = /[+\-*\/%]=|\+\+|--|\.\.|[+\-*&^%:=!|\/]|<(?!#)|(?!#)>/; var operators = buildRegexp([wordOperators, symbolOperators], { suffix: '' }); var numbers = /^((0x[\da-f]+)|((\d+\.\d+|\d\.|\.\d+|\d+)(e[\+\-]?\d+)?))[ld]?([kmgtp]b)?/i; var identifiers = /^[A-Za-z\_][A-Za-z\-\_\d]*\b/; var symbolBuiltins = /[A-Z]:|%|\?/i; var namedBuiltins = buildRegexp([ /Add-(Computer|Content|History|Member|PSSnapin|Type)/, /Checkpoint-Computer/, /Clear-(Content|EventLog|History|Host|Item(Property)?|Variable)/, /Compare-Object/, /Complete-Transaction/, /Connect-PSSession/, /ConvertFrom-(Csv|Json|SecureString|StringData)/, /Convert-Path/, /ConvertTo-(Csv|Html|Json|SecureString|Xml)/, /Copy-Item(Property)?/, /Debug-Process/, /Disable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/, /Disconnect-PSSession/, /Enable-(ComputerRestore|PSBreakpoint|PSRemoting|PSSessionConfiguration)/, /(Enter|Exit)-PSSession/, /Export-(Alias|Clixml|Console|Counter|Csv|FormatData|ModuleMember|PSSession)/, /ForEach-Object/, /Format-(Custom|List|Table|Wide)/, new RegExp('Get-(Acl|Alias|AuthenticodeSignature|ChildItem|Command|ComputerRestorePoint|Content|ControlPanelItem|Counter|Credential' + '|Culture|Date|Event|EventLog|EventSubscriber|ExecutionPolicy|FormatData|Help|History|Host|HotFix|Item|ItemProperty|Job' + '|Location|Member|Module|PfxCertificate|Process|PSBreakpoint|PSCallStack|PSDrive|PSProvider|PSSession|PSSessionConfiguration' + '|PSSnapin|Random|Service|TraceSource|Transaction|TypeData|UICulture|Unique|Variable|Verb|WinEvent|WmiObject)'), /Group-Object/, /Import-(Alias|Clixml|Counter|Csv|LocalizedData|Module|PSSession)/, /ImportSystemModules/, /Invoke-(Command|Expression|History|Item|RestMethod|WebRequest|WmiMethod)/, /Join-Path/, /Limit-EventLog/, /Measure-(Command|Object)/, /Move-Item(Property)?/, new RegExp('New-(Alias|Event|EventLog|Item(Property)?|Module|ModuleManifest|Object|PSDrive|PSSession|PSSessionConfigurationFile' + '|PSSessionOption|PSTransportOption|Service|TimeSpan|Variable|WebServiceProxy|WinEvent)'), /Out-(Default|File|GridView|Host|Null|Printer|String)/, /Pause/, /(Pop|Push)-Location/, /Read-Host/, /Receive-(Job|PSSession)/, /Register-(EngineEvent|ObjectEvent|PSSessionConfiguration|WmiEvent)/, /Remove-(Computer|Event|EventLog|Item(Property)?|Job|Module|PSBreakpoint|PSDrive|PSSession|PSSnapin|TypeData|Variable|WmiObject)/, /Rename-(Computer|Item(Property)?)/, /Reset-ComputerMachinePassword/, /Resolve-Path/, /Restart-(Computer|Service)/, /Restore-Computer/, /Resume-(Job|Service)/, /Save-Help/, /Select-(Object|String|Xml)/, /Send-MailMessage/, new RegExp('Set-(Acl|Alias|AuthenticodeSignature|Content|Date|ExecutionPolicy|Item(Property)?|Location|PSBreakpoint|PSDebug' + '|PSSessionConfiguration|Service|StrictMode|TraceSource|Variable|WmiInstance)'), /Show-(Command|ControlPanelItem|EventLog)/, /Sort-Object/, /Split-Path/, /Start-(Job|Process|Service|Sleep|Transaction|Transcript)/, /Stop-(Computer|Job|Process|Service|Transcript)/, /Suspend-(Job|Service)/, /TabExpansion2/, /Tee-Object/, /Test-(ComputerSecureChannel|Connection|ModuleManifest|Path|PSSessionConfigurationFile)/, /Trace-Command/, /Unblock-File/, /Undo-Transaction/, /Unregister-(Event|PSSessionConfiguration)/, /Update-(FormatData|Help|List|TypeData)/, /Use-Transaction/, /Wait-(Event|Job|Process)/, /Where-Object/, /Write-(Debug|Error|EventLog|Host|Output|Progress|Verbose|Warning)/, /cd|help|mkdir|more|oss|prompt/, /ac|asnp|cat|cd|chdir|clc|clear|clhy|cli|clp|cls|clv|cnsn|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|dnsn|ebp/, /echo|epal|epcsv|epsn|erase|etsn|exsn|fc|fl|foreach|ft|fw|gal|gbp|gc|gci|gcm|gcs|gdr|ghy|gi|gjb|gl|gm|gmo|gp|gps/, /group|gsn|gsnp|gsv|gu|gv|gwmi|h|history|icm|iex|ihy|ii|ipal|ipcsv|ipmo|ipsn|irm|ise|iwmi|iwr|kill|lp|ls|man|md/, /measure|mi|mount|move|mp|mv|nal|ndr|ni|nmo|npssc|nsn|nv|ogv|oh|popd|ps|pushd|pwd|r|rbp|rcjb|rcsn|rd|rdr|ren|ri/, /rjb|rm|rmdir|rmo|rni|rnp|rp|rsn|rsnp|rujb|rv|rvpa|rwmi|sajb|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls/, /sort|sp|spjb|spps|spsv|start|sujb|sv|swmi|tee|trcm|type|where|wjb|write/ ], { prefix: '', suffix: '' }); var variableBuiltins = buildRegexp([ /[$?^_]|Args|ConfirmPreference|ConsoleFileName|DebugPreference|Error|ErrorActionPreference|ErrorView|ExecutionContext/, /FormatEnumerationLimit|Home|Host|Input|MaximumAliasCount|MaximumDriveCount|MaximumErrorCount|MaximumFunctionCount/, /MaximumHistoryCount|MaximumVariableCount|MyInvocation|NestedPromptLevel|OutputEncoding|Pid|Profile|ProgressPreference/, /PSBoundParameters|PSCommandPath|PSCulture|PSDefaultParameterValues|PSEmailServer|PSHome|PSScriptRoot|PSSessionApplicationName/, /PSSessionConfigurationName|PSSessionOption|PSUICulture|PSVersionTable|Pwd|ShellId|StackTrace|VerbosePreference/, /WarningPreference|WhatIfPreference/, /Event|EventArgs|EventSubscriber|Sender/, /Matches|Ofs|ForEach|LastExitCode|PSCmdlet|PSItem|PSSenderInfo|This/, /true|false|null/ ], { prefix: '\\$', suffix: '' }); var builtins = buildRegexp([symbolBuiltins, namedBuiltins, variableBuiltins], { suffix: notCharacterOrDash }); var grammar = { keyword: keywords, number: numbers, operator: operators, builtin: builtins, punctuation: punctuation, identifier: identifiers }; // tokenizers function tokenBase(stream, state) { // Handle Comments //var ch = stream.peek(); var parent = state.returnStack[state.returnStack.length - 1]; if (parent && parent.shouldReturnFrom(state)) { state.tokenize = parent.tokenize; state.returnStack.pop(); return state.tokenize(stream, state); } if (stream.eatSpace()) { return null; } if (stream.eat('(')) { state.bracketNesting += 1; return 'punctuation'; } if (stream.eat(')')) { state.bracketNesting -= 1; return 'punctuation'; } for (var key in grammar) { if (stream.match(grammar[key])) { return key; } } var ch = stream.next(); // single-quote string if (ch === "'") { return tokenSingleQuoteString(stream, state); } if (ch === '$') { return tokenVariable(stream, state); } // double-quote string if (ch === '"') { return tokenDoubleQuoteString(stream, state); } if (ch === '<' && stream.eat('#')) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (ch === '#') { stream.skipToEnd(); return 'comment'; } if (ch === '@') { var quoteMatch = stream.eat(/["']/); if (quoteMatch && stream.eol()) { state.tokenize = tokenMultiString; state.startQuote = quoteMatch[0]; return tokenMultiString(stream, state); } else if (stream.peek().match(/[({]/)) { return 'punctuation'; } else if (stream.peek().match(varNames)) { // splatted variable return tokenVariable(stream, state); } } return 'error'; } function tokenSingleQuoteString(stream, state) { var ch; while ((ch = stream.peek()) != null) { stream.next(); if (ch === "'" && !stream.eat("'")) { state.tokenize = tokenBase; return 'string'; } } return 'error'; } function tokenDoubleQuoteString(stream, state) { var ch; while ((ch = stream.peek()) != null) { if (ch === '$') { state.tokenize = tokenStringInterpolation; return 'string'; } stream.next(); if (ch === '`') { stream.next(); continue; } if (ch === '"' && !stream.eat('"')) { state.tokenize = tokenBase; return 'string'; } } return 'error'; } function tokenStringInterpolation(stream, state) { return tokenInterpolation(stream, state, tokenDoubleQuoteString); } function tokenMultiStringReturn(stream, state) { state.tokenize = tokenMultiString; state.startQuote = '"' return tokenMultiString(stream, state); } function tokenHereStringInterpolation(stream, state) { return tokenInterpolation(stream, state, tokenMultiStringReturn); } function tokenInterpolation(stream, state, parentTokenize) { if (stream.match('$(')) { var savedBracketNesting = state.bracketNesting; state.returnStack.push({ /*jshint loopfunc:true */ shouldReturnFrom: function(state) { return state.bracketNesting === savedBracketNesting; }, tokenize: parentTokenize }); state.tokenize = tokenBase; state.bracketNesting += 1; return 'punctuation'; } else { stream.next(); state.returnStack.push({ shouldReturnFrom: function() { return true; }, tokenize: parentTokenize }); state.tokenize = tokenVariable; return state.tokenize(stream, state); } } function tokenComment(stream, state) { var maybeEnd = false, ch; while ((ch = stream.next()) != null) { if (maybeEnd && ch == '>') { state.tokenize = tokenBase; break; } maybeEnd = (ch === '#'); } return 'comment'; } function tokenVariable(stream, state) { var ch = stream.peek(); if (stream.eat('{')) { state.tokenize = tokenVariableWithBraces; return tokenVariableWithBraces(stream, state); } else if (ch != undefined && ch.match(varNames)) { stream.eatWhile(varNames); state.tokenize = tokenBase; return 'variable-2'; } else { state.tokenize = tokenBase; return 'error'; } } function tokenVariableWithBraces(stream, state) { var ch; while ((ch = stream.next()) != null) { if (ch === '}') { state.tokenize = tokenBase; break; } } return 'variable-2'; } function tokenMultiString(stream, state) { var quote = state.startQuote; if (stream.sol() && stream.match(new RegExp(quote + '@'))) { state.tokenize = tokenBase; } else if (quote === '"') { while (!stream.eol()) { var ch = stream.peek(); if (ch === '$') { state.tokenize = tokenHereStringInterpolation; return 'string'; } stream.next(); if (ch === '`') { stream.next(); } } } else { stream.skipToEnd(); } return 'string'; } var external = { startState: function() { return { returnStack: [], bracketNesting: 0, tokenize: tokenBase }; }, token: function(stream, state) { return state.tokenize(stream, state); }, blockCommentStart: '<#', blockCommentEnd: '#>', lineComment: '#', fold: 'brace' }; return external; }); CodeMirror.defineMIME('application/x-powershell', 'powershell'); }); application/library/codemirror/mode/powershell/test.js000064400000005473147577724760017350 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "powershell"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT('comment', '[number 1][comment # A]'); MT('comment_multiline', '[number 1][comment <#]', '[comment ABC]', '[comment #>][number 2]'); [ '0', '1234', '12kb', '12mb', '12Gb', '12Tb', '12PB', '12L', '12D', '12lkb', '12dtb', '1.234', '1.234e56', '1.', '1.e2', '.2', '.2e34', '1.2MB', '1.kb', '.1dTB', '1.e1gb', '.2', '.2e34', '0x1', '0xabcdef', '0x3tb', '0xelmb' ].forEach(function(number) { MT("number_" + number, "[number " + number + "]"); }); MT('string_literal_escaping', "[string 'a''']"); MT('string_literal_variable', "[string 'a $x']"); MT('string_escaping_1', '[string "a `""]'); MT('string_escaping_2', '[string "a """]'); MT('string_variable_escaping', '[string "a `$x"]'); MT('string_variable', '[string "a ][variable-2 $x][string b"]'); MT('string_variable_spaces', '[string "a ][variable-2 ${x y}][string b"]'); MT('string_expression', '[string "a ][punctuation $(][variable-2 $x][operator +][number 3][punctuation )][string b"]'); MT('string_expression_nested', '[string "A][punctuation $(][string "a][punctuation $(][string "w"][punctuation )][string b"][punctuation )][string B"]'); MT('string_heredoc', '[string @"]', '[string abc]', '[string "@]'); MT('string_heredoc_quotes', '[string @"]', '[string abc "\']', '[string "@]'); MT('string_heredoc_variable', '[string @"]', '[string a ][variable-2 $x][string b]', '[string "@]'); MT('string_heredoc_nested_string', '[string @"]', '[string a][punctuation $(][string "w"][punctuation )][string b]', '[string "@]'); MT('string_heredoc_literal_quotes', "[string @']", '[string abc "\']', "[string '@]"); MT('array', "[punctuation @(][string 'a'][punctuation ,][string 'b'][punctuation )]"); MT('hash', "[punctuation @{][string 'key'][operator :][string 'value'][punctuation }]"); MT('variable', "[variable-2 $test]"); MT('variable_global', "[variable-2 $global:test]"); MT('variable_spaces', "[variable-2 ${test test}]"); MT('operator_splat', "[variable-2 @x]"); MT('variable_builtin', "[builtin $ErrorActionPreference]"); MT('variable_builtin_symbols', "[builtin $$]"); MT('operator', "[operator +]"); MT('operator_unary', "[operator +][number 3]"); MT('operator_long', "[operator -match]"); [ '(', ')', '[[', ']]', '{', '}', ',', '`', ';', '.' ].forEach(function(punctuation) { MT("punctuation_" + punctuation.replace(/^[\[\]]/,''), "[punctuation " + punctuation + "]"); }); MT('keyword', "[keyword if]"); MT('call_builtin', "[builtin Get-ChildItem]"); })(); application/library/codemirror/mode/properties/properties.js000064400000004173147577724760020571 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("properties", function() { return { token: function(stream, state) { var sol = stream.sol() || state.afterSection; var eol = stream.eol(); state.afterSection = false; if (sol) { if (state.nextMultiline) { state.inMultiline = true; state.nextMultiline = false; } else { state.position = "def"; } } if (eol && ! state.nextMultiline) { state.inMultiline = false; state.position = "def"; } if (sol) { while(stream.eatSpace()) {} } var ch = stream.next(); if (sol && (ch === "#" || ch === "!" || ch === ";")) { state.position = "comment"; stream.skipToEnd(); return "comment"; } else if (sol && ch === "[") { state.afterSection = true; stream.skipTo("]"); stream.eat("]"); return "header"; } else if (ch === "=" || ch === ":") { state.position = "quote"; return null; } else if (ch === "\\" && state.position === "quote") { if (stream.eol()) { // end of line? // Multiline value state.nextMultiline = true; } } return state.position; }, startState: function() { return { position : "def", // Current position, "def", "quote" or "comment" nextMultiline : false, // Is the next line multiline value inMultiline : false, // Is the current line a multiline value afterSection : false // Did we just open a section }; } }; }); CodeMirror.defineMIME("text/x-properties", "properties"); CodeMirror.defineMIME("text/x-ini", "properties"); }); application/library/codemirror/mode/properties/index.html000064400000003023147577724760020025 0ustar00 CodeMirror: Properties files mode

Properties files mode

MIME types defined: text/x-properties, text/x-ini.

application/library/codemirror/mode/protobuf/protobuf.js000064400000004101147577724760017670 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); }; var keywordArray = [ "package", "message", "import", "syntax", "required", "optional", "repeated", "reserved", "default", "extensions", "packed", "bool", "bytes", "double", "enum", "float", "string", "int32", "int64", "uint32", "uint64", "sint32", "sint64", "fixed32", "fixed64", "sfixed32", "sfixed64" ]; var keywords = wordRegexp(keywordArray); CodeMirror.registerHelper("hintWords", "protobuf", keywordArray); var identifiers = new RegExp("^[_A-Za-z\xa1-\uffff][_A-Za-z0-9\xa1-\uffff]*"); function tokenBase(stream) { // whitespaces if (stream.eatSpace()) return null; // Handle one line Comments if (stream.match("//")) { stream.skipToEnd(); return "comment"; } // Handle Number Literals if (stream.match(/^[0-9\.+-]/, false)) { if (stream.match(/^[+-]?0x[0-9a-fA-F]+/)) return "number"; if (stream.match(/^[+-]?\d*\.\d+([EeDd][+-]?\d+)?/)) return "number"; if (stream.match(/^[+-]?\d+([EeDd][+-]?\d+)?/)) return "number"; } // Handle Strings if (stream.match(/^"([^"]|(""))*"/)) { return "string"; } if (stream.match(/^'([^']|(''))*'/)) { return "string"; } // Handle words if (stream.match(keywords)) { return "keyword"; } if (stream.match(identifiers)) { return "variable"; } ; // Handle non-detected items stream.next(); return null; }; CodeMirror.defineMode("protobuf", function() { return {token: tokenBase}; }); CodeMirror.defineMIME("text/x-protobuf", "protobuf"); }); application/library/codemirror/mode/protobuf/index.html000064400000003220147577724760017470 0ustar00 CodeMirror: ProtoBuf mode

ProtoBuf mode

MIME types defined: text/x-protobuf.

application/library/codemirror/mode/pug/index.html000064400000004671147577724760016436 0ustar00 CodeMirror: Pug Templating Mode

Pug Templating Mode

The Pug Templating Mode

Created by Forbes Lindesay. Managed as part of a Brackets extension at https://github.com/ForbesLindesay/jade-brackets.

MIME type defined: text/x-pug, text/x-jade.

application/library/codemirror/mode/pug/pug.js000064400000037256147577724760015577 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../javascript/javascript"), require("../css/css"), require("../htmlmixed/htmlmixed")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../javascript/javascript", "../css/css", "../htmlmixed/htmlmixed"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("pug", function (config) { // token types var KEYWORD = 'keyword'; var DOCTYPE = 'meta'; var ID = 'builtin'; var CLASS = 'qualifier'; var ATTRS_NEST = { '{': '}', '(': ')', '[': ']' }; var jsMode = CodeMirror.getMode(config, 'javascript'); function State() { this.javaScriptLine = false; this.javaScriptLineExcludesColon = false; this.javaScriptArguments = false; this.javaScriptArgumentsDepth = 0; this.isInterpolating = false; this.interpolationNesting = 0; this.jsState = CodeMirror.startState(jsMode); this.restOfLine = ''; this.isIncludeFiltered = false; this.isEach = false; this.lastTag = ''; this.scriptType = ''; // Attributes Mode this.isAttrs = false; this.attrsNest = []; this.inAttributeName = true; this.attributeIsType = false; this.attrValue = ''; // Indented Mode this.indentOf = Infinity; this.indentToken = ''; this.innerMode = null; this.innerState = null; this.innerModeForLine = false; } /** * Safely copy a state * * @return {State} */ State.prototype.copy = function () { var res = new State(); res.javaScriptLine = this.javaScriptLine; res.javaScriptLineExcludesColon = this.javaScriptLineExcludesColon; res.javaScriptArguments = this.javaScriptArguments; res.javaScriptArgumentsDepth = this.javaScriptArgumentsDepth; res.isInterpolating = this.isInterpolating; res.interpolationNesting = this.interpolationNesting; res.jsState = CodeMirror.copyState(jsMode, this.jsState); res.innerMode = this.innerMode; if (this.innerMode && this.innerState) { res.innerState = CodeMirror.copyState(this.innerMode, this.innerState); } res.restOfLine = this.restOfLine; res.isIncludeFiltered = this.isIncludeFiltered; res.isEach = this.isEach; res.lastTag = this.lastTag; res.scriptType = this.scriptType; res.isAttrs = this.isAttrs; res.attrsNest = this.attrsNest.slice(); res.inAttributeName = this.inAttributeName; res.attributeIsType = this.attributeIsType; res.attrValue = this.attrValue; res.indentOf = this.indentOf; res.indentToken = this.indentToken; res.innerModeForLine = this.innerModeForLine; return res; }; function javaScript(stream, state) { if (stream.sol()) { // if javaScriptLine was set at end of line, ignore it state.javaScriptLine = false; state.javaScriptLineExcludesColon = false; } if (state.javaScriptLine) { if (state.javaScriptLineExcludesColon && stream.peek() === ':') { state.javaScriptLine = false; state.javaScriptLineExcludesColon = false; return; } var tok = jsMode.token(stream, state.jsState); if (stream.eol()) state.javaScriptLine = false; return tok || true; } } function javaScriptArguments(stream, state) { if (state.javaScriptArguments) { if (state.javaScriptArgumentsDepth === 0 && stream.peek() !== '(') { state.javaScriptArguments = false; return; } if (stream.peek() === '(') { state.javaScriptArgumentsDepth++; } else if (stream.peek() === ')') { state.javaScriptArgumentsDepth--; } if (state.javaScriptArgumentsDepth === 0) { state.javaScriptArguments = false; return; } var tok = jsMode.token(stream, state.jsState); return tok || true; } } function yieldStatement(stream) { if (stream.match(/^yield\b/)) { return 'keyword'; } } function doctype(stream) { if (stream.match(/^(?:doctype) *([^\n]+)?/)) { return DOCTYPE; } } function interpolation(stream, state) { if (stream.match('#{')) { state.isInterpolating = true; state.interpolationNesting = 0; return 'punctuation'; } } function interpolationContinued(stream, state) { if (state.isInterpolating) { if (stream.peek() === '}') { state.interpolationNesting--; if (state.interpolationNesting < 0) { stream.next(); state.isInterpolating = false; return 'punctuation'; } } else if (stream.peek() === '{') { state.interpolationNesting++; } return jsMode.token(stream, state.jsState) || true; } } function caseStatement(stream, state) { if (stream.match(/^case\b/)) { state.javaScriptLine = true; return KEYWORD; } } function when(stream, state) { if (stream.match(/^when\b/)) { state.javaScriptLine = true; state.javaScriptLineExcludesColon = true; return KEYWORD; } } function defaultStatement(stream) { if (stream.match(/^default\b/)) { return KEYWORD; } } function extendsStatement(stream, state) { if (stream.match(/^extends?\b/)) { state.restOfLine = 'string'; return KEYWORD; } } function append(stream, state) { if (stream.match(/^append\b/)) { state.restOfLine = 'variable'; return KEYWORD; } } function prepend(stream, state) { if (stream.match(/^prepend\b/)) { state.restOfLine = 'variable'; return KEYWORD; } } function block(stream, state) { if (stream.match(/^block\b *(?:(prepend|append)\b)?/)) { state.restOfLine = 'variable'; return KEYWORD; } } function include(stream, state) { if (stream.match(/^include\b/)) { state.restOfLine = 'string'; return KEYWORD; } } function includeFiltered(stream, state) { if (stream.match(/^include:([a-zA-Z0-9\-]+)/, false) && stream.match('include')) { state.isIncludeFiltered = true; return KEYWORD; } } function includeFilteredContinued(stream, state) { if (state.isIncludeFiltered) { var tok = filter(stream, state); state.isIncludeFiltered = false; state.restOfLine = 'string'; return tok; } } function mixin(stream, state) { if (stream.match(/^mixin\b/)) { state.javaScriptLine = true; return KEYWORD; } } function call(stream, state) { if (stream.match(/^\+([-\w]+)/)) { if (!stream.match(/^\( *[-\w]+ *=/, false)) { state.javaScriptArguments = true; state.javaScriptArgumentsDepth = 0; } return 'variable'; } if (stream.match(/^\+#{/, false)) { stream.next(); state.mixinCallAfter = true; return interpolation(stream, state); } } function callArguments(stream, state) { if (state.mixinCallAfter) { state.mixinCallAfter = false; if (!stream.match(/^\( *[-\w]+ *=/, false)) { state.javaScriptArguments = true; state.javaScriptArgumentsDepth = 0; } return true; } } function conditional(stream, state) { if (stream.match(/^(if|unless|else if|else)\b/)) { state.javaScriptLine = true; return KEYWORD; } } function each(stream, state) { if (stream.match(/^(- *)?(each|for)\b/)) { state.isEach = true; return KEYWORD; } } function eachContinued(stream, state) { if (state.isEach) { if (stream.match(/^ in\b/)) { state.javaScriptLine = true; state.isEach = false; return KEYWORD; } else if (stream.sol() || stream.eol()) { state.isEach = false; } else if (stream.next()) { while (!stream.match(/^ in\b/, false) && stream.next()); return 'variable'; } } } function whileStatement(stream, state) { if (stream.match(/^while\b/)) { state.javaScriptLine = true; return KEYWORD; } } function tag(stream, state) { var captures; if (captures = stream.match(/^(\w(?:[-:\w]*\w)?)\/?/)) { state.lastTag = captures[1].toLowerCase(); if (state.lastTag === 'script') { state.scriptType = 'application/javascript'; } return 'tag'; } } function filter(stream, state) { if (stream.match(/^:([\w\-]+)/)) { var innerMode; if (config && config.innerModes) { innerMode = config.innerModes(stream.current().substring(1)); } if (!innerMode) { innerMode = stream.current().substring(1); } if (typeof innerMode === 'string') { innerMode = CodeMirror.getMode(config, innerMode); } setInnerMode(stream, state, innerMode); return 'atom'; } } function code(stream, state) { if (stream.match(/^(!?=|-)/)) { state.javaScriptLine = true; return 'punctuation'; } } function id(stream) { if (stream.match(/^#([\w-]+)/)) { return ID; } } function className(stream) { if (stream.match(/^\.([\w-]+)/)) { return CLASS; } } function attrs(stream, state) { if (stream.peek() == '(') { stream.next(); state.isAttrs = true; state.attrsNest = []; state.inAttributeName = true; state.attrValue = ''; state.attributeIsType = false; return 'punctuation'; } } function attrsContinued(stream, state) { if (state.isAttrs) { if (ATTRS_NEST[stream.peek()]) { state.attrsNest.push(ATTRS_NEST[stream.peek()]); } if (state.attrsNest[state.attrsNest.length - 1] === stream.peek()) { state.attrsNest.pop(); } else if (stream.eat(')')) { state.isAttrs = false; return 'punctuation'; } if (state.inAttributeName && stream.match(/^[^=,\)!]+/)) { if (stream.peek() === '=' || stream.peek() === '!') { state.inAttributeName = false; state.jsState = CodeMirror.startState(jsMode); if (state.lastTag === 'script' && stream.current().trim().toLowerCase() === 'type') { state.attributeIsType = true; } else { state.attributeIsType = false; } } return 'attribute'; } var tok = jsMode.token(stream, state.jsState); if (state.attributeIsType && tok === 'string') { state.scriptType = stream.current().toString(); } if (state.attrsNest.length === 0 && (tok === 'string' || tok === 'variable' || tok === 'keyword')) { try { Function('', 'var x ' + state.attrValue.replace(/,\s*$/, '').replace(/^!/, '')); state.inAttributeName = true; state.attrValue = ''; stream.backUp(stream.current().length); return attrsContinued(stream, state); } catch (ex) { //not the end of an attribute } } state.attrValue += stream.current(); return tok || true; } } function attributesBlock(stream, state) { if (stream.match(/^&attributes\b/)) { state.javaScriptArguments = true; state.javaScriptArgumentsDepth = 0; return 'keyword'; } } function indent(stream) { if (stream.sol() && stream.eatSpace()) { return 'indent'; } } function comment(stream, state) { if (stream.match(/^ *\/\/(-)?([^\n]*)/)) { state.indentOf = stream.indentation(); state.indentToken = 'comment'; return 'comment'; } } function colon(stream) { if (stream.match(/^: */)) { return 'colon'; } } function text(stream, state) { if (stream.match(/^(?:\| ?| )([^\n]+)/)) { return 'string'; } if (stream.match(/^(<[^\n]*)/, false)) { // html string setInnerMode(stream, state, 'htmlmixed'); state.innerModeForLine = true; return innerMode(stream, state, true); } } function dot(stream, state) { if (stream.eat('.')) { var innerMode = null; if (state.lastTag === 'script' && state.scriptType.toLowerCase().indexOf('javascript') != -1) { innerMode = state.scriptType.toLowerCase().replace(/"|'/g, ''); } else if (state.lastTag === 'style') { innerMode = 'css'; } setInnerMode(stream, state, innerMode); return 'dot'; } } function fail(stream) { stream.next(); return null; } function setInnerMode(stream, state, mode) { mode = CodeMirror.mimeModes[mode] || mode; mode = config.innerModes ? config.innerModes(mode) || mode : mode; mode = CodeMirror.mimeModes[mode] || mode; mode = CodeMirror.getMode(config, mode); state.indentOf = stream.indentation(); if (mode && mode.name !== 'null') { state.innerMode = mode; } else { state.indentToken = 'string'; } } function innerMode(stream, state, force) { if (stream.indentation() > state.indentOf || (state.innerModeForLine && !stream.sol()) || force) { if (state.innerMode) { if (!state.innerState) { state.innerState = state.innerMode.startState ? CodeMirror.startState(state.innerMode, stream.indentation()) : {}; } return stream.hideFirstChars(state.indentOf + 2, function () { return state.innerMode.token(stream, state.innerState) || true; }); } else { stream.skipToEnd(); return state.indentToken; } } else if (stream.sol()) { state.indentOf = Infinity; state.indentToken = null; state.innerMode = null; state.innerState = null; } } function restOfLine(stream, state) { if (stream.sol()) { // if restOfLine was set at end of line, ignore it state.restOfLine = ''; } if (state.restOfLine) { stream.skipToEnd(); var tok = state.restOfLine; state.restOfLine = ''; return tok; } } function startState() { return new State(); } function copyState(state) { return state.copy(); } /** * Get the next token in the stream * * @param {Stream} stream * @param {State} state */ function nextToken(stream, state) { var tok = innerMode(stream, state) || restOfLine(stream, state) || interpolationContinued(stream, state) || includeFilteredContinued(stream, state) || eachContinued(stream, state) || attrsContinued(stream, state) || javaScript(stream, state) || javaScriptArguments(stream, state) || callArguments(stream, state) || yieldStatement(stream, state) || doctype(stream, state) || interpolation(stream, state) || caseStatement(stream, state) || when(stream, state) || defaultStatement(stream, state) || extendsStatement(stream, state) || append(stream, state) || prepend(stream, state) || block(stream, state) || include(stream, state) || includeFiltered(stream, state) || mixin(stream, state) || call(stream, state) || conditional(stream, state) || each(stream, state) || whileStatement(stream, state) || tag(stream, state) || filter(stream, state) || code(stream, state) || id(stream, state) || className(stream, state) || attrs(stream, state) || attributesBlock(stream, state) || indent(stream, state) || text(stream, state) || comment(stream, state) || colon(stream, state) || dot(stream, state) || fail(stream, state); return tok === true ? null : tok; } return { startState: startState, copyState: copyState, token: nextToken }; }, 'javascript', 'css', 'htmlmixed'); CodeMirror.defineMIME('text/x-pug', 'pug'); CodeMirror.defineMIME('text/x-jade', 'pug'); }); application/library/codemirror/mode/puppet/index.html000064400000006274147577724760017161 0ustar00 CodeMirror: Puppet mode

Puppet mode

MIME types defined: text/x-puppet.

application/library/codemirror/mode/puppet/puppet.js000064400000016620147577724760017033 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("puppet", function () { // Stores the words from the define method var words = {}; // Taken, mostly, from the Puppet official variable standards regex var variable_regex = /({)?([a-z][a-z0-9_]*)?((::[a-z][a-z0-9_]*)*::)?[a-zA-Z0-9_]+(})?/; // Takes a string of words separated by spaces and adds them as // keys with the value of the first argument 'style' function define(style, string) { var split = string.split(' '); for (var i = 0; i < split.length; i++) { words[split[i]] = style; } } // Takes commonly known puppet types/words and classifies them to a style define('keyword', 'class define site node include import inherits'); define('keyword', 'case if else in and elsif default or'); define('atom', 'false true running present absent file directory undef'); define('builtin', 'action augeas burst chain computer cron destination dport exec ' + 'file filebucket group host icmp iniface interface jump k5login limit log_level ' + 'log_prefix macauthorization mailalias maillist mcx mount nagios_command ' + 'nagios_contact nagios_contactgroup nagios_host nagios_hostdependency ' + 'nagios_hostescalation nagios_hostextinfo nagios_hostgroup nagios_service ' + 'nagios_servicedependency nagios_serviceescalation nagios_serviceextinfo ' + 'nagios_servicegroup nagios_timeperiod name notify outiface package proto reject ' + 'resources router schedule scheduled_task selboolean selmodule service source ' + 'sport ssh_authorized_key sshkey stage state table tidy todest toports tosource ' + 'user vlan yumrepo zfs zone zpool'); // After finding a start of a string ('|") this function attempts to find the end; // If a variable is encountered along the way, we display it differently when it // is encapsulated in a double-quoted string. function tokenString(stream, state) { var current, prev, found_var = false; while (!stream.eol() && (current = stream.next()) != state.pending) { if (current === '$' && prev != '\\' && state.pending == '"') { found_var = true; break; } prev = current; } if (found_var) { stream.backUp(1); } if (current == state.pending) { state.continueString = false; } else { state.continueString = true; } return "string"; } // Main function function tokenize(stream, state) { // Matches one whole word var word = stream.match(/[\w]+/, false); // Matches attributes (i.e. ensure => present ; 'ensure' would be matched) var attribute = stream.match(/(\s+)?\w+\s+=>.*/, false); // Matches non-builtin resource declarations // (i.e. "apache::vhost {" or "mycustomclasss {" would be matched) var resource = stream.match(/(\s+)?[\w:_]+(\s+)?{/, false); // Matches virtual and exported resources (i.e. @@user { ; and the like) var special_resource = stream.match(/(\s+)?[@]{1,2}[\w:_]+(\s+)?{/, false); // Finally advance the stream var ch = stream.next(); // Have we found a variable? if (ch === '$') { if (stream.match(variable_regex)) { // If so, and its in a string, assign it a different color return state.continueString ? 'variable-2' : 'variable'; } // Otherwise return an invalid variable return "error"; } // Should we still be looking for the end of a string? if (state.continueString) { // If so, go through the loop again stream.backUp(1); return tokenString(stream, state); } // Are we in a definition (class, node, define)? if (state.inDefinition) { // If so, return def (i.e. for 'class myclass {' ; 'myclass' would be matched) if (stream.match(/(\s+)?[\w:_]+(\s+)?/)) { return 'def'; } // Match the rest it the next time around stream.match(/\s+{/); state.inDefinition = false; } // Are we in an 'include' statement? if (state.inInclude) { // Match and return the included class stream.match(/(\s+)?\S+(\s+)?/); state.inInclude = false; return 'def'; } // Do we just have a function on our hands? // In 'ensure_resource("myclass")', 'ensure_resource' is matched if (stream.match(/(\s+)?\w+\(/)) { stream.backUp(1); return 'def'; } // Have we matched the prior attribute regex? if (attribute) { stream.match(/(\s+)?\w+/); return 'tag'; } // Do we have Puppet specific words? if (word && words.hasOwnProperty(word)) { // Negates the initial next() stream.backUp(1); // rs move the stream stream.match(/[\w]+/); // We want to process these words differently // do to the importance they have in Puppet if (stream.match(/\s+\S+\s+{/, false)) { state.inDefinition = true; } if (word == 'include') { state.inInclude = true; } // Returns their value as state in the prior define methods return words[word]; } // Is there a match on a reference? if (/(^|\s+)[A-Z][\w:_]+/.test(word)) { // Negate the next() stream.backUp(1); // Match the full reference stream.match(/(^|\s+)[A-Z][\w:_]+/); return 'def'; } // Have we matched the prior resource regex? if (resource) { stream.match(/(\s+)?[\w:_]+/); return 'def'; } // Have we matched the prior special_resource regex? if (special_resource) { stream.match(/(\s+)?[@]{1,2}/); return 'special'; } // Match all the comments. All of them. if (ch == "#") { stream.skipToEnd(); return "comment"; } // Have we found a string? if (ch == "'" || ch == '"') { // Store the type (single or double) state.pending = ch; // Perform the looping function to find the end return tokenString(stream, state); } // Match all the brackets if (ch == '{' || ch == '}') { return 'bracket'; } // Match characters that we are going to assume // are trying to be regex if (ch == '/') { stream.match(/.*?\//); return 'variable-3'; } // Match all the numbers if (ch.match(/[0-9]/)) { stream.eatWhile(/[0-9]+/); return 'number'; } // Match the '=' and '=>' operators if (ch == '=') { if (stream.peek() == '>') { stream.next(); } return "operator"; } // Keep advancing through all the rest stream.eatWhile(/[\w-]/); // Return a blank line for everything else return null; } // Start it all return { startState: function () { var state = {}; state.inDefinition = false; state.inInclude = false; state.continueString = false; state.pending = false; return state; }, token: function (stream, state) { // Strip the spaces, but regex will account for them eitherway if (stream.eatSpace()) return null; // Go through the main process return tokenize(stream, state); } }; }); CodeMirror.defineMIME("text/x-puppet", "puppet"); }); application/library/codemirror/mode/python/index.html000064400000013476147577724760017167 0ustar00 CodeMirror: Python mode

Python mode

Cython mode

Configuration Options for Python mode:

  • version - 2/3 - The version of Python to recognize. Default is 2.
  • singleLineStringErrors - true/false - If you have a single-line string that is not terminated at the end of the line, this will show subsequent lines as errors if true, otherwise it will consider the newline as the end of the string. Default is false.
  • hangingIndent - int - If you want to write long arguments to a function starting on a new line, how much that line should be indented. Defaults to one normal indentation unit.

Advanced Configuration Options:

Usefull for superset of python syntax like Enthought enaml, IPython magics and questionmark help

  • singleOperators - RegEx - Regular Expression for single operator matching, default :
    ^[\\+\\-\\*/%&|\\^~<>!]
    including
    @
    on Python 3
  • singleDelimiters - RegEx - Regular Expression for single delimiter matching, default :
    ^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]
  • doubleOperators - RegEx - Regular Expression for double operators matching, default :
    ^((==)|(!=)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))
  • doubleDelimiters - RegEx - Regular Expression for double delimiters matching, default :
    ^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))
  • tripleDelimiters - RegEx - Regular Expression for triple delimiters matching, default :
    ^((//=)|(>>=)|(<<=)|(\\*\\*=))
  • identifiers - RegEx - Regular Expression for identifier, default :
    ^[_A-Za-z][_A-Za-z0-9]*
    on Python 2 and
    ^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*
    on Python 3.
  • extra_keywords - list of string - List of extra words ton consider as keywords
  • extra_builtins - list of string - List of extra words ton consider as builtins

MIME types defined: text/x-python and text/x-cython.

application/library/codemirror/mode/python/test.js000064400000002223147577724760016473 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 4}, {name: "python", version: 3, singleLineStringErrors: false}); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } // Error, because "foobarhello" is neither a known type or property, but // property was expected (after "and"), and it should be in parentheses. MT("decoratorStartOfLine", "[meta @dec]", "[keyword def] [def function]():", " [keyword pass]"); MT("decoratorIndented", "[keyword class] [def Foo]:", " [meta @dec]", " [keyword def] [def function]():", " [keyword pass]"); MT("matmulWithSpace:", "[variable a] [operator @] [variable b]"); MT("matmulWithoutSpace:", "[variable a][operator @][variable b]"); MT("matmulSpaceBefore:", "[variable a] [operator @][variable b]"); MT("fValidStringPrefix", "[string f'this is a {formatted} string']"); MT("uValidStringPrefix", "[string u'this is an unicode string']"); })(); application/library/codemirror/mode/python/python.js000064400000030225147577724760017040 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b"); } var wordOperators = wordRegexp(["and", "or", "not", "is"]); var commonKeywords = ["as", "assert", "break", "class", "continue", "def", "del", "elif", "else", "except", "finally", "for", "from", "global", "if", "import", "lambda", "pass", "raise", "return", "try", "while", "with", "yield", "in"]; var commonBuiltins = ["abs", "all", "any", "bin", "bool", "bytearray", "callable", "chr", "classmethod", "compile", "complex", "delattr", "dict", "dir", "divmod", "enumerate", "eval", "filter", "float", "format", "frozenset", "getattr", "globals", "hasattr", "hash", "help", "hex", "id", "input", "int", "isinstance", "issubclass", "iter", "len", "list", "locals", "map", "max", "memoryview", "min", "next", "object", "oct", "open", "ord", "pow", "property", "range", "repr", "reversed", "round", "set", "setattr", "slice", "sorted", "staticmethod", "str", "sum", "super", "tuple", "type", "vars", "zip", "__import__", "NotImplemented", "Ellipsis", "__debug__"]; CodeMirror.registerHelper("hintWords", "python", commonKeywords.concat(commonBuiltins)); function top(state) { return state.scopes[state.scopes.length - 1]; } CodeMirror.defineMode("python", function(conf, parserConf) { var ERRORCLASS = "error"; var singleDelimiters = parserConf.singleDelimiters || /^[\(\)\[\]\{\}@,:`=;\.]/; var doubleOperators = parserConf.doubleOperators || /^([!<>]==|<>|<<|>>|\/\/|\*\*)/; var doubleDelimiters = parserConf.doubleDelimiters || /^(\+=|\-=|\*=|%=|\/=|&=|\|=|\^=)/; var tripleDelimiters = parserConf.tripleDelimiters || /^(\/\/=|>>=|<<=|\*\*=)/; var hangingIndent = parserConf.hangingIndent || conf.indentUnit; var myKeywords = commonKeywords, myBuiltins = commonBuiltins; if (parserConf.extra_keywords != undefined) myKeywords = myKeywords.concat(parserConf.extra_keywords); if (parserConf.extra_builtins != undefined) myBuiltins = myBuiltins.concat(parserConf.extra_builtins); var py3 = !(parserConf.version && Number(parserConf.version) < 3) if (py3) { // since http://legacy.python.org/dev/peps/pep-0465/ @ is also an operator var singleOperators = parserConf.singleOperators || /^[\+\-\*\/%&|\^~<>!@]/; var identifiers = parserConf.identifiers|| /^[_A-Za-z\u00A1-\uFFFF][_A-Za-z0-9\u00A1-\uFFFF]*/; myKeywords = myKeywords.concat(["nonlocal", "False", "True", "None", "async", "await"]); myBuiltins = myBuiltins.concat(["ascii", "bytes", "exec", "print"]); var stringPrefixes = new RegExp("^(([rbuf]|(br))?('{3}|\"{3}|['\"]))", "i"); } else { var singleOperators = parserConf.singleOperators || /^[\+\-\*\/%&|\^~<>!]/; var identifiers = parserConf.identifiers|| /^[_A-Za-z][_A-Za-z0-9]*/; myKeywords = myKeywords.concat(["exec", "print"]); myBuiltins = myBuiltins.concat(["apply", "basestring", "buffer", "cmp", "coerce", "execfile", "file", "intern", "long", "raw_input", "reduce", "reload", "unichr", "unicode", "xrange", "False", "True", "None"]); var stringPrefixes = new RegExp("^(([rub]|(ur)|(br))?('{3}|\"{3}|['\"]))", "i"); } var keywords = wordRegexp(myKeywords); var builtins = wordRegexp(myBuiltins); // tokenizers function tokenBase(stream, state) { if (stream.sol()) state.indent = stream.indentation() // Handle scope changes if (stream.sol() && top(state).type == "py") { var scopeOffset = top(state).offset; if (stream.eatSpace()) { var lineOffset = stream.indentation(); if (lineOffset > scopeOffset) pushPyScope(state); else if (lineOffset < scopeOffset && dedent(stream, state)) state.errorToken = true; return null; } else { var style = tokenBaseInner(stream, state); if (scopeOffset > 0 && dedent(stream, state)) style += " " + ERRORCLASS; return style; } } return tokenBaseInner(stream, state); } function tokenBaseInner(stream, state) { if (stream.eatSpace()) return null; var ch = stream.peek(); // Handle Comments if (ch == "#") { stream.skipToEnd(); return "comment"; } // Handle Number Literals if (stream.match(/^[0-9\.]/, false)) { var floatLiteral = false; // Floats if (stream.match(/^\d*\.\d+(e[\+\-]?\d+)?/i)) { floatLiteral = true; } if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } if (stream.match(/^\.\d+/)) { floatLiteral = true; } if (floatLiteral) { // Float literals may be "imaginary" stream.eat(/J/i); return "number"; } // Integers var intLiteral = false; // Hex if (stream.match(/^0x[0-9a-f]+/i)) intLiteral = true; // Binary if (stream.match(/^0b[01]+/i)) intLiteral = true; // Octal if (stream.match(/^0o[0-7]+/i)) intLiteral = true; // Decimal if (stream.match(/^[1-9]\d*(e[\+\-]?\d+)?/)) { // Decimal literals may be "imaginary" stream.eat(/J/i); // TODO - Can you have imaginary longs? intLiteral = true; } // Zero by itself with no other piece of number. if (stream.match(/^0(?![\dx])/i)) intLiteral = true; if (intLiteral) { // Integer literals may be "long" stream.eat(/L/i); return "number"; } } // Handle Strings if (stream.match(stringPrefixes)) { state.tokenize = tokenStringFactory(stream.current()); return state.tokenize(stream, state); } // Handle operators and Delimiters if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) return "punctuation"; if (stream.match(doubleOperators) || stream.match(singleOperators)) return "operator"; if (stream.match(singleDelimiters)) return "punctuation"; if (state.lastToken == "." && stream.match(identifiers)) return "property"; if (stream.match(keywords) || stream.match(wordOperators)) return "keyword"; if (stream.match(builtins)) return "builtin"; if (stream.match(/^(self|cls)\b/)) return "variable-2"; if (stream.match(identifiers)) { if (state.lastToken == "def" || state.lastToken == "class") return "def"; return "variable"; } // Handle non-detected items stream.next(); return ERRORCLASS; } function tokenStringFactory(delimiter) { while ("rubf".indexOf(delimiter.charAt(0).toLowerCase()) >= 0) delimiter = delimiter.substr(1); var singleline = delimiter.length == 1; var OUTCLASS = "string"; function tokenString(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^'"\\]/); if (stream.eat("\\")) { stream.next(); if (singleline && stream.eol()) return OUTCLASS; } else if (stream.match(delimiter)) { state.tokenize = tokenBase; return OUTCLASS; } else { stream.eat(/['"]/); } } if (singleline) { if (parserConf.singleLineStringErrors) return ERRORCLASS; else state.tokenize = tokenBase; } return OUTCLASS; } tokenString.isString = true; return tokenString; } function pushPyScope(state) { while (top(state).type != "py") state.scopes.pop() state.scopes.push({offset: top(state).offset + conf.indentUnit, type: "py", align: null}) } function pushBracketScope(stream, state, type) { var align = stream.match(/^([\s\[\{\(]|#.*)*$/, false) ? null : stream.column() + 1 state.scopes.push({offset: state.indent + hangingIndent, type: type, align: align}) } function dedent(stream, state) { var indented = stream.indentation(); while (state.scopes.length > 1 && top(state).offset > indented) { if (top(state).type != "py") return true; state.scopes.pop(); } return top(state).offset != indented; } function tokenLexer(stream, state) { if (stream.sol()) state.beginningOfLine = true; var style = state.tokenize(stream, state); var current = stream.current(); // Handle decorators if (state.beginningOfLine && current == "@") return stream.match(identifiers, false) ? "meta" : py3 ? "operator" : ERRORCLASS; if (/\S/.test(current)) state.beginningOfLine = false; if ((style == "variable" || style == "builtin") && state.lastToken == "meta") style = "meta"; // Handle scope changes. if (current == "pass" || current == "return") state.dedent += 1; if (current == "lambda") state.lambda = true; if (current == ":" && !state.lambda && top(state).type == "py") pushPyScope(state); var delimiter_index = current.length == 1 ? "[({".indexOf(current) : -1; if (delimiter_index != -1) pushBracketScope(stream, state, "])}".slice(delimiter_index, delimiter_index+1)); delimiter_index = "])}".indexOf(current); if (delimiter_index != -1) { if (top(state).type == current) state.indent = state.scopes.pop().offset - hangingIndent else return ERRORCLASS; } if (state.dedent > 0 && stream.eol() && top(state).type == "py") { if (state.scopes.length > 1) state.scopes.pop(); state.dedent -= 1; } return style; } var external = { startState: function(basecolumn) { return { tokenize: tokenBase, scopes: [{offset: basecolumn || 0, type: "py", align: null}], indent: basecolumn || 0, lastToken: null, lambda: false, dedent: 0 }; }, token: function(stream, state) { var addErr = state.errorToken; if (addErr) state.errorToken = false; var style = tokenLexer(stream, state); if (style && style != "comment") state.lastToken = (style == "keyword" || style == "punctuation") ? stream.current() : style; if (style == "punctuation") style = null; if (stream.eol() && state.lambda) state.lambda = false; return addErr ? style + " " + ERRORCLASS : style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase) return state.tokenize.isString ? CodeMirror.Pass : 0; var scope = top(state), closing = scope.type == textAfter.charAt(0) if (scope.align != null) return scope.align - (closing ? 1 : 0) else return scope.offset - (closing ? hangingIndent : 0) }, electricInput: /^\s*[\}\]\)]$/, closeBrackets: {triples: "'\""}, lineComment: "#", fold: "indent" }; return external; }); CodeMirror.defineMIME("text/x-python", "python"); var words = function(str) { return str.split(" "); }; CodeMirror.defineMIME("text/x-cython", { name: "python", extra_keywords: words("by cdef cimport cpdef ctypedef enum except"+ "extern gil include nogil property public"+ "readonly struct union DEF IF ELIF ELSE") }); }); application/library/codemirror/mode/q/q.js000064400000014731147577724760014702 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("q",function(config){ var indentUnit=config.indentUnit, curPunc, keywords=buildRE(["abs","acos","aj","aj0","all","and","any","asc","asin","asof","atan","attr","avg","avgs","bin","by","ceiling","cols","cor","cos","count","cov","cross","csv","cut","delete","deltas","desc","dev","differ","distinct","div","do","each","ej","enlist","eval","except","exec","exit","exp","fby","fills","first","fkeys","flip","floor","from","get","getenv","group","gtime","hclose","hcount","hdel","hopen","hsym","iasc","idesc","if","ij","in","insert","inter","inv","key","keys","last","like","list","lj","load","log","lower","lsq","ltime","ltrim","mavg","max","maxs","mcount","md5","mdev","med","meta","min","mins","mmax","mmin","mmu","mod","msum","neg","next","not","null","or","over","parse","peach","pj","plist","prd","prds","prev","prior","rand","rank","ratios","raze","read0","read1","reciprocal","reverse","rload","rotate","rsave","rtrim","save","scan","select","set","setenv","show","signum","sin","sqrt","ss","ssr","string","sublist","sum","sums","sv","system","tables","tan","til","trim","txf","type","uj","ungroup","union","update","upper","upsert","value","var","view","views","vs","wavg","where","where","while","within","wj","wj1","wsum","xasc","xbar","xcol","xcols","xdesc","xexp","xgroup","xkey","xlog","xprev","xrank"]), E=/[|/&^!+:\\\-*%$=~#;@><,?_\'\"\[\(\]\)\s{}]/; function buildRE(w){return new RegExp("^("+w.join("|")+")$");} function tokenBase(stream,state){ var sol=stream.sol(),c=stream.next(); curPunc=null; if(sol) if(c=="/") return(state.tokenize=tokenLineComment)(stream,state); else if(c=="\\"){ if(stream.eol()||/\s/.test(stream.peek())) return stream.skipToEnd(),/^\\\s*$/.test(stream.current())?(state.tokenize=tokenCommentToEOF)(stream, state):state.tokenize=tokenBase,"comment"; else return state.tokenize=tokenBase,"builtin"; } if(/\s/.test(c)) return stream.peek()=="/"?(stream.skipToEnd(),"comment"):"whitespace"; if(c=='"') return(state.tokenize=tokenString)(stream,state); if(c=='`') return stream.eatWhile(/[A-Z|a-z|\d|_|:|\/|\.]/),"symbol"; if(("."==c&&/\d/.test(stream.peek()))||/\d/.test(c)){ var t=null; stream.backUp(1); if(stream.match(/^\d{4}\.\d{2}(m|\.\d{2}([D|T](\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)?)?)/) || stream.match(/^\d+D(\d{2}(:\d{2}(:\d{2}(\.\d{1,9})?)?)?)/) || stream.match(/^\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?/) || stream.match(/^\d+[ptuv]{1}/)) t="temporal"; else if(stream.match(/^0[NwW]{1}/) || stream.match(/^0x[\d|a-f|A-F]*/) || stream.match(/^[0|1]+[b]{1}/) || stream.match(/^\d+[chijn]{1}/) || stream.match(/-?\d*(\.\d*)?(e[+\-]?\d+)?(e|f)?/)) t="number"; return(t&&(!(c=stream.peek())||E.test(c)))?t:(stream.next(),"error"); } if(/[A-Z|a-z]|\./.test(c)) return stream.eatWhile(/[A-Z|a-z|\.|_|\d]/),keywords.test(stream.current())?"keyword":"variable"; if(/[|/&^!+:\\\-*%$=~#;@><\.,?_\']/.test(c)) return null; if(/[{}\(\[\]\)]/.test(c)) return null; return"error"; } function tokenLineComment(stream,state){ return stream.skipToEnd(),/\/\s*$/.test(stream.current())?(state.tokenize=tokenBlockComment)(stream,state):(state.tokenize=tokenBase),"comment"; } function tokenBlockComment(stream,state){ var f=stream.sol()&&stream.peek()=="\\"; stream.skipToEnd(); if(f&&/^\\\s*$/.test(stream.current())) state.tokenize=tokenBase; return"comment"; } function tokenCommentToEOF(stream){return stream.skipToEnd(),"comment";} function tokenString(stream,state){ var escaped=false,next,end=false; while((next=stream.next())){ if(next=="\""&&!escaped){end=true;break;} escaped=!escaped&&next=="\\"; } if(end)state.tokenize=tokenBase; return"string"; } function pushContext(state,type,col){state.context={prev:state.context,indent:state.indent,col:col,type:type};} function popContext(state){state.indent=state.context.indent;state.context=state.context.prev;} return{ startState:function(){ return{tokenize:tokenBase, context:null, indent:0, col:0}; }, token:function(stream,state){ if(stream.sol()){ if(state.context&&state.context.align==null) state.context.align=false; state.indent=stream.indentation(); } //if (stream.eatSpace()) return null; var style=state.tokenize(stream,state); if(style!="comment"&&state.context&&state.context.align==null&&state.context.type!="pattern"){ state.context.align=true; } if(curPunc=="(")pushContext(state,")",stream.column()); else if(curPunc=="[")pushContext(state,"]",stream.column()); else if(curPunc=="{")pushContext(state,"}",stream.column()); else if(/[\]\}\)]/.test(curPunc)){ while(state.context&&state.context.type=="pattern")popContext(state); if(state.context&&curPunc==state.context.type)popContext(state); } else if(curPunc=="."&&state.context&&state.context.type=="pattern")popContext(state); else if(/atom|string|variable/.test(style)&&state.context){ if(/[\}\]]/.test(state.context.type)) pushContext(state,"pattern",stream.column()); else if(state.context.type=="pattern"&&!state.context.align){ state.context.align=true; state.context.col=stream.column(); } } return style; }, indent:function(state,textAfter){ var firstChar=textAfter&&textAfter.charAt(0); var context=state.context; if(/[\]\}]/.test(firstChar)) while (context&&context.type=="pattern")context=context.prev; var closing=context&&firstChar==context.type; if(!context) return 0; else if(context.type=="pattern") return context.col; else if(context.align) return context.col+(closing?0:1); else return context.indent+(closing?0:indentUnit); } }; }); CodeMirror.defineMIME("text/x-q","q"); }); application/library/codemirror/mode/q/index.html000064400000021401147577724760016071 0ustar00 CodeMirror: Q mode

Q mode

MIME type defined: text/x-q.

application/library/codemirror/mode/r/index.html000064400000005016147577724760016076 0ustar00 CodeMirror: R mode

R mode

MIME types defined: text/x-rsrc.

Development of the CodeMirror R mode was kindly sponsored by Ubalo.

application/library/codemirror/mode/r/r.js000064400000013055147577724760014702 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.registerHelper("wordChars", "r", /[\w.]/); CodeMirror.defineMode("r", function(config) { function wordObj(str) { var words = str.split(" "), res = {}; for (var i = 0; i < words.length; ++i) res[words[i]] = true; return res; } var atoms = wordObj("NULL NA Inf NaN NA_integer_ NA_real_ NA_complex_ NA_character_"); var builtins = wordObj("list quote bquote eval return call parse deparse"); var keywords = wordObj("if else repeat while function for in next break"); var blockkeywords = wordObj("if else repeat while function for"); var opChars = /[+\-*\/^<>=!&|~$:]/; var curPunc; function tokenBase(stream, state) { curPunc = null; var ch = stream.next(); if (ch == "#") { stream.skipToEnd(); return "comment"; } else if (ch == "0" && stream.eat("x")) { stream.eatWhile(/[\da-f]/i); return "number"; } else if (ch == "." && stream.eat(/\d/)) { stream.match(/\d*(?:e[+\-]?\d+)?/); return "number"; } else if (/\d/.test(ch)) { stream.match(/\d*(?:\.\d+)?(?:e[+\-]\d+)?L?/); return "number"; } else if (ch == "'" || ch == '"') { state.tokenize = tokenString(ch); return "string"; } else if (ch == "." && stream.match(/.[.\d]+/)) { return "keyword"; } else if (/[\w\.]/.test(ch) && ch != "_") { stream.eatWhile(/[\w\.]/); var word = stream.current(); if (atoms.propertyIsEnumerable(word)) return "atom"; if (keywords.propertyIsEnumerable(word)) { // Block keywords start new blocks, except 'else if', which only starts // one new block for the 'if', no block for the 'else'. if (blockkeywords.propertyIsEnumerable(word) && !stream.match(/\s*if(\s+|$)/, false)) curPunc = "block"; return "keyword"; } if (builtins.propertyIsEnumerable(word)) return "builtin"; return "variable"; } else if (ch == "%") { if (stream.skipTo("%")) stream.next(); return "variable-2"; } else if (ch == "<" && stream.eat("-")) { return "arrow"; } else if (ch == "=" && state.ctx.argList) { return "arg-is"; } else if (opChars.test(ch)) { if (ch == "$") return "dollar"; stream.eatWhile(opChars); return "operator"; } else if (/[\(\){}\[\];]/.test(ch)) { curPunc = ch; if (ch == ";") return "semi"; return null; } else { return null; } } function tokenString(quote) { return function(stream, state) { if (stream.eat("\\")) { var ch = stream.next(); if (ch == "x") stream.match(/^[a-f0-9]{2}/i); else if ((ch == "u" || ch == "U") && stream.eat("{") && stream.skipTo("}")) stream.next(); else if (ch == "u") stream.match(/^[a-f0-9]{4}/i); else if (ch == "U") stream.match(/^[a-f0-9]{8}/i); else if (/[0-7]/.test(ch)) stream.match(/^[0-7]{1,2}/); return "string-2"; } else { var next; while ((next = stream.next()) != null) { if (next == quote) { state.tokenize = tokenBase; break; } if (next == "\\") { stream.backUp(1); break; } } return "string"; } }; } function push(state, type, stream) { state.ctx = {type: type, indent: state.indent, align: null, column: stream.column(), prev: state.ctx}; } function pop(state) { state.indent = state.ctx.indent; state.ctx = state.ctx.prev; } return { startState: function() { return {tokenize: tokenBase, ctx: {type: "top", indent: -config.indentUnit, align: false}, indent: 0, afterIdent: false}; }, token: function(stream, state) { if (stream.sol()) { if (state.ctx.align == null) state.ctx.align = false; state.indent = stream.indentation(); } if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); if (style != "comment" && state.ctx.align == null) state.ctx.align = true; var ctype = state.ctx.type; if ((curPunc == ";" || curPunc == "{" || curPunc == "}") && ctype == "block") pop(state); if (curPunc == "{") push(state, "}", stream); else if (curPunc == "(") { push(state, ")", stream); if (state.afterIdent) state.ctx.argList = true; } else if (curPunc == "[") push(state, "]", stream); else if (curPunc == "block") push(state, "block", stream); else if (curPunc == ctype) pop(state); state.afterIdent = style == "variable" || style == "keyword"; return style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase) return 0; var firstChar = textAfter && textAfter.charAt(0), ctx = state.ctx, closing = firstChar == ctx.type; if (ctx.type == "block") return ctx.indent + (firstChar == "{" ? 0 : config.indentUnit); else if (ctx.align) return ctx.column + (closing ? 0 : 1); else return ctx.indent + (closing ? 0 : config.indentUnit); }, lineComment: "#" }; }); CodeMirror.defineMIME("text/x-rsrc", "r"); }); application/library/codemirror/mode/rpm/changes/index.html000064400000004204147577724760020041 0ustar00 CodeMirror: RPM changes mode

RPM changes mode

MIME types defined: text/x-rpm-changes.

application/library/codemirror/mode/rpm/index.html000064400000011017147577724760016431 0ustar00 CodeMirror: RPM changes mode

RPM changes mode

RPM spec mode

MIME types defined: text/x-rpm-spec, text/x-rpm-changes.

application/library/codemirror/mode/rpm/rpm.js000064400000007277147577724760015605 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("rpm-changes", function() { var headerSeperator = /^-+$/; var headerLine = /^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ?\d{1,2} \d{2}:\d{2}(:\d{2})? [A-Z]{3,4} \d{4} - /; var simpleEmail = /^[\w+.-]+@[\w.-]+/; return { token: function(stream) { if (stream.sol()) { if (stream.match(headerSeperator)) { return 'tag'; } if (stream.match(headerLine)) { return 'tag'; } } if (stream.match(simpleEmail)) { return 'string'; } stream.next(); return null; } }; }); CodeMirror.defineMIME("text/x-rpm-changes", "rpm-changes"); // Quick and dirty spec file highlighting CodeMirror.defineMode("rpm-spec", function() { var arch = /^(i386|i586|i686|x86_64|ppc64le|ppc64|ppc|ia64|s390x|s390|sparc64|sparcv9|sparc|noarch|alphaev6|alpha|hppa|mipsel)/; var preamble = /^[a-zA-Z0-9()]+:/; var section = /^%(debug_package|package|description|prep|build|install|files|clean|changelog|preinstall|preun|postinstall|postun|pretrans|posttrans|pre|post|triggerin|triggerun|verifyscript|check|triggerpostun|triggerprein|trigger)/; var control_flow_complex = /^%(ifnarch|ifarch|if)/; // rpm control flow macros var control_flow_simple = /^%(else|endif)/; // rpm control flow macros var operators = /^(\!|\?|\<\=|\<|\>\=|\>|\=\=|\&\&|\|\|)/; // operators in control flow macros return { startState: function () { return { controlFlow: false, macroParameters: false, section: false }; }, token: function (stream, state) { var ch = stream.peek(); if (ch == "#") { stream.skipToEnd(); return "comment"; } if (stream.sol()) { if (stream.match(preamble)) { return "header"; } if (stream.match(section)) { return "atom"; } } if (stream.match(/^\$\w+/)) { return "def"; } // Variables like '$RPM_BUILD_ROOT' if (stream.match(/^\$\{\w+\}/)) { return "def"; } // Variables like '${RPM_BUILD_ROOT}' if (stream.match(control_flow_simple)) { return "keyword"; } if (stream.match(control_flow_complex)) { state.controlFlow = true; return "keyword"; } if (state.controlFlow) { if (stream.match(operators)) { return "operator"; } if (stream.match(/^(\d+)/)) { return "number"; } if (stream.eol()) { state.controlFlow = false; } } if (stream.match(arch)) { if (stream.eol()) { state.controlFlow = false; } return "number"; } // Macros like '%make_install' or '%attr(0775,root,root)' if (stream.match(/^%[\w]+/)) { if (stream.match(/^\(/)) { state.macroParameters = true; } return "keyword"; } if (state.macroParameters) { if (stream.match(/^\d+/)) { return "number";} if (stream.match(/^\)/)) { state.macroParameters = false; return "keyword"; } } // Macros like '%{defined fedora}' if (stream.match(/^%\{\??[\w \-\:\!]+\}/)) { if (stream.eol()) { state.controlFlow = false; } return "def"; } //TODO: Include bash script sub-parser (CodeMirror supports that) stream.next(); return null; } }; }); CodeMirror.defineMIME("text/x-rpm-spec", "rpm-spec"); }); application/library/codemirror/mode/rst/index.html000064400000042551147577724760016452 0ustar00 CodeMirror: reStructuredText mode

reStructuredText mode

The python mode will be used for highlighting blocks containing Python/IPython terminal sessions: blocks starting with >>> (for Python) or In [num]: (for IPython). Further, the stex mode will be used for highlighting blocks containing LaTex code.

MIME types defined: text/x-rst.

application/library/codemirror/mode/rst/rst.js000064400000042213147577724760015616 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../python/python"), require("../stex/stex"), require("../../addon/mode/overlay")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../python/python", "../stex/stex", "../../addon/mode/overlay"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('rst', function (config, options) { var rx_strong = /^\*\*[^\*\s](?:[^\*]*[^\*\s])?\*\*/; var rx_emphasis = /^\*[^\*\s](?:[^\*]*[^\*\s])?\*/; var rx_literal = /^``[^`\s](?:[^`]*[^`\s])``/; var rx_number = /^(?:[\d]+(?:[\.,]\d+)*)/; var rx_positive = /^(?:\s\+[\d]+(?:[\.,]\d+)*)/; var rx_negative = /^(?:\s\-[\d]+(?:[\.,]\d+)*)/; var rx_uri_protocol = "[Hh][Tt][Tt][Pp][Ss]?://"; var rx_uri_domain = "(?:[\\d\\w.-]+)\\.(?:\\w{2,6})"; var rx_uri_path = "(?:/[\\d\\w\\#\\%\\&\\-\\.\\,\\/\\:\\=\\?\\~]+)*"; var rx_uri = new RegExp("^" + rx_uri_protocol + rx_uri_domain + rx_uri_path); var overlay = { token: function (stream) { if (stream.match(rx_strong) && stream.match (/\W+|$/, false)) return 'strong'; if (stream.match(rx_emphasis) && stream.match (/\W+|$/, false)) return 'em'; if (stream.match(rx_literal) && stream.match (/\W+|$/, false)) return 'string-2'; if (stream.match(rx_number)) return 'number'; if (stream.match(rx_positive)) return 'positive'; if (stream.match(rx_negative)) return 'negative'; if (stream.match(rx_uri)) return 'link'; while (stream.next() != null) { if (stream.match(rx_strong, false)) break; if (stream.match(rx_emphasis, false)) break; if (stream.match(rx_literal, false)) break; if (stream.match(rx_number, false)) break; if (stream.match(rx_positive, false)) break; if (stream.match(rx_negative, false)) break; if (stream.match(rx_uri, false)) break; } return null; } }; var mode = CodeMirror.getMode( config, options.backdrop || 'rst-base' ); return CodeMirror.overlayMode(mode, overlay, true); // combine }, 'python', 'stex'); /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// CodeMirror.defineMode('rst-base', function (config) { /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// function format(string) { var args = Array.prototype.slice.call(arguments, 1); return string.replace(/{(\d+)}/g, function (match, n) { return typeof args[n] != 'undefined' ? args[n] : match; }); } /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// var mode_python = CodeMirror.getMode(config, 'python'); var mode_stex = CodeMirror.getMode(config, 'stex'); /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// var SEPA = "\\s+"; var TAIL = "(?:\\s*|\\W|$)", rx_TAIL = new RegExp(format('^{0}', TAIL)); var NAME = "(?:[^\\W\\d_](?:[\\w!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)", rx_NAME = new RegExp(format('^{0}', NAME)); var NAME_WWS = "(?:[^\\W\\d_](?:[\\w\\s!\"#$%&'()\\*\\+,\\-\\.\/:;<=>\\?]*[^\\W_])?)"; var REF_NAME = format('(?:{0}|`{1}`)', NAME, NAME_WWS); var TEXT1 = "(?:[^\\s\\|](?:[^\\|]*[^\\s\\|])?)"; var TEXT2 = "(?:[^\\`]+)", rx_TEXT2 = new RegExp(format('^{0}', TEXT2)); var rx_section = new RegExp( "^([!'#$%&\"()*+,-./:;<=>?@\\[\\\\\\]^_`{|}~])\\1{3,}\\s*$"); var rx_explicit = new RegExp( format('^\\.\\.{0}', SEPA)); var rx_link = new RegExp( format('^_{0}:{1}|^__:{1}', REF_NAME, TAIL)); var rx_directive = new RegExp( format('^{0}::{1}', REF_NAME, TAIL)); var rx_substitution = new RegExp( format('^\\|{0}\\|{1}{2}::{3}', TEXT1, SEPA, REF_NAME, TAIL)); var rx_footnote = new RegExp( format('^\\[(?:\\d+|#{0}?|\\*)]{1}', REF_NAME, TAIL)); var rx_citation = new RegExp( format('^\\[{0}\\]{1}', REF_NAME, TAIL)); var rx_substitution_ref = new RegExp( format('^\\|{0}\\|', TEXT1)); var rx_footnote_ref = new RegExp( format('^\\[(?:\\d+|#{0}?|\\*)]_', REF_NAME)); var rx_citation_ref = new RegExp( format('^\\[{0}\\]_', REF_NAME)); var rx_link_ref1 = new RegExp( format('^{0}__?', REF_NAME)); var rx_link_ref2 = new RegExp( format('^`{0}`_', TEXT2)); var rx_role_pre = new RegExp( format('^:{0}:`{1}`{2}', NAME, TEXT2, TAIL)); var rx_role_suf = new RegExp( format('^`{1}`:{0}:{2}', NAME, TEXT2, TAIL)); var rx_role = new RegExp( format('^:{0}:{1}', NAME, TAIL)); var rx_directive_name = new RegExp(format('^{0}', REF_NAME)); var rx_directive_tail = new RegExp(format('^::{0}', TAIL)); var rx_substitution_text = new RegExp(format('^\\|{0}\\|', TEXT1)); var rx_substitution_sepa = new RegExp(format('^{0}', SEPA)); var rx_substitution_name = new RegExp(format('^{0}', REF_NAME)); var rx_substitution_tail = new RegExp(format('^::{0}', TAIL)); var rx_link_head = new RegExp("^_"); var rx_link_name = new RegExp(format('^{0}|_', REF_NAME)); var rx_link_tail = new RegExp(format('^:{0}', TAIL)); var rx_verbatim = new RegExp('^::\\s*$'); var rx_examples = new RegExp('^\\s+(?:>>>|In \\[\\d+\\]:)\\s'); /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// function to_normal(stream, state) { var token = null; if (stream.sol() && stream.match(rx_examples, false)) { change(state, to_mode, { mode: mode_python, local: CodeMirror.startState(mode_python) }); } else if (stream.sol() && stream.match(rx_explicit)) { change(state, to_explicit); token = 'meta'; } else if (stream.sol() && stream.match(rx_section)) { change(state, to_normal); token = 'header'; } else if (phase(state) == rx_role_pre || stream.match(rx_role_pre, false)) { switch (stage(state)) { case 0: change(state, to_normal, context(rx_role_pre, 1)); stream.match(/^:/); token = 'meta'; break; case 1: change(state, to_normal, context(rx_role_pre, 2)); stream.match(rx_NAME); token = 'keyword'; if (stream.current().match(/^(?:math|latex)/)) { state.tmp_stex = true; } break; case 2: change(state, to_normal, context(rx_role_pre, 3)); stream.match(/^:`/); token = 'meta'; break; case 3: if (state.tmp_stex) { state.tmp_stex = undefined; state.tmp = { mode: mode_stex, local: CodeMirror.startState(mode_stex) }; } if (state.tmp) { if (stream.peek() == '`') { change(state, to_normal, context(rx_role_pre, 4)); state.tmp = undefined; break; } token = state.tmp.mode.token(stream, state.tmp.local); break; } change(state, to_normal, context(rx_role_pre, 4)); stream.match(rx_TEXT2); token = 'string'; break; case 4: change(state, to_normal, context(rx_role_pre, 5)); stream.match(/^`/); token = 'meta'; break; case 5: change(state, to_normal, context(rx_role_pre, 6)); stream.match(rx_TAIL); break; default: change(state, to_normal); } } else if (phase(state) == rx_role_suf || stream.match(rx_role_suf, false)) { switch (stage(state)) { case 0: change(state, to_normal, context(rx_role_suf, 1)); stream.match(/^`/); token = 'meta'; break; case 1: change(state, to_normal, context(rx_role_suf, 2)); stream.match(rx_TEXT2); token = 'string'; break; case 2: change(state, to_normal, context(rx_role_suf, 3)); stream.match(/^`:/); token = 'meta'; break; case 3: change(state, to_normal, context(rx_role_suf, 4)); stream.match(rx_NAME); token = 'keyword'; break; case 4: change(state, to_normal, context(rx_role_suf, 5)); stream.match(/^:/); token = 'meta'; break; case 5: change(state, to_normal, context(rx_role_suf, 6)); stream.match(rx_TAIL); break; default: change(state, to_normal); } } else if (phase(state) == rx_role || stream.match(rx_role, false)) { switch (stage(state)) { case 0: change(state, to_normal, context(rx_role, 1)); stream.match(/^:/); token = 'meta'; break; case 1: change(state, to_normal, context(rx_role, 2)); stream.match(rx_NAME); token = 'keyword'; break; case 2: change(state, to_normal, context(rx_role, 3)); stream.match(/^:/); token = 'meta'; break; case 3: change(state, to_normal, context(rx_role, 4)); stream.match(rx_TAIL); break; default: change(state, to_normal); } } else if (phase(state) == rx_substitution_ref || stream.match(rx_substitution_ref, false)) { switch (stage(state)) { case 0: change(state, to_normal, context(rx_substitution_ref, 1)); stream.match(rx_substitution_text); token = 'variable-2'; break; case 1: change(state, to_normal, context(rx_substitution_ref, 2)); if (stream.match(/^_?_?/)) token = 'link'; break; default: change(state, to_normal); } } else if (stream.match(rx_footnote_ref)) { change(state, to_normal); token = 'quote'; } else if (stream.match(rx_citation_ref)) { change(state, to_normal); token = 'quote'; } else if (stream.match(rx_link_ref1)) { change(state, to_normal); if (!stream.peek() || stream.peek().match(/^\W$/)) { token = 'link'; } } else if (phase(state) == rx_link_ref2 || stream.match(rx_link_ref2, false)) { switch (stage(state)) { case 0: if (!stream.peek() || stream.peek().match(/^\W$/)) { change(state, to_normal, context(rx_link_ref2, 1)); } else { stream.match(rx_link_ref2); } break; case 1: change(state, to_normal, context(rx_link_ref2, 2)); stream.match(/^`/); token = 'link'; break; case 2: change(state, to_normal, context(rx_link_ref2, 3)); stream.match(rx_TEXT2); break; case 3: change(state, to_normal, context(rx_link_ref2, 4)); stream.match(/^`_/); token = 'link'; break; default: change(state, to_normal); } } else if (stream.match(rx_verbatim)) { change(state, to_verbatim); } else { if (stream.next()) change(state, to_normal); } return token; } /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// function to_explicit(stream, state) { var token = null; if (phase(state) == rx_substitution || stream.match(rx_substitution, false)) { switch (stage(state)) { case 0: change(state, to_explicit, context(rx_substitution, 1)); stream.match(rx_substitution_text); token = 'variable-2'; break; case 1: change(state, to_explicit, context(rx_substitution, 2)); stream.match(rx_substitution_sepa); break; case 2: change(state, to_explicit, context(rx_substitution, 3)); stream.match(rx_substitution_name); token = 'keyword'; break; case 3: change(state, to_explicit, context(rx_substitution, 4)); stream.match(rx_substitution_tail); token = 'meta'; break; default: change(state, to_normal); } } else if (phase(state) == rx_directive || stream.match(rx_directive, false)) { switch (stage(state)) { case 0: change(state, to_explicit, context(rx_directive, 1)); stream.match(rx_directive_name); token = 'keyword'; if (stream.current().match(/^(?:math|latex)/)) state.tmp_stex = true; else if (stream.current().match(/^python/)) state.tmp_py = true; break; case 1: change(state, to_explicit, context(rx_directive, 2)); stream.match(rx_directive_tail); token = 'meta'; if (stream.match(/^latex\s*$/) || state.tmp_stex) { state.tmp_stex = undefined; change(state, to_mode, { mode: mode_stex, local: CodeMirror.startState(mode_stex) }); } break; case 2: change(state, to_explicit, context(rx_directive, 3)); if (stream.match(/^python\s*$/) || state.tmp_py) { state.tmp_py = undefined; change(state, to_mode, { mode: mode_python, local: CodeMirror.startState(mode_python) }); } break; default: change(state, to_normal); } } else if (phase(state) == rx_link || stream.match(rx_link, false)) { switch (stage(state)) { case 0: change(state, to_explicit, context(rx_link, 1)); stream.match(rx_link_head); stream.match(rx_link_name); token = 'link'; break; case 1: change(state, to_explicit, context(rx_link, 2)); stream.match(rx_link_tail); token = 'meta'; break; default: change(state, to_normal); } } else if (stream.match(rx_footnote)) { change(state, to_normal); token = 'quote'; } else if (stream.match(rx_citation)) { change(state, to_normal); token = 'quote'; } else { stream.eatSpace(); if (stream.eol()) { change(state, to_normal); } else { stream.skipToEnd(); change(state, to_comment); token = 'comment'; } } return token; } /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// function to_comment(stream, state) { return as_block(stream, state, 'comment'); } function to_verbatim(stream, state) { return as_block(stream, state, 'meta'); } function as_block(stream, state, token) { if (stream.eol() || stream.eatSpace()) { stream.skipToEnd(); return token; } else { change(state, to_normal); return null; } } /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// function to_mode(stream, state) { if (state.ctx.mode && state.ctx.local) { if (stream.sol()) { if (!stream.eatSpace()) change(state, to_normal); return null; } return state.ctx.mode.token(stream, state.ctx.local); } change(state, to_normal); return null; } /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// function context(phase, stage, mode, local) { return {phase: phase, stage: stage, mode: mode, local: local}; } function change(state, tok, ctx) { state.tok = tok; state.ctx = ctx || {}; } function stage(state) { return state.ctx.stage || 0; } function phase(state) { return state.ctx.phase; } /////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////// return { startState: function () { return {tok: to_normal, ctx: context(undefined, 0)}; }, copyState: function (state) { var ctx = state.ctx, tmp = state.tmp; if (ctx.local) ctx = {mode: ctx.mode, local: CodeMirror.copyState(ctx.mode, ctx.local)}; if (tmp) tmp = {mode: tmp.mode, local: CodeMirror.copyState(tmp.mode, tmp.local)}; return {tok: state.tok, ctx: ctx, tmp: tmp}; }, innerMode: function (state) { return state.tmp ? {state: state.tmp.local, mode: state.tmp.mode} : state.ctx.mode ? {state: state.ctx.local, mode: state.ctx.mode} : null; }, token: function (stream, state) { return state.tok(stream, state); } }; }, 'python', 'stex'); /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// CodeMirror.defineMIME('text/x-rst', 'rst'); /////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////// }); application/library/codemirror/mode/ruby/index.html000064400000013165147577724760016622 0ustar00 CodeMirror: Ruby mode

Ruby mode

MIME types defined: text/x-ruby.

Development of the CodeMirror Ruby mode was kindly sponsored by Ubalo.

application/library/codemirror/mode/ruby/ruby.js000064400000024331147577724760016141 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("ruby", function(config) { function wordObj(words) { var o = {}; for (var i = 0, e = words.length; i < e; ++i) o[words[i]] = true; return o; } var keywords = wordObj([ "alias", "and", "BEGIN", "begin", "break", "case", "class", "def", "defined?", "do", "else", "elsif", "END", "end", "ensure", "false", "for", "if", "in", "module", "next", "not", "or", "redo", "rescue", "retry", "return", "self", "super", "then", "true", "undef", "unless", "until", "when", "while", "yield", "nil", "raise", "throw", "catch", "fail", "loop", "callcc", "caller", "lambda", "proc", "public", "protected", "private", "require", "load", "require_relative", "extend", "autoload", "__END__", "__FILE__", "__LINE__", "__dir__" ]); var indentWords = wordObj(["def", "class", "case", "for", "while", "until", "module", "then", "catch", "loop", "proc", "begin"]); var dedentWords = wordObj(["end", "until"]); var matching = {"[": "]", "{": "}", "(": ")"}; var curPunc; function chain(newtok, stream, state) { state.tokenize.push(newtok); return newtok(stream, state); } function tokenBase(stream, state) { if (stream.sol() && stream.match("=begin") && stream.eol()) { state.tokenize.push(readBlockComment); return "comment"; } if (stream.eatSpace()) return null; var ch = stream.next(), m; if (ch == "`" || ch == "'" || ch == '"') { return chain(readQuoted(ch, "string", ch == '"' || ch == "`"), stream, state); } else if (ch == "/") { var currentIndex = stream.current().length; if (stream.skipTo("/")) { var search_till = stream.current().length; stream.backUp(stream.current().length - currentIndex); var balance = 0; // balance brackets while (stream.current().length < search_till) { var chchr = stream.next(); if (chchr == "(") balance += 1; else if (chchr == ")") balance -= 1; if (balance < 0) break; } stream.backUp(stream.current().length - currentIndex); if (balance == 0) return chain(readQuoted(ch, "string-2", true), stream, state); } return "operator"; } else if (ch == "%") { var style = "string", embed = true; if (stream.eat("s")) style = "atom"; else if (stream.eat(/[WQ]/)) style = "string"; else if (stream.eat(/[r]/)) style = "string-2"; else if (stream.eat(/[wxq]/)) { style = "string"; embed = false; } var delim = stream.eat(/[^\w\s=]/); if (!delim) return "operator"; if (matching.propertyIsEnumerable(delim)) delim = matching[delim]; return chain(readQuoted(delim, style, embed, true), stream, state); } else if (ch == "#") { stream.skipToEnd(); return "comment"; } else if (ch == "<" && (m = stream.match(/^<-?[\`\"\']?([a-zA-Z_?]\w*)[\`\"\']?(?:;|$)/))) { return chain(readHereDoc(m[1]), stream, state); } else if (ch == "0") { if (stream.eat("x")) stream.eatWhile(/[\da-fA-F]/); else if (stream.eat("b")) stream.eatWhile(/[01]/); else stream.eatWhile(/[0-7]/); return "number"; } else if (/\d/.test(ch)) { stream.match(/^[\d_]*(?:\.[\d_]+)?(?:[eE][+\-]?[\d_]+)?/); return "number"; } else if (ch == "?") { while (stream.match(/^\\[CM]-/)) {} if (stream.eat("\\")) stream.eatWhile(/\w/); else stream.next(); return "string"; } else if (ch == ":") { if (stream.eat("'")) return chain(readQuoted("'", "atom", false), stream, state); if (stream.eat('"')) return chain(readQuoted('"', "atom", true), stream, state); // :> :>> :< :<< are valid symbols if (stream.eat(/[\<\>]/)) { stream.eat(/[\<\>]/); return "atom"; } // :+ :- :/ :* :| :& :! are valid symbols if (stream.eat(/[\+\-\*\/\&\|\:\!]/)) { return "atom"; } // Symbols can't start by a digit if (stream.eat(/[a-zA-Z$@_\xa1-\uffff]/)) { stream.eatWhile(/[\w$\xa1-\uffff]/); // Only one ? ! = is allowed and only as the last character stream.eat(/[\?\!\=]/); return "atom"; } return "operator"; } else if (ch == "@" && stream.match(/^@?[a-zA-Z_\xa1-\uffff]/)) { stream.eat("@"); stream.eatWhile(/[\w\xa1-\uffff]/); return "variable-2"; } else if (ch == "$") { if (stream.eat(/[a-zA-Z_]/)) { stream.eatWhile(/[\w]/); } else if (stream.eat(/\d/)) { stream.eat(/\d/); } else { stream.next(); // Must be a special global like $: or $! } return "variable-3"; } else if (/[a-zA-Z_\xa1-\uffff]/.test(ch)) { stream.eatWhile(/[\w\xa1-\uffff]/); stream.eat(/[\?\!]/); if (stream.eat(":")) return "atom"; return "ident"; } else if (ch == "|" && (state.varList || state.lastTok == "{" || state.lastTok == "do")) { curPunc = "|"; return null; } else if (/[\(\)\[\]{}\\;]/.test(ch)) { curPunc = ch; return null; } else if (ch == "-" && stream.eat(">")) { return "arrow"; } else if (/[=+\-\/*:\.^%<>~|]/.test(ch)) { var more = stream.eatWhile(/[=+\-\/*:\.^%<>~|]/); if (ch == "." && !more) curPunc = "."; return "operator"; } else { return null; } } function tokenBaseUntilBrace(depth) { if (!depth) depth = 1; return function(stream, state) { if (stream.peek() == "}") { if (depth == 1) { state.tokenize.pop(); return state.tokenize[state.tokenize.length-1](stream, state); } else { state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth - 1); } } else if (stream.peek() == "{") { state.tokenize[state.tokenize.length - 1] = tokenBaseUntilBrace(depth + 1); } return tokenBase(stream, state); }; } function tokenBaseOnce() { var alreadyCalled = false; return function(stream, state) { if (alreadyCalled) { state.tokenize.pop(); return state.tokenize[state.tokenize.length-1](stream, state); } alreadyCalled = true; return tokenBase(stream, state); }; } function readQuoted(quote, style, embed, unescaped) { return function(stream, state) { var escaped = false, ch; if (state.context.type === 'read-quoted-paused') { state.context = state.context.prev; stream.eat("}"); } while ((ch = stream.next()) != null) { if (ch == quote && (unescaped || !escaped)) { state.tokenize.pop(); break; } if (embed && ch == "#" && !escaped) { if (stream.eat("{")) { if (quote == "}") { state.context = {prev: state.context, type: 'read-quoted-paused'}; } state.tokenize.push(tokenBaseUntilBrace()); break; } else if (/[@\$]/.test(stream.peek())) { state.tokenize.push(tokenBaseOnce()); break; } } escaped = !escaped && ch == "\\"; } return style; }; } function readHereDoc(phrase) { return function(stream, state) { if (stream.match(phrase)) state.tokenize.pop(); else stream.skipToEnd(); return "string"; }; } function readBlockComment(stream, state) { if (stream.sol() && stream.match("=end") && stream.eol()) state.tokenize.pop(); stream.skipToEnd(); return "comment"; } return { startState: function() { return {tokenize: [tokenBase], indented: 0, context: {type: "top", indented: -config.indentUnit}, continuedLine: false, lastTok: null, varList: false}; }, token: function(stream, state) { curPunc = null; if (stream.sol()) state.indented = stream.indentation(); var style = state.tokenize[state.tokenize.length-1](stream, state), kwtype; var thisTok = curPunc; if (style == "ident") { var word = stream.current(); style = state.lastTok == "." ? "property" : keywords.propertyIsEnumerable(stream.current()) ? "keyword" : /^[A-Z]/.test(word) ? "tag" : (state.lastTok == "def" || state.lastTok == "class" || state.varList) ? "def" : "variable"; if (style == "keyword") { thisTok = word; if (indentWords.propertyIsEnumerable(word)) kwtype = "indent"; else if (dedentWords.propertyIsEnumerable(word)) kwtype = "dedent"; else if ((word == "if" || word == "unless") && stream.column() == stream.indentation()) kwtype = "indent"; else if (word == "do" && state.context.indented < state.indented) kwtype = "indent"; } } if (curPunc || (style && style != "comment")) state.lastTok = thisTok; if (curPunc == "|") state.varList = !state.varList; if (kwtype == "indent" || /[\(\[\{]/.test(curPunc)) state.context = {prev: state.context, type: curPunc || style, indented: state.indented}; else if ((kwtype == "dedent" || /[\)\]\}]/.test(curPunc)) && state.context.prev) state.context = state.context.prev; if (stream.eol()) state.continuedLine = (curPunc == "\\" || style == "operator"); return style; }, indent: function(state, textAfter) { if (state.tokenize[state.tokenize.length-1] != tokenBase) return 0; var firstChar = textAfter && textAfter.charAt(0); var ct = state.context; var closing = ct.type == matching[firstChar] || ct.type == "keyword" && /^(?:end|until|else|elsif|when|rescue)\b/.test(textAfter); return ct.indented + (closing ? 0 : config.indentUnit) + (state.continuedLine ? config.indentUnit : 0); }, electricInput: /^\s*(?:end|rescue|\})$/, lineComment: "#" }; }); CodeMirror.defineMIME("text/x-ruby", "ruby"); }); application/library/codemirror/mode/ruby/test.js000064400000000726147577724760016141 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "ruby"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("divide_equal_operator", "[variable bar] [operator /=] [variable foo]"); MT("divide_equal_operator_no_spacing", "[variable foo][operator /=][number 42]"); })(); application/library/codemirror/mode/rust/index.html000064400000002774147577724760016642 0ustar00 CodeMirror: Rust mode

Rust mode

MIME types defined: text/x-rustsrc.

application/library/codemirror/mode/rust/test.js000064400000001740147577724760016152 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 4}, "rust"); function MT(name) {test.mode(name, mode, Array.prototype.slice.call(arguments, 1));} MT('integer_test', '[number 123i32]', '[number 123u32]', '[number 123_u32]', '[number 0xff_u8]', '[number 0o70_i16]', '[number 0b1111_1111_1001_0000_i32]', '[number 0usize]'); MT('float_test', '[number 123.0f64]', '[number 0.1f64]', '[number 0.1f32]', '[number 12E+99_f64]'); MT('string-literals-test', '[string "foo"]', '[string r"foo"]', '[string "\\"foo\\""]', '[string r#""foo""#]', '[string "foo #\\"# bar"]', '[string b"foo"]', '[string br"foo"]', '[string b"\\"foo\\""]', '[string br#""foo""#]', '[string br##"foo #" bar"##]', "[string-2 'h']", "[string-2 b'h']"); })(); application/library/codemirror/mode/rust/rust.js000064400000005721147577724760016173 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../../addon/mode/simple")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../../addon/mode/simple"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineSimpleMode("rust",{ start: [ // string and byte string {regex: /b?"/, token: "string", next: "string"}, // raw string and raw byte string {regex: /b?r"/, token: "string", next: "string_raw"}, {regex: /b?r#+"/, token: "string", next: "string_raw_hash"}, // character {regex: /'(?:[^'\\]|\\(?:[nrt0'"]|x[\da-fA-F]{2}|u\{[\da-fA-F]{6}\}))'/, token: "string-2"}, // byte {regex: /b'(?:[^']|\\(?:['\\nrt0]|x[\da-fA-F]{2}))'/, token: "string-2"}, {regex: /(?:(?:[0-9][0-9_]*)(?:(?:[Ee][+-]?[0-9_]+)|\.[0-9_]+(?:[Ee][+-]?[0-9_]+)?)(?:f32|f64)?)|(?:0(?:b[01_]+|(?:o[0-7_]+)|(?:x[0-9a-fA-F_]+))|(?:[0-9][0-9_]*))(?:u8|u16|u32|u64|i8|i16|i32|i64|isize|usize)?/, token: "number"}, {regex: /(let(?:\s+mut)?|fn|enum|mod|struct|type)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/, token: ["keyword", null, "def"]}, {regex: /(?:abstract|alignof|as|box|break|continue|const|crate|do|else|enum|extern|fn|for|final|if|impl|in|loop|macro|match|mod|move|offsetof|override|priv|proc|pub|pure|ref|return|self|sizeof|static|struct|super|trait|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\b/, token: "keyword"}, {regex: /\b(?:Self|isize|usize|char|bool|u8|u16|u32|u64|f16|f32|f64|i8|i16|i32|i64|str|Option)\b/, token: "atom"}, {regex: /\b(?:true|false|Some|None|Ok|Err)\b/, token: "builtin"}, {regex: /\b(fn)(\s+)([a-zA-Z_][a-zA-Z0-9_]*)/, token: ["keyword", null ,"def"]}, {regex: /#!?\[.*\]/, token: "meta"}, {regex: /\/\/.*/, token: "comment"}, {regex: /\/\*/, token: "comment", next: "comment"}, {regex: /[-+\/*=<>!]+/, token: "operator"}, {regex: /[a-zA-Z_]\w*!/,token: "variable-3"}, {regex: /[a-zA-Z_]\w*/, token: "variable"}, {regex: /[\{\[\(]/, indent: true}, {regex: /[\}\]\)]/, dedent: true} ], string: [ {regex: /"/, token: "string", next: "start"}, {regex: /(?:[^\\"]|\\(?:.|$))*/, token: "string"} ], string_raw: [ {regex: /"/, token: "string", next: "start"}, {regex: /[^"]*/, token: "string"} ], string_raw_hash: [ {regex: /"#+/, token: "string", next: "start"}, {regex: /(?:[^"]|"(?!#))*/, token: "string"} ], comment: [ {regex: /.*?\*\//, token: "comment", next: "start"}, {regex: /.*/, token: "comment"} ], meta: { dontIndentStates: ["comment"], electricInput: /^\s*\}$/, blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//", fold: "brace" } }); CodeMirror.defineMIME("text/x-rustsrc", "rust"); }); application/library/codemirror/mode/sas/index.html000064400000003476147577724760016433 0ustar00 CodeMirror: SAS mode

SAS mode

MIME types defined: text/x-sas.

application/library/codemirror/mode/sas/sas.js000064400000037351147577724760015561 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // SAS mode copyright (c) 2016 Jared Dean, SAS Institute // Created by Jared Dean // TODO // indent and de-indent // identify macro variables //Definitions // comment -- text withing * ; or /* */ // keyword -- SAS language variable // variable -- macro variables starts with '&' or variable formats // variable-2 -- DATA Step, proc, or macro names // string -- text within ' ' or " " // operator -- numeric operator + / - * ** le eq ge ... and so on // builtin -- proc %macro data run mend // atom // def (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("sas", function () { var words = {}; var isDoubleOperatorSym = { eq: 'operator', lt: 'operator', le: 'operator', gt: 'operator', ge: 'operator', "in": 'operator', ne: 'operator', or: 'operator' }; var isDoubleOperatorChar = /(<=|>=|!=|<>)/; var isSingleOperatorChar = /[=\(:\),{}.*<>+\-\/^\[\]]/; // Takes a string of words separated by spaces and adds them as // keys with the value of the first argument 'style' function define(style, string, context) { if (context) { var split = string.split(' '); for (var i = 0; i < split.length; i++) { words[split[i]] = {style: style, state: context}; } } } //datastep define('def', 'stack pgm view source debug nesting nolist', ['inDataStep']); define('def', 'if while until for do do; end end; then else cancel', ['inDataStep']); define('def', 'label format _n_ _error_', ['inDataStep']); define('def', 'ALTER BUFNO BUFSIZE CNTLLEV COMPRESS DLDMGACTION ENCRYPT ENCRYPTKEY EXTENDOBSCOUNTER GENMAX GENNUM INDEX LABEL OBSBUF OUTREP PW PWREQ READ REPEMPTY REPLACE REUSE ROLE SORTEDBY SPILL TOBSNO TYPE WRITE FILECLOSE FIRSTOBS IN OBS POINTOBS WHERE WHEREUP IDXNAME IDXWHERE DROP KEEP RENAME', ['inDataStep']); define('def', 'filevar finfo finv fipname fipnamel fipstate first firstobs floor', ['inDataStep']); define('def', 'varfmt varinfmt varlabel varlen varname varnum varray varrayx vartype verify vformat vformatd vformatdx vformatn vformatnx vformatw vformatwx vformatx vinarray vinarrayx vinformat vinformatd vinformatdx vinformatn vinformatnx vinformatw vinformatwx vinformatx vlabel vlabelx vlength vlengthx vname vnamex vnferr vtype vtypex weekday', ['inDataStep']); define('def', 'zipfips zipname zipnamel zipstate', ['inDataStep']); define('def', 'put putc putn', ['inDataStep']); define('builtin', 'data run', ['inDataStep']); //proc define('def', 'data', ['inProc']); // flow control for macros define('def', '%if %end %end; %else %else; %do %do; %then', ['inMacro']); //everywhere define('builtin', 'proc run; quit; libname filename %macro %mend option options', ['ALL']); define('def', 'footnote title libname ods', ['ALL']); define('def', '%let %put %global %sysfunc %eval ', ['ALL']); // automatic macro variables http://support.sas.com/documentation/cdl/en/mcrolref/61885/HTML/default/viewer.htm#a003167023.htm define('variable', '&sysbuffr &syscc &syscharwidth &syscmd &sysdate &sysdate9 &sysday &sysdevic &sysdmg &sysdsn &sysencoding &sysenv &syserr &syserrortext &sysfilrc &syshostname &sysindex &sysinfo &sysjobid &syslast &syslckrc &syslibrc &syslogapplname &sysmacroname &sysmenv &sysmsg &sysncpu &sysodspath &sysparm &syspbuff &sysprocessid &sysprocessname &sysprocname &sysrc &sysscp &sysscpl &sysscpl &syssite &sysstartid &sysstartname &systcpiphostname &systime &sysuserid &sysver &sysvlong &sysvlong4 &syswarningtext', ['ALL']); //footnote[1-9]? title[1-9]? //options statement define('def', 'source2 nosource2 page pageno pagesize', ['ALL']); //proc and datastep define('def', '_all_ _character_ _cmd_ _freq_ _i_ _infile_ _last_ _msg_ _null_ _numeric_ _temporary_ _type_ abort abs addr adjrsq airy alpha alter altlog altprint and arcos array arsin as atan attrc attrib attrn authserver autoexec awscontrol awsdef awsmenu awsmenumerge awstitle backward band base betainv between blocksize blshift bnot bor brshift bufno bufsize bxor by byerr byline byte calculated call cards cards4 catcache cbufno cdf ceil center cexist change chisq cinv class cleanup close cnonct cntllev coalesce codegen col collate collin column comamid comaux1 comaux2 comdef compbl compound compress config continue convert cos cosh cpuid create cross crosstab css curobs cv daccdb daccdbsl daccsl daccsyd dacctab dairy datalines datalines4 datejul datepart datetime day dbcslang dbcstype dclose ddm delete delimiter depdb depdbsl depsl depsyd deptab dequote descending descript design= device dflang dhms dif digamma dim dinfo display distinct dkricond dkrocond dlm dnum do dopen doptname doptnum dread drop dropnote dsname dsnferr echo else emaildlg emailid emailpw emailserver emailsys encrypt end endsas engine eof eov erf erfc error errorcheck errors exist exp fappend fclose fcol fdelete feedback fetch fetchobs fexist fget file fileclose fileexist filefmt filename fileref fmterr fmtsearch fnonct fnote font fontalias fopen foptname foptnum force formatted formchar formdelim formdlim forward fpoint fpos fput fread frewind frlen from fsep fuzz fwrite gaminv gamma getoption getvarc getvarn go goto group gwindow hbar hbound helpenv helploc hms honorappearance hosthelp hostprint hour hpct html hvar ibessel ibr id if index indexc indexw initcmd initstmt inner input inputc inputn inr insert int intck intnx into intrr invaliddata irr is jbessel join juldate keep kentb kurtosis label lag last lbound leave left length levels lgamma lib library libref line linesize link list log log10 log2 logpdf logpmf logsdf lostcard lowcase lrecl ls macro macrogen maps mautosource max maxdec maxr mdy mean measures median memtype merge merror min minute missing missover mlogic mod mode model modify month mopen mort mprint mrecall msglevel msymtabmax mvarsize myy n nest netpv new news nmiss no nobatch nobs nocaps nocardimage nocenter nocharcode nocmdmac nocol nocum nodate nodbcs nodetails nodmr nodms nodmsbatch nodup nodupkey noduplicates noechoauto noequals noerrorabend noexitwindows nofullstimer noicon noimplmac noint nolist noloadlist nomiss nomlogic nomprint nomrecall nomsgcase nomstored nomultenvappl nonotes nonumber noobs noovp nopad nopercent noprint noprintinit normal norow norsasuser nosetinit nosplash nosymbolgen note notes notitle notitles notsorted noverbose noxsync noxwait npv null number numkeys nummousekeys nway obs on open order ordinal otherwise out outer outp= output over ovp p(1 5 10 25 50 75 90 95 99) pad pad2 paired parm parmcards path pathdll pathname pdf peek peekc pfkey pmf point poisson poke position printer probbeta probbnml probchi probf probgam probhypr probit probnegb probnorm probsig probt procleave prt ps pw pwreq qtr quote r ranbin rancau ranexp rangam range ranks rannor ranpoi rantbl rantri ranuni read recfm register regr remote remove rename repeat replace resolve retain return reuse reverse rewind right round rsquare rtf rtrace rtraceloc s s2 samploc sasautos sascontrol sasfrscr sasmsg sasmstore sasscript sasuser saving scan sdf second select selection separated seq serror set setcomm setot sign simple sin sinh siteinfo skewness skip sle sls sortedby sortpgm sortseq sortsize soundex spedis splashlocation split spool sqrt start std stderr stdin stfips stimer stname stnamel stop stopover subgroup subpopn substr sum sumwgt symbol symbolgen symget symput sysget sysin sysleave sysmsg sysparm sysprint sysprintfont sysprod sysrc system t table tables tan tanh tapeclose tbufsize terminal test then timepart tinv tnonct to today tol tooldef totper transformout translate trantab tranwrd trigamma trim trimn trunc truncover type unformatted uniform union until upcase update user usericon uss validate value var weight when where while wincharset window work workinit workterm write wsum xsync xwait yearcutoff yes yyq min max', ['inDataStep', 'inProc']); define('operator', 'and not ', ['inDataStep', 'inProc']); // Main function function tokenize(stream, state) { // Finally advance the stream var ch = stream.next(); // BLOCKCOMMENT if (ch === '/' && stream.eat('*')) { state.continueComment = true; return "comment"; } else if (state.continueComment === true) { // in comment block //comment ends at the beginning of the line if (ch === '*' && stream.peek() === '/') { stream.next(); state.continueComment = false; } else if (stream.skipTo('*')) { //comment is potentially later in line stream.skipTo('*'); stream.next(); if (stream.eat('/')) state.continueComment = false; } else { stream.skipToEnd(); } return "comment"; } // DoubleOperator match var doubleOperator = ch + stream.peek(); // Match all line comments. var myString = stream.string; var myRegexp = /(?:^\s*|[;]\s*)(\*.*?);/ig; var match = myRegexp.exec(myString); if (match !== null) { if (match.index === 0 && (stream.column() !== (match.index + match[0].length - 1))) { stream.backUp(stream.column()); stream.skipTo(';'); stream.next(); return 'comment'; } else if (match.index + 1 < stream.column() && stream.column() < match.index + match[0].length - 1) { // the ';' triggers the match so move one past it to start // the comment block that is why match.index+1 stream.backUp(stream.column() - match.index - 1); stream.skipTo(';'); stream.next(); return 'comment'; } } else if ((ch === '"' || ch === "'") && !state.continueString) { state.continueString = ch return "string" } else if (state.continueString) { if (state.continueString == ch) { state.continueString = null; } else if (stream.skipTo(state.continueString)) { // quote found on this line stream.next(); state.continueString = null; } else { stream.skipToEnd(); } return "string"; } else if (state.continueString !== null && stream.eol()) { stream.skipTo(state.continueString) || stream.skipToEnd(); return "string"; } else if (/[\d\.]/.test(ch)) { //find numbers if (ch === ".") stream.match(/^[0-9]+([eE][\-+]?[0-9]+)?/); else if (ch === "0") stream.match(/^[xX][0-9a-fA-F]+/) || stream.match(/^0[0-7]+/); else stream.match(/^[0-9]*\.?[0-9]*([eE][\-+]?[0-9]+)?/); return "number"; } else if (isDoubleOperatorChar.test(ch + stream.peek())) { // TWO SYMBOL TOKENS stream.next(); return "operator"; } else if (isDoubleOperatorSym.hasOwnProperty(doubleOperator)) { stream.next(); if (stream.peek() === ' ') return isDoubleOperatorSym[doubleOperator.toLowerCase()]; } else if (isSingleOperatorChar.test(ch)) { // SINGLE SYMBOL TOKENS return "operator"; } // Matches one whole word -- even if the word is a character var word; if (stream.match(/[%&;\w]+/, false) != null) { word = ch + stream.match(/[%&;\w]+/, true); if (/&/.test(word)) return 'variable' } else { word = ch; } // the word after DATA PROC or MACRO if (state.nextword) { stream.match(/[\w]+/); // match memname.libname if (stream.peek() === '.') stream.skipTo(' '); state.nextword = false; return 'variable-2'; } word = word.toLowerCase() // Are we in a DATA Step? if (state.inDataStep) { if (word === 'run;' || stream.match(/run\s;/)) { state.inDataStep = false; return 'builtin'; } // variable formats if ((word) && stream.next() === '.') { //either a format or libname.memname if (/\w/.test(stream.peek())) return 'variable-2'; else return 'variable'; } // do we have a DATA Step keyword if (word && words.hasOwnProperty(word) && (words[word].state.indexOf("inDataStep") !== -1 || words[word].state.indexOf("ALL") !== -1)) { //backup to the start of the word if (stream.start < stream.pos) stream.backUp(stream.pos - stream.start); //advance the length of the word and return for (var i = 0; i < word.length; ++i) stream.next(); return words[word].style; } } // Are we in an Proc statement? if (state.inProc) { if (word === 'run;' || word === 'quit;') { state.inProc = false; return 'builtin'; } // do we have a proc keyword if (word && words.hasOwnProperty(word) && (words[word].state.indexOf("inProc") !== -1 || words[word].state.indexOf("ALL") !== -1)) { stream.match(/[\w]+/); return words[word].style; } } // Are we in a Macro statement? if (state.inMacro) { if (word === '%mend') { if (stream.peek() === ';') stream.next(); state.inMacro = false; return 'builtin'; } if (word && words.hasOwnProperty(word) && (words[word].state.indexOf("inMacro") !== -1 || words[word].state.indexOf("ALL") !== -1)) { stream.match(/[\w]+/); return words[word].style; } return 'atom'; } // Do we have Keywords specific words? if (word && words.hasOwnProperty(word)) { // Negates the initial next() stream.backUp(1); // Actually move the stream stream.match(/[\w]+/); if (word === 'data' && /=/.test(stream.peek()) === false) { state.inDataStep = true; state.nextword = true; return 'builtin'; } if (word === 'proc') { state.inProc = true; state.nextword = true; return 'builtin'; } if (word === '%macro') { state.inMacro = true; state.nextword = true; return 'builtin'; } if (/title[1-9]/.test(word)) return 'def'; if (word === 'footnote') { stream.eat(/[1-9]/); return 'def'; } // Returns their value as state in the prior define methods if (state.inDataStep === true && words[word].state.indexOf("inDataStep") !== -1) return words[word].style; if (state.inProc === true && words[word].state.indexOf("inProc") !== -1) return words[word].style; if (state.inMacro === true && words[word].state.indexOf("inMacro") !== -1) return words[word].style; if (words[word].state.indexOf("ALL") !== -1) return words[word].style; return null; } // Unrecognized syntax return null; } return { startState: function () { return { inDataStep: false, inProc: false, inMacro: false, nextword: false, continueString: null, continueComment: false }; }, token: function (stream, state) { // Strip the spaces, but regex will account for them either way if (stream.eatSpace()) return null; // Go through the main process return tokenize(stream, state); }, blockCommentStart: "/*", blockCommentEnd: "*/" }; }); CodeMirror.defineMIME("text/x-sas", "sas"); }); application/library/codemirror/mode/sass/sass.js000064400000023513147577724760016122 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("sass", function(config) { function tokenRegexp(words) { return new RegExp("^" + words.join("|")); } var keywords = ["true", "false", "null", "auto"]; var keywordsRegexp = new RegExp("^" + keywords.join("|")); var operators = ["\\(", "\\)", "=", ">", "<", "==", ">=", "<=", "\\+", "-", "\\!=", "/", "\\*", "%", "and", "or", "not", ";","\\{","\\}",":"]; var opRegexp = tokenRegexp(operators); var pseudoElementsRegexp = /^::?[a-zA-Z_][\w\-]*/; function urlTokens(stream, state) { var ch = stream.peek(); if (ch === ")") { stream.next(); state.tokenizer = tokenBase; return "operator"; } else if (ch === "(") { stream.next(); stream.eatSpace(); return "operator"; } else if (ch === "'" || ch === '"') { state.tokenizer = buildStringTokenizer(stream.next()); return "string"; } else { state.tokenizer = buildStringTokenizer(")", false); return "string"; } } function comment(indentation, multiLine) { return function(stream, state) { if (stream.sol() && stream.indentation() <= indentation) { state.tokenizer = tokenBase; return tokenBase(stream, state); } if (multiLine && stream.skipTo("*/")) { stream.next(); stream.next(); state.tokenizer = tokenBase; } else { stream.skipToEnd(); } return "comment"; }; } function buildStringTokenizer(quote, greedy) { if (greedy == null) { greedy = true; } function stringTokenizer(stream, state) { var nextChar = stream.next(); var peekChar = stream.peek(); var previousChar = stream.string.charAt(stream.pos-2); var endingString = ((nextChar !== "\\" && peekChar === quote) || (nextChar === quote && previousChar !== "\\")); if (endingString) { if (nextChar !== quote && greedy) { stream.next(); } state.tokenizer = tokenBase; return "string"; } else if (nextChar === "#" && peekChar === "{") { state.tokenizer = buildInterpolationTokenizer(stringTokenizer); stream.next(); return "operator"; } else { return "string"; } } return stringTokenizer; } function buildInterpolationTokenizer(currentTokenizer) { return function(stream, state) { if (stream.peek() === "}") { stream.next(); state.tokenizer = currentTokenizer; return "operator"; } else { return tokenBase(stream, state); } }; } function indent(state) { if (state.indentCount == 0) { state.indentCount++; var lastScopeOffset = state.scopes[0].offset; var currentOffset = lastScopeOffset + config.indentUnit; state.scopes.unshift({ offset:currentOffset }); } } function dedent(state) { if (state.scopes.length == 1) return; state.scopes.shift(); } function tokenBase(stream, state) { var ch = stream.peek(); // Comment if (stream.match("/*")) { state.tokenizer = comment(stream.indentation(), true); return state.tokenizer(stream, state); } if (stream.match("//")) { state.tokenizer = comment(stream.indentation(), false); return state.tokenizer(stream, state); } // Interpolation if (stream.match("#{")) { state.tokenizer = buildInterpolationTokenizer(tokenBase); return "operator"; } // Strings if (ch === '"' || ch === "'") { stream.next(); state.tokenizer = buildStringTokenizer(ch); return "string"; } if(!state.cursorHalf){// state.cursorHalf === 0 // first half i.e. before : for key-value pairs // including selectors if (ch === ".") { stream.next(); if (stream.match(/^[\w-]+/)) { indent(state); return "atom"; } else if (stream.peek() === "#") { indent(state); return "atom"; } } if (ch === "#") { stream.next(); // ID selectors if (stream.match(/^[\w-]+/)) { indent(state); return "atom"; } if (stream.peek() === "#") { indent(state); return "atom"; } } // Variables if (ch === "$") { stream.next(); stream.eatWhile(/[\w-]/); return "variable-2"; } // Numbers if (stream.match(/^-?[0-9\.]+/)) return "number"; // Units if (stream.match(/^(px|em|in)\b/)) return "unit"; if (stream.match(keywordsRegexp)) return "keyword"; if (stream.match(/^url/) && stream.peek() === "(") { state.tokenizer = urlTokens; return "atom"; } if (ch === "=") { // Match shortcut mixin definition if (stream.match(/^=[\w-]+/)) { indent(state); return "meta"; } } if (ch === "+") { // Match shortcut mixin definition if (stream.match(/^\+[\w-]+/)){ return "variable-3"; } } if(ch === "@"){ if(stream.match(/@extend/)){ if(!stream.match(/\s*[\w]/)) dedent(state); } } // Indent Directives if (stream.match(/^@(else if|if|media|else|for|each|while|mixin|function)/)) { indent(state); return "meta"; } // Other Directives if (ch === "@") { stream.next(); stream.eatWhile(/[\w-]/); return "meta"; } if (stream.eatWhile(/[\w-]/)){ if(stream.match(/ *: *[\w-\+\$#!\("']/,false)){ return "property"; } else if(stream.match(/ *:/,false)){ indent(state); state.cursorHalf = 1; return "atom"; } else if(stream.match(/ *,/,false)){ return "atom"; } else{ indent(state); return "atom"; } } if(ch === ":"){ if (stream.match(pseudoElementsRegexp)){ // could be a pseudo-element return "keyword"; } stream.next(); state.cursorHalf=1; return "operator"; } } // cursorHalf===0 ends here else{ if (ch === "#") { stream.next(); // Hex numbers if (stream.match(/[0-9a-fA-F]{6}|[0-9a-fA-F]{3}/)){ if(!stream.peek()){ state.cursorHalf = 0; } return "number"; } } // Numbers if (stream.match(/^-?[0-9\.]+/)){ if(!stream.peek()){ state.cursorHalf = 0; } return "number"; } // Units if (stream.match(/^(px|em|in)\b/)){ if(!stream.peek()){ state.cursorHalf = 0; } return "unit"; } if (stream.match(keywordsRegexp)){ if(!stream.peek()){ state.cursorHalf = 0; } return "keyword"; } if (stream.match(/^url/) && stream.peek() === "(") { state.tokenizer = urlTokens; if(!stream.peek()){ state.cursorHalf = 0; } return "atom"; } // Variables if (ch === "$") { stream.next(); stream.eatWhile(/[\w-]/); if(!stream.peek()){ state.cursorHalf = 0; } return "variable-3"; } // bang character for !important, !default, etc. if (ch === "!") { stream.next(); if(!stream.peek()){ state.cursorHalf = 0; } return stream.match(/^[\w]+/) ? "keyword": "operator"; } if (stream.match(opRegexp)){ if(!stream.peek()){ state.cursorHalf = 0; } return "operator"; } // attributes if (stream.eatWhile(/[\w-]/)) { if(!stream.peek()){ state.cursorHalf = 0; } return "attribute"; } //stream.eatSpace(); if(!stream.peek()){ state.cursorHalf = 0; return null; } } // else ends here if (stream.match(opRegexp)) return "operator"; // If we haven't returned by now, we move 1 character // and return an error stream.next(); return null; } function tokenLexer(stream, state) { if (stream.sol()) state.indentCount = 0; var style = state.tokenizer(stream, state); var current = stream.current(); if (current === "@return" || current === "}"){ dedent(state); } if (style !== null) { var startOfToken = stream.pos - current.length; var withCurrentIndent = startOfToken + (config.indentUnit * state.indentCount); var newScopes = []; for (var i = 0; i < state.scopes.length; i++) { var scope = state.scopes[i]; if (scope.offset <= withCurrentIndent) newScopes.push(scope); } state.scopes = newScopes; } return style; } return { startState: function() { return { tokenizer: tokenBase, scopes: [{offset: 0, type: "sass"}], indentCount: 0, cursorHalf: 0, // cursor half tells us if cursor lies after (1) // or before (0) colon (well... more or less) definedVars: [], definedMixins: [] }; }, token: function(stream, state) { var style = tokenLexer(stream, state); state.lastToken = { style: style, content: stream.current() }; return style; }, indent: function(state) { return state.scopes[0].offset; } }; }); CodeMirror.defineMIME("text/x-sass", "sass"); }); application/library/codemirror/mode/sass/index.html000064400000003043147577724760016604 0ustar00 CodeMirror: Sass mode

Sass mode

MIME types defined: text/x-sass.

application/library/codemirror/mode/scheme/index.html000064400000004772147577724760017111 0ustar00 CodeMirror: Scheme mode

Scheme mode

MIME types defined: text/x-scheme.

application/library/codemirror/mode/scheme/scheme.js000064400000032177147577724760016716 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /** * Author: Koh Zi Han, based on implementation by Koh Zi Chun */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("scheme", function () { var BUILTIN = "builtin", COMMENT = "comment", STRING = "string", ATOM = "atom", NUMBER = "number", BRACKET = "bracket"; var INDENT_WORD_SKIP = 2; function makeKeywords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var keywords = makeKeywords("λ case-lambda call/cc class define-class exit-handler field import inherit init-field interface let*-values let-values let/ec mixin opt-lambda override protect provide public rename require require-for-syntax syntax syntax-case syntax-error unit/sig unless when with-syntax and begin call-with-current-continuation call-with-input-file call-with-output-file case cond define define-syntax delay do dynamic-wind else for-each if lambda let let* let-syntax letrec letrec-syntax map or syntax-rules abs acos angle append apply asin assoc assq assv atan boolean? caar cadr call-with-input-file call-with-output-file call-with-values car cdddar cddddr cdr ceiling char->integer char-alphabetic? char-ci<=? char-ci=? char-ci>? char-downcase char-lower-case? char-numeric? char-ready? char-upcase char-upper-case? char-whitespace? char<=? char=? char>? char? close-input-port close-output-port complex? cons cos current-input-port current-output-port denominator display eof-object? eq? equal? eqv? eval even? exact->inexact exact? exp expt #f floor force gcd imag-part inexact->exact inexact? input-port? integer->char integer? interaction-environment lcm length list list->string list->vector list-ref list-tail list? load log magnitude make-polar make-rectangular make-string make-vector max member memq memv min modulo negative? newline not null-environment null? number->string number? numerator odd? open-input-file open-output-file output-port? pair? peek-char port? positive? procedure? quasiquote quote quotient rational? rationalize read read-char real-part real? remainder reverse round scheme-report-environment set! set-car! set-cdr! sin sqrt string string->list string->number string->symbol string-append string-ci<=? string-ci=? string-ci>? string-copy string-fill! string-length string-ref string-set! string<=? string=? string>? string? substring symbol->string symbol? #t tan transcript-off transcript-on truncate values vector vector->list vector-fill! vector-length vector-ref vector-set! with-input-from-file with-output-to-file write write-char zero?"); var indentKeys = makeKeywords("define let letrec let* lambda"); function stateStack(indent, type, prev) { // represents a state stack object this.indent = indent; this.type = type; this.prev = prev; } function pushStack(state, indent, type) { state.indentStack = new stateStack(indent, type, state.indentStack); } function popStack(state) { state.indentStack = state.indentStack.prev; } var binaryMatcher = new RegExp(/^(?:[-+]i|[-+][01]+#*(?:\/[01]+#*)?i|[-+]?[01]+#*(?:\/[01]+#*)?@[-+]?[01]+#*(?:\/[01]+#*)?|[-+]?[01]+#*(?:\/[01]+#*)?[-+](?:[01]+#*(?:\/[01]+#*)?)?i|[-+]?[01]+#*(?:\/[01]+#*)?)(?=[()\s;"]|$)/i); var octalMatcher = new RegExp(/^(?:[-+]i|[-+][0-7]+#*(?:\/[0-7]+#*)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?@[-+]?[0-7]+#*(?:\/[0-7]+#*)?|[-+]?[0-7]+#*(?:\/[0-7]+#*)?[-+](?:[0-7]+#*(?:\/[0-7]+#*)?)?i|[-+]?[0-7]+#*(?:\/[0-7]+#*)?)(?=[()\s;"]|$)/i); var hexMatcher = new RegExp(/^(?:[-+]i|[-+][\da-f]+#*(?:\/[\da-f]+#*)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?@[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?[-+](?:[\da-f]+#*(?:\/[\da-f]+#*)?)?i|[-+]?[\da-f]+#*(?:\/[\da-f]+#*)?)(?=[()\s;"]|$)/i); var decimalMatcher = new RegExp(/^(?:[-+]i|[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)i|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)@[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)|[-+]?(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)[-+](?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*)?i|(?:(?:(?:\d+#+\.?#*|\d+\.\d*#*|\.\d+#*|\d+)(?:[esfdl][-+]?\d+)?)|\d+#*\/\d+#*))(?=[()\s;"]|$)/i); function isBinaryNumber (stream) { return stream.match(binaryMatcher); } function isOctalNumber (stream) { return stream.match(octalMatcher); } function isDecimalNumber (stream, backup) { if (backup === true) { stream.backUp(1); } return stream.match(decimalMatcher); } function isHexNumber (stream) { return stream.match(hexMatcher); } return { startState: function () { return { indentStack: null, indentation: 0, mode: false, sExprComment: false }; }, token: function (stream, state) { if (state.indentStack == null && stream.sol()) { // update indentation, but only if indentStack is empty state.indentation = stream.indentation(); } // skip spaces if (stream.eatSpace()) { return null; } var returnType = null; switch(state.mode){ case "string": // multi-line string parsing mode var next, escaped = false; while ((next = stream.next()) != null) { if (next == "\"" && !escaped) { state.mode = false; break; } escaped = !escaped && next == "\\"; } returnType = STRING; // continue on in scheme-string mode break; case "comment": // comment parsing mode var next, maybeEnd = false; while ((next = stream.next()) != null) { if (next == "#" && maybeEnd) { state.mode = false; break; } maybeEnd = (next == "|"); } returnType = COMMENT; break; case "s-expr-comment": // s-expr commenting mode state.mode = false; if(stream.peek() == "(" || stream.peek() == "["){ // actually start scheme s-expr commenting mode state.sExprComment = 0; }else{ // if not we just comment the entire of the next token stream.eatWhile(/[^/s]/); // eat non spaces returnType = COMMENT; break; } default: // default parsing mode var ch = stream.next(); if (ch == "\"") { state.mode = "string"; returnType = STRING; } else if (ch == "'") { returnType = ATOM; } else if (ch == '#') { if (stream.eat("|")) { // Multi-line comment state.mode = "comment"; // toggle to comment mode returnType = COMMENT; } else if (stream.eat(/[tf]/i)) { // #t/#f (atom) returnType = ATOM; } else if (stream.eat(';')) { // S-Expr comment state.mode = "s-expr-comment"; returnType = COMMENT; } else { var numTest = null, hasExactness = false, hasRadix = true; if (stream.eat(/[ei]/i)) { hasExactness = true; } else { stream.backUp(1); // must be radix specifier } if (stream.match(/^#b/i)) { numTest = isBinaryNumber; } else if (stream.match(/^#o/i)) { numTest = isOctalNumber; } else if (stream.match(/^#x/i)) { numTest = isHexNumber; } else if (stream.match(/^#d/i)) { numTest = isDecimalNumber; } else if (stream.match(/^[-+0-9.]/, false)) { hasRadix = false; numTest = isDecimalNumber; // re-consume the intial # if all matches failed } else if (!hasExactness) { stream.eat('#'); } if (numTest != null) { if (hasRadix && !hasExactness) { // consume optional exactness after radix stream.match(/^#[ei]/i); } if (numTest(stream)) returnType = NUMBER; } } } else if (/^[-+0-9.]/.test(ch) && isDecimalNumber(stream, true)) { // match non-prefixed number, must be decimal returnType = NUMBER; } else if (ch == ";") { // comment stream.skipToEnd(); // rest of the line is a comment returnType = COMMENT; } else if (ch == "(" || ch == "[") { var keyWord = ''; var indentTemp = stream.column(), letter; /** Either (indent-word .. (non-indent-word .. (;something else, bracket, etc. */ while ((letter = stream.eat(/[^\s\(\[\;\)\]]/)) != null) { keyWord += letter; } if (keyWord.length > 0 && indentKeys.propertyIsEnumerable(keyWord)) { // indent-word pushStack(state, indentTemp + INDENT_WORD_SKIP, ch); } else { // non-indent word // we continue eating the spaces stream.eatSpace(); if (stream.eol() || stream.peek() == ";") { // nothing significant after // we restart indentation 1 space after pushStack(state, indentTemp + 1, ch); } else { pushStack(state, indentTemp + stream.current().length, ch); // else we match } } stream.backUp(stream.current().length - 1); // undo all the eating if(typeof state.sExprComment == "number") state.sExprComment++; returnType = BRACKET; } else if (ch == ")" || ch == "]") { returnType = BRACKET; if (state.indentStack != null && state.indentStack.type == (ch == ")" ? "(" : "[")) { popStack(state); if(typeof state.sExprComment == "number"){ if(--state.sExprComment == 0){ returnType = COMMENT; // final closing bracket state.sExprComment = false; // turn off s-expr commenting mode } } } } else { stream.eatWhile(/[\w\$_\-!$%&*+\.\/:<=>?@\^~]/); if (keywords && keywords.propertyIsEnumerable(stream.current())) { returnType = BUILTIN; } else returnType = "variable"; } } return (typeof state.sExprComment == "number") ? COMMENT : returnType; }, indent: function (state) { if (state.indentStack == null) return state.indentation; return state.indentStack.indent; }, closeBrackets: {pairs: "()[]{}\"\""}, lineComment: ";;" }; }); CodeMirror.defineMIME("text/x-scheme", "scheme"); }); application/library/codemirror/mode/shell/index.html000064400000003321147577724760016741 0ustar00 CodeMirror: Shell mode

Shell mode

MIME types defined: text/x-sh.

application/library/codemirror/mode/shell/shell.js000064400000007320147577724760016414 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('shell', function() { var words = {}; function define(style, string) { var split = string.split(' '); for(var i = 0; i < split.length; i++) { words[split[i]] = style; } }; // Atoms define('atom', 'true false'); // Keywords define('keyword', 'if then do else elif while until for in esac fi fin ' + 'fil done exit set unset export function'); // Commands define('builtin', 'ab awk bash beep cat cc cd chown chmod chroot clear cp ' + 'curl cut diff echo find gawk gcc get git grep kill killall ln ls make ' + 'mkdir openssl mv nc node npm ping ps restart rm rmdir sed service sh ' + 'shopt shred source sort sleep ssh start stop su sudo tee telnet top ' + 'touch vi vim wall wc wget who write yes zsh'); function tokenBase(stream, state) { if (stream.eatSpace()) return null; var sol = stream.sol(); var ch = stream.next(); if (ch === '\\') { stream.next(); return null; } if (ch === '\'' || ch === '"' || ch === '`') { state.tokens.unshift(tokenString(ch)); return tokenize(stream, state); } if (ch === '#') { if (sol && stream.eat('!')) { stream.skipToEnd(); return 'meta'; // 'comment'? } stream.skipToEnd(); return 'comment'; } if (ch === '$') { state.tokens.unshift(tokenDollar); return tokenize(stream, state); } if (ch === '+' || ch === '=') { return 'operator'; } if (ch === '-') { stream.eat('-'); stream.eatWhile(/\w/); return 'attribute'; } if (/\d/.test(ch)) { stream.eatWhile(/\d/); if(stream.eol() || !/\w/.test(stream.peek())) { return 'number'; } } stream.eatWhile(/[\w-]/); var cur = stream.current(); if (stream.peek() === '=' && /\w+/.test(cur)) return 'def'; return words.hasOwnProperty(cur) ? words[cur] : null; } function tokenString(quote) { return function(stream, state) { var next, end = false, escaped = false; while ((next = stream.next()) != null) { if (next === quote && !escaped) { end = true; break; } if (next === '$' && !escaped && quote !== '\'') { escaped = true; stream.backUp(1); state.tokens.unshift(tokenDollar); break; } escaped = !escaped && next === '\\'; } if (end || !escaped) { state.tokens.shift(); } return (quote === '`' || quote === ')' ? 'quote' : 'string'); }; }; var tokenDollar = function(stream, state) { if (state.tokens.length > 1) stream.eat('$'); var ch = stream.next(), hungry = /\w/; if (ch === '{') hungry = /[^}]/; if (ch === '(') { state.tokens[0] = tokenString(')'); return tokenize(stream, state); } if (!/\d/.test(ch)) { stream.eatWhile(hungry); stream.eat('}'); } state.tokens.shift(); return 'def'; }; function tokenize(stream, state) { return (state.tokens[0] || tokenBase) (stream, state); }; return { startState: function() {return {tokens:[]};}, token: function(stream, state) { return tokenize(stream, state); }, lineComment: '#', fold: "brace" }; }); CodeMirror.defineMIME('text/x-sh', 'shell'); }); application/library/codemirror/mode/shell/test.js000064400000003354147577724760016267 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({}, "shell"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("var", "text [def $var] text"); MT("varBraces", "text[def ${var}]text"); MT("varVar", "text [def $a$b] text"); MT("varBracesVarBraces", "text[def ${a}${b}]text"); MT("singleQuotedVar", "[string 'text $var text']"); MT("singleQuotedVarBraces", "[string 'text ${var} text']"); MT("doubleQuotedVar", '[string "text ][def $var][string text"]'); MT("doubleQuotedVarBraces", '[string "text][def ${var}][string text"]'); MT("doubleQuotedVarPunct", '[string "text ][def $@][string text"]'); MT("doubleQuotedVarVar", '[string "][def $a$b][string "]'); MT("doubleQuotedVarBracesVarBraces", '[string "][def ${a}${b}][string "]'); MT("notAString", "text\\'text"); MT("escapes", "outside\\'\\\"\\`\\\\[string \"inside\\`\\'\\\"\\\\`\\$notAVar\"]outside\\$\\(notASubShell\\)"); MT("subshell", "[builtin echo] [quote $(whoami)] s log, stardate [quote `date`]."); MT("doubleQuotedSubshell", "[builtin echo] [string \"][quote $(whoami)][string 's log, stardate `date`.\"]"); MT("hashbang", "[meta #!/bin/bash]"); MT("comment", "text [comment # Blurb]"); MT("numbers", "[number 0] [number 1] [number 2]"); MT("keywords", "[keyword while] [atom true]; [keyword do]", " [builtin sleep] [number 3]", "[keyword done]"); MT("options", "[builtin ls] [attribute -l] [attribute --human-readable]"); MT("operator", "[def var][operator =]value"); })(); application/library/codemirror/mode/sieve/index.html000064400000004437147577724760016756 0ustar00 CodeMirror: Sieve (RFC5228) mode

Sieve (RFC5228) mode

MIME types defined: application/sieve.

application/library/codemirror/mode/sieve/sieve.js000064400000010275147577724760016427 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("sieve", function(config) { function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var keywords = words("if elsif else stop require"); var atoms = words("true false not"); var indentUnit = config.indentUnit; function tokenBase(stream, state) { var ch = stream.next(); if (ch == "/" && stream.eat("*")) { state.tokenize = tokenCComment; return tokenCComment(stream, state); } if (ch === '#') { stream.skipToEnd(); return "comment"; } if (ch == "\"") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (ch == "(") { state._indent.push("("); // add virtual angel wings so that editor behaves... // ...more sane incase of broken brackets state._indent.push("{"); return null; } if (ch === "{") { state._indent.push("{"); return null; } if (ch == ")") { state._indent.pop(); state._indent.pop(); } if (ch === "}") { state._indent.pop(); return null; } if (ch == ",") return null; if (ch == ";") return null; if (/[{}\(\),;]/.test(ch)) return null; // 1*DIGIT "K" / "M" / "G" if (/\d/.test(ch)) { stream.eatWhile(/[\d]/); stream.eat(/[KkMmGg]/); return "number"; } // ":" (ALPHA / "_") *(ALPHA / DIGIT / "_") if (ch == ":") { stream.eatWhile(/[a-zA-Z_]/); stream.eatWhile(/[a-zA-Z0-9_]/); return "operator"; } stream.eatWhile(/\w/); var cur = stream.current(); // "text:" *(SP / HTAB) (hash-comment / CRLF) // *(multiline-literal / multiline-dotstart) // "." CRLF if ((cur == "text") && stream.eat(":")) { state.tokenize = tokenMultiLineString; return "string"; } if (keywords.propertyIsEnumerable(cur)) return "keyword"; if (atoms.propertyIsEnumerable(cur)) return "atom"; return null; } function tokenMultiLineString(stream, state) { state._multiLineString = true; // the first line is special it may contain a comment if (!stream.sol()) { stream.eatSpace(); if (stream.peek() == "#") { stream.skipToEnd(); return "comment"; } stream.skipToEnd(); return "string"; } if ((stream.next() == ".") && (stream.eol())) { state._multiLineString = false; state.tokenize = tokenBase; } return "string"; } function tokenCComment(stream, state) { var maybeEnd = false, ch; while ((ch = stream.next()) != null) { if (maybeEnd && ch == "/") { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function tokenString(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) break; escaped = !escaped && ch == "\\"; } if (!escaped) state.tokenize = tokenBase; return "string"; }; } return { startState: function(base) { return {tokenize: tokenBase, baseIndent: base || 0, _indent: []}; }, token: function(stream, state) { if (stream.eatSpace()) return null; return (state.tokenize || tokenBase)(stream, state);; }, indent: function(state, _textAfter) { var length = state._indent.length; if (_textAfter && (_textAfter[0] == "}")) length--; if (length <0) length = 0; return length * indentUnit; }, electricChars: "}" }; }); CodeMirror.defineMIME("application/sieve", "sieve"); }); application/library/codemirror/mode/slim/index.html000064400000005550147577724760016604 0ustar00 CodeMirror: SLIM mode

SLIM mode

MIME types defined: application/x-slim.

Parsing/Highlighting Tests: normal, verbose.

application/library/codemirror/mode/slim/test.js000064400000006072147577724760016124 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh (function() { var mode = CodeMirror.getMode({tabSize: 4, indentUnit: 2}, "slim"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } // Requires at least one media query MT("elementName", "[tag h1] Hey There"); MT("oneElementPerLine", "[tag h1] Hey There .h2"); MT("idShortcut", "[attribute&def #test] Hey There"); MT("tagWithIdShortcuts", "[tag h1][attribute&def #test] Hey There"); MT("classShortcut", "[attribute&qualifier .hello] Hey There"); MT("tagWithIdAndClassShortcuts", "[tag h1][attribute&def #test][attribute&qualifier .hello] Hey There"); MT("docType", "[keyword doctype] xml"); MT("comment", "[comment / Hello WORLD]"); MT("notComment", "[tag h1] This is not a / comment "); MT("attributes", "[tag a]([attribute title]=[string \"test\"]) [attribute href]=[string \"link\"]}"); MT("multiLineAttributes", "[tag a]([attribute title]=[string \"test\"]", " ) [attribute href]=[string \"link\"]}"); MT("htmlCode", "[tag&bracket <][tag h1][tag&bracket >]Title[tag&bracket ]"); MT("rubyBlock", "[operator&special =][variable-2 @item]"); MT("selectorRubyBlock", "[tag a][attribute&qualifier .test][operator&special =] [variable-2 @item]"); MT("nestedRubyBlock", "[tag a]", " [operator&special =][variable puts] [string \"test\"]"); MT("multilinePlaintext", "[tag p]", " | Hello,", " World"); MT("multilineRuby", "[tag p]", " [comment /# this is a comment]", " [comment and this is a comment too]", " | Date/Time", " [operator&special -] [variable now] [operator =] [tag DateTime][operator .][property now]", " [tag strong][operator&special =] [variable now]", " [operator&special -] [keyword if] [variable now] [operator >] [tag DateTime][operator .][property parse]([string \"December 31, 2006\"])", " [operator&special =][string \"Happy\"]", " [operator&special =][string \"Belated\"]", " [operator&special =][string \"Birthday\"]"); MT("multilineComment", "[comment /]", " [comment Multiline]", " [comment Comment]"); MT("hamlAfterRubyTag", "[attribute&qualifier .block]", " [tag strong][operator&special =] [variable now]", " [attribute&qualifier .test]", " [operator&special =][variable now]", " [attribute&qualifier .right]"); MT("stretchedRuby", "[operator&special =] [variable puts] [string \"Hello\"],", " [string \"World\"]"); MT("interpolationInHashAttribute", "[tag div]{[attribute id] = [string \"]#{[variable test]}[string _]#{[variable ting]}[string \"]} test"); MT("interpolationInHTMLAttribute", "[tag div]([attribute title]=[string \"]#{[variable test]}[string _]#{[variable ting]()}[string \"]) Test"); })(); application/library/codemirror/mode/slim/slim.js000064400000043152147577724760016111 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Slim Highlighting for CodeMirror copyright (c) HicknHack Software Gmbh (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../ruby/ruby")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../ruby/ruby"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("slim", function(config) { var htmlMode = CodeMirror.getMode(config, {name: "htmlmixed"}); var rubyMode = CodeMirror.getMode(config, "ruby"); var modes = { html: htmlMode, ruby: rubyMode }; var embedded = { ruby: "ruby", javascript: "javascript", css: "text/css", sass: "text/x-sass", scss: "text/x-scss", less: "text/x-less", styl: "text/x-styl", // no highlighting so far coffee: "coffeescript", asciidoc: "text/x-asciidoc", markdown: "text/x-markdown", textile: "text/x-textile", // no highlighting so far creole: "text/x-creole", // no highlighting so far wiki: "text/x-wiki", // no highlighting so far mediawiki: "text/x-mediawiki", // no highlighting so far rdoc: "text/x-rdoc", // no highlighting so far builder: "text/x-builder", // no highlighting so far nokogiri: "text/x-nokogiri", // no highlighting so far erb: "application/x-erb" }; var embeddedRegexp = function(map){ var arr = []; for(var key in map) arr.push(key); return new RegExp("^("+arr.join('|')+"):"); }(embedded); var styleMap = { "commentLine": "comment", "slimSwitch": "operator special", "slimTag": "tag", "slimId": "attribute def", "slimClass": "attribute qualifier", "slimAttribute": "attribute", "slimSubmode": "keyword special", "closeAttributeTag": null, "slimDoctype": null, "lineContinuation": null }; var closing = { "{": "}", "[": "]", "(": ")" }; var nameStartChar = "_a-zA-Z\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD"; var nameChar = nameStartChar + "\\-0-9\xB7\u0300-\u036F\u203F-\u2040"; var nameRegexp = new RegExp("^[:"+nameStartChar+"](?::["+nameChar+"]|["+nameChar+"]*)"); var attributeNameRegexp = new RegExp("^[:"+nameStartChar+"][:\\."+nameChar+"]*(?=\\s*=)"); var wrappedAttributeNameRegexp = new RegExp("^[:"+nameStartChar+"][:\\."+nameChar+"]*"); var classNameRegexp = /^\.-?[_a-zA-Z]+[\w\-]*/; var classIdRegexp = /^#[_a-zA-Z]+[\w\-]*/; function backup(pos, tokenize, style) { var restore = function(stream, state) { state.tokenize = tokenize; if (stream.pos < pos) { stream.pos = pos; return style; } return state.tokenize(stream, state); }; return function(stream, state) { state.tokenize = restore; return tokenize(stream, state); }; } function maybeBackup(stream, state, pat, offset, style) { var cur = stream.current(); var idx = cur.search(pat); if (idx > -1) { state.tokenize = backup(stream.pos, state.tokenize, style); stream.backUp(cur.length - idx - offset); } return style; } function continueLine(state, column) { state.stack = { parent: state.stack, style: "continuation", indented: column, tokenize: state.line }; state.line = state.tokenize; } function finishContinue(state) { if (state.line == state.tokenize) { state.line = state.stack.tokenize; state.stack = state.stack.parent; } } function lineContinuable(column, tokenize) { return function(stream, state) { finishContinue(state); if (stream.match(/^\\$/)) { continueLine(state, column); return "lineContinuation"; } var style = tokenize(stream, state); if (stream.eol() && stream.current().match(/(?:^|[^\\])(?:\\\\)*\\$/)) { stream.backUp(1); } return style; }; } function commaContinuable(column, tokenize) { return function(stream, state) { finishContinue(state); var style = tokenize(stream, state); if (stream.eol() && stream.current().match(/,$/)) { continueLine(state, column); } return style; }; } function rubyInQuote(endQuote, tokenize) { // TODO: add multi line support return function(stream, state) { var ch = stream.peek(); if (ch == endQuote && state.rubyState.tokenize.length == 1) { // step out of ruby context as it seems to complete processing all the braces stream.next(); state.tokenize = tokenize; return "closeAttributeTag"; } else { return ruby(stream, state); } }; } function startRubySplat(tokenize) { var rubyState; var runSplat = function(stream, state) { if (state.rubyState.tokenize.length == 1 && !state.rubyState.context.prev) { stream.backUp(1); if (stream.eatSpace()) { state.rubyState = rubyState; state.tokenize = tokenize; return tokenize(stream, state); } stream.next(); } return ruby(stream, state); }; return function(stream, state) { rubyState = state.rubyState; state.rubyState = CodeMirror.startState(rubyMode); state.tokenize = runSplat; return ruby(stream, state); }; } function ruby(stream, state) { return rubyMode.token(stream, state.rubyState); } function htmlLine(stream, state) { if (stream.match(/^\\$/)) { return "lineContinuation"; } return html(stream, state); } function html(stream, state) { if (stream.match(/^#\{/)) { state.tokenize = rubyInQuote("}", state.tokenize); return null; } return maybeBackup(stream, state, /[^\\]#\{/, 1, htmlMode.token(stream, state.htmlState)); } function startHtmlLine(lastTokenize) { return function(stream, state) { var style = htmlLine(stream, state); if (stream.eol()) state.tokenize = lastTokenize; return style; }; } function startHtmlMode(stream, state, offset) { state.stack = { parent: state.stack, style: "html", indented: stream.column() + offset, // pipe + space tokenize: state.line }; state.line = state.tokenize = html; return null; } function comment(stream, state) { stream.skipToEnd(); return state.stack.style; } function commentMode(stream, state) { state.stack = { parent: state.stack, style: "comment", indented: state.indented + 1, tokenize: state.line }; state.line = comment; return comment(stream, state); } function attributeWrapper(stream, state) { if (stream.eat(state.stack.endQuote)) { state.line = state.stack.line; state.tokenize = state.stack.tokenize; state.stack = state.stack.parent; return null; } if (stream.match(wrappedAttributeNameRegexp)) { state.tokenize = attributeWrapperAssign; return "slimAttribute"; } stream.next(); return null; } function attributeWrapperAssign(stream, state) { if (stream.match(/^==?/)) { state.tokenize = attributeWrapperValue; return null; } return attributeWrapper(stream, state); } function attributeWrapperValue(stream, state) { var ch = stream.peek(); if (ch == '"' || ch == "\'") { state.tokenize = readQuoted(ch, "string", true, false, attributeWrapper); stream.next(); return state.tokenize(stream, state); } if (ch == '[') { return startRubySplat(attributeWrapper)(stream, state); } if (stream.match(/^(true|false|nil)\b/)) { state.tokenize = attributeWrapper; return "keyword"; } return startRubySplat(attributeWrapper)(stream, state); } function startAttributeWrapperMode(state, endQuote, tokenize) { state.stack = { parent: state.stack, style: "wrapper", indented: state.indented + 1, tokenize: tokenize, line: state.line, endQuote: endQuote }; state.line = state.tokenize = attributeWrapper; return null; } function sub(stream, state) { if (stream.match(/^#\{/)) { state.tokenize = rubyInQuote("}", state.tokenize); return null; } var subStream = new CodeMirror.StringStream(stream.string.slice(state.stack.indented), stream.tabSize); subStream.pos = stream.pos - state.stack.indented; subStream.start = stream.start - state.stack.indented; subStream.lastColumnPos = stream.lastColumnPos - state.stack.indented; subStream.lastColumnValue = stream.lastColumnValue - state.stack.indented; var style = state.subMode.token(subStream, state.subState); stream.pos = subStream.pos + state.stack.indented; return style; } function firstSub(stream, state) { state.stack.indented = stream.column(); state.line = state.tokenize = sub; return state.tokenize(stream, state); } function createMode(mode) { var query = embedded[mode]; var spec = CodeMirror.mimeModes[query]; if (spec) { return CodeMirror.getMode(config, spec); } var factory = CodeMirror.modes[query]; if (factory) { return factory(config, {name: query}); } return CodeMirror.getMode(config, "null"); } function getMode(mode) { if (!modes.hasOwnProperty(mode)) { return modes[mode] = createMode(mode); } return modes[mode]; } function startSubMode(mode, state) { var subMode = getMode(mode); var subState = CodeMirror.startState(subMode); state.subMode = subMode; state.subState = subState; state.stack = { parent: state.stack, style: "sub", indented: state.indented + 1, tokenize: state.line }; state.line = state.tokenize = firstSub; return "slimSubmode"; } function doctypeLine(stream, _state) { stream.skipToEnd(); return "slimDoctype"; } function startLine(stream, state) { var ch = stream.peek(); if (ch == '<') { return (state.tokenize = startHtmlLine(state.tokenize))(stream, state); } if (stream.match(/^[|']/)) { return startHtmlMode(stream, state, 1); } if (stream.match(/^\/(!|\[\w+])?/)) { return commentMode(stream, state); } if (stream.match(/^(-|==?[<>]?)/)) { state.tokenize = lineContinuable(stream.column(), commaContinuable(stream.column(), ruby)); return "slimSwitch"; } if (stream.match(/^doctype\b/)) { state.tokenize = doctypeLine; return "keyword"; } var m = stream.match(embeddedRegexp); if (m) { return startSubMode(m[1], state); } return slimTag(stream, state); } function slim(stream, state) { if (state.startOfLine) { return startLine(stream, state); } return slimTag(stream, state); } function slimTag(stream, state) { if (stream.eat('*')) { state.tokenize = startRubySplat(slimTagExtras); return null; } if (stream.match(nameRegexp)) { state.tokenize = slimTagExtras; return "slimTag"; } return slimClass(stream, state); } function slimTagExtras(stream, state) { if (stream.match(/^(<>?|> state.indented && state.last != "slimSubmode") { state.line = state.tokenize = state.stack.tokenize; state.stack = state.stack.parent; state.subMode = null; state.subState = null; } } if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); state.startOfLine = false; if (style) state.last = style; return styleMap.hasOwnProperty(style) ? styleMap[style] : style; }, blankLine: function(state) { if (state.subMode && state.subMode.blankLine) { return state.subMode.blankLine(state.subState); } }, innerMode: function(state) { if (state.subMode) return {state: state.subState, mode: state.subMode}; return {state: state, mode: mode}; } //indent: function(state) { // return state.indented; //} }; return mode; }, "htmlmixed", "ruby"); CodeMirror.defineMIME("text/x-slim", "slim"); CodeMirror.defineMIME("application/x-slim", "slim"); }); application/library/codemirror/mode/smalltalk/index.html000064400000003560147577724760017623 0ustar00 CodeMirror: Smalltalk mode

Smalltalk mode

Simple Smalltalk mode.

MIME types defined: text/x-stsrc.

application/library/codemirror/mode/smalltalk/smalltalk.js000064400000010677147577724760020157 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('smalltalk', function(config) { var specialChars = /[+\-\/\\*~<>=@%|&?!.,:;^]/; var keywords = /true|false|nil|self|super|thisContext/; var Context = function(tokenizer, parent) { this.next = tokenizer; this.parent = parent; }; var Token = function(name, context, eos) { this.name = name; this.context = context; this.eos = eos; }; var State = function() { this.context = new Context(next, null); this.expectVariable = true; this.indentation = 0; this.userIndentationDelta = 0; }; State.prototype.userIndent = function(indentation) { this.userIndentationDelta = indentation > 0 ? (indentation / config.indentUnit - this.indentation) : 0; }; var next = function(stream, context, state) { var token = new Token(null, context, false); var aChar = stream.next(); if (aChar === '"') { token = nextComment(stream, new Context(nextComment, context)); } else if (aChar === '\'') { token = nextString(stream, new Context(nextString, context)); } else if (aChar === '#') { if (stream.peek() === '\'') { stream.next(); token = nextSymbol(stream, new Context(nextSymbol, context)); } else { if (stream.eatWhile(/[^\s.{}\[\]()]/)) token.name = 'string-2'; else token.name = 'meta'; } } else if (aChar === '$') { if (stream.next() === '<') { stream.eatWhile(/[^\s>]/); stream.next(); } token.name = 'string-2'; } else if (aChar === '|' && state.expectVariable) { token.context = new Context(nextTemporaries, context); } else if (/[\[\]{}()]/.test(aChar)) { token.name = 'bracket'; token.eos = /[\[{(]/.test(aChar); if (aChar === '[') { state.indentation++; } else if (aChar === ']') { state.indentation = Math.max(0, state.indentation - 1); } } else if (specialChars.test(aChar)) { stream.eatWhile(specialChars); token.name = 'operator'; token.eos = aChar !== ';'; // ; cascaded message expression } else if (/\d/.test(aChar)) { stream.eatWhile(/[\w\d]/); token.name = 'number'; } else if (/[\w_]/.test(aChar)) { stream.eatWhile(/[\w\d_]/); token.name = state.expectVariable ? (keywords.test(stream.current()) ? 'keyword' : 'variable') : null; } else { token.eos = state.expectVariable; } return token; }; var nextComment = function(stream, context) { stream.eatWhile(/[^"]/); return new Token('comment', stream.eat('"') ? context.parent : context, true); }; var nextString = function(stream, context) { stream.eatWhile(/[^']/); return new Token('string', stream.eat('\'') ? context.parent : context, false); }; var nextSymbol = function(stream, context) { stream.eatWhile(/[^']/); return new Token('string-2', stream.eat('\'') ? context.parent : context, false); }; var nextTemporaries = function(stream, context) { var token = new Token(null, context, false); var aChar = stream.next(); if (aChar === '|') { token.context = context.parent; token.eos = true; } else { stream.eatWhile(/[^|]/); token.name = 'variable'; } return token; }; return { startState: function() { return new State; }, token: function(stream, state) { state.userIndent(stream.indentation()); if (stream.eatSpace()) { return null; } var token = state.context.next(stream, state.context, state); state.context = token.context; state.expectVariable = token.eos; return token.name; }, blankLine: function(state) { state.userIndent(0); }, indent: function(state, textAfter) { var i = state.context.next === next && textAfter && textAfter.charAt(0) === ']' ? -1 : state.userIndentationDelta; return (state.indentation + i) * config.indentUnit; }, electricChars: ']' }; }); CodeMirror.defineMIME('text/x-stsrc', {name: 'smalltalk'}); }); application/library/codemirror/mode/smarty/index.html000064400000007605147577724760017162 0ustar00 CodeMirror: Smarty mode

Smarty mode

Mode for Smarty version 2 or 3, which allows for custom delimiter tags.

Several configuration parameters are supported:

  • leftDelimiter and rightDelimiter, which should be strings that determine where the Smarty syntax starts and ends.
  • version, which should be 2 or 3.
  • baseMode, which can be a mode spec like "text/html" to set a different background mode.

MIME types defined: text/x-smarty

Smarty 2, custom delimiters

Smarty 3

application/library/codemirror/mode/smarty/smarty.js000064400000015254147577724760017041 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /** * Smarty 2 and 3 mode. */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("smarty", function(config, parserConf) { var rightDelimiter = parserConf.rightDelimiter || "}"; var leftDelimiter = parserConf.leftDelimiter || "{"; var version = parserConf.version || 2; var baseMode = CodeMirror.getMode(config, parserConf.baseMode || "null"); var keyFunctions = ["debug", "extends", "function", "include", "literal"]; var regs = { operatorChars: /[+\-*&%=<>!?]/, validIdentifier: /[a-zA-Z0-9_]/, stringChar: /['"]/ }; var last; function cont(style, lastType) { last = lastType; return style; } function chain(stream, state, parser) { state.tokenize = parser; return parser(stream, state); } // Smarty 3 allows { and } surrounded by whitespace to NOT slip into Smarty mode function doesNotCount(stream, pos) { if (pos == null) pos = stream.pos; return version === 3 && leftDelimiter == "{" && (pos == stream.string.length || /\s/.test(stream.string.charAt(pos))); } function tokenTop(stream, state) { var string = stream.string; for (var scan = stream.pos;;) { var nextMatch = string.indexOf(leftDelimiter, scan); scan = nextMatch + leftDelimiter.length; if (nextMatch == -1 || !doesNotCount(stream, nextMatch + leftDelimiter.length)) break; } if (nextMatch == stream.pos) { stream.match(leftDelimiter); if (stream.eat("*")) { return chain(stream, state, tokenBlock("comment", "*" + rightDelimiter)); } else { state.depth++; state.tokenize = tokenSmarty; last = "startTag"; return "tag"; } } if (nextMatch > -1) stream.string = string.slice(0, nextMatch); var token = baseMode.token(stream, state.base); if (nextMatch > -1) stream.string = string; return token; } // parsing Smarty content function tokenSmarty(stream, state) { if (stream.match(rightDelimiter, true)) { if (version === 3) { state.depth--; if (state.depth <= 0) { state.tokenize = tokenTop; } } else { state.tokenize = tokenTop; } return cont("tag", null); } if (stream.match(leftDelimiter, true)) { state.depth++; return cont("tag", "startTag"); } var ch = stream.next(); if (ch == "$") { stream.eatWhile(regs.validIdentifier); return cont("variable-2", "variable"); } else if (ch == "|") { return cont("operator", "pipe"); } else if (ch == ".") { return cont("operator", "property"); } else if (regs.stringChar.test(ch)) { state.tokenize = tokenAttribute(ch); return cont("string", "string"); } else if (regs.operatorChars.test(ch)) { stream.eatWhile(regs.operatorChars); return cont("operator", "operator"); } else if (ch == "[" || ch == "]") { return cont("bracket", "bracket"); } else if (ch == "(" || ch == ")") { return cont("bracket", "operator"); } else if (/\d/.test(ch)) { stream.eatWhile(/\d/); return cont("number", "number"); } else { if (state.last == "variable") { if (ch == "@") { stream.eatWhile(regs.validIdentifier); return cont("property", "property"); } else if (ch == "|") { stream.eatWhile(regs.validIdentifier); return cont("qualifier", "modifier"); } } else if (state.last == "pipe") { stream.eatWhile(regs.validIdentifier); return cont("qualifier", "modifier"); } else if (state.last == "whitespace") { stream.eatWhile(regs.validIdentifier); return cont("attribute", "modifier"); } if (state.last == "property") { stream.eatWhile(regs.validIdentifier); return cont("property", null); } else if (/\s/.test(ch)) { last = "whitespace"; return null; } var str = ""; if (ch != "/") { str += ch; } var c = null; while (c = stream.eat(regs.validIdentifier)) { str += c; } for (var i=0, j=keyFunctions.length; i CodeMirror: Solr mode

Solr mode

MIME types defined: text/x-solr.

application/library/codemirror/mode/solr/solr.js000064400000005166147577724760016142 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("solr", function() { "use strict"; var isStringChar = /[^\s\|\!\+\-\*\?\~\^\&\:\(\)\[\]\{\}\^\"\\]/; var isOperatorChar = /[\|\!\+\-\*\?\~\^\&]/; var isOperatorString = /^(OR|AND|NOT|TO)$/i; function isNumber(word) { return parseFloat(word, 10).toString() === word; } function tokenString(quote) { return function(stream, state) { var escaped = false, next; while ((next = stream.next()) != null) { if (next == quote && !escaped) break; escaped = !escaped && next == "\\"; } if (!escaped) state.tokenize = tokenBase; return "string"; }; } function tokenOperator(operator) { return function(stream, state) { var style = "operator"; if (operator == "+") style += " positive"; else if (operator == "-") style += " negative"; else if (operator == "|") stream.eat(/\|/); else if (operator == "&") stream.eat(/\&/); else if (operator == "^") style += " boost"; state.tokenize = tokenBase; return style; }; } function tokenWord(ch) { return function(stream, state) { var word = ch; while ((ch = stream.peek()) && ch.match(isStringChar) != null) { word += stream.next(); } state.tokenize = tokenBase; if (isOperatorString.test(word)) return "operator"; else if (isNumber(word)) return "number"; else if (stream.peek() == ":") return "field"; else return "string"; }; } function tokenBase(stream, state) { var ch = stream.next(); if (ch == '"') state.tokenize = tokenString(ch); else if (isOperatorChar.test(ch)) state.tokenize = tokenOperator(ch); else if (isStringChar.test(ch)) state.tokenize = tokenWord(ch); return (state.tokenize != tokenBase) ? state.tokenize(stream, state) : null; } return { startState: function() { return { tokenize: tokenBase }; }, token: function(stream, state) { if (stream.eatSpace()) return null; return state.tokenize(stream, state); } }; }); CodeMirror.defineMIME("text/x-solr", "solr"); }); application/library/codemirror/mode/soy/index.html000064400000003623147577724760016451 0ustar00 CodeMirror: Soy (Closure Template) mode

Soy (Closure Template) mode

A mode for Closure Templates (Soy).

MIME type defined: text/x-soy.

application/library/codemirror/mode/soy/soy.js000064400000016715147577724760015632 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../htmlmixed/htmlmixed"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var indentingTags = ["template", "literal", "msg", "fallbackmsg", "let", "if", "elseif", "else", "switch", "case", "default", "foreach", "ifempty", "for", "call", "param", "deltemplate", "delcall", "log"]; CodeMirror.defineMode("soy", function(config) { var textMode = CodeMirror.getMode(config, "text/plain"); var modes = { html: CodeMirror.getMode(config, {name: "text/html", multilineTagIndentFactor: 2, multilineTagIndentPastTag: false}), attributes: textMode, text: textMode, uri: textMode, css: CodeMirror.getMode(config, "text/css"), js: CodeMirror.getMode(config, {name: "text/javascript", statementIndent: 2 * config.indentUnit}) }; function last(array) { return array[array.length - 1]; } function tokenUntil(stream, state, untilRegExp) { var oldString = stream.string; var match = untilRegExp.exec(oldString.substr(stream.pos)); if (match) { // We don't use backUp because it backs up just the position, not the state. // This uses an undocumented API. stream.string = oldString.substr(0, stream.pos + match.index); } var result = stream.hideFirstChars(state.indent, function() { return state.localMode.token(stream, state.localState); }); stream.string = oldString; return result; } return { startState: function() { return { kind: [], kindTag: [], soyState: [], indent: 0, localMode: modes.html, localState: CodeMirror.startState(modes.html) }; }, copyState: function(state) { return { tag: state.tag, // Last seen Soy tag. kind: state.kind.concat([]), // Values of kind="" attributes. kindTag: state.kindTag.concat([]), // Opened tags with kind="" attributes. soyState: state.soyState.concat([]), indent: state.indent, // Indentation of the following line. localMode: state.localMode, localState: CodeMirror.copyState(state.localMode, state.localState) }; }, token: function(stream, state) { var match; switch (last(state.soyState)) { case "comment": if (stream.match(/^.*?\*\//)) { state.soyState.pop(); } else { stream.skipToEnd(); } return "comment"; case "variable": if (stream.match(/^}/)) { state.indent -= 2 * config.indentUnit; state.soyState.pop(); return "variable-2"; } stream.next(); return null; case "tag": if (stream.match(/^\/?}/)) { if (state.tag == "/template" || state.tag == "/deltemplate") state.indent = 0; else state.indent -= (stream.current() == "/}" || indentingTags.indexOf(state.tag) == -1 ? 2 : 1) * config.indentUnit; state.soyState.pop(); return "keyword"; } else if (stream.match(/^([\w?]+)(?==)/)) { if (stream.current() == "kind" && (match = stream.match(/^="([^"]+)/, false))) { var kind = match[1]; state.kind.push(kind); state.kindTag.push(state.tag); state.localMode = modes[kind] || modes.html; state.localState = CodeMirror.startState(state.localMode); } return "attribute"; } else if (stream.match(/^"/)) { state.soyState.push("string"); return "string"; } stream.next(); return null; case "literal": if (stream.match(/^(?=\{\/literal})/)) { state.indent -= config.indentUnit; state.soyState.pop(); return this.token(stream, state); } return tokenUntil(stream, state, /\{\/literal}/); case "string": var match = stream.match(/^.*?("|\\[\s\S])/); if (!match) { stream.skipToEnd(); } else if (match[1] == "\"") { state.soyState.pop(); } return "string"; } if (stream.match(/^\/\*/)) { state.soyState.push("comment"); return "comment"; } else if (stream.match(stream.sol() ? /^\s*\/\/.*/ : /^\s+\/\/.*/)) { return "comment"; } else if (stream.match(/^\{\$[\w?]*/)) { state.indent += 2 * config.indentUnit; state.soyState.push("variable"); return "variable-2"; } else if (stream.match(/^\{literal}/)) { state.indent += config.indentUnit; state.soyState.push("literal"); return "keyword"; } else if (match = stream.match(/^\{([\/@\\]?[\w?]*)/)) { if (match[1] != "/switch") state.indent += (/^(\/|(else|elseif|case|default)$)/.test(match[1]) && state.tag != "switch" ? 1 : 2) * config.indentUnit; state.tag = match[1]; if (state.tag == "/" + last(state.kindTag)) { // We found the tag that opened the current kind="". state.kind.pop(); state.kindTag.pop(); state.localMode = modes[last(state.kind)] || modes.html; state.localState = CodeMirror.startState(state.localMode); } state.soyState.push("tag"); return "keyword"; } return tokenUntil(stream, state, /\{|\s+\/\/|\/\*/); }, indent: function(state, textAfter) { var indent = state.indent, top = last(state.soyState); if (top == "comment") return CodeMirror.Pass; if (top == "literal") { if (/^\{\/literal}/.test(textAfter)) indent -= config.indentUnit; } else { if (/^\s*\{\/(template|deltemplate)\b/.test(textAfter)) return 0; if (/^\{(\/|(fallbackmsg|elseif|else|ifempty)\b)/.test(textAfter)) indent -= config.indentUnit; if (state.tag != "switch" && /^\{(case|default)\b/.test(textAfter)) indent -= config.indentUnit; if (/^\{\/switch\b/.test(textAfter)) indent -= config.indentUnit; } if (indent && state.localMode.indent) indent += state.localMode.indent(state.localState, textAfter); return indent; }, innerMode: function(state) { if (state.soyState.length && last(state.soyState) != "literal") return null; else return {state: state.localState, mode: state.localMode}; }, electricInput: /^\s*\{(\/|\/template|\/deltemplate|\/switch|fallbackmsg|elseif|else|case|default|ifempty|\/literal\})$/, lineComment: "//", blockCommentStart: "/*", blockCommentEnd: "*/", blockCommentContinue: " * ", fold: "indent" }; }, "htmlmixed"); CodeMirror.registerHelper("hintWords", "soy", indentingTags.concat( ["delpackage", "namespace", "alias", "print", "css", "debugger"])); CodeMirror.defineMIME("text/x-soy", "soy"); }); application/library/codemirror/mode/sparql/index.html000064400000003355147577724760017143 0ustar00 CodeMirror: SPARQL mode

SPARQL mode

MIME types defined: application/sparql-query.

application/library/codemirror/mode/sparql/sparql.js000064400000014277147577724760017013 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("sparql", function(config) { var indentUnit = config.indentUnit; var curPunc; function wordRegexp(words) { return new RegExp("^(?:" + words.join("|") + ")$", "i"); } var ops = wordRegexp(["str", "lang", "langmatches", "datatype", "bound", "sameterm", "isiri", "isuri", "iri", "uri", "bnode", "count", "sum", "min", "max", "avg", "sample", "group_concat", "rand", "abs", "ceil", "floor", "round", "concat", "substr", "strlen", "replace", "ucase", "lcase", "encode_for_uri", "contains", "strstarts", "strends", "strbefore", "strafter", "year", "month", "day", "hours", "minutes", "seconds", "timezone", "tz", "now", "uuid", "struuid", "md5", "sha1", "sha256", "sha384", "sha512", "coalesce", "if", "strlang", "strdt", "isnumeric", "regex", "exists", "isblank", "isliteral", "a", "bind"]); var keywords = wordRegexp(["base", "prefix", "select", "distinct", "reduced", "construct", "describe", "ask", "from", "named", "where", "order", "limit", "offset", "filter", "optional", "graph", "by", "asc", "desc", "as", "having", "undef", "values", "group", "minus", "in", "not", "service", "silent", "using", "insert", "delete", "union", "true", "false", "with", "data", "copy", "to", "move", "add", "create", "drop", "clear", "load"]); var operatorChars = /[*+\-<>=&|\^\/!\?]/; function tokenBase(stream, state) { var ch = stream.next(); curPunc = null; if (ch == "$" || ch == "?") { if(ch == "?" && stream.match(/\s/, false)){ return "operator"; } stream.match(/^[\w\d]*/); return "variable-2"; } else if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) { stream.match(/^[^\s\u00a0>]*>?/); return "atom"; } else if (ch == "\"" || ch == "'") { state.tokenize = tokenLiteral(ch); return state.tokenize(stream, state); } else if (/[{}\(\),\.;\[\]]/.test(ch)) { curPunc = ch; return "bracket"; } else if (ch == "#") { stream.skipToEnd(); return "comment"; } else if (operatorChars.test(ch)) { stream.eatWhile(operatorChars); return "operator"; } else if (ch == ":") { stream.eatWhile(/[\w\d\._\-]/); return "atom"; } else if (ch == "@") { stream.eatWhile(/[a-z\d\-]/i); return "meta"; } else { stream.eatWhile(/[_\w\d]/); if (stream.eat(":")) { stream.eatWhile(/[\w\d_\-]/); return "atom"; } var word = stream.current(); if (ops.test(word)) return "builtin"; else if (keywords.test(word)) return "keyword"; else return "variable"; } } function tokenLiteral(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) { state.tokenize = tokenBase; break; } escaped = !escaped && ch == "\\"; } return "string"; }; } function pushContext(state, type, col) { state.context = {prev: state.context, indent: state.indent, col: col, type: type}; } function popContext(state) { state.indent = state.context.indent; state.context = state.context.prev; } return { startState: function() { return {tokenize: tokenBase, context: null, indent: 0, col: 0}; }, token: function(stream, state) { if (stream.sol()) { if (state.context && state.context.align == null) state.context.align = false; state.indent = stream.indentation(); } if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") { state.context.align = true; } if (curPunc == "(") pushContext(state, ")", stream.column()); else if (curPunc == "[") pushContext(state, "]", stream.column()); else if (curPunc == "{") pushContext(state, "}", stream.column()); else if (/[\]\}\)]/.test(curPunc)) { while (state.context && state.context.type == "pattern") popContext(state); if (state.context && curPunc == state.context.type) { popContext(state); if (curPunc == "}" && state.context && state.context.type == "pattern") popContext(state); } } else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state); else if (/atom|string|variable/.test(style) && state.context) { if (/[\}\]]/.test(state.context.type)) pushContext(state, "pattern", stream.column()); else if (state.context.type == "pattern" && !state.context.align) { state.context.align = true; state.context.col = stream.column(); } } return style; }, indent: function(state, textAfter) { var firstChar = textAfter && textAfter.charAt(0); var context = state.context; if (/[\]\}]/.test(firstChar)) while (context && context.type == "pattern") context = context.prev; var closing = context && firstChar == context.type; if (!context) return 0; else if (context.type == "pattern") return context.col; else if (context.align) return context.col + (closing ? 0 : 1); else return context.indent + (closing ? 0 : indentUnit); }, lineComment: "#" }; }); CodeMirror.defineMIME("application/sparql-query", "sparql"); }); application/library/codemirror/mode/spreadsheet/index.html000064400000002560147577724760020145 0ustar00 CodeMirror: Spreadsheet mode

Spreadsheet mode

MIME types defined: text/x-spreadsheet.

The Spreadsheet Mode

Created by Robert Plummer

application/library/codemirror/mode/spreadsheet/spreadsheet.js000064400000006103147577724760021012 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("spreadsheet", function () { return { startState: function () { return { stringType: null, stack: [] }; }, token: function (stream, state) { if (!stream) return; //check for state changes if (state.stack.length === 0) { //strings if ((stream.peek() == '"') || (stream.peek() == "'")) { state.stringType = stream.peek(); stream.next(); // Skip quote state.stack.unshift("string"); } } //return state //stack has switch (state.stack[0]) { case "string": while (state.stack[0] === "string" && !stream.eol()) { if (stream.peek() === state.stringType) { stream.next(); // Skip quote state.stack.shift(); // Clear flag } else if (stream.peek() === "\\") { stream.next(); stream.next(); } else { stream.match(/^.[^\\\"\']*/); } } return "string"; case "characterClass": while (state.stack[0] === "characterClass" && !stream.eol()) { if (!(stream.match(/^[^\]\\]+/) || stream.match(/^\\./))) state.stack.shift(); } return "operator"; } var peek = stream.peek(); //no stack switch (peek) { case "[": stream.next(); state.stack.unshift("characterClass"); return "bracket"; case ":": stream.next(); return "operator"; case "\\": if (stream.match(/\\[a-z]+/)) return "string-2"; else { stream.next(); return "atom"; } case ".": case ",": case ";": case "*": case "-": case "+": case "^": case "<": case "/": case "=": stream.next(); return "atom"; case "$": stream.next(); return "builtin"; } if (stream.match(/\d+/)) { if (stream.match(/^\w+/)) return "error"; return "number"; } else if (stream.match(/^[a-zA-Z_]\w*/)) { if (stream.match(/(?=[\(.])/, false)) return "keyword"; return "variable-2"; } else if (["[", "]", "(", ")", "{", "}"].indexOf(peek) != -1) { stream.next(); return "bracket"; } else if (!stream.eatSpace()) { stream.next(); } return null; } }; }); CodeMirror.defineMIME("text/x-spreadsheet", "spreadsheet"); }); application/library/codemirror/mode/sql/sql.js000064400000102632147577724760015576 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("sql", function(config, parserConfig) { "use strict"; var client = parserConfig.client || {}, atoms = parserConfig.atoms || {"false": true, "true": true, "null": true}, builtin = parserConfig.builtin || {}, keywords = parserConfig.keywords || {}, operatorChars = parserConfig.operatorChars || /^[*+\-%<>!=&|~^]/, support = parserConfig.support || {}, hooks = parserConfig.hooks || {}, dateSQL = parserConfig.dateSQL || {"date" : true, "time" : true, "timestamp" : true}; function tokenBase(stream, state) { var ch = stream.next(); // call hooks from the mime type if (hooks[ch]) { var result = hooks[ch](stream, state); if (result !== false) return result; } if (support.hexNumber == true && ((ch == "0" && stream.match(/^[xX][0-9a-fA-F]+/)) || (ch == "x" || ch == "X") && stream.match(/^'[0-9a-fA-F]+'/))) { // hex // ref: http://dev.mysql.com/doc/refman/5.5/en/hexadecimal-literals.html return "number"; } else if (support.binaryNumber == true && (((ch == "b" || ch == "B") && stream.match(/^'[01]+'/)) || (ch == "0" && stream.match(/^b[01]+/)))) { // bitstring // ref: http://dev.mysql.com/doc/refman/5.5/en/bit-field-literals.html return "number"; } else if (ch.charCodeAt(0) > 47 && ch.charCodeAt(0) < 58) { // numbers // ref: http://dev.mysql.com/doc/refman/5.5/en/number-literals.html stream.match(/^[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/); support.decimallessFloat == true && stream.eat('.'); return "number"; } else if (ch == "?" && (stream.eatSpace() || stream.eol() || stream.eat(";"))) { // placeholders return "variable-3"; } else if (ch == "'" || (ch == '"' && support.doubleQuote)) { // strings // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html state.tokenize = tokenLiteral(ch); return state.tokenize(stream, state); } else if ((((support.nCharCast == true && (ch == "n" || ch == "N")) || (support.charsetCast == true && ch == "_" && stream.match(/[a-z][a-z0-9]*/i))) && (stream.peek() == "'" || stream.peek() == '"'))) { // charset casting: _utf8'str', N'str', n'str' // ref: http://dev.mysql.com/doc/refman/5.5/en/string-literals.html return "keyword"; } else if (/^[\(\),\;\[\]]/.test(ch)) { // no highlighting return null; } else if (support.commentSlashSlash && ch == "/" && stream.eat("/")) { // 1-line comment stream.skipToEnd(); return "comment"; } else if ((support.commentHash && ch == "#") || (ch == "-" && stream.eat("-") && (!support.commentSpaceRequired || stream.eat(" ")))) { // 1-line comments // ref: https://kb.askmonty.org/en/comment-syntax/ stream.skipToEnd(); return "comment"; } else if (ch == "/" && stream.eat("*")) { // multi-line comments // ref: https://kb.askmonty.org/en/comment-syntax/ state.tokenize = tokenComment; return state.tokenize(stream, state); } else if (ch == ".") { // .1 for 0.1 if (support.zerolessFloat == true && stream.match(/^(?:\d+(?:e[+-]?\d+)?)/i)) { return "number"; } // .table_name (ODBC) // // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html if (support.ODBCdotTable == true && stream.match(/^[a-zA-Z_]+/)) { return "variable-2"; } } else if (operatorChars.test(ch)) { // operators stream.eatWhile(operatorChars); return null; } else if (ch == '{' && (stream.match(/^( )*(d|D|t|T|ts|TS)( )*'[^']*'( )*}/) || stream.match(/^( )*(d|D|t|T|ts|TS)( )*"[^"]*"( )*}/))) { // dates (weird ODBC syntax) // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html return "number"; } else { stream.eatWhile(/^[_\w\d]/); var word = stream.current().toLowerCase(); // dates (standard SQL syntax) // ref: http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html if (dateSQL.hasOwnProperty(word) && (stream.match(/^( )+'[^']*'/) || stream.match(/^( )+"[^"]*"/))) return "number"; if (atoms.hasOwnProperty(word)) return "atom"; if (builtin.hasOwnProperty(word)) return "builtin"; if (keywords.hasOwnProperty(word)) return "keyword"; if (client.hasOwnProperty(word)) return "string-2"; return null; } } // 'string', with char specified in quote escaped by '\' function tokenLiteral(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) { state.tokenize = tokenBase; break; } escaped = !escaped && ch == "\\"; } return "string"; }; } function tokenComment(stream, state) { while (true) { if (stream.skipTo("*")) { stream.next(); if (stream.eat("/")) { state.tokenize = tokenBase; break; } } else { stream.skipToEnd(); break; } } return "comment"; } function pushContext(stream, state, type) { state.context = { prev: state.context, indent: stream.indentation(), col: stream.column(), type: type }; } function popContext(state) { state.indent = state.context.indent; state.context = state.context.prev; } return { startState: function() { return {tokenize: tokenBase, context: null}; }, token: function(stream, state) { if (stream.sol()) { if (state.context && state.context.align == null) state.context.align = false; } if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); if (style == "comment") return style; if (state.context && state.context.align == null) state.context.align = true; var tok = stream.current(); if (tok == "(") pushContext(stream, state, ")"); else if (tok == "[") pushContext(stream, state, "]"); else if (state.context && state.context.type == tok) popContext(state); return style; }, indent: function(state, textAfter) { var cx = state.context; if (!cx) return CodeMirror.Pass; var closing = textAfter.charAt(0) == cx.type; if (cx.align) return cx.col + (closing ? 0 : 1); else return cx.indent + (closing ? 0 : config.indentUnit); }, blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: support.commentSlashSlash ? "//" : support.commentHash ? "#" : null }; }); (function() { "use strict"; // `identifier` function hookIdentifier(stream) { // MySQL/MariaDB identifiers // ref: http://dev.mysql.com/doc/refman/5.6/en/identifier-qualifiers.html var ch; while ((ch = stream.next()) != null) { if (ch == "`" && !stream.eat("`")) return "variable-2"; } stream.backUp(stream.current().length - 1); return stream.eatWhile(/\w/) ? "variable-2" : null; } // variable token function hookVar(stream) { // variables // @@prefix.varName @varName // varName can be quoted with ` or ' or " // ref: http://dev.mysql.com/doc/refman/5.5/en/user-variables.html if (stream.eat("@")) { stream.match(/^session\./); stream.match(/^local\./); stream.match(/^global\./); } if (stream.eat("'")) { stream.match(/^.*'/); return "variable-2"; } else if (stream.eat('"')) { stream.match(/^.*"/); return "variable-2"; } else if (stream.eat("`")) { stream.match(/^.*`/); return "variable-2"; } else if (stream.match(/^[0-9a-zA-Z$\.\_]+/)) { return "variable-2"; } return null; }; // short client keyword token function hookClient(stream) { // \N means NULL // ref: http://dev.mysql.com/doc/refman/5.5/en/null-values.html if (stream.eat("N")) { return "atom"; } // \g, etc // ref: http://dev.mysql.com/doc/refman/5.5/en/mysql-commands.html return stream.match(/^[a-zA-Z.#!?]/) ? "variable-2" : null; } // these keywords are used by all SQL dialects (however, a mode can still overwrite it) var sqlKeywords = "alter and as asc between by count create delete desc distinct drop from group having in insert into is join like not on or order select set table union update values where limit "; // turn a space-separated list into an array function set(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } // A generic SQL Mode. It's not a standard, it just try to support what is generally supported CodeMirror.defineMIME("text/x-sql", { name: "sql", keywords: set(sqlKeywords + "begin"), builtin: set("bool boolean bit blob enum long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision real date datetime year unsigned signed decimal numeric"), atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=]/, dateSQL: set("date time timestamp"), support: set("ODBCdotTable doubleQuote binaryNumber hexNumber") }); CodeMirror.defineMIME("text/x-mssql", { name: "sql", client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), keywords: set(sqlKeywords + "begin trigger proc view index for add constraint key primary foreign collate clustered nonclustered declare"), builtin: set("bigint numeric bit smallint decimal smallmoney int tinyint money float real char varchar text nchar nvarchar ntext binary varbinary image cursor timestamp hierarchyid uniqueidentifier sql_variant xml table "), atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=]/, dateSQL: set("date datetimeoffset datetime2 smalldatetime datetime time"), hooks: { "@": hookVar } }); CodeMirror.defineMIME("text/x-mysql", { name: "sql", client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), keywords: set(sqlKeywords + "accessible action add after algorithm all analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general get global grant grants group group_concat handler hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show signal slave slow smallint snapshot soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=&|^]/, dateSQL: set("date time timestamp"), support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), hooks: { "@": hookVar, "`": hookIdentifier, "\\": hookClient } }); CodeMirror.defineMIME("text/x-mariadb", { name: "sql", client: set("charset clear connect edit ego exit go help nopager notee nowarning pager print prompt quit rehash source status system tee"), keywords: set(sqlKeywords + "accessible action add after algorithm all always analyze asensitive at authors auto_increment autocommit avg avg_row_length before binary binlog both btree cache call cascade cascaded case catalog_name chain change changed character check checkpoint checksum class_origin client_statistics close coalesce code collate collation collations column columns comment commit committed completion concurrent condition connection consistent constraint contains continue contributors convert cross current current_date current_time current_timestamp current_user cursor data database databases day_hour day_microsecond day_minute day_second deallocate dec declare default delay_key_write delayed delimiter des_key_file describe deterministic dev_pop dev_samp deviance diagnostics directory disable discard distinctrow div dual dumpfile each elseif enable enclosed end ends engine engines enum errors escape escaped even event events every execute exists exit explain extended fast fetch field fields first flush for force foreign found_rows full fulltext function general generated get global grant grants group groupby_concat handler hard hash help high_priority hosts hour_microsecond hour_minute hour_second if ignore ignore_server_ids import index index_statistics infile inner innodb inout insensitive insert_method install interval invoker isolation iterate key keys kill language last leading leave left level limit linear lines list load local localtime localtimestamp lock logs low_priority master master_heartbeat_period master_ssl_verify_server_cert masters match max max_rows maxvalue message_text middleint migrate min min_rows minute_microsecond minute_second mod mode modifies modify mutex mysql_errno natural next no no_write_to_binlog offline offset one online open optimize option optionally out outer outfile pack_keys parser partition partitions password persistent phase plugin plugins prepare preserve prev primary privileges procedure processlist profile profiles purge query quick range read read_write reads real rebuild recover references regexp relaylog release remove rename reorganize repair repeatable replace require resignal restrict resume return returns revoke right rlike rollback rollup row row_format rtree savepoint schedule schema schema_name schemas second_microsecond security sensitive separator serializable server session share show shutdown signal slave slow smallint snapshot soft soname spatial specific sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_no_cache sql_small_result sqlexception sqlstate sqlwarning ssl start starting starts status std stddev stddev_pop stddev_samp storage straight_join subclass_origin sum suspend table_name table_statistics tables tablespace temporary terminated to trailing transaction trigger triggers truncate uncommitted undo uninstall unique unlock upgrade usage use use_frm user user_resources user_statistics using utc_date utc_time utc_timestamp value variables varying view views virtual warnings when while with work write xa xor year_month zerofill begin do then else loop repeat"), builtin: set("bool boolean bit blob decimal double float long longblob longtext medium mediumblob mediumint mediumtext time timestamp tinyblob tinyint tinytext text bigint int int1 int2 int3 int4 int8 integer float float4 float8 double char varbinary varchar varcharacter precision date datetime year unsigned signed numeric"), atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=&|^]/, dateSQL: set("date time timestamp"), support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber doubleQuote nCharCast charsetCast commentHash commentSpaceRequired"), hooks: { "@": hookVar, "`": hookIdentifier, "\\": hookClient } }); // the query language used by Apache Cassandra is called CQL, but this mime type // is called Cassandra to avoid confusion with Contextual Query Language CodeMirror.defineMIME("text/x-cassandra", { name: "sql", client: { }, keywords: set("add all allow alter and any apply as asc authorize batch begin by clustering columnfamily compact consistency count create custom delete desc distinct drop each_quorum exists filtering from grant if in index insert into key keyspace keyspaces level limit local_one local_quorum modify nan norecursive nosuperuser not of on one order password permission permissions primary quorum rename revoke schema select set storage superuser table three to token truncate ttl two type unlogged update use user users using values where with writetime"), builtin: set("ascii bigint blob boolean counter decimal double float frozen inet int list map static text timestamp timeuuid tuple uuid varchar varint"), atoms: set("false true infinity NaN"), operatorChars: /^[<>=]/, dateSQL: { }, support: set("commentSlashSlash decimallessFloat"), hooks: { } }); // this is based on Peter Raganitsch's 'plsql' mode CodeMirror.defineMIME("text/x-plsql", { name: "sql", client: set("appinfo arraysize autocommit autoprint autorecovery autotrace blockterminator break btitle cmdsep colsep compatibility compute concat copycommit copytypecheck define describe echo editfile embedded escape exec execute feedback flagger flush heading headsep instance linesize lno loboffset logsource long longchunksize markup native newpage numformat numwidth pagesize pause pno recsep recsepchar release repfooter repheader serveroutput shiftinout show showmode size spool sqlblanklines sqlcase sqlcode sqlcontinue sqlnumber sqlpluscompatibility sqlprefix sqlprompt sqlterminator suffix tab term termout time timing trimout trimspool ttitle underline verify version wrap"), keywords: set("abort accept access add all alter and any array arraylen as asc assert assign at attributes audit authorization avg base_table begin between binary_integer body boolean by case cast char char_base check close cluster clusters colauth column comment commit compress connect connected constant constraint crash create current currval cursor data_base database date dba deallocate debugoff debugon decimal declare default definition delay delete desc digits dispose distinct do drop else elseif elsif enable end entry escape exception exception_init exchange exclusive exists exit external fast fetch file for force form from function generic goto grant group having identified if immediate in increment index indexes indicator initial initrans insert interface intersect into is key level library like limited local lock log logging long loop master maxextents maxtrans member minextents minus mislabel mode modify multiset new next no noaudit nocompress nologging noparallel not nowait number_base object of off offline on online only open option or order out package parallel partition pctfree pctincrease pctused pls_integer positive positiven pragma primary prior private privileges procedure public raise range raw read rebuild record ref references refresh release rename replace resource restrict return returning returns reverse revoke rollback row rowid rowlabel rownum rows run savepoint schema segment select separate session set share snapshot some space split sql start statement storage subtype successful synonym tabauth table tables tablespace task terminate then to trigger truncate type union unique unlimited unrecoverable unusable update use using validate value values variable view views when whenever where while with work"), builtin: set("abs acos add_months ascii asin atan atan2 average bfile bfilename bigserial bit blob ceil character chartorowid chr clob concat convert cos cosh count dec decode deref dual dump dup_val_on_index empty error exp false float floor found glb greatest hextoraw initcap instr instrb int integer isopen last_day least length lengthb ln lower lpad ltrim lub make_ref max min mlslabel mod months_between natural naturaln nchar nclob new_time next_day nextval nls_charset_decl_len nls_charset_id nls_charset_name nls_initcap nls_lower nls_sort nls_upper nlssort no_data_found notfound null number numeric nvarchar2 nvl others power rawtohex real reftohex round rowcount rowidtochar rowtype rpad rtrim serial sign signtype sin sinh smallint soundex sqlcode sqlerrm sqrt stddev string substr substrb sum sysdate tan tanh to_char text to_date to_label to_multi_byte to_number to_single_byte translate true trunc uid unlogged upper user userenv varchar varchar2 variance varying vsize xml"), operatorChars: /^[*+\-%<>!=~]/, dateSQL: set("date time timestamp"), support: set("doubleQuote nCharCast zerolessFloat binaryNumber hexNumber") }); // Created to support specific hive keywords CodeMirror.defineMIME("text/x-hive", { name: "sql", keywords: set("select alter $elem$ $key$ $value$ add after all analyze and archive as asc before between binary both bucket buckets by cascade case cast change cluster clustered clusterstatus collection column columns comment compute concatenate continue create cross cursor data database databases dbproperties deferred delete delimited desc describe directory disable distinct distribute drop else enable end escaped exclusive exists explain export extended external false fetch fields fileformat first format formatted from full function functions grant group having hold_ddltime idxproperties if import in index indexes inpath inputdriver inputformat insert intersect into is items join keys lateral left like limit lines load local location lock locks mapjoin materialized minus msck no_drop nocompress not of offline on option or order out outer outputdriver outputformat overwrite partition partitioned partitions percent plus preserve procedure purge range rcfile read readonly reads rebuild recordreader recordwriter recover reduce regexp rename repair replace restrict revoke right rlike row schema schemas semi sequencefile serde serdeproperties set shared show show_database sort sorted ssl statistics stored streamtable table tables tablesample tblproperties temporary terminated textfile then tmp to touch transform trigger true unarchive undo union uniquejoin unlock update use using utc utc_tmestamp view when where while with"), builtin: set("bool boolean long timestamp tinyint smallint bigint int float double date datetime unsigned string array struct map uniontype"), atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=]/, dateSQL: set("date timestamp"), support: set("ODBCdotTable doubleQuote binaryNumber hexNumber") }); CodeMirror.defineMIME("text/x-pgsql", { name: "sql", client: set("source"), // http://www.postgresql.org/docs/9.5/static/sql-keywords-appendix.html keywords: set(sqlKeywords + "a abort abs absent absolute access according action ada add admin after aggregate all allocate also always analyse analyze any are array array_agg array_max_cardinality asensitive assertion assignment asymmetric at atomic attribute attributes authorization avg backward base64 before begin begin_frame begin_partition bernoulli binary bit_length blob blocked bom both breadth c cache call called cardinality cascade cascaded case cast catalog catalog_name ceil ceiling chain characteristics characters character_length character_set_catalog character_set_name character_set_schema char_length check checkpoint class class_origin clob close cluster coalesce cobol collate collation collation_catalog collation_name collation_schema collect column columns column_name command_function command_function_code comment comments commit committed concurrently condition condition_number configuration conflict connect connection connection_name constraint constraints constraint_catalog constraint_name constraint_schema constructor contains content continue control conversion convert copy corr corresponding cost covar_pop covar_samp cross csv cube cume_dist current current_catalog current_date current_default_transform_group current_path current_role current_row current_schema current_time current_timestamp current_transform_group_for_type current_user cursor cursor_name cycle data database datalink datetime_interval_code datetime_interval_precision day db deallocate dec declare default defaults deferrable deferred defined definer degree delimiter delimiters dense_rank depth deref derived describe descriptor deterministic diagnostics dictionary disable discard disconnect dispatch dlnewcopy dlpreviouscopy dlurlcomplete dlurlcompleteonly dlurlcompletewrite dlurlpath dlurlpathonly dlurlpathwrite dlurlscheme dlurlserver dlvalue do document domain dynamic dynamic_function dynamic_function_code each element else empty enable encoding encrypted end end-exec end_frame end_partition enforced enum equals escape event every except exception exclude excluding exclusive exec execute exists exp explain expression extension external extract false family fetch file filter final first first_value flag float floor following for force foreign fortran forward found frame_row free freeze fs full function functions fusion g general generated get global go goto grant granted greatest grouping groups handler header hex hierarchy hold hour id identity if ignore ilike immediate immediately immutable implementation implicit import including increment indent index indexes indicator inherit inherits initially inline inner inout input insensitive instance instantiable instead integrity intersect intersection invoker isnull isolation k key key_member key_type label lag language large last last_value lateral lead leading leakproof least left length level library like_regex link listen ln load local localtime localtimestamp location locator lock locked logged lower m map mapping match matched materialized max maxvalue max_cardinality member merge message_length message_octet_length message_text method min minute minvalue mod mode modifies module month more move multiset mumps name names namespace national natural nchar nclob nesting new next nfc nfd nfkc nfkd nil no none normalize normalized nothing notify notnull nowait nth_value ntile null nullable nullif nulls number object occurrences_regex octets octet_length of off offset oids old only open operator option options ordering ordinality others out outer output over overlaps overlay overriding owned owner p pad parameter parameter_mode parameter_name parameter_ordinal_position parameter_specific_catalog parameter_specific_name parameter_specific_schema parser partial partition pascal passing passthrough password percent percentile_cont percentile_disc percent_rank period permission placing plans pli policy portion position position_regex power precedes preceding prepare prepared preserve primary prior privileges procedural procedure program public quote range rank read reads reassign recheck recovery recursive ref references referencing refresh regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy regr_syy reindex relative release rename repeatable replace replica requiring reset respect restart restore restrict result return returned_cardinality returned_length returned_octet_length returned_sqlstate returning returns revoke right role rollback rollup routine routine_catalog routine_name routine_schema row rows row_count row_number rule savepoint scale schema schema_name scope scope_catalog scope_name scope_schema scroll search second section security selective self sensitive sequence sequences serializable server server_name session session_user setof sets share show similar simple size skip snapshot some source space specific specifictype specific_name sql sqlcode sqlerror sqlexception sqlstate sqlwarning sqrt stable standalone start state statement static statistics stddev_pop stddev_samp stdin stdout storage strict strip structure style subclass_origin submultiset substring substring_regex succeeds sum symmetric sysid system system_time system_user t tables tablesample tablespace table_name temp template temporary then ties timezone_hour timezone_minute to token top_level_count trailing transaction transactions_committed transactions_rolled_back transaction_active transform transforms translate translate_regex translation treat trigger trigger_catalog trigger_name trigger_schema trim trim_array true truncate trusted type types uescape unbounded uncommitted under unencrypted unique unknown unlink unlisten unlogged unnamed unnest until untyped upper uri usage user user_defined_type_catalog user_defined_type_code user_defined_type_name user_defined_type_schema using vacuum valid validate validator value value_of varbinary variadic var_pop var_samp verbose version versioning view views volatile when whenever whitespace width_bucket window within work wrapper write xmlagg xmlattributes xmlbinary xmlcast xmlcomment xmlconcat xmldeclaration xmldocument xmlelement xmlexists xmlforest xmliterate xmlnamespaces xmlparse xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltext xmlvalidate year yes loop repeat"), // http://www.postgresql.org/docs/9.5/static/datatype.html builtin: set("bigint int8 bigserial serial8 bit varying varbit boolean bool box bytea character char varchar cidr circle date double precision float8 inet integer int int4 interval json jsonb line lseg macaddr money numeric decimal path pg_lsn point polygon real float4 smallint int2 smallserial serial2 serial serial4 text time without zone with timetz timestamp timestamptz tsquery tsvector txid_snapshot uuid xml"), atoms: set("false true null unknown"), operatorChars: /^[*+\-%<>!=&|^\/#@?~]/, dateSQL: set("date time timestamp"), support: set("ODBCdotTable decimallessFloat zerolessFloat binaryNumber hexNumber nCharCast charsetCast") }); // Google's SQL-like query language, GQL CodeMirror.defineMIME("text/x-gql", { name: "sql", keywords: set("ancestor and asc by contains desc descendant distinct from group has in is limit offset on order select superset where"), atoms: set("false true"), builtin: set("blob datetime first key __key__ string integer double boolean null"), operatorChars: /^[*+\-%<>!=]/ }); }()); }); /* How Properties of Mime Types are used by SQL Mode ================================================= keywords: A list of keywords you want to be highlighted. builtin: A list of builtin types you want to be highlighted (if you want types to be of class "builtin" instead of "keyword"). operatorChars: All characters that must be handled as operators. client: Commands parsed and executed by the client (not the server). support: A list of supported syntaxes which are not common, but are supported by more than 1 DBMS. * ODBCdotTable: .tableName * zerolessFloat: .1 * doubleQuote * nCharCast: N'string' * charsetCast: _utf8'string' * commentHash: use # char for comments * commentSlashSlash: use // for comments * commentSpaceRequired: require a space after -- for comments atoms: Keywords that must be highlighted as atoms,. Some DBMS's support more atoms than others: UNKNOWN, INFINITY, UNDERFLOW, NaN... dateSQL: Used for date/time SQL standard syntax, because not all DBMS's support same temporal types. */ application/library/codemirror/mode/sql/index.html000064400000005657147577724760016447 0ustar00 CodeMirror: SQL Mode for CodeMirror

SQL Mode for CodeMirror

MIME types defined: text/x-sql, text/x-mysql, text/x-mariadb, text/x-cassandra, text/x-plsql, text/x-mssql, text/x-hive, text/x-pgsql, text/x-gql.

application/library/codemirror/mode/stex/index.html000064400000010044147577724760016615 0ustar00 CodeMirror: sTeX mode

sTeX mode

MIME types defined: text/x-stex.

Parsing/Highlighting Tests: normal, verbose.

application/library/codemirror/mode/stex/stex.js000064400000015424147577724760016150 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /* * Author: Constantin Jucovschi (c.jucovschi@jacobs-university.de) * Licence: MIT */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("stex", function() { "use strict"; function pushCommand(state, command) { state.cmdState.push(command); } function peekCommand(state) { if (state.cmdState.length > 0) { return state.cmdState[state.cmdState.length - 1]; } else { return null; } } function popCommand(state) { var plug = state.cmdState.pop(); if (plug) { plug.closeBracket(); } } // returns the non-default plugin closest to the end of the list function getMostPowerful(state) { var context = state.cmdState; for (var i = context.length - 1; i >= 0; i--) { var plug = context[i]; if (plug.name == "DEFAULT") { continue; } return plug; } return { styleIdentifier: function() { return null; } }; } function addPluginPattern(pluginName, cmdStyle, styles) { return function () { this.name = pluginName; this.bracketNo = 0; this.style = cmdStyle; this.styles = styles; this.argument = null; // \begin and \end have arguments that follow. These are stored in the plugin this.styleIdentifier = function() { return this.styles[this.bracketNo - 1] || null; }; this.openBracket = function() { this.bracketNo++; return "bracket"; }; this.closeBracket = function() {}; }; } var plugins = {}; plugins["importmodule"] = addPluginPattern("importmodule", "tag", ["string", "builtin"]); plugins["documentclass"] = addPluginPattern("documentclass", "tag", ["", "atom"]); plugins["usepackage"] = addPluginPattern("usepackage", "tag", ["atom"]); plugins["begin"] = addPluginPattern("begin", "tag", ["atom"]); plugins["end"] = addPluginPattern("end", "tag", ["atom"]); plugins["DEFAULT"] = function () { this.name = "DEFAULT"; this.style = "tag"; this.styleIdentifier = this.openBracket = this.closeBracket = function() {}; }; function setState(state, f) { state.f = f; } // called when in a normal (no environment) context function normal(source, state) { var plug; // Do we look like '\command' ? If so, attempt to apply the plugin 'command' if (source.match(/^\\[a-zA-Z@]+/)) { var cmdName = source.current().slice(1); plug = plugins[cmdName] || plugins["DEFAULT"]; plug = new plug(); pushCommand(state, plug); setState(state, beginParams); return plug.style; } // escape characters if (source.match(/^\\[$&%#{}_]/)) { return "tag"; } // white space control characters if (source.match(/^\\[,;!\/\\]/)) { return "tag"; } // find if we're starting various math modes if (source.match("\\[")) { setState(state, function(source, state){ return inMathMode(source, state, "\\]"); }); return "keyword"; } if (source.match("$$")) { setState(state, function(source, state){ return inMathMode(source, state, "$$"); }); return "keyword"; } if (source.match("$")) { setState(state, function(source, state){ return inMathMode(source, state, "$"); }); return "keyword"; } var ch = source.next(); if (ch == "%") { source.skipToEnd(); return "comment"; } else if (ch == '}' || ch == ']') { plug = peekCommand(state); if (plug) { plug.closeBracket(ch); setState(state, beginParams); } else { return "error"; } return "bracket"; } else if (ch == '{' || ch == '[') { plug = plugins["DEFAULT"]; plug = new plug(); pushCommand(state, plug); return "bracket"; } else if (/\d/.test(ch)) { source.eatWhile(/[\w.%]/); return "atom"; } else { source.eatWhile(/[\w\-_]/); plug = getMostPowerful(state); if (plug.name == 'begin') { plug.argument = source.current(); } return plug.styleIdentifier(); } } function inMathMode(source, state, endModeSeq) { if (source.eatSpace()) { return null; } if (source.match(endModeSeq)) { setState(state, normal); return "keyword"; } if (source.match(/^\\[a-zA-Z@]+/)) { return "tag"; } if (source.match(/^[a-zA-Z]+/)) { return "variable-2"; } // escape characters if (source.match(/^\\[$&%#{}_]/)) { return "tag"; } // white space control characters if (source.match(/^\\[,;!\/]/)) { return "tag"; } // special math-mode characters if (source.match(/^[\^_&]/)) { return "tag"; } // non-special characters if (source.match(/^[+\-<>|=,\/@!*:;'"`~#?]/)) { return null; } if (source.match(/^(\d+\.\d*|\d*\.\d+|\d+)/)) { return "number"; } var ch = source.next(); if (ch == "{" || ch == "}" || ch == "[" || ch == "]" || ch == "(" || ch == ")") { return "bracket"; } if (ch == "%") { source.skipToEnd(); return "comment"; } return "error"; } function beginParams(source, state) { var ch = source.peek(), lastPlug; if (ch == '{' || ch == '[') { lastPlug = peekCommand(state); lastPlug.openBracket(ch); source.eat(ch); setState(state, normal); return "bracket"; } if (/[ \t\r]/.test(ch)) { source.eat(ch); return null; } setState(state, normal); popCommand(state); return normal(source, state); } return { startState: function() { return { cmdState: [], f: normal }; }, copyState: function(s) { return { cmdState: s.cmdState.slice(), f: s.f }; }, token: function(stream, state) { return state.f(stream, state); }, blankLine: function(state) { state.f = normal; state.cmdState.length = 0; }, lineComment: "%" }; }); CodeMirror.defineMIME("text/x-stex", "stex"); CodeMirror.defineMIME("text/x-latex", "stex"); }); application/library/codemirror/mode/stex/test.js000064400000006042147577724760016140 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({tabSize: 4}, "stex"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("word", "foo"); MT("twoWords", "foo bar"); MT("beginEndDocument", "[tag \\begin][bracket {][atom document][bracket }]", "[tag \\end][bracket {][atom document][bracket }]"); MT("beginEndEquation", "[tag \\begin][bracket {][atom equation][bracket }]", " E=mc^2", "[tag \\end][bracket {][atom equation][bracket }]"); MT("beginModule", "[tag \\begin][bracket {][atom module][bracket }[[]]]"); MT("beginModuleId", "[tag \\begin][bracket {][atom module][bracket }[[]id=bbt-size[bracket ]]]"); MT("importModule", "[tag \\importmodule][bracket [[][string b-b-t][bracket ]]{][builtin b-b-t][bracket }]"); MT("importModulePath", "[tag \\importmodule][bracket [[][tag \\KWARCslides][bracket {][string dmath/en/cardinality][bracket }]]{][builtin card][bracket }]"); MT("psForPDF", "[tag \\PSforPDF][bracket [[][atom 1][bracket ]]{]#1[bracket }]"); MT("comment", "[comment % foo]"); MT("tagComment", "[tag \\item][comment % bar]"); MT("commentTag", " [comment % \\item]"); MT("commentLineBreak", "[comment %]", "foo"); MT("tagErrorCurly", "[tag \\begin][error }][bracket {]"); MT("tagErrorSquare", "[tag \\item][error ]]][bracket {]"); MT("commentCurly", "[comment % }]"); MT("tagHash", "the [tag \\#] key"); MT("tagNumber", "a [tag \\$][atom 5] stetson"); MT("tagPercent", "[atom 100][tag \\%] beef"); MT("tagAmpersand", "L [tag \\&] N"); MT("tagUnderscore", "foo[tag \\_]bar"); MT("tagBracketOpen", "[tag \\emph][bracket {][tag \\{][bracket }]"); MT("tagBracketClose", "[tag \\emph][bracket {][tag \\}][bracket }]"); MT("tagLetterNumber", "section [tag \\S][atom 1]"); MT("textTagNumber", "para [tag \\P][atom 2]"); MT("thinspace", "x[tag \\,]y"); MT("thickspace", "x[tag \\;]y"); MT("negativeThinspace", "x[tag \\!]y"); MT("periodNotSentence", "J.\\ L.\\ is"); MT("periodSentence", "X[tag \\@]. The"); MT("italicCorrection", "[bracket {][tag \\em] If[tag \\/][bracket }] I"); MT("tagBracket", "[tag \\newcommand][bracket {][tag \\pop][bracket }]"); MT("inlineMathTagFollowedByNumber", "[keyword $][tag \\pi][number 2][keyword $]"); MT("inlineMath", "[keyword $][number 3][variable-2 x][tag ^][number 2.45]-[tag \\sqrt][bracket {][tag \\$\\alpha][bracket }] = [number 2][keyword $] other text"); MT("displayMath", "More [keyword $$]\t[variable-2 S][tag ^][variable-2 n][tag \\sum] [variable-2 i][keyword $$] other text"); MT("mathWithComment", "[keyword $][variable-2 x] [comment % $]", "[variable-2 y][keyword $] other text"); MT("lineBreakArgument", "[tag \\\\][bracket [[][atom 1cm][bracket ]]]"); })(); application/library/codemirror/mode/stylus/stylus.js000064400000122210147577724760017100 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Stylus mode created by Dmitry Kiselyov http://git.io/AaRB (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("stylus", function(config) { var indentUnit = config.indentUnit, tagKeywords = keySet(tagKeywords_), tagVariablesRegexp = /^(a|b|i|s|col|em)$/i, propertyKeywords = keySet(propertyKeywords_), nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_), valueKeywords = keySet(valueKeywords_), colorKeywords = keySet(colorKeywords_), documentTypes = keySet(documentTypes_), documentTypesRegexp = wordRegexp(documentTypes_), mediaFeatures = keySet(mediaFeatures_), mediaTypes = keySet(mediaTypes_), fontProperties = keySet(fontProperties_), operatorsRegexp = /^\s*([.]{2,3}|&&|\|\||\*\*|[?!=:]?=|[-+*\/%<>]=?|\?:|\~)/, wordOperatorKeywordsRegexp = wordRegexp(wordOperatorKeywords_), blockKeywords = keySet(blockKeywords_), vendorPrefixesRegexp = new RegExp(/^\-(moz|ms|o|webkit)-/i), commonAtoms = keySet(commonAtoms_), firstWordMatch = "", states = {}, ch, style, type, override; /** * Tokenizers */ function tokenBase(stream, state) { firstWordMatch = stream.string.match(/(^[\w-]+\s*=\s*$)|(^\s*[\w-]+\s*=\s*[\w-])|(^\s*(\.|#|@|\$|\&|\[|\d|\+|::?|\{|\>|~|\/)?\s*[\w-]*([a-z0-9-]|\*|\/\*)(\(|,)?)/); state.context.line.firstWord = firstWordMatch ? firstWordMatch[0].replace(/^\s*/, "") : ""; state.context.line.indent = stream.indentation(); ch = stream.peek(); // Line comment if (stream.match("//")) { stream.skipToEnd(); return ["comment", "comment"]; } // Block comment if (stream.match("/*")) { state.tokenize = tokenCComment; return tokenCComment(stream, state); } // String if (ch == "\"" || ch == "'") { stream.next(); state.tokenize = tokenString(ch); return state.tokenize(stream, state); } // Def if (ch == "@") { stream.next(); stream.eatWhile(/[\w\\-]/); return ["def", stream.current()]; } // ID selector or Hex color if (ch == "#") { stream.next(); // Hex color if (stream.match(/^[0-9a-f]{6}|[0-9a-f]{3}/i)) { return ["atom", "atom"]; } // ID selector if (stream.match(/^[a-z][\w-]*/i)) { return ["builtin", "hash"]; } } // Vendor prefixes if (stream.match(vendorPrefixesRegexp)) { return ["meta", "vendor-prefixes"]; } // Numbers if (stream.match(/^-?[0-9]?\.?[0-9]/)) { stream.eatWhile(/[a-z%]/i); return ["number", "unit"]; } // !important|optional if (ch == "!") { stream.next(); return [stream.match(/^(important|optional)/i) ? "keyword": "operator", "important"]; } // Class if (ch == "." && stream.match(/^\.[a-z][\w-]*/i)) { return ["qualifier", "qualifier"]; } // url url-prefix domain regexp if (stream.match(documentTypesRegexp)) { if (stream.peek() == "(") state.tokenize = tokenParenthesized; return ["property", "word"]; } // Mixins / Functions if (stream.match(/^[a-z][\w-]*\(/i)) { stream.backUp(1); return ["keyword", "mixin"]; } // Block mixins if (stream.match(/^(\+|-)[a-z][\w-]*\(/i)) { stream.backUp(1); return ["keyword", "block-mixin"]; } // Parent Reference BEM naming if (stream.string.match(/^\s*&/) && stream.match(/^[-_]+[a-z][\w-]*/)) { return ["qualifier", "qualifier"]; } // / Root Reference & Parent Reference if (stream.match(/^(\/|&)(-|_|:|\.|#|[a-z])/)) { stream.backUp(1); return ["variable-3", "reference"]; } if (stream.match(/^&{1}\s*$/)) { return ["variable-3", "reference"]; } // Word operator if (stream.match(wordOperatorKeywordsRegexp)) { return ["operator", "operator"]; } // Word if (stream.match(/^\$?[-_]*[a-z0-9]+[\w-]*/i)) { // Variable if (stream.match(/^(\.|\[)[\w-\'\"\]]+/i, false)) { if (!wordIsTag(stream.current())) { stream.match(/\./); return ["variable-2", "variable-name"]; } } return ["variable-2", "word"]; } // Operators if (stream.match(operatorsRegexp)) { return ["operator", stream.current()]; } // Delimiters if (/[:;,{}\[\]\(\)]/.test(ch)) { stream.next(); return [null, ch]; } // Non-detected items stream.next(); return [null, null]; } /** * Token comment */ function tokenCComment(stream, state) { var maybeEnd = false, ch; while ((ch = stream.next()) != null) { if (maybeEnd && ch == "/") { state.tokenize = null; break; } maybeEnd = (ch == "*"); } return ["comment", "comment"]; } /** * Token string */ function tokenString(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) { if (quote == ")") stream.backUp(1); break; } escaped = !escaped && ch == "\\"; } if (ch == quote || !escaped && quote != ")") state.tokenize = null; return ["string", "string"]; }; } /** * Token parenthesized */ function tokenParenthesized(stream, state) { stream.next(); // Must be "(" if (!stream.match(/\s*[\"\')]/, false)) state.tokenize = tokenString(")"); else state.tokenize = null; return [null, "("]; } /** * Context management */ function Context(type, indent, prev, line) { this.type = type; this.indent = indent; this.prev = prev; this.line = line || {firstWord: "", indent: 0}; } function pushContext(state, stream, type, indent) { indent = indent >= 0 ? indent : indentUnit; state.context = new Context(type, stream.indentation() + indent, state.context); return type; } function popContext(state, currentIndent) { var contextIndent = state.context.indent - indentUnit; currentIndent = currentIndent || false; state.context = state.context.prev; if (currentIndent) state.context.indent = contextIndent; return state.context.type; } function pass(type, stream, state) { return states[state.context.type](type, stream, state); } function popAndPass(type, stream, state, n) { for (var i = n || 1; i > 0; i--) state.context = state.context.prev; return pass(type, stream, state); } /** * Parser */ function wordIsTag(word) { return word.toLowerCase() in tagKeywords; } function wordIsProperty(word) { word = word.toLowerCase(); return word in propertyKeywords || word in fontProperties; } function wordIsBlock(word) { return word.toLowerCase() in blockKeywords; } function wordIsVendorPrefix(word) { return word.toLowerCase().match(vendorPrefixesRegexp); } function wordAsValue(word) { var wordLC = word.toLowerCase(); var override = "variable-2"; if (wordIsTag(word)) override = "tag"; else if (wordIsBlock(word)) override = "block-keyword"; else if (wordIsProperty(word)) override = "property"; else if (wordLC in valueKeywords || wordLC in commonAtoms) override = "atom"; else if (wordLC == "return" || wordLC in colorKeywords) override = "keyword"; // Font family else if (word.match(/^[A-Z]/)) override = "string"; return override; } function typeIsBlock(type, stream) { return ((endOfLine(stream) && (type == "{" || type == "]" || type == "hash" || type == "qualifier")) || type == "block-mixin"); } function typeIsInterpolation(type, stream) { return type == "{" && stream.match(/^\s*\$?[\w-]+/i, false); } function typeIsPseudo(type, stream) { return type == ":" && stream.match(/^[a-z-]+/, false); } function startOfLine(stream) { return stream.sol() || stream.string.match(new RegExp("^\\s*" + escapeRegExp(stream.current()))); } function endOfLine(stream) { return stream.eol() || stream.match(/^\s*$/, false); } function firstWordOfLine(line) { var re = /^\s*[-_]*[a-z0-9]+[\w-]*/i; var result = typeof line == "string" ? line.match(re) : line.string.match(re); return result ? result[0].replace(/^\s*/, "") : ""; } /** * Block */ states.block = function(type, stream, state) { if ((type == "comment" && startOfLine(stream)) || (type == "," && endOfLine(stream)) || type == "mixin") { return pushContext(state, stream, "block", 0); } if (typeIsInterpolation(type, stream)) { return pushContext(state, stream, "interpolation"); } if (endOfLine(stream) && type == "]") { if (!/^\s*(\.|#|:|\[|\*|&)/.test(stream.string) && !wordIsTag(firstWordOfLine(stream))) { return pushContext(state, stream, "block", 0); } } if (typeIsBlock(type, stream, state)) { return pushContext(state, stream, "block"); } if (type == "}" && endOfLine(stream)) { return pushContext(state, stream, "block", 0); } if (type == "variable-name") { if (stream.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/) || wordIsBlock(firstWordOfLine(stream))) { return pushContext(state, stream, "variableName"); } else { return pushContext(state, stream, "variableName", 0); } } if (type == "=") { if (!endOfLine(stream) && !wordIsBlock(firstWordOfLine(stream))) { return pushContext(state, stream, "block", 0); } return pushContext(state, stream, "block"); } if (type == "*") { if (endOfLine(stream) || stream.match(/\s*(,|\.|#|\[|:|{)/,false)) { override = "tag"; return pushContext(state, stream, "block"); } } if (typeIsPseudo(type, stream)) { return pushContext(state, stream, "pseudo"); } if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) { return pushContext(state, stream, endOfLine(stream) ? "block" : "atBlock"); } if (/@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) { return pushContext(state, stream, "keyframes"); } if (/@extends?/.test(type)) { return pushContext(state, stream, "extend", 0); } if (type && type.charAt(0) == "@") { // Property Lookup if (stream.indentation() > 0 && wordIsProperty(stream.current().slice(1))) { override = "variable-2"; return "block"; } if (/(@import|@require|@charset)/.test(type)) { return pushContext(state, stream, "block", 0); } return pushContext(state, stream, "block"); } if (type == "reference" && endOfLine(stream)) { return pushContext(state, stream, "block"); } if (type == "(") { return pushContext(state, stream, "parens"); } if (type == "vendor-prefixes") { return pushContext(state, stream, "vendorPrefixes"); } if (type == "word") { var word = stream.current(); override = wordAsValue(word); if (override == "property") { if (startOfLine(stream)) { return pushContext(state, stream, "block", 0); } else { override = "atom"; return "block"; } } if (override == "tag") { // tag is a css value if (/embed|menu|pre|progress|sub|table/.test(word)) { if (wordIsProperty(firstWordOfLine(stream))) { override = "atom"; return "block"; } } // tag is an attribute if (stream.string.match(new RegExp("\\[\\s*" + word + "|" + word +"\\s*\\]"))) { override = "atom"; return "block"; } // tag is a variable if (tagVariablesRegexp.test(word)) { if ((startOfLine(stream) && stream.string.match(/=/)) || (!startOfLine(stream) && !stream.string.match(/^(\s*\.|#|\&|\[|\/|>|\*)/) && !wordIsTag(firstWordOfLine(stream)))) { override = "variable-2"; if (wordIsBlock(firstWordOfLine(stream))) return "block"; return pushContext(state, stream, "block", 0); } } if (endOfLine(stream)) return pushContext(state, stream, "block"); } if (override == "block-keyword") { override = "keyword"; // Postfix conditionals if (stream.current(/(if|unless)/) && !startOfLine(stream)) { return "block"; } return pushContext(state, stream, "block"); } if (word == "return") return pushContext(state, stream, "block", 0); // Placeholder selector if (override == "variable-2" && stream.string.match(/^\s?\$[\w-\.\[\]\'\"]+$/)) { return pushContext(state, stream, "block"); } } return state.context.type; }; /** * Parens */ states.parens = function(type, stream, state) { if (type == "(") return pushContext(state, stream, "parens"); if (type == ")") { if (state.context.prev.type == "parens") { return popContext(state); } if ((stream.string.match(/^[a-z][\w-]*\(/i) && endOfLine(stream)) || wordIsBlock(firstWordOfLine(stream)) || /(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(firstWordOfLine(stream)) || (!stream.string.match(/^-?[a-z][\w-\.\[\]\'\"]*\s*=/) && wordIsTag(firstWordOfLine(stream)))) { return pushContext(state, stream, "block"); } if (stream.string.match(/^[\$-]?[a-z][\w-\.\[\]\'\"]*\s*=/) || stream.string.match(/^\s*(\(|\)|[0-9])/) || stream.string.match(/^\s+[a-z][\w-]*\(/i) || stream.string.match(/^\s+[\$-]?[a-z]/i)) { return pushContext(state, stream, "block", 0); } if (endOfLine(stream)) return pushContext(state, stream, "block"); else return pushContext(state, stream, "block", 0); } if (type && type.charAt(0) == "@" && wordIsProperty(stream.current().slice(1))) { override = "variable-2"; } if (type == "word") { var word = stream.current(); override = wordAsValue(word); if (override == "tag" && tagVariablesRegexp.test(word)) { override = "variable-2"; } if (override == "property" || word == "to") override = "atom"; } if (type == "variable-name") { return pushContext(state, stream, "variableName"); } if (typeIsPseudo(type, stream)) { return pushContext(state, stream, "pseudo"); } return state.context.type; }; /** * Vendor prefixes */ states.vendorPrefixes = function(type, stream, state) { if (type == "word") { override = "property"; return pushContext(state, stream, "block", 0); } return popContext(state); }; /** * Pseudo */ states.pseudo = function(type, stream, state) { if (!wordIsProperty(firstWordOfLine(stream.string))) { stream.match(/^[a-z-]+/); override = "variable-3"; if (endOfLine(stream)) return pushContext(state, stream, "block"); return popContext(state); } return popAndPass(type, stream, state); }; /** * atBlock */ states.atBlock = function(type, stream, state) { if (type == "(") return pushContext(state, stream, "atBlock_parens"); if (typeIsBlock(type, stream, state)) { return pushContext(state, stream, "block"); } if (typeIsInterpolation(type, stream)) { return pushContext(state, stream, "interpolation"); } if (type == "word") { var word = stream.current().toLowerCase(); if (/^(only|not|and|or)$/.test(word)) override = "keyword"; else if (documentTypes.hasOwnProperty(word)) override = "tag"; else if (mediaTypes.hasOwnProperty(word)) override = "attribute"; else if (mediaFeatures.hasOwnProperty(word)) override = "property"; else if (nonStandardPropertyKeywords.hasOwnProperty(word)) override = "string-2"; else override = wordAsValue(stream.current()); if (override == "tag" && endOfLine(stream)) { return pushContext(state, stream, "block"); } } if (type == "operator" && /^(not|and|or)$/.test(stream.current())) { override = "keyword"; } return state.context.type; }; states.atBlock_parens = function(type, stream, state) { if (type == "{" || type == "}") return state.context.type; if (type == ")") { if (endOfLine(stream)) return pushContext(state, stream, "block"); else return pushContext(state, stream, "atBlock"); } if (type == "word") { var word = stream.current().toLowerCase(); override = wordAsValue(word); if (/^(max|min)/.test(word)) override = "property"; if (override == "tag") { tagVariablesRegexp.test(word) ? override = "variable-2" : override = "atom"; } return state.context.type; } return states.atBlock(type, stream, state); }; /** * Keyframes */ states.keyframes = function(type, stream, state) { if (stream.indentation() == "0" && ((type == "}" && startOfLine(stream)) || type == "]" || type == "hash" || type == "qualifier" || wordIsTag(stream.current()))) { return popAndPass(type, stream, state); } if (type == "{") return pushContext(state, stream, "keyframes"); if (type == "}") { if (startOfLine(stream)) return popContext(state, true); else return pushContext(state, stream, "keyframes"); } if (type == "unit" && /^[0-9]+\%$/.test(stream.current())) { return pushContext(state, stream, "keyframes"); } if (type == "word") { override = wordAsValue(stream.current()); if (override == "block-keyword") { override = "keyword"; return pushContext(state, stream, "keyframes"); } } if (/@(font-face|media|supports|(-moz-)?document)/.test(type)) { return pushContext(state, stream, endOfLine(stream) ? "block" : "atBlock"); } if (type == "mixin") { return pushContext(state, stream, "block", 0); } return state.context.type; }; /** * Interpolation */ states.interpolation = function(type, stream, state) { if (type == "{") popContext(state) && pushContext(state, stream, "block"); if (type == "}") { if (stream.string.match(/^\s*(\.|#|:|\[|\*|&|>|~|\+|\/)/i) || (stream.string.match(/^\s*[a-z]/i) && wordIsTag(firstWordOfLine(stream)))) { return pushContext(state, stream, "block"); } if (!stream.string.match(/^(\{|\s*\&)/) || stream.match(/\s*[\w-]/,false)) { return pushContext(state, stream, "block", 0); } return pushContext(state, stream, "block"); } if (type == "variable-name") { return pushContext(state, stream, "variableName", 0); } if (type == "word") { override = wordAsValue(stream.current()); if (override == "tag") override = "atom"; } return state.context.type; }; /** * Extend/s */ states.extend = function(type, stream, state) { if (type == "[" || type == "=") return "extend"; if (type == "]") return popContext(state); if (type == "word") { override = wordAsValue(stream.current()); return "extend"; } return popContext(state); }; /** * Variable name */ states.variableName = function(type, stream, state) { if (type == "string" || type == "[" || type == "]" || stream.current().match(/^(\.|\$)/)) { if (stream.current().match(/^\.[\w-]+/i)) override = "variable-2"; return "variableName"; } return popAndPass(type, stream, state); }; return { startState: function(base) { return { tokenize: null, state: "block", context: new Context("block", base || 0, null) }; }, token: function(stream, state) { if (!state.tokenize && stream.eatSpace()) return null; style = (state.tokenize || tokenBase)(stream, state); if (style && typeof style == "object") { type = style[1]; style = style[0]; } override = style; state.state = states[state.state](type, stream, state); return override; }, indent: function(state, textAfter, line) { var cx = state.context, ch = textAfter && textAfter.charAt(0), indent = cx.indent, lineFirstWord = firstWordOfLine(textAfter), lineIndent = line.length - line.replace(/^\s*/, "").length, prevLineFirstWord = state.context.prev ? state.context.prev.line.firstWord : "", prevLineIndent = state.context.prev ? state.context.prev.line.indent : lineIndent; if (cx.prev && (ch == "}" && (cx.type == "block" || cx.type == "atBlock" || cx.type == "keyframes") || ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") || ch == "{" && (cx.type == "at"))) { indent = cx.indent - indentUnit; cx = cx.prev; } else if (!(/(\})/.test(ch))) { if (/@|\$|\d/.test(ch) || /^\{/.test(textAfter) || /^\s*\/(\/|\*)/.test(textAfter) || /^\s*\/\*/.test(prevLineFirstWord) || /^\s*[\w-\.\[\]\'\"]+\s*(\?|:|\+)?=/i.test(textAfter) || /^(\+|-)?[a-z][\w-]*\(/i.test(textAfter) || /^return/.test(textAfter) || wordIsBlock(lineFirstWord)) { indent = lineIndent; } else if (/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(ch) || wordIsTag(lineFirstWord)) { if (/\,\s*$/.test(prevLineFirstWord)) { indent = prevLineIndent; } else if (/^\s+/.test(line) && (/(\.|#|:|\[|\*|&|>|~|\+|\/)/.test(prevLineFirstWord) || wordIsTag(prevLineFirstWord))) { indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit; } else { indent = lineIndent; } } else if (!/,\s*$/.test(line) && (wordIsVendorPrefix(lineFirstWord) || wordIsProperty(lineFirstWord))) { if (wordIsBlock(prevLineFirstWord)) { indent = lineIndent <= prevLineIndent ? prevLineIndent : prevLineIndent + indentUnit; } else if (/^\{/.test(prevLineFirstWord)) { indent = lineIndent <= prevLineIndent ? lineIndent : prevLineIndent + indentUnit; } else if (wordIsVendorPrefix(prevLineFirstWord) || wordIsProperty(prevLineFirstWord)) { indent = lineIndent >= prevLineIndent ? prevLineIndent : lineIndent; } else if (/^(\.|#|:|\[|\*|&|@|\+|\-|>|~|\/)/.test(prevLineFirstWord) || /=\s*$/.test(prevLineFirstWord) || wordIsTag(prevLineFirstWord) || /^\$[\w-\.\[\]\'\"]/.test(prevLineFirstWord)) { indent = prevLineIndent + indentUnit; } else { indent = lineIndent; } } } return indent; }, electricChars: "}", lineComment: "//", fold: "indent" }; }); // developer.mozilla.org/en-US/docs/Web/HTML/Element var tagKeywords_ = ["a","abbr","address","area","article","aside","audio", "b", "base","bdi", "bdo","bgsound","blockquote","body","br","button","canvas","caption","cite", "code","col","colgroup","data","datalist","dd","del","details","dfn","div", "dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1", "h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe", "img","input","ins","kbd","keygen","label","legend","li","link","main","map", "mark","marquee","menu","menuitem","meta","meter","nav","nobr","noframes", "noscript","object","ol","optgroup","option","output","p","param","pre", "progress","q","rp","rt","ruby","s","samp","script","section","select", "small","source","span","strong","style","sub","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","track", "u","ul","var","video"]; // github.com/codemirror/CodeMirror/blob/master/mode/css/css.js var documentTypes_ = ["domain", "regexp", "url", "url-prefix"]; var mediaTypes_ = ["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"]; var mediaFeatures_ = ["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid"]; var propertyKeywords_ = ["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode","font-smoothing","osx-font-smoothing"]; var nonStandardPropertyKeywords_ = ["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"]; var fontProperties_ = ["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"]; var colorKeywords_ = ["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"]; var valueKeywords_ = ["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","column","compact","condensed","contain","content","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scale","scale3d","scaleX","scaleY","scaleZ","scroll","scrollbar","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","spell-out","square","square-button","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","x-large","x-small","xor","xx-large","xx-small","bicubic","optimizespeed","grayscale","row","row-reverse","wrap","wrap-reverse","column-reverse","flex-start","flex-end","space-between","space-around"]; var wordOperatorKeywords_ = ["in","and","or","not","is not","is a","is","isnt","defined","if unless"], blockKeywords_ = ["for","if","else","unless", "from", "to"], commonAtoms_ = ["null","true","false","href","title","type","not-allowed","readonly","disabled"], commonDef_ = ["@font-face", "@keyframes", "@media", "@viewport", "@page", "@host", "@supports", "@block", "@css"]; var hintWords = tagKeywords_.concat(documentTypes_,mediaTypes_,mediaFeatures_, propertyKeywords_,nonStandardPropertyKeywords_, colorKeywords_,valueKeywords_,fontProperties_, wordOperatorKeywords_,blockKeywords_, commonAtoms_,commonDef_); function wordRegexp(words) { words = words.sort(function(a,b){return b > a;}); return new RegExp("^((" + words.join(")|(") + "))\\b"); } function keySet(array) { var keys = {}; for (var i = 0; i < array.length; ++i) keys[array[i]] = true; return keys; } function escapeRegExp(text) { return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"); } CodeMirror.registerHelper("hintWords", "stylus", hintWords); CodeMirror.defineMIME("text/x-styl", "stylus"); }); application/library/codemirror/mode/stylus/index.html000064400000004650147577724760017203 0ustar00 CodeMirror: Stylus mode

Stylus mode

MIME types defined: text/x-styl.

Created by Dmitry Kiselyov

application/library/codemirror/mode/swift/swift.js000064400000014430147577724760016466 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Swift mode created by Michael Kaminsky https://github.com/mkaminsky11 (function(mod) { if (typeof exports == "object" && typeof module == "object") mod(require("../../lib/codemirror")) else if (typeof define == "function" && define.amd) define(["../../lib/codemirror"], mod) else mod(CodeMirror) })(function(CodeMirror) { "use strict" function wordSet(words) { var set = {} for (var i = 0; i < words.length; i++) set[words[i]] = true return set } var keywords = wordSet(["var","let","class","deinit","enum","extension","func","import","init","protocol", "static","struct","subscript","typealias","as","dynamicType","is","new","super", "self","Self","Type","__COLUMN__","__FILE__","__FUNCTION__","__LINE__","break","case", "continue","default","do","else","fallthrough","if","in","for","return","switch", "where","while","associativity","didSet","get","infix","inout","left","mutating", "none","nonmutating","operator","override","postfix","precedence","prefix","right", "set","unowned","weak","willSet"]) var definingKeywords = wordSet(["var","let","class","enum","extension","func","import","protocol","struct", "typealias","dynamicType","for"]) var atoms = wordSet(["Infinity","NaN","undefined","null","true","false","on","off","yes","no","nil","null", "this","super"]) var types = wordSet(["String","bool","int","string","double","Double","Int","Float","float","public", "private","extension"]) var operators = "+-/*%=|&<>#" var punc = ";,.(){}[]" var number = /^-?(?:(?:[\d_]+\.[_\d]*|\.[_\d]+|0o[0-7_\.]+|0b[01_\.]+)(?:e-?[\d_]+)?|0x[\d_a-f\.]+(?:p-?[\d_]+)?)/i var identifier = /^[_A-Za-z$][_A-Za-z$0-9]*/ var property = /^[@\.][_A-Za-z$][_A-Za-z$0-9]*/ var regexp = /^\/(?!\s)(?:\/\/)?(?:\\.|[^\/])+\// function tokenBase(stream, state, prev) { if (stream.sol()) state.indented = stream.indentation() if (stream.eatSpace()) return null var ch = stream.peek() if (ch == "/") { if (stream.match("//")) { stream.skipToEnd() return "comment" } if (stream.match("/*")) { state.tokenize.push(tokenComment) return tokenComment(stream, state) } if (stream.match(regexp)) return "string-2" } if (operators.indexOf(ch) > -1) { stream.next() return "operator" } if (punc.indexOf(ch) > -1) { stream.next() stream.match("..") return "punctuation" } if (ch == '"' || ch == "'") { stream.next() var tokenize = tokenString(ch) state.tokenize.push(tokenize) return tokenize(stream, state) } if (stream.match(number)) return "number" if (stream.match(property)) return "property" if (stream.match(identifier)) { var ident = stream.current() if (keywords.hasOwnProperty(ident)) { if (definingKeywords.hasOwnProperty(ident)) state.prev = "define" return "keyword" } if (types.hasOwnProperty(ident)) return "variable-2" if (atoms.hasOwnProperty(ident)) return "atom" if (prev == "define") return "def" return "variable" } stream.next() return null } function tokenUntilClosingParen() { var depth = 0 return function(stream, state, prev) { var inner = tokenBase(stream, state, prev) if (inner == "punctuation") { if (stream.current() == "(") ++depth else if (stream.current() == ")") { if (depth == 0) { stream.backUp(1) state.tokenize.pop() return state.tokenize[state.tokenize.length - 1](stream, state) } else --depth } } return inner } } function tokenString(quote) { return function(stream, state) { var ch, escaped = false while (ch = stream.next()) { if (escaped) { if (ch == "(") { state.tokenize.push(tokenUntilClosingParen()) return "string" } escaped = false } else if (ch == quote) { break } else { escaped = ch == "\\" } } state.tokenize.pop() return "string" } } function tokenComment(stream, state) { stream.match(/^(?:[^*]|\*(?!\/))*/) if (stream.match("*/")) state.tokenize.pop() return "comment" } function Context(prev, align, indented) { this.prev = prev this.align = align this.indented = indented } function pushContext(state, stream) { var align = stream.match(/^\s*($|\/[\/\*])/, false) ? null : stream.column() + 1 state.context = new Context(state.context, align, state.indented) } function popContext(state) { if (state.context) { state.indented = state.context.indented state.context = state.context.prev } } CodeMirror.defineMode("swift", function(config) { return { startState: function() { return { prev: null, context: null, indented: 0, tokenize: [] } }, token: function(stream, state) { var prev = state.prev state.prev = null var tokenize = state.tokenize[state.tokenize.length - 1] || tokenBase var style = tokenize(stream, state, prev) if (!style || style == "comment") state.prev = prev else if (!state.prev) state.prev = style if (style == "punctuation") { var bracket = /[\(\[\{]|([\]\)\}])/.exec(stream.current()) if (bracket) (bracket[1] ? popContext : pushContext)(state, stream) } return style }, indent: function(state, textAfter) { var cx = state.context if (!cx) return 0 var closing = /^[\]\}\)]/.test(textAfter) if (cx.align != null) return cx.align - (closing ? 1 : 0) return cx.indented + (closing ? 0 : config.indentUnit) }, electricInput: /^\s*[\)\}\]]$/, lineComment: "//", blockCommentStart: "/*", blockCommentEnd: "*/" } }) CodeMirror.defineMIME("text/x-swift","swift") }); application/library/codemirror/mode/swift/index.html000064400000004045147577724760016772 0ustar00 CodeMirror: Swift mode

Swift mode

A simple mode for Swift

MIME types defined: text/x-swift (Swift code)

application/library/codemirror/mode/tcl/index.html000064400000014231147577724760016416 0ustar00 CodeMirror: Tcl mode

Tcl mode

MIME types defined: text/x-tcl.

application/library/codemirror/mode/tcl/tcl.js000064400000011470147577724760015543 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE //tcl mode by Ford_Lawnmower :: Based on Velocity mode by Steve O'Hara (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("tcl", function() { function parseWords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var keywords = parseWords("Tcl safe after append array auto_execok auto_import auto_load " + "auto_mkindex auto_mkindex_old auto_qualify auto_reset bgerror " + "binary break catch cd close concat continue dde eof encoding error " + "eval exec exit expr fblocked fconfigure fcopy file fileevent filename " + "filename flush for foreach format gets glob global history http if " + "incr info interp join lappend lindex linsert list llength load lrange " + "lreplace lsearch lset lsort memory msgcat namespace open package parray " + "pid pkg::create pkg_mkIndex proc puts pwd re_syntax read regex regexp " + "registry regsub rename resource return scan seek set socket source split " + "string subst switch tcl_endOfWord tcl_findLibrary tcl_startOfNextWord " + "tcl_wordBreakAfter tcl_startOfPreviousWord tcl_wordBreakBefore tcltest " + "tclvars tell time trace unknown unset update uplevel upvar variable " + "vwait"); var functions = parseWords("if elseif else and not or eq ne in ni for foreach while switch"); var isOperatorChar = /[+\-*&%=<>!?^\/\|]/; function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } function tokenBase(stream, state) { var beforeParams = state.beforeParams; state.beforeParams = false; var ch = stream.next(); if ((ch == '"' || ch == "'") && state.inParams) { return chain(stream, state, tokenString(ch)); } else if (/[\[\]{}\(\),;\.]/.test(ch)) { if (ch == "(" && beforeParams) state.inParams = true; else if (ch == ")") state.inParams = false; return null; } else if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } else if (ch == "#") { if (stream.eat("*")) return chain(stream, state, tokenComment); if (ch == "#" && stream.match(/ *\[ *\[/)) return chain(stream, state, tokenUnparsed); stream.skipToEnd(); return "comment"; } else if (ch == '"') { stream.skipTo(/"/); return "comment"; } else if (ch == "$") { stream.eatWhile(/[$_a-z0-9A-Z\.{:]/); stream.eatWhile(/}/); state.beforeParams = true; return "builtin"; } else if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "comment"; } else { stream.eatWhile(/[\w\$_{}\xa1-\uffff]/); var word = stream.current().toLowerCase(); if (keywords && keywords.propertyIsEnumerable(word)) return "keyword"; if (functions && functions.propertyIsEnumerable(word)) { state.beforeParams = true; return "keyword"; } return null; } } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) { end = true; break; } escaped = !escaped && next == "\\"; } if (end) state.tokenize = tokenBase; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "#" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function tokenUnparsed(stream, state) { var maybeEnd = 0, ch; while (ch = stream.next()) { if (ch == "#" && maybeEnd == 2) { state.tokenize = tokenBase; break; } if (ch == "]") maybeEnd++; else if (ch != " ") maybeEnd = 0; } return "meta"; } return { startState: function() { return { tokenize: tokenBase, beforeParams: false, inParams: false }; }, token: function(stream, state) { if (stream.eatSpace()) return null; return state.tokenize(stream, state); } }; }); CodeMirror.defineMIME("text/x-tcl", "tcl"); }); application/library/codemirror/mode/textile/index.html000064400000010373147577724760017315 0ustar00 CodeMirror: Textile mode

Textile mode

MIME types defined: text/x-textile.

Parsing/Highlighting Tests: normal, verbose.

application/library/codemirror/mode/textile/textile.js000064400000033022147577724760017330 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") { // CommonJS mod(require("../../lib/codemirror")); } else if (typeof define == "function" && define.amd) { // AMD define(["../../lib/codemirror"], mod); } else { // Plain browser env mod(CodeMirror); } })(function(CodeMirror) { "use strict"; var TOKEN_STYLES = { addition: "positive", attributes: "attribute", bold: "strong", cite: "keyword", code: "atom", definitionList: "number", deletion: "negative", div: "punctuation", em: "em", footnote: "variable", footCite: "qualifier", header: "header", html: "comment", image: "string", italic: "em", link: "link", linkDefinition: "link", list1: "variable-2", list2: "variable-3", list3: "keyword", notextile: "string-2", pre: "operator", p: "property", quote: "bracket", span: "quote", specialChar: "tag", strong: "strong", sub: "builtin", sup: "builtin", table: "variable-3", tableHeading: "operator" }; function startNewLine(stream, state) { state.mode = Modes.newLayout; state.tableHeading = false; if (state.layoutType === "definitionList" && state.spanningLayout && stream.match(RE("definitionListEnd"), false)) state.spanningLayout = false; } function handlePhraseModifier(stream, state, ch) { if (ch === "_") { if (stream.eat("_")) return togglePhraseModifier(stream, state, "italic", /__/, 2); else return togglePhraseModifier(stream, state, "em", /_/, 1); } if (ch === "*") { if (stream.eat("*")) { return togglePhraseModifier(stream, state, "bold", /\*\*/, 2); } return togglePhraseModifier(stream, state, "strong", /\*/, 1); } if (ch === "[") { if (stream.match(/\d+\]/)) state.footCite = true; return tokenStyles(state); } if (ch === "(") { var spec = stream.match(/^(r|tm|c)\)/); if (spec) return tokenStylesWith(state, TOKEN_STYLES.specialChar); } if (ch === "<" && stream.match(/(\w+)[^>]+>[^<]+<\/\1>/)) return tokenStylesWith(state, TOKEN_STYLES.html); if (ch === "?" && stream.eat("?")) return togglePhraseModifier(stream, state, "cite", /\?\?/, 2); if (ch === "=" && stream.eat("=")) return togglePhraseModifier(stream, state, "notextile", /==/, 2); if (ch === "-" && !stream.eat("-")) return togglePhraseModifier(stream, state, "deletion", /-/, 1); if (ch === "+") return togglePhraseModifier(stream, state, "addition", /\+/, 1); if (ch === "~") return togglePhraseModifier(stream, state, "sub", /~/, 1); if (ch === "^") return togglePhraseModifier(stream, state, "sup", /\^/, 1); if (ch === "%") return togglePhraseModifier(stream, state, "span", /%/, 1); if (ch === "@") return togglePhraseModifier(stream, state, "code", /@/, 1); if (ch === "!") { var type = togglePhraseModifier(stream, state, "image", /(?:\([^\)]+\))?!/, 1); stream.match(/^:\S+/); // optional Url portion return type; } return tokenStyles(state); } function togglePhraseModifier(stream, state, phraseModifier, closeRE, openSize) { var charBefore = stream.pos > openSize ? stream.string.charAt(stream.pos - openSize - 1) : null; var charAfter = stream.peek(); if (state[phraseModifier]) { if ((!charAfter || /\W/.test(charAfter)) && charBefore && /\S/.test(charBefore)) { var type = tokenStyles(state); state[phraseModifier] = false; return type; } } else if ((!charBefore || /\W/.test(charBefore)) && charAfter && /\S/.test(charAfter) && stream.match(new RegExp("^.*\\S" + closeRE.source + "(?:\\W|$)"), false)) { state[phraseModifier] = true; state.mode = Modes.attributes; } return tokenStyles(state); }; function tokenStyles(state) { var disabled = textileDisabled(state); if (disabled) return disabled; var styles = []; if (state.layoutType) styles.push(TOKEN_STYLES[state.layoutType]); styles = styles.concat(activeStyles( state, "addition", "bold", "cite", "code", "deletion", "em", "footCite", "image", "italic", "link", "span", "strong", "sub", "sup", "table", "tableHeading")); if (state.layoutType === "header") styles.push(TOKEN_STYLES.header + "-" + state.header); return styles.length ? styles.join(" ") : null; } function textileDisabled(state) { var type = state.layoutType; switch(type) { case "notextile": case "code": case "pre": return TOKEN_STYLES[type]; default: if (state.notextile) return TOKEN_STYLES.notextile + (type ? (" " + TOKEN_STYLES[type]) : ""); return null; } } function tokenStylesWith(state, extraStyles) { var disabled = textileDisabled(state); if (disabled) return disabled; var type = tokenStyles(state); if (extraStyles) return type ? (type + " " + extraStyles) : extraStyles; else return type; } function activeStyles(state) { var styles = []; for (var i = 1; i < arguments.length; ++i) { if (state[arguments[i]]) styles.push(TOKEN_STYLES[arguments[i]]); } return styles; } function blankLine(state) { var spanningLayout = state.spanningLayout, type = state.layoutType; for (var key in state) if (state.hasOwnProperty(key)) delete state[key]; state.mode = Modes.newLayout; if (spanningLayout) { state.layoutType = type; state.spanningLayout = true; } } var REs = { cache: {}, single: { bc: "bc", bq: "bq", definitionList: /- [^(?::=)]+:=+/, definitionListEnd: /.*=:\s*$/, div: "div", drawTable: /\|.*\|/, foot: /fn\d+/, header: /h[1-6]/, html: /\s*<(?:\/)?(\w+)(?:[^>]+)?>(?:[^<]+<\/\1>)?/, link: /[^"]+":\S/, linkDefinition: /\[[^\s\]]+\]\S+/, list: /(?:#+|\*+)/, notextile: "notextile", para: "p", pre: "pre", table: "table", tableCellAttributes: /[\/\\]\d+/, tableHeading: /\|_\./, tableText: /[^"_\*\[\(\?\+~\^%@|-]+/, text: /[^!"_=\*\[\(<\?\+~\^%@-]+/ }, attributes: { align: /(?:<>|<|>|=)/, selector: /\([^\(][^\)]+\)/, lang: /\[[^\[\]]+\]/, pad: /(?:\(+|\)+){1,2}/, css: /\{[^\}]+\}/ }, createRe: function(name) { switch (name) { case "drawTable": return REs.makeRe("^", REs.single.drawTable, "$"); case "html": return REs.makeRe("^", REs.single.html, "(?:", REs.single.html, ")*", "$"); case "linkDefinition": return REs.makeRe("^", REs.single.linkDefinition, "$"); case "listLayout": return REs.makeRe("^", REs.single.list, RE("allAttributes"), "*\\s+"); case "tableCellAttributes": return REs.makeRe("^", REs.choiceRe(REs.single.tableCellAttributes, RE("allAttributes")), "+\\."); case "type": return REs.makeRe("^", RE("allTypes")); case "typeLayout": return REs.makeRe("^", RE("allTypes"), RE("allAttributes"), "*\\.\\.?", "(\\s+|$)"); case "attributes": return REs.makeRe("^", RE("allAttributes"), "+"); case "allTypes": return REs.choiceRe(REs.single.div, REs.single.foot, REs.single.header, REs.single.bc, REs.single.bq, REs.single.notextile, REs.single.pre, REs.single.table, REs.single.para); case "allAttributes": return REs.choiceRe(REs.attributes.selector, REs.attributes.css, REs.attributes.lang, REs.attributes.align, REs.attributes.pad); default: return REs.makeRe("^", REs.single[name]); } }, makeRe: function() { var pattern = ""; for (var i = 0; i < arguments.length; ++i) { var arg = arguments[i]; pattern += (typeof arg === "string") ? arg : arg.source; } return new RegExp(pattern); }, choiceRe: function() { var parts = [arguments[0]]; for (var i = 1; i < arguments.length; ++i) { parts[i * 2 - 1] = "|"; parts[i * 2] = arguments[i]; } parts.unshift("(?:"); parts.push(")"); return REs.makeRe.apply(null, parts); } }; function RE(name) { return (REs.cache[name] || (REs.cache[name] = REs.createRe(name))); } var Modes = { newLayout: function(stream, state) { if (stream.match(RE("typeLayout"), false)) { state.spanningLayout = false; return (state.mode = Modes.blockType)(stream, state); } var newMode; if (!textileDisabled(state)) { if (stream.match(RE("listLayout"), false)) newMode = Modes.list; else if (stream.match(RE("drawTable"), false)) newMode = Modes.table; else if (stream.match(RE("linkDefinition"), false)) newMode = Modes.linkDefinition; else if (stream.match(RE("definitionList"))) newMode = Modes.definitionList; else if (stream.match(RE("html"), false)) newMode = Modes.html; } return (state.mode = (newMode || Modes.text))(stream, state); }, blockType: function(stream, state) { var match, type; state.layoutType = null; if (match = stream.match(RE("type"))) type = match[0]; else return (state.mode = Modes.text)(stream, state); if (match = type.match(RE("header"))) { state.layoutType = "header"; state.header = parseInt(match[0][1]); } else if (type.match(RE("bq"))) { state.layoutType = "quote"; } else if (type.match(RE("bc"))) { state.layoutType = "code"; } else if (type.match(RE("foot"))) { state.layoutType = "footnote"; } else if (type.match(RE("notextile"))) { state.layoutType = "notextile"; } else if (type.match(RE("pre"))) { state.layoutType = "pre"; } else if (type.match(RE("div"))) { state.layoutType = "div"; } else if (type.match(RE("table"))) { state.layoutType = "table"; } state.mode = Modes.attributes; return tokenStyles(state); }, text: function(stream, state) { if (stream.match(RE("text"))) return tokenStyles(state); var ch = stream.next(); if (ch === '"') return (state.mode = Modes.link)(stream, state); return handlePhraseModifier(stream, state, ch); }, attributes: function(stream, state) { state.mode = Modes.layoutLength; if (stream.match(RE("attributes"))) return tokenStylesWith(state, TOKEN_STYLES.attributes); else return tokenStyles(state); }, layoutLength: function(stream, state) { if (stream.eat(".") && stream.eat(".")) state.spanningLayout = true; state.mode = Modes.text; return tokenStyles(state); }, list: function(stream, state) { var match = stream.match(RE("list")); state.listDepth = match[0].length; var listMod = (state.listDepth - 1) % 3; if (!listMod) state.layoutType = "list1"; else if (listMod === 1) state.layoutType = "list2"; else state.layoutType = "list3"; state.mode = Modes.attributes; return tokenStyles(state); }, link: function(stream, state) { state.mode = Modes.text; if (stream.match(RE("link"))) { stream.match(/\S+/); return tokenStylesWith(state, TOKEN_STYLES.link); } return tokenStyles(state); }, linkDefinition: function(stream, state) { stream.skipToEnd(); return tokenStylesWith(state, TOKEN_STYLES.linkDefinition); }, definitionList: function(stream, state) { stream.match(RE("definitionList")); state.layoutType = "definitionList"; if (stream.match(/\s*$/)) state.spanningLayout = true; else state.mode = Modes.attributes; return tokenStyles(state); }, html: function(stream, state) { stream.skipToEnd(); return tokenStylesWith(state, TOKEN_STYLES.html); }, table: function(stream, state) { state.layoutType = "table"; return (state.mode = Modes.tableCell)(stream, state); }, tableCell: function(stream, state) { if (stream.match(RE("tableHeading"))) state.tableHeading = true; else stream.eat("|"); state.mode = Modes.tableCellAttributes; return tokenStyles(state); }, tableCellAttributes: function(stream, state) { state.mode = Modes.tableText; if (stream.match(RE("tableCellAttributes"))) return tokenStylesWith(state, TOKEN_STYLES.attributes); else return tokenStyles(state); }, tableText: function(stream, state) { if (stream.match(RE("tableText"))) return tokenStyles(state); if (stream.peek() === "|") { // end of cell state.mode = Modes.tableCell; return tokenStyles(state); } return handlePhraseModifier(stream, state, stream.next()); } }; CodeMirror.defineMode("textile", function() { return { startState: function() { return { mode: Modes.newLayout }; }, token: function(stream, state) { if (stream.sol()) startNewLine(stream, state); return state.mode(stream, state); }, blankLine: blankLine }; }); CodeMirror.defineMIME("text/x-textile", "textile"); }); application/library/codemirror/mode/textile/test.js000064400000022335147577724760016636 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({tabSize: 4}, 'textile'); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT('simpleParagraphs', 'Some text.', '', 'Some more text.'); /* * Phrase Modifiers */ MT('em', 'foo [em _bar_]'); MT('emBoogus', 'code_mirror'); MT('strong', 'foo [strong *bar*]'); MT('strongBogus', '3 * 3 = 9'); MT('italic', 'foo [em __bar__]'); MT('italicBogus', 'code__mirror'); MT('bold', 'foo [strong **bar**]'); MT('boldBogus', '3 ** 3 = 27'); MT('simpleLink', '[link "CodeMirror":http://codemirror.net]'); MT('referenceLink', '[link "CodeMirror":code_mirror]', 'Normal Text.', '[link [[code_mirror]]http://codemirror.net]'); MT('footCite', 'foo bar[qualifier [[1]]]'); MT('footCiteBogus', 'foo bar[[1a2]]'); MT('special-characters', 'Registered [tag (r)], ' + 'Trademark [tag (tm)], and ' + 'Copyright [tag (c)] 2008'); MT('cite', "A book is [keyword ??The Count of Monte Cristo??] by Dumas."); MT('additionAndDeletion', 'The news networks declared [negative -Al Gore-] ' + '[positive +George W. Bush+] the winner in Florida.'); MT('subAndSup', 'f(x, n) = log [builtin ~4~] x [builtin ^n^]'); MT('spanAndCode', 'A [quote %span element%] and [atom @code element@]'); MT('spanBogus', 'Percentage 25% is not a span.'); MT('citeBogus', 'Question? is not a citation.'); MT('codeBogus', 'user@example.com'); MT('subBogus', '~username'); MT('supBogus', 'foo ^ bar'); MT('deletionBogus', '3 - 3 = 0'); MT('additionBogus', '3 + 3 = 6'); MT('image', 'An image: [string !http://www.example.com/image.png!]'); MT('imageWithAltText', 'An image: [string !http://www.example.com/image.png (Alt Text)!]'); MT('imageWithUrl', 'An image: [string !http://www.example.com/image.png!:http://www.example.com/]'); /* * Headers */ MT('h1', '[header&header-1 h1. foo]'); MT('h2', '[header&header-2 h2. foo]'); MT('h3', '[header&header-3 h3. foo]'); MT('h4', '[header&header-4 h4. foo]'); MT('h5', '[header&header-5 h5. foo]'); MT('h6', '[header&header-6 h6. foo]'); MT('h7Bogus', 'h7. foo'); MT('multipleHeaders', '[header&header-1 h1. Heading 1]', '', 'Some text.', '', '[header&header-2 h2. Heading 2]', '', 'More text.'); MT('h1inline', '[header&header-1 h1. foo ][header&header-1&em _bar_][header&header-1 baz]'); /* * Lists */ MT('ul', 'foo', 'bar', '', '[variable-2 * foo]', '[variable-2 * bar]'); MT('ulNoBlank', 'foo', 'bar', '[variable-2 * foo]', '[variable-2 * bar]'); MT('ol', 'foo', 'bar', '', '[variable-2 # foo]', '[variable-2 # bar]'); MT('olNoBlank', 'foo', 'bar', '[variable-2 # foo]', '[variable-2 # bar]'); MT('ulFormatting', '[variable-2 * ][variable-2&em _foo_][variable-2 bar]', '[variable-2 * ][variable-2&strong *][variable-2&em&strong _foo_]' + '[variable-2&strong *][variable-2 bar]', '[variable-2 * ][variable-2&strong *foo*][variable-2 bar]'); MT('olFormatting', '[variable-2 # ][variable-2&em _foo_][variable-2 bar]', '[variable-2 # ][variable-2&strong *][variable-2&em&strong _foo_]' + '[variable-2&strong *][variable-2 bar]', '[variable-2 # ][variable-2&strong *foo*][variable-2 bar]'); MT('ulNested', '[variable-2 * foo]', '[variable-3 ** bar]', '[keyword *** bar]', '[variable-2 **** bar]', '[variable-3 ** bar]'); MT('olNested', '[variable-2 # foo]', '[variable-3 ## bar]', '[keyword ### bar]', '[variable-2 #### bar]', '[variable-3 ## bar]'); MT('ulNestedWithOl', '[variable-2 * foo]', '[variable-3 ## bar]', '[keyword *** bar]', '[variable-2 #### bar]', '[variable-3 ** bar]'); MT('olNestedWithUl', '[variable-2 # foo]', '[variable-3 ** bar]', '[keyword ### bar]', '[variable-2 **** bar]', '[variable-3 ## bar]'); MT('definitionList', '[number - coffee := Hot ][number&em _and_][number black]', '', 'Normal text.'); MT('definitionListSpan', '[number - coffee :=]', '', '[number Hot ][number&em _and_][number black =:]', '', 'Normal text.'); MT('boo', '[number - dog := woof woof]', '[number - cat := meow meow]', '[number - whale :=]', '[number Whale noises.]', '', '[number Also, ][number&em _splashing_][number . =:]'); /* * Attributes */ MT('divWithAttribute', '[punctuation div][punctuation&attribute (#my-id)][punctuation . foo bar]'); MT('divWithAttributeAnd2emRightPadding', '[punctuation div][punctuation&attribute (#my-id)((][punctuation . foo bar]'); MT('divWithClassAndId', '[punctuation div][punctuation&attribute (my-class#my-id)][punctuation . foo bar]'); MT('paragraphWithCss', 'p[attribute {color:red;}]. foo bar'); MT('paragraphNestedStyles', 'p. [strong *foo ][strong&em _bar_][strong *]'); MT('paragraphWithLanguage', 'p[attribute [[fr]]]. Parlez-vous français?'); MT('paragraphLeftAlign', 'p[attribute <]. Left'); MT('paragraphRightAlign', 'p[attribute >]. Right'); MT('paragraphRightAlign', 'p[attribute =]. Center'); MT('paragraphJustified', 'p[attribute <>]. Justified'); MT('paragraphWithLeftIndent1em', 'p[attribute (]. Left'); MT('paragraphWithRightIndent1em', 'p[attribute )]. Right'); MT('paragraphWithLeftIndent2em', 'p[attribute ((]. Left'); MT('paragraphWithRightIndent2em', 'p[attribute ))]. Right'); MT('paragraphWithLeftIndent3emRightIndent2em', 'p[attribute ((())]. Right'); MT('divFormatting', '[punctuation div. ][punctuation&strong *foo ]' + '[punctuation&strong&em _bar_][punctuation&strong *]'); MT('phraseModifierAttributes', 'p[attribute (my-class)]. This is a paragraph that has a class and' + ' this [em _][em&attribute (#special-phrase)][em emphasized phrase_]' + ' has an id.'); MT('linkWithClass', '[link "(my-class). This is a link with class":http://redcloth.org]'); /* * Layouts */ MT('paragraphLayouts', 'p. This is one paragraph.', '', 'p. This is another.'); MT('div', '[punctuation div. foo bar]'); MT('pre', '[operator pre. Text]'); MT('bq.', '[bracket bq. foo bar]', '', 'Normal text.'); MT('footnote', '[variable fn123. foo ][variable&strong *bar*]'); /* * Spanning Layouts */ MT('bq..ThenParagraph', '[bracket bq.. foo bar]', '', '[bracket More quote.]', 'p. Normal Text'); MT('bq..ThenH1', '[bracket bq.. foo bar]', '', '[bracket More quote.]', '[header&header-1 h1. Header Text]'); MT('bc..ThenParagraph', '[atom bc.. # Some ruby code]', '[atom obj = {foo: :bar}]', '[atom puts obj]', '', '[atom obj[[:love]] = "*love*"]', '[atom puts obj.love.upcase]', '', 'p. Normal text.'); MT('fn1..ThenParagraph', '[variable fn1.. foo bar]', '', '[variable More.]', 'p. Normal Text'); MT('pre..ThenParagraph', '[operator pre.. foo bar]', '', '[operator More.]', 'p. Normal Text'); /* * Tables */ MT('table', '[variable-3&operator |_. name |_. age|]', '[variable-3 |][variable-3&strong *Walter*][variable-3 | 5 |]', '[variable-3 |Florence| 6 |]', '', 'p. Normal text.'); MT('tableWithAttributes', '[variable-3&operator |_. name |_. age|]', '[variable-3 |][variable-3&attribute /2.][variable-3 Jim |]', '[variable-3 |][variable-3&attribute \\2{color: red}.][variable-3 Sam |]'); /* * HTML */ MT('html', '[comment
]', '[comment
]', '', '[header&header-1 h1. Welcome]', '', '[variable-2 * Item one]', '[variable-2 * Item two]', '', '[comment Example]', '', '[comment
]', '[comment
]'); MT('inlineHtml', 'I can use HTML directly in my [comment Textile].'); /* * No-Textile */ MT('notextile', '[string-2 notextile. *No* formatting]'); MT('notextileInline', 'Use [string-2 ==*asterisks*==] for [strong *strong*] text.'); MT('notextileWithPre', '[operator pre. *No* formatting]'); MT('notextileWithSpanningPre', '[operator pre.. *No* formatting]', '', '[operator *No* formatting]'); /* Only toggling phrases between non-word chars. */ MT('phrase-in-word', 'foo_bar_baz'); MT('phrase-non-word', '[negative -x-] aaa-bbb ccc-ddd [negative -eee-] fff [negative -ggg-]'); MT('phrase-lone-dash', 'foo - bar - baz'); })(); application/library/codemirror/mode/tiddlywiki/index.html000064400000010743147577724760020015 0ustar00 CodeMirror: TiddlyWiki mode

TiddlyWiki mode

TiddlyWiki mode supports a single configuration.

MIME types defined: text/x-tiddlywiki.

application/library/codemirror/mode/tiddlywiki/tiddlywiki.css000064400000000334147577724760020702 0ustar00span.cm-underlined { text-decoration: underline; } span.cm-strikethrough { text-decoration: line-through; } span.cm-brace { color: #170; font-weight: bold; } span.cm-table { color: blue; font-weight: bold; } application/library/codemirror/mode/tiddlywiki/tiddlywiki.js000064400000020476147577724760020537 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /*** |''Name''|tiddlywiki.js| |''Description''|Enables TiddlyWikiy syntax highlighting using CodeMirror| |''Author''|PMario| |''Version''|0.1.7| |''Status''|''stable''| |''Source''|[[GitHub|https://github.com/pmario/CodeMirror2/blob/tw-syntax/mode/tiddlywiki]]| |''Documentation''|http://codemirror.tiddlyspace.com/| |''License''|[[MIT License|http://www.opensource.org/licenses/mit-license.php]]| |''CoreVersion''|2.5.0| |''Requires''|codemirror.js| |''Keywords''|syntax highlighting color code mirror codemirror| ! Info CoreVersion parameter is needed for TiddlyWiki only! ***/ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("tiddlywiki", function () { // Tokenizer var textwords = {}; var keywords = { "allTags": true, "closeAll": true, "list": true, "newJournal": true, "newTiddler": true, "permaview": true, "saveChanges": true, "search": true, "slider": true, "tabs": true, "tag": true, "tagging": true, "tags": true, "tiddler": true, "timeline": true, "today": true, "version": true, "option": true, "with": true, "filter": true }; var isSpaceName = /[\w_\-]/i, reHR = /^\-\-\-\-+$/, //
reWikiCommentStart = /^\/\*\*\*$/, // /*** reWikiCommentStop = /^\*\*\*\/$/, // ***/ reBlockQuote = /^<<<$/, reJsCodeStart = /^\/\/\{\{\{$/, // //{{{ js block start reJsCodeStop = /^\/\/\}\}\}$/, // //}}} js stop reXmlCodeStart = /^$/, // xml block start reXmlCodeStop = /^$/, // xml stop reCodeBlockStart = /^\{\{\{$/, // {{{ TW text div block start reCodeBlockStop = /^\}\}\}$/, // }}} TW text stop reUntilCodeStop = /.*?\}\}\}/; function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } function tokenBase(stream, state) { var sol = stream.sol(), ch = stream.peek(); state.block = false; // indicates the start of a code block. // check start of blocks if (sol && /[<\/\*{}\-]/.test(ch)) { if (stream.match(reCodeBlockStart)) { state.block = true; return chain(stream, state, twTokenCode); } if (stream.match(reBlockQuote)) return 'quote'; if (stream.match(reWikiCommentStart) || stream.match(reWikiCommentStop)) return 'comment'; if (stream.match(reJsCodeStart) || stream.match(reJsCodeStop) || stream.match(reXmlCodeStart) || stream.match(reXmlCodeStop)) return 'comment'; if (stream.match(reHR)) return 'hr'; } stream.next(); if (sol && /[\/\*!#;:>|]/.test(ch)) { if (ch == "!") { // tw header stream.skipToEnd(); return "header"; } if (ch == "*") { // tw list stream.eatWhile('*'); return "comment"; } if (ch == "#") { // tw numbered list stream.eatWhile('#'); return "comment"; } if (ch == ";") { // definition list, term stream.eatWhile(';'); return "comment"; } if (ch == ":") { // definition list, description stream.eatWhile(':'); return "comment"; } if (ch == ">") { // single line quote stream.eatWhile(">"); return "quote"; } if (ch == '|') return 'header'; } if (ch == '{' && stream.match(/\{\{/)) return chain(stream, state, twTokenCode); // rudimentary html:// file:// link matching. TW knows much more ... if (/[hf]/i.test(ch) && /[ti]/i.test(stream.peek()) && stream.match(/\b(ttps?|tp|ile):\/\/[\-A-Z0-9+&@#\/%?=~_|$!:,.;]*[A-Z0-9+&@#\/%=~_|$]/i)) return "link"; // just a little string indicator, don't want to have the whole string covered if (ch == '"') return 'string'; if (ch == '~') // _no_ CamelCase indicator should be bold return 'brace'; if (/[\[\]]/.test(ch) && stream.match(ch)) // check for [[..]] return 'brace'; if (ch == "@") { // check for space link. TODO fix @@...@@ highlighting stream.eatWhile(isSpaceName); return "link"; } if (/\d/.test(ch)) { // numbers stream.eatWhile(/\d/); return "number"; } if (ch == "/") { // tw invisible comment if (stream.eat("%")) { return chain(stream, state, twTokenComment); } else if (stream.eat("/")) { // return chain(stream, state, twTokenEm); } } if (ch == "_" && stream.eat("_")) // tw underline return chain(stream, state, twTokenUnderline); // strikethrough and mdash handling if (ch == "-" && stream.eat("-")) { // if strikethrough looks ugly, change CSS. if (stream.peek() != ' ') return chain(stream, state, twTokenStrike); // mdash if (stream.peek() == ' ') return 'brace'; } if (ch == "'" && stream.eat("'")) // tw bold return chain(stream, state, twTokenStrong); if (ch == "<" && stream.eat("<")) // tw macro return chain(stream, state, twTokenMacro); // core macro handling stream.eatWhile(/[\w\$_]/); return textwords.propertyIsEnumerable(stream.current()) ? "keyword" : null } // tw invisible comment function twTokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "%"); } return "comment"; } // tw strong / bold function twTokenStrong(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "'" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "'"); } return "strong"; } // tw code function twTokenCode(stream, state) { var sb = state.block; if (sb && stream.current()) { return "comment"; } if (!sb && stream.match(reUntilCodeStop)) { state.tokenize = tokenBase; return "comment"; } if (sb && stream.sol() && stream.match(reCodeBlockStop)) { state.tokenize = tokenBase; return "comment"; } stream.next(); return "comment"; } // tw em / italic function twTokenEm(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "/"); } return "em"; } // tw underlined text function twTokenUnderline(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "_" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "_"); } return "underlined"; } // tw strike through text looks ugly // change CSS if needed function twTokenStrike(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "-" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "-"); } return "strikethrough"; } // macro function twTokenMacro(stream, state) { if (stream.current() == '<<') { return 'macro'; } var ch = stream.next(); if (!ch) { state.tokenize = tokenBase; return null; } if (ch == ">") { if (stream.peek() == '>') { stream.next(); state.tokenize = tokenBase; return "macro"; } } stream.eatWhile(/[\w\$_]/); return keywords.propertyIsEnumerable(stream.current()) ? "keyword" : null } // Interface return { startState: function () { return {tokenize: tokenBase}; }, token: function (stream, state) { if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); return style; } }; }); CodeMirror.defineMIME("text/x-tiddlywiki", "tiddlywiki"); }); application/library/codemirror/mode/tiki/index.html000064400000003321147577724760016572 0ustar00 CodeMirror: Tiki wiki mode

Tiki wiki mode

application/library/codemirror/mode/tiki/tiki.js000064400000020452147577724760016077 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('tiki', function(config) { function inBlock(style, terminator, returnTokenizer) { return function(stream, state) { while (!stream.eol()) { if (stream.match(terminator)) { state.tokenize = inText; break; } stream.next(); } if (returnTokenizer) state.tokenize = returnTokenizer; return style; }; } function inLine(style) { return function(stream, state) { while(!stream.eol()) { stream.next(); } state.tokenize = inText; return style; }; } function inText(stream, state) { function chain(parser) { state.tokenize = parser; return parser(stream, state); } var sol = stream.sol(); var ch = stream.next(); //non start of line switch (ch) { //switch is generally much faster than if, so it is used here case "{": //plugin stream.eat("/"); stream.eatSpace(); stream.eatWhile(/[^\s\u00a0=\"\'\/?(}]/); state.tokenize = inPlugin; return "tag"; case "_": //bold if (stream.eat("_")) return chain(inBlock("strong", "__", inText)); break; case "'": //italics if (stream.eat("'")) return chain(inBlock("em", "''", inText)); break; case "(":// Wiki Link if (stream.eat("(")) return chain(inBlock("variable-2", "))", inText)); break; case "[":// Weblink return chain(inBlock("variable-3", "]", inText)); break; case "|": //table if (stream.eat("|")) return chain(inBlock("comment", "||")); break; case "-": if (stream.eat("=")) {//titleBar return chain(inBlock("header string", "=-", inText)); } else if (stream.eat("-")) {//deleted return chain(inBlock("error tw-deleted", "--", inText)); } break; case "=": //underline if (stream.match("==")) return chain(inBlock("tw-underline", "===", inText)); break; case ":": if (stream.eat(":")) return chain(inBlock("comment", "::")); break; case "^": //box return chain(inBlock("tw-box", "^")); break; case "~": //np if (stream.match("np~")) return chain(inBlock("meta", "~/np~")); break; } //start of line types if (sol) { switch (ch) { case "!": //header at start of line if (stream.match('!!!!!')) { return chain(inLine("header string")); } else if (stream.match('!!!!')) { return chain(inLine("header string")); } else if (stream.match('!!!')) { return chain(inLine("header string")); } else if (stream.match('!!')) { return chain(inLine("header string")); } else { return chain(inLine("header string")); } break; case "*": //unordered list line item, or
  • at start of line case "#": //ordered list line item, or
  • at start of line case "+": //ordered list line item, or
  • at start of line return chain(inLine("tw-listitem bracket")); break; } } //stream.eatWhile(/[&{]/); was eating up plugins, turned off to act less like html and more like tiki return null; } var indentUnit = config.indentUnit; // Return variables for tokenizers var pluginName, type; function inPlugin(stream, state) { var ch = stream.next(); var peek = stream.peek(); if (ch == "}") { state.tokenize = inText; //type = ch == ")" ? "endPlugin" : "selfclosePlugin"; inPlugin return "tag"; } else if (ch == "(" || ch == ")") { return "bracket"; } else if (ch == "=") { type = "equals"; if (peek == ">") { ch = stream.next(); peek = stream.peek(); } //here we detect values directly after equal character with no quotes if (!/[\'\"]/.test(peek)) { state.tokenize = inAttributeNoQuote(); } //end detect values return "operator"; } else if (/[\'\"]/.test(ch)) { state.tokenize = inAttribute(ch); return state.tokenize(stream, state); } else { stream.eatWhile(/[^\s\u00a0=\"\'\/?]/); return "keyword"; } } function inAttribute(quote) { return function(stream, state) { while (!stream.eol()) { if (stream.next() == quote) { state.tokenize = inPlugin; break; } } return "string"; }; } function inAttributeNoQuote() { return function(stream, state) { while (!stream.eol()) { var ch = stream.next(); var peek = stream.peek(); if (ch == " " || ch == "," || /[ )}]/.test(peek)) { state.tokenize = inPlugin; break; } } return "string"; }; } var curState, setStyle; function pass() { for (var i = arguments.length - 1; i >= 0; i--) curState.cc.push(arguments[i]); } function cont() { pass.apply(null, arguments); return true; } function pushContext(pluginName, startOfLine) { var noIndent = curState.context && curState.context.noIndent; curState.context = { prev: curState.context, pluginName: pluginName, indent: curState.indented, startOfLine: startOfLine, noIndent: noIndent }; } function popContext() { if (curState.context) curState.context = curState.context.prev; } function element(type) { if (type == "openPlugin") {curState.pluginName = pluginName; return cont(attributes, endplugin(curState.startOfLine));} else if (type == "closePlugin") { var err = false; if (curState.context) { err = curState.context.pluginName != pluginName; popContext(); } else { err = true; } if (err) setStyle = "error"; return cont(endcloseplugin(err)); } else if (type == "string") { if (!curState.context || curState.context.name != "!cdata") pushContext("!cdata"); if (curState.tokenize == inText) popContext(); return cont(); } else return cont(); } function endplugin(startOfLine) { return function(type) { if ( type == "selfclosePlugin" || type == "endPlugin" ) return cont(); if (type == "endPlugin") {pushContext(curState.pluginName, startOfLine); return cont();} return cont(); }; } function endcloseplugin(err) { return function(type) { if (err) setStyle = "error"; if (type == "endPlugin") return cont(); return pass(); }; } function attributes(type) { if (type == "keyword") {setStyle = "attribute"; return cont(attributes);} if (type == "equals") return cont(attvalue, attributes); return pass(); } function attvalue(type) { if (type == "keyword") {setStyle = "string"; return cont();} if (type == "string") return cont(attvaluemaybe); return pass(); } function attvaluemaybe(type) { if (type == "string") return cont(attvaluemaybe); else return pass(); } return { startState: function() { return {tokenize: inText, cc: [], indented: 0, startOfLine: true, pluginName: null, context: null}; }, token: function(stream, state) { if (stream.sol()) { state.startOfLine = true; state.indented = stream.indentation(); } if (stream.eatSpace()) return null; setStyle = type = pluginName = null; var style = state.tokenize(stream, state); if ((style || type) && style != "comment") { curState = state; while (true) { var comb = state.cc.pop() || element; if (comb(type || style)) break; } } state.startOfLine = false; return setStyle || style; }, indent: function(state, textAfter) { var context = state.context; if (context && context.noIndent) return 0; if (context && /^{\//.test(textAfter)) context = context.prev; while (context && !context.startOfLine) context = context.prev; if (context) return context.indent + indentUnit; else return 0; }, electricChars: "/" }; }); CodeMirror.defineMIME("text/tiki", "tiki"); }); application/library/codemirror/mode/tiki/tiki.css000064400000000667147577724760016261 0ustar00.cm-tw-syntaxerror { color: #FFF; background-color: #900; } .cm-tw-deleted { text-decoration: line-through; } .cm-tw-header5 { font-weight: bold; } .cm-tw-listitem:first-child { /*Added first child to fix duplicate padding when highlighting*/ padding-left: 10px; } .cm-tw-box { border-top-width: 0px !important; border-style: solid; border-width: 1px; border-color: inherit; } .cm-tw-underline { text-decoration: underline; }application/library/codemirror/mode/toml/index.html000064400000003460147577724760016611 0ustar00 CodeMirror: TOML Mode

    TOML Mode

    The TOML Mode

    Created by Forbes Lindesay.

    MIME type defined: text/x-toml.

    application/library/codemirror/mode/toml/toml.js000064400000005521147577724760016125 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("toml", function () { return { startState: function () { return { inString: false, stringType: "", lhs: true, inArray: 0 }; }, token: function (stream, state) { //check for state changes if (!state.inString && ((stream.peek() == '"') || (stream.peek() == "'"))) { state.stringType = stream.peek(); stream.next(); // Skip quote state.inString = true; // Update state } if (stream.sol() && state.inArray === 0) { state.lhs = true; } //return state if (state.inString) { while (state.inString && !stream.eol()) { if (stream.peek() === state.stringType) { stream.next(); // Skip quote state.inString = false; // Clear flag } else if (stream.peek() === '\\') { stream.next(); stream.next(); } else { stream.match(/^.[^\\\"\']*/); } } return state.lhs ? "property string" : "string"; // Token style } else if (state.inArray && stream.peek() === ']') { stream.next(); state.inArray--; return 'bracket'; } else if (state.lhs && stream.peek() === '[' && stream.skipTo(']')) { stream.next();//skip closing ] // array of objects has an extra open & close [] if (stream.peek() === ']') stream.next(); return "atom"; } else if (stream.peek() === "#") { stream.skipToEnd(); return "comment"; } else if (stream.eatSpace()) { return null; } else if (state.lhs && stream.eatWhile(function (c) { return c != '=' && c != ' '; })) { return "property"; } else if (state.lhs && stream.peek() === "=") { stream.next(); state.lhs = false; return null; } else if (!state.lhs && stream.match(/^\d\d\d\d[\d\-\:\.T]*Z/)) { return 'atom'; //date } else if (!state.lhs && (stream.match('true') || stream.match('false'))) { return 'atom'; } else if (!state.lhs && stream.peek() === '[') { state.inArray++; stream.next(); return 'bracket'; } else if (!state.lhs && stream.match(/^\-?\d+(?:\.\d+)?/)) { return 'number'; } else if (!stream.eatSpace()) { stream.next(); } return null; } }; }); CodeMirror.defineMIME('text/x-toml', 'toml'); }); application/library/codemirror/mode/tornado/index.html000064400000003413147577724760017302 0ustar00 CodeMirror: Tornado template mode

    Tornado template mode

    Mode for HTML with embedded Tornado template markup.

    MIME types defined: text/x-tornado

    application/library/codemirror/mode/tornado/tornado.js000064400000004700147577724760017311 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../htmlmixed/htmlmixed"), require("../../addon/mode/overlay")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../htmlmixed/htmlmixed", "../../addon/mode/overlay"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("tornado:inner", function() { var keywords = ["and","as","assert","autoescape","block","break","class","comment","context", "continue","datetime","def","del","elif","else","end","escape","except", "exec","extends","false","finally","for","from","global","if","import","in", "include","is","json_encode","lambda","length","linkify","load","module", "none","not","or","pass","print","put","raise","raw","return","self","set", "squeeze","super","true","try","url_escape","while","with","without","xhtml_escape","yield"]; keywords = new RegExp("^((" + keywords.join(")|(") + "))\\b"); function tokenBase (stream, state) { stream.eatWhile(/[^\{]/); var ch = stream.next(); if (ch == "{") { if (ch = stream.eat(/\{|%|#/)) { state.tokenize = inTag(ch); return "tag"; } } } function inTag (close) { if (close == "{") { close = "}"; } return function (stream, state) { var ch = stream.next(); if ((ch == close) && stream.eat("}")) { state.tokenize = tokenBase; return "tag"; } if (stream.match(keywords)) { return "keyword"; } return close == "#" ? "comment" : "string"; }; } return { startState: function () { return {tokenize: tokenBase}; }, token: function (stream, state) { return state.tokenize(stream, state); } }; }); CodeMirror.defineMode("tornado", function(config) { var htmlBase = CodeMirror.getMode(config, "text/html"); var tornadoInner = CodeMirror.getMode(config, "tornado:inner"); return CodeMirror.overlayMode(htmlBase, tornadoInner); }); CodeMirror.defineMIME("text/x-tornado", "tornado"); }); application/library/codemirror/mode/troff/index.html000064400000010561147577724760016756 0ustar00 CodeMirror: troff mode

    troff

    MIME types defined: troff.

    application/library/codemirror/mode/troff/troff.js000064400000004530147577724760016436 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) define(["../../lib/codemirror"], mod); else mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('troff', function() { var words = {}; function tokenBase(stream) { if (stream.eatSpace()) return null; var sol = stream.sol(); var ch = stream.next(); if (ch === '\\') { if (stream.match('fB') || stream.match('fR') || stream.match('fI') || stream.match('u') || stream.match('d') || stream.match('%') || stream.match('&')) { return 'string'; } if (stream.match('m[')) { stream.skipTo(']'); stream.next(); return 'string'; } if (stream.match('s+') || stream.match('s-')) { stream.eatWhile(/[\d-]/); return 'string'; } if (stream.match('\(') || stream.match('*\(')) { stream.eatWhile(/[\w-]/); return 'string'; } return 'string'; } if (sol && (ch === '.' || ch === '\'')) { if (stream.eat('\\') && stream.eat('\"')) { stream.skipToEnd(); return 'comment'; } } if (sol && ch === '.') { if (stream.match('B ') || stream.match('I ') || stream.match('R ')) { return 'attribute'; } if (stream.match('TH ') || stream.match('SH ') || stream.match('SS ') || stream.match('HP ')) { stream.skipToEnd(); return 'quote'; } if ((stream.match(/[A-Z]/) && stream.match(/[A-Z]/)) || (stream.match(/[a-z]/) && stream.match(/[a-z]/))) { return 'attribute'; } } stream.eatWhile(/[\w-]/); var cur = stream.current(); return words.hasOwnProperty(cur) ? words[cur] : null; } function tokenize(stream, state) { return (state.tokens[0] || tokenBase) (stream, state); }; return { startState: function() {return {tokens:[]};}, token: function(stream, state) { return tokenize(stream, state); } }; }); CodeMirror.defineMIME('text/troff', 'troff'); CodeMirror.defineMIME('text/x-troff', 'troff'); CodeMirror.defineMIME('application/x-troff', 'troff'); }); application/library/codemirror/mode/ttcn/ttcn.js000064400000023653147577724760016125 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("ttcn", function(config, parserConfig) { var indentUnit = config.indentUnit, keywords = parserConfig.keywords || {}, builtin = parserConfig.builtin || {}, timerOps = parserConfig.timerOps || {}, portOps = parserConfig.portOps || {}, configOps = parserConfig.configOps || {}, verdictOps = parserConfig.verdictOps || {}, sutOps = parserConfig.sutOps || {}, functionOps = parserConfig.functionOps || {}, verdictConsts = parserConfig.verdictConsts || {}, booleanConsts = parserConfig.booleanConsts || {}, otherConsts = parserConfig.otherConsts || {}, types = parserConfig.types || {}, visibilityModifiers = parserConfig.visibilityModifiers || {}, templateMatch = parserConfig.templateMatch || {}, multiLineStrings = parserConfig.multiLineStrings, indentStatements = parserConfig.indentStatements !== false; var isOperatorChar = /[+\-*&@=<>!\/]/; var curPunc; function tokenBase(stream, state) { var ch = stream.next(); if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (/[\[\]{}\(\),;\\:\?\.]/.test(ch)) { curPunc = ch; return "punctuation"; } if (ch == "#"){ stream.skipToEnd(); return "atom preprocessor"; } if (ch == "%"){ stream.eatWhile(/\b/); return "atom ttcn3Macros"; } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } if (ch == "/") { if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } if (isOperatorChar.test(ch)) { if(ch == "@"){ if(stream.match("try") || stream.match("catch") || stream.match("lazy")){ return "keyword"; } } stream.eatWhile(isOperatorChar); return "operator"; } stream.eatWhile(/[\w\$_\xa1-\uffff]/); var cur = stream.current(); if (keywords.propertyIsEnumerable(cur)) return "keyword"; if (builtin.propertyIsEnumerable(cur)) return "builtin"; if (timerOps.propertyIsEnumerable(cur)) return "def timerOps"; if (configOps.propertyIsEnumerable(cur)) return "def configOps"; if (verdictOps.propertyIsEnumerable(cur)) return "def verdictOps"; if (portOps.propertyIsEnumerable(cur)) return "def portOps"; if (sutOps.propertyIsEnumerable(cur)) return "def sutOps"; if (functionOps.propertyIsEnumerable(cur)) return "def functionOps"; if (verdictConsts.propertyIsEnumerable(cur)) return "string verdictConsts"; if (booleanConsts.propertyIsEnumerable(cur)) return "string booleanConsts"; if (otherConsts.propertyIsEnumerable(cur)) return "string otherConsts"; if (types.propertyIsEnumerable(cur)) return "builtin types"; if (visibilityModifiers.propertyIsEnumerable(cur)) return "builtin visibilityModifiers"; if (templateMatch.propertyIsEnumerable(cur)) return "atom templateMatch"; return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped){ var afterQuote = stream.peek(); //look if the character after the quote is like the B in '10100010'B if (afterQuote){ afterQuote = afterQuote.toLowerCase(); if(afterQuote == "b" || afterQuote == "h" || afterQuote == "o") stream.next(); } end = true; break; } escaped = !escaped && next == "\\"; } if (end || !(escaped || multiLineStrings)) state.tokenize = null; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = null; break; } maybeEnd = (ch == "*"); } return "comment"; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { var indent = state.indented; if (state.context && state.context.type == "statement") indent = state.context.indented; return state.context = new Context(indent, col, type, null, state.context); } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } //Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) return null; curPunc = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment") return style; if (ctx.align == null) ctx.align = true; if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement"){ popContext(state); } else if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "}") { while (ctx.type == "statement") ctx = popContext(state); if (ctx.type == "}") ctx = popContext(state); while (ctx.type == "statement") ctx = popContext(state); } else if (curPunc == ctx.type) popContext(state); else if (indentStatements && (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement"))) pushContext(state, stream.column(), "statement"); state.startOfLine = false; return style; }, electricChars: "{}", blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//", fold: "brace" }; }); function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } function def(mimes, mode) { if (typeof mimes == "string") mimes = [mimes]; var words = []; function add(obj) { if (obj) for (var prop in obj) if (obj.hasOwnProperty(prop)) words.push(prop); } add(mode.keywords); add(mode.builtin); add(mode.timerOps); add(mode.portOps); if (words.length) { mode.helperType = mimes[0]; CodeMirror.registerHelper("hintWords", mimes[0], words); } for (var i = 0; i < mimes.length; ++i) CodeMirror.defineMIME(mimes[i], mode); } def(["text/x-ttcn", "text/x-ttcn3", "text/x-ttcnpp"], { name: "ttcn", keywords: words("activate address alive all alt altstep and and4b any" + " break case component const continue control deactivate" + " display do else encode enumerated except exception" + " execute extends extension external for from function" + " goto group if import in infinity inout interleave" + " label language length log match message mixed mod" + " modifies module modulepar mtc noblock not not4b nowait" + " of on optional or or4b out override param pattern port" + " procedure record recursive rem repeat return runs select" + " self sender set signature system template testcase to" + " type union value valueof var variant while with xor xor4b"), builtin: words("bit2hex bit2int bit2oct bit2str char2int char2oct encvalue" + " decomp decvalue float2int float2str hex2bit hex2int" + " hex2oct hex2str int2bit int2char int2float int2hex" + " int2oct int2str int2unichar isbound ischosen ispresent" + " isvalue lengthof log2str oct2bit oct2char oct2hex oct2int" + " oct2str regexp replace rnd sizeof str2bit str2float" + " str2hex str2int str2oct substr unichar2int unichar2char" + " enum2int"), types: words("anytype bitstring boolean char charstring default float" + " hexstring integer objid octetstring universal verdicttype timer"), timerOps: words("read running start stop timeout"), portOps: words("call catch check clear getcall getreply halt raise receive" + " reply send trigger"), configOps: words("create connect disconnect done kill killed map unmap"), verdictOps: words("getverdict setverdict"), sutOps: words("action"), functionOps: words("apply derefers refers"), verdictConsts: words("error fail inconc none pass"), booleanConsts: words("true false"), otherConsts: words("null NULL omit"), visibilityModifiers: words("private public friend"), templateMatch: words("complement ifpresent subset superset permutation"), multiLineStrings: true }); }); application/library/codemirror/mode/ttcn/index.html000064400000006642147577724760016613 0ustar00 CodeMirror: TTCN mode

    TTCN example


    Language: Testing and Test Control Notation (TTCN)

    MIME types defined: text/x-ttcn, text/x-ttcn3, text/x-ttcnpp.


    The development of this mode has been sponsored by Ericsson .

    Coded by Asmelash Tsegay Gebretsadkan

    application/library/codemirror/mode/ttcn-cfg/index.html000064400000007025147577724760017344 0ustar00 CodeMirror: TTCN-CFG mode

    TTCN-CFG example


    Language: Testing and Test Control Notation - Configuration files (TTCN-CFG)

    MIME types defined: text/x-ttcn-cfg.


    The development of this mode has been sponsored by Ericsson .

    Coded by Asmelash Tsegay Gebretsadkan

    application/library/codemirror/mode/ttcn-cfg/ttcn-cfg.js000064400000017261147577724760017415 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("ttcn-cfg", function(config, parserConfig) { var indentUnit = config.indentUnit, keywords = parserConfig.keywords || {}, fileNCtrlMaskOptions = parserConfig.fileNCtrlMaskOptions || {}, externalCommands = parserConfig.externalCommands || {}, multiLineStrings = parserConfig.multiLineStrings, indentStatements = parserConfig.indentStatements !== false; var isOperatorChar = /[\|]/; var curPunc; function tokenBase(stream, state) { var ch = stream.next(); if (ch == '"' || ch == "'") { state.tokenize = tokenString(ch); return state.tokenize(stream, state); } if (/[:=]/.test(ch)) { curPunc = ch; return "punctuation"; } if (ch == "#"){ stream.skipToEnd(); return "comment"; } if (/\d/.test(ch)) { stream.eatWhile(/[\w\.]/); return "number"; } if (isOperatorChar.test(ch)) { stream.eatWhile(isOperatorChar); return "operator"; } if (ch == "["){ stream.eatWhile(/[\w_\]]/); return "number sectionTitle"; } stream.eatWhile(/[\w\$_]/); var cur = stream.current(); if (keywords.propertyIsEnumerable(cur)) return "keyword"; if (fileNCtrlMaskOptions.propertyIsEnumerable(cur)) return "negative fileNCtrlMaskOptions"; if (externalCommands.propertyIsEnumerable(cur)) return "negative externalCommands"; return "variable"; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped){ var afterNext = stream.peek(); //look if the character if the quote is like the B in '10100010'B if (afterNext){ afterNext = afterNext.toLowerCase(); if(afterNext == "b" || afterNext == "h" || afterNext == "o") stream.next(); } end = true; break; } escaped = !escaped && next == "\\"; } if (end || !(escaped || multiLineStrings)) state.tokenize = null; return "string"; }; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { var indent = state.indented; if (state.context && state.context.type == "statement") indent = state.context.indented; return state.context = new Context(indent, col, type, null, state.context); } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") state.indented = state.context.indented; return state.context = state.context.prev; } //Interface return { startState: function(basecolumn) { return { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (stream.eatSpace()) return null; curPunc = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment") return style; if (ctx.align == null) ctx.align = true; if ((curPunc == ";" || curPunc == ":" || curPunc == ",") && ctx.type == "statement"){ popContext(state); } else if (curPunc == "{") pushContext(state, stream.column(), "}"); else if (curPunc == "[") pushContext(state, stream.column(), "]"); else if (curPunc == "(") pushContext(state, stream.column(), ")"); else if (curPunc == "}") { while (ctx.type == "statement") ctx = popContext(state); if (ctx.type == "}") ctx = popContext(state); while (ctx.type == "statement") ctx = popContext(state); } else if (curPunc == ctx.type) popContext(state); else if (indentStatements && (((ctx.type == "}" || ctx.type == "top") && curPunc != ';') || (ctx.type == "statement" && curPunc == "newstatement"))) pushContext(state, stream.column(), "statement"); state.startOfLine = false; return style; }, electricChars: "{}", lineComment: "#", fold: "brace" }; }); function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } CodeMirror.defineMIME("text/x-ttcn-cfg", { name: "ttcn-cfg", keywords: words("Yes No LogFile FileMask ConsoleMask AppendFile" + " TimeStampFormat LogEventTypes SourceInfoFormat" + " LogEntityName LogSourceInfo DiskFullAction" + " LogFileNumber LogFileSize MatchingHints Detailed" + " Compact SubCategories Stack Single None Seconds" + " DateTime Time Stop Error Retry Delete TCPPort KillTimer" + " NumHCs UnixSocketsEnabled LocalAddress"), fileNCtrlMaskOptions: words("TTCN_EXECUTOR TTCN_ERROR TTCN_WARNING" + " TTCN_PORTEVENT TTCN_TIMEROP TTCN_VERDICTOP" + " TTCN_DEFAULTOP TTCN_TESTCASE TTCN_ACTION" + " TTCN_USER TTCN_FUNCTION TTCN_STATISTICS" + " TTCN_PARALLEL TTCN_MATCHING TTCN_DEBUG" + " EXECUTOR ERROR WARNING PORTEVENT TIMEROP" + " VERDICTOP DEFAULTOP TESTCASE ACTION USER" + " FUNCTION STATISTICS PARALLEL MATCHING DEBUG" + " LOG_ALL LOG_NOTHING ACTION_UNQUALIFIED" + " DEBUG_ENCDEC DEBUG_TESTPORT" + " DEBUG_UNQUALIFIED DEFAULTOP_ACTIVATE" + " DEFAULTOP_DEACTIVATE DEFAULTOP_EXIT" + " DEFAULTOP_UNQUALIFIED ERROR_UNQUALIFIED" + " EXECUTOR_COMPONENT EXECUTOR_CONFIGDATA" + " EXECUTOR_EXTCOMMAND EXECUTOR_LOGOPTIONS" + " EXECUTOR_RUNTIME EXECUTOR_UNQUALIFIED" + " FUNCTION_RND FUNCTION_UNQUALIFIED" + " MATCHING_DONE MATCHING_MCSUCCESS" + " MATCHING_MCUNSUCC MATCHING_MMSUCCESS" + " MATCHING_MMUNSUCC MATCHING_PCSUCCESS" + " MATCHING_PCUNSUCC MATCHING_PMSUCCESS" + " MATCHING_PMUNSUCC MATCHING_PROBLEM" + " MATCHING_TIMEOUT MATCHING_UNQUALIFIED" + " PARALLEL_PORTCONN PARALLEL_PORTMAP" + " PARALLEL_PTC PARALLEL_UNQUALIFIED" + " PORTEVENT_DUALRECV PORTEVENT_DUALSEND" + " PORTEVENT_MCRECV PORTEVENT_MCSEND" + " PORTEVENT_MMRECV PORTEVENT_MMSEND" + " PORTEVENT_MQUEUE PORTEVENT_PCIN" + " PORTEVENT_PCOUT PORTEVENT_PMIN" + " PORTEVENT_PMOUT PORTEVENT_PQUEUE" + " PORTEVENT_STATE PORTEVENT_UNQUALIFIED" + " STATISTICS_UNQUALIFIED STATISTICS_VERDICT" + " TESTCASE_FINISH TESTCASE_START" + " TESTCASE_UNQUALIFIED TIMEROP_GUARD" + " TIMEROP_READ TIMEROP_START TIMEROP_STOP" + " TIMEROP_TIMEOUT TIMEROP_UNQUALIFIED" + " USER_UNQUALIFIED VERDICTOP_FINAL" + " VERDICTOP_GETVERDICT VERDICTOP_SETVERDICT" + " VERDICTOP_UNQUALIFIED WARNING_UNQUALIFIED"), externalCommands: words("BeginControlPart EndControlPart BeginTestCase" + " EndTestCase"), multiLineStrings: true }); });application/library/codemirror/mode/turtle/turtle.js000064400000011361147577724760017034 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("turtle", function(config) { var indentUnit = config.indentUnit; var curPunc; function wordRegexp(words) { return new RegExp("^(?:" + words.join("|") + ")$", "i"); } var ops = wordRegexp([]); var keywords = wordRegexp(["@prefix", "@base", "a"]); var operatorChars = /[*+\-<>=&|]/; function tokenBase(stream, state) { var ch = stream.next(); curPunc = null; if (ch == "<" && !stream.match(/^[\s\u00a0=]/, false)) { stream.match(/^[^\s\u00a0>]*>?/); return "atom"; } else if (ch == "\"" || ch == "'") { state.tokenize = tokenLiteral(ch); return state.tokenize(stream, state); } else if (/[{}\(\),\.;\[\]]/.test(ch)) { curPunc = ch; return null; } else if (ch == "#") { stream.skipToEnd(); return "comment"; } else if (operatorChars.test(ch)) { stream.eatWhile(operatorChars); return null; } else if (ch == ":") { return "operator"; } else { stream.eatWhile(/[_\w\d]/); if(stream.peek() == ":") { return "variable-3"; } else { var word = stream.current(); if(keywords.test(word)) { return "meta"; } if(ch >= "A" && ch <= "Z") { return "comment"; } else { return "keyword"; } } var word = stream.current(); if (ops.test(word)) return null; else if (keywords.test(word)) return "meta"; else return "variable"; } } function tokenLiteral(quote) { return function(stream, state) { var escaped = false, ch; while ((ch = stream.next()) != null) { if (ch == quote && !escaped) { state.tokenize = tokenBase; break; } escaped = !escaped && ch == "\\"; } return "string"; }; } function pushContext(state, type, col) { state.context = {prev: state.context, indent: state.indent, col: col, type: type}; } function popContext(state) { state.indent = state.context.indent; state.context = state.context.prev; } return { startState: function() { return {tokenize: tokenBase, context: null, indent: 0, col: 0}; }, token: function(stream, state) { if (stream.sol()) { if (state.context && state.context.align == null) state.context.align = false; state.indent = stream.indentation(); } if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); if (style != "comment" && state.context && state.context.align == null && state.context.type != "pattern") { state.context.align = true; } if (curPunc == "(") pushContext(state, ")", stream.column()); else if (curPunc == "[") pushContext(state, "]", stream.column()); else if (curPunc == "{") pushContext(state, "}", stream.column()); else if (/[\]\}\)]/.test(curPunc)) { while (state.context && state.context.type == "pattern") popContext(state); if (state.context && curPunc == state.context.type) popContext(state); } else if (curPunc == "." && state.context && state.context.type == "pattern") popContext(state); else if (/atom|string|variable/.test(style) && state.context) { if (/[\}\]]/.test(state.context.type)) pushContext(state, "pattern", stream.column()); else if (state.context.type == "pattern" && !state.context.align) { state.context.align = true; state.context.col = stream.column(); } } return style; }, indent: function(state, textAfter) { var firstChar = textAfter && textAfter.charAt(0); var context = state.context; if (/[\]\}]/.test(firstChar)) while (context && context.type == "pattern") context = context.prev; var closing = context && firstChar == context.type; if (!context) return 0; else if (context.type == "pattern") return context.col; else if (context.align) return context.col + (closing ? 0 : 1); else return context.indent + (closing ? 0 : indentUnit); }, lineComment: "#" }; }); CodeMirror.defineMIME("text/turtle", "turtle"); }); application/library/codemirror/mode/turtle/index.html000064400000002676147577724760017165 0ustar00 CodeMirror: Turtle mode

    Turtle mode

    MIME types defined: text/turtle.

    application/library/codemirror/mode/twig/twig.js000064400000010732147577724760016123 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../../addon/mode/multiplex")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../../addon/mode/multiplex"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("twig:inner", function() { var keywords = ["and", "as", "autoescape", "endautoescape", "block", "do", "endblock", "else", "elseif", "extends", "for", "endfor", "embed", "endembed", "filter", "endfilter", "flush", "from", "if", "endif", "in", "is", "include", "import", "not", "or", "set", "spaceless", "endspaceless", "with", "endwith", "trans", "endtrans", "blocktrans", "endblocktrans", "macro", "endmacro", "use", "verbatim", "endverbatim"], operator = /^[+\-*&%=<>!?|~^]/, sign = /^[:\[\(\{]/, atom = ["true", "false", "null", "empty", "defined", "divisibleby", "divisible by", "even", "odd", "iterable", "sameas", "same as"], number = /^(\d[+\-\*\/])?\d+(\.\d+)?/; keywords = new RegExp("((" + keywords.join(")|(") + "))\\b"); atom = new RegExp("((" + atom.join(")|(") + "))\\b"); function tokenBase (stream, state) { var ch = stream.peek(); //Comment if (state.incomment) { if (!stream.skipTo("#}")) { stream.skipToEnd(); } else { stream.eatWhile(/\#|}/); state.incomment = false; } return "comment"; //Tag } else if (state.intag) { //After operator if (state.operator) { state.operator = false; if (stream.match(atom)) { return "atom"; } if (stream.match(number)) { return "number"; } } //After sign if (state.sign) { state.sign = false; if (stream.match(atom)) { return "atom"; } if (stream.match(number)) { return "number"; } } if (state.instring) { if (ch == state.instring) { state.instring = false; } stream.next(); return "string"; } else if (ch == "'" || ch == '"') { state.instring = ch; stream.next(); return "string"; } else if (stream.match(state.intag + "}") || stream.eat("-") && stream.match(state.intag + "}")) { state.intag = false; return "tag"; } else if (stream.match(operator)) { state.operator = true; return "operator"; } else if (stream.match(sign)) { state.sign = true; } else { if (stream.eat(" ") || stream.sol()) { if (stream.match(keywords)) { return "keyword"; } if (stream.match(atom)) { return "atom"; } if (stream.match(number)) { return "number"; } if (stream.sol()) { stream.next(); } } else { stream.next(); } } return "variable"; } else if (stream.eat("{")) { if (ch = stream.eat("#")) { state.incomment = true; if (!stream.skipTo("#}")) { stream.skipToEnd(); } else { stream.eatWhile(/\#|}/); state.incomment = false; } return "comment"; //Open tag } else if (ch = stream.eat(/\{|%/)) { //Cache close tag state.intag = ch; if (ch == "{") { state.intag = "}"; } stream.eat("-"); return "tag"; } } stream.next(); }; return { startState: function () { return {}; }, token: function (stream, state) { return tokenBase(stream, state); } }; }); CodeMirror.defineMode("twig", function(config, parserConfig) { var twigInner = CodeMirror.getMode(config, "twig:inner"); if (!parserConfig || !parserConfig.base) return twigInner; return CodeMirror.multiplexingMode( CodeMirror.getMode(config, parserConfig.base), { open: /\{[{#%]/, close: /[}#%]\}/, mode: twigInner, parseDelimiters: true } ); }); CodeMirror.defineMIME("text/x-twig", "twig"); }); application/library/codemirror/mode/twig/index.html000064400000002532147577724760016607 0ustar00 CodeMirror: Twig mode

    Twig mode

    application/library/codemirror/mode/vb/vb.js000064400000021106147577724760015212 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("vb", function(conf, parserConf) { var ERRORCLASS = 'error'; function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); } var singleOperators = new RegExp("^[\\+\\-\\*/%&\\\\|\\^~<>!]"); var singleDelimiters = new RegExp('^[\\(\\)\\[\\]\\{\\}@,:`=;\\.]'); var doubleOperators = new RegExp("^((==)|(<>)|(<=)|(>=)|(<>)|(<<)|(>>)|(//)|(\\*\\*))"); var doubleDelimiters = new RegExp("^((\\+=)|(\\-=)|(\\*=)|(%=)|(/=)|(&=)|(\\|=)|(\\^=))"); var tripleDelimiters = new RegExp("^((//=)|(>>=)|(<<=)|(\\*\\*=))"); var identifiers = new RegExp("^[_A-Za-z][_A-Za-z0-9]*"); var openingKeywords = ['class','module', 'sub','enum','select','while','if','function', 'get','set','property', 'try']; var middleKeywords = ['else','elseif','case', 'catch']; var endKeywords = ['next','loop']; var operatorKeywords = ['and', 'or', 'not', 'xor', 'in']; var wordOperators = wordRegexp(operatorKeywords); var commonKeywords = ['as', 'dim', 'break', 'continue','optional', 'then', 'until', 'goto', 'byval','byref','new','handles','property', 'return', 'const','private', 'protected', 'friend', 'public', 'shared', 'static', 'true','false']; var commontypes = ['integer','string','double','decimal','boolean','short','char', 'float','single']; var keywords = wordRegexp(commonKeywords); var types = wordRegexp(commontypes); var stringPrefixes = '"'; var opening = wordRegexp(openingKeywords); var middle = wordRegexp(middleKeywords); var closing = wordRegexp(endKeywords); var doubleClosing = wordRegexp(['end']); var doOpening = wordRegexp(['do']); var indentInfo = null; CodeMirror.registerHelper("hintWords", "vb", openingKeywords.concat(middleKeywords).concat(endKeywords) .concat(operatorKeywords).concat(commonKeywords).concat(commontypes)); function indent(_stream, state) { state.currentIndent++; } function dedent(_stream, state) { state.currentIndent--; } // tokenizers function tokenBase(stream, state) { if (stream.eatSpace()) { return null; } var ch = stream.peek(); // Handle Comments if (ch === "'") { stream.skipToEnd(); return 'comment'; } // Handle Number Literals if (stream.match(/^((&H)|(&O))?[0-9\.a-f]/i, false)) { var floatLiteral = false; // Floats if (stream.match(/^\d*\.\d+F?/i)) { floatLiteral = true; } else if (stream.match(/^\d+\.\d*F?/)) { floatLiteral = true; } else if (stream.match(/^\.\d+F?/)) { floatLiteral = true; } if (floatLiteral) { // Float literals may be "imaginary" stream.eat(/J/i); return 'number'; } // Integers var intLiteral = false; // Hex if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; } // Octal else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; } // Decimal else if (stream.match(/^[1-9]\d*F?/)) { // Decimal literals may be "imaginary" stream.eat(/J/i); // TODO - Can you have imaginary longs? intLiteral = true; } // Zero by itself with no other piece of number. else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } if (intLiteral) { // Integer literals may be "long" stream.eat(/L/i); return 'number'; } } // Handle Strings if (stream.match(stringPrefixes)) { state.tokenize = tokenStringFactory(stream.current()); return state.tokenize(stream, state); } // Handle operators and Delimiters if (stream.match(tripleDelimiters) || stream.match(doubleDelimiters)) { return null; } if (stream.match(doubleOperators) || stream.match(singleOperators) || stream.match(wordOperators)) { return 'operator'; } if (stream.match(singleDelimiters)) { return null; } if (stream.match(doOpening)) { indent(stream,state); state.doInCurrentLine = true; return 'keyword'; } if (stream.match(opening)) { if (! state.doInCurrentLine) indent(stream,state); else state.doInCurrentLine = false; return 'keyword'; } if (stream.match(middle)) { return 'keyword'; } if (stream.match(doubleClosing)) { dedent(stream,state); dedent(stream,state); return 'keyword'; } if (stream.match(closing)) { dedent(stream,state); return 'keyword'; } if (stream.match(types)) { return 'keyword'; } if (stream.match(keywords)) { return 'keyword'; } if (stream.match(identifiers)) { return 'variable'; } // Handle non-detected items stream.next(); return ERRORCLASS; } function tokenStringFactory(delimiter) { var singleline = delimiter.length == 1; var OUTCLASS = 'string'; return function(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^'"]/); if (stream.match(delimiter)) { state.tokenize = tokenBase; return OUTCLASS; } else { stream.eat(/['"]/); } } if (singleline) { if (parserConf.singleLineStringErrors) { return ERRORCLASS; } else { state.tokenize = tokenBase; } } return OUTCLASS; }; } function tokenLexer(stream, state) { var style = state.tokenize(stream, state); var current = stream.current(); // Handle '.' connected identifiers if (current === '.') { style = state.tokenize(stream, state); current = stream.current(); if (style === 'variable') { return 'variable'; } else { return ERRORCLASS; } } var delimiter_index = '[({'.indexOf(current); if (delimiter_index !== -1) { indent(stream, state ); } if (indentInfo === 'dedent') { if (dedent(stream, state)) { return ERRORCLASS; } } delimiter_index = '])}'.indexOf(current); if (delimiter_index !== -1) { if (dedent(stream, state)) { return ERRORCLASS; } } return style; } var external = { electricChars:"dDpPtTfFeE ", startState: function() { return { tokenize: tokenBase, lastToken: null, currentIndent: 0, nextLineIndent: 0, doInCurrentLine: false }; }, token: function(stream, state) { if (stream.sol()) { state.currentIndent += state.nextLineIndent; state.nextLineIndent = 0; state.doInCurrentLine = 0; } var style = tokenLexer(stream, state); state.lastToken = {style:style, content: stream.current()}; return style; }, indent: function(state, textAfter) { var trueText = textAfter.replace(/^\s+|\s+$/g, '') ; if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1); if(state.currentIndent < 0) return 0; return state.currentIndent * conf.indentUnit; }, lineComment: "'" }; return external; }); CodeMirror.defineMIME("text/x-vb", "vb"); }); application/library/codemirror/mode/vb/index.html000064400000006304147577724760016245 0ustar00 CodeMirror: VB.NET mode

    VB.NET mode

    
      

    MIME type defined: text/x-vb.

    application/library/codemirror/mode/vbscript/index.html000064400000002755147577724760017500 0ustar00 CodeMirror: VBScript mode

    VBScript mode

    MIME types defined: text/vbscript.

    application/library/codemirror/mode/vbscript/vbscript.js000064400000032741147577724760017673 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE /* For extra ASP classic objects, initialize CodeMirror instance with this option: isASP: true E.G.: var editor = CodeMirror.fromTextArea(document.getElementById("code"), { lineNumbers: true, isASP: true }); */ (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("vbscript", function(conf, parserConf) { var ERRORCLASS = 'error'; function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b", "i"); } var singleOperators = new RegExp("^[\\+\\-\\*/&\\\\\\^<>=]"); var doubleOperators = new RegExp("^((<>)|(<=)|(>=))"); var singleDelimiters = new RegExp('^[\\.,]'); var brakets = new RegExp('^[\\(\\)]'); var identifiers = new RegExp("^[A-Za-z][_A-Za-z0-9]*"); var openingKeywords = ['class','sub','select','while','if','function', 'property', 'with', 'for']; var middleKeywords = ['else','elseif','case']; var endKeywords = ['next','loop','wend']; var wordOperators = wordRegexp(['and', 'or', 'not', 'xor', 'is', 'mod', 'eqv', 'imp']); var commonkeywords = ['dim', 'redim', 'then', 'until', 'randomize', 'byval','byref','new','property', 'exit', 'in', 'const','private', 'public', 'get','set','let', 'stop', 'on error resume next', 'on error goto 0', 'option explicit', 'call', 'me']; //This list was from: http://msdn.microsoft.com/en-us/library/f8tbc79x(v=vs.84).aspx var atomWords = ['true', 'false', 'nothing', 'empty', 'null']; //This list was from: http://msdn.microsoft.com/en-us/library/3ca8tfek(v=vs.84).aspx var builtinFuncsWords = ['abs', 'array', 'asc', 'atn', 'cbool', 'cbyte', 'ccur', 'cdate', 'cdbl', 'chr', 'cint', 'clng', 'cos', 'csng', 'cstr', 'date', 'dateadd', 'datediff', 'datepart', 'dateserial', 'datevalue', 'day', 'escape', 'eval', 'execute', 'exp', 'filter', 'formatcurrency', 'formatdatetime', 'formatnumber', 'formatpercent', 'getlocale', 'getobject', 'getref', 'hex', 'hour', 'inputbox', 'instr', 'instrrev', 'int', 'fix', 'isarray', 'isdate', 'isempty', 'isnull', 'isnumeric', 'isobject', 'join', 'lbound', 'lcase', 'left', 'len', 'loadpicture', 'log', 'ltrim', 'rtrim', 'trim', 'maths', 'mid', 'minute', 'month', 'monthname', 'msgbox', 'now', 'oct', 'replace', 'rgb', 'right', 'rnd', 'round', 'scriptengine', 'scriptenginebuildversion', 'scriptenginemajorversion', 'scriptengineminorversion', 'second', 'setlocale', 'sgn', 'sin', 'space', 'split', 'sqr', 'strcomp', 'string', 'strreverse', 'tan', 'time', 'timer', 'timeserial', 'timevalue', 'typename', 'ubound', 'ucase', 'unescape', 'vartype', 'weekday', 'weekdayname', 'year']; //This list was from: http://msdn.microsoft.com/en-us/library/ydz4cfk3(v=vs.84).aspx var builtinConsts = ['vbBlack', 'vbRed', 'vbGreen', 'vbYellow', 'vbBlue', 'vbMagenta', 'vbCyan', 'vbWhite', 'vbBinaryCompare', 'vbTextCompare', 'vbSunday', 'vbMonday', 'vbTuesday', 'vbWednesday', 'vbThursday', 'vbFriday', 'vbSaturday', 'vbUseSystemDayOfWeek', 'vbFirstJan1', 'vbFirstFourDays', 'vbFirstFullWeek', 'vbGeneralDate', 'vbLongDate', 'vbShortDate', 'vbLongTime', 'vbShortTime', 'vbObjectError', 'vbOKOnly', 'vbOKCancel', 'vbAbortRetryIgnore', 'vbYesNoCancel', 'vbYesNo', 'vbRetryCancel', 'vbCritical', 'vbQuestion', 'vbExclamation', 'vbInformation', 'vbDefaultButton1', 'vbDefaultButton2', 'vbDefaultButton3', 'vbDefaultButton4', 'vbApplicationModal', 'vbSystemModal', 'vbOK', 'vbCancel', 'vbAbort', 'vbRetry', 'vbIgnore', 'vbYes', 'vbNo', 'vbCr', 'VbCrLf', 'vbFormFeed', 'vbLf', 'vbNewLine', 'vbNullChar', 'vbNullString', 'vbTab', 'vbVerticalTab', 'vbUseDefault', 'vbTrue', 'vbFalse', 'vbEmpty', 'vbNull', 'vbInteger', 'vbLong', 'vbSingle', 'vbDouble', 'vbCurrency', 'vbDate', 'vbString', 'vbObject', 'vbError', 'vbBoolean', 'vbVariant', 'vbDataObject', 'vbDecimal', 'vbByte', 'vbArray']; //This list was from: http://msdn.microsoft.com/en-us/library/hkc375ea(v=vs.84).aspx var builtinObjsWords = ['WScript', 'err', 'debug', 'RegExp']; var knownProperties = ['description', 'firstindex', 'global', 'helpcontext', 'helpfile', 'ignorecase', 'length', 'number', 'pattern', 'source', 'value', 'count']; var knownMethods = ['clear', 'execute', 'raise', 'replace', 'test', 'write', 'writeline', 'close', 'open', 'state', 'eof', 'update', 'addnew', 'end', 'createobject', 'quit']; var aspBuiltinObjsWords = ['server', 'response', 'request', 'session', 'application']; var aspKnownProperties = ['buffer', 'cachecontrol', 'charset', 'contenttype', 'expires', 'expiresabsolute', 'isclientconnected', 'pics', 'status', //response 'clientcertificate', 'cookies', 'form', 'querystring', 'servervariables', 'totalbytes', //request 'contents', 'staticobjects', //application 'codepage', 'lcid', 'sessionid', 'timeout', //session 'scripttimeout']; //server var aspKnownMethods = ['addheader', 'appendtolog', 'binarywrite', 'end', 'flush', 'redirect', //response 'binaryread', //request 'remove', 'removeall', 'lock', 'unlock', //application 'abandon', //session 'getlasterror', 'htmlencode', 'mappath', 'transfer', 'urlencode']; //server var knownWords = knownMethods.concat(knownProperties); builtinObjsWords = builtinObjsWords.concat(builtinConsts); if (conf.isASP){ builtinObjsWords = builtinObjsWords.concat(aspBuiltinObjsWords); knownWords = knownWords.concat(aspKnownMethods, aspKnownProperties); }; var keywords = wordRegexp(commonkeywords); var atoms = wordRegexp(atomWords); var builtinFuncs = wordRegexp(builtinFuncsWords); var builtinObjs = wordRegexp(builtinObjsWords); var known = wordRegexp(knownWords); var stringPrefixes = '"'; var opening = wordRegexp(openingKeywords); var middle = wordRegexp(middleKeywords); var closing = wordRegexp(endKeywords); var doubleClosing = wordRegexp(['end']); var doOpening = wordRegexp(['do']); var noIndentWords = wordRegexp(['on error resume next', 'exit']); var comment = wordRegexp(['rem']); function indent(_stream, state) { state.currentIndent++; } function dedent(_stream, state) { state.currentIndent--; } // tokenizers function tokenBase(stream, state) { if (stream.eatSpace()) { return 'space'; //return null; } var ch = stream.peek(); // Handle Comments if (ch === "'") { stream.skipToEnd(); return 'comment'; } if (stream.match(comment)){ stream.skipToEnd(); return 'comment'; } // Handle Number Literals if (stream.match(/^((&H)|(&O))?[0-9\.]/i, false) && !stream.match(/^((&H)|(&O))?[0-9\.]+[a-z_]/i, false)) { var floatLiteral = false; // Floats if (stream.match(/^\d*\.\d+/i)) { floatLiteral = true; } else if (stream.match(/^\d+\.\d*/)) { floatLiteral = true; } else if (stream.match(/^\.\d+/)) { floatLiteral = true; } if (floatLiteral) { // Float literals may be "imaginary" stream.eat(/J/i); return 'number'; } // Integers var intLiteral = false; // Hex if (stream.match(/^&H[0-9a-f]+/i)) { intLiteral = true; } // Octal else if (stream.match(/^&O[0-7]+/i)) { intLiteral = true; } // Decimal else if (stream.match(/^[1-9]\d*F?/)) { // Decimal literals may be "imaginary" stream.eat(/J/i); // TODO - Can you have imaginary longs? intLiteral = true; } // Zero by itself with no other piece of number. else if (stream.match(/^0(?![\dx])/i)) { intLiteral = true; } if (intLiteral) { // Integer literals may be "long" stream.eat(/L/i); return 'number'; } } // Handle Strings if (stream.match(stringPrefixes)) { state.tokenize = tokenStringFactory(stream.current()); return state.tokenize(stream, state); } // Handle operators and Delimiters if (stream.match(doubleOperators) || stream.match(singleOperators) || stream.match(wordOperators)) { return 'operator'; } if (stream.match(singleDelimiters)) { return null; } if (stream.match(brakets)) { return "bracket"; } if (stream.match(noIndentWords)) { state.doInCurrentLine = true; return 'keyword'; } if (stream.match(doOpening)) { indent(stream,state); state.doInCurrentLine = true; return 'keyword'; } if (stream.match(opening)) { if (! state.doInCurrentLine) indent(stream,state); else state.doInCurrentLine = false; return 'keyword'; } if (stream.match(middle)) { return 'keyword'; } if (stream.match(doubleClosing)) { dedent(stream,state); dedent(stream,state); return 'keyword'; } if (stream.match(closing)) { if (! state.doInCurrentLine) dedent(stream,state); else state.doInCurrentLine = false; return 'keyword'; } if (stream.match(keywords)) { return 'keyword'; } if (stream.match(atoms)) { return 'atom'; } if (stream.match(known)) { return 'variable-2'; } if (stream.match(builtinFuncs)) { return 'builtin'; } if (stream.match(builtinObjs)){ return 'variable-2'; } if (stream.match(identifiers)) { return 'variable'; } // Handle non-detected items stream.next(); return ERRORCLASS; } function tokenStringFactory(delimiter) { var singleline = delimiter.length == 1; var OUTCLASS = 'string'; return function(stream, state) { while (!stream.eol()) { stream.eatWhile(/[^'"]/); if (stream.match(delimiter)) { state.tokenize = tokenBase; return OUTCLASS; } else { stream.eat(/['"]/); } } if (singleline) { if (parserConf.singleLineStringErrors) { return ERRORCLASS; } else { state.tokenize = tokenBase; } } return OUTCLASS; }; } function tokenLexer(stream, state) { var style = state.tokenize(stream, state); var current = stream.current(); // Handle '.' connected identifiers if (current === '.') { style = state.tokenize(stream, state); current = stream.current(); if (style && (style.substr(0, 8) === 'variable' || style==='builtin' || style==='keyword')){//|| knownWords.indexOf(current.substring(1)) > -1) { if (style === 'builtin' || style === 'keyword') style='variable'; if (knownWords.indexOf(current.substr(1)) > -1) style='variable-2'; return style; } else { return ERRORCLASS; } } return style; } var external = { electricChars:"dDpPtTfFeE ", startState: function() { return { tokenize: tokenBase, lastToken: null, currentIndent: 0, nextLineIndent: 0, doInCurrentLine: false, ignoreKeyword: false }; }, token: function(stream, state) { if (stream.sol()) { state.currentIndent += state.nextLineIndent; state.nextLineIndent = 0; state.doInCurrentLine = 0; } var style = tokenLexer(stream, state); state.lastToken = {style:style, content: stream.current()}; if (style==='space') style=null; return style; }, indent: function(state, textAfter) { var trueText = textAfter.replace(/^\s+|\s+$/g, '') ; if (trueText.match(closing) || trueText.match(doubleClosing) || trueText.match(middle)) return conf.indentUnit*(state.currentIndent-1); if(state.currentIndent < 0) return 0; return state.currentIndent * conf.indentUnit; } }; return external; }); CodeMirror.defineMIME("text/vbscript", "vbscript"); }); application/library/codemirror/mode/velocity/index.html000064400000006344147577724760017500 0ustar00 CodeMirror: Velocity mode

    Velocity mode

    MIME types defined: text/velocity.

    application/library/codemirror/mode/velocity/velocity.js000064400000015672147577724760017703 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("velocity", function() { function parseWords(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var keywords = parseWords("#end #else #break #stop #[[ #]] " + "#{end} #{else} #{break} #{stop}"); var functions = parseWords("#if #elseif #foreach #set #include #parse #macro #define #evaluate " + "#{if} #{elseif} #{foreach} #{set} #{include} #{parse} #{macro} #{define} #{evaluate}"); var specials = parseWords("$foreach.count $foreach.hasNext $foreach.first $foreach.last $foreach.topmost $foreach.parent.count $foreach.parent.hasNext $foreach.parent.first $foreach.parent.last $foreach.parent $velocityCount $!bodyContent $bodyContent"); var isOperatorChar = /[+\-*&%=<>!?:\/|]/; function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } function tokenBase(stream, state) { var beforeParams = state.beforeParams; state.beforeParams = false; var ch = stream.next(); // start of unparsed string? if ((ch == "'") && !state.inString && state.inParams) { state.lastTokenWasBuiltin = false; return chain(stream, state, tokenString(ch)); } // start of parsed string? else if ((ch == '"')) { state.lastTokenWasBuiltin = false; if (state.inString) { state.inString = false; return "string"; } else if (state.inParams) return chain(stream, state, tokenString(ch)); } // is it one of the special signs []{}().,;? Seperator? else if (/[\[\]{}\(\),;\.]/.test(ch)) { if (ch == "(" && beforeParams) state.inParams = true; else if (ch == ")") { state.inParams = false; state.lastTokenWasBuiltin = true; } return null; } // start of a number value? else if (/\d/.test(ch)) { state.lastTokenWasBuiltin = false; stream.eatWhile(/[\w\.]/); return "number"; } // multi line comment? else if (ch == "#" && stream.eat("*")) { state.lastTokenWasBuiltin = false; return chain(stream, state, tokenComment); } // unparsed content? else if (ch == "#" && stream.match(/ *\[ *\[/)) { state.lastTokenWasBuiltin = false; return chain(stream, state, tokenUnparsed); } // single line comment? else if (ch == "#" && stream.eat("#")) { state.lastTokenWasBuiltin = false; stream.skipToEnd(); return "comment"; } // variable? else if (ch == "$") { stream.eatWhile(/[\w\d\$_\.{}]/); // is it one of the specials? if (specials && specials.propertyIsEnumerable(stream.current())) { return "keyword"; } else { state.lastTokenWasBuiltin = true; state.beforeParams = true; return "builtin"; } } // is it a operator? else if (isOperatorChar.test(ch)) { state.lastTokenWasBuiltin = false; stream.eatWhile(isOperatorChar); return "operator"; } else { // get the whole word stream.eatWhile(/[\w\$_{}@]/); var word = stream.current(); // is it one of the listed keywords? if (keywords && keywords.propertyIsEnumerable(word)) return "keyword"; // is it one of the listed functions? if (functions && functions.propertyIsEnumerable(word) || (stream.current().match(/^#@?[a-z0-9_]+ *$/i) && stream.peek()=="(") && !(functions && functions.propertyIsEnumerable(word.toLowerCase()))) { state.beforeParams = true; state.lastTokenWasBuiltin = false; return "keyword"; } if (state.inString) { state.lastTokenWasBuiltin = false; return "string"; } if (stream.pos > word.length && stream.string.charAt(stream.pos-word.length-1)=="." && state.lastTokenWasBuiltin) return "builtin"; // default: just a "word" state.lastTokenWasBuiltin = false; return null; } } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if ((next == quote) && !escaped) { end = true; break; } if (quote=='"' && stream.peek() == '$' && !escaped) { state.inString = true; end = true; break; } escaped = !escaped && next == "\\"; } if (end) state.tokenize = tokenBase; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "#" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function tokenUnparsed(stream, state) { var maybeEnd = 0, ch; while (ch = stream.next()) { if (ch == "#" && maybeEnd == 2) { state.tokenize = tokenBase; break; } if (ch == "]") maybeEnd++; else if (ch != " ") maybeEnd = 0; } return "meta"; } // Interface return { startState: function() { return { tokenize: tokenBase, beforeParams: false, inParams: false, inString: false, lastTokenWasBuiltin: false }; }, token: function(stream, state) { if (stream.eatSpace()) return null; return state.tokenize(stream, state); }, blockCommentStart: "#*", blockCommentEnd: "*#", lineComment: "##", fold: "velocity" }; }); CodeMirror.defineMIME("text/velocity", "velocity"); }); application/library/codemirror/mode/verilog/index.html000064400000005073147577724760017307 0ustar00 CodeMirror: Verilog/SystemVerilog mode

    SystemVerilog mode

    Syntax highlighting and indentation for the Verilog and SystemVerilog languages (IEEE 1800).

    Configuration options:

    • noIndentKeywords - List of keywords which should not cause indentation to increase. E.g. ["package", "module"]. Default: None

    MIME types defined: text/x-verilog and text/x-systemverilog.

    application/library/codemirror/mode/verilog/verilog.js000064400000045414147577724760017322 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("verilog", function(config, parserConfig) { var indentUnit = config.indentUnit, statementIndentUnit = parserConfig.statementIndentUnit || indentUnit, dontAlignCalls = parserConfig.dontAlignCalls, noIndentKeywords = parserConfig.noIndentKeywords || [], multiLineStrings = parserConfig.multiLineStrings, hooks = parserConfig.hooks || {}; function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } /** * Keywords from IEEE 1800-2012 */ var keywords = words( "accept_on alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind " + "bins binsof bit break buf bufif0 bufif1 byte case casex casez cell chandle checker class clocking cmos config " + "const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable " + "dist do edge else end endcase endchecker endclass endclocking endconfig endfunction endgenerate endgroup " + "endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask " + "enum event eventually expect export extends extern final first_match for force foreach forever fork forkjoin " + "function generate genvar global highz0 highz1 if iff ifnone ignore_bins illegal_bins implements implies import " + "incdir include initial inout input inside instance int integer interconnect interface intersect join join_any " + "join_none large let liblist library local localparam logic longint macromodule matches medium modport module " + "nand negedge nettype new nexttime nmos nor noshowcancelled not notif0 notif1 null or output package packed " + "parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup " + "pulsestyle_ondetect pulsestyle_onevent pure rand randc randcase randsequence rcmos real realtime ref reg " + "reject_on release repeat restrict return rnmos rpmos rtran rtranif0 rtranif1 s_always s_eventually s_nexttime " + "s_until s_until_with scalared sequence shortint shortreal showcancelled signed small soft solve specify " + "specparam static string strong strong0 strong1 struct super supply0 supply1 sync_accept_on sync_reject_on " + "table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior " + "trireg type typedef union unique unique0 unsigned until until_with untyped use uwire var vectored virtual void " + "wait wait_order wand weak weak0 weak1 while wildcard wire with within wor xnor xor"); /** Operators from IEEE 1800-2012 unary_operator ::= + | - | ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~ binary_operator ::= + | - | * | / | % | == | != | === | !== | ==? | !=? | && | || | ** | < | <= | > | >= | & | | | ^ | ^~ | ~^ | >> | << | >>> | <<< | -> | <-> inc_or_dec_operator ::= ++ | -- unary_module_path_operator ::= ! | ~ | & | ~& | | | ~| | ^ | ~^ | ^~ binary_module_path_operator ::= == | != | && | || | & | | | ^ | ^~ | ~^ */ var isOperatorChar = /[\+\-\*\/!~&|^%=?:]/; var isBracketChar = /[\[\]{}()]/; var unsignedNumber = /\d[0-9_]*/; var decimalLiteral = /\d*\s*'s?d\s*\d[0-9_]*/i; var binaryLiteral = /\d*\s*'s?b\s*[xz01][xz01_]*/i; var octLiteral = /\d*\s*'s?o\s*[xz0-7][xz0-7_]*/i; var hexLiteral = /\d*\s*'s?h\s*[0-9a-fxz?][0-9a-fxz?_]*/i; var realLiteral = /(\d[\d_]*(\.\d[\d_]*)?E-?[\d_]+)|(\d[\d_]*\.\d[\d_]*)/i; var closingBracketOrWord = /^((\w+)|[)}\]])/; var closingBracket = /[)}\]]/; var curPunc; var curKeyword; // Block openings which are closed by a matching keyword in the form of ("end" + keyword) // E.g. "task" => "endtask" var blockKeywords = words( "case checker class clocking config function generate interface module package" + "primitive program property specify sequence table task" ); // Opening/closing pairs var openClose = {}; for (var keyword in blockKeywords) { openClose[keyword] = "end" + keyword; } openClose["begin"] = "end"; openClose["casex"] = "endcase"; openClose["casez"] = "endcase"; openClose["do" ] = "while"; openClose["fork" ] = "join;join_any;join_none"; openClose["covergroup"] = "endgroup"; for (var i in noIndentKeywords) { var keyword = noIndentKeywords[i]; if (openClose[keyword]) { openClose[keyword] = undefined; } } // Keywords which open statements that are ended with a semi-colon var statementKeywords = words("always always_comb always_ff always_latch assert assign assume else export for foreach forever if import initial repeat while"); function tokenBase(stream, state) { var ch = stream.peek(), style; if (hooks[ch] && (style = hooks[ch](stream, state)) != false) return style; if (hooks.tokenBase && (style = hooks.tokenBase(stream, state)) != false) return style; if (/[,;:\.]/.test(ch)) { curPunc = stream.next(); return null; } if (isBracketChar.test(ch)) { curPunc = stream.next(); return "bracket"; } // Macros (tick-defines) if (ch == '`') { stream.next(); if (stream.eatWhile(/[\w\$_]/)) { return "def"; } else { return null; } } // System calls if (ch == '$') { stream.next(); if (stream.eatWhile(/[\w\$_]/)) { return "meta"; } else { return null; } } // Time literals if (ch == '#') { stream.next(); stream.eatWhile(/[\d_.]/); return "def"; } // Strings if (ch == '"') { stream.next(); state.tokenize = tokenString(ch); return state.tokenize(stream, state); } // Comments if (ch == "/") { stream.next(); if (stream.eat("*")) { state.tokenize = tokenComment; return tokenComment(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } stream.backUp(1); } // Numeric literals if (stream.match(realLiteral) || stream.match(decimalLiteral) || stream.match(binaryLiteral) || stream.match(octLiteral) || stream.match(hexLiteral) || stream.match(unsignedNumber) || stream.match(realLiteral)) { return "number"; } // Operators if (stream.eatWhile(isOperatorChar)) { return "meta"; } // Keywords / plain variables if (stream.eatWhile(/[\w\$_]/)) { var cur = stream.current(); if (keywords[cur]) { if (openClose[cur]) { curPunc = "newblock"; } if (statementKeywords[cur]) { curPunc = "newstatement"; } curKeyword = cur; return "keyword"; } return "variable"; } stream.next(); return null; } function tokenString(quote) { return function(stream, state) { var escaped = false, next, end = false; while ((next = stream.next()) != null) { if (next == quote && !escaped) {end = true; break;} escaped = !escaped && next == "\\"; } if (end || !(escaped || multiLineStrings)) state.tokenize = tokenBase; return "string"; }; } function tokenComment(stream, state) { var maybeEnd = false, ch; while (ch = stream.next()) { if (ch == "/" && maybeEnd) { state.tokenize = tokenBase; break; } maybeEnd = (ch == "*"); } return "comment"; } function Context(indented, column, type, align, prev) { this.indented = indented; this.column = column; this.type = type; this.align = align; this.prev = prev; } function pushContext(state, col, type) { var indent = state.indented; var c = new Context(indent, col, type, null, state.context); return state.context = c; } function popContext(state) { var t = state.context.type; if (t == ")" || t == "]" || t == "}") { state.indented = state.context.indented; } return state.context = state.context.prev; } function isClosing(text, contextClosing) { if (text == contextClosing) { return true; } else { // contextClosing may be multiple keywords separated by ; var closingKeywords = contextClosing.split(";"); for (var i in closingKeywords) { if (text == closingKeywords[i]) { return true; } } return false; } } function buildElectricInputRegEx() { // Reindentation should occur on any bracket char: {}()[] // or on a match of any of the block closing keywords, at // the end of a line var allClosings = []; for (var i in openClose) { if (openClose[i]) { var closings = openClose[i].split(";"); for (var j in closings) { allClosings.push(closings[j]); } } } var re = new RegExp("[{}()\\[\\]]|(" + allClosings.join("|") + ")$"); return re; } // Interface return { // Regex to force current line to reindent electricInput: buildElectricInputRegEx(), startState: function(basecolumn) { var state = { tokenize: null, context: new Context((basecolumn || 0) - indentUnit, 0, "top", false), indented: 0, startOfLine: true }; if (hooks.startState) hooks.startState(state); return state; }, token: function(stream, state) { var ctx = state.context; if (stream.sol()) { if (ctx.align == null) ctx.align = false; state.indented = stream.indentation(); state.startOfLine = true; } if (hooks.token) hooks.token(stream, state); if (stream.eatSpace()) return null; curPunc = null; curKeyword = null; var style = (state.tokenize || tokenBase)(stream, state); if (style == "comment" || style == "meta" || style == "variable") return style; if (ctx.align == null) ctx.align = true; if (curPunc == ctx.type) { popContext(state); } else if ((curPunc == ";" && ctx.type == "statement") || (ctx.type && isClosing(curKeyword, ctx.type))) { ctx = popContext(state); while (ctx && ctx.type == "statement") ctx = popContext(state); } else if (curPunc == "{") { pushContext(state, stream.column(), "}"); } else if (curPunc == "[") { pushContext(state, stream.column(), "]"); } else if (curPunc == "(") { pushContext(state, stream.column(), ")"); } else if (ctx && ctx.type == "endcase" && curPunc == ":") { pushContext(state, stream.column(), "statement"); } else if (curPunc == "newstatement") { pushContext(state, stream.column(), "statement"); } else if (curPunc == "newblock") { if (curKeyword == "function" && ctx && (ctx.type == "statement" || ctx.type == "endgroup")) { // The 'function' keyword can appear in some other contexts where it actually does not // indicate a function (import/export DPI and covergroup definitions). // Do nothing in this case } else if (curKeyword == "task" && ctx && ctx.type == "statement") { // Same thing for task } else { var close = openClose[curKeyword]; pushContext(state, stream.column(), close); } } state.startOfLine = false; return style; }, indent: function(state, textAfter) { if (state.tokenize != tokenBase && state.tokenize != null) return CodeMirror.Pass; if (hooks.indent) { var fromHook = hooks.indent(state); if (fromHook >= 0) return fromHook; } var ctx = state.context, firstChar = textAfter && textAfter.charAt(0); if (ctx.type == "statement" && firstChar == "}") ctx = ctx.prev; var closing = false; var possibleClosing = textAfter.match(closingBracketOrWord); if (possibleClosing) closing = isClosing(possibleClosing[0], ctx.type); if (ctx.type == "statement") return ctx.indented + (firstChar == "{" ? 0 : statementIndentUnit); else if (closingBracket.test(ctx.type) && ctx.align && !dontAlignCalls) return ctx.column + (closing ? 0 : 1); else if (ctx.type == ")" && !closing) return ctx.indented + statementIndentUnit; else return ctx.indented + (closing ? 0 : indentUnit); }, blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//" }; }); CodeMirror.defineMIME("text/x-verilog", { name: "verilog" }); CodeMirror.defineMIME("text/x-systemverilog", { name: "verilog" }); // TLVVerilog mode var tlvchScopePrefixes = { ">": "property", "->": "property", "-": "hr", "|": "link", "?$": "qualifier", "?*": "qualifier", "@-": "variable-3", "@": "variable-3", "?": "qualifier" }; function tlvGenIndent(stream, state) { var tlvindentUnit = 2; var rtnIndent = -1, indentUnitRq = 0, curIndent = stream.indentation(); switch (state.tlvCurCtlFlowChar) { case "\\": curIndent = 0; break; case "|": if (state.tlvPrevPrevCtlFlowChar == "@") { indentUnitRq = -2; //-2 new pipe rq after cur pipe break; } if (tlvchScopePrefixes[state.tlvPrevCtlFlowChar]) indentUnitRq = 1; // +1 new scope break; case "M": // m4 if (state.tlvPrevPrevCtlFlowChar == "@") { indentUnitRq = -2; //-2 new inst rq after pipe break; } if (tlvchScopePrefixes[state.tlvPrevCtlFlowChar]) indentUnitRq = 1; // +1 new scope break; case "@": if (state.tlvPrevCtlFlowChar == "S") indentUnitRq = -1; // new pipe stage after stmts if (state.tlvPrevCtlFlowChar == "|") indentUnitRq = 1; // 1st pipe stage break; case "S": if (state.tlvPrevCtlFlowChar == "@") indentUnitRq = 1; // flow in pipe stage if (tlvchScopePrefixes[state.tlvPrevCtlFlowChar]) indentUnitRq = 1; // +1 new scope break; } var statementIndentUnit = tlvindentUnit; rtnIndent = curIndent + (indentUnitRq*statementIndentUnit); return rtnIndent >= 0 ? rtnIndent : curIndent; } CodeMirror.defineMIME("text/x-tlv", { name: "verilog", hooks: { "\\": function(stream, state) { var vxIndent = 0, style = false; var curPunc = stream.string; if ((stream.sol()) && ((/\\SV/.test(stream.string)) || (/\\TLV/.test(stream.string)))) { curPunc = (/\\TLV_version/.test(stream.string)) ? "\\TLV_version" : stream.string; stream.skipToEnd(); if (curPunc == "\\SV" && state.vxCodeActive) {state.vxCodeActive = false;}; if ((/\\TLV/.test(curPunc) && !state.vxCodeActive) || (curPunc=="\\TLV_version" && state.vxCodeActive)) {state.vxCodeActive = true;}; style = "keyword"; state.tlvCurCtlFlowChar = state.tlvPrevPrevCtlFlowChar = state.tlvPrevCtlFlowChar = ""; if (state.vxCodeActive == true) { state.tlvCurCtlFlowChar = "\\"; vxIndent = tlvGenIndent(stream, state); } state.vxIndentRq = vxIndent; } return style; }, tokenBase: function(stream, state) { var vxIndent = 0, style = false; var tlvisOperatorChar = /[\[\]=:]/; var tlvkpScopePrefixs = { "**":"variable-2", "*":"variable-2", "$$":"variable", "$":"variable", "^^":"attribute", "^":"attribute"}; var ch = stream.peek(); var vxCurCtlFlowCharValueAtStart = state.tlvCurCtlFlowChar; if (state.vxCodeActive == true) { if (/[\[\]{}\(\);\:]/.test(ch)) { // bypass nesting and 1 char punc style = "meta"; stream.next(); } else if (ch == "/") { stream.next(); if (stream.eat("/")) { stream.skipToEnd(); style = "comment"; state.tlvCurCtlFlowChar = "S"; } else { stream.backUp(1); } } else if (ch == "@") { // pipeline stage style = tlvchScopePrefixes[ch]; state.tlvCurCtlFlowChar = "@"; stream.next(); stream.eatWhile(/[\w\$_]/); } else if (stream.match(/\b[mM]4+/, true)) { // match: function(pattern, consume, caseInsensitive) // m4 pre proc stream.skipTo("("); style = "def"; state.tlvCurCtlFlowChar = "M"; } else if (ch == "!" && stream.sol()) { // v stmt in tlv region // state.tlvCurCtlFlowChar = "S"; style = "comment"; stream.next(); } else if (tlvisOperatorChar.test(ch)) { // operators stream.eatWhile(tlvisOperatorChar); style = "operator"; } else if (ch == "#") { // phy hier state.tlvCurCtlFlowChar = (state.tlvCurCtlFlowChar == "") ? ch : state.tlvCurCtlFlowChar; stream.next(); stream.eatWhile(/[+-]\d/); style = "tag"; } else if (tlvkpScopePrefixs.propertyIsEnumerable(ch)) { // special TLV operators style = tlvkpScopePrefixs[ch]; state.tlvCurCtlFlowChar = state.tlvCurCtlFlowChar == "" ? "S" : state.tlvCurCtlFlowChar; // stmt stream.next(); stream.match(/[a-zA-Z_0-9]+/); } else if (style = tlvchScopePrefixes[ch] || false) { // special TLV operators state.tlvCurCtlFlowChar = state.tlvCurCtlFlowChar == "" ? ch : state.tlvCurCtlFlowChar; stream.next(); stream.match(/[a-zA-Z_0-9]+/); } if (state.tlvCurCtlFlowChar != vxCurCtlFlowCharValueAtStart) { // flow change vxIndent = tlvGenIndent(stream, state); state.vxIndentRq = vxIndent; } } return style; }, token: function(stream, state) { if (state.vxCodeActive == true && stream.sol() && state.tlvCurCtlFlowChar != "") { state.tlvPrevPrevCtlFlowChar = state.tlvPrevCtlFlowChar; state.tlvPrevCtlFlowChar = state.tlvCurCtlFlowChar; state.tlvCurCtlFlowChar = ""; } }, indent: function(state) { return (state.vxCodeActive == true) ? state.vxIndentRq : -1; }, startState: function(state) { state.tlvCurCtlFlowChar = ""; state.tlvPrevCtlFlowChar = ""; state.tlvPrevPrevCtlFlowChar = ""; state.vxCodeActive = true; state.vxIndentRq = 0; } } }); }); application/library/codemirror/mode/verilog/test.js000064400000015171147577724760016627 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 4}, "verilog"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("binary_literals", "[number 1'b0]", "[number 1'b1]", "[number 1'bx]", "[number 1'bz]", "[number 1'bX]", "[number 1'bZ]", "[number 1'B0]", "[number 1'B1]", "[number 1'Bx]", "[number 1'Bz]", "[number 1'BX]", "[number 1'BZ]", "[number 1'b0]", "[number 1'b1]", "[number 2'b01]", "[number 2'bxz]", "[number 2'b11]", "[number 2'b10]", "[number 2'b1Z]", "[number 12'b0101_0101_0101]", "[number 1'b 0]", "[number 'b0101]" ); MT("octal_literals", "[number 3'o7]", "[number 3'O7]", "[number 3'so7]", "[number 3'SO7]" ); MT("decimal_literals", "[number 0]", "[number 1]", "[number 7]", "[number 123_456]", "[number 'd33]", "[number 8'd255]", "[number 8'D255]", "[number 8'sd255]", "[number 8'SD255]", "[number 32'd123]", "[number 32 'd123]", "[number 32 'd 123]" ); MT("hex_literals", "[number 4'h0]", "[number 4'ha]", "[number 4'hF]", "[number 4'hx]", "[number 4'hz]", "[number 4'hX]", "[number 4'hZ]", "[number 32'hdc78]", "[number 32'hDC78]", "[number 32 'hDC78]", "[number 32'h DC78]", "[number 32 'h DC78]", "[number 32'h44x7]", "[number 32'hFFF?]" ); MT("real_number_literals", "[number 1.2]", "[number 0.1]", "[number 2394.26331]", "[number 1.2E12]", "[number 1.2e12]", "[number 1.30e-2]", "[number 0.1e-0]", "[number 23E10]", "[number 29E-2]", "[number 236.123_763_e-12]" ); MT("operators", "[meta ^]" ); MT("keywords", "[keyword logic]", "[keyword logic] [variable foo]", "[keyword reg] [variable abc]" ); MT("variables", "[variable _leading_underscore]", "[variable _if]", "[number 12] [variable foo]", "[variable foo] [number 14]" ); MT("tick_defines", "[def `FOO]", "[def `foo]", "[def `FOO_bar]" ); MT("system_calls", "[meta $display]", "[meta $vpi_printf]" ); MT("line_comment", "[comment // Hello world]"); // Alignment tests MT("align_port_map_style1", /** * mod mod(.a(a), * .b(b) * ); */ "[variable mod] [variable mod][bracket (].[variable a][bracket (][variable a][bracket )],", " .[variable b][bracket (][variable b][bracket )]", " [bracket )];", "" ); MT("align_port_map_style2", /** * mod mod( * .a(a), * .b(b) * ); */ "[variable mod] [variable mod][bracket (]", " .[variable a][bracket (][variable a][bracket )],", " .[variable b][bracket (][variable b][bracket )]", "[bracket )];", "" ); // Indentation tests MT("indent_single_statement_if", "[keyword if] [bracket (][variable foo][bracket )]", " [keyword break];", "" ); MT("no_indent_after_single_line_if", "[keyword if] [bracket (][variable foo][bracket )] [keyword break];", "" ); MT("indent_after_if_begin_same_line", "[keyword if] [bracket (][variable foo][bracket )] [keyword begin]", " [keyword break];", " [keyword break];", "[keyword end]", "" ); MT("indent_after_if_begin_next_line", "[keyword if] [bracket (][variable foo][bracket )]", " [keyword begin]", " [keyword break];", " [keyword break];", " [keyword end]", "" ); MT("indent_single_statement_if_else", "[keyword if] [bracket (][variable foo][bracket )]", " [keyword break];", "[keyword else]", " [keyword break];", "" ); MT("indent_if_else_begin_same_line", "[keyword if] [bracket (][variable foo][bracket )] [keyword begin]", " [keyword break];", " [keyword break];", "[keyword end] [keyword else] [keyword begin]", " [keyword break];", " [keyword break];", "[keyword end]", "" ); MT("indent_if_else_begin_next_line", "[keyword if] [bracket (][variable foo][bracket )]", " [keyword begin]", " [keyword break];", " [keyword break];", " [keyword end]", "[keyword else]", " [keyword begin]", " [keyword break];", " [keyword break];", " [keyword end]", "" ); MT("indent_if_nested_without_begin", "[keyword if] [bracket (][variable foo][bracket )]", " [keyword if] [bracket (][variable foo][bracket )]", " [keyword if] [bracket (][variable foo][bracket )]", " [keyword break];", "" ); MT("indent_case", "[keyword case] [bracket (][variable state][bracket )]", " [variable FOO]:", " [keyword break];", " [variable BAR]:", " [keyword break];", "[keyword endcase]", "" ); MT("unindent_after_end_with_preceding_text", "[keyword begin]", " [keyword break]; [keyword end]", "" ); MT("export_function_one_line_does_not_indent", "[keyword export] [string \"DPI-C\"] [keyword function] [variable helloFromSV];", "" ); MT("export_task_one_line_does_not_indent", "[keyword export] [string \"DPI-C\"] [keyword task] [variable helloFromSV];", "" ); MT("export_function_two_lines_indents_properly", "[keyword export]", " [string \"DPI-C\"] [keyword function] [variable helloFromSV];", "" ); MT("export_task_two_lines_indents_properly", "[keyword export]", " [string \"DPI-C\"] [keyword task] [variable helloFromSV];", "" ); MT("import_function_one_line_does_not_indent", "[keyword import] [string \"DPI-C\"] [keyword function] [variable helloFromC];", "" ); MT("import_task_one_line_does_not_indent", "[keyword import] [string \"DPI-C\"] [keyword task] [variable helloFromC];", "" ); MT("import_package_single_line_does_not_indent", "[keyword import] [variable p]::[variable x];", "[keyword import] [variable p]::[variable y];", "" ); MT("covergroup_with_function_indents_properly", "[keyword covergroup] [variable cg] [keyword with] [keyword function] [variable sample][bracket (][keyword bit] [variable b][bracket )];", " [variable c] : [keyword coverpoint] [variable c];", "[keyword endgroup]: [variable cg]", "" ); })(); application/library/codemirror/mode/vhdl/index.html000064400000004666147577724760016604 0ustar00 CodeMirror: VHDL mode

    VHDL mode

    Syntax highlighting and indentation for the VHDL language.

    Configuration options:

    • atoms - List of atom words. Default: "null"
    • hooks - List of meta hooks. Default: ["`", "$"]
    • multiLineStrings - Whether multi-line strings are accepted. Default: false

    MIME types defined: text/x-vhdl.

    application/library/codemirror/mode/vhdl/vhdl.js000064400000015060147577724760016070 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Originally written by Alf Nielsen, re-written by Michael Zhou (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function words(str) { var obj = {}, words = str.split(","); for (var i = 0; i < words.length; ++i) { var allCaps = words[i].toUpperCase(); var firstCap = words[i].charAt(0).toUpperCase() + words[i].slice(1); obj[words[i]] = true; obj[allCaps] = true; obj[firstCap] = true; } return obj; } function metaHook(stream) { stream.eatWhile(/[\w\$_]/); return "meta"; } CodeMirror.defineMode("vhdl", function(config, parserConfig) { var indentUnit = config.indentUnit, atoms = parserConfig.atoms || words("null"), hooks = parserConfig.hooks || {"`": metaHook, "$": metaHook}, multiLineStrings = parserConfig.multiLineStrings; var keywords = words("abs,access,after,alias,all,and,architecture,array,assert,attribute,begin,block," + "body,buffer,bus,case,component,configuration,constant,disconnect,downto,else,elsif,end,end block,end case," + "end component,end for,end generate,end if,end loop,end process,end record,end units,entity,exit,file,for," + "function,generate,generic,generic map,group,guarded,if,impure,in,inertial,inout,is,label,library,linkage," + "literal,loop,map,mod,nand,new,next,nor,null,of,on,open,or,others,out,package,package body,port,port map," + "postponed,procedure,process,pure,range,record,register,reject,rem,report,return,rol,ror,select,severity,signal," + "sla,sll,sra,srl,subtype,then,to,transport,type,unaffected,units,until,use,variable,wait,when,while,with,xnor,xor"); var blockKeywords = words("architecture,entity,begin,case,port,else,elsif,end,for,function,if"); var isOperatorChar = /[&|~> CodeMirror: Vue.js mode

    Vue.js mode

    MIME types defined: text/x-vue

    application/library/codemirror/mode/vue/vue.js000064400000004702147577724760015575 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function (mod) { "use strict"; if (typeof exports === "object" && typeof module === "object") {// CommonJS mod(require("../../lib/codemirror"), require("../../addon/mode/overlay"), require("../xml/xml"), require("../javascript/javascript"), require("../coffeescript/coffeescript"), require("../css/css"), require("../sass/sass"), require("../stylus/stylus"), require("../pug/pug"), require("../handlebars/handlebars")); } else if (typeof define === "function" && define.amd) { // AMD define(["../../lib/codemirror", "../../addon/mode/overlay", "../xml/xml", "../javascript/javascript", "../coffeescript/coffeescript", "../css/css", "../sass/sass", "../stylus/stylus", "../pug/pug", "../handlebars/handlebars"], mod); } else { // Plain browser env mod(CodeMirror); } })(function (CodeMirror) { var tagLanguages = { script: [ ["lang", /coffee(script)?/, "coffeescript"], ["type", /^(?:text|application)\/(?:x-)?coffee(?:script)?$/, "coffeescript"] ], style: [ ["lang", /^stylus$/i, "stylus"], ["lang", /^sass$/i, "sass"], ["type", /^(text\/)?(x-)?styl(us)?$/i, "stylus"], ["type", /^text\/sass/i, "sass"] ], template: [ ["lang", /^vue-template$/i, "vue"], ["lang", /^pug$/i, "pug"], ["lang", /^handlebars$/i, "handlebars"], ["type", /^(text\/)?(x-)?pug$/i, "pug"], ["type", /^text\/x-handlebars-template$/i, "handlebars"], [null, null, "vue-template"] ] }; CodeMirror.defineMode("vue-template", function (config, parserConfig) { var mustacheOverlay = { token: function (stream) { if (stream.match(/^\{\{.*?\}\}/)) return "meta mustache"; while (stream.next() && !stream.match("{{", false)) {} return null; } }; return CodeMirror.overlayMode(CodeMirror.getMode(config, parserConfig.backdrop || "text/html"), mustacheOverlay); }); CodeMirror.defineMode("vue", function (config) { return CodeMirror.getMode(config, {name: "htmlmixed", tags: tagLanguages}); }, "htmlmixed", "xml", "javascript", "coffeescript", "css", "sass", "stylus", "pug", "handlebars"); CodeMirror.defineMIME("script/x-vue", "vue"); }); application/library/codemirror/mode/webidl/webidl.js000064400000013230147577724760016707 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; function wordRegexp(words) { return new RegExp("^((" + words.join(")|(") + "))\\b"); }; var builtinArray = [ "Clamp", "Constructor", "EnforceRange", "Exposed", "ImplicitThis", "Global", "PrimaryGlobal", "LegacyArrayClass", "LegacyUnenumerableNamedProperties", "LenientThis", "NamedConstructor", "NewObject", "NoInterfaceObject", "OverrideBuiltins", "PutForwards", "Replaceable", "SameObject", "TreatNonObjectAsNull", "TreatNullAs", "EmptyString", "Unforgeable", "Unscopeable" ]; var builtins = wordRegexp(builtinArray); var typeArray = [ "unsigned", "short", "long", // UnsignedIntegerType "unrestricted", "float", "double", // UnrestrictedFloatType "boolean", "byte", "octet", // Rest of PrimitiveType "Promise", // PromiseType "ArrayBuffer", "DataView", "Int8Array", "Int16Array", "Int32Array", "Uint8Array", "Uint16Array", "Uint32Array", "Uint8ClampedArray", "Float32Array", "Float64Array", // BufferRelatedType "ByteString", "DOMString", "USVString", "sequence", "object", "RegExp", "Error", "DOMException", "FrozenArray", // Rest of NonAnyType "any", // Rest of SingleType "void" // Rest of ReturnType ]; var types = wordRegexp(typeArray); var keywordArray = [ "attribute", "callback", "const", "deleter", "dictionary", "enum", "getter", "implements", "inherit", "interface", "iterable", "legacycaller", "maplike", "partial", "required", "serializer", "setlike", "setter", "static", "stringifier", "typedef", // ArgumentNameKeyword except // "unrestricted" "optional", "readonly", "or" ]; var keywords = wordRegexp(keywordArray); var atomArray = [ "true", "false", // BooleanLiteral "Infinity", "NaN", // FloatLiteral "null" // Rest of ConstValue ]; var atoms = wordRegexp(atomArray); CodeMirror.registerHelper("hintWords", "webidl", builtinArray.concat(typeArray).concat(keywordArray).concat(atomArray)); var startDefArray = ["callback", "dictionary", "enum", "interface"]; var startDefs = wordRegexp(startDefArray); var endDefArray = ["typedef"]; var endDefs = wordRegexp(endDefArray); var singleOperators = /^[:<=>?]/; var integers = /^-?([1-9][0-9]*|0[Xx][0-9A-Fa-f]+|0[0-7]*)/; var floats = /^-?(([0-9]+\.[0-9]*|[0-9]*\.[0-9]+)([Ee][+-]?[0-9]+)?|[0-9]+[Ee][+-]?[0-9]+)/; var identifiers = /^_?[A-Za-z][0-9A-Z_a-z-]*/; var identifiersEnd = /^_?[A-Za-z][0-9A-Z_a-z-]*(?=\s*;)/; var strings = /^"[^"]*"/; var multilineComments = /^\/\*.*?\*\//; var multilineCommentsStart = /^\/\*.*/; var multilineCommentsEnd = /^.*?\*\//; function readToken(stream, state) { // whitespace if (stream.eatSpace()) return null; // comment if (state.inComment) { if (stream.match(multilineCommentsEnd)) { state.inComment = false; return "comment"; } stream.skipToEnd(); return "comment"; } if (stream.match("//")) { stream.skipToEnd(); return "comment"; } if (stream.match(multilineComments)) return "comment"; if (stream.match(multilineCommentsStart)) { state.inComment = true; return "comment"; } // integer and float if (stream.match(/^-?[0-9\.]/, false)) { if (stream.match(integers) || stream.match(floats)) return "number"; } // string if (stream.match(strings)) return "string"; // identifier if (state.startDef && stream.match(identifiers)) return "def"; if (state.endDef && stream.match(identifiersEnd)) { state.endDef = false; return "def"; } if (stream.match(keywords)) return "keyword"; if (stream.match(types)) { var lastToken = state.lastToken; var nextToken = (stream.match(/^\s*(.+?)\b/, false) || [])[1]; if (lastToken === ":" || lastToken === "implements" || nextToken === "implements" || nextToken === "=") { // Used as identifier return "builtin"; } else { // Used as type return "variable-3"; } } if (stream.match(builtins)) return "builtin"; if (stream.match(atoms)) return "atom"; if (stream.match(identifiers)) return "variable"; // other if (stream.match(singleOperators)) return "operator"; // unrecognized stream.next(); return null; }; CodeMirror.defineMode("webidl", function() { return { startState: function() { return { // Is in multiline comment inComment: false, // Last non-whitespace, matched token lastToken: "", // Next token is a definition startDef: false, // Last token of the statement is a definition endDef: false }; }, token: function(stream, state) { var style = readToken(stream, state); if (style) { var cur = stream.current(); state.lastToken = cur; if (style === "keyword") { state.startDef = startDefs.test(cur); state.endDef = state.endDef || endDefs.test(cur); } else { state.startDef = false; } } return style; } }; }); CodeMirror.defineMIME("text/x-webidl", "webidl"); }); application/library/codemirror/mode/webidl/index.html000064400000004173147577724760017106 0ustar00 CodeMirror: Web IDL mode

    Web IDL mode

    MIME type defined: text/x-webidl.

    application/library/codemirror/mode/xml/xml.js000064400000030432147577724760015576 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; var htmlConfig = { autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true, 'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true, 'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true, 'track': true, 'wbr': true, 'menuitem': true}, implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true, 'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true, 'th': true, 'tr': true}, contextGrabbers: { 'dd': {'dd': true, 'dt': true}, 'dt': {'dd': true, 'dt': true}, 'li': {'li': true}, 'option': {'option': true, 'optgroup': true}, 'optgroup': {'optgroup': true}, 'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true, 'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true, 'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true, 'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true, 'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true}, 'rp': {'rp': true, 'rt': true}, 'rt': {'rp': true, 'rt': true}, 'tbody': {'tbody': true, 'tfoot': true}, 'td': {'td': true, 'th': true}, 'tfoot': {'tbody': true}, 'th': {'td': true, 'th': true}, 'thead': {'tbody': true, 'tfoot': true}, 'tr': {'tr': true} }, doNotIndent: {"pre": true}, allowUnquoted: true, allowMissing: true, caseFold: true } var xmlConfig = { autoSelfClosers: {}, implicitlyClosed: {}, contextGrabbers: {}, doNotIndent: {}, allowUnquoted: false, allowMissing: false, caseFold: false } CodeMirror.defineMode("xml", function(editorConf, config_) { var indentUnit = editorConf.indentUnit var config = {} var defaults = config_.htmlMode ? htmlConfig : xmlConfig for (var prop in defaults) config[prop] = defaults[prop] for (var prop in config_) config[prop] = config_[prop] // Return variables for tokenizers var type, setStyle; function inText(stream, state) { function chain(parser) { state.tokenize = parser; return parser(stream, state); } var ch = stream.next(); if (ch == "<") { if (stream.eat("!")) { if (stream.eat("[")) { if (stream.match("CDATA[")) return chain(inBlock("atom", "]]>")); else return null; } else if (stream.match("--")) { return chain(inBlock("comment", "-->")); } else if (stream.match("DOCTYPE", true, true)) { stream.eatWhile(/[\w\._\-]/); return chain(doctype(1)); } else { return null; } } else if (stream.eat("?")) { stream.eatWhile(/[\w\._\-]/); state.tokenize = inBlock("meta", "?>"); return "meta"; } else { type = stream.eat("/") ? "closeTag" : "openTag"; state.tokenize = inTag; return "tag bracket"; } } else if (ch == "&") { var ok; if (stream.eat("#")) { if (stream.eat("x")) { ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";"); } else { ok = stream.eatWhile(/[\d]/) && stream.eat(";"); } } else { ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";"); } return ok ? "atom" : "error"; } else { stream.eatWhile(/[^&<]/); return null; } } inText.isInText = true; function inTag(stream, state) { var ch = stream.next(); if (ch == ">" || (ch == "/" && stream.eat(">"))) { state.tokenize = inText; type = ch == ">" ? "endTag" : "selfcloseTag"; return "tag bracket"; } else if (ch == "=") { type = "equals"; return null; } else if (ch == "<") { state.tokenize = inText; state.state = baseState; state.tagName = state.tagStart = null; var next = state.tokenize(stream, state); return next ? next + " tag error" : "tag error"; } else if (/[\'\"]/.test(ch)) { state.tokenize = inAttribute(ch); state.stringStartCol = stream.column(); return state.tokenize(stream, state); } else { stream.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/); return "word"; } } function inAttribute(quote) { var closure = function(stream, state) { while (!stream.eol()) { if (stream.next() == quote) { state.tokenize = inTag; break; } } return "string"; }; closure.isInAttribute = true; return closure; } function inBlock(style, terminator) { return function(stream, state) { while (!stream.eol()) { if (stream.match(terminator)) { state.tokenize = inText; break; } stream.next(); } return style; }; } function doctype(depth) { return function(stream, state) { var ch; while ((ch = stream.next()) != null) { if (ch == "<") { state.tokenize = doctype(depth + 1); return state.tokenize(stream, state); } else if (ch == ">") { if (depth == 1) { state.tokenize = inText; break; } else { state.tokenize = doctype(depth - 1); return state.tokenize(stream, state); } } } return "meta"; }; } function Context(state, tagName, startOfLine) { this.prev = state.context; this.tagName = tagName; this.indent = state.indented; this.startOfLine = startOfLine; if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent)) this.noIndent = true; } function popContext(state) { if (state.context) state.context = state.context.prev; } function maybePopContext(state, nextTagName) { var parentTagName; while (true) { if (!state.context) { return; } parentTagName = state.context.tagName; if (!config.contextGrabbers.hasOwnProperty(parentTagName) || !config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) { return; } popContext(state); } } function baseState(type, stream, state) { if (type == "openTag") { state.tagStart = stream.column(); return tagNameState; } else if (type == "closeTag") { return closeTagNameState; } else { return baseState; } } function tagNameState(type, stream, state) { if (type == "word") { state.tagName = stream.current(); setStyle = "tag"; return attrState; } else { setStyle = "error"; return tagNameState; } } function closeTagNameState(type, stream, state) { if (type == "word") { var tagName = stream.current(); if (state.context && state.context.tagName != tagName && config.implicitlyClosed.hasOwnProperty(state.context.tagName)) popContext(state); if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) { setStyle = "tag"; return closeState; } else { setStyle = "tag error"; return closeStateErr; } } else { setStyle = "error"; return closeStateErr; } } function closeState(type, _stream, state) { if (type != "endTag") { setStyle = "error"; return closeState; } popContext(state); return baseState; } function closeStateErr(type, stream, state) { setStyle = "error"; return closeState(type, stream, state); } function attrState(type, _stream, state) { if (type == "word") { setStyle = "attribute"; return attrEqState; } else if (type == "endTag" || type == "selfcloseTag") { var tagName = state.tagName, tagStart = state.tagStart; state.tagName = state.tagStart = null; if (type == "selfcloseTag" || config.autoSelfClosers.hasOwnProperty(tagName)) { maybePopContext(state, tagName); } else { maybePopContext(state, tagName); state.context = new Context(state, tagName, tagStart == state.indented); } return baseState; } setStyle = "error"; return attrState; } function attrEqState(type, stream, state) { if (type == "equals") return attrValueState; if (!config.allowMissing) setStyle = "error"; return attrState(type, stream, state); } function attrValueState(type, stream, state) { if (type == "string") return attrContinuedState; if (type == "word" && config.allowUnquoted) {setStyle = "string"; return attrState;} setStyle = "error"; return attrState(type, stream, state); } function attrContinuedState(type, stream, state) { if (type == "string") return attrContinuedState; return attrState(type, stream, state); } return { startState: function(baseIndent) { var state = {tokenize: inText, state: baseState, indented: baseIndent || 0, tagName: null, tagStart: null, context: null} if (baseIndent != null) state.baseIndent = baseIndent return state }, token: function(stream, state) { if (!state.tagName && stream.sol()) state.indented = stream.indentation(); if (stream.eatSpace()) return null; type = null; var style = state.tokenize(stream, state); if ((style || type) && style != "comment") { setStyle = null; state.state = state.state(type || style, stream, state); if (setStyle) style = setStyle == "error" ? style + " error" : setStyle; } return style; }, indent: function(state, textAfter, fullLine) { var context = state.context; // Indent multi-line strings (e.g. css). if (state.tokenize.isInAttribute) { if (state.tagStart == state.indented) return state.stringStartCol + 1; else return state.indented + indentUnit; } if (context && context.noIndent) return CodeMirror.Pass; if (state.tokenize != inTag && state.tokenize != inText) return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0; // Indent the starts of attribute names. if (state.tagName) { if (config.multilineTagIndentPastTag !== false) return state.tagStart + state.tagName.length + 2; else return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1); } if (config.alignCDATA && /$/, blockCommentStart: "", configuration: config.htmlMode ? "html" : "xml", helperType: config.htmlMode ? "html" : "xml", skipAttribute: function(state) { if (state.state == attrValueState) state.state = attrState } }; }); CodeMirror.defineMIME("text/xml", "xml"); CodeMirror.defineMIME("application/xml", "xml"); if (!CodeMirror.mimeModes.hasOwnProperty("text/html")) CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true}); }); application/library/codemirror/mode/xml/index.html000064400000004173147577724760016440 0ustar00 CodeMirror: XML mode

    XML mode

    The XML mode supports these configuration parameters:

    htmlMode (boolean)
    This switches the mode to parse HTML instead of XML. This means attributes do not have to be quoted, and some elements (such as br) do not require a closing tag.
    matchClosing (boolean)
    Controls whether the mode checks that close tags match the corresponding opening tag, and highlights mismatches as errors. Defaults to true.
    alignCDATA (boolean)
    Setting this to true will force the opening tag of CDATA blocks to not be indented.

    MIME types defined: application/xml, text/html.

    application/library/codemirror/mode/xml/test.js000064400000003336147577724760015760 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function() { var mode = CodeMirror.getMode({indentUnit: 2}, "xml"), mname = "xml"; function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1), mname); } MT("matching", "[tag&bracket <][tag top][tag&bracket >]", " text", " [tag&bracket <][tag inner][tag&bracket />]", "[tag&bracket ]"); MT("nonmatching", "[tag&bracket <][tag top][tag&bracket >]", " [tag&bracket <][tag inner][tag&bracket />]", " [tag&bracket ]"); MT("doctype", "[meta ]", "[tag&bracket <][tag top][tag&bracket />]"); MT("cdata", "[tag&bracket <][tag top][tag&bracket >]", " [atom ]", "[tag&bracket ]"); // HTML tests mode = CodeMirror.getMode({indentUnit: 2}, "text/html"); MT("selfclose", "[tag&bracket <][tag html][tag&bracket >]", " [tag&bracket <][tag link] [attribute rel]=[string stylesheet] [attribute href]=[string \"/foobar\"][tag&bracket >]", "[tag&bracket ]"); MT("list", "[tag&bracket <][tag ol][tag&bracket >]", " [tag&bracket <][tag li][tag&bracket >]one", " [tag&bracket <][tag li][tag&bracket >]two", "[tag&bracket ]"); MT("valueless", "[tag&bracket <][tag input] [attribute type]=[string checkbox] [attribute checked][tag&bracket />]"); MT("pThenArticle", "[tag&bracket <][tag p][tag&bracket >]", " foo", "[tag&bracket <][tag article][tag&bracket >]bar"); })(); application/library/codemirror/mode/xquery/index.html000064400000020641147577724760017173 0ustar00 CodeMirror: XQuery mode

    XQuery mode

    MIME types defined: application/xquery.

    Development of the CodeMirror XQuery mode was sponsored by MarkLogic and developed by Mike Brevoort.

    application/library/codemirror/mode/xquery/xquery.js000064400000034206147577724760017073 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("xquery", function() { // The keywords object is set to the result of this self executing // function. Each keyword is a property of the keywords object whose // value is {type: atype, style: astyle} var keywords = function(){ // convenience functions used to build keywords object function kw(type) {return {type: type, style: "keyword"};} var A = kw("keyword a") , B = kw("keyword b") , C = kw("keyword c") , operator = kw("operator") , atom = {type: "atom", style: "atom"} , punctuation = {type: "punctuation", style: null} , qualifier = {type: "axis_specifier", style: "qualifier"}; // kwObj is what is return from this function at the end var kwObj = { 'if': A, 'switch': A, 'while': A, 'for': A, 'else': B, 'then': B, 'try': B, 'finally': B, 'catch': B, 'element': C, 'attribute': C, 'let': C, 'implements': C, 'import': C, 'module': C, 'namespace': C, 'return': C, 'super': C, 'this': C, 'throws': C, 'where': C, 'private': C, ',': punctuation, 'null': atom, 'fn:false()': atom, 'fn:true()': atom }; // a list of 'basic' keywords. For each add a property to kwObj with the value of // {type: basic[i], style: "keyword"} e.g. 'after' --> {type: "after", style: "keyword"} var basic = ['after','ancestor','ancestor-or-self','and','as','ascending','assert','attribute','before', 'by','case','cast','child','comment','declare','default','define','descendant','descendant-or-self', 'descending','document','document-node','element','else','eq','every','except','external','following', 'following-sibling','follows','for','function','if','import','in','instance','intersect','item', 'let','module','namespace','node','node','of','only','or','order','parent','precedes','preceding', 'preceding-sibling','processing-instruction','ref','return','returns','satisfies','schema','schema-element', 'self','some','sortby','stable','text','then','to','treat','typeswitch','union','variable','version','where', 'xquery', 'empty-sequence']; for(var i=0, l=basic.length; i < l; i++) { kwObj[basic[i]] = kw(basic[i]);}; // a list of types. For each add a property to kwObj with the value of // {type: "atom", style: "atom"} var types = ['xs:string', 'xs:float', 'xs:decimal', 'xs:double', 'xs:integer', 'xs:boolean', 'xs:date', 'xs:dateTime', 'xs:time', 'xs:duration', 'xs:dayTimeDuration', 'xs:time', 'xs:yearMonthDuration', 'numeric', 'xs:hexBinary', 'xs:base64Binary', 'xs:anyURI', 'xs:QName', 'xs:byte','xs:boolean','xs:anyURI','xf:yearMonthDuration']; for(var i=0, l=types.length; i < l; i++) { kwObj[types[i]] = atom;}; // each operator will add a property to kwObj with value of {type: "operator", style: "keyword"} var operators = ['eq', 'ne', 'lt', 'le', 'gt', 'ge', ':=', '=', '>', '>=', '<', '<=', '.', '|', '?', 'and', 'or', 'div', 'idiv', 'mod', '*', '/', '+', '-']; for(var i=0, l=operators.length; i < l; i++) { kwObj[operators[i]] = operator;}; // each axis_specifiers will add a property to kwObj with value of {type: "axis_specifier", style: "qualifier"} var axis_specifiers = ["self::", "attribute::", "child::", "descendant::", "descendant-or-self::", "parent::", "ancestor::", "ancestor-or-self::", "following::", "preceding::", "following-sibling::", "preceding-sibling::"]; for(var i=0, l=axis_specifiers.length; i < l; i++) { kwObj[axis_specifiers[i]] = qualifier; }; return kwObj; }(); function chain(stream, state, f) { state.tokenize = f; return f(stream, state); } // the primary mode tokenizer function tokenBase(stream, state) { var ch = stream.next(), mightBeFunction = false, isEQName = isEQNameAhead(stream); // an XML tag (if not in some sub, chained tokenizer) if (ch == "<") { if(stream.match("!--", true)) return chain(stream, state, tokenXMLComment); if(stream.match("![CDATA", false)) { state.tokenize = tokenCDATA; return "tag"; } if(stream.match("?", false)) { return chain(stream, state, tokenPreProcessing); } var isclose = stream.eat("/"); stream.eatSpace(); var tagName = "", c; while ((c = stream.eat(/[^\s\u00a0=<>\"\'\/?]/))) tagName += c; return chain(stream, state, tokenTag(tagName, isclose)); } // start code block else if(ch == "{") { pushStateStack(state,{ type: "codeblock"}); return null; } // end code block else if(ch == "}") { popStateStack(state); return null; } // if we're in an XML block else if(isInXmlBlock(state)) { if(ch == ">") return "tag"; else if(ch == "/" && stream.eat(">")) { popStateStack(state); return "tag"; } else return "variable"; } // if a number else if (/\d/.test(ch)) { stream.match(/^\d*(?:\.\d*)?(?:E[+\-]?\d+)?/); return "atom"; } // comment start else if (ch === "(" && stream.eat(":")) { pushStateStack(state, { type: "comment"}); return chain(stream, state, tokenComment); } // quoted string else if ( !isEQName && (ch === '"' || ch === "'")) return chain(stream, state, tokenString(ch)); // variable else if(ch === "$") { return chain(stream, state, tokenVariable); } // assignment else if(ch ===":" && stream.eat("=")) { return "keyword"; } // open paren else if(ch === "(") { pushStateStack(state, { type: "paren"}); return null; } // close paren else if(ch === ")") { popStateStack(state); return null; } // open paren else if(ch === "[") { pushStateStack(state, { type: "bracket"}); return null; } // close paren else if(ch === "]") { popStateStack(state); return null; } else { var known = keywords.propertyIsEnumerable(ch) && keywords[ch]; // if there's a EQName ahead, consume the rest of the string portion, it's likely a function if(isEQName && ch === '\"') while(stream.next() !== '"'){} if(isEQName && ch === '\'') while(stream.next() !== '\''){} // gobble up a word if the character is not known if(!known) stream.eatWhile(/[\w\$_-]/); // gobble a colon in the case that is a lib func type call fn:doc var foundColon = stream.eat(":"); // if there's not a second colon, gobble another word. Otherwise, it's probably an axis specifier // which should get matched as a keyword if(!stream.eat(":") && foundColon) { stream.eatWhile(/[\w\$_-]/); } // if the next non whitespace character is an open paren, this is probably a function (if not a keyword of other sort) if(stream.match(/^[ \t]*\(/, false)) { mightBeFunction = true; } // is the word a keyword? var word = stream.current(); known = keywords.propertyIsEnumerable(word) && keywords[word]; // if we think it's a function call but not yet known, // set style to variable for now for lack of something better if(mightBeFunction && !known) known = {type: "function_call", style: "variable def"}; // if the previous word was element, attribute, axis specifier, this word should be the name of that if(isInXmlConstructor(state)) { popStateStack(state); return "variable"; } // as previously checked, if the word is element,attribute, axis specifier, call it an "xmlconstructor" and // push the stack so we know to look for it on the next word if(word == "element" || word == "attribute" || known.type == "axis_specifier") pushStateStack(state, {type: "xmlconstructor"}); // if the word is known, return the details of that else just call this a generic 'word' return known ? known.style : "variable"; } } // handle comments, including nested function tokenComment(stream, state) { var maybeEnd = false, maybeNested = false, nestedCount = 0, ch; while (ch = stream.next()) { if (ch == ")" && maybeEnd) { if(nestedCount > 0) nestedCount--; else { popStateStack(state); break; } } else if(ch == ":" && maybeNested) { nestedCount++; } maybeEnd = (ch == ":"); maybeNested = (ch == "("); } return "comment"; } // tokenizer for string literals // optionally pass a tokenizer function to set state.tokenize back to when finished function tokenString(quote, f) { return function(stream, state) { var ch; if(isInString(state) && stream.current() == quote) { popStateStack(state); if(f) state.tokenize = f; return "string"; } pushStateStack(state, { type: "string", name: quote, tokenize: tokenString(quote, f) }); // if we're in a string and in an XML block, allow an embedded code block if(stream.match("{", false) && isInXmlAttributeBlock(state)) { state.tokenize = tokenBase; return "string"; } while (ch = stream.next()) { if (ch == quote) { popStateStack(state); if(f) state.tokenize = f; break; } else { // if we're in a string and in an XML block, allow an embedded code block in an attribute if(stream.match("{", false) && isInXmlAttributeBlock(state)) { state.tokenize = tokenBase; return "string"; } } } return "string"; }; } // tokenizer for variables function tokenVariable(stream, state) { var isVariableChar = /[\w\$_-]/; // a variable may start with a quoted EQName so if the next character is quote, consume to the next quote if(stream.eat("\"")) { while(stream.next() !== '\"'){}; stream.eat(":"); } else { stream.eatWhile(isVariableChar); if(!stream.match(":=", false)) stream.eat(":"); } stream.eatWhile(isVariableChar); state.tokenize = tokenBase; return "variable"; } // tokenizer for XML tags function tokenTag(name, isclose) { return function(stream, state) { stream.eatSpace(); if(isclose && stream.eat(">")) { popStateStack(state); state.tokenize = tokenBase; return "tag"; } // self closing tag without attributes? if(!stream.eat("/")) pushStateStack(state, { type: "tag", name: name, tokenize: tokenBase}); if(!stream.eat(">")) { state.tokenize = tokenAttribute; return "tag"; } else { state.tokenize = tokenBase; } return "tag"; }; } // tokenizer for XML attributes function tokenAttribute(stream, state) { var ch = stream.next(); if(ch == "/" && stream.eat(">")) { if(isInXmlAttributeBlock(state)) popStateStack(state); if(isInXmlBlock(state)) popStateStack(state); return "tag"; } if(ch == ">") { if(isInXmlAttributeBlock(state)) popStateStack(state); return "tag"; } if(ch == "=") return null; // quoted string if (ch == '"' || ch == "'") return chain(stream, state, tokenString(ch, tokenAttribute)); if(!isInXmlAttributeBlock(state)) pushStateStack(state, { type: "attribute", tokenize: tokenAttribute}); stream.eat(/[a-zA-Z_:]/); stream.eatWhile(/[-a-zA-Z0-9_:.]/); stream.eatSpace(); // the case where the attribute has not value and the tag was closed if(stream.match(">", false) || stream.match("/", false)) { popStateStack(state); state.tokenize = tokenBase; } return "attribute"; } // handle comments, including nested function tokenXMLComment(stream, state) { var ch; while (ch = stream.next()) { if (ch == "-" && stream.match("->", true)) { state.tokenize = tokenBase; return "comment"; } } } // handle CDATA function tokenCDATA(stream, state) { var ch; while (ch = stream.next()) { if (ch == "]" && stream.match("]", true)) { state.tokenize = tokenBase; return "comment"; } } } // handle preprocessing instructions function tokenPreProcessing(stream, state) { var ch; while (ch = stream.next()) { if (ch == "?" && stream.match(">", true)) { state.tokenize = tokenBase; return "comment meta"; } } } // functions to test the current context of the state function isInXmlBlock(state) { return isIn(state, "tag"); } function isInXmlAttributeBlock(state) { return isIn(state, "attribute"); } function isInXmlConstructor(state) { return isIn(state, "xmlconstructor"); } function isInString(state) { return isIn(state, "string"); } function isEQNameAhead(stream) { // assume we've already eaten a quote (") if(stream.current() === '"') return stream.match(/^[^\"]+\"\:/, false); else if(stream.current() === '\'') return stream.match(/^[^\"]+\'\:/, false); else return false; } function isIn(state, type) { return (state.stack.length && state.stack[state.stack.length - 1].type == type); } function pushStateStack(state, newState) { state.stack.push(newState); } function popStateStack(state) { state.stack.pop(); var reinstateTokenize = state.stack.length && state.stack[state.stack.length-1].tokenize; state.tokenize = reinstateTokenize || tokenBase; } // the interface for the mode API return { startState: function() { return { tokenize: tokenBase, cc: [], stack: [] }; }, token: function(stream, state) { if (stream.eatSpace()) return null; var style = state.tokenize(stream, state); return style; }, blockCommentStart: "(:", blockCommentEnd: ":)" }; }); CodeMirror.defineMIME("application/xquery", "xquery"); }); application/library/codemirror/mode/xquery/test.js000064400000011764147577724760016521 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Don't take these too seriously -- the expected results appear to be // based on the results of actual runs without any serious manual // verification. If a change you made causes them to fail, the test is // as likely to wrong as the code. (function() { var mode = CodeMirror.getMode({tabSize: 4}, "xquery"); function MT(name) { test.mode(name, mode, Array.prototype.slice.call(arguments, 1)); } MT("eviltest", "[keyword xquery] [keyword version] [variable "1][keyword .][atom 0][keyword -][variable ml"][def&variable ;] [comment (: this is : a \"comment\" :)]", " [keyword let] [variable $let] [keyword :=] [variable <x] [variable attr][keyword =][variable "value">"test"<func>][def&variable ;function]() [variable $var] {[keyword function]()} {[variable $var]}[variable <][keyword /][variable func><][keyword /][variable x>]", " [keyword let] [variable $joe][keyword :=][atom 1]", " [keyword return] [keyword element] [variable element] {", " [keyword attribute] [variable attribute] { [atom 1] },", " [keyword element] [variable test] { [variable 'a'] }, [keyword attribute] [variable foo] { [variable "bar"] },", " [def&variable fn:doc]()[[ [variable foo][keyword /][variable @bar] [keyword eq] [variable $let] ]],", " [keyword //][variable x] } [comment (: a more 'evil' test :)]", " [comment (: Modified Blakeley example (: with nested comment :) ... :)]", " [keyword declare] [keyword private] [keyword function] [def&variable local:declare]() {()}[variable ;]", " [keyword declare] [keyword private] [keyword function] [def&variable local:private]() {()}[variable ;]", " [keyword declare] [keyword private] [keyword function] [def&variable local:function]() {()}[variable ;]", " [keyword declare] [keyword private] [keyword function] [def&variable local:local]() {()}[variable ;]", " [keyword let] [variable $let] [keyword :=] [variable <let>let] [variable $let] [keyword :=] [variable "let"<][keyword /let][variable >]", " [keyword return] [keyword element] [variable element] {", " [keyword attribute] [variable attribute] { [keyword try] { [def&variable xdmp:version]() } [keyword catch]([variable $e]) { [def&variable xdmp:log]([variable $e]) } },", " [keyword attribute] [variable fn:doc] { [variable "bar"] [variable castable] [keyword as] [atom xs:string] },", " [keyword element] [variable text] { [keyword text] { [variable "text"] } },", " [def&variable fn:doc]()[[ [qualifier child::][variable eq][keyword /]([variable @bar] [keyword |] [qualifier attribute::][variable attribute]) [keyword eq] [variable $let] ]],", " [keyword //][variable fn:doc]", " }"); MT("testEmptySequenceKeyword", "[string \"foo\"] [keyword instance] [keyword of] [keyword empty-sequence]()"); MT("testMultiAttr", "[tag

    ][variable hello] [variable world][tag

    ]"); MT("test namespaced variable", "[keyword declare] [keyword namespace] [variable e] [keyword =] [string \"http://example.com/ANamespace\"][variable ;declare] [keyword variable] [variable $e:exampleComThisVarIsNotRecognized] [keyword as] [keyword element]([keyword *]) [variable external;]"); MT("test EQName variable", "[keyword declare] [keyword variable] [variable $\"http://www.example.com/ns/my\":var] [keyword :=] [atom 12][variable ;]", "[tag ]{[variable $\"http://www.example.com/ns/my\":var]}[tag ]"); MT("test EQName function", "[keyword declare] [keyword function] [def&variable \"http://www.example.com/ns/my\":fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {", " [variable $a] [keyword +] [atom 2]", "}[variable ;]", "[tag ]{[def&variable \"http://www.example.com/ns/my\":fn]([atom 12])}[tag ]"); MT("test EQName function with single quotes", "[keyword declare] [keyword function] [def&variable 'http://www.example.com/ns/my':fn] ([variable $a] [keyword as] [atom xs:integer]) [keyword as] [atom xs:integer] {", " [variable $a] [keyword +] [atom 2]", "}[variable ;]", "[tag ]{[def&variable 'http://www.example.com/ns/my':fn]([atom 12])}[tag ]"); MT("testProcessingInstructions", "[def&variable data]([comment&meta ]) [keyword instance] [keyword of] [atom xs:string]"); MT("testQuoteEscapeDouble", "[keyword let] [variable $rootfolder] [keyword :=] [string \"c:\\builds\\winnt\\HEAD\\qa\\scripts\\\"]", "[keyword let] [variable $keysfolder] [keyword :=] [def&variable concat]([variable $rootfolder], [string \"keys\\\"])"); })(); application/library/codemirror/mode/yacas/index.html000064400000004200147577724760016727 0ustar00 CodeMirror: yacas mode

    yacas mode

    MIME types defined: text/x-yacas (yacas).

    application/library/codemirror/mode/yacas/yacas.js000064400000012460147577724760016377 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE // Yacas mode copyright (c) 2015 by Grzegorz Mazur // Loosely based on mathematica mode by Calin Barbat (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('yacas', function(_config, _parserConfig) { function words(str) { var obj = {}, words = str.split(" "); for (var i = 0; i < words.length; ++i) obj[words[i]] = true; return obj; } var bodiedOps = words("Assert BackQuote D Defun Deriv For ForEach FromFile " + "FromString Function Integrate InverseTaylor Limit " + "LocalSymbols Macro MacroRule MacroRulePattern " + "NIntegrate Rule RulePattern Subst TD TExplicitSum " + "TSum Taylor Taylor1 Taylor2 Taylor3 ToFile " + "ToStdout ToString TraceRule Until While"); // patterns var pFloatForm = "(?:(?:\\.\\d+|\\d+\\.\\d*|\\d+)(?:[eE][+-]?\\d+)?)"; var pIdentifier = "(?:[a-zA-Z\\$'][a-zA-Z0-9\\$']*)"; // regular expressions var reFloatForm = new RegExp(pFloatForm); var reIdentifier = new RegExp(pIdentifier); var rePattern = new RegExp(pIdentifier + "?_" + pIdentifier); var reFunctionLike = new RegExp(pIdentifier + "\\s*\\("); function tokenBase(stream, state) { var ch; // get next character ch = stream.next(); // string if (ch === '"') { state.tokenize = tokenString; return state.tokenize(stream, state); } // comment if (ch === '/') { if (stream.eat('*')) { state.tokenize = tokenComment; return state.tokenize(stream, state); } if (stream.eat("/")) { stream.skipToEnd(); return "comment"; } } // go back one character stream.backUp(1); // update scope info var m = stream.match(/^(\w+)\s*\(/, false); if (m !== null && bodiedOps.hasOwnProperty(m[1])) state.scopes.push('bodied'); var scope = currentScope(state); if (scope === 'bodied' && ch === '[') state.scopes.pop(); if (ch === '[' || ch === '{' || ch === '(') state.scopes.push(ch); scope = currentScope(state); if (scope === '[' && ch === ']' || scope === '{' && ch === '}' || scope === '(' && ch === ')') state.scopes.pop(); if (ch === ';') { while (scope === 'bodied') { state.scopes.pop(); scope = currentScope(state); } } // look for ordered rules if (stream.match(/\d+ *#/, true, false)) { return 'qualifier'; } // look for numbers if (stream.match(reFloatForm, true, false)) { return 'number'; } // look for placeholders if (stream.match(rePattern, true, false)) { return 'variable-3'; } // match all braces separately if (stream.match(/(?:\[|\]|{|}|\(|\))/, true, false)) { return 'bracket'; } // literals looking like function calls if (stream.match(reFunctionLike, true, false)) { stream.backUp(1); return 'variable'; } // all other identifiers if (stream.match(reIdentifier, true, false)) { return 'variable-2'; } // operators; note that operators like @@ or /; are matched separately for each symbol. if (stream.match(/(?:\\|\+|\-|\*|\/|,|;|\.|:|@|~|=|>|<|&|\||_|`|'|\^|\?|!|%)/, true, false)) { return 'operator'; } // everything else is an error return 'error'; } function tokenString(stream, state) { var next, end = false, escaped = false; while ((next = stream.next()) != null) { if (next === '"' && !escaped) { end = true; break; } escaped = !escaped && next === '\\'; } if (end && !escaped) { state.tokenize = tokenBase; } return 'string'; }; function tokenComment(stream, state) { var prev, next; while((next = stream.next()) != null) { if (prev === '*' && next === '/') { state.tokenize = tokenBase; break; } prev = next; } return 'comment'; } function currentScope(state) { var scope = null; if (state.scopes.length > 0) scope = state.scopes[state.scopes.length - 1]; return scope; } return { startState: function() { return { tokenize: tokenBase, scopes: [] }; }, token: function(stream, state) { if (stream.eatSpace()) return null; return state.tokenize(stream, state); }, indent: function(state, textAfter) { if (state.tokenize !== tokenBase && state.tokenize !== null) return CodeMirror.Pass; var delta = 0; if (textAfter === ']' || textAfter === '];' || textAfter === '}' || textAfter === '};' || textAfter === ');') delta = -1; return (state.scopes.length + delta) * _config.indentUnit; }, electricChars: "{}[]();", blockCommentStart: "/*", blockCommentEnd: "*/", lineComment: "//" }; }); CodeMirror.defineMIME('text/x-yacas', { name: 'yacas' }); }); application/library/codemirror/mode/yaml/index.html000064400000004062147577724760016577 0ustar00 CodeMirror: YAML mode

    YAML mode

    MIME types defined: text/x-yaml.

    application/library/codemirror/mode/yaml/yaml.js000064400000007101147577724760016077 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode("yaml", function() { var cons = ['true', 'false', 'on', 'off', 'yes', 'no']; var keywordRegex = new RegExp("\\b(("+cons.join(")|(")+"))$", 'i'); return { token: function(stream, state) { var ch = stream.peek(); var esc = state.escaped; state.escaped = false; /* comments */ if (ch == "#" && (stream.pos == 0 || /\s/.test(stream.string.charAt(stream.pos - 1)))) { stream.skipToEnd(); return "comment"; } if (stream.match(/^('([^']|\\.)*'?|"([^"]|\\.)*"?)/)) return "string"; if (state.literal && stream.indentation() > state.keyCol) { stream.skipToEnd(); return "string"; } else if (state.literal) { state.literal = false; } if (stream.sol()) { state.keyCol = 0; state.pair = false; state.pairStart = false; /* document start */ if(stream.match(/---/)) { return "def"; } /* document end */ if (stream.match(/\.\.\./)) { return "def"; } /* array list item */ if (stream.match(/\s*-\s+/)) { return 'meta'; } } /* inline pairs/lists */ if (stream.match(/^(\{|\}|\[|\])/)) { if (ch == '{') state.inlinePairs++; else if (ch == '}') state.inlinePairs--; else if (ch == '[') state.inlineList++; else state.inlineList--; return 'meta'; } /* list seperator */ if (state.inlineList > 0 && !esc && ch == ',') { stream.next(); return 'meta'; } /* pairs seperator */ if (state.inlinePairs > 0 && !esc && ch == ',') { state.keyCol = 0; state.pair = false; state.pairStart = false; stream.next(); return 'meta'; } /* start of value of a pair */ if (state.pairStart) { /* block literals */ if (stream.match(/^\s*(\||\>)\s*/)) { state.literal = true; return 'meta'; }; /* references */ if (stream.match(/^\s*(\&|\*)[a-z0-9\._-]+\b/i)) { return 'variable-2'; } /* numbers */ if (state.inlinePairs == 0 && stream.match(/^\s*-?[0-9\.\,]+\s?$/)) { return 'number'; } if (state.inlinePairs > 0 && stream.match(/^\s*-?[0-9\.\,]+\s?(?=(,|}))/)) { return 'number'; } /* keywords */ if (stream.match(keywordRegex)) { return 'keyword'; } } /* pairs (associative arrays) -> key */ if (!state.pair && stream.match(/^\s*(?:[,\[\]{}&*!|>'"%@`][^\s'":]|[^,\[\]{}#&*!|>'"%@`])[^#]*?(?=\s*:($|\s))/)) { state.pair = true; state.keyCol = stream.indentation(); return "atom"; } if (state.pair && stream.match(/^:\s*/)) { state.pairStart = true; return 'meta'; } /* nothing found, continue */ state.pairStart = false; state.escaped = (ch == '\\'); stream.next(); return null; }, startState: function() { return { pair: false, pairStart: false, keyCol: 0, inlinePairs: 0, inlineList: 0, literal: false, escaped: false }; } }; }); CodeMirror.defineMIME("text/x-yaml", "yaml"); }); application/library/codemirror/mode/yaml-frontmatter/index.html000064400000006000147577724760021134 0ustar00 CodeMirror: YAML front matter mode

    YAML front matter mode

    Defines a mode that parses a YAML frontmatter at the start of a file, switching to a base mode at the end of that. Takes a mode configuration option base to configure the base mode, which defaults to "gfm".

    application/library/codemirror/mode/yaml-frontmatter/yaml-frontmatter.js000064400000004364147577724760023015 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function (mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror"), require("../yaml/yaml")) else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror", "../yaml/yaml"], mod) else // Plain browser env mod(CodeMirror) })(function (CodeMirror) { var START = 0, FRONTMATTER = 1, BODY = 2 // a mixed mode for Markdown text with an optional YAML front matter CodeMirror.defineMode("yaml-frontmatter", function (config, parserConfig) { var yamlMode = CodeMirror.getMode(config, "yaml") var innerMode = CodeMirror.getMode(config, parserConfig && parserConfig.base || "gfm") function curMode(state) { return state.state == BODY ? innerMode : yamlMode } return { startState: function () { return { state: START, inner: CodeMirror.startState(yamlMode) } }, copyState: function (state) { return { state: state.state, inner: CodeMirror.copyState(curMode(state), state.inner) } }, token: function (stream, state) { if (state.state == START) { if (stream.match(/---/, false)) { state.state = FRONTMATTER return yamlMode.token(stream, state.inner) } else { state.state = BODY state.inner = CodeMirror.startState(innerMode) return innerMode.token(stream, state.inner) } } else if (state.state == FRONTMATTER) { var end = stream.sol() && stream.match(/---/, false) var style = yamlMode.token(stream, state.inner) if (end) { state.state = BODY state.inner = CodeMirror.startState(innerMode) } return style } else { return innerMode.token(stream, state.inner) } }, innerMode: function (state) { return {mode: curMode(state), state: state.inner} }, blankLine: function (state) { var mode = curMode(state) if (mode.blankLine) return mode.blankLine(state.inner) } } }) }); application/library/codemirror/mode/z80/z80.js000064400000006771147577724760015251 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.defineMode('z80', function(_config, parserConfig) { var ez80 = parserConfig.ez80; var keywords1, keywords2; if (ez80) { keywords1 = /^(exx?|(ld|cp)([di]r?)?|[lp]ea|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|[de]i|halt|im|in([di]mr?|ir?|irx|2r?)|ot(dmr?|[id]rx|imr?)|out(0?|[di]r?|[di]2r?)|tst(io)?|slp)(\.([sl]?i)?[sl])?\b/i; keywords2 = /^(((call|j[pr]|rst|ret[in]?)(\.([sl]?i)?[sl])?)|(rs|st)mix)\b/i; } else { keywords1 = /^(exx?|(ld|cp|in)([di]r?)?|pop|push|ad[cd]|cpl|daa|dec|inc|neg|sbc|sub|and|bit|[cs]cf|x?or|res|set|r[lr]c?a?|r[lr]d|s[lr]a|srl|djnz|nop|rst|[de]i|halt|im|ot[di]r|out[di]?)\b/i; keywords2 = /^(call|j[pr]|ret[in]?|b_?(call|jump))\b/i; } var variables1 = /^(af?|bc?|c|de?|e|hl?|l|i[xy]?|r|sp)\b/i; var variables2 = /^(n?[zc]|p[oe]?|m)\b/i; var errors = /^([hl][xy]|i[xy][hl]|slia|sll)\b/i; var numbers = /^([\da-f]+h|[0-7]+o|[01]+b|\d+d?)\b/i; return { startState: function() { return { context: 0 }; }, token: function(stream, state) { if (!stream.column()) state.context = 0; if (stream.eatSpace()) return null; var w; if (stream.eatWhile(/\w/)) { if (ez80 && stream.eat('.')) { stream.eatWhile(/\w/); } w = stream.current(); if (stream.indentation()) { if ((state.context == 1 || state.context == 4) && variables1.test(w)) { state.context = 4; return 'var2'; } if (state.context == 2 && variables2.test(w)) { state.context = 4; return 'var3'; } if (keywords1.test(w)) { state.context = 1; return 'keyword'; } else if (keywords2.test(w)) { state.context = 2; return 'keyword'; } else if (state.context == 4 && numbers.test(w)) { return 'number'; } if (errors.test(w)) return 'error'; } else if (stream.match(numbers)) { return 'number'; } else { return null; } } else if (stream.eat(';')) { stream.skipToEnd(); return 'comment'; } else if (stream.eat('"')) { while (w = stream.next()) { if (w == '"') break; if (w == '\\') stream.next(); } return 'string'; } else if (stream.eat('\'')) { if (stream.match(/\\?.'/)) return 'number'; } else if (stream.eat('.') || stream.sol() && stream.eat('#')) { state.context = 5; if (stream.eatWhile(/\w/)) return 'def'; } else if (stream.eat('$')) { if (stream.eatWhile(/[\da-f]/i)) return 'number'; } else if (stream.eat('%')) { if (stream.eatWhile(/[01]/)) return 'number'; } else { stream.next(); } return null; } }; }); CodeMirror.defineMIME("text/x-z80", "z80"); CodeMirror.defineMIME("text/x-ez80", { name: "z80", ez80: true }); }); application/library/codemirror/mode/z80/index.html000064400000002576147577724760016266 0ustar00 CodeMirror: Z80 assembly mode

    Z80 assembly mode

    MIME types defined: text/x-z80, text/x-ez80.

    application/library/codemirror/mode/index.html000064400000020011147577724760015625 0ustar00 CodeMirror: Language Modes

    Language modes

    This is a list of every mode in the distribution. Each mode lives in a subdirectory of the mode/ directory, and typically defines a single JavaScript file that implements the mode. Loading such file will make the language available to CodeMirror, through the mode option.

    application/library/codemirror/mode/meta.js000064400000034327147577724760015133 0ustar00// CodeMirror, copyright (c) by Marijn Haverbeke and others // Distributed under an MIT license: http://codemirror.net/LICENSE (function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS mod(require("../lib/codemirror")); else if (typeof define == "function" && define.amd) // AMD define(["../lib/codemirror"], mod); else // Plain browser env mod(CodeMirror); })(function(CodeMirror) { "use strict"; CodeMirror.modeInfo = [ {name: "APL", mime: "text/apl", mode: "apl", ext: ["dyalog", "apl"]}, {name: "PGP", mimes: ["application/pgp", "application/pgp-keys", "application/pgp-signature"], mode: "asciiarmor", ext: ["pgp"]}, {name: "ASN.1", mime: "text/x-ttcn-asn", mode: "asn.1", ext: ["asn", "asn1"]}, {name: "Asterisk", mime: "text/x-asterisk", mode: "asterisk", file: /^extensions\.conf$/i}, {name: "Brainfuck", mime: "text/x-brainfuck", mode: "brainfuck", ext: ["b", "bf"]}, {name: "C", mime: "text/x-csrc", mode: "clike", ext: ["c", "h"]}, {name: "C++", mime: "text/x-c++src", mode: "clike", ext: ["cpp", "c++", "cc", "cxx", "hpp", "h++", "hh", "hxx"], alias: ["cpp"]}, {name: "Cobol", mime: "text/x-cobol", mode: "cobol", ext: ["cob", "cpy"]}, {name: "C#", mime: "text/x-csharp", mode: "clike", ext: ["cs"], alias: ["csharp"]}, {name: "Clojure", mime: "text/x-clojure", mode: "clojure", ext: ["clj", "cljc", "cljx"]}, {name: "ClojureScript", mime: "text/x-clojurescript", mode: "clojure", ext: ["cljs"]}, {name: "Closure Stylesheets (GSS)", mime: "text/x-gss", mode: "css", ext: ["gss"]}, {name: "CMake", mime: "text/x-cmake", mode: "cmake", ext: ["cmake", "cmake.in"], file: /^CMakeLists.txt$/}, {name: "CoffeeScript", mime: "text/x-coffeescript", mode: "coffeescript", ext: ["coffee"], alias: ["coffee", "coffee-script"]}, {name: "Common Lisp", mime: "text/x-common-lisp", mode: "commonlisp", ext: ["cl", "lisp", "el"], alias: ["lisp"]}, {name: "Cypher", mime: "application/x-cypher-query", mode: "cypher", ext: ["cyp", "cypher"]}, {name: "Cython", mime: "text/x-cython", mode: "python", ext: ["pyx", "pxd", "pxi"]}, {name: "Crystal", mime: "text/x-crystal", mode: "crystal", ext: ["cr"]}, {name: "CSS", mime: "text/css", mode: "css", ext: ["css"]}, {name: "CQL", mime: "text/x-cassandra", mode: "sql", ext: ["cql"]}, {name: "D", mime: "text/x-d", mode: "d", ext: ["d"]}, {name: "Dart", mimes: ["application/dart", "text/x-dart"], mode: "dart", ext: ["dart"]}, {name: "diff", mime: "text/x-diff", mode: "diff", ext: ["diff", "patch"]}, {name: "Django", mime: "text/x-django", mode: "django"}, {name: "Dockerfile", mime: "text/x-dockerfile", mode: "dockerfile", file: /^Dockerfile$/}, {name: "DTD", mime: "application/xml-dtd", mode: "dtd", ext: ["dtd"]}, {name: "Dylan", mime: "text/x-dylan", mode: "dylan", ext: ["dylan", "dyl", "intr"]}, {name: "EBNF", mime: "text/x-ebnf", mode: "ebnf"}, {name: "ECL", mime: "text/x-ecl", mode: "ecl", ext: ["ecl"]}, {name: "edn", mime: "application/edn", mode: "clojure", ext: ["edn"]}, {name: "Eiffel", mime: "text/x-eiffel", mode: "eiffel", ext: ["e"]}, {name: "Elm", mime: "text/x-elm", mode: "elm", ext: ["elm"]}, {name: "Embedded Javascript", mime: "application/x-ejs", mode: "htmlembedded", ext: ["ejs"]}, {name: "Embedded Ruby", mime: "application/x-erb", mode: "htmlembedded", ext: ["erb"]}, {name: "Erlang", mime: "text/x-erlang", mode: "erlang", ext: ["erl"]}, {name: "Factor", mime: "text/x-factor", mode: "factor", ext: ["factor"]}, {name: "FCL", mime: "text/x-fcl", mode: "fcl"}, {name: "Forth", mime: "text/x-forth", mode: "forth", ext: ["forth", "fth", "4th"]}, {name: "Fortran", mime: "text/x-fortran", mode: "fortran", ext: ["f", "for", "f77", "f90"]}, {name: "F#", mime: "text/x-fsharp", mode: "mllike", ext: ["fs"], alias: ["fsharp"]}, {name: "Gas", mime: "text/x-gas", mode: "gas", ext: ["s"]}, {name: "Gherkin", mime: "text/x-feature", mode: "gherkin", ext: ["feature"]}, {name: "GitHub Flavored Markdown", mime: "text/x-gfm", mode: "gfm", file: /^(readme|contributing|history).md$/i}, {name: "Go", mime: "text/x-go", mode: "go", ext: ["go"]}, {name: "Groovy", mime: "text/x-groovy", mode: "groovy", ext: ["groovy", "gradle"]}, {name: "HAML", mime: "text/x-haml", mode: "haml", ext: ["haml"]}, {name: "Haskell", mime: "text/x-haskell", mode: "haskell", ext: ["hs"]}, {name: "Haskell (Literate)", mime: "text/x-literate-haskell", mode: "haskell-literate", ext: ["lhs"]}, {name: "Haxe", mime: "text/x-haxe", mode: "haxe", ext: ["hx"]}, {name: "HXML", mime: "text/x-hxml", mode: "haxe", ext: ["hxml"]}, {name: "ASP.NET", mime: "application/x-aspx", mode: "htmlembedded", ext: ["aspx"], alias: ["asp", "aspx"]}, {name: "HTML", mime: "text/html", mode: "htmlmixed", ext: ["html", "htm"], alias: ["xhtml"]}, {name: "HTTP", mime: "message/http", mode: "http"}, {name: "IDL", mime: "text/x-idl", mode: "idl", ext: ["pro"]}, {name: "Pug", mime: "text/x-pug", mode: "pug", ext: ["jade", "pug"], alias: ["jade"]}, {name: "Java", mime: "text/x-java", mode: "clike", ext: ["java"]}, {name: "Java Server Pages", mime: "application/x-jsp", mode: "htmlembedded", ext: ["jsp"], alias: ["jsp"]}, {name: "JavaScript", mimes: ["text/javascript", "text/ecmascript", "application/javascript", "application/x-javascript", "application/ecmascript"], mode: "javascript", ext: ["js"], alias: ["ecmascript", "js", "node"]}, {name: "JSON", mimes: ["application/json", "application/x-json"], mode: "javascript", ext: ["json", "map"], alias: ["json5"]}, {name: "JSON-LD", mime: "application/ld+json", mode: "javascript", ext: ["jsonld"], alias: ["jsonld"]}, {name: "JSX", mime: "text/jsx", mode: "jsx", ext: ["jsx"]}, {name: "Jinja2", mime: "null", mode: "jinja2"}, {name: "Julia", mime: "text/x-julia", mode: "julia", ext: ["jl"]}, {name: "Kotlin", mime: "text/x-kotlin", mode: "clike", ext: ["kt"]}, {name: "LESS", mime: "text/x-less", mode: "css", ext: ["less"]}, {name: "LiveScript", mime: "text/x-livescript", mode: "livescript", ext: ["ls"], alias: ["ls"]}, {name: "Lua", mime: "text/x-lua", mode: "lua", ext: ["lua"]}, {name: "Markdown", mime: "text/x-markdown", mode: "markdown", ext: ["markdown", "md", "mkd"]}, {name: "mIRC", mime: "text/mirc", mode: "mirc"}, {name: "MariaDB SQL", mime: "text/x-mariadb", mode: "sql"}, {name: "Mathematica", mime: "text/x-mathematica", mode: "mathematica", ext: ["m", "nb"]}, {name: "Modelica", mime: "text/x-modelica", mode: "modelica", ext: ["mo"]}, {name: "MUMPS", mime: "text/x-mumps", mode: "mumps", ext: ["mps"]}, {name: "MS SQL", mime: "text/x-mssql", mode: "sql"}, {name: "mbox", mime: "application/mbox", mode: "mbox", ext: ["mbox"]}, {name: "MySQL", mime: "text/x-mysql", mode: "sql"}, {name: "Nginx", mime: "text/x-nginx-conf", mode: "nginx", file: /nginx.*\.conf$/i}, {name: "NSIS", mime: "text/x-nsis", mode: "nsis", ext: ["nsh", "nsi"]}, {name: "NTriples", mime: "text/n-triples", mode: "ntriples", ext: ["nt"]}, {name: "Objective C", mime: "text/x-objectivec", mode: "clike", ext: ["m", "mm"], alias: ["objective-c", "objc"]}, {name: "OCaml", mime: "text/x-ocaml", mode: "mllike", ext: ["ml", "mli", "mll", "mly"]}, {name: "Octave", mime: "text/x-octave", mode: "octave", ext: ["m"]}, {name: "Oz", mime: "text/x-oz", mode: "oz", ext: ["oz"]}, {name: "Pascal", mime: "text/x-pascal", mode: "pascal", ext: ["p", "pas"]}, {name: "PEG.js", mime: "null", mode: "pegjs", ext: ["jsonld"]}, {name: "Perl", mime: "text/x-perl", mode: "perl", ext: ["pl", "pm"]}, {name: "PHP", mime: "application/x-httpd-php", mode: "php", ext: ["php", "php3", "php4", "php5", "phtml"]}, {name: "Pig", mime: "text/x-pig", mode: "pig", ext: ["pig"]}, {name: "Plain Text", mime: "text/plain", mode: "null", ext: ["txt", "text", "conf", "def", "list", "log"]}, {name: "PLSQL", mime: "text/x-plsql", mode: "sql", ext: ["pls"]}, {name: "PowerShell", mime: "application/x-powershell", mode: "powershell", ext: ["ps1", "psd1", "psm1"]}, {name: "Properties files", mime: "text/x-properties", mode: "properties", ext: ["properties", "ini", "in"], alias: ["ini", "properties"]}, {name: "ProtoBuf", mime: "text/x-protobuf", mode: "protobuf", ext: ["proto"]}, {name: "Python", mime: "text/x-python", mode: "python", ext: ["BUILD", "bzl", "py", "pyw"], file: /^(BUCK|BUILD)$/}, {name: "Puppet", mime: "text/x-puppet", mode: "puppet", ext: ["pp"]}, {name: "Q", mime: "text/x-q", mode: "q", ext: ["q"]}, {name: "R", mime: "text/x-rsrc", mode: "r", ext: ["r"], alias: ["rscript"]}, {name: "reStructuredText", mime: "text/x-rst", mode: "rst", ext: ["rst"], alias: ["rst"]}, {name: "RPM Changes", mime: "text/x-rpm-changes", mode: "rpm"}, {name: "RPM Spec", mime: "text/x-rpm-spec", mode: "rpm", ext: ["spec"]}, {name: "Ruby", mime: "text/x-ruby", mode: "ruby", ext: ["rb"], alias: ["jruby", "macruby", "rake", "rb", "rbx"]}, {name: "Rust", mime: "text/x-rustsrc", mode: "rust", ext: ["rs"]}, {name: "SAS", mime: "text/x-sas", mode: "sas", ext: ["sas"]}, {name: "Sass", mime: "text/x-sass", mode: "sass", ext: ["sass"]}, {name: "Scala", mime: "text/x-scala", mode: "clike", ext: ["scala"]}, {name: "Scheme", mime: "text/x-scheme", mode: "scheme", ext: ["scm", "ss"]}, {name: "SCSS", mime: "text/x-scss", mode: "css", ext: ["scss"]}, {name: "Shell", mime: "text/x-sh", mode: "shell", ext: ["sh", "ksh", "bash"], alias: ["bash", "sh", "zsh"], file: /^PKGBUILD$/}, {name: "Sieve", mime: "application/sieve", mode: "sieve", ext: ["siv", "sieve"]}, {name: "Slim", mimes: ["text/x-slim", "application/x-slim"], mode: "slim", ext: ["slim"]}, {name: "Smalltalk", mime: "text/x-stsrc", mode: "smalltalk", ext: ["st"]}, {name: "Smarty", mime: "text/x-smarty", mode: "smarty", ext: ["tpl"]}, {name: "Solr", mime: "text/x-solr", mode: "solr"}, {name: "Soy", mime: "text/x-soy", mode: "soy", ext: ["soy"], alias: ["closure template"]}, {name: "SPARQL", mime: "application/sparql-query", mode: "sparql", ext: ["rq", "sparql"], alias: ["sparul"]}, {name: "Spreadsheet", mime: "text/x-spreadsheet", mode: "spreadsheet", alias: ["excel", "formula"]}, {name: "SQL", mime: "text/x-sql", mode: "sql", ext: ["sql"]}, {name: "Squirrel", mime: "text/x-squirrel", mode: "clike", ext: ["nut"]}, {name: "Swift", mime: "text/x-swift", mode: "swift", ext: ["swift"]}, {name: "sTeX", mime: "text/x-stex", mode: "stex"}, {name: "LaTeX", mime: "text/x-latex", mode: "stex", ext: ["text", "ltx"], alias: ["tex"]}, {name: "SystemVerilog", mime: "text/x-systemverilog", mode: "verilog", ext: ["v"]}, {name: "Tcl", mime: "text/x-tcl", mode: "tcl", ext: ["tcl"]}, {name: "Textile", mime: "text/x-textile", mode: "textile", ext: ["textile"]}, {name: "TiddlyWiki ", mime: "text/x-tiddlywiki", mode: "tiddlywiki"}, {name: "Tiki wiki", mime: "text/tiki", mode: "tiki"}, {name: "TOML", mime: "text/x-toml", mode: "toml", ext: ["toml"]}, {name: "Tornado", mime: "text/x-tornado", mode: "tornado"}, {name: "troff", mime: "text/troff", mode: "troff", ext: ["1", "2", "3", "4", "5", "6", "7", "8", "9"]}, {name: "TTCN", mime: "text/x-ttcn", mode: "ttcn", ext: ["ttcn", "ttcn3", "ttcnpp"]}, {name: "TTCN_CFG", mime: "text/x-ttcn-cfg", mode: "ttcn-cfg", ext: ["cfg"]}, {name: "Turtle", mime: "text/turtle", mode: "turtle", ext: ["ttl"]}, {name: "TypeScript", mime: "application/typescript", mode: "javascript", ext: ["ts"], alias: ["ts"]}, {name: "Twig", mime: "text/x-twig", mode: "twig"}, {name: "Web IDL", mime: "text/x-webidl", mode: "webidl", ext: ["webidl"]}, {name: "VB.NET", mime: "text/x-vb", mode: "vb", ext: ["vb"]}, {name: "VBScript", mime: "text/vbscript", mode: "vbscript", ext: ["vbs"]}, {name: "Velocity", mime: "text/velocity", mode: "velocity", ext: ["vtl"]}, {name: "Verilog", mime: "text/x-verilog", mode: "verilog", ext: ["v"]}, {name: "VHDL", mime: "text/x-vhdl", mode: "vhdl", ext: ["vhd", "vhdl"]}, {name: "XML", mimes: ["application/xml", "text/xml"], mode: "xml", ext: ["xml", "xsl", "xsd"], alias: ["rss", "wsdl", "xsd"]}, {name: "XQuery", mime: "application/xquery", mode: "xquery", ext: ["xy", "xquery"]}, {name: "Yacas", mime: "text/x-yacas", mode: "yacas", ext: ["ys"]}, {name: "YAML", mime: "text/x-yaml", mode: "yaml", ext: ["yaml", "yml"], alias: ["yml"]}, {name: "Z80", mime: "text/x-z80", mode: "z80", ext: ["z80"]}, {name: "mscgen", mime: "text/x-mscgen", mode: "mscgen", ext: ["mscgen", "mscin", "msc"]}, {name: "xu", mime: "text/x-xu", mode: "mscgen", ext: ["xu"]}, {name: "msgenny", mime: "text/x-msgenny", mode: "mscgen", ext: ["msgenny"]} ]; // Ensure all modes have a mime property for backwards compatibility for (var i = 0; i < CodeMirror.modeInfo.length; i++) { var info = CodeMirror.modeInfo[i]; if (info.mimes) info.mime = info.mimes[0]; } CodeMirror.findModeByMIME = function(mime) { mime = mime.toLowerCase(); for (var i = 0; i < CodeMirror.modeInfo.length; i++) { var info = CodeMirror.modeInfo[i]; if (info.mime == mime) return info; if (info.mimes) for (var j = 0; j < info.mimes.length; j++) if (info.mimes[j] == mime) return info; } }; CodeMirror.findModeByExtension = function(ext) { for (var i = 0; i < CodeMirror.modeInfo.length; i++) { var info = CodeMirror.modeInfo[i]; if (info.ext) for (var j = 0; j < info.ext.length; j++) if (info.ext[j] == ext) return info; } }; CodeMirror.findModeByFileName = function(filename) { for (var i = 0; i < CodeMirror.modeInfo.length; i++) { var info = CodeMirror.modeInfo[i]; if (info.file && info.file.test(filename)) return info; } var dot = filename.lastIndexOf("."); var ext = dot > -1 && filename.substring(dot + 1, filename.length); if (ext) return CodeMirror.findModeByExtension(ext); }; CodeMirror.findModeByName = function(name) { name = name.toLowerCase(); for (var i = 0; i < CodeMirror.modeInfo.length; i++) { var info = CodeMirror.modeInfo[i]; if (info.name.toLowerCase() == name) return info; if (info.alias) for (var j = 0; j < info.alias.length; j++) if (info.alias[j].toLowerCase() == name) return info; } }; }); application/library/codemirror/theme/isotope.css000064400000002642147577724760016214 0ustar00/* Name: Isotope Author: David Desandro / Jan T. Sott CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-isotope.CodeMirror {background: #000000; color: #e0e0e0;} .cm-s-isotope div.CodeMirror-selected {background: #404040 !important;} .cm-s-isotope .CodeMirror-gutters {background: #000000; border-right: 0px;} .cm-s-isotope .CodeMirror-linenumber {color: #808080;} .cm-s-isotope .CodeMirror-cursor {border-left: 1px solid #c0c0c0 !important;} .cm-s-isotope span.cm-comment {color: #3300ff;} .cm-s-isotope span.cm-atom {color: #cc00ff;} .cm-s-isotope span.cm-number {color: #cc00ff;} .cm-s-isotope span.cm-property, .cm-s-isotope span.cm-attribute {color: #33ff00;} .cm-s-isotope span.cm-keyword {color: #ff0000;} .cm-s-isotope span.cm-string {color: #ff0099;} .cm-s-isotope span.cm-variable {color: #33ff00;} .cm-s-isotope span.cm-variable-2 {color: #0066ff;} .cm-s-isotope span.cm-def {color: #ff9900;} .cm-s-isotope span.cm-error {background: #ff0000; color: #c0c0c0;} .cm-s-isotope span.cm-bracket {color: #e0e0e0;} .cm-s-isotope span.cm-tag {color: #ff0000;} .cm-s-isotope span.cm-link {color: #cc00ff;} .cm-s-isotope .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} .cm-s-isotope .CodeMirror-activeline-background { background: #202020; } application/library/codemirror/theme/ttcn.css000064400000004610147577724760015477 0ustar00.cm-s-ttcn .cm-quote { color: #090; } .cm-s-ttcn .cm-negative { color: #d44; } .cm-s-ttcn .cm-positive { color: #292; } .cm-s-ttcn .cm-header, .cm-strong { font-weight: bold; } .cm-s-ttcn .cm-em { font-style: italic; } .cm-s-ttcn .cm-link { text-decoration: underline; } .cm-s-ttcn .cm-strikethrough { text-decoration: line-through; } .cm-s-ttcn .cm-header { color: #00f; font-weight: bold; } .cm-s-ttcn .cm-atom { color: #219; } .cm-s-ttcn .cm-attribute { color: #00c; } .cm-s-ttcn .cm-bracket { color: #997; } .cm-s-ttcn .cm-comment { color: #333333; } .cm-s-ttcn .cm-def { color: #00f; } .cm-s-ttcn .cm-em { font-style: italic; } .cm-s-ttcn .cm-error { color: #f00; } .cm-s-ttcn .cm-hr { color: #999; } .cm-s-ttcn .cm-invalidchar { color: #f00; } .cm-s-ttcn .cm-keyword { font-weight:bold; } .cm-s-ttcn .cm-link { color: #00c; text-decoration: underline; } .cm-s-ttcn .cm-meta { color: #555; } .cm-s-ttcn .cm-negative { color: #d44; } .cm-s-ttcn .cm-positive { color: #292; } .cm-s-ttcn .cm-qualifier { color: #555; } .cm-s-ttcn .cm-strikethrough { text-decoration: line-through; } .cm-s-ttcn .cm-string { color: #006400; } .cm-s-ttcn .cm-string-2 { color: #f50; } .cm-s-ttcn .cm-strong { font-weight: bold; } .cm-s-ttcn .cm-tag { color: #170; } .cm-s-ttcn .cm-variable { color: #8B2252; } .cm-s-ttcn .cm-variable-2 { color: #05a; } .cm-s-ttcn .cm-variable-3, .cm-s-ttcn .cm-type { color: #085; } .cm-s-ttcn .cm-invalidchar { color: #f00; } /* ASN */ .cm-s-ttcn .cm-accessTypes, .cm-s-ttcn .cm-compareTypes { color: #27408B; } .cm-s-ttcn .cm-cmipVerbs { color: #8B2252; } .cm-s-ttcn .cm-modifier { color:#D2691E; } .cm-s-ttcn .cm-status { color:#8B4545; } .cm-s-ttcn .cm-storage { color:#A020F0; } .cm-s-ttcn .cm-tags { color:#006400; } /* CFG */ .cm-s-ttcn .cm-externalCommands { color: #8B4545; font-weight:bold; } .cm-s-ttcn .cm-fileNCtrlMaskOptions, .cm-s-ttcn .cm-sectionTitle { color: #2E8B57; font-weight:bold; } /* TTCN */ .cm-s-ttcn .cm-booleanConsts, .cm-s-ttcn .cm-otherConsts, .cm-s-ttcn .cm-verdictConsts { color: #006400; } .cm-s-ttcn .cm-configOps, .cm-s-ttcn .cm-functionOps, .cm-s-ttcn .cm-portOps, .cm-s-ttcn .cm-sutOps, .cm-s-ttcn .cm-timerOps, .cm-s-ttcn .cm-verdictOps { color: #0000FF; } .cm-s-ttcn .cm-preprocessor, .cm-s-ttcn .cm-templateMatch, .cm-s-ttcn .cm-ttcn3Macros { color: #27408B; } .cm-s-ttcn .cm-types { color: #A52A2A; font-weight:bold; } .cm-s-ttcn .cm-visibilityModifiers { font-weight:bold; } application/library/codemirror/theme/tomorrow-night-bright.css000064400000003351147577724760021004 0ustar00/* Name: Tomorrow Night - Bright Author: Chris Kempson Port done by Gerard Braad */ .cm-s-tomorrow-night-bright.CodeMirror { background: #000000; color: #eaeaea; } .cm-s-tomorrow-night-bright div.CodeMirror-selected { background: #424242; } .cm-s-tomorrow-night-bright .CodeMirror-gutters { background: #000000; border-right: 0px; } .cm-s-tomorrow-night-bright .CodeMirror-guttermarker { color: #e78c45; } .cm-s-tomorrow-night-bright .CodeMirror-guttermarker-subtle { color: #777; } .cm-s-tomorrow-night-bright .CodeMirror-linenumber { color: #424242; } .cm-s-tomorrow-night-bright .CodeMirror-cursor { border-left: 1px solid #6A6A6A; } .cm-s-tomorrow-night-bright span.cm-comment { color: #d27b53; } .cm-s-tomorrow-night-bright span.cm-atom { color: #a16a94; } .cm-s-tomorrow-night-bright span.cm-number { color: #a16a94; } .cm-s-tomorrow-night-bright span.cm-property, .cm-s-tomorrow-night-bright span.cm-attribute { color: #99cc99; } .cm-s-tomorrow-night-bright span.cm-keyword { color: #d54e53; } .cm-s-tomorrow-night-bright span.cm-string { color: #e7c547; } .cm-s-tomorrow-night-bright span.cm-variable { color: #b9ca4a; } .cm-s-tomorrow-night-bright span.cm-variable-2 { color: #7aa6da; } .cm-s-tomorrow-night-bright span.cm-def { color: #e78c45; } .cm-s-tomorrow-night-bright span.cm-bracket { color: #eaeaea; } .cm-s-tomorrow-night-bright span.cm-tag { color: #d54e53; } .cm-s-tomorrow-night-bright span.cm-link { color: #a16a94; } .cm-s-tomorrow-night-bright span.cm-error { background: #d54e53; color: #6A6A6A; } .cm-s-tomorrow-night-bright .CodeMirror-activeline-background { background: #2a2a2a; } .cm-s-tomorrow-night-bright .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/lesser-dark.css000064400000005115147577724760016744 0ustar00/* http://lesscss.org/ dark theme Ported to CodeMirror by Peter Kroon */ .cm-s-lesser-dark { line-height: 1.3em; } .cm-s-lesser-dark.CodeMirror { background: #262626; color: #EBEFE7; text-shadow: 0 -1px 1px #262626; } .cm-s-lesser-dark div.CodeMirror-selected { background: #45443B; } /* 33322B*/ .cm-s-lesser-dark .CodeMirror-line::selection, .cm-s-lesser-dark .CodeMirror-line > span::selection, .cm-s-lesser-dark .CodeMirror-line > span > span::selection { background: rgba(69, 68, 59, .99); } .cm-s-lesser-dark .CodeMirror-line::-moz-selection, .cm-s-lesser-dark .CodeMirror-line > span::-moz-selection, .cm-s-lesser-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(69, 68, 59, .99); } .cm-s-lesser-dark .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-lesser-dark pre { padding: 0 8px; }/*editable code holder*/ .cm-s-lesser-dark.CodeMirror span.CodeMirror-matchingbracket { color: #7EFC7E; }/*65FC65*/ .cm-s-lesser-dark .CodeMirror-gutters { background: #262626; border-right:1px solid #aaa; } .cm-s-lesser-dark .CodeMirror-guttermarker { color: #599eff; } .cm-s-lesser-dark .CodeMirror-guttermarker-subtle { color: #777; } .cm-s-lesser-dark .CodeMirror-linenumber { color: #777; } .cm-s-lesser-dark span.cm-header { color: #a0a; } .cm-s-lesser-dark span.cm-quote { color: #090; } .cm-s-lesser-dark span.cm-keyword { color: #599eff; } .cm-s-lesser-dark span.cm-atom { color: #C2B470; } .cm-s-lesser-dark span.cm-number { color: #B35E4D; } .cm-s-lesser-dark span.cm-def { color: white; } .cm-s-lesser-dark span.cm-variable { color:#D9BF8C; } .cm-s-lesser-dark span.cm-variable-2 { color: #669199; } .cm-s-lesser-dark span.cm-variable-3, .cm-s-lesser-dark span.cm-type { color: white; } .cm-s-lesser-dark span.cm-property { color: #92A75C; } .cm-s-lesser-dark span.cm-operator { color: #92A75C; } .cm-s-lesser-dark span.cm-comment { color: #666; } .cm-s-lesser-dark span.cm-string { color: #BCD279; } .cm-s-lesser-dark span.cm-string-2 { color: #f50; } .cm-s-lesser-dark span.cm-meta { color: #738C73; } .cm-s-lesser-dark span.cm-qualifier { color: #555; } .cm-s-lesser-dark span.cm-builtin { color: #ff9e59; } .cm-s-lesser-dark span.cm-bracket { color: #EBEFE7; } .cm-s-lesser-dark span.cm-tag { color: #669199; } .cm-s-lesser-dark span.cm-attribute { color: #81a4d5; } .cm-s-lesser-dark span.cm-hr { color: #999; } .cm-s-lesser-dark span.cm-link { color: #7070E6; } .cm-s-lesser-dark span.cm-error { color: #9d1e15; } .cm-s-lesser-dark .CodeMirror-activeline-background { background: #3C3A3A; } .cm-s-lesser-dark .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } application/library/codemirror/theme/pastel-on-dark.css000064400000004665147577724760017362 0ustar00/** * Pastel On Dark theme ported from ACE editor * @license MIT * @copyright AtomicPages LLC 2014 * @author Dennis Thompson, AtomicPages LLC * @version 1.1 * @source https://github.com/atomicpages/codemirror-pastel-on-dark-theme */ .cm-s-pastel-on-dark.CodeMirror { background: #2c2827; color: #8F938F; line-height: 1.5; } .cm-s-pastel-on-dark div.CodeMirror-selected { background: rgba(221,240,255,0.2); } .cm-s-pastel-on-dark .CodeMirror-line::selection, .cm-s-pastel-on-dark .CodeMirror-line > span::selection, .cm-s-pastel-on-dark .CodeMirror-line > span > span::selection { background: rgba(221,240,255,0.2); } .cm-s-pastel-on-dark .CodeMirror-line::-moz-selection, .cm-s-pastel-on-dark .CodeMirror-line > span::-moz-selection, .cm-s-pastel-on-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(221,240,255,0.2); } .cm-s-pastel-on-dark .CodeMirror-gutters { background: #34302f; border-right: 0px; padding: 0 3px; } .cm-s-pastel-on-dark .CodeMirror-guttermarker { color: white; } .cm-s-pastel-on-dark .CodeMirror-guttermarker-subtle { color: #8F938F; } .cm-s-pastel-on-dark .CodeMirror-linenumber { color: #8F938F; } .cm-s-pastel-on-dark .CodeMirror-cursor { border-left: 1px solid #A7A7A7; } .cm-s-pastel-on-dark span.cm-comment { color: #A6C6FF; } .cm-s-pastel-on-dark span.cm-atom { color: #DE8E30; } .cm-s-pastel-on-dark span.cm-number { color: #CCCCCC; } .cm-s-pastel-on-dark span.cm-property { color: #8F938F; } .cm-s-pastel-on-dark span.cm-attribute { color: #a6e22e; } .cm-s-pastel-on-dark span.cm-keyword { color: #AEB2F8; } .cm-s-pastel-on-dark span.cm-string { color: #66A968; } .cm-s-pastel-on-dark span.cm-variable { color: #AEB2F8; } .cm-s-pastel-on-dark span.cm-variable-2 { color: #BEBF55; } .cm-s-pastel-on-dark span.cm-variable-3, .cm-s-pastel-on-dark span.cm-type { color: #DE8E30; } .cm-s-pastel-on-dark span.cm-def { color: #757aD8; } .cm-s-pastel-on-dark span.cm-bracket { color: #f8f8f2; } .cm-s-pastel-on-dark span.cm-tag { color: #C1C144; } .cm-s-pastel-on-dark span.cm-link { color: #ae81ff; } .cm-s-pastel-on-dark span.cm-qualifier,.cm-s-pastel-on-dark span.cm-builtin { color: #C1C144; } .cm-s-pastel-on-dark span.cm-error { background: #757aD8; color: #f8f8f0; } .cm-s-pastel-on-dark .CodeMirror-activeline-background { background: rgba(255, 255, 255, 0.031); } .cm-s-pastel-on-dark .CodeMirror-matchingbracket { border: 1px solid rgba(255,255,255,0.25); color: #8F938F !important; margin: -1px -1px 0 -1px; } application/library/codemirror/theme/colorforth.css000064400000003215147577724760016710 0ustar00.cm-s-colorforth.CodeMirror { background: #000000; color: #f8f8f8; } .cm-s-colorforth .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } .cm-s-colorforth .CodeMirror-guttermarker { color: #FFBD40; } .cm-s-colorforth .CodeMirror-guttermarker-subtle { color: #78846f; } .cm-s-colorforth .CodeMirror-linenumber { color: #bababa; } .cm-s-colorforth .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-colorforth span.cm-comment { color: #ededed; } .cm-s-colorforth span.cm-def { color: #ff1c1c; font-weight:bold; } .cm-s-colorforth span.cm-keyword { color: #ffd900; } .cm-s-colorforth span.cm-builtin { color: #00d95a; } .cm-s-colorforth span.cm-variable { color: #73ff00; } .cm-s-colorforth span.cm-string { color: #007bff; } .cm-s-colorforth span.cm-number { color: #00c4ff; } .cm-s-colorforth span.cm-atom { color: #606060; } .cm-s-colorforth span.cm-variable-2 { color: #EEE; } .cm-s-colorforth span.cm-variable-3, .cm-s-colorforth span.cm-type { color: #DDD; } .cm-s-colorforth span.cm-property {} .cm-s-colorforth span.cm-operator {} .cm-s-colorforth span.cm-meta { color: yellow; } .cm-s-colorforth span.cm-qualifier { color: #FFF700; } .cm-s-colorforth span.cm-bracket { color: #cc7; } .cm-s-colorforth span.cm-tag { color: #FFBD40; } .cm-s-colorforth span.cm-attribute { color: #FFF700; } .cm-s-colorforth span.cm-error { color: #f00; } .cm-s-colorforth div.CodeMirror-selected { background: #333d53; } .cm-s-colorforth span.cm-compilation { background: rgba(255, 255, 255, 0.12); } .cm-s-colorforth .CodeMirror-activeline-background { background: #253540; } application/library/codemirror/theme/abbott.css000064400000017026147577724760016007 0ustar00/* * abbott.css * A warm, dark theme for prose and code, with pastels and pretty greens. * * Ported from abbott.vim (https://github.com/bcat/abbott.vim) version 2.1. * Original design and CodeMirror port by Jonathan Rascher. * * This theme shares the following color palette with the Vim color scheme. * * Brown shades: * bistre: #231c14 * chocolate: #3c3022 * cocoa: #745d42 * vanilla_cream: #fef3b4 * * Red shades: * crimson: #d80450 * cinnabar: #f63f05 * * Green shades: * dark_olive: #273900 * forest_green: #24a507 * chartreuse: #a0ea00 * pastel_chartreuse: #d8ff84 * * Yellow shades: * marigold: #fbb32f * lemon_meringue: #fbec5d * * Blue shades: * cornflower_blue: #3f91f1 * periwinkle_blue: #8ccdf0 * * Magenta shades: * french_pink: #ec6c99 * lavender: #e6a2f3 * * Cyan shades: * zomp: #39a78d * seafoam_green: #00ff7f */ /* Style the UI: */ /* Equivalent to Vim's Normal group. */ .cm-s-abbott.CodeMirror { background: #231c14 /* bistre */; color: #d8ff84 /* pastel_chartreuse */; } /* Roughly equivalent to Vim's LineNr group. */ .cm-s-abbott .CodeMirror-gutters { background: #231c14 /* bistre */; border: none; } .cm-s-abbott .CodeMirror-linenumber { color: #fbec5d /* lemon_meringue */; } .cm-s-abbott .CodeMirror-guttermarker { color: #f63f05 /* cinnabar */; } /* Roughly equivalent to Vim's FoldColumn group. */ .cm-s-abbott .CodeMirror-guttermarker-subtle { color: #fbb32f /* marigold */; } /* * Roughly equivalent to Vim's CursorColumn group. (We use a brighter color * since Vim's cursorcolumn option highlights a whole column, whereas * CodeMirror's rule just highlights a thin line.) */ .cm-s-abbott .CodeMirror-ruler { border-color: #745d42 /* cocoa */; } /* Equivalent to Vim's Cursor group in insert mode. */ .cm-s-abbott .CodeMirror-cursor { border-color: #a0ea00 /* chartreuse */; } /* Equivalent to Vim's Cursor group in normal mode. */ .cm-s-abbott.cm-fat-cursor .CodeMirror-cursor, .cm-s-abbott .cm-animate-fat-cursor { /* * CodeMirror doesn't allow changing the foreground color of the character * under the cursor, so we can't use a reverse video effect for the cursor. * Instead, make it semitransparent. */ background: rgba(160, 234, 0, 0.5) /* chartreuse */; } .cm-s-abbott.cm-fat-cursor .CodeMirror-cursors { /* * Boost the z-index so the fat cursor shows up on top of text and * matchingbracket/matchingtag highlights. */ z-index: 3; } /* Equivalent to Vim's Cursor group in replace mode. */ .cm-s-abbott .CodeMirror-overwrite .CodeMirror-cursor { border-bottom: 1px solid #a0ea00 /* chartreuse */; border-left: none; width: auto; } /* Roughly equivalent to Vim's CursorIM group. */ .cm-s-abbott .CodeMirror-secondarycursor { border-color: #00ff7f /* seafoam_green */; } /* Roughly equivalent to Vim's Visual group. */ .cm-s-abbott .CodeMirror-selected, .cm-s-abbott.CodeMirror-focused .CodeMirror-selected { background: #273900 /* dark_olive */; } .cm-s-abbott .CodeMirror-line::selection, .cm-s-abbott .CodeMirror-line > span::selection, .cm-s-abbott .CodeMirror-line > span > span::selection { background: #273900 /* dark_olive */; } .cm-s-abbott .CodeMirror-line::-moz-selection, .cm-s-abbott .CodeMirror-line > span::-moz-selection, .cm-s-abbott .CodeMirror-line > span > span::-moz-selection { background: #273900 /* dark_olive */; } /* Roughly equivalent to Vim's SpecialKey group. */ .cm-s-abbott .cm-tab { color: #00ff7f /* seafoam_green */; } /* Equivalent to Vim's Search group. */ .cm-s-abbott .cm-searching { background: #fef3b4 /* vanilla_cream */ !important; color: #231c14 /* bistre */ !important; } /* Style syntax highlighting modes: */ /* Equivalent to Vim's Comment group. */ .cm-s-abbott span.cm-comment { color: #fbb32f /* marigold */; font-style: italic; } /* Equivalent to Vim's String group. */ .cm-s-abbott span.cm-string, .cm-s-abbott span.cm-string-2 { color: #e6a2f3 /* lavender */; } /* Equivalent to Vim's Constant group. */ .cm-s-abbott span.cm-number, .cm-s-abbott span.cm-string.cm-url { color: #f63f05 /* cinnabar */; } /* Roughly equivalent to Vim's SpecialKey group. */ .cm-s-abbott span.cm-invalidchar { color: #00ff7f /* seafoam_green */; } /* Equivalent to Vim's Special group. */ .cm-s-abbott span.cm-atom { color: #fef3b4 /* vanilla_cream */; } /* Equivalent to Vim's Delimiter group. */ .cm-s-abbott span.cm-bracket, .cm-s-abbott span.cm-punctuation { color: #fef3b4 /* vanilla_cream */; } /* Equivalent Vim's Operator group. */ .cm-s-abbott span.cm-operator { font-weight: bold; } /* Roughly equivalent to Vim's Identifier group. */ .cm-s-abbott span.cm-def, .cm-s-abbott span.cm-variable, .cm-s-abbott span.cm-variable-2, .cm-s-abbott span.cm-variable-3 { color: #8ccdf0 /* periwinkle_blue */; } /* Roughly equivalent to Vim's Function group. */ .cm-s-abbott span.cm-builtin, .cm-s-abbott span.cm-property, .cm-s-abbott span.cm-qualifier { color: #3f91f1 /* cornflower_blue */; } /* Equivalent to Vim's Type group. */ .cm-s-abbott span.cm-type { color: #24a507 /* forest_green */; } /* Equivalent to Vim's Keyword group. */ .cm-s-abbott span.cm-keyword { color: #d80450 /* crimson */; font-weight: bold; } /* Equivalent to Vim's PreProc group. */ .cm-s-abbott span.cm-meta { color: #ec6c99 /* french_pink */; } /* Equivalent to Vim's htmlTagName group (linked to Statement). */ .cm-s-abbott span.cm-tag { color: #d80450 /* crimson */; font-weight: bold; } /* Equivalent to Vim's htmlArg group (linked to Type). */ .cm-s-abbott span.cm-attribute { color: #24a507 /* forest_green */; } /* Equivalent to Vim's htmlH1, markdownH1, etc. groups (linked to Title). */ .cm-s-abbott span.cm-header { color: #d80450 /* crimson */; font-weight: bold; } /* Equivalent to Vim's markdownRule group (linked to PreProc). */ .cm-s-abbott span.cm-hr { color: #ec6c99 /* french_pink */; } /* Roughly equivalent to Vim's Underlined group. */ .cm-s-abbott span.cm-link { color: #e6a2f3 /* lavender */; } /* Equivalent to Vim's diffRemoved group. */ .cm-s-abbott span.cm-negative { background: #d80450 /* crimson */; color: #231c14 /* bistre */; } /* Equivalent to Vim's diffAdded group. */ .cm-s-abbott span.cm-positive { background: #a0ea00 /* chartreuse */; color: #231c14 /* bistre */; font-weight: bold; } /* Equivalent to Vim's Error group. */ .cm-s-abbott span.cm-error { background: #d80450 /* crimson */; color: #231c14 /* bistre */; } /* Style addons: */ /* Equivalent to Vim's MatchParen group. */ .cm-s-abbott span.CodeMirror-matchingbracket { background: #745d42 /* cocoa */ !important; color: #231c14 /* bistre */ !important; font-weight: bold; } /* * Roughly equivalent to Vim's Error group. (Vim doesn't seem to have a direct * equivalent in its own matchparen plugin, but many syntax highlighting plugins * mark mismatched brackets as Error.) */ .cm-s-abbott span.CodeMirror-nonmatchingbracket { background: #d80450 /* crimson */ !important; color: #231c14 /* bistre */ !important; } .cm-s-abbott .CodeMirror-matchingtag, .cm-s-abbott .cm-matchhighlight { outline: 1px solid #39a78d /* zomp */; } /* Equivalent to Vim's CursorLine group. */ .cm-s-abbott .CodeMirror-activeline-background, .cm-s-abbott .CodeMirror-activeline-gutter { background: #3c3022 /* chocolate */; } /* Equivalent to Vim's CursorLineNr group. */ .cm-s-abbott .CodeMirror-activeline-gutter .CodeMirror-linenumber { color: #d8ff84 /* pastel_chartreuse */; font-weight: bold; } /* Roughly equivalent to Vim's Folded group. */ .cm-s-abbott .CodeMirror-foldmarker { color: #f63f05 /* cinnabar */; text-shadow: none; } application/library/codemirror/theme/zenburn.css000064400000003721147577724760016214 0ustar00/** * " * Using Zenburn color palette from the Emacs Zenburn Theme * https://github.com/bbatsov/zenburn-emacs/blob/master/zenburn-theme.el * * Also using parts of https://github.com/xavi/coderay-lighttable-theme * " * From: https://github.com/wisenomad/zenburn-lighttable-theme/blob/master/zenburn.css */ .cm-s-zenburn .CodeMirror-gutters { background: #3f3f3f !important; } .cm-s-zenburn .CodeMirror-foldgutter-open, .CodeMirror-foldgutter-folded { color: #999; } .cm-s-zenburn .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-zenburn.CodeMirror { background-color: #3f3f3f; color: #dcdccc; } .cm-s-zenburn span.cm-builtin { color: #dcdccc; font-weight: bold; } .cm-s-zenburn span.cm-comment { color: #7f9f7f; } .cm-s-zenburn span.cm-keyword { color: #f0dfaf; font-weight: bold; } .cm-s-zenburn span.cm-atom { color: #bfebbf; } .cm-s-zenburn span.cm-def { color: #dcdccc; } .cm-s-zenburn span.cm-variable { color: #dfaf8f; } .cm-s-zenburn span.cm-variable-2 { color: #dcdccc; } .cm-s-zenburn span.cm-string { color: #cc9393; } .cm-s-zenburn span.cm-string-2 { color: #cc9393; } .cm-s-zenburn span.cm-number { color: #dcdccc; } .cm-s-zenburn span.cm-tag { color: #93e0e3; } .cm-s-zenburn span.cm-property { color: #dfaf8f; } .cm-s-zenburn span.cm-attribute { color: #dfaf8f; } .cm-s-zenburn span.cm-qualifier { color: #7cb8bb; } .cm-s-zenburn span.cm-meta { color: #f0dfaf; } .cm-s-zenburn span.cm-header { color: #f0efd0; } .cm-s-zenburn span.cm-operator { color: #f0efd0; } .cm-s-zenburn span.CodeMirror-matchingbracket { box-sizing: border-box; background: transparent; border-bottom: 1px solid; } .cm-s-zenburn span.CodeMirror-nonmatchingbracket { border-bottom: 1px solid; background: none; } .cm-s-zenburn .CodeMirror-activeline { background: #000000; } .cm-s-zenburn .CodeMirror-activeline-background { background: #000000; } .cm-s-zenburn div.CodeMirror-selected { background: #545454; } .cm-s-zenburn .CodeMirror-focused div.CodeMirror-selected { background: #4f4f4f; } application/library/codemirror/theme/panda-syntax.css000064400000003414147577724760017137 0ustar00/* Name: Panda Syntax Author: Siamak Mokhtari (http://github.com/siamak/) CodeMirror template by Siamak Mokhtari (https://github.com/siamak/atom-panda-syntax) */ .cm-s-panda-syntax { background: #292A2B; color: #E6E6E6; line-height: 1.5; font-family: 'Operator Mono', 'Source Code Pro', Menlo, Monaco, Consolas, Courier New, monospace; } .cm-s-panda-syntax .CodeMirror-cursor { border-color: #ff2c6d; } .cm-s-panda-syntax .CodeMirror-activeline-background { background: rgba(99, 123, 156, 0.1); } .cm-s-panda-syntax .CodeMirror-selected { background: #FFF; } .cm-s-panda-syntax .cm-comment { font-style: italic; color: #676B79; } .cm-s-panda-syntax .cm-operator { color: #f3f3f3; } .cm-s-panda-syntax .cm-string { color: #19F9D8; } .cm-s-panda-syntax .cm-string-2 { color: #FFB86C; } .cm-s-panda-syntax .cm-tag { color: #ff2c6d; } .cm-s-panda-syntax .cm-meta { color: #b084eb; } .cm-s-panda-syntax .cm-number { color: #FFB86C; } .cm-s-panda-syntax .cm-atom { color: #ff2c6d; } .cm-s-panda-syntax .cm-keyword { color: #FF75B5; } .cm-s-panda-syntax .cm-variable { color: #ffb86c; } .cm-s-panda-syntax .cm-variable-2 { color: #ff9ac1; } .cm-s-panda-syntax .cm-variable-3, .cm-s-panda-syntax .cm-type { color: #ff9ac1; } .cm-s-panda-syntax .cm-def { color: #e6e6e6; } .cm-s-panda-syntax .cm-property { color: #f3f3f3; } .cm-s-panda-syntax .cm-unit { color: #ffb86c; } .cm-s-panda-syntax .cm-attribute { color: #ffb86c; } .cm-s-panda-syntax .CodeMirror-matchingbracket { border-bottom: 1px dotted #19F9D8; padding-bottom: 2px; color: #e6e6e6; } .cm-s-panda-syntax .CodeMirror-gutters { background: #292a2b; border-right-color: rgba(255, 255, 255, 0.1); } .cm-s-panda-syntax .CodeMirror-linenumber { color: #e6e6e6; opacity: 0.6; } application/library/codemirror/theme/ayu-mirage.css000064400000004752147577724760016576 0ustar00/* Based on https://github.com/dempfi/ayu */ .cm-s-ayu-mirage.CodeMirror { background: #1f2430; color: #cbccc6; } .cm-s-ayu-mirage div.CodeMirror-selected { background: #34455a; } .cm-s-ayu-mirage .CodeMirror-line::selection, .cm-s-ayu-mirage .CodeMirror-line > span::selection, .cm-s-ayu-mirage .CodeMirror-line > span > span::selection { background: #34455a; } .cm-s-ayu-mirage .CodeMirror-line::-moz-selection, .cm-s-ayu-mirage .CodeMirror-line > span::-moz-selection, .cm-s-ayu-mirage .CodeMirror-line > span > span::-moz-selection { background: rgba(25, 30, 42, 99); } .cm-s-ayu-mirage .CodeMirror-gutters { background: #1f2430; border-right: 0px; } .cm-s-ayu-mirage .CodeMirror-guttermarker { color: white; } .cm-s-ayu-mirage .CodeMirror-guttermarker-subtle { color: rgba(112, 122, 140, 66); } .cm-s-ayu-mirage .CodeMirror-linenumber { color: rgba(61, 66, 77, 99); } .cm-s-ayu-mirage .CodeMirror-cursor { border-left: 1px solid #ffcc66; } .cm-s-ayu-mirage.cm-fat-cursor .CodeMirror-cursor {background-color: #a2a8a175 !important;} .cm-s-ayu-mirage .cm-animate-fat-cursor { background-color: #a2a8a175 !important; } .cm-s-ayu-mirage span.cm-comment { color: #5c6773; font-style:italic; } .cm-s-ayu-mirage span.cm-atom { color: #ae81ff; } .cm-s-ayu-mirage span.cm-number { color: #ffcc66; } .cm-s-ayu-mirage span.cm-comment.cm-attribute { color: #ffd580; } .cm-s-ayu-mirage span.cm-comment.cm-def { color: #d4bfff; } .cm-s-ayu-mirage span.cm-comment.cm-tag { color: #5ccfe6; } .cm-s-ayu-mirage span.cm-comment.cm-type { color: #5998a6; } .cm-s-ayu-mirage span.cm-property { color: #f29e74; } .cm-s-ayu-mirage span.cm-attribute { color: #ffd580; } .cm-s-ayu-mirage span.cm-keyword { color: #ffa759; } .cm-s-ayu-mirage span.cm-builtin { color: #ffcc66; } .cm-s-ayu-mirage span.cm-string { color: #bae67e; } .cm-s-ayu-mirage span.cm-variable { color: #cbccc6; } .cm-s-ayu-mirage span.cm-variable-2 { color: #f28779; } .cm-s-ayu-mirage span.cm-variable-3 { color: #5ccfe6; } .cm-s-ayu-mirage span.cm-type { color: #ffa759; } .cm-s-ayu-mirage span.cm-def { color: #ffd580; } .cm-s-ayu-mirage span.cm-bracket { color: rgba(92, 207, 230, 80); } .cm-s-ayu-mirage span.cm-tag { color: #5ccfe6; } .cm-s-ayu-mirage span.cm-header { color: #bae67e; } .cm-s-ayu-mirage span.cm-link { color: #5ccfe6; } .cm-s-ayu-mirage span.cm-error { color: #ff3333; } .cm-s-ayu-mirage .CodeMirror-activeline-background { background: #191e2a; } .cm-s-ayu-mirage .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/cobalt.css000064400000003276147577724760016002 0ustar00.cm-s-cobalt.CodeMirror { background: #002240; color: white; } .cm-s-cobalt div.CodeMirror-selected { background: #b36539; } .cm-s-cobalt .CodeMirror-line::selection, .cm-s-cobalt .CodeMirror-line > span::selection, .cm-s-cobalt .CodeMirror-line > span > span::selection { background: rgba(179, 101, 57, .99); } .cm-s-cobalt .CodeMirror-line::-moz-selection, .cm-s-cobalt .CodeMirror-line > span::-moz-selection, .cm-s-cobalt .CodeMirror-line > span > span::-moz-selection { background: rgba(179, 101, 57, .99); } .cm-s-cobalt .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } .cm-s-cobalt .CodeMirror-guttermarker { color: #ffee80; } .cm-s-cobalt .CodeMirror-guttermarker-subtle { color: #d0d0d0; } .cm-s-cobalt .CodeMirror-linenumber { color: #d0d0d0; } .cm-s-cobalt .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-cobalt span.cm-comment { color: #08f; } .cm-s-cobalt span.cm-atom { color: #845dc4; } .cm-s-cobalt span.cm-number, .cm-s-cobalt span.cm-attribute { color: #ff80e1; } .cm-s-cobalt span.cm-keyword { color: #ffee80; } .cm-s-cobalt span.cm-string { color: #3ad900; } .cm-s-cobalt span.cm-meta { color: #ff9d00; } .cm-s-cobalt span.cm-variable-2, .cm-s-cobalt span.cm-tag { color: #9effff; } .cm-s-cobalt span.cm-variable-3, .cm-s-cobalt span.cm-def, .cm-s-cobalt .cm-type { color: white; } .cm-s-cobalt span.cm-bracket { color: #d8d8d8; } .cm-s-cobalt span.cm-builtin, .cm-s-cobalt span.cm-special { color: #ff9e59; } .cm-s-cobalt span.cm-link { color: #845dc4; } .cm-s-cobalt span.cm-error { color: #9d1e15; } .cm-s-cobalt .CodeMirror-activeline-background { background: #002D57; } .cm-s-cobalt .CodeMirror-matchingbracket { outline:1px solid grey;color:white !important; } application/library/codemirror/theme/elegant.css000064400000001415147577724760016146 0ustar00.cm-s-elegant span.cm-number, .cm-s-elegant span.cm-string, .cm-s-elegant span.cm-atom { color: #762; } .cm-s-elegant span.cm-comment { color: #262; font-style: italic; line-height: 1em; } .cm-s-elegant span.cm-meta { color: #555; font-style: italic; line-height: 1em; } .cm-s-elegant span.cm-variable { color: black; } .cm-s-elegant span.cm-variable-2 { color: #b11; } .cm-s-elegant span.cm-qualifier { color: #555; } .cm-s-elegant span.cm-keyword { color: #730; } .cm-s-elegant span.cm-builtin { color: #30a; } .cm-s-elegant span.cm-link { color: #762; } .cm-s-elegant span.cm-error { background-color: #fdd; } .cm-s-elegant .CodeMirror-activeline-background { background: #e8f2ff; } .cm-s-elegant .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } application/library/codemirror/theme/3024-day.css000064400000003703147577724760015674 0ustar00/* Name: 3024 day Author: Jan T. Sott (http://github.com/idleberg) CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-3024-day.CodeMirror { background: #f7f7f7; color: #3a3432; } .cm-s-3024-day div.CodeMirror-selected { background: #d6d5d4; } .cm-s-3024-day .CodeMirror-line::selection, .cm-s-3024-day .CodeMirror-line > span::selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d6d5d4; } .cm-s-3024-day .CodeMirror-line::-moz-selection, .cm-s-3024-day .CodeMirror-line > span::-moz-selection, .cm-s-3024-day .CodeMirror-line > span > span::selection { background: #d9d9d9; } .cm-s-3024-day .CodeMirror-gutters { background: #f7f7f7; border-right: 0px; } .cm-s-3024-day .CodeMirror-guttermarker { color: #db2d20; } .cm-s-3024-day .CodeMirror-guttermarker-subtle { color: #807d7c; } .cm-s-3024-day .CodeMirror-linenumber { color: #807d7c; } .cm-s-3024-day .CodeMirror-cursor { border-left: 1px solid #5c5855; } .cm-s-3024-day span.cm-comment { color: #cdab53; } .cm-s-3024-day span.cm-atom { color: #a16a94; } .cm-s-3024-day span.cm-number { color: #a16a94; } .cm-s-3024-day span.cm-property, .cm-s-3024-day span.cm-attribute { color: #01a252; } .cm-s-3024-day span.cm-keyword { color: #db2d20; } .cm-s-3024-day span.cm-string { color: #fded02; } .cm-s-3024-day span.cm-variable { color: #01a252; } .cm-s-3024-day span.cm-variable-2 { color: #01a0e4; } .cm-s-3024-day span.cm-def { color: #e8bbd0; } .cm-s-3024-day span.cm-bracket { color: #3a3432; } .cm-s-3024-day span.cm-tag { color: #db2d20; } .cm-s-3024-day span.cm-link { color: #a16a94; } .cm-s-3024-day span.cm-error { background: #db2d20; color: #5c5855; } .cm-s-3024-day .CodeMirror-activeline-background { background: #e8f2ff; } .cm-s-3024-day .CodeMirror-matchingbracket { text-decoration: underline; color: #a16a94 !important; } application/library/codemirror/theme/the-matrix.css000064400000003624147577724760016615 0ustar00.cm-s-the-matrix.CodeMirror { background: #000000; color: #00FF00; } .cm-s-the-matrix div.CodeMirror-selected { background: #2D2D2D; } .cm-s-the-matrix .CodeMirror-line::selection, .cm-s-the-matrix .CodeMirror-line > span::selection, .cm-s-the-matrix .CodeMirror-line > span > span::selection { background: rgba(45, 45, 45, 0.99); } .cm-s-the-matrix .CodeMirror-line::-moz-selection, .cm-s-the-matrix .CodeMirror-line > span::-moz-selection, .cm-s-the-matrix .CodeMirror-line > span > span::-moz-selection { background: rgba(45, 45, 45, 0.99); } .cm-s-the-matrix .CodeMirror-gutters { background: #060; border-right: 2px solid #00FF00; } .cm-s-the-matrix .CodeMirror-guttermarker { color: #0f0; } .cm-s-the-matrix .CodeMirror-guttermarker-subtle { color: white; } .cm-s-the-matrix .CodeMirror-linenumber { color: #FFFFFF; } .cm-s-the-matrix .CodeMirror-cursor { border-left: 1px solid #00FF00; } .cm-s-the-matrix span.cm-keyword { color: #008803; font-weight: bold; } .cm-s-the-matrix span.cm-atom { color: #3FF; } .cm-s-the-matrix span.cm-number { color: #FFB94F; } .cm-s-the-matrix span.cm-def { color: #99C; } .cm-s-the-matrix span.cm-variable { color: #F6C; } .cm-s-the-matrix span.cm-variable-2 { color: #C6F; } .cm-s-the-matrix span.cm-variable-3, .cm-s-the-matrix span.cm-type { color: #96F; } .cm-s-the-matrix span.cm-property { color: #62FFA0; } .cm-s-the-matrix span.cm-operator { color: #999; } .cm-s-the-matrix span.cm-comment { color: #CCCCCC; } .cm-s-the-matrix span.cm-string { color: #39C; } .cm-s-the-matrix span.cm-meta { color: #C9F; } .cm-s-the-matrix span.cm-qualifier { color: #FFF700; } .cm-s-the-matrix span.cm-builtin { color: #30a; } .cm-s-the-matrix span.cm-bracket { color: #cc7; } .cm-s-the-matrix span.cm-tag { color: #FFBD40; } .cm-s-the-matrix span.cm-attribute { color: #FFF700; } .cm-s-the-matrix span.cm-error { color: #FF0000; } .cm-s-the-matrix .CodeMirror-activeline-background { background: #040; } application/library/codemirror/theme/duotone-light.css000064400000005237147577724760017317 0ustar00/* Name: DuoTone-Light Author: by Bram de Haan, adapted from DuoTone themes by Simurai (http://simurai.com/projects/2016/01/01/duotone-themes) CodeMirror template by Jan T. Sott (https://github.com/idleberg), adapted by Bram de Haan (https://github.com/atelierbram/) */ .cm-s-duotone-light.CodeMirror { background: #faf8f5; color: #b29762; } .cm-s-duotone-light div.CodeMirror-selected { background: #e3dcce !important; } .cm-s-duotone-light .CodeMirror-gutters { background: #faf8f5; border-right: 0px; } .cm-s-duotone-light .CodeMirror-linenumber { color: #cdc4b1; } /* begin cursor */ .cm-s-duotone-light .CodeMirror-cursor { border-left: 1px solid #93abdc; /* border-left: 1px solid #93abdc80; */ border-right: .5em solid #93abdc; /* border-right: .5em solid #93abdc80; */ opacity: .5; } .cm-s-duotone-light .CodeMirror-activeline-background { background: #e3dcce; /* background: #e3dcce80; */ opacity: .5; } .cm-s-duotone-light .cm-fat-cursor .CodeMirror-cursor { background: #93abdc; /* #93abdc80; */ opacity: .5; } /* end cursor */ .cm-s-duotone-light span.cm-atom, .cm-s-duotone-light span.cm-number, .cm-s-duotone-light span.cm-keyword, .cm-s-duotone-light span.cm-variable, .cm-s-duotone-light span.cm-attribute, .cm-s-duotone-light span.cm-quote, .cm-s-duotone-light-light span.cm-hr, .cm-s-duotone-light-light span.cm-link { color: #063289; } .cm-s-duotone-light span.cm-property { color: #b29762; } .cm-s-duotone-light span.cm-punctuation, .cm-s-duotone-light span.cm-unit, .cm-s-duotone-light span.cm-negative { color: #063289; } .cm-s-duotone-light span.cm-string, .cm-s-duotone-light span.cm-operator { color: #1659df; } .cm-s-duotone-light span.cm-positive { color: #896724; } .cm-s-duotone-light span.cm-variable-2, .cm-s-duotone-light span.cm-variable-3, .cm-s-duotone-light span.cm-type, .cm-s-duotone-light span.cm-string-2, .cm-s-duotone-light span.cm-url { color: #896724; } .cm-s-duotone-light span.cm-def, .cm-s-duotone-light span.cm-tag, .cm-s-duotone-light span.cm-builtin, .cm-s-duotone-light span.cm-qualifier, .cm-s-duotone-light span.cm-header, .cm-s-duotone-light span.cm-em { color: #2d2006; } .cm-s-duotone-light span.cm-bracket, .cm-s-duotone-light span.cm-comment { color: #6f6e6a; } /* using #f00 red for errors, don't think any of the colorscheme variables will stand out enough, ... maybe by giving it a background-color ... */ /* .cm-s-duotone-light span.cm-error { background: #896724; color: #728fcb; } */ .cm-s-duotone-light span.cm-error, .cm-s-duotone-light span.cm-invalidchar { color: #f00; } .cm-s-duotone-light span.cm-header { font-weight: normal; } .cm-s-duotone-light .CodeMirror-matchingbracket { text-decoration: underline; color: #faf8f5 !important; } application/library/codemirror/theme/icecoder.css000064400000004723147577724760016311 0ustar00/* ICEcoder default theme by Matt Pass, used in code editor available at https://icecoder.net */ .cm-s-icecoder { color: #666; background: #1d1d1b; } .cm-s-icecoder span.cm-keyword { color: #eee; font-weight:bold; } /* off-white 1 */ .cm-s-icecoder span.cm-atom { color: #e1c76e; } /* yellow */ .cm-s-icecoder span.cm-number { color: #6cb5d9; } /* blue */ .cm-s-icecoder span.cm-def { color: #b9ca4a; } /* green */ .cm-s-icecoder span.cm-variable { color: #6cb5d9; } /* blue */ .cm-s-icecoder span.cm-variable-2 { color: #cc1e5c; } /* pink */ .cm-s-icecoder span.cm-variable-3, .cm-s-icecoder span.cm-type { color: #f9602c; } /* orange */ .cm-s-icecoder span.cm-property { color: #eee; } /* off-white 1 */ .cm-s-icecoder span.cm-operator { color: #9179bb; } /* purple */ .cm-s-icecoder span.cm-comment { color: #97a3aa; } /* grey-blue */ .cm-s-icecoder span.cm-string { color: #b9ca4a; } /* green */ .cm-s-icecoder span.cm-string-2 { color: #6cb5d9; } /* blue */ .cm-s-icecoder span.cm-meta { color: #555; } /* grey */ .cm-s-icecoder span.cm-qualifier { color: #555; } /* grey */ .cm-s-icecoder span.cm-builtin { color: #214e7b; } /* bright blue */ .cm-s-icecoder span.cm-bracket { color: #cc7; } /* grey-yellow */ .cm-s-icecoder span.cm-tag { color: #e8e8e8; } /* off-white 2 */ .cm-s-icecoder span.cm-attribute { color: #099; } /* teal */ .cm-s-icecoder span.cm-header { color: #6a0d6a; } /* purple-pink */ .cm-s-icecoder span.cm-quote { color: #186718; } /* dark green */ .cm-s-icecoder span.cm-hr { color: #888; } /* mid-grey */ .cm-s-icecoder span.cm-link { color: #e1c76e; } /* yellow */ .cm-s-icecoder span.cm-error { color: #d00; } /* red */ .cm-s-icecoder .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-icecoder div.CodeMirror-selected { color: #fff; background: #037; } .cm-s-icecoder .CodeMirror-gutters { background: #1d1d1b; min-width: 41px; border-right: 0; } .cm-s-icecoder .CodeMirror-linenumber { color: #555; cursor: default; } .cm-s-icecoder .CodeMirror-matchingbracket { color: #fff !important; background: #555 !important; } .cm-s-icecoder .CodeMirror-activeline-background { background: #000; } application/library/codemirror/theme/abcdef.css000064400000003661147577724760015740 0ustar00.cm-s-abcdef.CodeMirror { background: #0f0f0f; color: #defdef; } .cm-s-abcdef div.CodeMirror-selected { background: #515151; } .cm-s-abcdef .CodeMirror-line::selection, .cm-s-abcdef .CodeMirror-line > span::selection, .cm-s-abcdef .CodeMirror-line > span > span::selection { background: rgba(56, 56, 56, 0.99); } .cm-s-abcdef .CodeMirror-line::-moz-selection, .cm-s-abcdef .CodeMirror-line > span::-moz-selection, .cm-s-abcdef .CodeMirror-line > span > span::-moz-selection { background: rgba(56, 56, 56, 0.99); } .cm-s-abcdef .CodeMirror-gutters { background: #555; border-right: 2px solid #314151; } .cm-s-abcdef .CodeMirror-guttermarker { color: #222; } .cm-s-abcdef .CodeMirror-guttermarker-subtle { color: azure; } .cm-s-abcdef .CodeMirror-linenumber { color: #FFFFFF; } .cm-s-abcdef .CodeMirror-cursor { border-left: 1px solid #00FF00; } .cm-s-abcdef span.cm-keyword { color: darkgoldenrod; font-weight: bold; } .cm-s-abcdef span.cm-atom { color: #77F; } .cm-s-abcdef span.cm-number { color: violet; } .cm-s-abcdef span.cm-def { color: #fffabc; } .cm-s-abcdef span.cm-variable { color: #abcdef; } .cm-s-abcdef span.cm-variable-2 { color: #cacbcc; } .cm-s-abcdef span.cm-variable-3, .cm-s-abcdef span.cm-type { color: #def; } .cm-s-abcdef span.cm-property { color: #fedcba; } .cm-s-abcdef span.cm-operator { color: #ff0; } .cm-s-abcdef span.cm-comment { color: #7a7b7c; font-style: italic;} .cm-s-abcdef span.cm-string { color: #2b4; } .cm-s-abcdef span.cm-meta { color: #C9F; } .cm-s-abcdef span.cm-qualifier { color: #FFF700; } .cm-s-abcdef span.cm-builtin { color: #30aabc; } .cm-s-abcdef span.cm-bracket { color: #8a8a8a; } .cm-s-abcdef span.cm-tag { color: #FFDD44; } .cm-s-abcdef span.cm-attribute { color: #DDFF00; } .cm-s-abcdef span.cm-error { color: #FF0000; } .cm-s-abcdef span.cm-header { color: aquamarine; font-weight: bold; } .cm-s-abcdef span.cm-link { color: blueviolet; } .cm-s-abcdef .CodeMirror-activeline-background { background: #314151; } application/library/codemirror/theme/idea.css000064400000003210147577724760015424 0ustar00/** Name: IDEA default theme From IntelliJ IDEA by JetBrains */ .cm-s-idea span.cm-meta { color: #808000; } .cm-s-idea span.cm-number { color: #0000FF; } .cm-s-idea span.cm-keyword { line-height: 1em; font-weight: bold; color: #000080; } .cm-s-idea span.cm-atom { font-weight: bold; color: #000080; } .cm-s-idea span.cm-def { color: #000000; } .cm-s-idea span.cm-variable { color: black; } .cm-s-idea span.cm-variable-2 { color: black; } .cm-s-idea span.cm-variable-3, .cm-s-idea span.cm-type { color: black; } .cm-s-idea span.cm-property { color: black; } .cm-s-idea span.cm-operator { color: black; } .cm-s-idea span.cm-comment { color: #808080; } .cm-s-idea span.cm-string { color: #008000; } .cm-s-idea span.cm-string-2 { color: #008000; } .cm-s-idea span.cm-qualifier { color: #555; } .cm-s-idea span.cm-error { color: #FF0000; } .cm-s-idea span.cm-attribute { color: #0000FF; } .cm-s-idea span.cm-tag { color: #000080; } .cm-s-idea span.cm-link { color: #0000FF; } .cm-s-idea .CodeMirror-activeline-background { background: #FFFAE3; } .cm-s-idea span.cm-builtin { color: #30a; } .cm-s-idea span.cm-bracket { color: #cc7; } .cm-s-idea { font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif;} .cm-s-idea .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } .CodeMirror-hints.idea { font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: #616569; background-color: #ebf3fd !important; } .CodeMirror-hints.idea .CodeMirror-hint-active { background-color: #a2b8c9 !important; color: #5c6065 !important; }application/library/codemirror/theme/dracula.css000064400000003772147577724760016152 0ustar00/* Name: dracula Author: Michael Kaminsky (http://github.com/mkaminsky11) Original dracula color scheme by Zeno Rocha (https://github.com/zenorocha/dracula-theme) */ .cm-s-dracula.CodeMirror, .cm-s-dracula .CodeMirror-gutters { background-color: #282a36 !important; color: #f8f8f2 !important; border: none; } .cm-s-dracula .CodeMirror-gutters { color: #282a36; } .cm-s-dracula .CodeMirror-cursor { border-left: solid thin #f8f8f0; } .cm-s-dracula .CodeMirror-linenumber { color: #6D8A88; } .cm-s-dracula .CodeMirror-selected { background: rgba(255, 255, 255, 0.10); } .cm-s-dracula .CodeMirror-line::selection, .cm-s-dracula .CodeMirror-line > span::selection, .cm-s-dracula .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); } .cm-s-dracula .CodeMirror-line::-moz-selection, .cm-s-dracula .CodeMirror-line > span::-moz-selection, .cm-s-dracula .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); } .cm-s-dracula span.cm-comment { color: #6272a4; } .cm-s-dracula span.cm-string, .cm-s-dracula span.cm-string-2 { color: #f1fa8c; } .cm-s-dracula span.cm-number { color: #bd93f9; } .cm-s-dracula span.cm-variable { color: #50fa7b; } .cm-s-dracula span.cm-variable-2 { color: white; } .cm-s-dracula span.cm-def { color: #50fa7b; } .cm-s-dracula span.cm-operator { color: #ff79c6; } .cm-s-dracula span.cm-keyword { color: #ff79c6; } .cm-s-dracula span.cm-atom { color: #bd93f9; } .cm-s-dracula span.cm-meta { color: #f8f8f2; } .cm-s-dracula span.cm-tag { color: #ff79c6; } .cm-s-dracula span.cm-attribute { color: #50fa7b; } .cm-s-dracula span.cm-qualifier { color: #50fa7b; } .cm-s-dracula span.cm-property { color: #66d9ef; } .cm-s-dracula span.cm-builtin { color: #50fa7b; } .cm-s-dracula span.cm-variable-3, .cm-s-dracula span.cm-type { color: #ffb86c; } .cm-s-dracula .CodeMirror-activeline-background { background: rgba(255,255,255,0.1); } .cm-s-dracula .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/twilight.css000064400000004164147577724760016366 0ustar00.cm-s-twilight.CodeMirror { background: #141414; color: #f7f7f7; } /**/ .cm-s-twilight div.CodeMirror-selected { background: #323232; } /**/ .cm-s-twilight .CodeMirror-line::selection, .cm-s-twilight .CodeMirror-line > span::selection, .cm-s-twilight .CodeMirror-line > span > span::selection { background: rgba(50, 50, 50, 0.99); } .cm-s-twilight .CodeMirror-line::-moz-selection, .cm-s-twilight .CodeMirror-line > span::-moz-selection, .cm-s-twilight .CodeMirror-line > span > span::-moz-selection { background: rgba(50, 50, 50, 0.99); } .cm-s-twilight .CodeMirror-gutters { background: #222; border-right: 1px solid #aaa; } .cm-s-twilight .CodeMirror-guttermarker { color: white; } .cm-s-twilight .CodeMirror-guttermarker-subtle { color: #aaa; } .cm-s-twilight .CodeMirror-linenumber { color: #aaa; } .cm-s-twilight .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-twilight .cm-keyword { color: #f9ee98; } /**/ .cm-s-twilight .cm-atom { color: #FC0; } .cm-s-twilight .cm-number { color: #ca7841; } /**/ .cm-s-twilight .cm-def { color: #8DA6CE; } .cm-s-twilight span.cm-variable-2, .cm-s-twilight span.cm-tag { color: #607392; } /**/ .cm-s-twilight span.cm-variable-3, .cm-s-twilight span.cm-def, .cm-s-twilight span.cm-type { color: #607392; } /**/ .cm-s-twilight .cm-operator { color: #cda869; } /**/ .cm-s-twilight .cm-comment { color:#777; font-style:italic; font-weight:normal; } /**/ .cm-s-twilight .cm-string { color:#8f9d6a; font-style:italic; } /**/ .cm-s-twilight .cm-string-2 { color:#bd6b18; } /*?*/ .cm-s-twilight .cm-meta { background-color:#141414; color:#f7f7f7; } /*?*/ .cm-s-twilight .cm-builtin { color: #cda869; } /*?*/ .cm-s-twilight .cm-tag { color: #997643; } /**/ .cm-s-twilight .cm-attribute { color: #d6bb6d; } /*?*/ .cm-s-twilight .cm-header { color: #FF6400; } .cm-s-twilight .cm-hr { color: #AEAEAE; } .cm-s-twilight .cm-link { color:#ad9361; font-style:italic; text-decoration:none; } /**/ .cm-s-twilight .cm-error { border-bottom: 1px solid red; } .cm-s-twilight .CodeMirror-activeline-background { background: #27282E; } .cm-s-twilight .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } application/library/codemirror/theme/bespin.css000064400000002605147577724760016011 0ustar00/* Name: Bespin Author: Mozilla / Jan T. Sott CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-bespin.CodeMirror {background: #28211c; color: #9d9b97;} .cm-s-bespin div.CodeMirror-selected {background: #59554f !important;} .cm-s-bespin .CodeMirror-gutters {background: #28211c; border-right: 0px;} .cm-s-bespin .CodeMirror-linenumber {color: #666666;} .cm-s-bespin .CodeMirror-cursor {border-left: 1px solid #797977 !important;} .cm-s-bespin span.cm-comment {color: #937121;} .cm-s-bespin span.cm-atom {color: #9b859d;} .cm-s-bespin span.cm-number {color: #9b859d;} .cm-s-bespin span.cm-property, .cm-s-bespin span.cm-attribute {color: #54be0d;} .cm-s-bespin span.cm-keyword {color: #cf6a4c;} .cm-s-bespin span.cm-string {color: #f9ee98;} .cm-s-bespin span.cm-variable {color: #54be0d;} .cm-s-bespin span.cm-variable-2 {color: #5ea6ea;} .cm-s-bespin span.cm-def {color: #cf7d34;} .cm-s-bespin span.cm-error {background: #cf6a4c; color: #797977;} .cm-s-bespin span.cm-bracket {color: #9d9b97;} .cm-s-bespin span.cm-tag {color: #cf6a4c;} .cm-s-bespin span.cm-link {color: #9b859d;} .cm-s-bespin .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} .cm-s-bespin .CodeMirror-activeline-background { background: #404040; } application/library/codemirror/theme/mdn-like.css000064400000012114147577724760016225 0ustar00/* MDN-LIKE Theme - Mozilla Ported to CodeMirror by Peter Kroon Report bugs/issues here: https://github.com/codemirror/CodeMirror/issues GitHub: @peterkroon The mdn-like theme is inspired on the displayed code examples at: https://developer.mozilla.org/en-US/docs/Web/CSS/animation */ .cm-s-mdn-like.CodeMirror { color: #999; background-color: #fff; } .cm-s-mdn-like div.CodeMirror-selected { background: #cfc; } .cm-s-mdn-like .CodeMirror-line::selection, .cm-s-mdn-like .CodeMirror-line > span::selection, .cm-s-mdn-like .CodeMirror-line > span > span::selection { background: #cfc; } .cm-s-mdn-like .CodeMirror-line::-moz-selection, .cm-s-mdn-like .CodeMirror-line > span::-moz-selection, .cm-s-mdn-like .CodeMirror-line > span > span::-moz-selection { background: #cfc; } .cm-s-mdn-like .CodeMirror-gutters { background: #f8f8f8; border-left: 6px solid rgba(0,83,159,0.65); color: #333; } .cm-s-mdn-like .CodeMirror-linenumber { color: #aaa; padding-left: 8px; } .cm-s-mdn-like .CodeMirror-cursor { border-left: 2px solid #222; } .cm-s-mdn-like .cm-keyword { color: #6262FF; } .cm-s-mdn-like .cm-atom { color: #F90; } .cm-s-mdn-like .cm-number { color: #ca7841; } .cm-s-mdn-like .cm-def { color: #8DA6CE; } .cm-s-mdn-like span.cm-variable-2, .cm-s-mdn-like span.cm-tag { color: #690; } .cm-s-mdn-like span.cm-variable-3, .cm-s-mdn-like span.cm-def, .cm-s-mdn-like span.cm-type { color: #07a; } .cm-s-mdn-like .cm-variable { color: #07a; } .cm-s-mdn-like .cm-property { color: #905; } .cm-s-mdn-like .cm-qualifier { color: #690; } .cm-s-mdn-like .cm-operator { color: #cda869; } .cm-s-mdn-like .cm-comment { color:#777; font-weight:normal; } .cm-s-mdn-like .cm-string { color:#07a; font-style:italic; } .cm-s-mdn-like .cm-string-2 { color:#bd6b18; } /*?*/ .cm-s-mdn-like .cm-meta { color: #000; } /*?*/ .cm-s-mdn-like .cm-builtin { color: #9B7536; } /*?*/ .cm-s-mdn-like .cm-tag { color: #997643; } .cm-s-mdn-like .cm-attribute { color: #d6bb6d; } /*?*/ .cm-s-mdn-like .cm-header { color: #FF6400; } .cm-s-mdn-like .cm-hr { color: #AEAEAE; } .cm-s-mdn-like .cm-link { color:#ad9361; font-style:italic; text-decoration:none; } .cm-s-mdn-like .cm-error { border-bottom: 1px solid red; } div.cm-s-mdn-like .CodeMirror-activeline-background { background: #efefff; } div.cm-s-mdn-like span.CodeMirror-matchingbracket { outline:1px solid grey; color: inherit; } .cm-s-mdn-like.CodeMirror { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFcAAAAyCAYAAAAp8UeFAAAHvklEQVR42s2b63bcNgyEQZCSHCdt2vd/0tWF7I+Q6XgMXiTtuvU5Pl57ZQKkKHzEAOtF5KeIJBGJ8uvL599FRFREZhFx8DeXv8trn68RuGaC8TRfo3SNp9dlDDHedyLyTUTeRWStXKPZrjtpZxaRw5hPqozRs1N8/enzIiQRWcCgy4MUA0f+XWliDhyL8Lfyvx7ei/Ae3iQFHyw7U/59pQVIMEEPEz0G7XiwdRjzSfC3UTtz9vchIntxvry5iMgfIhJoEflOz2CQr3F5h/HfeFe+GTdLaKcu9L8LTeQb/R/7GgbsfKedyNdoHsN31uRPWrfZ5wsj/NzzRQHuToIdU3ahwnsKPxXCjJITuOsi7XLc7SG/v5GdALs7wf8JjTFiB5+QvTEfRyGOfX3Lrx8wxyQi3sNq46O7QahQiCsRFgqddjBouVEHOKDgXAQHD9gJCr5sMKkEdjwsarG/ww3BMHBU7OBjXnzdyY7SfCxf5/z6ATccrwlKuwC/jhznnPF4CgVzhhVf4xp2EixcBActO75iZ8/fM9zAs2OMzKdslgXWJ9XG8PQoOAMA5fGcsvORgv0doBXyHrCwfLJAOwo71QLNkb8n2Pl6EWiR7OCibtkPaz4Kc/0NNAze2gju3zOwekALDaCFPI5vjPFmgGY5AZqyGEvH1x7QfIb8YtxMnA/b+QQ0aQDAwc6JMFg8CbQZ4qoYEEHbRwNojuK3EHwd7VALSgq+MNDKzfT58T8qdpADrgW0GmgcAS1lhzztJmkAzcPNOQbsWEALBDSlMKUG0Eq4CLAQWvEVQ9WU57gZJwZtgPO3r9oBTQ9WO8TjqXINx8R0EYpiZEUWOF3FxkbJkgU9B2f41YBrIj5ZfsQa0M5kTgiAAqM3ShXLgu8XMqcrQBvJ0CL5pnTsfMB13oB8athpAq2XOQmcGmoACCLydx7nToa23ATaSIY2ichfOdPTGxlasXMLaL0MLZAOwAKIM+y8CmicobGdCcbbK9DzN+yYGVoNNI5iUKTMyYOjPse4A8SM1MmcXgU0toOq1yO/v8FOxlASyc7TgeYaAMBJHcY1CcCwGI/TK4AmDbDyKYBBtFUkRwto8gygiQEaByFgJ00BH2M8JWwQS1nafDXQCidWyOI8AcjDCSjCLk8ngObuAm3JAHAdubAmOaK06V8MNEsKPJOhobSprwQa6gD7DclRQdqcwL4zxqgBrQcabUiBLclRDKAlWp+etPkBaNMA0AKlrHwTdEByZAA4GM+SNluSY6wAzcMNewxmgig5Ks0nkrSpBvSaQHMdKTBAnLojOdYyGpQ254602ZILPdTD1hdlggdIm74jbTp8vDwF5ZYUeLWGJpWsh6XNyXgcYwVoJQTEhhTYkxzZjiU5npU2TaB979TQehlaAVq4kaGpiPwwwLkYUuBbQwocyQTv1tA0+1UFWoJF3iv1oq+qoSk8EQdJmwHkziIF7oOZk14EGitibAdjLYYK78H5vZOhtWpoI0ATGHs0Q8OMb4Ey+2bU2UYztCtA0wFAs7TplGLRVQCcqaFdGSPCeTI1QNIC52iWNzof6Uib7xjEp07mNNoUYmVosVItHrHzRlLgBn9LFyRHaQCtVUMbtTNhoXWiTOO9k/V8BdAc1Oq0ArSQs6/5SU0hckNy9NnXqQY0PGYo5dWJ7nINaN6o958FWin27aBaWRka1r5myvLOAm0j30eBJqCxHLReVclxhxOEN2JfDWjxBtAC7MIH1fVaGdoOp4qJYDgKtKPSFNID2gSnGldrCqkFZ+5UeQXQBIRrSwocbdZYQT/2LwRahBPBXoHrB8nxaGROST62DKUbQOMMzZIC9abkuELfQzQALWTnDNAm8KHWFOJgJ5+SHIvTPcmx1xQyZRhNL5Qci689aXMEaN/uNIWkEwDAvFpOZmgsBaaGnbs1NPa1Jm32gBZAIh1pCtG7TSH4aE0y1uVY4uqoFPisGlpP2rSA5qTecWn5agK6BzSpgAyD+wFaqhnYoSZ1Vwr8CmlTQbrcO3ZaX0NAEyMbYaAlyquFoLKK3SPby9CeVUPThrSJmkCAE0CrKUQadi4DrdSlWhmah0YL9z9vClH59YGbHx1J8VZTyAjQepJjmXwAKTDQI3omc3p1U4gDUf6RfcdYfrUp5ClAi2J3Ba6UOXGo+K+bQrjjssitG2SJzshaLwMtXgRagUNpYYoVkMSBLM+9GGiJZMvduG6DRZ4qc04DMPtQQxOjEtACmhO7K1AbNbQDEggZyJwscFpAGwENhoBeUwh3bWolhe8BTYVKxQEWrSUn/uhcM5KhvUu/+eQu0Lzhi+VrK0PrZZNDQKs9cpYUuFYgMVpD4/NxenJTiMCNqdUEUf1qZWjppLT5qSkkUZbCwkbZMSuVnu80hfSkzRbQeqCZSAh6huR4VtoM2gHAlLf72smuWgE+VV7XpE25Ab2WFDgyhnSuKbs4GuGzCjR+tIoUuMFg3kgcWKLTwRqanJQ2W00hAsenfaApRC42hbCvK1SlE0HtE9BGgneJO+ELamitD1YjjOYnNYVcraGhtKkW0EqVVeDx733I2NH581k1NNxNLG0i0IJ8/NjVaOZ0tYZ2Vtr0Xv7tPV3hkWp9EFkgS/J0vosngTaSoaG06WHi+xObQkaAdlbanP8B2+2l0f90LmUAAAAASUVORK5CYII=); } application/library/codemirror/theme/hopscotch.css000064400000002675147577724760016532 0ustar00/* Name: Hopscotch Author: Jan T. Sott CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-hopscotch.CodeMirror {background: #322931; color: #d5d3d5;} .cm-s-hopscotch div.CodeMirror-selected {background: #433b42 !important;} .cm-s-hopscotch .CodeMirror-gutters {background: #322931; border-right: 0px;} .cm-s-hopscotch .CodeMirror-linenumber {color: #797379;} .cm-s-hopscotch .CodeMirror-cursor {border-left: 1px solid #989498 !important;} .cm-s-hopscotch span.cm-comment {color: #b33508;} .cm-s-hopscotch span.cm-atom {color: #c85e7c;} .cm-s-hopscotch span.cm-number {color: #c85e7c;} .cm-s-hopscotch span.cm-property, .cm-s-hopscotch span.cm-attribute {color: #8fc13e;} .cm-s-hopscotch span.cm-keyword {color: #dd464c;} .cm-s-hopscotch span.cm-string {color: #fdcc59;} .cm-s-hopscotch span.cm-variable {color: #8fc13e;} .cm-s-hopscotch span.cm-variable-2 {color: #1290bf;} .cm-s-hopscotch span.cm-def {color: #fd8b19;} .cm-s-hopscotch span.cm-error {background: #dd464c; color: #989498;} .cm-s-hopscotch span.cm-bracket {color: #d5d3d5;} .cm-s-hopscotch span.cm-tag {color: #dd464c;} .cm-s-hopscotch span.cm-link {color: #c85e7c;} .cm-s-hopscotch .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} .cm-s-hopscotch .CodeMirror-activeline-background { background: #302020; } application/library/codemirror/theme/3024-night.css000064400000004034147577724760016226 0ustar00/* Name: 3024 night Author: Jan T. Sott (http://github.com/idleberg) CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-3024-night.CodeMirror { background: #090300; color: #d6d5d4; } .cm-s-3024-night div.CodeMirror-selected { background: #3a3432; } .cm-s-3024-night .CodeMirror-line::selection, .cm-s-3024-night .CodeMirror-line > span::selection, .cm-s-3024-night .CodeMirror-line > span > span::selection { background: rgba(58, 52, 50, .99); } .cm-s-3024-night .CodeMirror-line::-moz-selection, .cm-s-3024-night .CodeMirror-line > span::-moz-selection, .cm-s-3024-night .CodeMirror-line > span > span::-moz-selection { background: rgba(58, 52, 50, .99); } .cm-s-3024-night .CodeMirror-gutters { background: #090300; border-right: 0px; } .cm-s-3024-night .CodeMirror-guttermarker { color: #db2d20; } .cm-s-3024-night .CodeMirror-guttermarker-subtle { color: #5c5855; } .cm-s-3024-night .CodeMirror-linenumber { color: #5c5855; } .cm-s-3024-night .CodeMirror-cursor { border-left: 1px solid #807d7c; } .cm-s-3024-night span.cm-comment { color: #cdab53; } .cm-s-3024-night span.cm-atom { color: #a16a94; } .cm-s-3024-night span.cm-number { color: #a16a94; } .cm-s-3024-night span.cm-property, .cm-s-3024-night span.cm-attribute { color: #01a252; } .cm-s-3024-night span.cm-keyword { color: #db2d20; } .cm-s-3024-night span.cm-string { color: #fded02; } .cm-s-3024-night span.cm-variable { color: #01a252; } .cm-s-3024-night span.cm-variable-2 { color: #01a0e4; } .cm-s-3024-night span.cm-def { color: #e8bbd0; } .cm-s-3024-night span.cm-bracket { color: #d6d5d4; } .cm-s-3024-night span.cm-tag { color: #db2d20; } .cm-s-3024-night span.cm-link { color: #a16a94; } .cm-s-3024-night span.cm-error { background: #db2d20; color: #807d7c; } .cm-s-3024-night .CodeMirror-activeline-background { background: #2F2F2F; } .cm-s-3024-night .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/tomorrow-night-eighties.css000064400000004607147577724760021333 0ustar00/* Name: Tomorrow Night - Eighties Author: Chris Kempson CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-tomorrow-night-eighties.CodeMirror { background: #000000; color: #CCCCCC; } .cm-s-tomorrow-night-eighties div.CodeMirror-selected { background: #2D2D2D; } .cm-s-tomorrow-night-eighties .CodeMirror-line::selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span::selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span > span::selection { background: rgba(45, 45, 45, 0.99); } .cm-s-tomorrow-night-eighties .CodeMirror-line::-moz-selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span::-moz-selection, .cm-s-tomorrow-night-eighties .CodeMirror-line > span > span::-moz-selection { background: rgba(45, 45, 45, 0.99); } .cm-s-tomorrow-night-eighties .CodeMirror-gutters { background: #000000; border-right: 0px; } .cm-s-tomorrow-night-eighties .CodeMirror-guttermarker { color: #f2777a; } .cm-s-tomorrow-night-eighties .CodeMirror-guttermarker-subtle { color: #777; } .cm-s-tomorrow-night-eighties .CodeMirror-linenumber { color: #515151; } .cm-s-tomorrow-night-eighties .CodeMirror-cursor { border-left: 1px solid #6A6A6A; } .cm-s-tomorrow-night-eighties span.cm-comment { color: #d27b53; } .cm-s-tomorrow-night-eighties span.cm-atom { color: #a16a94; } .cm-s-tomorrow-night-eighties span.cm-number { color: #a16a94; } .cm-s-tomorrow-night-eighties span.cm-property, .cm-s-tomorrow-night-eighties span.cm-attribute { color: #99cc99; } .cm-s-tomorrow-night-eighties span.cm-keyword { color: #f2777a; } .cm-s-tomorrow-night-eighties span.cm-string { color: #ffcc66; } .cm-s-tomorrow-night-eighties span.cm-variable { color: #99cc99; } .cm-s-tomorrow-night-eighties span.cm-variable-2 { color: #6699cc; } .cm-s-tomorrow-night-eighties span.cm-def { color: #f99157; } .cm-s-tomorrow-night-eighties span.cm-bracket { color: #CCCCCC; } .cm-s-tomorrow-night-eighties span.cm-tag { color: #f2777a; } .cm-s-tomorrow-night-eighties span.cm-link { color: #a16a94; } .cm-s-tomorrow-night-eighties span.cm-error { background: #f2777a; color: #6A6A6A; } .cm-s-tomorrow-night-eighties .CodeMirror-activeline-background { background: #343600; } .cm-s-tomorrow-night-eighties .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/duotone-dark.css000064400000005066147577724760017131 0ustar00/* Name: DuoTone-Dark Author: by Bram de Haan, adapted from DuoTone themes by Simurai (http://simurai.com/projects/2016/01/01/duotone-themes) CodeMirror template by Jan T. Sott (https://github.com/idleberg), adapted by Bram de Haan (https://github.com/atelierbram/) */ .cm-s-duotone-dark.CodeMirror { background: #2a2734; color: #6c6783; } .cm-s-duotone-dark div.CodeMirror-selected { background: #545167!important; } .cm-s-duotone-dark .CodeMirror-gutters { background: #2a2734; border-right: 0px; } .cm-s-duotone-dark .CodeMirror-linenumber { color: #545167; } /* begin cursor */ .cm-s-duotone-dark .CodeMirror-cursor { border-left: 1px solid #ffad5c; /* border-left: 1px solid #ffad5c80; */ border-right: .5em solid #ffad5c; /* border-right: .5em solid #ffad5c80; */ opacity: .5; } .cm-s-duotone-dark .CodeMirror-activeline-background { background: #363342; /* background: #36334280; */ opacity: .5;} .cm-s-duotone-dark .cm-fat-cursor .CodeMirror-cursor { background: #ffad5c; /* background: #ffad5c80; */ opacity: .5;} /* end cursor */ .cm-s-duotone-dark span.cm-atom, .cm-s-duotone-dark span.cm-number, .cm-s-duotone-dark span.cm-keyword, .cm-s-duotone-dark span.cm-variable, .cm-s-duotone-dark span.cm-attribute, .cm-s-duotone-dark span.cm-quote, .cm-s-duotone-dark span.cm-hr, .cm-s-duotone-dark span.cm-link { color: #ffcc99; } .cm-s-duotone-dark span.cm-property { color: #9a86fd; } .cm-s-duotone-dark span.cm-punctuation, .cm-s-duotone-dark span.cm-unit, .cm-s-duotone-dark span.cm-negative { color: #e09142; } .cm-s-duotone-dark span.cm-string { color: #ffb870; } .cm-s-duotone-dark span.cm-operator { color: #ffad5c; } .cm-s-duotone-dark span.cm-positive { color: #6a51e6; } .cm-s-duotone-dark span.cm-variable-2, .cm-s-duotone-dark span.cm-variable-3, .cm-s-duotone-dark span.cm-type, .cm-s-duotone-dark span.cm-string-2, .cm-s-duotone-dark span.cm-url { color: #7a63ee; } .cm-s-duotone-dark span.cm-def, .cm-s-duotone-dark span.cm-tag, .cm-s-duotone-dark span.cm-builtin, .cm-s-duotone-dark span.cm-qualifier, .cm-s-duotone-dark span.cm-header, .cm-s-duotone-dark span.cm-em { color: #eeebff; } .cm-s-duotone-dark span.cm-bracket, .cm-s-duotone-dark span.cm-comment { color: #a7a5b2; } /* using #f00 red for errors, don't think any of the colorscheme variables will stand out enough, ... maybe by giving it a background-color ... */ .cm-s-duotone-dark span.cm-error, .cm-s-duotone-dark span.cm-invalidchar { color: #f00; } .cm-s-duotone-dark span.cm-header { font-weight: normal; } .cm-s-duotone-dark .CodeMirror-matchingbracket { text-decoration: underline; color: #eeebff !important; } application/library/codemirror/theme/yonce.css000064400000006003147577724760015642 0ustar00/* Name: yoncĂ© Author: Thomas MacLean (http://github.com/thomasmaclean) Original yoncĂ© color scheme by Mina Markham (https://github.com/minamarkham) */ .cm-s-yonce.CodeMirror { background: #1C1C1C; color: #d4d4d4; } /**/ .cm-s-yonce div.CodeMirror-selected { background: rgba(252, 69, 133, 0.478); } /**/ .cm-s-yonce .CodeMirror-selectedtext, .cm-s-yonce .CodeMirror-selected, .cm-s-yonce .CodeMirror-line::selection, .cm-s-yonce .CodeMirror-line > span::selection, .cm-s-yonce .CodeMirror-line > span > span::selection, .cm-s-yonce .CodeMirror-line::-moz-selection, .cm-s-yonce .CodeMirror-line > span::-moz-selection, .cm-s-yonce .CodeMirror-line > span > span::-moz-selection { background: rgba(252, 67, 132, 0.47); } .cm-s-yonce.CodeMirror pre { padding-left: 0px; } .cm-s-yonce .CodeMirror-gutters {background: #1C1C1C; border-right: 0px;} .cm-s-yonce .CodeMirror-linenumber {color: #777777; padding-right: 10px; } .cm-s-yonce .CodeMirror-activeline .CodeMirror-linenumber.CodeMirror-gutter-elt { background: #1C1C1C; color: #fc4384; } .cm-s-yonce .CodeMirror-linenumber { color: #777; } .cm-s-yonce .CodeMirror-cursor { border-left: 2px solid #FC4384; } .cm-s-yonce .cm-searching { background: rgba(243, 155, 53, .3) !important; outline: 1px solid #F39B35; } .cm-s-yonce .cm-searching.CodeMirror-selectedtext { background: rgba(243, 155, 53, .7) !important; color: white; } .cm-s-yonce .cm-keyword { color: #00A7AA; } /**/ .cm-s-yonce .cm-atom { color: #F39B35; } .cm-s-yonce .cm-number, .cm-s-yonce span.cm-type { color: #A06FCA; } /**/ .cm-s-yonce .cm-def { color: #98E342; } .cm-s-yonce .cm-property, .cm-s-yonce span.cm-variable { color: #D4D4D4; font-style: italic; } .cm-s-yonce span.cm-variable-2 { color: #da7dae; font-style: italic; } .cm-s-yonce span.cm-variable-3 { color: #A06FCA; } .cm-s-yonce .cm-type.cm-def { color: #FC4384; font-style: normal; text-decoration: underline; } .cm-s-yonce .cm-property.cm-def { color: #FC4384; font-style: normal; } .cm-s-yonce .cm-callee { color: #FC4384; font-style: normal; } .cm-s-yonce .cm-operator { color: #FC4384; } /**/ .cm-s-yonce .cm-qualifier, .cm-s-yonce .cm-tag { color: #FC4384; } .cm-s-yonce .cm-tag.cm-bracket { color: #D4D4D4; } .cm-s-yonce .cm-attribute { color: #A06FCA; } .cm-s-yonce .cm-comment { color:#696d70; font-style:italic; font-weight:normal; } /**/ .cm-s-yonce .cm-comment.cm-tag { color: #FC4384 } .cm-s-yonce .cm-comment.cm-attribute { color: #D4D4D4; } .cm-s-yonce .cm-string { color:#E6DB74; } /**/ .cm-s-yonce .cm-string-2 { color:#F39B35; } /*?*/ .cm-s-yonce .cm-meta { color: #D4D4D4; background: inherit; } .cm-s-yonce .cm-builtin { color: #FC4384; } /*?*/ .cm-s-yonce .cm-header { color: #da7dae; } .cm-s-yonce .cm-hr { color: #98E342; } .cm-s-yonce .cm-link { color:#696d70; font-style:italic; text-decoration:none; } /**/ .cm-s-yonce .cm-error { border-bottom: 1px solid #C42412; } .cm-s-yonce .CodeMirror-activeline-background { background: #272727; } .cm-s-yonce .CodeMirror-matchingbracket { outline:1px solid grey; color:#D4D4D4 !important; } application/library/codemirror/theme/lucario.css000064400000003572147577724760016173 0ustar00/* Name: lucario Author: Raphael Amorim Original Lucario color scheme (https://github.com/raphamorim/lucario) */ .cm-s-lucario.CodeMirror, .cm-s-lucario .CodeMirror-gutters { background-color: #2b3e50 !important; color: #f8f8f2 !important; border: none; } .cm-s-lucario .CodeMirror-gutters { color: #2b3e50; } .cm-s-lucario .CodeMirror-cursor { border-left: solid thin #E6C845; } .cm-s-lucario .CodeMirror-linenumber { color: #f8f8f2; } .cm-s-lucario .CodeMirror-selected { background: #243443; } .cm-s-lucario .CodeMirror-line::selection, .cm-s-lucario .CodeMirror-line > span::selection, .cm-s-lucario .CodeMirror-line > span > span::selection { background: #243443; } .cm-s-lucario .CodeMirror-line::-moz-selection, .cm-s-lucario .CodeMirror-line > span::-moz-selection, .cm-s-lucario .CodeMirror-line > span > span::-moz-selection { background: #243443; } .cm-s-lucario span.cm-comment { color: #5c98cd; } .cm-s-lucario span.cm-string, .cm-s-lucario span.cm-string-2 { color: #E6DB74; } .cm-s-lucario span.cm-number { color: #ca94ff; } .cm-s-lucario span.cm-variable { color: #f8f8f2; } .cm-s-lucario span.cm-variable-2 { color: #f8f8f2; } .cm-s-lucario span.cm-def { color: #72C05D; } .cm-s-lucario span.cm-operator { color: #66D9EF; } .cm-s-lucario span.cm-keyword { color: #ff6541; } .cm-s-lucario span.cm-atom { color: #bd93f9; } .cm-s-lucario span.cm-meta { color: #f8f8f2; } .cm-s-lucario span.cm-tag { color: #ff6541; } .cm-s-lucario span.cm-attribute { color: #66D9EF; } .cm-s-lucario span.cm-qualifier { color: #72C05D; } .cm-s-lucario span.cm-property { color: #f8f8f2; } .cm-s-lucario span.cm-builtin { color: #72C05D; } .cm-s-lucario span.cm-variable-3, .cm-s-lucario span.cm-type { color: #ffb86c; } .cm-s-lucario .CodeMirror-activeline-background { background: #243443; } .cm-s-lucario .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/eclipse.css000064400000002243147577724760016153 0ustar00.cm-s-eclipse span.cm-meta { color: #FF1717; } .cm-s-eclipse span.cm-keyword { line-height: 1em; font-weight: bold; color: #7F0055; } .cm-s-eclipse span.cm-atom { color: #219; } .cm-s-eclipse span.cm-number { color: #164; } .cm-s-eclipse span.cm-def { color: #00f; } .cm-s-eclipse span.cm-variable { color: black; } .cm-s-eclipse span.cm-variable-2 { color: #0000C0; } .cm-s-eclipse span.cm-variable-3, .cm-s-eclipse span.cm-type { color: #0000C0; } .cm-s-eclipse span.cm-property { color: black; } .cm-s-eclipse span.cm-operator { color: black; } .cm-s-eclipse span.cm-comment { color: #3F7F5F; } .cm-s-eclipse span.cm-string { color: #2A00FF; } .cm-s-eclipse span.cm-string-2 { color: #f50; } .cm-s-eclipse span.cm-qualifier { color: #555; } .cm-s-eclipse span.cm-builtin { color: #30a; } .cm-s-eclipse span.cm-bracket { color: #cc7; } .cm-s-eclipse span.cm-tag { color: #170; } .cm-s-eclipse span.cm-attribute { color: #00c; } .cm-s-eclipse span.cm-link { color: #219; } .cm-s-eclipse span.cm-error { color: #f00; } .cm-s-eclipse .CodeMirror-activeline-background { background: #e8f2ff; } .cm-s-eclipse .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } application/library/codemirror/theme/rubyblue.css000064400000003411147577724760016356 0ustar00.cm-s-rubyblue.CodeMirror { background: #112435; color: white; } .cm-s-rubyblue div.CodeMirror-selected { background: #38566F; } .cm-s-rubyblue .CodeMirror-line::selection, .cm-s-rubyblue .CodeMirror-line > span::selection, .cm-s-rubyblue .CodeMirror-line > span > span::selection { background: rgba(56, 86, 111, 0.99); } .cm-s-rubyblue .CodeMirror-line::-moz-selection, .cm-s-rubyblue .CodeMirror-line > span::-moz-selection, .cm-s-rubyblue .CodeMirror-line > span > span::-moz-selection { background: rgba(56, 86, 111, 0.99); } .cm-s-rubyblue .CodeMirror-gutters { background: #1F4661; border-right: 7px solid #3E7087; } .cm-s-rubyblue .CodeMirror-guttermarker { color: white; } .cm-s-rubyblue .CodeMirror-guttermarker-subtle { color: #3E7087; } .cm-s-rubyblue .CodeMirror-linenumber { color: white; } .cm-s-rubyblue .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-rubyblue span.cm-comment { color: #999; font-style:italic; line-height: 1em; } .cm-s-rubyblue span.cm-atom { color: #F4C20B; } .cm-s-rubyblue span.cm-number, .cm-s-rubyblue span.cm-attribute { color: #82C6E0; } .cm-s-rubyblue span.cm-keyword { color: #F0F; } .cm-s-rubyblue span.cm-string { color: #F08047; } .cm-s-rubyblue span.cm-meta { color: #F0F; } .cm-s-rubyblue span.cm-variable-2, .cm-s-rubyblue span.cm-tag { color: #7BD827; } .cm-s-rubyblue span.cm-variable-3, .cm-s-rubyblue span.cm-def, .cm-s-rubyblue span.cm-type { color: white; } .cm-s-rubyblue span.cm-bracket { color: #F0F; } .cm-s-rubyblue span.cm-link { color: #F4C20B; } .cm-s-rubyblue span.CodeMirror-matchingbracket { color:#F0F !important; } .cm-s-rubyblue span.cm-builtin, .cm-s-rubyblue span.cm-special { color: #FF9D00; } .cm-s-rubyblue span.cm-error { color: #AF2018; } .cm-s-rubyblue .CodeMirror-activeline-background { background: #173047; } application/library/codemirror/theme/monokai.css000064400000004203147577724760016162 0ustar00/* Based on Sublime Text's Monokai theme */ .cm-s-monokai.CodeMirror { background: #272822; color: #f8f8f2; } .cm-s-monokai div.CodeMirror-selected { background: #49483E; } .cm-s-monokai .CodeMirror-line::selection, .cm-s-monokai .CodeMirror-line > span::selection, .cm-s-monokai .CodeMirror-line > span > span::selection { background: rgba(73, 72, 62, .99); } .cm-s-monokai .CodeMirror-line::-moz-selection, .cm-s-monokai .CodeMirror-line > span::-moz-selection, .cm-s-monokai .CodeMirror-line > span > span::-moz-selection { background: rgba(73, 72, 62, .99); } .cm-s-monokai .CodeMirror-gutters { background: #272822; border-right: 0px; } .cm-s-monokai .CodeMirror-guttermarker { color: white; } .cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; } .cm-s-monokai .CodeMirror-linenumber { color: #d0d0d0; } .cm-s-monokai .CodeMirror-cursor { border-left: 1px solid #f8f8f0; } .cm-s-monokai span.cm-comment { color: #75715e; } .cm-s-monokai span.cm-atom { color: #ae81ff; } .cm-s-monokai span.cm-number { color: #ae81ff; } .cm-s-monokai span.cm-comment.cm-attribute { color: #97b757; } .cm-s-monokai span.cm-comment.cm-def { color: #bc9262; } .cm-s-monokai span.cm-comment.cm-tag { color: #bc6283; } .cm-s-monokai span.cm-comment.cm-type { color: #5998a6; } .cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute { color: #a6e22e; } .cm-s-monokai span.cm-keyword { color: #f92672; } .cm-s-monokai span.cm-builtin { color: #66d9ef; } .cm-s-monokai span.cm-string { color: #e6db74; } .cm-s-monokai span.cm-variable { color: #f8f8f2; } .cm-s-monokai span.cm-variable-2 { color: #9effff; } .cm-s-monokai span.cm-variable-3, .cm-s-monokai span.cm-type { color: #66d9ef; } .cm-s-monokai span.cm-def { color: #fd971f; } .cm-s-monokai span.cm-bracket { color: #f8f8f2; } .cm-s-monokai span.cm-tag { color: #f92672; } .cm-s-monokai span.cm-header { color: #ae81ff; } .cm-s-monokai span.cm-link { color: #ae81ff; } .cm-s-monokai span.cm-error { background: #f92672; color: #f8f8f0; } .cm-s-monokai .CodeMirror-activeline-background { background: #373831; } .cm-s-monokai .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/darcula.css000064400000005176147577724760016152 0ustar00/** Name: IntelliJ IDEA darcula theme From IntelliJ IDEA by JetBrains */ .cm-s-darcula { font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, serif;} .cm-s-darcula.CodeMirror { background: #2B2B2B; color: #A9B7C6; } .cm-s-darcula span.cm-meta { color: #BBB529; } .cm-s-darcula span.cm-number { color: #6897BB; } .cm-s-darcula span.cm-keyword { color: #CC7832; line-height: 1em; font-weight: bold; } .cm-s-darcula span.cm-def { color: #A9B7C6; font-style: italic; } .cm-s-darcula span.cm-variable { color: #A9B7C6; } .cm-s-darcula span.cm-variable-2 { color: #A9B7C6; } .cm-s-darcula span.cm-variable-3 { color: #9876AA; } .cm-s-darcula span.cm-type { color: #AABBCC; font-weight: bold; } .cm-s-darcula span.cm-property { color: #FFC66D; } .cm-s-darcula span.cm-operator { color: #A9B7C6; } .cm-s-darcula span.cm-string { color: #6A8759; } .cm-s-darcula span.cm-string-2 { color: #6A8759; } .cm-s-darcula span.cm-comment { color: #61A151; font-style: italic; } .cm-s-darcula span.cm-link { color: #CC7832; } .cm-s-darcula span.cm-atom { color: #CC7832; } .cm-s-darcula span.cm-error { color: #BC3F3C; } .cm-s-darcula span.cm-tag { color: #629755; font-weight: bold; font-style: italic; text-decoration: underline; } .cm-s-darcula span.cm-attribute { color: #6897bb; } .cm-s-darcula span.cm-qualifier { color: #6A8759; } .cm-s-darcula span.cm-bracket { color: #A9B7C6; } .cm-s-darcula span.cm-builtin { color: #FF9E59; } .cm-s-darcula span.cm-special { color: #FF9E59; } .cm-s-darcula span.cm-matchhighlight { color: #FFFFFF; background-color: rgba(50, 89, 48, .7); font-weight: normal;} .cm-s-darcula span.cm-searching { color: #FFFFFF; background-color: rgba(61, 115, 59, .7); font-weight: normal;} .cm-s-darcula .CodeMirror-cursor { border-left: 1px solid #A9B7C6; } .cm-s-darcula .CodeMirror-activeline-background { background: #323232; } .cm-s-darcula .CodeMirror-gutters { background: #313335; border-right: 1px solid #313335; } .cm-s-darcula .CodeMirror-guttermarker { color: #FFEE80; } .cm-s-darcula .CodeMirror-guttermarker-subtle { color: #D0D0D0; } .cm-s-darcula .CodeMirrir-linenumber { color: #606366; } .cm-s-darcula .CodeMirror-matchingbracket { background-color: #3B514D; color: #FFEF28 !important; font-weight: bold; } .cm-s-darcula div.CodeMirror-selected { background: #214283; } .CodeMirror-hints.darcula { font-family: Menlo, Monaco, Consolas, 'Courier New', monospace; color: #9C9E9E; background-color: #3B3E3F !important; } .CodeMirror-hints.darcula .CodeMirror-hint-active { background-color: #494D4E !important; color: #9C9E9E !important; } application/library/codemirror/theme/moxer.css000064400000004501147577724760015660 0ustar00/* Name: Moxer Theme Author: Mattia Astorino (http://github.com/equinusocio) Website: https://github.com/moxer-theme/moxer-code */ .cm-s-moxer.CodeMirror { background-color: #090A0F; color: #8E95B4; line-height: 1.8; } .cm-s-moxer .CodeMirror-gutters { background: #090A0F; color: #35394B; border: none; } .cm-s-moxer .CodeMirror-guttermarker, .cm-s-moxer .CodeMirror-guttermarker-subtle, .cm-s-moxer .CodeMirror-linenumber { color: #35394B; } .cm-s-moxer .CodeMirror-cursor { border-left: 1px solid #FFCC00; } .cm-s-moxer div.CodeMirror-selected { background: rgba(128, 203, 196, 0.2); } .cm-s-moxer.CodeMirror-focused div.CodeMirror-selected { background: #212431; } .cm-s-moxer .CodeMirror-line::selection, .cm-s-moxer .CodeMirror-line>span::selection, .cm-s-moxer .CodeMirror-line>span>span::selection { background: #212431; } .cm-s-moxer .CodeMirror-line::-moz-selection, .cm-s-moxer .CodeMirror-line>span::-moz-selection, .cm-s-moxer .CodeMirror-line>span>span::-moz-selection { background: #212431; } .cm-s-moxer .CodeMirror-activeline-background, .cm-s-moxer .CodeMirror-activeline-gutter .CodeMirror-linenumber { background: rgba(33, 36, 49, 0.5); } .cm-s-moxer .cm-keyword { color: #D46C6C; } .cm-s-moxer .cm-operator { color: #D46C6C; } .cm-s-moxer .cm-variable-2 { color: #81C5DA; } .cm-s-moxer .cm-variable-3, .cm-s-moxer .cm-type { color: #f07178; } .cm-s-moxer .cm-builtin { color: #FFCB6B; } .cm-s-moxer .cm-atom { color: #A99BE2; } .cm-s-moxer .cm-number { color: #7CA4C0; } .cm-s-moxer .cm-def { color: #F5DFA5; } .cm-s-moxer .CodeMirror-line .cm-def ~ .cm-def { color: #81C5DA; } .cm-s-moxer .cm-string { color: #B2E4AE; } .cm-s-moxer .cm-string-2 { color: #f07178; } .cm-s-moxer .cm-comment { color: #3F445A; } .cm-s-moxer .cm-variable { color: #8E95B4; } .cm-s-moxer .cm-tag { color: #FF5370; } .cm-s-moxer .cm-meta { color: #FFCB6B; } .cm-s-moxer .cm-attribute { color: #C792EA; } .cm-s-moxer .cm-property { color: #81C5DA; } .cm-s-moxer .cm-qualifier { color: #DECB6B; } .cm-s-moxer .cm-variable-3, .cm-s-moxer .cm-type { color: #DECB6B; } .cm-s-moxer .cm-error { color: rgba(255, 255, 255, 1.0); background-color: #FF5370; } .cm-s-moxer .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }application/library/codemirror/theme/shadowfox.css000064400000004610147577724760016531 0ustar00/* Name: shadowfox Author: overdodactyl (http://github.com/overdodactyl) Original shadowfox color scheme by Firefox */ .cm-s-shadowfox.CodeMirror { background: #2a2a2e; color: #b1b1b3; } .cm-s-shadowfox div.CodeMirror-selected { background: #353B48; } .cm-s-shadowfox .CodeMirror-line::selection, .cm-s-shadowfox .CodeMirror-line > span::selection, .cm-s-shadowfox .CodeMirror-line > span > span::selection { background: #353B48; } .cm-s-shadowfox .CodeMirror-line::-moz-selection, .cm-s-shadowfox .CodeMirror-line > span::-moz-selection, .cm-s-shadowfox .CodeMirror-line > span > span::-moz-selection { background: #353B48; } .cm-s-shadowfox .CodeMirror-gutters { background: #0c0c0d ; border-right: 1px solid #0c0c0d; } .cm-s-shadowfox .CodeMirror-guttermarker { color: #555; } .cm-s-shadowfox .CodeMirror-linenumber { color: #939393; } .cm-s-shadowfox .CodeMirror-cursor { border-left: 1px solid #fff; } .cm-s-shadowfox span.cm-comment { color: #939393; } .cm-s-shadowfox span.cm-atom { color: #FF7DE9; } .cm-s-shadowfox span.cm-quote { color: #FF7DE9; } .cm-s-shadowfox span.cm-builtin { color: #FF7DE9; } .cm-s-shadowfox span.cm-attribute { color: #FF7DE9; } .cm-s-shadowfox span.cm-keyword { color: #FF7DE9; } .cm-s-shadowfox span.cm-error { color: #FF7DE9; } .cm-s-shadowfox span.cm-number { color: #6B89FF; } .cm-s-shadowfox span.cm-string { color: #6B89FF; } .cm-s-shadowfox span.cm-string-2 { color: #6B89FF; } .cm-s-shadowfox span.cm-meta { color: #939393; } .cm-s-shadowfox span.cm-hr { color: #939393; } .cm-s-shadowfox span.cm-header { color: #75BFFF; } .cm-s-shadowfox span.cm-qualifier { color: #75BFFF; } .cm-s-shadowfox span.cm-variable-2 { color: #75BFFF; } .cm-s-shadowfox span.cm-property { color: #86DE74; } .cm-s-shadowfox span.cm-def { color: #75BFFF; } .cm-s-shadowfox span.cm-bracket { color: #75BFFF; } .cm-s-shadowfox span.cm-tag { color: #75BFFF; } .cm-s-shadowfox span.cm-link:visited { color: #75BFFF; } .cm-s-shadowfox span.cm-variable { color: #B98EFF; } .cm-s-shadowfox span.cm-variable-3 { color: #d7d7db; } .cm-s-shadowfox span.cm-link { color: #737373; } .cm-s-shadowfox span.cm-operator { color: #b1b1b3; } .cm-s-shadowfox span.cm-special { color: #d7d7db; } .cm-s-shadowfox .CodeMirror-activeline-background { background: rgba(185, 215, 253, .15) } .cm-s-shadowfox .CodeMirror-matchingbracket { outline: solid 1px rgba(255, 255, 255, .25); color: white !important; } application/library/codemirror/theme/ssms.css000064400000001357147577724760015521 0ustar00.cm-s-ssms span.cm-keyword { color: blue; } .cm-s-ssms span.cm-comment { color: darkgreen; } .cm-s-ssms span.cm-string { color: red; } .cm-s-ssms span.cm-def { color: black; } .cm-s-ssms span.cm-variable { color: black; } .cm-s-ssms span.cm-variable-2 { color: black; } .cm-s-ssms span.cm-atom { color: darkgray; } .cm-s-ssms .CodeMirror-linenumber { color: teal; } .cm-s-ssms .CodeMirror-activeline-background { background: #ffffff; } .cm-s-ssms span.cm-string-2 { color: #FF00FF; } .cm-s-ssms span.cm-operator, .cm-s-ssms span.cm-bracket, .cm-s-ssms span.cm-punctuation { color: darkgray; } .cm-s-ssms .CodeMirror-gutters { border-right: 3px solid #ffee62; background-color: #ffffff; } .cm-s-ssms div.CodeMirror-selected { background: #ADD6FF; } application/library/codemirror/theme/paraiso-dark.css000064400000004036147577724760017106 0ustar00/* Name: ParaĂ­so (Dark) Author: Jan T. Sott Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror) Inspired by the art of Rubens LP (http://www.rubenslp.com.br) */ .cm-s-paraiso-dark.CodeMirror { background: #2f1e2e; color: #b9b6b0; } .cm-s-paraiso-dark div.CodeMirror-selected { background: #41323f; } .cm-s-paraiso-dark .CodeMirror-line::selection, .cm-s-paraiso-dark .CodeMirror-line > span::selection, .cm-s-paraiso-dark .CodeMirror-line > span > span::selection { background: rgba(65, 50, 63, .99); } .cm-s-paraiso-dark .CodeMirror-line::-moz-selection, .cm-s-paraiso-dark .CodeMirror-line > span::-moz-selection, .cm-s-paraiso-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(65, 50, 63, .99); } .cm-s-paraiso-dark .CodeMirror-gutters { background: #2f1e2e; border-right: 0px; } .cm-s-paraiso-dark .CodeMirror-guttermarker { color: #ef6155; } .cm-s-paraiso-dark .CodeMirror-guttermarker-subtle { color: #776e71; } .cm-s-paraiso-dark .CodeMirror-linenumber { color: #776e71; } .cm-s-paraiso-dark .CodeMirror-cursor { border-left: 1px solid #8d8687; } .cm-s-paraiso-dark span.cm-comment { color: #e96ba8; } .cm-s-paraiso-dark span.cm-atom { color: #815ba4; } .cm-s-paraiso-dark span.cm-number { color: #815ba4; } .cm-s-paraiso-dark span.cm-property, .cm-s-paraiso-dark span.cm-attribute { color: #48b685; } .cm-s-paraiso-dark span.cm-keyword { color: #ef6155; } .cm-s-paraiso-dark span.cm-string { color: #fec418; } .cm-s-paraiso-dark span.cm-variable { color: #48b685; } .cm-s-paraiso-dark span.cm-variable-2 { color: #06b6ef; } .cm-s-paraiso-dark span.cm-def { color: #f99b15; } .cm-s-paraiso-dark span.cm-bracket { color: #b9b6b0; } .cm-s-paraiso-dark span.cm-tag { color: #ef6155; } .cm-s-paraiso-dark span.cm-link { color: #815ba4; } .cm-s-paraiso-dark span.cm-error { background: #ef6155; color: #8d8687; } .cm-s-paraiso-dark .CodeMirror-activeline-background { background: #4D344A; } .cm-s-paraiso-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/material-darker.css000064400000005057147577724760017601 0ustar00/* Name: material Author: Mattia Astorino (http://github.com/equinusocio) Website: https://material-theme.site/ */ .cm-s-material-darker.CodeMirror { background-color: #212121; color: #EEFFFF; } .cm-s-material-darker .CodeMirror-gutters { background: #212121; color: #545454; border: none; } .cm-s-material-darker .CodeMirror-guttermarker, .cm-s-material-darker .CodeMirror-guttermarker-subtle, .cm-s-material-darker .CodeMirror-linenumber { color: #545454; } .cm-s-material-darker .CodeMirror-cursor { border-left: 1px solid #FFCC00; } .cm-s-material-darker div.CodeMirror-selected { background: rgba(97, 97, 97, 0.2); } .cm-s-material-darker.CodeMirror-focused div.CodeMirror-selected { background: rgba(97, 97, 97, 0.2); } .cm-s-material-darker .CodeMirror-line::selection, .cm-s-material-darker .CodeMirror-line>span::selection, .cm-s-material-darker .CodeMirror-line>span>span::selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material-darker .CodeMirror-line::-moz-selection, .cm-s-material-darker .CodeMirror-line>span::-moz-selection, .cm-s-material-darker .CodeMirror-line>span>span::-moz-selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material-darker .CodeMirror-activeline-background { background: rgba(0, 0, 0, 0.5); } .cm-s-material-darker .cm-keyword { color: #C792EA; } .cm-s-material-darker .cm-operator { color: #89DDFF; } .cm-s-material-darker .cm-variable-2 { color: #EEFFFF; } .cm-s-material-darker .cm-variable-3, .cm-s-material-darker .cm-type { color: #f07178; } .cm-s-material-darker .cm-builtin { color: #FFCB6B; } .cm-s-material-darker .cm-atom { color: #F78C6C; } .cm-s-material-darker .cm-number { color: #FF5370; } .cm-s-material-darker .cm-def { color: #82AAFF; } .cm-s-material-darker .cm-string { color: #C3E88D; } .cm-s-material-darker .cm-string-2 { color: #f07178; } .cm-s-material-darker .cm-comment { color: #545454; } .cm-s-material-darker .cm-variable { color: #f07178; } .cm-s-material-darker .cm-tag { color: #FF5370; } .cm-s-material-darker .cm-meta { color: #FFCB6B; } .cm-s-material-darker .cm-attribute { color: #C792EA; } .cm-s-material-darker .cm-property { color: #C792EA; } .cm-s-material-darker .cm-qualifier { color: #DECB6B; } .cm-s-material-darker .cm-variable-3, .cm-s-material-darker .cm-type { color: #DECB6B; } .cm-s-material-darker .cm-error { color: rgba(255, 255, 255, 1.0); background-color: #FF5370; } .cm-s-material-darker .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; }application/library/codemirror/theme/blackboard.css000064400000003613147577724760016615 0ustar00/* Port of TextMate's Blackboard theme */ .cm-s-blackboard.CodeMirror { background: #0C1021; color: #F8F8F8; } .cm-s-blackboard div.CodeMirror-selected { background: #253B76; } .cm-s-blackboard .CodeMirror-line::selection, .cm-s-blackboard .CodeMirror-line > span::selection, .cm-s-blackboard .CodeMirror-line > span > span::selection { background: rgba(37, 59, 118, .99); } .cm-s-blackboard .CodeMirror-line::-moz-selection, .cm-s-blackboard .CodeMirror-line > span::-moz-selection, .cm-s-blackboard .CodeMirror-line > span > span::-moz-selection { background: rgba(37, 59, 118, .99); } .cm-s-blackboard .CodeMirror-gutters { background: #0C1021; border-right: 0; } .cm-s-blackboard .CodeMirror-guttermarker { color: #FBDE2D; } .cm-s-blackboard .CodeMirror-guttermarker-subtle { color: #888; } .cm-s-blackboard .CodeMirror-linenumber { color: #888; } .cm-s-blackboard .CodeMirror-cursor { border-left: 1px solid #A7A7A7; } .cm-s-blackboard .cm-keyword { color: #FBDE2D; } .cm-s-blackboard .cm-atom { color: #D8FA3C; } .cm-s-blackboard .cm-number { color: #D8FA3C; } .cm-s-blackboard .cm-def { color: #8DA6CE; } .cm-s-blackboard .cm-variable { color: #FF6400; } .cm-s-blackboard .cm-operator { color: #FBDE2D; } .cm-s-blackboard .cm-comment { color: #AEAEAE; } .cm-s-blackboard .cm-string { color: #61CE3C; } .cm-s-blackboard .cm-string-2 { color: #61CE3C; } .cm-s-blackboard .cm-meta { color: #D8FA3C; } .cm-s-blackboard .cm-builtin { color: #8DA6CE; } .cm-s-blackboard .cm-tag { color: #8DA6CE; } .cm-s-blackboard .cm-attribute { color: #8DA6CE; } .cm-s-blackboard .cm-header { color: #FF6400; } .cm-s-blackboard .cm-hr { color: #AEAEAE; } .cm-s-blackboard .cm-link { color: #8DA6CE; } .cm-s-blackboard .cm-error { background: #9D1E15; color: #F8F8F8; } .cm-s-blackboard .CodeMirror-activeline-background { background: #3C3636; } .cm-s-blackboard .CodeMirror-matchingbracket { outline:1px solid grey;color:white !important; } application/library/codemirror/theme/base16-light.css000064400000004114147577724760016714 0ustar00/* Name: Base16 Default Light Author: Chris Kempson (http://chriskempson.com) CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-base16-light.CodeMirror { background: #f5f5f5; color: #202020; } .cm-s-base16-light div.CodeMirror-selected { background: #e0e0e0; } .cm-s-base16-light .CodeMirror-line::selection, .cm-s-base16-light .CodeMirror-line > span::selection, .cm-s-base16-light .CodeMirror-line > span > span::selection { background: #e0e0e0; } .cm-s-base16-light .CodeMirror-line::-moz-selection, .cm-s-base16-light .CodeMirror-line > span::-moz-selection, .cm-s-base16-light .CodeMirror-line > span > span::-moz-selection { background: #e0e0e0; } .cm-s-base16-light .CodeMirror-gutters { background: #f5f5f5; border-right: 0px; } .cm-s-base16-light .CodeMirror-guttermarker { color: #ac4142; } .cm-s-base16-light .CodeMirror-guttermarker-subtle { color: #b0b0b0; } .cm-s-base16-light .CodeMirror-linenumber { color: #b0b0b0; } .cm-s-base16-light .CodeMirror-cursor { border-left: 1px solid #505050; } .cm-s-base16-light span.cm-comment { color: #8f5536; } .cm-s-base16-light span.cm-atom { color: #aa759f; } .cm-s-base16-light span.cm-number { color: #aa759f; } .cm-s-base16-light span.cm-property, .cm-s-base16-light span.cm-attribute { color: #90a959; } .cm-s-base16-light span.cm-keyword { color: #ac4142; } .cm-s-base16-light span.cm-string { color: #f4bf75; } .cm-s-base16-light span.cm-variable { color: #90a959; } .cm-s-base16-light span.cm-variable-2 { color: #6a9fb5; } .cm-s-base16-light span.cm-def { color: #d28445; } .cm-s-base16-light span.cm-bracket { color: #202020; } .cm-s-base16-light span.cm-tag { color: #ac4142; } .cm-s-base16-light span.cm-link { color: #aa759f; } .cm-s-base16-light span.cm-error { background: #ac4142; color: #505050; } .cm-s-base16-light .CodeMirror-activeline-background { background: #DDDCDC; } .cm-s-base16-light .CodeMirror-matchingbracket { color: #f5f5f5 !important; background-color: #6A9FB5 !important} application/library/codemirror/theme/ayu-dark.css000064400000004565147577724760016255 0ustar00/* Based on https://github.com/dempfi/ayu */ .cm-s-ayu-dark.CodeMirror { background: #0a0e14; color: #b3b1ad; } .cm-s-ayu-dark div.CodeMirror-selected { background: #273747; } .cm-s-ayu-dark .CodeMirror-line::selection, .cm-s-ayu-dark .CodeMirror-line > span::selection, .cm-s-ayu-dark .CodeMirror-line > span > span::selection { background: rgba(39, 55, 71, 99); } .cm-s-ayu-dark .CodeMirror-line::-moz-selection, .cm-s-ayu-dark .CodeMirror-line > span::-moz-selection, .cm-s-ayu-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(39, 55, 71, 99); } .cm-s-ayu-dark .CodeMirror-gutters { background: #0a0e14; border-right: 0px; } .cm-s-ayu-dark .CodeMirror-guttermarker { color: white; } .cm-s-ayu-dark .CodeMirror-guttermarker-subtle { color: #3d424d; } .cm-s-ayu-dark .CodeMirror-linenumber { color: #3d424d; } .cm-s-ayu-dark .CodeMirror-cursor { border-left: 1px solid #e6b450; } .cm-s-ayu-dark.cm-fat-cursor .CodeMirror-cursor { background-color: #a2a8a175 !important; } .cm-s-ayu-dark .cm-animate-fat-cursor { background-color: #a2a8a175 !important; } .cm-s-ayu-dark span.cm-comment { color: #626a73; } .cm-s-ayu-dark span.cm-atom { color: #ae81ff; } .cm-s-ayu-dark span.cm-number { color: #e6b450; } .cm-s-ayu-dark span.cm-comment.cm-attribute { color: #ffb454; } .cm-s-ayu-dark span.cm-comment.cm-def { color: rgba(57, 186, 230, 80); } .cm-s-ayu-dark span.cm-comment.cm-tag { color: #39bae6; } .cm-s-ayu-dark span.cm-comment.cm-type { color: #5998a6; } .cm-s-ayu-dark span.cm-property, .cm-s-ayu-dark span.cm-attribute { color: #ffb454; } .cm-s-ayu-dark span.cm-keyword { color: #ff8f40; } .cm-s-ayu-dark span.cm-builtin { color: #e6b450; } .cm-s-ayu-dark span.cm-string { color: #c2d94c; } .cm-s-ayu-dark span.cm-variable { color: #b3b1ad; } .cm-s-ayu-dark span.cm-variable-2 { color: #f07178; } .cm-s-ayu-dark span.cm-variable-3 { color: #39bae6; } .cm-s-ayu-dark span.cm-type { color: #ff8f40; } .cm-s-ayu-dark span.cm-def { color: #ffee99; } .cm-s-ayu-dark span.cm-bracket { color: #f8f8f2; } .cm-s-ayu-dark span.cm-tag { color: rgba(57, 186, 230, 80); } .cm-s-ayu-dark span.cm-header { color: #c2d94c; } .cm-s-ayu-dark span.cm-link { color: #39bae6; } .cm-s-ayu-dark span.cm-error { color: #ff3333; } .cm-s-ayu-dark .CodeMirror-activeline-background { background: #01060e; } .cm-s-ayu-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/seti.css000064400000003731147577724760015476 0ustar00/* Name: seti Author: Michael Kaminsky (http://github.com/mkaminsky11) Original seti color scheme by Jesse Weed (https://github.com/jesseweed/seti-syntax) */ .cm-s-seti.CodeMirror { background-color: #151718 !important; color: #CFD2D1 !important; border: none; } .cm-s-seti .CodeMirror-gutters { color: #404b53; background-color: #0E1112; border: none; } .cm-s-seti .CodeMirror-cursor { border-left: solid thin #f8f8f0; } .cm-s-seti .CodeMirror-linenumber { color: #6D8A88; } .cm-s-seti.CodeMirror-focused div.CodeMirror-selected { background: rgba(255, 255, 255, 0.10); } .cm-s-seti .CodeMirror-line::selection, .cm-s-seti .CodeMirror-line > span::selection, .cm-s-seti .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); } .cm-s-seti .CodeMirror-line::-moz-selection, .cm-s-seti .CodeMirror-line > span::-moz-selection, .cm-s-seti .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); } .cm-s-seti span.cm-comment { color: #41535b; } .cm-s-seti span.cm-string, .cm-s-seti span.cm-string-2 { color: #55b5db; } .cm-s-seti span.cm-number { color: #cd3f45; } .cm-s-seti span.cm-variable { color: #55b5db; } .cm-s-seti span.cm-variable-2 { color: #a074c4; } .cm-s-seti span.cm-def { color: #55b5db; } .cm-s-seti span.cm-keyword { color: #ff79c6; } .cm-s-seti span.cm-operator { color: #9fca56; } .cm-s-seti span.cm-keyword { color: #e6cd69; } .cm-s-seti span.cm-atom { color: #cd3f45; } .cm-s-seti span.cm-meta { color: #55b5db; } .cm-s-seti span.cm-tag { color: #55b5db; } .cm-s-seti span.cm-attribute { color: #9fca56; } .cm-s-seti span.cm-qualifier { color: #9fca56; } .cm-s-seti span.cm-property { color: #a074c4; } .cm-s-seti span.cm-variable-3, .cm-s-seti span.cm-type { color: #9fca56; } .cm-s-seti span.cm-builtin { color: #9fca56; } .cm-s-seti .CodeMirror-activeline-background { background: #101213; } .cm-s-seti .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/yeti.css000064400000003534147577724760015505 0ustar00/* Name: yeti Author: Michael Kaminsky (http://github.com/mkaminsky11) Original yeti color scheme by Jesse Weed (https://github.com/jesseweed/yeti-syntax) */ .cm-s-yeti.CodeMirror { background-color: #ECEAE8 !important; color: #d1c9c0 !important; border: none; } .cm-s-yeti .CodeMirror-gutters { color: #adaba6; background-color: #E5E1DB; border: none; } .cm-s-yeti .CodeMirror-cursor { border-left: solid thin #d1c9c0; } .cm-s-yeti .CodeMirror-linenumber { color: #adaba6; } .cm-s-yeti.CodeMirror-focused div.CodeMirror-selected { background: #DCD8D2; } .cm-s-yeti .CodeMirror-line::selection, .cm-s-yeti .CodeMirror-line > span::selection, .cm-s-yeti .CodeMirror-line > span > span::selection { background: #DCD8D2; } .cm-s-yeti .CodeMirror-line::-moz-selection, .cm-s-yeti .CodeMirror-line > span::-moz-selection, .cm-s-yeti .CodeMirror-line > span > span::-moz-selection { background: #DCD8D2; } .cm-s-yeti span.cm-comment { color: #d4c8be; } .cm-s-yeti span.cm-string, .cm-s-yeti span.cm-string-2 { color: #96c0d8; } .cm-s-yeti span.cm-number { color: #a074c4; } .cm-s-yeti span.cm-variable { color: #55b5db; } .cm-s-yeti span.cm-variable-2 { color: #a074c4; } .cm-s-yeti span.cm-def { color: #55b5db; } .cm-s-yeti span.cm-operator { color: #9fb96e; } .cm-s-yeti span.cm-keyword { color: #9fb96e; } .cm-s-yeti span.cm-atom { color: #a074c4; } .cm-s-yeti span.cm-meta { color: #96c0d8; } .cm-s-yeti span.cm-tag { color: #96c0d8; } .cm-s-yeti span.cm-attribute { color: #9fb96e; } .cm-s-yeti span.cm-qualifier { color: #96c0d8; } .cm-s-yeti span.cm-property { color: #a074c4; } .cm-s-yeti span.cm-builtin { color: #a074c4; } .cm-s-yeti span.cm-variable-3, .cm-s-yeti span.cm-type { color: #96c0d8; } .cm-s-yeti .CodeMirror-activeline-background { background: #E7E4E0; } .cm-s-yeti .CodeMirror-matchingbracket { text-decoration: underline; } application/library/codemirror/theme/material.css000064400000004745147577724760016336 0ustar00/* Name: material Author: Mattia Astorino (http://github.com/equinusocio) Website: https://material-theme.site/ */ .cm-s-material.CodeMirror { background-color: #263238; color: #EEFFFF; } .cm-s-material .CodeMirror-gutters { background: #263238; color: #546E7A; border: none; } .cm-s-material .CodeMirror-guttermarker, .cm-s-material .CodeMirror-guttermarker-subtle, .cm-s-material .CodeMirror-linenumber { color: #546E7A; } .cm-s-material .CodeMirror-cursor { border-left: 1px solid #FFCC00; } .cm-s-material.cm-fat-cursor .CodeMirror-cursor { background-color: #5d6d5c80 !important; } .cm-s-material .cm-animate-fat-cursor { background-color: #5d6d5c80 !important; } .cm-s-material div.CodeMirror-selected { background: rgba(128, 203, 196, 0.2); } .cm-s-material.CodeMirror-focused div.CodeMirror-selected { background: rgba(128, 203, 196, 0.2); } .cm-s-material .CodeMirror-line::selection, .cm-s-material .CodeMirror-line>span::selection, .cm-s-material .CodeMirror-line>span>span::selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material .CodeMirror-line::-moz-selection, .cm-s-material .CodeMirror-line>span::-moz-selection, .cm-s-material .CodeMirror-line>span>span::-moz-selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material .CodeMirror-activeline-background { background: rgba(0, 0, 0, 0.5); } .cm-s-material .cm-keyword { color: #C792EA; } .cm-s-material .cm-operator { color: #89DDFF; } .cm-s-material .cm-variable-2 { color: #EEFFFF; } .cm-s-material .cm-variable-3, .cm-s-material .cm-type { color: #f07178; } .cm-s-material .cm-builtin { color: #FFCB6B; } .cm-s-material .cm-atom { color: #F78C6C; } .cm-s-material .cm-number { color: #FF5370; } .cm-s-material .cm-def { color: #82AAFF; } .cm-s-material .cm-string { color: #C3E88D; } .cm-s-material .cm-string-2 { color: #f07178; } .cm-s-material .cm-comment { color: #546E7A; } .cm-s-material .cm-variable { color: #f07178; } .cm-s-material .cm-tag { color: #FF5370; } .cm-s-material .cm-meta { color: #FFCB6B; } .cm-s-material .cm-attribute { color: #C792EA; } .cm-s-material .cm-property { color: #C792EA; } .cm-s-material .cm-qualifier { color: #DECB6B; } .cm-s-material .cm-variable-3, .cm-s-material .cm-type { color: #DECB6B; } .cm-s-material .cm-error { color: rgba(255, 255, 255, 1.0); background-color: #FF5370; } .cm-s-material .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/gruvbox-dark.css000064400000003576147577724760017154 0ustar00/* Name: gruvbox-dark Author: kRkk (https://github.com/krkk) Original gruvbox color scheme by Pavel Pertsev (https://github.com/morhetz/gruvbox) */ .cm-s-gruvbox-dark.CodeMirror, .cm-s-gruvbox-dark .CodeMirror-gutters { background-color: #282828; color: #bdae93; } .cm-s-gruvbox-dark .CodeMirror-gutters {background: #282828; border-right: 0px;} .cm-s-gruvbox-dark .CodeMirror-linenumber {color: #7c6f64;} .cm-s-gruvbox-dark .CodeMirror-cursor { border-left: 1px solid #ebdbb2; } .cm-s-gruvbox-dark.cm-fat-cursor .CodeMirror-cursor { background-color: #8e8d8875 !important; } .cm-s-gruvbox-dark .cm-animate-fat-cursor { background-color: #8e8d8875 !important; } .cm-s-gruvbox-dark div.CodeMirror-selected { background: #928374; } .cm-s-gruvbox-dark span.cm-meta { color: #83a598; } .cm-s-gruvbox-dark span.cm-comment { color: #928374; } .cm-s-gruvbox-dark span.cm-number, span.cm-atom { color: #d3869b; } .cm-s-gruvbox-dark span.cm-keyword { color: #f84934; } .cm-s-gruvbox-dark span.cm-variable { color: #ebdbb2; } .cm-s-gruvbox-dark span.cm-variable-2 { color: #ebdbb2; } .cm-s-gruvbox-dark span.cm-variable-3, .cm-s-gruvbox-dark span.cm-type { color: #fabd2f; } .cm-s-gruvbox-dark span.cm-operator { color: #ebdbb2; } .cm-s-gruvbox-dark span.cm-callee { color: #ebdbb2; } .cm-s-gruvbox-dark span.cm-def { color: #ebdbb2; } .cm-s-gruvbox-dark span.cm-property { color: #ebdbb2; } .cm-s-gruvbox-dark span.cm-string { color: #b8bb26; } .cm-s-gruvbox-dark span.cm-string-2 { color: #8ec07c; } .cm-s-gruvbox-dark span.cm-qualifier { color: #8ec07c; } .cm-s-gruvbox-dark span.cm-attribute { color: #8ec07c; } .cm-s-gruvbox-dark .CodeMirror-activeline-background { background: #3c3836; } .cm-s-gruvbox-dark .CodeMirror-matchingbracket { background: #928374; color:#282828 !important; } .cm-s-gruvbox-dark span.cm-builtin { color: #fe8019; } .cm-s-gruvbox-dark span.cm-tag { color: #fe8019; } application/library/codemirror/theme/neat.css000064400000001260147577724760015454 0ustar00.cm-s-neat span.cm-comment { color: #a86; } .cm-s-neat span.cm-keyword { line-height: 1em; font-weight: bold; color: blue; } .cm-s-neat span.cm-string { color: #a22; } .cm-s-neat span.cm-builtin { line-height: 1em; font-weight: bold; color: #077; } .cm-s-neat span.cm-special { line-height: 1em; font-weight: bold; color: #0aa; } .cm-s-neat span.cm-variable { color: black; } .cm-s-neat span.cm-number, .cm-s-neat span.cm-atom { color: #3a3; } .cm-s-neat span.cm-meta { color: #555; } .cm-s-neat span.cm-link { color: #3a3; } .cm-s-neat .CodeMirror-activeline-background { background: #e8f2ff; } .cm-s-neat .CodeMirror-matchingbracket { outline:1px solid grey; color:black !important; } application/library/codemirror/theme/neo.css000064400000001663147577724760015315 0ustar00/* neo theme for codemirror */ /* Color scheme */ .cm-s-neo.CodeMirror { background-color:#ffffff; color:#2e383c; line-height:1.4375; } .cm-s-neo .cm-comment { color:#75787b; } .cm-s-neo .cm-keyword, .cm-s-neo .cm-property { color:#1d75b3; } .cm-s-neo .cm-atom,.cm-s-neo .cm-number { color:#75438a; } .cm-s-neo .cm-node,.cm-s-neo .cm-tag { color:#9c3328; } .cm-s-neo .cm-string { color:#b35e14; } .cm-s-neo .cm-variable,.cm-s-neo .cm-qualifier { color:#047d65; } /* Editor styling */ .cm-s-neo pre { padding:0; } .cm-s-neo .CodeMirror-gutters { border:none; border-right:10px solid transparent; background-color:transparent; } .cm-s-neo .CodeMirror-linenumber { padding:0; color:#e0e2e5; } .cm-s-neo .CodeMirror-guttermarker { color: #1d75b3; } .cm-s-neo .CodeMirror-guttermarker-subtle { color: #e0e2e5; } .cm-s-neo .CodeMirror-cursor { width: auto; border: 0; background: rgba(155,157,162,0.37); z-index: 1; } application/library/codemirror/theme/paraiso-light.css000064400000004036147577724760017274 0ustar00/* Name: ParaĂ­so (Light) Author: Jan T. Sott Color scheme by Jan T. Sott (https://github.com/idleberg/Paraiso-CodeMirror) Inspired by the art of Rubens LP (http://www.rubenslp.com.br) */ .cm-s-paraiso-light.CodeMirror { background: #e7e9db; color: #41323f; } .cm-s-paraiso-light div.CodeMirror-selected { background: #b9b6b0; } .cm-s-paraiso-light .CodeMirror-line::selection, .cm-s-paraiso-light .CodeMirror-line > span::selection, .cm-s-paraiso-light .CodeMirror-line > span > span::selection { background: #b9b6b0; } .cm-s-paraiso-light .CodeMirror-line::-moz-selection, .cm-s-paraiso-light .CodeMirror-line > span::-moz-selection, .cm-s-paraiso-light .CodeMirror-line > span > span::-moz-selection { background: #b9b6b0; } .cm-s-paraiso-light .CodeMirror-gutters { background: #e7e9db; border-right: 0px; } .cm-s-paraiso-light .CodeMirror-guttermarker { color: black; } .cm-s-paraiso-light .CodeMirror-guttermarker-subtle { color: #8d8687; } .cm-s-paraiso-light .CodeMirror-linenumber { color: #8d8687; } .cm-s-paraiso-light .CodeMirror-cursor { border-left: 1px solid #776e71; } .cm-s-paraiso-light span.cm-comment { color: #e96ba8; } .cm-s-paraiso-light span.cm-atom { color: #815ba4; } .cm-s-paraiso-light span.cm-number { color: #815ba4; } .cm-s-paraiso-light span.cm-property, .cm-s-paraiso-light span.cm-attribute { color: #48b685; } .cm-s-paraiso-light span.cm-keyword { color: #ef6155; } .cm-s-paraiso-light span.cm-string { color: #fec418; } .cm-s-paraiso-light span.cm-variable { color: #48b685; } .cm-s-paraiso-light span.cm-variable-2 { color: #06b6ef; } .cm-s-paraiso-light span.cm-def { color: #f99b15; } .cm-s-paraiso-light span.cm-bracket { color: #41323f; } .cm-s-paraiso-light span.cm-tag { color: #ef6155; } .cm-s-paraiso-light span.cm-link { color: #815ba4; } .cm-s-paraiso-light span.cm-error { background: #ef6155; color: #776e71; } .cm-s-paraiso-light .CodeMirror-activeline-background { background: #CFD1C4; } .cm-s-paraiso-light .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/nord.css000064400000004050147577724760015467 0ustar00/* Based on arcticicestudio's Nord theme */ /* https://github.com/arcticicestudio/nord */ .cm-s-nord.CodeMirror { background: #2e3440; color: #d8dee9; } .cm-s-nord div.CodeMirror-selected { background: #434c5e; } .cm-s-nord .CodeMirror-line::selection, .cm-s-nord .CodeMirror-line > span::selection, .cm-s-nord .CodeMirror-line > span > span::selection { background: #3b4252; } .cm-s-nord .CodeMirror-line::-moz-selection, .cm-s-nord .CodeMirror-line > span::-moz-selection, .cm-s-nord .CodeMirror-line > span > span::-moz-selection { background: #3b4252; } .cm-s-nord .CodeMirror-gutters { background: #2e3440; border-right: 0px; } .cm-s-nord .CodeMirror-guttermarker { color: #4c566a; } .cm-s-nord .CodeMirror-guttermarker-subtle { color: #4c566a; } .cm-s-nord .CodeMirror-linenumber { color: #4c566a; } .cm-s-nord .CodeMirror-cursor { border-left: 1px solid #f8f8f0; } .cm-s-nord span.cm-comment { color: #4c566a; } .cm-s-nord span.cm-atom { color: #b48ead; } .cm-s-nord span.cm-number { color: #b48ead; } .cm-s-nord span.cm-comment.cm-attribute { color: #97b757; } .cm-s-nord span.cm-comment.cm-def { color: #bc9262; } .cm-s-nord span.cm-comment.cm-tag { color: #bc6283; } .cm-s-nord span.cm-comment.cm-type { color: #5998a6; } .cm-s-nord span.cm-property, .cm-s-nord span.cm-attribute { color: #8FBCBB; } .cm-s-nord span.cm-keyword { color: #81A1C1; } .cm-s-nord span.cm-builtin { color: #81A1C1; } .cm-s-nord span.cm-string { color: #A3BE8C; } .cm-s-nord span.cm-variable { color: #d8dee9; } .cm-s-nord span.cm-variable-2 { color: #d8dee9; } .cm-s-nord span.cm-variable-3, .cm-s-nord span.cm-type { color: #d8dee9; } .cm-s-nord span.cm-def { color: #8FBCBB; } .cm-s-nord span.cm-bracket { color: #81A1C1; } .cm-s-nord span.cm-tag { color: #bf616a; } .cm-s-nord span.cm-header { color: #b48ead; } .cm-s-nord span.cm-link { color: #b48ead; } .cm-s-nord span.cm-error { background: #bf616a; color: #f8f8f0; } .cm-s-nord .CodeMirror-activeline-background { background: #3b4252; } .cm-s-nord .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/railscasts.css000064400000002752147577724760016704 0ustar00/* Name: Railscasts Author: Ryan Bates (http://railscasts.com) CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-railscasts.CodeMirror {background: #2b2b2b; color: #f4f1ed;} .cm-s-railscasts div.CodeMirror-selected {background: #272935 !important;} .cm-s-railscasts .CodeMirror-gutters {background: #2b2b2b; border-right: 0px;} .cm-s-railscasts .CodeMirror-linenumber {color: #5a647e;} .cm-s-railscasts .CodeMirror-cursor {border-left: 1px solid #d4cfc9 !important;} .cm-s-railscasts span.cm-comment {color: #bc9458;} .cm-s-railscasts span.cm-atom {color: #b6b3eb;} .cm-s-railscasts span.cm-number {color: #b6b3eb;} .cm-s-railscasts span.cm-property, .cm-s-railscasts span.cm-attribute {color: #a5c261;} .cm-s-railscasts span.cm-keyword {color: #da4939;} .cm-s-railscasts span.cm-string {color: #ffc66d;} .cm-s-railscasts span.cm-variable {color: #a5c261;} .cm-s-railscasts span.cm-variable-2 {color: #6d9cbe;} .cm-s-railscasts span.cm-def {color: #cc7833;} .cm-s-railscasts span.cm-error {background: #da4939; color: #d4cfc9;} .cm-s-railscasts span.cm-bracket {color: #f4f1ed;} .cm-s-railscasts span.cm-tag {color: #da4939;} .cm-s-railscasts span.cm-link {color: #b6b3eb;} .cm-s-railscasts .CodeMirror-matchingbracket { text-decoration: underline; color: white !important;} .cm-s-railscasts .CodeMirror-activeline-background { background: #303040; } application/library/codemirror/theme/base16-dark.css000064400000004364147577724760016535 0ustar00/* Name: Base16 Default Dark Author: Chris Kempson (http://chriskempson.com) CodeMirror template by Jan T. Sott (https://github.com/idleberg/base16-codemirror) Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ .cm-s-base16-dark.CodeMirror { background: #151515; color: #e0e0e0; } .cm-s-base16-dark div.CodeMirror-selected { background: #303030; } .cm-s-base16-dark .CodeMirror-line::selection, .cm-s-base16-dark .CodeMirror-line > span::selection, .cm-s-base16-dark .CodeMirror-line > span > span::selection { background: rgba(48, 48, 48, .99); } .cm-s-base16-dark .CodeMirror-line::-moz-selection, .cm-s-base16-dark .CodeMirror-line > span::-moz-selection, .cm-s-base16-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(48, 48, 48, .99); } .cm-s-base16-dark .CodeMirror-gutters { background: #151515; border-right: 0px; } .cm-s-base16-dark .CodeMirror-guttermarker { color: #ac4142; } .cm-s-base16-dark .CodeMirror-guttermarker-subtle { color: #505050; } .cm-s-base16-dark .CodeMirror-linenumber { color: #505050; } .cm-s-base16-dark .CodeMirror-cursor { border-left: 1px solid #b0b0b0; } .cm-s-base16-dark.cm-fat-cursor .CodeMirror-cursor { background-color: #8e8d8875 !important; } .cm-s-base16-dark .cm-animate-fat-cursor { background-color: #8e8d8875 !important; } .cm-s-base16-dark span.cm-comment { color: #8f5536; } .cm-s-base16-dark span.cm-atom { color: #aa759f; } .cm-s-base16-dark span.cm-number { color: #aa759f; } .cm-s-base16-dark span.cm-property, .cm-s-base16-dark span.cm-attribute { color: #90a959; } .cm-s-base16-dark span.cm-keyword { color: #ac4142; } .cm-s-base16-dark span.cm-string { color: #f4bf75; } .cm-s-base16-dark span.cm-variable { color: #90a959; } .cm-s-base16-dark span.cm-variable-2 { color: #6a9fb5; } .cm-s-base16-dark span.cm-def { color: #d28445; } .cm-s-base16-dark span.cm-bracket { color: #e0e0e0; } .cm-s-base16-dark span.cm-tag { color: #ac4142; } .cm-s-base16-dark span.cm-link { color: #aa759f; } .cm-s-base16-dark span.cm-error { background: #ac4142; color: #b0b0b0; } .cm-s-base16-dark .CodeMirror-activeline-background { background: #202020; } .cm-s-base16-dark .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/material-palenight.css000064400000005553147577724760020305 0ustar00/* Name: material Author: Mattia Astorino (http://github.com/equinusocio) Website: https://material-theme.site/ */ .cm-s-material-palenight.CodeMirror { background-color: #292D3E; color: #A6ACCD; } .cm-s-material-palenight .CodeMirror-gutters { background: #292D3E; color: #676E95; border: none; } .cm-s-material-palenight .CodeMirror-guttermarker, .cm-s-material-palenight .CodeMirror-guttermarker-subtle, .cm-s-material-palenight .CodeMirror-linenumber { color: #676E95; } .cm-s-material-palenight .CodeMirror-cursor { border-left: 1px solid #FFCC00; } .cm-s-material-palenight.cm-fat-cursor .CodeMirror-cursor { background-color: #607c8b80 !important; } .cm-s-material-palenight .cm-animate-fat-cursor { background-color: #607c8b80 !important; } .cm-s-material-palenight div.CodeMirror-selected { background: rgba(113, 124, 180, 0.2); } .cm-s-material-palenight.CodeMirror-focused div.CodeMirror-selected { background: rgba(113, 124, 180, 0.2); } .cm-s-material-palenight .CodeMirror-line::selection, .cm-s-material-palenight .CodeMirror-line>span::selection, .cm-s-material-palenight .CodeMirror-line>span>span::selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material-palenight .CodeMirror-line::-moz-selection, .cm-s-material-palenight .CodeMirror-line>span::-moz-selection, .cm-s-material-palenight .CodeMirror-line>span>span::-moz-selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material-palenight .CodeMirror-activeline-background { background: rgba(0, 0, 0, 0.5); } .cm-s-material-palenight .cm-keyword { color: #C792EA; } .cm-s-material-palenight .cm-operator { color: #89DDFF; } .cm-s-material-palenight .cm-variable-2 { color: #EEFFFF; } .cm-s-material-palenight .cm-variable-3, .cm-s-material-palenight .cm-type { color: #f07178; } .cm-s-material-palenight .cm-builtin { color: #FFCB6B; } .cm-s-material-palenight .cm-atom { color: #F78C6C; } .cm-s-material-palenight .cm-number { color: #FF5370; } .cm-s-material-palenight .cm-def { color: #82AAFF; } .cm-s-material-palenight .cm-string { color: #C3E88D; } .cm-s-material-palenight .cm-string-2 { color: #f07178; } .cm-s-material-palenight .cm-comment { color: #676E95; } .cm-s-material-palenight .cm-variable { color: #f07178; } .cm-s-material-palenight .cm-tag { color: #FF5370; } .cm-s-material-palenight .cm-meta { color: #FFCB6B; } .cm-s-material-palenight .cm-attribute { color: #C792EA; } .cm-s-material-palenight .cm-property { color: #C792EA; } .cm-s-material-palenight .cm-qualifier { color: #DECB6B; } .cm-s-material-palenight .cm-variable-3, .cm-s-material-palenight .cm-type { color: #DECB6B; } .cm-s-material-palenight .cm-error { color: rgba(255, 255, 255, 1.0); background-color: #FF5370; } .cm-s-material-palenight .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/juejin.css000064400000001005147577724760016006 0ustar00.cm-s-juejin.CodeMirror { background: #f8f9fa; } .cm-s-juejin .cm-header, .cm-s-juejin .cm-def { color: #1ba2f0; } .cm-s-juejin .cm-comment { color: #009e9d; } .cm-s-juejin .cm-quote, .cm-s-juejin .cm-link, .cm-s-juejin .cm-strong, .cm-s-juejin .cm-attribute { color: #fd7741; } .cm-s-juejin .cm-url, .cm-s-juejin .cm-keyword, .cm-s-juejin .cm-builtin { color: #bb51b8; } .cm-s-juejin .cm-hr { color: #909090; } .cm-s-juejin .cm-tag { color: #107000; } .cm-s-juejin .cm-variable-2 { color: #0050a0; } application/library/codemirror/theme/xq-dark.css000064400000005731147577724760016103 0ustar00/* Copyright (C) 2011 by MarkLogic Corporation Author: Mike Brevoort Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ .cm-s-xq-dark.CodeMirror { background: #0a001f; color: #f8f8f8; } .cm-s-xq-dark div.CodeMirror-selected { background: #27007A; } .cm-s-xq-dark .CodeMirror-line::selection, .cm-s-xq-dark .CodeMirror-line > span::selection, .cm-s-xq-dark .CodeMirror-line > span > span::selection { background: rgba(39, 0, 122, 0.99); } .cm-s-xq-dark .CodeMirror-line::-moz-selection, .cm-s-xq-dark .CodeMirror-line > span::-moz-selection, .cm-s-xq-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(39, 0, 122, 0.99); } .cm-s-xq-dark .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } .cm-s-xq-dark .CodeMirror-guttermarker { color: #FFBD40; } .cm-s-xq-dark .CodeMirror-guttermarker-subtle { color: #f8f8f8; } .cm-s-xq-dark .CodeMirror-linenumber { color: #f8f8f8; } .cm-s-xq-dark .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-xq-dark span.cm-keyword { color: #FFBD40; } .cm-s-xq-dark span.cm-atom { color: #6C8CD5; } .cm-s-xq-dark span.cm-number { color: #164; } .cm-s-xq-dark span.cm-def { color: #FFF; text-decoration:underline; } .cm-s-xq-dark span.cm-variable { color: #FFF; } .cm-s-xq-dark span.cm-variable-2 { color: #EEE; } .cm-s-xq-dark span.cm-variable-3, .cm-s-xq-dark span.cm-type { color: #DDD; } .cm-s-xq-dark span.cm-property {} .cm-s-xq-dark span.cm-operator {} .cm-s-xq-dark span.cm-comment { color: gray; } .cm-s-xq-dark span.cm-string { color: #9FEE00; } .cm-s-xq-dark span.cm-meta { color: yellow; } .cm-s-xq-dark span.cm-qualifier { color: #FFF700; } .cm-s-xq-dark span.cm-builtin { color: #30a; } .cm-s-xq-dark span.cm-bracket { color: #cc7; } .cm-s-xq-dark span.cm-tag { color: #FFBD40; } .cm-s-xq-dark span.cm-attribute { color: #FFF700; } .cm-s-xq-dark span.cm-error { color: #f00; } .cm-s-xq-dark .CodeMirror-activeline-background { background: #27282E; } .cm-s-xq-dark .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } application/library/codemirror/theme/vibrant-ink.css000064400000004136147577724760016756 0ustar00/* Taken from the popular Visual Studio Vibrant Ink Schema */ .cm-s-vibrant-ink.CodeMirror { background: black; color: white; } .cm-s-vibrant-ink div.CodeMirror-selected { background: #35493c; } .cm-s-vibrant-ink .CodeMirror-line::selection, .cm-s-vibrant-ink .CodeMirror-line > span::selection, .cm-s-vibrant-ink .CodeMirror-line > span > span::selection { background: rgba(53, 73, 60, 0.99); } .cm-s-vibrant-ink .CodeMirror-line::-moz-selection, .cm-s-vibrant-ink .CodeMirror-line > span::-moz-selection, .cm-s-vibrant-ink .CodeMirror-line > span > span::-moz-selection { background: rgba(53, 73, 60, 0.99); } .cm-s-vibrant-ink .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } .cm-s-vibrant-ink .CodeMirror-guttermarker { color: white; } .cm-s-vibrant-ink .CodeMirror-guttermarker-subtle { color: #d0d0d0; } .cm-s-vibrant-ink .CodeMirror-linenumber { color: #d0d0d0; } .cm-s-vibrant-ink .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-vibrant-ink .cm-keyword { color: #CC7832; } .cm-s-vibrant-ink .cm-atom { color: #FC0; } .cm-s-vibrant-ink .cm-number { color: #FFEE98; } .cm-s-vibrant-ink .cm-def { color: #8DA6CE; } .cm-s-vibrant-ink span.cm-variable-2, .cm-s-vibrant span.cm-tag { color: #FFC66D; } .cm-s-vibrant-ink span.cm-variable-3, .cm-s-vibrant span.cm-def, .cm-s-vibrant span.cm-type { color: #FFC66D; } .cm-s-vibrant-ink .cm-operator { color: #888; } .cm-s-vibrant-ink .cm-comment { color: gray; font-weight: bold; } .cm-s-vibrant-ink .cm-string { color: #A5C25C; } .cm-s-vibrant-ink .cm-string-2 { color: red; } .cm-s-vibrant-ink .cm-meta { color: #D8FA3C; } .cm-s-vibrant-ink .cm-builtin { color: #8DA6CE; } .cm-s-vibrant-ink .cm-tag { color: #8DA6CE; } .cm-s-vibrant-ink .cm-attribute { color: #8DA6CE; } .cm-s-vibrant-ink .cm-header { color: #FF6400; } .cm-s-vibrant-ink .cm-hr { color: #AEAEAE; } .cm-s-vibrant-ink .cm-link { color: #5656F3; } .cm-s-vibrant-ink .cm-error { border-bottom: 1px solid red; } .cm-s-vibrant-ink .CodeMirror-activeline-background { background: #27282E; } .cm-s-vibrant-ink .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } application/library/codemirror/theme/night.css000064400000003322147577724760015637 0ustar00/* Loosely based on the Midnight Textmate theme */ .cm-s-night.CodeMirror { background: #0a001f; color: #f8f8f8; } .cm-s-night div.CodeMirror-selected { background: #447; } .cm-s-night .CodeMirror-line::selection, .cm-s-night .CodeMirror-line > span::selection, .cm-s-night .CodeMirror-line > span > span::selection { background: rgba(68, 68, 119, .99); } .cm-s-night .CodeMirror-line::-moz-selection, .cm-s-night .CodeMirror-line > span::-moz-selection, .cm-s-night .CodeMirror-line > span > span::-moz-selection { background: rgba(68, 68, 119, .99); } .cm-s-night .CodeMirror-gutters { background: #0a001f; border-right: 1px solid #aaa; } .cm-s-night .CodeMirror-guttermarker { color: white; } .cm-s-night .CodeMirror-guttermarker-subtle { color: #bbb; } .cm-s-night .CodeMirror-linenumber { color: #f8f8f8; } .cm-s-night .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-night span.cm-comment { color: #8900d1; } .cm-s-night span.cm-atom { color: #845dc4; } .cm-s-night span.cm-number, .cm-s-night span.cm-attribute { color: #ffd500; } .cm-s-night span.cm-keyword { color: #599eff; } .cm-s-night span.cm-string { color: #37f14a; } .cm-s-night span.cm-meta { color: #7678e2; } .cm-s-night span.cm-variable-2, .cm-s-night span.cm-tag { color: #99b2ff; } .cm-s-night span.cm-variable-3, .cm-s-night span.cm-def, .cm-s-night span.cm-type { color: white; } .cm-s-night span.cm-bracket { color: #8da6ce; } .cm-s-night span.cm-builtin, .cm-s-night span.cm-special { color: #ff9e59; } .cm-s-night span.cm-link { color: #845dc4; } .cm-s-night span.cm-error { color: #9d1e15; } .cm-s-night .CodeMirror-activeline-background { background: #1C005A; } .cm-s-night .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } application/library/codemirror/theme/mbo.css000064400000004100147577724760015276 0ustar00/****************************************************************/ /* Based on mbonaci's Brackets mbo theme */ /* https://github.com/mbonaci/global/blob/master/Mbo.tmTheme */ /* Create your own: http://tmtheme-editor.herokuapp.com */ /****************************************************************/ .cm-s-mbo.CodeMirror { background: #2c2c2c; color: #ffffec; } .cm-s-mbo div.CodeMirror-selected { background: #716C62; } .cm-s-mbo .CodeMirror-line::selection, .cm-s-mbo .CodeMirror-line > span::selection, .cm-s-mbo .CodeMirror-line > span > span::selection { background: rgba(113, 108, 98, .99); } .cm-s-mbo .CodeMirror-line::-moz-selection, .cm-s-mbo .CodeMirror-line > span::-moz-selection, .cm-s-mbo .CodeMirror-line > span > span::-moz-selection { background: rgba(113, 108, 98, .99); } .cm-s-mbo .CodeMirror-gutters { background: #4e4e4e; border-right: 0px; } .cm-s-mbo .CodeMirror-guttermarker { color: white; } .cm-s-mbo .CodeMirror-guttermarker-subtle { color: grey; } .cm-s-mbo .CodeMirror-linenumber { color: #dadada; } .cm-s-mbo .CodeMirror-cursor { border-left: 1px solid #ffffec; } .cm-s-mbo span.cm-comment { color: #95958a; } .cm-s-mbo span.cm-atom { color: #00a8c6; } .cm-s-mbo span.cm-number { color: #00a8c6; } .cm-s-mbo span.cm-property, .cm-s-mbo span.cm-attribute { color: #9ddfe9; } .cm-s-mbo span.cm-keyword { color: #ffb928; } .cm-s-mbo span.cm-string { color: #ffcf6c; } .cm-s-mbo span.cm-string.cm-property { color: #ffffec; } .cm-s-mbo span.cm-variable { color: #ffffec; } .cm-s-mbo span.cm-variable-2 { color: #00a8c6; } .cm-s-mbo span.cm-def { color: #ffffec; } .cm-s-mbo span.cm-bracket { color: #fffffc; font-weight: bold; } .cm-s-mbo span.cm-tag { color: #9ddfe9; } .cm-s-mbo span.cm-link { color: #f54b07; } .cm-s-mbo span.cm-error { border-bottom: #636363; color: #ffffec; } .cm-s-mbo span.cm-qualifier { color: #ffffec; } .cm-s-mbo .CodeMirror-activeline-background { background: #494b41; } .cm-s-mbo .CodeMirror-matchingbracket { color: #ffb928 !important; } .cm-s-mbo .CodeMirror-matchingtag { background: rgba(255, 255, 255, .37); } application/library/codemirror/theme/oceanic-next.css000064400000004610147577724760017104 0ustar00/* Name: oceanic-next Author: Filype Pereira (https://github.com/fpereira1) Original oceanic-next color scheme by Dmitri Voronianski (https://github.com/voronianski/oceanic-next-color-scheme) */ .cm-s-oceanic-next.CodeMirror { background: #304148; color: #f8f8f2; } .cm-s-oceanic-next div.CodeMirror-selected { background: rgba(101, 115, 126, 0.33); } .cm-s-oceanic-next .CodeMirror-line::selection, .cm-s-oceanic-next .CodeMirror-line > span::selection, .cm-s-oceanic-next .CodeMirror-line > span > span::selection { background: rgba(101, 115, 126, 0.33); } .cm-s-oceanic-next .CodeMirror-line::-moz-selection, .cm-s-oceanic-next .CodeMirror-line > span::-moz-selection, .cm-s-oceanic-next .CodeMirror-line > span > span::-moz-selection { background: rgba(101, 115, 126, 0.33); } .cm-s-oceanic-next .CodeMirror-gutters { background: #304148; border-right: 10px; } .cm-s-oceanic-next .CodeMirror-guttermarker { color: white; } .cm-s-oceanic-next .CodeMirror-guttermarker-subtle { color: #d0d0d0; } .cm-s-oceanic-next .CodeMirror-linenumber { color: #d0d0d0; } .cm-s-oceanic-next .CodeMirror-cursor { border-left: 1px solid #f8f8f0; } .cm-s-oceanic-next.cm-fat-cursor .CodeMirror-cursor { background-color: #a2a8a175 !important; } .cm-s-oceanic-next .cm-animate-fat-cursor { background-color: #a2a8a175 !important; } .cm-s-oceanic-next span.cm-comment { color: #65737E; } .cm-s-oceanic-next span.cm-atom { color: #C594C5; } .cm-s-oceanic-next span.cm-number { color: #F99157; } .cm-s-oceanic-next span.cm-property { color: #99C794; } .cm-s-oceanic-next span.cm-attribute, .cm-s-oceanic-next span.cm-keyword { color: #C594C5; } .cm-s-oceanic-next span.cm-builtin { color: #66d9ef; } .cm-s-oceanic-next span.cm-string { color: #99C794; } .cm-s-oceanic-next span.cm-variable, .cm-s-oceanic-next span.cm-variable-2, .cm-s-oceanic-next span.cm-variable-3 { color: #f8f8f2; } .cm-s-oceanic-next span.cm-def { color: #6699CC; } .cm-s-oceanic-next span.cm-bracket { color: #5FB3B3; } .cm-s-oceanic-next span.cm-tag { color: #C594C5; } .cm-s-oceanic-next span.cm-header { color: #C594C5; } .cm-s-oceanic-next span.cm-link { color: #C594C5; } .cm-s-oceanic-next span.cm-error { background: #C594C5; color: #f8f8f0; } .cm-s-oceanic-next .CodeMirror-activeline-background { background: rgba(101, 115, 126, 0.33); } .cm-s-oceanic-next .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/solarized.css000064400000012331147577724760016522 0ustar00/* Solarized theme for code-mirror http://ethanschoonover.com/solarized */ /* Solarized color palette http://ethanschoonover.com/solarized/img/solarized-palette.png */ .solarized.base03 { color: #002b36; } .solarized.base02 { color: #073642; } .solarized.base01 { color: #586e75; } .solarized.base00 { color: #657b83; } .solarized.base0 { color: #839496; } .solarized.base1 { color: #93a1a1; } .solarized.base2 { color: #eee8d5; } .solarized.base3 { color: #fdf6e3; } .solarized.solar-yellow { color: #b58900; } .solarized.solar-orange { color: #cb4b16; } .solarized.solar-red { color: #dc322f; } .solarized.solar-magenta { color: #d33682; } .solarized.solar-violet { color: #6c71c4; } .solarized.solar-blue { color: #268bd2; } .solarized.solar-cyan { color: #2aa198; } .solarized.solar-green { color: #859900; } /* Color scheme for code-mirror */ .cm-s-solarized { line-height: 1.45em; color-profile: sRGB; rendering-intent: auto; } .cm-s-solarized.cm-s-dark { color: #839496; background-color: #002b36; } .cm-s-solarized.cm-s-light { background-color: #fdf6e3; color: #657b83; } .cm-s-solarized .CodeMirror-widget { text-shadow: none; } .cm-s-solarized .cm-header { color: #586e75; } .cm-s-solarized .cm-quote { color: #93a1a1; } .cm-s-solarized .cm-keyword { color: #cb4b16; } .cm-s-solarized .cm-atom { color: #d33682; } .cm-s-solarized .cm-number { color: #d33682; } .cm-s-solarized .cm-def { color: #2aa198; } .cm-s-solarized .cm-variable { color: #839496; } .cm-s-solarized .cm-variable-2 { color: #b58900; } .cm-s-solarized .cm-variable-3, .cm-s-solarized .cm-type { color: #6c71c4; } .cm-s-solarized .cm-property { color: #2aa198; } .cm-s-solarized .cm-operator { color: #6c71c4; } .cm-s-solarized .cm-comment { color: #586e75; font-style:italic; } .cm-s-solarized .cm-string { color: #859900; } .cm-s-solarized .cm-string-2 { color: #b58900; } .cm-s-solarized .cm-meta { color: #859900; } .cm-s-solarized .cm-qualifier { color: #b58900; } .cm-s-solarized .cm-builtin { color: #d33682; } .cm-s-solarized .cm-bracket { color: #cb4b16; } .cm-s-solarized .CodeMirror-matchingbracket { color: #859900; } .cm-s-solarized .CodeMirror-nonmatchingbracket { color: #dc322f; } .cm-s-solarized .cm-tag { color: #93a1a1; } .cm-s-solarized .cm-attribute { color: #2aa198; } .cm-s-solarized .cm-hr { color: transparent; border-top: 1px solid #586e75; display: block; } .cm-s-solarized .cm-link { color: #93a1a1; cursor: pointer; } .cm-s-solarized .cm-special { color: #6c71c4; } .cm-s-solarized .cm-em { color: #999; text-decoration: underline; text-decoration-style: dotted; } .cm-s-solarized .cm-error, .cm-s-solarized .cm-invalidchar { color: #586e75; border-bottom: 1px dotted #dc322f; } .cm-s-solarized.cm-s-dark div.CodeMirror-selected { background: #073642; } .cm-s-solarized.cm-s-dark.CodeMirror ::selection { background: rgba(7, 54, 66, 0.99); } .cm-s-solarized.cm-s-dark .CodeMirror-line::-moz-selection, .cm-s-dark .CodeMirror-line > span::-moz-selection, .cm-s-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(7, 54, 66, 0.99); } .cm-s-solarized.cm-s-light div.CodeMirror-selected { background: #eee8d5; } .cm-s-solarized.cm-s-light .CodeMirror-line::selection, .cm-s-light .CodeMirror-line > span::selection, .cm-s-light .CodeMirror-line > span > span::selection { background: #eee8d5; } .cm-s-solarized.cm-s-light .CodeMirror-line::-moz-selection, .cm-s-light .CodeMirror-line > span::-moz-selection, .cm-s-light .CodeMirror-line > span > span::-moz-selection { background: #eee8d5; } /* Editor styling */ /* Little shadow on the view-port of the buffer view */ .cm-s-solarized.CodeMirror { -moz-box-shadow: inset 7px 0 12px -6px #000; -webkit-box-shadow: inset 7px 0 12px -6px #000; box-shadow: inset 7px 0 12px -6px #000; } /* Remove gutter border */ .cm-s-solarized .CodeMirror-gutters { border-right: 0; } /* Gutter colors and line number styling based of color scheme (dark / light) */ /* Dark */ .cm-s-solarized.cm-s-dark .CodeMirror-gutters { background-color: #073642; } .cm-s-solarized.cm-s-dark .CodeMirror-linenumber { color: #586e75; } /* Light */ .cm-s-solarized.cm-s-light .CodeMirror-gutters { background-color: #eee8d5; } .cm-s-solarized.cm-s-light .CodeMirror-linenumber { color: #839496; } /* Common */ .cm-s-solarized .CodeMirror-linenumber { padding: 0 5px; } .cm-s-solarized .CodeMirror-guttermarker-subtle { color: #586e75; } .cm-s-solarized.cm-s-dark .CodeMirror-guttermarker { color: #ddd; } .cm-s-solarized.cm-s-light .CodeMirror-guttermarker { color: #cb4b16; } .cm-s-solarized .CodeMirror-gutter .CodeMirror-gutter-text { color: #586e75; } /* Cursor */ .cm-s-solarized .CodeMirror-cursor { border-left: 1px solid #819090; } /* Fat cursor */ .cm-s-solarized.cm-s-light.cm-fat-cursor .CodeMirror-cursor { background: #77ee77; } .cm-s-solarized.cm-s-light .cm-animate-fat-cursor { background-color: #77ee77; } .cm-s-solarized.cm-s-dark.cm-fat-cursor .CodeMirror-cursor { background: #586e75; } .cm-s-solarized.cm-s-dark .cm-animate-fat-cursor { background-color: #586e75; } /* Active line */ .cm-s-solarized.cm-s-dark .CodeMirror-activeline-background { background: rgba(255, 255, 255, 0.06); } .cm-s-solarized.cm-s-light .CodeMirror-activeline-background { background: rgba(0, 0, 0, 0.06); } application/library/codemirror/theme/ambiance-mobile.css000064400000000147147577724760017534 0ustar00.cm-s-ambiance.CodeMirror { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } application/library/codemirror/theme/midnight.css000064400000003500147577724760016327 0ustar00/* Based on the theme at http://bonsaiden.github.com/JavaScript-Garden */ /**/ .cm-s-midnight .CodeMirror-activeline-background { background: #253540; } .cm-s-midnight.CodeMirror { background: #0F192A; color: #D1EDFF; } .cm-s-midnight div.CodeMirror-selected { background: #314D67; } .cm-s-midnight .CodeMirror-line::selection, .cm-s-midnight .CodeMirror-line > span::selection, .cm-s-midnight .CodeMirror-line > span > span::selection { background: rgba(49, 77, 103, .99); } .cm-s-midnight .CodeMirror-line::-moz-selection, .cm-s-midnight .CodeMirror-line > span::-moz-selection, .cm-s-midnight .CodeMirror-line > span > span::-moz-selection { background: rgba(49, 77, 103, .99); } .cm-s-midnight .CodeMirror-gutters { background: #0F192A; border-right: 1px solid; } .cm-s-midnight .CodeMirror-guttermarker { color: white; } .cm-s-midnight .CodeMirror-guttermarker-subtle { color: #d0d0d0; } .cm-s-midnight .CodeMirror-linenumber { color: #D0D0D0; } .cm-s-midnight .CodeMirror-cursor { border-left: 1px solid #F8F8F0; } .cm-s-midnight span.cm-comment { color: #428BDD; } .cm-s-midnight span.cm-atom { color: #AE81FF; } .cm-s-midnight span.cm-number { color: #D1EDFF; } .cm-s-midnight span.cm-property, .cm-s-midnight span.cm-attribute { color: #A6E22E; } .cm-s-midnight span.cm-keyword { color: #E83737; } .cm-s-midnight span.cm-string { color: #1DC116; } .cm-s-midnight span.cm-variable { color: #FFAA3E; } .cm-s-midnight span.cm-variable-2 { color: #FFAA3E; } .cm-s-midnight span.cm-def { color: #4DD; } .cm-s-midnight span.cm-bracket { color: #D1EDFF; } .cm-s-midnight span.cm-tag { color: #449; } .cm-s-midnight span.cm-link { color: #AE81FF; } .cm-s-midnight span.cm-error { background: #F92672; color: #F8F8F0; } .cm-s-midnight .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/material-ocean.css000064400000005317147577724760017415 0ustar00/* Name: material Author: Mattia Astorino (http://github.com/equinusocio) Website: https://material-theme.site/ */ .cm-s-material-ocean.CodeMirror { background-color: #0F111A; color: #8F93A2; } .cm-s-material-ocean .CodeMirror-gutters { background: #0F111A; color: #464B5D; border: none; } .cm-s-material-ocean .CodeMirror-guttermarker, .cm-s-material-ocean .CodeMirror-guttermarker-subtle, .cm-s-material-ocean .CodeMirror-linenumber { color: #464B5D; } .cm-s-material-ocean .CodeMirror-cursor { border-left: 1px solid #FFCC00; } .cm-s-material-ocean.cm-fat-cursor .CodeMirror-cursor { background-color: #a2a8a175 !important; } .cm-s-material-ocean .cm-animate-fat-cursor { background-color: #a2a8a175 !important; } .cm-s-material-ocean div.CodeMirror-selected { background: rgba(113, 124, 180, 0.2); } .cm-s-material-ocean.CodeMirror-focused div.CodeMirror-selected { background: rgba(113, 124, 180, 0.2); } .cm-s-material-ocean .CodeMirror-line::selection, .cm-s-material-ocean .CodeMirror-line>span::selection, .cm-s-material-ocean .CodeMirror-line>span>span::selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material-ocean .CodeMirror-line::-moz-selection, .cm-s-material-ocean .CodeMirror-line>span::-moz-selection, .cm-s-material-ocean .CodeMirror-line>span>span::-moz-selection { background: rgba(128, 203, 196, 0.2); } .cm-s-material-ocean .CodeMirror-activeline-background { background: rgba(0, 0, 0, 0.5); } .cm-s-material-ocean .cm-keyword { color: #C792EA; } .cm-s-material-ocean .cm-operator { color: #89DDFF; } .cm-s-material-ocean .cm-variable-2 { color: #EEFFFF; } .cm-s-material-ocean .cm-variable-3, .cm-s-material-ocean .cm-type { color: #f07178; } .cm-s-material-ocean .cm-builtin { color: #FFCB6B; } .cm-s-material-ocean .cm-atom { color: #F78C6C; } .cm-s-material-ocean .cm-number { color: #FF5370; } .cm-s-material-ocean .cm-def { color: #82AAFF; } .cm-s-material-ocean .cm-string { color: #C3E88D; } .cm-s-material-ocean .cm-string-2 { color: #f07178; } .cm-s-material-ocean .cm-comment { color: #464B5D; } .cm-s-material-ocean .cm-variable { color: #f07178; } .cm-s-material-ocean .cm-tag { color: #FF5370; } .cm-s-material-ocean .cm-meta { color: #FFCB6B; } .cm-s-material-ocean .cm-attribute { color: #C792EA; } .cm-s-material-ocean .cm-property { color: #C792EA; } .cm-s-material-ocean .cm-qualifier { color: #DECB6B; } .cm-s-material-ocean .cm-variable-3, .cm-s-material-ocean .cm-type { color: #DECB6B; } .cm-s-material-ocean .cm-error { color: rgba(255, 255, 255, 1.0); background-color: #FF5370; } .cm-s-material-ocean .CodeMirror-matchingbracket { text-decoration: underline; color: white !important; } application/library/codemirror/theme/liquibyte.css000064400000007627147577724760016551 0ustar00.cm-s-liquibyte.CodeMirror { background-color: #000; color: #fff; line-height: 1.2em; font-size: 1em; } .cm-s-liquibyte .CodeMirror-focused .cm-matchhighlight { text-decoration: underline; text-decoration-color: #0f0; text-decoration-style: wavy; } .cm-s-liquibyte .cm-trailingspace { text-decoration: line-through; text-decoration-color: #f00; text-decoration-style: dotted; } .cm-s-liquibyte .cm-tab { text-decoration: line-through; text-decoration-color: #404040; text-decoration-style: dotted; } .cm-s-liquibyte .CodeMirror-gutters { background-color: #262626; border-right: 1px solid #505050; padding-right: 0.8em; } .cm-s-liquibyte .CodeMirror-gutter-elt div { font-size: 1.2em; } .cm-s-liquibyte .CodeMirror-guttermarker { } .cm-s-liquibyte .CodeMirror-guttermarker-subtle { } .cm-s-liquibyte .CodeMirror-linenumber { color: #606060; padding-left: 0; } .cm-s-liquibyte .CodeMirror-cursor { border-left: 1px solid #eee; } .cm-s-liquibyte span.cm-comment { color: #008000; } .cm-s-liquibyte span.cm-def { color: #ffaf40; font-weight: bold; } .cm-s-liquibyte span.cm-keyword { color: #c080ff; font-weight: bold; } .cm-s-liquibyte span.cm-builtin { color: #ffaf40; font-weight: bold; } .cm-s-liquibyte span.cm-variable { color: #5967ff; font-weight: bold; } .cm-s-liquibyte span.cm-string { color: #ff8000; } .cm-s-liquibyte span.cm-number { color: #0f0; font-weight: bold; } .cm-s-liquibyte span.cm-atom { color: #bf3030; font-weight: bold; } .cm-s-liquibyte span.cm-variable-2 { color: #007f7f; font-weight: bold; } .cm-s-liquibyte span.cm-variable-3, .cm-s-liquibyte span.cm-type { color: #c080ff; font-weight: bold; } .cm-s-liquibyte span.cm-property { color: #999; font-weight: bold; } .cm-s-liquibyte span.cm-operator { color: #fff; } .cm-s-liquibyte span.cm-meta { color: #0f0; } .cm-s-liquibyte span.cm-qualifier { color: #fff700; font-weight: bold; } .cm-s-liquibyte span.cm-bracket { color: #cc7; } .cm-s-liquibyte span.cm-tag { color: #ff0; font-weight: bold; } .cm-s-liquibyte span.cm-attribute { color: #c080ff; font-weight: bold; } .cm-s-liquibyte span.cm-error { color: #f00; } .cm-s-liquibyte div.CodeMirror-selected { background-color: rgba(255, 0, 0, 0.25); } .cm-s-liquibyte span.cm-compilation { background-color: rgba(255, 255, 255, 0.12); } .cm-s-liquibyte .CodeMirror-activeline-background { background-color: rgba(0, 255, 0, 0.15); } /* Default styles for common addons */ .cm-s-liquibyte .CodeMirror span.CodeMirror-matchingbracket { color: #0f0; font-weight: bold; } .cm-s-liquibyte .CodeMirror span.CodeMirror-nonmatchingbracket { color: #f00; font-weight: bold; } .CodeMirror-matchingtag { background-color: rgba(150, 255, 0, .3); } /* Scrollbars */ /* Simple */ .cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div:hover, .cm-s-liquibyte div.CodeMirror-simplescroll-vertical div:hover { background-color: rgba(80, 80, 80, .7); } .cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div, .cm-s-liquibyte div.CodeMirror-simplescroll-vertical div { background-color: rgba(80, 80, 80, .3); border: 1px solid #404040; border-radius: 5px; } .cm-s-liquibyte div.CodeMirror-simplescroll-vertical div { border-top: 1px solid #404040; border-bottom: 1px solid #404040; } .cm-s-liquibyte div.CodeMirror-simplescroll-horizontal div { border-left: 1px solid #404040; border-right: 1px solid #404040; } .cm-s-liquibyte div.CodeMirror-simplescroll-vertical { background-color: #262626; } .cm-s-liquibyte div.CodeMirror-simplescroll-horizontal { background-color: #262626; border-top: 1px solid #404040; } /* Overlay */ .cm-s-liquibyte div.CodeMirror-overlayscroll-horizontal div, div.CodeMirror-overlayscroll-vertical div { background-color: #404040; border-radius: 5px; } .cm-s-liquibyte div.CodeMirror-overlayscroll-vertical div { border: 1px solid #404040; } .cm-s-liquibyte div.CodeMirror-overlayscroll-horizontal div { border: 1px solid #404040; } application/library/codemirror/theme/xq-light.css000064400000004317147577724760016270 0ustar00/* Copyright (C) 2011 by MarkLogic Corporation Author: Mike Brevoort Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ .cm-s-xq-light span.cm-keyword { line-height: 1em; font-weight: bold; color: #5A5CAD; } .cm-s-xq-light span.cm-atom { color: #6C8CD5; } .cm-s-xq-light span.cm-number { color: #164; } .cm-s-xq-light span.cm-def { text-decoration:underline; } .cm-s-xq-light span.cm-variable { color: black; } .cm-s-xq-light span.cm-variable-2 { color:black; } .cm-s-xq-light span.cm-variable-3, .cm-s-xq-light span.cm-type { color: black; } .cm-s-xq-light span.cm-property {} .cm-s-xq-light span.cm-operator {} .cm-s-xq-light span.cm-comment { color: #0080FF; font-style: italic; } .cm-s-xq-light span.cm-string { color: red; } .cm-s-xq-light span.cm-meta { color: yellow; } .cm-s-xq-light span.cm-qualifier { color: grey; } .cm-s-xq-light span.cm-builtin { color: #7EA656; } .cm-s-xq-light span.cm-bracket { color: #cc7; } .cm-s-xq-light span.cm-tag { color: #3F7F7F; } .cm-s-xq-light span.cm-attribute { color: #7F007F; } .cm-s-xq-light span.cm-error { color: #f00; } .cm-s-xq-light .CodeMirror-activeline-background { background: #e8f2ff; } .cm-s-xq-light .CodeMirror-matchingbracket { outline:1px solid grey;color:black !important;background:yellow; } application/library/codemirror/theme/erlang-dark.css000064400000004356147577724760016725 0ustar00.cm-s-erlang-dark.CodeMirror { background: #002240; color: white; } .cm-s-erlang-dark div.CodeMirror-selected { background: #b36539; } .cm-s-erlang-dark .CodeMirror-line::selection, .cm-s-erlang-dark .CodeMirror-line > span::selection, .cm-s-erlang-dark .CodeMirror-line > span > span::selection { background: rgba(179, 101, 57, .99); } .cm-s-erlang-dark .CodeMirror-line::-moz-selection, .cm-s-erlang-dark .CodeMirror-line > span::-moz-selection, .cm-s-erlang-dark .CodeMirror-line > span > span::-moz-selection { background: rgba(179, 101, 57, .99); } .cm-s-erlang-dark .CodeMirror-gutters { background: #002240; border-right: 1px solid #aaa; } .cm-s-erlang-dark .CodeMirror-guttermarker { color: white; } .cm-s-erlang-dark .CodeMirror-guttermarker-subtle { color: #d0d0d0; } .cm-s-erlang-dark .CodeMirror-linenumber { color: #d0d0d0; } .cm-s-erlang-dark .CodeMirror-cursor { border-left: 1px solid white; } .cm-s-erlang-dark span.cm-quote { color: #ccc; } .cm-s-erlang-dark span.cm-atom { color: #f133f1; } .cm-s-erlang-dark span.cm-attribute { color: #ff80e1; } .cm-s-erlang-dark span.cm-bracket { color: #ff9d00; } .cm-s-erlang-dark span.cm-builtin { color: #eaa; } .cm-s-erlang-dark span.cm-comment { color: #77f; } .cm-s-erlang-dark span.cm-def { color: #e7a; } .cm-s-erlang-dark span.cm-keyword { color: #ffee80; } .cm-s-erlang-dark span.cm-meta { color: #50fefe; } .cm-s-erlang-dark span.cm-number { color: #ffd0d0; } .cm-s-erlang-dark span.cm-operator { color: #d55; } .cm-s-erlang-dark span.cm-property { color: #ccc; } .cm-s-erlang-dark span.cm-qualifier { color: #ccc; } .cm-s-erlang-dark span.cm-special { color: #ffbbbb; } .cm-s-erlang-dark span.cm-string { color: #3ad900; } .cm-s-erlang-dark span.cm-string-2 { color: #ccc; } .cm-s-erlang-dark span.cm-tag { color: #9effff; } .cm-s-erlang-dark span.cm-variable { color: #50fe50; } .cm-s-erlang-dark span.cm-variable-2 { color: #e0e; } .cm-s-erlang-dark span.cm-variable-3, .cm-s-erlang-dark span.cm-type { color: #ccc; } .cm-s-erlang-dark span.cm-error { color: #9d1e15; } .cm-s-erlang-dark .CodeMirror-activeline-background { background: #013461; } .cm-s-erlang-dark .CodeMirror-matchingbracket { outline:1px solid grey; color:white !important; } application/library/codemirror/theme/ambiance.css000064400000063575147577724760016305 0ustar00/* ambiance theme for codemirror */ /* Color scheme */ .cm-s-ambiance .cm-header { color: blue; } .cm-s-ambiance .cm-quote { color: #24C2C7; } .cm-s-ambiance .cm-keyword { color: #cda869; } .cm-s-ambiance .cm-atom { color: #CF7EA9; } .cm-s-ambiance .cm-number { color: #78CF8A; } .cm-s-ambiance .cm-def { color: #aac6e3; } .cm-s-ambiance .cm-variable { color: #ffb795; } .cm-s-ambiance .cm-variable-2 { color: #eed1b3; } .cm-s-ambiance .cm-variable-3, .cm-s-ambiance .cm-type { color: #faded3; } .cm-s-ambiance .cm-property { color: #eed1b3; } .cm-s-ambiance .cm-operator { color: #fa8d6a; } .cm-s-ambiance .cm-comment { color: #555; font-style:italic; } .cm-s-ambiance .cm-string { color: #8f9d6a; } .cm-s-ambiance .cm-string-2 { color: #9d937c; } .cm-s-ambiance .cm-meta { color: #D2A8A1; } .cm-s-ambiance .cm-qualifier { color: yellow; } .cm-s-ambiance .cm-builtin { color: #9999cc; } .cm-s-ambiance .cm-bracket { color: #24C2C7; } .cm-s-ambiance .cm-tag { color: #fee4ff; } .cm-s-ambiance .cm-attribute { color: #9B859D; } .cm-s-ambiance .cm-hr { color: pink; } .cm-s-ambiance .cm-link { color: #F4C20B; } .cm-s-ambiance .cm-special { color: #FF9D00; } .cm-s-ambiance .cm-error { color: #AF2018; } .cm-s-ambiance .CodeMirror-matchingbracket { color: #0f0; } .cm-s-ambiance .CodeMirror-nonmatchingbracket { color: #f22; } .cm-s-ambiance div.CodeMirror-selected { background: rgba(255, 255, 255, 0.15); } .cm-s-ambiance.CodeMirror-focused div.CodeMirror-selected { background: rgba(255, 255, 255, 0.10); } .cm-s-ambiance .CodeMirror-line::selection, .cm-s-ambiance .CodeMirror-line > span::selection, .cm-s-ambiance .CodeMirror-line > span > span::selection { background: rgba(255, 255, 255, 0.10); } .cm-s-ambiance .CodeMirror-line::-moz-selection, .cm-s-ambiance .CodeMirror-line > span::-moz-selection, .cm-s-ambiance .CodeMirror-line > span > span::-moz-selection { background: rgba(255, 255, 255, 0.10); } /* Editor styling */ .cm-s-ambiance.CodeMirror { line-height: 1.40em; color: #E6E1DC; background-color: #202020; -webkit-box-shadow: inset 0 0 10px black; -moz-box-shadow: inset 0 0 10px black; box-shadow: inset 0 0 10px black; } .cm-s-ambiance .CodeMirror-gutters { background: #3D3D3D; border-right: 1px solid #4D4D4D; box-shadow: 0 10px 20px black; } .cm-s-ambiance .CodeMirror-linenumber { text-shadow: 0px 1px 1px #4d4d4d; color: #111; padding: 0 5px; } .cm-s-ambiance .CodeMirror-guttermarker { color: #aaa; } .cm-s-ambiance .CodeMirror-guttermarker-subtle { color: #111; } .cm-s-ambiance .CodeMirror-cursor { border-left: 1px solid #7991E8; } .cm-s-ambiance .CodeMirror-activeline-background { background: none repeat scroll 0% 0% rgba(255, 255, 255, 0.031); } .cm-s-ambiance.CodeMirror, .cm-s-ambiance .CodeMirror-gutters { background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAQAAAAHUWYVAABFFUlEQVQYGbzBCeDVU/74/6fj9HIcx/FRHx9JCFmzMyGRURhLZIkUsoeRfUjS2FNDtr6WkMhO9sm+S8maJfu+Jcsg+/o/c+Z4z/t97/vezy3z+z8ekGlnYICG/o7gdk+wmSHZ1z4pJItqapjoKXWahm8NmV6eOTbWUOp6/6a/XIg6GQqmenJ2lDHyvCFZ2cBDbmtHA043VFhHwXxClWmeYAdLhV00Bd85go8VmaFCkbVkzlQENzfBDZ5gtN7HwF0KDrTwJ0dypSOzpaKCMwQHKTIreYIxlmhXTzTWkVm+LTynZhiSBT3RZQ7aGfjGEd3qyXQ1FDymqbKxpspERQN2MiRjNZlFFQXfCNFm9nM1zpAsoYjmtRTc5ajwuaXc5xrWskT97RaKzAGe5ARHhVUsDbjKklziiX5WROcJwSNCNI+9w1Jwv4Zb2r7lCMZ4oq5C0EdTx+2GzNuKpJ+iFf38JEWkHJn9DNF7mmBDITrWEg0VWL3pHU20tSZnuqWu+R3BtYa8XxV1HO7GyD32UkOpL/yDloINFTmvtId+nmAjxRw40VMwVKiwrKLE4bK5UOVntYwhOcSSXKrJHKPJedocpGjVz/ZMIbnYUPB10/eKCrs5apqpgVmWzBYWpmtKHecJPjaUuEgRDDaU0oZghCJ6zNMQ5ZhDYx05r5v2muQdM0EILtXUsaKiQX9WMEUotagQzFbUNN6NUPC2nm5pxEWGCjMc3GdJHjSU2kORLK/JGSrkfGEIjncU/CYUnOipoYemwj8tST9NsJmB7TUVXtbUtXATJVZXBMvYeTXJfobgJUPmGMP/yFaWonaa6BcFO3nqcIqCozSZoZoSr1g4zJOzuyGnxTEX3lUEJ7WcZgme8ddaWvWJo2AJR9DZU3CUIbhCSG6ybSwN6qtJVnCU2svDTP2ZInOw2cBTrqtQahtNZn9NcJ4l2NaSmSkkP1noZWnVwkLmdUPOwLZEwy2Z3S3R+4rIG9hcbpPXHFVWcQdZkn2FOta3cKWQnNRC5g1LsJah4GCzSVsKnCOY5OAFRTBekyyryeyilhFKva75r4Mc0aWanGEaThcy31s439KKxTzJYY5WTHPU1FtIHjQU3Oip4xlNzj/lBw23dYZVliQa7WAXf4shetcQfatI+jWRDBPmyNeW6A1P5kdDgyYJlba0BIM8BZu1JfrFwItyjcAMR3K0BWOIrtMEXyhyrlVEx3ui5dUBjmB/Q3CXW85R4mBD0s7B+4q5tKUjOlb9qqmhi5AZ6GFIC5HXtOobdYGlVdMVbNJ8toNTFcHxnoL+muBagcctjWnbNMuR00uI7nQESwg5q2qqrKWIfrNUmeQocY6HuyxJV02wj36w00yhpmUFenv4p6fUkZYqLyuinx2RGOjhCXYyJF84oiU00YMOOhhquNdfbOB7gU88pY4xJO8LVdp6/q2voeB4R04vIdhSE40xZObx1HGGJ/ja0LBthFInKaLPPFzuCaYaoj8JjPME8yoyxo6zlBqkiUZYgq00OYMswbWO5NGmq+xhipxHLRW29ARjNKXO0wRnear8XSg4XFPLKEPUS1GqvyLwiuBUoa7zpZ0l5xxFwWmWZC1H5h5FwU8eQ7K+g8UcVY6TMQreVQT/8uQ8Z+ALIXnSEa2pYZQneE9RZbSBNYXfWYJzW/h/4j4Dp1tYVcFIC5019Vyi4ThPqSFCzjGWaHQTBU8q6vrVwgxP9Lkm840imWKpcLCjYTtrKuwvsKSnrvHCXGkSMk9p6lhckfRpIeis+N2PiszT+mFLspyGleUhDwcLrZqmyeylxwjBcKHEapqkmyangyLZRVOijwOtCY5SsG5zL0OwlCJ4y5KznF3EUNDDrinwiyLZRzOXtlBbK5ITHFGLp8Q0R6ab6mS7enI2cFrxOyHvOCFaT1HThS1krjCwqWeurCkk+willhCC+RSZnRXBiZaC5RXRIZYKp2lyfrHwiKPKR0JDzrdU2EFgpidawlFDR6FgXUMNa+g1FY3bUQh2cLCwosRdnuQTS/S+JVrGLeWIvtQUvONJxlqSQYYKpwoN2kaocLjdVsis4Mk80ESF2YpSkzwldjHkjFCUutI/r+EHDU8oCs6yzL3PhWiEooZdFMkymlas4AcI3KmoMMNSQ3tHzjGWCrcJJdYyZC7QFGwjRL9p+MrRkAGWzIaWCn9W0F3TsK01c2ZvQw0byvxuQU0r1lM0qJO7wW0kRIMdDTtXEdzi4VIh+EoIHm0mWtAtpCixlabgn83fKTI7anJe9ST7WIK1DMGpQmYeA58ImV6ezOGOzK2Kgq01pd60cKWiUi9Lievb/0vIDPHQ05Kzt4ddPckQBQtoaurjyHnek/nKzpQLrVgKPjIkh2v4uyezpv+Xoo7fPFXaGFp1vaLKxQ4uUpQQS5VuQs7BCq4xRJv7fwpVvvFEB3j+620haOuocqMhWd6TTPAEx+mdFNGHdranFe95WrWmIvlY4F1Dle2ECgc6cto7SryuqGGGha0tFQ5V53migUKmg6XKAo4qS3mik+0OZpAhOLeZKicacgaYcyx5hypYQE02ZA4xi/pNhOQxR4klNKyqacj+mpxnLTnnGSo85++3ZCZq6lrZkXlGEX3o+C9FieccJbZWVFjC0Yo1FZnJhoYMFoI1hEZ9r6hwg75HwzBNhbZCdJEfJwTPGzJvaKImw1yYX1HDAmpXR+ZJQ/SmgqMNVQb5vgamGwLtt7VwvP7Qk1xpiM5x5Cyv93E06MZmgs0Nya2azIKOYKCGBQQW97RmhKNKF02JZqHEJ4o58qp7X5EcZmc56trXEqzjCBZ1MFGR87Ql2tSTs6CGxS05PTzRQorkbw7aKoKXFDXsYW42VJih/q+FP2BdTzDTwVqOYB13liM50vG7wy28qagyuIXMeQI/Oqq8bcn5wJI50xH00CRntyfpL1T4hydYpoXgNiFzoIUTDZnLNRzh4TBHwbYGDvZkxmlyJloyr6tRihpeUG94GnKtIznREF0tzJG/OOr73JBcrSh1k6WuTprgLU+mnSGnv6Zge0NNz+kTDdH8nuAuTdJDCNb21LCiIuqlYbqGzT3RAoZofQfjFazkqeNWdYaGvYTM001EW2oKPvVk1ldUGSgUtHFwjKM1h9jnFcmy5lChoLNaQMGGDsYbKixlaMBmmsx1QjCfflwTfO/gckW0ruZ3jugKR3R5W9hGUWqCgxuFgsuaCHorotGKzGaeZB9DMsaTnKCpMtwTvOzhYk0rdrArKCqcaWmVk1+F372ur1YkKxgatI8Qfe1gIX9wE9FgS8ESmuABIXnRUbCapcKe+nO7slClSZFzpV/LkLncEb1qiO42fS3R855Su2mCLh62t1SYZZYVmKwIHjREF2uihTzB20JOkz7dkxzYQnK0UOU494wh+VWRc6Un2kpTaVgLDFEkJ/uhzRcI0YKGgpGWOlocBU/a4fKoJ/pEaNV6jip3+Es9VXY078rGnmAdf7t9ylPXS34RBSuYPs1UecZTU78WanhBCHpZ5sAoTz0LGZKjPf9TRypqWEiTvOFglL1fCEY3wY/++rbk7C8bWebA6p6om6PgOL2kp44TFJlVNBXae2rqqdZztOJpT87GQsE9jqCPIe9VReZuQ/CIgacsyZdCpIScSYqcZk8r+nsyCzhyfhOqHGOIvrLknC8wTpFcaYiGC/RU1NRbUeUpocQOnkRpGOrIOcNRx+1uA0UrzhSSt+VyS3SJpnFWkzNDqOFGIWcfR86DnmARTQ1HKIL33ExPiemeOhYSSjzlSUZZuE4TveoJLnBUOFof6KiysCbnAEcZgcUNTDOwkqWu3RWtmGpZwlHhJENdZ3miGz0lJlsKnjbwqSHQjpxnFDlTLLwqJPMZMjd7KrzkSG7VsxXBZE+F8YZkb01Oe00yyRK9psh5SYh29ySPKBo2ylNht7ZkZnsKenjKNJu9PNEyZpaCHv4Kt6RQsLvAVp7M9kIimmCUwGeWqLMmGuIotYMmWNpSahkhZw9FqZsVnKJhsjAHvtHMsTM9fCI06Dx/u3vfUXCqfsKRc4oFY2jMsoo/7DJDwZ1CsIKnJu+J9ldkpmiCxQx1rWjI+T9FwcWWzOuaYH0Hj7klNRVWEQpmaqosakiGNTFHdjS/qnUdmf0NJW5xsL0HhimCCZZSRzmSPTXJQ4aaztAwtZnoabebJ+htCaZ7Cm535ByoqXKbX1WRc4Eh2MkRXWzImVc96Cj4VdOKVxR84VdQsIUM8Psoou2byVHyZFuq7O8otbSQ2UAoeEWTudATLGSpZzVLlXVkPU2Jc+27lsw2jmg5T5VhbeE3BT083K9WsTTkFU/Osi0rC5lRlpwRHUiesNS0sOvmqGML1aRbPAxTJD9ZKtxuob+hhl8cwYGWpJ8nub7t5p6coYbMovZ1BTdaKn1jYD6h4GFDNFyT/Kqe1XCXphXHOKLZmuRSRdBPEfVUXQzJm5YGPGGJdvAEr7hHNdGZnuBvrpciGmopOLf5N0uVMy0FfYToJk90uUCbJupaVpO53UJXR2bVpoU00V2KOo4zMFrBd0Jtz2pa0clT5Q5L8IpQ177mWQejPMEJhuQjS10ref6HHjdEhy1P1EYR7GtO0uSsKJQYLiTnG1rVScj5lyazpqWGl5uBbRWl7m6ixGOOnEsMJR7z8J0n6KMnCdxhiNYQCoZ6CmYLnO8omC3MkW3bktlPmEt/VQQHejL3+dOE5FlPdK/Mq8hZxxJtLyRrepLThYKbLZxkSb5W52vYxNOaOxUF0yxMUPwBTYqCzy01XayYK0sJyWBLqX0MwU5CzoymRzV0EjjeUeLgDpTo6ij42ZAzvD01dHUUTPLU96MdLbBME8nFBn7zJCMtJcZokn8YoqU0FS5WFKyniHobguMcmW8N0XkWZjkyN3hqOMtS08r+/xTBwpZSZ3qiVRX8SzMHHjfUNFjgHEPmY9PL3ykEzxkSre/1ZD6z/NuznuB0RcE1TWTm9zRgfUWVJiG6yrzgmWPXC8EAR4Wxhlad0ZbgQyEz3pG5RVEwwDJH2mgKpjcTiCOzn1lfUWANFbZ2BA8balnEweJC9J0iuaeZoI+ippFCztEKVvckR2iice1JvhVytrQwUAZpgsubCPaU7xUe9vWnaOpaSBEspalykhC9bUlOMpT42ZHca6hyrqKmw/wMR8H5ZmdFoBVJb03O4UL0tSNnvIeRmkrLWqrs78gcrEn2tpcboh0UPOW3UUR9PMk4T4nnNKWmCjlrefhCwxRNztfmIQVdDElvS4m1/WuOujoZCs5XVOjtKPGokJzsYCtFYoWonSPT21DheU/wWhM19FcElwqNGOsp9Q8N/cwXaiND1MmeL1Q5XROtYYgGeFq1aTMsoMmcrKjQrOFQTQ1fmBYhmW6o8Jkjc7iDJRTBIo5kgJD5yMEYA3srCg7VFKwiVJkmRCc5ohGOKhsYMn/XBLdo5taZjlb9YAlGWRimqbCsoY7HFAXLa5I1HPRxMMsQDHFkWtRNniqT9UEeNjcE7RUlrCJ4R2CSJuqlKHWvJXjAUNcITYkenuBRB84TbeepcqTj3zZyFJzgYQdHnqfgI0ddUwS6GqWpsKWhjq9cV0vBAEMN2znq+EBfIWT+pClYw5xsTlJU6GeIBsjGmmANTzJZiIYpgrM0Oa8ZMjd7NP87jxhqGOhJlnQtjuQpB+8aEE00wZFznSJPyHxgH3HkPOsJFvYk8zqCHzTs1BYOa4J3PFU+UVRZxlHDM4YavlNUuMoRveiZA2d7grMNc2g+RbSCEKzmgYsUmWmazFJyoiOZ4KnyhKOGRzWJa0+moyV4TVHDzn51Awtqaphfk/lRQ08FX1iiqxTB/kLwd0VynKfEvI6cd4XMV5bMhZ7gZUWVzYQ6Nm2BYzxJbw3bGthEUUMfgbGeorae6DxHtJoZ6alhZ0+ytiVoK1R4z5PTrOECT/SugseEOlb1MMNR4VRNcJy+V1Hg9ONClSZFZjdHlc6W6FBLdJja2MC5hhpu0DBYEY1TFGwiFAxRRCsYkiM9JRb0JNMVkW6CZYT/2EiTGWmo8k+h4FhDNE7BvppoTSFnmCV5xZKzvcCdDo7VVPnIU+I+Rc68juApC90MwcFCsJ5hDqxgScYKreruyQwTqrzoqDCmhWi4IbhB0Yrt3RGa6GfDv52rKXWhh28dyZaWUvcZeMTBaZoSGyiCtRU5J8iviioHaErs7Jkj61syVzTTgOcUOQ8buFBTYWdL5g3T4qlpe0+wvD63heAXRfCCIed9RbCsp2CiI7raUOYOTU13N8PNHvpaGvayo4a3LLT1lDrVEPT2zLUlheB1R+ZTRfKWJ+dcocLJfi11vyJ51lLqJ0WD7tRwryezjiV5W28uJO9qykzX8JDe2lHl/9oyBwa2UMfOngpXCixvKdXTk3wrsKmiVYdZIqsoWEERjbcUNDuiaQomGoIbFdEHmsyWnuR+IeriKDVLnlawlyNHKwKlSU631PKep8J4Q+ayjkSLKYLhalNHlYvttb6fHm0p6OApsZ4l2VfdqZkjuysy6ysKLlckf1KUutCTs39bmCgEyyoasIWlVaMF7mgmWtBT8Kol5xpH9IGllo8cJdopcvZ2sImlDmMIbtDk3KIpeNiS08lQw11NFPTwVFlPP6pJ2gvRfI7gQUfmNAtf6Gs0wQxDsKGlVBdF8rCa3jzdwMaGHOsItrZk7hAyOzpK9VS06j5F49b0VNGOOfKs3lDToMsMBe9ZWtHFEgxTJLs7qrygKZjUnmCYoeAqeU6jqWuLJup4WghOdvCYJnrSkSzoyRkm5M2StQwVltPkfCAk58tET/CSg+8MUecmotMEnhBKfWBIZsg2ihruMJQaoIm+tkTLKEqspMh00w95gvFCQRtDwTT1gVDDSEVdlwqZfxoQRbK0g+tbiBZxzKlpnpypejdDwTaeOvorMk/IJE10h9CqRe28hhLbe0pMsdSwv4ZbhKivo2BjDWfL8UKJgeavwlwb5KlwhyE4u4XkGE2ytZCznKLCDZZq42VzT8HLCrpruFbIfOIINmh/qCdZ1ZBc65kLHR1Bkyf5zn6pN3SvGKIlFNGplhrO9QSXanLOMQTLCa0YJCRrCZm/CZmrLTm7WzCK4GJDiWUdFeYx1LCFg3NMd0XmCuF3Y5rITLDUsYS9zoHVzwnJoYpSTQoObyEzr4cFBNqYTopoaU/wkyLZ2lPhX/5Y95ulxGTV7KjhWrOZgl8MyUUafjYraNjNU1N3IWcjT5WzWqjwtoarHSUObGYO3GCJZpsBlnJGPd6ZYLyl1GdCA2625IwwJDP8GUKymbzuyPlZlvTUsaUh5zFDhRWFzPKKZLAlWdcQbObgF9tOqOsmB1dqcqYJmWstFbZRRI9poolmqiLnU0POvxScpah2iSL5UJNzgScY5+AuIbpO0YD3NCW+dLMszFSdFCWGqG6eVq2uYVNDdICGD6W7EPRWZEY5gpsE9rUkS3mijzzJnm6UpUFXG1hCUeVoS5WfNcFpblELL2qqrCvMvRfd45oalvKU2tiQ6ePJOVMRXase9iTtLJztPxJKLWpo2CRDcJwn2sWSLKIO1WQWNTCvpVUvOZhgSC40JD0dOctaSqzkCRbXsKlb11Oip6PCJ0IwSJM31j3akRxlP7Rwn6aGaUL0qiLnJkvB3xWZ2+Q1TfCwpQH3G0o92UzmX4o/oJNQMMSQc547wVHhdk+VCw01DFYEnTxzZKAm74QmeNNR1w6WzEhNK15VJzuCdxQ53dRUDws5KvwgBMOEgpcVNe0hZI6RXT1Jd0cyj5nsaEAHgVmGaJIlWdsc5Ui2ElrRR6jrRAttNMEAIWrTDFubkZaok7/AkzfIwfuWVq0jHzuCK4QabtLUMVPB3kJ0oyHTSVFlqMALilJf2Rf8k5aaHtMfayocLBS8L89oKoxpJvnAkDPa0qp5DAUTHKWmCcnthlou8iCKaFFLHWcINd1nyIwXqrSxMNmSs6KmoL2QrKuWtlQ5V0120xQ5vRyZS1rgFkWwhiOwiuQbR0OOVhQM9iS3tiXp4RawRPMp5tDletOOBL95MpM01dZTBM9pkn5qF010rIeHFcFZhmSGpYpTsI6nwhqe5C9ynhlpp5ophuRb6WcJFldkVnVEwwxVfrVkvnWUuNLCg5bgboFHPDlDPDmnK7hUrWiIbjadDclujlZcaokOFup4Ri1kacV6jmrrK1hN9bGwpKEBQ4Q6DvIUXOmo6U5LqQM6EPyiKNjVkPnJkDPNEaxhiFay5ExW1NXVUGqcpYYdPcGiCq7z/TSlbhL4pplWXKd7NZO5QQFrefhRQW/NHOsqcIglc4UhWklR8K0QzbAw08CBDnpbgqXdeD/QUsM4RZXDFBW6WJKe/mFPdH0LtBgiq57wFLzlyQzz82qYx5D5WJP5yVJDW01BfyHnS6HKO/reZqId1WGa4Hkh2kWodJ8i6KoIPlAj2hPt76CzXsVR6koPRzWTfKqIentatYpQw2me4AA3y1Kind3SwoOKZDcFXTwl9tWU6mfgRk9d71sKtlNwrjnYw5tC5n5LdKiGry3JKNlHEd3oaMCFHrazBPMp/uNJ+V7IudcSbeOIdjUEdwl0VHCOZo5t6YluEuaC9mQeMgSfOyKnYGFHcIeQ84yQWbuJYJpZw5CzglDH7gKnWqqM9ZTaXcN0TeYhR84eQtJT76JJ1lREe7WnnvsMmRc9FQ7SBBM9mV3lCUdmHk/S2RAMt0QjFNFqQpWjDPQ01DXWUdDBkXziKPjGEP3VP+zIWU2t7im41FOloyWzn/L6dkUy3VLDaZ6appgDLHPjJEsyvJngWEPUyVBiAaHCTEXwrLvSEbV1e1gKJniicWorC1MUrVjB3uDhJE/wgSOzk1DXpk0k73qCM8xw2UvD5kJmDUfOomqMpWCkJRlvKXGmoeBm18USjVIk04SClxTB6YrgLAPLWYK9HLUt5cmc0vYES8GnTeRc6skZbQkWdxRsIcyBRzx1DbTk9FbU0caTPOgJHhJKnOGIVhQqvKmo0llRw9sabrZkDtdg3PqaKi9oatjY8B+G371paMg6+mZFNNtQ04mWBq3rYLOmtWWQp8KJnpy9DdFensyjdqZ+yY40VJlH8wcdLzC8PZnvHMFUTZUrDTkLyQaGus5X5LzpYAf3i+e/ZlhqGqWhh6Ou6xTR9Z6oi5AZZtp7Mj2EEm8oSpxiYZCHU/1fbGdNNNRRoZMhmilEb2gqHOEJDtXkHK/JnG6IrvbPCwV3NhONVdS1thBMs1T4QOBcTWa2IzhMk2nW5Kyn9tXUtpv9RsG2msxk+ZsQzRQacJncpgke0+T8y5Fzj8BiGo7XlJjaTIlpQs7KFjpqGnKuoyEPeIKnFMkZHvopgh81ySxNFWvJWcKRs70j2FOT012IllEEO1n4pD1513Yg2ssQPOThOkvyrqHUdEXOSEsihmBbTbKX1kLBPWqWkLOqJbjB3GBIZmoa8qWl4CG/iZ7oiA72ZL7TJNeZUY7kFQftDcHHluBzRbCegzMtrRjVQpX2lgoPKKLJAkcbMl01XK2p7yhL8pCBbQ3BN2avJgKvttcrWDK3CiUOVxQ8ZP+pqXKyIxnmBymCg5vJjNfkPK4+c8cIfK8ocVt7kmfd/I5SR1hKvCzUtb+lhgc00ZaO6CyhIQP1Uv4yIZjload72PXX0OIJvnFU+0Zf6MhsJwTfW0r0UwQfW4LNLZl5HK261JCZ4qnBaAreVAS3WrjV0LBnNDUNNDToCEeFfwgcb4gOEqLRhirWkexrCEYKVV711DLYEE1XBEsp5tpTGjorkomKYF9FDXv7fR3BGwbettSxnyL53MBPjsxDZjMh+VUW9NRxq1DhVk+FSxQcaGjV9Pawv6eGByw5qzoy7xk4RsOShqjJwWKe/1pEEfzkobeD/dQJmpqedcyBTy2sr4nGNRH0c0SPWTLrqAc0OQcb/gemKgqucQT7ySWKCn2EUotoCvpZct7RO2sy/QW0IWcXd7pQRQyZVwT2USRO87uhjioTLKV2brpMUcMQRbKH/N2T+UlTpaMls6cmc6CCNy3JdYYSUzzJQ4oSD3oKLncULOiJvjBEC2oqnCJkJluCYy2ZQ5so9YYlZ1VLlQU1mXEW1jZERwj/MUSRc24TdexlqLKfQBtDTScJUV8FszXBEY5ktpD5Ur9hYB4Nb1iikw3JoYpkKX+RodRKFt53MMuRnKSpY31PwYaGaILh3wxJGz9TkTPEETxoCWZrgvOlmyMzxFEwVJE5xZKzvyJ4WxEc16Gd4Xe3Weq4XH2jKRikqOkGQ87hQnC7wBmGYLAnesX3M+S87eFATauuN+Qcrh7xIxXJbUIdMw3JGE3ylCWzrieaqCn4zhGM19TQ3z1oH1AX+pWEqIc7wNGAkULBo/ZxRaV9NNyh4Br3rCHZzbzmSfawBL0dNRwpW1kK9mxPXR9povcdrGSZK9c2k0xwFGzjuniCtRSZCZ6ccZ7gaktmgAOtKbG/JnOkJrjcQTdFMsxRQ2cLY3WTIrlCw1eWKn8R6pvt4GFDso3QoL4a3nLk3G6JrtME3dSenpx7PNFTmga0EaJTLQ061sEeQoWXhSo9LTXsaSjoJQRXeZLtDclbCrYzfzHHeaKjHCVOUkQHO3JeEepr56mhiyaYYKjjNU+Fed1wS5VlhWSqI/hYUdDOkaxiKehoyOnrCV5yBHtbWFqTHCCwtpDcYolesVR5yUzTZBb3RNMd0d6WP+SvhuBmRcGxnuQzT95IC285cr41cLGQ6aJJhmi4TMGempxeimBRQw1tFKV+8jd6KuzoSTqqDxzRtpZkurvKEHxlqXKRIjjfUNNXQsNOsRScoWFLT+YeRZVD3GRN0MdQcKqQjHDMrdGGVu3iYJpQx3WGUvfbmxwFfR20WBq0oYY7LMFhhgYtr8jpaEnaOzjawWWaTP8mMr0t/EPDPoqcnxTBI5o58L7uoWnMrpoqPwgVrlAUWE+V+TQl9rawoyP6QGAlQw2TPRX+YSkxyBC8Z6jhHkXBgQL7WII3DVFnRfCrBfxewv9D6xsyjys4VkhWb9pUU627JllV0YDNHMku/ldNMMXDEo4aFnAkk4U6frNEU4XgZUPmEKHUl44KrzmYamjAbh0JFvGnaTLPu1s9jPCwjFpYiN7z1DTOk/nc07CfDFzmCf7i+bfNHXhDtLeBXzTBT5rkMvWOIxpl4EMh2LGJBu2syDnAEx2naEhHDWMMzPZEhygyS1mS5RTJr5ZkoKbEUoYqr2kqdDUE8ztK7OaIntJkFrIECwv8LJTaVx5XJE86go8dFeZ3FN3rjabCAYpoYEeC9zzJVULBbmZhDyd7ko09ydpNZ3nm2Kee4FPPXHnYEF1nqOFEC08LUVcDvYXkJHW8gTaKCk9YGOeIJhqiE4ToPEepdp7IWFjdwnWaufGMwJJCMtUTTBBK9BGCOy2tGGrJTHIwyEOzp6aPzNMOtlZkDvcEWpP5SVNhfkvDxhmSazTJXYrM9U1E0xwFVwqZQwzJxw6+kGGGUj2FglGGmnb1/G51udRSMNlTw6GGnCcUwVcOpmsqTHa06o72sw1RL02p9z0VbnMLOaIX3QKaYKSCFQzBKEUNHTSc48k53RH9wxGMtpQa5KjjW0W0n6XCCCG4yxNNdhQ4R4l1Ff+2sSd6UFHiIEOyqqFgT01mEUMD+joy75jPhOA+oVVLm309FR4yVOlp4RhLiScNmSmaYF5Pw0STrOIoWMSR2UkRXOMp+M4SHW8o8Zoi6OZgjKOaFar8zZDzkWzvKOjkKBjmCXby8JahhjXULY4KlzgKLvAwxVGhvyd4zxB1d9T0piazmKLCVZY5sKiD0y2ZSYrkUEPUbIk+dlQ4SJHTR50k1DPaUWIdTZW9NJwnJMOECgd7ou/MnppMJ02O1VT4Wsh85MnZzcFTngpXGKo84qmwgKbCL/orR/SzJ2crA+t6Mp94KvxJUeIbT3CQu1uIdlQEOzlKfS3UMcrTiFmOuroocrZrT2AcmamOKg8YomeEKm/rlT2sociMaybaUlFhuqHCM2qIJ+rg4EcDFymiDSxzaHdPcpE62pD5kyM5SBMoA1PaUtfIthS85ig1VPiPPYXgYEMNk4Qq7TXBgo7oT57gPUdwgCHzhIVFPFU6OYJzHAX9m5oNrVjeE61miDrqQ4VSa1oiURTsKHC0IfjNwU2WzK6eqK8jWln4g15TVBnqmDteCJ501PGAocJhhqjZdtBEB6lnhLreFJKxmlKbeGrqLiSThVIbCdGzloasa6lpMQXHCME2boLpJgT7yWaemu6wBONbqGNVRS0PKIL7LckbjmQtR7K8I5qtqel+T/ChJTNIKLjdUMNIRyvOEko9YYl2cwQveBikCNawJKcLBbc7+JM92mysNvd/Fqp8a0k6CNEe7cnZrxlW0wQXaXjaktnRwNOGZKYiONwS7a1JVheq3WgJHlQUGKHKmp4KAxXR/ULURcNgoa4zhKSLpZR3kxRRb0NmD0OFn+UCS7CzI1nbP6+o4x47QZE5xRCt3ZagnYcvmpYQktXdk5YKXTzBC57kKEe0VVuiSYqapssMS3C9p2CKkHOg8B8Pa8p5atrIw3qezIWanMGa5HRDNF6RM9wcacl0N+Q8Z8hsIkSnaIIdHRUOEebAPy1zbCkhM062FCJtif7PU+UtoVXzWKqM1PxXO8cfdruhFQ/a6x3JKYagvVDhQEtNiyiiSQ7OsuRsZUku0CRNDs4Sog6KKjsZgk2bYJqijgsEenoKeniinRXBn/U3lgpPdyDZynQx8IiioMnCep5Ky8mjGs6Wty0l1hUQTcNWswS3WRp2kCNZwJG8omG8JphPUaFbC8lEfabwP7VtM9yoaNCAjpR41VNhrD9LkbN722v0CoZMByFzhaW+MyzRYEWFDQwN2M4/JiT76PuljT3VU/A36eaIThb+R9oZGOAJ9tewkgGvqOMNRWYjT/Cwu99Q8LqDE4TgbLWxJ1jaDDAERsFOFrobgjUsBScaguXU8kKm2RL19tRypSHnHNlHiIZqgufs4opgQdVdwxBNNFBR6kVFqb8ogimOzB6a6HTzrlDHEpYaxjiiA4TMQobkDg2vejjfwJGWmnbVFAw3H3hq2NyQfG7hz4aC+w3BbwbesG0swYayvpAs6++Ri1Vfzx93mFChvyN5xVHTS+0p9aqCAxyZ6ZacZyw5+7uuQkFPR9DDk9NOiE7X1PCYJVjVUqq7JlrHwWALF5nfHNGjApdpqgzx5OwilDhCiDYTgnc9waGW4BdLNNUQvOtpzDOWHDH8D7TR/A/85KljEQu3NREc4Pl/6B1Hhc8Umb5CsKMmGC9EPcxoT2amwHNCmeOEnOPbklnMkbOgIvO5UMOpQrS9UGVdt6iH/fURjhI/WOpaW9OKLYRod6HCUEdOX000wpDZQ6hwg6LgZfOqo1RfT/CrJzjekXOGhpc1VW71ZLbXyyp+93ILbC1kPtIEYx0FIx1VDrLoVzXRKRYWk809yYlC9ImcrinxtabKnzRJk3lAU1OLEN1j2zrYzr2myHRXJFf4h4QKT1qSTzTB5+ZNTzTRkAxX8FcLV2uS8eoQQ2aAkFzvCM72sJIcJET3WPjRk5wi32uSS9rfZajpWEvj9hW42F4o5NytSXYy8IKHay10VYdrcl4SkqscrXpMwyGOgtkajheSxdQqmpxP1L3t4R5PqasFnrQEjytq6qgp9Y09Qx9o4S1FzhUCn1kyHSzBWLemoSGvOqLNhZyBjmCaAUYpMgt4Ck7wBBMMwWKWgjsUwTaGVsxWC1mYoKiyqqeGKYqonSIRQ3KIkHO0pmAxTdBHkbOvfllfr+AA+7gnc50huVKYK393FOyg7rbPO/izI7hE4CnHHHnJ0ogNPRUGeUpsrZZTBJcrovUcJe51BPsr6GkJdhCCsZ6aTtMEb2pqWkqeVtDXE/QVggsU/Nl86d9RMF3DxvZTA58agu810RWawCiSzzXBeU3MMW9oyJUedvNEvQyNu1f10BSMddR1vaLCYpYa/mGocLSiYDcLbQz8aMn5iyF4xBNMs1P0QEOV7o5gaWGuzSeLue4tt3ro7y4Tgm4G/mopdZgl6q0o6KzJWE3mMksNr3r+a6CbT8g5wZNzT9O7fi/zpaOmnz3BRoqos+tv9zMbdpxsqDBOEewtJLt7cg5wtKKbvldpSzRRCD43VFheCI7yZLppggMVBS/KMAdHODJvOwq2NQSbKKKPLdFWQs7Fqo+mpl01JXYRgq8dnGLhTiFzqmWsUMdpllZdbKlyvSdYxhI9YghOtxR8LgSLWHK62mGGVoxzBE8LNWzqH9CUesQzFy5RQzTc56mhi6fgXEWwpKfE5Z7M05ZgZUPmo6auiv8YKzDYwWBLMErIbKHJvOwIrvEdhOBcQ9JdU1NHQ7CXn2XIDFBKU2WAgcX9UAUzDXWd5alwuyJ41Z9rjKLCL4aCp4WarhPm2rH+SaHUYE001JDZ2ZAzXPjdMpZWvC9wmqIB2lLhQ01D5jO06hghWMndbM7yRJMsoCj1vYbnFQVrW9jak3OlEJ3s/96+p33dEPRV5GxiqaGjIthUU6FFEZyqCa5qJrpBdzSw95IUnOPIrCUUjRZQFrbw5PR0R1qiYx3cb6nrWUMrBmmiBQxVHtTew5ICP/ip6g4hed/Akob/32wvBHsIOX83cI8hGeNeNPCIkPmXe8fPKx84OMSRM1MTdXSwjCZ4S30jVGhvqTRak/OVhgGazHuOCud5onEO1lJr6ecVyaOK6H7zqlBlIaHE0oroCgfvGJIdPcmfLNGLjpz7hZwZQpUbFME0A1cIJa7VNORkgfsMBatbKgwwJM9bSvQXeNOvbIjelg6WWvo5kvbKaJJNHexkKNHL9xRyFlH8Ti2riB5wVPhUk7nGkJnoCe428LR/wRGdYIlmWebCyxou1rCk4g/ShugBDX0V0ZQWkh0dOVsagkM0yV6OoLd5ye+pRlsCr0n+KiQrGuq5yJDzrTAXHtLUMduTDBVKrSm3eHL+6ijxhFDX9Z5gVU/wliHYTMiMFpKLNMEywu80wd3meoFmt6VbRMPenhrOc6DVe4pgXU8DnnHakLOIIrlF4FZPIw6R+zxBP0dyq6OOZ4Q5sLKCcz084ok+VsMMyQhNZmmBgX5xIXOEJTmi7VsGTvMTNdHHhpzdbE8Du2oKxgvBqQKdDDnTFOylCFaxR1syz2iqrOI/FEpNc3C6f11/7+ASS6l2inq2ciTrCCzgyemrCL5SVPjQkdPZUmGy2c9Sw9FtR1sS30RmsKPCS4rkIC/2U0MduwucYolGaPjKEyhzmiPYXagyWbYz8LWBDdzRimAXzxx4z8K9hpzlhLq+NiQ97HuKorMUfK/OVvC2JfiHUPCQI/q7J2gjK+tTDNxkCc4TMssqCs4TGtLVwQihyoAWgj9bosU80XGW6Ac9TJGziaUh5+hnFcHOnlaM1iRn29NaqGENTTTSUHCH2tWTeV0osUhH6psuVLjRUmGWhm6OZEshGeNowABHcJ2Bpy2ZszRcKkRXd2QuKVEeXnbfaEq825FguqfgfE2whlChSRMdron+LATTPQ2Z369t4B9C5gs/ylzv+CMmepIDPclFQl13W0rspPd1JOcbghGOEutqCv5qacURQl3dDKyvyJlqKXGPgcM9FfawJAMVmdcspcYKOZc4GjDYkFlK05olNMHyHn4zFNykyOxt99RkHlfwmiHo60l2EKI+mhreEKp080Tbug08BVPcgoqC5zWt+NLDTZ7oNSF51N1qie7Va3uCCwyZbkINf/NED6jzOsBdZjFN8oqG3wxVunqCSYYKf3EdhJyf9YWGf7tRU2oH3VHgPr1fe5J9hOgHd7xQ0y7qBwXr23aGErP0cm64JVjZwsOGqL+mhNgZmhJLW2oY4UhedsyBgzrCKrq7BmcpNVhR6jBPq64Vgi+kn6XE68pp8J5/+0wRHGOpsKenQn9DZntPzjRLZpDAdD2fnSgkG9tmIXnUwQ6WVighs7Yi2MxQ0N3CqYaCXkJ0oyOztMDJjmSSpcpvlrk0RMMOjmArQ04PRV1DO1FwhCVaUVPpKUM03JK5SxPsIWRu8/CGHi8UHChiqGFDTbSRJWeYUDDcH6vJWUxR4k1FXbMUwV6e4AJFXS8oMqsZKqzvYQ9DDQdZckY4aGsIhtlubbd2r3j4QBMoTamdPZk7O/Bf62lacZwneNjQoGcdVU7zJOd7ghsUHOkosagic6cnWc8+4gg285R6zZP5s1/LUbCKIznTwK36PkdwlOrl4U1LwfdCCa+IrvFkmgw1PCAUXKWo0sURXWcI2muKJlgyFzhynCY4RBOsqCjoI1R5zREco0n2Vt09BQtYSizgKNHfUmUrQ5UOCh51BFcLmY7umhYqXKQomOop8bUnWNNQcIiBcYaC6xzMNOS8JQQfeqKBmmglB+97ok/lfk3ygaHSyZaCRTzRxQo6GzLfa2jWBPepw+UmT7SQEJyiyRkhBLMVOfcoMjcK0eZChfUNzFAUzCsEN5vP/X1uP/n/aoMX+K+nw/Hjr/9xOo7j7Pju61tLcgvJpTWXNbfN5jLpi6VfCOviTktKlFusQixdEKWmEBUKNaIpjZRSSOXSgzaaKLdabrm1/9nZ+/f+vd/vz/v9+Xy+zZ7PRorYoZqyLrCwQdEAixxVOEXNNnjX2nUSRlkqGmWowk8lxR50JPy9Bo6qJXaXwNvREBvnThPEPrewryLhcAnj5WE15Fqi8W7R1sAuEu86S4ENikItFN4xkv9Af4nXSnUVcLiA9xzesFpivRRVeFKtsMRaKBhuSbjOELnAUtlSQUpXgdfB4Z1oSbnFEetbQ0IrAe+Y+pqnDcEJFj6S8LDZzZHwY4e3XONNlARraomNEt2bkvGsosA3ioyHm+6jCMbI59wqt4eeara28IzEmyPgoRaUOEDhTVdEJhmCoTWfC0p8aNkCp0oYqih2iqGi4yXeMkOsn4LdLLnmKfh/YogjNsPebeFGR4m9BJHLzB61XQ3BtpISfS2FugsK9FAtLWX1dCRcrCnUp44CNzuCowUZmxSRgYaE6Za0W2u/E7CVXCiI/UOR8aAm1+OSyE3mOUcwyc1zBBeoX1kiKy0Zfxck1Gsyulti11i83QTBF5Kg3pDQThFMVHiPSlK+0cSedng/VaS8bOZbtsBcTcZAR8JP5KeqQ1OYKAi20njdNNRpgnsU//K+JnaXJaGTomr7aYIphoRn9aeShJWKEq9LcozSF7QleEfDI5LYm5bgVkFkRwVDBCVu0DDIkGupo8TZBq+/pMQURYErJQmPKGKjNDkWOLx7Jd5QizdUweIaKrlP7SwJDhZvONjLkOsBBX9UpGxnydhXkfBLQ8IxgojQbLFnJf81JytSljclYYyEFyx0kVBvKWOFJmONpshGAcsduQY5giVNCV51eOdJYo/pLhbvM0uDHSevNKRcrKZIqnCtJeEsO95RoqcgGK4ocZcho1tTYtcZvH41pNQ7vA0WrhIfOSraIIntIAi+NXWCErdbkvrWwjRLrt0NKUdL6KSOscTOdMSOUtBHwL6OLA0vNSdynaWQEnCpIvKaIrJJEbvHkmuNhn6OjM8VkSGSqn1uYJCGHnq9I3aLhNME3t6GjIkO7xrNFumpyTNX/NrwX7CrIRiqqWijI9JO4d1iieykyfiposQIQ8YjjsjlBh6oHWbwRjgYJQn2NgSnNycmJAk3NiXhx44Sxykihxm8ybUwT1OVKySc7vi3OXVkdBJ4AyXBeksDXG0IhgtYY0lY5ahCD0ehborIk5aUWRJviMA7Xt5kyRjonrXENkm8yYqgs8VzgrJmClK20uMM3jRJ0FiQICQF9hdETlLQWRIb5ki6WDfWRPobvO6a4GP5mcOrNzDFELtTkONLh9dXE8xypEg7z8A9jkhrQ6Fhjlg/QVktJXxt4WXzT/03Q8IaQWSqIuEvloQ2mqC9Jfi7wRul4RX3pSPlzpoVlmCtI2jvKHCFhjcM3sN6lqF6HxnKelLjXWbwrpR4xzuCrTUZx2qq9oAh8p6ixCUGr78g8oyjRAtB5CZFwi80VerVpI0h+IeBxa6Zg6kWvpDHaioYYuEsRbDC3eOmC2JvGYLeioxGknL2UATNJN6hmtj1DlpLvDVmocYbrGCVJKOrg4X6DgddLA203BKMFngdJJFtFd7vJLm6KEpc5yjQrkk7M80SGe34X24nSex1Ra5Omgb71JKyg8SrU3i/kARKwWpH0kOGhKkObyfd0ZGjvyXlAkVZ4xRbYJ2irFMkFY1SwyWxr2oo4zlNiV+7zmaweFpT4kR3kaDAFW6xpSqzJay05FtYR4HmZhc9UxKbbfF2V8RG1MBmSaE+kmC6JnaRXK9gsiXhJHl/U0qM0WTcbyhwkYIvFGwjSbjfwhiJt8ZSQU+Bd5+marPMOkVkD0muxYLIfEuhh60x/J92itguihJSEMySVPQnTewnEm+620rTQEMsOfo4/kP/0ARvWjitlpSX7GxBgcMEsd3EEeYWvdytd+Saawi6aCIj1CkGb6Aj9rwhx16Cf3vAwFy5pyLhVonXzy51FDpdEblbkdJbUcEPDEFzQ8qNmhzzLTmmKWKbFCXeEuRabp6rxbvAtLF442QjQ+wEA9eL1xSR7Q0JXzlSHjJ4exq89yR0laScJ/FW6z4a73pFMEfDiRZvuvijIt86RaSFOl01riV2mD1UEvxGk/Geg5aWwGki1zgKPG9J2U8PEg8qYvMsZeytiTRXBMslCU8JSlxi8EabjwUldlDNLfzTUmCgxWsjqWCOHavYAqsknKFIO0yQ61VL5AVFxk6WhEaCAkdJgt9aSkzXlKNX2jEa79waYuc7gq0N3GDJGCBhoiTXUEPsdknCUE1CK0fwsiaylSF2uiDyO4XX3pFhNd7R4itFGc0k/ElBZwWvq+GC6szVeEoS/MZ+qylwpKNKv9Z469UOjqCjwlusicyTxG6VpNxcQ8IncoR4RhLbR+NdpGGmJWOcIzJGUuKPGpQg8rrG21dOMqQssJQ4RxH5jaUqnZuQ0F4Q+cjxLwPtpZbIAk3QTJHQWBE5S1BokoVtDd6lhqr9UpHSUxMcIYl9pojsb8h4SBOsMQcqvOWC2E8EVehqiJ1hrrAEbQxeK0NGZ0Gkq+guSRgniM23bIHVkqwx4hiHd7smaOyglyIyQuM978j4VS08J/A2G1KeMBRo4fBaSNhKUEZfQewVQ/C1I+MgfbEleEzCUw7mKXI0M3hd1EESVji8x5uQ41nxs1q4RMJCCXs7Iq9acpxn22oSDnQ/sJTxsCbHIYZiLyhY05TY0ZLIOQrGaSJDDN4t8pVaIrsqqFdEegtizc1iTew5Q4ayBDMUsQMkXocaYkc0hZua412siZ1rSXlR460zRJ5SlHGe5j801RLMlJTxtaOM3Q1pvxJ45zUlWFD7rsAbpfEm1JHxG0eh8w2R7QQVzBUw28FhFp5QZzq8t2rx2joqulYTWSuJdTYfWwqMFMcovFmSyJPNyLhE4E10pHzYjOC3huArRa571ZsGajQpQx38SBP5pyZB6lMU3khDnp0MBV51BE9o2E+TY5Ml2E8S7C0o6w1xvCZjf0HkVEHCzFoyNmqC+9wdcqN+Tp7jSDheE9ws8Y5V0NJCn2bk2tqSY4okdrEhx1iDN8cSudwepWmAGXKcJXK65H9to8jYQRH7SBF01ESUJdd0TayVInaWhLkOjlXE5irKGOnI6GSWGCJa482zBI9rCr0jyTVcEuzriC1vcr6mwFGSiqy5zMwxBH/TJHwjSPhL8+01kaaSUuMFKTcLEvaUePcrSmwn8DZrgikWb7CGPxkSjhQwrRk57tctmxLsb9sZvL9LSlyuSLlWkqOjwduo8b6Uv1DkmudIeFF2dHCgxVtk8dpIvHpBxhEOdhKk7OLIUSdJ+cSRY57B+0DgGUUlNfpthTfGkauzxrvTsUUaCVhlKeteTXCoJDCa2NOKhOmC4G1H8JBd4OBZReSRGkqcb/CO1PyLJTLB4j1q8JYaIutEjSLX8YKM+a6phdMsdLFUoV5RTm9JSkuDN8WcIon0NZMNZWh1q8C7SJEwV5HxrmnnTrf3KoJBlmCYI2ilSLlfEvlE4011NNgjgthzEua0oKK7JLE7HZHlEl60BLMVFewg4EWNt0ThrVNEVkkiTwpKXSWJzdRENgvKGq4IhjsiezgSFtsfCUq8qki5S1LRQeYQQ4nemmCkImWMw3tFUoUBZk4NOeZYEp4XRKTGa6wJjrWNHBVJR4m3FCnbuD6aak2WsMTh3SZImGCIPKNgsDpVwnsa70K31lCFJZYcwwSMFcQulGTsZuEaSdBXkPGZhu0FsdUO73RHjq8MPGGIfaGIbVTk6iuI3GFgucHrIQkmWSJdBd7BBu+uOryWAhY7+Lki9rK5wtEQzWwvtbqGhIMFwWRJsElsY4m9IIg9L6lCX0VklaPAYkfkZEGDnOWowlBJjtMUkcGK4Lg6EtoZInMUBVYLgn0UsdmCyCz7gIGHFfk+k1QwTh5We7A9x+IdJ6CvIkEagms0hR50eH9UnTQJ+2oiKyVlLFUE+8gBGu8MQ3CppUHesnjTHN4QB/UGPhCTHLFPHMFrCqa73gqObUJGa03wgbhHkrCfpEpzNLE7JDS25FMKhlhKKWKfCgqstLCPu1zBXy0J2ztwjtixBu8UTRn9LVtkmCN2iyFhtME70JHRQ1KVZXqKI/KNIKYMCYs1GUMEKbM1bKOI9LDXC7zbHS+bt+1MTWS9odA9DtrYtpbImQJ2VHh/lisEwaHqUk1kjKTAKknkBEXkbkdMGwq0dnhzLJF3NJH3JVwrqOB4Sca2hti75nmJN0WzxS6UxDYoEpxpa4htVlRjkYE7DZGzJVU72uC9IyhQL4i8YfGWSYLLNcHXloyz7QhNifmKSE9JgfGmuyLhc403Xm9vqcp6gXe3xuuv8F6VJNxkyTHEkHG2g0aKXL0MsXc1bGfgas2//dCONXiNLCX+5mB7eZIl1kHh7ajwpikyzlUUWOVOsjSQlsS+M0R+pPje/dzBXRZGO0rMtgQrLLG9VSu9n6CMXS3BhwYmSoIBhsjNBmZbgusE9BCPCP5triU4VhNbJfE+swSP27aayE8tuTpYYjtrYjMVGZdp2NpS1s6aBnKSHDsbKuplKbHM4a0wMFd/5/DmGyKrJSUaW4IBrqUhx0vyfzTBBLPIUcnZdrAkNsKR0sWRspumSns6Ch0v/qqIbBYUWKvPU/CFoyrDJGwSNFhbA/MlzKqjrO80hRbpKx0Jewsi/STftwGSlKc1JZyAzx05dhLEdnfQvhZOqiHWWEAHC7+30FuRcZUgaO5gpaIK+xsiHRUsqaPElTV40xQZQ107Q9BZE1nryDVGU9ZSQ47bmhBpLcYpUt7S+xuK/FiT8qKjwXYw5ypS2iuCv7q1gtgjhuBuB8LCFY5cUuCNtsQOFcT+4Ih9JX+k8Ea6v0iCIRZOtCT0Et00JW5UeC85Cg0ScK0k411HcG1zKtre3SeITBRk7WfwDhEvaYLTHP9le0m8By0JDwn4TlLW/aJOvGHxdjYUes+ScZigCkYQdNdEOhkiezgShqkx8ueKjI8lDfK2oNiOFvrZH1hS+tk7NV7nOmLHicGWEgubkXKdwdtZknCLJXaCpkrjZBtLZFsDP9CdxWsSr05Sxl6CMmoFbCOgryX40uDtamB7SVmXW4Ihlgpmq+00tBKUUa83WbjLUNkzDmY7cow1JDygyPGlhgGKYKz4vcV7QBNbJIgM11TUqZaMdwTeSguH6rOaw1JRKzaaGyxVm2EJ/uCIrVWUcZUkcp2grMsEjK+DMwS59jQk3Kd6SEq1d0S6uVmO4Bc1lDXTUcHjluCXEq+1OlBDj1pi9zgiXxnKuE0SqTXwhqbETW6RggMEnGl/q49UT2iCzgJvRwVXS2K/d6+ZkyUl7jawSVLit46EwxVljDZwoSQ20sDBihztHfk2yA8NVZghiXwrYHQdfKAOtzsayjhY9bY0yE2CWEeJ9xfzO423xhL5syS2TFJofO2pboHob0nY4GiAgRrvGQEDa/FWSsoaaYl0syRsEt3kWoH3B01shCXhTUWe9w3Bt44SC9QCh3eShQctwbaK2ApLroGCMlZrYqvlY3qYhM0aXpFkPOuoqJ3Dm6fxXrGwVF9gCWZagjPqznfkuMKQ8DPTQRO8ZqG1hPGKEm9IgpGW4DZDgTNriTxvFiq+Lz+0cKfp4wj6OCK9JSnzNSn9LFU7UhKZZMnYwcJ8s8yRsECScK4j5UOB95HFO0CzhY4xJxuCix0lDlEUeMdS6EZBkTsUkZ4K74dugyTXS7aNgL8aqjDfkCE0ZbwkCXpaWCKhl8P7VD5jxykivSyxyZrYERbe168LYu9ZYh86IkscgVLE7tWPKmJv11CgoyJltMEbrohtVAQfO4ImltiHEroYEs7RxAarVpY8AwXMcMReFOTYWe5iiLRQxJ5Q8DtJ8LQhWOhIeFESPGsILhbNDRljNbHzNRlTFbk2S3L0NOS6V1KFJYKUbSTcIIhM0wQ/s2TM0SRMNcQmSap3jCH4yhJZKSkwyRHpYYgsFeQ4U7xoCB7VVOExhXepo9ABBsYbvGWKXPME3lyH95YioZ0gssQRWWbI+FaSMkXijZXwgiTlYdPdkNLaETxlyDVIwqeaEus0aTcYcg0RVOkpR3CSJqIddK+90JCxzsDVloyrFd5ZAr4TBKfaWa6boEA7C7s6EpYaeFPjveooY72mjIccLHJ9HUwVlDhKkmutJDJBwnp1rvulJZggKDRfbXAkvC/4l3ozQOG9a8lxjx0i7nV4jSXc7vhe3OwIxjgSHjdEhhsif9YkPGlus3iLFDnWOFhtCZbJg0UbQcIaR67JjthoCyMEZRwhiXWyxO5QxI6w5NhT4U1WsJvDO60J34fW9hwzwlKij6ZAW9ne4L0s8C6XeBMEkd/LQy1VucBRot6QMlbivaBhoBgjqGiCJNhsqVp/S2SsG6DIONCR0dXhvWbJ+MRRZJkkuEjgDXJjFQW6SSL7GXK8Z2CZg7cVsbWGoKmEpzQ5elpiy8Ryg7dMkLLUEauzeO86CuwlSOlgYLojZWeJ9xM3S1PWfEfKl5ISLQ0MEKR8YOB2QfCxJBjrKPCN4f9MkaSsqoVXJBmP7EpFZ9UQfOoOFwSzBN4MQ8LsGrymlipcJQhmy0GaQjPqCHaXRwuCZwRbqK2Fg9wlClZqYicrIgMdZfxTQ0c7TBIbrChxmuzoKG8XRaSrIhhiyNFJkrC7oIAWMEOQa5aBekPCRknCo4IKPrYkvCDI8aYmY7WFtprgekcJZ3oLIqssCSMtFbQTJKwXYy3BY5oCh2iKPCpJOE+zRdpYgi6O2KmOAgvVCYaU4ySRek1sgyFhJ403QFHiVEmJHwtybO1gs8Hr5+BETQX3War0qZngYGgtVZtoqd6vFSk/UwdZElYqyjrF4HXUeFspIi9IGKf4j92pKGAdCYMVsbcV3kRF0N+R8LUd5PCsIGWoxDtBkCI0nKofdJQxT+LtZflvuc8Q3CjwWkq8KwUpHzkK/NmSsclCL0nseQdj5FRH5CNHSgtLiW80Of5HU9Hhlsga9bnBq3fEVltKfO5IaSTmGjjc4J0otcP7QsJUSQM8pEj5/wCuUuC2DWz8AAAAAElFTkSuQmCC"); } application/library/css/custom_style_filemanager_advanced.css000064400000000314147577724760020756 0ustar00.ui-dialog.ui-widget.ui-widget-content.ui-corner-all.ui-draggable.std42-dialog.touch-punch.elfinder-dialog.ui-resizable.elfinder-dialog-active.ui-front { left: 0 !important; width: 100% !important; } application/library/css/toolbar.css000064400000027773147577724760013531 0ustar00/*********************************************/ /* TOOLBAR STYLES */ /*********************************************/ /* toolbar container */ .elfinder-toolbar { padding: 4px 0 3px 0; border-left: 0 solid transparent; border-top: 0 solid transparent; border-right: 0 solid transparent; max-height: 50%; overflow-y: auto; } /* container for button's group */ .elfinder-buttonset { margin: 1px 4px; float: left; background: transparent; padding: 0; overflow: hidden; } /*.elfinder-buttonset:first-child { margin:0; }*/ /* button */ .elfinder .elfinder-button { min-width: 16px; height: 16px; margin: 0; padding: 4px; float: left; overflow: hidden; position: relative; border: 0 solid; -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; line-height: 1; cursor: default; } .elfinder-rtl .elfinder-button { float: right; } .elfinder-touch .elfinder-button { min-width: 20px; height: 20px; } .elfinder .ui-icon-search { cursor: pointer; } /* separator between buttons, required for berder between button with ui color */ .elfinder-toolbar-button-separator { float: left; padding: 0; height: 24px; border-top: 0 solid; border-right: 0 solid; border-bottom: 0 solid; width: 0; } .elfinder-rtl .elfinder-toolbar-button-separator { float: right; } .elfinder-touch .elfinder-toolbar-button-separator { height: 28px; } /* change icon opacity^ not button */ .elfinder .elfinder-button.ui-state-disabled { opacity: 1; filter: Alpha(Opacity=100); } .elfinder .elfinder-button.ui-state-disabled .elfinder-button-icon, .elfinder .elfinder-button.ui-state-disabled .elfinder-button-text { opacity: .4; filter: Alpha(Opacity=40); } /* rtl enviroment */ .elfinder-rtl .elfinder-buttonset { float: right; } /* icon inside button */ .elfinder-button-icon { width: 16px; height: 16px; /*display:block;*/ display: inline-block; background: url('../img/toolbar.png') no-repeat; } .elfinder-button-text { position: relative; display: inline-block; top: -4px; margin: 0 2px; font-size: 12px; } .elfinder-touch .elfinder-button-icon { transform: scale(1.25); transform-origin: top left; } .elfinder-rtl.elfinder-touch .elfinder-button-icon { transform-origin: top right; } .elfinder-touch .elfinder-button-text { transform: translate(3px, 3px); top: -5px; } .elfinder-rtl.elfinder-touch .elfinder-button-text { transform: translate(-3px, 3px); } .elfinder-touch .elfinder-button-icon.elfinder-contextmenu-extra-icon { transform: scale(2); transform-origin: 12px 8px; } .elfinder-rtl.elfinder-touch .elfinder-button-icon.elfinder-contextmenu-extra-icon { transform-origin: 4px 8px; } /* buttons icons */ .elfinder-button-icon-home { background-position: 0 0; } .elfinder-button-icon-back { background-position: 0 -112px; } .elfinder-button-icon-forward { background-position: 0 -128px; } .elfinder-button-icon-up { background-position: 0 -144px; } .elfinder-button-icon-dir { background-position: 0 -16px; } .elfinder-button-icon-opendir { background-position: 0 -32px; } .elfinder-button-icon-reload { background-position: 0 -160px; } .elfinder-button-icon-open { background-position: 0 -176px; } .elfinder-button-icon-mkdir { background-position: 0 -192px; } .elfinder-button-icon-mkfile { background-position: 0 -208px; } .elfinder-button-icon-rm { background-position: 0 -832px; } .elfinder-button-icon-trash { background-position: 0 -224px; } .elfinder-button-icon-restore { background-position: 0 -816px; } .elfinder-button-icon-copy { background-position: 0 -240px; } .elfinder-button-icon-cut { background-position: 0 -256px; } .elfinder-button-icon-paste { background-position: 0 -272px; } .elfinder-button-icon-getfile { background-position: 0 -288px; } .elfinder-button-icon-duplicate { background-position: 0 -304px; } .elfinder-button-icon-rename { background-position: 0 -320px; } .elfinder-button-icon-edit { background-position: 0 -336px; } .elfinder-button-icon-quicklook { background-position: 0 -352px; } .elfinder-button-icon-upload { background-position: 0 -368px; } .elfinder-button-icon-download { background-position: 0 -384px; } .elfinder-button-icon-info { background-position: 0 -400px; } .elfinder-button-icon-extract { background-position: 0 -416px; } .elfinder-button-icon-archive { background-position: 0 -432px; } .elfinder-button-icon-view { background-position: 0 -448px; } .elfinder-button-icon-view-list { background-position: 0 -464px; } .elfinder-button-icon-help { background-position: 0 -480px; } .elfinder-button-icon-resize { background-position: 0 -512px; } .elfinder-button-icon-link { background-position: 0 -528px; } .elfinder-button-icon-search { background-position: 0 -561px; } .elfinder-button-icon-sort { background-position: 0 -577px; } .elfinder-button-icon-rotate-r { background-position: 0 -625px; } .elfinder-button-icon-rotate-l { background-position: 0 -641px; } .elfinder-button-icon-netmount { background-position: 0 -688px; } .elfinder-button-icon-netunmount { background-position: 0 -96px; } .elfinder-button-icon-places { background-position: 0 -704px; } .elfinder-button-icon-chmod { background-position: 0 -48px; } .elfinder-button-icon-accept { background-position: 0 -736px; } .elfinder-button-icon-menu { background-position: 0 -752px; } .elfinder-button-icon-colwidth { background-position: 0 -768px; } .elfinder-button-icon-fullscreen { background-position: 0 -784px; } .elfinder-button-icon-unfullscreen { background-position: 0 -800px; } .elfinder-button-icon-empty { background-position: 0 -848px; } .elfinder-button-icon-undo { background-position: 0 -864px; } .elfinder-button-icon-redo { background-position: 0 -880px; } .elfinder-button-icon-preference { background-position: 0 -896px; } .elfinder-button-icon-mkdirin { background-position: 0 -912px; } .elfinder-button-icon-selectall { background-position: 0 -928px; } .elfinder-button-icon-selectnone { background-position: 0 -944px; } .elfinder-button-icon-selectinvert { background-position: 0 -960px; } .elfinder-button-icon-opennew { background-position: 0 -976px; } .elfinder-button-icon-hide { background-position: 0 -992px; } .elfinder-button-icon-text { background-position: 0 -1008px; } /* button icon mirroring for rtl */ .elfinder-rtl .elfinder-button-icon-back, .elfinder-rtl .elfinder-button-icon-forward, .elfinder-rtl .elfinder-button-icon-getfile, .elfinder-rtl .elfinder-button-icon-help, .elfinder-rtl .elfinder-button-icon-redo, .elfinder-rtl .elfinder-button-icon-rename, .elfinder-rtl .elfinder-button-icon-search, .elfinder-rtl .elfinder-button-icon-undo, .elfinder-rtl .elfinder-button-icon-view-list, .elfinder-rtl .ui-icon-search { -ms-transform: scale(-1, 1); -webkit-transform: scale(-1, 1); transform: scale(-1, 1); } .elfinder-rtl.elfinder-touch .elfinder-button-icon-back, .elfinder-rtl.elfinder-touch .elfinder-button-icon-forward, .elfinder-rtl.elfinder-touch .elfinder-button-icon-getfile, .elfinder-rtl.elfinder-touch .elfinder-button-icon-help, .elfinder-rtl.elfinder-touch .elfinder-button-icon-redo, .elfinder-rtl.elfinder-touch .elfinder-button-icon-rename, .elfinder-rtl.elfinder-touch .elfinder-button-icon-search, .elfinder-rtl.elfinder-touch .elfinder-button-icon-undo, .elfinder-rtl.elfinder-touch .elfinder-button-icon-view-list, .elfinder-rtl.elfinder-touch .ui-icon-search { -ms-transform: scale(-1.25, 1.25) translateX(16px); -webkit-transform: scale(-1.25, 1.25) translateX(16px); transform: scale(-1.25, 1.25) translateX(16px); } /* button with dropdown menu*/ .elfinder .elfinder-menubutton { overflow: visible; } /* button with spinner icon */ .elfinder-button-icon-spinner { background: url("../img/spinner-mini.gif") center center no-repeat; } /* menu */ .elfinder-button-menu { position: absolute; margin-top: 24px; padding: 3px 0; overflow-y: auto; } .elfinder-touch .elfinder-button-menu { margin-top: 30px; } /* menu item */ .elfinder-button-menu-item { white-space: nowrap; cursor: default; padding: 5px 19px; position: relative; } .elfinder-touch .elfinder-button-menu-item { padding: 12px 19px } /* fix hover ui class */ .elfinder-button-menu .ui-state-hover { border: 0 solid; } .elfinder-button-menu-item-separated { border-top: 1px solid #ccc; } .elfinder-button-menu-item .ui-icon { width: 16px; height: 16px; position: absolute; left: 2px; top: 50%; margin-top: -8px; display: none; } .elfinder-button-menu-item-selected .ui-icon { display: block; } .elfinder-button-menu-item-selected-asc .ui-icon-arrowthick-1-s { display: none; } .elfinder-button-menu-item-selected-desc .ui-icon-arrowthick-1-n { display: none; } /* hack for upload button */ .elfinder-button form { position: absolute; top: 0; right: 0; opacity: 0; filter: Alpha(Opacity=0); cursor: pointer; } .elfinder .elfinder-button form input { background: transparent; cursor: default; } /* search "button" */ .elfinder .elfinder-button-search { border: 0 solid; background: transparent; padding: 0; margin: 1px 4px; height: auto; min-height: 26px; width: 70px; overflow: visible; } .elfinder .elfinder-button-search.ui-state-active { width: 220px; } /* search "pull down menu" */ .elfinder .elfinder-button-search-menu { font-size: 8pt; text-align: center; width: auto; min-width: 180px; position: absolute; top: 30px; padding-right: 5px; padding-left: 5px; } .elfinder-ltr .elfinder-button-search-menu { right: 22px; left: auto; } .elfinder-rtl .elfinder-button-search-menu { right: auto; left: 22px; } .elfinder-touch .elfinder-button-search-menu { top: 34px; } .elfinder .elfinder-button-search-menu div { margin-left: auto; margin-right: auto; margin-top: 5px; margin-bottom: 5px; display: table; } .elfinder .elfinder-button-search-menu div .ui-state-hover { border: 1px solid; } /* ltr/rte enviroment */ .elfinder-ltr .elfinder-button-search { float: right; margin-right: 10px; } .elfinder-rtl .elfinder-button-search { float: left; margin-left: 10px; } .elfinder-rtl .ui-controlgroup > .ui-controlgroup-item { float: right; } /* search text field */ .elfinder-button-search input[type=text] { box-sizing: border-box; width: 100%; height: 26px; padding: 0 20px; line-height: 22px; border: 0 solid; border: 1px solid #aaa; -moz-border-radius: 12px; -webkit-border-radius: 12px; border-radius: 12px; outline: 0px solid; } .elfinder-button-search input::-ms-clear { display: none; } .elfinder-touch .elfinder-button-search input { height: 30px; line-height: 28px; } .elfinder-rtl .elfinder-button-search input { direction: rtl; } /* icons */ .elfinder-button-search .ui-icon { position: absolute; height: 18px; top: 50%; margin: -8px 4px 0 4px; opacity: .6; filter: Alpha(Opacity=60); } .elfinder-button-search-menu .ui-checkboxradio-icon { display: none; } /* search/close icons */ .elfinder-ltr .elfinder-button-search .ui-icon-search { left: 0; } .elfinder-rtl .elfinder-button-search .ui-icon-search { right: 0; } .elfinder-ltr .elfinder-button-search .ui-icon-close { right: 0; } .elfinder-rtl .elfinder-button-search .ui-icon-close { left: 0; } /* toolbar swipe handle */ .elfinder-toolbar-swipe-handle { position: absolute; top: 0px; left: 0px; height: 50px; width: 100%; pointer-events: none; background: linear-gradient(to bottom, rgba(221, 228, 235, 1) 0, rgba(221, 228, 235, 0.8) 2px, rgba(216, 223, 230, 0.3) 5px, rgba(0, 0, 0, 0.1) 95%, rgba(0, 0, 0, 0) 100%); } application/library/css/dialog.css000064400000033200147577724760013304 0ustar00/*********************************************/ /* DIALOGS STYLES */ /*********************************************/ /* common dialogs class */ .std42-dialog { padding: 0; position: absolute; left: auto; right: auto; box-sizing: border-box; } .std42-dialog.elfinder-dialog-minimized { overFlow: hidden; position: relative; float: left; width: auto; cursor: pointer; } .elfinder-rtl .std42-dialog.elfinder-dialog-minimized { float: right; } .std42-dialog input { border: 1px solid; } /* titlebar */ .std42-dialog .ui-dialog-titlebar { border-left: 0 solid transparent; border-top: 0 solid transparent; border-right: 0 solid transparent; font-weight: normal; padding: .2em 1em; } .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar { padding: 0 .5em; height: 20px; } .elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar { padding: .3em .5em; } .std42-dialog.ui-draggable-disabled .ui-dialog-titlebar { cursor: default; } .std42-dialog .ui-dialog-titlebar .ui-widget-header { border: none; cursor: pointer; } .std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title { display: inherit; word-break: break-all; } .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title { display: list-item; display: -moz-inline-box; white-space: nowrap; word-break: normal; overflow: hidden; word-wrap: normal; overflow-wrap: normal; max-width: -webkit-calc(100% - 24px); max-width: -moz-calc(100% - 24px); max-width: calc(100% - 24px); } .elfinder-touch .std42-dialog .ui-dialog-titlebar span.elfinder-dialog-title { padding-top: .15em; } .elfinder-touch .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar span.elfinder-dialog-title { max-width: -webkit-calc(100% - 36px); max-width: -moz-calc(100% - 36px); max-width: calc(100% - 36px); } .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button { position: relative; float: left; top: 10px; left: -10px; right: 10px; width: 20px; height: 20px; padding: 1px; margin: -10px 1px 0 1px; background-color: transparent; background-image: none; } .elfinder-touch .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button { -moz-transform: scale(1.2); zoom: 1.2; padding-left: 6px; padding-right: 6px; height: 24px; } .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button-right { float: right; } .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right { left: 10px; right: -10px; } .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon { width: 17px; height: 17px; border-width: 1px; opacity: .7; filter: Alpha(Opacity=70); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } .elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon { opacity: .5; filter: Alpha(Opacity=50); } .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar .elfinder-titlebar-button .ui-icon { opacity: 1; filter: Alpha(Opacity=100); } .std42-dialog.elfinder-dialog-minimized .ui-dialog-titlebar select { display: none; } .elfinder-spinner { width: 14px; height: 14px; background: url("../img/spinner-mini.gif") center center no-repeat; margin: 0 5px; display: inline-block; vertical-align: middle; } .elfinder-ltr .elfinder-spinner, .elfinder-ltr .elfinder-spinner-text { float: left; } .elfinder-rtl .elfinder-spinner, .elfinder-rtl .elfinder-spinner-text { float: right; } /* resize handle for touch devices */ .elfinder-touch .std42-dialog.ui-dialog:not(ui-resizable-disabled) .ui-resizable-se { width: 12px; height: 12px; -moz-transform-origin: bottom right; -moz-transform: scale(1.5); zoom: 1.5; right: -7px; bottom: -7px; margin: 3px 7px 7px 3px; background-position: -64px -224px; } .elfinder-rtl .elfinder-dialog .ui-dialog-titlebar { text-align: right; } /* content */ .std42-dialog .ui-dialog-content { padding: .3em .5em; } .elfinder .std42-dialog .ui-dialog-content, .elfinder .std42-dialog .ui-dialog-content * { -webkit-user-select: auto; -moz-user-select: text; -khtml-user-select: text; user-select: text; } .elfinder .std42-dialog .ui-dialog-content label { border: none; } /* buttons */ .std42-dialog .ui-dialog-buttonpane { border: 0 solid; margin: 0; padding: .5em; text-align: right; } .elfinder-rtl .std42-dialog .ui-dialog-buttonpane { text-align: left; } .std42-dialog .ui-dialog-buttonpane button { margin: .2em 0 0 .4em; padding: .2em; outline: 0px solid; } .std42-dialog .ui-dialog-buttonpane button span { padding: 2px 9px; } .std42-dialog .ui-dialog-buttonpane button span.ui-icon { padding: 2px; } .elfinder-dialog .ui-resizable-e, .elfinder-dialog .ui-resizable-s { width: 0; height: 0; } .std42-dialog .ui-button input { cursor: pointer; } .std42-dialog select { border: 1px solid #ccc; } /* error/notify/confirm dialogs icon */ .elfinder-dialog-icon { position: absolute; width: 32px; height: 32px; left: 10px; top: 50%; margin-top: -15px; background: url("../img/dialogs.png") 0 0 no-repeat; } .elfinder-rtl .elfinder-dialog-icon { left: auto; right: 10px; } /*********************** ERROR DIALOG **************************/ .elfinder-dialog-error .ui-dialog-content, .elfinder-dialog-confirm .ui-dialog-content { padding-left: 56px; min-height: 35px; } .elfinder-rtl .elfinder-dialog-error .ui-dialog-content, .elfinder-rtl .elfinder-dialog-confirm .ui-dialog-content { padding-left: 0; padding-right: 56px; } .elfinder-dialog-error .elfinder-err-var { word-break: break-all; } /*********************** NOTIFY DIALOG **************************/ .elfinder-dialog-notify { top : 36px; width : 280px; } .elfinder-ltr .elfinder-dialog-notify { right : 12px; } .elfinder-rtl .elfinder-dialog-notify { left : 12px; } .elfinder-dialog-notify .ui-dialog-titlebar { height: 5px; overflow: hidden; } .elfinder.elfinder-touch > .elfinder-dialog-notify .ui-dialog-titlebar { height: 10px; } .elfinder > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button { top: 2px; } .elfinder.elfinder-touch > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button { top: 4px; } .elfinder > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button { left: -18px; right: 18px; } .elfinder > .elfinder-dialog-notify .ui-dialog-titlebar .elfinder-titlebar-button.elfinder-titlebar-button-right { left: 18px; right: -18px; } .ui-dialog-titlebar .elfinder-ui-progressbar { position: absolute; top: 17px; } .elfinder-touch .ui-dialog-titlebar .elfinder-ui-progressbar { top: 26px; } .elfinder-dialog-notify.elfinder-titlebar-button-hide .ui-dialog-titlebar-close { display: none; } .elfinder-dialog-notify.elfinder-dialog-minimized.elfinder-titlebar-button-hide .ui-dialog-titlebar span.elfinder-dialog-title { max-width: initial; } .elfinder-dialog-notify .ui-dialog-content { padding: 0; } /* one notification container */ .elfinder-notify { border-bottom: 1px solid #ccc; position: relative; padding: .5em; text-align: center; overflow: hidden; } .elfinder-ltr .elfinder-notify { padding-left: 36px; } .elfinder-rtl .elfinder-notify { padding-right: 36px; } .elfinder-notify:last-child { border: 0 solid; } /* progressbar */ .elfinder-notify-progressbar { width: 180px; height: 8px; border: 1px solid #aaa; background: #f5f5f5; margin: 5px auto; overflow: hidden; } .elfinder-notify-progress { width: 100%; height: 8px; background: url(../img/progress.gif) center center repeat-x; } .elfinder-notify-progressbar, .elfinder-notify-progress { -moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px; } .elfinder-notify-cancel { position: relative; top: -18px; right: calc(-50% + 15px); } .elfinder-notify-cancel .ui-icon-close { background-position: -80px -128px; width: 18px; height: 18px; border-radius: 9px; border: none; background-position: -80px -128px; cursor: pointer; } /* icons */ .elfinder-dialog-icon-open, .elfinder-dialog-icon-readdir, .elfinder-dialog-icon-file { background-position: 0 -225px; } .elfinder-dialog-icon-reload { background-position: 0 -225px; } .elfinder-dialog-icon-mkdir { background-position: 0 -64px; } .elfinder-dialog-icon-mkfile { background-position: 0 -96px; } .elfinder-dialog-icon-copy, .elfinder-dialog-icon-prepare, .elfinder-dialog-icon-move { background-position: 0 -128px; } .elfinder-dialog-icon-upload { background-position: 0 -160px; } .elfinder-dialog-icon-chunkmerge { background-position: 0 -160px; } .elfinder-dialog-icon-rm { background-position: 0 -192px; } .elfinder-dialog-icon-download { background-position: 0 -260px; } .elfinder-dialog-icon-save { background-position: 0 -295px; } .elfinder-dialog-icon-rename, .elfinder-dialog-icon-chkcontent { background-position: 0 -330px; } .elfinder-dialog-icon-zipdl, .elfinder-dialog-icon-archive, .elfinder-dialog-icon-extract { background-position: 0 -365px; } .elfinder-dialog-icon-search { background-position: 0 -402px; } .elfinder-dialog-icon-resize, .elfinder-dialog-icon-loadimg, .elfinder-dialog-icon-netmount, .elfinder-dialog-icon-netunmount, .elfinder-dialog-icon-chmod, .elfinder-dialog-icon-preupload, .elfinder-dialog-icon-url, .elfinder-dialog-icon-dim { background-position: 0 -434px; } /*********************** CONFIRM DIALOG **************************/ .elfinder-dialog-confirm-applyall, .elfinder-dialog-confirm-encoding { padding: 0 1em; margin: 0; } .elfinder-ltr .elfinder-dialog-confirm-applyall, .elfinder-ltr .elfinder-dialog-confirm-encoding { text-align: left; } .elfinder-rtl .elfinder-dialog-confirm-applyall, .elfinder-rtl .elfinder-dialog-confirm-encoding { text-align: right; } .elfinder-dialog-confirm .elfinder-dialog-icon { background-position: 0 -32px; } .elfinder-dialog-confirm .ui-dialog-buttonset { width: auto; } /*********************** FILE INFO DIALOG **************************/ .elfinder-info-title .elfinder-cwd-icon { float: left; width: 48px; height: 48px; margin-right: 1em; } .elfinder-rtl .elfinder-info-title .elfinder-cwd-icon { float: right; margin-right: 0; margin-left: 1em; } .elfinder-info-title strong { display: block; padding: .3em 0 .5em 0; } .elfinder-info-tb { min-width: 200px; border: 0 solid; margin: 1em .2em 1em .2em; width: 100%; } .elfinder-info-tb td { white-space: pre-wrap; padding: 2px; } .elfinder-info-tb td.elfinder-info-label { white-space: nowrap; } .elfinder-info-tb td.elfinder-info-hash { display: inline-block; word-break: break-all; max-width: 32ch; } .elfinder-ltr .elfinder-info-tb tr td:first-child { text-align: right; } .elfinder-ltr .elfinder-info-tb span { float: left; } .elfinder-rtl .elfinder-info-tb tr td:first-child { text-align: left; } .elfinder-rtl .elfinder-info-tb span { float: right; } .elfinder-info-tb a { outline: none; text-decoration: underline; } .elfinder-info-tb a:hover { text-decoration: none; } .elfinder-netmount-tb { margin: 0 auto; } .elfinder-netmount-tb select, .elfinder-netmount-tb .elfinder-button-icon { cursor: pointer; } button.elfinder-info-button { margin: -3.5px 0; cursor: pointer; } /*********************** UPLOAD DIALOG **************************/ .elfinder-upload-dropbox { display: table-cell; text-align: center; vertical-align: middle; padding: 0.5em; border: 3px dashed #aaa; width: 9999px; height: 80px; overflow: hidden; word-break: keep-all; } .elfinder-upload-dropbox.ui-state-hover { background: #dfdfdf; border: 3px dashed #555; } .elfinder-upload-dialog-or { margin: .3em 0; text-align: center; } .elfinder-upload-dialog-wrapper { text-align: center; } .elfinder-upload-dialog-wrapper .ui-button { position: relative; overflow: hidden; } .elfinder-upload-dialog-wrapper .ui-button form { position: absolute; right: 0; top: 0; width: 100%; opacity: 0; filter: Alpha(Opacity=0); } .elfinder-upload-dialog-wrapper .ui-button form input { padding: 50px 0 0; font-size: 3em; width: 100%; } /* dialog for elFinder itself */ .dialogelfinder .dialogelfinder-drag { border-left: 0 solid; border-top: 0 solid; border-right: 0 solid; font-weight: normal; padding: 2px 12px; cursor: move; position: relative; text-align: left; } .elfinder-rtl .dialogelfinder-drag { text-align: right; } .dialogelfinder-drag-close { position: absolute; top: 50%; margin-top: -8px; } .elfinder-ltr .dialogelfinder-drag-close { right: 12px; } .elfinder-rtl .dialogelfinder-drag-close { left: 12px; } /*********************** RM CONFIRM **************************/ .elfinder-rm-title { margin-bottom: .5ex; } .elfinder-rm-title .elfinder-cwd-icon { float: left; width: 48px; height: 48px; margin-right: 1em; } .elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon { float: right; margin-right: 0; margin-left: 1em; } .elfinder-rm-title strong { display: block; /*word-wrap: break-word;*/ white-space: pre-wrap; word-break: normal; overflow: hidden; text-overflow: ellipsis; } .elfinder-rm-title + br { display: none; } application/library/css/commands.css000064400000046164147577724760013663 0ustar00/******************************************************************/ /* COMMANDS STYLES */ /******************************************************************/ /********************** COMMAND "RESIZE" ****************************/ .elfinder-resize-container { margin-top: .3em; } .elfinder-resize-type { float: left; margin-bottom: .4em; } .elfinder-resize-control { float: left; } .elfinder-resize-control input[type=number] { border: 1px solid #aaa; text-align: right; width: 4.5em; } .elfinder-mobile .elfinder-resize-control input[type=number] { width: 3.5em; } .elfinder-resize-control input.elfinder-resize-bg { text-align: center; width: 5em; direction: ltr; } .elfinder-dialog-resize .elfinder-resize-control-panel { margin-top: 10px; } .elfinder-dialog-resize .elfinder-resize-imgrotate, .elfinder-dialog-resize .elfinder-resize-pallet { cursor: pointer; } .elfinder-dialog-resize .elfinder-resize-picking { cursor: crosshair; } .elfinder-dialog-resize .elfinder-resize-grid8 + button { padding-top: 2px; padding-bottom: 2px; } .elfinder-resize-preview { width: 400px; height: 400px; padding: 10px; background: #fff; border: 1px solid #aaa; float: right; position: relative; overflow: hidden; text-align: left; direction: ltr; } .elfinder-resize-handle { position: relative; } .elfinder-resize-handle-hline, .elfinder-resize-handle-vline { position: absolute; background-image: url("../img/crop.gif"); } .elfinder-resize-handle-hline { width: 100%; height: 1px !important; background-repeat: repeat-x; } .elfinder-resize-handle-vline { width: 1px !important; height: 100%; background-repeat: repeat-y; } .elfinder-resize-handle-hline-top { top: 0; left: 0; } .elfinder-resize-handle-hline-bottom { bottom: 0; left: 0; } .elfinder-resize-handle-vline-left { top: 0; left: 0; } .elfinder-resize-handle-vline-right { top: 0; right: 0; } .elfinder-resize-handle-point { position: absolute; width: 8px; height: 8px; border: 1px solid #777; background: transparent; } .elfinder-resize-handle-point-n { top: 0; left: 50%; margin-top: -5px; margin-left: -5px; } .elfinder-resize-handle-point-ne { top: 0; right: 0; margin-top: -5px; margin-right: -5px; } .elfinder-resize-handle-point-e { top: 50%; right: 0; margin-top: -5px; margin-right: -5px; } .elfinder-resize-handle-point-se { bottom: 0; right: 0; margin-bottom: -5px; margin-right: -5px; } .elfinder-resize-handle-point-s { bottom: 0; left: 50%; margin-bottom: -5px; margin-left: -5px; } .elfinder-resize-handle-point-sw { bottom: 0; left: 0; margin-bottom: -5px; margin-left: -5px; } .elfinder-resize-handle-point-w { top: 50%; left: 0; margin-top: -5px; margin-left: -5px; } .elfinder-resize-handle-point-nw { top: 0; left: 0; margin-top: -5px; margin-left: -5px; } .elfinder-dialog.elfinder-dialog-resize .ui-resizable-e { width: 10px; height: 100%; } .elfinder-dialog.elfinder-dialog-resize .ui-resizable-s { width: 100%; height: 10px; } .elfinder-resize-loading { position: absolute; width: 200px; height: 30px; top: 50%; margin-top: -25px; left: 50%; margin-left: -100px; text-align: center; background: url(../img/progress.gif) center bottom repeat-x; } .elfinder-resize-row { margin-bottom: 9px; position: relative; } .elfinder-resize-label { float: left; width: 80px; padding-top: 3px; } .elfinder-resize-checkbox-label { border: 1px solid transparent; } .elfinder-dialog-resize .elfinder-resize-whctrls { margin: -20px 5px 0 5px; } .elfinder-ltr .elfinder-dialog-resize .elfinder-resize-whctrls { float: right; } .elfinder-rtl .elfinder-dialog-resize .elfinder-resize-whctrls { float: left; } .elfinder-dialog-resize .ui-resizable-e, .elfinder-dialog-resize .ui-resizable-w { height: 100%; width: 10px; } .elfinder-dialog-resize .ui-resizable-s, .elfinder-dialog-resize .ui-resizable-n { width: 100%; height: 10px; } .elfinder-dialog-resize .ui-resizable-e { margin-right: -7px; } .elfinder-dialog-resize .ui-resizable-w { margin-left: -7px; } .elfinder-dialog-resize .ui-resizable-s { margin-bottom: -7px; } .elfinder-dialog-resize .ui-resizable-n { margin-top: -7px; } .elfinder-dialog-resize .ui-resizable-se, .elfinder-dialog-resize .ui-resizable-sw, .elfinder-dialog-resize .ui-resizable-ne, .elfinder-dialog-resize .ui-resizable-nw { width: 10px; height: 10px; } .elfinder-dialog-resize .ui-resizable-se { background: transparent; bottom: 0; right: 0; margin-right: -7px; margin-bottom: -7px; } .elfinder-dialog-resize .ui-resizable-sw { margin-left: -7px; margin-bottom: -7px; } .elfinder-dialog-resize .ui-resizable-ne { margin-right: -7px; margin-top: -7px; } .elfinder-dialog-resize .ui-resizable-nw { margin-left: -7px; margin-top: -7px; } .elfinder-touch .elfinder-dialog-resize .ui-resizable-s, .elfinder-touch .elfinder-dialog-resize .ui-resizable-n { height: 20px; } .elfinder-touch .elfinder-dialog-resize .ui-resizable-e, .elfinder-touch .elfinder-dialog-resize .ui-resizable-w { width: 20px; } .elfinder-touch .elfinder-dialog-resize .ui-resizable-se, .elfinder-touch .elfinder-dialog-resize .ui-resizable-sw, .elfinder-touch .elfinder-dialog-resize .ui-resizable-ne, .elfinder-touch .elfinder-dialog-resize .ui-resizable-nw { width: 30px; height: 30px; } .elfinder-touch .elfinder-dialog-resize .elfinder-resize-preview .ui-resizable-se { width: 30px; height: 30px; margin: 0; } .elfinder-dialog-resize .ui-icon-grip-solid-vertical { position: absolute; top: 50%; right: 0; margin-top: -8px; margin-right: -11px; } .elfinder-dialog-resize .ui-icon-grip-solid-horizontal { position: absolute; left: 50%; bottom: 0; margin-left: -8px; margin-bottom: -11px;; } .elfinder-dialog-resize .elfinder-resize-row .ui-buttonset { float: right; } .elfinder-dialog-resize .elfinder-resize-degree input, .elfinder-dialog-resize input.elfinder-resize-quality { width: 3.5em; } .elfinder-mobile .elfinder-dialog-resize .elfinder-resize-degree input, .elfinder-mobile .elfinder-dialog-resize input.elfinder-resize-quality { width: 2.5em; } .elfinder-dialog-resize .elfinder-resize-degree button.ui-button { padding: 6px 8px; } .elfinder-dialog-resize button.ui-button span { padding: 0; } .elfinder-dialog-resize .elfinder-resize-jpgsize { font-size: 90%; } .ui-widget-content .elfinder-resize-container .elfinder-resize-rotate-slider { width: 195px; margin: 10px 7px; background-color: #fafafa; } .elfinder-dialog-resize .elfinder-resize-type span.ui-checkboxradio-icon { display: none; } .elfinder-resize-preset-container { box-sizing: border-box; border-radius: 5px; } /********************** COMMAND "EDIT" ****************************/ /* edit text file textarea */ .elfinder-file-edit { width: 100%; height: 100%; margin: 0; padding: 2px; border: 1px solid #ccc; box-sizing: border-box; resize: none; } .elfinder-touch .elfinder-file-edit { font-size: 16px; } /* edit area */ .elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor { background-color: #fff; } .elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor { width: 100%; height: 300px; max-height: 100%; text-align: center; } .elfinder-dialog-edit .ui-dialog-content.elfinder-edit-editor .elfinder-edit-imageeditor * { -webkit-user-select: none; -moz-user-select: none; -khtml-user-select: none; user-select: none; } .elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-main { top: 0; } .elfinder-edit-imageeditor .tui-image-editor-main-container .tui-image-editor-header { display: none; } .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-crop .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-flip .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-rotate .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-draw .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-shape .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-icon .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-text .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-mask .tui-image-editor-wrap, .elfinder-edit-imageeditor .tui-image-editor-main.tui-image-editor-menu-filter .tui-image-editor-wrap { height: calc(100% - 150px); } /* bottom margen for softkeyboard on fullscreen mode */ .elfinder-touch.elfinder-fullscreen-native textarea.elfinder-file-edit { padding-bottom: 20em; margin-bottom: -20em; } .elfinder-dialog-edit .ui-dialog-buttonpane .elfinder-dialog-confirm-encoding { font-size: 12px; } .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras { margin: 0 1em 0 .2em; float: left; } .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras-quality { padding-top: 6px; } .ui-dialog-buttonpane .ui-dialog-buttonset.elfinder-edit-extras select { font-size: 12px; margin-top: 8px; } .elfinder-dialog-edit .ui-dialog-buttonpane .ui-icon { cursor: pointer; } .elfinder-edit-spinner { position: absolute; top: 50%; text-align: center; width: 100%; font-size: 16pt; } .elfinder-dialog-edit .elfinder-edit-spinner .elfinder-spinner, .elfinder-dialog-edit .elfinder-edit-spinner .elfinder-spinner-text { float: none; } .elfinder-dialog-edit .elfinder-toast > div { width: 280px; } .elfinder-edit-onlineconvert-button { display: inline-block; width: 180px; min-height: 30px; vertical-align: top; } .elfinder-edit-onlineconvert-button button, .elfinder-edit-onlineconvert-bottom-btn button { cursor: pointer; } .elfinder-edit-onlineconvert-bottom-btn button.elfinder-button-ios-multiline { -webkit-appearance: none; border-radius: 16px; color: #000; text-align: center; padding: 8px; background-color: #eee; background-image: -webkit-linear-gradient(top, hsl(0,0%,98%) 0%,hsl(0,0%,77%) 100%); background-image: linear-gradient(to bottom, hsl(0,0%,98%) 0%,hsl(0,0%,77%) 100%); } .elfinder-edit-onlineconvert-button .elfinder-button-icon { margin: 0 10px; vertical-align: middle; cursor: pointer; } .elfinder-edit-onlineconvert-bottom-btn { text-align: center; margin: 10px 0 0; } .elfinder-edit-onlineconvert-link { margin-top: 1em; text-align: center; } .elfinder-edit-onlineconvert-link .elfinder-button-icon { background-image: url("../img/editor-icons.png"); background-repeat: no-repeat; background-position: 0 -144px; margin-bottom: -3px; } .elfinder-edit-onlineconvert-link a { text-decoration: none; } /********************** COMMAND "SORT" ****************************/ /* for list table header sort triangle icon */ div.elfinder-cwd-wrapper-list tr.ui-state-default td { position: relative; } div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon { position: absolute; top: 4px; left: 0; right: 0; margin: auto 0px auto auto; } .elfinder-touch div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon { top: 7px; } .elfinder-rtl div.elfinder-cwd-wrapper-list tr.ui-state-default td span.ui-icon { margin: auto auto auto 0px; } /********************** COMMAND "HELP" ****************************/ /* help dialog */ .elfinder-help { margin-bottom: .5em; -webkit-overflow-scrolling: touch; } /* fix tabs */ .elfinder-help .ui-tabs-panel { padding: .5em; overflow: auto; padding: 10px; } .elfinder-dialog .ui-tabs .ui-tabs-nav li { overflow: hidden; } .elfinder-dialog .ui-tabs .ui-tabs-nav li a { padding: .2em .8em; display: inline-block; } .elfinder-touch .elfinder-dialog .ui-tabs .ui-tabs-nav li a { padding: .5em .5em; } .elfinder-dialog .ui-tabs-active a { background: inherit; } .elfinder-help-shortcuts { height: auto; padding: 10px; margin: 0; box-sizing: border-box; } .elfinder-help-shortcut { white-space: nowrap; clear: both; } .elfinder-help-shortcut-pattern { float: left; width: 160px; } .elfinder-help-logo { width: 100px; height: 96px; float: left; margin-right: 1em; background: url('../img/logo.png') center center no-repeat; } .elfinder-help h3 { font-size: 1.5em; margin: .2em 0 .3em 0; } .elfinder-help-separator { clear: both; padding: .5em; } .elfinder-help-link { display: inline-block; margin-right: 12px; padding: 2px 0; white-space: nowrap; } .elfinder-rtl .elfinder-help-link { margin-right: 0; margin-left: 12px; } .elfinder-help .ui-priority-secondary { font-size: .9em; } .elfinder-help .ui-priority-primary { margin-bottom: 7px; } .elfinder-help-team { clear: both; text-align: right; border-bottom: 1px solid #ccc; margin: .5em 0; font-size: .9em; } .elfinder-help-team div { float: left; } .elfinder-help-license { font-size: .9em; } .elfinder-help-disabled { font-weight: bold; text-align: center; margin: 90px 0; } .elfinder-help .elfinder-dont-panic { display: block; border: 1px solid transparent; width: 200px; height: 200px; margin: 30px auto; text-decoration: none; text-align: center; position: relative; background: #d90004; -moz-box-shadow: 5px 5px 9px #111; -webkit-box-shadow: 5px 5px 9px #111; box-shadow: 5px 5px 9px #111; background: -moz-radial-gradient(80px 80px, circle farthest-corner, #d90004 35%, #960004 100%); background: -webkit-gradient(radial, 80 80, 60, 80 80, 120, from(#d90004), to(#960004)); -moz-border-radius: 100px; -webkit-border-radius: 100px; border-radius: 100px; outline: none; } .elfinder-help .elfinder-dont-panic span { font-size: 3em; font-weight: bold; text-align: center; color: #fff; position: absolute; left: 0; top: 45px; } ul.elfinder-help-integrations ul { margin-bottom: 1em; padding: 0; margin: 0 1em 1em; } ul.elfinder-help-integrations a { text-decoration: none; } ul.elfinder-help-integrations a:hover { text-decoration: underline; } .elfinder-help-debug { height: 100%; padding: 0; margin: 0; overflow: none; border: none; } .elfinder-help-debug .ui-tabs-panel { padding: 0; margin: 0; overflow: auto; } .elfinder-help-debug fieldset { margin-bottom: 10px; border-color: #778899; border-radius: 10px; } .elfinder-help-debug legend { font-size: 1.2em; font-weight: bold; color: #2e8b57; } .elfinder-help-debug dl { margin: 0; } .elfinder-help-debug dt { color: #778899; } .elfinder-help-debug dt:before { content: "["; } .elfinder-help-debug dt:after { content: "]"; } .elfinder-help-debug dd { margin-left: 1em; } .elfinder-help-debug dd span { /*font-size: 1.2em;*/ } /********************** COMMAND "PREFERENCE" ****************************/ .elfinder-dialog .elfinder-preference .ui-tabs-nav { margin-bottom: 1px; height: auto; } /* fix tabs */ .elfinder-preference .ui-tabs-panel { padding: 10px 10px 0; overflow: auto; box-sizing: border-box; -webkit-overflow-scrolling: touch; } .elfinder-preference a.ui-state-hover, .elfinder-preference label.ui-state-hover { border: none; } .elfinder-preference dl { width: 100%; display: inline-block; margin: .5em 0; } .elfinder-preference dt { display: block; width: 200px; clear: left; float: left; max-width: 50%; } .elfinder-rtl .elfinder-preference dt { clear: right; float: right; } .elfinder-preference dd { margin-bottom: 1em; } .elfinder-preference dt label { cursor: pointer; } .elfinder-preference dd label, .elfinder-preference dd input[type=checkbox] { white-space: nowrap; display: inline-block; cursor: pointer; } .elfinder-preference dt.elfinder-preference-checkboxes { width: 100%; max-width: none; } .elfinder-preference dd.elfinder-preference-checkboxes { padding-top: 3ex; } .elfinder-preference select { max-width: 100%; } .elfinder-preference dd.elfinder-preference-iconSize .ui-slider { width: 50%; max-width: 100px; display: inline-block; margin: 0 10px; } .elfinder-preference button { margin: 0 16px; } .elfinder-preference button + button { margin: 0 -10px; } .elfinder-preference .elfinder-preference-taball .elfinder-reference-hide-taball { display: none; } .elfinder-preference-theme fieldset { margin-bottom: 10px; } .elfinder-preference-theme legend a { font-size: 1.8em; text-decoration: none; cursor: pointer; } .elfinder-preference-theme dt { width: 20%; word-break: break-all; } .elfinder-preference-theme dt:after { content: " :"; } .elfinder-preference-theme dd { margin-inline-start: 20%; } .elfinder-preference img.elfinder-preference-theme-image { display: block; margin-left: auto; margin-right: auto; max-width: 90%; max-height: 200px; cursor: pointer; } .elfinder-preference-theme-btn { text-align: center; } .elfinder-preference-theme button.elfinder-preference-theme-default { display: inline; margin: 0 10px; font-size: 8pt; } /********************** COMMAND "INFO" ****************************/ .elfinder-rtl .elfinder-info-title .elfinder-cwd-icon:before { right: 33px; left: auto; } .elfinder-info-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after { content: none; } /********************** COMMAND "UPLOAD" ****************************/ .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect { position: absolute; bottom: 2px; width: 16px; height: 16px; padding: 10px; border: none; overflow: hidden; cursor: pointer; } .elfinder-ltr .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect { left: 2px; } .elfinder-rtl .elfinder-upload-dialog-wrapper .elfinder-upload-dirselect { right: 2px; } /********************** COMMAND "RM" ****************************/ .elfinder-ltr .elfinder-rm-title .elfinder-cwd-icon:before { left: 38px; } .elfinder-rtl .elfinder-rm-title .elfinder-cwd-icon:before { right: 86px; left: auto; } .elfinder-rm-title .elfinder-cwd-icon.elfinder-cwd-bgurl:after { content: none; } /********************** COMMAND "RENAME" ****************************/ .elfinder-rename-batch div { margin: 5px 8px; } .elfinder-rename-batch .elfinder-rename-batch-name input { width: 100%; font-size: 1.6em; } .elfinder-rename-batch-type { text-align: center; } .elfinder-rename-batch .elfinder-rename-batch-type label { margin: 2px; font-size: .9em; } .elfinder-rename-batch-preview { padding: 0 8px; font-size: 1.1em; min-height: 4ex; } application/library/css/toast.css000064400000012067147577724760013207 0ustar00/* * CSS for Toastr * Copyright 2012-2015 * Authors: John Papa, Hans FjĂ€llemark, and Tim Ferrell. * All Rights Reserved. * Use, reproduction, distribution, and modification of this code is subject to the terms and * conditions of the MIT license, available at http://www.opensource.org/licenses/mit-license.php * * ARIA Support: Greta Krafsig * * Project: https://github.com/CodeSeven/toastr */ .elfinder .elfinder-toast { position: absolute; top: 12px; right: 12px; max-width: 90%; cursor: default; } .elfinder .elfinder-toast > div { position: relative; pointer-events: auto; overflow: hidden; margin: 0 0 6px; padding: 8px 16px 8px 50px; -moz-border-radius: 3px 3px 3px 3px; -webkit-border-radius: 3px 3px 3px 3px; border-radius: 3px 3px 3px 3px; background-position: 15px center; background-repeat: no-repeat; -moz-box-shadow: 0 0 12px #999999; -webkit-box-shadow: 0 0 12px #999999; box-shadow: 0 0 12px #999999; color: #FFFFFF; opacity: 0.9; filter: alpha(opacity=90); background-color: #030303; text-align: center; } .elfinder .elfinder-toast > .toast-info { background-color: #2F96B4; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; } .elfinder .elfinder-toast > .toast-error { background-color: #BD362F; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; } .elfinder .elfinder-toast > .toast-success { background-color: #51A351; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; } .elfinder .elfinder-toast > .toast-warning { background-color: #F89406; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; } .elfinder .elfinder-toast > div button.ui-button { background-image: none; margin-top: 8px; padding: .5em .8em; } .elfinder .elfinder-toast > .toast-success button.ui-button { background-color: green; color: #FFF; } .elfinder .elfinder-toast > .toast-success button.ui-button.ui-state-hover { background-color: #add6ad; color: #254b25; } .elfinder .elfinder-toast > .toast-info button.ui-button { background-color: #046580; color: #FFF; } .elfinder .elfinder-toast > .toast-info button.ui-button.ui-state-hover { background-color: #7DC6DB; color: #046580; } .elfinder .elfinder-toast > .toast-warning button.ui-button { background-color: #dd8c1a; color: #FFF; } .elfinder .elfinder-toast > .toast-warning button.ui-button.ui-state-hover { background-color: #e7ae5e; color: #422a07; } application/library/css/common.css000064400000013253147577724760013343 0ustar00/*********************************************/ /* COMMON ELFINDER STUFFS */ /*********************************************/ /* for old jQuery UI */ .ui-front { z-index: 100; } /* style reset */ div.elfinder *, div.elfinder :after, div.elfinder :before { box-sizing: content-box; } div.elfinder fieldset { display: block; margin-inline-start: 2px; margin-inline-end: 2px; padding-block-start: 0.35em; padding-inline-start: 0.75em; padding-inline-end: 0.75em; padding-block-end: 0.625em; min-inline-size: min-content; border-width: 2px; border-style: groove; border-color: threedface; border-image: initial; } div.elfinder legend { display: block; padding-inline-start: 2px; padding-inline-end: 2px; border-width: initial; border-style: none; border-color: initial; border-image: initial; width: auto; margin-bottom: 0; } /* base container */ div.elfinder { padding: 0; position: relative; display: block; visibility: visible; font-size: 18px; font-family: Verdana, Arial, Helvetica, sans-serif; } /* prevent auto zoom on iOS */ .elfinder-ios input, .elfinder-ios select, .elfinder-ios textarea { font-size: 16px !important; } /* full screen mode */ .elfinder.elfinder-fullscreen > .ui-resizable-handle { display: none; } .elfinder-font-mono { line-height: 2ex; } /* in lazy execution status */ .elfinder.elfinder-processing * { cursor: progress !important } .elfinder.elfinder-processing.elfinder-touch .elfinder-workzone:after { position: absolute; top: 0; width: 100%; height: 3px; content: ''; left: 0; background-image: url(../img/progress.gif); opacity: .6; pointer-events: none; } /* for disable select of Touch devices */ .elfinder *:not(input):not(textarea):not(select):not([contenteditable=true]), .elfinder-contextmenu *:not(input):not(textarea):not(select):not([contenteditable=true]) { -webkit-tap-highlight-color: rgba(0, 0, 0, 0); /*-webkit-touch-callout:none;*/ -webkit-user-select: none; -moz-user-select: none; -khtml-user-select: none; user-select: none; } .elfinder .overflow-scrolling-touch { -webkit-overflow-scrolling: touch; } /* right to left enviroment */ .elfinder-rtl { text-align: right; direction: rtl; } /* nav and cwd container */ .elfinder-workzone { padding: 0; position: relative; overflow: hidden; } /* dir/file permissions and symlink markers */ .elfinder-lock, .elfinder-perms, .elfinder-symlink { position: absolute; width: 16px; height: 16px; background-image: url(../img/toolbar.png); background-repeat: no-repeat; background-position: 0 -528px; } .elfinder-symlink { } /* noaccess */ .elfinder-na .elfinder-perms { background-position: 0 -96px; } /* read only */ .elfinder-ro .elfinder-perms { background-position: 0 -64px; } /* write only */ .elfinder-wo .elfinder-perms { background-position: 0 -80px; } /* volume type group */ .elfinder-group .elfinder-perms { background-position: 0 0px; } /* locked */ .elfinder-lock { background-position: 0 -656px; } /* drag helper */ .elfinder-drag-helper { top: 0px; left: 0px; width: 70px; height: 60px; padding: 0 0 0 25px; z-index: 100000; will-change: left, top; } .elfinder-drag-helper.html5-native { position: absolute; top: -1000px; left: -1000px; } /* drag helper status icon (default no-drop) */ .elfinder-drag-helper-icon-status { position: absolute; width: 16px; height: 16px; left: 42px; top: 60px; background: url('../img/toolbar.png') 0 -96px no-repeat; display: block; } /* show "up-arrow" icon for move item */ .elfinder-drag-helper-move .elfinder-drag-helper-icon-status { background-position: 0 -720px; } /* show "plus" icon when ctrl/shift pressed */ .elfinder-drag-helper-plus .elfinder-drag-helper-icon-status { background-position: 0 -544px; } /* files num in drag helper */ .elfinder-drag-num { display: inline-box; position: absolute; top: 0; left: 0; width: auto; height: 14px; text-align: center; padding: 1px 3px 1px 3px; font-weight: bold; color: #fff; background-color: red; -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } /* icon in drag helper */ .elfinder-drag-helper .elfinder-cwd-icon { margin: 0 0 0 -24px; float: left; } /* transparent overlay */ .elfinder-overlay { position: absolute; opacity: .2; filter: Alpha(Opacity=20); } /* panels under/below cwd (for search field etc) */ .elfinder .elfinder-panel { position: relative; background-image: none; padding: 7px 12px; } /* for html5 drag and drop */ [draggable=true] { -khtml-user-drag: element; } /* for place holder to content editable elements */ .elfinder [contentEditable=true]:empty:not(:focus):before { content: attr(data-ph); } /* bottom tray */ .elfinder div.elfinder-bottomtray { position: fixed; bottom: 0; max-width: 100%; opacity: .8; } .elfinder div.elfinder-bottomtray > div { top: initial; right: initial; left: initial; } .elfinder.elfinder-ltr div.elfinder-bottomtray { left: 0; } .elfinder.elfinder-rtl div.elfinder-bottomtray { right: 0; } /* tooltip */ .elfinder-ui-tooltip, .elfinder .elfinder-ui-tooltip { font-size: 14px; padding: 2px 4px; } /* progressbar */ .elfinder-ui-progressbar { pointer-events: none; position: absolute; width: 0; height: 2px; top: 0px; border-radius: 2px; filter: blur(1px); } .elfinder-ltr .elfinder-ui-progressbar { left: 0; } .elfinder-rtl .elfinder-ui-progressbar { right: 0; }application/library/css/statusbar.css000064400000006164147577724760014066 0ustar00/******************************************************************/ /* STATUSBAR STYLES */ /******************************************************************/ /* statusbar container */ .elfinder-statusbar { display: flex; justify-content: space-between; cursor: default; text-align: center; font-weight: normal; padding: .2em .5em; border-right: 0 solid transparent; border-bottom: 0 solid transparent; border-left: 0 solid transparent; } .elfinder-statusbar:before, .elfinder-statusbar:after { display: none; } .elfinder-statusbar span { vertical-align: bottom; overflow: hidden; text-overflow: ellipsis; -o-text-overflow: ellipsis; } .elfinder-statusbar span.elfinder-path-other { flex-shrink: 0; text-overflow: clip; -o-text-overflow: clip; } .elfinder-statusbar span.ui-state-hover, .elfinder-statusbar span.ui-state-active { border: none; } .elfinder-statusbar span.elfinder-path-cwd { cursor: default; } /* path in statusbar */ .elfinder-path { display: flex; order: 1; flex-grow: 1; cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; -o-text-overflow: ellipsis; max-width: 30%\9; } .elfinder-ltr .elfinder-path { text-align: left; float: left\9; } .elfinder-rtl .elfinder-path { text-align: right; float: right\9; } /* path in workzone (case of swipe to navbar close) */ .elfinder-workzone-path { position: relative; } .elfinder-workzone-path .elfinder-path { position: relative; font-size: .75em; font-weight: normal; float: none; max-width: none; overflow: hidden; overflow-x: hidden; text-overflow: initial; -o-text-overflow: initial; } .elfinder-mobile .elfinder-workzone-path .elfinder-path { overflow: auto; overflow-x: scroll; } .elfinder-ltr .elfinder-workzone-path .elfinder-path { margin-left: 24px; } .elfinder-rtl .elfinder-workzone-path .elfinder-path { margin-right: 24px; } .elfinder-workzone-path .elfinder-path span { display: inline-block; padding: 5px 3px; } .elfinder-workzone-path .elfinder-path span.elfinder-path-cwd { font-weight: bold; } .elfinder-workzone-path .elfinder-path span.ui-state-hover, .elfinder-workzone-path .elfinder-path span.ui-state-active { border: none; } .elfinder-workzone-path .elfinder-path-roots { position: absolute; top: 0; width: 24px; height: 20px; padding: 2px; border: none; overflow: hidden; } .elfinder-ltr .elfinder-workzone-path .elfinder-path-roots { left: 0; } .elfinder-rtl .elfinder-workzone-path .elfinder-path-roots { right: 0; } /* total/selected size in statusbar */ .elfinder-stat-size { order: 3; flex-grow: 1; overflow: hidden; white-space: nowrap; } .elfinder-ltr .elfinder-stat-size { text-align: right; float: right\9; } .elfinder-rtl .elfinder-stat-size { text-align: left; float: left\9; } /* info of current selected item */ .elfinder-stat-selected { order: 2; margin: 0 .5em; white-space: nowrap; overflow: hidden; } application/library/css/quicklook.css000064400000026024147577724760014054 0ustar00/* quicklook window */ .elfinder-quicklook { position: absolute; background: url("../img/quicklook-bg.png"); overflow: hidden; -moz-border-radius: 7px; -webkit-border-radius: 7px; border-radius: 7px; padding: 20px 0 40px 0; } .elfinder-navdock .elfinder-quicklook { -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; font-size: 90%; overflow: auto; } .elfinder-quicklook.elfinder-touch { padding: 30px 0 40px 0; } .elfinder-quicklook .ui-resizable-se { width: 14px; height: 14px; right: 5px; bottom: 3px; background: url("../img/toolbar.png") 0 -496px no-repeat; } .elfinder-quicklook.elfinder-touch .ui-resizable-se { -moz-transform-origin: bottom right; -moz-transform: scale(1.5); zoom: 1.5; } /* quicklook fullscreen window */ .elfinder-quicklook.elfinder-quicklook-fullscreen { position: fixed; top: 0; right: 0; bottom: 0; left: 0; margin: 0; box-sizing: border-box; width: 100%; height: 100%; object-fit: contain; border-radius: 0; -moz-border-radius: 0; -webkit-border-radius: 0; -webkit-background-clip: padding-box; padding: 0; background: #000; display: block; } /* hide titlebar in fullscreen mode */ .elfinder-quicklook-fullscreen .elfinder-quicklook-titlebar, .elfinder-quicklook-fullscreen.elfinder-quicklook .ui-resizable-handle { display: none; } /* hide preview border in fullscreen mode */ .elfinder-quicklook-fullscreen .elfinder-quicklook-preview { border: 0 solid; } /*.elfinder-quicklook-fullscreen iframe { height: 100%; }*/ .elfinder-quicklook-cover { width: 100%; height: 100%; top: 0; left: 0; position: absolute; } .elfinder-quicklook-cover.elfinder-quicklook-coverbg { /* background need to catch mouse event over browser plugin (eg PDF preview) */ background-color: #fff; opacity: 0.000001; filter: Alpha(Opacity=0.0001); } /* quicklook titlebar */ .elfinder-quicklook-titlebar { text-align: center; background: #777; position: absolute; left: 0; top: 0; width: 100%; height: 20px; -moz-border-radius-topleft: 7px; -webkit-border-top-left-radius: 7px; border-top-left-radius: 7px; -moz-border-radius-topright: 7px; -webkit-border-top-right-radius: 7px; border-top-right-radius: 7px; border: none; line-height: 1.2; } .elfinder-navdock .elfinder-quicklook-titlebar { -moz-border-radius-topleft: 0; -webkit-border-top-left-radius: 0; border-top-left-radius: 0; -moz-border-radius-topright: 0; -webkit-border-top-right-radius: 0; border-top-right-radius: 0; cursor: default; } .elfinder-touch .elfinder-quicklook-titlebar { height: 30px; } /* window title */ .elfinder-quicklook-title { display: inline-block; white-space: nowrap; overflow: hidden; } .elfinder-touch .elfinder-quicklook-title { padding: 8px 0; } /* icon "close" in titlebar */ .elfinder-quicklook-titlebar-icon { position: absolute; left: 4px; top: 50%; margin-top: -8px; height: 16px; border: none; } .elfinder-touch .elfinder-quicklook-titlebar-icon { height: 22px; } .elfinder-quicklook-titlebar-icon .ui-icon { position: relative; margin: -9px 3px 0px 0px; cursor: pointer; border-radius: 10px; border: 1px solid; opacity: .7; filter: Alpha(Opacity=70); } .elfinder-quicklook-titlebar-icon .ui-icon.ui-icon-closethick { padding-left: 1px; } .elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon { opacity: .6; filter: Alpha(Opacity=60); } .elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon { margin-top: -5px; } .elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right { left: auto; right: 4px; direction: rtl; } .elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right .ui-icon { margin: -9px 0px 0px 3px; } .elfinder-touch .elfinder-quicklook-titlebar .ui-icon { -moz-transform-origin: center center; -moz-transform: scale(1.2); zoom: 1.2; } .elfinder-touch .elfinder-quicklook-titlebar-icon .ui-icon { margin-right: 10px; } .elfinder-touch .elfinder-quicklook-titlebar-icon.elfinder-titlebar-button-right .ui-icon { margin-left: 10px; } /* main part of quicklook window */ .elfinder-quicklook-preview { overflow: hidden; position: relative; border: 0 solid; border-left: 1px solid transparent; border-right: 1px solid transparent; height: 100%; } .elfinder-navdock .elfinder-quicklook-preview { border-left: 0; border-right: 0; } .elfinder-quicklook-preview.elfinder-overflow-auto { overflow: auto; -webkit-overflow-scrolling: touch; } /* wrapper for file info/icon */ .elfinder-quicklook-info-wrapper { display: table; position: absolute; width: 100%; height: 100%; height: calc(100% - 80px); left: 0; top: 20px; } .elfinder-navdock .elfinder-quicklook-info-wrapper { height: calc(100% - 20px); } /* file info */ .elfinder-quicklook-info { display: table-cell; vertical-align: middle; } .elfinder-ltr .elfinder-quicklook-info { padding: 0 12px 0 112px; } .elfinder-rtl .elfinder-quicklook-info { padding: 0 112px 0 12px; } .elfinder-ltr .elfinder-navdock .elfinder-quicklook-info { padding: 0 0 0 80px; } .elfinder-rtl .elfinder-navdock .elfinder-quicklook-info { padding: 0 80px 0 0; } /* file name in info */ .elfinder-quicklook-info .elfinder-quicklook-info-data:first-child { color: #fff; font-weight: bold; padding-bottom: .5em; } /* other data in info */ .elfinder-quicklook-info-data { clear: both; padding-bottom: .2em; color: #fff; } .elfinder-quicklook-info-progress { width: 0; height: 4px; border-radius: 2px; } /* file icon */ .elfinder-quicklook .elfinder-cwd-icon { position: absolute; left: 32px; top: 50%; margin-top: -20px; } .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon { left: 16px; } .elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon { left: auto; right: 32px; } .elfinder-rtl .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon { right: 6px; } .elfinder-quicklook .elfinder-cwd-icon:before { top: -10px; } .elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:before { left: -20px; } .elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:before { left: -14px; } .elfinder-ltr .elfinder-quicklook .elfinder-cwd-icon:after { left: -42px; } .elfinder-ltr .elfinder-navdock .elfinder-quicklook .elfinder-cwd-icon:after { left: -12px; } .elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:before { left: auto; right: 40px; } .elfinder-rtl .elfinder-quicklook .elfinder-cwd-icon:after { left: auto; right: 42px; } /* image in preview */ .elfinder-quicklook-preview > img, .elfinder-quicklook-preview > div > canvas { display: block; margin: auto; } /* navigation bar on quicklook window bottom */ .elfinder-quicklook-navbar { position: absolute; left: 50%; bottom: 4px; width: 140px; height: 32px; padding: 0px; margin-left: -70px; border: 1px solid transparent; border-radius: 19px; -moz-border-radius: 19px; -webkit-border-radius: 19px; } /* navigation bar in fullscreen mode */ .elfinder-quicklook-fullscreen .elfinder-quicklook-navbar { width: 188px; margin-left: -94px; padding: 5px; border: 1px solid #eee; background: #000; opacity: 0.4; filter: Alpha(Opacity=40); } /* show close icon in fullscreen mode */ .elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-icon-close, .elfinder-quicklook-fullscreen .elfinder-quicklook-navbar-separator { display: inline; } /* icons in navbar */ .elfinder-quicklook-navbar-icon { width: 32px; height: 32px; margin: 0 7px; float: left; background: url("../img/quicklook-icons.png") 0 0 no-repeat; } /* fullscreen icon */ .elfinder-quicklook-navbar-icon-fullscreen { background-position: 0 -64px; } /* exit fullscreen icon */ .elfinder-quicklook-navbar-icon-fullscreen-off { background-position: 0 -96px; } /* prev file icon */ .elfinder-quicklook-navbar-icon-prev { background-position: 0 0; } /* next file icon */ .elfinder-quicklook-navbar-icon-next { background-position: 0 -32px; } /* close icon */ .elfinder-quicklook-navbar-icon-close { background-position: 0 -128px; display: none; } /* icons separator */ .elfinder-quicklook-navbar-separator { width: 1px; height: 32px; float: left; border-left: 1px solid #fff; display: none; } /* text encoding selector */ .elfinder-quicklook-encoding { height: 40px; } .elfinder-quicklook-encoding > select { color: #fff; background: #000; border: 0; font-size: 12px; max-width: 100px; display: inline-block; position: relative; top: 6px; left: 5px; } .elfinder-navdock .elfinder-quicklook .elfinder-quicklook-encoding { display: none; } /* text files preview wrapper */ .elfinder-quicklook-preview-text-wrapper { width: 100%; height: 100%; background: #fff; color: #222; overflow: auto; -webkit-overflow-scrolling: touch; } /* archive files preview wrapper */ .elfinder-quicklook-preview-archive-wrapper { width: 100%; height: 100%; background: #fff; color: #222; font-size: 90%; overflow: auto; -webkit-overflow-scrolling: touch } /* archive files preview header */ .elfinder-quicklook-preview-archive-wrapper strong { padding: 0 5px; } /* text preview */ pre.elfinder-quicklook-preview-text, pre.elfinder-quicklook-preview-text.prettyprint { width: auto; height: auto; margin: 0; padding: 3px 9px; border: none; overflow: visible; -o-tab-size: 4; -moz-tab-size: 4; tab-size: 4; } .elfinder-quicklook-preview-charsleft hr { border: none; border-top: dashed 1px; } .elfinder-quicklook-preview-charsleft span { font-size: 90%; font-style: italic; cursor: pointer; } /* html/pdf preview */ .elfinder-quicklook-preview-html, .elfinder-quicklook-preview-pdf, .elfinder-quicklook-preview-iframe { width: 100%; height: 100%; background: #fff; margin: 0; border: none; display: block; } /* swf preview container */ .elfinder-quicklook-preview-flash { width: 100%; height: 100%; } /* audio preview container */ .elfinder-quicklook-preview-audio { width: 100%; position: absolute; bottom: 0; left: 0; } /* audio preview using embed */ embed.elfinder-quicklook-preview-audio { height: 30px; background: transparent; } /* video preview container */ .elfinder-quicklook-preview-video { width: 100%; height: 100%; } /* video.js error message */ .elfinder-quicklook-preview .vjs-error .vjs-error-display .vjs-modal-dialog-content { font-size: 12pt; padding: 0; color: #fff; } /* allow user select */ .elfinder .elfinder-quicklook .elfinder-quicklook-info *, .elfinder .elfinder-quicklook .elfinder-quicklook-preview * { -webkit-user-select: auto; -moz-user-select: text; -khtml-user-select: text; user-select: text; } application/library/css/contextmenu.css000064400000013372147577724760014426 0ustar00/* menu and submenu */ .elfinder .elfinder-contextmenu, .elfinder .elfinder-contextmenu-sub { position: absolute; border: 1px solid #aaa; background: #fff; color: #555; padding: 4px 0; top: 0; left: 0; } /* submenu */ .elfinder .elfinder-contextmenu-sub { top: 5px; } /* submenu in rtl/ltr enviroment */ .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub { margin-left: -5px; } .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub { margin-right: -5px; } /* menu item */ .elfinder .elfinder-contextmenu-header { margin-top: -4px; padding: 0 .5em .2ex; border: none; text-align: center; } .elfinder .elfinder-contextmenu-header span { font-weight: normal; font-size: 0.8em; font-weight: bolder; } .elfinder .elfinder-contextmenu-item { position: relative; display: block; padding: 4px 30px; text-decoration: none; white-space: nowrap; cursor: default; } .elfinder .elfinder-contextmenu-item.ui-state-active { border: none; } .elfinder .elfinder-contextmenu-item .ui-icon { width: 16px; height: 16px; position: absolute; left: auto; right: auto; top: 50%; margin-top: -8px; } .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item .ui-icon { left: 2px; } .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item .ui-icon { right: 2px; } .elfinder-touch .elfinder-contextmenu-item { padding: 12px 38px; } /* root icon of each volume */ .elfinder-navbar-root-local.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_local.svg"); background-size: contain; } .elfinder-navbar-root-trash.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_trash.svg"); background-size: contain; } .elfinder-navbar-root-ftp.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_ftp.svg"); background-size: contain; } .elfinder-navbar-root-sql.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_sql.svg"); background-size: contain; } .elfinder-navbar-root-dropbox.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_dropbox.svg"); background-size: contain; } .elfinder-navbar-root-googledrive.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_googledrive.svg"); background-size: contain; } .elfinder-navbar-root-onedrive.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_onedrive.svg"); background-size: contain; } .elfinder-navbar-root-box.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_box.svg"); background-size: contain; } .elfinder-navbar-root-zip.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_zip.svg"); background-size: contain; } .elfinder-navbar-root-network.elfinder-contextmenu-icon { background-image: url("../img/volume_icon_network.svg"); background-size: contain; } /* text in item */ .elfinder .elfinder-contextmenu .elfinder-contextmenu-item span { display: block; } /* submenu item in rtl/ltr enviroment */ .elfinder .elfinder-contextmenu-sub .elfinder-contextmenu-item { padding-left: 12px; padding-right: 12px; } .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-item { text-align: left; } .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-item { text-align: right; } .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { padding-left: 28px; } .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { padding-right: 28px; } .elfinder-touch .elfinder-contextmenu-ltr .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { padding-left: 36px; } .elfinder-touch .elfinder-contextmenu-rtl .elfinder-contextmenu-sub .elfinder-contextsubmenu-item-icon { padding-right: 36px; } /* command/submenu icon */ .elfinder .elfinder-contextmenu-extra-icon, .elfinder .elfinder-contextmenu-arrow, .elfinder .elfinder-contextmenu-icon { position: absolute; top: 50%; margin-top: -8px; overflow: hidden; } .elfinder-touch .elfinder-button-icon.elfinder-contextmenu-icon { transform-origin: center center; } /* command icon in rtl/ltr enviroment */ .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-icon { left: 8px; } .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-icon { right: 8px; } .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-extra-icon { right: 8px; } .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-extra-icon { left: 8px; } /* arrow icon */ .elfinder .elfinder-contextmenu-arrow { width: 16px; height: 16px; background: url('../img/arrows-normal.png') 5px 4px no-repeat; } /* arrow icon in rtl/ltr enviroment */ .elfinder .elfinder-contextmenu-ltr .elfinder-contextmenu-arrow { right: 5px; } .elfinder .elfinder-contextmenu-rtl .elfinder-contextmenu-arrow { left: 5px; background-position: 0 -10px; } /* command extra icon's , tag */ .elfinder .elfinder-contextmenu-extra-icon a, .elfinder .elfinder-contextmenu-extra-icon span { position: relative; width: 100%; height: 100%; margin: 0; color: transparent !important; text-decoration: none; cursor: pointer; } /* disable ui border/bg image on hover */ .elfinder .elfinder-contextmenu .ui-state-hover { border: 0 solid; background-image: none; } /* separator */ .elfinder .elfinder-contextmenu-separator { height: 0px; border-top: 1px solid #ccc; margin: 0 1px; } /* for CSS style priority to ui-state-disabled - "background-image: none" */ .elfinder .elfinder-contextmenu-item .elfinder-button-icon.ui-state-disabled { background-image: url('../img/toolbar.png'); } application/library/css/cwd.css000064400000105304147577724760012627 0ustar00/******************************************************************/ /* CURRENT DIRECTORY STYLES */ /******************************************************************/ /* cwd container to avoid selectable on scrollbar */ .elfinder-cwd-wrapper { overflow: auto; position: relative; padding: 2px; margin: 0; } .elfinder-cwd-wrapper-list { padding: 0; } /* container */ .elfinder-cwd { position: absolute; top: 0; cursor: default; padding: 0; margin: 0; -ms-touch-action: auto; touch-action: auto; min-width: 100%; } .elfinder-ltr .elfinder-cwd { left: 0; } .elfinder-rtl .elfinder-cwd { right: 0; } .elfinder-cwd.elfinder-table-header-sticky { position: -webkit-sticky; position: -ms-sticky; position: sticky; top: 0; left: auto; right: auto; width: -webkit-max-content; width: -moz-max-content; width: -ms-max-content; width: max-content; height: 0; overflow: visible; } .elfinder-cwd.elfinder-table-header-sticky table { border-top: 2px solid; padding-top: 0; } .elfinder-cwd.elfinder-table-header-sticky td { display: inline-block; } .elfinder-droppable-active .elfinder-cwd.elfinder-table-header-sticky table { border-top: 2px solid transparent; } /* fixed table header container */ .elfinder-cwd-fixheader .elfinder-cwd { position: relative; } /* container active on dropenter */ .elfinder .elfinder-cwd-wrapper.elfinder-droppable-active { outline: 2px solid #8cafed; outline-offset: -2px; } .elfinder-cwd-wrapper-empty .elfinder-cwd:after { display: block; position: absolute; height: auto; width: 90%; width: calc(100% - 20px); position: absolute; top: 50%; left: 50%; -ms-transform: translateY(-50%) translateX(-50%); -webkit-transform: translateY(-50%) translateX(-50%); transform: translateY(-50%) translateX(-50%); line-height: 1.5em; text-align: center; white-space: pre-wrap; opacity: 0.6; filter: Alpha(Opacity=60); font-weight: bold; } .elfinder-cwd-file .elfinder-cwd-select { position: absolute; top: 0px; left: 0px; background-color: transparent; opacity: .4; filter: Alpha(Opacity=40); } .elfinder-mobile .elfinder-cwd-file .elfinder-cwd-select { width: 30px; height: 30px; } .elfinder-cwd-file.ui-selected .elfinder-cwd-select { opacity: .8; filter: Alpha(Opacity=80); } .elfinder-rtl .elfinder-cwd-file .elfinder-cwd-select { left: auto; right: 0px; } .elfinder .elfinder-cwd-selectall { position: absolute; width: 30px; height: 30px; top: 0px; opacity: .8; filter: Alpha(Opacity=80); } .elfinder .elfinder-workzone.elfinder-cwd-wrapper-empty .elfinder-cwd-selectall { display: none; } /************************** ICONS VIEW ********************************/ .elfinder-ltr .elfinder-workzone .elfinder-cwd-selectall { text-align: right; right: 18px; left: auto; } .elfinder-rtl .elfinder-workzone .elfinder-cwd-selectall { text-align: left; right: auto; left: 18px; } .elfinder-ltr.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall { right: 0px; } .elfinder-rtl.elfinder-mobile .elfinder-workzone .elfinder-cwd-selectall { left: 0px; } .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-select.ui-state-hover { background-color: transparent; } /* file container */ .elfinder-cwd-view-icons .elfinder-cwd-file { width: 120px; height: 90px; padding-bottom: 2px; cursor: default; border: none; position: relative; } .elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active { border: none; } /* ltr/rtl enviroment */ .elfinder-ltr .elfinder-cwd-view-icons .elfinder-cwd-file { float: left; margin: 0 3px 2px 0; } .elfinder-rtl .elfinder-cwd-view-icons .elfinder-cwd-file { float: right; margin: 0 0 5px 3px; } /* remove ui hover class border */ .elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover { border: 0 solid; } /* icon wrapper to create selected highlight around icon */ .elfinder-cwd-view-icons .elfinder-cwd-file-wrapper { width: 52px; height: 52px; margin: 1px auto 1px auto; padding: 2px; position: relative; } /*** Custom Icon Size size1 - size3 ***/ /* type badge */ .elfinder-cwd-size1 .elfinder-cwd-icon:before, .elfinder-cwd-size2 .elfinder-cwd-icon:before, .elfinder-cwd-size3 .elfinder-cwd-icon:before { top: 3px; display: block; } /* size1 */ .elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file { width: 120px; height: 112px; } .elfinder-cwd-size1.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper { width: 74px; height: 74px; } .elfinder-cwd-size1 .elfinder-cwd-icon { -ms-transform-origin: top center; -ms-transform: scale(1.5); -webkit-transform-origin: top center; -webkit-transform: scale(1.5); transform-origin: top center; transform: scale(1.5); } .elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:before { -ms-transform-origin: top left; -ms-transform: scale(1.35) translate(-4px, 15%); -webkit-transform-origin: top left; -webkit-transform: scale(1.35) translate(-4px, 15%); transform-origin: top left; transform: scale(1.35) translate(-4px, 15%); } .elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl:after { -ms-transform: scale(1) translate(10px, -5px); -webkit-transform: scale(1) translate(10px, -5px); transform: scale(1) translate(10px, -5px); } .elfinder-cwd-size1 .elfinder-cwd-icon.elfinder-cwd-bgurl { -ms-transform-origin: center center; -ms-transform: scale(1); -webkit-transform-origin: center center; -webkit-transform: scale(1); transform-origin: center center; transform: scale(1); width: 72px; height: 72px; -moz-border-radius: 6px; -webkit-border-radius: 6px; border-radius: 6px; } /* size2 */ .elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file { width: 140px; height: 134px; } .elfinder-cwd-size2.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper { width: 98px; height: 98px; } .elfinder-cwd-size2 .elfinder-cwd-icon { -ms-transform-origin: top center; -ms-transform: scale(2); -webkit-transform-origin: top center; -webkit-transform: scale(2); transform-origin: top center; transform: scale(2); } .elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:before { -ms-transform-origin: top left; -ms-transform: scale(1.8) translate(-5px, 18%); -webkit-transform-origin: top left; -webkit-transform: scale(1.8) translate(-5px, 18%); transform-origin: top left; transform: scale(1.8) translate(-5px, 18%); } .elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl:after { -ms-transform: scale(1.1) translate(0px, 10px); -webkit-transform: scale(1.1) translate(0px, 10px); transform: scale(1.1) translate(0px, 10px); } .elfinder-cwd-size2 .elfinder-cwd-icon.elfinder-cwd-bgurl { -ms-transform-origin: center center; -ms-transform: scale(1); -webkit-transform-origin: center center; -webkit-transform: scale(1); transform-origin: center center; transform: scale(1); width: 96px; height: 96px; -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; } /* size3 */ .elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file { width: 174px; height: 158px; } .elfinder-cwd-size3.elfinder-cwd-view-icons .elfinder-cwd-file-wrapper { width: 122px; height: 122px; } .elfinder-cwd-size3 .elfinder-cwd-icon { -ms-transform-origin: top center; -ms-transform: scale(2.5); -webkit-transform-origin: top center; -webkit-transform: scale(2.5); transform-origin: top center; transform: scale(2.5); } .elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:before { -ms-transform-origin: top left; -ms-transform: scale(2.25) translate(-6px, 20%); -webkit-transform-origin: top left; -webkit-transform: scale(2.25) translate(-6px, 20%); transform-origin: top left; transform: scale(2.25) translate(-6px, 20%); } .elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl:after { -ms-transform: scale(1.2) translate(-9px, 22px); -webkit-transform: scale(1.2) translate(-9px, 22px); transform: scale(1.2) translate(-9px, 22px); } .elfinder-cwd-size3 .elfinder-cwd-icon.elfinder-cwd-bgurl { -ms-transform-origin: center center; -ms-transform: scale(1); -webkit-transform-origin: center center; -webkit-transform: scale(1); transform-origin: center center; transform: scale(1); width: 120px; height: 120px; -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; } /* file name place */ .elfinder-cwd-view-icons .elfinder-cwd-filename { text-align: center; max-height: 2.4em; line-height: 1.2em; white-space: pre-line; overflow: hidden; text-overflow: ellipsis; -o-text-overflow: ellipsis; margin: 3px 1px 0 1px; padding: 1px; -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; /* for webkit CSS3 */ word-break: break-word; overflow-wrap: break-word; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } /* permissions/symlink markers */ .elfinder-cwd-view-icons .elfinder-perms { bottom: 4px; right: 2px; } .elfinder-cwd-view-icons .elfinder-lock { top: -3px; right: -2px; } .elfinder-cwd-view-icons .elfinder-symlink { bottom: 6px; left: 0px; } /* icon/thumbnail */ .elfinder-cwd-icon { display: block; width: 48px; height: 48px; margin: 0 auto; background-image: url('../img/icons-big.svg'); background-image: url('../img/icons-big.png') \9; background-position: 0 0; background-repeat: no-repeat; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box; } /* volume icon of root in folder */ .elfinder-navbar-root-local .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-local td .elfinder-cwd-icon { background-image: url("../img/volume_icon_local.svg"); background-image: url("../img/volume_icon_local.png") \9; background-position: 0 0; background-size: contain; } .elfinder-cwd .elfinder-navbar-root-local.elfinder-droppable-active .elfinder-cwd-icon { background-position: 1px -1px; } .elfinder-navbar-root-trash .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-trash td .elfinder-cwd-icon { background-image: url("../img/volume_icon_trash.svg"); background-image: url("../img/volume_icon_trash.png") \9; background-position: 0 0; background-size: contain; } .elfinder-cwd .elfinder-navbar-root-trash.elfinder-droppable-active .elfinder-cwd-icon { background-position: 1px -1px; } .elfinder-navbar-root-ftp .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-ftp td .elfinder-cwd-icon { background-image: url("../img/volume_icon_ftp.svg"); background-image: url("../img/volume_icon_ftp.png") \9; background-position: 0 0; background-size: contain; } .elfinder-cwd .elfinder-navbar-root-ftp.elfinder-droppable-active .elfinder-cwd-icon { background-position: 1px -1px; } .elfinder-navbar-root-sql .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-sql td .elfinder-cwd-icon { background-image: url("../img/volume_icon_sql.svg"); background-image: url("../img/volume_icon_sql.png") \9; background-position: 0 0; background-size: contain; } .elfinder-cwd .elfinder-navbar-root-sql.elfinder-droppable-active .elfinder-cwd-icon { background-position: 1px -1px; } .elfinder-navbar-root-dropbox .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-dropbox td .elfinder-cwd-icon { background-image: url("../img/volume_icon_dropbox.svg"); background-image: url("../img/volume_icon_dropbox.png") \9; background-position: 0 0; background-size: contain; } .elfinder-cwd .elfinder-navbar-root-dropbox.elfinder-droppable-active .elfinder-cwd-icon { background-position: 1px -1px; } .elfinder-navbar-root-googledrive .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-googledrive td .elfinder-cwd-icon { background-image: url("../img/volume_icon_googledrive.svg"); background-image: url("../img/volume_icon_googledrive.png") \9; background-position: 0 0; background-size: contain; } .elfinder-navbar-root-onedrive .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-onedrive td .elfinder-cwd-icon { background-image: url("../img/volume_icon_onedrive.svg"); background-image: url("../img/volume_icon_onedrive.png") \9; background-position: 0 0; background-size: contain; } .elfinder-navbar-root-box .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-box td .elfinder-cwd-icon { background-image: url("../img/volume_icon_box.svg"); background-image: url("../img/volume_icon_box.png") \9; background-position: 0 0; background-size: contain; } .elfinder-navbar-root-zip .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-zip.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-zip td .elfinder-cwd-icon { background-image: url("../img/volume_icon_zip.svg"); background-image: url("../img/volume_icon_zip.png") \9; background-position: 0 0; background-size: contain; } .elfinder-cwd .elfinder-navbar-root-googledrive.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-onedrive.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-box.elfinder-droppable-active .elfinder-cwd-icon { background-position: 1px -1px; } .elfinder-navbar-root-network .elfinder-cwd-icon, .elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon, .elfinder-cwd-view-list .elfinder-navbar-root-network td .elfinder-cwd-icon { background-image: url("../img/volume_icon_network.svg"); background-image: url("../img/volume_icon_network.png") \9; background-position: 0 0; background-size: contain; } .elfinder-cwd .elfinder-navbar-root-network.elfinder-droppable-active .elfinder-cwd-icon { background-position: 1px -1px; } /* type badge in "icons" view */ .elfinder-cwd-icon:before { content: none; position: absolute; left: 0px; top: 5px; min-width: 20px; max-width: 84px; text-align: center; padding: 0px 4px 1px; border-radius: 4px; font-family: Verdana; font-size: 10px; line-height: 1.3em; -webkit-transform: scale(0.9); -moz-transform: scale(0.9); -ms-transform: scale(0.9); -o-transform: scale(0.9); transform: scale(0.9); } .elfinder-cwd-view-icons .elfinder-cwd-icon.elfinder-cwd-bgurl:before { left: -10px; } /* addtional type badge name */ .elfinder-cwd-icon.elfinder-cwd-icon-mp2t:before { content: 'ts' } .elfinder-cwd-icon.elfinder-cwd-icon-dash-xml:before { content: 'dash' } .elfinder-cwd-icon.elfinder-cwd-icon-x-mpegurl:before { content: 'hls' } .elfinder-cwd-icon.elfinder-cwd-icon-x-c:before { content: 'c++' } /* thumbnail image */ .elfinder-cwd-icon.elfinder-cwd-bgurl { background-position: center center; background-repeat: no-repeat; -moz-background-size: contain; background-size: contain; } /* thumbnail self */ .elfinder-cwd-icon.elfinder-cwd-bgurl.elfinder-cwd-bgself { -moz-background-size: cover; background-size: cover; } /* thumbnail crop*/ .elfinder-cwd-icon.elfinder-cwd-bgurl { -moz-background-size: cover; background-size: cover; } .elfinder-cwd-icon.elfinder-cwd-bgurl:after { content: ' '; } .elfinder-cwd-bgurl:after { position: relative; display: inline-block; top: 36px; left: -38px; width: 48px; height: 48px; background-image: url('../img/icons-big.svg'); background-image: url('../img/icons-big.png') \9; background-repeat: no-repeat; background-size: auto !important; opacity: .8; filter: Alpha(Opacity=60); -webkit-transform-origin: 54px -24px; -webkit-transform: scale(.6); -moz-transform-origin: 54px -24px; -moz-transform: scale(.6); -ms-transform-origin: 54px -24px; -ms-transform: scale(.6); -o-transform-origin: 54px -24px; -o-transform: scale(.6); transform-origin: 54px -24px; transform: scale(.6); } /* thumbnail image and draging icon */ .elfinder-cwd-icon.elfinder-cwd-icon-drag { width: 48px; height: 48px; } /* thumbnail image and draging icon overlay none */ .elfinder-cwd-icon.elfinder-cwd-icon-drag:before, .elfinder-cwd-icon.elfinder-cwd-icon-drag:after, .elfinder-cwd-icon-image.elfinder-cwd-bgurl:after, .elfinder-cwd-icon-directory.elfinder-cwd-bgurl:after { content: none; } /* "opened folder" icon on dragover */ .elfinder-cwd .elfinder-droppable-active .elfinder-cwd-icon { background-position: 0 -100px; } .elfinder-cwd .elfinder-droppable-active { outline: 2px solid #8cafed; outline-offset: -2px; } /* mimetypes icons */ .elfinder-cwd-icon-directory { background-position: 0 -50px; } .elfinder-cwd-icon-application:after, .elfinder-cwd-icon-application { background-position: 0 -150px; } .elfinder-cwd-icon-text:after, .elfinder-cwd-icon-text { background-position: 0 -1350px; } .elfinder-cwd-icon-plain:after, .elfinder-cwd-icon-plain, .elfinder-cwd-icon-x-empty:after, .elfinder-cwd-icon-x-empty { background-position: 0 -200px; } .elfinder-cwd-icon-image:after, .elfinder-cwd-icon-vnd-adobe-photoshop:after, .elfinder-cwd-icon-image, .elfinder-cwd-icon-vnd-adobe-photoshop { background-position: 0 -250px; } .elfinder-cwd-icon-postscript:after, .elfinder-cwd-icon-postscript { background-position: 0 -1550px; } .elfinder-cwd-icon-audio:after, .elfinder-cwd-icon-audio { background-position: 0 -300px; } .elfinder-cwd-icon-video:after, .elfinder-cwd-icon-video, .elfinder-cwd-icon-flash-video, .elfinder-cwd-icon-dash-xml, .elfinder-cwd-icon-vnd-apple-mpegurl, .elfinder-cwd-icon-x-mpegurl { background-position: 0 -350px; } .elfinder-cwd-icon-rtf:after, .elfinder-cwd-icon-rtfd:after, .elfinder-cwd-icon-rtf, .elfinder-cwd-icon-rtfd { background-position: 0 -400px; } .elfinder-cwd-icon-pdf:after, .elfinder-cwd-icon-pdf { background-position: 0 -450px; } .elfinder-cwd-icon-ms-excel, .elfinder-cwd-icon-ms-excel:after, .elfinder-cwd-icon-vnd-ms-excel, .elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-excel:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:after { background-position: 0 -1450px } .elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet, .elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template, .elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:after, .elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:after { background-position: 0 -1700px } .elfinder-cwd-icon-vnd-ms-powerpoint, .elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-powerpoint:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:after { background-position: 0 -1400px } .elfinder-cwd-icon-vnd-oasis-opendocument-presentation, .elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template, .elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:after, .elfinder-cwd-icon-vnd-oasis-opendocument-presentation:after { background-position: 0 -1650px } .elfinder-cwd-icon-msword, .elfinder-cwd-icon-msword:after, .elfinder-cwd-icon-vnd-ms-word, .elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12, .elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:after, .elfinder-cwd-icon-vnd-ms-word:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:after, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:after { background-position: 0 -1500px } .elfinder-cwd-icon-vnd-oasis-opendocument-text, .elfinder-cwd-icon-vnd-oasis-opendocument-text-master, .elfinder-cwd-icon-vnd-oasis-opendocument-text-master:after, .elfinder-cwd-icon-vnd-oasis-opendocument-text-template, .elfinder-cwd-icon-vnd-oasis-opendocument-text-template:after, .elfinder-cwd-icon-vnd-oasis-opendocument-text-web, .elfinder-cwd-icon-vnd-oasis-opendocument-text-web:after, .elfinder-cwd-icon-vnd-oasis-opendocument-text:after { background-position: 0 -1750px } .elfinder-cwd-icon-vnd-ms-office, .elfinder-cwd-icon-vnd-ms-office:after { background-position: 0 -500px } .elfinder-cwd-icon-vnd-oasis-opendocument-chart, .elfinder-cwd-icon-vnd-oasis-opendocument-chart:after, .elfinder-cwd-icon-vnd-oasis-opendocument-database, .elfinder-cwd-icon-vnd-oasis-opendocument-database:after, .elfinder-cwd-icon-vnd-oasis-opendocument-formula, .elfinder-cwd-icon-vnd-oasis-opendocument-formula:after, .elfinder-cwd-icon-vnd-oasis-opendocument-graphics, .elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template, .elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:after, .elfinder-cwd-icon-vnd-oasis-opendocument-graphics:after, .elfinder-cwd-icon-vnd-oasis-opendocument-image, .elfinder-cwd-icon-vnd-oasis-opendocument-image:after, .elfinder-cwd-icon-vnd-openofficeorg-extension, .elfinder-cwd-icon-vnd-openofficeorg-extension:after { background-position: 0 -1600px } .elfinder-cwd-icon-html:after, .elfinder-cwd-icon-html { background-position: 0 -550px; } .elfinder-cwd-icon-css:after, .elfinder-cwd-icon-css { background-position: 0 -600px; } .elfinder-cwd-icon-javascript:after, .elfinder-cwd-icon-x-javascript:after, .elfinder-cwd-icon-javascript, .elfinder-cwd-icon-x-javascript { background-position: 0 -650px; } .elfinder-cwd-icon-x-perl:after, .elfinder-cwd-icon-x-perl { background-position: 0 -700px; } .elfinder-cwd-icon-x-python:after, .elfinder-cwd-icon-x-python { background-position: 0 -750px; } .elfinder-cwd-icon-x-ruby:after, .elfinder-cwd-icon-x-ruby { background-position: 0 -800px; } .elfinder-cwd-icon-x-sh:after, .elfinder-cwd-icon-x-shellscript:after, .elfinder-cwd-icon-x-sh, .elfinder-cwd-icon-x-shellscript { background-position: 0 -850px; } .elfinder-cwd-icon-x-c:after, .elfinder-cwd-icon-x-csrc:after, .elfinder-cwd-icon-x-chdr:after, .elfinder-cwd-icon-x-c--:after, .elfinder-cwd-icon-x-c--src:after, .elfinder-cwd-icon-x-c--hdr:after, .elfinder-cwd-icon-x-java:after, .elfinder-cwd-icon-x-java-source:after, .elfinder-cwd-icon-x-c, .elfinder-cwd-icon-x-csrc, .elfinder-cwd-icon-x-chdr, .elfinder-cwd-icon-x-c--, .elfinder-cwd-icon-x-c--src, .elfinder-cwd-icon-x-c--hdr, .elfinder-cwd-icon-x-java, .elfinder-cwd-icon-x-java-source { background-position: 0 -900px; } .elfinder-cwd-icon-x-php:after, .elfinder-cwd-icon-x-php { background-position: 0 -950px; } .elfinder-cwd-icon-xml:after, .elfinder-cwd-icon-xml { background-position: 0 -1000px; } .elfinder-cwd-icon-zip:after, .elfinder-cwd-icon-x-zip:after, .elfinder-cwd-icon-x-xz:after, .elfinder-cwd-icon-x-7z-compressed:after, .elfinder-cwd-icon-zip, .elfinder-cwd-icon-x-zip, .elfinder-cwd-icon-x-xz, .elfinder-cwd-icon-x-7z-compressed { background-position: 0 -1050px; } .elfinder-cwd-icon-x-gzip:after, .elfinder-cwd-icon-x-tar:after, .elfinder-cwd-icon-x-gzip, .elfinder-cwd-icon-x-tar { background-position: 0 -1100px; } .elfinder-cwd-icon-x-bzip:after, .elfinder-cwd-icon-x-bzip2:after, .elfinder-cwd-icon-x-bzip, .elfinder-cwd-icon-x-bzip2 { background-position: 0 -1150px; } .elfinder-cwd-icon-x-rar:after, .elfinder-cwd-icon-x-rar-compressed:after, .elfinder-cwd-icon-x-rar, .elfinder-cwd-icon-x-rar-compressed { background-position: 0 -1200px; } .elfinder-cwd-icon-x-shockwave-flash:after, .elfinder-cwd-icon-x-shockwave-flash { background-position: 0 -1250px; } .elfinder-cwd-icon-group { background-position: 0 -1300px; } /* textfield inside icon */ .elfinder-cwd-filename input { width: 100%; border: none; margin: 0; padding: 0; } .elfinder-cwd-view-icons input { text-align: center; } .elfinder-cwd-view-icons textarea { width: 100%; border: 0px solid; margin: 0; padding: 0; text-align: center; overflow: hidden; resize: none; } .elfinder-cwd-view-icons { text-align: center; } /************************************ LIST VIEW ************************************/ /*.elfinder-cwd-view-list { padding:0 0 4px 0; }*/ .elfinder-cwd-wrapper.elfinder-cwd-fixheader .elfinder-cwd::after { display: none; } .elfinder-cwd table { width: 100%; border-collapse: separate; border: 0 solid; margin: 0 0 10px 0; border-spacing: 0; box-sizing: padding-box; padding: 2px; position: relative; } .elfinder-cwd table td { /* fix conflict with Bootstrap CSS */ box-sizing: content-box; } .elfinder-cwd-wrapper-list.elfinder-cwd-fixheader { position: absolute; overflow: hidden; } .elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before { content: ''; position: absolute; width: 100%; top: 0; height: 3px; background-color: white; } .elfinder-droppable-active + .elfinder-cwd-wrapper-list.elfinder-cwd-fixheader:before { background-color: #8cafed; } .elfinder .elfinder-workzone div.elfinder-cwd-fixheader table { table-layout: fixed; } .elfinder .elfinder-cwd table tbody.elfinder-cwd-fixheader { position: relative; } .elfinder-ltr .elfinder-cwd thead .elfinder-cwd-selectall { text-align: left; right: auto; left: 0px; padding-top: 3px; } .elfinder-rtl .elfinder-cwd thead .elfinder-cwd-selectall { text-align: right; right: 0px; left: auto; padding-top: 3px; } .elfinder-touch .elfinder-cwd thead .elfinder-cwd-selectall { padding-top: 4px; } .elfinder .elfinder-cwd table thead tr { border-left: 0 solid; border-top: 0 solid; border-right: 0 solid; } .elfinder .elfinder-cwd table thead td { padding: 4px 14px; } .elfinder-ltr .elfinder-cwd.elfinder-has-checkbox table thead td:first-child { padding: 4px 14px 4px 22px; } .elfinder-rtl .elfinder-cwd.elfinder-has-checkbox table thead td:first-child { padding: 4px 22px 4px 14px; } .elfinder-touch .elfinder-cwd table thead td, .elfinder-touch .elfinder-cwd.elfinder-has-checkbox table thead td:first-child { padding-top: 8px; padding-bottom: 8px; } .elfinder .elfinder-cwd table thead td.ui-state-active { background: #ebf1f6; background: -moz-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ebf1f6), color-stop(50%, #abd3ee), color-stop(51%, #89c3eb), color-stop(100%, #d5ebfb)); background: -webkit-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); background: -o-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); background: -ms-linear-gradient(top, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); background: linear-gradient(to bottom, #ebf1f6 0%, #abd3ee 50%, #89c3eb 51%, #d5ebfb 100%); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebf1f6', endColorstr='#d5ebfb', GradientType=0); } .elfinder .elfinder-cwd table td { padding: 0 12px; white-space: pre; overflow: hidden; text-align: right; cursor: default; border: 0 solid; } .elfinder .elfinder-cwd table tbody td:first-child { position: relative } .elfinder .elfinder-cwd table td div { box-sizing: content-box; } tr.elfinder-cwd-file td .elfinder-cwd-select { padding-top: 3px; } .elfinder-mobile tr.elfinder-cwd-file td .elfinder-cwd-select { width: 40px; } .elfinder-touch tr.elfinder-cwd-file td .elfinder-cwd-select { padding-top: 10px; } .elfinder-touch .elfinder-cwd tr td { padding: 10px 12px; } .elfinder-touch .elfinder-cwd tr.elfinder-cwd-file td { padding: 13px 12px; } .elfinder-ltr .elfinder-cwd table td { text-align: right; } .elfinder-ltr .elfinder-cwd table td:first-child { text-align: left; } .elfinder-rtl .elfinder-cwd table td { text-align: left; } .elfinder-rtl .elfinder-cwd table td:first-child { text-align: right; } .elfinder-odd-row { background: #eee; } /* filename container */ .elfinder-cwd-view-list .elfinder-cwd-file-wrapper { width: 97%; position: relative; } /* filename container in ltr/rtl enviroment */ .elfinder-ltr .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper { margin-left: 8px; } .elfinder-rtl .elfinder-cwd-view-list.elfinder-has-checkbox .elfinder-cwd-file-wrapper { margin-right: 8px; } .elfinder-cwd-view-list .elfinder-cwd-filename { padding-top: 4px; padding-bottom: 4px; display: inline-block; } .elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-filename { padding-left: 23px; } .elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-filename { padding-right: 23px; } /* premissions/symlink marker */ .elfinder-cwd-view-list .elfinder-perms, .elfinder-cwd-view-list .elfinder-lock, .elfinder-cwd-view-list .elfinder-symlink { margin-top: -6px; opacity: .6; filter: Alpha(Opacity=60); } .elfinder-cwd-view-list .elfinder-perms { bottom: -4px; } .elfinder-cwd-view-list .elfinder-lock { top: 0px; } .elfinder-cwd-view-list .elfinder-symlink { bottom: -4px; } /* markers in ltr/rtl enviroment */ .elfinder-ltr .elfinder-cwd-view-list .elfinder-perms { left: 8px; } .elfinder-rtl .elfinder-cwd-view-list .elfinder-perms { right: -8px; } .elfinder-ltr .elfinder-cwd-view-list .elfinder-lock { left: 10px; } .elfinder-rtl .elfinder-cwd-view-list .elfinder-lock { right: -10px; } .elfinder-ltr .elfinder-cwd-view-list .elfinder-symlink { left: -7px; } .elfinder-rtl .elfinder-cwd-view-list .elfinder-symlink { right: 7px; } /* file icon */ .elfinder-cwd-view-list td .elfinder-cwd-icon { width: 16px; height: 16px; position: absolute; top: 50%; margin-top: -8px; background-image: url(../img/icons-small.png); } /* icon in ltr/rtl enviroment */ .elfinder-ltr .elfinder-cwd-view-list .elfinder-cwd-icon { left: 0; } .elfinder-rtl .elfinder-cwd-view-list .elfinder-cwd-icon { right: 0; } /* type badge, thumbnail image overlay */ .elfinder-cwd-view-list .elfinder-cwd-icon:before, .elfinder-cwd-view-list .elfinder-cwd-icon:after { content: none; } /* table header resize handle */ .elfinder-cwd-view-list thead td .ui-resizable-handle { height: 100%; top: 6px; } .elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-handle { top: -4px; margin: 10px; } .elfinder-cwd-view-list thead td .ui-resizable-e { right: -7px; } .elfinder-cwd-view-list thead td .ui-resizable-w { left: -7px; } .elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-e { right: -16px; } .elfinder-touch .elfinder-cwd-view-list thead td .ui-resizable-w { left: -16px; } /* empty message */ .elfinder-cwd-wrapper-empty .elfinder-cwd-view-list.elfinder-cwd:after { margin-top: 0; } /* overlay message board */ .elfinder-cwd-message-board { position: absolute; position: -webkit-sticky; position: sticky; width: 100%; height: calc(100% - 0.01px); /* for Firefox scroll problem */ top: 0; left: 0; margin: 0; padding: 0; pointer-events: none; background-color: transparent; } /* overlay message board for trash */ .elfinder-cwd-wrapper-trash .elfinder-cwd-message-board { background-image: url(../img/trashmesh.png); } .elfinder-cwd-message-board .elfinder-cwd-trash { position: absolute; bottom: 0; font-size: 30px; width: 100%; text-align: right; display: none; } .elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-trash { text-align: left; } .elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-trash { font-size: 20px; } .elfinder-cwd-wrapper-trash .elfinder-cwd-message-board .elfinder-cwd-trash { display: block; opacity: .3; } /* overlay message board for expires */ .elfinder-cwd-message-board .elfinder-cwd-expires { position: absolute; bottom: 0; font-size: 24px; width: 100%; text-align: right; opacity: .25; } .elfinder-rtl .elfinder-cwd-message-board .elfinder-cwd-expires { text-align: left; } .elfinder-mobile .elfinder-cwd-message-board .elfinder-cwd-expires { font-size: 20px; } application/library/css/theme.css000064400000027451147577724760013162 0ustar00/** * MacOS X like theme for elFinder. * Required jquery ui "smoothness" theme. * * @author Dmitry (dio) Levashov **/ /* scrollbar for Chrome and Safari */ .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar { width: 10px; height: 10px; } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-track { border-radius: 10px; box-shadow: inset 0 0 6px rgba(0, 0, 0, .1); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb { background-color: rgba(0, 0, 50, 0.08); border-radius: 10px; box-shadow:0 0 0 1px rgba(255, 255, 255, .3); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb:hover { background-color: rgba(0, 0, 50, 0.16); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-thumb:active { background-color: rgba(0, 0, 50, 0.24); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-corner { background-color: transparent; } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button { background-color: transparent; width: 10px; height: 10px; border: 5px solid transparent; } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:hover { border: 5px solid rgba(0, 0, 50, 0.08); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:active { border: 5px solid rgba(0, 0, 50, 0.5); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:vertical:decrement { border-bottom: 8px solid rgba(0, 0, 50, 0.3); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:vertical:increment { border-top: 8px solid rgba(0, 0, 50, 0.3); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:horizontal:decrement { border-right: 8px solid rgba(0, 0, 50, 0.3); } .elfinder:not(.elfinder-mobile) *::-webkit-scrollbar-button:single-button:horizontal:increment { border-left: 8px solid rgba(0, 0, 50, 0.3); } /* input textarea */ .elfinder input, .elfinder textarea { color: #000; background-color: #FFF; border-color: #ccc; } /* dialogs */ .std42-dialog, .std42-dialog .ui-widget-content { background-color: #ededed; background-image: none; background-clip: content-box; } .std42-dialog.elfinder-bg-translucent { background-color: #fff; background-color: rgba(255, 255, 255, 0.9); } .std42-dialog.elfinder-bg-translucent .ui-widget-content { background-color: transparent; } .elfinder-quicklook-title { color: #fff; } .elfinder-quicklook-titlebar-icon { background-color: transparent; background-image: none; } .elfinder-quicklook-titlebar-icon .ui-icon { background-color: #d4d4d4; border-color: #8a8a8a; } .elfinder-quicklook-info-progress { background-color: gray; } .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close:hover .ui-icon, .elfinder-mobile .std42-dialog .ui-dialog-titlebar .ui-dialog-titlebar-close .ui-icon, .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close:hover, .elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-close { background-color: #ff6252; border-color: #e5695d; background-image: url("../img/ui-icons_ffffff_256x240.png"); } .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize:hover .ui-icon, .elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-minimize .ui-icon, .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize:hover, .elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-minimize { background-color: #ffbc00; border-color: #e3a40b; background-image: url("../img/ui-icons_ffffff_256x240.png"); } .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full:hover .ui-icon, .elfinder-mobile .std42-dialog .ui-dialog-titlebar .elfinder-titlebar-full .ui-icon, .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full:hover, .elfinder-mobile .elfinder-quicklook-titlebar-icon .ui-icon.elfinder-icon-full { background-color: #26c82f; border-color: #13ae10; background-image: url("../img/ui-icons_ffffff_256x240.png"); } .std42-dialog .elfinder-help, .std42-dialog .elfinder-help .ui-widget-content { background: #fff; } /* navbar */ .elfinder .elfinder-navbar { background: #dde4eb; } .elfinder-navbar .ui-state-hover { color: #000; background-color: #edf1f4; border-color: #bdcbd8; } .elfinder-navbar .ui-droppable-hover { background: transparent; } .elfinder-navbar .ui-state-active { background: #3875d7; border-color: #3875d7; color: #fff; } .elfinder-navbar .elfinder-droppable-active { background: #A7C6E5; } /* disabled elfinder */ .elfinder-disabled .elfinder-navbar .ui-state-active { background: #dadada; border-color: #aaa; color: #777; } /* workzone */ .elfinder-workzone { background: #fff; } /* current directory */ /* Is in trash */ .elfinder-cwd-wrapper.elfinder-cwd-wrapper-trash { background-color: #f0f0f0; } /* selected file in "icons" view */ .elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-hover, .elfinder-cwd-view-icons .elfinder-cwd-file .ui-state-active { background: #ccc; } /* type badge in "icons" view */ /* default */ .elfinder-cwd-icon:before { color: white; background-color: #798da7; } /* type */ .elfinder-cwd-icon-text:before { background-color: #6f99e6 } .elfinder-cwd-icon-image:before { background-color: #2ea26c } .elfinder-cwd-icon-audio:before { background-color: #7bad2a } .elfinder-cwd-icon-video:before { background-color: #322aad } /* subtype */ .elfinder-cwd-icon-x-empty:before, .elfinder-cwd-icon-plain:before { background-color: #719be6 } .elfinder-cwd-icon-rtf:before, .elfinder-cwd-icon-rtfd:before { background-color: #83aae7 } .elfinder-cwd-icon-pdf:before { background-color: #db7424 } .elfinder-cwd-icon-html:before { background-color: #82bc12 } .elfinder-cwd-icon-xml:before, .elfinder-cwd-icon-css:before { background-color: #7c7c7c } .elfinder-cwd-icon-x-shockwave-flash:before { background-color: #f43a36 } .elfinder-cwd-icon-zip:before, .elfinder-cwd-icon-x-zip:before, .elfinder-cwd-icon-x-xz:before, .elfinder-cwd-icon-x-7z-compressed:before, .elfinder-cwd-icon-x-gzip:before, .elfinder-cwd-icon-x-tar:before, .elfinder-cwd-icon-x-bzip:before, .elfinder-cwd-icon-x-bzip2:before, .elfinder-cwd-icon-x-rar:before, .elfinder-cwd-icon-x-rar-compressed:before { background-color: #97638e } .elfinder-cwd-icon-javascript:before, .elfinder-cwd-icon-x-javascript:before, .elfinder-cwd-icon-x-perl:before, .elfinder-cwd-icon-x-python:before, .elfinder-cwd-icon-x-ruby:before, .elfinder-cwd-icon-x-sh:before, .elfinder-cwd-icon-x-shellscript:before, .elfinder-cwd-icon-x-c:before, .elfinder-cwd-icon-x-csrc:before, .elfinder-cwd-icon-x-chdr:before, .elfinder-cwd-icon-x-c--:before, .elfinder-cwd-icon-x-c--src:before, .elfinder-cwd-icon-x-c--hdr:before, .elfinder-cwd-icon-x-java:before, .elfinder-cwd-icon-x-java-source:before, .elfinder-cwd-icon-x-php:before { background-color: #7c607c } .elfinder-cwd-icon-msword:before, .elfinder-cwd-icon-vnd-ms-office:before, .elfinder-cwd-icon-vnd-ms-word:before, .elfinder-cwd-icon-vnd-ms-word-document-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-word-template-macroEnabled-12:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-document:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-wordprocessingml-template:before { background-color: #2b569a } .elfinder-cwd-icon-ms-excel:before, .elfinder-cwd-icon-vnd-ms-excel:before, .elfinder-cwd-icon-vnd-ms-excel-addin-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-excel-sheet-binary-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-excel-sheet-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-excel-template-macroEnabled-12:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-sheet:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-spreadsheetml-template:before { background-color: #107b10 } .elfinder-cwd-icon-vnd-ms-powerpoint:before, .elfinder-cwd-icon-vnd-ms-powerpoint-addin-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-powerpoint-presentation-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-powerpoint-slide-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-powerpoint-slideshow-macroEnabled-12:before, .elfinder-cwd-icon-vnd-ms-powerpoint-template-macroEnabled-12:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-presentation:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slide:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-slideshow:before, .elfinder-cwd-icon-vnd-openxmlformats-officedocument-presentationml-template:before { background-color: #d24625 } .elfinder-cwd-icon-vnd-oasis-opendocument-chart:before, .elfinder-cwd-icon-vnd-oasis-opendocument-database:before, .elfinder-cwd-icon-vnd-oasis-opendocument-formula:before, .elfinder-cwd-icon-vnd-oasis-opendocument-graphics:before, .elfinder-cwd-icon-vnd-oasis-opendocument-graphics-template:before, .elfinder-cwd-icon-vnd-oasis-opendocument-image:before, .elfinder-cwd-icon-vnd-oasis-opendocument-presentation:before, .elfinder-cwd-icon-vnd-oasis-opendocument-presentation-template:before, .elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet:before, .elfinder-cwd-icon-vnd-oasis-opendocument-spreadsheet-template:before, .elfinder-cwd-icon-vnd-oasis-opendocument-text:before, .elfinder-cwd-icon-vnd-oasis-opendocument-text-master:before, .elfinder-cwd-icon-vnd-oasis-opendocument-text-template:before, .elfinder-cwd-icon-vnd-oasis-opendocument-text-web:before, .elfinder-cwd-icon-vnd-openofficeorg-extension:before { background-color: #00a500 } .elfinder-cwd-icon-postscript:before { background-color: #ff5722 } /* list view*/ .elfinder-cwd table thead td.ui-state-hover { background: #ddd; } .elfinder-cwd table tr:nth-child(odd) { background-color: #edf3fe; } .elfinder-cwd table tr { border: 1px solid transparent; border-top: 1px solid #fff; } .elfinder-cwd .elfinder-droppable-active td { background: #A7C6E5; } .elfinder-cwd.elfinder-table-header-sticky table { border-top-color: #fff; } .elfinder-droppable-active .elfinder-cwd.elfinder-table-header-sticky table { border-top-color: #A7C6E5; } /* common selected background/color */ .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover, .elfinder-cwd table td.ui-state-hover, .elfinder-button-menu .ui-state-hover { background: #3875d7; color: #fff; } /* disabled elfinder */ .elfinder-disabled .elfinder-cwd-view-icons .elfinder-cwd-file .elfinder-cwd-filename.ui-state-hover, .elfinder-disabled .elfinder-cwd table td.ui-state-hover { background: #dadada; } /* statusbar */ .elfinder .elfinder-statusbar { color: #555; } .elfinder .elfinder-statusbar a { text-decoration: none; color: #555; } /* contextmenu */ .elfinder-contextmenu .ui-state-active { background: #6293df; color: #fff; } .elfinder-contextmenu .ui-state-hover { background: #3875d7; color: #fff; } .elfinder-contextmenu .ui-state-hover .elfinder-contextmenu-arrow { background-image: url('../img/arrows-active.png'); } /* dialog */ .elfinder .ui-dialog input:text.ui-state-hover, .elfinder .ui-dialog textarea.ui-state-hover { background-image: none; background-color: inherit; } .elfinder-notify-cancel .elfinder-notify-button { background-color: #707070; background-image: url("../img/ui-icons_ffffff_256x240.png"); } .elfinder-notify-cancel .elfinder-notify-button.ui-state-hover { background-color: #aaa; } /* edit dialog */ .elfinder-dialog-edit select.elfinder-edit-changed { border-bottom: 2px solid #13ae10; } /* tooltip */ .ui-widget-content.elfinder-ui-tooltip { background-color: #fff; } .elfinder-ui-tooltip.ui-widget-shadow, .elfinder .elfinder-ui-tooltip.ui-widget-shadow { box-shadow: 2px 6px 4px -4px #cecdcd; } /* progressbar */ .elfinder-ui-progressbar { background-color: #419bf3; }application/library/css/fonts.css000064400000002455147577724760013206 0ustar00.elfinder-font-mono { font-family: "Ricty Diminished", "Myrica M", Consolas, "Courier New", Courier, Monaco, monospace; font-size: 1.1em; } .elfinder-contextmenu .elfinder-contextmenu-item span { font-size: .72em; } .elfinder-cwd-view-icons .elfinder-cwd-filename { font-size: .7em; } .elfinder-cwd-view-list td { font-size: .7em; } .std42-dialog .ui-dialog-titlebar { font-size: .82em; } .std42-dialog .ui-dialog-content { font-size: .72em; } .std42-dialog .ui-dialog-buttonpane { font-size: .76em; } .elfinder-info-tb { font-size: .9em; } .elfinder-upload-dropbox { font-size: 1.2em; } .elfinder-upload-dialog-or { font-size: 1.2em; } .dialogelfinder .dialogelfinder-drag { font-size: .9em; } .elfinder .elfinder-navbar { font-size: .72em; } .elfinder-place-drag .elfinder-navbar-dir { font-size: .9em; } .elfinder-quicklook-title { font-size: .7em; font-weight: normal; } .elfinder-quicklook-info-data { font-size: .72em; } .elfinder-quicklook-preview-text-wrapper { font-size: .9em; } .elfinder-button-menu-item { font-size: .72em; } .elfinder-button-search input { font-size: .8em; } .elfinder-statusbar div { font-size: .7em; } .elfinder-drag-num { font-size: 12px; } .elfinder-toast { font-size: .76em; } application/library/css/navbar.css000064400000022253147577724760013324 0ustar00/*********************************************/ /* NAVIGATION PANEL */ /*********************************************/ /* container */ .elfinder .elfinder-navbar { /*box-sizing: border-box;*/ width: 230px; padding: 3px 5px; background-image: none; border-top: 0 solid; border-bottom: 0 solid; overflow: auto; position: relative; } .elfinder .elfinder-navdock { box-sizing: border-box; width: 230px; height: auto; position: absolute; bottom: 0; overflow: auto; } .elfinder-navdock .ui-resizable-n { top: 0; height: 20px; } /* ltr/rtl enviroment */ .elfinder-ltr .elfinder-navbar { float: left; border-left: 0 solid; } .elfinder-rtl .elfinder-navbar { float: right; border-right: 0 solid; } .elfinder-ltr .ui-resizable-e { margin-left: 10px; } /* folders tree container */ .elfinder-tree { display: table; width: 100%; margin: 0 0 .5em 0; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); } /* one folder wrapper */ .elfinder-navbar-wrapper, .elfinder-place-wrapper { } /* folder */ .elfinder-navbar-dir { position: relative; display: block; white-space: nowrap; padding: 3px 12px; margin: 0; outline: 0px solid; border: 1px solid transparent; cursor: default; } .elfinder-touch .elfinder-navbar-dir { padding: 12px 12px; } /* ltr/rtl enviroment */ .elfinder-ltr .elfinder-navbar-dir { padding-left: 35px; } .elfinder-rtl .elfinder-navbar-dir { padding-right: 35px; } /* arrow before icon */ .elfinder-navbar-arrow { width: 12px; height: 14px; position: absolute; display: none; top: 50%; margin-top: -8px; background-image: url("../img/arrows-normal.png"); background-repeat: no-repeat; /* border:1px solid #111;*/ } .elfinder-ltr .elfinder-navbar-arrow { left: 0; } .elfinder-rtl .elfinder-navbar-arrow { right: 0; } .elfinder-touch .elfinder-navbar-arrow { -moz-transform-origin: top left; -moz-transform: scale(1.4); zoom: 1.4; margin-bottom: 7px; } .elfinder-ltr.elfinder-touch .elfinder-navbar-arrow { left: -3px; margin-right: 20px; } .elfinder-rtl.elfinder-touch .elfinder-navbar-arrow { right: -3px; margin-left: 20px; } .ui-state-active .elfinder-navbar-arrow { background-image: url("../img/arrows-active.png"); } /* collapsed/expanded arrow view */ .elfinder-navbar-collapsed .elfinder-navbar-arrow { display: block; } .elfinder-subtree-chksubdir .elfinder-navbar-arrow { opacity: .25; filter: Alpha(Opacity=25); } /* arrow ltr/rtl enviroment */ .elfinder-ltr .elfinder-navbar-collapsed .elfinder-navbar-arrow { background-position: 0 4px; } .elfinder-rtl .elfinder-navbar-collapsed .elfinder-navbar-arrow { background-position: 0 -10px; } .elfinder-ltr .elfinder-navbar-expanded .elfinder-navbar-arrow, .elfinder-rtl .elfinder-navbar-expanded .elfinder-navbar-arrow { background-position: 0 -21px; } /* folder icon */ .elfinder-navbar-icon { width: 16px; height: 16px; position: absolute; top: 50%; margin-top: -8px; background-image: url("../img/toolbar.png"); background-repeat: no-repeat; background-position: 0 -16px; } /* ltr/rtl enviroment */ .elfinder-ltr .elfinder-navbar-icon { left: 14px; } .elfinder-rtl .elfinder-navbar-icon { right: 14px; } /* places icon */ .elfinder-places .elfinder-navbar-root .elfinder-navbar-icon { background-position: 0 -704px; } /* root folder */ .elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon, .elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon { background-position: 0 0; background-size: contain; } /* root icon of each volume "\9" for IE8 trick */ .elfinder-tree .elfinder-navbar-root-local .elfinder-navbar-icon { background-image: url("../img/volume_icon_local.svg"); background-image: url("../img/volume_icon_local.png") \9; } .elfinder-tree .elfinder-navbar-root-trash .elfinder-navbar-icon { background-image: url("../img/volume_icon_trash.svg"); background-image: url("../img/volume_icon_trash.png") \9; } .elfinder-tree .elfinder-navbar-root-ftp .elfinder-navbar-icon { background-image: url("../img/volume_icon_ftp.svg"); background-image: url("../img/volume_icon_ftp.png") \9; } .elfinder-tree .elfinder-navbar-root-sql .elfinder-navbar-icon { background-image: url("../img/volume_icon_sql.svg"); background-image: url("../img/volume_icon_sql.png") \9; } .elfinder-tree .elfinder-navbar-root-dropbox .elfinder-navbar-icon { background-image: url("../img/volume_icon_dropbox.svg"); background-image: url("../img/volume_icon_dropbox.png") \9; } .elfinder-tree .elfinder-navbar-root-googledrive .elfinder-navbar-icon { background-image: url("../img/volume_icon_googledrive.svg"); background-image: url("../img/volume_icon_googledrive.png") \9; } .elfinder-tree .elfinder-navbar-root-onedrive .elfinder-navbar-icon { background-image: url("../img/volume_icon_onedrive.svg"); background-image: url("../img/volume_icon_onedrive.png") \9; } .elfinder-tree .elfinder-navbar-root-box .elfinder-navbar-icon { background-image: url("../img/volume_icon_box.svg"); background-image: url("../img/volume_icon_box.png") \9; } .elfinder-tree .elfinder-navbar-root-zip .elfinder-navbar-icon { background-image: url("../img/volume_icon_zip.svg"); background-image: url("../img/volume_icon_zip.png") \9; } .elfinder-tree .elfinder-navbar-root-network .elfinder-navbar-icon { background-image: url("../img/volume_icon_network.svg"); background-image: url("../img/volume_icon_network.png") \9; } /* icon in active/hove/dropactive state */ .ui-state-active .elfinder-navbar-icon, .elfinder-droppable-active .elfinder-navbar-icon, .ui-state-hover .elfinder-navbar-icon { background-position: 0 -32px; } /* ltr/rtl enviroment */ .elfinder-ltr .elfinder-navbar-subtree { margin-left: 12px; } .elfinder-rtl .elfinder-navbar-subtree { margin-right: 12px; } /* spinner */ .elfinder-tree .elfinder-spinner { position: absolute; top: 50%; margin: -7px 0 0; } /* spinner ltr/rtl enviroment */ .elfinder-ltr .elfinder-tree .elfinder-spinner { left: 0; margin-left: -2px; } .elfinder-rtl .elfinder-tree .elfinder-spinner { right: 0; margin-right: -2px; } /* marker */ .elfinder-navbar .elfinder-perms, .elfinder-navbar .elfinder-lock, .elfinder-navbar .elfinder-symlink { opacity: .6; filter: Alpha(Opacity=60); } /* permissions marker */ .elfinder-navbar .elfinder-perms { bottom: -1px; margin-top: -8px; } /* locked marker */ .elfinder-navbar .elfinder-lock { top: -2px; } /* permissions/symlink markers ltr/rtl enviroment */ .elfinder-ltr .elfinder-navbar .elfinder-perms { left: 20px; transform: scale(0.8); } .elfinder-rtl .elfinder-navbar .elfinder-perms { right: 20px; transform: scale(0.8); } .elfinder-ltr .elfinder-navbar .elfinder-lock { left: 20px; transform: scale(0.8); } .elfinder-rtl .elfinder-navbar .elfinder-lock { right: 20px; transform: scale(0.8); } .elfinder-ltr .elfinder-navbar .elfinder-symlink { left: 8px; transform: scale(0.8); } .elfinder-rtl .elfinder-navbar .elfinder-symlink { right: 8px; transform: scale(0.8); } /* navbar input */ .elfinder-navbar input { width: 100%; border: 0px solid; margin: 0; padding: 0; } /* resizable */ .elfinder-navbar .ui-resizable-handle { width: 12px; background: transparent url('../img/resize.png') center center no-repeat; } .elfinder-nav-handle-icon { position: absolute; top: 50%; margin: -8px 2px 0 2px; opacity: .5; filter: Alpha(Opacity=50); } /* pager button */ .elfinder-navbar-pager { width: 100%; box-sizing: border-box; padding-top: 3px; padding-bottom: 3px; } .elfinder-touch .elfinder-navbar-pager { padding-top: 10px; padding-bottom: 10px; } .elfinder-places { border: none; margin: 0; padding: 0; } .elfinder-places.elfinder-droppable-active { /*border:1px solid #8cafed;*/ } /* navbar swipe handle */ .elfinder-navbar-swipe-handle { position: absolute; top: 0px; height: 100%; width: 50px; pointer-events: none; } .elfinder-ltr .elfinder-navbar-swipe-handle { left: 0px; background: linear-gradient(to right, rgba(221, 228, 235, 1) 0, rgba(221, 228, 235, 0.8) 5px, rgba(216, 223, 230, 0.3) 8px, rgba(0, 0, 0, 0.1) 95%, rgba(0, 0, 0, 0) 100%); } .elfinder-rtl .elfinder-navbar-swipe-handle { right: 0px; background: linear-gradient(to left, rgba(221, 228, 235, 1) 0, rgba(221, 228, 235, 0.8) 5px, rgba(216, 223, 230, 0.3) 8px, rgba(0, 0, 0, 0.1) 95%, rgba(0, 0, 0, 0) 100%); } application/library/css/places.css000064400000001102147577724760013310 0ustar00/*********************************************/ /* PLACES STYLES */ /*********************************************/ /* root extra icon */ .elfinder-navbar-root .elfinder-places-root-icon { position: absolute; top: 50%; margin-top: -9px; cursor: pointer; } .elfinder-ltr .elfinder-places-root-icon { right: 10px; } .elfinder-rtl .elfinder-places-root-icon { left: 10px; } .elfinder-navbar-expanded .elfinder-places-root-icon { display: block; } /* dragging helper base */ .elfinder-place-drag { font-size: 0.8em; } application/library/files/.htaccess000064400000000015147577724760013441 0ustar00deny from allapplication/library/img/src/icons-small.pxm000064400000155566147577724760015101 0ustar00PXMT_DOCÊHEADERIN„Ï$(°”°„METADATA& žò streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+ _IMAGE_ZOOM_†’„„„NSNumber„„NSValue•„*„„fœ†’„—˜_MASKS_VISIBLE_RECT_†’„—˜<{{6.95324e-310, 6.95324e-310}, {8.39912e-323, 2.22546e-314}}†’„—˜_DOCUMENT_SLICES_†’„„„NSMutableArray„„NSArray•–†’„—˜ _PX_VERSION_†’„—˜ 1.6.5†’„—˜_DOCUMENT_WINDOW_RECT_†’„—˜{{712, 4}, {200, 874}}†’„—˜ _PRINT_INFO_†’„„„ NSMutableData„„NSData•–}„[381c] streamtypedè„@„„„ NSPrintInfo„„NSObject…’„„„NSMutableDictionary„„ NSDictionary”„i’„„„NSString”„+NSHorizontallyCentered†’„„„NSNumber„„NSValue”„*„„c†’„™™ NSRightMargin†’„›œ„„fžH†’„™™ NSLeftMargin†’„›œ žH†’„™™NSHorizonalPagination†’„›œ„——†’„™™NSVerticalPagination†’„›œ„—†’„™™NSVerticallyCentered†’š’„™™ NSTopMargin†’„›œ žZ†’„™™NSBottomMargin†’„›œ žZ††††’„—˜_LAYERS_VISIBLE_RECT_†’„—˜{{0, 348}, {239, 240}}†’„—˜_DOCUMENT_SLICES_INFO_†’„“–’„—˜PXSlicesPreviewEnabledKey†’„™›„„cą†’„—˜PXSlicesVisibleKey†’„™›°ą††’„—˜__OLD_METADATA_FOR_SPOTLIGHT__†’„“–’„—˜ colorMode†’„™›„––†’„—˜ layersNames†’„ –’„—˜Layer 1†’„—˜dir†’„—˜ dir-opened†’„—˜file_extension_m4b†’„—˜file_extension_jpeg†’„—˜file_extension_htm†’„—˜file_extension_zip†’„—˜file_extension_hqx†’„—˜file_extension_gz†’„—˜file_extension_flv†’„—˜file_extension_doc†’„—˜file_extension_html†’„—˜file_extension_bin†’„—˜file_extension_bat copy 3†’„—˜file_extension_bin†’„—˜file_extension_chm†’„—˜file_extension_ptb copy 5†’„—˜file_extension_ptb copy 4†’„—˜file_extension_ptb copy 3†’„—˜file_extension_ptb copy 2†’„—˜file_extension_ptb copy†’„—˜file_extension_ptb†’„—˜file_extension_ace†’„—˜file_extension_rtf†’„—˜file_extension_pdf†’„—˜file_extension_mpeg†’„—˜file_extension_mp4†’„—˜file_extension_txt†’„—˜file_extension_exe†’„—˜ application†’„—˜Layer 0††’„—˜keywords†’„ –†’„—˜ csProfileName†’„—˜sRGB IEC61966-2.1†’„—˜resolutionType†’¶’„—˜ resolution†’„™›„„dŁƒ€“R@†’„—˜ canvasSize†’„—˜ {16, 1280}††’„—˜PXRulersMetadataKey†’„“–’ź’Ż’„—˜PXGuidesArrayKey†’„ –’„“–’„—˜PXGuidePositionKey†’„™›·–c†’„—˜PXGuideOrientationKey†’„™›·–†††’„—˜PXRulersVisibleKey†’Ż’±’Ȇ’„—˜_MASKS_SELECTION_†’„š–I„[73c] streamtypedè„@„„„NSMutableIndexSet„„ NSIndexSet„„NSObject…„I††’„—˜_ICC_PROFILE_NAME_†’Ü’„—˜_ORIGINAL_EXIF_†’„“–’„—˜*kCGImageDestinationLossyCompressionQuality†’„™››œ†’„—˜Depth†’„™›·–†’„—˜{TIFF}†’„“–’„—˜ResolutionUnit†’¶’„—˜Software†’„—˜Pixelmator 1.6.5†’„—˜ Compression†’¶’„—˜DateTime†’„„„NSMutableString—˜2011-06-29 00:42:06 +0400†’„—˜ XResolution†’„™››œƒœB†’„—˜ Orientation†’¶’„—˜ YResolution†’„™››œƒœB††’„—˜ PixelHeight†’„™››œ†’’¶’„—˜{Exif}†’„“–’„—˜PixelXDimension†’„™›·–†’„—˜PixelYDimension†’„™›·–†’„—˜ ColorSpace†’¶†’„—˜{JFIF}†’„“–’„—˜YDensity†’„™››œƒœB†’„—˜ IsProgressive†’Č’„—˜XDensity†’„™››œƒœB†’„—˜ DensityUnit†’¶†’„—˜{IPTC}†’„“–’„—˜ProgramVersion†’„—˜Pixelmator 1.6.5†’„—˜ImageOrientation†’¶’„—˜Keywords†’Ú†’„—˜ ProfileName†’Ü’„—˜DPIWidth†’„™››œƒœB†’„—˜{PNG}†’„“–’„—˜XPixelsPerMeter†’„™›·– †’„—˜YPixelsPerMeter†’„™›·– ††’„—˜ DPIHeight†’„™››œƒœB†’„—˜ ColorModel†’„—˜RGB†’„—˜HasAlpha†’Ż’„—˜ PixelWidth†’„™››œ††’„—˜_DOCUMENT_LAST_SLICE_INFO_†’„”–’„—˜PXSliceMatteColorKey†’„„„NSColor•ą„ffff†’„—˜ transparent†’¶’„—˜PXSliceFormatKey†’„—˜PXSliceFormatPNG24††’„—˜_LAYERGROUPS_EXPANSION_STATES_†’„ –’„“–’„—˜_STATE_†’Č’„—˜_ID_†’„—˜:B49E082D-A1FB-487E-BE17-E16F73A8F48E-7317-000022DE0376C4C3††’„“–’6’Č’7’„—˜:2FF17678-F87E-4E6E-974D-AEA1452BD260-7317-000022DE0375EFB6††’„“–’6’Č’7’„—˜:E171E19A-6285-43FA-A545-2E08E088286D-7317-000022DE03753825††’„“–’6’Č’7’„—˜:2B6314C0-94D3-4C2D-9EB8-2547D45A688F-7317-000022DE03747F72††’„“–’6’Č’7’„—˜:86178D35-500B-4623-A85A-DFB323809A81-7317-000022DE0373DCEE††’„“–’6’Č’7’„—˜:B6072A85-4E32-4313-9BFE-CA12E71CDDE9-7317-000022DE037336E4††’„“–’6’Č’7’„—˜:141ACB82-8C5E-4C2A-B4DC-B8D953D85190-7317-000022DE03725503††’„“–’6’Č’7’„—˜:0C889008-D40C-41E0-9823-0527E71BC619-7317-000022DE03719715††’„“–’6’Č’7’„—˜:93651A65-B373-4406-A096-8E0C60F71A91-7317-000022DE0370F224††’„“–’6’Č’7’„—˜:7D161273-35F6-481F-BD4E-5F76C12E4EF0-7317-000022DE03703387††’„“–’6’Č’7’„—˜:DF7B7D00-9D58-40FF-AB9B-C0B4E116D0BE-7317-000022DE036F8E95††’„“–’6’Č’7’„—˜:E4915B50-BCCF-4E3A-A2A4-88DDFC85C7C2-7317-000022DE036EAEC3††’„“–’6’Č’7’„—˜:A2222DE8-C779-4E62-86DF-E7A4A005933A-7317-000022DE036DF68D††’„“–’6’Č’7’„—˜:DB8A1109-C165-42F8-A602-A93EC4310B9B-7317-000022DE036D5323††’„“–’6’Č’7’„—˜:B50AC766-400F-4253-9654-13294B38B1A3-7317-000022DE036CAC73††’„“–’6’Č’7’„—˜:FCA3C5B3-B773-48CA-A969-4C7CC08BE446-7317-000022DE036BC544††’„“–’6’Č’7’„—˜:45A3A36A-1062-4E1A-9E54-753C7A61F5BE-7317-000022DE036B1DAE††’„“–’6’Č’7’„—˜:68EE54FD-1991-449B-9898-B1F93AD70339-7317-000022DE036A4C08††’„“–’6’Č’7’„—˜:0A8227E9-EF9C-4910-83B3-6C6DD3B1E89A-7317-000022DE03699079††’„“–’6’Č’7’„—˜:7B043E90-924C-45F0-9A91-914255DA508F-7317-000022DE0368EB2E††’„“–’6’Č’7’„—˜:FF8D7603-C25D-4431-80E6-6C25E00BBE5F-7317-000022DE03682D54††’„“–’6’Č’7’„—˜:587F6844-CF89-4FFB-9E2C-2412F64E6630-7317-000022DE03678849††’„“–’6’Č’7’„—˜:B7C4F623-D892-486B-90FB-A99EA25A8EA9-7317-000022DE0366DB1F††’„“–’6’Č’7’„—˜:7A7AE012-6ED6-4941-ADAA-B810F40DDE18-7317-000022DE03658E24††’„“–’6’Č’7’„—˜:151FF549-750C-485C-9255-3469B07D2FE6-7317-000022DE0364E54C††’„“–’6’Č’7’„—˜:006E318C-BD27-431A-AF83-E3B0BFDF3832-7317-000022DE0364379F††’„“–’6’Č’7’„—˜:B87DDA57-9B11-452C-87CB-C71D10DCE80E-7317-000022DE036371D3††’„“–’6’Č’7’„—˜:0675C424-B6A2-4128-A197-5E9EC0E334B4-7317-000022DE0362C35D††’„“–’6’Č’7’„—˜:942D4059-6B5B-4B16-BBC5-36E294E422BD-7317-000022DE0361715A††’„“–’6’Č’7’„—˜:9D4AFCE3-1E59-42D2-AB1C-D4C2B0A3214B-7317-000022DE03608265††’„“–’6’Č’7’„—˜:C24D76FC-604F-44DD-ABC9-DE5742197FC4-7317-000022DE035EDBD5†††’„—˜_IMAGE_VISIBLE_RECT_†’„—˜{{-61, 0}, {169, 832}}†’„—˜_LAYERS_SELECTION_†’„š–8„[56c] streamtypedè„@„„„ NSIndexSet„„NSObject…„I• •††† GUIDES_INFO8c COLORSYNC H HLinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP ?Ú.ÛJ‰«`ą<_|}ĘcprtP3desc„lwtptđbkptrXYZgXYZ,bXYZ@dmndTpdmddĈvuedL†viewÔ$lumiűmeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ oą8őXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view€ț_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ€©źČ·ŒÁÆËĐŐÛàćëđöû %+28>ELRY`gnu|ƒ‹’šĄ©±čÁÉŃÙáéòú &/8AKT]gqz„Ž˜ąŹ¶ÁËŐàëő !-8COZfr~Š–ąźșÇÓàìù -;HUcq~Œšš¶ÄÓáđț +:IXgw†–Š”ĆŐćö'7HYj{ŒŻÀŃăő+=Oat†™ŹżÒćű 2FZn‚–ȘŸÒçû  % : O d y  € ș Ï ć û  ' = T j  ˜ ź Ć Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ă Ț ű.Id›¶Òî %A^z–łÏì &Ca~›čŚő1OmŒȘÉè&Ed„ŁĂă#Ccƒ€Ćć'Ij‹­Îđ4Vx›œà&IlČÖúAe‰źÒś@eŠŻŐú Ek‘·Ę*QwžĆì;cŠČÚ*R{ŁÌőGp™Ăì@j”Ÿé>i”żê  A l ˜ Ä đ!!H!u!Ą!Î!û"'"U"‚"Ż"Ę# #8#f#”#Â#đ$$M$|$«$Ú% %8%h%—%Ç%ś&'&W&‡&·&è''I'z'«'Ü( (?(q(ą(Ô))8)k))Đ**5*h*›*Ï++6+i++Ń,,9,n,ą,Ś- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/ț050l0€0Û11J1‚1ș1ò2*2c2›2Ô3 3F33ž3ń4+4e4ž4Ű55M5‡5Â5ę676r6ź6é7$7`7œ7Ś88P8Œ8È99B99Œ9ù:6:t:Č:ï;-;k;Ș;è<' >`> >à?!?a?ą?â@#@d@Š@çA)AjAŹAîB0BrB”BśC:C}CÀDDGDŠDÎEEUEšEȚF"FgF«FđG5G{GÀHHKH‘HŚIIcI©IđJ7J}JÄK KSKšKâL*LrLșMMJM“MÜN%NnN·OOIO“OĘP'PqP»QQPQ›QæR1R|RÇSS_SȘSöTBTTÛU(UuUÂVV\V©VśWDW’WàX/X}XËYYiYžZZVZŠZő[E[•[ć\5\†\Ö]']x]É^^l^œ__a_ł``W`Ș`üaOaąaőbIbœbđcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišińjHjŸjśkOk§kÿlWlŻmm`mčnnknÄooxoŃp+p†pàq:q•qđrKrŠss]sžttptÌu(u…uáv>v›vűwVwłxxnxÌy*y‰yçzFz„{{c{Â|!||á}A}Ą~~b~Â#„ć€G€š kÍ‚0‚’‚ôƒWƒș„„€„ă…G…«††r†Ś‡;‡ŸˆˆiˆÎ‰3‰™‰țŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘š’’z’ă“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜ž™$™™üšhšŐ›B›Żœœ‰œśdÒž@žźŸŸ‹Ÿú i ŰĄGĄ¶ą&ą–ŁŁvŁæ€V€Ç„8„©ŠŠ‹Šę§n§àšRšÄ©7©©ȘȘ««u«éŹ\ŹĐ­D­žź-źĄŻŻ‹°°u°ê±`±ÖČKČÂł8łźŽ%Žœ””Š¶¶y¶đ·h·àžYžŃčJčÂș;ș”».»§Œ!Œ›œœŸ Ÿ„ŸÿżzżőÀpÀìÁgÁăÂ_ÂÛĂXĂÔÄQÄÎĆKĆÈÆFÆĂÇAÇżÈ=ÈŒÉ:ÉčÊ8Ê·Ë6˶Ì5Ì”Í5Í”Î6ζÏ7ÏžĐ9ĐșŃ<ŃŸÒ?ÒÁÓDÓÆÔIÔËŐNŐŃÖUÖŰŚ\ŚàŰdŰèÙlÙńÚvÚûۀÜ܊ĘʖȚȚąß)߯à6àœáDáÌâSâÛăcăëäsäüć„æ æ–çç©è2èŒéFéĐê[êćëpëûì†ííœî(îŽï@ïÌđXđćńrńÿòŒóó§ô4ôÂőPőȚömöûśŠűűšù8ùÇúWúçûwüü˜ę)ęșțKțÜÿmÿÿLAYERSŒ^$¶'.*Ź.1Ű5t9.<È@CCćG^JÁN”QÏU\X—\J_èc†g$jÂn^qőu±yA|Ӏ^ƒÌ‡2Š€ŒŐt Layer 1d':B49E082D-A1FB-487E-BE17-E16F73A8F48E-7317-000022DE0376C4C3@1x•“Qn‚PEÙK—Đ}ù՘ž•ÆżbùššKèwĘC”+P[%Ä6šéŹ“‰'č<†čś1đ}3™„2 UOŠPĆ:‡Òïߧ^ôÛpÎI§ÓyTû?ž/ÌgŻò†æłj„†ÁàA"I’°G ‘ÌQô.qIŒˆ«•‚À—,Kőì4G·{7ԘÁsÂrKČü0QĂtúRíqžƒç՘†§Œs‰€©3Qvê0ŻÆŒs>ŚWyVŚòÌIŠû!ÀŻ1ƒ6›uŁÖëU%ÀŻ1ƒ¶_Ÿ­ü3šĄ(v­ü3šĄ,ËV~ÔđłßËśŃü3xp<ćph}ÀŻ1ƒçđkÌèőzÏ|SìËlMążWçFu{…đÿáyżTUȘĄČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††z3dird':2FF17678-F87E-4E6E-974D-AEA1452BD260-7317-000022DE0375EFB6@;€xÎ]H“ađ Zfš ȚdwAQÒmt‘PTàE7%Ž ‘"!ši.îĂíu˜:0·lÍ}Xæln*LÔü,»ÉÉhQ79ßg{·ÙŽúw·ĆąÀ^űqțçđŒçyŽȘ:alŹĐ]ż`SŚŚZŐŚj­ùù~ŐŐs–ÊęĆvló-ô"‰·CflˆO[ŸìEjö1ŸűMĐÉ/: KŠdećûŠ*K‹dć„{e\YńžÊĘ»vÊ"> ÜÁNlNt‘n|Ÿxˆôt>?AÈ„ęöèÒaO{:äÔ€V\Úő§vę㠀1áF(ìÔȟS&$’ŁĈD ©€éW€gÍT{ó<ÂÆL~Ì[đÎz—EÜÊűæ€ żđ7Ÿ‰—:H$ák§Ìeò:Ę·ÔÓÄBvel#Űɧ‡4bÈ#dńLü„WÂw§ÆŒX25±°])ŠüzćuˆÓț ÊĂŒæPÏń‘h–€ozn±î61ámClHM4DK4`^Ê\¶Ïśj‘€śŸîŸÉÂ6„( Ș°æyq@EČőÇsáęÖ\é… lÙȘˆ2W ąÎ{€őżŹčZŁóƶlŸ Ź:šłZ¶%Ì}sB ›o‹_í p«vúKźçțì3”"œc‘îÿôŽ9†©ÀŚŒäSț<MFPÀûȚ&vòđAœüìńńË5՞K§ȘĘżŐüsŚ>òŒț̱ŃȘŠ’+żÓÚfœČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††l f dir-openedd':E171E19A-6285-43FA-A545-2E08E088286D-7317-000022DE03753825@&xĐ]HSaÆńcW]»ŹŒ‰ÔF€Š Z˜-*hj7}@lE])‘Û4æúۜlšÚȘ55ŚæŹÍ•-ÜĐ6g›éZQb $*km;›gÍ#æÓ»ŁE%=đăŒŒđż8ŻäTčÊȚ"{jšÛ Č*{żŠÚŠąTFęç><ŃӘ°cá„ /ŒÀ«n$ÇLUŸ•Y"(äW–æeȚ›Ÿ-ä)ËĘZŸvÍêu$ćöȚȘˆ/ŽŽaÎӊ€SDż)W’țNÌúnƒá8sc]ˆMŰœ‘wˆ€ÜȚY䉄K‹°­Ž[&hEÂGZï-0iĂ70ëŃŚńĘ«ClÔéÂæÌ ëłŠvn+ž4Ë㟌RLuÔ Œ‡o`Ÿ›ÀÍä{l ›žvŒk éçßX€I>;ŽtšśRlB#ÂGëe€FuH šÔ.JkțE ‡u_ĂŒ·íg…–ŚÒhđêI|!ÿ"oÀž4„vEŹ»á‡Jälâű›NG1O⟀v4‚~€ú§žCæ±=’cĂäù(_Ł(șyŽ»ûÖ+Gä~ĂČôùO1›Ó&æm9NrjÊĄ‹Íô)1ĘQˆć"ÂæșżúJ„{ê1c”ÀŻ‡HÊ-!Z ,ćÊ4ê!Òz·^7ĂęŃÊ#5æĆ\ԃT:^ŠsO»ń=ršÒ…wŚÂč}ĘuÒˆ’ŁnűŽ¶è!XËӫ`€ńúònșCÓG•e°~"ä€Ô€ƒÜÂĂßb„|œ‡hŚâ«Ü„Ą#ˆÏÓÄdï^tì,șE”,ą…G\¶PW€‹G Ő@{-[!ŠŐ"ÒnÂÀ!5ëÖbF8 öœTË"Zű"ÔĂïÒ!Űf€ż”—j“z°œąW3|ìߏéÇuô?•ęOC”vè:Ą‡ìА­dŰŠÆ‡ôŸńŻ~bkrkŠűydsŸŸ#&{ńìÜš©Y©ûûš_±Ź/YMxßż ĄÎ2J dW.Ù€Đ”Ąy|6Ž&ê;Őx{o˜O”,l~sgB]Ćžó!:rÈÄ ©8í2Èm*LȚȚȘìÛÌxus3‚ùXü1Kfёyś7· /oló©–EČUâEßF„N©ÈúƒÜÎŃ} Ú‹óß>ł†ŒjêW*úWyŒxs±ű3I6ógî^…O.­*Œzó9[H^…ą/Û«0Ț[Šèy žôŹ&oezesôÂútÆ.QŠ1~„ ̧Z–“{J$v&Óœ’ŐL1QÌ4Ó;·oX ÛWùÜrŽ”êÿó—àž_ű_ Č streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††˜ ûfile_extension_jpegd':86178D35-500B-4623-A85A-DFB323809A81-7317-000022DE0373DCEE@Ix•’ÍKTQÆ]Ő6­(ĄE1†AŒź*pŃŠBhhÔŠżĄą&(aœ1ŽŽ!jáGe‰š“†àŒ„91NŽáś8–Ą3šű‘iżž{ł«%.zàÇ{ÏčÏsȚsÏč/Š‰€ŚA 4@Iź‰ż$–eü„'©óœűšŽŽȚSÀgXœą_DaqDU0J<ü çée_#Ł/‹œ\íb »o.@‡æhtŐL„jž|æ`”"©”4~t“Ț Yí.æĂûćûyéÎalrA“ïȘ%ÿlv­b–Ìț av4‚­ .Ÿêƒp„źĂl‘çWhöäĐTpL}úđßt ˜%ż‘ÿȚ ‘ĐS"ŒzŸ­z b•éŽ—|ZtžŠY2ÆÌ}„OeąBTBo9 ȚaƒkŒMž]:ßAŻÖè2ïC1Kf~Š úˆêß Ęçœ/Œ­|Šœ•qle“œś…ÔżSùŒ”ùé ÖŻO”U©f[ŐOìæÈȘ™Qe{Ւúw˜ÿ‰b–Z5fZ—«_áËS.”ÇŰSû}˜Ő©1łŻiÓ})f)è=źïoƒ„Œ˜lК -Ôł5śšö­gc<Àđ+f)ĆĆȚ ÉĂ$»Ł&)ž([ Ł€Čóˆ“Ôą›ĘĂdÈgűłŽËĘC¶ìćădTNŹ"N朙USdÜM`Ż7}†_1Ki…ëß;Ô°(–VđęƒȚ>ĂŻ˜%[ț»oÆ\šGu=–ß~ĆVkŸÈú ÿȒ’~BČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††¶ 'file_extension_htmd':B6072A85-4E32-4313-9BFE-CA12E71CDDE9-7317-000022DE037336E4@hx•]HSaÇwß]3?(›sÇmŠQȚAȚՍTWQ 7Cj 9E2úÚÄVD4ûŠ Č,7ç4u)n„Ź‘Ą’șÊÜÔćżç=Չ”șèÏyÎùÿȚçœóŒ’[äuœÚŒ€rT±’ ŚONËç$ÿ€čm^› ]ł>Lłÿ*0tmeЗ€Ę„x N­lEoe풃Ś±ęra†·]'71s»†©”$œZÚïm„»&}z^ÔBg3ú`/OÇÜ*@ÌÜ9 く‡€‰~-9 jjxê „Îæő>ƚvÓRt—Ii>GïƁ4§6k/jÈáà­Wa€ÊSÇá•~&.#f/GŹçâ V\ÚŸŚć#ÆkÈćàkPbÀ˜‹~}Æ­„˜ń۝ò`yá=úÎnÆČŁ<í#M„Ś)±Ô{>ùd˜śÓ—&óÎ^Ïù |±§ÿ«üĂWáSś1 6æÒn)„0őT#c=± omą]GÈW%ù.šç;Ăߔƒńö}”ț;>“óÏ‚ćIqéԘ}\‚áæ,,MQˆ/Œ…ßžë;îŹÀŹŻžg 9–'M„ÍÓśś`€%‰xă–ítÂoŸ­}E€§ c—dűđ`oȘ_]€HÇ..gQHŹ|ÆbđF[6"К.ÜsM† ł‘{Ć`yÒDÜg ¶!h•cČ-“–Lê[Œ‘‹UĐMŽ*Ą[J„;ŠÀò€‰˜muł{ì\önżÊ]]˜Z”cyI22ȘÿQ,ÿ‰ä;ÓÊHČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††– file_extension_zipd':141ACB82-8C5E-4C2A-B4DC-B8D953D85190-7317-000022DE03725503@Hx•íK“QÆśżő!Â(b­=N™¶)m.*ÂDêK~1Ű QW-ÍœšY(ŠW‰Ž “”[ΔÚƜÊ2ŠœP4Ćžșïgv`DP?žxÎ}ë:‡çšíțORwêźŽïJŐő ȘΊxVZ|›ŠżÀʁ5Àûè'čW{+À% ‡Ÿ}ï€ëÏŚ±·őæ0Ćÿ€ïœ_”ÓtoG:Šá‰ÀŰs;8`~L+àr°„}­m#T©‚ûNșGswő=ł8ê˜Ą4à `ÉlŁÆúű¶Ap5TÂț íăTš»p,ęD}oZWJgźxÌ­tŠG)ČMá Ó‘ßç©&h¶ç·ĄuGŃèAŐû‚šôßsEG3°f·`#Y3eŰr[ò;SMÀ}K¶ŒsĐ & čăđÎÓCȘŸ(Œq:7­' sæ8O5ż{ú;ôCŻ ˜„ÔŸ &àIźAò&dŻ‰€Ł}Îqžj‚ZšÛŸąy8EzÚIž’%:“ČgIÓ7%ç8O5Ï7æ?ăäXMŁiZ f%ŐLžqü ŽÏ9ÎSM ĄùÚˏ0ű2h{‹xé 5+Äh͞q"+‹sœ§š€ç+±MŽLæĄóćšU {&ÿ"NùórŽóThA\Œ|Àé©e˜ž,C?Y@ĂÄą,^łw†öXœă<Őu·C8ÙÀčĐȘŹłÁj±ś[œă<Ő5—ÌłìŐ9țA”ăŒąš=€Ăÿ!ÎïąPütR*hČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††w ~file_extension_hqxd':0C889008-D40C-41E0-9823-0527E71BC619-7317-000022DE03719715@)x•’ënQ…yÁż ­‚†TÓZ,—Ą€0J;@‘°”†Ú/© Lč -—Șïà3Ô·đO`–{uRq%+sÎ>ëÛs有ĆâßTMƒȘȘŠąBVÈČ,ž 9Ž|uüE±“ “‘…éxˆŃył^§…AŻ «ßÁŃaN§sDńkâw^ ûžœp w\.8çæ`š&X­F ~€F@ćy óó cBf€Șń&î/ȚÄ%Üu») Ž ś'‚4ûNȘûpčĘ łĆüyż‡‡++đŻźRŸEXƒ„Fív¶s€‚A œv í—0[Ì󜆄% Țće"Ąe!™PĂgŃ9kąÛnț‘7»…#ˆGŁú|˜NÆÔđyœˆź­ sï.őâó"Ìó]ê­Ń}­ÓĘEB!"Ó©'èț։Qă2șF“xíÖ:…Ÿ‘„Ÿ™„‹âÓć%ubŃR›HëșXçç łĆsŁQG6“F&„ ț·˜çZ.»Eë‘ă—%jVȘ•v‹(ï=9Îf‹ç”ă·šVÊš”ŸbŻ˜G‘öÂæ1ŚȘ•gœă"gÙEv°ŒœmùĄˆĘMCUњ üHű™ržT;èč.<:eG&TgÙ°û•&:Á¶*źÍr(ìoŰßĂP7Łr șÓą„g,ê¶ĐqŒ_űI rû5·%I“Â~ÖŒ‹§ç}ŒàG_őÖo‰áTGĐYeAÇI32eńH“Âś5S–úIX/NÁ('Èҏ&ŽćțVúwÄïȘq皯pa•ævUCȘ0L”“È…ËŽûa­Âv)DûX1üÙ_җàPGé]Ł°(ƒdyÚaQDÏ„Ńüčà˜'M ßÓĘÛđ4NĂŁ†ę\ùĐ;Ú۔aŃó6%Ĝ9æI“ÂÿȘk #M3Ö$`U„É܏”& Ż6ŃËłbÎó€Iáû‹‡›ožÇ°z_JßÈÜÏçÒWx©ç»’„ïjRp̓&„·Öäƒü-Ż0Ș™'ëpÆš7Ał‰Ö”à˜'M ßçîm x=©–űŽ/1֐Ćgîo€©ÇąW4ËŸ5…é+ÆÇîRD›ŽÏ]ìă˜ĘÇ+.bm&Z5ËŸ5…Ì3]%ˆ_-@Ź…nkâmnî]ÜïÀä5 “ŚuÄyO|Ö2żï܃D‡öψ'>kŠ!Îӝ^ŒœćÁÔ_"ÏĆŸ5Eă‘Œ'roÈ·o)†űŹ­ĆĆțGÄÿĂń ö ÀČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††Ï Xfile_extension_htmld':E4915B50-BCCF-4E3A-A2A4-88DDFC85C7C2-7317-000022DE036EAEC3@€x•‘ëKSqÇśOä„ÒZuvqAŻą_¶ö"Ź|DFWkG±ÜšŽ° $š± ©lRȚZŠ± 7·aÎi┄ÖMĘČYá.Š}{~gqbH/úÀĂïśœóęœçwα•ȘąŻ‚C§H+ûVœžo;ƅeÿ€čn‚ ÀĐ*Úłuú: p_›K Śf<Šű*:%đڌW„ršĆAàÙ|Nì῁źăkÀ˜m*‚A›ÙLJÍś_ƒ«B·^!_\Yo șOd!ŒD fAőțőOI“}o9JZ4đUćĂk̃»R_nȚ\/ gdăeIő•t6H“pèÔXî­@ŸQ ß|F}z9Üs1fȚƒ„ę<’‚ Ș€“_ć Œqáč[àœœƒĐ ńév,Ï ÖkDÈȏΖ qbö3hiŸ‡Ÿ=ÇàŻÊAdè°’@ì ń·XôßÄJЂ/ÖŁđUËĆ˓&!đ,tąśÎ /”"Üs‘¶"üp\ąŽ˜|ßŐu”;LŸ&ÍwR?ßQˆțšżțÇŠ]˜kȚ‹ĆÁ»ÔŃúMY˜ï,˓&áäó1ŚȘE v-ÆQ˜i?ˆHg1–f‚Ô„Ôf‹9–'M‚őŸ[ 0lȚ€oc­”L‘üäĂśîłHŰN#ÒÍÓ}č˜cyÒ$œe[ńÁșŁőFne#:ŃBvŠ˜Ç„H{1FêämPŠ9–'MÂUŸ ïŸlÇÔ5Šîq˜h€ÿ^Ÿ‰iënŒÓ~ÒÂaêŸJŒÏr,Oš„éÀF»æ*K;ûFNÛÓbŹïő]xsłÛZœxÆŹæÏqÿxȚȚrńnk.NUXH/ӜÓlë•Eo€`.&{qł­¶2"ʆ„k–ÚÒ$JÈPdœ°X%ő7ô„o}=óXÈèCŚźû:żûŸxæo¶ęìsÚn©XæP‹Ą#Vț¶ąçàú–Hìât__éiŐ/SAžśÒ~LƛáŰV2Âx‘ôV!ëG ©Üx«Ï©ś­8ʑëÁ•†ÆCpl/IY&ńù ąm;V…ž»Úšê?ŽuĂ·żżÈK‘ĂpÖ­zJ̔űśOș'“8Q‹$8^ƒXG%ȚeșpśBqGÏŸRä_æn f*Ì}séNÜ “8YĂZëîJ\k·ăAŚ.Ì„Œ˜:GŸÇÂŁKEŒŸßüËdkčĂ&|žÍ ÔŽšÛC+‘ŸF› qOæx‡Ț#fJüÛÔYÜŒŒhëZŁJ:Ś\9扙RÿêŽȚ­L.)vtśáÿÀúWš+§<1Sê§:űw á±3 |zBÂm3Ș€s͕Sž˜©H«“I;ëńmáÓĆÒčæÊ)O̔úl܉!ß víÄś\·œ›IÁšêuźčrÊ3umÀxŹŁĄÈ‘îmÀˆ/†Żî6ȘzkźœòÄL”ŚŻ™ŐYDæĘK¶!â€Užæ\9ć-ËUFŚü‡•ÿ#‹ć7ÜaăŹČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††7 Éfile_extension_bind':B50AC766-400F-4253-9654-13294B38B1A3-7317-000022DE036CAC73@éx•ĘK“aÆś·ô/tA'‘őæČdŸ™oKçTF±šĂòöq҉ąVæ : Ź&sćŚZź ŠŠeêț€ źźë©‹šäÏ{ßśïzîg›‰8Eś4Šn°©ï„ZêŸ&R¶ń` ûŽÎ_fœ]EŁàaćá,’‡LÿKș»ÇSŚÁ|ąŐZőłsqÒòìÔ?ïĐț­ÂJœm(§Ú­KÉûžtúńćë7ȚŹòęGN2f„üæœa”ûXè=……óŽq)q•Ka,§Ł˜‹”à1ß±9“3ÿcVÊfżÜçç†æz–òNbŹïő]xsłÛZœxÆŹæÏqÿxȚȚrńnk.N TÁS±éĆŚ)ä€T7‚źÍt—ŠÌś[Ő‰ ȚÖü”đV” R€›îOœF€Î†„QŻS­Ü#ւGGôXX„€ùëáßkžC˜&•5#P‘'Ç|D¶àLj“í»ÔĂUzêèßì LSÈíÀ·hÆ|âMvÄNY0Zo@Ž¶ӝćX~R•Đ ,+nŹ„ćuŒ";°€GÂ/ ŃdÆˇűSłwë1æ1Ò~ –BÇ Đ}„iRd‹ÁJŒ· ś›ˆŸŒÉ ĘæÄÛè9êèy|„H¶X±űž’ȚWü‹—đyűRgLŽÙ=» IżqïÌ›‰’Í„HŃ7Îqž0Maê?ȚߏL—ƒXÙNî6àûêW"śȘ‘n7#CsÎqž0Maىśƒ{ë1yȚ‰|íé0 <»XNûLê,Gæç ÓÄę»Û»1Ő+ąpÁ‰Ő|· sC.仌˜ Űi.©ß9ÇyÂ4…kÊđúÖNLś‰d‰ì@!°öŽ\č_›‹jŽó„iŠÔnĆ«›Û1Ó/b¶_RëÌUž_1«•ûßsÎqž0M­ûLžEjŠ–ËÔZdÊq^W, yǘóż€Óę§kęČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††š ·file_extension_ptb copy 5d':45A3A36A-1062-4E1A-9E54-753C7A61F5BE-7317-000022DE036B1DAE@Ex•’]HSaÆw_DĐMâæ}aAC,/ꊻ(bDAąLș(b}±›B"„ÌísźlkM%"yĐ"ƒ©™}9ېčŠæìÈvš›¶óôŒKέ‹x8ç}y~ÿśÿțÏ15ÈƖ Ž`Žőó68BĐ7űèț!Á6€›CÀ­n ëżŚéÊ.+ŽŐ:ϓĄ%ˆúŻ@уżg•°žxŠuĘg`Y3‹Sû;YŁȘî!‘ țÏXÓ:‚RWèÒÇaŹ~4‚ÚOÀòÛĂÀô(+VIÁÊ7ÜÄ4 ^ä6ș"0?‰ÂìŽòę;Ö¶FP3Tx'°€iK›ž2ˆ<1Mb}•ŒÙĆ&ÏÖčą8Ò5…CR öȚ_žĂăï}Îö©žôٙÓ$űËŹ[æGőëŸìČ°|‘$.ôæ/ČÏÍȚIfRžTa‘f±—Ț#ÍÁȚÿ›4GVqÚsźÄ4 Țțžśì˜ÂD2+żŐ.Ÿ‚Ę/ìx‘@{x6šćóÎçúL°„]fXïžDÙÓ*Úb(śÆ04=‡»lë9ΏybšŠčźá\ ©È1Šx:ƒóț$vú8GŸ„ęÓ$ú©êa˜Úț\Ay[œw‰cëłôÎ0w}3°ŒJÂ֛ϋ~Șßć “ù’yu‹”îTöț‹yÿŚSŹ[ùF…”[ĆÁëĂÜ?úVĆń6ö/òÄ4­:Ù(‰=ńÄ][ô'Î4Ò&g"ŻË•‘6ÿ‡E~^:ĘæjGČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††š „file_extension_ptb copy 4d':68EE54FD-1991-449B-9898-B1F93AD70339-7317-000022DE036A4C08@Ex•’]HSaÆw_DĐMâæ}aAC,/ꊻ(bDAąLș(b}±›B"„ÌísźlkM%"yĐ"ƒ©™}9ېčŠæìÈvš›¶óôŒKέ‹x8ç}y~ÿśÿțÏ15ÈƖ Ž`Žőó68BĐ7űèț!Á6€›CÀ­n ëżŚéÊ.+ŽŐ:ϓĄ%ˆúŻ@уżg•°žxŠuĘg`Y3‹Sû;YŁȘî!‘ țÏXÓ:‚RWèÒÇaŹ~4‚ÚOÀòÛĂÀô(+VIÁÊ7ÜÄ4 ^ä6ș"0?‰ÂìŽòę;Ö¶FP3Tx'°€iK›ž2ˆ<1Mb}•ŒÙĆ&ÏÖčą8Ò5…CR öȚ_žĂăï}Îö©žôٙÓ$űËŹ[æGőëŸìČ°|‘$.ôæ/ČÏÍȚIfRžTa‘f±—Ț#ÍÁȚÿ›4GVqÚsźÄ4 Țțžśì˜ÂD2+żŐ.Ÿ‚Ę/ìx‘@{x6šćóÎçúL°„]fXïžDÙÓ*Úb(śÆ04=‡»lë9ΏybšŠčźá\ ©È1Šx:ƒóț$vú8GŸ„ęÓ$ú©êa˜Úț\Ay[œw‰cëłôÎ0w}3°ŒJÂ֛ϋ~Șßć “ù’yu‹”îTöț‹yÿŚSŹ[ùF…”[ĆÁëĂÜ?úVĆń6ö/òÄ4­:Ù(‰=ńÄ][ô'Î4Ò&g"ŻË•‘6ÿ‡E~^:ĘæjGČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††š  file_extension_ptb copy 3d':0A8227E9-EF9C-4910-83B3-6C6DD3B1E89A-7317-000022DE03699079@Ex•’]HSaÆw_DĐMâæ}aAC,/ꊻ(bDAąLș(b}±›B"„ÌísźlkM%"yĐ"ƒ©™}9ېčŠæìÈvš›¶óôŒKέ‹x8ç}y~ÿśÿțÏ15ÈƖ Ž`Žőó68BĐ7űèț!Á6€›CÀ­n ëżŚéÊ.+ŽŐ:ϓĄ%ˆúŻ@уżg•°žxŠuĘg`Y3‹Sû;YŁȘî!‘ țÏXÓ:‚RWèÒÇaŹ~4‚ÚOÀòÛĂÀô(+VIÁÊ7ÜÄ4 ^ä6ș"0?‰ÂìŽòę;Ö¶FP3Tx'°€iK›ž2ˆ<1Mb}•ŒÙĆ&ÏÖčą8Ò5…CR öȚ_žĂăï}Îö©žôٙÓ$űËŹ[æGőëŸìČ°|‘$.ôæ/ČÏÍȚIfRžTa‘f±—Ț#ÍÁȚÿ›4GVqÚsźÄ4 Țțžśì˜ÂD2+żŐ.Ÿ‚Ę/ìx‘@{x6šćóÎçúL°„]fXïžDÙÓ*Úb(śÆ04=‡»lë9ΏybšŠčźá\ ©È1Šx:ƒóț$vú8GŸ„ęÓ$ú©êa˜Úț\Ay[œw‰cëłôÎ0w}3°ŒJÂ֛ϋ~Șßć “ù’yu‹”îTöț‹yÿŚSŹ[ùF…”[ĆÁëĂÜ?úVĆń6ö/òÄ4­:Ù(‰=ńÄ][ô'Î4Ò&g"ŻË•‘6ÿ‡E~^:ĘæjGČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††š ïfile_extension_ptb copy 2d':7B043E90-924C-45F0-9A91-914255DA508F-7317-000022DE0368EB2E@Ex•’]HSaÆw_DĐMâæ}aAC,/ꊻ(bDAąLș(b}±›B"„ÌísźlkM%"yĐ"ƒ©™}9ېčŠæìÈvš›¶óôŒKέ‹x8ç}y~ÿśÿțÏ15ÈƖ Ž`Žőó68BĐ7űèț!Á6€›CÀ­n ëżŚéÊ.+ŽŐ:ϓĄ%ˆúŻ@уżg•°žxŠuĘg`Y3‹Sû;YŁȘî!‘ țÏXÓ:‚RWèÒÇaŹ~4‚ÚOÀòÛĂÀô(+VIÁÊ7ÜÄ4 ^ä6ș"0?‰ÂìŽòę;Ö¶FP3Tx'°€iK›ž2ˆ<1Mb}•ŒÙĆ&ÏÖčą8Ò5…CR öȚ_žĂăï}Îö©žôٙÓ$űËŹ[æGőëŸìČ°|‘$.ôæ/ČÏÍȚIfRžTa‘f±—Ț#ÍÁȚÿ›4GVqÚsźÄ4 Țțžśì˜ÂD2+żŐ.Ÿ‚Ę/ìx‘@{x6šćóÎçúL°„]fXïžDÙÓ*Úb(śÆ04=‡»lë9ΏybšŠčźá\ ©È1Šx:ƒóț$vú8GŸ„ęÓ$ú©êa˜Úț\Ay[œw‰cëłôÎ0w}3°ŒJÂ֛ϋ~Șßć “ù’yu‹”îTöț‹yÿŚSŹ[ùF…”[ĆÁëĂÜ?úVĆń6ö/òÄ4­:Ù(‰=ńÄ][ô'Î4Ò&g"ŻË•‘6ÿ‡E~^:ĘæjGČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††˜ œfile_extension_ptb copyd':FF8D7603-C25D-4431-80E6-6C25E00BBE5F-7317-000022DE03682D54@Ex•’]HSaÆw_DĐMâæ}aAC,/ꊻ(bDAąLș(b}±›B"„ÌísźlkM%"yĐ"ƒ©™}9ېčŠæìÈvš›¶óôŒKέ‹x8ç}y~ÿśÿțÏ15ÈƖ Ž`Žőó68BĐ7űèț!Á6€›CÀ­n ëżŚéÊ.+ŽŐ:ϓĄ%ˆúŻ@уżg•°žxŠuĘg`Y3‹Sû;YŁȘî!‘ țÏXÓ:‚RWèÒÇaŹ~4‚ÚOÀòÛĂÀô(+VIÁÊ7ÜÄ4 ^ä6ș"0?‰ÂìŽòę;Ö¶FP3Tx'°€iK›ž2ˆ<1Mb}•ŒÙĆ&ÏÖčą8Ò5…CR öȚ_žĂăï}Îö©žôٙÓ$űËŹ[æGőëŸìČ°|‘$.ôæ/ČÏÍȚIfRžTa‘f±—Ț#ÍÁȚÿ›4GVqÚsźÄ4 Țțžśì˜ÂD2+żŐ.Ÿ‚Ę/ìx‘@{x6šćóÎçúL°„]fXïžDÙÓ*Úb(śÆ04=‡»lë9ΏybšŠčźá\ ©È1Šx:ƒóț$vú8GŸ„ęÓ$ú©êa˜Úț\Ay[œw‰cëłôÎ0w}3°ŒJÂ֛ϋ~Șßć “ù’yu‹”îTöț‹yÿŚSŹ[ùF…”[ĆÁëĂÜ?úVĆń6ö/òÄ4­:Ù(‰=ńÄ][ô'Î4Ò&g"ŻË•‘6ÿ‡E~^:ĘæjGČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††“ Šfile_extension_ptbd':587F6844-CF89-4FFB-9E2C-2412F64E6630-7317-000022DE03678849@Ex•’]HSaÆw_DĐMâæ}aAC,/ꊻ(bDAąLș(b}±›B"„ÌísźlkM%"yĐ"ƒ©™}9ېčŠæìÈvš›¶óôŒKέ‹x8ç}y~ÿśÿțÏ15ÈƖ Ž`Žőó68BĐ7űèț!Á6€›CÀ­n ëżŚéÊ.+ŽŐ:ϓĄ%ˆúŻ@уżg•°žxŠuĘg`Y3‹Sû;YŁȘî!‘ țÏXÓ:‚RWèÒÇaŹ~4‚ÚOÀòÛĂÀô(+VIÁÊ7ÜÄ4 ^ä6ș"0?‰ÂìŽòę;Ö¶FP3Tx'°€iK›ž2ˆ<1Mb}•ŒÙĆ&ÏÖčą8Ò5…CR öȚ_žĂăï}Îö©žôٙÓ$űËŹ[æGőëŸìČ°|‘$.ôæ/ČÏÍȚIfRžTa‘f±—Ț#ÍÁȚÿ›4GVqÚsźÄ4 Țțžśì˜ÂD2+żŐ.Ÿ‚Ę/ìx‘@{x6šćóÎçúL°„]fXïžDÙÓ*Úb(śÆ04=‡»lë9ΏybšŠčźá\ ©È1Šx:ƒóț$vú8GŸ„ęÓ$ú©êa˜Úț\Ay[œw‰cëłôÎ0w}3°ŒJÂ֛ϋ~Șßć “ù’yu‹”îTöț‹yÿŚSŹ[ùF…”[ĆÁëĂÜ?úVĆń6ö/òÄ4­:Ù(‰=ńÄ][ô'Î4Ò&g"ŻË•‘6ÿ‡E~^:ĘæjGČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††ž ±file_extension_aced':B7C4F623-D892-486B-90FB-A99EA25A8EA9-7317-000022DE0366DB1F@jx•ĘK“aÆś'ĆNąr„fbK‘0Ăč†eŠ`„Û3p(éÊŹĆL͑mź°íu–}hn©m«Ü‡–âĐXâÖAY`é*ÉJ: :«û~7D"úÁĆ{?Ïó»žȚ«Ú”ï‚>Níö?)K‚ƒâ,Sˆë+„ŠoČżĐMʕ˜_g°2ëƗ™~|šŸ‰„ˆ‹Ÿœűœƒè:TfËĘ€ŻC û—ÉqÛA«@WéÌ u‚YłĂzhMÀ”Ł ÇłćȘŹAĐíÀ2œŚ[™†Û'vŁG—D6đÜmÁB°…ńă'mÏȘśo~@5 î/EÜ5€ŁżV‰[U©ˆ{ídoGÚá5ćĂ^$‡íÈ&|˜èûT“àőÇńk8©„§> }ŐiÔ^űì˜5HŒZ‘ła1ÌßN8ɧš„ KÆ{r†Necža<”éx5rnîváŸ1ƒÆ,xê”H„;ÖżOÿ!`ïlüŠ\ ŚïĄ&đ:ègÿč\<4€Ż1‡Œv°O5 ^ż{ԂÇMy| ™ÔuĐ €śô^ŒœW!pAMgyąÇ>Ő$} æœM5k4çĂFIÍUü Ń^ž„Ą‹ŃcŸjŒ~3ۈ'm‡1jVae>JÍUxmVáé„B1ì±O5 ^Ï 1yčă­jj­eŒő #ÒQ,zìSMB(OĆËțLۏbÊZ‚IK&ÚÔbxžČ•ˆgöۧš„«b'æú ˆśT î*GÌ„GŹ[·šyO<Ł°Ç>Ő$jò¶F\iâœÿ {ìË֒DÉű°ÿ™ì*ôìČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††Œ ‘file_extension_rtfd':7A7AE012-6ED6-4941-ADAA-B810F40DDE18-7317-000022DE03658E24@>x•‘Kha…ł•"€$Ú$ÍŁ&$­uŁ«â•RPՅžđ`‹‚R3Ƙ”š«Q,TTÄ"ĆUëąą öĄÍdLúHRÓ,]čPÔ âŁHàxț‰Lb~pț›;śœÜy<:áę*ûŒˆŸôŹšûGĘ ș%/0Ń €BŹË” Ï€âǧ;­”Ô Đ^Aœ»ĄHxÚáB\ò@ŠD=âi3AđĄo;:[LƒŒ”ĄæćăPN{ 6h=ƏaŽĘ‚…ßüòŸ"»ŹCŒiÄ} (Ž·!p"é·")™J5Pâ“#Èǚ1Ö^Ëû° 8vâ]1Š!3ż8z 7,‘ XQž¶…łCX9€ŸĂûń‹UìcLCö5âÇăœ˜8SžŸ Ő"qa:âÆtۍIêûđ>îoŹÈ{žé° S=&ęU˜î2Q€ÏZ Ś!]OߞŠ|·_ì䌎[K€» <Ëɜ·©>ágLCôŸïmĂóK6dÏUsŚjÌD ”و^œ–źáÜźú„Ÿ1 ŃڊÙ+6,'wŃȓ5¶–'0ŚcW}ÂϘFBj»»ÍÈś:0«Fź{rȘű[čËFŒè±PfäŻ:UŸđ3Š‘6âíÀfÌ_·á_Œì­á Ìßpš>ágLC9Ćü`Țô»Pè[‡W7͔‰2ŁpˊŚ·”“s·ê~Æ4ș[튾&îK<[‚ßgIą/Iá\ű„_WN=”é?$üŃéțK9Č streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††Ž Ăfile_extension_pdfd':151FF549-750C-485C-9255-3469B07D2FE6-7317-000022DE0364E54C@@x•ÙK”aÆçBˆôbÜÇ L!ÍRKSI3©ÌŽeDp"ˈđŠĆ‹–‹B2E!—Rł00"șČțđąš‚0-SÆș˜Ć–_çŒőÌDôÀĂś>ç}~çćłÄ=q&Æ8ˆ7‡w‚8Î<:aú‹”șƒ· ~[s? Àő+cD-k”zˆąôö@l”KÌë%Gż"Frw7D˜žŁêh żCùź.H¶Œ!5yœ”•ăd„ż%cőxpńBèObèș:†9ȘmH0C‰Âw¶CZČ0©“€­šàV›¶–l+sQZüsäK–Ëžö6ĐŸ`†ôÿ[.ÂÚT'ÙéÓòî}Ęnnʎô”)ČÖL“#óÌŽ©`Oû‚ÒÜ|r2Ț±aęŒìxOóčÙçć<œ©ő^{Ú̐%ÖÁÙS—=Kaîčëfy0âăéškæ,Öčà\}Á in:E]çϓ—ćbìÙ"ęœ^»ÉÏvQh§ ÇĆÉcĄ|’äÆŁ°„p’MŸéhńr邗ę67ȘGÜô3<äăHh_0CIqêĄŹÈÎÎÉïôĘpŠÉGeč‡șœ_țÊę{ۅ—Ÿ`†4ŚîƒË­~y NŸ°}ł°e>ȘÊ}ìÚêŁąTí„ź6<_U! ?žÖùêòEl‹Ôì ”mO(ż"~‰Ż«»ÜŚÛÄ5Ą>(Ț] ÚÌPŹčę±ÎtïżŹ=í ö§RÄÖÿ°öÉdú ËàĘűČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††‡ ^file_extension_mpegd':006E318C-BD27-431A-AF83-E3B0BFDF3832-7317-000022DE0364379F@8x•MOQ†û Ü@€?€ŠíŽY# cܘYàŚÂJ[m„Ú«U AB€žĘž35ą%¶RÌ$ŠŹF&Ü4%üÄi Æ„}9g0“Đ҅OrræÜûŒśÎLÔfÉËv €vĄšÌ§â>mZѕAvXđK@^êC^gêčń>äÆz‘íÁÜĘSđŹ “^‚dÈéÆŰY$‡ ȃî€ÎóÏX#m;Á€n·ÀߏŠÈ8ż6z/\â"âžz”óŒ àùń]XûKé;­žqhś3ŠiHôí«±+ˆ»Mˆ» ˜pŐaÂm€Ùˆlċ©@“zÆH›+Q/ű>Šip>őàć…ZșXÿžÂ'iSÁ&Ìś#óȆĆ'v, ŸÇr€ƒț§„49‡„ψôÙdŒNÙ€P( ŁD y0y±ËOtqȚJgÛđöȘo.U#áźÀ€s”ë"æéÿćæ^yíʋ„đÊ[‹ò"œßI(țÍś/Çtg2Ol›ÿ1t Ӂ}`~IBč\‰?‹i(Ÿ ŹžĄUÊ_ÛŁzìSLƒç…‡Gńźł†, Đc¶ÛˆÙ[‚ÚyfxŸ=ö)Š!Ùëń-tï{ d‘Źąl­:sç™á™=ö)ŠÁóŚÍH d•‡śÙcŸbČł Ą˜żßˆśD|4—Żó>{ìSLŁëHM‚Śd:Wj©ŹÛ”šîłÇŸn+ȘÆÿ(öÿĄÓmR€ Č streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††j _file_extension_mp4d':B87DDA57-9B11-452C-87CB-C71D10DCE80E-7317-000022DE036371D3@x•íKSaÆś_ôĄˆèus/n;ł`RHЧ>d_‚(…"â $ejŻL2ą9b©# Ü 2ÆÎȜۙœ”|múAz‘ $ˆ"źźûl>%Ô.ÎčÏ껞gì^ƒ}ȚĐ«^%†îÀĘc›K¶U. ­€.?—#sźȟ9Ѝæ}kz©ÿÜ\R§·ÂńŸJdÆh†ŚA0ûŻÿő «ŸŐ1ÜìD¶”ZežĆÉ~©°ôÂ@ áș” ÖVä$;.äÎz0¶#ŚÆśvŠoîE1Z‹ô©MÖ9xÜÈÿŁ Ź) ʉŽ#Ț|;3)ÆÁ<ç@᱇©ÆŰ%/LîĆŸ5…Ìß2Gđ$âÁۅ-l—™è©ÇӈÏ.{Ÿ”O|Ö2MÆóNz‘òęËL%êńąÓ…ń«>k/žűŹ) ʅ/©ƒxy͋ń+żś…Rò(^EœÖ^<ńYSÈŒôđŠ]>ŒŽncc…w#Lvïě~k/žűŹ)dțü Žž†‰.;[e>d;0s+Èï~LĆ|j–'>k CwăÓę=˜‰k˜Ž9ŰÍŒí b6îÇìí€ً'>kŠ çĆÁĘ(őPêőá}ȘówvaźOĂ\ąFEöâ‰Ïš"răă` ęÛ+ 05XHò=čc%܉'>kŠ¶ęë‡äÛżF|Ö~e#ŁęGÄŻ`łęœ 0Č streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††b Éfile_extension_txtd':0675C424-B6A2-4128-A197-5E9EC0E334B4-7317-000022DE0362C35D@x•S]SRQćżôzŹ‡zó%§fl0Ž€,›@ô‚eÈ•Ëœ(4ŽHŒ]ĄÒń5ÆÉèăŚôÒc3=ŽZûàÜ2ìĄ5łŰçc­œś9çòxÜÿMŸ ìâ|l@EmŹï«ïï—w |>Ș“ŒjÜÀ§Ă:>žh7_Ąțl}=—\Ê» ùÛM™šىAH>‰™G~œìm@‹ôBàÓžÙsy“–3í‡=čűòÉa˜Ó#*Êüdwé{ŚńęÇOfÜòúŻ]yK›ńżßY‡• Ł03BȚF9ÌDÇÛU”Ÿ>@ênŻâńÖ Őmd.ëÖô0ò‰!Ö "7PqUąé±żQÄáæ2ZoÖÎńĐz]ÉúCőó·c*„Vc„Ë/śuÄÜEíLj îëŒ;aŽï§"Ś–x.щž6:{=pl”ÒV,žá<Ű©Q„=mdŸ_[Äò“ûȘFw_HÜRÌOÉÇa”/:ŃÓæAæ»U •č‡Źò6Ïó'd_tą§ÍƒÌwÖ <ÏFQNE°Äú6߯ÄqIE™çZ™Sûą=mtöžUŃQ5âŹÒŐL§Ż—Ɣ҉ž6 |çmźŚù}:V”|5æ’è˜Iž‹3€††=«tą§ÍCđÆŐöB<€òÊÛ*ò?Ą")ęv€7ŃûÎâyń?(úSű|żˆ°rČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††J –file_extension_exed':942D4059-6B5B-4B16-BBC5-36E294E422BD-7317-000022DE0361715A@üx•’Kh“A…5 Ò&«;śŠàÊnĘuĄ‚ —nÜšm@’Ö€Úâ u“*4‚ÆEC”ë [€æE4ƶI#”€Đ.*ȘՖă9ŁL)1ˆ\îÜŸ“† \l]p;ę yë+Ű—ęQÀ7ç4@Y|f†Ê3źŸÿî3.P4őyű :Ú<©ŚĄsPz‚7ÆÎŻ–fL&‘lg'ŐÁSŽy⌬Áä§R:H‡› {LŚŒ €ë0żÈ ŐĄÓžpls‚1‹òńœ2r=-,/ČWš‘Ž4ae"Žlôó.I&đ=|`Ìąy„GžÙ|O3r—7"ـLŚz”úöâûűM,„ïàGź˅˜yWÆ,Ê/ú‘ïőŁVyĆ[Öł0őÙîMű™żśŚó—rQŒż¶fc W['Ÿ1‹òăïWŒ”“đáúvł.ȚȚeșfĄ”<ùŒY4/Ÿ»ÉènZ|Jöéțę(Ć™źYšË“ϘEóŚ·œ(ÓÓwśĄ;ˆòęĂŠkڗ'Ÿ1‹æÚh7*ń#ŽŁ}yòłèÿûeôȘ©“˜8ŽÙÄŃúâwí˓Ϙe€k+jcaÌżlgĂœêĆÙŐâŹïڗ'Ÿ1Kđ„ś”Ÿč[țYòä;kÙÁÚó%ÿŽó S"ùČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††Q— applicationd':9D4AFCE3-1E59-42D2-AB1C-D4C2B0A3214B-7317-000022DE03608265@ ÀxŽœJĂ`Fłiì.E/À«tvđ"ÜÛR.AŠnê$iuo@ÚTŸdjlièćń=uŻŸ9pűȚá9!ÍœćÛûăȘîŽVÿ%ÍĆ~ő•7{>ŚûSÛ<óŽ=mh»‡+ú|čQïdMœÓusămc[ÚNkI“äAÉ斒«m%Ś;łec[ÚNsAeĄ óvIę(Rő5D3eĂhœ‹•ÄÎKçb-B:Lő–œd Žaę·eÊȑ—l6ŹÏÙ%ćùDùxì§máë[*ŠÂK¶@6*v•ƒ¶ÛZŽ«Ž»•G^Ÿ5ęmKCAÍÜ,gPûo ßòČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††#»Ÿ±Layer 0d':C24D76FC-604F-44DD-ABC9-DE5742197FC4-7317-000022DE035EDBD5@"x€oxí}XUÇÚő¶ÜX»±ÇKl‰-šÄ\»1šš‰±‹œś^± ąhbÔŰ{C"*T°‹•HïœĂúŚ»ûÈ!`ùîÿ=ßœ7źçY̞™wÍ̞3ó2{ö8räHœƒĂqŰÙْ6z'%Ž·?Ž={vE*…@ò_‡ˆˆ̜9ó(Íÿ©Wđìé Ÿ=UC‰ ,,ó'.eXRbiŁàùó?üÁ!Áj(q„ćDEEòJŚŽ… çÛRŠ‡Ü§ ,4áaĄˆCC‰ üęęX†…Ÿrż”éqüžN/uÄÆÆ ..V Łcąš–ÂCH{)ÓCÓÇS·zőjž89ĂÉŃŽHJL€™™ìíìM+@ì)ÓCâ‚DÚŠ§§©LKKŐSâ))ÉHHˆ§Uáú4ÚH]źÎ.ÈÌHWÛâæê W898"%9‘V…ë„žœœl•Ùٙdr‘ƒÜÜdeeȘmˆ=ezH\••…U«VᄛÛàL].V±=wvrBFF­ ŚçæäđgáÈaù±§Lù<4˜ššÂĘĘn'NÀĆƕ)ș4Wöƒ±§L™;o±§L%K–œ“4™B{{]Xe쉜bˆúd›· ŰÿÛÀjÙśqź«€«Ùśp]„ŁËȘȚp.Œfœ!öąŁ\q]ʗœšÌ8Šä<ω%“È”(v$ÒŐ2(W\W}Ç8ĐÈhæŒđ‹ü–+8ùM^ҏôeÚcœÙNÊ©ïĆőž@“sÀzï[À5ÀÍ_pÇw{îPCÜ\\ÿžșšÖԛjúÆ:Ż;@À/äfàțVԶۉÆ;Őś·w¶°œ_ięRïÂPĆ]ŠßŁîȚvàÁïXtr3[oDK›j(qÜÿeł BÓKšBòìî üț5űÄŸ]‹FGÌg»3OìŃQțRÿh?óé#ObÛÙ­šŸg9>>°M™`ëYÖû”yśC :Ê_¶ÿ©% ې¶@çTˆș*M ŽĄbžŰąŁ\ŻŸîś\ʇ…W`i|ęVD•N›ÔPâ’/vŃQÎțŚé[șźCś è|r“ž]OoBwO](qÉ;è(W\Mżc ščo.\ˆÆ‡ò0)!)ùb'ćlżnüŒ-DG9ÇÆȚąŁ\1ùŐ9WÎ)g–çŒČçëI;±ß» [ćń'âWȚ–ÍÉżțńćę/›V6Œ{ƒ-›gt >șŽ›Úś…ĄaÍrítŹ·jîÀÏ܏­è…óۍđĐf’ÎŻąZĂKșŸRoaÜ As‘âe†L/$șÏAží<9ŰöțɧYĄ8Êü`«ž·»/źmÿȚ›zàìúźp_Ó NŠé{ży„Țjé78”¶3M;âűŠN°^Ö VK»bᐗŸoWç7ëćŻÖÛ0ÓŽŻƒz4°üąI”„%Šû'“eÌ4 «J>ĂBń"_ÆŚGdEČ(©Ç‹üBaû/æϓ_„|Éz–ó»d[.îáȚbl—uŚç„Œzk~ŹŠ Ëk™Jč–4f©ò­XŸËîcùÇó”oCÛLJ‡àȚžUÊ”€1K…\K™R¶Pź%Y*8VrÜÍ»ăÔș.*ćÚvéËòmi+eJÙBč–4f©šRŸTË„ĘsŽsLćșJùśú0K…%Ëś`™,[%Żíò”O” [“òù ćZÒTHùV,ӎe ć:oùo)KÊ”Č…r-i têĐÁŃhè|ùĆÇ-’'6bËš$}èÁ55U„ìłçdŠ!6>Ÿ›ßÁŰgÀ€(`ZÏN˜ÌpÒs ęÏ(ZŒdiÊőúÌôtd9™Ăđ]śŃë\"FP?<0 х#Éț—“ńÙ4«ë”ëÇONNŽJ >âĐbó#üűèśj8»Ç—j(ńšv=Aن_}#s'?Z­Ÿ.7žÈ‡$ĂouĄÄ{IxWîăŽș.cJÚaooƒSÎÖhjv_˜ßÆWknœdŸxû”·ńő/òYȚHÖFÿSŸĂż€cÆMăÜLÀŐ€\VÔ6$Ó\W~ŒCóëEÒŽ@ˆöuˆzì…?U.ĐJœ‚°ûŽ€Â8ëÂûLć#ɜü D><‹č?Tű‹ÿ”v "ŸDdàiDžQĂÆÇç–FNv*Żtí0\ÍÀjúègçäE^$œęôJșä Ğ2=Țdüç…ŰSŠÇÊ”ÏIš”+ó­0JŸŰ‰œbˆ·őŸbÿ/đŸČ~ŒŒŒÄŹYoż~ŽČ:Ș?{ÎőƊË üŸÜ§@֋ČnÔ(qÁëŚ`¶ÊE”b2n1…{) őĐÖ/Č^”uŁF‰ËZJpĂŚ·}Œùì1ʕ.[ Ÿ őc,™š‡_m\PïJ~đ}ŒJU 篊—5c~ʙŒœŒTL:rŠ?ЍËèÚ7A©R„ŠRȘBÓËș1/““‘•‘Žß·oçšŐ IĄșțpçùŒòe+ąhŃąònCŻ—{Ő(ç=2šMŒĂ7ĘzèÏ>hhȚŽȘV©Lč^/kGr–<·±|țœruaź!̚ƒj?D™RÌÓôÚúQB aJjmàYŠÇÏyęrmGÎCőșđțkăG֎ÙÙHőĄû0Ïg*,ZâÏŸ dgÔż2^«jȘú3üLzDìBÚÉțH?? )ž# $ÛC‰”€É2X?ŽŽDäáæxș·YàÆb8łŠŽȘw^V-cÕ)8qaâz"›ìęh”D[ŰzCǀ•§=eyQVÊpgŸűțV wwVĂĂß+!p[Yl+ƒŻ}Šá]Ÿ©ă,™’ÖfzߊÖvËjgžŻ©‹skkàÌêpbYŒÙœË[K>)vŻ‚ÜW+Rl5J\Òß!țSÖÿWû‡~~ŸjZ;ä~)Óăű‹öGFF"2* ‘ŃŃd"žLJæb!ä~)ÓĂȚAś\Ÿœ„”l$€’)™ˆKLFL ÏńČLYFł<Áq{ú¶V+ùS;g7Ìț©č”*œśšâæÆöxvdŒV·Æ%öÿ­ßț § ĆhęW88»JĘőHËVšsÚcÏŐ_ÁśŚŻUžZÚŽ»—ĂȚùìì”čÉó·v066>KY^ŒíúOìߥšő~äƝ_Ă{o/xmÿÎKŠĂĆžÄ –„ëČÒp3)wÓÊšVĄ˜A_ŽìTÊ,űș%?ćW#âĄbÿŒ‚ŐŁÊ|–ûŠ”ä.·čč<żź2[OŠ’Àć?șpîÎoù”éᳯs92’•ž‰È枟ÀiQxŹ©…Ó?żÜË+Y\ùÀßbs9ÿRŁ‘IJű’ą—óô?+~ƒKBő«ûüŃÙuTÓg$„ =1I:Ê”܇ŒöÁœŸï9Qb€ŸíŠÏ‹|t ™i±H‹DVr ™©»Čeˆ{°#:Ÿś%˜űm‰ĘńÁțÔ>CF|ëșƒȘŐnąJŐ[”ĘUY”Z>Ș„ŽM•ŃJ>ü:¶ čGw¶țšYęN^êÔčÍ6HÚ5őú4ß 4núDßoŽ-ȘG9d}P«Æ ìvŸÏçíșč.ż†Ü€+šU“{ÿ〃î@떷Ô2Nźź·e9žÊÂÿOPłÖ}˜ìâû…@ÓÆwńÀąž]XȘk"ŃžÁ5ôš™‹u‡€/ÚȚĉ•™ț5kĘĂ$sŸăX$ú;Üp€ŚÆšÈJbdû qĂkŽ˜”űČĘMŹUÎśńùŸù™=c?b śQża Fšò] Ę^œúO°…N5uê>PÓÆ­Ú”č.íoSœB‘î2ÜV”Ă “2\Ż•†ÿFÍ? ÄtÖŃ€yŒQű»IAăfÏ0sÛęčNK Jrę¶m{Í[…h¶mäș]»-ț&;ĄčțŚ`˖Ś]]ù‘Â)64-’ÿ:<ț3fÌŰOóż@Ó?ÿ3è/èó )CË ț ’Æő˜  2$_ k¶üÜŒyC-C(2=$.=»ü”ęłü{Êôž †kŸŚQ ö”é!qä;źž…ĂÓ~zcN꩝U^œ€ÿĂô)öùőž_żÈïĐYùCä‹}AúSæ“ùóešA‹kĄŰ€„ßč‚óëé‰üĄ@òĆŸ œśæčz …bŻéżșcŃSìç̙æ$ežđêè’ńjڛrRŚÖ'9ê*:Ÿô?áüȚîĘÛÿNϟÆÆóm(ÓCîS ϛâł4J\àçgűüyÆĂÊÀȞ±@Ț7ˆÏÒ(ń€ÎŻœśŽ ŸIËș_=M«Ö*TĘsÈ3ŠÌĄŒ”ŽèšőÙ3&:‚VÀR374ëaăR‘W/ï^ĆääZ•šę‰źęĄ”1ç°h[M/ï cȜeɎÇÒ_жG”êśČxëuE)ąéćœCaÌàz˜P>ú]~H@ӎ‘šÚ2„ęđČÿäœCALOOenœ<âPŸq8šwŠAčf!(ÙđOœŒwśy™•™ÎynÎDóo‚ŃŹC:ô»':™»BęűŃȚ?h”8SÉll9‡buBP«u¶ïvœ2w^„è3”i†Zmb0aqŒÎî_Œ7ÆB搎CîEŁƒƒ ΝáX+‚òüÌÆÌôÆ„ Ç1oȚLÊòą)śòŠŹ«üáß~ÿìšÎoˆ?`oíżŹ­#9%œWô1áxÛ곀»WбĆ=”WtțĂÁŃÖ`üÉXHûÄoi”xJŠÎęÔ-e”^‰ȚŠ@œű*ńYy‰ÌÌ ïƒŽÍŁiUž^|T~&$ÆrÆâ7óXŽüHWżłkÁzńSù™šJż…xŽȘƒ*EbpĂ8{țXzńSy)gđrr“pŐ'U”h̏&&àà“êĆWi”3xÙ|Öżőc—Xő‰Ă‰š^,”K%à“Jńh^=+_{ąé5ÿ„óY Ț•„ JZŚ‰aꉰ9”mżBŐśś{Šțłš1êˆż’ïȚóŠÌFÇOăQ‘í^œ$™ńÜ<Ïńœ· HńmdîäÇì±iűP‰C¶)ŒÂŐÍ°ÿóŸ?•ówn'Ź1úôéÈïÒÛĂő„.]ò„źe˖œS ĄoËRìßáțíęߋuӛźßBè·Ä>ç”@ΏDÇDóŠíˆŒ€ÿ[űJÿ'»#*2\=»!ž{7ŽŽöj?œœA™Úü'~/.& ™Éq°ßșN;áúÇrží6Ó+ał“ Âœàù/țOŽYI±h”Ț„yăƒĆWPFhì‡ö;`ïșÙzRȘBӋżKLˆćÔO@‰čçaƝÈ):ź Ê.őǃ«žšVæ M/ț.%‰ț.+ „©Ÿő œœBUÎ~”ƒrÆŸyőzhzńyiôyÈIUë7ș‰š»ŸȘ~';ęzhzń{éiôy9˜xì>ïÛ•—ùáĂć~(żÌsÜÂU­FJUhzńÂÜŹLÆűždó|8ï\ȘöœënSîǛć­_ÿÚűÿśrĘöš&đÖeę”Éâ)¶țțËR™;Ż‚ŰœŠyęŸÜ‹F™NNđpŽTí$<áqŠÏ«sœF êc!iòğÉęŒ)ë*șï5Ë”„kü·ù?ń}jŹ­ÿ,Ć+žŠZüë?ńŃ‘șę·@Ÿ<éj…NŒg!ìdțè!cU ù?a4Ÿ5ÓűąZUTjì‹Ș]ąÖ°44IÇ©†ûgš^üŸŹù„ńlonV *6òÆő;ČîŒáÁ{żeàŽû©őâÿ4Ș~0'U;ßƍ»ÔfĆqIĂçÎ=9đ;}'–+—Œ(żF™âM4œű?ȘÌI@­Ą!8êÿx\ć3ïŠL_Ț„@‡/B6+ÉÓș”Ț€éĆÿi””ȓPg1ÛÌg^ćwj—đùsB*źYÎAîć |)ù=ôVÌ5œű?id6Ïę15eMÇő—“úûCæź°šŠß'ë?ÙŽÏI‡r1 ź§ÁäQ:Üö»zŁ‡KŒó[Š©·œÔ1.ż'țO#$•gÜRêօfOs`}ÒŁęæȘmèîlźźÉ^Ƃ}ù}rpöôELșcn.kĐ~gŸBęŸăg,Qj›x(§S \ÉÁ”E&ùżçú¶țï?~Ïíß ÿ­țSâKKĂ꿌­5†iÿíêUXZYášćQÆx~ÁÉEæŽ2Öyęg$Ś©r%53—9†°w?_ >ŻÿŒ‰á™‘T\Ü:VC•–CŠÀv€»ńĆá0„,ŽLź§éĆojŒOHłà˜‘ÂœÂá8œ’:Wâ75&%%!.Ăz„‚‹{©áŁÓ[á:ï#$GâăÎ3«èĆojLĄÿ“UœVżíŰąˆ~ìăăßCÔC/ŰŒÒ„;L-§Ś‹ßԘ–žĄz,čoÁńqÿÀéUmá8­"Ț ~ńyŒô4Æ2šśŠ> o3nˆfËŸfł^ê5ÿ—IßGg_e őŃéhnö‡ŻÄ1M _¶{őCDÄéôÚűŃürIBô!Ô·ű5Ÿ­†Šët”kI MWő2w BńŸăgG»RBĄv˜©ö_~ÿ'ï:<űŽȘ‹±šÌșŠŠŹ#?„^Ń6Ÿyæoż~ûW1yòäĆünê,őoV ćïHKèïïo0Ś BÛ¶m»őîĘÛó“O>Içw*Ć>—D±bĆ`cc#ńŚąqèĐĄ€ žVQ”•+Wæ»'‰żŹÔèŃŁ„^a6™SŸ|ù7Ò·'ÌÍÍÊ)"¶Ù&&&˜:uȘŽ?ËÊÊJÊz%F”Ž[·nȘv;żkzæ̙+nnnśÙ&ŽgĂ”bAà~v(ƒì­[·ÂÓÓóÛ]©U«VŒŒŒì,Xp”yŻDż~ęĐ„Kž1 ËìÙłçśLz+ÔŹY3“}ÏïŻXÍšÂ~(Æϱ(/ß6l€­­ííFö[1‚"/űÿÛ(U€FYŁv{Û[œĘÊf!>Ú;9«űV{•Č%ê0śŐű èGőÖĘ[î‹țO/ä~sÿ>żeŸ[ÿ⌷Źç=ćębŐhU(Jh”}lĐ”čf‘e~üEû˜'P.ïÌ*qr%”~Í·ŃŹP|z`vzŻÀSčʅőž–,{ĘÜ3J Gń+;PÍ{”Mę3hV(jr/ă`ü.ÙsÎśśčÔ§ćdń'°ìé%([ûƒf…ąúțI(sîÖš[Tđ7Żú=`gL”Ks•C_©/1œł™K› Üܖ”‹„W<Ś ÈôúÓŹpÔ*Ûû;†sŸúgčń{öű°‹ÙE*^ëPtې\„vÙȚŽz5ZT›_dEï0Ćf&”ăÓž_< E–Ș4Ż2čo†ÒĆ[)M*Í+ÚôĂEȘńż èČʌ;fï žƒőpwËuwsÄ%ÙŻCщăÇYÜșq WčWpùâ\óśƒÄ%]òÉBQŁF͎ôŸ\śŰćòïTŹT©Êp ù?+rćśGš”:ÒŹPÔźô~›Ëa”Ù,–•d’8ʒ»Ö-œÆ”zœȘÛ2©PTûf⯣·{`à:ÛÔșN3/ÙyŒńû]§šś[s4uÂ.OTï2ڌf…ąí Ì蝙;Í?«žń];·}%œ~5óngàóœ^9:í ໘84ČæùÀm>YgmËȘ”ęJV}ËçÔ'ăÛĂ^©o”ęŸ=ƒŹcč7p Ê']ńțȘÓšnƒ!—’đćî[č4+ŸlòÍí~ŠőÛDĄÒ†ËP~\š†őEąŸW2Zl»öJ}ŁŸh[Ś:,·ÂŸGčćvßÏ­È°¶Uhn·ËYčÍ·\}eû«.rJûôPšxŠ*źŁò†jŰlÿŽ8òŐ8ŠÓŹpTź=@©ÔpČRčÁÄâŐë)q]úGhőïđïđïđùP¶ÉđĆt;TŹË©ÜąęY€îàĆL~#”mlŽšĘlÿŒ źipż›‹čV)ÜŚôÉ.Rë‡Ì~-Š¶ßžÁ5}¶ńûȘæ@ç_ąPôëƒO˜ęZH›íźÊSÏKT3‰ƒ€3û”(ÚáÈóq{“©áûŠ…éd,ŠMBŃÁÌ~-Ê4łČÁŰKYő…âK"Qd| ŠőöÈ.Roˆ1łße_Ìû}*m–öŒčVQțùèB{Č streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:621DB4D2-04E5-44AD-B2BA-1C4CD3C07D77-7317-000022DE035B365E††MASKSPREVIEW*Â@*ź@xí}wTWWÚ5ïŹ™wŸ‰3‰‰Ęš‰ą"vŁÆŰkŒI4Æ bÇ^#bQAŽˆPAA, b)‚öȚE±+bÛï~îOŻț$ÎûǛ5ë;{­sŸsö>çr1kʇSź ±cJŹë:80­¶ŁÖÒź#ÇŚșOi±/NŹŽ-ŽŻ y-ćQÆi~@úR<  ÛïˇR^Š™©^Ű7„:ÇȘ…kż–#e v*ÁĘà°ûŸB-F80ă§8#nfm$ŰÖCą]}­”‡bϘŠžÿœwŚ ÂüŸȘlŠM‡æ?43őLškŽƒsjâu‚-Nș¶ŚúŰ=ș"ă9Œ·: Mǁiæxqp&’æš!ÙĄٛ"qvŽ©€łîÍńlÿ˜Šg1ÓPk]ÄcmŽ‚˜ÉH™o†‡ž¶sȚÇ„­ł‘d[•ę›ąàÀ$Äp<ÚtÄXŚEȚ>+Yd†#óż€Èœyé‹ë#ó #>žčŸăđÂZÈÛkĆç[ś7țzxČÛ©.fH[\Ç<áđüŠH¶û7ö9Ò vü©lèiÓËűQT_ő0§·.Žč›qì*xőü)ÀŐmîZGY/:ŃÓŠ#Öș>îEțˆăȚuqÒ·>NxłŸ%UéÎű7g_juÇIщž6ßȚÔ§üêâôČú8Íò„Ś—ž±k NxTĆ©„uX_OkèiÓ;œ2Â[âìŠșd=Ò§—žŁ”êëj:ŃÓŠ#Ί!źohŒ‹kêâҚzZy1š6.ÔĐJ‰ß֋NôŽéXÔûË8©‹›nÌXëZiDêDob SČéżAŃ+(((((((üGâ«ÚŐZúL±ˆtÛ'ÔeTÏ`«žÁžăzotùӚŠŸ}\•’ßEÚFÏ«y'v 7%9‡‚‘“€üĂkq{ß žû%ü/ÿő_)ęϏʔęäŸ?ęçGe?ęŚGć„e>.Uńÿę·źîY“#«ń<~)s€e€?^ôCᥠdƄàüæ%Ï.Ež^Šp/<żÉ5ÿÂæ%6-)žŸĘ Œ~=iӒìŚI+đtżžF{“>ÈÛïüęž(L^ƒÂĂ«YŒÇ@Ž-Ÿž}mËâŹŒ‹ńd‡ éJ.!]‘œ“ŚÂ7ńûÌÙčOyżGę§e_ uÌÊĘî„Ç‹éDŸ)· ćú-©‘X«wBn” ҖNÉ>lÿ({ó<<Úä@Îÿ >Ț<OŰgȘÏ€ìs«me…ÛăaűÜ7œś‡|DfoY€#^“Č/­ž•ő ̇aôk| cC9YŒtŽsĂÜ'Hòö,öŸO`ß{Üÿ–źÆ{áJ€Mvkó/<ÆęđuLÿ¶ "ú”i°EgÛâIĘ‹ö¶êÖ<șZčÒCűż‚‚‚‚‚‚‚‚ÂżÙĂ{/ŽđČ=`?&"ÀÖ*b›ûŽÄq}șŰČéƒp-ze6ÎDàeúzŒL æœËZ>“—я/,ŸšŐ=ÜÀd#s r]”Y›‘čÎĘż6·€ĘäJÔČŹ»[œ‘8 ˜æ Ì,:4¶ĄUĂś_™źœŐ§ÍáŃʚï±êÚlśïŃșWëÄÁG0§źD«‚‚‚‚‚‚‚Âÿ·Űb_9k—cyìœ_¶(Ê`Ë 3˕žțJŒž¶žČ›‹möòzŸĄŒČ‹‹‡¶kŒł{fô)JyÈ8ž…„&HšóŽă|"lX·¶ĆÌ>„ŠŹżÒü¶â°ƒ Ręi‹Ji„ÄòžŸuæ_đ Ÿ·vN‚í€ÒFëŻvÍ/Çq6#Í©Žș–!Ë"Ęć3€:ęŻÎ„!}e{Dò^"HœYÏçQŽéűŐé0Łś˜ëg8șűc€;}„ŽĂ„U\uۛù„ž]…—'Öjϕ6âyb Ś•GÎŐŒËąÈș°éΟàƱÀbÇ/<ș'=>§ČdœpŻŹéDO›Ž]óËŁ€śwÚ·UÀ)Ï*Úőé„fZ)±@źE'zÚtHœÄ çW~E%ˋkÚáÒڎZ)±@Jщž6ç&/ÁejŸÁć”p9žłVJ,vщž6ç$:ăjXwȘJ†Ž‹NôŽéżÙ‰ qkë0dlˆŒÍꋒőÒ.:ŃÓŠcςJÈIZ„Ń6ätÜî·~GÆR/íą=m:,ËÆIĘ.Ç HщȚÄȞJÖU}(EŻ       đ‹ę3Ź^ĆÙXqmúÈčwúˆ—” ńȚÙæ‡;[I)ߒńíÈ„žéƒÔXiŐûćE ęߎôEŹâgZê”8“Țè‰|ûŽD„IŚM~?3Ò s† É~žÎÛĄŹśAÌäÁÈ}ń’=p; ï#hlż ÚtˆÿÖ$Ù EâœAHœeĄ1aæ#Žă=Ą?đ>nmvӞm:Ä“őIvƒ9BÉ8d?XӉž6glrć‘ÜçÁŸav?$Í쫕Éö–Z]ŠĂP­]tą§M‡Ä7‘æ<†yÛHŽô§»ŒÓ(íą=m:$ŸŸa!śxPç:–žá8 »!-‹?‘qńò2æ>Ž©@-Gf‡í€gŚ°{Q7VNm„ęĐVEæOâœû/ÎÁ,hš˜‘8îÈ_'úŻbŻóž—ęœ•ÀăӛáhŐÎhțDÿùTÙ ˜îæ$^á<‰'<€ü 8ć€ę‹Ä§ï9ÎÄúXœ?Ɗżđ'<9ăEúòڟ„NÏ1òïćuçĂçI›‰QpV&È r5' ëËńߋîĄôâLü}Ÿïu_öqZû}ĐŠCó?=ÍùȘőd˜7B0cç˜>AœŐa™;Oqücô(êÏ=Îț7“[èey+ ‚_ŁÁ†4Ęű”e>*żâű‡”'ŽéˆgŒ\țÒ2·żăĘŰ&dąÎ6 ÉNh„cä'ă _Žé8îûțƒœ$ąđ-łw°OšžoGčțźŒo^Kü,ą§MÇg‹nąÁ~àS§ |ê|Săg‹oąŹËMTrż/żłC%·L”qÎ@CêDO›ŽêÎĐ.hű W?zŃhm?AĂ5YhôPӉž65]ÎŁÿí”Țń’|őŽ;C¶‹NôŽé0uLˑșš‹I)Kâ›vŃÓö>“2/òĄœ‚‚‚‚‚‚‚Ÿ†SÌłb­ëđ\&łąäZ±,ïüŹXžÿô4{ Òž/ZŁÉ}©Ü»}ە\Œ«ë‡ÊÙWĆæ±ÓêàIÊBDO1ćÙR”y>“™VFO6EVąöŽ.ÁĆ5œŰGĆ"ù‡űł’űwé”?GÎœȘ‹űÙæœ?1ĆŁűŰ7Š<pü©ŠQțËóšÄOŁ—çoÍ5G‚}^›"fzeź;ă\ÀüúŰ3âcì”*‡û1yź‘ńùU±<ênÌxœ[ ‰RÆOgÔÛ4~CčnћCÖcI^ńĄœ‚‚‚‚‚‚‚Ÿ†MăêdÄNŻËśíâ;ĘÇÔŒnRċÔyœł˜k(ßRâ;ÎcÌÁ‘šŰ~_aćE c eą™sÄÚpŒ7”Éł°w|ŽD,-¶Íh:äÌȚCóéL°«Gż ą'}ÉőWì€H ÄÜҊCó'MŠ§>R"yn€8đz~C\^Őç|;#fȘ©ÖÇóyüæęz=Œ:8–çă6`źÂ{&έ„# Ìč„!وkŸăÛE'zÚtHüśÖô–ÜÁèœÿ-plŸÔaÿŻüVÉtÎÐRJŒżb7żĘ!žłò»bç?4Ìd~/€ś€ÔŐ)17n`ÏŰÊúśC2ƒșę~ç^FÁÁY5ppżû1œąĄœeŠ—ûFăÄâVŰ;ösȚGeŒÜ;’ó3Æóò=Žg{†ŃS™#ŒCÂŹ*8ïۆmĂńlśPäï‚–2m:bŹëáéÎü戱ÿíḉj!™9MČCm$‘y»,8Ÿqț qNT€8|CłJ#iF)$Ï)Ă}#ÉÊH™W™{ù«áđ‚šÔő-â—ïi<ȚڃíŐ8Ș)sËđżÆ8Œđ M'zÚtHü`KW€č|Áœ2ŸrŹ!uAČ,żgRZ«;Č ÛżÔtą§M‡Äw7wà>‘/đ>ҝËòż,æżä;"ą=m:$Ÿž”ĄżRg|ŠôEÿàù<‹`qiž'P–yWeČś—ÔĐtą§MG,矇6ă~/PNyUàč߯șŠ=m:䛌Ăpé\-îŃŻÊ<«Y‘ŹÄŒ« ż#R4|KDtą§M‡|DêäŸäg“ù©w”Ű@É{D'zc˜’’W|(EŻ       đ§ĄB™žŒòŸžCÙOŠg9ČÌ'±ŚMJ€xCÀu롕o)qp0ű/=ŽRw+2w!(Wú‚č.żÔ9Tűô‚„ÏăSÆÀ_MNóíđr+Ÿń/_T«p5«]E*WŃÈüêš^Őê?úëșłH`čßq|RÊ=”6ćéśö䟓jôÔŒZ_\ÇÚÀž»>Æ]ąK‡»ű䣳űûńtDO›ùù]]€z53ĐŰüÇœ‰Ő9XĂ>ÌkÜDŁ:·Đ„őőkĘÔtą§M‡Ä æsŸDĘL4ox‡}ÜƇlX yÄë;ZPÚE'zÚtTűììf-ßCëfśŃŹÁ=l‹(@|ì34­­šȚŚê„]tą§M‡Ä6Ӏv_?D‡oĄEŁ‡8~ô9‚ƒò1qtŸiü­›>B«&1ꌹțŠŒ'ŽŸmÎ-ŸÀË5Kœò1Ž»ą ±aĘ3l -ÀŰQ€èiÓQ±Ì9Œtm—‹îs‘qăVŻ*„­MzvËĆà_ò±ń"7bűú©§M‡Äę·gûwŹ ńc'z» W·üü]ztæc°Eńț^=hÄk,ó~‰ȚʞŁçđSQöï[Ô_©ŹÁ?ž70„í#ú“Šr$Ù§' zÚt|ö‰ç^©“~ÿˆą=mïCæ3$ŻűPŠ^AAAAAAAáOéɍ2âæđïșsš–ȍê_7)â-Ű5šßÍrŒN‰Ÿî…‚Ñșs l{T)’;béϋÎysN•p}ęJœËú꿚ńĘ8ČŐżŰ>ğ5„Ó-őxîUC sêó»C8—RśĘú+ȚÇܞՍòń?ÙÊęöu9ÏĐ@§ŹÇ:ëĘ'=:r/D­ŸœÈŸˆăó M‡űGôâ7ÎżÄ!»ê<çÊÉójżWÖ`ę—Z»èDO›Žž9Íq?ü;Ț…9wčŸbŻž >°^=Ï畜ûqüæEüś6văśÓ k§ÎźíŚŻ ?đč`Ÿpóœ:ûJç4>Śtą§M‡Äw7vćEUjü»gù_^œx†—ÏrùíóúœżšŁéDO›‰3Ă;òÛëŐè0à^ÊrțŚ€‹â˜GžUOӉž6q¶_ăfhÎoT§xpb==żđŠëšN†ńL,SžUç_ŐÓtą§M‡ÄŚŚĂă€7”>5y~Um^Śà5Ï!ö«ÇóŻêóûéő4èiÓ!ńՐŻxŸ•|#ęś):ŃÓŠ#žń•<ßJŸ›^2„]tą§M‡CŸš{„.Ț¶Ćđkˆž¶ś!ù„äJŃ+(((((((üiŰ1„Ś_qÍś[ŒÏhî=æ(čțœęçâƉ•\ ĂwÎă+H^Ky”qšĐ,ć7§GsęUyŁśț·8ÀęíHőŸ)Ő9V-ź’ńki1RűœˆQćű&ÊœÁžțȘBŃőW\†ž+;ł6—€ŐăR°úZ)17dcŚoĘΈ»ë]%țCóè1cQ_Ï=$~`‡“źíŰGì]ńȚ[ŁśÇÜOțâàLzžoıÏÉ­Ç>ê0ßšłž-ù=Dæc{ÇâYôdÆN+â—ő\\?–âX‡{DêrIMźœȘŒ3Ap7- ÙW“‘ÿűfWB>Ś“Ćp<ÚtÈúŻŒ}VÌ?è_`ŠSËżăOjŒ{y–oe~§}ŸoŃő_Ov["Őč&Çź@”W·MÖ(xęò9Śqń;»Šźÿ’uBžț+Í”:ÎtĄșxYT¶3ÿąž6ȶè^Äś8ș€ ò2Ó©ä1W/#m~)œò瞌š žw$€íU5èiÓ!qæÆö\cő9s%~ÎrEöđŻ^ ÏvLÀƒ=ÖlŻźéDO›yo—ŒàŒ?ż”è] Yç7Òm@~"ż+žŐ’s̍~/`^pq s„ É!ű{śŻ€+ámpŽŚk1`Ávщž6’H–ròŒb§‘rÍń€^#uą71†ä’|(EŻ       đ§Ąfà‰,ÓőWQ}Ę#~ù†ŐŚ]Ɨți%æâ]yX~XńęIżsÀRÒê`ʌś „ŒȘŻżżó@ŐĂX5۟”{Ÿ>dçÄ Xö1Á»Hț!~_ŽQ'ü:lâ7È3`¶á:ŒÎ„ƒ.ń{7Ù0,.§,3Ê?Ä/șF›nĄé–Ûhșù6Ż3a~ Î'€V[ïĄTÀ%ü3à"–œâśš§M‡Äîô7žŻ"î îŠÛsđFÄ=ÄŒô§XÍáŚ^柂ŁŻ±è$ŽgJ›ń»°ßæw1)ń1ïČxìż•{ŸŽç_Èûüfëjž!űÊkô‹ă~ČoÜ Ì;ö’n>‚ÂŚ˜‘|ÁçJ›ńÏ;Ο3êîćżÂ0țź~ڟ‡^Ńyűqo.¶g<ÇŹŽBöÍ_d|Æł-·gQÁ},› yäCŽÚö-¶>ąìXs±íŁČű űüš§MÇŒù\ŠCŐu7‘Sű viùè±?¶ôŚàęÒŠCîgB ĆD—Ęyh±-‡?KÚíÌƗĄŹ,b Đ/&łÒ‹úć~&æțđŹWTEô~qÏ0$á™öóÿÖ_“ÿ^§ł_«€Ś–đCߣÄ#Y?.ù5&ŠŒÆ,ȚżèiÓńčőÊ8©“߃ü,ż„ܟŒiJÖ œ ћCò É+>”ąWPPPPPPPű…Ê_Tțąò•ż((((((((ü_Ać*ÿPù‡Ê?>*PùƒÊTț        đ…ùÍł[šĂyP#: 2ƒ“…ŻÍ`ß·äïŠśÌ.gœȚčˆtÂRÊS;áÄvGr>ą<ąËâż(cŰ6 ÔÔÆZl)ă›aaÿš8șĆv=Êó-ˆpê…ț­Šî?ÿŃÈčpZî#ĂĂȘ‰VJœ¶Ć–çćVD>ę‚H—~°lgŒÿ\üG6Ùƒï1ÍàCzn śp8|VNk§őaÿżÇ·aïÍxÿž3ï7%l&Œèń۔exZ5‚Û°șX=«3ÖLBbđTòWZ7œˆ_ž_bˆ5œÍx p2.NȘòn…żTÆŃèőX2ÔŁ#}ÈxŽéüšÉđŚŒȚw{§ßljۍđᜉNôŽé8:`<–NűK†˜RÍăöÂupu­HœŽ‹NôŽéxßòQđ›Ô‚J܇ŚâęđśÀò-€]tą§M‡Ä»üFđ9·…śšșTò(ƒękàmeź•©—vщž6.ƒë"Êg‚fvÂčC[©. ©—vщž6oó°DđÜ4«#ΧlĂČI_Ń­”Xê„]tą§M‡ëzˆp„N}ŸšÂ{ tțX?ï{­”Xê„]tą§MÇ°N_ÄI‹}hKRJ-&Ù.:ћCò É+>”ąWPPPPPPPűÓ æ?Ôü‡šÿPó ÿ)Pù‹Ê_Tțąò…Ćæqq6Vü¶ÀÈčqLÿë&%@Œw¶ùń› €”oÉűväR܉ôAêŽ~ÿŁm‘o €ÿۑŸˆ”±@üLKgÒ=тoqüț\DX±}Èű™‘Țü^Ç~ƒ|žÎÛĄŹśAÌäÁü~čá:ś1·{Ł”ąWPPPPPPPűE{—mY<śŁœÇ>Ž{ö{ŃÖĘ@‰[/ÜRâü‡xWß3€ rŐ Î{\|űwÿe,W\Źcï ¶ćlŁŒá-dÜ榀Öî»9î>|œd7/Bàrö%,ŰÎ+`ÜțL˜YÎ)2ÿ!ț„§“o ș,‹CKŻȘ9ïrđ"ž~ŽF‹vyśXLŠÎDœáóŒæ?Ú{„Wèâ]W&Ąő҃X™| ‡ÏĐgĘ1|殍Ùϒó/!zÚtt`ìrț9șźJB·ÀChëŸ@'î”kè~‹Î‰\túœÎjϙ6â_xæŸ_‚ÖA‡UÉLăƒ$ÚźHÂwÉì7]’°àtDO›yțóN<ƏÁ©ű1$‚ŽĐ €ßD‡À#Z]wò¶‹NôŽéèÈxÎŃô=FGÇ”éX™žÉ€kÒ”șŸĂN°<ŠéDO›‰§§eŁçÆè~m‚ùGț7hÍŸz°źŚæ“ű™íą=m::1žrű~ȚrĘ6žBræ: 8Äk©ëqFŁèDO›‰ÇșȚ[Ïă‡-œ0û €źÏ¶ è»íŒŠ=m::yí‡Uâ]ôÛy}ą.ăÇ­ń]čr-uęÙ&èiÓŃÙ;ĂïÁ"ú†Æû)uo):ŃÓŠŁŃèqRŚÙëHèMŒ!ó’—|(EŻ       đ§ÁșœSÖìŽî˜ŐÁMăÌöd»%˜AÎlżłOi=żÄüCŒI'‘à~‰î'qĐő8bŠ#Ú11Néˆ[| ÁcŁĐĘÌąŰüCƌ§ÇŠ­+ÇuĂŽÎŰhx‡ße—Œ æóŠïÓöą‡Ù "ù‡űcÂźł7ævńĆ̖T;—ĆcÇÌDLjŒ…Èc °zÔvôź?Ì(ÿô‚t8|çÇnț°mëę«Q l›ž€%=WcJӅ˜ôŐ웗Ș=#ÚtHŒw~*~ż‹~X‰čí—Ò DłŸC°Ë>»íkćžč‡‹ú;șa۝»bqś ÌïŽ1A©ì˜ŚȚ‹Ÿ€ÓìvÛïß9'ź=Śò^Śba—:8ö±°Ë*­Î­W0ÛŚh:ŃÓŠCâšÉđ蜜ÖÁčëjÄŠ±À©KVçŐ7TkèiÓ!żÿ­Ö‰đîϟC±šc,êŻ^ĄđùeƒÖ.:ŃÓŠCâ-SbiżMđìčWS2é4àJÊ-x±ÎŻÿfű ŰŹéDO›ŽÙÜ±yb<üFÂççMt×uËÙ¶Üb«Š=m:$‹Ë(Źž ~œ"àÛcłFč–ș€ÁQäM'zÚtÌéìđ1ńčÁ#Èá{±ö ćZê€-dä~M'zÚtôk42Nêæ°ß?$uą71†ä’W|(EŻ       đżÆ°aĂłŹF‚•••Æ‘#­0bäHŒ1B+G’––ƒKÌFŃ»a}06„#<,ĄëÖ`íêU XŽ”A«Œ&ÎN Đź]»bós}ÈtêĐßvîŒvmÚ`őêŐ,_æƒ~ęúóŠs óìĐŸ}‡"ùƒ•Ő(úWŁû?âçŸ~BŚ.]šæ<ʊX¶Ôęû`ôŠäyR æŁs—.FùƒűŚ­ BŸ^œĐŻo_öó‚Śź„šó/>^˜n= Z`À€Z”#yżŽéżüŒęûĂrà@ôîٓN $8cGÔ<ò,Vú#p•±țՁ+0Ôr0†‚żü‚đ aìű„wo 4HŁôÈŸäyŃŠCüì{_cű»laA'°)<\»ÍßßzŹ†@à úŚÿHŒrč&Œ‹ ăÇbÄ°!ŰČq#{à~—!ƒ1qü8Lš0AkèiÓ!ńŠeŸ˜:y&Oœ ùßBüR7mê¶OÖtą§M‡üÛóśő†őŻ˜2‰ëŸNž€Óčž:y"fLŸŠQtą§M‡Ä~>ž°›=6ÓŠÒeŒŹł›=ösfi:ŃÓŠCbOw,p°‡ƒœ-æÌŽÁLȚ‹Pź„nĂ\ą=m:F _Ö»-vÂÒŐy‘„Nڄą=m:șuë7jôh֏úcR'zcH> yÁ‡Rô ÿ±đT'Ë°– ȘőŽŠđ#—YÔÔâ%żÔ,1YNïĘÔ0Ü9Čw„âvJn&àFÜ –È<Ž‡VMÆđVć‹Í_üÙÿ-jüԀÿ šđę„*R6æ0.ïő„ۏ„yôcNŐȘ|‘üĆßČ6nqŒÀáő°šçæźŽ4„HuÆ„źđèQ9†ô‰țc1ŠęçFù‹űoÄùcíŰ&™ĐA#ÍyîŻ'ŐÀ…('l™ő-ÿ._î?•Ć”Ÿ=m:$Ÿíő“š#lÊ7SN =Â;æuÕ=nžČŚ—wKéeÔÓŠĂßÒ W©Ùűk+lČnƒ° Mp2Ê0‡Čnl}l˜ÚáSżAŰäæžČÛ”èű|ț—v8#bF;DÎê€MSšŃÉęÔ;—iŚ‘3;`묎ˆ°iGDO›‰/nsÄvÛÎdDX· Ś=[Š}(».Űaߕm5èiÓá?žÎóœä]Ę°sȚ·ˆœȚœN"­›bëv;ț€]ó»i:ŃÓŠCâ3á6Ű·°;öÌ낻ç sOčȚăĐûőĐ(:ŃÓŠCâSë§"Ö„'ç±șÒeŒèß±ígÄčțŹéDO›ÿ!æ82 žępĐ­7çÒ~À…]5ÊőAśȚZ›Ptą§MNJĄuq*x,ÒVEڊ!H]1©Ë- ä”Ôim€èDO›Žń«Ć­ZO붏(:ћCòÉK>”ąWPPPPPPPű_ŁB™žŒòŸžCÙOŠg9ČÌ'±ŚMJ€xCùçúu롕o)1§ÂłŹ–G©ż»Ù;.(Wú‚ÏJC…O/è”8 ű«ÉiŒÜŠïCü˗Ő*\FÍjWuV«x+Węő ĘY$çSüŽă“RîFyLyúœ=ZŐźĄnÍ:ÍȘ_GśnŃșĆüÍä țț—3àŸŻ!zÚtÈÏïêÂs›jf ±ù-êÜBĘ7Ńœëœ=]i• M'zÚtHÌi4©›‰æ ïhlRśŠŽDpëÖKÌ·Ëfÿ™šNôŽéšđÙ9ț}hŃűZ7»VMïŁ‘Ù=:«—_ Fć;hÖàžÖ.:ŃÓŠCb›i@»ŻącËGhÛüœòè~‡–Mjíą=m:*2ž8ű¶M6ș¶}‚6_eăśčdȚzńVy°žô[=ŃÚE'zÚtT,sŁFßwÌEçÖyXîûŒ#ríŰì|tm—‹:ń­Îd§\M'zÚtH<„S>Ę;ćcwÔ :čîêò+|ߟœș śśöê–Ïy€âęęûƒûÒ \»òzą_śçđ“1ûś-êŻTö猀áęxNÖÏD8;L RGBUniwersalny profil RGBdescGeneric RGB ProfileGeneric RGB ProfileXYZ ZuŹs4XYZ óRÏXYZ tM=îĐXYZ (Ÿž6curvÍtextCopyright 2007 Apple Inc., all rights reserved.sf32 BȚÿÿó&’ę‘ÿÿûąÿÿęŁÜÀlLAYERS_…ï}â— Mf @Untitled Layer 6d';2862F1CC-E29C-40CD-ACEC-4C3C2F52B266-14332-0000DD7C8ED79D78€xíÖÁ ƒ0 Đ LAÎÜ93K°3p”Ôÿ#P &imzᝊHü-HR€ÀČ,B—!”Íâ‘M(}É+›P^ć™MˆPÍó,u]ÿ-Ÿ<{@ù,^= t6öĐ4i(»áZc††ś1Í JFÌnÛVȘȘŠšŸïÍz@č-—ŃUă8nc•fŻŽșźûÿ-íl9êašŠÓń^†aˆÏÜòœ?žFčVčfqy+îÍ=î]íÿBÛû„x&9ëÙ<ûđÓŸù™Ž‡5›pi‚ï]łövل©f˜Ąáę}6aš~1ŁŠ™*íS̕ô€á.r{ÀPüŠIŚÚ 5—›Mn*ĘßW0ĆLi¶ˆÈoà^‹ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6††Š `Untitled Layer 5d';1C716CD5-CB6A-4036-AA01-E604F1295CF8-14332-0000DCDFA064FDE4€<xí—ˍƒ0E鎒!„XłfK ô@tÀÎÒ܃†L>`^2ÏYćl"Ëö;bÀÎ~éș.ŒăúŸj~”išÂ-ó<‡ȘȘsäy~я \ïd(Ëò)CÛ¶Ąźk7?śüˆÇ ž—e ĄŠ Ă0Èt̖asƒôn~ÀƒțÍ Ò»ú‹ąXV€wőĂ+€wśƒ5ƒôIü`É }2Ó4wkmé“ű-nȚĘouƒôźțÛw‹é]ę_Ÿü-I3ì<ś0 ÇÂÏϛŠžąÒ§€rƒÊGIé)ąđMc„ĄIâ””TȚDȘ *m† ±óĆ;šìÖŽôkš*肛očeĆÙGS]Pč«[͕ł œ}4̅GśF,g^ q!önÙËÀ™W]…łśüïÏČț6Ûł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6††aCUntitled Layer 4d';149D0829-DE43-4377-AC40-B2887BC1CF57-14332-0000DCD72B273396€€ xĆŐÁ ƒ0 P†Š gî93K°3pÔÿŁ‚PJLRìöJqü­–PaÛ¶àœ "Ž-b‘Mh}Ë*›Đ^d™Mˆ­ëșźû[>Y΀öEŹf@ëbœĄï{ŐĐöÀłÆ ïc™ŽŒ˜= ChÛ6fHŒśj3 Ę‘Ëèn†yžÚ§Òì4Ă8Žőߒț[źfX–%[oešŠžçčçÎïyŸužü)îÇśKúJû]‹çàJnfóŒáŁ îyN:ÞMžTÁç.Ùgp§lÂR5̐đț9›°L ßIÌšeȘjgÀu53 ÜDé (5ÁśHzÖź T]i6Ą\UúûŸƒ%jjł ËȚšæà^‹ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6††± !Untitled Layer 3d';F643CD27-63E6-467B-8CFE-484EBF8C5E59-14332-0000DCD3C28B36D6€cxĆÖ;/ƒQđFH„‰Ń&1ŒńÄ'àXmFŁÍhS?;łA""†&T«7uięòŠy“7œšË9ę-}Ï9OÏ?}oOsżŽ‰‘i±Ï†Ń”;òÌb**Ń©–1ŰŒÛXŠBdO‡ŒŁ$(Q}3Č`Ä ôÀ*Jƒń­&»(ï«Îϔ(SĄÊ=Ž¶kŸQÄöC;fq]ŒFZJ‚»d‘~ú‡ć(YGlêKŃ|ȇè„KÚ4Ę)ÓŒb8gžęëŁÓ¶ò3xÌȘ†Q m'}ÛŁ^1…S]ßBlÊëŠl)ž;V™ń„Ś[Ăműú‚Ó‘pYRZkMY«ŻxKû.˜CÜż±íPŽ˜ÀWț•­Ò&ȚvP„ˆŸŽȘÂʂÓÓ ( JT—Š°œž”–’é)1ˆMűËRÚÀTTąÛŚ,aö‘ô‡#Ą}$ęăorč/…BhKł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6††Č Untitled Layer 2d';94E82950-90A4-41FD-95B0-0E9E14581547-14332-0000DCCF3AD120D4€dxĆÖ=/CQđŠ!a&6F›Äh0ZÄŸ€o`”6ŁILęì̉ˆšh”ú^/ősÓ4iúą€çô·Ü{Ïyzÿ·7§çij vpˆ.Í_žŒj ­6CŃŹqŰĂQìQAdSAMq‚šŸ”łÄbRÄψJéŰĐÀí„|lf8ŁőyšxÜF–ZÛeJ)đÊUÄuYá· ζՔomń‚©(Œ‚±‰C>1Í;s\à2:K„q‰Ó‰š36’qćŸŹm4}ŒĄšü,Ëâ;vńHUSQŰJb»ŹóˆéàlGE‘=čFÉÈ°æsmZtĆëíđUoXvu[cMYN\_ӜâÖ#ń‘ ö±­7E „4˜MŽ”Ź˜””Ì-ąúRÜ,çˆëa:­Ș§WŽj% ą†ą[ćńÉÿĄ}%ęËéÄh_i‡H„ŸjhKł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6††w …Untitled Layerd';DF66A535-7BA6-44E8-B005-A067A1A05212-14332-0000DCCB983B93B5€+€BxíÁ‚ ÿ«mH@«XA_ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;378ECF44-079F-4719-BD6E-40FB91AA949E-14332-0000DCCB983B29D6††MASKSPREVIEWC €€/@xíÙ?OAÇqB4ÁÂH–v&–”„„űŒ5}H*h „Š‚Ä„Æ‚ièh4ĄTZ ÆAțĂ! ~Ÿ ·ȚȚíÎÍéóÌEsŸvwv~ĂĘîÎìCÛà1ű];&p 6ŁêÄ źź±+šű bSìŽâ)ŽAd‡LĘÀ,ˆÊE3Ęxb ŃÌÄ#|^4Uś%Đ}]4WӁWžjÀ.ÎÁpKÛ8œöG8Ä>öđ8qśđtiŽÇVæčՋïàP|Ä:/€ĘŃüÄmŒ›Ńq©”Ț‚_›â wÀ4ČÂft\țîúgmŸ»ąâ¶<">ő é„CQđH8$6ă!6Àas<Žö‰ŹŃ…ś I°/àž»s)ú˜7Ɵê€ËîŒGă)ÍvˆËuó ë œbâxŹŸáES3=`JÙ&ŠÍLĘĆG•‹&æná5ˆ«Ááh˜Șjæ*vGŐ–{D;ìŠî>>űŠä Š/7ńkÓ0}”óŁ%"^ù›òÎ_ÆÒù’Wÿ ŸúŠ|śÜr—ț „€NvEEtŠRÀgJŰ ±,7Ž) <ćPDæąD0K©àMLUˆRÁ;JĘ43CŒ%ƒo@SDÔĆëU‰ÂsšbčÂkèŻä?˜NśXïłL=dÉzÄ«ûW–©ËŻmș+±êJ OˆMńžÙç9J ”™Á+ű·S.Ă3^Íű8Ÿ–Së1Í}»_pŐJ ï))t§†nƒPB˜§”p“STŃ”ÓÄ9„ƒg45AD!ŠȘmJ=43CL.J)Ü„‰)ąjPxM‰à‡Í—bJÉÌ)1ë°dÙŁĐÏźšˆŸâŐÿ%€ûlFÇôáæ~m Š7üëžtƒ1$ăăă §©ĄÛ قźëČÊtïe™-ˆđÚÜÜL›–/,Ç@śAŹÆ@ŚÁd CCCȘc Û”\k’á#Ç9M ]:’=66– ž Ÿčč9”1Đ]šÍŠSo ËËËiÛżU]æĂäädMû?ć{¶äamm­°œ•……ś™k~ï--ä•kUźY6Ł’{ł’Ü»ŸùÂwï7JžIyŠÆ ÙòìăWò™©C9[°©BŸwŸòÆ+ȧȘ‘ 9^™-8MŹ$ŁœŠȘŃ1pŠșFÆ@sĄc © YÓT_kyhȘ.4[Đ\Uőę]§ši4[pšC™4Y]]MÓ}±ŹŻŻ3’߶¶¶’‘‘‘Âqôőőœä‡ ù{óÈ(éՌaff&UË—ÏŒHő$›!$/ÁŠŠ„„%’Š•ÇPÎÄ«ć Éđ‘ăćlAŒjțđđ°ËEŒjŸhd Ä«ç‹Đ1o’/BÆ@ŒYțôôtæZËCŒI~H¶ ^=?4[Żš_ùl AŒj~KËß⒠&ëÍ5Œà¶"ś™ÜoœąŠźëČÊtïe™-ˆđ’9MÖQ45AD]–c û Vc ë`2ßûƟ Û”\k’á#Ç9M ]:’-syÈ:JȚ}8UĘ„Ùl:őÆ ï>4SQ]惌óÒD…ïْ7yçćPTòź'Ÿùïí±’fapplication/library/img/src/icons-big.pxm000064400000424246147577724760014524 0ustar00PXMT_DOCÊHEADER0F@NĆŰ%1•Ę•îMETADATAgè3 streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+ _IMAGE_ZOOM_†’„„„NSNumber„„NSValue•„*„„fœ†’„—˜_MASKS_VISIBLE_RECT_†’„—˜{{0, 0}, {0, 0}}†’„—˜_DOCUMENT_SLICES_†’„„„NSMutableArray„„NSArray•–†’„—˜ _PX_VERSION_†’„—˜ 1.6.5†’„—˜_DOCUMENT_WINDOW_RECT_†’„—˜{{695, 4}, {200, 874}}†’„—˜ _PRINT_INFO_†’„„„ NSMutableData„„NSData•–}„[381c] streamtypedè„@„„„ NSPrintInfo„„NSObject…’„„„NSMutableDictionary„„ NSDictionary”„i’„„„NSString”„+NSHorizontallyCentered†’„„„NSNumber„„NSValue”„*„„c†’„™™ NSRightMargin†’„›œ„„fžH†’„™™ NSLeftMargin†’„›œ žH†’„™™NSHorizonalPagination†’„›œ„——†’„™™NSVerticalPagination†’„›œ„—†’„™™NSVerticallyCentered†’š’„™™ NSTopMargin†’„›œ žZ†’„™™NSBottomMargin†’„›œ žZ††††’„—˜_LAYERS_VISIBLE_RECT_†’„—˜{{0, 0}, {239, 240}}†’„—˜_DOCUMENT_SLICES_INFO_†’„“–’„—˜PXSlicesPreviewEnabledKey†’„™›„„cą†’„—˜PXSlicesVisibleKey†’Ż†’„—˜__OLD_METADATA_FOR_SPOTLIGHT__†’„“–’„—˜ colorMode†’„™›„––†’„—˜ layersNames†’„ –’„—˜image†’„—˜ folder_open†’„—˜js†’„—˜zip†’„—˜xml†’„—˜php†’„—˜Layer 2†’„—˜Layer 1†’„—˜pl†’„—˜c++†’„—˜sh†’„—˜rb†’„—˜py†’Á’„—˜css†’„—˜html†’„—˜office†’„—˜pdf†’„—˜rtf†’„—˜txt†’„—˜video†’„—˜audio†’„—˜ application†’„—˜Layer 4†’„—˜swf†’„—˜rar†’„—˜tar_bz†’„—˜tar_gz†’„—˜ folder_closed†’„—˜Layer 5†’„—˜unknown††’„—˜keywords†’„ –†’„—˜ csProfileName†’„—˜sRGB IEC61966-2.1†’„—˜resolutionType†’”’„—˜ resolution†’„™›„„dŁH†’„—˜ canvasSize†’„—˜ {48, 1350}††’„—˜PXRulersMetadataKey†’„“–’ź’Ż’„—˜PXGuidesArrayKey†’„ –’„“–’„—˜PXGuidePositionKey†’„™›¶–3†’„—˜PXGuideOrientationKey†’„™›¶–††’„“–’æ’„™›¶–d†’è’醒„“–’æ’„™›¶––†’è’醒„“–’æ’„™›¶–°†’è’醒„“–’æ’„™›¶–È†’è’醒„“–’æ’„™›¶–ă†’è’醒„“–’æ’„™›¶–ú†’è’醒„“–’æ’„™›¶–,†’è’醒„“–’æ’„™›¶–^†’è’醒„“–’æ’„™›¶–†’è’醒„“–’æ’„™›¶–Â†’è’醒„“–’æ’„™›¶–ô†’è’醒„“–’æ’„™›¶–&†’è’醒„“–’æ’„™›¶–X†’è’醒„“–’æ’„™›¶–Š†’è’醒„“–’æ’„™›¶–Œ†’è’醒„“–’æ’„™›¶–î†’è’醒„“–’æ’„™›¶– †’è’醒„“–’æ’„™›¶–R†’è’醒„“–’æ’„™›¶–„†’è’醒„“–’æ’„™›¶–¶†’è’醒„“–’æ’„™›¶–è†’è’醒„“–’æ’„™›¶–†’è’醒„“–’æ’„™›¶–L†’è’醒„“–’æ’„™›¶–~†’è’醒„“–’æ’„™›¶–†’è’醆’„—˜PXRulersVisibleKey†’Ż’±’Ż†’„—˜_MASKS_SELECTION_†’„š–I„[73c] streamtypedè„@„„„NSMutableIndexSet„„ NSIndexSet„„NSObject…„I††’„—˜_ICC_PROFILE_NAME_†’Ú’„—˜_ORIGINAL_EXIF_†’„“–’„—˜*kCGImageDestinationLossyCompressionQuality†’„™››œ†’„—˜Depth†’„™›¶–†’„—˜{TIFF}†’„“–’„—˜ResolutionUnit†’”’„—˜Software†’„—˜Pixelmator 1.6.5†’„—˜ Compression†’”’„—˜DateTime†’„„„NSMutableString—˜2011-06-29 00:43:24 +0400†’„—˜ XResolution†’„™››œH†’„—˜ Orientation†’”’„—˜ YResolution†’„™››œH††’„—˜ PixelHeight†’„™››œF†’1’”’„—˜{Exif}†’„“–’„—˜PixelXDimension†’„™›¶–0†’„—˜PixelYDimension†’„™›¶–F†’„—˜ ColorSpace†’”†’„—˜{JFIF}†’„“–’„—˜YDensity†’„™››œH†’„—˜ IsProgressive†’„™›°ą†’„—˜XDensity†’„™››œH†’„—˜ DensityUnit†’”†’„—˜{IPTC}†’„“–’„—˜ProgramVersion†’„—˜Pixelmator 1.6.5†’„—˜ImageOrientation†’”’„—˜Keywords†’ۆ’„—˜ ProfileName†’Ú’„—˜DPIWidth†’„™››œH†’„—˜{PNG}†’„“–’„—˜XPixelsPerMeter†’„™›¶– †’„—˜YPixelsPerMeter†’„™›¶– ††’„—˜ DPIHeight†’„™››œH†’„—˜ ColorModel†’„—˜RGB†’„—˜HasAlpha†’Ż’„—˜ PixelWidth†’„™››œ0††’„—˜_DOCUMENT_LAST_SLICE_INFO_†’„”–’„—˜PXSliceMatteColorKey†’„„„NSColor•ą„ffff†’„—˜ transparent†’”’„—˜PXSliceFormatKey†’„—˜PXSliceFormatPNG24††’„—˜_LAYERGROUPS_EXPANSION_STATES_†’„ –’„“–’„—˜_STATE_†’B’„—˜_ID_†’„—˜:E79DCA12-B4EE-4736-8A6A-A627325955EA-7379-00002316C56B276C††’„“–’g’B’h’„—˜:3922FA03-A14E-4351-8F90-4D4F209DC60F-7379-00002316C56840C4††’„“–’g’B’h’„—˜:19A73FEE-6F06-496B-9B66-0A245313ADD2-7379-00002316C565ECE7††’„“–’g’B’h’„—˜:A893724F-8BC4-454E-A572-93FDDAFC24C5-7379-00002316C56334CE††’„“–’g’B’h’„—˜:4D59E174-172F-49CD-B4DB-377EB6023F59-7379-00002316C56027CF††’„“–’g’B’h’„—˜:08376F99-D214-4BC8-89DC-53E300E92EC7-7379-00002316C55D7573††’„“–’g’B’h’„—˜:B2F945CC-6F8A-487E-AFBA-B0FD7884F14F-7379-00002316C55CB926††’„“–’g’B’h’„—˜:6562DF83-49EA-4C9D-8D0B-B12C0B490733-7379-00002316C55C2533††’„“–’g’B’h’„—˜:17587334-6891-4DC1-A036-A42C0CC05C44-7379-00002316C55B76EB††’„“–’g’B’h’„—˜:ACA63C41-62AE-451F-BA69-B732F1BFF96A-7379-00002316C558BA74††’„“–’g’B’h’„—˜:2EBCE85B-E4A7-4CB9-B899-402CA4328A32-7379-00002316C555EE1D††’„“–’g’B’h’„—˜:60DC7AD0-C861-40FC-B081-42AA0BA0CB0A-7379-00002316C5530CFA††’„“–’g’B’h’„—˜:E33C04F3-412A-4A76-A66D-D95AF23D97D5-7379-00002316C55048B9††’„“–’g’B’h’„—˜:ED0B4412-A7A6-4C29-9A10-D44162B75FFF-7379-00002316C54D92D2††’„“–’g’B’h’„—˜:E5A8CC16-4FF3-4C69-99B6-A8FB275E098C-7379-00002316C54AC95B††’„“–’g’B’h’„—˜:025399F3-BC6B-4021-83FF-D387659B52E7-7379-00002316C5480746††’„“–’g’B’h’„—˜:11295678-5AE8-49D6-A613-6E33D9ABFC95-7379-00002316C54520DA††’„“–’g’B’h’„—˜:E63A58F9-684D-4FF4-9040-9E5DE0A697E3-7379-00002316C54281D1††’„“–’g’B’h’„—˜:84295360-D2E0-4633-A5EA-07D523556162-7379-00002316C53FA9D3††’„“–’g’B’h’„—˜:D5FA1E74-21AF-4747-93B2-823D14673F93-7379-00002316C53CC7A2††’„“–’g’B’h’„—˜:81E977DE-E02B-4AD1-AA6A-7675B4567DD0-7379-00002316C53A1EA2††’„“–’g’B’h’„—˜:54F1F62E-9C05-4B55-811C-C1898599B2AE-7379-00002316C536FA9C††’„“–’g’B’h’„—˜:B05FB1FD-5F2A-44FA-B5AC-17BCA248584B-7379-00002316C534334D††’„“–’g’B’h’„—˜:B49D7B18-ECA8-4770-A48E-FE64CB968BB9-7379-00002316C5317201††’„“–’g’B’h’„—˜:CE265196-51BF-4C08-BA8D-06EF79150A40-7379-00002316C52C5E22††’„“–’g’B’h’„—˜:785F9AA0-2E04-4E5D-A83E-CF741050C650-7379-00002316C5297D4A††’„“–’g’B’h’„—˜:B0B847A9-6FD0-4740-B48D-A08479CA1F3A-7379-00002316C5269294††’„“–’g’B’h’„—˜:5AF3D56F-0F22-47A2-A385-5F0264522DFA-7379-00002316C523C5C4††’„“–’g’B’h’„—˜:F05830E5-724B-4560-9AB3-C00DC08A6E6A-7379-00002316C521112D††’„“–’g’B’h’„—˜:DE846D34-473C-4162-8C9B-57AAE55E0EFD-7379-00002316C51EC013††’„“–’g’B’h’„—˜:D178F1A1-DEC4-476D-BB2F-37B457F2FB7B-7379-00002316C51B6508†††’„—˜_IMAGE_VISIBLE_RECT_†’„—˜{{-61, 0}, {169, 832}}†’„—˜_LAYERS_SELECTION_†’„š–8„[56c] streamtypedè„@„„„ NSIndexSet„„NSObject…„I••††† GUIDES_INFO3d–°Èăú,^Âô&XŠŒî R„¶èL~ COLORSYNC H HLinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP ?Ú.ÛJ‰«`ą<_|}ĘcprtP3desc„lwtptđbkptrXYZgXYZ,bXYZ@dmndTpdmddĈvuedL†viewÔ$lumiűmeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ oą8őXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view€ț_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ€©źČ·ŒÁÆËĐŐÛàćëđöû %+28>ELRY`gnu|ƒ‹’šĄ©±čÁÉŃÙáéòú &/8AKT]gqz„Ž˜ąŹ¶ÁËŐàëő !-8COZfr~Š–ąźșÇÓàìù -;HUcq~Œšš¶ÄÓáđț +:IXgw†–Š”ĆŐćö'7HYj{ŒŻÀŃăő+=Oat†™ŹżÒćű 2FZn‚–ȘŸÒçû  % : O d y  € ș Ï ć û  ' = T j  ˜ ź Ć Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ă Ț ű.Id›¶Òî %A^z–łÏì &Ca~›čŚő1OmŒȘÉè&Ed„ŁĂă#Ccƒ€Ćć'Ij‹­Îđ4Vx›œà&IlČÖúAe‰źÒś@eŠŻŐú Ek‘·Ę*QwžĆì;cŠČÚ*R{ŁÌőGp™Ăì@j”Ÿé>i”żê  A l ˜ Ä đ!!H!u!Ą!Î!û"'"U"‚"Ż"Ę# #8#f#”#Â#đ$$M$|$«$Ú% %8%h%—%Ç%ś&'&W&‡&·&è''I'z'«'Ü( (?(q(ą(Ô))8)k))Đ**5*h*›*Ï++6+i++Ń,,9,n,ą,Ś- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/ț050l0€0Û11J1‚1ș1ò2*2c2›2Ô3 3F33ž3ń4+4e4ž4Ű55M5‡5Â5ę676r6ź6é7$7`7œ7Ś88P8Œ8È99B99Œ9ù:6:t:Č:ï;-;k;Ș;è<' >`> >à?!?a?ą?â@#@d@Š@çA)AjAŹAîB0BrB”BśC:C}CÀDDGDŠDÎEEUEšEȚF"FgF«FđG5G{GÀHHKH‘HŚIIcI©IđJ7J}JÄK KSKšKâL*LrLșMMJM“MÜN%NnN·OOIO“OĘP'PqP»QQPQ›QæR1R|RÇSS_SȘSöTBTTÛU(UuUÂVV\V©VśWDW’WàX/X}XËYYiYžZZVZŠZő[E[•[ć\5\†\Ö]']x]É^^l^œ__a_ł``W`Ș`üaOaąaőbIbœbđcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišińjHjŸjśkOk§kÿlWlŻmm`mčnnknÄooxoŃp+p†pàq:q•qđrKrŠss]sžttptÌu(u…uáv>v›vűwVwłxxnxÌy*y‰yçzFz„{{c{Â|!||á}A}Ą~~b~Â#„ć€G€š kÍ‚0‚’‚ôƒWƒș„„€„ă…G…«††r†Ś‡;‡ŸˆˆiˆÎ‰3‰™‰țŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘š’’z’ă“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜ž™$™™üšhšŐ›B›Żœœ‰œśdÒž@žźŸŸ‹Ÿú i ŰĄGĄ¶ą&ą–ŁŁvŁæ€V€Ç„8„©ŠŠ‹Šę§n§àšRšÄ©7©©ȘȘ««u«éŹ\ŹĐ­D­žź-źĄŻŻ‹°°u°ê±`±ÖČKČÂł8łźŽ%Žœ””Š¶¶y¶đ·h·àžYžŃčJčÂș;ș”».»§Œ!Œ›œœŸ Ÿ„ŸÿżzżőÀpÀìÁgÁăÂ_ÂÛĂXĂÔÄQÄÎĆKĆÈÆFÆĂÇAÇżÈ=ÈŒÉ:ÉčÊ8Ê·Ë6˶Ì5Ì”Í5Í”Î6ζÏ7ÏžĐ9ĐșŃ<ŃŸÒ?ÒÁÓDÓÆÔIÔËŐNŐŃÖUÖŰŚ\ŚàŰdŰèÙlÙńÚvÚûۀÜ܊ĘʖȚȚąß)߯à6àœáDáÌâSâÛăcăëäsäüć„æ æ–çç©è2èŒéFéĐê[êćëpëûì†ííœî(îŽï@ïÌđXđćńrńÿòŒóó§ô4ôÂőPőȚömöûśŠűűšù8ùÇúWúçûwüü˜ę)ęșțKțÜÿmÿÿLAYERSpž%ż5ë>đJÍXdff?gńiŁu„cQ™A„5±œlÍ ÚèIóŠÿ/ Šü(7A‘NŽ[ŚiLvÙ"‰ä(.0ûimaged':E79DCA12-B4EE-4736-8A6A-A627325955EA-7379-00002316C56B276CÀç$xœ™yp晇œYLv¶j«Ű8țc7©lm–„J±€ƒƒsÂÂk“ÄŒ]¶ĂQÀb»|߇ìX—OYś}Œ4ʒuŸŁÓktK3ĘÇhtÎŰdû{żž‘ÇX$^lo—ŸzßïíVśóötĘ3^đgGsƉĂÌHdŹrFAÆOźÖ‰öŠŒ™21ZŸ†Á fújđśśßś .ŒśŻžđwu7çâڄWí­ž:6ȚuÉÉ=Œ¶À9bÆì€ Žn#úëłŃ[­go™ąț]ś·7eĂ5ÖŚ`ĘmP g5&»Ë0bʂ”<3YiLuȅ»ÚƒÇ»Șük‰žh8‰V󆔉dL˜Ïòș™±UaŒ”ęŐ©<ÿi˜íÊFOUü8sŚ–±Æ ú7+‡9܎N"čéÉ\êžèdÍ9PĂk‡đüOٌ˜è,EĂőÉʶ39»xš»ò9Œ5ŠóŠ?ƒn܎**XScF5j”żłßˆ™^#Š­°wąÇ˜ÂÏ@‡Ùî<ŐĂLGrą|ÊÙÿĘÙeŽAüÍÊćf4ÇŻBźùÙ>zóș™ê©€Ł«ĂMùèæőo­HÀŹ”˜=\R=L·gâÌáOBÙÿĘčeŽȚ€«œ?ÄGŁšĐHœŁßS“őÇtŠl˜Ž”cŹ­™h/ŒEGQ œœ•˜í)aùȘ‡©¶ lZśêÇ<ìëa€.•țMô' §@_UèȘê’Kč îłrîé?ŃUŠa>zkSђsN·©ç6UìĄł–öŁzxțéŸÄCߑ†kőž:|…^tò0Àó*~Œź5gŁV“èĆŹžőÒż§œś-Żæ\ŰxïŠûćŽóp 5òži`ü[[{(T=L¶fàYüț¶—‘šdúó8ôù2sŸt—èd”šD5Šÿ Ż‘žGw)FćüŚ€(ÿš€@ž†›Ü=\æö<¶rwč˜hNÇßęÍ7ïŁÂm-CFæOW?aG•»Łœ?Ęc—k8yțć:ŸČ–ÂȚ’‡Ÿ:šó"`LđçŒÜ—Ü[҃ÀkOő`-â=ÁśŠ4PᶟŁac’Ú·œKćîFóŹœË‚ŒUdM`.q¶·Ó=e°·çóęÁ€ÖüT'ŸÆ5‡•ïìó3ĄèçsŁ·‚=hs“œQÿ?ÔűÚ= U&đü_ŠW%]ˆÛIƒcąŒĘăëÛ‰D|Š­eptrț蜆¶‚hÔ.⋩AŸ[ő°‡NÎŃ|Æ™{àsŸ™gnmHùUŸVƒ•ńܧÌ„.n\‹ÛuŽő’kQÖkÈ51ĂëÇŃYˆaS:‹ca΋Á3#űbzˆ=ŰpmŒ‹=ŽòXžä˜üì87Í°‡țê$yWúù?ő1X‡«žGćĂ(xr— č7“±űOđü5eĄ«4ćLX09ĐGo =pX0ÙS‡é^Ÿ‹ ńžöš›Š;óÙwÌ8őżA­[^Êbqu°^yžx+§ŸrúF+WAĘÈX¶8ž„ÿTW!FÌ9°VêP—ˆòh”„Eaè†Dađ!‡AiäqăOĄ)3„ńć;Œ“śÏT{ê2‚,śÜóŚ ©vKË@i4σÜSe€\9 ’ 7æeDËÉɝŒŠș‹8‡fŁŻ6­Qžœ~FÎŁqŸ(‹ù#9‰ŠŰ?Ș±1ŃŐIšŐùŁ6эúłèá;ÇXSČ#OTQ햖’(^‹|Šò3ÔzűȚuw.ÎZ/ž1#Ïÿ4ęí­čœƒRy^ăp%;5ú3Z ~šęQEgŁ.”\W—ző)§ùy .éźΠăR(î]xÏœÔû‹Kq$çÎËâ ~Bo)û!îšôŠrâÉ%Ê:AÆ2—LsNo»„ÁÆ4őgÎ CCú9TÓ”JŒèŻaäüZCê gŃÀgu#1ÎĄ‘țćĄpÿ}{?őțâÒWAy6–:»‘ÜS€æÍő ă Ęg,EpŽ_ÂЕLôT'Łœ8mEQœ‹Â`âgaÊV4’+nÌčĄj}K~8Ú #ŃUŠ$_yźĘÒÒWŽ«òUź.žK'q1—±w.źUóŹłjțùü–Ëy4]= l”É°T&òœ(™èĐÏśĆŸ:=Łd°!C— |ïK=Kœ55đÖę űžÈg–ű8{Š•‹ËVÌ\ą 5čȘ1—HŽí óÙy'(Â$çÁ±–lŸG§aűJ:É [2= Œ/űœŒăŃæLŒ™łŁÍĜ‰ÖGš€ÎśïŽł·ìߛÂóÏg]Q‘^N{ąŹŚŒkEpòüËv2–șäçÆDćîș‚čȘÉ;ś!ˆŐniéÍæ|Î9ž§žŻ/GY§E 9ž¶Îč~ %ŚđȚNrÙFƒ5aÔê”±Źïœtëț¶<ús>TËsà]=šË=ŒkŚ©ćłÖśßrLŹÚ¶‚lŻê*zàXEYÏÜœNœšvĂRXXˆąąą»JvNOgć"ЋcÉU]`.u‰ȘWF”ȚloË șÙż “““w•ŒÌLtrț1„ŃU> úÈgB'ç\$'9öű«mmč7ûĐbbŽü ˜ Ž‚ LGáEą`ą˜(Bʄi”„cœÏș‰’çóoKŁ0^…QÆÍq‡ÔŸÓÓӕ1‘nŸ/Ły ÚűF€Ț“sț&ÿüü|8Í„8\y(Jé$Đeą,Z1Yă&“±5ŠÂ12ˆIû(†Ë“1YáÊ8ìNśĆżFïÁ Q{ÔŸ ƒæ_ćńÏgԐ\܀fadM‹Ś·uq<Ż+vە‚ÇWĐEaL ‰Š)~'›2ê0Ćß Æ«S196‚ak7,MèŸ\nźûCš/~łktÇđ/!Ûà°Û‘’’âöOĐ|èé‰Țž,—”«ä]ĘÈöÖŹs7ùçćæÂ>fG_a4¶ŻĆèo,EWł ]­­°\©Ćpu2ϟàčMÆtC&ëÓŃa,F·©¶–&ŰZÍho5!4?|VN™Č±5Í» ț°ÛǐŹÓÍù;Ƒ>Në%槜”ș†VŽ±¶~~ÿ\Î ŁŁŁ=ŒŻęüet47ŁÏfĂÈđëcè@gGț{ăfìüŽ†,ԧƹ&SϞüĐRY†’Ä(ŐKoû­-æ{NóBPWkà>F‘˜”Dÿ(/!HôÆ]ë&çĐê–Ì37ùçdgaxx'űțœ+%g+sqșłăŒn»}ę}ęhi2cË­E~Űid_ @úÙSĐú 6+șó§pö(vÆâcęYü"Ęoæàyęq qß ńü%țńtËsŸW:)O3śÔ$rÉ]/Á:VV&áh-C|C)Ț­NÀȚÚLt öńŸp`tl Ę]]°bœșàŹÏ ÁžH_ì?ƒ](¶d!üű>NŸÄùărßÄ’áŁKAjßqqq7ű_‡ßŻTôbΗë$'.ț.$cKæé›ü33ù>80€ čAđŻÉCNv6^\ń ŽÇ‡ĄóÊî­[ńé–-°vwĂTmDFöÇ`ż[lN»€˜€ă8߀þpbț-îĘgąśŁ«žßYžï˜ŰX·œæ&ȚôQŃ3V\Ï”sŻćłZŽdÜ쟞–†ŸŸ>Ԗ ŃdÂö?Æ[/ÿ í0ő#55oüôçšźŹ‚čфÀ0Dʋˆ#{àëkRÏàŁèSx—ßkŚ\܇·/ì…ï±]X{~òÂÎpßœˆŠŽÖü9Ż‰ÇŸEΔž«š1ӑ­â|țil6¶ćD"țry/šź˜015…kŚźa`| gęü!óŹ©źg}ö ìä~űŃńđÁműÌ/>?sOáű©}ȘŒűìDŹÏ”ïÈšHÍżÊíŻÜűN!č—{#u‰9˜iËâßäÌëoHŐĂb±àíä\6_AqQFFFĐcíÁäÔ$ï_;::ÚQQZ]d4žÜł«nÆ Ç>ÄJżÏ±âÜ<žrO$Ć?—ᕃàíńȚź-xéâîۊˆˆúGjțô'œ‘Úœł;șëÓ­é*ŸÏ?UŸ‚în –ȚˆMç|ÊûĄ„=D†„đ7ùwŒœ\ÔŚÔbë†MxòłuXrt=öوo߀GC·ă±„ƒx,à<–ë‡GőGńhêQ, úKą¶sßĘżŃ>șćaT9ńŠS-|ob>ŸJ Ÿ-XŸă]ŹxâßńƞO œ.YőŠ‹ÇÎlĆ Ÿ­ÇŠ7Śà'ßÂąĘoăĄ#żÇâ°íXż‹éú­Ì“X|ț,M8€‡üëăÁœżUû ÓüćúçÿWêzéòÀšűK”±Ź$'S-ÆìùęuIhooÇòmïà±]ëđœÖà‡ŻŻÆś_|+^x/Ż\…Uk_Ăçț€WȚÿ-VŒóXòÉkXìÿ<ŸúŒ„șƒìc?Ïś.,Ę‡EŸ›±(đC,òÛąöêöUâtĘOÆ_†uw?ríLšSU>ŸRR"ÚÚÚ°üó”űŃê§đă•Oá™'žÄśW?eŻ>…çWüŻźZ5?û^ûĘZüűęÿÄÒcńÏۛùÎs7ÿÎČ8țąăwRț.t‹šß’ÜÈûè|ț ńq0›Íw•‹ÁÁêŰw*Ì-'NžÄÿ<Ôł î Ï"ùł ,Xéæ9ò ÉbF’F»HčCÒPyź‘ś›Ëä5] oß9òöžőaj$ś ž:Žíś ÙÌT—$ÙșêÈٜKMÙÿž–|2Ö€!L@SČXM‚4Ö^òégœ·ȘÉp2—Ț{ûő”˟_ìgőÊà—™ćÏ?‡ü㠚…RĄPBÖś2Źïxœdi+&śùLšž%4čáĘ ~ą‰Óžó\.ҀÓ\fël"C]6é?Ït fòú™3Ôfź6t5ț5–BZŠ*™ș*“èkŹ­KYᜐśXS(đ‡X{ŽíöZ ß՘‰2t!ŚÎg‘ iö\ÆȚŰû@ô»›rHrc`ÌÇ]À~6ó•ÉțFêŹLŠŐ+ü2d.hŹ]„TšGcœ–Vè?—2àôl/bCL Ҍđ37à<§]ˆ_űYűëùȚ…y ê PÏęméȘ)äol€Ìͧ_h,ț"ȟI„ńł©älHśÁ±'bđăjHóùs>ï„w‰șÈ7’l=睔瞎€1-ΟNЁóïyÍ­ày‡p^Wp6“śÎĂ{—°†/‚Š9xzhÂxv.= $ _%É|ER*Ą_­^ÌóÇv­€î„o1 ù˜i-…$MșéA{5y.”ȚÿÆnTæ"P­Æüyh‡țț2#2±/Û)ü@e,YÛKÉ=uŸqrâÄțt+g‡ù •J„6‰țÖțćaê-Žœ+öÎg>§xóp 2rë€~ïßÛ°°ȘzÊb&YżĄ œŒŸ’ápűT:œzŠ"ÉvŁˆœ-yB;ĂqÈśß‘ÎwȚՐ „J5ÇŐ|Ò煁SűÒ#őûÉrsïcŸf/'æÏš%}Ë€ ĂRJ|ú»rBÚCÛHËŰźä‘ˆ}üL Îœ12ą-Œ€?żùÊ_!]ä+ ĆÏ84ȚÉÜLLÖVêÌȚJŠŁŃbìùl”:€3&…œˆC.F1Zł¶9 {Ú0}”úâÈ ÖăÀ:jK^O·R7ĐíôMdÁę͆ïâűgÙŸH€ńÓÉČb(ĘI{>z'ȧ ĂŻÄ7q·äRóȚéjüZjM\‡ńÿ„,m%dǙnAÜvÜ-§’dû¶žL€›C'ù̅ìiăŒź | ęM1!tiŚßèÊȚÉ\Ÿ@œ 6ű±qd?‰d€û·Ö%à,ŠŠ#Ÿ†œ‡äGŒőkYs.Ś|țBÍ{>$òVžsžX ßV·OFq‡Čœˆ§ŻrBœ/-ę $?b˜? ŸțCÔő>5DźĄŸ’(1ïÇđźčr—đĂӆÇnäűnq9·Nčs ò…~ŚćCtÚ"Ö`Χ’śçáŠ]‚1ÜKćÀ|,–îăف»Âï_]ę'ȝcŻĐFx\—sÄŰwdl$îŁˆ{àHĘÇĘgŽjŚS‡ûćțÊ5ԒŒq R4}AÄŚ%èx,˜sŒȚËąènIĘŻˆ‘…ÒHÂęQ›»¶żûÛxÈ\ĐtEÏÍș¶o­8ŁïcÎśä…Ò âÁöŽƘś„ĄÿÔš±ùÿŸ24}Qä䀱…ÜĘŚÈyțb }ÎVŽ„‘…»Ćá]Țv*Úö~#$>Öș‹ŁŸőÜźÇ/+ó^Ÿó ĘIÛ@ŠBŒAiÆ!Š†ŠÙIf|ŚčhêäËû~ÿ9MCDZ–ó—O}ËżœßYț>óŒ6sÏ'Ó`Š0V–0Š%ŽŻę€vȘ­X&[ eâvŸ<šË”…ĄFùÖÆ ß^ż~ęë_AĂ/”M·{ćńĂ~y4Ő)&ŸBtž>Ąï0Ń!áńv ŽÊÌę[2|Û#ƒ 9š­đ Èéú§ÚP'S=ćŒ•{)Ąû>­aĄ§HŠS>ŻEű·övàœâpđ/Ő:0vpbZÆOƒ}ŃŽ„ÊL_•Œ”•Ê}<ÿșë Tą†­aŸ»Pęă Àż””țü‘ŹÆôűŽ{‚ê“ÄO5f~zbZsÏąűÌdČ«LFü…Ò]~Uz*R%$­©†}ï쓕Űû§œjÉÔű”ZBíŽ$zÌJž:&cűmlʕï%i/Ÿ(ÖÈm ŐŁ†j ő—Ą†b­á͟üűćș†=oï‘=›lèŻőÓr\ ; œŰwBcÍŻú ©ß+xw©ęN~’XŁ~œ­-šá–„jPCčÖ0ÛY ßûîw~iźÚî?îČë»"0&ô ꩱ)”q{ăŽ⌡upbÚ\ÿ ^ÿÆlŐߘqRŹ±6»†;bá| ÔÚ5xćáœòÍŻmä­Úž>á^Œ }Bč~Â>7ú‹’ŽÉT‡O†šóäžï’Üș‡ßçn±đÛŹ5áFSC ïŸ?ÚòòV}Žvün‡Dłóś;úŃôwő«%Ź…0»;VsÏÂsúžLu—âû!O:K/ICVŒ<ž à{Ł5Ü3úÉ0~«ëPƒ9›Šü9ÿ…ÄgÖđáo?”g196ŃÉx­šț€ă2ӋóçNŸt•]‘ÛygćÉÜ|[QCŻ~'YŁ­5Œ4Ł†Ćłią%û È\±†wùnçżù@Ü°ęŚÛŐź…ęïì‚țcĐ_.c­Ò[yUÚ}©òda\žÌą†y<ʇ:Ąß©ańlZ@ Ă üVz ŹXÇÓZIÂa©č~^ȘŻ&IՕD)ż/%çăpžÇŠślŹ±„~4vŽ}Œ©ÿ!źÿh[‘ôU§IOmžÌśËìH·Ì vÈLĐ/3™ 6Ëü ŸùFńNGM󜄚;uò_ƒ,Ś­6ù˜ÜőŠKkѐ"­XOŠűáûaû”ïŠÔg&IæżwKÚáíÿGÖ±â;·ïÁ^)LŰ#yǑûçû’qx›\ûl‹€Ű,WÁ”O·Hæ‘żIÍ„ŁÒVxNz«ŻÉŸáĂÁ™ëöIsÁ™țuëŸșÒ\”‘ê+ž|§j@­X6ô‰ă”JMÚQ‡eLŰGè‡ńÌĘŻÀê‘ĄŠlé,K‘;7NË-œŁui±Rzț\;ŽMêźÓ8óóżKCÆ iʌ“ŠôXńçàśß“mâčüŻzHsŐFȘRđ,6Š…{hjX†oȎE êSł„Öô© TË<ôOuzqćâșŠÉ]ÏyiÌIĐR?Ę*eÉGćfzîcœ€~¶UšĐŚœ/·łă„9ë„4g—»y ÒSrA^_żîuÈ[” W^ƙ†s™š• VŁ`çX[YòäÏ<-ûcž%ó8§»Jä?_żáÚœ„ćÆ)iÈ<)Éż'őé' ßr`ł4âŒmÎK”üVûAkȚ)ńC텃ČqĂ76BȚȘmšâôó·± @ł }'GšŸy‡ĆìŽ/ôWÈLw‰ŒȚ-”`C–tWŠJWE Îą‹xG¶â]:§űAȚ‹»°íȚ ÚßQš,]ć—„ŻêŠŽeÄòwÍU*O–GĂ<šŐ`áZ†Ÿ1}ê§O­ô—Szń)čđ1΀ęR„wűFÂnɏß%MYÒ3]òNìÀ·QŠ 7çâ7:GjŹ„OK˜«TŹ‹ŸZ`ÆűĄ ż *dçàd‡ßŃù2vś(€¶,­%ïäN)H܃:H ïj{ȚwĐ^(ăÇła~w~ąkꃄçqęoȘb”Đv@LęŽì7°ÓGkAÏÇ3fž>-ăèùN^Ż9~a BMæȘ –žkškU`쏔–[ö9ûúOƒÏm4f„ó‡ŹjWkbö–žŚ?àƒ~œ‡:Ś ÚZÁrc›ęáGćś4~(PfÏ-G f,1ó™3±±ZÌÇX§š ÍUđ5ú9ëŃr]…ëÙ±îoûÜ#Ò óì‡ïèášôu>|Ӈq°Îì§%?à;ă^żś žőȘ%k8XÁČHȚìëÓw‹Ć{bÏĄćZaÍZÄÎ:–š ÍU ŸÆłX…yœ»]ÿo„ŻûĂ:DśY¶]ŽŽ±Yœot/…ù`q’{ęž$\ Œ«˜gJ#k„Ő/ű|7Žšw,ú5Âęđ‘71|ó‹c»8–kŻEÀsJő뚁«~ˆÍő+ÁúÆw‹êČçĐ«é>\S}ÀńąSkӏ{ÊčÔæÚôŁàúÎțôÍ8XŒć~ô—æ‰í#Ç>gŸÉ˜7˜ŰôŻQQæ@?ț/jÖ >@ ˜ܟûæ-äÔZ‡ć±łçÓLŽëȘ`òę… îőcŹč‡˜ËőđwłAŹÖgïo|ñN?}æÔ_ÄÔBßèŚ=œ-ÆĐ·lkâĄ&HsŐú â1ś WŠŹžßZá;Jë zïČ`cœ€uôŃśâúÇŻM?žŃPo±YO‰ȚÏŹ©”ŃW Sń"f>|+‹ău]{LšŚXj‚4WcY{šÇŁs–î·Fp—Ï_sŒÖĄÖ°`k &HsŐ8–ë„șŠ`yžV1țŻ{DÆîdÂg œ}"–cùÌÁ‡Uœ>Àù&F±ŁßÒ8gL±,PÖ„&HsŐ8–ûÌwȚĐ58ŸvÚ«Ż^Źy‚>c—çì˜>àĄŻsșI|ęNﭗáŽJé©1IWU jËüò/»țA‡IüMâ?i»ȘĆŚS%g;J„ż>KܖDk˒~{Ș%\t ëÿű|Či·Y.•IY2ŽûfÌ[!C.łôT„bęÓeŒĘ$žŠO‡ áąZìsûEgŚóșŻ[bô‰ÓaÎsăXÿo„œi+‘kŠœȘ9źô·™Äžœ§2.ű{ˆy&NÂeűÔeϗĄ¶Ru—É`«Y<•ÉűŽÉxGźȘaŹ5KČă?° ü‹^·[t¶=”GYÆ:zL«Ă8ì3R›• ĂíĆrʑ/žÿĘeGeÜ]„òT Ł-™óîßöĄü_ÛŒ&VB1Ô7< =§[#ńo'ȘüLdïȚ*ÍÒkϔói-L_WčŒ{ŠQCŸȘa€9CžZő§ éŒjűè±™‰WïP–CYÂkŒq(2cŁäȚ ]Ő©Ò”sPœÙûĆß[#Ÿî ÔP"㝹![Ő°ü7żžČÂźáęUÛäę•èOađäìęHĐçuĂęgTLŸăP ?s'őçˆÏ.”Ś„ïŸ{k-jšŸ·5˜U g]òŁ|ïǐVûïŁÛ„ŒśHtÆ$î”#J3}æu_·ÌŃc=ŠÍÀúŸæú[“•~kÒvńŸrjš?ö'ŸŚš!GÎ4žoóWCȚ9Û»o#›țČU±śŐĂJ-ó„±nŻ EÖź(lʕn[š4æ”ÊŁŃx?·ˆïfUé±j5ž ńLàüáHÈ;ç}ôÎC›%ƒœC@#uĐŚûhÁŸ3}ŒÏŽäăü&źüƒRu|‡|>ìÆyŁ54júIȚŐ]ešAۛí)ÿƒÄŻŹáĆ»_um| JÂaĂę);ęŽáđájèß”Y†Û°ÿÔ„KsÁa©IÛ#_ŒœÄÙʃÚÔ9ÉßWPCŻ 5LìM§k“ż„Ìkžę烊? úÍrȘ>CڊŽˆ37AŸë—/FûPƒW>jG .èŚk˜Ű›ÆPCOUÏJW€ëŐòb6IéŃ8)9ČKŠïóÁ’ę|‹äìÙąYBßH Ç>ÆÔëßçȒö’O€Ő’&Łęr¶·E†»šdŰc—aw­œőŰdŽ gŸ><ӆœiŽ-u' Ațvłˆ’†œD©Ï: â„ȚkŠ;|;,c»ê*À˜ŚÄ­ĆI2Òn–~g¶žË‰íűv±ț@ŠŒ'æ}›Ä·QÌ{ߑąę›€äĐûRùéfqd’Oć4Îđ>O©ŒŽäŠ-cwç•W~}€…ŐzKcűL•‹űĐ'“ęR ù„>ĄïĂ}0ÒQˆ=Ô$ĘŐÉâ*ˆ—șălș]Ê>Ù"„ Qà#);„âÊÄ­R•ŽMȘEKuⱧìÎŽ 1ú°ÒÂjœĆńž­âÇwšŐ0c>àSłV‹ĂșKdú]9ۃR±źŸHƒ)NŹ)1Z G·J9IŒ– hź<¶]ȘŃgKĘ!5É;đ}m[ÒfiH‹‘ÖŒ}rŐŹ+Ż‚Œs¶žąCŰÓ°/Ső‘źÔ9ÖŠ| ûŽì#Œč—ŒbOjΓ“ötu†sæì—Ú±R­ԝž ú5*±żZ-m§Ôâ]mői±b‡~ËŸ 2ûêo͆Œs¶îƒĐÏwc1€æôőaÎÈDv ÚÇ: ež%Oú2ĆSu\ZŠ€č0{Ń~<3q`ŻÂ8sö©țŠüÒl>$íƇƑŽ…ï”°Z·ù€|ÖĂ=€Z5üXKđĂglô©•–šœȚçÖôŸiÍÇÿ`9ŰGOšw·úžt–'â\t“[*ȚŃ)°)Ò NÖŠJ_]Î}ÉâEÍÌ»R·‡ŻżçĞ „Çç)RZüȚ"űŽ„9_ćàÓízÜĂ3AĄœĆ>8ĐdÂ9:]N5œĐv:Óđ\àÿ2ħ3eÀ™„8Ęœ™Ò|żƒyœżÓw†­ż+?ë_źŽ?Pș|:ˆuË~ Ö`ÌŠëÏë3OŸ6ćò ű*Ç3Æ Ôia”źüœâï.ĂX…ócŹ©–}šŐà|ZŸȚ?fXúÆëèó äŒVËÓj1û»òÂŚïͅ~ì‡êłXŁő{4=ț@LŒč‰95Ü]űŹ1pkŚ^ŻòÊê V–ęđ}ÔiÓÚìïßžű†{öZ­Ż’KÉȘb-Ó֑š|J .ÄôUžÀgžVŐ «úđzoîîiúÚËîÿxH.·ŒdŚjÀw ôxű]@bM·n }@‹X]Ô”°ȚœéúŻżg…ó\NVn(Ăût'öÁ$è`Ô3M'ŃâÉ0ïÉȚ5Mäș Yțï&YúÏčíM—ÜńŠSÙÛȚhRüî?A–żîÄ”Nčő5GeÿjP,}”^–Ÿąń[À18.‰\Wźô7â}€iɇՠOmÌû:‘ĂÿóÌkvâZ?âúŚ–©9VŹ‹VöRąÉ94ęû4=Đ©[#țÎ<„•>­Ÿ6ŻwgĆNÓżàI‹ÜŠő#wmê”Ț ?Yqôąűé=Éj,ŽI"1‡źßGĐăsç)}J3Ź–ŚĐòD‹”țĐúçŻ)UśčóvčæȚ4™·șđąžțĄl5Ö-ŻU,À“ő“\@k$ĂÿżÊŃò™1ÓôßôxIđŸŸsc«ÒÿëkŠŃŃé•öOÆ̇‚5p,úäŠ'J&ôăśm]ĄIéd _ÏŃâúț€Őâ·|țŒŽ¶{€Û€GćCčÎąÆșù›ÜüŒMæ=^4IÿűÿJYAœèŁüű]ˆqgæŽiúç­.RûčkS‡Òżű™òiTWÛV«fëêìČűYô…`Ț_óŐXżzźZÁ9&ëŚô(«ÇŠ _[{ÍoÓlgÆtęsW™ƒ{Śìš{Ó±†ÍÓèpwovÜ?̇bŃÓćjŹĆÏZœcBżŠeFžÖÔźŹÆX«IÙPúo\Y K^¶+îŰĐ*sîːešg*ΊVq4”aÌ|(âțáXàœûRÉ7€`ăûöš?ƒûÒ4«Ç„>òsèœ-æ0G«<}‚ët«çi }L”4âÒ°èț҈ˆˆenËÁïÁ҈K çș„-"âÿÖB#—Č streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† [./éxmld':4D59E174-172F-49CD-B4DB-377EB6023F59-7379-00002316C56027CFÀ @#x͘[PçÇi§—€3}ëKg:ícÛŚ>€ÍtúȚOûdǎ“Öu“LĘžMg;ÁėÄ6¶c6`bƒč â&qżZ`a$ÂXÜ/’rééÿvWŹ)±—&™ä~s.ßÙïûŸĘŐjEÖcÆÊh“,ƒ• ,`Ź>,aLK,_çíÒHƒ,»ea°Ft—Ëæì€üèčgŒgϞgŸƒ-ŸÖ±l”OW§ć“„qùdqìyú„ŸĆ˜€AIÎ ËÊTŸÄ=ëŻBoîÏ!ÿkŚż4â‘ô☀űżw$ï—”©NI ŚK€«L6Cő’T§Đ—îaïȚœ•………òuŃè*–$î›Í™^YśIŒżçżF’aD{o-C—oŸùŠX;vL±|Ë»OŹ˜Ösv˜KâüŻÏôÉjšCâUòp°Bő'C 4\ CÆÿ}Ž=*_KKKjwb9Ü!‘nŰv™nÀ5(—äT“ö°9Y/ Ć9]h»ŻżțșXŒńÆj-[X1­c ê§%œłs§©HV =1ê•Ű‰t—J2҆š”‡ ·äž8R€đ·»qäȱ355%§NRŸ–1ęĆĆĆLLŸĐ?}útfžv'jźż/‹śœò`Ű#SĘ2ÙZ"©X$ŁíèĄE{Xż_'ÿôÇÐŽ«>,vrrrT—Ę2O}~ż_cúÌŃg }+·UùÙòß ±ÁZ™h/•`Ă5IÏ Jj¶=tHrڋŽ‡~óë?@–ă^}őUyć•Wú$;;[ąŃšZÆdaaA-ëvò-»ÖTćœęóŚÈDÛ-č[sYÒó<[‡ĐCŸ€f:уO{XŻ“Ÿęô'ż€4GĂڃĐ'ÔM=ŽŒ cZÖíä[v;Ź©Äù_ÀùŸő»pțoÉÀíó’~8böpWÒń~ôĐeöĐ(«Ł”òĂïïYÈ{â8t萐—_~Y9q℄ĂaÉËËSMŒ9OŸ–X>ëéÛ­…5O[]-KcMȘ“ÉŽ2é+ęßÏ’Æwłö@âF‘V|&đț1R#śÄûèÀb' ÉńăÇŐ§eLŸúh ęƒf|»Ę Ś5èŸh‘č»n w•JĆùt%‚śIô0jè'q|WÇșуńlZ TęÛĂK/œ$O‚ęĘÂă\8ÿ+!>Ü2ŐS.ƒź«òÙúŒ[EŃCHߓÒóĂ=ÌùŃĂÖłiašòsÈüÂ^|ńĆńęûś‹öíÛ§v7üőχLę>IŒà꧷B‚M%òÙfB>ۘG3òér=ŒCżŐĂÖłi=Äûoó]é)đ…}ì4êŻŒ-ŸÊËâĆç­ślăÍłâ.zÏó“R[xÒ°„Ÿ3Ç9ÆÔżŠóÿ0èțr™ìrÉFbZÖæ&d%6&+рŹD†d-ꗍȚùæń™¶=›6B-j+Y†ü§ Ëńh/Α!ïMl*Śe°¶ùșűáûaûuhl˜5ńęÎRYăüdŠżRüç„ëFŽŽ_O|ïŠ/ÿńć—¶kïJGŃIé»uFFÜyêž% x‡OE;e}ąIüuWŠŸ~ú»{ Íј랁óÀÏT'è’Ž }òšß ŸĐ'ôSžÖ§Zń őȐûȘgż&wk?’>\Śn\ÓΒÓà”t|ZăŸČ€ÿö9čSțĄÜ);+Ș‹Ć;ÇâHxŠȚï…4Gcźœśâ€€q ¶aϛ>5œX1lïoĐż4Ț(•—ț-uWߑ{ž|šÊ5z(ę@zHÙ‡Ò Í}ćçćæüŐd°òźŚ9ńß>#ś\č2Ù\ ÏìyúÈ{∷ᙆç25P‰u `æۛúÀòi9GóYȁgâü=·œûçÁ=lŒ&C”—€Z{©»ìôôáù:üź‹2„ïêv]’€+Wș Ț–çžęÁsśÄ1ÛZęünlĐlBßÊæìlő`7Ą}sșUșȘ/Jń™żKŽżï%rż”Ïąk2Œk1ìÉSàžI°±@çÇZđòIžę†ŒÜ>Ëï5GcÖw]>‰ó@­iœËHĂglś©u5ÔlúÈYsCÿÍsÇ€śęĂáZ|—ŐHžû–Lś”ÉÌ@(—žżïU°U2 UËü]Țč+ńčŻĐüxőyçúœxOŒśȘžTŽM”€gÚàÓæH»Ìb/Wțqp_1{dÀOF[eÆ_)Wß="sćáœZÉ{œ=*ŁȚBü¶ÇïČ{uűŒ»e1XŻ,Œ‚ [È'F˜wËDÍEÇúc-ù8ÿ=Ș…€ZèJ™$°Š§ű€\>țń•ž•”ÉfÔĄ7Ôi­Ò*^<œ˜gÌ< ś–Éí‹o鱜ăZÌë<Żő|'„š Íш”äIz¶k”bVXźgŰD°NśäȚÔĂùgžû5[Źą§ü“CM•ÆÄ^7Ț^"7>ű‡źć-=ƒßiušga:źkvźŠ úń<ÔcqhWń=ÒYuAśâę2‹ëÎűŒQkæYgőÁs2köËZŁś!4AšŁ1ÓtŐĐÏă±>mf걓s_”„>öPŒMxP›Î#¶ôpMúš'đy> r^Ó=xÖëŒ ëgšź8ŚßˆÏ">›ö5#”z/s}î3àțHó©šWŚOEŒÀČűœ>X©”« ëZšeM±ĄÛ‹ûqk]Oq6Ž«@ž5œ§E-,5AšŁm€6èçúÛYƒžÎÊóșûàŸdžè^űMKßMÔEߎÖöĆyźĂk: ĘÖÜv˜6\vźßsçŸ3—ŽŽdÖH©ßąțê„'ł?ï­Yżč?ôłGöÆsiäpòÆ:-Ú3sćœŁș™ßȘ±ŹQË8x7ú#žKȘ_ŚŒà{ kŸ ÄiqáüeK )_s„úxï[u–U=°ŹśÜTß"=ęè>\[}Àă"ő—v§śUę\›Ÿ c}#ŻŸÖÁ"Gíc|‡bœÉÓGŽsȘÖÈybÄÆü.őŚçâèÇoQc Òhó&܇0ŸFîùúÿ„±…5ż…m­ fkšÍ`ä§ĘčÎőŁÖž†8–ëáÿÆ:±ZbóYƒÚŐûőfŒ9æÔßÂè…Ÿau+G‹úiÓqłP€9Óup źțŻ”Y‡Đ'vߎ=OŸĐ'v_iŽ6ŹšiÌŃiü_ˆńŽûÂîôăM†ŒőŹŁ˜>ÖÔȚè«È©ÍÀێ™Ó:bÆʖŻëš5ɐa© Ò ÖČśä€GęJày€}Zíj 6M ÔiŽkčN’śòŻŚ‚”­«XqÆąuiú°Š5gĄ1òôMÒÛaž¶A6©ëR€9Źć>ă”ș§Ő{–sșóDsàrfLŸX>­æxŹĘšy՟š ÍŃ`-ś^ŻŃ5ŹĄXŸĘúd»o‡č˜â=«>°Ùő1C5AšŁÁZžëőQ—ËutÚG@NóÌ=ÖxŒûEc‚\f Ĝ#ôÁú4`Žš ÍŃ`-] âÿeŒ8Țkföú"PóˆĘò}Œ·ƒŒč ~Á§&Hs4XËcÖFȘŸP 5AšŁÁZłyęăűoëúS€9Źćûßáô9ßúż$jĄ&Hs2~ÎÚo#ĐöKđ€ń+đ|VVÖoM~^żÏg}łPFVÖ|„Ê°Č streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F††Ő Œphpd':08376F99-D214-4BC8-89DC-53E300E92EC7-7379-00002316C55D7573@–@xÏ[Ă0 DQS…`)–P0…R…R…P(…RpÏèĂ3JâI§śGÒjŚrAĆ í_ˆÿœoŰĄD!^”ûäfŹŹ—^mßżàÚŐXߘđKłŽŒUò’šcfRY°„żß*îĐFȚ˜Œ€tæÆaȚ*yIń%Ș'O,Ă­P,+\ßôÙčÎRÌvcæF!&ł±2ڂol{ê›[·n}òKlÜ⑶ù.?>č;„çzđńì=ˆÏËò]fș™îBxŒ wźcì†#ÍyŹ­ű3Êäúç:}ˆÎv#:ŃöŽ"2֌Ć;ő˜î(A°!+%˜äGXÂCŚ°ęÛsł’łđššÉÌD˜ÏÍÊpæ{Ș0֜Ïë_ˆđ ĄŠËó”đPíà+árè/‡ źïZï 7–Gčx” óú/ _Çʁ:Œ”äaêFŽŃđ!Pzz2>ś}ŰÿÒ~< 3 ÆȚùz,1Ś_…Đő\Țƒl„ï”™VúKPšúA àżÍ·}/ìƒË»~ŚXĆ.n,ëąx~fȚŰxÔO{Ik1ŐY;|țƒWÖ°†rSĂr_1’öÿę àżÍ”·ÿô6Œ0?=cvrWRźŰ<őËȚÒSÿÁlo%ÆĆè«JGu"#ŚŐȆ SĂRo^|ö—ŻRÒŠjxëč·°oțńMcĆÜôœ±.łSłÆźÏߋⓇ1Ć߆‘Ö|tû/ą«ô<ąă7mb uUȆRSĂ3?úáÏ(Ës {žĘƒ=Ûäo€tÊșăLLßXÆÂ1ĆÉÒïÇ0ß]iżY˜‚èd€gk;kžŽÈp=kš25,öá;ßțÖś(ÍSÛę‡Ę»~ż+†b!_ȟ›š3ÖebdÂôIżŹrČ.n,[Äë?Łëߒkô·d@tȘÓ©á&ą<Ÿ"Ă N ~Üœ}_ÿêWžąŒ6­/Ž—‹b!_ȗ~i33H?‘núËjŒŹ‹˖€Æ\wFÛ p»ì"ź_9Æßç>DùÛljc-¶†`5ß ~t‚òűœńÛ7ÏÎßí4ȏGúe…ú…üűüFű><‚čŸ ~? §â"šsńÉBßęŹá¶Ő/Æű[=ÒÈìÙ4Èû/%Ț·†Śó:„4H§üÍąčŸ”#Xàùsłœ•—pŁà4>]šà·Uˆ5 ˜ï€èda ămŹaőlšiÏęŒ27ŹáùŸ?ßóÚŻ_ƒvüj‡±›aïs»šÿ0őWaȘŁ5éè*Kç+Óűty’5 ă“ùAÖĐCęn «gÓ kkÎÒ·ÒdĂ:îŐʓ țÊYÔ„§ öR2Ș.&ąüì1žçGá?}ÔZ!?'§>ĆÒ—ŚČłƒuèo(ÀòôÇû°0ҍ…P Áv,†Ú°<ÂoŸIŸÓqgÓò@ëN›§ü'(Ëskžp·ü™è(čDRŃáŁő„"@?@«8`ú.Ą);ÙÿȚŒ;țœĂ;Qvf/߃7QœŽG˜ûç«È:đ .żÿ2öœˆtrùœ—}𯚿xĆg0Pw3ü†„ê±ÔW†¶ąSC[¶|y+„yjău—xôNՓDä ŚŸê,F}Æ!LÓ*êò#|–îTó őaŽ5=•©žyőC\ç9ژqgśăòțWИ~ŰÄÙü ÍYÇњ} ­™GÈKFˆßłEđ}ôŻ&JóÔÆkSù,¶ Ê{hkX‡“oÎ=ÊŠŒ/ÍQcmŸ±Á:,Sÿ\ŸgP>ŻknùÎą%/ÉԐöȚËšŒpŚ2ń>CÚû/Ł•}mù‰ž‘›ˆ¶œăhË:‚[Iè/?‡'·ny’òŰÆj>â™ÆsY€UŒÔ±âäT[ć…}Ì[_yYő Ć:K–y&Îś–c"PhŸáșüçŃ~ő$šłOàÂ;/ )ó8ő[Rśœˆž±mÉhçou€tœD€úÎœ‹mO}mć=°V_€~ę6Öjvïæ„ô+ïČZ#Ą]Ąö•Ąj,ô•còV1BÍ9è«ICou*Ïąó|G^æ»tÆ |/nŃvùϙțîŠ è­úƒ”—Đ™uTżkžÚhŐ|<Š3@Z-Q^ˉÒW,_úćK«üőTœÿÊÏœĂ3i/Jű_MڍÂÄ]nÍÁĐ”LƒßFÙkËçot|§öbœvą=“7 űʗ‹aÖ<Æ\Oț ïú+ù8ÖdŽEB5Ô'5ôe…r5FŁê’o,±ă ępHßŐXä98Ûíăwt!Šn]%EԖcj)8±EÉ{Xç>›űźv•đ}']Ƙæ8 łôû “=ë©8ËëÍhQb,uE\KżŹú-ȘÁöÉF©?ÂçGă+/_Vqü|7o orú&âBš(ÍS©8ƒèh#ŚȘæ:ܟk­·êsśò!Ùxìkç+Ž ZŁĘX«€Ü»țá2êçyhæòÄÛhšÊZÆvúqčŐ=­V:s«“ +ì|ćllal,çsŹÛ'M”æ© —¶ú5ŸëÉj]ƒÖsbłżăkX_<Ê«ŸŸ«GkÊ7óéÛ>ŽŁuŚPżŹĐűáČSȚőûOńYŻ]ł†K4TËÛęs}ù^‰êž8sd”VÄäˆ,cw3–Vš(ÍS •~Èg±–ó4w-f=țżUŸÙŸÖ%Ÿ/êŰő˜1«ó­Naă”(*Mńźß—ÂkÁw•óąÁŠŰăWÄ|œ›źNY“w-ûMžD†è3ocúf>sÊŻŽqíêX­œęAßIŁßŹ,'ŽÆƒ±œ~ć\ßú^1șœ9Č":Žv­i|ąńÁ’“›ÓÏ{ȘčÒŃÚòăĐúîțòí8ZŽŐ~òŚæ…ă3§>wŸÍ[”·ŰŰöoRIçP?ÿ/jŚeD–(OŽżöÊG™3–ÈșŹĘ”4_ÖbsZŚŰ6?Tœä]?ÇÚ{ÈčZ°ëÆƖ9û[ߌŃX·_ŸrÆ_ĆÖ"ßê7{ž9YŽ‘uŹË!M”æ© %rïÿź[‡hżÍąwTÖĆè1űŚĆ„{Xë'ČŹcPŸŸŚ?qsúùŒ†Jíz†űę욊6ùÆ挍Ąx;ŸŸVǛu1ák„‰Ò<5Uíá~Ÿ™ëČvżMÂëž~țúXcLÆZV ÒDižšÆjpo ­îÖ*ćÿubêf6}ĆÄĘ'f5VÏ}ZƒÛG4ßÆÌ3vőGM;Š+ÒÀu„‰Ò<5Ő>Ë=WÍš/;MíuéVkP^°ÏÚő9'–O4ÏÖÀ˜Ä|ö™čńÖÉ ô„‰Ò<5ŐȚK=…f ŚÒ ô^~^tĘ„]kiÍÈ=#ŽÆ'qv©Ûj&JóÔ4VïęÒí3Wë˜=dŚÀœÉ»(w?4ÆgŸ æbk0VŸO–ș©}ÒDižšÆjîbÿ^Š{ÀùźÛk#8f]ó1}ŠŚĂŒł‡žĆź|ăK„yj«9‹y_€Eš(ÍSÓXÍYéeęœÿ8qïż4Qš§Š±ú~Đ7œù[ÎcÀü-ÉAZ€‰ÒŒŽïjìjû>yPûy:!!áÇ?!ϐŸ’§/ÒƖđ?Sœ™ăČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† Û./…c++d':ACA63C41-62AE-451F-BA69-B732F1BFF96A-7379-00002316C558BA74À œ@#x͘Wp\WÆÄĄ$ÌđÆ 3 <òŻ<2 OđÀ=˜q—±ăč€mlKČâîÈČuɒVœËȊć•%«K»j–d«ìźđń}çÜ»șZœű*OrÆżù—ÓŸÿ-gŻ•ô1mńVÈb-Ql|ZĄXVžŸé'ČóĘe˜ë*ÁëEžĘœƒŐ‰6|ęÉ'Ÿ±iÓŠÇżÀÆ-i[è)Ç껣ž7߇{sÀ›—/ä»ÜéEt¶‘©.,Ž\ĂäőÆ[óY[ɇ”ÿÈőÏw›ëEìvǧ ŃÉV,4b¶«ĄŠ,Ź•b6Xe Ÿș†g~țL^vj6uYYˆđčYkÁB_ &[ xę‹ Üry>U;đòžüËAƒë»Vx}áÆČ^”óą\„Śyìî5`Č-3ŚsțÈPÁČSÔń‰ïĂŸÍûđšYjÄJšóƒ5_Ëă=ÈAd€ÂÔ°:XŠČôwšXÿmŒíya\Țúó[Æș(vqcYĆB}^:K3°8\™î*Œđù5żHšŽ5TšVJČïïgYÿmŹœùÇ7‘ÈȚÍ{1Ú?Šûśî«XyćeĆî?í6Vxó^ÊNțsę՘ –` æk3żŠHžž5T™–û‹ńâłżx…’6TĂÎçv"i–Ęń‡Æș±‹tÊ wŒđ朔œ8„ț6Œ· ·üzÊÎ!6uщÖЀÈh5k(35<ęĂü”Č|Ś°ęÙíŰțŒƒ|"ȉ(ŸˆæÉ&ąńö—€J9ÆűîJûą4ÄŠƒ<[;YĂ5DÇYC©a©ŻßțÖ7żKiŸÚ¶ßoƒŰú»­qŽż7çúČÂÛï”ÊËŠ][ÌëGŚż-ÏèoË>ŽŰL·SĂ Äx>EǚœÊqśÖ|í+_~‚òÚŽŸĐ^.#œ#ërŠe•Ò)ëæ\«Œ|ĄŰ”„i‡0ß[‰ŽBÜȘž€kïćïóbüm65ˆÉ6[Cš–ïż?ș‹@y}ŽȚűÍđČć·[°óùî6zdw<·ĂôčhŒï‡À»‡1?PĆï‡BôU]@kn2î/†űœ1ÈnYęb’żŐăÍŹÁžMóÁüÿRâÇÖđúŻ_ÇÐ!Łh^ í0‡xțÜ(BőE\/<…–oóÛ*̆ÌwRlș‹°†©Ö°v6ĘéÌû2?Ȇçö|ßkżz ~xő—Ż»v=·•úQ fșŠ1Tw =ű`uŹLł†1Ü_f }ÔïÖ°v6­Č†ÉÖl}+}‘|dj•)ûŃűț4\JCęĆTÔ\HF晣<Ϗ üÔk…|/NN}Š„ÿ.Żÿtw)†21ŰTˆ•ÙQ,M `qŒ‹á CX w`eœß|Ó|§=gÓÊPëÎX ü/R–ïÖtțn–gĄ«ô"IGW€6Ž ę ­â é»ˆ–œ4äü{2śżúäڂŠÓ»űì@IÊvf {ÿËžŒw32śŒˆKäòۛ‘sàŻhŒpĘ%§1Ôpwű  7by Ć'G{ìK›(ÍW›jžÈë wȘ‘4!æ _žțLw 3b–V±PŸćs°†öœŁhÏ:‚`~*Âüæ˜ë.Fàœ”PšŻ6UŸÎg± 1ȚC[CNŸ5ïk(6Ÿ4nj”}Ɔ°Bęó}ć<ƒ x]3q3pmù)Š†Œ·_Bőùƒžšu”śń(2öŸ„vöu$ăz^2:rĄ#û0nŠ`°ò,ßôŰ㔶Đ6YśÏ4žËÒ ­bŒő'§ÚȘÏïaȚúÊËȘO(ÖYČÂ3qĄż·ƒEæź§ü:Żœ@kÎqœßęZȎQż%}ϋhăÛQ˜ŠNțVIWá ©żéì[xò‰Ż>Iym”š_żő„šä»9!ęÊ»ŹŐHhW©}uŽ‹•˜ŸY‚pk.ê2Đ_›Îłèߑ—ű.6I&ߋ›Ž=ćgMoŐyôŚŒ‡áú‹èÎ>ąß5_mąæ<îMê VKŒŚ2Jbô˗~ùÒ*?‘Șsÿ@ćÙĘ<“vĄ”ïđ•”m(JȚŠ±ö\Œ^ÍBá±7űm”ƒÉŽțFç#prŠhow`úF!żûò0ƚ'™ë+8î_5ż'[Œ¶hžŽú€±ŽŸŹPźÎhT]ò%v<Ą 뛠K<çzüŽ.ÂÌÍ+€˜ÚrM-…Ç· 8u;ë܃P ß՞RŸï€§ł§łaŽț@QȘoęăUgxęŻ-"FŒ„źš cé—UżE5Ű>ÙőGùühŒbććË*öÎwóú&§o"ź!€‰Ò|”ńȘӈM4s­ZźĂęčVąUŸ»żÿ ô Éz±kŹŸŻ8:FhvcmŹțńJÿúÇ*šŸçĄ™Ëkà”±p”Œíțô=č”=­ U;sk“+ì|ćllal,çsŹÛ'M”櫍UœČú5ŸëÉj]ƒÖsbłżăkxŸćŐOßŐŁ5ć›ùômÇŃșkš_VhüXĆIÿúËOòYŻ_·†K,\ÏÛęs}ù~‰éž8sd”VÔäˆ,cw3–Vš(ÍW —œËg±žó4w=f=țżUŸÙŸÖĆÛsl"fŒĂÚ|«SŰx=ʇËÒüë€ńZđ]ćŒXš*ŸFÔűUq_SÖä]Ë~“'ŃQúÌۘŸƒ™Ïœòkc\»6VkoD(pÂè7k†* ­ń=0¶ŚŻ’ë[ß/F—3GVÄFŚïŁ5O4>TzbcúyO5WúąZ[Ÿ­ïî/ߎŁćXí'}^8>sêsçÛŒEy‹mÿő—Špőóÿąv QAd‰òDûkĄ|Œ9c‰ŹKbìź„ùČ›ÓșÆƱùђÿú9ÖȚCÎŐzü»€]G06¶ÂÙßúfŒÆșęò•3ț¶ùVżÙĂÍÉrŒü˜cm\ ią4_mŽ8™sxßűw„ű:DûmœŁČ.FĄ+}WÌš/;Kí —öŻŐ Œ`Ÿ”‰9'–O4ÏÖÀ˜Ä}ö™č^ëäúÒDiŸšÆjïćŸ"ł†kiP z/?)șîÒź”ŽftDÏ­ń‰Ç.śZ ÒDiŸšÆêœ_ŸUhæjł‡ì:˜3yć> ŰçĆĂčűŒŐ'ä“ć^j`Ÿ4QšŻŠ±š»ÔĂż—épŸ…kÆśú(8fM„ùž>Ɖ0ïìĄgg©§ÀűÒDiŸšÆjÎRwțçi‘&JóŐ4VsVûY?ç–žś_š(ÍWÓX}?èÎü-ç3Àü-ÉAZ€‰ÒüŽïhìçjûyXû>y*))éG?&O“Ÿ§’>[€-)é^éŁÉČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† ê./Sshd':2EBCE85B-E4A7-4CB9-B899-402CA4328A32-7379-00002316C555EE1DÀ Ź@#x͘Wp\WÆEˆCI˜áfxä^ydžà7z2$̄L€žà8‰“ž°lIVÜY–Ł.YÒjŐ«eË+ŻŹUĘ]ő.«ìn ßwÎȚŐJXöU2™äŒó/§}ÿ[Î^+ćmévÉR/-Ql|ZĄXV8Ÿé'Č țJÌś”cîF)ŠZó±6Țo<òđ7wìŰńЗ۾ĆgÚ{œűđN,đÁü]HÎËòæúíEdČK#Ś1qñö"ÖVț1ćæúüÄæû›êút":юć‘fÌöT Ԓ‹”Ą ÌúŠŁ,áSŚđű//ÌËÈĂgECn."|nÖFÛ°šĂD{1Ż)"Ă„Ûź,R§j‡ž?‡Ă9lp|NJd_8±l2Ê%Ł\„Śeô:î 5aąŁ37 ŒțȐŸÊÓÔń‰ïÁg`»,Ì,ë–ĆĄfŹ†Z±0X‡đőBȚƒ|DFȘL kƒšÌz§…đßöÛț§śĂáÍ?żiŹƒb'–Ÿž7VńĘP_2ĘÙXnČż#|țC­ï#j` ŐŠ†Őr€űû9ÀÛkŻęé5܋Œ72ÍB9YőiŒò[Qyê?˜ïŻĆ€Żu—1XŸèŰ5DŹĄÆÔ°Ò_†gžűć ”Ž­^}òUlĆȚ?îE°?ˆôŚÓMì07=gŹpÆÈߊò“G0Ă߆±Îbôy/ą·òZ™â·U˜5 ™ï€Űta “]Źaęlšë.ü˜2·Źá©Ÿ?xéŚ/Á /țêEc·ĂŸ'wQÿêŻĂLO†.Ł·*­ÍâŁŐiÖ0Š‡YC€úÖÏŠ5Ö0ў§o„ȖuÜ­U§DóûgŃt9—2Pw1 ŐgSyžƒśô1k…üdâ9ő)–ț;ŒțÓț 7ć`°„«łA,O`iŹKa–BĘXwauŒß|Ó|§“Ίե֝œHùP–ëÖránysŃSq‰dĄÇCëɂŸV±Ïô]B[~&òÿœ9_ü? ŽìDՙ}|öą<}JŽ2śÏwđy\yûYäì—É•·žEțĄżąùâaűËÏ`šé æű  7ce  ]e§‚>űć”æȘM6]âuĐ;ŐLZ‹#_8țŒżÍ9‡1K«XšOȏò9X©çêÁxg!”Yžyő]\ç9ښs 5gàʁçŃzùˆ‰óßùÚóŽŁ3?čÇà+Ê@˜ßóț2xȚûW„čj“Y|;ă=Ž5l"žo/<Æʌ/Í1cmŸ±Ą&ŹRÿBÀË3š˜Ś5·&șŠù]Ï©}˜€ê.ÆôÍ~śb”5O0(>á^-ż'ڌ¶hžú€±ŸŹPźÁhT]ò%v<Ą 뛠Ë<çû<üŽ.ĆÌ­«€ŒÚ L-%'vą,cë܏PßŐȚ Ÿï€·ł§łažț@i†kęc5gyęŻ-"FŒ„źšcé—UżE5Ű>ÙőGùühŒbććË*Nžïä ôMNßD\CH„čjc5goćZő\‡ûs­ÍV}ÎțBțĘĐ3$›Œ]că|ĆŃQBkŽkcőU»Ś?ZEę<Í\^ƒd ŚYËŰîO?)·Ÿ§ő#ĄÚűÜ:Æ$dÇ ;_9[ËùëôI„čjŁU§­~ÍçzČZŚ őâ±Ù?îkD_2Ê«ŸŸŁGkÊ7óéÛ>ŽŁuÖPżŹĐűŃȘSîő{OńYoÜ°†C,\›ÈÛęs}ùn‰éžÄçÈj­šÉYÆÎf,­4Qš«ź|—Ïb#çiîFÌzü«|ł?­Cr_,n7cÆÄYŸou oDùpeŠ{ęžL^ Ÿ«œ Ő$ֈż&áëĘttʚŒcÙoò$€ÏŒéÇ1ó™S~}ŒcŚÇjííèyNęfÍP5Ą5~Œíő«æúÖw‹ŃŸ#+bÁûhMăUœÜž~ȚS͕ŸšÖ–Ÿ„Öwö—oÇŃrŹö“ż1/â>sêsæÛŒEy‹mÿ6őW€sőóÿąv QEd‰òDûkĄ|Œ9c‰ŹĂæŰYKóe-6§uM`óÁòtśú9ÖȚCÎŐzü»€]G06¶*Ÿżő͍uúć+güul-ò­~ł‡““ćù±ž”q5€‰Ò\”`YçđŸńïJ‰uˆöÛ.zGeŒƒwSLž‡”^"Ë:†ć{yęÓ¶§ŸÏhdšÒźgHȚÏźij“o,aÎŰŠŚ±óé›qI±a}ŒY7>&2d­4Qš«Š±Ș=2è1s6î·Mx7ÏßkŒ©ĂXËZ\ƒ4Qš«Š±Z'Ò_A«{ ”*ùĘC˜č™O_1qöIXŐ3GŸÖàôÍ·1óŒę1'ăŒ©Äš4p]ią4WMc”ÏjàȘYCóeg©œéòÁő”ìłvs.Ë'šgk`L>ûÌÜdÏ ô„‰Ò\5ŐȚ+Rł†kiP z/?)șîÒź”ŽftDÏ­ńI’]鳀‰Ò\5Ő{żr»ÄÌŐ:fÙ 0gòÊĘ ńŰçĆĂčÄŒŐ'䓕>j`Ÿ4Qš«Š±š»ÜËż—épŸ…k&öÚ ŽÙ`7Ă|BŸâÍ0ßCÏÎro±ń„‰Ò\5ŐœeŃi‘&JsŐ4VsÖúY?çž8ś_š(ÍUÓX}?èÎü-çsÀü-)ŽŽH„čißŐŰ/"Ôö}rżöòhJJʏăü„'A>7ă­XîŻĆT[Ż ‚#ZŻ,SÂçjG^8‡Ł?jp|NJX_8±l,ÊĆą\Śmü:î 7bȘœs7òțà°ŸŠÓ#”ń™ïĂĄça',Í-»–‡›°îoÁÒP-Ś xò­45l •Ł"ófÀ;o‰Ï$ÂáÍżœiŹƒb'^œ]4ŸP|7ÔKWyVF0ŚSQ>ÿț–ôŚł†*SĂú`Ręë àż”Śțú¶CzÓȚHƒĐÿ©X€'Š›üvTœz‹5˜ö•a°ö2†êČšž†` 5T›ÖJńì“ży‘’vTÁ§à^ìÿË~,Ì.`l` ©Ż§š\|,_v;ÊҏaŽż Eèó^DoĆy„§o 4ÙÊ«a Š†Ç~öÓ_Q–ëö=čûžˆ ?Ž…™œ8pÂűB±Źs–æ—Ź/8Š,Múœç»+í7K2žőńlíb Śob ”Š†ŐțRüàûßû„čj{ÿŒbϟöDQ,äKŻăË:±PNúeŰÁ‰eKyętęÛ ŒțöܓÏőDjž‰0ϧĐxs€/îÜŸŠoóSȚ}›ÖÚËA±ïè•/«xŽÉû“MN±ŹúdœX¶<ă–ú*1ÙYŒÛ•qęƒdț>"ÌßfSƒ˜j·5űëűNđûŁ§”wßçèŐ?ŒŠXvÿq·AŸ˜Ÿ™7ÖAń»ûȚ55Œö"io’Éo‡çœăXŹæśC1ú«/ą-?­űùœ1Än[ębŠżŐ-ŹÁžMKŸÂÿQâ¶5ŒòûWp?€AÈß)šçÉ8Ž•až?7K0Ps 7ŠOăă”~[XĂ°ùN ÏvÖ0ĘÉ6ÏŠ…ź‚O(óž5<ęë§û_țĘËpĂKż}É۝pđ©=ÔŒúk1Ś]ŠáúËè­ÌÂÇóűx}–5ŒăŁćÖĐOęN ›gÓk˜jËŐ·ÒäžuÜ­U„FÓgŃx9 —ÒP{1Ug“yž'Á{:ÉZ!?–HN}Š„ÿŻÿlO9Fł1Ô\Œőù1ŹNbeą+Vü]X tb}‚ß|ł|§cΊőáj֝”LùP–ëÖ|ánysĐ]~‰dąÛCëɄŸV±Ïô]Bk^òț»ه_úùÇvŁòÌAŸûQ–șĆǙûś‹È=üźŒęČŸĆerć­çwähșx=eg0Üx ü†š°6X‰ÎÒSc>űő]”æȘM7^âuĐ;ŐDšŽ _8ț\OšČbžV±PŸâs°6ZÇ3ԃɎôŚdâæŐśpçhKvȘÏ•C/ ćò1çœóOŽćž@G^2:r’à+LC€ß‹=„đŒÿŸVJsŐŠ2ù,¶#Ì{hkˆ#’o+Hb „Ɨ氱¶ÏX#Ö©©ßË3šˆŚ5·ëł0P—Éłè<ߑçù.1űH6ߋ[ŽœȚsŠżŻújßÇHĂ%ôä&éwÍU›Źœ€§tH«%Ìk"aúŠćKż|i•Oőù7PuîužIQÎwűjê^”€ìÁxG>Æźć űÄ«ü6ÊĂTgŁ á9uÓŽ3]E˜œYÌłæ)æú‹NșŚ_ĂïÄ©VŁ-š§>iŹ§/+”«7U—|c‰Oèú&šĂ*ÏÁĆ>żŁK0wë*)„¶|SKńÉĘ(MÛÇ:áoć»Ú[Îśô–ažăt6,Ò,Is­ąú,Żÿ5ŁE„‰±Ôr`,ęČê·šÛ'ŠțŸWŹŒ|YĆ±óŒŸÉ雈kią4Wmąú “-\«ŽëpźoŐçì/äß =CȱŰ5¶ÎW'ŽF»±6VÿD•{ęă•ÔÏóĐÌć5ˆ”á@­”Œíțôcr›{Z?èŻ‰Ì­eLüvŹ°ó•ł±…±±œÏ±NŸ4Qš«6^yÚêŚ|ź'«u Z/›ę#ŸöˆöĆąŒúé;zŽŠ|3ŸŸíă8Zg őË Ż<ć^żśŸő†-k8„5ŃŒĘŸ1Ś—ï–°îIdŽŹÖ ™‘eììaÆÒJ„čjŠśű,6pžænĆŹÇÿ·Ê7ûÓ:Äö…#63&Âæ|«SŰx+Ê*2ÜëśdđZđ]ćŒ°ż:șFÈűŐQ_ïŠŁSÖäË~“'Ą1úÌۘ~3Ÿ9ć7Ç8vsŹÖȚ‰~ż'Ęè7kú«­ńc`lŻ_Ś·Ÿ[ŒźÈYÛșÖ4>ŃxyúÎôóžjźô…Ž¶üŽŸłż|;Ž–c”Ÿü­yń™SŸ3ßæ-Ê[llûwšż<•sšŸÿ”kˆJ"K”'Ú_ûćĂÌKdâcg-͗”ۜÖ56ŠÍ•„șŚÏ±örźÖăßì:‚±±•‘ę­oÆhŹÓ/_9ăobk‘oő›=œœ,ÇÈGŹ« M”æȘ•Špïÿź]‡hżąwTÖÁè1xăbÂ=ŹőYÖ1"ßËëŸČ3ę|FƒĂv=Cì~vMS›|c sÆFQŒ‰Oߌ‹‰ ›ăÍș‘1Áak„‰Ò\5UíÁ!™ë°użÂë??>ÖS‡±–ˆią4WMc”Np œVś@kUđÿșG0w3Ÿbâ씫gŽ>­Áé#šocæ;úĂ&ŽĆS iàșÒDiźšÆjŸőț«f ͗§öÆˇ7kP^°ÏÚű\$–O4ÏÖÀ˜D}ö™č±6’7èK„čj«œŚúKÌź!€A5èœüŹèșK»ÖҚĄQ=#ŽÆ'1v­Ïj&JsŐ4VïęÚíb3Wë˜=d·ÀœÉ;(·ă±Ï‹‰sŃ5«OÈ'k}ÔÀ>ią4WMc5w”—/Ó=à| ŚŒîu/8f‹‡ùš>Ćń0ÙCÏÎjo‘ń„‰Ò\5ŐœŐžÂŻÒ"M”æȘiŹæl °~Îÿ2qîż4Qš«Š±ú~Đ7œù[Η€ù[Ri‘&JsÓ~š±_EšíÇä~í'äф„„ŸGűyŒü’<šđć"ml ÿvœ“Č streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† đ./ïpyd':E33C04F3-412A-4A76-A66D-D95AF23D97D5-7379-00002316C55048B9À Č@#x͘WPœŚƉc9ĆÎLȚò’™Lò˜Çä5N<™<%yK·'v2ŽÇvâÄEedYÁ¶JœHŠ$@u#„LKïQ„èb—&@QvŚ99çȚœË‚U>ìŃŰwô›číüżrś śi Ś+0Ozh‰băÓ ĆČÂùŠŸÈÎu—a¶«·źáfsVÆÛđ'ÿæ–-[û·xšmŸ§ßÁGs}űhö.Äçć ùŽ[œÏô 4م…—1qƇ±Ö|ÖVČJù]ÿ\·‘Ù^Dnv|ÚžhĆâFÌt•"Д…•ĄRÌű Â,á3Śđô/žÎËNÉÆĂą.+ !>7+Ł-˜ï«ÁDkŻBĂ>[.ÌSÂgjû^ȚÇțżî78ßYï ËÆŁ\<ʅxę—F/ăöP&Úò1}%Śè ùà/;>LŸú>ìyq6óCX4cn°ÁËyŒ9Ęš05Ź –ą,ęœ&À›o‰Ï'Âńö_Ț6ÖĄŰábY‡â»ĄŸx:K3°0\éî*ÜàóhțĄ@kš45,” yÏ?N±țÛ\{ëOoá~ŹźźÆ˜›™Cڞ4“wțî?ï6±úeïFYÚ1Û_I jÎc°6á±KëYC•©a©ż/<óËW(iS5Œù웞;ÿžÓè’ïngSßI5cd+7JŽÀ4ÆÚ Đ[~=e§™Œ‚đx kh@h€š5”™žúŃFYžkŰńÌìx:Šü HżŹĂĆ)‰)˜›ž3ód+ÿ Ű_’"ęćć»+íW‹R™òólíd —md 5Š†ĆŸb|çÛßú„yjÛÿ°bÛï·ĆP,äŻȚYùČ.łÓłHȚlŹbqžX¶˜Śÿ–ź[žŃߖ}‘éîh WáùmŠÖPŽÛŚ/âë_ęÊ㔶ÀŠő…ör(òŐ€YH§ôȘO$œ•„…[ Æ*Öx‡‹eKS`ź·ă…ž^q—?<ÌßçDűÛljm¶†@-ß ~tòűœńÛ7ÏÖßm5ÈÒ-ú…|Ő${?|ïÄÜ@ż ŃWu­čIűx!ÀïAÖpĘêü­kf ölšóçÿï[Ăëżyś#^żâxf§fqäÍ#ÆżšçK=ˆ…!ž?W‹Đ_}W ăÎÒM~[YÐùNŠLuÖ0ÙÁÖΊ[y«”yÏžûùs}Żęú5xáŐ_œjìfŰőì6ê?@ę5˜î*ÆPĘyôTdàÎÊ î,O±†Q|lÄÒ@:ŠÓF}ôË[(ÍS›l8Çë wȘ‘4!EŸpțtw 3śc†V±PŸæs°tŁ–gšăíyè«NÇՋïă2ÏŃæÌCš:čöŒŒæóLœóȚßњ}í9‡ŃžuțüùÍ1Û] ßÿnĄ4OmČ>Ïb"Œ‡¶† Dó­y‡XC±ń„9bŹí36ЀeêŸë+çTÀ뚉kŸ“hËO65dŒóȘÏìÇ„ŹĂŒ‡‘ńîKhg_GAźä%Ą#ś:ČâZa2+Oá±->FyluđLăč, Ò*ÆX‰æT[ő™Dæ­ŻŒŹú„b%Ë<çû+qÓ_dŸázÊOŁóâ1ŽæƙĘÏŁ%ëő[Ò_@ÏێÂtò·ÚOș ÁOęM§ȚƏí Ê{`Ż=KęúmŹ'ÔEŸË éWȚ±V#Ą]Ąö•‘Z, TbêZ ‚­čšË@m:ÏąÓ|G^â»tÂà'™|/źŃö”Ÿ2ęœUgĐ_ó†ëÏĄ;û~Ś<”ńš3űhBg€ŽZ"Œ–aĄŻXŸô˗Vù©:ęOTžÚÍ3iJù_LȚŽą€mmÏĆÈ„,yƒßF9˜è(àot>|i»0I{łłSW ùʗ‡QÖ<Á\_ÁQïú«ù8ŃbŽ…ƒuÔ'uôe…ruFŁê’o,±ă ęPPß”Xä98ÛëăwtŠŻ]$ĆԖkj)<șĆ);Xg"-|W{JùŸ“žÌpœÎ†YúE)žőUäőżdŽˆ1–șÂÆÒ/«~‹j°}ČêóùŃxĆÊ˗U?ßć ôMNßD\CH„yjcU'oæZ”\‡ûs­V}n!ÿnè’Çź±~Ÿâđ(Ą5ڍ”±úÇ*œë­ ~ž‡f.ŻAŒkŹelś§—[ÛÓúĄ@utn c°c…Żœ-Œć|Žu}ÒDižÚhĆq«_ó螬Ö5hœhlöúÚ#֏òê§ïôhMùf>}ÛÇqŽn őË ­Hóźż<Ïzęș5‘`u,ośgÌőć{%ą{#«”Â&Gd»=ÌXZią4O-Xö>ŸĆzÎÓÜő˜őűÿVùfZG|_$j7bÆDY›ou ŻGù`YȘwęŸT^ Ÿ«œ TĆÖż*æëĘt:eMȚYö›< ĐgȚÆôŁ˜ùÌ)ż6ÆÙ”±Z{3úŸcFżY3PIhc{ę*čŸőœbtEçȊÈÈú}ŽŠń‰ÆJmN?ï©æJ_XkˏCë»ęćÛqŽ«ęäŻÏ‹šÏœúÜ|›·(o±±í߀țÒdÎĄ~ț_Ôź!*ˆ,Qžhí#”0g,‘ulŒĘZš/k±9­kl ›)IöźŸcí=ä\­Çż Űucc+ąû[ߌŃXŚ/_9ăŻak‘oő›=\N–cäGąÖƕ&JóÔFŠ“8‡śWŠ­CŽßfŃ;*ë0z ćbÂ=Ź-'ČŹcX~9ŻÒæôó •Ùő ńûÙ5Mmò%ÌCńv>}3..6Ź7ëFDŽ†Ź•&JóÔ4V”‡}fźcę~›„Śqăü±Æ˜:Œ”ŹD5H„yj«uBę„ŽșZ«ŒÿŚĘ‡é«9ô·OÌjŹž9úŽŚG4ßÆÌ3vú#&ŽÇ)Ê4p]ią4OMc”ÏrßEł†æËÎP{Ăùœk5(/ŰgíÆ\4–O4ÏÖÀ˜Ä|ö™čń6š7èK„yj«œ—úŠÌź!€A5èœüŽèșK»ÖҚázFhOâìRŻŐ M”æ©iŹȚû„ë…fźÖ1{Èźƒ9“w(w?4ÆgŸ æbk0VŸO–z©}ÒDižšÆjîbÿ^Š{ÀùźÛë^pÌ:»æcúo„ùèzv{ Œ/M”æ©iŹæ,vç!ią4OMc5g„Ÿősț牻ÿÒDižšÆêûAßpæo9ŸæoIQ€Eš(ÍKûźÆ~Ą¶ï“”'~ć'ä)òSòdÂ狮±%$üfâŁÔČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† Ę./œpld':ED0B4412-A7A6-4C29-9A10-D44162B75FFF-7379-00002316C54D92D2À Ÿ@#x͘WpTŚÆœb2“·Œd&“<æ1y̓O&OÉCȚÒńÄÎŒă±8Á6elì`›'@IÈt,$ș„€ŐȘW„ b…„:ÚUïBew]òćûÎčw”R\™ađ~ó/§}ÿ[Î^”pŸ¶p» ódĄ‹–(6>­P,+\ßôÙčÎRÌvcæF!&ł±2ڂol{ê›[·n}òKlÜ⑶ù.?>č;„çzđńì=ˆÏËò]fș™îBxŒ wźcì†#ÍyŹ­ű3Êäúç:}ˆÎv#:ŃöŽ"2֌Ć;ő˜î(A°!+%˜äGXÂCŚ°ęÛsł’łđššÉÌD˜ÏÍÊpæ{Ș0֜Ïë_ˆđ ĄŠËó”đPíà+árè/‡ źïZï 7–Gčx” óú/ _Çʁ:Œ”äaêFŽŃđ!Pzz2>ś}ŰÿÒ~< 3 ÆȚùz,1Ś_…Đő\Țƒl„ï”™VúKPšúA àżÍ·}/ìƒË»~ŚXĆ.n,ëąx~fȚŰxÔO{Ik1ŐY;|țƒWÖ°†rSĂr_1’öÿę àżÍ”·ÿô6Œ0?=cvrWRźŰ<őËȚÒSÿÁlo%ÆĆè«JGu"#ŚŐȆ SĂRo^|ö—ŻRÒŠjxëč·°oțńMcĆÜôœ±.łSłÆźÏߋⓇ1Ć߆‘Ö|tû/ą«ô<ąă7mb uUȆRSĂ3?úáÏ(Ës {žĘƒ=Ûäo€tÊșăLLßXÆÂ1ĆÉÒïÇ0ß]iżY˜‚èd€gk;kžŽÈp=kš25,öá;ßțÖś(ÍSÛę‡Ę»~ż+†b!_ȟ›š3ÖebdÂôIżŹrČ.n,[Äë?Łëߒkô·d@tȘÓ©á&ą<Ÿ"Ă N ~Üœ}_ÿêWžąŒ6­/Ž—‹b!_ȗ~i33H?‘núËjŒŹ‹˖€Æ\wFÛ p»ì"ź_9Æßç>DùÛljc-¶†`5ß ~t‚òűœńÛ7ÏÎßí4ȏGúe…ú…üűüFű><‚čŸ ~? §â"šsńÉBßęŹá¶Ő/Æű[=ÒÈìÙ4Èû/%Ț·†Śó:„4H§üÍąčŸ”#Xàùsłœ•—pŁà4>]šà·Uˆ5 ˜ï€èda ămŹaőlšiÏęŒ27ŹáùŸ?ßóÚŻ_ƒvüj‡±›aïs»šÿ0őWaȘŁ5éè*Kç+Óűty’5 ă“ùAÖĐCęn «gÓ kkÎÒ·ÒdĂ:îŐʓ țÊYÔ„§ öR2Ș.&ąüì1žçGá?}ÔZ!?'§>ĆÒ—ŚČłƒuèo(ÀòôÇû°0ҍ…P Áv,†Ú°<ÂoŸIŸÓqgÓò@ëN›§ü'(Ëskžp·ü™è(čDRŃáŁő„"@?@«8`ú.Ą);ÙÿȚŒ;țœĂ;Qvf/߃7QœŽG˜ûç«È:đ .żÿ2öœˆtrùœ—}𯚿xĆg0Pw3ü†„ê±ÔW†¶ąSC[¶|y+„yjău—xôNՓDä ŚŸê,F}Æ!LÓ*êò#|–îTó őaŽ5=•©žyőC\ç9ژqgśăòțWИ~ŰÄÙü ÍYÇњ} ­™GÈKFˆßłEđ}ôŻ&JóÔÆkSù,¶ Ê{hkX‡“oÎ=ÊŠŒ/ÍQcmŸ±Á:,Sÿ\ŸgP>ŻknùÎą%/ÉԐöȚËšŒpŚ2ń>CÚû/Ł•}mù‰ž‘›ˆ¶œăhË:‚[Iè/?‡'·ny’òŰÆj>â™ÆsY€UŒÔ±âäT[ć…}Ì[_yYő Ć:K–y&Îś–c"PhŸáșüçŃ~ő$šłOàÂ;/ )ó8ő[Rśœˆž±mÉhçou€tœD€úÎœ‹mO}mć=°V_€~ę6Öjvïæ„ô+ïČZ#Ą]Ąö•Ąj,ô•còV1BÍ9è«ICou*Ïąó|G^æ»tÆ |/nŃvùϙțîŠ è­úƒ”—Đ™uTżkžÚhŐ|<Š3@Z-Q^ˉÒW,_úćK«üőTœÿÊÏœĂ3i/Jű_MڍÂÄ]nÍÁĐ”LƒßFÙkËçot|§öbœvą=“7 űʗ‹aÖ<Æ\Oț ïú+ù8ÖdŽEB5Ô'5ôe…r5FŁê’o,±ă ępHßŐXä98Ûíăwt!Šn]%EԖcj)8±EÉ{Xç>›űźv•đ}']Ƙæ8 łôû “=ë©8ËëÍhQb,uE\KżŹú-ȘÁöÉF©?ÂçGă+/_Vqü|7o orú&âBš(ÍS©8ƒèh#ŚȘæ:ܟk­·êsśò!Ùxìkç+Ž ZŁĘX«€Ü»țá2êçyhæòÄÛhšÊZÆvúqčŐ=­V:s«“ +ì|ćllal,çsŹÛ'M”æ© —¶ú5ŸëÉj]ƒÖsbłżăkX_<Ê«ŸŸ«GkÊ7óéÛ>ŽŁuŚPżŹĐűáČSȚőûOńYŻ]ł†K4TËÛęs}ù^‰êž8sd”VÄäˆ,cw3–Vš(ÍS •~Èg±–ó4w-f=țżUŸÙŸÖ%Ÿ/êŰő˜1«ó­Naă”(*Mńźß—ÂkÁw•óąÁŠŰăWÄ|œ›źNY“w-ûMžD†è3ocúf>sÊŻŽqíêX­œęAßIŁßŹ,'ŽÆƒ±œ~ć\ßú^1șœ9Č":Žv­i|ąńÁ’“›ÓÏ{ȘčÒŃÚòăĐúîțòí8ZŽŐ~òŚæ…ă3§>wŸÍ[”·ŰŰöoRIçP?ÿ/jŚeD–(OŽżöÊG™3–ÈșŹĘ”4_ÖbsZŚŰ6?Tœä]?ÇÚ{ÈčZ°ëÆƖ9û[ߌŃX·_ŸrÆ_ĆÖ"ßê7{ž9YŽ‘uŹË!M”æ© %rïÿź[‡hżÍąwTÖĆè1űŚĆ„{Xë'ČŹcPŸŸŚ?qsúùŒ†Jíz†űę욊6ùÆ挍Ąx;ŸŸVǛu1ák„‰Ò<5Uíá~Ÿ™ëČvżMÂëž~țúXcLÆZV ÒDižšÆjpo ­îÖ*ćÿubêf6}ĆÄĘ'f5VÏ}ZƒÛG4ßÆÌ3vőGM;Š+ÒÀu„‰Ò<5Ő>Ë=WÍš/;MíuéVkP^°ÏÚő9'–O4ÏÖÀ˜Ä|ö™čńÖÉ ô„‰Ò<5ŐȚK=…f ŚÒ ô^~^tĘ„]kiÍÈ=#ŽÆ'qv©Ûj&JóÔ4VïęÒí3Wë˜=dŚÀœÉ»(w?4ÆgŸ æbk0VŸO–ș©}ÒDižšÆjîbÿ^Š{ÀùźÛk#8f]ó1}ŠŚĂŒł‡žĆź|ăK„yj«9‹y_€Eš(ÍSÓXÍYéeęœÿ8qïż4Qš§Š±ú~Đ7œù[ÎcÀü-ÉAZ€‰ÒŒŽïjìjû>yPûy:!!áÇ?!ϐŸ’§/ÒƖđ?Sœ™ăČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† R./Ycssd':E5A8CC16-4FF3-4C69-99B6-A8FB275E098C-7379-00002316C54AC95BÀ @#x͘YP[çÇi§KҙŸő„3ö±íkÒf:}ï‹'}JìÆIëșIŠnÜŠ3‰pŒĆ6¶c6`bƒÙ±Iì«–ƒBd›]R–žțÿçȚ+ź©—KSOò ż9ËwŸïțÏœWWWä6ÉęQ·Üź“»œ•Č17$?xéĆî۱ă…oaàÏt,…šćó•ùìÁ„|vÿŰóô }‹{ă’N†$5?*ËÓ’öH|°œčż„ügźÿAĐ#™ûă’čëÿ ܔtbPV§»%9Ú(ў Ù7J2P›F _臝;wVËłąÙU*)Ü7łęČ4á“Ä`-Ν€"‰ő__‚„Ż4Ț{ï=±8pà€bù–%vŸX1­æì0—Âù_›•p—$†jdqžJő§Â 4]Š@Æÿ|öïß/Ϛ„H—ŹG{a;eaŽ Ś RRÓ-ÚĂÆTŁ4•íAűÛțxçwÄâĘwßUkÁŰŠi-? ÎÙčÙR"ËОóJüfD{Ë%í@­ÚĂú€[òí+BűÛȚŰ·oŸŰ9vì˜D"I&“eüš›6ĐCbđߕžíăQŁńââ«Ÿ ^|ȚZqÏ6_;)đ<ϓúâ<ĂúvÌçSÿ ÎÿbÈę•2Őă’ő䌬ÎOÊr|\–cYŽŽÈjÌ/ëqŒó-à3m{6­‡Û$ÜQ¶ùÏA–ăŃYzTFŒŚdž„\‘áVŰÖ+â‡ï‡eìŚ9 ± cÖÄwșËe-‚ój’ÙÁjńW‘ž«G„óÊń_á‡â+8(—KWIž \?!Aw„»źË=ŒĂ§cĘČ6Ù"ț†‹3Ï?ÿíæhÌw]ĆyàgȘôHƄ>yŰï†OèúiÜkÓíx†zdÄ}IJsߖ[őŸÈźk/źiwÙqpLz?=źń@Ć)ŒqZnV~,7+NJ æœÄđÎq?Ű ž’ú!Íјï,Ćœ8$\CŁ‡-ŰóŠOÍF/V Ćûô?˜h–êóÿ’†KÊmOĄ Őä=”Ÿ’>Rń±ôCó@ćč‰9íYź>‹ëuZü7NÈmWŸL”É ;žòž:%xŠáčL ÔGâ]è˜9öŠ>°|ZÎÆ|–Źă™žpÛ-§ÿ±[‚ž§B͗e€țŒ Bk?uWœ†~ƒ<_‡€ßuNFđ]ŁźópćKOŃòҋß{ òž:æڋĄŸßšMè[9œÍìŽoÌŽKOí9)=ń7‰ Vá=ąLâYtYFq-F=JÜ6 5éüx>CŸ‰t^•à“ü^s4æ|WäłŸÔjÁčLƒ |ÆvŸZW­Šœ55ô_;}@pß/ŽÖ㻏N"œŚeŠŻBf‡Ș@„$ü”xÇš­‘ypw€VnčđÎ]Ï}•æ'jÏ8ŚïĆ{bą_ő€cȘ%3ÛŸ–0G:eÇr”!śEłGæüTŹ]fęŐréđ>™Ô)‹·ë„àÈ>);č_ÆŒĆűmße·đwËęPŁro „Ü’D>dȚ-“uç돷âüś©’jĄ+m’ÄžžÒ<čpđÏâ+?)«S­šCošÓZ„]Œx&z1ϘyźôWȍsïëZÎq/æužÀŚzŸaBMæhÄÛ $3Ś‹œÚ±O;,ś3l2Ô Ç䱩?ŽóÏ<gÔlȂž óțŠš‰œnąłLźžú»îć-?ßi šga:îouź¶úń<Ô”8Ž+űéź9«Çâę2‡ëÎ<ÉÄ|†Eíæ1Û%ĐzY*òß7śđaD}đŁÖÌłÎêƒçdÎì—”F îCh‚4Gc¶ć’ĄŸë±?mvÿ’<y\”„>ŽĄ:›đĄ6Gléážô5Oàó|}[Àł^çMX?ÛrŃčțf|ńÙŽï‘ ÖëœÌęyœ!ś'šOÇŒș:ê–Ćïőáj­]™lÒXśB-k2ˆ Ę^܏›ûzJs±ź yÖpž”°ÔiŽFŹ Ú Ÿûoezș«ÏèńŰGś%óD…ߎô}ĐD]ôíh `_œç>ŒŠsĐmÍm…ùXÓçú=p~đ9ĂșLŽ-»GZę6őW&=ÙăóȚšó›Ç‡~öÈȚx.Ö!oìÓŠ=s«àCŐÍüfeZÆÄÛŃőœWęșgßKŰĂđm ΀dЅó—+–BÍêăœoŐYVőÀČ>ÒwM}‹ÌÌĂÇáȚêź‹6žßž~Üs\«úč7}ÆțF^}­ƒEŽÚÇùĆ8›'ŠçT3Ź‘70òĈùmêoÌÇèÇoQcÒhó&<a>ƒ8Òś)ôÿSc k~Û^YÌöP›ĆÈÏžóëG­q ±–ûáÿÆ>±ZbóYƒÚ•;fŒ9æÔßÄè…ŸaőVŽ5ô3Š5âVĄ&Hs4fÎb źțŻ”ʇĐ'vߎ=OŸĐ'v_iŽ6ŹšÌŃü_ˆńŒûìöôăM…›ŒęìŁ˜>öÔȚè«È©ÍÂێ™Ó:bÆÊŠŻûš5©°a© Ò ÖȶԔGŚț_ày€}Zíj 6L ÔiŽkčOŠśò4Żś‚”í«XqÖąuú°Š5gĄ1òôM2Ûaž¶I6šûR€9ŹćqÖ'êuź§Ő{–sz æ‰æÀć̘>±|Z;Ìq­Ęšy՟š ÍŃ`-œ6Q§{(ŰC±|»%ôÉVßsbšśŹúÀfŚÆ ÔiŽkyźŚÆ\ș–ûè1h9Í[0ś$Xă1î rÙ=sŽĐkăЀ9j‚4Gƒ”\»ÂÿËx °Ț{fő8PóĘ òY}Œ·‚Œy Ț;«!ü>‚OMæh°–kVƒ5ßš…š ÍŃ`-ŚlÜAÿXÿub]j‚4Gƒ”|à;œț/çk@ÿ—dB-ÔiNÆOYûMÚ~ž6~^ÎÉÉù”ÉoÀ+à·à术jĂÈÉùÄÇČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F††›0/ÿÿÿÿ'htmld':025399F3-BC6B-4021-83FF-D387659B52E7-7379-00002316C5480746À[@#x͙ip›Śu†ŐÔrÓÚMĘIfú§Nûł?ڎ“xäÄ”%Y¶›vÒIÒ6?œ™&i«&±­ŰZŹĆ”lI€dî"Ć})î$H€žoâî ž/ (’àN‚ „Œ}Ï!ĄŽĂéÄΟs.>Üć9ś;ś~śű`kCfŹRkƒô”|Vez‘|/ò”Őś”ű•#–ûôptépŻ„Ûsű㧟zæàÁƒOțCüVmuЄÖ§°»bĆîò'Èûș”ERöÈ1Œ„A8çû°6Ù{W%líZÆŠ@üß:ÿÊ@%\ËĂpĘłü?ԉ{;6&›°ÔgÀts!¶Ç Xê-Ęażq 1_„ÏKNæÍöl+V­”°·—rțupNTbŠőÎ*Q~#ûZG4>/99ÿ›łmXo„œC‹Ć.âwŽWąŚ˜:AœÏ|Ÿv7Țż_bâ}‘˜űęZhÄÖt VÆj1ÓVÂ{P ç€YĆ°=f€1;Ź™đÏwûjSŒ%&~żÄÄû"1ńûŐiÎÂÚDȘ1Ù\ˆé–8§ëC•ŠakTűÀ3é €ŸÙŸ6Ă[bŻtgÂæZgÉ]ö¶OȘ#&ečæù^ü~é2±5†gÌțđ–۱¶TU‰y{‘˜§Ž˜x‘˜·ß/í­`ò›0Ë”+ì=ș$žzč·v3†6ìÌ61†ZÆ”ùçöŚDü”&ęzKLŒGbȚ^$&^$&^$æíś«„óïùï(QüE±p-ìĆĐś§ÙæœLX*Ç}ùž"æcíO*/Ă[bâ=óö"1ń"1ń"1oż_„é!X6cÎR†!s&Ú ąù|…‹ÏfƒÈȚáŽașŽk‚珈ùŰ<úŠá}xKLŒGb/æ)‹‰‰‰yûęÊžü?è»}=țhż€–Ü|Ž6ÍóÆcró‹ì|VÛZƒ{oZéŐțŠšŸĂWô—đy©Àÿç˜Í莑Û =ö<šÓźățæ=ž­fĂž:'čú(Æ0oa ö&GwÉâ~,éśó’&èea˜+ „5ă*úŠăp{ ś·Ă,>Z` Vò{bxŽ7m3{{‘œ•ŸD},Ž_g†”kš-IB Ś[s֔úŹpîçĄ(Ï U^w;čAo#çƒÿÆé0?DłzA'Q":Mđ;p”G`Ÿ$cč3eaóȚ–mĂX˜î‡cŽ +ăۘ±`ËÆ3ߌŽŚȚŽ5^ńúÜUâ‰X>[CvșkòŃĆ5ŚeÎ@W}U,,[èćsUÂEhŁÏăőŒŒ–v‡“üńê‡żàç(ŽŠ^C+s„?' K扰G`»ŠòĂ–ű^ ;‡WÒbńʏ>‹sä7ê—H ~úÀèА›ńvóYĘKő•%ą—üÍéŚđôSű4ń>Őæê2É/ÏÆÊÍ-Ú°Vb0ÿC|§:MÍę·êópš”ÿÒ?‰ł#ńfu șjÔÜ?Ű^#ÿ4Ÿ­ęXȘ-ÀŒ& Öô+ˆŽ»„r’pìâëűŚś_Ǐ‚ŽăDđqœI< cÀqt0‡Mé4ßÆpuFjł0ѐƒą›ò\óÉæj3°k—=@űĘrq_¶ŚŠ"Šç°Ł•Ąx±*Ï7hpšź?È»ûç}żr9ń`g‹1l`wÉÆ=€Ë-„°—'a*7‡’ƒń‘§‘‘†üÌ@ǜF(Ûÿžđ24©çі~śșK±ĐSÆs_ fÛ5°[Ž°–ÆúÎ_ĂsąœUqïÌÔsîÉ?[©ą`œÓEăhE0Ÿ“ò.Ž„]Â/2Żb}ČśWæqĂAn™ûuÆČÆœ}Žï)ĘXmŻ€œ"“ف0$_Àś*4űuž,GÊÒpŽ$ß+ Àûwźą-țæ{tÜôXêŻÀҀË,ê|æ·1?víw»ÈE‰ŸäžVŠV„ÂV›! MŰî­ÆîÜ>rÌșc`îß_[`ăpŽđÒbÀZM&VÊąqŒčßiÁ7[LÌż;j 1ĘÄ+•!8źAoÒYŰ;5î1§ëž~Ü&ąùd¶ê[pÍ”čŽęÔŃK uœż«-Æ 1ȩ滕)  ùŰ"ŸÓÚÊ:Űœ7]źÛĘù1ì0ś·°ÙV†5îfcț¶ËŠgÛ[ń\K%ùóÿaò%ÿ?Sœ‰g0ÆXćL*c ƒŒo«òÖL~îóȘ-çÀă§Čę±R‹3ùđ3ÆbՔÊ=>›­ZuœVȚ3æ’kȘ;Ęp·`ƒ±­7`”2ĆŠü„_okÄsÍűV].^ŹNÂc„âő&œÆ![UpM3Ž+ă Ń|ČYsȘ›_ÚÏÔ*żC?žq™üq˜f*&™Wč2Ç[ĘflśŚc›sŸĘ[‹ÍN6š‹°jNNJ.„ÚX<Û\‹oÜ­ÆĄF-^à>ń’9Žü7ûC0ÚăOa "™Ï]ïA[fÍ)Ÿó›Rž^čfÙVÚ{4Æü‰aA‡UC"V)Œá6ÖësÉZŒ»ZÆRŠ–b^ËsłłŸƒÏh{Q~–€çj đŒ6 /çùăĆÊHò‡)țcșѓróŸÂwJŁâwM»c&ąùd3ÆdśȚŁÚ>Òdé 8J#C4™b)Æ Oà}Hš1•q€qfžeNĂJe"ëÆÀĄ€Ł8” ÁlaÒßCqÆ%4ć\ÁÏŽnvŃśčődùĂjș…QáŻVăJ 3Æ$ßùÉ#kFÚčŠő±l)ÀÏË„7č—D‘q”ó~ïìčęqčÿ~ț%tç‡ÀÊ<\î+ćoŒ{óÏ1EŸ‰ßÏ6䟔ö™)ńUèL8§Ævó=^K…œgĆ|]ńÚČźb6óŠ[YWԔq€üC€§žçy-<{­[őpNxÆsû)}ŒïüŹ+čⒶpś#ȘÂbw1Ú"ȚRó(Œ2·Ț’Üp3(æiŸÿNòŹ1‘êG]ÄTúû°q/›gʗÌńx;ăÏËQèŚ'bÁRÌ3S%Ÿ2ÿO]a"šO6Ćő'śl‡ż+čTû=IYÄòHŐ-ĂLÆ{ŹŚ0Çç›Ì­đ ădÚEŒ§Œ‡ŃÄ °&œĆ5yë"ærüUŒùÙAűϜKè,Š@7Ïg“YXźàû»äŸ{—ŠĂÄùûlüÌ{ç8û^%öŁä.ËCÜg[âÎ`0ö€bȑ_Ű'È8žâ‡1žŐF“.°ücč€b“ü—Üéșń&šâÏąS….m4Ź|Ÿź–qĘVî͙ŒĆqdĐ Ń|2©+±;ٗŽ}œ¶Æ <«§ą-ëÚ"O`€qLȚŸÄŒ’û{EŻîsm,őząȚÂʈhÏŸŽÎ’hXša>ï…}kÔÀ~É.sÎțExa"šO&u„çˆô'ś@úąśêW‰Ÿć·Ë‰†,ĆÒÎęŁ5Ùw#‰Žš·9Ço +â Ž2ÏÚűččßÁś°NæșÔM4dbÓZNNÏX"ö­ŒÛÂÀ1„‰h>™Ô¶-ö+}H{ń*éć;5†\ńÚRVžq{tqÌŸ·2':5"aʓ*ïÍ9ÏČÈoÏÛČ^„?öóĐïő«X&ąùdRW7­:ՇûPò”œ=%śycž‹=ƘiÎÁ(c晫G«4dJfŽ§b¶%—û;ÏHüœy›ù"ív&EìÇӟ—ßv3Ń|2©+sœ9TŠÚJ?j ńÿGŒŠź{Ä3 ydNŚ‡tü­BÄłż’Žńéű]9ëđ}s.RíöÁ>e<‘”©Ía2đ;a"šO&u„íÇʒ{Àön±Ï‡c=NŹ#^ö.țżTä€zùț!ë}LŒŸ7†äÎÆ`©* Ń|2©+m6Žża"šO&u„Í6ÿ"ćčÿÂD4ŸLêÊùAÎp.ùĘê úœlOÂ"LDóĆțJêț.ŠlC}š=K>pàÀ‘=„^Š^ĄűBuàÙÿæĄăŸ‰†/`șۅĄÆ\Țÿ|ÄüĆ]89ÍenX›ôP§Ń°BBcœÈ·-uÒWܱqÆâĂMÜ;„ś>܀Ù~7†šr0æÉ6úcęĆđ–ìős©ò&œçž‡©Ÿ # 50fúŽŠ/šŒțűPą‘,ë0ŐçBšá,ŸAbeŠ†h_JŽnȘeüw}ÛD«ôw-ÆÖűqhÏÇ©›ûf>T‡ Æ|àț֝B,XÍÊM œ…ŰńÆËXÿ]ż6áÉĂ"Ïé±i$ÔFdWrbș.ۧv1źĂ\ “=•öąŚu}UǏÔ#Șa Š†ùžüńśży‰Ë^·Æ[r©ßG}ÒdÔkb‚ZM\Ÿâô…ŽÇtï©ÖïÆż ‘æ\t•FGÉAæx˜s5ž TȆSĂł?ÿÉó\úșÔ0֜ƒĆ±‹ÔEMĂŒŻÒÇ}mkn°cČIÄ€-BęĄZŸ·Ü;„óʕö¶üĘ°Fœ|gZYÇ†Ïł—©aź»|çȚïsùknăMÙÔÏušg-+z©]6N«˜ŹéS”{$Êû?3àƄîÓYŁżéÌvXcŸD mÌçęŚ&j(Ćlç9|ć¶/ßA ŚÔFČlęÔb Zi4~Âêț›è[ŠoçęŚ>Ÿș1ŐU†Á–Wé–ò„ęÉÌĒŽowH\ö6ccúÛŒÈ3šŁŸ"űĘ Ż6 ăÌ śb&ÒĆń^Ì[1jÁB„żEFùN'M ęŹûű4ćßLY)·áó'°8â%=ÜÇÒd ÖRĄ}dËe<ż'Êkv|ő™3Źç3XÆCï.aȚïÂxG ‚őYhÉچÚc›PsèMžöżŚŸŚÈëš>ű&ÜGȚAĂÉtű śĄß}ü çû3ß[†–‚=[nùÒ:JK© »ń>è:Oj&!_hŻKż|‹9ÉŚäÏRżž‘Ń?PĆ3Žț“oÁ»ûŸhÜțwž·Œ„ȘMëíáÊű+êŽoAĘh8œg¶Ą9ë=4ŸÎ€7g'BüÍ1é+@ń‘w/PZJmžæ(ś"ż©|†v W"ęż4úÙOäH·]ËyȚ{=űî2šȘ»ę_ĆĆĘÿ@óŽWP·íošÉxUoÿUú›qšȶŁ9gZr3á9›‰–ìmh9“Ž‹y;ĐW~·ź»ćVÊûÔ6T}„gÏej1úDÄ +L“țçȚ_9ȘSŸŹrgIúy&Nś”ŁÿĐ«èxÿ~ÇöŁőÜ.4R«{û+ŹáOšŁțúÓÛĐÀ󔉎äíD+żŐ^Ҟ· ^êŻ=đ?Źżăöő”ś©m°ê0őëÛXCš9|ĆtÎ<ł;fbÉ85ʞrwăhUą*Ìô–cšæ ü„{Ń[}=UGy„çàŃŽő%Žłoń>\LĐQzÀ\ïȘ8„ŚűkŽÁw&Cß””Ú ëő„V‹çrœXôőț>™ia6 û­5Ó ]wòâÁjŁ¶Ż‚ÿ+ć9zÎ| ÂÍÙԟ†ÿìôìÿ"Nńƒ!2LFZs1ږÇß}gnÌ6ńîÜí©ëŻäïD~ł€'Ș6ZŹp5}ÙsÆ«†_쌛}$ôžçüqœE4çZ«k¶”Ńzö”dŽ\ŽUXŒ”ì<Ă%ž)…źäuÍÁü0ĄUŽmíŸźGÊSŚ.Ł~ž‡f,ïAČŐÚÆ&ú"9¶șŠíǂÔÇxœ9Êł‚vźPŸ‰ëÀŸ±șN?qMš(-„.ÛkëŚxÎ'«y šęßúFń@k ś¶ZWPÔŚÊęăÂƶy<ÜÆoŚÖž'j¶âÇ5ç^ié+ÀĂŐ[đ‘ę©û=['Ç9óK»Ź†pٞÔő—îásć»Ê±ŸŒȘ4qiœ?Á]žKžĘłŒŽàxo;Ï|nącqsÿ+qwć;ž‡ úËPӝ‡û\›poć&c…râœÛXŽŚ¶”ûÒDi)”PÉû܋<{ÌŰ+1óńÿ­wRłjPÌÁčfü„]‹ÉIBuIżâB±”(*ٝșțâĘŒ|Ï8Î òl0VsÉŻ0țŚš_58:e—~c™gâ$ ÏžĘ§Ÿ@ŸôëčŹæ8v5Ws_ț`ń.ŁßÌ,'ŽÆ_ć.Ï"ŸAęșnéZ \û‘¶|—ï‡úÊßXŽÇˆúF­pô[+ŚIžSùÁą]W§Ÿ{Nc„/źčć'qśÎ·[ăÆ7k™ț]ÀžG°O{őiMó‘V‡ÇkÒÍû ßA9šŚ¶„D–uđïBê 3ŻN?śhŹżÄžÏÀy ¶ïèÓ>ż›uè]žŸèčÜă±ŸPî*öXé1ÖéV}ûžÙ~Źß¶ÒDi)5ćȘöX_±{]Đ}”ę$L”kMh&JK©)WóÄzŠhő 4mÒŒ§żb™Ă­Áčæ`úŒËO`™~2ŠË– * œWš(-„Š\­łĐ}ÎÌĄńČf/ÒêšYCqabäC±D_Ÿp|ÙdÓŰd›ˆ ô„‰ÒRjÊŐÚóĘùfç08~ČòĆZ?Ć>ŠíZă“$;ßek&JK©)WśzŸ3ÏŒŐ±3\7Ó=Um.DM2Ç?3Yèź:0J)ß©\ó\źyÖâŚ6łŸĘ'ßXÖg}r2‰â+f8ț“=Őo/Eż+ žCFÿL{|Ù;:(çŒçáWÏŽà›ŽÙÓÓ3tÌX‡čőÈ{v”b*X‘¶BtW'r0әkr˜nËDvì{ćL€ÿą/W=Ո+W4BöjÙMô…Ú-k 5ۅâ{%ęnêUżÚ-_1Ș«ßșNqŠ©Íʋ±Ž 4䣓ë?Xń9f‚ĆÌ!Ïä0՚­oÿ+† đ_tćgÿ àdÀOXíBuáűŽí&ČȘŸŒÔĘïcž„‡}h-ü mEûê­ÄLw sÈ79L¶€ă‰ošÒąÊáòGëqù#äŃ"k!Čö;uË2ÖnŠ>ÛÇűčìAšŻŠ9”bŠ«€9d›–üțwË(ïŽ9\ú—>䔑/Œűâ«Żi}žŒŸŹSïká”êđŐnêsń"iç»ÔŸƒŸ»ÒîMʎđQśÖ:æPPOs(49L4§ăȘ+.ÿ%%žČ8ś¶/Žkqô;uÇZŰqFŻí«ĘÔçâE"ÇHăïJ4ú]ń›h°sđ"Ìę)ÔSn球ńÆ4Ì?ÿŒ”ù­ćâê`žŸÈÚHK$jÆW,‘/Ô."}őGÚKh“cÖ`€)}î4æîAőçù}nE˜ßf“ƒèwY9‹űNđüѐ ÊüÖutŃœn,ŒÏæ^ȚCîó-±~}Ć8(F}"2ÎiwbfaÌB»-eő·æóü‚æü=š9Ž_ŒyȚhc–~ŃÏouos°öŠ_ÒŚ”zÒÜS ±,XN{·ÛX•włÎvĄ±đjQ }±đn—eI€êSŒć»‘ÂńkçțăMEKA<);đćäž­ș™C»9'…ú s8ìfÇśŠĄșÄŻ(ś9\pKBóüć.ˆ%Žóiç/Ż±­ĘFkÁ~cOlw|Ç:üöń [!üéh/ț Ü}űrz_Ne=űbŽƒ94Sż“Ăńœiš9ôŚÄëŹtùF§*iÛWŁ0q;ònDögû>śò”†Ž=¶ò#±ÛÔ·gÛûŰ»u-Ï8ڐ‰ŽÒęh+OÁÔ`&·bŹ· cĘ>Œë0ŃíÆT/Ï|GùNGìMSíùÌ{ß(ćŸEYQ—’ŰśPW°ŸsžÜĘđäŃæ톛Ÿ›Vu·é#ŠnŁ:c6lʇ›žLÀČđV—`0`e܇6Ł<î=”ì~…1ï đÓ7Qžó-ïz„{ŚąúÀz4dìD{é ń ê.Ădk.ÜéŸt}öÏĄŽšÊáÒ8ŽƒȚ©2RŽ°|qą_F,_È_țŠKW6à/û°)¶Š{hújŃ\ oÚÇšæ>Z±Êö­# âłuŠ^}đCÔÄoBmÂFÔÜ_Ò6tóÌ1ܐŽŹœïWĆBy§-‡Kbč]s­æÙnûÒmćR†›_źÇmŻÖcĆz^ŰâÂHsś dŽë~Ôg} WÒV+‡Ï?D„à:­ąæê„ÍšeŸ;y <‰[8_›àŽ_ú”­hˋÁE /Œ˜òN[ú‹śrOăŸL-FŸè-e>ÄnSnÆ'Ž/«Ÿ›WŐăOŻŐăoïxńÎ.F[òpėjÎpœ]šKû5ÔZ%Ę7QżE5śWq§lCżŐ>âOù>ê/y?ęÉe?§ŒÓ–Ÿą=ÔŻoc ĄfùN›P[$NŽwœáÇČ9Żűp0”c­y8ZŸîšCh-Ț‡–ąXîE»àç\űłv|€Ț&cú›òwŁ„p/:JâĐżçŸwî”wÚÒWžÇú”H«E˜ûrˆ„é«éKłŹPÛ댞îù\żÒ–șRŒ·q?dĄß„źçŽŠÌ!ÎێòęüÛ ÁêxÚxô^WúxæèȘb9ëșæäÍàòjęśđœŰ_eô„ș‹ŠpO1}YĄ6A߮ї%ŠßXƒEÏQÿ ~~‹Š0Á}pž)‹çèT Ô§Ąż.ÔȚKmÒ­z]uҒ>Ÿ+ęž$ńŠ˜u7àOCkê6+ą*œùŸrü+&ÆRgȁuÇȘßB9ăHs©ŃÛ«>„șŠ0ÉoŃßáútîE™8êOĂ }é’/«öĄÿŸoÈà~›Q櫘!úGęü~§n9ę;î« ¶"ê)ą•¶­ú,k!ĘVŸ…ô/]Yiž-§šŒż 5eb„:©Çń„y€9›dúvûpc†©]ú‡Y?“ńïÉ„~î‡Òâč0҆» -kŚEd›r˜Š]ü\œÉaŒƒgăÎBLväbą5›ă*Í_j֏4e`„uŁ— 8æÜïćkß„vćԚșő ôï°ô ©‡ÚhCȂÚfëČB>u;}ëöÖ`éóÔÿl=ÿ ŽçÊžgHG&Ûò0Î<&9m<ó‹Ö斋ń–lź3+/ć9Ì\ùŸ úyțNü0zę9Ÿp­s-S‹ôDî.8±]ué§FS§œóuțŒÚ‡čÿkŠš=Äż§»òM3ÌcZuź«)ž—§XŸâüLńü?ÙÎ\Úh™ÓŚÔ(çGy4'mŠZwöÇ|7č—PË\ÂDZäÏE}”•„Fó;\hőÿŸ·ŒŠ†úCDVHżûh…æHčXy(‡L“CsRôăߝ”ăÊś‘Ï ùLc„Q~~„Ïv;Y”?đvnz‰ż{òÜ©ö•[Üf­çšRĘșŸ…ń™‡rŃß-Ò?ÓĆčé°ò˜æߔmÙçZjIȚ”ț`ÖGFżî æZăGÀz˜šßXrž±KžîŸȚÈżEXwâôÖ<ŹĘÍXwtGŠn'ȚXæcrhçșjÏF{êæ3ÓŻ”lîĆûêȚò#°4[íÆgܓë<|oęè XŚ:íSÏÛ_ó™yžƒvžŐê“æqΓŸoÖœŹ±°Đ|đ·:;ÎôèśŸ`æVȚ‹x­îi‘Kd‰ÚmôŃ(0ç…Źő˜ș‰ł žŠ°ę@„9O+‡EÏú‰ìqnà·úüȚ=țž­u|6ŻłPčÔęś+˜AęœĂ0Ż•ÆŻŚ},X7VśĄî„ÔŻ<†xȚŒ‰Żä{[‡ëž“V ùÊq çHš5W+ÖŚšÜÖìȘÆ3k±ìî]Żóï0ç™ÆæAš(-ȘÒĆ\5ÿ!țź4{!_Dú€Ć]hŽéčËÿ]‡ĆÔș˜ő[Vùđì&â’Êšć˜2Ö!-«”û,śWÆêÚ[«ë5G7œšsăH˜ïpš+]яżŃÏu;ĂśFÏČà} ¶Ï{*·ț†<ÜÈçi|5țŻń >”ŒûçFq'püZcYïôæcs\%îç\ĘșʋżŹźCU©öőçPƒe„‰Òą*ŠUî3mYæړĄœmő'Ő\>3~kbx^eû·ÂxcO…‰aŽÆZLÛ€‰Òą*ŠŐ}fZ2i5ș­}_Wy‘óčVo~IóÎß ŰźőŠž°|Zƒ}Í,ŠÎvù6aSDíČ٘–ȚWš(-ȘąX=gȘ9ÍÜCŚËj-&„ólÌ”ą”ęÔșZŸƒ>txčVL Ÿ++Ż{ÌúÂńe#Q›źŽv»Ń@_š(-ȘąX={Č9ŐÜĂÀ{”ń\LíZ3)™%XÂuł1–'Űę†č~$j;Z#ŽÆ'vČÉÒ M”UQŹÆzČ1Ć\«ûè7P·ôk4ćo,lńÿ!,wJ“e­Sl›œëêòÉd5°Oš(-ȘąX];àïeš^ôæíwqĐű?ü.Ïlÿ&zn€ Ûgő©>¶ÛùhíL’/M”UQŹź™hHše۟ŒÛVčqç+”XSlÚțWH‹4QZTE±șfș…ùóúgț„‰Òą*ŠŐùAgž°~Óù0ż%ÙH‹4QZ4ćŠę„Ú~CNWź%‹æ͛·Űæ:Ȅ\OÍûA™wíĄńŽ‚Č streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† =0/‘rtfd':84295360-D2E0-4633-A5EA-07D523556162-7379-00002316C53FA9D3À ț@#x͘Yl\WÆCIÊÒ"ńÆ ‚GË/*Ä;âÄC[@‹Htƒ’€YšfOÇI“8‰ïKfì±ÇńocǎÛń63öxßí™I]>Ÿïœ{ík'_ÒöÈ?ꗳÜï—sŻg¶xż d±—–(6>­P,+\ßôÙùž æș+0ÛQŠÉŠ|Ź·áÏ>óÍ}ûö=ę%6≶…ȚJ|Ž4Š‡óęx8śŒyùBŸËlR3œHNtcq€‰ŽÆZ‹X[ĆǔÿÄőÏśžëCz2ò?ЎTąË# ˜éŸ…hcֆnaŠ«8Ć>u Wÿö«Òdož4KÍ9HòŸY‹7cĄ?ŒDk1Ï)’ĂĚo,PʧjÓyoa:ś3€ÇIòüŻÄ[°4TD[Š;Xő'‡è žŠœ]_‡©kŻa7Ź/Ïë28‡ÓQăïÄÂp=VŁM˜ #ÖRÈkäH•©amđ‚W5Čțùo“—ÿŽĘ°ŸˆùŸ*ŒGJpżêCŽäçûùÒ|7›DąÍÖ­ć3ÁRPæ'ȚGăgț€L}Ž.Š…|áőwâïŸö’“ž“w·/ŸÚKđŃb”߃ŹáŸŐ/|W5±»7Íwę‡R[ƒÖęŹ(áù_âțs·5WŃQrë+“ü¶Š±†!󝔞ê&Źa"Â6śŠÙΏ)ś‘êßüużÖ~Ò Ÿ{ŐŃÆtw9†n_CoUÖŚf°Ÿ:Ćâűha˜5ôSż[ĂæȚŽÆ­7ő­ôy€ŽL­ìܛžC(ï8‚ŚŽĄâÊas/\8è _žŸ±ŻÒ7&Yûÿ„Hé 4çEĘՃè ä`ib c}˜ă»e1օĆh'–cŹŽEXŸiÏȚŽ:TÍșs(ÿ)ÊòĘêźBgÍutđ™ëšș„Žmè"ô#ŽŠ#Š˜ŰA±ÆÆ čXcŠ7ˆè|D Nąńê!Ôń9gïG˜{j8ëm>ûQùŽÜx=YȘżY~çb XyP…HùŁ{ś~y„ùjőWyôL5F€䋭~±Ÿ/ä§xŹŒÔr `Œœę5Wp·ì}Žpmș~ 9GÉŸŽšž%ï=ŽȚ<öüăhÏ;†źą3ˆń›cź§Ë‡›)ÍW›š»Â{± i^C[C:JOYÊNńž uQLŒï ŰÀœg•úçû+ù?L1ÏëuÜ \@[Ńi[Cî{ž#xŸ6SsKțIŽł/RÌu 9żà"7ßĆœ’Ó eăé}{ŸŠŒ[âöeîiܗ©[śĄaŹžő'§ÚŒO\_V}B±ö’Uî‰ !Lv•šožȚʋè,;‹Vjm–îŒÔoi)8…6)9ƒÎÒsè"Ę%gŃEęÙÿÄłÏ|íYÊÛ±Ś~Hęz7Öjvïæ„r^6k$ŽkÔŸ6Z‹Ć!LĘ«@Ź”nç` ö śą‹èæ”èdșÈ=‡ȚÊlÓßWÍg(|ĂuWŃsó˜ȚkŸÚxű&ŽH«%Ís™"iúŠœŸŽÊ “sûąVÿÒ`5ÿ«ä>ZfȚńöŒȚÉCŒ­€ä#)æ;șˆ¶dČłSwKűĘWˆ8kVŸżű€ę5üNL4=©ŰmŁćw[wρüv3^~»/œU‹_ŻÄ‹oT[țQÁ8ˆ_ â„7«ńò[áG˜čWŽ™ž Ìőòû»ôŒoęcŐxțïí"MŒÓș0v­ú-<čZ€xț5N±òòe7bb|'o orú&âBš(ÍW«ÎBzŒ‰kŐrŸkm·êłÖąăÙ>/șÂŽò-Țqò5ÆÂ\œĐÚŒŹŐ?òŻ?^Eęfÿæ\žÙŠ›‡-č^?—{žŚzúoȱ‹sÄŹ™6k‡ëÂŰXőÓwú€‰Ò|”xŐy«_ó螬Ö5h=7–òyŒ>/Ê«ŸŸ«GkÊ7yA_yYw Óï ńńȘüëŻü€ś:ïeÎŐ|/éXÍÖŒbźŸŠÖŚ Ž%ÖçùkóŽîc…|"Ëی'f,­4QšŻ ŸÏ{‘{™k©żvő9DÖÀo–ÇZ!_0sœX=Û±:…·ą|,xÎżțÀ9ž >gœ—ŽVoŹ‘2~”Çgžÿƒ»Öä]ëö“Ô(}æmLßAŸéc\»9VkïF4pÖè7kFC„Öű§‰úőâôo·FÇzIn=ŽwMȚ:»;ęŒŠš+})­-߃]ßæoÆŃ2§ăÉߚŽÏœúŒfZ›·ŰŒ°±íß„ț[§9‡úùżš]#„—Ä>StLK aŽâŽękŻ!çȘț.`ŚŒ_c4ÖÍÉWÎű›Űó*ßZs 7'Ë1òӎ”qÒDiŸÚhù)ÎáuăïJëùÂë{ńæć ùÂë*‰ŹwÌ(ûä“4RĘś;­«ŸW€9h+ę>Y+}°€}ćĂöi‰ć«q@»Ô[-‹=•ČĐ鑙GĆČ9Ő.?8|è‡|û[hžÄkmË}5Č”:!ϖćÙâ °Çéú ’˜ï“űtŹŒ·JŹÓ+“meš­òKÈíú—zœb,ˆ1úèDŹMÖƛdŸ§JÂÍEČ9Z%óĘźJűÊ5Üùűśžx_‰ŒnV[îJśÍfŽE–ksaÿ=óJ€ćÁ2€|„6WôčÌ~ à:qìÿzŽUVG%Ö^&sš úăŁ^éźŸ>9Żü9ÌȚûLR±œŸšl*¶—g”ʏPEŽôT_“Îòi{x^F·$>îS5l WHőí3Í(ÎÛLÁIĆöÚ‚Č©Ű‚~ÚęèđÈÊXƒÌőúeśűQĄÄĂőšĄÖŹĄRČOü-àÏY›ÎÿP^Æöú’ÒOTvȚ}AùdkiFńl.ŹÆK…çæYYȘ“éîJܓ‘à]IL>–x€5űU ëCò§?țî}HsTC,śIĆöê‚ČdźôΑ1m§†•e|k)Šì~䊿/m„™ÒtÿŹÔ矐öâËbLwJbȘ54J|ą5T«Țûć/~ yûÖû⯒Ší•yeÉ\ńYE|$$K”7UŒ(ę°ûQ–{Ræúk$Šïn_uŸ<ń\c¶{҅Z%mB UĂÚ`…üäÇ?ú$ŠlS9‘TP?­űH‡,ùò”O¶bÊîGéSȀgód{©Òßțû?ŚkÖđD œO‰hłYCŹö—ËśżûCùÒÆuSaŚ?[t ŚĘewȘŸśO{YŠ<ș—!ŒăâÏ=Žçó°x6«HŹ]Śâ;ś^@æKïŁ©+–TP?±üÙBh†OXíÖ”ŁŸ wț)YöăęÁ-ƒț[ÒV’%[+aŒoŒ †~­ŸÄđŹž|„ôÙŽÔ]öH}a \śëwJVFqț<ńÈPĘét_LJ3l5‚FŐ{’1ÛPĂt5ìœM ]„_Bîs54ęĂ Ś~Ę géû§Ă•)-…ç€áf:Îą«Čœ‰Ïwc5DńC ƒĐoŐ°s6mą†XÛCŸ+œž«#U+żzTžVmŃ%©ŸwA*oŸĆY~ZQ~ËŽ„Ÿ3Æ1öčÿ«ŰÿÙȚ*kŒ/#Ín٘Ÿ”éaY™•H·Ź„»d-’ÉjÀwÚv6mŒúeŽțî2äżYŽ[Ăí3ÒUw_:}·ÀM鬅Ćù‚‚e?€Æ€ê›°Ï‚țPSĄŹdŸŻZ‹%TrYšïœÁgqßçt Ü8.Üăِ.§„őÁyé­Ì•ŃÆȀwűD€Iև}xč6qàÀ·BšŁ6ĘxûÀïTh„Êł4Ëžöł“t"N8N:<—qÏ\Âꕆ;'Ćwă˜T]ùLÜ?’ÒŒ„$ăXpțïâ:ç5â•YŸˆśÊ?€Łè‚t—]‘Ț9{+Ä[p¶Ò”é†ÛžÛĆÀgškۃ=núŹŃPÖêÆec<(Kƒ58ƒ\ŰŚûòÔ{gj¶ŽâYđšđą<&žO[Š/I+žÏ č°„ۃ’L áœï©;[FjóäíƒȚ†Œ}[ŹŸgÎej >2وz€cmÊ–OË1Â>ϒ œ‰ËC”2ÓíQïp}5ùÒĆśQhmĄîąLèŚŽâ|m!śéÂłșôžs€ú›óŽÉáCß; yû¶©à-èçł±@3hs]”vŚ%Ćn_CŸ5Òo+Ê^ÄŸ^æą òț†Š«ŸJEΧâÎ:"î̏ÄeÒíÍOæÇàˆTd"}Ÿ|đă;(±†;ÒûđŸkŽÚTàŠ<‹ń  ~œL>ûvŸőŃłÆÂőČ9”Ő?~ƒŐÈ\OčzD;JdâqȚ‹J@±ÄB.™ •Á–É4˜érÉì·Lv”JŽ­DĆ]—ëŻËÇț·(=‰HœÒbDëáÓÆ|ƒO t>€đ (k8ŒxöÈÜÓrPm%ĐéÆśżËĐ_èŻ”ĆŸ*ĆB?諔yÄç{Çû·çŠcę“țŰÿÇJ 1@ ŸG èk)>§ü–‡Ž>cĆŠU± ÜŚ°đO昚8`œŸČ1^3Áw"î &HsÔ&ęčxßíAŹ„e »-ÇŽŐđzzÌïŸ,}=>s4ˆEŹŽÓê>Ç'këú 硚‹=°[#ąőfŸŰc;ŚÔ~<\gÎ  Â:—0_ƕ”@_YŽĂ7Çš Ò”šïșÖÏùX¶ùÁiiŽ„>i.„%đ•ç#ˆYVćĂgûĊ%ç Oíìjˆúź9Ś_s ßA|1—óí‘șĘqö±~Bíłe rö‘Cč:kÍQ–ĐŽè«| ra© Ò”Hőžq–šč»Qëáw+ęœŰÇ ÓîEć<‡ÖIt7ŒGȘŻ:ŚïœŠœÀś óŒ°_­Ńp7}NHœČà^zÒ·ŹqæŃ&°.íNÜÌ5}^S_ÛŻöâUô‡œ9Jb‚ókŹòm oŽ+kÇßk•›”cL쟎}M懫r^M?>S΄ŸŚŠoCŻŻăÊWy°ˆńzôwljé#Æ1„VÇ5:Nt_żąțȘĺ~üŐkÔJ ïê·É1p\#ÖXĐłbAűȘžF°à@Œ1úœŁ,`ź5Æ|ÔÊDe¶sęÈ՟!æBgÿĐëô•%6Ÿ9Ì”bôSțz_ék«źaĆh‘Cß0­îŚ 5AšŁ6Qß'űÌűżRrBŸŰ};ö8}BŸŰ}E  ”aćL`Œ>0ÆèŚ`ÿł^M?îŃűh”^Ôćʅ?ÉçÉ>Ż“ô1ǟ§}Âxr™Ÿìçi‡>ŚbńQm© Ò5æČöűˆWÍężÀ}€M…ÊÁ~)«Ù45P€9jÌć:ńĄ*X~\ Ö¶źÂê'-rgЇUXcȘ8}Cőí0N[-›Ô€u© Ò5æò:ƒćj ÎśĘűű§ÔZ =Šę3g/Öær=úÖz/ĂÊUàS€9jÌ„țőAZC5–o·„>ÙëÛaìEŒóU>°Ùő­š ÍQc.żśëęn5—ëškĐî1·`,ÌńêûEő bÉ5ĐçĄÖ cÔiŽs9w­ÿ/ăg€ùŹ™ŒÖË@Î.»ēúŰß âæ5xïŹőč”OMæš1—sÖzËŸP 5AšŁÆ\ÎÙBę˜ÿ&±>j‚4Gč|à;œÿéŒ űż$ZB-ÔiNÚO™ûMÚ~ökï€wÓÒÒ~eòkđű x7퍒öÎéËpIČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† s00_videod':81E977DE-E02B-4AD1-AA6A-7675B4567DD0-7379-00002316C53A1EA2À 2$xœ™YpŐ†‚É©Ê[^R•‚‡&@ÀŒńŠe0`Œ±Y\’á-•Ś@’b łă Œ7ɖ7IÖn-Öb­m¶6k—f$K­#Íhf ääÿÏíîi‰ÍÂ6Sțêüçtß{ÿs§§§GŽ;WàLL€@ "`ź‘0g$¶Öă€qŒ9OÆsdŽ>S†*SdúlüìȘ+>oȚŒ+~€–ž€Ż‰–|ùlČW΍·É豯À]§&Ô6Ł­i‘đ`Łz<2PŸ+ęŐiè-ç ŰżäțǛs%:Ö*ŃĄș  V"Ő2ŐS.#ÇÄ[qDŠ»ŽÉHCz-\ÒƱȚ9ő_ èĆŠæ”AFæ:Œëfșï€LŽË@u:ö?SÂĘčâ;yhË\ČŚXC6üŸQ–Ç 6>ĄY·c”È` ź€ęöydČ«LjÒdž>Uꇻr„!ïÓn,uIȚ‡±†,\Ăđʐ…ćQŁ‚šæˆš“őđÈtżGBȚJï,Ÿç(Țƒ śhӝÇ$oߊ 4€ś5zŠț[Ô˗1ż^óáłđë&諔@w© 7Jźoća {O ‡ăÚCš#G¶țçï»Ńț]ŒŚh}†œĂęƒ~ ŐȚŁĂ€]ăq‚ȚI°ŻRŠz+dŹœHr€Łű€t–$I€żJŸRôPš=ÛłćƧŚÿ Ë^ŽFêÒáżțèÉ!đ«5ŻZ§fšĐ{˜{ÿ“Ęe2Œï†țÚtiÍO–Œ=8§çœDeî-ByÚĂÊĆ îĆÒ„‡áÚ497Ü_đd3ˆ}„?\ŚÆłÇÔ]„é­ț}űÜâÚ9“/}űìÒûé̏%êoÀgæzÀŰŸrôPŹ=L”eËŻ~ù‹k°üżFjRáëÀÏlżđÎAdQsűŸÆ52ęô”É(śżæšúŻIȚ,Ńáf«‡Ó8ûŃWaő/“gČä§?țѕ°pA/ż'Ćű‡—è@€GŐVäțiŽòšæ†öŸŚyĐ[&ă­r¶.CÎ$ˆçđ‡ž/wH”Ÿ-ö@píiȚ|&đüќ)°pAŚŃ°'Yçæ^Șw ăłÊŃÂ\#jš1Ü_!!_čŒwâù!CÚ €:u‹|đâyŁ=àțŒ5”|oôWąsooHûl|çüU‡±ÿ§á« ^€ćɀšo+ę„ŒćèÂęçtŠŽí—úŒOćóàž­|èĄ śh|ÇûzÄśȚ3ûȚ4zêè°òzȘ:„9yŸšđbENo1ÌqjyÜÀkbŚO «X†ł„ëÄi)H’ϧGäó=ôÉgĘèĄ kÙ=pMŒwž7MŁ‡êd>+]æÔÇPĆA9gûÇ>ȘDbë(ĄvcŐxŒ9ęObÿęÍÇ€»ì tVdHh€WŠ;$Đß*_ƒŒ§dÊW'Ą~<‹űń™vʛB]…è;iö/ƒ­ó~ –sCőê#ŠëX=­€?€È\œÍ-˜ó‚< ÿÁîbiÉoUŠÔ„n–Šę›€tï›RŒû )Țőšï|]NìyCÊßÏĄś€9g§t•’Q<ĂGđù vH]öŽȚË/ÿá9ő‰xp­<űŸ”'œ Ț‘Êïjî9òT'$”)J푶„!m›űđÌ1֜-č‰oŸ„”óz –îĂ”ˆïTŒ‡Š‡Yžë–ŠgӋ#bÿCđ?Ț–{P:öő 4ćŽ­Š‡ĂH9òĄœ„gOÊf©Ć±șô-Rt ȚŻ€.ù=iÊŰ*ÇwËó.żöŸő5p"śܗéțHúVœ©¶fä1œś’î‰íÇeš!SŸáZòśÈ©ŹíR Ż'éûÈGđođàțZê2¶É)|W7€ÆŒíÒÿ»_•«źüÉU°ś­Żł% đÏïÆRÏÔv°æ&Ö#@œ†śéȚ tSŽűȘS„ăD’Ž—ìĂœh4âœhÌĘ©4€&‹–üĘzŒ”pŻŽ'Jwé~iN~ŸßkçőjÎúXșËăę>pžD?ì«Ÿ±ï-ÿ“…ű –ûh–~ôŐŠJoŐ<„‚ÀóâÙș4Ä4C§ÒĆ:Ï}G„=łȚ–ŸÙńżmÛËâ&ܓ7'8Æ {ˆÒ3ˆűNÀ;€ûűLP"SžŽ”æâ9:S†›Č@6Œ„Âg>ű]†|ôLŽŒ”SFπ–A}€™u<gnsüßłj‰üő…ÇB”ûæÇŰp.ăßxfÔ”‰`ÿ#ڏ©S3:9PmŐh­ń™sțÂ]ŽÿűűƎ~áùÇdĂÆ{dĘc«ćáÇÉœ`”ŹSÜÚ°~ă}Â1Œgp-ÎEÍśXę΀ŚO1"”ŸìóšyŽ”>€hêŒ&çńță1ÿ+WȚćèçŸ{Dśt.p =snÎEʆÏYû[Óè°·Hś1â+FŒ±~xŸÖ5Ú ŚÈăĐÖ±Ÿ‚Žç•+î’çž}lđ_“(ÁšÄÄDŠȘ"óêcć\ôÏ{ŠúĚ3ÀÚôDmû‰őaÍ:Ł=‡·àù};ÿ+–/’gŸÙ yf=âz zö:„@°0ș±kˆcÆnÎeü'êZĘo‚uŃEFûšYG„'ÖM$Ԁčžô\ÄŸü˜ÿćËîtô3^/SU»•àIÀ8ÔőžÇĐ3Śâ\ÔôŻká7-ëQ+ÎFÏùÆ'1ùLXść}ìx^ștĄŁŸțÓ: V~*S;]XyćN 2QÇčCϜ›sQwèőőà[Ł·Xșu“C[PëqâœcÇŰčÜ ·ÿ%KÊÿđĆ:™*ûD&Ié'Đ;,ƒ©Ò&*ŠÎ1fìCÂčèżț€5ż*ȘWtí=îœÇeŽàùȚcÛÿ‹ß!O>čVžzòAyê©”2YČ]™:cŰq6ñœƒs©ćśOŹ™cž_8—ăß^PjâÖ ~_itaŸÓ‹cÔ Šż 1ïÍÙâűżăŽòèŁ«ÆsȚ™cĂčbț±Św`îÆȘéyÄʕ˜6{otžËÄȚì˜ÿÛożĆŃÖß#ăÙo+cٛt5ąMÖ&`EäCϜ—sQ«ä_ ś‘ń›Đsà]Łaș3WŁÛÿïnû­Ł^·JÆ2ÿ+co!;*škŽAŽăCÏ\‡sQ«ü3‚çë(ÖcTpŚwĐuj‹šænXg̓éöc“7Ăÿ‚[o’”ÆËCkăeíڕ2šț†ŒŃ4 êô7Úôh°rŽŃ±˜ƒsÿ{±ÖĆZ ÖVŻ¶&¶ftĂÇșŁU”e©vûżć–eÍw˚5†‘ÔŚeäèë2JšS_ŒłyMsŒ‚98—ăëpM„Ú k_EŻDŐÀƒ­™ȘĘțoŸùFGßß I~Œ _‘a`ąU;bA 8†ž#űÿÎEíűÿFàèőą9Aț™óĄÁÖ ÄÜțoșéGŻ^œLü‡ț ț%Ȅù0rÁasŒčšcè™ór.jăßò0#ÎuÇóÙ nőĂkgȘ%]”Ûÿż™/«V-uđxy&ÁÆ/Ă16œ‹ț[ vÉTsÚ%a¶ÿnž^âï^‚ßNqhÿ?ÿț—d(é%ń'ÙuäôÛS8‡ÉO„.CŁČJŒ©2­*‹Jż»Ă†ŃvFhŽÀi‹ç=ˆ…«%Sć0ژ†ôĐ-V&ÀżË{ôUbùŸ4ăù$sȚu’Üœ7ĂÎ 5COu6Z8ÿQp9Ž2‡,•ĂHƒ »7ŸÌűwùŽŸò$Œqę­bŠl”ŰquxcR/b™ìąá¶œn”ąż>v,hÌ ‡»œ.ç1搭rźOĆ?_yé-v{Ùrè-K$5ù„IË-"ŻŠ‰ÈȘââKœŸHŰ]2öä?՜‡ŸÚKQ›q5é!lSÎ6EÌ!źÖæźrXńäÒçŰőeÉĄ§4c=ÇÉE&Ż:9źÂÇy­™m:&ÖG.ak'żÓÊç–sçDÚűì {er<Ęv>3́ç¶ć3‹Êát]*üĘr'»żäŁ·$Žü쇆šžțT&Ł>' ćIûđÍpśVNæĐÄ5šïűî*Š9tòœÇ{æ]›ú*âż%ÊÊĄ«đŻ)ëDEC–…mBș^|m„^KæÄ(çÏP“=U©h:šÌp|3ڋoFș™CŸlfuì˛ƒôÉ{Ç”i”9tÇÈ^i*uQytY#1æćç8*Z‘ŚśˆÄś•“:) ÿ)Žwušó"ŃhMÂHo+Nw6`šœCN;†8í,ĂH;ś"Ę|Š}ÖŠ‘Šlæ>Hü©Äšôљ±źrĆáá“x?xt=Ì”„ëČ0Ÿš=ùPFLrS>ćőĆJHÊȖŒpMŹÏB—=Yíáj2BP‘ˆbČ wôNòkÙžŸ–PeIšà»ÚNU%ÂN~kđ\?ëÚ뉶ƒÇÉÜCä—wă1ŠÌ†ÄśÆDóŐDŽí(ÙG[s1Ԑ…îă&8‹ăĐp4őčĄ\‹BPĆ{QeȚŻd§ŽȘÉVő”ÙQo9ŒæcašŽÙ&ï”I'-1&ïQĆȘuûÁ7°$ü]ü&n­*»9¶±”°Š©˜·ÎĄùO5fó7XŚŃő.h+Cka4śEqT,:ž_Țz-ÉaâùĘ·ÊGÇĆ;^Š”oĕ諘ì‰x ‘0mRG{ö~źç\ăyžbà”„ÿ û><“ČÇo!Zű{PêDҟnë+™?Zń”|ۉ/mŽkŁhu\Ź.K}{ÖäùÛ2ÉÏőPË1+üË*śaYi€șY{ĐX­ê”ïr䌰°L9t[‘ŽWqeœbYY©§oÔ Ń&uŽeîÓür>Ż'Vű«Ü‹›ÊüńBI Œ^ŚR6ó·m*ŻÏ6ìCqČí’žÔÓśòÈ5ĆWq}‰‹ő^CŐ’öm™{'ϟ±—Ï ç2ϕóEÂÿšÁ/zŹ<Ï€mÄSqëĐ]gbgi+VÄ~)íçhß)ŸÄiÉ$qmEâSbYVí)ՖV˜ˆ6©Ă™Ÿ‡s‘k‰:WKű—úđ‹îȘڇW­Xż­ńș/țŠ•öÞ-Őæ{Ҝ"]>SwŠMžßıàsÆó<Žlu ážrâöêÎú0<;‹ŚŹx"á#ÔóûśœržÛ8Où­ô|ôőŽÄWőąń6^;ŃVÆâbűæ@ĆŻźéÈąČÿC{p[ÔJܜÿ%ŚăŃîtüș?OæâÛaŸÛÖáDa$Ïòu.ćcő•GÎńÆi=b I{GZàĆńóžÊ芟ŚțÈOű{ű)ć—č żêJĂăœ™*‡ÔËùx)aZŠä>diu>­’á3&uŠ™VÇ”t\€Ëșț"ùÓvóò“A_Cóß_„_D­Fv‚?ž?Č‹c?ÄÎx•ƒèœÙxò¶ieű”§Yü ŽżÿĆńsŽșšÒőő(áż«ÜàOTl-üßW„˜Ź ,Ž|ó‹wà撝X‘œ/GźU96±|_›à„%ČȚČ҄ŻÇLûź&m…‰h“:€­äîj4«sE¿ėß*ü‘Șnˆßț>JۊEńbyú&<Ÿș‰\ƒă9!Ș]?ÿoá–qdÛ J”!»ČZŁƒ0mR‡Ž•ëžêÓhőŰ żçÆCçà—ț$‡»ùûàĆ䏱,îßX”eæœhÌç™û?ôˆÚü9~ ¶ęœțö˜ŐßĘUž6EážÆÌ+Ț†y…[àgę )Í@ț0ÍÏ>DѶ,ćŸtù‘UűcÜz${^iŚS• ÚÇ9Ő"s„Vù”źćÜŁ!țK,]xèMÏ]…»°|€ż-ŚĂm ˜›ż ·[?Ç-G7â^źŠŸăÚRÎkłoțâYț.{.|%î }…čÁ(HòGę±ĂȘĘHƒžÒN€æ‹*‹3źĄÊR'ŸźMą5Ÿ—Ú ł û’Ò@Ć{¶ï6cNîǘKĘ`ùwpN%ń{F~šæç”sÊĂđçÎ=œk!é»PŒSjÓV|D”™čÆù€|¶7ò‘čsș&Qùç㟶ÁŸMóMÿÁ#퉊ŚW+F áW€Ù9ë0;ś#ܘŸ?xù±Ûùmàż ó{w<–qÎÜqèMŹJț\Ć âwòûÁ~~Ż:€ÁȘ8œźNž$]ˆÿÖàŚĘs-ëágPŒÂ-zjżčJw`6ëf[ÖòŹÇ-Ńïcsä§È‹ÙŠ8…ï‹ŹíêÙ~ÛŽYĆȘžś¶›ś(ż§,Ző)©ăüżÿm!Ż=ÇČVńMVî*văVۗ˜cá˜ç0Nț9ûùÉ«ù|ź‚5e/lüęȚd‹EŚ ;ž6œoÙ ù-/±j~ßÛSĂy.߁~€Ô·$Cȗ9ÿÍ[_­›—Čšœd^_1‡9Ùë° n% }qAka\‡Œƒ‘öț¶ Ûb7ą:ö+ŰÂ>GQèçÊVĆlUę]nś~êŒcú¶0äuÏüÄ07‹cÎń–{qCúܜđ~óÛ诟ˆŸ2mêïÙüé)†Šß6ïoW]3óń§üïôőœcêìkçÏyeù¶[ükű¶ƒo|ł0䍱țÿèčțĆG§ÎœNRÿ‡Ç”)ÿ”~„uČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† 7.0— applicationd':B05FB1FD-5F2A-44FA-B5AC-17BCA248584B-7379-00002316C534334DÀ đ$x՘gp\ŐǕ“™É·|É$>fò!$CȘÁEÆÓ 6`cÜ168 !L˜„!’PmS»­bő.­d5ŻúÊêm‹zo[ääÿ?śíjmŽB`‰$oô›sîyOïțîĘ»ś=)j–cŽ![FÀh="`[sDÂ6# æz0ŚeÊPmš V%KoIœx»Êć«Ś^ó”E‹]ę9èbA‘ú,yÌ)SĂM254áuæ„yÁFńԋŻ§VF;ìÒ]•!e [ڇĐ_pÿáș 5J ·ò šw™ŒwÉ@mșžŠcÄۖ.ŽD?†° cFSê_èbđS ”Æ lä>ŹŻç‚Œ4Ù€»,óŸ,Ÿö q_83‚nìr€ÂżABXŽ~ÀÜDx"g=ęšù{ʱvæÂc—±¶Bé.OțȘxőś”eˆ#óvt” ŸĂ#kțpPz-,G jÚFÔ6)W·]Œv™t•Èp«MÜösű âÄŚ‘­cđ¶ŠKæńŠ1üÌï1XMÿzuù(Æ1\óŸ.xcĘLžKdŽęŒôŚćJÖż«äŹű\CŽŽaČ%M>śÄa ?ów V%ÉöúÊÜcˆî`ç Úp'žwËPsžô8Ò€ĆvJZóOŠżłT|îóCźŽaą9Uönœçqt;ocšL„üèdđűjÀUëÌYGNèîăÜĂŹœPúńlèŹH”ÆŹŁRŸyŚTᚠCĄűœyCŠŽ!zńVĄëyCE‚Lő_„œ‚ô`^é‡umœíŠÆ†nđwă{‹”Ӑ%|wé^“üŠúűÎTc ű]OÆ`Ó1Œ7„Ê·ŸńőëĐęćńđG?đ蜐/Üꈏ1jț^Ź/æŽŁP9ÿćçÔżŸxÿšK(\Ń:ê·Çêœ9—ênałàȚ4X}îCš|Ș1ô–žÁ=čO”žXĐŠÛ4æ˜ìĂ<òțH;ÆЄŸ‚c`Ÿűì°7y1†îČXŸ+}|ąqôŸ–© ?æQ}I0æáX5žc›țc˜ÿŸști/<-­ĆI29à”ńžíl”Q·CF]Ő2ÉNŒ‹ôá;¶7M¶ćbÜ'G ÿyhÍùè):%SœUêÀ:V§źbűD¶Ő•hۂm^CĐöÁąĘ&ő™â*“ÊűęR|â9ÿȚßÄvűy±œû±ú«y^ ęCìg^’șŽCÒVxFńïÇśgą%[*Sßv^uŐAmNGOá ÌżSE Xsri^LN˜æ~Źƒ‰Ž|ìĄÒUqNšòŽKMÊ[bÇ>Zrúe):ù"ű—”œzQÛö˜W€,ö5©ˆ{U*b^GÂëâÆ;ÇP]ȘdûçšÍéè9kÏT|†f —^·r:›±ۈ˜ÿIű7eaJÄŒž–‹ïJyÂA3†łŻH)‰yU.ÀÙ·_*pź2ń€T;€Ïë5©Œ}I.&”ÖœĂrőą«ź†ȚÇĘÇ°—`_ŠęHg!ÆŹÇŠ9æŒüŹ\{͗Ż…ȚÇ]ùGáÏgăyg æÁa-œé1D/ÜœÎ|mɑŸ‹iâ.‹—–‚“Òœ{Ń©ĆgQ›qHq€‹őY‡ő|cî{Òl;&íçOH]ìË|źÍéèČœ'S|ŽȘ«!€čôƒr¶Ăsș2­ÏčŒÿXk.țËÂ>šąÏOEŒ8Kcđ^â€ï‹]• ˆ Òz«„Ż& ï}çă1łȚ”žîțyxOÄ3‹>~wș<È kč֐3s=@îsó _Ʊ5fà=:Yú/Š€TžĆĂ3 ß ü]†ö`Cš Ő§+ƒ  >MPšcïßÉŻÏÙż3ś]Ì?žIp! ^ț h#Ï8†đZŸű1ÿŒŽm֙3†Ú@s«ź Ś߉pB'šÍéèÌ=„ę{<~OpŻË#ϙh`æ\8\?6Dæ†đë˜ój€hꌊÍó9sśśdĂûĄț.æ <ÜÆ'`”IxmșO“û\yÖïÚĐ.s-áőZŚm<Ü:G'š]rüî™'泀N~u!đB›čÖ rÖuŹˆzȚ‚Ś{ČߞŃdŹkAa|>čđNëwół€?8ùC‘0ŒhęőZDOÖÌț1±GöAGú;đÈł|.ÇxÓŸÖʙoFôżć–ćČjŐ2ećÊ„róÊ%ʊ›ĂXq“DGßš,_Ÿ8Ä2°tÙÏ KbɒŸèœÙ‡ú§ęs ÌéÆș߉š5§Ż  =›ÿŠMśÊŸ};eßc;ć±ÇvÈŁn7ìĘ.{śn“={¶Ê#€Ę[dśî‡äá‡-vm–]»”;ÁŽMČcÇČ}»áŽ;WéœÙ‡ńÛűÀ3Ă 8sԕ9c€Ń‚Ś»Ò߈èż~ęĘêùmÏÓČçïżęšëź0OæșmÛFÙ¶uƒl[¶Ź±ző œ7ûúûp„ß•Ł~êŒhêS'ŠmÎÏîżnĘêčûč§t ?ś›™= ©cŰńç_O{x]7?x/ÖÜ:őœmuŽ,Ăzżqń/áș럩śf!üÁÌk6r€~Ì5âæ+švŽžÒ"ûß~ûJuÜț§'Ô}Û%[ÿđxˆńę ïŠÖÊ}śȚ)«o–%7ęX=#Éü}„1Œ/Î1ü_ˆmgځˆțÜ8§tßòû_ʖg~Ąy ű~܅ïă ì=t› ‘ꍏÆ`[™ÎÍܛܦfą35Č?śÇï‘ îVWČéé}Čț©=ČæçÛ>vźgbfăÎ5Ę5Œ­góçȚ}ÿ}wéÚ ü>|’螉ˆțê–  m‡Ă:cŠx›Óń;™łú/ŸńGČníírç'\#ł1Ł?<è€1ÖBÎVŽê“M)šÏæà ߓhQóÿ¶Mʛ2^—đ©űöŸlÂúŸƒÿBÀ{łúŚŠÂ߀űżĐŃÿ%Yđ}4’?ÿF"Îúy…śŽ—Ûԟ}ÏPțŒśgșZ5?|æKŁąą–Y,Ńàf°4j~a_óxDEęcáQIČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F††V0_ULayer 4d':B49D7B18-ECA8-4770-A48E-FE64CB968BB9-7379-00002316C5317201À@Gxí\ xŚÖ–ÁINNŠ“áäÌ' I$æy*‚đŁhÍźčÔźĄE „jȘ—{č(EUCKkbĄôUmU UEo]5Eïÿź‡LHÊœ·ÿó{Ÿçíńíq플^{íę}i‘û˜öî4xzx#8Èô‡f©è8PÜ<˜5s&Bê(ö‡f„ŠUžËŸaĄYżÏ‚aĄĆPžĆg)P`B 8ìáêč°ŽÛÂT}éW70Í ›5T•ÉÍg!żÈk”8ĐčSg4ˆoC°IEä‘ü'QÊI_ÒF­š”ŃŁ[w țó` <Żöz 8ĆXƐgÏB~‘”ŐË­pïî]\œz«W­B»6íP,щiïŒ ż@U&;e>dŸ={–„âöí[x±Ys57%żÓæ.œ?ÏVâȚœ»èŃœëTčÇQæNրìÚwÄßfÍRëPd•üì”4ŃqîțnÜž†  %żłß„ÉyŚŹűe“Ńąô›RGêæG™'±łü;,4kOÊNÉ=ßș•w‰ cÿ"»ìł2wÙq{źÄ b»Č6En'E.ù•úż‡b«Ÿ3‡œä„ì/’/ț›âæAnùeÍÚmĄ8°?k焔uúŠ‘IŁđć—_Șö<ˆM7Ș9–qH;„̅ôß(Ą1ŚzȚ˜BÎW2o•*V-ü"_҈‘Ź™§ORg “ŃȘ(~9;îÜč­b2ɓv B§ìb_=ÊVrâÒ„Ąj•jȘMY77ČË/ćÄÖrŻ!ÁÀā,gà܈_)Æx ƒ©q•ș«YŁ–jCÚ*EWRçËÇÙB^ˆï’>„ì“ä—ő'vż49ïšMß” Vú‘]ìC|ç·ß|͜‡(ŒübŁâC;ŽïŻźČÇI[Ò§Ôy’ü"»ŹÙ[·rźÙ›7S~AüCXhqćçdŸe_̎‚È/ő%ßdŽ`Â[/ß`ÍŒž\æXú’zÂÇÉ/șòö`íœXŒh‘›Ž!”țe?żœO’_d7›YŒ㩕Ź‘?ț:ëŻjźeÿ–zN>N~č?É/6țáôiD•ŒQăŸ)ôÖù©ùÈ ‰díHY‘SlDú:e—yË/ÈZ•xNt%6*őČóIò/KIa+91—țžZŐêê\ç€èxôšQÌ͉kŚźĄóŸ:«F|ĄŒÛi»ă‰ï_›~ń…ÚWdu(uróIò/YȄ-ćÄŐ«Wyę:ndf>`fæuź‰œ{€@âűßhSRFöĐȚŻöQkFæAôùÉ'ëY*/ÄÖćü#eEÎGńśÈÿ4xmèkÊÄGÊùIț„Éyíçi òËZŰ-żœIöw‘« Č Ÿ$ÿœÙsŰȘìŁwžÀÛžËßü ùwïȚQś}ûôUíÊÙ^bÖ ­uëÒMćËÚx4Íj~ž$żèIbWń+͚4{,ĆwŠïÎ YżWËÚmÒž‰Úăd=N™<…č9qăFŠ’ßčÖEiGü‡űÇÉ/û—Ź1ïă(>Pü§È™Ùę§èNú”8OîrĂčÖćŸçæc(~@b ŃEčČ+żÌQA(eĆ·äFîęKäßłoß^æț~È$Ÿś?-żÈ.kśÈ‘ücł‚âÄśÇŐčò?-żŰŁűőS§Nâi çág+żAíóč!>)»üb?SIü$Ÿ2cϞBSêəLödY[7 +żÄ„rŠ˜|űŰ­[·žźXQœçTLLLÓŸ:tèđê‡\šȘn›4bűrï`+ŹKŽĂ:ûsžÂPŻFőiŸĂXï™Ą~œz}ôŸŸ§üZ €mă X¶ŽÍ· -—€!‰ę°ÿț+Æ ;šË>>>Jî—^zv»źźź ù \črhŐȘŐÉéÓ§uè‹/.WŻP=§ÂČ°€ö”Sđ(Y ±%"ŻôìÙsÛx*°OCăFŠzxj î1Žm€yË=XűkĘÉ>ß;Ÿ` ôz%ovș»»cßśuìŰQ=çŠŃ żò `ßtf‘ `œ|| ș­`6Ż·mÛ&‰ebccËÔŻSg•›—?L#WÀ¶2§ȚS}X§luÖg°îBzœWÊ#d”€‰@îĄ?űàőœ›nž>0Óf,[îÀ:v-ŹÉ'ÔÈ8“o«ĄđóöčÊȅ†ŃhŽ”‹‹ûÀ=ÀË_2`„ì6êĘN› é2·ąđŽÀ±ô8l›3áWŠ\(«>`RR.\€ÍfSiNÊXÆÁÁ+Qă€9pçł·­$lÓwÀ*s!zâúÍDQïÓŃQQ­XŻÀ đïèfŸdM9 k`„ì¶Ő?# nGž±/QÔŚlĆü{°ÌÚ/?•æââą|·,8AŸ«òœô-Q ö Wa[p^ț•&Ôxëa4ö­ś`Ę|vŽĆ:aŠžițÎüŁDdD7KÉLÇG—Ô|Z?č}„FȘœż?úőë‡òćËs,.0^[íšĂ(„W)ĂęˆR?„|càææŠæÈĘC óÛ[aß~ț•›šŽ„„tíڕóêwWw˜ÏÍZcœwëŽtŐê–ČĘŁX±b‘J•Ú§«Û ¶Ž»0Żù^!aJ6î”Xłfzö ŽÒvĂțéeűFš»ôéÓééé|?qÿüç?±aĂ8ìv•Ô"vŽŚ”8KŚK«Ć·ß~ËîeȘL`›Ś`Mç:Xunæš]»ÖxŠ  ˜h€Ï3 Z‡ô7h>ÜiƐŒ?uëÖU} jÒOî MÜ7wČŸŠM›Rą,ûw8(êî­%Ö”?öèkhęCT]WW7tèĐƇ—§<a°.;ÍùčŸÚíQ·F”;͛7™e …6ĂyónèùîițaŰ9úê-TŸ9éÂqč"dđ{ć+éÀ&œ•M„…†b3ífÖŹY8BìÂ3čn˜æ’•ç€” lĐEí+Öy‡áæ€z/ÔÆčsç.4"XŠÀ`š0‡pú ‘/€ĂHe·!ƒæÁ5›ÎČèąÊViŠàÎăP„}‹^œœœ•î„Œgżß4ZΧ<ç–_gä=óŠ`Ût~q/šŽąE‹‚q,Ț%ۇűdpÿ/Őčs§YS'Žżèă„Ú%-ă>âüÓoÔh©ÒrđŸ<Ą3F%P{ïɓ'ùâQ€đętł&UR&;)”ČSÒ2Űž”ąÒ€ęc掩ŚÚ·kûŠN§ófÚ#Q:.źŻŸŸßgÚđrĐT ڝ kŰYŃ»ÁŸ`è<¶Ô›°-ț:ڋôÍjÔeÖ|ŽnĘZ曫–ßiű[7mÀŸ=éwŒ‚Ő«W#„ë_Ê:ëˆ-4ì [ś­äSĐ7îÉțșYęzÔëÏJMài*łÁÂœ°,ëćęCXÙžžż»™"a|ócŰ>œĄö?+ÛÌNËÖ;\ŒWè—MƒçSoîJĄűyúĂ? Çaˆ, ßʍá[ș6bËVÀü9ł!ŰŽi“Č+©#ôą\ÖgČöÈM·a•ű$ j<¶Ž,Ú·ńw5cȚžoĂÍC›ՂuèÏ[¶jÙbŁ‹1¶„'Őț­ÚąŒ6ț;_î€oNeŒ„îČŒăǏăüùsŒ1+À»Őë°űc%úÔÍ·a˜ŸžĆ+`ÊÄ  ’e#2æ~3Ôș–~UÛùĐJùULAû2żčžŸg;Žo?Š±woÆ„€`#LSÓČÚHœ Çú«ôûïÁ§Ípű¶MÊÉv#áĘz(Œ*&ÀâWŸŸSçN” ”ŰȚMûÂÎń©}›úùU|LßeÆwßƱcÇàë㠓Éÿ°èu‡Ûőaû99úöŁ+îUóbÙtGéÎŻÍŒP­ ÏÖőëő Žeë)]IÌacb±Ć1fŰPL;“Ț“cG#ùęê{hŃęÜčsùœÌuDƕƒiÁŚ0o˒ĘIËŠ[J7ŸMûaúä śîQQŃ8p vïډi“'bÂèQ˜8ftNfßĘÛ·…_@,ïîȚچZ'æp|ńę0ÀÈXUb%s*óSNCăˆÔšŃÇă żÁöÒé°víZüűă„DW€qÍŻJ"wČ}ßS1žooÖȘT©ąâș‚ qÚđmÒ¶!mÛ6܀Gd%ŹHY‚ÒQ%ŰŽśëûyë~…WhiŽ©Ò¶€"}çvìڞ–‡‡ù­êńăÇÁë,\žP}“QȘŹ‹s.ٖÈ|ŸÒ¶đi1“ß|ƒeĆ:ƒ ÆO|/±;;·oSífçî];Œè}Űő0ôÿ,ÛÙźÈžțŒÂËà“Vcö_gÂĂQŠr_yx>™ŸÚèĐŰŁàV žĄ1Ég]x)šCA ///ôêՋŻtíïöÜçÒÙûÙ­ŽY çĘúÁYű‹ĂĄÀi~Ë ŚëQ""ááĆáÇŰ_Ëösśƒą”!{‚1°e3ÛJŁïŁ|f‹rʱcÇĄ’<łê»MR{·Ź7Y+vÚŹ™±€™1t%ùûńŻ°Wœ‚o••±X,êęț©'żžÓŐ9Yâ_[írá7pyŻț3ăÆqf=Ś"ź0]ÈöČÚÍÙcwÒŒžz„<ąńAö-w )›€Æ ăwpżiMTì„–-Çžzhφ§dő)ú’:ù‘íXÓ˒cІ8àvßíÔ©‡ä·Aő « í áÍ1ÚąJcܘŃÌżCÙ§lN|§œëwVëRæ^Qúȇb;ąßf‰ÖëŚÇÄĔgżĘBăá±Wߊi;čÆż‡cÙ© M9‰Đ„'9/·!çHÿjYș9äWŰ»Oo\çw~‚}»‘Œ`>^č‚ïs–)çT—*+ő„»š‡'«őm[wĄKŸWśö„YŽ‘æĆÇ2f<ąkÂßÛ;Ùj”Fȍ<`ÛćŁ##?6đ[KŒôFèC ó ‚”ËXŰÒif«3+«äačŰ~k1[ùű˗/«óKúźtôîù tš‡û”“2/ÎŁuć]Á<“iꂡeżžț!đČ"Ű ŁÁp:&**IŁŃhYï‘0 Æ1cÆüćè‘/QœȘúV]QÇőnY ¶EßđìńđÌê€ÈácpÀż~'žúƒ±–ZŁŒ§àîæ śß F=P4[̑uÚĂ.g ™{ ńÔ©ö$}҄·x‡±"ŁQBBK>aχk–/[Ο]ĄńòeF:<łÒnœmg§›‹ LCȚ‡c7à_„94îîèÛ·/7nŹÊ[xÏ ~É·j3UȚżeхărSv$1ș±û$ŠAtTŽÄŻçč¶:ńčPxƒ?ÂózP—ń3dȀż1ÎȚoEŸ ÚmUÜ`”.ÔqȚÿŽù î<;ì°.g|Ïuï`RőrSÇùłŃö©·à[Íÿ'ۉ0‚ù…Â۱cÇwéĐÚž:ŒûčËâoixj4à:ž†TŸB/ÊŠÖÜêŸĄ»öÒzj1 q€ŠKEŚ.Ló‹ïŒP΁yàć{€œ0*: Ő«UŁ?;=pbâ`ÁˆŚ_ßCńĂXźÀà™ÉŁŚ+ŻŹrś b;_qO»ÉłosŐWłfÍšUđo̖«gWÊa~mBśÁŒ$=?ș»…ùÍőŒîA_-ë,­ŐjqđĐ!uWÇ{*Ög{×Ș˜Ô0x!}ę.ŐȘU«)ËÜÛ«úûû<ô}”ï›W_à=I֜GrÏäÒŻĂ•Nęk·…úČŸ“—:[Ê}mÆ 1qâDț JJĆÆȘș26ß°Xúɋ°/ț†ú5qLź=f /^ }ϝ,ĐŒżòśö­wĄ“słĆ<†ő ŒœŸAŸá)§ŐYĆŒ…ò%„À“ścÌ~@±i[ò î+™< TU}»ŃŚLâßäeÇ„_E‹-TCH›aj†üy.ęđC;’úŸ±”`_òœêS|”eì*ɛFôy!†  •ZGŹó©3„"}ÎCÛ„-æŚÁ¶r0ögVUkCâc9wW„ÿčćèĉjߕ2Z_XgìAèvÚQőŹłŽœ%n·}ô/˜Òš{ÒÂx ˆ‡śMź”ž,S(T©\čNtDńt7żX'§ȘęŃÌ6e?ÔŚj…à–áŰv¶yogÍ;«n ‚5jšgĄÄ;‚jŐ«©g)ëW¶TžSùî" |L=§đùLŒ%ä,ÜcŚœ;űșc6ś,Ö+4ű«ZŐ*•ÖQ0Ÿ¶XAbÛæ{êWüœO…ÆJ&'ćL"èÒ„«z.YȄßsßEăUyv2€ŚTuO(1•ŒÚ6ÒWŒ˜ȚőĘlŰ Á–{*8Ž°șuêÌvwŚÀ@Ű¶Ț…9őž:/g#:"ô”ÊV\hË|}ȘbŃ+WŻ`ƌX±bGŹ[żšąűúúą]»vü›š7 7Úa™wDÉmąȚk/‡śŸ:Ęύ5ÌîŸ h·Í_|ń]ÏșțÍúsžy‡Čì }’+–„P:@îűJKéUÖÀÁƒ™ țíámćŻhĂ*oΜ9üśÔ\^íÖž|%ç*{Ê hJV…ĘlŒÁrÏ|wUnäÈ€ufC0|Ș6‡źj Žoő2Ÿûîű‰ćïš–ńÎêíUÉI›cÜńŠ0qÀlȚŒyëÛÄl"#cś‰ˆâđç=»©$jUź$s¶’eŸ9ÌÄ_ˆÏ@L‰Hùûâ»cÇđ)Álcùčsçn9%J”Pïń$†«ÆœuŃąEžđË/©ÿ9,úKèśĆŸ”Ł..^Œšî ™üLÁXRǟƒfĂżžąbè“'Oòûę[LÌA\fč·ȚÏżÊd țżÖźęˆÉE8ț<EŠü/žbLČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† ù0/ÿÿÿÿăswfd':CE265196-51BF-4C08-BA8D-06EF79150A40-7379-00002316C52C5E22À ș@#x͘yl\ŐÆSJhIEšj€ ­**Uę‹ț[‡$Đą–ȘĐJ  •J „PB •@U)k Yí„ÄdßăxKŒíńŸí±ÇKŒÄ;v'±ăm†Ÿ~ßœïÙÏN ZWțéœ{îčç}ç͛śžgF cšÙ‡A2ÔDK47>­Đ\VžŸY'ČçCÙ8Śł”é8U–„±“Ő˜sÓì[fΜyĂŚ8xˆ/t 6ćàâ….|tŸ»Țž|!ßćl "MïoÀЉJôŐfĄ·*…œe|Lù_žțóĄ,DÏ” z*đ?PƒH_†O”` !Ę„‡0֑‰`j„-|în{8!yɞ|ŃŒŸÜˆq^7c=lőŁŻ*•ç?ăYW€”Ï5îZَ»VX~è0á;kòć|Â'WČ^”ïZ1Îó?ÒS‰ Ćè«NÁ™Ú#FÿxG‚Ù[;)çš?‡,;ŽËi#ȟŸKbŹ·Ö`g1F»ËpŸĘpe2?ƒ$ŒŸđ™ÆÚ3‘œûĘR6ÀżŰÇmÆíÏ5CöNÙçZè Ć­5Đż“qĄ|ćȚ._kDq»ŻĆhż“1łÆ}ÊSNo†:‹p&”‡Œț»ËbŒ»=äšFÛ2ÿƋÛŰÿbß}Š ÓčÈă»h.ŒŸžÒü6Ç Ćœ€ïXsÇóŃÌ@›Ú ö"Ò[Žńp{È3=Œ?†„|èJ‹©‡čO5bîŸÉS!ÒhŽ-;w Ą5sźËč0ț”XÈűßaLsùČ,±”S>|gűlè­IEKÎN4eoGŽż‘“ìĄă]ùì!Ûô°à§?čŸòźÚĂ­Oqë“őòƒæűBț·§Ć/łrŹÉîÜ)‰oQzűʕöúô͈žòȚZÇ*é)a~ÓĂpë1ÜqÛÜïSâg·¶EŸ°Ÿtü?ő'óüŸŐùŻN6ú«o@ôLÈéĄQȚŸ"=„N9žĐ|łŸùÙ”ù©ă[żŻƒáw„VCÖÀŰĆKŸàùš+.n!fΞăš|Ś*7uÛÛ8ßâĂÉ@š};QypŸÏmˆòÙlz}Ő¶‡î~'űțJe~êutóăÌyÂáńZÌyŹ–Ű!7?Q ćž(fòŚ4żYŸĂ•ræ0&?m;ő·ćńę! ­y;Qud#.uó}Ł=4[걏ÏêȚ2ö`ïMçƒ)ŸPê{˜ęX Ä2ûQÚĆk5_l­PŽ˜ó”(‡Ÿ˜łžÚZâ”BkÊ·~i<ÿCŒÿÔ§ăxțÔŠmĆ„‘S|· ł‡óž=Ę@ŰC€=LȚ›ÎÖ%Lč—őpă/’Zg=Z 1ûB;‹vÖŁUŽubÄ”ź;5îúźuùńÓeŽ~?Î4CGá>4ùöâÒŰ.žf=ž8ŰÉZ©ßíaòȚ4ÆúȘë]é:rYŸ5Žnț'üɛ‘{hČś­AÆîŐŒ—żc8șÓ±BŸ'Š5Í„ÿÏÿéP&:‹śŁœ4 Ł]îoĂPo †ÂA uŚa8Àh/ßùNó;íč7vä±ïœƒ”eĆ<Švż‹șüęšćwźÖ·”čŽč;  Ő<`ֈ™;hźÁùń’ƒéôc )ĘćIـÒ=ïąhÇ[đo{ț_‡?ńß(Üț&ŠwœƒÊï#”‘ˆŽâ8ËwűHž#m>ŽméșțúŻÏ€Ž˜Fńž}§JH)ąòĆTż„X_Èò#ŒFNđš…“5ÉhÍߍšŽphK<6ęgVż±‡Ö lß{(Ûż•‡ÖąêđzÔ$­CÍĄ5Š$ ÌwŽsĄcÈÚ”ș‚ÒbęE»y-V#ÊÏĐö0 oÜń„ÙöâÎi»ùțFęç[sĐU†[Rđűòƒxhénüfévüö™Dl]r^§Ô\™Ž5)ń€nDmòF~^ë8ü>Óâў» 7ÌŒțÊ»êè+ÜĆ{ïËÒ }ą·˜ę'ŠȚŒO\_VkBsĘKFyOŹ+śă‘W‹pÿó9xà/ÉűćÓûđàS;È6l^›@ęë •ŒżV“@ZêűŹ’†ŽMRé¶áŠÙ7ȚDyW' vRżžE„šä»1Ą˜—É í”——•âçŻE܋˜ÿŒ žÍÀ}ÏĆÏŰÇK#qóN4d%"Hšr¶ń^”-yüùwĄłhB‡ŚèčÓ8é߁útVK”ç2Bąô5śúÒ*+LÌY ‡Šńà«AÄ­ŹĂŒ5ˆ[V†žJL Ÿóáá—󐜔ŽŸ@*ŸŃ)Ž)è'§êRqș>ï}Éè©:bâ­©bŚŸÏśÄŸ Ł'.4Zą=…ôe…b‚Ÿ‰Ń—%6ŸÏŃî",yŻq/…šżó^ŹÆŒJ±py9^/@č/•:ÓűlæÿeÇűÏÀčŠLĂÙfҔÆBŠóę;=!fęœyòü—-"JŒ„źˆ çźŐșE=ŰXRf„ŐțR#iBÜËMXđJy…¶ź›'ŒïÔ2Đ71œ…-ÒDi1ȚŒDDO–±VëĐȘȚT«5k-:ž]+À`G!~őšŁ{eâV…0Ÿ€ćT0g2OŸöZë!Ž6.kçZï͍]úy?4{yŒ6ö[ë̅7ŠcîOŻ0šç­VÿK ”\ó3Çæ ćGLLօsc”NßY“&J‹iôű¶ZęÚÏzČȘkP=w.+äóZă»üâŚyœŻhŽ°‡žUŐđžÄ\éQMùvĄŻžŹjȚućśű¶Äź?g Żu^ËÜ«ę^ąáü©qÍY?ҝOü(**±ș=đ{كËB~'Źnî1VÈ'Ȝ»Çˆ:siąŽ˜F8û^‹Œ—˜œS1őű«üéhmՆÌ[Ț`Ąî+1%ő3w«SŰùTgoŽ]Öfž ~Ïž/ڝ7Q#bü<ÏžÓ‹lOcæ/ZíVȧvùÒżą{TGŰę‘.Öc Ć­eMùD”ŻEwÖ&ŁßÔìÎ%ŽÆśÀy”hĘX’°Żœśyiu0>5ë@țŠ Éśíšz·ŠPʙ›źM??Sí•ŸˆjËś`ëÛžüÁö<üú|Î.ŁF ©uŃJ—zÄ}«űžÏ=F3­­c±qaçvęőgÆsőóQ[Cűˆ,QÜAÇ {Ëű|„fëwóYĆ5­ËNâ©5cMc'°ńźŒűŰő3Ś~†Ü«zü]ÀÖœ+ŹßYŸEËyÏ€f—{yt1źułßÁö"ßZs 7&ËùQÇÚy.€‰Òb]Ç6r?7țź4QGÈŹÓ‡k«Ì”"ĘÖÖăDŸ?yòŠű†"ëÁÍéâš|ćïBšwelŒ6ęŒîÇ;Čm=ëŸ5Ï”ä┄ ÜCœÒlô“ûVÔ!ÜÀț•7…ÉœÆșsĂ€oϙőÇ;Ź•&J‹i(Wœ·g™œÓ9’^Œ7·–ăÁWêŹvžó{țVOì|2ߧ™7GÙÏÂäP»±–1Gƒ4QZLCčȘ3~<“VŸjŃ:uuŽ…ŽZʂÚiW­ăÿ &ùÂű̜qùQ3śąžl6Æ€Ś±4QZLCč:ÎhëQSCûeÍ”H«ó-Œ~+©}ž9NŸjLűÂőeœ(6ĄÙ±NÜh /M”ÓPźŽ=ҚnjXĂ@Ț2«ŚeÿżÚȟżuŽÛu“'ä{QìJœĐ5Bk|â±#-Vƒ4QZLCč:Ś#ÍifŻê˜cȒ{š_ߌ?Œ^mtwŐ隝\ÿt”“eŻ3Œ™Ú‚s­ ùd€…ž&M”ÓPźö7ńś2}ÜoaM+ôÙsmbÓq㼝ăú4Ÿă<†|];ĂM©Æ—&J‹i(W{†C)_ €Eš(-ŠĄ\í;ÎțčÿËÄęü„‰ÒbÊŐûƒȚáÌo9_æ·$i‘&J‹e|Oč_EšíGäjăn7cƌùś’d‰›ń„2ăîÿ„TČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† E.0±rard':785F9AA0-2E04-4E5D-A83E-CF741050C650-7379-00002316C5297D4AÀ $xœ˜yt”ŐÆS+v‘žÓÿÚ?zÚsڊK+Jm„ ­[==‡­kŠŠ îmŐÚ֊‚b]Ű ¶JÙH2Y'û>I&™I&ûÌd!’@–—Ÿ}žś›o2I&zO~ç]îû=ïï»ßÍD|AëŻË>Đï„ŒŐ‡%Œi‰ék? íu€É™š9]™$'‹ŽÉPGč|kêŐߞ2eÊU_AĂ%.kësŠË§gÛä“^—|r& Ąyú„ŸÉézńő8ež«Fú[K„łÒ"íeńš-ćsÈżìú{ńŸ©ÿIÛEP!ŸÎ29ŚZ =5©â.Œ‘ĄæTé±'űPÂEŚ°êśÏÇYvYćrQ›*Ăžo†Œ%ÒçČJgYÖ?I†[,â)ùž.ȘíxnŸ˜ì|~żbúŠ%Ą>1cÚP˜ …čaŹÿ€·TÎ6çKgyŒœȘ<źú‡›-bOÛĘ_ú{ˆ|&J.7}Í2è.’Ț&«xJăđ“áÖ ­aš)UÒąß+Dű»đ¶yć.1ÙòÔn”&ŒM̘քq8ŰJUêaéoɓSŽ,iĆęï.:*Ăî\Ԑ©5 6ŠHäÛًđwamĂò2}Ęęj;»ÔFżŁ>ó„čOî úŠKÚźMrŠ![șì)Òh="M9‡ĆŚ^,Þ<Ԑ„5 4$ËSKÿđ$]P <)Ń =í rpőQéӚPïû˶©%æž±€ìX/§đnhŻHúôâLÛ'țźJńu” †|nËF iZĂą_ęìvȚt ï.Ę"ï. @?„Ț“}Čï”#ê›x]ÒßsVa??G;v\ô§l§țtńâÙ„öꀝâï¶co­B „âó «ÖpΕ,?űȚw~i“jÿyt‹wÙ„1Ą.3Š„vú&ì”cbÆŽÉXÿÓ\ÿò8Ő_»Uü§ȘƏęÉç- Ԑ.gëNÈ7żț”«!ïŒíí‡7J(ëțŽIĄO]Ž&žú”ìgalډHĘč^zë3€Ă–(u€ôèfŒŸƏwłÖ@:ˍÜ9x&pțp$ 䝶>zëĄ 2œ]}j©ì~5Zk0ócm8ű9ˇӘ…óCąžČHÙńmòiżç&ÔPgè'xW·Ącoê”Çÿż°†ï~Ő”öő2ÖÜÿÚ áęeĐżsƒô7cÿ©N’†ìCR™ž[>8‰ł•54ë9Éß]PC— 5ŒìM§«â>‡Ì kűÿè_ęV9U“,ÍčGęqX>ê‘Ï»QƒW>íkA .è7kٛ†PCgY,ÏJW€ ëŚ2#ŚIÁŃ(É?ČSòmëm’”ûùFIßœŃ°„~(ûSÿYŹ·#UZò?’ŠÂDìi“s]Òß^/ę»ô»«äœÇ&ƒí8óuă™ٛ›łPśá>ÈżČ&Ę śŻ—Úô©I=ą„Æk‰;|;,c»ö0æ‚ž)/VZŹÒăLwń1±ß*…‡Ț“Œęïˆuï:±F­랷$wß:É?űź”~ŒA){€9ÿc93ŒÏS bKȚŐvć•_i“j]ù‡°|Š @ĄűĐ'Łę`ű„>ĄïĂ}0Кƒ=Ô"qâʎ–êâlșUŠ>Ú(‡Śƒ€èÈzKc6IYì©8¶Y*b6Š=~»xpæ8ăHËÁśK mR­+/śbčűń5Œ!4đ©ÙšĆŒaĘù2ęœźtìA XŚ€Ö%ćń‘F G7I1‰Ù,%Đ\zl«T Ï–°M*ă¶áûÚ"¶Ű R›)M™{ćȘ)W^yçmč±§a_Šê#íùšrŹM}`úŽì#Œč— bOìkȔ“ö$=Ă9ÓśIՉR­%Ôłú J±ż–[âv©Â»Újwˆú śź‘©Wc*䝷uä€~Ÿó4 oæsĄŒÔ`‡ }š-Gú3„»6E”Ò͙}nCÿÙŠ,ü–Ž}ô„Ÿ ŒÇ„­8çąăà˜tÚđŽŽ‡—.pČ*Aș«qî‹/jfȚ•°uòúłqNì,Q=>Oźjń{sáÓæ|ÍÁ§ÆxŰĂ3AŽœĂ>xŠȚ‚st’œȘ=’Ąí8t&âčÀÿeˆOŚ„ÈgȘrș8S€ùó8'mŸŽțöŹ(Ź±j!~ ș|&ˆMË~ÖšË֟ă3OŸ6őyŸæx&„š mR­=kű;Š0WæÁő1ŚXË>ĂđzF_(ŒŹ°ô BÇŃçäŒÖÈÓ1ûÛ3'Żß›ęŰőłXƒPëśzü˜„æFźiűĂîìÀg­ˆÛK8^ójM«e?ü@5AÚž6ő»7λáž=…sW•É„déÚ)/2֑š|Ș…@búš'đ™§ŐZa”?Ç{3vÓĐ^tÿ‡}r9žć%»QŸŐăáw=ˆ ĘŠ%ô-bt,Ź7}ŒțëïÙ]Èë\N–Ź)Âût;öÁXè`Ô3C'1âŃ0ïIÛ9Nÿì•%Čè_őČàï”rÛj—ܱکö¶Śë•ßü».ÈąŚœë”[ÿéČđ”ʂWkdÁ+żœƒó’Ù+‹UȚG†–,XúÔÆŒŻ 9ü?ÏŒaGÆú‡ŐżąHŻ±xćf”—sN^ĂĐżŚĐŠ Ćߖ©ZéÓúipŒ;uÇ8곞,”[±~äźumòę»ˏœ(~|OœÎĆ9Él\ĂÔïŁFèńč3UŸj†5òFž±Ń^ÿÌćzo;ßj‘kîM”Ër.ŠëJÓčnùk•2 Ś­ŸdÚP9üÿ«6ˆ‘oK‰§ÿŠÇóƒśők›Tÿ/_ŹGk›WZZ=A3ÖÀč蓛žÈяߌu…&ŐÉŸ™ŁĆúț€5âLq‡ŐŸ§Ï!ášQ?Ÿ[>Ą4”x€;æĂ1{eĄÎuó 6čùy›Ìx§^jœ.GŒA|ŽKâÙ eÎȘ"kîS„ʍfôG©jR sAÍÈșNšNÿOšÿ„j™ÿ·j]łiś§ÈÌćyÊì2oU€çŐJYYù(l¶*ÍłŸăB™Ÿ4[皃wûœ%ÂkŒÒŽVȚ#°êƒ;PŸ€~8ęŚ?œź{4čęMCÿü—kdț+” Ïż[í[MłžF(·7ÉĘo8ń]aÍÇđógJuźÙO+ŒÆˆ~èzż@›rÔO˘}„>šO„”„ŐȚ5ÜŁÉío6BȘîyAž‚ĆŻWJAΒ•v”‹_ŻBŸ2,łWê\ł–)Ś=˜6F?tő1 òzxïœs&šVÿƒ\Ąő¶7 ęsW•‡ć‘”6‰NȘRËx"f>Q sÍ|ąPf>^ęęMÇaÙ%çń_Š‰ô_û€±ȚÁÙbs±æéŒ3­™§%ôq©ç,ˆž8fłŃ_±0À­`ű-Xqiá”.a‹ˆűî WČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† q.0tar_bzd':B0B847A9-6FD0-4740-B48D-A08479CA1F3A-7379-00002316C5269294À /$xœ˜wpTŚÆIbœb2“ÿ’?2ÉLă’ Bœ˜€IÜâÉ ;ź±!ŰÆ`ܓŰq°ÁÆqĄWą 0H †€U]őŸ’VڕV}wUBTv]rò}çí[­€Ćˆ–7úÍ)śîœßčûȚ}W;áKźŸš4é}NXÀX}X˜–˜Ÿ¶ÚGŠtW%əò9Up\ÛJćۓźûÎĉŻę .LqUŻ^gȘ|v¶E>íqɧĘaÍÓ'ôMÎԊŻË)CUÒŚ\,íći-‰EmI_@țUŚß㰈ż»Vü§l—A™űÚKä\sžtU%‹;?J“„ËçC —]Ăò?ŒcÙe•«EqtČ áŸôIŻË*í%qXÿjȈ§èh/$\Ö”ăĆ}bČó„ęŠé›–„úČiCa.憰țęȚb9ۘ+턱rșü„êjŽˆ=ewd\òś°íùčúNŸU;zódÀ] = VńÇà;8.CÍiZĂ`CČ€D~đwńŚŠe»„ôBÏægw«oÂŰČi‰Ù?l„"ù°ô5ćÈiG†4ățw“!w6jHŚê“dÛ»ʋđwqŚú%;€·ł/HäÛQÒVߥ>a;1}¶Ń†ÆŠOè‡Â\ÊźÒ]—)ö$©·‘†ŹĂâk-”!OjÈĐúëćÙE|’.Ș†žÜ&„sѶ֔«%.ȚÌÓ֗5ÉÁUÇ4îjíVŹ<ŒiMۏŸĄŸŽcœÆ»Ą”,NjSˆ3eŸű;ÊĆŚV„reš%5€h óęó» kÜ5ŒżhłŒżpłôœêúûȚ<"^W›ôuUÌ<-ÛŰś|1­ cł=i;ő§ŠÏ.”W&ì§{kj(Ÿ75X”†sźDùáśżû#HŚőŸ'6 á|ï=ŸI”3&Œ™§oZÆl§OkÆ$â#Á˜í‰Xÿ3\ÿÒŐ_œEü§*ƏęÉçÍԐ*gkNÊ·Ÿńőë ï‚Ś»mÂùh©íŸ7Șï©m æMKŰΘ0&Łę=+©O’wź“žÚ4iłĆKMÚ)>¶ ïçzńăĘŹ5öRŁwž œ? yŒȚytœžŽ^eśŠH”Äô©šÌ~ŽÜhú„ę›đł–‘ŻÏÀù!^\€äÄVùŹÏóFjš1ô“vŒ«[ Pƒ±7őŰcÿ ‰_ZĂ+ś­p­yxŒ‡Ő}€öbűp1ôï\/}Ű*€.ó”Çï–ÏûOálćA zNòwVÔĐaC Ă{әŠ˜/ óŒ5üôŻƒ~«œźJ”Æì#âL;,ŸvÉ睚Á+Ÿő6Ąô›5 ïMƒšĄœ$šg„Ż‚óÖîJ߶VòŽEH’sh»Xl•ôˆMŰÏ7Hêî †%ôC äŰƘúÏbę;ÉҔû‰4äÇË@W‹œëš—ŸÖZéóŰ„Ï]!ç<6hƙŻÏtÈȚ4ИșśBțW!kÜWțțuR%Uɇ@€TY`-‘b‡o‡elŚ6 qÆìC7äDK“Ușœ)â.<.¶[$ÿĐ’łÿ=±î]+ֈ5bĘóŽdï[+čߗâŁëƑŽGsÊœá}ž<éŻO[⼖kźùÚDHŚŐ‘{ëÀg*ä‹?}2ÒφOèú>ÜęÍYŰC-ÒV#źÌH©<ù1Ί[€à“ ’wxűH ŽŹÓž8jŁ”Do–Č㛀,jƒŰc·‹gŽnGąX~Xiăș:r"q/–ŠߥQĂ(B󟚍ZÌ֝+ĐßăJƇuęDȘ-R»ÍšáŰF)$Q›€š‹o‘2ŽÙâ¶JyÌV|_›Ćœ^Șă·ICú^čvâ5ŚBȚŻöìƒŰÓ°/Ső‘Ö\Ô9ÖŠ>0}Z¶ÆÜK°'öÖ„Ë){‚žáœ©û€âä)Ö"êŽÚ ęĆŰ_K-~»Tà]mUń;Äęù{WË€ëŸ9 ò.x”e€~Ÿs4 oæsĄ Ś`Ą}°%KúêÓ„ł:I<%'€>û°ÔeEb/ڇg&ìQì :€3uŻ¶Śfì—:ëAiÊ9$Žè |Żëjłî—OÛčP«ké~űŒC}j„%š3Û܆țł ű,ûèI}xËNHKaÎE'Àqi·Ćá +àTEœtVÆăÜ#^ÔÌŒ+nËűőgâœŰ^€z|žlŐâśfç%ÌűšƒO Œțț‡g‚,9‡}°»Ö‚st‚œź> ĄítÆăčÀÿeˆÏÔ$I·3Y9SœI҅|—ƒyœż¶[kFÖżP”?P ]>ÄŠe»kÍe‰ëÏ~Œ™§OŒúŒ_s<a BM6ź«5cűÛ 0VÆÁükŽe›a 8ŸŃ ï+,}ƒĐ~ôÙÇ9/€5òŽFÌöÖôń뜊A?öCę,Ö Ôú=† &Ąčá9 ȝűŹ1p} ûk^­ b”l‡hŁ&HsMúȚ-łoŸOțŹć%r%YŽŠHJ Œu€&Ÿj!Ѕ˜Ÿæ |æi”VXmÀțȚŽ]côŽ<ôqŻ\ nŐnԀï@őxű]@bC·i }@‹Xûí ëM«ÿŠûwçsž«ÉÂŐxŸnÇ> ŹƒzFcè$F<æ=);Ç蟱ŹHæÿ«VæțŁZî\ć’»W9ŐȚčČVùíżk‚ÌӉŸNčă GyÿŹVæźš’čŻüp ŽKf,+Tę5xZ2` èSóŸäđÿ<ó†îëGVÿҝcÁČMjŻ$昜ĂĐżŚĐŠ ĆߒźZéÓúi°ż;yÇęӟɗ;°~äȚ”-òƒûˏ»,~rŒŽĆ1É ÌaêśQ#ôűÜéȘO5Ăy#OŒŰhŻڒ<œ7È=ï4ÉőÄËÔĆY—ĆMŠèX·ÿ­B™Ž9Fê'i€6”@ÿÿȘ bä[’¶ŃëSčÁûúž5 ȘÿWŻ”ĄčĆ+M͞ Œ™kàXôÉ­OçëÇï ÆșB“êd ßÌŃą}ÀqșžĂêÏŃçpÍšŸÏ-ŸżPš<À‚Góᘱ,_Çșíe›Üö’MŠ>•=Bÿ0űÿJmAœhŁüű]ˆqKÒÖ1ú§.ÎÖęƒÜ»¶YőÏ~Ÿp ee6„ŽÔ°••v™ęÚÂ0ő/:Ö/_,S8ÇHꆔfŹ ûÆÚțPŁa[ÇêŸČÈÜûžfŚ?€5ŹCł»xƒ4áța>łž+Ô±fżPȘpŽaꆖó”Šv”ƒ ”áôßČ0SæŒfWî^Ę “L”yšg4ÎÚqÔÖaÌ|8fâțáX±ę” ê‡ÓÓc©șG“»Ț6ôÏy­JæŒ^­đ\ńûU±U5Š«n˜R{ƒÜś–ßÖ|żxŸXǚńLĄÂ9†őC'ĐûÚ Ł~ZÆl#ôAm<Ź%ŹțńźáMîz»ú“uÏ Â=,XY.y%8K–ÛŐ.XY|yXf,ÍŚ±Š/)Pn|$e”~è êc<äőđȚ9çŒS?ŹțG,˜Ąőη 곖—†ćń56‰LšPËű|L{:OǚötŸL{*ú-ú›ŽĂČKÎ9b/‰óéżáacœyÖąćyśJÀ±8&kà—ŁÀ…ûÿ|úqżsö ąÏ ÁsÈ{™đž0Ą>źq(·>™'Sćč{š-~‡Ôà·ę]hœèoIx §ŸûćmÏšVÚKŃJŠ.Î 2eQźLÇ;wÊBű€spî+$ß ‚ß·Śÿ <oX3&ô‘ŸLŸàl1™9‚Xóô ú™ÖÌÓú˜jî„+Ăt`^ôçN˜0a^€;À|đ;0w•…s]Ák„ÿŚ±KKČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† ‰.0Mtar_gzd':5AF3D56F-0F22-47A2-A385-5F0264522DFA-7379-00002316C523C5C4À G$x”˜yt”ŐÆS+v‘žÓÿÚ?zÚsڊK+Jm„ ­[==‡­žTĄšâȚV-.Ɗȯa AI I&ûŸg’L2“Lö™ÉBY Ë jß>ÏûÍ7™$ƒDïäwȚćȚÜûŒwŸï~w&ìKźțÚ4éęXÀX}X˜–˜Ÿ¶Ú^{ŠôT'əŠ9Ux\†ÚËä{“Żęț€I“źù.LqEŻ>GȘ|v¶UÎś:ć|O‚óô }“3uâívÈpg”ô·”HG…EÚJcQ[ҐĆőśÚ-âë©ß)ë%P.ȚŽR9Ś’/ĘŐÉâ*ˆ’ĄŠdé¶ĆyQÂ%Ś°òÏ/ÄXödɕą$:Y†qß yŠ„ϙ%„qXÿn¶ˆ»űÓ>Hž€kŚóÄdś Ó7- ö‰ÓĂ\0Ì cę<%r¶)O:ÊbćtĆ Ő?Üd[ÊȚfÈűڟÎgĂćJÓŚ”/ƒźBémÌwI >ƒă2ܒŠ5 5&KJÄú€żŻ~mY±GHßéłČőéœê›061cZÆĄ`[0•É‘Òߜ+§í҂ûßUxL†]9š!]klH’ïęc? ÀßW»6.Û%}]ę·7tȘOúïDicÓ7óŽÌÓĂ\ʞÍÒSŸ)¶$iÈ:*Ù‘âm+’aw.jÈĐêćé%y’ŸR =ŸCçąílîRK>\ș=§m«ïĂ«iLŸÖìC›°Ÿ™KÚ”ANăĘĐV'u©‡Ä‘r@|âm/F y2ܚ‰RŽ†żû՝5á>XČU>XŒUzOő ęoł]ú»Ï*fž–mì˘kŻ>AÌŸŽ&ƒ–íI;©?Umòî Ò[—&íÖx©M;$%ǶàęÜ >Œ›”ÒQfÔàÊÆ3ó‡=A ïąśŃ»oÒÛÙ§ì]Ąó›>-5PŸÙv,fž6țŻćcä2p~ˆgÆ!)=±]>ëwáŒŃˆj ę€ïê¶BÔ`ìMœ¶ŰÿAâ—ÖđöëÏŻ}pƒL„5‹>RkÒ}&ŒCČhœXvo”ț&ì?U RŸyD*âśÊç§p¶rŁ†&='ùșȘjèŽą†‘œéLe̐yÁ^șw•Sç™cőO„—bęqÿô7eÉéêDiÊ9*ŽŽHù|š[>ìB ùŹŻ58ĄßŹadoB „Ń<+].XGš+}Ç:É?.yGwK’uh»€‡oÁ~ŸIRśn2,ĄŒ?Ç6ÆÔëßeO–æŒO€± ^»[ć\gƒô·ŐIżÛ&ęźJ9ç¶Ê`Î|]xŠƒöŠÁŠ ÔÙùWAքŻ‚ƒ€&5JȘ“€©¶ÀZ"ÄßËŰŠm@c?ŒÙ‡ n̍–æ,év€ˆ«èžXOl“‚#ë%śàû’”d…Ż•Ź}ïJ΁u’wű)ùtŁŰ“öISȚ§rgxŻ;_ÒĚž§őê«ż9 Ò&tuæÁ:đ™ÊâóCŸŒöóáú„ŸśÁ@K6öP‹Ž—Lj33BȘN~Œłé6)üd“äGnIáŃ —Dm–Òè­R~|‹”Gm[ìNqăÌŃcOËá‹!mBWgnîĆ2ńá34jCpȚïSłQ‹Ășòdú{©Űƒâ°źŸH%\Êbw5Û,E$j‹CsÉńmRŽ6kÜv©ˆÙŽÏk«XŁ7JMüiLß/ŚLșúÈ»èՑs{öej >Җ‡z€?ÇÚÔŠOË6˜{É öÄŸút9eKĐ3œ#ő€TžÜ%„ĐZLĘQ[Ąß ûk°Æï”JŒ«m :~—Ű ż`ÿ™|íw&CȚEŻöìCĐÏwc.€f?ôÍa.˜‘쎔fKCștŐ$‰»ô„4äDJ}vöąxfÂÁ>Ćjü8Rśk{]ÆA©Ï:,ÍčGÄœ‰ï” ]íYć|śj5đa-œÀŸq°O­ŽDsf›Ëж1ßÁR±žÔw§ü„ŽEá\t—kȚѱ°±Ò NUÆIWU<Î}1âAÍÌ;ă¶M\&ΉĆȘÇëÎQ->O|ZŻ9űŽÀèà»y&ȖsŰ{ê,8G'È隓 ÚN@g<ž |/C|Š6IzÉʙZàH’nä»íÌăü°sÂúÛ2±țEȘ…ű€Zèòš 6-Û XCp.[ŒXöcÌ<}Ú@ Ôśçűšă™cj‚Ž ]mûÄŚ^ˆ±Č1æÇXc-Û kÀùŒ¶`xÿdÁÒ7îGŸ} óX#OkÄloKŸž~Oôc?ÔÿĆ[ŸÛĐăóÇ$872§á»2ęÿ›…žŒŸ„ę5ŻÖ±Z¶Ăś·Q€»&ÿđæ97Ę·Ż`öÊRčœ,Y[,e…Æ:R“W”èBL_ó>óŽZ+Ź¶ûaOڞqúęÚ }Ü'W‚Û^¶5à3P=n~ЃŰĐmZBĐ"Öț@ûÂzRÇëżńŸœœçJČxM!Ț§;±FC렞±:‰†ywÊîqúgź(–oÔÉŒŚÈ«rŚj‡Ú;ȚȘSțđŸÚ Țt ŻCnĘ`țk5ÊŒUŐ2ïUƒßŽÁqÉÌEȘżï#CKŹ}jcȚۊŸÏ3oۑŸ>Ä!ő//Ô9źŰąörbŽÉ9 ęû =ĐiÚ`|­éȘ•>­Öû»’wÓ?ă©čëGîYŚ*?Ÿ7R~¶đŰ%ńóûbt,ŽIfbSż—ĄÇëJW}ȘÖÈybÄF{hęӗćëœAî~·Yź»?^Š-ÍŸ$n|8EÇșíŸ•Ê Ì1Z?IŽÁűsűț«6€‘oMÚ1Nÿ-Oäî뻌6ȘțߟT1Ž–V4·ž0f>ŹcŃ'·<™7ąż/ë MȘ“1|3G‹>ô}~kÄéâ ©?WŸCÂ5Ł~>·|ț‚ilvWn͇bæŠëÖ­rë V™öDÎ(ę#àû•Ú zŃFűđ»ăÖ€íăôO[šŁûčg]‹êŸólŃ8ÊË­JY™a«Șl2ç9Ž…`Úß3tŹß<_źpŽŃú =jÍXń”7üá&ö&ŽŚ?uIV`ïăš]wÖ°~-ź6à Ќû‡ùPÌ~ŠHǚó\™Â9FôZ.ŚšÚŐ 5ZԆÒóâL™ûŠMčkMŁLy QæŁž±8êĆ^Ś€1󡘅û‡cń A8Ç(ęȘ-Đű4†yÚȘOÆÿ€„ÔÿËGÓU;čkmӈ~ÜO$6»NȘN{ŒAl¶SæăÙ fÖÊBköÓ%Ê͏eűő‡«jR sÍ~ëÏ:OȘJÿ/šÿć*™ûŻ*]ł)‹’dúČ\eæò|™ł2_Rsk€ŽŽlVk„æÙÎ~ÁL]’©cÍ»}ÖòbáŁô‡ą…śŹú ÈÔ%šJÿ€êMî|ÇĐ?ś•j™ûjÂsƟVÛĆZĘ$ÎúÊlrïÛ|VXó1üúÙkæSE çѝ@ïh3@ŽúiłĐuń°–úoÀ»†{4čóèOÖ=/ś@°đ­ É/ĆYČŠvá[•ÈW„dæòkÆČB憇RÆè‡ź€>ÆcAȚ_ïsŽ8őCêȂ9ĄZïxÛĐ?{eYH]k•ˆ„J”Œ/Äô'óuŹéOÈô'  ßążéŰ-{äœ=ökq!ęŚ?hŹ7ÏZŽ<ï^8Çd œăRô:qÿ_H?îwîqăÀŸAô$xy/Ț&ÔÇ5æ–ÇóeڒܦcOłÆï’Zü–Łż Mę-ÉÏŁĄôsżŒő™BŐJûuŽ’iKóL]’'3đΝș>àœûrÉ7ÀĆśíuÄ֌ }ä§Đ'8[LaŽ Ö<}‚~Š5óŽ„>Ššvy˜̋țŒ°°°ù~n ÀÁŒ°Ë çșŒWXŰÿróLoČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F††E)#: folder_closedd':F05830E5-724B-4560-9AB3-C00DC08A6E6A-7379-00002316C521112DÀü@x͘[lTe…™™+ššH4ʋÆÄűæ“ă›ńĆÄÄÄÄă ńŠŠ@K•Ú„P”^ičVA  bąąÖÒËL«Őš‘–i;íLoÌlŚÚÿùgÎH93NòeíœÿœśYg˜9ŠLrÍŒzÚŹÙŚ^uS¶Ì˜–wÆ.ùuă 3n>SW,íÛK„sG™t†Rä%Ò^ż"zÚjI(–Vä?T/O̙}ęmXsI.ő^żRÚȚ{ùÓR[<ŠU—äjŻ[·Ÿ9?&‰p„$ŃwFgż—Äï_IüŚÿù˜Ä{ŽHüÇCïn6ô–ŰoÒŃX"[ÊüÇ,ÂșÿęêÙS’˜î—áÏ7ÈÈŃu‹Ńă›$ŽwœtV-“`Óyäț»ž˜yÍUł,·Ț4ë2óšéÈœčȚ…ßçóĂZVŚO;Šûț‘2|șQœ·J~?ÿEO>Žöç ï$&ڛ$öÙZ9RĄžbĐŰűƒŽe  ÌYŚ0fm őšśŹÓßÂżEwĘRĆ‹^>ߟßïËéȘ]ŸhÛ+ŃĂkń ćŸđ,Ń#Ì+$Š˜Ê5 šÔà?vŽRĂàw‚ßÈdüšn&«ńŸKôX„tŚfòïóçüSC5Kâă­»%zh (ÇsÆnŐgĂ3Ä$xÌGńüȘ.lŸ™…jŽȘ çvœ·ŸÿzFÿč9ŒPuA|Źe§ X%CÍ«dűàŸ ă,у«2: j/òƒéœîyȘ~P­sÆîRe1êP~wZ7œæéßïśźÈ͙ȘʏĂżÙqyÀÏżeăüŒț§çMœź»ș@ÆŸoÄç±F†đA胟sȘÉsÂû†ô ±­SQ3»ρ*rÂșÖ0ïÎAWmĄŽlxŐÓ?ż?üüƒűüÇŸmĐCÍÜuĐ”Ąæ՚ÖÜŰZRŃŻß èÔÂ3‹Í9Ł8ûMm”tŐdöÏwgȚÔÜéô?zșȚìpĐ{+67êĆĆ{œ=đ„ê&­æôn|țßUŸìíßÏÏ?śJ~ÿGżź•ż€J+űM«àns2NÖԁU…=€1}©‚úMlæ{m­«f‰|·ț%OÿűțűŠæææ…Ș ΏœȘ–ȧe˜-SP±KùŃŰԘ›:rő 5€ŁæÄì1ü%Æ9g4ÜCÿßźËì?䄶ćOŒœŹ’È~Ìï/•Aè 4ò)15c u 5ƒöô'cKȗłÀÆDÏ ZăΗIW5üWŒèéŸWï źȘ‚ńۉ1WbŰW"‡TŽĘĐA(ï“:sÇ}ŒŃŁ9cš»Gcwœœôș⅌țńő?Z<ûb‹ ~Č20űI‰Ń}€Ș˜Ń:ĐŰűJ*AìÌÍmtáțÍÚyęăûèÁw-z|ł ~ŒB€UÂŰœžc/lŸŐƀj°çV țM ߔgöwP VĂÇ6É@ö’œ ©Hú[ŽT‹@qúčSÓsÂXqê“bïqaȚ)òőšč™ęăï€öÍoŒD>[/á]ï\@ÿźwUĂÔĘTòźÖ‰Éї<›{¶;ŐÏÔ~ÀșQàhp[Ÿ|”êčŹü·ÁÿàĄ 9·óm *±1ŐÜSŐà5Ăłs»\±{Ö©ü&łòWšOę7—ËčËÀ[€jj’F@uÁbcöšșAMՍÖp?G9cĄÿSeÏfí—ô5r—›„IRgÌĄ ÀŃ>˜48ç€5bâT$gš€5ą5đ·ü°`Ž_)öÀçv@”l/„Ä c˜žb-„'Ô8§9 ÆWa슭bȚŽŻ{!Žő/&éŹL'XùR!ü_•„kĂ+òûGoâÿSeëÆ©Őó$Ü°űČĄÏ„ÿ’Ç8^Ś pûsf?uČlź\.ÔÌ4ôđ=w.ƒ·[Ś5ÜæöȚípžŚá>ÀÚśó>„śeĐÇ5eʟÙÚ”Č streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† Ÿ//Layer 5d':DE846D34-473C-4162-8C9B-57AAE55E0EFD-7379-00002316C51EC013À {@#xœ™[SË…ù‰“:ÉÈC^ò˜ß™““‡žNÊ>±9Žï666`.!ź `$Fwè2ìŹ”{Z°©ž«VíĘĘŁžŻwŻ {è7ŽäÒŰn)œR/ïë%ˆ‘Č9#ƜČyq+PÏ'êáÉz6>ô·żțćïüÝ°äwm»ëÓ9śhOÚ'Ò>ΜŚ ÄHùsȘș/ü\ÍIˆ™'üQ>țșú§~ű3–ęnm'üÉi–·„u”–Öá–Ê…Ï©1úäbŹ‘OHe+ ÎÚž42ùôúÁ—;żÿĘ,ę]ZzuÒqË[šç˜°Șȍ=œvœŃE${Ș7€șż&Îú'9Jϋ› ÊÌ«Ÿg±ô”«<^ËFÎjQĄêžl~źêÎȘ”“sÊxœHł„ÚƒÛ­€o 9ü–ęՏRژ•vq]Zčà¶7ÖnÒă g]š8ŻFì…€TłQÁł,;KŁ’MK»Ç„äì0zc{žiŚpà?ÉĆ„Č’ƒűg٘y&™đ„œÁ[ĆšîĄYZwqûßÜnĂă§à;qbJ&2-ŃńÙ Œ˜NÜòŠž…˜žNHĐ!źlWù›ńÄó8=MÙürcàŸÎă5őß]•ÌúŽŹ=’ÍčW‚…±œs)…=ÀKNXœÄŽÌKÛMû[k_NőćńŁŻ!qąłùđH’ł/æOś°‡]iáÌĘbBZ…ˆdâS9 öl·áoőkÂ7ŚyüŹ—æąăesț­ (ÒBm”ŸČ{Àő»+ŁUà~ÓnËß ÔŸŸlJrê’^ž‘†œ6Šrzâ€g_ÚGŰïULŠ&emr€äs-œ:îž%đ<Ź+?CN*Œ]è_çïöŐŻÇÛž>[ÀK»^ÆäàQű蚑łZ{ä^¶EŽSÿüb۝¶wűÜuű;2œœÔŻż…Dßodƒ"Ąś$8úz(kcĂ›|"éĆwXcFN2k"ŐŸŁï§‡ŒŠüE??êąŃ'Ț‡s컚{żțźâžęz<č‘ŸdfűG™yűùüűG™ù—,=ż+ÁŚ?ËÚ»û’š}&‡©9™~u/ üĄ­•àOI›gȘ|XQc֙ësŒÏǘÓ7}û»¶)ùčŸ=Ÿx+‹/țÓŃÒË{ČüúžßȚ“Uhćć] żč+ɉ‡úœœüȚi6ÀżÏ“a‡ÀËHżSš“őïŚß§…5ٚŐ·Ç‹đáò›_$-żęE‚ïHh ~ú8Œ:ÁSđŰÓ**@ț€Çż©ê°wr»Ò= àïæÁȘŹîÛă[w’†¶Ą4ÎugyLvƒdgeLöBegî™òożwˆŸ_”ÓìĄUȚè䌼ŻoŽțÁü]ˆMJàùżûöx!9+ćí%Ÿ%żùEŠÈ3ÁśÊŸZ|ç4ń€ïM0Y6+Ămò‹j€ë8»6żś–Gáûêm««<Ț,DòȚS9œe1&•äŒÇ?ê4ńiÂ`rËIùܒálĄoæ(αź'à/Šæòw)żę/öqœÇő]”Àl"T†o7>+ÿæ—7N#“6ŸÍ’ábŽœ.rö™«˜CœwńźŻá7O)œŽìïí%zșÌădv‹ćfÎg©]ŽËᆩÿæük§á`Œ— esFȘUJh€8N±ț”\T*;ÙOHtbd ç38»űšȚ¶:ïqć†\p“±]ŽÚă~Ž‘ŸŒ>O#…œÌÜƱV1ŽßœŒƒ‚’ÍHjaTÖ><†/đ7<­țŠzxÜ2ûĆïűĂĔòoÌœtêűÍšő#ŐÂŒ22§lŽÈ>sò»àŻăžGû!ÉáȚŒIlꩄđ.íŚßÖŚ”ÍYsëqûq ű]ź1‚ęŹƒő·üłÏFżčűl‚‡5„˜[±O1§ç™ëńțląVǙ”pȚÙè |;.űN”-x»·Pw2_æńŸûÜ<űÁĘb„ ÿ§ï>›.öO6Y#›3ÚyÖ*†óÆßdx&KéÎ`^ đs^rđà$>_ëo­)˜/󞛘žôq}%>©üÉÙgšŰÇoÄÜ/ŽqĘ1ž«ńnDê8‹b#·™>ÇužÂ^Ùçœő7Y-ł_ÖăäuóaU—?ț ÿ)ê?œ`]rٜçÉhû6öÇčêgœhûæZűÂËy-ï§ț+k@˜ÈęXß°ûŐVțqćOLƒÏŚÓ3ÄڌÜ#óŽ?œŰda€käêëù›~ŸÊăä„ZŁ›CŽÏWbÿÌđőzeÀïeïŁčȘëÇu+Œ)7śÁbôû›"·‘ŚÇgèqòZnQkì·3țIL=qjxóÌ輕ȚÇ;Oż§tî‚Îû›ÔćGáq7òÄyÄÜ*ź ƒß«ÿÔŻà_Æzš?Ώk›ûĄ^ôQĘŒŚ8ƜbéŸpF~ÆúƒüäúVÖăÌUš»ò;š5b—Dùy^.ÎĆÜb€ó\5ś cä`ÔŸ'œö‚xȚŒțyĂßő7Ćș2Ò+Ü;;ÜòæAqUç€?”űôŰ©íșü8;#ss?ö)æF—ăìœÈŸ™·c”ŚÇęÔßïùŰő8YÙwóŒ«úoLŒ]țađ/âŒșśÒ5:‘$g42ő4č™C]5ǜúc}ČYńDđńłdŹ]8Żœ/ê!Î(>ùÈ9Ù]Ä~Y~țûšëođąŻÒ:CàăŸÈšgâ© ńșÓ Ÿû°wàțœ\Ïș˜ù‹șl_œÆ{YuæÀŃń·úÌàU!ś{Œș=ÿŽĄÒšùûQùwɏuoKà=/ú›»îćŒÇ“ĂŽUb€băôß„;üúyÊŹŻŃJï‹1>iÿž?‡èœFĆ1D°±^äSO_ԏ_ՔgAšöΔ!źÍŰaŃę`\ûÈ5RÌ{ŒcŹ#ŽsŒČ}°q_äÓÏűÔËăW”űkšż«žĂڔž#bGèă~&ż ^Śj€Ûy~žB~ż)żÇŻjZÿĘ/ÒÀšÍìŠźË{˜û^Tżăèkô cȚ5—ù›êćń«Z‡?» ßÁ{ôßmk_ŚÈoŸżđۄȚ»e êïëZ>űæŹ’˜”êțžû^êŚßŚ”Ù'?Eâá»GêčÛÖ țŸș ęI^]AČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F†† ő(/unknownd':D178F1A1-DEC4-476D-BB2F-37B457F2FB7B-7379-00002316C51B6508À Č@#x͘ÙsWÆE°ĂbSĆ/TQđÈ#ŒòHQŒóä9R.(*I11Ű.⯒ś}•”KÖHŁĘmŁŃâ‘g$Ùi6íÛXŁ™iÙáđ}çvZrbc»œ[úŐ9śÜí;Ę·o·Š%5Ú,+ †Ź«KX§%ŽŻí€v9ä•„,ŐÉlO…dŠòƒ;~ž}ûö7ż…‚%^iY 7ÉŁ‡QY_—ő„/Á§Oè;,ŽIn!,ٙIMúezšQ’ęŐÈÍóäżręËĄF±–ÆĚ|$7Ę/«“]Č0Ò ±î2ÉDd!X“C Ż4‡eŹ·źú”rÀÄÜ 6CëÀ:€ŸĆŸÉ$údeŒ]Šûkpęë$;Ń(ńŸÒ,óÊÊR°úGUC[cĐ7:á3îŰbč™öÀőO'üò0â“é@”ÌUȘțl€Q‚Ț3Xê•Ü‡„à-ìaè‡eÖÆÖšVALë°Z'՟›öK&é—”X,?h—žż ś Bȓ͚CæAƒxŻèFű{čeq˜úĂȘćIŒÆŻ‚{>;ĘŰ7éx€&:e>Ô*“Űÿ±ž›’ĘF-šĂÚ}”ìûóy$€ż—W‡jeçőúŽÚ<ÓNŒíuh'éDŹF»eé^›Ì=rżęș<èž&čdŻdăÈĄUsHß«—wßùę.,ûÒrXŹțôQ“!G WcZ5NŸqű„ÚłŒöĐÿpÂ'óx7$jdŹé’„œĐg}úƒOČŃ6äàŐȚțŐ/‡„_JóŐČ>ș ÉaŚ•ú°Żfż‰ŃșÈR[úăĘxn±wF›$g—Úïԝk.ˆgf9`lą 9Žk«ăőò“ÿègXț…ËB ú±ôl%ŻÚis°ŒŃjú3Ű#\ÿÔ€OyęUȘ?P~LŹùĂôÇőHtÛ94ÉĂŃ[òęï~g$ŒP™óWęĐbMXjT߶Œ~jíș„użL ŐHšùŹŽ^űDšÏí–ÆS—ú’ćö…ęâ»ü)ÎćûbńÙb{Osˆuà™ÀśGšN á…öŃŒż\çæ”Tí6FgoȚÏÖŐöI°á€Ž]ÜŁPËùŠśô?ÄSüÔú«4úD„bűȚx€p>c eïdr0gÓr°úń”s˜ëœ‰ëșzU/”2ê@uÛuösk'Žțæ3KĂńäÖŃ€őÜ>yœžĆ·U9DpFă?7Ă Ț{ŰwÎÙŽ8\ő€|­f{K1'ω}6êÔ»iùËTłsY 7H&æ“T€]ą=7ÄwiżtĘ8"3 òxm9$äŃÊrÇZN\Ï?Ί r˜î/ç·Òàčò˜íŸ!ëŽ~ÜWŐ Kß"ôżòê&‘îkÚÆ8ő?ŒŽÉ\šA&|7$ÔrSRÓśe)–ĆI|›Æƒ’Š Ëj|P֒ű™Ă3í:›Ö"­č}mò߀Ź‚ËLŚuYŸRVČ[uZSĘĐ `YwrXÞ„nÒsóbèCĐ/ ęé‰vY{%Ö[!ƒ•Ç€öóżHùț?IéȚś€ùÄni?»7ÿlûKJÈsV"ŸRÜż&ÉĆ»$}żYëOG·mûövH+šÌűźâ:đ™êĘȘ‰Đ'nj°R”“ńŽ‹ÚFۖĂ>HOvà m”©*o»‚ça”î_źï꣎@{Ś”ÿJÏőÏ„çÆ!ń—–țòŁ2PqDÊI°úžÄńͱȘ—Æ˟őAZAeŠó öb@,ÜC“ĂÜqÛ§fK­S‡Ćő_ƒțćń&üSƒëzCŒ'?–«ÿ~OźìyW:ŻȚ›‡„·ìˆôAłżâ˜ T—È`M± Uă~•Áòƒr·¶DŽœ—7·o{òžYŠo_ƙƒs™š$}ÈŰ1æŠ>p|Z¶Öy–p­Ük‘Ù`„›/HéȚ‡ț?ÈÍOwIu—…~ƒżČX`°öž ă]#”'$ęĘçÿ%;w|o'ä=łLu\‚~Ÿ;4ÛĐwb„179Ű Žgą’șß"“8“ëŠ?”ČÏvIف]xVÊHă9pV ‚»6áŠóšëXëEčŚ~Y&:ŻJšüßk•©ö‹ČŽw©Ńj°p-sÀ‚ÏșÛ§VZą1§-fôÇćҀśđ­’4‡@Í1‰ö–ỚTÈ4Ÿ§«a«eÌŚÈܝZ|śUIążRăăi•©6|'âE=čűmŐb%nç%ŒűƒO L?ïÀwÿ5i:»[<'ÿŠÚęU‡ețn=ŽUBg-ž ü_†úâšG–đÎ ‹Ł ì‘ÄBŒăû»îxÁú“­çpęń΂b”Еs@ʱl70‡ŰT LßĂ<›HÄweÓZąŸWàkŒßDž„š ­ ’l=kÎxŒłçÜjÙfŹë™6CząE:ŻîËëű.kÜʏ>ÇKX§5u¶'[ ŚŸÀś#ÏC‹kà¶VŒĘX»NÜ1gMê„nêzŽ#֎63} ûk\­êjÙßnŁ&H+š$šÏęùh9ŻÂùœ:-Ą5òm è)Qę$9PŠ1Gç€oÆűŒÓ:sh» û'šOźżé4ö:ö2ÆrŒ+Ț¶9Î:æÏĆڀcÛp†Qí$5î1cЗ},Žʎ%ô-êÚh_Xj‚Ž‚JÜ{ {g‰ŽĘŒÎ‡ÿ[éoĆĘæ֟Ž4iŒhŸ'0:‰©o†ńžśdáúOâZà9Ă8+֚Ÿ#§~«ËGÜÖK«qÇ:í …ž©Ă·ĄŻí$ßDZ}9śóè5žPę:gŹÀȘïu °]­»}«U=.ëƊn^Ç='ûÇN<Ÿ~ÜSŽ„ŸçŠïÂÌoâêk?XÄRű-ûÆÁĉĘ}9F5ÚžÁĉ©›öçÔßP‚1ЏÿEÍ€ĐÆmžaÜB65vKu;8ížæÊcÇì960ń(Î3H+šÄĐŚÜCŒć|ű]ÀÌCPWK\>û°/b©±:Őí`Ú &úÆêNŒ}è[¶5őĄ&H+šDë‹1śm»1ĄOÜŸwœ>ĄOÜŸ‚3I­ §Omô…ß…XzŠŸO?öh6â5ó)˜G±}Ì©čŃW S›‡u7vLû»źlű:ŻĘ'Ëł–š ­ ÂŸÌ=û QÇŸxiŸ†öv”†Œ­š ­ ÂŸœ'{Ż–ś€sÁșæUœzȚąúYôa§ÍAëˆÓ·±Žî†qZŻdšóR€Tۗ묍ßÒ98žVś",Ût ƉÆÀ1»NŸ8>­Æ8Ömížj€OMVPa_źŻÓ9ÌĄ8ŸÛúd«ï†±/c’{V}àČiœeô© Ò *ìËk­Ő±œGŚ Ębw`ìi°OŁÙ/Z'ˆćç@m„>HAÚš Ò *ì˱«áZÜ?äń̙_ë«@ŸMv+ˆçő±ŸÄí5žwVĂ5êS€TۗcVCŐßš…š ­ ÂŸ“č‡ü1țuâÜj‚Ž‚ ûòûßpú[Îk@KČĄj‚ŽBÊOÙś›Žę<«üŒUTTôk›ß€·ÁoÁ[EŻj{J)*ú? üÇČ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜:11D9C4BD-00D2-4480-9DD1-85765BE112BD-7379-00002316C517DC4F††MASKSPREVIEW’©0FÀ’•€ôxìxÇŐțq˗f;±—4ÇIŸÇiNœŰŽ Üă^â7\âȚšŠwœw„ !’PEH šP ȘŃŐ»D;ÿś=ł{”*€üż;żçœ93;óÎȚœ{śêv;ęXÊwĆH(πŹ«KX§%¶Żí€¶tg””€‡KqjšȚ(5’äòï~ç{—]vÙ7.BÁZÊ2ąćXEŸ-͔Ł%ÍàŒÓ'ômŠwK]Q†ÔJ—ò=‰r05Röo ÆÚÂO@~‡ë/Ę)ő%»„țpÊY,u·Jćž R”!{7.—šÜ)J[U‡%tèJ1ßQ՟ šĆPLÌ b‡hmXđkqÜÔìÛ"e™qrpë*ìÿP©Í‹”‚-ËÊ0M‡•’ŽŐĐżK5ž°4ÖúÆB'|Æm[‡XĘĄ$;ûżj_ąTä&ÈÁ€`)L]©úks#%-j^ŠêŚĄ$- Ç0ôCƒrŰÂÒšVALë°Z'IȘżî`ąÔìO”ꜛ€4'N ƒđJíž]CMN„D-» Àżö-ĆÛš?C”œŠŃŰ<æk@7Ž›Ș‚MRž·^ wÆÊÿ{7HíȚuXĂ]CuvžÌù„7€íWŠSCä(ÎÔcŰ   Đș8hÇŰNP‡vR”o“Tæo”’Ź”r(-\Čă–JNŒŸÔíß,”뱆X]CUÖjùà§?ÇŽí¶†ą”UĐżúšÉPG WcZ5NŸqű„ÚkčïĄż"/A ńÙ°?y•ìŽ^$Q Ń'}¶` R›żkˆÒ5tœë/bêvYCar°-Ü]Đdsû•úp\͉&F렖ÚöCÁFŒoqì슖}xïRûöĐÙR$ ï™mX¶Ę·kˆÓ5Tfź–|ĘÏ1ęY—ą€•Đy §).œĐN[Ë­ÖĄżÇH öùž)æțO RęI+ŠI}áNk ÛŃûcßFk ŃR±+LŸęÍÿù$œU9’hôCKęAKê[–ûO­UŻŚząH]%;cæKìÂ!ł`DÎé/«gô‘u GIÂb/œ—ł„žï-źàŰÓ5ìÇ{Ś;CÎê8*L\Ącs_Șv ŁsłËŻ#Ź«Ę"iłe­ÏP…úŚx–šč$|zo ÔSąç ‘cć{qœ‘ƒ5àüŒ9”ƒűÜŰż k0çŠÒŽà“qÆk8Č9û;tmVœÔÊuPȘÛȘłŸS;±őÇÌ(3ûJŰÔȚ»`€Ż:Œk«Ź!çh|ÆIXĂ!|îážłÏMĆۂN@Ê­áđæe“ç‰Mú,êQ§ȚLûȚÄćȘنk)Έšœ Rž'ù›ü%aŃ(Ùà?EŽŚÉńê#XĂ>9V–‡5db.{ œïœ›j°†ƒ[WđZébpZë8ŒŃ_ŽÚúńșȘNXbûő„>H\9Iu“܍~ÚÆ8őW伕#;#$/Á_vź òƒÙRR!Ć{pmZ&ć{·IeAŠTïǔȌ§çŠêÜXÉ]çWùC–ÛćІ„rôpȘêšßżQuÖŰʖu{ Ő8f©›l ‹úô«…țȘŒ8)ʈ’œ›%eć4 ™đ•Źő‰,ń‘ÄÌ$qóGžȚۉË&ÊÎđù’›° Ż_ŽÔlȘìIY=7ÿÒK/č ÒÜ*‡|±űžÚ6Ș&BŸ8ę)+U;ɌśŃ6¶:U{âq”ÉA’čv ȚCeÙšOe鈏e Žođ/›–NMț“$qùdÙșbȘ$N‘äć“$-xŠàšŁdçj‰\Č?ëVŒkSŰ>-Ûë<—đű*ËZ#‡ÓB%#fĄ,ó)ô(^ŸËê^>ú ‰+§KH ™)ÛđYÒCfIôoô&ßęηŸ ym–ń‹ ŸŸë4[Đ·c„1' k°5Đ^“/ćÙkdÎÉĄÓûÈòqŸËò±Ÿăœ2QÒ#€ùJŰa‘í­kĘë#Yq‹%oœŻì\1‰Ÿkn•q>rŸ„F«ĄûČÔĂgĘéS+-јʶŚè/HZ!ű›ŃWŚŽjšäo^Žëą• Pâzń@J0l°‡·­’#ÛCpĘ$û¶źÔx&¶4·Ê”žNÄgőÔŹS-őûÖÁ§%ŒűƒO Lż¶ Śę~=„Ïî§Úƒ&KáŽŐж:CđŸÀś2ԋw…K >3Hń..EˆídŚßĄ3ĘÖż?vö?>ł …Ô”ĐUgƒșmÙnàb’–ëç0ÏM$7aIŁmh‰úV\Ż1^aj‚4·ÊțŰùæíêÇljÙfŹó™6CUȚYï;Ò„?7a±Æęès[bûŹ‰Óš:ÛśŻq_ÿ>\?ò|šÛb8m}Aœ±V8cöœÔKĘԟ>±8ŽœŠ/a«”A]-Ûá[mÔin•}1óŒ~nńh9źÂńì:-Ą9\m -|†ê'û“—kÌÖĂ1é›í|Æií1ŽĘ‚ęśĆÌu_ô\ë8–±-·wR_°¶qœuŒ_·w-°íZœĂ§švRžn¶A_ö©G»Ńm[BĐąźęö…„&Hs«DÍÁ±ˆs‰nÛß[é7ĆÙæÔ_•­1ą}NÁè$ŠȚÆ ąf»Ż?r6öȚgŰź~oŹkŒ:őc>â–^ZÛÖnuùđ7uűô”žú۶Ą/Ç>ę{#g©~sï«ŸÔëÛŐ:±Ú›ZŐă°NêóÏă“ęśFÌ:=ęxMč-őŐqlúÌű&źŸöƒEŹKàqccâÄꃟÜF5ÚžÁĉ©›öÓÔ1Û@?Ÿ‹š1H  Œ[pÂx=êŽć»ĂT·ĘȚ€c,VÌŁÏÇù ÒÜ*{ŃŚŒ†Ű–ăáïf‚șZâđه}+ßȘșmL›ÁŹ…Ÿ±:‡ŁEúő–5ő5BMæVÉ_=Ûàuˋj‡Đ'N߉3NŸĐ'N_Á9I­»O>Úèƒzü]ˆőüđ駧Çhmn”OÁ8ŠćcL]}”1”.XwbĆŽ±êJƒŻăZ}jyî…„&Hs«°/Ś^›©Û¶ ܏Ž­Ą} ]­ĄÆÒ@MæVa_ŽS›ËŚ€cÁ:ÆUìșËąúŐӇUì6­#Nßą^ëN§’jÀžÔinöć<ՙa:·§Őc–m:ăDcà”˜U§OlŸÖ cÜÖi­žj€OMæVa_Î]•Șc(C±}§%ôISß cͱ‡ÇŹúÀa«p.ŁOMæVa_îëȘ]!ș-ÇŃ9h˜Æmk ö‰4Ç‹Ö bź1PgĄȘvCÚš ÒÜ*ìËm+3BđúaęŰȚ€1]s”ú4ČMAÜ„őŠ nÍÁc§2c•úÔinöć6•;ƒ/š…š ͭŸ܊& ëÇöçûő§&Hs«°/Żx §Ë9èߒ,š…š ͝rû^ˆ@ÛÍ ­r+èÜ©S§û,ș€źà~ĐčÓù…Ú<ĆS<ĆS<ĆS<ć.W_țíkŻûȚwä.W~û›ßÇfçœüđš+ČżìZê%™ce7ńśB}ŒìòŐúd,!#ÀHفzúąá'oŒîȘÿĆ0ç„švżŃ’1ęÓ3&mÉÈ: u^Ê.ßá'Jvm9^/'KČ@¶œ,Ú)'‘[qż ŸŰżINà7’ű›Ț |Ś;‘aÀߛjì–ĘËÆHæŒȚòƋÀpçŒäŻsòŸwU­›!”±SN‹șőł$;hȘdú –,ä<Óù/Ż_}ĆwŻ”ù揼œ™\}ĆwPo« æbHs«ì qòŸł‰~R•ČL”g- xÿŽ#Țzt&ä”ZžÎ<ÿĄ'í –š˜IR»fČjȘ­Y}°”±ô,댫è3V¶#VČVNŃśB{‘ë;ßżZ,Èpșèâ‹/ș4gÉÀÇ2‚€:zÖ0@ÖRœ†őÉR Ÿ–1Új@k@ úkb§ÉI䉝À߀›„Đ:i.ŽâïqŐńÓ$wI[ú/șűÒK.țFöâț'Žî”êš `"Öè;­ź k"đI `[ `~5֯ցĘÏl «u }aôC»=”ï˜ęU›ú/»ô’of/êwą>m蔇“ʈqR9ÁÀ”€*ŹÁŠ:rŒ±QÆVÁVk_Ô#śunO«ûVăÜÆK-ăô‡ć±łc֗­êżűâ‹/ùŸË.ęv¶ÏŚ'ŽBżă€û?mæmêÿÎ7żńęÜEę€~û2ì R‰}X Ë1žX§5uÀ:aŒę,*” Ÿ§ĚEŰÔąNŚ¶wÖAΒ’6ăóVőóűáțÏÂțŻOőŚ1*#8Ź…úˆUFŒŚ:ảsYôŚc¶ֆm6vÛ(Öű&6^r·­ŸçÎo~ăČïP]ŠŸĂBçVìș±­ŃrkèRë€QÌêr±ÿ·MûŽuęsÿ_ö-ÿuIK€‚ï_@Kè+xO« çŰŠ­–Ÿ+ź l«° O]jAúßlGŰŚŽć,î/ÛŠ~ÒȘ~?}ăČËŸ™íÓïxmâ"©X=ێU[A‹±Ôą^IÔ71ÖMu Ő 1€>ÆGÌòÙÇĐÄG;·QpêOÒ¶țK.čäÒì…_«Ęì#aŰ>ÌKÊaËa+V3Đ3h‚ț.ßÆ՗ÛÛ'Ú«1ŽĂíÇJÎ"èŸüq«úY.Á9(ǧßњM °ĘCè©°hšclŰrXÎÓĐæô úŃG­Ó‡uöQßÂ黶ԟ2ùŁ6őăzq–wßșš„yR2șe ^«ȘűYRŒqI!„ôm4Ԏ#·[1m'ô+Ț,ö§öÁ9E’&ü§męű Ű5§GmEÌT)Y1ôJW S[BHK†iœ˜:účښÁn lèÏ1hKăÆËf-üZ¶Ž{ß-ęĐ_5YŠ—‘@KlŸ¶u0§ZCkÛ°­x…ĂwnkĆ Ț“néÇ)ô"Ő1QŠƒA€ÖPh],ŽۇŰ>ûšu‚˜Z'Ă|–ć66ԟ8ö=·ő—᳀hÇr2ĐECë°țÀČE„>ń·ÚcÄű qâچ0F4NKÿܞu„Ą^:—Z›„` |…>ĄOŸn;šăvZŽ„>Ûúíë„ú·xœÛŠ~–Ęsz֗Âę„Èo€êÜ –ńBÄmßX¶#ËmˆúÀ¶źŸ~°DęŽ,ăÎńÏZĐG¶ŒyÇ-ę»æőŹ+Y9ca[„Ÿæôeœ†>ÀnƒeœŰÛ”ú`ăt[Äl«úG»§śŒ^G‹q>+ôí'G–plĂPèû5 ubb-··‚c|›Šs’Źù}eł›ú3çś>VŽ|0¶ƒ–%_cŒSaœ4òŃ_ç¶|Zêłû8-1k–Oê+ôͶ3k~èïîźță…8YÌmmúąÔ·@{!ă„>ۉցmŃFżP­ăˆŃr ç¶ZövšdÓ(śôï˜ùćђĂe瀱câúN2&x »Š|ԈĘS?v‘9­1YÓ>iD6țVe“3ă39èĘ Oíăźț+Ç(%ț}/Ò°Š,èóJ—pèk­\ ~}ˍŚuß<ö?rĄ°ű‹çłŸŒó–ÁĐöKĐZčüÜŰś‹;Á?,îŒuŸóÎËĄOńOńOńOńOńOiÇò_o…œ„]ËÆKæŠ Č›ŒG}œìòśjùWè—á;Jčò­XÎ6gé|æ[±0g©lçÊ3Êù±s–ÎWŸ s–Š“œ‘~bç,|+üÉù"æ,•lŻ9+Ì?ą&Íă±ò‘Ln€eqő}Æìœ„Ę“•L„ĄŸ{Ć€–O”]Ë'Èźû=6V2òŹvú‘tŒ·â&śÈ…Œ6 ä_̜„ègźÍ…’łŽĂÏK~ùŁŽùÿ].AÎs–JĄ9ÌÉațúN«kÚ|bç"ÙyFôMRcì~f[X­í « Úí±v-%/vœí}Hl”à7ëËđû$ôă7_üVÏüæ}(\ Đ\‹jäXšeŽ,s•Ș”/êÈu11›†íiu_ÀjœÛŰc©eœ>â°;Œʋśęćę‹pˆ@f‹ćČK.ùæl”B ~+.Ăo/ćűꈿí3ǂù„ù\[b ê bŒł/ó0˜oáòaÙÆțÆgu`ÆDLamÚnŰ6»—ŒŰùÏ0§íìfHm¶0gŒ93e›çÊ!üvvhÙ9žlš Cä~<Ž|*‡łŃș2  ŽŸ-[Âo‡źq`Ùf[ąqÌćôi9~ÒäOćíoûŚŚ_őĘo]{Őć @¶«àžRß2úçÈ~żČĐîÇoT¶O{żŁ,Ę),'qoߓć{@žœ,ËűŒĂ=|O➭'qßГE;@>ÿRäî‹xâĐ9qŸ6€|ź“žŚÌ‰}qxŻ±§P—‹ûŽfGœ ț?öÉĂä䡄“ßé—^Šœèß4G ś—œJ?Đő~.*Öϕ“Gk€>i™Ô­z^áùŻx‹Ż@>ŽŸKqüś;^ę{|úö•|ZŸ>jśăwšÒ$o©±>ß8Æù€ 秔i_èțGʆæü”oœ-čó{5K)Îeű|æçÏqu\ĂydȚ'AƒßÚ ù<jÎőgÍé!ÙsŸ’ŹÙ=,ż‡äÌë%e[æIŐú™Șpç Ο6«ŻyőoêHùќŸŠ łdśÌ/ÁÆ?‚ü‘’d;ێùuŽç“C#dꄏöCș\?\””Àèß9í3…ùÒŽ ,aŠ”=#7Í|?2æö’'îŒć%HŚùáśŐșJhÜ>éCI#È5Û1ćcÉÇo€Üśül-C~óđȘ°ŽóEŽ…ÄɟV@¶«àđčxśü^”ÔżeôÛČŐ«»€Œ{_¶Mű@JpęV†Ś„čje!Łèu^Éòî#ƒ^{p d» vÿĆxMj*ŚÏuƒ_• Ă^—ÄQocÿ"%[‘LJÏôŹ›yhÌŻ;pnæd$OęìhÓïŹ3çȘ úcûœ(q^–„Áÿ–CA#€Ÿ e°Ć+p.äq8)ò1öű|- żz1’êgÎż{Ćô}üKÖ zUÊP/ć1‡ëæq•­~^(Â5óËR§}vâú«.ÿ1$7*8~4g©jĘt‰îęœDözVòôÖăž9]‡ËBË5œkžïŽ ÿ‡Ś/«‡ŸœrO)Żú«ă§KŽGö|Çü8)Ćőóaߊæt-Aț ź#Óp­ĐćOż| rO)Ż9Wü?&ÜśiÈqšÆ5óžö/ìmòqCtźáŒœÿąŸČȚë?ƐÚbaÎUuôś|FJpÌńę~À§·,è‰ÜäȜö#oă ź3śÿùSś ƒÌ sźê’dÓđŚő3șÇ|ÎÌÏäÖŻy,ç˜ĂŰç{æ|‰ùqżĐ‰ÖóÿFAf‹…9WGłŚKMæ&©Š™Ž”ś”ĘÈmќœó@ÁüÊź™ŸËŒOŸ‹†ÄV òƒŽŐm Â7+Ńă~7rV¶_òçbxśÆ~è-]ô‘Cx]O„ŻÂ}w6pü,\qȚc?8yíśŸûCHl”@ÿq~/©^;KÇŰ6î=ɟęćyÇmîŹÏ% ÿ_*zXśęŚfaÎżŚđœuû2Çs«˜oEè;aŽUS˜gć„čV6ÌłrÂ<+'Ì”Č±sź’&~$ÏțăśĘ!ŻÍœ«<äšgLÇ{vQOäÒőæ>/˜sMúęЍr-rźžbźÓ…rź¶ăÿąę Ú~Ö úsĂZ*?7~»ĂâNÀ(r7`ŹŁàűœ‡p^ÆőPŚŻmÓr)đOńOńOi¶œò|Aۇ%ŹÓÛŚv@ëyáÙÏł|ÏłÏŹxžEĘ8n<Ï"<łây!ô{žExÆćlžEHê°ÿyœWíMÒĘ1xÎQˆìŠY$‰Sp^ÎÆsüđȚâŽ=]ríxn:ŸÏ"d_Æikń,™ê‚ RšgÚá|»H¶â9YÇ.ĐgÒÖÛPOőȚ x–Î?ÛC%k­Ż€†Ì» ŸEHßX¶xLđY~|aaújÉ]·Ïśò» ŸE花uêw>‹0gcˆTćKćĄl)ßż[.„g2î‚uö!š7ś,xțĘzŸŃç|ĂĂÏûłùÌ»ÆuęæžEž=lŽ$â<Êgnđ›ț»žEž#r$Ï0kàs Ÿé͉űły —œP¶…Í’­Đúßô,Â#;„`ëJÉ^ç'YńKp.Z(éx-ÒńìA’vXdD_XÏ"ŹÈ‰Ćw°hœGĂôł`žăśßò,ÂZÿ•8–ìŽÄut(ž;VCۅÿ,B}Šö?û±Î8}ZWšoĆűă5Æ Ôin•ę±óq>Ç9Û©ŒŐÔČÍXç3mNxüà™Vêœęèł1ä‡Òš8­©łę\?‹ĐŻĆ3Ő̶x.Áó)ŰFŰ_ăjmPWËvűV5AZŁòő€r. &}ź†]šÓŚ8Ï8­źVÛ-ŰżčgrìȊ çàçÓ^\Ӛg B_hâóîŒ%ô-ê¶~í »Ż™grìć+v(œƒúÓ"æAŸÏG=M1:‰©7†ńæžćDZ9ÇCu‘ŒOyàÎrÿś*ĘîwĐíéÚőn„K—»\Ü:ßśCç;]Ü{ï:6çPęá¶~äi[Ч6ÆőÙiù°ˆÛĐ·„grlÎńÊ+ÏÉÇw—?ê.}ô¶|űá[†Ț’>xSțóŸ7äęśÁ{ŻË{ïę[Ț}ŚâŚäw^•îĘÁÛŻÈÛoż,oœexìńulÎaôÏ5z Ó¶Nôsv–ÏóS°sÏòăۜă…žR7íë'ÿÓśT­ï8t‡Ö7ß|IȚ|ăEyŒțú .y€›ŽÍ9lę|Šőđ9oÔ§šaMÜ`âÄÔM{ëúŸ}ö1ŐùȚÈȚș†wGöj^'N—ÖÿKț ^{íyyù„g䙧•'ŸxHùóŸoѱ9Gcę$Đ:±b{­ oîY„›s<ùäĂȘ•:»ëĄkx{èW : tÚZ_{ő9sÏȘȚGé*śáxżûźż5âç?ÿ©ŽÍ9\úńśł_cà{6Ï"äۜăŸÿ|@5Ÿ5äKŐțæà/äAŸ»xïê}ććgäùç—Gî*śȚs»êl‰–ô7€ïWjžôą>à3ÉXoîY„›sđüĂ}JíŻüL^đ©ú6/âęńȚĘpîĄ6whYżŃŁÖź+ ŸÙśÆoíY„›sđüűÒKOˋ/>„ZÉ+ę>–zÿGžüäÍ6śus4ŻßhiîkjWkšÉÁsÍ`[ÓÏsśżžB ÂśĂéìëæhQżjăóÖh úlčF0NÛúł96çžëîżËłÏüS?Íc€5šŐÔ€Ö c.͖”âՙaê·Šÿ¶Ûț$]ń9Êyۋő7Ÿ}­ÆÛÚł96çà\œł=ᘛs4è‡N Ç ŽŁ~ZÖÙFèƒÖžEȱ9çâœí ÇäۜĂèŸŁ:š©AëMAÜZÖžEȱ9çâœí Çäۜƒú·‡ÍÖgó ÿÍú[{!Ç末#àۜƒúÓ#æă;)ț.ä&ú·$ ^¶€Ÿß‘ÈžüŒv…c&&Ć©~ÎĘ@òÍÀU8öčSuîÔ>Ü ìBżs§NúŒDÒtśƒÎÚÎć)ÿ‡Ê)yU¶KX§%¶Żí€Ö“ƒuvćBÎÁòíûZhmr‰:˜Š-~ȇHB.Aûæ`.*…çÌÓ9XGđÿÛZăxU‰ÚÖ8^vXm[€Źž%éQs%•żyᷞܞEűMĂä`UgŻ>ŁŹĂ‹ńÿ­Záxe±ÚÖ8ęŽm‘łžĘs°áÿD”ÄńȘRŐOŽ[2I}rŹù àhá^mcŹ5B}Æ”{ÖÁù=€5ŽW«%…ApÉ3ö@¶ZƏ•TÛóG}.[ƒŠÊÿqű}€$áwSgžĂ™ä`œó…ŽÆńò"”€0pœR›“"„k|4FT?l[ÏĘî9Xfáÿș”őÓ:©ÍI–ÒoőɱâƒjÛ"hÁüžŰŸ9X·5œú,ƒ9rYÆĘŐÏă')x*rÆ#gcžÄÎŽÏçlä/yց™ŸHkP?±ę#Đ Ÿp ŽÇŠhęÖY8ŠĘs°8îč"Äś@wÏj§Ź„!ÿÎäŰ ÿo#ŸäUSeKÀäęŒÂčhö9ÉÁ ›=Dâ0Ś|śŽZ:I—ŒĂčÜK [dYB߉cëÜÿç#kę’±Čm­ż€Æ,>’șçÏű)°Ź§hĐșëìCPÏÚpÁä`„„!7‡„Xƍœ#‹TÄ ÛIrè43Sp”őŸŁ%fÁ0‰˜9PB&ś‘ ńœećű°`bOY5ŸŚˆ‡Oï'‘3û{r°x^Šê#ű[s}Tê\›úÀöiÙFXçčäBÉÁÚșjČ$­šą4ö ôčFú[ƒÚÉŰŻ“dăòńÏăVÏ «g é_KÈÔ>ČÊ" čWĄSû‚Żeő üßjO–êaț ”hț’„‹ŸŸÆàÓÓÀgîх’ƒ”ï#æHm œ țÜ{֟±@Ëjl<Žëń°đwő±Đ8`œŸZ€çd>î@MæVÙ‹ż{r°ÔïÈŹ–ÊŸ˜yF?·ÇxŽ—yÉ@K蓍°ŸZÀvnŁ1‚˜m”?|öaŰ1Ś6šS;ë„šËÁj©0ßIߛۖÛ;©GžTŁ8ëŸ9;ZWKĐ}èŁŻ‰ĂÚÛš%ô-êÚh_Xj‚4·JAÔ‹8—趍Ńńđœ•~SœmÌ;ąmŠö9Ł“˜zco.‡©„R9ûï3lÇü!Ž±ȚoTŒ”ujÁÒQ.߶ âìG[‡qiâV_ËçœfîXʧŁoä,Ő_—Ï푦‚1Œïuæ±]­«œ©U=ëDskì8ŹsLöo.‡©„ąúńšr[êcŽúÌű&źŸöƒEŒóŃo'–ÛT3Ź‰Lœ˜și?Mę3° ô㻚cÄ-Æ”ú2 Ś¶xĈĘo”Ù±xűZ#~ń0€-bôčZÀŸvûbÀ䝚ĂÔRaŸ“y ±-tj^ }u”ÄáłûÚ1úŒ©ß€ÙŻôŐ9ì-úĐ7y@@mó9X-ț^ÉŚŒżç»Æ!ô‰ÓwâŒÓ'ô‰ÓWą­»ó—èƒÖr°Z*ȘÇhmn”Ź]8€±.†șêœÇćc›XoăÆŚą/û»êȚÆo ĄÎ±žÆÖr°Z*ìË”ŚZùOíś#mkhì/”†Ör°Z*ìËqj™ÿÄ|lŻÖ1źbŚ]}ĐŻž>Źb·ÙhqúšSÓÆi[ÏÁj©°/ça Çàö1 ƒA hmL›ńŁ­>M±·a_ŽG߯%ìŸȘ>5Aš[…}©żŠùCÁŠí;-ĄOšúNkæüŰíMlk9X-öćûŸjWˆnËqtÚF ŠqÆZƒ}"Íńąu‚˜k ÔÙFèƒÖr°Z*ìËm+3đś2ŸŰȚ€1]s”ú4ČMAÜ„őŠ nÍÁc§”Ź– ûræ]P 5Aš[…}čMM֏íÏ'öëOMæVa_^?đŽ9Pçț-‰–P 5Aš;ć&öœ¶›A[ćVĐč“Ék"]@Gć6uîtzP›§xJ‡•Sò©l–°NKl_Û­'śêìʅœ{ćNńÜÿ śŸ"Űÿí{ćNńÜÿ șqÜxîufĆsÿ+è/đÜÿêL‹çțW<†<śż‚”3ZƒçțWđa©ÿ|ä^yîe|ÏęŻ<čWvîĄoÇcNÖ`=śżòä^“K ]Ì»RP·-Û \ƒ3†ŒìöcqúŽź:Pߊ+đ5Æk"ŒAš ÒÜ*žÜ+ęŽÌœŠ‹‹“űűű%2 żA“țŽ @êô5Nà3N«k…Őv öo.ś*níZ©ŹŹìPV‡‡K.ÎEéű Es« ‡Ż 41żÇXBĐąnëŚŸ°Íć^­…țŠŠ )# |í\©ćqxź4‰ŸđȘCI€&-|•Ê~K„rÓR)N\%ćE‡„ČŽX 7ź”Ê-Ë€płż ›$ô$ʖ Ò±CBBŒț-¶~ț&e OmŒkźH>,bÆ6ôm)ś*6+./U= æW EI ˕*|'«J ”*ü Șlë*©,)’Âœ{$gšìÙŸUö íăĐIòWżÁòràùę‚>R^Z*AAA–țŁ:mëDsjì8,ó—Ôìß\îRLtŽ”–”ʁ8_éûNwY·hȘLKŒ]钗™)ù;’„pkš„χ}»RȘ·…Jej˜ä$ź“=éÛdßîČ/3CČ3ÓĆ;vč€áłČ*=Rz‡N‘!S€ŽŽDVșô3‡‡z˜ŚB}ȘÖÄ &NLĘŽ7Ż?ç†ââbńÙ_ž}ôqÉÙ”KìÛ'E…Eˆ—ÈĄƒ‡$7'GzŸÿĄLíßKÊ·EHjèRI ƚ&ËîÍdęò%ș–ę9Xoò:\çÄÈŽ˜’’‚1ŠqˆпĥŸ żD­+¶Đș0ńærŻą"#€°°PÆáú{@·ÌÜ-Ós7KŽ[RZZ&”Ę;3䣗^ANÎt‰œ7UÂfN”àiceiÄ2 œ=QŠÎ-ę—M“σgÊ?Ă&Ë QS„k°—ÁŰËđŠú—A[Œ”_ĄIuČߎѱ}WΔÚæsŻ""ÂćđáĂRžčA–mK·¶ÈàäpÉ;|ï‹r).)‘=yy’ÖJàü©òNôŽx’ ]6CzËG«çŠŚäò—Ù^|ß—?áÙ„Ÿ­™«cûûû7Òߟ_©uàҋ6ú€9Ź7—{ŽëÁC‡äœèč2%)Fą"#ć{îŻe ćÎ+{ś–Ż>úHöîÙ#é[eőÜÉ2téTyß-> #~SœdŽïT™4u€Ì7Dțì?Ln]:Tîö*y©ű΂±ę–.”ôûmÔ =jíșÒà›}oüÖrŻÂBCćÀČ6yœ€„§KßO?—BČsr$Łä ŹZ”JțőđŁČuóÉHK—i §ÈąŃƒeŃšA2iÊyyŐ ùÌwąŒ…ï”/Ï"ŻÎ,“Æ Wf#gá Œœ_–űúę8ŻQG«p_S»ZCM+čWĄ!!Čoß>é”X–mß Óđ^Lߑ.UUrìŰ19TV"3'OžgÓSReæŰAČpüP™ #‡ś‘SKŻĂäqsĆkâÏÚO†í/KÇÓ±/Ylôo±ô«6\SĐ·Đ\šF0NÛzîUÈȘ`ÉÏϗWWN•í;d]|ŒIÁȚ©ŹȘÄû·TrrČeS \ì+w z_îțĄtó©Ü7č—Ü3«ŸÜ4Nn[>Z~“0Wžț‰ŒÙś}é>à#yp^?ŒœW-Zꋍ~è &”Nsi¶Źgț ęæôŻ ’={ò橑ïËłÆÊ*ŒÖc ‹,ÀßäߒeK|%&*ZR“’„ś{È=ȚëGż#?ûŸüÈë=ù‰w_ùiÀpùéÔOä§Ń“ć'ÁŁć'«FËősż’ë—ày xßűűű4Öß{xŒÀȘ¶”Ü«  |¶äæÊ/úœ%śÜv§ükĐWâëç+Á+u —ÉŸfô–n=Ț‘^xYî}ÿEčvà«òƒQoËu ûÊ Ë†ÈuĐúŁđńržCyCÀ0ùÁ°Ść‡x†ò5xž3Ç^žpĄŃÏăżW=^òlŁ~ZÖÙFèƒÖrŻ‚WHvv¶üąÏ›òÓoÈ͟Œ,yî!čć;äžnćńûî—û_yV~8ńcyòĘË=o>#ŚùŹ\7ćčÆëčfì»rCàpŹc(öśčaéčv҇ríŽOćÚÉéŰȚȚȚ–ț„Șƒšô±ȚÄ­őđŰi-śjƊ撕•%żèőŠüőĄÈßq»»o»Cnyè.čééHŚ{ïH^~ä yöőWäïï>/7Œy_~0ö=čzÄrő°ŚäÚéŸÉuszȏc§Ë ŸUÿŐ}ț%ŚăùÉ{śɊő–üő‹5éLhQÿòÙœk·Üúé‹rŚ“Êʏ=€û©v‘ŸMúLnńž<đÈĂòÜCÿ”W{JȚ~îùíOÉŻ§|.?[Ô_~Ÿ|žÜä?T~2Č;üò‹à1ò‹•Łä&ŸțòはÁĘ»wÉ|Œ—ÎFkčWËńÙŸ Ś< őçnđÇßAńrę[’ŻG›Ó°Ì_222:”yóçëÜí$ß \eÜűńr.ÀT;”·»ĐïÜÉ䇑. ŁrÄ8—§ü(§äSÙ>,a–ŰŸ¶ZOîŐÙOî€ïÉœ:łâÉœ‚n7žÜ«3+žÜ+è/ۈś-ŽOîŐiOî!OŃ<čWđa©żûߓ{5Ś“{ćÄ·|j6k±ë°ŰÿžÜ«YžÜ+đ#<Æï+č{ć@­ÛyLô©•–hÌnÛkô_čWÔÿzaŹü9°?êŒèT­điéà3çèBÉœąț7öź’ßúś’-xAö_>öĘnà¶ŃìW.OëȘő­ž_cŒ&„š Í­Ò\îőÿ#mžÜ6L†…țكïƒl#œÏôuÂă90êœęèł±Ìœąț;¶Ï“;’gêk°tÍÉÙČ\ۘ[€}æ4~Gæ^”Tš»ïőÿmû\č:eș<’4K~żŒŻ|æ…ﶫ1>ú`ՉŸ`œíđm=“ŸÆ |Æií1ŽĘ‚ę›Ëœj©0ÏIߛۖÛêżÍÒOț–:[î)śŹ$G2Ăчû™}i æÆgüúŒĂBăÆú€uíŽ/,5Aš[„čû^Qÿ_úÉ/ÒçɛgÊAƒ$[™ ßiٟùFŽMŃ>§`tSo ăÍä.”Tš»ïőÿiûŐmóó,_y 4^>Ü8Kțrw\ëÒžŸ¶WÛ6ôćŸ8ęzß(èŚ1ś"ŸcPÿ¶Í‘ô’l/?Éđ–ÛŽDɝ%k„sYŒ|™žŸmƒd~ă­Eź‹Ù8ŹêqX'šScÇaëi-ŰżčÜ„–ŠêÇkÊmU?ÆŠț[ ÿW~=äÁ1ŁäŻ‡#äöą]CWđú†™òtđ0ك<%~T ș=Źbùˆ±M5ÚžÁĉ©›öÓÔ1Û@?4˜1Œț›·Í–?ô•ŰàéòđČțò“ÀŻćO{ƒt äńąXč}Ő`™=čp\òH°mƒoŒsÌi0ńærŻZ*Ìs2Ż!¶ćxĐAęż±ôoÆg98Z~șŽ‡ü!g™K7çÊ}8·țÖż§ìŰà‹ëœ˜›c4`ÖBßXĂŽŃą}“ÿÔźi6śȘ„Âß)ùšŐáïJö8Ôÿ«młTÿ\ÿfC_*źęcfɍXĂ-YKćÚíłő}}Wűp™6Ar6ùI)țŠc4ZрցʇyKôAkčW-ՏcÔyß+êÿEȘ„?t–jۃïùĆ;CdƚÙòÿrÍÖ)òƒ$äœĆŽ•Śęêsя_kĐ =jíșÒà›}füÖrŻZ*ìË”ŚZyO„úorêßHęțÚVŽżę ‰˜ ?úZșD’‡W“çüûˎ” ”_ ~·09Km } ]­ĄÆÒ@MæVa_ŽăŒïő߈căÍèç|\Ă/ńęà±ĐĄrÇÊ~Ò y4)‘s%gƒź‘qÇ~}í1m4—ŠŒÓ¶ž{Ő\ùŸ›ÒćęćFhùńRàû„üxńçȘÿÇÉÓ żlÁw:Ł©ŽÍyJsÂć—KŸ”‚ăüú•„M–dòÄÊÁČiŐ IĂ5/ûŠkêhæúŰíMlkčWvčìŠkÿrĂąÏê±yšt©Ț$Ęj¶žűÓŸ`črĂ(ùŃÆ1rĘș‘òœU?öëžÍ~săwˆđœìAż^òó%_ÈæxoÙ2]Ȑ/Ă~ŐÙæ`?ąÇ‹Ö bÖZgĄZËœbčä{ßčÚoJž„z›rû‘Hč"~š\ Ÿ7T~†cjKțž±9Ăԏ±ŚŠúÊ-8v~…cmaÔ4ÙčÖùĆł”ÏŸ­ËŽOĐćÒÇzS·ÖĂc§”Ü+–«z?~Műčuÿ*Őë€kőfčqûLč|í č<~ˆ|?jüniOÙ8@NRœ7țȚ$wà˜ùÙąÏ€Oèo šŠżÌÇß«HY:òꑃt6ŽŠÿzïOêźŒ,7ŠÍTœÔMî)Ăwźä)r9Ú.ˆŚ`°\·Œ§xù„“T'ő[3YßÛ_„{i,ŚȚi‘sÔ/LAȚ=æ?Ș[ÉœbùáÂOŽ]7PśńŐq=°m†\Ÿ8^źˆĂ>_‹8ô_}Mh_Œ?ûÈÆ°č’ˆïï艁’€sĐÏpnê7Uű]ž±űûmaŽsțè Ńż%YđZŠ%ę?˜đfæUa}ĄZ©Ś ÖpEì čve/ùÒŻdćì9k$űŒ”ßŃò€o™8RvN”Dß1ČeÉ”é+&è|í äȚ •KoűțŻoXűIę5«z˕k°Ï±żùZ|/Șżü ž·Ü°űłWŸÙ5šÓ%?„î;Y\úĂ«^»è›ßx„~§sÇ­à”rńćßșæŠ7șLș~ÁGU?ôùôű ?=zíôw żûŰmł.ŸòÛÔxđO9­rJn•íĂÖi‰ík; őäa]ńäaűž<Ź3+ž<,èÆqăÉĂ:łâÉÂțO֙OĄž<Ź3\ƒ' >,ő{ò°5›”ŰuXìOÖŹÿsyX;ĂfKžę™›€ûž…?ÖĂu­‡nXìw”–țöÎÚ9s€8©Ćß”Onă„kš§fÀßï;:ëûï–ÿŒÿŒ‹êä%§·±áXFżŃL«kPƒęïÊ«"đi]u ŸWàkŒŚDƒ8ó°șu»ËćżÿȚóòÌ ȓÏ?$Oę‹<’'§oxú…‡…ÛđœÁč8}ŸÆȘ·<~đ{ŸúêČûŃgbnæauíú—ÿȚ;Ïê>=ž 5slŽE?ï3æ"5ÌiüŽÈĂêŠÿëțNśgÁ3ú“KUÒ"ŰE°‹ŐšŰ `YŻV‘nco˱šŸçՉ9č©‰Ÿ­§ađ§”ÇĐv öwæaĘŚùNéțÖ3òö[OĂ>{ùžšU[­;Ëm̶ÏÇ2úë\Ìß1`^`|æôÀ/ Ï8,41n,ĄhQŚț@ûÂ:ó°:ß{‡Ëëͧqß%o„j  m âÚnÁmš™sq,úÔŻsá;-ăÌ=ąmŠö9Ł“˜zcwæ1ĘsÏí.ÿŚŸ”ȘMópo«ùŹúŠùRE ŒE}č 5slŽE?[ÌĘjńÛÛŐgNâŠ߂Ÿ¶WÛ6ôćŸpêżûîÛć߯=ań€T&ÌÁ=»Àú9đçZ *ŚóȚb°Š‰słí±š? ú€9›łȘÇah~‡e.“ú€ęyLwĘőwyć•ÇćŐW“W_}\*âg)•ëš¶m ·á¶ƒc©~\sp.æìp>úȘù,ô –ÛT3Ź‰Lœ˜șioŹÿÎ;ÿæò_zé1Üïm†TŰŹ{ÁÁÒ·qÖásjf.ÇąŸ·żŻs>j0ÖŠi9.Æ:±bÖ ˜ž3ëŽ;țêò_xáQ)Çę?Êc§)–_ÊŚ«nĂ8·ĄfŽË±èSĂܘ“>țž`üÌZè{&yX·ßțùŚż+/żôÏӂÛŽćÒoÏGèúÄé+ű~„ցʇ9LôAsyXÿû_ä9ÜkÆŠ4|üiÁml8Vƒ~ÌĆù]°îĊi?bՕßì{ă7—‡ő·żęÙć?óôRșzœRČz,€FÖ&l,°,ê܆š9.ÇąŻúQoîGÚÖĐ>ĐźÖPÓLÖmę“ËêÉû„ù%!^°À¶ âjmPG;·ĄfÎñè«~ü“9&ęüÁżÜúyü±nòÄăĘäńÇ»JńȘQRŠƒ-èă^PvŹ~1î„qÔčn‹18–Ńïƒù0/æR0·j”}bûŽNă¶NkƙKCß©ÿÏțœüóŃ.òÏŠpÏčą RLèŻh›2\Û荂18–K?æáœj }'Œ5ó~ìö&¶č<Ź?țńś.ÿ‘‡ï“ąCÁ0@;T ±Vlč}Àmš™ù-‹ŸK«@'ĐăEë1ê§em„>h.ëűËèĄ{ćÈČÁ`ÂÖ Q7˜6֏Àç6ÔÌq9}ŁßÒĐÈ6q—>֛‚ž”;Íćaęț–›ćțûïqqdé€Æűƒ„í©pŽEę»chȚQGĐTÿï~ś[éÖćn|w°‡}û)G|ûËażțrÄÏöGmôÀ2Îmž-ÇàX©żč<Ź›oț­Ëżߟșu»çŽà6ÔÌżóp,úúęőöBÿ–dÁëQ§țßüöŚ.ÿȚ{ïÄŸĆ>> ž Ç#‹ö\č7ƒN7ęü&qČc⧷±ùÍŻĆq;w:7ÜjŃč‹.àlï}Ć1=ĆSŽœ’Seû°„uZbûÚh=ùWgW.äü+ߟŻ…Öf šƒ©Űâ‡\ˆ$äŽoțU!ź# Θ§#òŻÌu™ûŻ,QkS9żÍïUż-ʐ?ÓȚùW‡-§ĂńÊb”6GäKqŰTőÛ"9f±ŽwțŐĄ…œ„5ŽWKQÈdü~œŚM;ŽNì6ÖÛ"Ôhçü«ƒó{HkŻ(Âč#O}Â:­MÓzk/ƒü%äÿŽcțŐÁ9_HkÔʓąÀqê“ăćĐ kÓŽȚóG.[ƒŠÈÆeă$č›–ŽGŽCöOCŽƒÉ]r?ÿêÀŹO„5Ž—Ș”i«ȚAŰÿíĆq[Ł©Ÿ¶ê­±Ê{L»ç_˜ù‰Ž†êƒ”aĐ'Nż-àűI™†ïgă‘c2Bâ‘wrì,óŻ8îč"ûżœóŻ†ü;“cw4yłż°ôÇ!oàÜæ_…Í"qAłe Ÿ—G-$áKÆé±°`Œ}bûjż€vÌő™€„N•-dœïähűIĆĄ\)CîU >[:*ÿję’±Čm­ż€â=—ă#©k`ŚűH üXÖSŽ hʂuö!šg!€*/N<ùWgŸ•Šœ(†ü"ZցúŹ+8śxòŻfęŸËżjî>XÌíqćU‡O­ŽDcvÛ^ŁżœóŻÚ*ÍĘëę1[OŸŃ‰òȚš-òòÎĐxé>(ZșŽ5 G=JșŒ’w†ÄÊ»CăNĄ„ü«¶ sšȚK-òą˜„ n[¶°ßabȅÁțg?Ö§OëȘő­ž_cŒ&„š Í­Č?v>òi7aŹxŒƒù1VSË6c œÏŽ9áńƒ<ő Î~ôÙǀŰ>k⎊ÎvgțU[…čNzç¶ŰŽ›VŒ3X8ęœĂÖѶqÙXS·Ń>ăuLÍYBț±6š«e;|«š Í­ÒÜ}°8źÂńì:-Ą9\mNg;|[Ç€ŻqŸqZ{ m·`gțU[…čN|Ï:Ç°©GŽTŁ8ëŸù:ZWKĐ}èŁŻ‰ĂÚÛš%ô-êÚh_Xj‚4·JsśÁJX:Zü­‚k–f-ĄOFë¶NŒžŠÄÔĂž3©­ÒÜ}°èŚ©ëđÇwpÛjܶv;šCțăŠ߂Ÿ¶WÛ6ôćۧŁ_ï#ę:&r8†ń Î<#¶«ub”7”ȘÇah^‡uŽÉțÎü„¶ŠêÇkÊm©ù7ê;0㛾úÚ1ÎGżqœX>blSÍ°&n0qbêŠę4őGà>Rcê7`ö+}cu;F‹>ôMPÛ8ÿȘ­Âß*ùšŐáïJźq}âô8ăô }âô•h@ëÀ6ú čü«¶ŠêÇ1êŒ֚…ƒe7d|Y°î‚ę}àjGÌò9źYiđÍ>3~sùWmöćÚk­Ü§vû‘¶5ŽŽ«54—ŐVa_ŽăŒ–ZÇžŠ]wYôAżŽÎżj«°/çaț Çàöφ^NŸ°NûĆu¶Ő1ˆíÓ:aÌ„ÙČV\5À§&Hs«°/őW1śc(C±}§%ôISß cÍÁ|»œ‰m.ÿȘ­ÂŸ|ßWí Ńm9ŽÎAÛÄ4nĂXk°O€9^ŽNs:Û}Đ\țU[…}čmeF^?ŹÛ0Škź–@ŸF¶)ˆ»ô±ȚÄ­9xì4—ŐVa_nĂüĄ jĄ&Hs«°/·©ÉÂú±ęùÄ~ę© ÒÜ*ìËë^ĂéßrÎú·$ jĄ&Hs§ÜÄŸ"Đv3h«Ü :w2čM€ 8ÛüŠÎÚjóOéĐrJN•íĂÖi‰ík; őä_]čóŻ~üÌÌ ś|‹€Ł™ŽŁCòŻ~Ő3G~ŐĂđk —o”ŃW‹șËÍY'ìo[ÒùWżü"KN%Đ¶ÍŸâŁjmšÖcuDțՍ~ČKhFûÉnű„qcű?Cœ°?ûț~ôȝqăłël7Û±ûtDțŐÿ“!ͱ·èh#~ü‰։íÛ¶ĐČȚ‘uĘ»;äșwÀ»;­:hŽÛucŃŚŠ­»ÚĐż)ï™öŽÈżșêÍ4čêÍíôÉv9vâ$lš\ŸÖźçÖ«5l7ő·>ăZoÊv ž?úÛśțWöŰú€A‹­ßźÛÖ`őSœ–ÏžÖ›ČœCòŻźüś6Q^ŽÔâ„1ą>ûú„qâôÙîŽßƒíˆü«+^I‘Ë_”x%U.ŒšȘZź@ę űìcĂ>l#Î~vÜîă}.·b! Ą?y<©!Ò^śżúÎËÉB.ßyö„”,ßy uÄ ûË_†öO.)ÉXàŽ„mìoü+ çŸíí—ő­f~ûĆ$!ßyÀ~öÛ/n”Ź¶5 ]măžíÛÖæ–ś7Yú/Œü«P/%l‘e }'VŒm‹fŽ“Ć3Œpí°öœßÿêlóŻ&Íđ“‡? ”? —í‰ëÿëòŻ^ž.Ęzï”Çû§ÉÔ%[pmŸü«‹Q ŻÍÒ\țU#œq˧nł– òhÿòÄÀòÉÄTé3=©ĘòŻźžü»WB^›ćlóŻí·CžŽC^”]F-Lj·ü«ëŻœæGŚf9p–ùWÿ–.öĆk0 M–‡nn·ü«oțÏ7Ÿym–łÍżú`ÂvéÒk§Üß;]ȶá|98ŸgDjUŽçŒMË°_”yęńĘ Pö➑`۟(p͑żuŹ™Û1ÿ ‡ż[ÇsùWš»diŠo€Ż1űŽ€ę}‚¶JçžĐß'ŸE§Țÿê òĂö@û~hŁnÖncț,8€ś ï‹u9d<î˜wv.óŻg&šț'ŠáwÀxä€Æâ91ÈC>ïÍu$=LsĂš‹>-ăĆžwóƊ/V†őČïău$ŸßĄÓOCÿüłÎżąțnœwhțU5ôWäàïB»#đ\$h„Û§æÒLhŻü«œÛcTûżp~àț{4ź?ÎëŽMAÜ„őŠ n­‡ÇN{ć_•€Ż’'ú„Èł’eąś:+š…š ͭŸÜƓuæèߒ,š…š ͝âÉżê8šÍS<ĆSš”SòÀl–°NKl_Û­'gììʅœ3æNń<3ÏK$Űÿí3æNń<3șqÜxž™xfĆóÌDè/đ<3ńL‹ç™‰<†.Üg&țrŒžžyâIčeÒ ćwà7šÿüfüqùĘűzęíš=sÆÜ)m=3‘șÉÍOÈ'WțšŸ1êżyÂqùęDê?ś9cm=3‘ÚoŸ~9_–žI_É&?śrÆ Í­ÒVÎő? úQ·úP·Y žsŠk6êÿćžűĘÜł+waÙ1»·$Ïè#›Šöő“Ÿ”ű1IŒŚÇČyéx·rÆÚëž]Ôÿœőهë€OËŸćùę8'2g,Ś§żdÌéƒÏ±źœ±„i}°†‘ł7Ț­œ±öșgÏ3]fŚj̉œFڀ„LYżč æž]Ś/”ŒèyrÆR•€ÉŸK:֓†\±ŃÍçŒAš[„­œ1ŸoŸ^/ùÜߌA3,a»ĘŻ­{vćMŹ_Ëț-űŒfÎUÇĘłKó­,]<Çs wÏŹÓăˆđő [·§àü\ űwL«Ăg‘ÉÛ·lžäù–#i«äpr äŒ–ŒĆ%Ç»żI]‰ś8sK˜'ƒœ äù0/ˆ9WÌÁbîÒéä,”•3ö+h§~~ÖÒê±n—”†œ„őêÿïű“űíy@ŰŠdùp)ül­ÆuZÉJ#07·»uędùÓúIR„c%%g”üjĘù_@{[ÂŁÛÙăS;-Ą†öŸg”Ț`qUê1ùVê é”"◝Žs~œ\ÿ›ˆ1O‰\łÖK~ Ÿj}fˆ\7Vź[;V-a柩ĆöœĂXS§&Hs«ž“3ö=hæł±ÛÔ·lSŽź‹ú'Œ5…ńÓčç•;9cW@?Ś`ë€eœúŐąŸÆæŻ nêđ-èS?_—†>¶mè˱OGżæ\AżŽ‰ÜŽaüźJ=*߇~¶3GJÛ-Ș1śŻ·WËÏđț`ę·nąü°źș`‰­_óœì8ŹsLö?­{^Q?Ž9nK}ÌRßÁpìüh[ú:—öƒEß*èżkûnêqWœ:Żôă6ÔÜg?;NL]ûƒÓÒ1Û@ÿnohâ<~žÿ9aÜ~fb5æă{ăjŒFŹł©•uçXŒqÿ»bÖ ˜x{ßłëzèă1T†ó!ëڇ}Ń^ę\›ŃÏxŒêäû”Ö ”smÚÛČ/}æCњzûçŒńœKę§ɛ;śËëà”Ô>„Ûùi@­6ż_?Qßômۇă h±ü]ˆőöÎłőń8żëà{áÀŚć©æ”!ìۀٖzÔÚu„Á7ûÌű•3vÚp?Ò¶†öv”†K5Aš[…}9NK9c.ìșËąú]È9cŽlÓ9'§ÄŹ:}bûŽNă¶NkĆU|j‚4· ûrîŠ9cŠí;-ĄOšúNkæ(ÙíMl{挩mb·aŹ5Ű'Ò/Z'ˆčÆ@m„>hŻœ1ÆtÍŐèÓÈ6q—>֛‚ž5öÊ;ŸP 5Aš[…}č'gìÌáߐh ”P€čS<9c”yÊI9%7Éöa ëŽÄö”Đzò˜Îź\èyL?9ŽBΕÇtMÒ9tTÓ5›ńԂ…¶),ŽîÀB۔ŽžśËŐƊ mSXhʁ…¶)qï+–ïŻ-6,śo[$ûë+àßYšëĂBŸ1»¶)qï+–ïĆ –ęuÒ-Ć[ëôiYh ăìĂÂaŒ–…¶)qï+–ïĆ –n‰óÔ',NKXì>,Ž„Ći›ÒśŸbáŰ6,Ž6,NKXh -aqÚŠtÄœŻXźŒ(6,Ž6,NKXh -aqÚŠtÄœŻXźˆè/6,Ž6,¶e±}ZÂBKXœ¶)>ߑô…e»ÏÙŠßŹ™ïpŹò˜źï'炀!ïÉ>ßá’”pò7zÉFÜ«š=ò˜8öč`湏€8dŹX>R2}Kzàôs’Ç1w˜Țûj-ȚokpÌF#Ç%|±čÿïmEșpŒűúD|Œ-_Œí+Sà{yő’€QŸIĐòčŹę©‡MCAŁ%ÇošäD/–ȘĂ9R‚Š#xö`qvą”æ&”{“;śŸZ3ók žÒK^ò™ .$g‘FŒúdÙ2o˜lÁ±Č9KEÈŃŰ8Ar—Ž”€č}e揯Ćoê—2cÒg2}Ö9ô=‰đúìœæ1ŒG.Ìr/y.ÎOî]3C š ŸÍùJŠEùÉëKœ€:9\ȘSqφ8_)Ž˜+VN‘\§Üìû Ź„çöűžČMʶź–ƒ«çɞ%#%bNoyrőJù+è2Wî Y ]‚ÆɓAC„ÿČÁ’8Ł§æjuDÓœĂŹđ’çW{Éț°éČ?b¶TnšŽX9z KŽï3kÀ±ŒüÆÈĆoQű™!ćkIiÈéŸqü)9Enۍăo™Ÿ‡î‹ž$śGŽ‘îxæJÚìr0y„™so<Ț?j‚4·ÊțŰùÍæ1íY2XČWM‘—#ŠŠo,Ÿ[E/ÊőțR }”™È‘.ۉüŚ<äđâo/‡rđ[ î[ŽsœT%†H9Î1Q‹ć©™rëÖ-ò·M‘ĐżTőw†ț.Đÿ(H›ő„ä`­Œ&ćœÔÀùÛ#)É)]=MŸô*}ŁŠIò +â–HՖ`} j3ńšáXȘÏO—ș<Ü3j7ț/ ÖV‘ e‘s$0ÚWț˜’&ILżm\-wÆûÉ=±łćŸš ȘŸ€ÍüBvEÌÁęjđûę^Źór~j‚4·JKyLč>ĄșìĆq04`€jâ~ćkÀ}\œ-Fjv w ûŒ& śëJŽÊ+€,Æ[JC§ÊȘàirëÆ8ùëæXč=!XîÂyâȚ˜éĐ?^”ß1Z¶Îű\vźžƒÏ]üœÏ|ŁĄ=ò˜rpüPŚpż‹—!·ą,j.Ö°P*ßYč1P*7c-«€rS bKvô/ÆgôÁcäĘĆCćokäŽàÉÒuéč'r"ôUęĘBGÈöčœ±ÿçâ;e”êŚ<ÌMMæVi)iÏȘńRŒj"Ö0šŠŹ!|&^‡ÙR5ëX€ś©!f”FÎBß©Rędƒï y7Űh'OáŽ}ńɌž/ŒÏï)Ćyč†ÓÉj)©$%@òqíPČjÎ%“Ą ëĂëábșźIA;ûăÜhkwRDđz Ä”uW7ÔÿĄo_I œ(č8źȘpß.æođ7˜öÌcJ›ń…”Gțæ0°Î8ÛWÚș‰ŃLŠVà;=ÁëPˆśĐœ°™ȘÿŸđQ2knûłeß|nD™9śáićQ?Ž9n«účèƒ}kçJȚüŸRL}€:U/`œxćXè$ÔMtȚĂžț8Žt˜ô°oáÀ}ÿ”?Ùæ?F2qò>šżá˜śŽôG ç_;ŻÇhŚHò̞:·ŃŚ2E˱ŸUópŐ»ń`Ù·hań =3Gî !Țózázm†äáÚ«"3\j‘ŻÈčìyÛ3©p[ $NűPś#5rß:á±a4UÍ{ńęwź5òæő_KŸwُsÙ!ôœ7f†|âÓŚË“eGű,9’ˆkŠÈÿŚȚ™GÉUĘwžż“q’3“Ä“ÌOæLb;›ö8™[ƎăxÏńŒ3Ż86bG,0 „„»„@ ځÖF»ZûÒĘj©[-”Ô­­EK­$!wŸŸß}śŐ«êȘV•șȘZdȚ=çŁßrï»śś^Ęź~UőU”~pꔞ­]~ӎĆăìöNŒ?ȘőaŚĄßo\[ê„ÆviÌwœtk}án·}ô@·CŽ»ŚuLù”ăôÉĂÜżNčÏmz}€kĐęYûÊWô=uóôúœïŚAπ&šÜ:&ÖŰŠçÙ5Ïß»ĆjÚŻú©œM5îziÛ©{”Ö1wËżGçrŸûŸœSÿÄőnŐšnÓO»ú7ŸqÛőûő˜t è~ü5c-­Ăρ,5©Žąc9śÓš‹c ńȚÎșWëÖżò°[ÿ䌀óhù>í+‡Ü)BÖ픝cïv›ŸŸÁ­9Àm˜üˆÛ4ëW'ZôûžÚßk] yU;Ś\ó烄&•VTc,óŁcâœË¶ÚWŹ– zțXśâ ·öÉőÿ+nÒ5îïêGöwëŽÏÖ+Ț œżQŻĂ6iŻ3Új'IŻ3Wu†”@s›­žŽ©kón»îq7Ïy^ûAŻ[”'6œÔa~tÍu?Àóï=Ÿâç•ù4OlŁy­ùÔ€ÒŠjŒ„ÆRtL<Î'[ô=¶›gșœ«§žVK‹îč6ÏyÎ۶đEíń±nߚ©z~Ś=’Țo>„ęÂqŠ›Ńń| [m?3\ÓÛæèœ Đœż1Gç7G}s5FŻtÍÁŽ‹çМŹűąÏtL„›„\r•Ò_Ń ä*ͱ¶•Šż:ÖV«ż_ń¶ƒòèŻhwȚy§ ÜuŚ]fācÄù /ÉŠEúŒ@”wm[ȘςæžréŻh·ß~»KòÄOž¶¶6ŚŐŐćÚd‰óćÉÁȑ#]›âgù$AŐč„Æ”ŻyŁlú+Ú­·Țê’ìÚ”Ë,Œ1"Žƒ „8Ű@n ±țȘ^»„v†i€’Țçő?çPŠțŠvÓM7čoŒŃÀ?tèÙ\†W êÛčs§ĆÀ1=ö˜ŐLcÈ'aLĐ_íŻ›ăZWŒȘŚÁcô™ȘtŸq„èŻha À§l!BœűűÔNK ?èŻĐ/”ÖŸZ6ęmÀ€nžáƒëK >úh Æ ł8ŒÇ’ăClĐ_hæ`ćkeÓ_Ńúśïï’ :ÔjàqÀ‡<9ÈÍ“r脿=űÎæùúM3Êú=RŚ]w;Ôű„Âqțośńü3ß”ŻYÖï‘șòÊ+·_{픟źčæł„pÛÍąúő=FúŠ=ëȚŠaêEŁżâï šŸ$ÊŃGLę'tę5ë»ÓŚÍŹÚśHŁżêéo†q;€-x·MŚżùmé0fIÏóńűۃ€Fû |TĂü±nòđœúۃ*­šÖ“țÊHæ#Ÿšęč„XvîßT?ß#5ë…ĘŒ±ÒÄŐ\űß,‡țÊêRÌč™/‚„ˆy.á{€ű»}ÏȚßß5iOőæoöV…r@.Iæ…ì)ŐÎś0­~kŽ›üä=œțۃ*­šVHŸ‡‰8éSë‰]úœÒ|ćBß_ÿôg»őÚśá{€ű›ƒ|Ô>}ßćŸ3„ŻÒßë««ȚśHá{j]‡Öš=~šÛ8ÿ„èÉ ùèŽöŐÍrc‡ĘźÿĂ0ÇàoŽ{ìv7ő©AnÛÒIzmŻŚeÒYUó{€€żX3y„3TßG7ă)wrçbÓčiœ5–»„zN\Ș~bòÛ¶î5śúè!v,}ÌEȚúAŸçžHs5©ŽąZ!궫yž­ÉÚÔż_ŚŸ<ëù1NèœÆžCcôŸbHŽÛ^;ŐMyú^›kéŒ'ő:mžćă­ÇüœŐ_Đï‘Uo>ok±_:ôž“ôEf56łærŚ(]ĐkŁ†DsèœxĐ{òôăÉ3.œŚ€#:_Æú1ڇȘI„ŐòéŻâù_a1ëš|­auG°GšÍú‡z˜ßò Ÿë1áń¶FŁžë­?‚ńœŐ_u5Í”œÌüŹłqț‹–统˜Ćfőzœ~–ćï$Û\ËŽDŸî„ڏ™yk&Śqo(Ïú±+KM*­šVHèąVÍzÎÖă<”/Ƀ­„ŚŽűËTuá'±1‚óąŸyxL;Twè˅|)ú„Bú«3æ/1ÿDkMŒ>{«Ł.Z_ősŽœŚÒçtœò~ž%vÎ7[ßJĘä3c‚őc‰Ë©żŠQÌś%u5ÍÖő“îqŃxËő±śĂž`­YÆ·­n~€ï: ă°ÌmŸàž’ôKÔŻ=DZV?să'đóûŒù6NV9joáŠ8ÎCä+GŸŐ,ëóŸûțë_0JÇš~œős€t!fùÖò|TÛÚiȘÿ‹Ą?Cbź˜(§9ÌÆű|9őWȚBÂgŒÆž@/b±úșŸÁŸ Ÿ·¶FÈa5ßk€„ÙòëŻÌæ’Ìă>$}cĄÀ&cĐ.á tÄćÖ_1§ŸYĄœÙâ$QÎÆAßæÆTRU\GlOŰŐnÖăő5Pżæ)F•m5FăÒòVƒ|jRiE5ÆČv)ú+ó!ŚOB.è}BŽ­¶țȘgS㶋Ơ\<‡bú_ô™ț*¶č(ŚGœ‹òŃìTćçè+ÂăOM*­šÆXłśrú{/)‚ZšI„ÓRęUć ¶Ž„­ą­›Š*űČ@Œ…à[żÀŠú«Ț”ƒțêȘï^5ëőŃŻë”veXńÚkŐ_=vÓc.0üæáFđƒ…€!Æ&!—„\%őWxÔĂńĂÇÍ^Çvé3\éŻÊęęWŽ‡ź{Èîÿ°Ùq ÄŰq>èKÒ°`ȘéŻÊęęWŽ!żâÎDZźcnïÎœæĂè_ëóXĆä>fčžxû„§MUîïżąĘÿËû]!ÿb°Y8ÚuÔ,P;’c 1ÿ…‘Ò/IUæïżąĘûó{ĘœWEà€ú±ŒÛÓșÇxöțg-¶|!Ô?4ő—ÿûŻhƒ~&Łžç§śÄ>à=tÔlà™ÁÏŰ9@ƒ „;OŚęUčżÿŠÆüÀZbÀüÜúŸbê_0f€éŻĐ•óûŻhwęXšÍwÿän?Éî»Íçäžô”ćząæEę_ùVéxêg»rÿż;$i9t$ź“žTŹț1OJż€ç}æ^îżăwő?_œ}àșbžăÊ;̖ÂżŒGőTęŐÿ;~‹G s«fŒw+§q”SF»e“žw‹Ç?Łçó§Ü±Oy űIą}ÄԏțȘÚÇo”ŸÓjë¦ܖSÄdéCdk&»FùČčÖ7Eș1næƒÜôawt㍑w»EăĐÏÁ`7Ôœnö“ʍžŐœ>ì&śêĐnúCŚ»iâŐGž™ĘâVM^UęŐ!i+Véÿüą± ú?©żê–dûÒÉYú«%ăuŻ>zSŹżšùűmUŐ_m˜ő”ÎažùԌf |,»'Łż:Pÿ–źëté{2ú«©Üè–N.í’tLȘyêĐ«ȘżZ:ń!ćœOKó\‚țŠżăŚ)í śpIęŐÄŻsIęŐ䇼ŻȘțŠúÉ2ç(dƒțêxëbӐćêŻŠ»Q?KęŐtę\l•­–țŠúń©?—%/ÿÚ-žđ ž“ĐśF vsG rsžżÇ…żă7ûÙ»to”Ń_ŐŒô@UőWÔÈyá›~Œî(üż#-5șöú+ôVûuœËìçîvóFß«ó|HWęŹVIELęXú=œƒïÚHû‡ńÄäń±ÄÉăCȚo9î‰4P“J+Șő€ż –Ÿ°>àçƒ=„MâçÈ>žžÚÇÏŻ/?‘ËŹéęžțŽŸ?žœ=ŠÍêx }Ô€ÒŠjùôWÌk0_Ûú‘Ïq_òôËő0'Ÿ/ßśiœl˜ƒ~,0Ÿ·ú«@ű;~ű~}ƚżXLƒe.ô>ÌeVqXĂÆÊR“J+Șő€żČùôșß֗ $ûĐas±1™ă}àălȗą_*F…ćg3ԉ”|°ê·Œ0-ˆò>–aÇ+G>3&ŰÌXæ.„~Ó/©~›S:æđ~Ćțú-ÖüȚ/«+: Š«‰òXæ4_0Ÿ$ęőë1ćXêCc~æëăûqČËzűÙyˆ|ćè ÇûŒ‡ŒÇÇŸżÄú‹Ô_±>ëyôWf6‡č8ëń9æ5ăó•Đ_ùőœocúńəŸÁŸ ŸŻßÖ9ŹÆà{ 0[ęë• ?ŁŰ€Őc,̉…ÖđvĄÀê<Úđ„ÿ)ƒț*łžŸÓΠߏPÎl qŒ|—ˆÌx›7SNęUöz%ąë˜{|nÌ;łžrêŻVMŚÿ'Őś+ùX„ubËXöœ|Y#ô Žś±òŠCꊧÉ"Œ)ŻțȘK”ŻœŠï-””5ȃúŒÍÍE1Ÿà8ŠEì«ÏŽMÚ(o5ȧ&•VTc,kçÓ_QçÀÏć…Âu§væbNÓû„5rlȘżÒùëxæŒŚ*„ÆdÙ\”ë#ÎEùh öNȘżòsôáń§&•VTc,śÜĂÙ{9}€œ—A-Ô€ÒŠi©țȘrP[ÚÒVŃÖMS|Y ÆBđ­_`SęUïZȘżJőWçkèŁzC1șŹ‹Y…~ ›„Ÿ$}­żÓZE9xÄÍ3ĂçU?¶'.6ę ëÀææóq±éŻ°Ë7«ž s1êŻ:śwZőcÉa!Æ^,ú+j…݇ʎçŠY1–1Ű@ˆ±ƒțŠú±@?à'ó…šéCęPu◠ǩú«T•êŻRęUȘżòà‡P?ù@æ…lȘżJőWàőDČȘ m”Ą˜ú±ô{8߇5öă‰Éăc‰“LJŒ!ßrÜi &•VTKőWüT%_cRę•ÇæÓëV|[_6ìCs„ÍĆÆDdŽśu‚ł!_Š~)Ő_őŒŐƒÓŐDy,sš/_’~‰úő˜r,őĄż1?ó‡őńę8Ye=üìÁń>V^qšßô4Y„1©țŠ9 ÍÔÀ9đsyĄpĘ©č˜Óô>a›êŻtț:ȚŁ9ă” Ą1Y6ćăúˆsQ>Zƒœ“êŻü}Exü©I„ŐËęśpö^N`ï%EP 5©ŽbZȘżȘԖ¶ŽUŽuÓT_ˆ±|ëŰTŐ»–êŻRęŐùúšJs1ëŻòA_’ŸÔ_}űá‡1hM^zô%ËÿÁkŽ˜~l>úRE]űêvÌ#cl –˜|>úREęŰ@ˆG?4Ú4)‡%&ß őś„țêĂ>Œ}lˆ ÜšG™%fL ÄŰŸÔ_Ńšš“zéƒç‡ÀȚKŠ jRiĆŽTU9š-mi«h늩 Ÿ,c!űÖ/°©țȘw-Ő_„ú«ó5ôQ„€Ö[ “ț Í>烟$}©żą^țȚ g-7†zÁò=їú«ĂÛß/C7C.7ÆÇöD_êŻűź%4&ű@Œ5t ș1ó Ą1}©żąȚàcC äšâ@ˆ±}©ż őâc‰Û··ÛßO$GŒ„1¶/őW]]fÄOßûŽC{K»ę]?ò=QӇú+ À/ŽKőW©ț*Ő_„ú«TćÁ9 ~òÌ9 ÙT•êŻÀë‰dUÚ(C1őcéśpŸk:íÆ“ÇÇ'yCŸćž'Ò@M*­š–êŻ<ű©țJŸÆ€ú+Í§Ś­ű¶Ÿl ه曋‰ÈïëgCŸęRȘżê«+: Š«‰òXæ4_0Ÿ$ęőë1ćXêCc~æëăûqČËzűÙyˆ|ćè ÇûŒ‡ŒÇÇŸżÄúSꕶəŸÁŸ ŸŻßÖ9ŹÆà{ 0›êŻČŚósÚčá›ʙ!Îà—o㱑oóFcRęsyœ‘iv,aŰ2–='_Ö}‚ă}ŹŒâPżéiČcRęsššsàçòBáșS;s1§é}Â96Ő_éüuŒGsÆkBcČl.ÊÇőçą|Ž{'Ő_ù9úŠđűS“J+Ș1–ûîá윜>ÀȚKŠ jRiĆŽTU9š-mi«h늩 Ÿ,c!űÖ/°©țȘw-Ő_„ú«ó5ôQ„RȘëbÒ_aŃ0a‰óA_’ŸÔ_­59l€>Ɛ/D_êŻĐW­U ÂüBô„țjśöĘFŹÁÒ84?Á‡8·úûRh•Đû4mlČ<őbéĂ&ă@ˆ±}©żügîó瀟Ź›Œ!Æö”ț ĐZőæŽÁą&Ő_<‡«Sꕶ“D9úˆ©?Ő_„ú«nDùT•êŻò”T%äŁ;JőWjRiE”TćÁOőWò5&Ő_yl>œnĆ·őeÉ>4GŰ\lLDæx_'ű8ò„è—RęUÏX]Ń1X0]M”Ç2§ù‚ń%闹_)ÇRúó0Xߏ“ŐXÖĂÏÎCä+G_8Țç=ä=>öę%ÖŸêŻŒOÎü ț\đ}ę¶FÈa5ßk€„ÙT•œžŸÓΠߏPÎl qŒ|—ˆÌx›7“êŻx ˜ËëLłc±ëĖ±ì9ùČFèïcć‡úMO“E“êŻ˜ĂĐ@ œ?— ŚÚ™‹9MïÖȱ©țJçŻă=š3^«“esQ>ź8ćŁ5Ű;©țÊÏŃW„ÇŸšTZQ±Ü?pgïćôö^R”P“J+Š„ú«ÊAmiK[E[7MUđe Á·~MőWœk©ț*Ő_ŻĄȘ4›ț*@œú’T[5tÀPÓ$;{Î,1ùy,„ż?É|’j믚‹¶ âub!Œd>I”őWԁͅ|.‡Í…ń†ú«­żbęd.űXHö'-y| ¶Úú+ŽJÉ1–P'6ä‚%ÄÁV[uÿŐś»¶–6«;ű—ƒ­/ÀÀ/†šTUđźNőWȚOćè#ŠțT•êŻșćSęUȘżÊŚRꕐî(Ő_yšI„ŐRę•?Ő_ÉŚ˜Tć±ùôșß֗ $ûĐas±1™ă}àălȗą_JőW=cuEÇ`Át5Q˜æ Ɨ€_ą~=ŠK}èoÌOÀüa}|?NVcY?;‘Ż}áxŸśśűŰś—XȘżò>9ó3űsÁśőÛ!‡Ő|ŻfSęUöz~N;7|łB9ł1Äüńòm\"62ămȚhLȘżâ1`.Ż72͎Ć"Ź[ÆČçäËĄOpŒ•Wê7=MaLȘżbCs5pü\^(\wjg.æ4œOX#ÇŠú+żŽśhÎx­BhL–ÍEùž>â\”Ö`ï€ú+?G_jRiE5ÆrÿÀ=œœ—ÓŰ{IÔBM*­˜–êŻ*”„-mmĘ4UÁ—b,ßú6Ő_őź„ú«TuŸ†>Ș–ÌZâêjëÌ/•‹A•Ż~òa¶ŐÖ_Ń:Ú;ôŻ·OĘó”[4s‘;°û€;ęȚieĆ…Æ’ORmęíío›¶jËú-nĂČ nák ʑCGÜ°›‡č‰OLÔ—5?ŒĆORmęíń›ÿÆx}Öč”Őj ”Œ{€F8;†–;?FcȘ­żą-˜ŸÀüÆ”nÙìeŻ_șȚją^ęŽùÓæ›ßžÎĆsb«­żąíoÛŻÛŚ¶Ï=Ôÿ!«qʒuÖÿűíÙő3†Æ1Œ%æÄV[E{ìÖÇ,PK€š€<±är©©ČțŠ6ì–aæ5šđéŁ%Çæž‹AE-č?©țJż»w-Ńy§ú+>Ë|~ȘżJőWùZÇòIȘŸß”B5Gà‡P?ù@æ…lȘżJőWàőDČȘ m”Ą˜ú±ô{8߇5öă‰Éăc‰“LJŒ!ßrÜi &•VTKőWüT%_cRę•ÇæÓëV|[_6ìCs„ÍĆÆDdŽśu‚ł!_Š~)Ő_őŒŐƒÓŐDy,sš/_’~‰úő˜r,őĄż1?ó‡őńę8Ye=üìÁń>V^qšßô4Y„1©țŠ9 ÍÔÀ9đsyĄpĘ©č˜Óô>a›êŻtț:ȚŁ9ă” Ą1Y6ćăúˆsQ>Zƒœ“êŻü}Exü©I„ŐËęśpö^N`ï%EP 5©ŽbZȘżȘԖ¶ŽUŽuÓT_ˆ±|ëŰTŐ»öqĐ_]qĆł&Mšä*ĆÂٓ+ȘżșïŸû\`đàÁFđƒ…€!Æ&!—„\%őWƒI PŽ=j6ÇÚôùʞ5Č”îà–·ő”Ouçú,=âź»€  BŒ š ô%ÙŽèÓ_um[ȘÏ[æ”Uuûí·»$íííî‰'ž0KŒäȑ8Æü‘#GÆęŰ|̙űÓ_un©qíkȚ(«țêÖ[ouIüq«+iÉS_]]Ćűäđƒrùxsüpé—€ÿ©ŸëZkg˜(©qèțꊛnr7ȚxŁÇw{śî5K ‡6Ëž|~°č0æÍqz+ęŐțș9úÜôŐČêŻÂ€ÔM=Xb Æ2.Ÿl.Œ™„ëț ęRkí«eŐ_ 0ÀÁ 7Ü`<úèŁź­­Í7Îj"Š Ág<~ÒB?ö­ ĂMu ažÛčò”ČêŻúśïï’ìÚ”Ë :Ô|,1>őaÿú믏ę€ÍÇì—Uëé—滶Ő3ÊȘżșîșëÜù À/Ž›­ëțȘSśríkg–Uuć•WnżöÚk]1\sÍ5fKᶛDő/ÓgèșÿYś†4 ŐŃ_-xéa·lÖ·T?o‹”gJ›3ÿ•ßèù|„›;i„·€Ÿ$ÊŃGLęèŻ5Śšț™źZú«Úɏ»†„Ó]œ4ő‹&șúĆȋ'ș:ùuČÄuÖ',Ž f (Ț±j†{·MŚżùmé0fIÏóœ[=ćqW;ń1·lÂ0·lü#nÙžĄnĆËĂÜÊWFžőŻ>YUę óɎ=űIęUĂü±nòđYú«USGŠ'bęŐúŚžźȘțʈ|jöçbÙ=șSęèŻfœđ ›7öé{2ú«53žvk!Ò_­—Š©šú+óEđ±ô1Ï%èŻĐ.={Ś€=•Ô_­ŁnéźĐ^Áz=żVSE.Iæ…lĐ_­~kŽ›üä=ĘôW[ôXl‘Ț Ćֈæ…ŐŃ_ŸZOìÒg‡æ+úöűú§?;Ű­ŚŸ?Žeź~—Íqmk^5ęŐŸoˆŒț U5őWűZköűĄnăü—ąs$/äŁ;ÚW7ˍv»iŻęŐžÇnwSŸä¶-€Śöz]&ŐámèŹŐĐ_uiΚÉ#ܘĄ·že3žr'wêsêœ:7ł±†4>zN\Ș~bòÛ¶î5ę„!v,}ÌEȚúAŸçžHs5©ŽąZOú«źæy¶&kSÿ~]òŹçÇd8Ąs?âŃ{űŠ!9n{íT7ćé{mź„3žÔëŽy–gŒ·~óśVuBżGVœùŒ­Ć~éĐăNĐÿ˜ŐŰ̚Ë]ăâ—ĘkŁ†DsèœxĐ{òôăÉ3.œŚ€#:_Æú1ڇȘI„ŐòéŻâù_a1ëš|­auG°GšÍú‡z˜ßò Ÿë1áń¶FŁžë­?‚ńœŐ_u5Í”œÌüŹłqț‹–G3Ćüèu,6«Śëőłlì‰V}ž„ŰæÒXƘæ':Š«93oÍäá:î ćC?Vce©I„ŐzÒ_T=«f=gëqÚ—äÁÖÒkZüeȘ‰șđ“ŰÁyŃÏ<<ŠȘ;ôćBŸęR1ú«­5ńú쭎șh}ŐÏ9rn\KŸÓqÊûy–Ű9sÜìqXĘä3c‚őc‰+„żBgÔŐ4[Śožk\4Țr@}ìę0.X«G–ńmk§›0]MԏenóǕ€_ą~í9Ž”ú™?ŸßçÍ·qČÊQ{ śPÄq"_9úŹfYŸśű<űŰś—Xÿ‚Q:Fő딚Ÿ€ 1+ÈG°GŐ¶všêÀâ@èϐ˜+&Êił1>_ ęU–ύ=^Äbő‘3?ƒ?|omĂj ŸŚ łćŃ_Ù\ô“$óű€IßX(° ÂŽKűq9ôWžÈŚœvnűf…rfcˆ“D9Qld|›7SNęUŻà:b{ÂÆšvłžrêŻ’ó!Ž­Æh\!ę•a±òűŠ§É‚<¶Œú+ۋČôÙäÁrą[.Šń!űŰ$ä86iŁŒŐ ŸšTZQ±ŹOûI űë'!—ô>Ą?ÇŠú+żŽśhÎx­BhL–ÍEùž>â\”Ö`ï€ú+?G_jRiE5ÆrÿÀ=œœ—ÓŰ{IÔBM*­˜–êŻ*”„-mmĘ4UÁ—b,ßú6Ő_őź}ôW7|ś–Y5/-Óÿyź ë__PQęŐ 7żìcn™h?XHúblrIÈUR5êÆńźXŽ:a¶T*ùęWÏôÉžœ~ŹÙq ÄŰq>èKRÉïżzòš\>Ž<žEÈ›dòCŻYŸ•üț«'~9Êâ7żxȚ,5æłÀ˜dœJ~ÿՈŸ?ëF\ŸĂŃÎcîćû§Ć>ăŽw°â8êŻäś_ ÿÙłûé31Ä0țŸiV3>ùàK›Œ!ÆVòûŻęńS.É°Ÿ.ú«Bß”EĆé­ Qlh^X}ę,úöűúOì\ąŚ` ő<êőWáûŻ.ęçe>VűńB>șŁžŸÿȘła¶~.ôșLq”őWÄÁÒïá’čćúPh1y|l óŁŒ!ßrÜi &•VTëI,}ȚzXÏś%aÿès|ó=ÉqűŒń(WćïżÂB2—YÓû=}ÿă-o6 Ű,ęòŁ>jRiĘÚżûꕿűțžŐ_Ÿaƒ+'?dÛžÆ_GjČÏ Ő„ßò Ÿ<ÖÎUÖú#żoQwęRTûšŒxÌU‚ż»łŃŸƒ«'țÊ[ÀXĆ6^ŰXÙ|ú«?ÿțŰŐŹSIźzx~ŸŽÖóàëȘƒó ž\|àălÈçÓ/]֝ûÆàŚïž­î[nwß~°Ù췆Žß|`[Ì7îoÖŰfwù}M1_żw«ŃoĐŚïnÏŚs0/\Ö­ŐżMż|-|.ćÁ§6òŠŃëyòȚfÆÒ_]vĘ[ă{ęŸ1[NœŹáëŸàëQÁ&1]MÈËąa2_0>Ÿ~éÒkW»Ëuęà;Ăv»OęÓTśßŸ7ŁWüéśgÙ\Ì —iP?:êAÛB}VłŹÏ{||ìûóŚÿĆkVÙȚ€Úæțì_f»ÏÿbyŻűóœmsęĘ Æ„Z#»~ÆÄl’(§Śżfc|>Ÿțê WŻŒśő?>ČÓêÿ·ŐwŁ}ś>ŚÖŸ7†˜|>8æ‡/üjeŠ~œżàŻ«jČ:‰ć‡VcđœH˜ÍŻżúÂŐ”ös\3êç疟ż$;ÛöŠ= öZ>—ő_msęí­uîoo©sŸżzEVęôúÊl‚ž^őá tÄùôWŸÿĆ {ț€ï k·úżrăÚnlÚTglÜèíæ͍î+7©/ŸÿŚ%6ŚßÜŒÉ`ìú}=fCld|íœß“țês?_?śqÍțì_æèîèFûžęb_L›öù||yÀZ›ë+7m4X#SżŻ„ \kj7ëéIőŚW-u_œ«ŃűöĂ;ʧŻ˜çŸźóÉ„če§kji!&Ÿ/iÿ0śÀYő[mhL°ÓÓdAÛłțêŻ~șŰj‡o?Č+SżöŒčŒĆmiȚîiJ@,Ț\ŸĘ}]?;IŸtĂ›ëËŚŻ7țúgúûVÿx«ƒšÌ&!ŚÙ(†?_ęIęwnv_žÙźÙ§0ß}ńšZăČëVčŻÜ°Ê-ŹĘê6lۘE]]ƒćég\’Ïę|©Íő%ęnÿÒuëkd՟ô>ȘŐû"a{Ò_ęùÚs4üĂCŸțŻȚ”Ć}őî­śÿóÁ&W·e—ÛŸ#ĂÆƝîŸ~ĘŹÇJŚ<‡ÿ~ăz›ëČkŚŹ‘©_u Û/ȘÍŁőc‰é|ѓțêłú]Ăs4üĂC­Ș=çĆđ(Ÿ7€Ț­Ú {ÉúFłßÒ |}^.»n”Íué5kŒÏțđíœúUW\q.ÊGçĂȚéIőÙÖhMŐšZżők_ÿ—oۘ—Ÿ>Rç&Ïi0K\ˆ/țj•ÍőĆ_­v_Œz”êŻ±śtšj^2=҅PšțÏ\éŻ7śZXîwËs1'çÀœ©ż'ęŐgŽßyŽë†ž7À~A?‡ìe`Oškœä ż\ć>ÿóژÏè9­nö n›Ț˱ś…ŠÄȚKŠà~4_ę<_țí€5V+öBj…ÏÿbeÌç~ŸÒ]ȘßčŸ»JŸ` Ö.*ù/DÜű}ûgÿW\1ÛÛŸòŸÆĘ[|š(¶<>h\°!|-Őï’òp© żß%^#—‹JéÄX+mÿŸŽnšȘàË1‚oę›êŻzŚRęUȘż:_CUiȘĄż:vèD7íq ÄŰq>èKRięúŁqGë;æ1àŁłą8ű!%MBźú+ÖŸÓvĐ,$”UŰę;žWœa1>6ŒâăBźú+42űh­ömï0M„<–>ÆsíÍƌĆ˜K5ôWԇ^ K É;ađ4óúèǧˆĘVČżú+ÖÇČnRäƒúÇß;Őímé°|K>ùàc«ĄżBScM¶őƒ„ê ă°č„<6 ÇÖTPőë+?‹ÎšrőKè°ÄyùÁă.Ő_„ú+ôTè­ĐW]qȘżJőW…ZȘżČ©ț*Ő_ŚÉȘ.ŽQ†â`éśpÉÜr}Ž(4Ž˜<>6Ž…ùQȚo9î‰4P“J+Ș„ú+~Șż’Ż1ûuŚ/E”§ú«HőWŁ8oęÒF±Ÿ”aËI˜“5|ę|=Ș3Ű$Š« yY4Læ ÆçÓ/„ú«î€ú+Źò‘őqȘż‚Tćk)ŚšÚÍzRꕦZ™î*@,RęUzŐê}‘°©țJZž!őŠ»JőW^“T*…êGEíÜkačß-ÌƜœkôŠțTć)T+ » €ú«čT„†ßïŻœ‚ËEȘżJ[Ż[7MUđe Á·~MőWœk©ț*Ő_ŻĄșJù.Ź‹QÆçƒț$ŐÔ_Ą„ꐶè‡àӇMÆÁü$äȘ©ż ș*Ú*|lëŠ6ÓUwí?bLòjcŒăü‹Q•/ƈC5őWÔN Ääńƒ ӏ 1 ż 1ę}ĄżÂ7S”è'bÈőƒö Ș­żÂB𩁚Â8,Ï?XbÀÆ8¶Š‚ú«êè—Rę•n•Rę•ôV諂źŠ8Ő_„ú«B-Ő_ ÙT•êŻÀë‰dUÚ(Cq°ô{8‡dnč>GGLÇÂü(oÈ·śDššI„ŐRę•?Ő_ÉŚ˜}‹ș뗱ÚSęU€ú+Qœ·~iŁXƒÏÚ°ć$ÌÉŸț ŸŐlÓՄŒ,&óăóé—RęUwRęVùÈú8Ő_AȘżò”„kMíf=©țÊk­Lw ©ț*œjőŸHŰT%-ϐzÓ]„ú+ŻI*•BőŁąvî”°Üï–æbN΁5zSȘżòȘĐ]RęU\*BĂïw‰Ś^Áć"Ő_„­Ś­›Š*űČ@Œ…à[żÀŠú«Ț”T•êŻÎŚĐGUšjèŻ W;E16@œú’TZUôGŰiŹ°ùŽYO];&öƒÍ„ú«|U=è±ĐRăcÔ4ZÆćR ꕁŸ-ŒišäĐĄËú9›;.FęŐĐ_Ą• u…Kíűú“–1c«Ąż  ­|êÂĐca駈ƒ-D5ôWù@?…„;(óĘXäsm>8ź&Ő_<‡êԟêŻRęŐjœ‡áÁ‡l­śđSęUȘżJêŹđCÈ%ɜŁMőW©ț ŒžHVuĄ2Kż‡sHæ–ësDĄqÄäń±q,̏ò†|ËqO€9€šTZQ-Ő_yđSę•|Ù·š»~)Ș=Ő_ő@ȘżÒĆyë—6Š5űŹ [NœŹáëŸàëQÁ&1]MÈËąa2_0>Ÿ~)Ő_u'Ő_a•ŹSę€ú+_KAžÖÔnÖ“êŻŒÖÊtWb‘êŻ"ĐûšVMőWÒò ©7ĘUȘżòš€R)T?Ú(jç^ Ëęn9`.æäXŁ7ő§ú+OĄZĘUàßšțêæˆ~—ôŽKEhűę.ńÚ+ž\€ú«ŽőșuÓT_ˆ±|ëŰTŐ»v±ëŻźÒć*͓ł¶VLőéșŚŸ‰ˆę;3ŸYƱ/òÙ$Œ*„żúÓÛvžlZöÂùàÏÌ&ç:ÖŠÏï* żúÔMÛÜčq›ûìM-òa›û”ùʁü?QÏŰOáÓ'ÈûăZŹö?QÎútăłiŃ+Ń_ęqÿf—äœÖC҇|ńŽ,ĐÈ'™3ń7Ń_}òW[Ę'Żi[mmì'ŻČ«ßŹb0?+Śdț*GŒčÖÏęæűáÒ/IÿSfęŐżÿŚÍÎÓh°>àÿ~NŸ›ęEdm„Ű“ał{sÜcȘżüú+æö°xŸ:ÊYÿ,]ÿJèŻ~śg îw*diXCčs|ä~?‚˜<üž°Xù$–S~°Œ}kÂđŠèŻ>ń“:güžȚ}âGő:ßšăw~Rï~çÇu1älšűwđ#òù„rűł_Vę­Òń”YőÛ?Ú€ș7čߟRö‡uȚÿĐ[` |âGȘ…1òá?Üè­HZ ńȚŻsłuęïÒóÏæòêŻ~ëʍ~ûBö·dëÊ ‘r"XúÍfçƒlàŻô苯żúú«čc~í–ÍăKòöŽ§ÜüÉżŃsùcî€È~’(G1őś…țȘvòăźaétWŻŸčúE]ębÙĆ]ü:Yâ:ëG3ïX5ăߜțjÓìĘk/r/<ńœûÍŁÏčŚG?ő±Đ_íȚ8Û=ÿқîÇwÌpÿûúÉîûŚżìț„ÿ87öéQÒ.IÇ€š/VęUĂÚeîÔșžyĄûÎ łÜ?_7Í}śš‰b‚óôhŐńêŻÖźŃçaśÖ»~·Żs_ży™ûƀùî[æșoë<ŸsęënܘI­țjoÓJśĘ]ż;ÜŚnręn[ăúĘșÊÎă›7-rÿçž%nÖÌ9ÒW]|ú«Ó{jĘ”#7ëł”&ŐżÙ}íöîk·źvߌc­{`Ôr·vŃ[ȘóâŐ_Í\°ȚŚ~·>č»YŸ…4»o jrKVűyĂ80?šËo9î‰özšI„Őz«ż:¶k…û_CąșïÔç›wéł1{á:ÉŒĂçXr‰țjúœuVóŚî_ÿĘŁëŐ·LcüX`<úoŠÍÒ/?êŁ&•VTÛ·hŹŻŸă5–y æ 1đ”}èĘ~űˆöûÀ­Cż»¶șŠMzNÒXêaN|œOËXë`|>ęUĄ†ÖÉ~6u,Ç'y_©Ź<±æGŻC\[»ÊŚ Ÿž\çűŠ~&|Ę:Æ,à Źâ°†Ś©~Ő€ÒŠj{ß~Q{QÏ%vl66Ÿ^·âçBß]Ïmr_»c‹GuçăëwȘ~ÍàëgC>Ÿ~©PÛ[3FŚB?g:íP˜ƒÏq ă+ vßÖćîëw4úÚc űȘŸúnŃ1Ìțű3ÒűűëŹæÄÌ]Ję{j^°úmNi˜Ăû Ł3ąßŹ=m­žç©5Â|Ől6BțŚ6Úű$Š«‰æƆ9óȧ_*ÔŹ~=ŠK}èoÌOàçśyüc;—žïʧ߳·©ÆßT­/ągłhtßșKśù:Æj–őóx||ìûKŹÁ(ŁúőZÔÏ҅˜ä#XFO]ŁßŻȘ9Áł“ő»J}ôc3$抉ršÓlŒÏçÓ_j{4Ö?†:–ùôŸ€Ÿ›ï·m^êțț=gȘæÀćÚ'»•§ßŽđç‚ï­­rXÁś a6żțȘPăłJł3z_)žđ!áŸj[ä>œÁö u{»Ù=:NśO‰qYŸ±P`„1h—đEOú«BÍêŚŸ?œëm?ŸĄyŒÈŚœGZ»!ŁŚčŻȘ^j¶úĆ·6žœ[tțŒË"sŹÙß_3ïś€ż*ÔË蟎ŽOčŒ1g„6v­ûî _»źùWo‘çOŸ„ûiË‚ëˆí ŁÚÍzzÒ_jŒežÓhŸĐŠèxłŃŒ\c V_7švÙ»žŃë§ń`~‹•Ç0=Mä±=ëŻ 5ÆČúæàxŹíEYź7Xę îTí'[5&ϱÁÇ&!ŚÙ(o5ȧ&•VTc,kż»}ŽÍahCțŚnóőț^ŻŻ^šźś:vú~űIÈćœOèϱ=éŻ 5Ær­ßĘ6ێe[+ŸȘúùyœê‘VśîölŠż0Œ©ńûĆbPÎæĆôŸèIUš1–cO6ëę2ïќZkoă"­-—KÈ›‹òq}Äč(Ż5đÙ;=éŻ 5Ær úĄ‹jĄ&•VTc,ǜڡóŚń}Ixü©I„ŐËęśpö^N`ï%EP 5©ŽbÚeìƈjû qŸv©èw‰Ś4ÁćąRșŠ~—””„ícȚ¶ŻŻÙs€}Ó飻ëNX>đ!ű‡wm8}hûÚÓïl^rúÀ¶Ő'ŸűWŸę›Oțáü‘ŠŹjÛłeùÁłú ȚŃçqÙŒ'°ôáä~Çq§:[\çÖźsóB·vá«őüGôŸ4m՚^WuŸŽMŸÁ”ëóĐ]ÆYÍâ˜À&8«Ü™C-zqƒțO¶î;:6ž„ł_Yóżÿț@SW„”Ś/éäóÏNîVM:8ŠÏslÈcÏÊRûûâôáîäțFŚče©;ŃŸÚ=XçVŒ5¶VS—­őŽÇOŰúŃ©wšœŽț{Șëäîz}fŽÊj|śÀViŃtíUśÙc;ć·:ęžăû6»ęőz ·ŁÖ}px‹;w°çśČ”rîń3ú|WŚ™ĂȘœk»;y ÉégÙí^?Ïj^î>8ČMAƒûèxSÙÎĄÜ{üÔ;zTÿ{·čc{Ü;ÛVș+fșŽÍ‹Ę‡'Ž·7Ù9ŒdËY-ßëV‰=țĄê{ŻłÙișœŚŰŽhșÛœaÓŠ“ž Ő•źălgƒ;ȚÙp\%ôŰzÚßŰśą=Ξ†àȚß:Ő}Ÿ=~ȘSŚOœëŰČ\ŸÛMq­«ȚršXçŻÇùÈNƒö’Ž5-Ë;UfÁVîęmŚ^ș’böű‰} źł©Öm}{ŠÛ^;ËióhŸîŐ9ìqçô˜Łë8Ś”Őul[vP„æm•ŰßguęȚŚŸ9ßÿèä6wP}M‹ŠčÖŐs.Š;§kcőC8ßłiȚI•Û­UjŸŃ”/fô^«ÛŸì5ŚŸq±sîŒûđÌaśá{Șgżûà„΁”€MqÇ·»Æ%Ó»TrVkŻ_Ôyöˆê—Î9ŸÆ:†:ÍÊćÄçÛßgt^Ćîń4ŸŁyœSńîƒÓGőÔŐ~>Ùá>:u@çÈčŽ9œŰvÛVÎÚŻČăÖV·š“Ÿ»žț_g>ŠĘßgșZŠȚăgÔ譋fè»úŠHgòŠà»ƒŠșæ%3\ûșùšc…{ŻŁŃč“;ő;úćöKąfőNÖŻëb6ë`ŐGlÚ5]ßböśI­Yì?ÔŽŰ­šțœ[1ő·bòÓúȚ§gÜêéÏKńąŽc]ăü—ő]H3Ęń«Üò·&lVù—ìÚô¶êßé>à1”ú@”ês™Ÿ?#äđÙ7EïïS­îЎUEïń=æșułÆĆŹs‚Û8{‚«›;ÁՋMoŸ(ęć‹nûâÉö;șmă‚Îś»€[fS_„Ż]š^,û̧~]ÿbśś‡]nŚjiŠÜ㇔7Ιè6ˆs„šÿŠkĐśP5.œȘë€=”X{ìőg­țš{T«ŚûÁf°s(aŁiÛòöÔąśűź ó]»híz\woŹq{êôțá&œoÖ śĄWÍŽúw©ț3z±ç«ÓŸĂčŁ;b{6{všțÒöwWói'ǜǻ¶ŚșŁmëŹs‡ZŚžĂò;êXę;ŚÍï|_żƒìyS5…ÚŸnïçrFuœ{ ±€ęœwă<퍗mozÚăïwI§ èuéyê ËĂÍúż+ąúçuŸŻç‘sÇ”'T“ęA}gű:Ï)ö}@Ÿ‡ëúžê?ŒsuIûûÈ6íïč“tçßăö\&ΩfoĆQíÛ+­țÖ5s:ÏlvđłyÄŚ… uòÿpˆń |AÿY=ŚŸÒ=ϑöőÚŁóJȚßmëÙÛČąĐ§æł‡·ZĘűü,}pt›;ŸĂ_ÿÖŐł;Ït*L{üˆŻ ‚…sGZÌyàúŸ:ŰäŽíȚàöo^ìšO/ijYĄÇn­ö5{;œÇ­nퟳȘ›Ú±mVęËŁúßRę也š>ł Ÿš9 wîđ6ĘsnŐsP;ĐŒÂí\;OÿŸešöE û[{Úö7äÙăĄæ$üŽ?ȚČÌêß±êÍÎÓșgŽëŻáœú­F|Ÿ,1>őŸU꧔æ‰ę î ~†Û6ÔžæeŻ»=—»żĂŸ†àsÍĂ?«ó9Û„ûrł[u>[TżźšżöÎ3tÏĆÏŠêáš~€đÙóűvŽzț|_ŚêʎwDśŠÚ·ú{ă·K{»˜ę}NŚš íńsúĘwöêWĘç°ÂŚż4źÿŽžCűÙ<«ó§¶`čžàcC?ŚȘY·^“égòHû=«]—ös‡öR§~'t¶Ź<ïț¶kȘš íńł‡T›jöp.Š5ț۶%Vÿöڙșț›ő{đ“óp™«ß»[Ęi=gdÏÜ"|LȚúAçJL_ŰßÔjNö8őž=ŽÙÈÔżUő/Žê]Ś_ÿwâ({[Ś@óRWđy<±!6o^«Ùû±Ú‘ÏXÖłę­Zčìo9Ÿ°GšßŚžä«‘ŐßČ\őëçùì1ÔÜXÎ?ȚŸ‘-6ï-”`AŸYút}ŁęÍ~îiS/œŰłÒÖs<ÿÇUć_ÒČb†êŻłńVƒúX+Źc~°Æùó6O@9«›óÀŰäțêöD±ŽaSošÛ[]kï±fżZ–Íè<„çosæ Ű:Ń㙀Ô]WóŐgûc±bj 0FVőq,5žȚ§ÿK•dïÛCô©üK¶-™ÒùȚžu:_ź ÇW‡ÌțVœŠ »ÎBőq^ÔhIÿ/‰qÓï>»Êśőï]«ń\ߟKĄóʗϗ Ä}Ș#Ț߶/Tłê5ä'śűɶŐĘxWiôŻ­ț=ÔŻy+…êͶčûT»KöoY2”3°M`ĄyŃ+öŸt\ż~~ł[W9ł ,ÎÉ'}Á>°19YŐÆőą>ÛÓčäìńžšŐż{­țŸ—ΝčscăZì|”·XŸYÀϓW.†<9±jăŒšÏŽIośÔZTÿ)]ÿł¶ç47Űă(ŁXëy?‡|c͂üĐÏń ÿ|û’{Œ§fŚ_ß pFsòÿW™—5üșč›Wl6‰rјBûòíńžZ\żțŸÚi=Ùț«4%ìïó5êśżżtoÂȚ«0„îïó”Cus>:ÖČDߍ­ÏáŽçȘE±ûû|­vÆs[·-žŹ}7Ćö\„)u§-m•i—\òÿ±application/library/img/src/icons-big.xcf000064400000440753147577724760014501 0ustar00gimp xcf file0xŒxF~L趄RX&ôÁ^,úâÈ°–d2BBA exif-dataìExifMM*bj(1r2‡i€ ü€' ü€'Adobe Photoshop CS5 Macintosh2011:04:22 18:30:180210 0100  0 Žgimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) gimp-metadatalGIMP_XMP_1 Adobe Photoshop CS5 Macintosh 2010-09-19T17:17:49+04:00 2011-04-22T18:30:18+04:00 2011-04-22T18:30:18+04:00 application/vnd.adobe.photoshop xmp.iid:FD7F117407206811B1BA95E37140A3C2 xmp.did:01801174072068119109C4A19543BAD1 3 sRGB IEC61966-2.1 xmp.did:F77F117407206811B1BA95E37140A3C2 icc-profile H HLinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3desc„lwtptđbkptrXYZgXYZ,bXYZ@dmndTpdmddĈvuedL†viewÔ$lumiűmeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ oą8őXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view€ț_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ€©źČ·ŒÁÆËĐŐÛàćëđöû %+28>ELRY`gnu|ƒ‹’šĄ©±čÁÉŃÙáéòú &/8AKT]gqz„Ž˜ąŹ¶ÁËŐàëő !-8COZfr~Š–ąźșÇÓàìù -;HUcq~Œšš¶ÄÓáđț +:IXgw†–Š”ĆŐćö'7HYj{ŒŻÀŃăő+=Oat†™ŹżÒćű 2FZn‚–ȘŸÒçû  % : O d y  € ș Ï ć û  ' = T j  ˜ ź Ć Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ă Ț ű.Id›¶Òî %A^z–łÏì &Ca~›čŚő1OmŒȘÉè&Ed„ŁĂă#Ccƒ€Ćć'Ij‹­Îđ4Vx›œà&IlČÖúAe‰źÒś@eŠŻŐú Ek‘·Ę*QwžĆì;cŠČÚ*R{ŁÌőGp™Ăì@j”Ÿé>i”żê  A l ˜ Ä đ!!H!u!Ą!Î!û"'"U"‚"Ż"Ę# #8#f#”#Â#đ$$M$|$«$Ú% %8%h%—%Ç%ś&'&W&‡&·&è''I'z'«'Ü( (?(q(ą(Ô))8)k))Đ**5*h*›*Ï++6+i++Ń,,9,n,ą,Ś- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/ț050l0€0Û11J1‚1ș1ò2*2c2›2Ô3 3F33ž3ń4+4e4ž4Ű55M5‡5Â5ę676r6ź6é7$7`7œ7Ś88P8Œ8È99B99Œ9ù:6:t:Č:ï;-;k;Ș;è<' >`> >à?!?a?ą?â@#@d@Š@çA)AjAŹAîB0BrB”BśC:C}CÀDDGDŠDÎEEUEšEȚF"FgF«FđG5G{GÀHHKH‘HŚIIcI©IđJ7J}JÄK KSKšKâL*LrLșMMJM“MÜN%NnN·OOIO“OĘP'PqP»QQPQ›QæR1R|RÇSS_SȘSöTBTTÛU(UuUÂVV\V©VśWDW’WàX/X}XËYYiYžZZVZŠZő[E[•[ć\5\†\Ö]']x]É^^l^œ__a_ł``W`Ș`üaOaąaőbIbœbđcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišińjHjŸjśkOk§kÿlWlŻmm`mčnnknÄooxoŃp+p†pàq:q•qđrKrŠss]sžttptÌu(u…uáv>v›vűwVwłxxnxÌy*y‰yçzFz„{{c{Â|!||á}A}Ą~~b~Â#„ć€G€š kÍ‚0‚’‚ôƒWƒș„„€„ă…G…«††r†Ś‡;‡ŸˆˆiˆÎ‰3‰™‰țŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘š’’z’ă“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜ž™$™™üšhšŐ›B›Żœœ‰œśdÒž@žźŸŸ‹Ÿú i ŰĄGĄ¶ą&ą–ŁŁvŁæ€V€Ç„8„©ŠŠ‹Šę§n§àšRšÄ©7©©ȘȘ««u«éŹ\ŹĐ­D­žź-źĄŻŻ‹°°u°ê±`±ÖČKČÂł8łźŽ%Žœ””Š¶¶y¶đ·h·àžYžŃčJčÂș;ș”».»§Œ!Œ›œœŸ Ÿ„ŸÿżzżőÀpÀìÁgÁăÂ_ÂÛĂXĂÔÄQÄÎĆKĆÈÆFÆĂÇAÇżÈ=ÈŒÉ:ÉčÊ8Ê·Ë6˶Ì5Ì”Í5Í”Î6ζÏ7ÏžĐ9ĐșŃ<ŃŸÒ?ÒÁÓDÓÆÔIÔËŐNŐŃÖUÖŰŚ\ŚàŰdŰèÙlÙńÚvÚûۀÜ܊ĘʖȚȚąß)߯à6àœáDáÌâSâÛăcăëäsäüć„æ æ–çç©è2èŒéFéĐê[êćëpëûì†ííœî(îŽï@ïÌđXđćńrńÿòŒóó§ô4ôÂőPőȚömöûśŠűűšù8ùÇúWúçûwüü˜ę)ęșțKțÜÿmÿÿw&:;äI°]drĄ†D‡–ˆÌŠĆ±‰ĆYÙìôŽH)9<ąQăcȘv+‹ÔĄÇ”Ûʀߌőœ UŐ/h&0textÿ      F"$&08&0H ÄĆęÄĆÄÄúÁĂżÆáœś»ž”ŻÍŻÈì ęŒáÚ ÚśÙŚÔËșČčè ęșÙÏ ÏśÎÌÆč­čžï üčÙÎÏÏÎțÏÎÎÏÎùËÂŽ”ș¶ ę·ŰÎÎțÏÎÎóÏÎÎÍÌÆŽ±șș¶^ ę¶ŰÍÍÎíÍÎÍÎÎÍÎÌÌÊĂł°Æșč¶g권ÍÍęš©ššđÍš§§Š„ـΟșžžgúŽŚÍÍÌÍÍÌïÍËÌÊÊĆŸŻ«ŐÄżșžč^ęłÖÌÌæÍÌÌÍÌÌÍÌÌËËÊÉĂ»Ź§ĘÊĆÀ»žș^ęČŐÌÌùË€Ł€ŁËŁŁđ€ąąš“–áŃËÆÁ»·”ę°ÓË ËïÊÉÇÂ謝ćÓÒÌÇÁŒ¶°ęŻÓÊÊśËÊËÊËÊËÊËËÊđÇÁ»ŹšëŚÓÓÍÇÂœ¶cęźÓÊÊ꟞ŸŸțžŸŸđ—‘‘đäŰÓÓÎÈĂŸŽqûŹÒÉÉÊÊÉțÊÉÉîÇĂșź€ôíâÙÔÓÏÉÄżłqü«ĐÈÉÉțÈÉÉțÈÉÉÈéÆĂ»°­ööíäÚÔÓĐÊĆżł«íȘĐÈÈ›țț›æš˜•‘­ńïíćâæäćăȚÙżČȘ©ĐÈÇÈÇÇÈÇțÈÇÇúÆŸ¶——đ–—˜™„ŻœÆœČŒ§ÎÆÇÇțÆÇÇéÆĂŸž°Ș„ŁąąĄ ĄŸœ˜­žŽŠÍÆÆ—țƗ—śÆ—•”‘ŒŠŠț‰ŠŠś‰Ąš•šĄ„ÍÆÆĆ ÆśĆÄÂŒ·°ŹȘššô©šš§€ ›‡€ÌÄĆĆțÄĆĆÄűŸ»¶ł±ŻźźśŻź­­Ź•ŁËÄÄ”țĔ”“Ń’Ž·ŽŽŽč·žž›ąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄĂĂÂżœœŒžșčŒ»»Œüž ÉĂ ĂțÄĂĂúÂÁżœŸœœŸńżœœŒŸÈÂÂĂ‘‘Ă‘ ‘üŸŽűŸœœŸžŸÇÂÂțÁÂÂțÁÂÂÁűżŸœœżŸœŸŸöŒœŸŒŸŸžÇÁÁțÂÁÁÂÁęÂÁÀÀțŸżżôÀŸżŸœœŒ»šÄÁÁ țÀțżŽűżŸŒœšœÄÀÀżțÀżżŸòœŒ˜›ĂÀżÀÀżżÀżÀÀùżÀÀżÀÀżżÀężÀżżőŸœœ™šĂżŸżż țżțŸőżŸŸœ™šÁżŸŸżżùŸżżŸżŸżżöŸżżŸżŸżŸżŸŸżŸúżŸ™˜ÁŸŸțœŸŸțœŸŸțœŸŸöœŸ˜˜żœŸœœŒŒțœŒŒțœŒ ŒœúŸ˜—ż»œœțŒœœêŒœœŒŒ——Ÿ»œœŒŒœŒŒœŒœœŒœœŒțœŒŒűœŒŒœŒŒœŒŒ—ęœșŒŒ ‹țŒ‹‹țŒ‹‹ŒöșŒ——œč»Œ»ŒŒ»üŒ»»ŒŒț»ŒŒ»öŒ»»č»——Œ¶»»ûŒ»ŒŒ»»țŒ»»țŒ»»üŒ»Œ»»ù¶»——Œ”»»Šț»ŠŠț»ŠŠ»ö”»——ŒŽ»»ș»»ș»ș»ș»őŽș——»Ž”șș»șșü»ș»șș»șö»șș¶łș——șČ Čúș——ș¶ČČù”ș——żÁĆĆțż—%—ę  ț äáüÜäéŰŚęŰŚŰŰŚśÖÔĐÈæÁÔì üŚòïîîúïîîïïîîśíìèàĐÌÙì ęÖîééűçàÔÇȚÙđ ęÔîééțèééöèéæćÛÍŚßŰ ęÓîéééèééèéèèéèéèèéèæàÎŃßȚŚ^ śÓíèèééèéèèțéèèóéèæäàÎÎäßĘÖ©ęŃíèèÄđèÄĂĂÂÁÜŽÁçàßÜŰ©ęĐìèèțçèèçòæćàÚÉÇëăàßÜÙ^üÏìçèèçèçèïçææăßŰÇÁîæăáßÛÚ^ęÎëççțèÀÀțèÀÀżòŸș¶ź±ńéæäáßÚÖęÍëççùèçèçèçææńăȚŚÇ·óêéçäáßŰĐúËëæçæççțæççëæççææäȚŚÈŽőìêêçäâàօęËêææăŒ»»ŒŒ»Œ»»Œ»»șàČ­ȘűòìêêçćâàՙúÉëçæçææüçæçææîäáŰÉŒúöńíêêèćăàÔqęÉêæ æääăàÙÌÄûûöòíêêèæăàÓ­ïÇêæćæćžžțćžžà·”±­ÀöőôïíđńòòïíßĐźÆéććææćææććææćèæăáÛŃčŽČłČČł”žÀÉŰăÜĐÍĆéććśäáÜÖÌĆÀżœœőŒčŽ·ÉŚŃÄèäćć”ûŽć”Ž””űćŽČČŻŹšŠŠ„Šì»¶Č·żĂçćääćäćääććäćääèćäăàÛÔÎËÇÆĆĆÄÆĆÆÄÁ»žŁÂçä äććäćäăâàĘŰÔÒÏÍÌÍÍÌÌÎÌËÉÊČÁçääță±±țä±±°ùź­Ș«©ŐȘȘ«țŰÖÖśčÀçäăääăääęăäăăíäăäâáßĘȚÜŚÙŰÛÛÚÚÛÚÜÜü»żçăăäęăäăăéäââßĘßÜĘĘÜÜßȚĘȚßĘȚĘŒżæăăŻț㯠Żźü­ȚŹ­­Țű»œćăâăâăățâăățâăăáűàȚȚßȚßĘȚȚëĘȚĘȚßșœćâăâăăââăââăăââățáààßȚùĘÜĘčŒäââ ­țâ­­țâ­­ŹßúȚĘč»äââțáââüáâáââțáââáàúßȚžșăââúáâáâáââáâáòâàáààȚžșăáââá« «țâ««țá««țáààúžșâáâááűâááâááâááțâááűàáàžčáàááàáțàááțàáážúâáààáȘȘțàȘȘțàȘ Șńàáàáž·áßàááààáààśáààááààáààęáàááùßáž·âȚààțáààțáààțáààśáàȚà··áĘàà ©ùà©š©©à©©ôš©šààĘà··àÛààțßààúßàßàßààțßààțßà àäÛß··ßÚàßàßàßàßßàßàßßàßßààßàßßàôßàÚß··ßÚààßššțàššțßššôàßÙà··ßŰàßàßßțàß ßțàßßńàßßààßßÙß··ßŚÚßßțàßßțàßßśàßÚŚß··ßÖ Öúß··ßÛÖÖùÚß··ââććțâ·%·ę  țűúöőòśîçńđńđńńđđńđđńđńđńïîíéöŐàí ęđûú úűűśńçćóó țïùùűűóìâöóò ęïúùùțűù ùűűśńèńśò ęîúùùüűùűùùóűùűűőóèìśśò  ęîúùùűśóçéűśöđìęíúùùÛđùÛÛÙÚÚńÓȚűśśőńìęíúùùțűùùțűùùśúôïćâúśśüôó ęìúùùűùțűùùöűśśóđäßûűśśüôó ęëúùùŚțùŚŚÖóÔÒÏĐûùűűśśóïęìúùùțűùùűùśśűőóïäÖûùùúűśśòíęêúùùțűùùüűùűùùùśőîäÔüùùúűśśòÇùëùűùűűÔ ÔùóĐÍÊęûùùúűśśđÁüêúűùùűęùűùùööőîćŰțüûúùùúűśśïÁęéùűűùüűùűùùőűôđèȚțțüüúùùíűśöïÙńéúűűùűĐŃĐŃŃĐĐćűŃŃĐŃÏÍÍŰúúùśśùúüûûúőíĂèúùùűęùűùùűûöòëÚŐŐÊÖŐÖŰÚßäïűôìßèùűűùùűűùűűùùűűùùűùöóîçăáßȚĘȚĘȚÛÙÖŰćïìèùùűűÎțűÎÎôùÎÎÌÌÊÊÉÈÇÈÇÇöÈÇÛÖÓÖȚçùűűùûűùùűùùűäùűśőòîêèæćäăăääăâßÜŚÉæùűűùùűűùțűùùśśűöóđîíêééțèééűçćææÚæúűűóùËÌËËÌËÌűËÌËÌÌËÊûÉÈïÈÉÉòÊńîîïàæùűűùùűùùáűùùűűśőóôóńóńòòóóòòôóóâćúűűùűùűűùțűùùśùôőôőôôőőôńöôôóăćùűùűùÉÊűÉÉÊÉÈûöÉÈÉÈÈśÉőöőőăäùűűéùűùűűùűùùűűùűűśśöőőöőöőőöùőâäùűùűűęśűśśöțśööűőôőáäùùűű ÈțűÈÈțśÈÈùśööőâăűűțùűűûùűűùűűțùűűśűśöêáăűùùűùűűùűűùűùùűùűűùűűúùűűùùűűśúűśśáâűű ÆțűÆÆțùÆÆùùűśűáâűűûùűűùűűüùűùűűùűùűâ űùûűùűùűűțùűűûáâűùűűĆțűĆĆțűĆ Ćțùűűúâáűűùűűùùűááűśűűțùűűöùűűśűááűśűű ÄțűÄÄțűÄÄűùöűááűśű űțùű űțùűűùöűááűőűűțùűűùőűááűôűűĂțűĂĂțűĂĂűùôűááùôűűțùűűűôűááűóőűűùőóűááűó óúűááűöóóùőűááűűùùûűùùűá%áęțț""ú#%'$ÿü ÿęę ÿęű ÿțđ ÿęß ÿęÇÿęĄÿęrÿęGÿț"ÿț ÿțÿęț ÿęę!ÿûűÿ!ÿüđÿ"ÿęáÿ#ÿțÊÿ'ÿęDHHüLHKHHțD..0imageÿ     û &è.0&ü.0' œű»ž”ŻÍŻÈììŒțáÚ ÚòÙŚÔËșČčèïïíșțÙÏ ÏóÎÌÆč­čžïïíčęÙÎÏÏÎțÏÎÎÏóÎÍÊÁł”ș¶”í·țŰÎÎțÏÎÎńÏÍÍÌËĆČ°șș”í¶țŰÍÍÎìÍÎÍÎÎÍÍËËÈÁ±Żœșč”í¶țŚÍÍțÎÍÍńÌËÊÈÄż­ŹĂŸșž·íŽûŚÍÍÌÍÍÌđÍËËÈÇÀž©šÉÄżș·žíłțÖÌÌçÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»··íČțŐÌÌûËÌËÌËËÊìÇÄŒČą›ÓŃËÆÁ»·°šuíí°țÓË ËêÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶šuííŻțÓÊÊśËÊËÊËÊËÊËËëÊÉĆœŽ€”ÜŚÓÓÍÇÂœ”uííźțÓÊÊțÉÊÊțÉÊÊìÇÆżŽ€—âĘŰÓÓÎÈĂŸłuííŹüÒÉÉÊÊÉțÊÉÉìÈÆÀ”§žéăȚÙÔÓÏÉÄżČuíí«ęĐÈÉÉțÈÉÉțÈÉÉÈìÇĆÁ·©šìêäßÚÔÓĐÊĆżłuííȘțĐÈÈêĆÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­©©ûĐÈÇÈÇÇÈÇțÈÇÇêĆÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­§§ęÎÆÇÇțÆÇÇêĆÂș±Šœ–’’“•”’™Ź·łŸŠŠțÍÆ ÆțÇÆÆêĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸ„„țÍÆÆĆ ÆöÄĂŸ”­ąš–”••—ö™››š˜…ÄÁÁ€€ęÌÄĆĆțÄĆĆöĂŸž°šŠą ŸŸőĄąŁ„§’ÄÁÁÂŁŁțËÄÄțĆÄÄôĂÂżŒ¶”°­°ŻłČČôłŽ±°Č––ÁÁÂÂąąâÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žččśž·žž™™ÁÁ țÉĂ ĂțÄĂĂ Ă ÁŸöÈÂÂĂÂĂÂĂÂĂĂÂęĂÁÂÂüĂÂÂĂĂÂțĂÂÂúĂ  ÁÁÂÂęŸÇÂÂțÁÂÂțÁÂÂęÀÂÁÁÂțÁÂÂőÁÂÂÁŸŸÁÁÂÂț»ÁÁțÂÁÁüÂÁÂÁÁÀóőž§”ÀÁÀÁÀÁÁÀÀÁńÀÁÀÀòœœžžŸ  ĄąûŁ„€ŠŠú‡ò¶§­ÀÀțÁÀÀ›żăńąŁ€€„„Š§§šš©©łéí°«Ș’ńŽ§­ÀżżÀŰżÀżÀÀżżÀ››œœï©©ȘȘ««Ź­­źŻŻłìàÓÌŻ’‚‹zﱧŹżżțŸżżšŒȚï§e•ĆÔÚĎ°”¶ĂŃÖŚÔ­°ș””ŹŸżŸżŸżŸŸżŸżš»áí~NŰäìîèĘlxč©Č“ÆŠŃÚĂœ ŽíźŠŹŸŸœŸŸțœŸŸŐœŸ˜˜čč됥ŒÉńńđçŚ\—•‘«‘Š–™“•Œë«Š«œŸœŸœœŸœŸœœßŸ˜˜žžéÆĆŹžæńîß߯• ’˜Ąƒ†‡éȘŠ«œœțŒœœÚŒœœŒŒ——¶¶èœș=ąíymà˓•—œŒ•ˆƒ…„„Œè©ŠȘœŒŒűœŒŒœŒŒœŒŒ—”äæÄÔrOĘçłKÊԔ‚‡˜‘–ƒ‚˜ć§ŠȘŒŒțœŒŒÛșŒ——ŽŽä„ÆŠÔôûî”œĐ„z‚…ƒ}~…ä„ŠȘŒŒ»ŒŒ»ÛŒ»»č»——ČČá•ŐÂìăóïÜƧilpx}ŽŠoim} Ș»»üŒ»Œ»»Ț¶»——±±ái¶Â c§ŒÎkafih{†o“ŠŠu{àŁ„Ș»»țș»»Ü”»——ŻŻȚc:u§°Â«yf[Y]d{ƒut…`ˆ_Țą„Șșș»»ș»ĘŽș——źźÜba[H9@ETn_STofg†„ƒlpmÜĄ„©ș»»șÚ»șș¶łș——­­Û\;;9<;?HO\Viha^qv—€lW}Û Ą„Č Čßș——ŹŹÙYGFBqhILQXQr~†„e‡‹‰~^Ű Ą„Č Čù”ș——««ŰŰü ȘŻĆ Ćúż—ȘȘŚŚțŸ——@ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïÖțîééôçàÔÇȚÙđđïÔțîééțèééòèéæäÚÌŚßŚÖïÓțîééőèééèéèèéèéèèôçäȚÍĐßȚÖïÓűíèèééèéèèțéèèóçćâĘËÌàßĘŐïŃțíè èńçæäăßÖÇÈâàßÜŚïĐțìèèțçèèæóäáÛÓÁÂćăàßÛŰïÏęìçèèçèçèđæääßŰÎŒ»èæăáßÛÖïÎțëççèçțèççêæćăȚŰÍ»”êéæäáßÚĐÄ wïïÍțëççäèçèçèçæćäàŰÍ»źëêéçäáßŰÄ wïïËûëæçæççțæççèæççććâÙÏœŹîìêêçäâàÖ wïïËțêææáçææççæçææçæćăÜĐż°ńïìêêçćâàÔwïïÉûëçæçææççæçææćâȚÒÀŽôòïíêêèćăàÓwïïÉțêæ æìäâȚÔĂœöőòđíêêèæăàÒwïïÇöêæćæććæććæææćæćæâȚÖĆÇìèćăâăćêéæäȚÏz””ÆÆőéććææćææććææćéæâߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””ĆĆțéććêăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàÄÄęèäććûäććäććêâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàĂĂòçćääćäćääććäćääöćăâÛÓÇŒ¶Ż­­°öŽ””ŽŽĄăÁÁÂÂțçä äóćäćäâáÜŐÌĂÂœșșőŒœżÁÄźăÁÁÂÁÁțçääăäțăääóăäâáĘÚÔÒÎÉÍÍÏÏôŃÒÎÌÏłłÁÁÂÂÀÀùçäăääăääęăäăăæäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””ÁÁÂÂżțçăăäęăäăăúáäăăäăăóäăăäăâăăżżÁÁÂÂżțæăățáăățäăăŸÁÂùœćăâăâăățâăățâăăâăùâăăâăâăăâúăœœÁÁÂÂę»ăââûăâăăââúăœœÀÀóóóžÄÔăââăâăââăââŒÀűòżżÀÀÁÁÂÂĂóÄĂÄżĆÆĆȘò¶ÄËâ ⻿űńĂĂÄÄĆĆÆÆÇńÈËìïÇÊɶ§ŠńŽÄÊââáęâáââóá»»œœńÈÈÉÉÊÊËËÌïîâÖÒË”šŻ ï±ÄÊâáâááüâáâááÜâččŒŒîÁf€ÓŰÚƠ̋ÉŃĐËÔÙÚÚżÌÔ”ŽïŻÄÊááâá áč»äíˆKŰäëíçĘi~Ń”ž›É­ÔĘÎŐœÎíźÄÊááțàáážșà멱ÉȚńńïæÖZąž™–č›™«Č¶»ČëŹĂÊàááàááÚàáàáàážžččéÚŃÌÎéńîßßȟŒ„«Ż·Œ—ŒŠ°ŸéȘĂÊààęáàááęßážžáèŒÍș>«ïymà̝©±”•§•ŽȘ©§Đè©ĂÊààáààÜáàȚà··””æÎÔpNĘîłIÉÓąŠ‰”ł§°žœ‹›ąæ§ĂÉààŚßàßààĘà··ŽŽä»Ò­Őôûđ“œÏ‹†”˜Á‘‹„äŠĂÊàßà àÜÛß··łłá°ŚÂìâôïĘĆ„†‹“š±­Ć†{žá€ĂÊßàßßàÜßàÚß··ČČàˆšžÂ aŠ»ÍhvŠŒĄŹ•ŒČłŠàŁĂÊßßàÖßàßàßÙà··±±Ț}5šŻÂŻ˜vXi€‰ą«ž›Ź…Č‚ȚąĂÉßßàßßÔàßßààßßÙß··ŻŻÜzoUFDA\‘gbt”ŒŻ«Š©’–“ÜĄĂÉßßàßßÛàßÚŚß··źźÛxHA5HR>EJ`g‹‡…—œż§’z„ÛĄżÄÖ Ößß··­­ŰpPMB’‡JHMUk”€­Șˆ­Č°Ł€ŁÙ żÄÖ ÖùÚß··ŹŹŰŰü ÆÌć ćúâ·««ŚŚțŸ··@ńéđńđńńđđńđđńđńđńïîíéöŐàííđțûú úóűśńçćóóòò””ńïùôűóìâöóòò””ńïțúùùțűù ùôśöđçńśńń””ńîțúùùüűùűùùűśőôòçëśśń””ńîțúù ùűôöőïăçśśöï””ńíțúù ùśűśőôńëàâśśüőń”ńíțúùùțűùùțűùùűűôóîèÜĘűśśęôđńìțúùùűùțűùùőűśôòëćÙŚùűśśęôïńëțúùùűùțűùùśìôòëäŚÒùùűűśśóçâG::•ńńìțúùùțűùùűöùűööńíćŚÍùùöűśśòâG::•ńńêțúùùțűùùüűùűùùűùôïæŰËúùùśűśśńG::•ńńëöùűùűűùùűùűűùśśőïçÚÌûúùùűűśśđ::•ńńêęúűùùűęùűùùőűőńèÛĐüûúúùùùűśśï:•ńńéțùűűùüűùűùùôűöńëȚŚüüûûúùùúűśöî•ńńéőúűűùűűùűùùűűùśűöòêßĘőóńńôóőùùűűőì€ÂÂèèțúùùűęùűùùűűśôìâÏÇÄÁÁôĂĆËÖȚíűôëÂÂèèÙùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîëśèèù űùèűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘśççțùűűùûűùùűùùűçùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśÁÁææúùűűùùűűùțűùùöùńêăÜÛŚÔÔòÓŐŐŚŚÙÛßÖśÁÁÂææțúűűÙùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚÁÁÂÂææùùűűùùűùùćűùùśśóîèëëćéçëíîîííììîÜÜÁÁÂÂćùúűűùűùűűùùűùùűűùűűûùűűùűűśùűśśććÁÁÂÂćűùűùűùűùűűùűțöűűùęűùűűöùűùűűććÁÁÂÂęäùűűéùűùűűùűùùűűùśűűùùűűùűùűűöùűùùűääÁÁÂÂüșűűùùűțùűűśùűűùääÁÁóóù·ȚìűűùűűòùűùűääÀÀòńòńòńńòòđòĂòđílò¶Țăűùűűùűùùăăżżńòòóìíńóëóë€/DńŽȚăűùűűùùűűśùűùăăżżïóóôîđóëáààn4[-ń±ȚăùűùűűțùűűÜùűűùâ✜ïæ{ĂçßßáëžëőóĘàääÜĄÓôyï°ȚăűűùűùűâŒäíĄTĘæìíèȚw•ńĐÍžÙÄàćáê–Ïí­Țăű űá»â뎙—đđïçÙmżș¶Č©Ż•~rLXCêŹȚăűùűűțùűűțùűűâčäéń«c‚ßïíàáĂŻf„ mŁŽ›D0qéȘȚăű űȚùűáážžèh”»FŒæ€uâÔ·„alšŠ’œ12=ßçšȚăűűÛùűűśűáᶶæÀÓ{YÜŚłWÌŚ–€€’[qc[]’\œæŠȚăű űȚöűáá””äz«–Ôòûè™żÔ™ą“ˆvx;Œ“Ÿ…©ä„ȚăűűțùűűȚöűáᎎá]ÒĂìăóïĘÈŻ9EDA>25(PbeGá€Țăű űéőűááłłà!kłÄ„k«œĐy9ûàŁȚăű űÛôűáá±±Ț#>W§ČÄą0Dk?ȚąȚăűűùűűćôűáá±±Ü#*3,>NEP>ûÜĄȚăű űĘőóűááźźÛ#47=,!CR[T7Û Ûáó óßűááźźÙ2<=A !FU]d)' "!"##!!ٟÛáó óùőűáá­­ŰŰüŸȚäù ùśűùùűᏏŚŚțžááŽ@ÿüÿęęÿęűÿțđÿęßÿęÇÿęĄÿęrÿęG ÿț" ÿț ÿț ÿęț ÿęę !ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿę*ÿÿ@2ù@AABCE@@ț20# folder_openÿ     ÿÿÿÿl<˜0#<Ź0#<Œ…țŠs sț‡}}‡ï†……„„ƒ‚€~}|ˆmÆ…ùŠŽŒŒù‹Š‰‰ˆ‡}}‡ï†……„„ƒ‚€~}|ˆmƇíÉùÛÜÖÒÌÈŸ»ččŒÙŒŠˆ‡‡ï†……„„ƒ‚€~}|ˆmÆŒę°˜” ”ûš•Šˆ‡‡ï†……„„ƒ‚€~}|ˆmÆúÁˆ ˜” ”ü«˜ˆ‡‡ï†……„„ƒ‚€~}|ˆmÆöÁ…Ÿ’“”“”““ű”““”“ż”““ü”““’’ő‘ŽŒ‹‰ˆmÆòHŸ’‘“’’“’“’““û’“–éŸŸęŒŒmÆô_TŸ‘‘‘‘’’‘ț’‘‘î’‘’‘’’‘’’‘’‘’‰€& mmÆőˆ[~žŽŽ‘‘ś‘‘ő‘‘‘‘û€{& mmÆöŠ]}žŠŒŽŽŽŽțŽŽțŽûxuR mmÆô•_}‚ƒ„„ƒ„…„„ę…„ƒƒú„ƒ„ƒ„ƒƒő„ƒƒ„ƒ„pmjimmÆû™k}œ€€èÖÿáàßĘÜÚŰŚŐÓÏËÊÈÆĆĂÂÁÀżżțșččôșÆƱ|}œ~~}~}}üö«••ù“§Æ’~œ{{ùz{~Ą˜”••ù’sáȘ~›xxû “’””ś„|áÈ›vuvvúxž™’’““ï’v|ßß~štsstsˆĄ’’’ï‡y|đđ~šqqpqq™™Žïx||űű~™llnn|ĄŠŽŽïˆv||ÖÖ|™deik’š‹‰ŒŒțz{{Bő|˜]`do ˆŠ‹‹üŠ‰shh„öz˜Y[_‡œ‡„ˆˆ‡ę|xhhŹöz˜VW]˜Žƒ„††üƒ…ryyŻöz—UTyšƒƒ„„ûƒ€}uyy”śz—TTŽ‚‚ü~€sxxÀśz–Tj•€y~û~y{rxxÀűz–S†Šyw}}üxzrvvzùŹ`’qy||û{tzohhzúÄȗwn{{vęrshhț{{ù±ÿ€oityyz{ûzpykttțzzû”š{httûqrtpttvű•‚ztkjjkklmnopúqxmqqúl}qwy{{ęolțIj!jęi6­țš™ ™ț„ŸŸ§Š„€ŁüąĄĄ  üŸž©ąą‘é­ùš«źźŹ«ȘȘę©š§§ț„ŸŸ§Š„€ŁüąĄĄ  üŸž©ąą‘éšàŰüîîìêçćâáßȚȚáæ«š©§§ŠŠ„„€€ŁŁąĄĄ  üŸž©ąą‘é±ęÖĂż żîıš©§§ŠŠ„„€€ŁŁąĄĄ  üŸž©ąą‘éú¶Á­ÍĂż żïÏČ©§§ŠŠ„„€€ŁŁąĄĄ  üŸž©ąą‘éű¶Á«ÌœŸżŸŸôżŸżŸŸżżŸŸŐ°ŻŻź­śŹ«ȘȘ©š§©ąą‘éú¶§ÌŒœœțŸœœüŸżôââțăââțăââęàšąą‘éń_xŠË»»Œ»Œ»ŒŒœœŒŒțœŒŒțœŒŒțœŒŒűœŒŒ©ą(#‘‘霈t„Ëžčșș»»țș»»üș»ș»»șő»ș»»ș»Ą(#‘‘éös€ËŽ”··čžžčžčžęčžččžűčžž›™q#‘‘éû€€É««Ź­Ź­Źț­ŹŹő«ŹŹ«ŹŹ“‘Ž‘‘éû§‡€Éššț©ššé«ïÿòńńđđïîíììêèèçææćääăățȚÜÜűĘéé΍€È„„üÄúÍÀÀöœÊО„ÈŁŁąŁŁûšÍĂżÀÀùŒ—ỄǟŸû»ÍŸœżżï«Łáѩǜœ›œœžÊÄœœŸŸűœ›ŁććŠÆ™™û±ÎœșœœïŻ Łőő„Ɩ–—––ĆĆčž»»ïŁŁùù€Ć’’“”„λ”žččﱛŁŁÙÙ€ĆŠŒŽŸÆ¶Ž··țĄąąjőŁÄ‚…‰”Ì豎””üŽČ˜ŠŠ¶öĄÄ}‚±È±źČČû±°ŁžŠŠœöĄĂ{{Ă菟°°ü­ź—  ŸöĄĂyx Æ­š­źźûŹȘ„›  ÀśĄÂxwč·§§««üŠ©—žžËśĄÂx‘ÀȘąš©©ûšą€—žžËű Áw°ŽŁ §§üĄŁ˜œœąùΆœš™ą„„û€œą”ŠŠĄúÜÚœĄ–„„Ÿę™˜ŠŠțąąűŃÿȘ–ĄąąŁ€ûą—ĄŽ™™țĄĄûżÀ€Ž››û™šš”™™œűÀ«Łœ’‘‘’’“”•–—ú˜Ą‘––ú€—€§ȘȘꖐța!ęŒ(6çțÖÚ ÚțŐÖÖÚÙŰŚÖęŐȚÙÙÎęțÿççúÖŰÚÙÙŰŰŚŐÖÚÙŰŚÖęŐȚÙÙÎęțÿÚÚęîÿțțęùöÙÚÜÚÚÙÙŰŚÖęŐȚÙÙÎęțÿââęđôś śùűÜÚÜÚÚÙÙŰŚÖęŐȚÙÙÎűțÿÌÍáíôś śúôÛÜÚÚÙÙŰŚÖęŐȚÙÙÎäțÿÌÍàîöśśööśśööśööśöśđÛÙÙÚÚÙÙŰŚüÖÔȚÙÙÎűțÿÌ ßîőööüőöőööțőööțțęęęúŐÙÙÎùțÿ}ĄȚîőőțöőőüöőöőőțöőőöúőŰÙêÜÎÎśțÿ˜©ȚîńóôôțőôôùőôőôôőôôęőôőőòôőôôőôôőôŐŚêÜÎÎőțÿž«ȚïîđńòóóęòóòòóòòóóòóóòóóòòóòóóòûŃÔżÜÎÎöțÿčźĘđèèçèèéțèééúèççééèèűçèççèèçèèúéÍÎËËÎÎïțÿÓ¶Ęđćäććäćäæțÿț ț ęțűśśűțÿß»ȚđăââăüòțùűűùőíŚÆßńààűáàáćïöśűűùôĐáŚàńȚȚûïđśöűűïäĘáäáńÛÜÛÛÜĘđôööśśűöÔßïïáòÙÙûêîöóöööèÚßööáòÖÖŚŚûđńóòőőïŚßßûûáóÒÓÓŐáîôđóôôïìÖßßééàóÊÌÏŃîđòđóóțÛȚȚ±őßóĂÆËŐîńîńòòüńïÒĂĂŚößôżÁĆèîđíńńûđïàÛĂĂÜöȚôœœĂđïìîđđüìîÒĘĘÛöȚôŒșßđíèíîîûìêăŚĘĘÜśȚő»șńïééííüèëÔÜÜÚśĘőșÓőìćëììûëććÓÜÜÚűȚőșîńæăëëüćçŚÚÚȚùűÈöëĘæêêûéàæĐĂĂĘúúöôćÙêêăęŰÖĂĂțĘĘśűÿìÙÒáææççèéûçÛæÈÖÖțĘĘûśőéŃááûĘȚÛŃÖÖÙűűíéáÖŐŐÖÖŚŰÙÚÛÜúĘçÍÔÔúËߌæêîîęÓÌț‹É!ÉęÈ:6ț țțÿ ÿęț%țęÿ ÿțűțțÿÿț‡țțÿÿț`* țęțÿ"ÿțȚüęÿ#ÿț*üęÿ#ÿțiüęÿ#ÿęiüęÿ#ÿüküęÿ#ÿę|ü ęÿ*ÿûțęÿ+ÿüüÿ*ÿûțûÿ*ÿûÌúÿ)ÿúț$űÿ)ÿúćűÿ)ÿúZűÿ(ÿțòęśÿ(ÿț”ęöÿ'ÿęúęśÿ'ÿțœęśÿ&ÿęęęśÿ&ÿțÙęśÿ%ÿęțMęűÿ%ÿțíțùÿ%ÿț…țűÿ$ÿęùțúÿ$ÿțŒțûÿ#ÿęțțüÿ#ÿțćțúÿ#ÿțe$ÿțțüQÿ!ÿúÒ0 ő$99:;;=99ő=;;:99$&./jsÿ     ‹J[./Jo./Jț‹źźœű»ž”ŻÍŻÈììț‹źźŒțáÚ ÚòÙŚÔËșČčèïïíț‹źźęșÙÏ ÏóÎÌÆč­čžïïíț‹źźó­ÍÊÁł”ș¶”튋ùŠ‹Š‹‹Š‹‹ęŠ‹ŠŠ‹óŠÌËĆČ°șș”í ˆțńˆ ˆôÆÈÁ±Żœșč”í„ț…„„…ę„…„„…„ôšÄż­ŹĂŸșž·íśđぁ™ăđđô“Àž©šÉÄżș·žíő~ïă~óœł€ąĐÊĆÀ»··í |ùï||ââ•||íŒČą›ÓŃËÆÁ»·°šuíí{z{zę{ï{{ú”ââz{zzê{z{œ±ą–ÖÓÒÌÇÁŒ¶šuíí{z{zę{ï{{ûzâz{zzê{z{œŽ€”ÜŚÓÓÍÇÂœ”uííxyxűáxxïïá’xx푿Ž€—âĘŰÓÓÎÈĂŸłuííwüîá’w wìx‘À”§žéăȚÙÔÓÏÉÄżČuíí vțuv vìzÁ·©šìêäßÚÔÓĐÊĆżłuíívù‰ ›™—”’ ’êÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­vvû­§Š§ŠŠ§ę›{uuêy€~|uromkkmq‹Ÿ«ŒÆœČ­­vv§ęÎÆÇÇüž‹žÇÇêĆÂș±Šœ–’ˆo’s•”’™Ź·łŸvvŠțÍÆÆû’·ÆÇÆÆêĆÂŒłȘ ˜–n‹””n˜——•‘˜ĄŸvv„țÍÆÆĆÆț„ÆÆöÄĂŸ”­ąš–i••ôk—™››š˜…Ävv€€ęÌÄĆĆûÄĆƄĆĆöĂŸž°šŠąnŸŸőoŸĄąŁ„§’ÄvŁŁțËÄÄü„ÄƄ„ꃂ€~{z°­xŻłČ€ČłŽ±°Č––ąąÙÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™™  țÉĂĂț„ĂĂțÄĂĂÂĂț„ĂĂ ŸóÈÂÂĂÂĂÂĂ„ĂÄ„țƒ„„Âü„ĂĂÂÂțĂÂÂüĂ  ŸŸțÇÂÂùÁ„ÂÁÂÂęÀÂÁÁÂę„ÁÂÂśÁÂÂÁŸŸžžțÇÁÁśÂÁÁ„ÁÁÂÂÁÁțÂÁÁöÂÁÁ„ÁÁÂÁÂÁÁ țÄÁÁùÀÁÁ„ÀÁ„ „úÀÁ„ÁÁÀÀÁûÀÁœœțÄÀÀț„À Àü„ÀÁÀÀ ›őĂÀżÀÀżżÀżƒÀÀùżÀÀżÀÀżżòƒÀÀżÀżÀÀżżÀ››ššüĂżŸżżü„Ÿż„ „żû„żżŸżż šûÁżŸŸżżù„żżŸżŸżżöŸżżŸżŸż„żŸŸżŸżš˜țÁŸŸțœŸŸț„Ÿ ŸùœŸ„ŸŸœŸŸęœŸ˜˜üżœŸœœûŸœœ„œœŸęœŸœœśŸœŸ„œŸœŸœœüŸ˜˜——ęż»œœ „țƒ„„œęŒ„œœúŒœœŒŒ——ńŸ»œœŒ„œŒŒœŒœœŒœœŒț„ŒŒű„ŒŒœŒŒœŒŒ —ęœșŒŒț„Œ Œț„ŒŒț„ŒŒțœŒŒęșŒ——űœč»Œ»ŠŻŒŒ»üŒ»»ŒŒùŠŒ»Œ„Œ»»úŒ»»č»——ęŒ¶»»ûŻ‰ŻŒ»»țŒ»»țŒ»»őŻŠ»»Š»»Œ»Œ»»ę¶»——ęŒ”»»ęŻ‰ƒ ƒú„ŠŻ»ș»»ę”»——úŒŽ»»ș»»ș»ș»ș»ęŽș——ù»Ž”șș»șșü»ș»șș»șù»șș¶łș——țșČ Čțș——ęș¶ČČû”ș——ü—żÁĆĆ꿗%—.țp™™ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììțp™™ŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïțp™™ęÖîééôçàÔÇȚÙđđïțp™™ó­æäÚÌŚßŚÖïopùopoppoppęopoopóoçäȚÍĐßȚÖï mțím môȚâĘËÌàßĘŐïițjiijęijiijiôčßÖÇÈâàßÜŚïfśìĘffƒĘìíffôÛÓÁÂćăàßÛŰïdőcddìddĘddcddóšŰÎŒ»èæăáßÛÖïüa``aaűìa`ÜÜ`aaì`™ŰÍ»”êéæäáßÚĐÄ wïï_^_^ę_ë__ú~ÜÜ^_^^ê_^_šŰÍ»źëêéçäáßŰÄ wïï_^_^ę_ë__û^Ü^_^^ê_^_›ÙÏœŹîìêêçäâàÖ wïï\]\űÛ\\ëëÛ{\\íœÜĐż°ńïìêêçćâàÔwïï[üëÛ{[ [ì\›ȚÒÀŽôòïíêêèćăàÓwïï ZțYZ Zìd›ȚÔĂœöőòđíêêèæăàÒwïïZő˜Ź©§€ žžžæžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ZZŁóŒččșșčșșč诏‰‰êŸœ˜‘Œ‰‡„„†Š€žĆŚăÜÏ””ZZĆțéććüÖȘÖććêăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖĐàZZÄęèäććûäć±ÖććêâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸàZZĂòçćääćäćääŁćäćääőćăâÛÓÇŒ¶Ż‚­­ô„°Ž””ŽŽĄăZZÂÂțçääțŁääòćäćäâáÜŐÌĂÂœ‰șșő‰șŒœżÁÄźăZÁÁțçääăäûăŁääŁŁêąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłłÀÀùçäăääăääüŁăäăăèäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ””żżțçăăäęăŁăăíáäăăäăăŁăăäăăäăâăăżżțæăăüŁă㣣țąŁŁățŁăățäăăŸœúćăâăâăăęâŁăățâăăâăùâăăŁăâăăâțăœœòćâăâăăââăŁâăăââăâûăâŁăââüăœœŒŒțäââùăââŁă㣠ŁűâăŁăââăâ⌻țäââüáâŁââüáâáââțŁââ»șțăââùąáâáâáââáâűąââááâáââüá»»șșúăáââáââûáŁâᣠŁüâáŁááüâáâááüâččșșüâáâááőŁááâááâááâááüâáŁáá čęáàááàțŁááțàá áțŁááțàáá žûâáààááőŁááààááààáààáęàŁááśàáàáàážž··úáßàáᣠŁțąŁŁàțŁààęáàááûßážž··ęâȚààûŁààáààțáààúŁàáàŁààûáàȚà··ęáĘààțŁà àęߣààțŁààűßàßààĘà··ęàÛààöȘÒààßàßàßààśßààȘßààŁààęÛß··äßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßààûßàÚß··śßÚààßßÒ©ą ąòŁȘÒßààßàßàßÙà··úßŰàßàßßțàß ßțàßßöàßßààßßÙß··üߌÚßßțàßßțàßßúàßÚŚß··țßÖ Öțß··ęßÛÖÖûÚß··ü·ââććęâ·%·.ț‹źźńéđńđńńđđńđđńđńđńïîíéöŐàííț‹źźđțûú úóűśńçćóóòò””ńț‹źźțïùùôűóìâöóòò””ńț‹źźóĂśöđçńśńń””ńŠ‹ùŠ‹Š‹‹Š‹‹ęŠ‹ŠŠ‹óŠśôòçëśśń””ń ˆțńˆ ˆôđőïăçśśöï””ń„ț…„„…ę„…„„…„úŃńëàâśśüőń”ńśđぁ™ăđđù»îèÜĘűśśęôđńő~ïă~űžëćÙŚùűśśęôïń |ùï||ââ•||ížëäŚÒùùűűśśóçâG::•ńń{z{zę{ï{{ú”ââz{zzś{z{·íćŚÍùùöűśśòâG::•ńń{z{zę{ï{{ûzâz{zzö{z{čïæŰËúùùśűśśńG::•ńńxyxűáxxïïá’xxűșïçÚÌûúùùűűśśđ::•ńńwüîá’w wőxșńèÛĐüûúúùùùűśśï:•ńń vțuv vô€șńëȚŚüüûûúùùúűśöî•ńńvôŸÆĆÄÁŸ»Œ»ŒŒ»»Œś»șòêßĘőóńńôóőùùűűőì€ÂÂvvÇțŐÔÔÓúÔÓÔÊŻȘȘê°œșžŽ°ź«Ș©«ŻÆÖȚíűôëÂÂvvèÙùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîëśvvèùűüÌëűùùèűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘśvvçțùűűùûűùÀűùùűçùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇśvvææúùűűùùűűțÀùùțűùùöëńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖśvææțúűűśùűùűűÀűùÀÀêżŸŒč¶”äáŽäçæșèéêćäçÚÚææùùűűùùűùùțÀùùçűùùśśóîèëë攎·ŸâîííììîÜÜććùúűűùűùűűęÀűùùùűùùűűùűűûùÀűùűűûùűśśććóùűùűùűùűűÀűűÀÀțżÀÀüùűÀűűűùűùűűććääțùűűéùűùÀűùűùùűűùśűűùùűűÀűùűűúùűùùűääüùűùűűțÀű űùûÀűűùűűûùűűùääùűùûűÀűùÀ ÀüùűÀűűùùűùűääăăűûùűűÀűűûùűűùűűśùűűÀűűùùűűțùăăìűùùűùűűùűżùűùùűùűűùűűúùűűżùűűúùűùăăââűüÀűùÀ ÀùùűÀűűùűűûùűűùââűûùÀűùűűüùűùűűęùÀűűùű âűűÀùùűùűùűűțùűűțÀűűáâęűùűűțÀű űúùűűÀùűűțùűűâáűüùűűÀ ÀțżÀÀűțÀűűęùűááęűśűűțÀűűțùű űțÀűűțÀűűúùűűśűááęűśűűțÀű űțÀűűțÀűűęöűááęűśűűęÆëűűțùűűțÆűűüÀűùűűęöűááęűőűűüìĆëű űúëÆűűÆűűęőűááęűôűűęëĆż żüÀÆëűűęôűááęùôűűțùűűęôűááüűóőűűüőóűááțűó óțűááęűöóóûőűááüáűűùùúűùùűá%á.ÿüÿęęÿęű ț±ÿÿțđ ÿęß ÿęÇ !ÿęĄ"ÿęr#ÿęG$ÿț"%ÿț &ÿț&ÿęț'ÿęęțÚÿ&ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿț!ÿ$ÿț*ű2@AABCE@@2.0zipÿ     ^.0^$.0^4țŁÁÁœű»ž”ŻÍŻÈììțŁÁÁŒțáÚ ÚòÙŚÔËșČčèïïíțŁÁÁęșÙÏ ÏóÎÌÆč­čžïïíțŁÁÁóčÍÊÁł”ș¶”íąŁùąŁąŁŁąŁŁęąŁąąŁóąÌËĆČ°șș”í  țò   ôÆÈÁ±Żœșč”íțžžęžžôšÄż­ŹĂŸșž·íšńüšńšńńț­ššô“Àž©šÉÄżș·ží˜ô—˜ń˜ń˜ń˜˜—ń˜˜óœł€ąĐÊĆÀ»··í•ùđ©•đ•ò••țò••íŒČą›ÓŃËÆÁ»·°šuíí•”•ó©đ•”đ•đ•”•đ•””ê•”•œ±ą–ÖÓÒÌÇÁŒ¶šuíí’“ű§đ§’’đ’đđț§’’퐜Ž€”ÜŚÓÓÍÇÂœ”uíí‘đû’đ‘đ‘‘ì’‘żŽ€—âĘŰÓÓÎÈĂŸłuíí üđì’‘À”§žéăȚÙÔÓÏÉÄżČuíí ț ì’Á·©šìêäßÚÔÓĐÊĆżłuííù‰ ›™—”’ ’êÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­û­§Š§ŠŠ§Šț§ŠŠêźÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­§ęÎÆÇÇțÆÇÇêĆÂș±Šœ–’’“•”’™Ź·łŸŠțÍÆ ÆțÇÆÆêĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸ„țÍÆÆĆ ÆöÄĂŸ”­ąš–”••—ö™››š˜…А€€ęÌÄĆĆțÄĆĆöĂŸž°šŠą ŸŸűĄąŁ„§’ÄÌÌŁțËÄÄțĆÄÄôĂÂżŒ¶”°­°ŻłČČűłŽ±°Č––ÌÌąâÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žččùž·žž™™ÌÌ țÉĂ ĂțÄĂĂ Ă ̟öÈÂÂĂÂĂÂĂÂĂĂÂęĂÁÂÂüĂÂÂĂĂÂțĂÂÂüĂ  ÌÌęŸÇÂÂțÁÂÂțÁÂÂęÀÂÁÁÂțÁÂÂśÁÂÂÁŸŸÌÌüÊĂÂÁÁțÂÁÁüÂÁÂÁÁÌțËđđôÓĂÀÁÀÁÀÁÀÁÁÀÀÁùÀÁËËđđüșźÀÀțÁÀÀ›ÊűÙŐÚŚÚÙÙŰŰŚÖŐÔűÚÙÙəąÀżżÀńżÀżÀÀżżÀ››ÈÈٔÙÙú”ÙșĄżżțŸżżšÇŐęᚏŹò±áŐŐǙĄŸżŸżŸżŸŸżŸżšÆŰęߎÂÂő»ßŃŃƙĄŸŸœŸŸțœŸŸőœŸ˜˜ĆĆŚŚĘŽĐĐțäăățäĐĐïÂĘĐĐƙĄœŸœŸœœŸœŸœœőŸ˜˜ÄÄÖÖߎÙÚÚțăââțăÚÚűÇßÏÏÙĄœœțŒœœòŒœœŒŒ——ĂĂŐŐàŽÉÉÏțÓÉÉśżàÎÎÙĄœŒŒűœŒŒœŒŒœŒŒ—ÁÔęß”ÛÛțćääÛűÉßÍÍÁ™ĄŒŒțœŒŒőșŒ——ÀÀÓÓĘ·ÔÔțĘÜÜțĘÔÔőÇĘÌÌÀ™ĄŒŒ»ŒŒ»îŒ»»č»——ŸŸÓÓȚ·ÔŐŐÙÚÚÖűÈȚËËż™ »»üŒ»Œ»»đ¶»——ŸŸÒÒĘžÄÄÆÆŐÍÍęŃŐÆÆűÀĘÊÊŸ™ »»țș»»ô”»——ŒŒŃŃĘžÔŐŐțÖȚȚęĘŚÖÖöËĘÉÉŒ™ șș»»ș»őŽș——»»ĐĐÜčÏÏțĐÓÓțŃĐĐśÇÜÈÈ»™ ș»»șń»șș¶łș——șșÏÏÜčÍÍüÏŃÏÍÍűÆÜÇÇș˜Č Čśș——ččϔÏđđùϔÇč˜Č Čù”ș——žžÌÌËÊÉÈÇțÆÄÄü·šŁĆ Ćóż—··ÈËÈÊÊÉÉÈÈÇÆĆûĂĆĆ·——”țŽ””ûŽ””Ž””üŽ”Ž””@țqŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììțqŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïțqęÖîééôçàÔÇȚÙđđïțqóźæäÚÌŚßŚÖïpqùpqpqqpqqępqppqópçäȚÍĐßȚÖï nțën nôȚâĘËÌàßĘŐïjțkjjkęjkjjkjôčßÖÇÈâàßÜŚïgêügêgêêț„ggôÛÓÁÂćăàßÛŰïdôcdêdêdêddcêddóšŰÎŒ»èæăáßÛÖïüa``aaőéaé`ìa``ìaaì`™ŰÍ»”êéæäáßÚĐÄ wïï_^_ó}é_^é_é_^_é_^^ê_^_šŰÍ»źëêéçäáßŰÄ wïï\]ű{é{\\é\ééț{\\í›ÙÏœŹîìêêçäâàÖ wïï[èúé\è[è[[ì\œÜĐż°ńïìêêçćâàÔwïï YüXYèYYìc›ȚÒÀŽôòïíêêèćăàÓwïï YțXY Yìc›ȚÔĂœöőòđíêêèæăàÒwïïYő˜Ź©§€ žžžæžž›ȚÖĆÇìèćăâăćêéæäȚÏz””YYŁőŒččșșčșșččșșčéșÄߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””YYĆțéććêăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàYYÄęèäććûäććäććêâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàYYĂòçćääćäćääććäćääöćăâÛÓÇŒ¶Ż­­°öŽ””ŽŽĄăYYÂÂțçä äóćäćäâáÜŐÌĂÂœșșűŒœżÁÄźăllÁțçääăäțăääóăäâáĘÚÔÒÎÉÍÍÏÏűŃÒÎÌÏłłllÀùçäăääăääęăäăăèäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””llżțçăăäęăäăăúáäăăäăăőäăăäăâăăżżllżțæăățáăățäăăŸlùœćăâăâăățâăățâăăâăùâăăâăâăăâüăœœllû†ÈăăââûăâăăââùăœœllkœœòwÈââăââăâăââăââŒkœü…łÌâ â»ję~z‚‚€ę~}}|ț{yyù‚~~jłœââáęâáââűá»»ii~j~~śj~iłœâáâááüâáâááöâččhh||‰LQQőT‰||hłœááâá áčg€ę‡Uccű[‡uugłœááțàáážeû~†Ussțáààțássôc†ssfłœàááàááđàáàáàážžee}}‡U‚‚ß‚űj‡rqełœààęáàááőßážžcc||‰UnnÎüÍÎÒooőb‰ppcłœààáààóáàȚà··aa{y‡U‚‚âțá‚‚űm‡ooałœààđßàßààĘà··``xx…W{{Ù{öj…ll`łœàßà àïÛß··^^xx†W{||ÂŚŚÖÖŚțÂ}}öl†kk_łœßàßßàîßàÚß··^^wv…XggilÄÌÌüÏÄliiűa…ji^łœßßàêßàßàßÙà··\\uu„Xxyyz‚ÔÛÛęӃ{{őn„hh\łœßßàßßîàßßààßßÙß··[[ss„XqqrúÌĐ́rrői„ggZłœßßàßßòàßÚŚß··ZZrqƒXllü†”†llűfƒfeZČșÖ Öśß··YYqjqœœùqjfYČșÖ ÖùÚß··XXllkjüihhggțfeețdaaüWŽżć ćóâ·WWmkmjihhggțfeedcúac``W··ôUVWVUVVUWVVUUVUśWUWVUVVU?ț›șșńéđńđńńđđńđđńđńđńïîíéöŐàííț›șșđțûú úóűśńçćóóòò””ńț›șșțïùùôűóìâöóòò””ńț›șșóËśöđçńśńń””ńš›ùš›š››š››ęš›šš›óšśôòçëśśń””ń ˜țń˜ ˜ôđőïăçśśöï””ń”ț•””•ę”•””•”úŃńëàâśśüőń”ń‘đü‘đ‘đđțŠ‘‘ù»îèÜĘűśśęôđńôŽđđđŽđűžëćÙŚùűśśęôïńŒùïąŒïŒńŒŒțńŒŒížëäŚÒùùűűśśóçâG::•ńń‹Š‹ó ï‹Šï‹ï‹Š‹ï‹ŠŠś‹Š‹·íćŚÍùùöűśśòâG::•ńńˆ‰űŸïŸˆˆïˆïïțŸˆˆùčïæŰËúùùśűśśńG::•ńń‡ïûˆï‡ï‡‡śˆșïçÚÌûúùùűűśśđ::•ńń †ü…†î††őŽșńèÛĐüûúúùùùűśśï:•ńń †ț…† †ôŽșńëȚŚüüûûúùùúűśöî•ńń†ôŸÆĆÄÁŸ»Œ»ŒŒ»»Œś»șòêßĘőóńńôóőùùűűőì€Â††ÇțŐÔÔÓęÔÓÔÔÓűĘôìâÏÇÄÁÁôĂĆËÖȚíűô놆èÙùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăî붆†èù űùèűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘś††çțùűűùûűùùűùùűçùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇś††ææúùűűùùűűùțűùùöùńêăÜÛŚÔÔőÓŐŐŚŚÙÛßÖś66æțúűűĘùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚ66æùùűűùùűùùçűùùśśóîèëëćéçëíîîííììîÜÜ66ćùúűűùűùűűùùűùùűűùűűûùűűùűűùùűśśćć66ćűùűùűùűùűűùűțöűűùęűùűűűùűùűűćć66ęäùűűéùűùűűùűùùűűùśűűùùűűùűùűűűùűùùűää66ęaÍűűùűțùűűùùűűùää66Xű=Íűùűűùűűśùűùűää55XXú`Ïäűùűűùűöùăă44C@FHFFDCBA@ò?FCC4ÏŰűùűűùùűűöùűùăă44CQCCśQC4ÏŰùűùűűțùűűóùűűùââ22BBJ##ű$JBB4ÏŰűűùűùűâ1DęI%//ű)I==2ÏŰű űá0CęI%;;țàßßțà;;ö/I;;0ÏŰűùűűțùűűțùűűâ0BęI%FFĘFű4I::/ÏŰű űőùűáá//AAJ%88ÎüÍÎÒ88ű/J99/ÏŰűűòùűűśűáá..@@I%FFàțßFFű6I88.ÏŰű űőöűáá-->>H&AAțŚÖÖțŚAAű5H66-ÏŰűűțùűűőöűáá,,>>H&AAțČÔÔțČAAű5H66-ÏŰű űđőűáá++>>H&1148ŒÌÌüÏŒ844ű.H55+ÏŰű űőôűáá))==G&>>ü@KÏÚÚęÍLAAő7G44)ÏŰűűùűűőôűáá((;;G&::úQÆÍÆQ::ű4G22(ÏŰű űôőóűáá((::F&66ü^Š^66ű1F11(ÎÖó óśűáá'':Q:XXù:Q1'ÎÖó óùőűáá''665421ț0//ü'ÏŰù ùđűùùűá&&:6:55442210/ú.2..&áá%ű&%%&%%&%%ú&%&&%?ÿüÿęęÿęű ț±ÿÿțđ ÿęß ÿęÇ !ÿęĄ"ÿęr#ÿęG$ÿț"%ÿț &ÿț&ÿęțțÚÿ%ÿęęțÚÿ&ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿę8Çÿ'ÿę8Èÿ(ÿțÇÿ)ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿę*ÿÿ@2ù@AABCE@@ț2./xmlÿ     ésM./sa./sqț~€€œű»ž”ŻÍŻÈììț~€€ŒțáÚ ÚòÙŚÔËșČčèïïíț~€€ęșÙÏ ÏóÎÌÆč­čžïïíț~€€óŠÍÊÁł”ș¶”í}~ù}~}~~}~~ę}~}}~ó}ÌËĆČ°șș”í{țï{{ôĆÈÄ»Żœșč”íwțxwwxęwxwwxüïxxwwô„ÄÀ”ŹĂŸșž·ítđàtàtîàîîàtîttôŽÀș°šÉÄżș·žírđààrîύîràrîrr󋜶ŹąĐÊĆÀ»··íìonnoo‹ă‹ooíoníoníoíooìnŠŒ”«›ÓŃËÆÁ»·°šuííìonnoo‹í‹ooíoníoníoíooìn‹œŽ«–ÖÓÒÌÇÁŒ¶šuíímlđˆßŸíˆmímmímlílíllêmlm‹œ·­”ÜŚÓÓÍÇÂœ”uííjđȚ‡j‡Țjíjjíkjíjíjj틿žŹ—âĘŰÓÓÎÈĂŸłuííij iìj‹ÀžŻžéăȚÙÔÓÏÉÄżČuíí hțgh hìm‹Áč°šìêäßÚÔÓĐÊĆżłuííhù…›–”’ŽŒ Œê‹ÀșŻŽáÜÙÓŃÏÏÒŃËÆżČv­­hhûȘ€Ł€ŁŁ€Łț€ŁŁêŹÁ»±–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­hh§ęÎÆÇÇțÆÇÇêĆÂșžvœ–’’“•”’™Ź·łŸhhŠțÍÆ ÆțÇÆÆêĆÂŒ‚† ˜–““””–˜——•‘˜ĄŸhh„țÍÆÆĆ ÆöÄĂžjŁąš–”••—ö™››š˜…Ähh€€ęÌÄĆĆțÄĆĆöĂ™z°šŠą ŸŸśĄąŁ„§’ÄhŁŁțËÄÄęĆŸÄÄôĂÂ~œ¶”«­°ŻłČČűłŽ±°Č––ąąâÊÄĂÄĂÄÄĂĂÄł‡ÄĂĂıt””¶t{€Č·žččùž·žž™™  țÉĂĂùžŒq’ŸÄĂĂü‘’ĂĂú­q’žĂĂ ŸòÈÂÂĂÂĂ·’qŒłĂĂÂÂđŸuČÂÂĂš|q‘·ÂĂÂÂüĂ  ŸŸțÇÂÂśœ—q‡ČÂÂÁÂÂüąÂÁÁÂóÁą|qŒČÂÁŸŸžžțÇÁÁü|qŒÁÁÂÁꁹÁÁțÂÁÁûČvqĄÁÁ țÄÁÁ䶑qvœÁÀÁÀÁÀÀ±q»ÀÁÀÁÀÁÀ¶‘q‹°ÁÁûÀÁœœțÄÀÀú»–qv ÀÀ‘Àú»‘qŒ°ÀÀ ›ÙĂÀżÀÀżżÀș‘q|°ÀÀ»v°ÀżÀÀż q†°ÀżÀżÀÀżżÀ››ššüĂżŸżżűŽ‹ żż żżę‹ȘżżțŸżż šûÁżŸŸżżíŸżżŸżŸ„żŸżżŸżŸżŸżŸŸżŸżš˜țÁŸŸțœŸŸę©€ŸŸțœŸŸțœŸŸęœŸ˜˜üżœŸœœûŸœœŸœœûŸčœŸœœśŸœŸœœŸœŸœœüŸ˜˜——ęż»œœțŒœœúŒœœŒŒ——ńŸ»œœŒŒœŒŒœŒœœŒœœŒțœŒŒűœŒŒœŒŒœŒŒ —ęœșŒŒțœŒŒęșŒ——úœč»Œ»ŒŒ»üŒ»»ŒŒț»ŒŒ»úŒ»»č»——ęŒ¶»»ûŒ»ŒŒ»»țŒ»»țŒ»»üŒ»Œ»»ę¶»——ęŒ”»»țș»»ę”»——úŒŽ»»ș»»ș»ș»ș»ęŽș——ù»Ž”șș»șșü»ș»șș»șù»șș¶łș——țșČ Čțș——ęș¶ČČû”ș——ü—żÁĆĆ꿗%—.ț~€€ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììț~€€ŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïț~€€ęÖîééôçàÔÇȚÙđđïț~€€óŽæäÚÌŚßŚÖï}~ù}~}~~}~~ę}~}}~ó}çäȚÍĐßȚÖï{țï{{ôßâßÔÌàßĘŐïwțxwwxęwxwwxüïxxwwôœßŰÎÈâàßÜŚïtđàtàtîàîîàtîttôŁÛÔÈÂćăàßÛŰïrđààrîύîràrîrró ŰĐÄ»èæăáßÛÖïìonnoo‹ă‹ooíoníoníoíooìnŸŰÏĂ”êéæäáßÚĐÄ wïïìonnoo‹í‹ooíoníoníoíooìn ŰÏÄźëêéçäáßŰÄ wïïmlđˆßŸíˆmímmímlílíllêmlmĄÙŃĆŹîìêêçäâàÖ wïïjđȚ‡j‡ȚjíjjíkjíjíjjíąÜÒÇ°ńïìêêçćâàÔwïïij iìjĄȚÔÉŽôòïíêêèćăàÓwïï hțgh hìpĄȚÖÊœöőòđíêêèæăàÒwïïhő±źŹȘ„Ł€ŁŁ€€æŁ€Ł€ĄȚŚÊÇìèćăâăćêéæäȚÏz””hhŠőÀœœŸŸœŸŸœœŸŸœéŸÆßŚÌ°§ŁĄ Ÿą„«žĆŚăÜÏ””hhĆțéććêăàŰž‹¶źȘšš©Ș­źŻ­ČÈÖĐàhhÄęèäććûäććäććêâàښžșČźŹŹ­ŻŻČł±°źŽŸàhhĂòçćääćäćääććäćääöćăâŐŸŒ¶Ż­­°öŽ””ŽŽĄăhhÂÂțçä äóćäćäâ᳑ÌĂÂœșșśŒœżÁÄźăhÁÁțçääăäțăääđȚääăäâᕶÔÒÈÉÍÍÏÏűŃÒÎÌÏłłÀÀùçäăääăääăŃ žăăäăăωÓÓՊ’ÀĐŐŰŚŚŰŚŐÖŚ””żżțçăăäúŚŠ‡ŹĘăăí«Źăăäʙ‡ŹŚäăăäăâăăżżțæăăúŚŹ‡ŠŃăăüʌŃăăúē‡ŹŰăăŸœöćăâăÜȇ Đăățâăă쟘âăăâăăâăŸ“‡ŠŃăââăœœòćâăⓇ„âăââăăââü™ŸăââöăâăăâЍ‡ŸââüăœœŒŒțäââśÖ«‡žâăăââđЇÜââăââă⌫‡ŠĐâ⌻țäââúܱ‡Ÿââûáâ««ââúÜ«‡„Đââ»șțăââçÜ«‡“Ïâá܍Đâááâ⟇ŸĐâááâáââüá»»șșúăáââáââáđÖ„œá៙âáâáâá„Éááüâáâááüâččșșüâáâááűâáá™Ăáâááțâá á čęáàááàáüàəá áțàáá žûâáààááàúÛáààáààáțàááśàáàáàážž··śáßàááààáààśáààááààáààęáàááûßážž··ęâȚààțáààțáààțáààûáàȚà··ęáĘààțßààűßàßààĘà··ęàÛààțßààúßàßàßààțßààțßà àęÛß··èßÚàßàßàßàßßàßàßßàßßààßàßßàûßàÚß··îßÚààßßàßàßààßßàßßààßàűßàßàßÙà··úßŰàßàßßțàß ßțàßßöàßßààßßÙß··üߌÚßßțàßßțàßßúàßÚŚß··țßÖ Öțß··ęßÛÖÖûÚß··ü·ââććęâ·%·.ț~€€ńéđńđńńđđńđđńđńđńïîíéöŐàííț~€€đțûú úóűśńçćóóòò””ńț~€€țïùùôűóìâöóòò””ńț~€€óŒśöđçńśńń””ń}~ù}~}~~}~~ę}~}}~ó}śôòçëśśń””ń{țï{{ôđőđêçśśöï””ńwțxwwxęwxwwxüïxxwwúÎńìćâśśüőń”ńtđàtàtîàîîàtîttù”îéàĘűśśęôđńrđààrîύîràrîrrűČëćÜŚùűśśęôïńìonnoo‹ă‹ooíoníoníoíooìnČëćÜÒùùűűśśóçâG::•ńńìonnoo‹í‹ooíoníoníoíooùn±íæÜÍùùöűśśòâG::•ńńmlđˆßŸíˆmímmímlílíllömlmłïçĘËúùùśűśśńG::•ńńjđȚ‡j‡ȚjíjjíkjíjíjjűŽïèßÌûúùùűűśśđ::•ńńij iőjŽńéàĐüûúúùùùűśśï:•ńń hțgh hôsŽńìâŚüüûûúùùúűśöî•ńńhôčÁÀŸŒž”¶”¶¶””¶ś”ŽòëâĘőóńńôóőùùűűőì€ÂÂhhÄțŃĐĐÏęĐÏĐĐÏűÛôìäÏÇÄÁÁôĂĆËÖȚíűôëÂÂhhèÙùűűùùűűùűűùùűűùùűűôíŃŠÒËÈÆÆÈÈËÌÎÎÓăîëśhhèù űùèűùűőï±·ŐÍËÈÉÉÊËÎÏĐÏÏŐĘśhhçțùűűùûűùùűùùűçùśőê•ÖŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśhhææúùűűùùűűùțűùùöùÇŠăÜÛŚÔÔôÓŐŐŚŚÙÛßÖśhææțúűűĘùűùűűùűùòűùűùűöȘËëèßáääçæçèéêćäçÚÚææùùűűùùűùùăæŽÍùűùùśäžèè럹ŰçëíîîííììîÜÜććăúűűùűùűűìș›ÁóùùűùùÀÀùűűßź›ÀìűűûùűśśććńùűùűùűìÀ›șćűùùűűêò ćűűùùűÚ§›ÀìűùűùűűććääțùűűßòƛŽæűűùűùùűűÓ­űűùùűűùűÓ§›șæűùùűääűùűùű§›șűűûźÓűűùùűśæĄ›ÓùűűùääùűśìÀ›ĄÍűűùűűéć›òűùűűùűűìÀ›șćűùűùűääăăűóóƛĄÓűűùűűÁÀűűśùűòÀ›șæùűűțùăăìűùùűùűűùòÀ›§æùűóĄćùűűúùӛŽæűűúùűùăăââűśùìșÓűűÓźűűûùűșßűűțùűűûùűűùââűûùűűùűűüźÙùűűùűùű â űùûűùßźűűțùűűáâęűùű űțòűűțùűűțùűűțùűűâáűțùűűęùűááęűśűűțùűűúùűűśűááęűśűűęöűááęűśű űțùű űțùűűęöűááęűőűűțùűűęőűááęűôűűęôűááęùôűűțùűűęôűááüűóőűűüőóűááțűó óțűááęűöóóûőűááüáűűùùúűùùűá%á.ÿüÿęęÿęű ț±ÿÿțđ ÿęß ÿęÇ !ÿęĄ"ÿęr#ÿęG$ÿț"%ÿț &ÿț&ÿęț'ÿęęțÚÿ&ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿț!ÿ$ÿț*ű2@AABCE@@2 phpÿ     Œ†đ ‡ ‡ÿÿÿęw™ ęw™­ÿÌÿÌ"wÌîÿwÿÌÿÌ"ÿwȘ™wĘDÿÿwȘ™ÿ"f»w™"ÿÿ"f»ÿwȘˆw™"ÿÿwȘˆÿÌÿÌw™"ÿÿÌÿÌÿ"ęÿ"ęÿ"ęÿ" Layer 2ÿ     ŒˆF ˆZ ˆjˆę„…„„|z{z{xyțxwwmęijiifdț`aa^_^_\]ț\[[ˆę„…„„|z{z{xyțxww,ÿ Layer 1ÿ      œ‰| ‰ ‰ ˆę„…„„|z{z{xyțxwwmęijiifdț`aa^_^_\]ț\[[ˆę„…„„|z{z{xyțxww,ÿ./pl #1ÿ     ·Š°./ŠÄ./ŠÔț‹źźœű»ž”ŻÍŻÈììț‹źźŒțáÚ ÚòÙŚÔËșČčèïïíț‹źźęșÙÏ ÏóÎÌÆč­čžïïíț‹źźó­ÍÊÁł”ș¶”튋ùŠ‹Š‹‹Š‹‹ęŠ‹ŠŠ‹óŠÌËĆČ°șș”íˆțńˆˆôÆÈÁ±Żœșč”í„ț…„„…ę„…„„ę…đ……„ôšÄż­ŹĂŸșž·í đûđô“Àž©šÉÄżș·žíû~ïüîïóœł€ąĐÊĆÀ»··í |țï||üï|ï||íŒČą›ÓŃËÆÁ»·°šuíí{z{zę{ï{{úézïz{zzê{z{œ±ą–ÖÓÒÌÇÁŒ¶šuíí{z{zț{ïïùí©zïz{zzê{z{œŽ€”ÜŚÓÓÍÇÂœ”uííxyxűïxxyyxïxx푿Ž€—âĘŰÓÓÎÈĂŸłuííwęxïw wìx‘À”§žéăȚÙÔÓÏÉÄżČuíí vțuv vìzÁ·©šìêäßÚÔÓĐÊĆżłuíívù‰ ›™—”’ ’êÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­vvû­§Š§ŠŠ§ę›{uuêy€~|uromkkmq‹Ÿ«ŒÆœČ­­vv§ęÎÆÇÇüž‹žÇÇêĆÂș±Šœ–’ˆo’s•”’™Ź·łŸvvŠțÍÆÆû’·ÆÇÆÆêĆÂŒłȘ ˜–n‹””n˜——•‘˜ĄŸvv„țÍÆÆĆÆț„ÆÆöÄĂŸ”­ąš–i••ôk—™››š˜…Ävv€€ęÌÄĆĆûÄĆƄĆĆöĂŸž°šŠąnŸŸőoŸĄąŁ„§’ÄvŁŁțËÄÄü„ÄƄ„ꃂ€~{z°­xŻłČ€ČłŽ±°Č––ąąÙÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™™  țÉĂĂț„ĂĂțÄĂĂÂĂț„ĂĂ ŸóÈÂÂĂÂĂÂĂ„ĂÄ„țƒ„„Âü„ĂĂÂÂțĂÂÂüĂ  ŸŸțÇÂÂùÁ„ÂÁÂÂęÀÂÁÁÂę„ÁÂÂśÁÂÂÁŸŸžžțÇÁÁśÂÁÁ„ÁÁÂÂÁÁțÂÁÁöÂÁÁ„ÁÁÂÁÂÁÁ țÄÁÁùÀÁÁ„ÀÁ„ „úÀÁ„ÁÁÀÀÁûÀÁœœțÄÀÀț„À Àü„ÀÁÀÀ ›őĂÀżÀÀżżÀżƒÀÀùżÀÀżÀÀżżòƒÀÀżÀżÀÀżżÀ››ššüĂżŸżżü„Ÿż„ „żû„żżŸżż šûÁżŸŸżżù„żżŸżŸżżöŸżżŸżŸż„żŸŸżŸżš˜țÁŸŸțœŸŸț„Ÿ ŸùœŸ„ŸŸœŸŸęœŸ˜˜üżœŸœœûŸœœ„œœŸęœŸœœśŸœŸ„œŸœŸœœüŸ˜˜——ęż»œœ „țƒ„„œęŒ„œœúŒœœŒŒ——ńŸ»œœŒ„œŒŒœŒœœŒœœŒț„ŒŒű„ŒŒœŒŒœŒŒ —ęœșŒŒț„Œ Œț„ŒŒț„ŒŒțœŒŒęșŒ——űœč»Œ»ŠŻŒŒ»üŒ»»ŒŒùŠŒ»Œ„Œ»»úŒ»»č»——ęŒ¶»»ûŻ‰ŻŒ»»țŒ»»țŒ»»őŻŠ»»Š»»Œ»Œ»»ę¶»——ęŒ”»»ęŻ‰ƒ ƒú„ŠŻ»ș»»ę”»——úŒŽ»»ș»»ș»ș»ș»ęŽș——ù»Ž”șș»șșü»ș»șș»șù»șș¶łș——țșČ Čțș——ęș¶ČČû”ș——ü—żÁĆĆ꿗%—.țp™™ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììțp™™ŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïțp™™ęÖîééôçàÔÇȚÙđđïțp™™ó­æäÚÌŚßŚÖïopùopoppoppęopoopóoçäȚÍĐßȚÖïmțímmôȚâĘËÌàßĘŐïițjiijęijiięjíjjiôčßÖÇÈâàßÜŚï fìûê›fíffôÛÓÁÂćăàßÛŰïdûcddìddüëdìddóšŰÎŒ»èæăáßÛÖïüa``aaűìa`aì`ìaaì`™ŰÍ»”êéæäáßÚĐÄ wïï_^_^ę_ë__úć^ì^_^^ê_^_šŰÍ»źëêéçäáßŰÄ wïï_^_^ő_ëììé–^ì^_^^ê_^_›ÙÏœŹîìêêçäâàÖ wïï\]\űë\\]]\ë\\íœÜĐż°ńïìêêçćâàÔwïï[ę\ë[ [ì\›ȚÒÀŽôòïíêêèćăàÓwïï ZțYZ Zìd›ȚÔĂœöőòđíêêèæăàÒwïïZő˜Ź©§€ žžžæžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ZZŁóŒččșșčșșč诏‰‰êŸœ˜‘Œ‰‡„„†Š€žĆŚăÜÏ””ZZĆțéććüÖȘÖććêăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖĐàZZÄęèäććûäć±ÖććêâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸàZZĂòçćääćäćääŁćäćääőćăâÛÓÇŒ¶Ż‚­­ô„°Ž””ŽŽĄăZZÂÂțçääțŁääòćäćäâáÜŐÌĂÂœ‰șșő‰șŒœżÁÄźăZÁÁțçääăäûăŁääŁŁêąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłłÀÀùçäăääăääüŁăäăăèäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ””żżțçăăäęăŁăăíáäăăäăăŁăăäăăäăâăăżżțæăăüŁă㣣țąŁŁățŁăățäăăŸœúćăâăâăăęâŁăățâăăâăùâăăŁăâăăâțăœœòćâăâăăââăŁâăăââăâûăâŁăââüăœœŒŒțäââùăââŁă㣠ŁűâăŁăââăâ⌻țäââüáâŁââüáâáââțŁââ»șțăââùąáâáâáââáâűąââááâáââüá»»șșúăáââáââûáŁâᣠŁüâáŁááüâáâááüâččșșüâáâááőŁááâááâááâááüâáŁáá čęáàááàțŁááțàá áțŁááțàáá žûâáààááőŁááààááààáààáęàŁááśàáàáàážž··úáßàáᣠŁțąŁŁàțŁààęáàááûßážž··ęâȚààûŁààáààțáààúŁàáàŁààûáàȚà··ęáĘààțŁà àęߣààțŁààűßàßààĘà··ęàÛààöȘÒààßàßàßààśßààȘßààŁààęÛß··äßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßààûßàÚß··śßÚààßßÒ©ą ąòŁȘÒßààßàßàßÙà··úßŰàßàßßțàß ßțàßßöàßßààßßÙß··üߌÚßßțàßßțàßßúàßÚŚß··țßÖ Öțß··ęßÛÖÖûÚß··ü·ââććęâ·%·.ț‹źźńéđńđńńđđńđđńđńđńïîíéöŐàííț‹źźđțûú úóűśńçćóóòò””ńț‹źźțïùùôűóìâöóòò””ńț‹źźóĂśöđçńśńń””ńŠ‹ùŠ‹Š‹‹Š‹‹ęŠ‹ŠŠ‹óŠśôòçëśśń””ńˆțńˆˆôđőïăçśśöï””ń„ț…„„…ę„…„„ę…đ……„úŃńëàâśśüőń”ń đûđù»îèÜĘűśśęôđńû~ïüîïűžëćÙŚùűśśęôïń |țï||üï|ï||ížëäŚÒùùűűśśóçâG::•ńń{z{zę{ï{{úézïz{zzś{z{·íćŚÍùùöűśśòâG::•ńń{z{zț{ïïùí©zïz{zzö{z{čïæŰËúùùśűśśńG::•ńńxyxűïxxyyxïxxűșïçÚÌûúùùűűśśđ::•ńńwęxïw wőxșńèÛĐüûúúùùùűśśï:•ńń vțuv vô€șńëȚŚüüûûúùùúűśöî•ńńvôŸÆĆÄÁŸ»Œ»ŒŒ»»Œś»șòêßĘőóńńôóőùùűűőì€ÂÂvvÇțŐÔÔÓúÔÓÔÊŻȘȘê°œșžŽ°ź«Ș©«ŻÆÖȚíűôëÂÂvvèÙùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîëśvvèùűüÌëűùùèűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘśvvçțùűűùûűùÀűùùűçùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇśvvææúùűűùùűűțÀùùțűùùöëńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖśvææțúűűśùűùűűÀűùÀÀêżŸŒč¶”äáŽäçæșèéêćäçÚÚææùùűűùùűùùțÀùùçűùùśśóîèëë攎·ŸâîííììîÜÜććùúűűùűùűűęÀűùùùűùùűűùűűûùÀűùűűûùűśśććóùűùűùűùűűÀűűÀÀțżÀÀüùűÀűűűùűùűűććääțùűűéùűùÀűùűùùűűùśűűùùűűÀűùűűúùűùùűääüùűùűűțÀű űùûÀűűùűűûùűűùääùűùûűÀűùÀ ÀüùűÀűűùùűùűääăăűûùűűÀűűûùűűùűűśùűűÀűűùùűűțùăăìűùùűùűűùűżùűùùűùűűùűűúùűűżùűűúùűùăăââűüÀűùÀ ÀùùűÀűűùűűûùűűùââűûùÀűùűűüùűùűűęùÀűűùű âűűÀùùűùűùűűțùűűțÀűűáâęűùűűțÀű űúùűűÀùűűțùűűâáűüùűűÀ ÀțżÀÀűțÀűűęùűááęűśűűțÀűűțùű űțÀűűțÀűűúùűűśűááęűśűűțÀű űțÀűűțÀűűęöűááęűśűűęÆëűűțùűűțÆűűüÀűùűűęöűááęűőűűüìĆëű űúëÆűűÆűűęőűááęűôűűęëĆż żüÀÆëűűęôűááęùôűűțùűűęôűááüűóőűűüőóűááțűó óțűááęűöóóûőűááüáűűùùúűùùűá%á.ÿüÿęęÿęű ț±ÿÿțđ ÿęß ÿęÇ !ÿęĄ"ÿęr#ÿęG$ÿț"%ÿț &ÿț&ÿęț'ÿęęțÚÿ&ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿț!ÿ$ÿț*ű2@AABCE@@2./c++ÿ     …žq./ž…./ž•ț‹źźœű»ž”ŻÍŻÈììț‹źźŒțáÚ ÚòÙŚÔËșČčèïïíț‹źźęșÙÏ ÏóÎÌÆč­čžïïíț‹źźó­ÍÊÁł”ș¶”튋ùŠ‹Š‹‹Š‹‹ęŠ‹ŠŠ‹óŠÌËĆČ°șș”íˆôÆÈÁ±Żœșč”í„ț…„„…ę„…„„…„ôšÄż­ŹĂŸșž·íú‡áûᇁűû‚ûô“Àž©šÉÄżș·žíúá~áűû~ûóœł€ąĐÊĆÀ»··í|țû||ûț|ûû|íŒČą›ÓŃËÆÁ»·°šuíí{zÙû{zz{z{{û{z{z{ûzz{z{œ±ą–ÖÓÒÌÇÁŒ¶šuíí{zÙà{zzàz{{û{z{z{ûzz{z{œŽ€”ÜŚÓÓÍÇÂœ”uííxùyßûß~xxy x푿Ž€—âĘŰÓÓÎÈĂŸłuííwx wìx‘À”§žéăȚÙÔÓÏÉÄżČuíí vțuv vìzÁ·©šìêäßÚÔÓĐÊĆżłuíívù‰ ›™—”’ ’êÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­vvû­§Š§ŠŠ§ę›{uuêy€~|uromkkmq‹Ÿ«ŒÆœČ­­vv§ęÎÆÇÇüž‹žÇÇêĆÂș±Šœ–’ˆo’s•”’™Ź·łŸvvŠțÍÆÆû’·ÆÇÆÆêĆÂŒłȘ ˜–n‹””n˜——•‘˜ĄŸvv„țÍÆÆĆÆț„ÆÆöÄĂŸ”­ąš–i••ôk—™››š˜…Ävv€€ęÌÄĆĆûÄĆƄĆĆöĂŸž°šŠąnŸŸőoŸĄąŁ„§’ÄvŁŁțËÄÄü„ÄƄ„ꃂ€~{z°­xŻłČ€ČłŽ±°Č––ąąÙÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™™  țÉĂĂț„ĂĂțÄĂĂÂĂț„ĂĂ ŸóÈÂÂĂÂĂÂĂ„ĂÄ„țƒ„„Âü„ĂĂÂÂțĂÂÂüĂ  ŸŸțÇÂÂùÁ„ÂÁÂÂęÀÂÁÁÂę„ÁÂÂśÁÂÂÁŸŸžžțÇÁÁśÂÁÁ„ÁÁÂÂÁÁțÂÁÁöÂÁÁ„ÁÁÂÁÂÁÁ țÄÁÁùÀÁÁ„ÀÁ„ „úÀÁ„ÁÁÀÀÁûÀÁœœțÄÀÀț„À Àü„ÀÁÀÀ ›őĂÀżÀÀżżÀżƒÀÀùżÀÀżÀÀżżòƒÀÀżÀżÀÀżżÀ››ššüĂżŸżżü„Ÿż„ „żû„żżŸżż šûÁżŸŸżżù„żżŸżŸżżöŸżżŸżŸż„żŸŸżŸżš˜țÁŸŸțœŸŸț„Ÿ ŸùœŸ„ŸŸœŸŸęœŸ˜˜üżœŸœœûŸœœ„œœŸęœŸœœśŸœŸ„œŸœŸœœüŸ˜˜——ęż»œœ „țƒ„„œęŒ„œœúŒœœŒŒ——ńŸ»œœŒ„œŒŒœŒœœŒœœŒț„ŒŒű„ŒŒœŒŒœŒŒ —ęœșŒŒț„Œ Œț„ŒŒț„ŒŒțœŒŒęșŒ——űœč»Œ»ŠŻŒŒ»üŒ»»ŒŒùŠŒ»Œ„Œ»»úŒ»»č»——ęŒ¶»»ûŻ‰ŻŒ»»țŒ»»țŒ»»őŻŠ»»Š»»Œ»Œ»»ę¶»——ęŒ”»»ęŻ‰ƒ ƒú„ŠŻ»ș»»ę”»——úŒŽ»»ș»»ș»ș»ș»ęŽș——ù»Ž”șș»șșü»ș»șș»șù»șș¶łș——țșČ Čțș——ęș¶ČČû”ș——ü—żÁĆĆ꿗%—.țp™™ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììțp™™ŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïțp™™ęÖîééôçàÔÇȚÙđđïțp™™ó­æäÚÌŚßŚÖïopùopoppoppęopoopóoçäȚÍĐßȚÖïmôȚâĘËÌàßĘŐïițjiijęijiijiôčßÖÇÈâàßÜŚïfúmÛúÛmffűúffgffúffôÛÓÁÂćăàßÛŰïdúÛdcdÛddűúddcddúddóšŰÎŒ»èæăáßÛÖïùa``aaúaaúț`úúaì`™ŰÍ»”êéæäáßÚĐÄ wïï_^Ùú_^^_^__ú_^_^_ú^^_^_šŰÍ»źëêéçäáßŰÄ wïï_^ÙÙ_^^Ù^__ú_^_^_ú^^_^_›ÙÏœŹîìêêçäâàÖ wïï\ù]eÙúÙd\\] \íœÜĐż°ńïìêêçćâàÔwïï[\ [ì\›ȚÒÀŽôòïíêêèćăàÓwïï ZțYZ Zìd›ȚÔĂœöőòđíêêèæăàÒwïïZő˜Ź©§€ žžžæžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ZZŁóŒččșșčșșč诏‰‰êŸœ˜‘Œ‰‡„„†Š€žĆŚăÜÏ””ZZĆțéććüÖȘÖććêăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖĐàZZÄęèäććûäć±ÖććêâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸàZZĂòçćääćäćääŁćäćääőćăâÛÓÇŒ¶Ż‚­­ô„°Ž””ŽŽĄăZZÂÂțçääțŁääòćäćäâáÜŐÌĂÂœ‰șșő‰șŒœżÁÄźăZÁÁțçääăäûăŁääŁŁêąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłłÀÀùçäăääăääüŁăäăăèäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ””żżțçăăäęăŁăăíáäăăäăăŁăăäăăäăâăăżżțæăăüŁă㣣țąŁŁățŁăățäăăŸœúćăâăâăăęâŁăățâăăâăùâăăŁăâăăâțăœœòćâăâăăââăŁâăăââăâûăâŁăââüăœœŒŒțäââùăââŁă㣠ŁűâăŁăââăâ⌻țäââüáâŁââüáâáââțŁââ»șțăââùąáâáâáââáâűąââááâáââüá»»șșúăáââáââûáŁâᣠŁüâáŁááüâáâááüâččșșüâáâááőŁááâááâááâááüâáŁáá čęáàááàțŁááțàá áțŁááțàáá žûâáààááőŁááààááààáààáęàŁááśàáàáàážž··úáßàáᣠŁțąŁŁàțŁààęáàááûßážž··ęâȚààûŁààáààțáààúŁàáàŁààûáàȚà··ęáĘààțŁà àęߣààțŁààűßàßààĘà··ęàÛààöȘÒààßàßàßààśßààȘßààŁààęÛß··äßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßààûßàÚß··śßÚààßßÒ©ą ąòŁȘÒßààßàßàßÙà··úßŰàßàßßțàß ßțàßßöàßßààßßÙß··üߌÚßßțàßßțàßßúàßÚŚß··țßÖ Öțß··ęßÛÖÖûÚß··ü·ââććęâ·%·.ț‹źźńéđńđńńđđńđđńđńđńïîíéöŐàííț‹źźđțûú úóűśńçćóóòò””ńț‹źźțïùùôűóìâöóòò””ńț‹źźóĂśöđçńśńń””ńŠ‹ùŠ‹Š‹‹Š‹‹ęŠ‹ŠŠ‹óŠśôòçëśśń””ńˆôđőïăçśśöï””ń„ț…„„…ę„…„„…„úŃńëàâśśüőń”ńú‡áûᇁűû‚ûù»îèÜĘűśśęôđńúá~áűû~ûűžëćÙŚùűśśęôïń|țû||ûț|ûû|ížëäŚÒùùűűśśóçâG::•ńń{zæû{zz{z{{û{z{z{ûzz{z{·íćŚÍùùöűśśòâG::•ńń{zćà{zzàz{{û{z{z{ûzz{z{čïæŰËúùùśűśśńG::•ńńxùyßûß~xxy xűșïçÚÌûúùùűűśśđ::•ńńwx wőxșńèÛĐüûúúùùùűśśï:•ńń vțuv vô€șńëȚŚüüûûúùùúűśöî•ńńvôŸÆĆÄÁŸ»Œ»ŒŒ»»Œś»șòêßĘőóńńôóőùùűűőì€ÂÂvvÇțŐÔÔÓúÔÓÔÊŻȘȘê°œșžŽ°ź«Ș©«ŻÆÖȚíűôëÂÂvvèÙùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîëśvvèùűüÌëűùùèűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘśvvçțùűűùûűùÀűùùűçùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇśvvææúùűűùùűűțÀùùțűùùöëńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖśvææțúűűśùűùűűÀűùÀÀêżŸŒč¶”äáŽäçæșèéêćäçÚÚææùùűűùùűùùțÀùùçűùùśśóîèëë攎·ŸâîííììîÜÜććùúűűùűùűűęÀűùùùűùùűűùűűûùÀűùűűûùűśśććóùűùűùűùűűÀűűÀÀțżÀÀüùűÀűűűùűùűűććääțùűűéùűùÀűùűùùűűùśűűùùűűÀűùűűúùűùùűääüùűùűűțÀű űùûÀűűùűűûùűűùääùűùûűÀűùÀ ÀüùűÀűűùùűùűääăăűûùűűÀűűûùűűùűűśùűűÀűűùùűűțùăăìűùùűùűűùűżùűùùűùűűùűűúùűűżùűűúùűùăăââűüÀűùÀ ÀùùűÀűűùűűûùűűùââűûùÀűùűűüùűùűűęùÀűűùű âűűÀùùűùűùűűțùűűțÀűűáâęűùűűțÀű űúùűűÀùűűțùűűâáűüùűűÀ ÀțżÀÀűțÀűűęùűááęűśűűțÀűűțùű űțÀűűțÀűűúùűűśűááęűśűűțÀű űțÀűűțÀűűęöűááęűśűűęÆëűűțùűűțÆűűüÀűùűűęöűááęűőűűüìĆëű űúëÆűűÆűűęőűááęűôűűęëĆż żüÀÆëűűęôűááęùôűűțùűűęôűááüűóőűűüőóűááțűó óțűááęűöóóûőűááüáűűùùúűùùűá%á.ÿüÿęęÿęű ț±ÿÿțđ ÿęß ÿęÇ !ÿęĄ"ÿęr#ÿęG$ÿț"%ÿț &ÿț&ÿęț'ÿęęțÚÿ&ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿț!ÿ$ÿț*ű2@AABCE@@2./shÿ     SČ4./ČH./ČXț‹źźœű»ž”ŻÍŻÈììț‹źźŒțáÚ ÚòÙŚÔËșČčèïïíț‹źźęșÙÏ ÏóÎÌÆč­čžïïíț‹źźó­ÍÊÁł”ș¶”튋ùŠ‹Š‹‹Š‹‹ęŠ‹ŠŠ‹óŠÌËĆČ°șș”í ˆțïˆ ˆôÆÈÁ±Żœșč”í„ț…„„…ú„…„î„……„ôšÄż­ŹĂŸșž·íú™âîîîîę♁ô“Àž©šÉÄżș·žíü~á˜úí~áóœł€ąĐÊĆÀ»··í|áû•||í||țí||íŒČą›ÓŃËÆÁ»·°šuíí{z{ző”àÖ{í{z{í{zzê{z{œ±ą–ÖÓÒÌÇÁŒ¶šuíí{z{ző{”à{í{z{í{zzê{z{œŽ€”ÜŚÓÓÍÇÂœ”uííxyxìśàxxíyxxìxx푿Ž€—âĘŰÓÓÎÈĂŸłuííwx wìx‘À”§žéăȚÙÔÓÏÉÄżČuíí vțuv vìzÁ·©šìêäßÚÔÓĐÊĆżłuíívù‰ ›™—”’ ’êÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­vvû­§Š§ŠŠ§ę›{uuêy€~|uromkkmq‹Ÿ«ŒÆœČ­­vv§ęÎÆÇÇüž‹žÇÇêĆÂș±Šœ–’ˆo’s•”’™Ź·łŸvvŠțÍÆÆû’·ÆÇÆÆêĆÂŒłȘ ˜–n‹””n˜——•‘˜ĄŸvv„țÍÆÆĆÆț„ÆÆöÄĂŸ”­ąš–i••ôk—™››š˜…Ävv€€ęÌÄĆĆûÄĆƄĆĆöĂŸž°šŠąnŸŸőoŸĄąŁ„§’ÄvŁŁțËÄÄü„ÄƄ„ꃂ€~{z°­xŻłČ€ČłŽ±°Č––ąąÙÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™™  țÉĂĂț„ĂĂțÄĂĂÂĂț„ĂĂ ŸóÈÂÂĂÂĂÂĂ„ĂÄ„țƒ„„Âü„ĂĂÂÂțĂÂÂüĂ  ŸŸțÇÂÂùÁ„ÂÁÂÂęÀÂÁÁÂę„ÁÂÂśÁÂÂÁŸŸžžțÇÁÁśÂÁÁ„ÁÁÂÂÁÁțÂÁÁöÂÁÁ„ÁÁÂÁÂÁÁ țÄÁÁùÀÁÁ„ÀÁ„ „úÀÁ„ÁÁÀÀÁûÀÁœœțÄÀÀț„À Àü„ÀÁÀÀ ›őĂÀżÀÀżżÀżƒÀÀùżÀÀżÀÀżżòƒÀÀżÀżÀÀżżÀ››ššüĂżŸżżü„Ÿż„ „żû„żżŸżż šûÁżŸŸżżù„żżŸżŸżżöŸżżŸżŸż„żŸŸżŸżš˜țÁŸŸțœŸŸț„Ÿ ŸùœŸ„ŸŸœŸŸęœŸ˜˜üżœŸœœûŸœœ„œœŸęœŸœœśŸœŸ„œŸœŸœœüŸ˜˜——ęż»œœ „țƒ„„œęŒ„œœúŒœœŒŒ——ńŸ»œœŒ„œŒŒœŒœœŒœœŒț„ŒŒű„ŒŒœŒŒœŒŒ —ęœșŒŒț„Œ Œț„ŒŒț„ŒŒțœŒŒęșŒ——űœč»Œ»ŠŻŒŒ»üŒ»»ŒŒùŠŒ»Œ„Œ»»úŒ»»č»——ęŒ¶»»ûŻ‰ŻŒ»»țŒ»»țŒ»»őŻŠ»»Š»»Œ»Œ»»ę¶»——ęŒ”»»ęŻ‰ƒ ƒú„ŠŻ»ș»»ę”»——úŒŽ»»ș»»ș»ș»ș»ęŽș——ù»Ž”șș»șșü»ș»șș»șù»șș¶łș——țșČ Čțș——ęș¶ČČû”ș——ü—żÁĆĆ꿗%—.țp™™ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììțp™™ŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïțp™™ęÖîééôçàÔÇȚÙđđïțp™™ó­æäÚÌŚßŚÖïopùopoppoppęopoopóoçäȚÍĐßȚÖï mțëm môȚâĘËÌàßĘŐïițjiijúijiêijjiôčßÖÇÈâàßÜŚïfúƒÜêêfêêę܃ffôÛÓÁÂćăàßÛŰïdücۂddúêddcÛddóšŰÎŒ»èæăáßÛÖïüa``aaÚśa`éa``éaaì`™ŰÍ»”êéæäáßÚĐÄ wïï_^_^ő~ÚÍ_é_^_é_^^ê_^_šŰÍ»źëêéçäáßŰÄ wïï_^_^ő_}Ú_é_^_é_^^ê_^_›ÙÏœŹîìêêçäâàÖ wïï\]\éśÙ\\é]\\é\\íœÜĐż°ńïìêêçćâàÔwïï[\ [ì\›ȚÒÀŽôòïíêêèćăàÓwïï ZțYZ Zìd›ȚÔĂœöőòđíêêèæăàÒwïïZő˜Ź©§€ žžžæžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ZZŁóŒččșșčșșč诏‰‰êŸœ˜‘Œ‰‡„„†Š€žĆŚăÜÏ””ZZĆțéććüÖȘÖććêăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖĐàZZÄęèäććûäć±ÖććêâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸàZZĂòçćääćäćääŁćäćääőćăâÛÓÇŒ¶Ż‚­­ô„°Ž””ŽŽĄăZZÂÂțçääțŁääòćäćäâáÜŐÌĂÂœ‰șșő‰șŒœżÁÄźăZÁÁțçääăäûăŁääŁŁêąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłłÀÀùçäăääăääüŁăäăăèäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ””żżțçăăäęăŁăăíáäăăäăăŁăăäăăäăâăăżżțæăăüŁă㣣țąŁŁățŁăățäăăŸœúćăâăâăăęâŁăățâăăâăùâăăŁăâăăâțăœœòćâăâăăââăŁâăăââăâûăâŁăââüăœœŒŒțäââùăââŁă㣠ŁűâăŁăââăâ⌻țäââüáâŁââüáâáââțŁââ»șțăââùąáâáâáââáâűąââááâáââüá»»șșúăáââáââûáŁâᣠŁüâáŁááüâáâááüâččșșüâáâááőŁááâááâááâááüâáŁáá čęáàááàțŁááțàá áțŁááțàáá žûâáààááőŁááààááààáààáęàŁááśàáàáàážž··úáßàáᣠŁțąŁŁàțŁààęáàááûßážž··ęâȚààûŁààáààțáààúŁàáàŁààûáàȚà··ęáĘààțŁà àęߣààțŁààűßàßààĘà··ęàÛààöȘÒààßàßàßààśßààȘßààŁààęÛß··äßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßààûßàÚß··śßÚààßßÒ©ą ąòŁȘÒßààßàßàßÙà··úßŰàßàßßțàß ßțàßßöàßßààßßÙß··üߌÚßßțàßßțàßßúàßÚŚß··țßÖ Öțß··ęßÛÖÖûÚß··ü·ââććęâ·%·.ț‹źźńéđńđńńđđńđđńđńđńïîíéöŐàííț‹źźđțûú úóűśńçćóóòò””ńț‹źźțïùùôűóìâöóòò””ńț‹źźóĂśöđçńśńń””ńŠ‹ùŠ‹Š‹‹Š‹‹ęŠ‹ŠŠ‹óŠśôòçëśśń””ń ˆțïˆ ˆôđőïăçśśöï””ń„ț…„„…ú„…„î„……„úŃńëàâśśüőń”ńú™âîîîîę♁ù»îèÜĘűśśęôđńü~á˜úí~áűžëćÙŚùűśśęôïń|áû•||í||țí||ížëäŚÒùùűűśśóçâG::•ńń{z{ző”àÖ{í{z{í{zzś{z{·íćŚÍùùöűśśòâG::•ńń{z{ző{”à{í{z{í{zzö{z{čïæŰËúùùśűśśńG::•ńńxyxìśàxxíyxxìxxűșïçÚÌûúùùűűśśđ::•ńńwx wőxșńèÛĐüûúúùùùűśśï:•ńń vțuv vô€șńëȚŚüüûûúùùúűśöî•ńńvôŸÆĆÄÁŸ»Œ»ŒŒ»»Œś»șòêßĘőóńńôóőùùűűőì€ÂÂvvÇțŐÔÔÓúÔÓÔÊŻȘȘê°œșžŽ°ź«Ș©«ŻÆÖȚíűôëÂÂvvèÙùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîëśvvèùűüÌëűùùèűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘśvvçțùűűùûűùÀűùùűçùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇśvvææúùűűùùűűțÀùùțűùùöëńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖśvææțúűűśùűùűűÀűùÀÀêżŸŒč¶”äáŽäçæșèéêćäçÚÚææùùűűùùűùùțÀùùçűùùśśóîèëë攎·ŸâîííììîÜÜććùúűűùűùűűęÀűùùùűùùűűùűűûùÀűùűűûùűśśććóùűùűùűùűűÀűűÀÀțżÀÀüùűÀűűűùűùűűććääțùűűéùűùÀűùűùùűűùśűűùùűűÀűùűűúùűùùűääüùűùűűțÀű űùûÀűűùűűûùűűùääùűùûűÀűùÀ ÀüùűÀűűùùűùűääăăűûùűűÀűűûùűűùűűśùűűÀűűùùűűțùăăìűùùűùűűùűżùűùùűùűűùűűúùűűżùűűúùűùăăââűüÀűùÀ ÀùùűÀűűùűűûùűűùââűûùÀűùűűüùűùűűęùÀűűùű âűűÀùùűùűùűűțùűűțÀűűáâęűùűűțÀű űúùűűÀùűűțùűűâáűüùűűÀ ÀțżÀÀűțÀűűęùűááęűśűűțÀűűțùű űțÀűűțÀűűúùűűśűááęűśűűțÀű űțÀűűțÀűűęöűááęűśűűęÆëűűțùűűțÆűűüÀűùűűęöűááęűőűűüìĆëű űúëÆűűÆűűęőűááęűôűűęëĆż żüÀÆëűűęôűááęùôűűțùűűęôűááüűóőűűüőóűááțűó óțűááęűöóóûőűááüáűűùùúűùùűá%á.ÿüÿęęÿęű ț±ÿÿțđ ÿęß ÿęÇ !ÿęĄ"ÿęr#ÿęG$ÿț"%ÿț &ÿț&ÿęț'ÿęęțÚÿ&ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿț!ÿ$ÿț*ű2@AABCE@@2./rbÿ     !Æ./Æ./Æ(ț‹źźœű»ž”ŻÍŻÈììț‹źźŒțáÚ ÚòÙŚÔËșČčèïïíț‹źźęșÙÏ ÏóÎÌÆč­čžïïíț‹źźó­ÍÊÁł”ș¶”튋ùŠ‹Š‹‹Š‹‹ęŠ‹ŠŠ‹óŠÌËĆČ°șș”í ˆțïˆ ˆôÆÈÁ±Żœșč”í„ț…„„…ú„…î„„……„ôšÄż­ŹĂŸșž·íöî™âî™â⚁ô“Àž©šÉÄżș·žíő~íá˜íá˜áóœł€ąĐÊĆÀ»··í|úí•||í||țï||íŒČą›ÓŃËÆÁ»·°šuíí{z{ózí{z{í{{zïz{zzê{z{œ±ą–ÖÓÒÌÇÁŒ¶šuíí{z{ózí{z{íà”zíz{zzê{z{œŽ€”ÜŚÓÓÍÇÂœ”uííxyxțìxxúì“àà’xx푿Ž€—âĘŰÓÓÎÈĂŸłuííwx wìx‘À”§žéăȚÙÔÓÏÉÄżČuíí vțuv vìzÁ·©šìêäßÚÔÓĐÊĆżłuíívù‰ ›™—”’ ’êÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­vvû­§Š§ŠŠ§ę›{uuêy€~|uromkkmq‹Ÿ«ŒÆœČ­­vv§ęÎÆÇÇüž‹žÇÇêĆÂș±Šœ–’ˆo’s•”’™Ź·łŸvvŠțÍÆÆû’·ÆÇÆÆêĆÂŒłȘ ˜–n‹””n˜——•‘˜ĄŸvv„țÍÆÆĆÆț„ÆÆöÄĂŸ”­ąš–i••ôk—™››š˜…Ävv€€ęÌÄĆĆûÄĆƄĆĆöĂŸž°šŠąnŸŸőoŸĄąŁ„§’ÄvŁŁțËÄÄü„ÄƄ„ꃂ€~{z°­xŻłČ€ČłŽ±°Č––ąąÙÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™™  țÉĂĂț„ĂĂțÄĂĂÂĂț„ĂĂ ŸóÈÂÂĂÂĂÂĂ„ĂÄ„țƒ„„Âü„ĂĂÂÂțĂÂÂüĂ  ŸŸțÇÂÂùÁ„ÂÁÂÂęÀÂÁÁÂę„ÁÂÂśÁÂÂÁŸŸžžțÇÁÁśÂÁÁ„ÁÁÂÂÁÁțÂÁÁöÂÁÁ„ÁÁÂÁÂÁÁ țÄÁÁùÀÁÁ„ÀÁ„ „úÀÁ„ÁÁÀÀÁûÀÁœœțÄÀÀț„À Àü„ÀÁÀÀ ›őĂÀżÀÀżżÀżƒÀÀùżÀÀżÀÀżżòƒÀÀżÀżÀÀżżÀ››ššüĂżŸżżü„Ÿż„ „żû„żżŸżż šûÁżŸŸżżù„żżŸżŸżżöŸżżŸżŸż„żŸŸżŸżš˜țÁŸŸțœŸŸț„Ÿ ŸùœŸ„ŸŸœŸŸęœŸ˜˜üżœŸœœûŸœœ„œœŸęœŸœœśŸœŸ„œŸœŸœœüŸ˜˜——ęż»œœ „țƒ„„œęŒ„œœúŒœœŒŒ——ńŸ»œœŒ„œŒŒœŒœœŒœœŒț„ŒŒű„ŒŒœŒŒœŒŒ —ęœșŒŒț„Œ Œț„ŒŒț„ŒŒțœŒŒęșŒ——űœč»Œ»ŠŻŒŒ»üŒ»»ŒŒùŠŒ»Œ„Œ»»úŒ»»č»——ęŒ¶»»ûŻ‰ŻŒ»»țŒ»»țŒ»»őŻŠ»»Š»»Œ»Œ»»ę¶»——ęŒ”»»ęŻ‰ƒ ƒú„ŠŻ»ș»»ę”»——úŒŽ»»ș»»ș»ș»ș»ęŽș——ù»Ž”șș»șșü»ș»șș»șù»șș¶łș——țșČ Čțș——ęș¶ČČû”ș——ü—żÁĆĆ꿗%—.țp™™ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììțp™™ŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïțp™™ęÖîééôçàÔÇȚÙđđïțp™™ó­æäÚÌŚßŚÖïopùopoppoppęopoopóoçäȚÍĐßȚÖï mțëm môȚâĘËÌàßĘŐïițjiijúijêiijjiôčßÖÇÈâàßÜŚïföêƒÜfêƒÜ܄ffôÛÓÁÂćăàßÛŰïdőcêۂdêۂdÛddóšŰÎŒ»èæăáßÛÖïüa``aaöéaaéaa`ìaaì`™ŰÍ»”êéæäáßÚĐÄ wïï_^_ó^é_^_é__^ì^_^^ê_^_šŰÍ»źëêéçäáßŰÄ wïï_^_ó^é_^_éÚ~^é^_^^ê_^_›ÙÏœŹîìêêçäâàÖ wïï\]\țé\\úé|ÚÙ{\\íœÜĐż°ńïìêêçćâàÔwïï[\ [ì\›ȚÒÀŽôòïíêêèćăàÓwïï ZțYZ Zìd›ȚÔĂœöőòđíêêèæăàÒwïïZő˜Ź©§€ žžžæžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ZZŁóŒččșșčșșč诏‰‰êŸœ˜‘Œ‰‡„„†Š€žĆŚăÜÏ””ZZĆțéććüÖȘÖććêăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖĐàZZÄęèäććûäć±ÖććêâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸàZZĂòçćääćäćääŁćäćääőćăâÛÓÇŒ¶Ż‚­­ô„°Ž””ŽŽĄăZZÂÂțçääțŁääòćäćäâáÜŐÌĂÂœ‰șșő‰șŒœżÁÄźăZÁÁțçääăäûăŁääŁŁêąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłłÀÀùçäăääăääüŁăäăăèäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ””żżțçăăäęăŁăăíáäăăäăăŁăăäăăäăâăăżżțæăăüŁă㣣țąŁŁățŁăățäăăŸœúćăâăâăăęâŁăățâăăâăùâăăŁăâăăâțăœœòćâăâăăââăŁâăăââăâûăâŁăââüăœœŒŒțäââùăââŁă㣠ŁűâăŁăââăâ⌻țäââüáâŁââüáâáââțŁââ»șțăââùąáâáâáââáâűąââááâáââüá»»șșúăáââáââûáŁâᣠŁüâáŁááüâáâááüâččșșüâáâááőŁááâááâááâááüâáŁáá čęáàááàțŁááțàá áțŁááțàáá žûâáààááőŁááààááààáààáęàŁááśàáàáàážž··úáßàáᣠŁțąŁŁàțŁààęáàááûßážž··ęâȚààûŁààáààțáààúŁàáàŁààûáàȚà··ęáĘààțŁà àęߣààțŁààűßàßààĘà··ęàÛààöȘÒààßàßàßààśßààȘßààŁààęÛß··äßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßààûßàÚß··śßÚààßßÒ©ą ąòŁȘÒßààßàßàßÙà··úßŰàßàßßțàß ßțàßßöàßßààßßÙß··üߌÚßßțàßßțàßßúàßÚŚß··țßÖ Öțß··ęßÛÖÖûÚß··ü·ââććęâ·%·.ț‹źźńéđńđńńđđńđđńđńđńïîíéöŐàííț‹źźđțûú úóűśńçćóóòò””ńț‹źźțïùùôűóìâöóòò””ńț‹źźóĂśöđçńśńń””ńŠ‹ùŠ‹Š‹‹Š‹‹ęŠ‹ŠŠ‹óŠśôòçëśśń””ń ˆțïˆ ˆôđőïăçśśöï””ń„ț…„„…ú„…î„„……„úŃńëàâśśüőń”ńöî™âî™â⚁ù»îèÜĘűśśęôđńő~íá˜íá˜áűžëćÙŚùűśśęôïń|úí•||í||țï||ížëäŚÒùùűűśśóçâG::•ńń{z{ózí{z{í{{zïz{zzś{z{·íćŚÍùùöűśśòâG::•ńń{z{ózí{z{íà”zíz{zzö{z{čïæŰËúùùśűśśńG::•ńńxyxțìxxúì“àà’xxűșïçÚÌûúùùűűśśđ::•ńńwx wőxșńèÛĐüûúúùùùűśśï:•ńń vțuv vô€șńëȚŚüüûûúùùúűśöî•ńńvôŸÆĆÄÁŸ»Œ»ŒŒ»»Œś»șòêßĘőóńńôóőùùűűőì€ÂÂvvÇțŐÔÔÓúÔÓÔÊŻȘȘê°œșžŽ°ź«Ș©«ŻÆÖȚíűôëÂÂvvèÙùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîëśvvèùűüÌëűùùèűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘśvvçțùűűùûűùÀűùùűçùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇśvvææúùűűùùűűțÀùùțűùùöëńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖśvææțúűűśùűùűűÀűùÀÀêżŸŒč¶”äáŽäçæșèéêćäçÚÚææùùűűùùűùùțÀùùçűùùśśóîèëë攎·ŸâîííììîÜÜććùúűűùűùűűęÀűùùùűùùűűùűűûùÀűùűűûùűśśććóùűùűùűùűűÀűűÀÀțżÀÀüùűÀűűűùűùűűććääțùűűéùűùÀűùűùùűűùśűűùùűűÀűùűűúùűùùűääüùűùűűțÀű űùûÀűűùűűûùűűùääùűùûűÀűùÀ ÀüùűÀűűùùűùűääăăűûùűűÀűűûùűűùűűśùűűÀűűùùűűțùăăìűùùűùűűùűżùűùùűùűűùűűúùűűżùűűúùűùăăââűüÀűùÀ ÀùùűÀűűùűűûùűűùââűûùÀűùűűüùűùűűęùÀűűùű âűűÀùùűùűùűűțùűűțÀűűáâęűùűűțÀű űúùűűÀùűűțùűűâáűüùűűÀ ÀțżÀÀűțÀűűęùűááęűśűűțÀűűțùű űțÀűűțÀűűúùűűśűááęűśűűțÀű űțÀűűțÀűűęöűááęűśűűęÆëűűțùűűțÆűűüÀűùűűęöűááęűőűűüìĆëű űúëÆűűÆűűęőűááęűôűűęëĆż żüÀÆëűűęôűááęùôűűțùűűęôűááüűóőűűüőóűááțűó óțűááęűöóóûőűááüáűűùùúűùùűá%á.ÿüÿęęÿęű ț±ÿÿțđ ÿęß ÿęÇ !ÿęĄ"ÿęr#ÿęG$ÿț"%ÿț &ÿț&ÿęț'ÿęęțÚÿ&ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿț!ÿ$ÿț*ű2@AABCE@@2./pyÿ     ïÙĆ./ÙÙ./Ùéț‹źźœű»ž”ŻÍŻÈììț‹źźŒțáÚ ÚòÙŚÔËșČčèïïíț‹źźęșÙÏ ÏóÎÌÆč­čžïïíț‹źźó­ÍÊÁł”ș¶”튋ùŠ‹Š‹‹Š‹‹ęŠ‹ŠŠ‹óŠÌËĆČ°șș”íˆôÆÈÁ±Żœșč”í„ț…„„…ę„…„„…„ôšÄż­ŹĂŸșž·íęśïï‚ęô“Àž©šÉÄżș·žíę~ęűïï›~›ïóœł€ąĐÊĆÀ»··í|țę||űę|™ï|ï™||íŒČą›ÓŃËÆÁ»·°šuíí{z{ózę{z{ę{{î˜î{zzê{z{œ±ą–ÖÓÒÌÇÁŒ¶šuíí{z{ózÿęęî˜{{—ń—{zzê{z{œŽ€”ÜŚÓÓÍÇÂœ”uííxyxțęxxyęxîxx푿Ž€—âĘŰÓÓÎÈĂŸłuííwüęxxwwęî•wwìx‘À”§žéăȚÙÔÓÏÉÄżČuíí vțuv vìzÁ·©šìêäßÚÔÓĐÊĆżłuíívù‰ ›™—”’ ’êÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­vvû­§Š§ŠŠ§ę›{uuêy€~|uromkkmq‹Ÿ«ŒÆœČ­­vv§ęÎÆÇÇüž‹žÇÇêĆÂș±Šœ–’ˆo’s•”’™Ź·łŸvvŠțÍÆÆû’·ÆÇÆÆêĆÂŒłȘ ˜–n‹””n˜——•‘˜ĄŸvv„țÍÆÆĆÆț„ÆÆöÄĂŸ”­ąš–i••ôk—™››š˜…Ävv€€ęÌÄĆĆûÄĆƄĆĆöĂŸž°šŠąnŸŸőoŸĄąŁ„§’ÄvŁŁțËÄÄü„ÄƄ„ꃂ€~{z°­xŻłČ€ČłŽ±°Č––ąąÙÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™™  țÉĂĂț„ĂĂțÄĂĂÂĂț„ĂĂ ŸóÈÂÂĂÂĂÂĂ„ĂÄ„țƒ„„Âü„ĂĂÂÂțĂÂÂüĂ  ŸŸțÇÂÂùÁ„ÂÁÂÂęÀÂÁÁÂę„ÁÂÂśÁÂÂÁŸŸžžțÇÁÁśÂÁÁ„ÁÁÂÂÁÁțÂÁÁöÂÁÁ„ÁÁÂÁÂÁÁ țÄÁÁùÀÁÁ„ÀÁ„ „úÀÁ„ÁÁÀÀÁûÀÁœœțÄÀÀț„À Àü„ÀÁÀÀ ›őĂÀżÀÀżżÀżƒÀÀùżÀÀżÀÀżżòƒÀÀżÀżÀÀżżÀ››ššüĂżŸżżü„Ÿż„ „żû„żżŸżż šûÁżŸŸżżù„żżŸżŸżżöŸżżŸżŸż„żŸŸżŸżš˜țÁŸŸțœŸŸț„Ÿ ŸùœŸ„ŸŸœŸŸęœŸ˜˜üżœŸœœûŸœœ„œœŸęœŸœœśŸœŸ„œŸœŸœœüŸ˜˜——ęż»œœ „țƒ„„œęŒ„œœúŒœœŒŒ——ńŸ»œœŒ„œŒŒœŒœœŒœœŒț„ŒŒű„ŒŒœŒŒœŒŒ —ęœșŒŒț„Œ Œț„ŒŒț„ŒŒțœŒŒęșŒ——űœč»Œ»ŠŻŒŒ»üŒ»»ŒŒùŠŒ»Œ„Œ»»úŒ»»č»——ęŒ¶»»ûŻ‰ŻŒ»»țŒ»»țŒ»»őŻŠ»»Š»»Œ»Œ»»ę¶»——ęŒ”»»ęŻ‰ƒ ƒú„ŠŻ»ș»»ę”»——úŒŽ»»ș»»ș»ș»ș»ęŽș——ù»Ž”șș»șșü»ș»șș»șù»șș¶łș——țșČ Čțș——ęș¶ČČû”ș——ü—żÁĆĆ꿗%—.țp™™ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììțp™™ŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïțp™™ęÖîééôçàÔÇȚÙđđïțp™™ó­æäÚÌŚßŚÖïopùopoppoppęopoopóoçäȚÍĐßȚÖïmôȚâĘËÌàßĘŐïițjiijęijiijiôčßÖÇÈâàßÜŚïfęśìˆfìˆgfęffôÛÓÁÂćăàßÛŰïdęcęddűìdì†c†ìddóšŰÎŒ»èæăáßÛÖïüa``aațęaaűęa„ë`ë„aaì`™ŰÍ»”êéæäáßÚĐÄ wïï_^_ó^ü_^_ü__ë‚ë_^^ê_^_šŰÍ»źëêéçäáßŰÄ wïï_^_ó^ÿüüë‚__í_^^ê_^_›ÙÏœŹîìêêçäâàÖ wïï\]\țü\\]ę\ë\\íœÜĐż°ńïìêêçćâàÔwïï[üü\\[[ęê[[ì\›ȚÒÀŽôòïíêêèćăàÓwïï ZțYZ Zìd›ȚÔĂœöőòđíêêèæăàÒwïïZő˜Ź©§€ žžžæžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ZZŁóŒččșșčșșč诏‰‰êŸœ˜‘Œ‰‡„„†Š€žĆŚăÜÏ””ZZĆțéććüÖȘÖććêăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖĐàZZÄęèäććûäć±ÖććêâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸàZZĂòçćääćäćääŁćäćääőćăâÛÓÇŒ¶Ż‚­­ô„°Ž””ŽŽĄăZZÂÂțçääțŁääòćäćäâáÜŐÌĂÂœ‰șșő‰șŒœżÁÄźăZÁÁțçääăäûăŁääŁŁêąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłłÀÀùçäăääăääüŁăäăăèäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ””żżțçăăäęăŁăăíáäăăäăăŁăăäăăäăâăăżżțæăăüŁă㣣țąŁŁățŁăățäăăŸœúćăâăâăăęâŁăățâăăâăùâăăŁăâăăâțăœœòćâăâăăââăŁâăăââăâûăâŁăââüăœœŒŒțäââùăââŁă㣠ŁűâăŁăââăâ⌻țäââüáâŁââüáâáââțŁââ»șțăââùąáâáâáââáâűąââááâáââüá»»șșúăáââáââûáŁâᣠŁüâáŁááüâáâááüâččșșüâáâááőŁááâááâááâááüâáŁáá čęáàááàțŁááțàá áțŁááțàáá žûâáààááőŁááààááààáààáęàŁááśàáàáàážž··úáßàáᣠŁțąŁŁàțŁààęáàááûßážž··ęâȚààûŁààáààțáààúŁàáàŁààûáàȚà··ęáĘààțŁà àęߣààțŁààűßàßààĘà··ęàÛààöȘÒààßàßàßààśßààȘßààŁààęÛß··äßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßààûßàÚß··śßÚààßßÒ©ą ąòŁȘÒßààßàßàßÙà··úßŰàßàßßțàß ßțàßßöàßßààßßÙß··üߌÚßßțàßßțàßßúàßÚŚß··țßÖ Öțß··ęßÛÖÖûÚß··ü·ââććęâ·%·.ț‹źźńéđńđńńđđńđđńđńđńïîíéöŐàííț‹źźđțûú úóűśńçćóóòò””ńț‹źźțïùùôűóìâöóòò””ńț‹źźóĂśöđçńśńń””ńŠ‹ùŠ‹Š‹‹Š‹‹ęŠ‹ŠŠ‹óŠśôòçëśśń””ńˆôđőïăçśśöï””ń„ț…„„…ę„…„„…„úŃńëàâśśüőń”ńęśïï‚ęù»îèÜĘűśśęôđńę~ęűïï›~›ïűžëćÙŚùűśśęôïń|țę||űę|™ï|ï™||ížëäŚÒùùűűśśóçâG::•ńń{z{ózę{z{ę{{î˜î{zzś{z{·íćŚÍùùöűśśòâG::•ńń{z{ózÿęęî˜{{—ń—{zzö{z{čïæŰËúùùśűśśńG::•ńńxyxțęxxyęxîxxűșïçÚÌûúùùűűśśđ::•ńńwüęxxwwęî•wwőxșńèÛĐüûúúùùùűśśï:•ńń vțuv vô€șńëȚŚüüûûúùùúűśöî•ńńvôŸÆĆÄÁŸ»Œ»ŒŒ»»Œś»șòêßĘőóńńôóőùùűűőì€ÂÂvvÇțŐÔÔÓúÔÓÔÊŻȘȘê°œșžŽ°ź«Ș©«ŻÆÖȚíűôëÂÂvvèÙùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîëśvvèùűüÌëűùùèűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘśvvçțùűűùûűùÀűùùűçùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇśvvææúùűűùùűűțÀùùțűùùöëńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖśvææțúűűśùűùűűÀűùÀÀêżŸŒč¶”äáŽäçæșèéêćäçÚÚææùùűűùùűùùțÀùùçűùùśśóîèëë攎·ŸâîííììîÜÜććùúűűùűùűűęÀűùùùűùùűűùűűûùÀűùűűûùűśśććóùűùűùűùűűÀűűÀÀțżÀÀüùűÀűűűùűùűűććääțùűűéùűùÀűùűùùűűùśűűùùűűÀűùűűúùűùùűääüùűùűűțÀű űùûÀűűùűűûùűűùääùűùûűÀűùÀ ÀüùűÀűűùùűùűääăăűûùűűÀűűûùűűùűűśùűűÀűűùùűűțùăăìűùùűùűűùűżùűùùűùűűùűűúùűűżùűűúùűùăăââűüÀűùÀ ÀùùűÀűűùűűûùűűùââűûùÀűùűűüùűùűűęùÀűűùű âűűÀùùűùűùűűțùűűțÀűűáâęűùűűțÀű űúùűűÀùűűțùűűâáűüùűűÀ ÀțżÀÀűțÀűűęùűááęűśűűțÀűűțùű űțÀűűțÀűűúùűűśűááęűśűűțÀű űțÀűűțÀűűęöűááęűśűűęÆëűűțùűűțÆűűüÀűùűűęöűááęűőűűüìĆëű űúëÆűűÆűűęőűááęűôűűęëĆż żüÀÆëűűęôűááęùôűűțùűűęôűááüűóőűűüőóűááțűó óțűááęűöóóûőűááüáűűùùúűùùűá%á.ÿüÿęęÿęű ț±ÿÿțđ ÿęß ÿęÇ !ÿęĄ"ÿęr#ÿęG$ÿț"%ÿț &ÿț&ÿęț'ÿęęțÚÿ&ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿț!ÿ$ÿț*ű2@AABCE@@2./plÿ     œíŸ./íł./íĂț‹źźœű»ž”ŻÍŻÈììț‹źźŒțáÚ ÚòÙŚÔËșČčèïïíț‹źźęșÙÏ ÏóÎÌÆč­čžïïíț‹źźó­ÍÊÁł”ș¶”튋ùŠ‹Š‹‹Š‹‹ęŠ‹ŠŠ‹óŠÌËĆČ°șș”íˆțńˆˆôÆÈÁ±Żœșč”í„ț…„„…ę„…„„ę…đ……„ôšÄż­ŹĂŸșž·í đûđô“Àž©šÉÄżș·žíû~ïüîïóœł€ąĐÊĆÀ»··í |țï||üï|ï||íŒČą›ÓŃËÆÁ»·°šuíí{z{zę{ï{{úézïz{zzê{z{œ±ą–ÖÓÒÌÇÁŒ¶šuíí{z{zț{ïïùí©zïz{zzê{z{œŽ€”ÜŚÓÓÍÇÂœ”uííxyxűïxxyyxïxx푿Ž€—âĘŰÓÓÎÈĂŸłuííwęxïw wìx‘À”§žéăȚÙÔÓÏÉÄżČuíí vțuv vìzÁ·©šìêäßÚÔÓĐÊĆżłuíívù‰ ›™—”’ ’êÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­vvû­§Š§ŠŠ§ę›{uuêy€~|uromkkmq‹Ÿ«ŒÆœČ­­vv§ęÎÆÇÇüž‹žÇÇêĆÂș±Šœ–’ˆo’s•”’™Ź·łŸvvŠțÍÆÆû’·ÆÇÆÆêĆÂŒłȘ ˜–n‹””n˜——•‘˜ĄŸvv„țÍÆÆĆÆț„ÆÆöÄĂŸ”­ąš–i••ôk—™››š˜…Ävv€€ęÌÄĆĆûÄĆƄĆĆöĂŸž°šŠąnŸŸőoŸĄąŁ„§’ÄvŁŁțËÄÄü„ÄƄ„ꃂ€~{z°­xŻłČ€ČłŽ±°Č––ąąÙÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™™  țÉĂĂț„ĂĂțÄĂĂÂĂț„ĂĂ ŸóÈÂÂĂÂĂÂĂ„ĂÄ„țƒ„„Âü„ĂĂÂÂțĂÂÂüĂ  ŸŸțÇÂÂùÁ„ÂÁÂÂęÀÂÁÁÂę„ÁÂÂśÁÂÂÁŸŸžžțÇÁÁśÂÁÁ„ÁÁÂÂÁÁțÂÁÁöÂÁÁ„ÁÁÂÁÂÁÁ țÄÁÁùÀÁÁ„ÀÁ„ „úÀÁ„ÁÁÀÀÁûÀÁœœțÄÀÀț„À Àü„ÀÁÀÀ ›őĂÀżÀÀżżÀżƒÀÀùżÀÀżÀÀżżòƒÀÀżÀżÀÀżżÀ››ššüĂżŸżżü„Ÿż„ „żû„żżŸżż šûÁżŸŸżżù„żżŸżŸżżöŸżżŸżŸż„żŸŸżŸżš˜țÁŸŸțœŸŸț„Ÿ ŸùœŸ„ŸŸœŸŸęœŸ˜˜üżœŸœœûŸœœ„œœŸęœŸœœśŸœŸ„œŸœŸœœüŸ˜˜——ęż»œœ „țƒ„„œęŒ„œœúŒœœŒŒ——ńŸ»œœŒ„œŒŒœŒœœŒœœŒț„ŒŒű„ŒŒœŒŒœŒŒ —ęœșŒŒț„Œ Œț„ŒŒț„ŒŒțœŒŒęșŒ——űœč»Œ»ŠŻŒŒ»üŒ»»ŒŒùŠŒ»Œ„Œ»»úŒ»»č»——ęŒ¶»»ûŻ‰ŻŒ»»țŒ»»țŒ»»őŻŠ»»Š»»Œ»Œ»»ę¶»——ęŒ”»»ęŻ‰ƒ ƒú„ŠŻ»ș»»ę”»——úŒŽ»»ș»»ș»ș»ș»ęŽș——ù»Ž”șș»șșü»ș»șș»șù»șș¶łș——țșČ Čțș——ęș¶ČČû”ș——ü—żÁĆĆ꿗%—.țp™™ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììțp™™ŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïțp™™ęÖîééôçàÔÇȚÙđđïțp™™ó­æäÚÌŚßŚÖïopùopoppoppęopoopóoçäȚÍĐßȚÖïmțímmôȚâĘËÌàßĘŐïițjiijęijiięjíjjiôčßÖÇÈâàßÜŚï fìûê›fíffôÛÓÁÂćăàßÛŰïdûcddìddüëdìddóšŰÎŒ»èæăáßÛÖïüa``aaűìa`aì`ìaaì`™ŰÍ»”êéæäáßÚĐÄ wïï_^_^ę_ë__úć^ì^_^^ê_^_šŰÍ»źëêéçäáßŰÄ wïï_^_^ő_ëììé–^ì^_^^ê_^_›ÙÏœŹîìêêçäâàÖ wïï\]\űë\\]]\ë\\íœÜĐż°ńïìêêçćâàÔwïï[ę\ë[ [ì\›ȚÒÀŽôòïíêêèćăàÓwïï ZțYZ Zìd›ȚÔĂœöőòđíêêèæăàÒwïïZő˜Ź©§€ žžžæžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ZZŁóŒččșșčșșč诏‰‰êŸœ˜‘Œ‰‡„„†Š€žĆŚăÜÏ””ZZĆțéććüÖȘÖććêăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖĐàZZÄęèäććûäć±ÖććêâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸàZZĂòçćääćäćääŁćäćääőćăâÛÓÇŒ¶Ż‚­­ô„°Ž””ŽŽĄăZZÂÂțçääțŁääòćäćäâáÜŐÌĂÂœ‰șșő‰șŒœżÁÄźăZÁÁțçääăäûăŁääŁŁêąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłłÀÀùçäăääăääüŁăäăăèäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ””żżțçăăäęăŁăăíáäăăäăăŁăăäăăäăâăăżżțæăăüŁă㣣țąŁŁățŁăățäăăŸœúćăâăâăăęâŁăățâăăâăùâăăŁăâăăâțăœœòćâăâăăââăŁâăăââăâûăâŁăââüăœœŒŒțäââùăââŁă㣠ŁűâăŁăââăâ⌻țäââüáâŁââüáâáââțŁââ»șțăââùąáâáâáââáâűąââááâáââüá»»șșúăáââáââûáŁâᣠŁüâáŁááüâáâááüâččșșüâáâááőŁááâááâááâááüâáŁáá čęáàááàțŁááțàá áțŁááțàáá žûâáààááőŁááààááààáààáęàŁááśàáàáàážž··úáßàáᣠŁțąŁŁàțŁààęáàááûßážž··ęâȚààûŁààáààțáààúŁàáàŁààûáàȚà··ęáĘààțŁà àęߣààțŁààűßàßààĘà··ęàÛààöȘÒààßàßàßààśßààȘßààŁààęÛß··äßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßààûßàÚß··śßÚààßßÒ©ą ąòŁȘÒßààßàßàßÙà··úßŰàßàßßțàß ßțàßßöàßßààßßÙß··üߌÚßßțàßßțàßßúàßÚŚß··țßÖ Öțß··ęßÛÖÖûÚß··ü·ââććęâ·%·.ț‹źźńéđńđńńđđńđđńđńđńïîíéöŐàííț‹źźđțûú úóűśńçćóóòò””ńț‹źźțïùùôűóìâöóòò””ńț‹źźóĂśöđçńśńń””ńŠ‹ùŠ‹Š‹‹Š‹‹ęŠ‹ŠŠ‹óŠśôòçëśśń””ńˆțńˆˆôđőïăçśśöï””ń„ț…„„…ę„…„„ę…đ……„úŃńëàâśśüőń”ń đûđù»îèÜĘűśśęôđńû~ïüîïűžëćÙŚùűśśęôïń |țï||üï|ï||ížëäŚÒùùűűśśóçâG::•ńń{z{zę{ï{{úézïz{zzś{z{·íćŚÍùùöűśśòâG::•ńń{z{zț{ïïùí©zïz{zzö{z{čïæŰËúùùśűśśńG::•ńńxyxűïxxyyxïxxűșïçÚÌûúùùűűśśđ::•ńńwęxïw wőxșńèÛĐüûúúùùùűśśï:•ńń vțuv vô€șńëȚŚüüûûúùùúűśöî•ńńvôŸÆĆÄÁŸ»Œ»ŒŒ»»Œś»șòêßĘőóńńôóőùùűűőì€ÂÂvvÇțŐÔÔÓúÔÓÔÊŻȘȘê°œșžŽ°ź«Ș©«ŻÆÖȚíűôëÂÂvvèÙùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîëśvvèùűüÌëűùùèűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘśvvçțùűűùûűùÀűùùűçùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇśvvææúùűűùùűűțÀùùțűùùöëńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖśvææțúűűśùűùűűÀűùÀÀêżŸŒč¶”äáŽäçæșèéêćäçÚÚææùùűűùùűùùțÀùùçűùùśśóîèëë攎·ŸâîííììîÜÜććùúűűùűùűűęÀűùùùűùùűűùűűûùÀűùűűûùűśśććóùűùűùűùűűÀűűÀÀțżÀÀüùűÀűűűùűùűűććääțùűűéùűùÀűùűùùűűùśűűùùűűÀűùűűúùűùùűääüùűùűűțÀű űùûÀűűùűűûùűűùääùűùûűÀűùÀ ÀüùűÀűűùùűùűääăăűûùűűÀűűûùűűùűűśùűűÀűűùùűűțùăăìűùùűùűűùűżùűùùűùűűùűűúùűűżùűűúùűùăăââűüÀűùÀ ÀùùűÀűűùűűûùűűùââűûùÀűùűűüùűùűűęùÀűűùű âűűÀùùűùűùűűțùűűțÀűűáâęűùűűțÀű űúùűűÀùűűțùűűâáűüùűűÀ ÀțżÀÀűțÀűűęùűááęűśűűțÀűűțùű űțÀűűțÀűűúùűűśűááęűśűűțÀű űțÀűűțÀűűęöűááęűśűűęÆëűűțùűűțÆűűüÀűùűűęöűááęűőűűüìĆëű űúëÆűűÆűűęőűááęűôűűęëĆż żüÀÆëűűęôűááęùôűűțùűűęôűááüűóőűűüőóűááțűó óțűááęűöóóûőűááüáűűùùúűùùűá%á.ÿüÿęęÿęű ț±ÿÿțđ ÿęß ÿęÇ !ÿęĄ"ÿęr#ÿęG$ÿț"%ÿț &ÿț&ÿęț'ÿęęțÚÿ&ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿț!ÿ$ÿț*ű2@AABCE@@2./cssÿ     Y`./t./„ț~€€œű»ž”ŻÍŻÈììț~€€ŒțáÚ ÚòÙŚÔËșČčèïïíț~€€ęșÙÏ ÏóÎÌÆč­čžïïíț~€€óŠÍÊÁł”ș¶”í}~ù}~}~~}~~ę}~}}~ó}ÌËĆČ°șș”í{ôĆÈÄ»Żœșč”íwțxwwxęwxwwxwô„ÄÀ”ŹĂŸșž·ítîßìߏtßìßttßìߏttôŽÀș°šÉÄżș·žírűȚrrŒȚrȚrrüȚrȚrrțȚrr󋜶ŹąĐÊĆÀ»··íúonnoëooő‹ëĘoonŠȚë‹ooìnŠŒ”«›ÓŃËÆÁ»·°šuííúonnoëooöŠȚonno‹Ț‹ooìn‹œŽ«–ÖÓÒÌÇÁŒ¶šuíímlŰĘmmˆĘmĘmm‰ĘlĘlmˆĘlmlm‹œ·­”ÜŚÓÓÍÇÂœ”uííjï‡Ęëʇj‡ëëʇj‡Ęëëjj틿žŹ—âĘŰÓÓÎÈĂŸłuííij iìj‹ÀžŻžéăȚÙÔÓÏÉÄżČuíí hțgh hìm‹Áč°šìêäßÚÔÓĐÊĆżłuííhù…›–”’ŽŒ Œê‹ÀșŻŽáÜÙÓŃÏÏÒŃËÆżČv­­hhûȘ€Ł€ŁŁ€Łț€ŁŁêŹÁ»±–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­hh§ęÎÆÇÇțÆÇÇêĆÂșžvœ–’’“•”’™Ź·łŸhhŠțÍÆ ÆțÇÆÆêĆÂŒ‚† ˜–““””–˜——•‘˜ĄŸhh„țÍÆÆĆ ÆöÄĂžjŁąš–”••—ö™››š˜…Ähh€€ęÌÄĆĆțÄĆĆöĂ™z°šŠą ŸŸśĄąŁ„§’ÄhŁŁțËÄÄęĆŸÄÄôĂÂ~œ¶”«­°ŻłČČűłŽ±°Č––ąąâÊÄĂÄĂÄÄĂĂÄł‡ÄĂĂıt””¶t{€Č·žččùž·žž™™  țÉĂĂùžŒq’ŸÄĂĂü‘’ĂĂú­q’žĂĂ ŸòÈÂÂĂÂĂ·’qŒłĂĂÂÂđŸuČÂÂĂš|q‘·ÂĂÂÂüĂ  ŸŸțÇÂÂśœ—q‡ČÂÂÁÂÂüąÂÁÁÂóÁą|qŒČÂÁŸŸžžțÇÁÁü|qŒÁÁÂÁꁹÁÁțÂÁÁûČvqĄÁÁ țÄÁÁ䶑qvœÁÀÁÀÁÀÀ±q»ÀÁÀÁÀÁÀ¶‘q‹°ÁÁûÀÁœœțÄÀÀú»–qv ÀÀ‘Àú»‘qŒ°ÀÀ ›ÙĂÀżÀÀżżÀș‘q|°ÀÀ»v°ÀżÀÀż q†°ÀżÀżÀÀżżÀ››ššüĂżŸżżűŽ‹ żż żżę‹ȘżżțŸżż šûÁżŸŸżżíŸżżŸżŸ„żŸżżŸżŸżŸżŸŸżŸżš˜țÁŸŸțœŸŸę©€ŸŸțœŸŸțœŸŸęœŸ˜˜üżœŸœœûŸœœŸœœûŸčœŸœœśŸœŸœœŸœŸœœüŸ˜˜——ęż»œœțŒœœúŒœœŒŒ——ńŸ»œœŒŒœŒŒœŒœœŒœœŒțœŒŒűœŒŒœŒŒœŒŒ —ęœșŒŒțœŒŒęșŒ——úœč»Œ»ŒŒ»üŒ»»ŒŒț»ŒŒ»úŒ»»č»——ęŒ¶»»ûŒ»ŒŒ»»țŒ»»țŒ»»üŒ»Œ»»ę¶»——ęŒ”»»țș»»ę”»——úŒŽ»»ș»»ș»ș»ș»ęŽș——ù»Ž”șș»șșü»ș»șș»șù»șș¶łș——țșČ Čțș——ęș¶ČČû”ș——ü—żÁĆĆ꿗%—.ț~€€ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììț~€€ŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïț~€€ęÖîééôçàÔÇȚÙđđïț~€€óŽæäÚÌŚßŚÖï}~ù}~}~~}~~ę}~}}~ó}çäȚÍĐßȚÖï{ôßâßÔÌàßĘŐïwțxwwxęwxwwxwôœßŰÎÈâàßÜŚïtîßìߏtßìßttßìߏttôŁÛÔÈÂćăàßÛŰïrűȚrrŒȚrȚrrüȚrȚrrțȚrró ŰĐÄ»èæăáßÛÖïúonnoëooő‹ëĘoonŠȚë‹ooìnŸŰÏĂ”êéæäáßÚĐÄ wïïúonnoëooöŠȚonno‹Ț‹ooìn ŰÏÄźëêéçäáßŰÄ wïïmlŰĘmmˆĘmĘmm‰ĘlĘlmˆĘlmlmĄÙŃĆŹîìêêçäâàÖ wïïjï‡Ęëʇj‡ëëʇj‡ĘëëjjíąÜÒÇ°ńïìêêçćâàÔwïïij iìjĄȚÔÉŽôòïíêêèćăàÓwïï hțgh hìpĄȚÖÊœöőòđíêêèæăàÒwïïhő±źŹȘ„Ł€ŁŁ€€æŁ€Ł€ĄȚŚÊÇìèćăâăćêéæäȚÏz””hhŠőÀœœŸŸœŸŸœœŸŸœéŸÆßŚÌ°§ŁĄ Ÿą„«žĆŚăÜÏ””hhĆțéććêăàŰž‹¶źȘšš©Ș­źŻ­ČÈÖĐàhhÄęèäććûäććäććêâàښžșČźŹŹ­ŻŻČł±°źŽŸàhhĂòçćääćäćääććäćääöćăâŐŸŒ¶Ż­­°öŽ””ŽŽĄăhhÂÂțçä äóćäćäâ᳑ÌĂÂœșșśŒœżÁÄźăhÁÁțçääăäțăääđȚääăäâᕶÔÒÈÉÍÍÏÏűŃÒÎÌÏłłÀÀùçäăääăääăŃ žăăäăăωÓÓՊ’ÀĐŐŰŚŚŰŚŐÖŚ””żżțçăăäúŚŠ‡ŹĘăăí«Źăăäʙ‡ŹŚäăăäăâăăżżțæăăúŚŹ‡ŠŃăăüʌŃăăúē‡ŹŰăăŸœöćăâăÜȇ Đăățâăă쟘âăăâăăâăŸ“‡ŠŃăââăœœòćâăⓇ„âăââăăââü™ŸăââöăâăăâЍ‡ŸââüăœœŒŒțäââśÖ«‡žâăăââđЇÜââăââă⌫‡ŠĐâ⌻țäââúܱ‡Ÿââûáâ««ââúÜ«‡„Đââ»șțăââçÜ«‡“Ïâá܍Đâááâ⟇ŸĐâááâáââüá»»șșúăáââáââáđÖ„œá៙âáâáâá„Éááüâáâááüâččșșüâáâááűâáá™Ăáâááțâá á čęáàááàáüàəá áțàáá žûâáààááàúÛáààáààáțàááśàáàáàážž··śáßàááààáààśáààááààáààęáàááûßážž··ęâȚààțáààțáààțáààûáàȚà··ęáĘààțßààűßàßààĘà··ęàÛààțßààúßàßàßààțßààțßà àęÛß··èßÚàßàßàßàßßàßàßßàßßààßàßßàûßàÚß··îßÚààßßàßàßààßßàßßààßàűßàßàßÙà··úßŰàßàßßțàß ßțàßßöàßßààßßÙß··üߌÚßßțàßßțàßßúàßÚŚß··țßÖ Öțß··ęßÛÖÖûÚß··ü·ââććęâ·%·.ț~€€ńéđńđńńđđńđđńđńđńïîíéöŐàííț~€€đțûú úóűśńçćóóòò””ńț~€€țïùùôűóìâöóòò””ńț~€€óŒśöđçńśńń””ń}~ù}~}~~}~~ę}~}}~ó}śôòçëśśń””ń{ôđőđêçśśöï””ńwțxwwxęwxwwxwúÎńìćâśśüőń”ńtîßìߏtßìßttßìߏttù”îéàĘűśśęôđńrűȚrrŒȚrȚrrüȚrȚrrțȚrrűČëćÜŚùűśśęôïńúonnoëooő‹ëĘoonŠȚë‹ooìnČëćÜÒùùűűśśóçâG::•ńńúonnoëooöŠȚonno‹Ț‹ooùn±íæÜÍùùöűśśòâG::•ńńmläĘmmˆĘmĘmm‰ĘlĘlmˆĘlmlmłïçĘËúùùśűśśńG::•ńńjï‡Ęëʇj‡ëëʇj‡ĘëëjjűŽïèßÌûúùùűűśśđ::•ńńij iőjŽńéàĐüûúúùùùűśśï:•ńń hțgh hôsŽńìâŚüüûûúùùúűśöî•ńńhôčÁÀŸŒž”¶”¶¶””¶ś”ŽòëâĘőóńńôóőùùűűőì€ÂÂhhÄțŃĐĐÏęĐÏĐĐÏűÛôìäÏÇÄÁÁôĂĆËÖȚíűôëÂÂhhèÙùűűùùűűùűűùùűűùùűűôíŃŠÒËÈÆÆÈÈËÌÎÎÓăîëśhhèù űùèűùűőï±·ŐÍËÈÉÉÊËÎÏĐÏÏŐĘśhhçțùűűùûűùùűùùűçùśőê•ÖŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśhhææúùűűùùűűùțűùùöùÇŠăÜÛŚÔÔôÓŐŐŚŚÙÛßÖśhææțúűűĘùűùűűùűùòűùűùűöȘËëèßáääçæçèéêćäçÚÚææùùűűùùűùùăæŽÍùűùùśäžèè럹ŰçëíîîííììîÜÜććăúűűùűùűűìș›ÁóùùűùùÀÀùűűßź›ÀìűűûùűśśććńùűùűùűìÀ›șćűùùűűêò ćűűùùűÚ§›ÀìűùűùűűććääțùűűßòƛŽæűűùűùùűűÓ­űűùùűűùűÓ§›șæűùùűääűùűùű§›șűűûźÓűűùùűśæĄ›ÓùűűùääùűśìÀ›ĄÍűűùűűéć›òűùűűùűűìÀ›șćűùűùűääăăűóóƛĄÓűűùűűÁÀűűśùűòÀ›șæùűűțùăăìűùùűùűűùòÀ›§æùűóĄćùűűúùӛŽæűűúùűùăăââűśùìșÓűűÓźűűûùűșßűűțùűűûùűűùââűûùűűùűűüźÙùűűùűùű â űùûűùßźűűțùűűáâęűùű űțòűűțùűűțùűűțùűűâáűțùűűęùűááęűśűűțùűűúùűűśűááęűśűűęöűááęűśű űțùű űțùűűęöűááęűőűűțùűűęőűááęűôűűęôűááęùôűűțùűűęôűááüűóőűűüőóűááțűó óțűááęűöóóûőűááüáűűùùúűùùűá%á.ÿüÿęęÿęű ț±ÿÿțđ ÿęß ÿęÇ !ÿęĄ"ÿęr#ÿęG$ÿț"%ÿț &ÿț&ÿęț'ÿęęțÚÿ&ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿț!ÿ$ÿț*ű2@AABCE@@20/htmlÿ     'ő0/ 0/źœű»ž”ŻÍŻÈììźŒțáÚ ÚòÙŚÔËșČčèïïíźęșÙÏ ÏóÎÌÆč­čžïïíźôÍÊÁł”ș¶”í”ôÌËĆČ°șș”í‘țÿ‘‘țÿ‘‘țÿ‘‘ôĆÈÁ±Żœșč”íțÿțÿțÿô„Äż­ŹĂŸșž·íŠúÿ€òÿ€ÿÿőŠÿ€òÿÿò€ŠÿŠŠôŽÀž©šÉÄżș·ží†íÿòĄ†ò†ÿ††ÿòĄÿ††ò†ÿ††ó‹œł€ąĐÊĆÀ»··íƒíÿžƒƒÿƒÿƒƒÿžƒÿƒƒÿƒÿƒƒíŠŒČą›ÓŃËÆÁ»·°šuííƒțÿƒƒńÿƒÿƒƒÿƒƒÿƒƒÿƒÿƒƒí‹œ±ą–ÖÓÒÌÇÁŒ¶šuíí€țÿ€€ńÿ€ÿ€€ÿ€€ÿ€€ÿ€ÿ€€í‹œŽ€”ÜŚÓÓÍÇÂœ”uíí~țÿ~~ńÿ~ÿÿ~ÿ~~ÿ~~ÿ~ÿ~~íf€ƒ„âĘŰÓÓÎÈĂŸłuíí}íh†x†éăȚÙÔÓÏÉÄżČuíí}ímˆ‚—ìêäßÚÔÓĐÊĆżłuíí}ù…›–”’ŽŒŒá‹od{oxqqrpŠ„„ĘÙŐËÍÏÏÒŃËÆżČv­­}}ûȘ€Ł€ŁŁà€|xƒi“…†šˆ{|tqqhqŒ‘Ÿ«ŒÆœČ­­}}§ęÎÆÇÇࠌš˜ušŒž»§”Š‚oltrsh{“•”’™Ź·łŸ}}ŠțÍÆÆß·€Ș•ŠžÎïúôôăș™Œˆx|rppeŽ˜——•‘˜ĄŸ}}„țÍÆÆĆߌ„“ŽĐśÂżńïáŰąw–ƒvpnjm—™››š˜…Ä}}€ęÌÄĆĆȚș‡ •©Áà‘±ÀôńâŐŹ“}›ZZeese“ĄąŁ„§’Ä}}ŁțËÄÄܞ€Œš°·ĘđśőóćŃł›‰Šsˆs€x‚łŽ±°Č––}}ąąŰÊÄĂÄʔŠu}‚ÒèíôòńæŃ·žˆy°° Ž„‚w”ž·žž™™}  țÉĂĂㄌŒ—›ŹżÛäíïêȚÌ耔ĂÏŒ«’‹‹v°Ă  ŸÙÈÂÂĂ‚”•„ ȘčÊÖßáĘŐÄŽĄ„ÚÊș©’‹‹t€ÁÂÂĂ  ŸŸțÇÂÂȚƒ–„–žŠČżÉÒÔŃÈ謜§ÓĆ·š›‹‹sœŸÁŸŸžžțÇÁÁà€—”ˆœĄȘŽœĂÄÁ蟥•–ÁżČŁ—‹ŠrœŒÀÁÁ țÄÁÁȚ‚•——šąšŻČłŻ©Ą—‹„Ź“ƒ‘‹‡y»ÀÀÁœœțÄÀÀà‘”–—™›ž ŁŁ š•Œ‹‰z}‹‹„ƒŸ»żÀÀ› ›őĂÀżÀÀŹ€’“”••—û“’ŽŒ‹‹óˆŠ‹{‘ŁŒŸżÀ››ššüĂżŸżżüs‘‘úŽŒŒ‹‹Šö‰ˆ™Š‰v›Ș»żż šśÁżŸŸżż{ŽŽőŽŒŒ‹‹Šˆ‡……óœ‹}‹žłŒŸżżšš˜˜țÁŸŸúœŸŸw…ŒŒúŠˆ†…‚ô…œ‡x˜€žœŸœŸ˜ ˜üżœŸœœûŸŻl…ŠŠè‰†„‚}{|~‚Š˜w“šŻșŒœœŸ˜˜——ęż»œœăŸl†…ƒ~|zyvv|ƒ‰‰}–„·»œœŒŒ— —ߟ»œœŒŒœŒ»œtqƒƒ|{yyz}‡kv“”ŸŽșœŒŒ —ęœșŒŒű螅mq}†„„ó†…ylm†””žŽčœŒŒęșŒ— —úœč»Œ»ŒŒć»„”‹{nojjlo|“””€¶č»»Œ»»č»— —ęŒ¶»»ûŒ»ŒŒ»»ù° —•””““”űŻ·șŒ»Œ»»ę¶»— —ęŒ”»»ïș¶Ż§ ––œžšČ·čșș»»ę”»— —úŒŽ»»ș»»șô»ș·””ŽŽ””¶čșș»ęŽș— —ù»Ž”șș»șșü»ș»čč»șù»șș¶łș— —țșČ Čțș— —ęș¶ČČû”ș——ü—żÁĆĆ꿗%—0èŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììèŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïèęÖîééôçàÔÇȚÙđđïèôæäÚÌŚßŚÖïÍôçäȚÍĐßȚÖïÉțÿÉÉțÿÉÉțÿÉÉôßâĘËÌàßĘŐïÆțÿÆÆțÿÆÆțÿÆÆôœßÖÇÈâàßÜŚïÄúÿŃùÿŃÿÿőÄÿŃùÿÿùŃÄÿÄÄôŁÛÓÁÂćăàßÛŰïÁíÿűÏÁűÁÿÁÁÿűÏÿÁÁűÁÿÁÁó ŰÎŒ»èæăáßÛÖïœíÿËœœÿœÿœœÿËœÿœœÿœÿœœíŸŰÍ»”êéæäáßÚĐÄ wïïœțÿœœńÿœÿœœÿœœÿœœÿœÿœœí ŰÍ»źëêéçäáßŰÄ wïïșțÿșșńÿșÿșșÿșșÿșșÿșÿșșíĄÙÏœŹîìêêçäâàÖ wïïčțÿččńÿčÿÿčÿččÿččÿčÿčč퀱ŁąšńïìêêçćâàÔwïïžíƒ§ą– ôòïíêêèćăàÓwïïží‰Ž­ŁŻöőòđíêêèæăàÒwïïžŰ±źŹȘ„Ł€Łą‰‰Œ‰‹‹Š¶±šŒéćâÜȚăćêéæäȚÏz””žžŠÙÀœœŸŸœŸŸ™”Ł ›‡Łž §¶Ż©š•’Ž„Œ„«žĆŚăÜÏ””žžĆțéććà­ÁŸ±œ»©ÎĐÁč°š Ž•”’„–­źŻ­ČÈÖĐàžžÄęèäććߌ€ÀœÂÇÍÜêśśëÏŽ©Ą“•˜–”‚šČł±°źŽŸàžžĂÙçćääćä°ŒŒżÆÏáŸőôêă»Șš ™””“Šˆ°Ž””ŽŽĄăžžÂțçääȚÚȘżœĂÊŐŠżĐśöêáÁ°Ą—§|~‰Šš„­ŒœżÁÄźăžžÁțçääÛăÁŒșŸÄ©çőùűśìȚȶšœ‘€€•©­žĄŃÒÎÌÏłłžžÀÀŰçäăääź”· €àïóśöőíĘÌ·Šœ··ŽŽ±±«˜ÒŚŐÖŚ””žżżțçăăàšź·¶čÆÓæíóôńçÛÏÀŽÇÎÈĂżŒșž›Îăâăăż żțæăăăŠłčżŒÄÏÚăéêèáÖËŸ»ĐÌÈĂżŒșșšÀáăăŸ œÛćăâă⊷Ș»ŒÁÊÓÚàáßÙÏĆșŒÏËÇÂż»șș™čßââăœ œÙćâăâ㣷ŽŹșŸÄËŃŐÖÓÎÇœ”ČÇÉĆÁœ»ș蘷ÜáâăœœŒŒțäââȚŠ”·žč»ŸĂÇÉËÈĂœ·±ź„ÀČ©ș»ș”čÛáâ⌌»»țäââłà”··žș»ŸÀÀœș”ČŻŻ­ĄŁ§Čșș±„ŒÜáââ»»șșțăââúÏ€łŽ”¶¶·üŽł±ŻŻòź­čș§ŻÁĘáâá»»șșőăáââá☱ČČłłČę±°ŻŻźń­Ź¶čž·ÊĘááâččșșüâáâááęÀŸ°°±°ŻòźŹȘ©š©șșȘȘ»ÔȚáá čęáàááꙩŻŻï­ŹȘš„€€„šœ¶ž”ÂÚßáá žûâáààááûѐ©­źźè­Șš„ą žžĄŠźœŁ±žÏȚßáàážž··Ùáßàááàà័ŁȘšŠ€ąĄ š™™Ÿ§­Š§źłĆÙàááßážž··ęâȚàà仗–§ŠąŸœ› €Ș„˜°ČœŚĘàáàȚà· ·ęáĘààäĘŒ„‘–ą©š§šȘ©ž“Š±±œŚÜàßààĘà· ·ęàÛààțßààßóıȘœ‘““žȘ±±üÄÚĘààęÛß· ·ăßÚàßàßàßàßßàÒż”ČČ°°±±°±±ŒŃÛȚààûßàÚß· ·ÛßÚààßßàßàßààĘÙÒÇżœ””ŒœÈÔÚÜĘààßàßàßÙà· ·úßŰàßàßßțàßßüĘÛŰŚŚđÙÛĘȚȚßàßßààßßÙß· ·üߌÚßßțàßßȚęßàßßúàßÚŚß· ·țßÖ Öțß· ·ęßÛÖÖûÚß··ü·ââććęâ·%·0ńéđńđńńđđńđđńđńđńïîíéöŐàííđțûú úóűśńçćóóòò””ńțïùùôűóìâöóòò””ńôśöđçńśńń””ńôśôòçëśśń””ńțÿțÿțÿôđőïăçśśöï””ńțÿțÿțÿúÎńëàâśśüőń”ńúÿEćÿEÿÿőÿEćÿÿćEÿù”îèÜĘűśśęôđńíÿćDćÿÿćDÿćÿűČëćÙŚùűśśęôïńíÿDÿÿÿDÿÿÿíČëäŚÒùùűűśśóçâG::•ńńțÿńÿÿÿÿÿÿú±íćŚÍùùöűśśòâG::•ńńțÿńÿÿÿÿÿÿùłïæŰËúùùśűśśńG::•ńńțÿńÿÿÿÿÿÿÿűŁÔÒÌÈûúùùűűśśđ::•ńńöŹäÛÌÇüûúúùùùűśśï:•ńńő°íæÚÔüüûûúùùúűśöî•ńńŰčÁÀŸŒž”¶””š§s”ŒŹ±±°íèĘĘôîêíïóőùùűűőì€ÂÂÄțŃĐĐÏàĐŸČZG@FZÊÊŐìćȚÍ°š˜—±čĆËÖȚíűôëÂÂèÙùűűùùűűçŃU?Jq–`őőòíæȚՄ™Ÿˆ”żËÌÎÎÓăîëśèùűßńĘ^?;;TGŽęęúńçßĂ»‰{ˆ…Œ”ÇÎÏĐÏÏŐĘśçțùűűȚùàŽ@=89VF8ęęùśëáFEMewu›žÍÏŃÓÔÓÇśæÙùűűùùóŚI?:8N>kŹęęùśìăڔ98Răęțęęúőîçá8HŁȘŻŒ_°ËéêćäçÚÚææńùűűùùáwBIDiòüüęęéúöđçàčP4@ABP~ËèíììîÜÜććÛúűűùűà Vććóöúûüęüúśôńïe05:=AEeÓçùűśść ćńùűùűùàÜ[§ńóőśùúúêűőôńœ.26:=@BKÓĘśùűűććääțùűűàáït{đòôöśűùűśóòđŻ/36:>ABBÓŰőùùűä äńùűùűűȚïâ„đńóôőööìôóđïł248ABDÒŰôśùűääăăűęàíïïđńïíń䄯ÆgBBQÒÚóśűùă ăśűùùűùîáîïïțîííìó€CBlÓȚôűűùăăââűțÓîîíțìëëőœCAšÖäöűűùâ âűûäßííîîíòìêéèççcBQŃÚîśűű âűęÎçííúìëéçćääśçMAĄÓßòśűűá âęűùűűüëËèììîëéçćâàßßáćè?oĐŐêőűűâ áűțùűűăÛËăéçæäâáàȚÜÚÛàæëȘbÎŃàòśűűùűá áęűśűűăśŰÈŚæćâßȚĘÜȚàäéäĐÆÎĐÚđöùűűśűá áęűśűűűőŚËËÖàèççôéçĘÒÉÌÎÏÙđőűűęöűá áęűśűűòśßÎÌÊÉÍĐĐÊËÌÍÎÎüßôöűűęöűá áęűőűűțùűűúìÚÒĐÏÎÎúÏÙëôöűűęőűá áęűôűűđöóëăÜÙÒÒŰÚäîôööűűęôűá áęùôű űüśôòńńęóôśśűęôűá áüűóőűűüśűśű űüőóűá áțűó óțűá áęűöóóûőűááüáűűùùúűùùűá%á0ÿüÿęęÿęű ÿțđ !ÿęß "ÿęÇ #ÿęĄ$ÿęr%ÿęG&ÿț"'ÿț (ÿț(ÿęț)ÿęę*ÿüű "ÿęđ #ÿęá$ÿțÊ%ÿț%ÿț %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿț!ÿ$ÿț*ű2@AABCE@@2(/officeÿ     ô)è(/)ü(/* œű»ž”ŻÍŻÈììŒțáÚ ÚòÙŚÔËșČčèïïíșțÙÏ ÏóÎÌÆč­čžïïíčęÙÎÏÏÎțÏÎÎÏóÎÍÊÁł”ș¶”í·țŰÎÎțÏÎÎńÏÍÍÌËĆČ°șș”í¶țŰÍÍÎìÍÎÍÎÎÍÍËËÈÁ±Żœșč”í¶țŚÍÍțÎÍÍńÌËÊÈÄż­ŹĂŸșž·íŽûŚÍÍÌÍÍÌđÍËËÈÇÀž©šÉÄżș·žíłțÖÌÌçÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»··íČțŐÌÌûËÌËÌËËÊìÇÄŒČą›ÓŃËÆÁ»·°šuíí°țÓË ËêÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶šuííŻțÓÊÊśËÊËÊËÊËÊËËëÊÉĆœŽ€”ÜŚÓÓÍÇÂœ”uííźțÓÊÊțÉÊÊțÉÊÊìÇÆżŽ€—âĘŰÓÓÎÈĂŸłuííŹüÒÉÉÊÊțÉÿÿțțęęțìüùÀ”§žéăȚÙÔÓÏÉÄżČuíí«ęĐÈÉÉúÈÉÿÿęüüęëțüùÁ·©šìêäßÚÔÓĐÊĆżłuííȘțĐÈÈüÿúÊÈÈâÎüúÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­©©ĐÈÇÈÇÇüțöÈÇÇâÈÇÉęüÁ»Ż•‰‡†‡‰Œ‘Ÿ«ŒÆœČ­­§§ÎÆÇÇûęöÇÆÇÇćÉÿüÂșŠ{wrqnu’“•”’™Ź·łŸŠŠÍÆÆęęöÆÆâÇÆÆÈÿęÂŒ~yzvtmn”–˜——•‘˜ĄŸ„„ÍÆÆĆüÆęöÆÆäÈÿęĂŸ~z š–zl•——™››š˜…Ä€€ÌÄĆĆüÄęśĆĆóÚÙŸąžšŠą„ršŸŸőĄąŁ„§’ÄŁŁËÄÄúțùÆÄĆÄÄôĂÂżŒ¶”°­|ŹČČÙłŽ±°Č––ąąÊÄĂÄĂÄÄęțűööśśÏĂśűÂż†‚łŻŠ€~°žččöž·žž™™  ÉĂĂțÿńÓÄÿțÂƆż¶‰ˆ‹żĂĂ ŸöÈÂÂĂÂĂÂĂÂĂĂÂôĂÁ»»ĂÁ»ŒÀĂÂÂțĂÂÂùĂ  ŸŸÇÂÂțÁÂÂțÁÂÂęÀÂÁÁÂțÁÂÂôÁÂÂÁŸŸžžÇÁÁûÂÁêśùùőŃÁôöÂÁ“’ż·û”ÂÁÂÁÁțÄÁÁęÀÁùùòûęÿÔÁÿęÀÀŒŒœŽÀÁűÀÁœœÄÀÀęûùÀÀꌍÀÀ›őĂÀżÀÀżżÀûûÀÀùżÀÀżÀÀżżŒđżÀżÀÀżżÀ››ššĂżŸżżüúûŸżżűÀőśżż‘‘żżŒțŸżżšûÁżŸŸżżȚùűżżŸżŸÀûüŸżŒŒżŸżŸŒŒŸŸżżŸŸżżšš˜˜ÁŸŸțœŸŸûŸńżùúŸŸŒŒŸœŸŸŒŒœŸŸęœŸ˜˜üżœŸœœïŸœùúżœœŸŸżûúœœŒŒŒęœŸœœűŸ˜˜——ż»œœóûúìććæćìûûœœŒŒ‘ŒœúŒœœŒŒ——śŸ»œœŒŒœŒûûűúűűùùúúŒŒțœŒŒűœŒŒœŒŒœŒŒ—ęœșŒŒțœŒŒęșŒ——úœč»Œ»ŒŒ»üŒ»»ŒŒț»ŒŒ»úŒ»»č»——ęŒ¶»»ûŒ»ŒŒ»»țŒ»»țŒ»»üŒ»Œ»»ę¶»——ęŒ”»»țș»»ę”»——úŒŽ»»ș»»ș»ș»ș»ęŽș——ù»Ž”șș»șșü»ș»șș»șù»șș¶łș——țșČ Čțș——ęș¶ČČś”ș———żÁĆĆûż——$—(ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïÖțîééôçàÔÇȚÙđđïÔțîééțèééòèéæäÚÌŚßŚÖïÓțîééőèééèéèèéèéèèôçäȚÍĐßȚÖïÓűíèèééèéèèțéèèóçćâĘËÌàßĘŐïŃțíè èńçæäăßÖÇÈâàßÜŚïĐțìèèțçèèæóäáÛÓÁÂćăàßÛŰïÏęìçèèçèçèđæääßŰÎŒ»èæăáßÛÖïÎțëççèçțèççêæćăȚŰÍ»”êéæäáßÚĐÄ wïïÍțëççäèçèçèçæćäàŰÍ»źëêéçäáßŰÄ wïïËûëæçæççțæççèæççććâÙÏœŹîìêêçäâàÖ wïïËțêææáçææççæçææçæćăÜĐż°ńïìêêçćâàÔwïïÉûëçæçææț‘’’‘îȚÒÀŽôòïíêêèćăàÓwïïÉțêææț‘““é’‘‘‘ȚÔĂœöőòđíêêèæăàÒwïïÇőêæćæćć揗ăææÚćæܑȚÖĆÇìèćăâăćêéæäȚÏz””ÆÆéććææć搝ćææćć⑎ߦɯ§Ł ŸŸą„«žĆŚăÜÏ””ĆĆéćć꒝ććä⏎àŰ«›–‹’šȘ­źŻ­ČÈÖĐàÄÄèäććû’ćäććœâŽàÚą›˜•’‹Œ©ŻŻČł±°źŽŸàĂĂçćääćä撜ććäćääᏎâÛŁœ»¶Ż–‹©­°°Ž””ŽŽĄăÂÂçää꒛ääđćäćĆÂáÜÄŒĂÂœą“¶șșőŒœżÁÄźăÁÁçääăû䐗áääòăäâáĘÚÔÒÎɱ ÊÏÏÍŃÒÎÌÏłłÀÀçäăääă䑐™œœ››Ò㛖àȚ«§ÓÎŹ„ĄĐŰŚŚŰŚŐÖŚ””żżçăăäę‘éÍ⏏áä­­àŰ°°ČàäăăäăâăăżżțæăăóáăććăăäćäăăäăăŸœúćăâăâăățâăățâăăâăùâăăâăâăăâțăœœöćâăâăăââÖŃŃőĘâÒÒăăÄÄàĘĂĂțĆââùăœœŒŒäââęăâŃŃĐîÏÜâÏĐââÀÀßÚÁÀÁÁâăâ⌻țäââüáĐŃââüáâáââęÀÁââ»șțăââĐúáâáâáââáâÀáęâáââőá»»șșăáââáââĐțâááîâÒŃáâĂĂáâááÀÀáâáâááśâččșșâáâááŃáïâááâĐĐâáÀÀáâááÀÀááčęáàááüàĐĐááöàááŃĐááÀÀááÀáțàáážûâáààááńŃĐàáààááĐĐáàÀÁÀÀáêàáàáàážž··áßàááààáĐĐÔÖÖúÔĐĐààÀÀęÄĂÀÀüàáàááśßážž··âȚààĐŃĐàțáààûáàȚà··ęáĘààțßààűßàßààĘà··ęàÛààțßààúßàßàßààțßààțßà àęÛß··èßÚàßàßàßàßßàßàßßàßßààßàßßàûßàÚß··îßÚààßßàßàßààßßàßßààßàűßàßàßÙà··úßŰàßàßßțàß ßțàßßöàßßààßßÙß··üߌÚßßțàßßțàßßúàßÚŚß··țßÖ Öțß··ęßÛÖÖśÚß···ââććûâ··$·(ńéđńđńńđđńđđńđńđńïîíéöŐàííđțûú úóűśńçćóóòò””ńïùôűóìâöóòò””ńïțúùùțűù ùôśöđçńśńń””ńîțúùùüűùűùùűśőôòçëśśń””ńîțúù ùűôöőïăçśśöï””ńíțúù ùśűśőôńëàâśśüőń”ńíțúùùțűùùțűùùűűôóîèÜĘűśśęôđńìțúùùűùțűùùőűśôòëćÙŚùűśśęôïńëțúùùűùțűùùśìôòëäŚÒùùűűśśóçâG::•ńńìțúùùțűùùűöùűööńíćŚÍùùöűśśòâG::•ńńêțúùùțűùùüűùűùùűùôïæŰËúùùśűśśńG::•ńńëöùűùűűùùűùűűùśśőïçÚÌûúùùűűśśđ::•ńńêęúűùù$ï*,,+()(+ńèÛĐüûúúùùùűśśï:•ńńéțùűűù$í*//.+*)*-ńëȚŚüüûûúùùúűśöî•ńńéőúűűùűűù$8ńűűőùâ+)òêßĘőóńńńóőùùűűőì€ÂÂèèúùùűę'Gùùöń)%ôìâÏÇÄÁÁÈĂĆËÖȚíűôëÂÂèèùűűùùűű,Gűùùűűùò$%ôíßÓÌĆÂÁÁÈÈËÌÎÎÓăîëśèèùùűűę,Fűűùćń$$őïȚŐÎÈÄÂÂÉÊËÎÏĐÏÏŐĘśççùűűùû,EùűùùÜűń$$őđȚŚŚŃÌĆÂÈÉËÍÏŃÓÔÓÇśææùűűùùűű+BùùăűùűŹŠöńçßÜÛŚĐÍÔÓŐŐŚŚÙÛßÖśææúűűšùűù'8òűùűűùűùűöòđëèäáßÛćæçèéêćäçÚÚææùűűùùűù*'=EEBBÌśA9śóäßêéßßĘêíîîííììîÜÜććúűűùűùű&'('$$őÁö$%űűîíśőîîűûùűśśććűùűùűùűùűűùűööűúúùùúûùűűőùűùűűććääùűűéùűùűűùűùùűűùśűűùùűűùűùűűúùűùùűääüùűùűűęSđčö+&űű20ìÏ&%&5ùűűûùűűùääùűùë šőűűæÄűűśùűùűääăăűűûùűűűûùűűùűűțùűűûùùűűțùăăìűùùűùűűùùűùùűùűűùűűùùűűùűűűùűùăăââűűûűùűűńő' űű+)űùűűùűűûùűűùââűûűùűűđô űűűűùùűűùùűâűńùùűùűőűùűűęűűáâęűùűűüđűűűòűűęűűțùűűâáűțùűűóIb`^`Hűűę-+űęùűááęűśűűőű űúùűűśűááęűśűűęöűááęűśű űțùű űțùűűęöűááęűőűűțùűűęőűááęűôűűęôűááęùôűűțùűűęôűááüűóőűűüőóűááțűó óțűááęűöóóśőűáááűűùùűűùùűáá$á(țÿÿüÿęęÿęű ÿțđ ÿęß ÿęÇ ÿęĄ ÿęrÿęGÿț"ÿț ÿțÿęț ÿęę!ÿüű"ÿęđ#ÿûáÿ#ÿüÊÿ$ÿęÿ$ÿę ÿ$ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿę!ÿ$ÿś*2@AABCE@@20/pdfÿ     Ă=N0/=b0/=rțĘììœű»ž”ŻÍŻÈììțĘììŒțáÚ ÚòÙŚÔËșČčèïïíțĘììęșÙÏ ÏóÎÌÆč­čžïïíțĘììóŐÍÊÁł”ș¶”íĘôÌËĆČ°șș”íÛțÜÛÛțúÛÛțúÛÛńÜÛÛĆÈÁ±Żœșč”íŰÙûŰÙŰŰÙÙŰùÙúŰÙúÙŰŰÙóŰ„Äż­ŹĂŸșž·íŚúŚúüŚúŚúúŚôŽÀž©šÉÄżș·žíŐțÖŐŐțúŐŐőúŐúÖŐúúÖŐúŐŐńÖՋœł€ąĐÊĆÀ»··íëÓÒÒÓÓÒțÓÒÓțÓùÓÓÒùÓÒùÓÓìҊŒČą›ÓŃËÆÁ»·°šuííëÓÒÒÓÓÒùÓÒÓùÓùÓÓÒùÓÒùÓÓìҋœ±ą–ÖÓÒÌÇÁŒ¶šuííŃùŃśùŃŃùùŃŃùŃŃí‹œŽ€”ÜŚÓÓÍÇÂœ”uííÏĐüùĐĐÏÏöĐùùĐùĐĐùÏĐĐëÏЋżŽ€—âĘŰÓÓÎÈĂŸłuííÎüÏÎÿÎÎÏÎțÍÎÎéÍÏÎϋÀ”§žéăȚÙÔÓÏÉÄżČuííÍțÌÍÍțÌÍ ÍìȋÁ·©šìêäßÚÔÓĐÊĆżłuííÍśÌÍ̓›”’ŽŒ ŒéŽŒÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­áÍÍśÌ͍Ș€Ł€ŁŁ€Łæ€ŁšŻžÄ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­áÍÍţ̦§ęÎÆÇÇțÆÇÇèÔÖÓÊș±Šœ–’’“•”’™Ź·łáÍÍŠțÍÆ ÆćÇÆÆŐŐĐÍŒłȘ ˜–““””–˜——•‘˜ĄÄÍÍ„țÍÆÆĆÆŐöÒÍŸ”­ąš–”••—ű™››š˜…șÍÍ€ęÌÄĆĆțÄĆĆôÔŐÓÉŸž°šŠą ŸŸűĄąŁ„§’©ÍÍŁțËÄÄțĆÄÄòÒÖÔĆżșČŹ«§«ȘŻźźöŻ±ź°Č–ÂÍÍąąâÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂÌÖÔÂżș”¶ł«°źłČłłűČŽ”¶™ÂÍ  țÉĂ ĂóÄĂĆÖÓÂżŒ·č¶·¶¶čžùș·ž”——ŸŸöÈÂÂĂÂĂÂĂÂĂĂÂśÖŐÁżœčč”ččę»șččžü虙ŸŸțÇÂÂțÁÂÂțÁÂÂőŐÖÁÁœ»čž»șžž·ùž·č蘘žžțÇÁÁțÂÁÁÂôÁÌŐŐŃÀÀŸŸ»œŒŒőœ»»șč·¶Ž““țÄÁÁțÀÁÁăÀÁÀÁÀÓÓÒŐÀÀżÀŸÀżŸŸœœŒœŒșž·••œœțÄÀ ÀűĆŐÍĂŐÒÀżżôÀżżŸœŒŒčž““››öĂÀżÀÀżżÀżÀÀśŃÔÀÀÏŐÌÀżżőŸżŸżŸŒ»č””ššüĂżŸżżùŸżżÁŐÏżżüÓŐÌżżțŸżżŸûœ»––ššûÁżŸŸżżäŸżżŸĐÔÁżżŸżÓŐÓżżŸÀżŸŸżżŸœŸŸ˜ ˜țÁŸŸțœŸŸüÀÔĐŸŸúÂÉÓŐÔŐŐőÔÓĐÁŸŸœœ——˜˜üżœŸœœóŸœœŸœœĐÔÀŸÉŃÔÔśŐÔÎÉËÎÓÒœœüŸ˜˜——ęż»œœőÁÔÒŃÔÔÓÍÇÁœœóĆÒÔÔÓÒÓÓœœŒŒ— —œœŒŒœŒŒœŸÓÔÔĐÆŸŒŒțœŒŒűœżÉŃÒŃĂŒŒ —ęœșŒŒûËÓÔÊŒŒțœŒŒęșŒ— —śœč»Œ»ŒŒÂÓÓűŃŒ»»Œ»»ŒŒț»ŒŒ»úŒ»»č»— —ęŒ¶»»öŒĆÔÓÎÓŸ»Œ»»țŒ»»üŒ»Œ»»ę¶»— —ęŒ”»»ùÂÔÓÄÔÉ»»țș»»ę”»— —őŒŽ»»șÓÔĆÓÎșș»ș»ș»ęŽș— —ö»Ž”șœÔŃÓÏșșü»ș»șș»șù»șș¶łș— —țșČČûłÏÎĂČČțș— —ęș¶ČČû”ș——ü—żÁĆĆ꿗%—0țx§§ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììțx§§ŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïțx§§ęÖîééôçàÔÇȚÙđđïțx§§ó±æäÚÌŚßŚÖïțwvvțwvvțwv vđwvwwçäȚÍĐßȚÖïsțíssțíssôßâĘËÌàßĘŐïënonoonnonnonnoonínnínnńonnœßÖÇÈâàßÜŚïjìśkjjììjìjììjôŁÛÓÁÂćăàßÛŰïęgfggńìggfìgìgfììggìggńhg ŰÎŒ»èæăáßÛÖïbțębbüębëbbùëcbëbcbbíŸŰÍ»”êéæäáßÚĐÄ wïïbțëbbüëbëbbùëcbëbcbbí ŰÍ»źëêéçäáßŰÄ wïï_ț^__ë_Țë^^ëë__ë__^_^_^ĄÙÏœŹîìêêçäâàÖ wïïö\]]\[]ë\]\\ëú]ë\\ë\\ê]\\ąÜĐż°ńïìêêçćâàÔwïï[úYZYÿZ[[ûZ[[Z[[éZ[[ZĄȚÒÀŽôòïíêêèćăàÓwïïYúXYXYXYYìiĄȚÔĂœöőòđíêêèæăàÒwïïYïXYXYXY›±­©ŠŁŁ€ŁŁ€€æŁ€Ł™˜ȚÖĆÇìèćăâăćêéæäȚÏz”áYYîXYXYXŠŠÀœœŸŸœŸŸœœŸŸœè˜loËŚÉ°§ŁĄ Ÿą„«žĆŚăÜÏ”áYYûXYXYĆĆțéć ćè†y~ŠŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐáYYüXYXÄÄęèäććûäććäććè~€‘—ÚĐĆșČźŹŹ­ŻŻČł±°źŽŸÙYYęXYĂĂæçćääćäćääććäćää}‰ąÛÓÇŒ¶Ż­­°űŽ””ŽŽĄĐYYțXÂÂțçä äóćä…{”ÜŐÌĂÂœșșűŒœżÁÄźșYYÁțçääăäțăääóxyŃĘŚÏÈÈÂÈÇËËÍűÊÌÏłËYYÀÀùçäăääăääęăäăăç±wzàȚÙÓŐŃÈÌËŃŃÏÏĐĐÒÓÔ”ËYżżțçăăäęăäăăőÚw€áàÚŐŰÔŐÔÔőŰŚÖŚÙŐŚÔ””żżțæă ăôwyáàĘÙŰÔÙŰŚÚÚśÙŰŰŚŚŰ””œœúćăâăâăățâăăæâăâwwßàßÜÙŚÚÙÙŚŰŰŚÖŰÖŰÙ””œœçćâăâăăââăââăăââ„xvâàßĘÜĘĘÜöÛÚÙÙŚŐÔ±±ŒŒțäââțăââăâ肃‰wàááàßáààßßàȚĘÜÚÙŚČČ»»țäââțáââűÉwžÒw‡âááàßùȚĘÚÙČČșșțăââôáâáâˆ|Țâ—v„ââáàțáßßûĘÙłłșșúăáââáââáńâááŰx”áâáwŁáâááöâáâàßȚȚ””șșüâáâááïâxŚááâ߁vÜááȚȚááàüß··ččęáàááàáüŚyŒááüÍ«~vvûz€Ńááüà··žžûâáààááćŒyŚÛź‡wvvwyxvx‘«ą”z‚àáàážž··śáßàááààáààőÏw‚„vw}•ČÎààńș‚vw}‚~{ááßážž··ęâȚààöáàÖ{vy‹”ĘààòáààÒ§‡}ƒĆáàȚà· ·ęáĘààúߝywĄààțßààűßàßààĘà· ·ęàÛààößàÇ{z|‚àßààțßààțßà àęÛß· ·èßÚàßàß·v}xÒßàßßàßßààßàßßàûßàÚß· ·îßÚààßÂvyčwŠàßßàßßààßàűßàßàßÙà· ·ôßŰàßàyv·xŒàß ßțàßßöàßßààßßÙß· ·öߌÚßÒvƒyŠß ßțàßßúàßÚŚß· ·țßÖÖûÔ}ĄÖÖțß· ·ęßÛÖÖûÚß··ü·ââććęâ·%·0ț(hhńéđńđńńđđńđđńđńđńïîíéöŐàííț(hhđțûú úóűśńçćóóòò””ńț(hhțïùùôűóìâöóòò””ńț(hhó‘śöđçńśńń””ń&'ń&''&'&''&'&'&'&&đ'&''śôòçëśśń””ń$țä$$țä$$ôđőïăçśśöï””ńû ț ì ă ă Îńëàâśśüőń”ńâôââââăâù”îèÜĘűśśęôđńțâőâââââűČëćÙŚùűśśęôïńűûûáûááíČëäŚÒùùűűśśóçâG::•ńńűáááûááú±íćŚÍùùöűśśòâG::•ńńáśááááűłïæŰËúùùśűśśńG::•ńńț  țáö áá á á  űŽïçÚÌûúùùűűśśđ::•ńń Ę ÿ ŽńèÛĐüûúúùùùűśśï:•ńńú  ü  ù  ô,ŽńëȚŚüüûûúùùúűśöî•ńńú  ô¶ÁŸ»ž””¶”¶¶””¶ś€„òêßĘőóńńïóőùùűűőì€Âë  ÄțŃĐĐÏęĐÏĐĐö’IGÒìâÏÇÄÁÁíĂĆËÖȚíűôëÂë èèÓùűűùùűűùűűùùűűùYDN•íæÚÒËÈÆÆÈÈËÌÎÎÓăîëë èèù űùăKOozïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘè ççțùűűùûűùùűùùăűKQ`‰đéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇă ææúùűűùùűűùóűùWGO­ńêăÜÛŚÔÔòÓŐŐŚŚÙÛßÖŚ ææțúűűÛùűùűűùűùűűùkBEÛòíçßßÛßßăâăäćæáäçÚè ææùùűűùùűùùòűŁ@EśóîèëçàćâççśæçééëÜè ććùúűűùűùűűùèé@OűôńëíêìëêëííììđìíêÛÛććűùűùűùűùűűùűô@DöőòïïìïïíïïîûíîÜÜääțùűűßùűùűűùűùùöA@òśôóđíđđïïîîííîîđïÜÜääüùűùű űèD@iśööôòôóòòóòńđđîììŰŰääùűùűțùűűôTUaAőűööśööőőśôóôńđîÚÚăăűțùűűóùÎA…ÜA]űśűśśööśśöőôóńđÚÚăăäűùùűùűűùűűùűùù_Ińűy@‘űùűűùűśśöûóòÛÛââűűùűùűèCrűűúOAŒűùűűțùűűöüőȚȚââűéùűűùűlDæűùűőR@Sîùùòóűűùùśüöààââ űùûçEeùűűüŚ›N@@ûFPiÜűűüśààââęűùűűêfDçíĄ]B@@BEC@Do›‹sGUùűűâ áűțùűűőÛBUYAALv§Śűűó¶TABMUNIűűùűá áęűśűűśùçH@Ddźóűűőà–^MVÊűűśűá áęűśűűúöƒEB‹űűęöűá áęűśűűúÍHHKUűűțùű űțùűűęöűá áęűőűűűùČ@LnDßűűęőűá áęűôűűùĆ@EŽC”űűęôűá áęùôűűúF@ČDgű űțùűűęôűá áöűóőűâ@WEdűűüőóűá áțűóóûîOT‘óóțűá áęűöóóûőűááüáűűùùúűùùűá%á0ÿüÿęęÿęű ț±ÿÿțđ !ÿęß "ÿęÇ #ÿęĄ$ÿęr%ÿęG&ÿț"'ÿț (ÿț(ÿęț)ÿęęțÚÿ(ÿüű "ÿęđ #ÿęá$ÿęÊ%ÿț%ÿț%ÿț %ÿț%ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿț!ÿ$ÿț*ű2@AABCE@@20/rtfÿ     ‘ R0/RŁ0/Rłț…°°œű»ž”ŻÍŻÈììț…°°ŒțáÚ ÚòÙŚÔËșČčèïïíț…°°ęșÙÏ ÏóÎÌÆč­čžïïíț…°°óšÍÊÁł”ș¶”í„ôÌËĆČ°șș”í €țę˜â€€ôĆÈÁ±Żœșč”í |țí||ęá•||ô„Äż­ŹĂŸșž·íyűí“àŐííyííyôŽÀž©šÉÄżș·žívúìßvvìvvțìvvó‹œł€ąĐÊĆÀ»··ísúߎssìssțìssír”Ž†ÓŃËÆÁ»·°šuíípțëppțëppțëppí‹œ±ą–ÖÓÒÌÇÁŒ¶šuíípțëppțëppțëppí‹œŽ€”ÜŚÓÓÍÇÂœ”uííoțëooëoțëooír–‡ŠâĘŰÓÓÎÈĂŸłuííoí‹À”§žéăȚÙÔÓÏÉÄżČuííoìs‹Á·©šìêäßÚÔÓĐÊĆżłuííoúƒ›”’Žrrsrêq•‹šȚÙŐÓŃÏÏÒŃËÆżČv­­ooûȘ€Ł€ŁŁ€Łț€ŁŁêŹÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­oo§ęÎÆÇÇțÆÇÇêĆÂș±Šœ–’’“•”’™Ź·łŸooŠțÍÆÆ —ê–ÂŒłȘ ˜–““””–˜——•‘˜ĄŸoo„țÍÆÆĆ ÆöÄĂŸ”­ąš–”••—ű™››š˜…Äoo€ęÌÄĆĆțÄĆĆöĂŸž°šŠą ŸŸűĄąŁ„§’ÄooŁțËÄÄțĆÄÄôĂÂżŒ¶”°­°ŻłČČöłŽ±°Č––ooąąûÊÄĂÄÌ ÌôËÊÇÂŒżżž»»żÁÁù·žž™™o  țÉĂ ĂțÄĂĂ Ă  ŸöÈÂÂĂÂĂÂĂÂĂĂÂęĂÁÂÂüĂÂÂĂĂÂțĂÂÂüĂ  ŸŸțÇÂÂŽüŽŽŽțŽŽÂțÁÂÂśÁÂÂÁŸŸžžțÇÁÁțÂÁÁÂÁțÂÁÁțÂÁÁüÂÁÂÁÁ țÄÁÁțÀÁÁíÀÁÀÁÀÀÁÁÀÀÁÀÁÀÁÀÁÁÀÀÁûÀÁœœțÄÀÀŠő‰Š‰Š‰ŠŠ‰‰ŠÀÀțÁÀÀ ›öĂÀżÀÀżżÀżÀÀùżÀÀżÀÀżżÀőżÀżÀÀżżÀ››ššüĂżŸżżțŸżżțŸżż šûÁżŸŸżżùŸżżŸżŸżżöŸżżŸżŸżŸżŸŸżŸżš ˜țÁŸŸăŸęœŸ˜ ˜üżœŸœœûŸœœŸœœŸęœŸœœśŸœŸœœŸœŸœœüŸ˜˜——ęż»œœțŒœœúŒœœŒŒ— —űŸ»œœ‚‚‚‚‚ő‚‚œŒŒœŒŒœŒŒ —ęœșŒŒțœŒŒęșŒ— —úœč»Œ»ŒŒ»üŒ»»ŒŒț»ŒŒ»úŒ»»č»— —śŒ¶»»‹ŒŒ‹ŒŒ‹úŒ‹‹Œ»»üŒ»Œ»»ę¶»— —ęŒ”»»țș»»ę”»— —úŒŽ»»ș»»ș»ș»ș»ęŽș— —ù»Ž”șș»șșü»ș»șș»șù»șș¶łș— —țșČ Čțș— —ęș¶ČČû”ș——ü—żÁĆĆ꿗%—0ț­ŚŚŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììț­ŚŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïț­ŚŚęÖîééôçàÔÇȚÙđđïț­ŚŚóÊæäÚÌŚßŚÖïț­ŹŹó­çäȚÍĐßȚÖï ©țó©©ęșë©©ôßâĘËÌàßĘŐï „țó„„ę궄„ôœßÖÇÈâàßÜŚïąűòŽéâòòąòòąôŁÛÓÁÂćăàßÛŰïŸúò韟òŸŸțòŸŸó ŰÎŒ»èæăáßÛÖïœúèŻœœńœœțńœœíŠ±« ©êéæäáßÚĐÄ wïïšțńššțńššțńšší ŰÍ»źëêéçäáßŰÄ wïïšțńššțńššțńššíĄÙÏœŹîìêêçäâàÖ wïï™țń™™ń™țń™™íŠŽ­ąŁńïìêêçćâàÔwïï™íĄȚÒÀŽôòïíêêèćăàÓwïï™ì›ĄȚÔĂœöőòđíêêèæăàÒwïï™Ű›±­©ŠŠ‹‹ŠŠ‹Š‹Š‹Š‹‹‰”Ź§șèćâăâăćêéæäȚÏz””™™ŠőÀœœŸŸœŸŸœœŸŸœéŸÆߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””™™ĆțéććêăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐà™™Äűèäćć””¶””¶”¶êŽàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸà™™ĂòçćääćäćääććäćääöćăâÛÓÇŒ¶Ż­­°űŽ””ŽŽĄă™™Âțçä äóćäćäâáÜŐÌĂÂœșșűŒœżÁÄźă™™ÁțçääăäțăääóăäâáĘÚÔÒÎÉÍÍÏÏöŃÒÎÌÏłł™™ÀÀûçäăä‹ ‹ôŠ‰‡„‚‚€ƒ„„ùŐÖŚ””™żżțçăăäęăäăăúáäăăäăăśäăăäăâăăż żțæăățáăățäăăŸ œöćăâăźźŹŹźŹŹûźŹŹ«źźŹûăâăâăăâțăœ œòćâăâăăââăââăăââăâûăâăăââüăœœŒŒțäââțăââăâöăââăâăââăâ⌠»țäââę©š© ©â» șțăââúáâáâáââáâáęâáââüá»»șșúăáââáââáțâááöâáâáâáâáâááüâáâááüâččșșüâáâááűâááâááâááțâá á čûáàááŽŽá žûâáààááàáàțáààáțàááśàáàáàážž··śáßàááààáààśáààááààáààęáàááûßážž··űâȚààąĄĄąąĄąúĄąąĄąààûáàȚà· ·ęáĘààțßààűßàßààĘà· ·ęàÛààțßààúßàßàßààțßààțßà àęÛß· ·ûßÚàßž žùżßààßàßßàûßàÚß· ·îßÚààßßàßàßààßßàßßààßàűßàßàßÙà· ·úßŰàßàßßțàß ßțàßßöàßßààßßÙß· ·üߌÚßßțàßßțàßßúàßÚŚß· ·țßÖ Öțß· ·ęßÛÖÖûÚß··ü·ââććęâ·%·0țëśśńéđńđńńđđńđđńđńđńïîíéöŐàííțëśśđțûú úóűśńçćóóòò””ńțëśśțïùùôűóìâöóòò””ńțëśśóòśöđçńśńń””ńëôśôòçëśśń””ń êțüêêęîúêêôđőïăçśśöï””ń éțüééęúíééúÎńëàâśśüőń”ńèűüìúűüüèüüèù”îèÜĘűśśęôđńçúüùççüççțüççűČëćÙŚùűśśęôïńçúùìççüççțüççíŸÌÇÂÈùùűűśśóçâG::•ńńæțüææțüææțüææú±íćŚÍùùöűśśòâG::•ńńæțüææțüææțüææùłïæŰËúùùśűśśńG::•ńńæțüææüæțüææű ÎÉĂÂûúùùűűśśđ::•ńńæöŽńèÛĐüûúúùùùűśśï:•ńńæôߎńëȚŚüüûûúùùúűśöî•ńńæú¶ÁŸ»ž   êŸÏÊÄÓòđîńńóőùùűűőì€ÂÂææÄțŃĐĐÏęĐÏĐĐÏűÛôìâÏÇÄÁÁôĂĆËÖȚíűôëÂÂææèÙùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîëśææèùűĐțÏĐĐțÏĐĐÏëőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘśææçțùűűùûűùùűùùűéùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśææúùűűùùűűùțűùùöùńêăÜÛŚÔÔőÓŐŐŚŚÙÛßÖśææțúűűĘùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚææûùűűùi iühgfeețfggìûîÜÜæććùúűűùűùűűùùűùùűűùűűûùűűùűűûùűśść ćűùűùűùűùűűùűțöűűùęűùűűűùűùűűććääțùűű ÈțÇÈÈûűùűùűűúùűùùűä äüùűùűűùűțùűűûùűűùä äùűùűțùűűűùűűùűűùűűùùűùűääăăű Ćűțùűűùűțùă ăìűùùűùűűùűűùűùùűùűűùűűúùűűùùűűúùűùăăââűüùűùűűüùűùűűțùűűûùűűùâ âűûùűűùűűüùűùűűùűùű âű>űá âęűùűűțùűűțùűűțùűűâ áűțùűűęùűá áûűśűűŸŸűúùűűśűá áęűśűűęöűá áęűśű űțùű űțùűűęöűá áûűőűűT Tț7űűęőűá áęűôűűęôűá áęùôűűțùűűęôűá áüűóőűűüőóűá áțűó óțűá áęűöóóûőűááüáűűùùúűùùűá%á0ÿüÿęęÿęű ț”ÿÿțđ !ÿęß "ÿęÇ #ÿęĄ$ÿęr%ÿęG&ÿț"'ÿț (ÿț(ÿęț)ÿęęțÚÿ(ÿüű "ÿęđ #ÿęá$ÿțÊ%ÿț%ÿț %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿț!ÿ$ÿț*ű2@AABCE@@20/txtÿ     É dV0/dj0/dzț…°°œű»ž”ŻÍŻÈììț…°°ŒțáÚ ÚòÙŚÔËșČčèïïíț…°°ęșÙÏ ÏóÎÌÆč­čžïïíț…°°óšÍÊÁł”ș¶”í„ôÌËĆČ°șș”í€țț退ôšš‘€œș·”í|țí||țé||ô„Äż­ŹĂŸșž·íyóïííyí’yyééâíyyôŽÀž©šÉÄżș·žívőívvßÜvçvvór•Žˆ–ĐÊĆÀ»··ísőìssŽŽÏŁssçssíŠŒČą›ÓŃËÆÁ»·°šuíípțìppúÎĄppçppí‹œ±ą–ÖÓÒÌÇÁŒ¶šuíípőìpp‹Ț‹Ț‹pçppír•††ÜŚÓÓÍÇÂœ”uííoìöoì‹ooȚoæìoo틿Ž€—âĘŰÓÓÎÈĂŸłuííoí‹À”§žéăȚÙÔÓÏÉÄżČuííoìpr•‰›ìêäßÚÔÓĐÊĆżłuííoúƒ›”’ŽŒ Œê‹ÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ooûȘ€Ł€ŁŁ€Łț€ŁŁêŹÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­oo§ûÎÆÇǗ—ęǗ˜˜—ê–”șŠ…€zyvvwyz}~’™Ź·łŸooŠțÍÆ ÆțÇÆÆêĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸoo„țÍÆÆĆ ÆöÄĂŸ”­ąš–”••—ű™››š˜…Äoo€śÌÄĆƓ””“””țƔ”ś“’Š…|zzőŸ{|}ąŁ„§’ÄooŁțËÄÄțĆÄÄôĂÂżŒ¶”°­°ŻłČČöłŽ±°Č––ooąąâÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žččűž·žž™™o  țÉĂĂ‘đБ‘‘‘‘ù‘‘‘Ă  ŸöÈÂÂĂÂĂÂĂÂĂĂÂęĂÁÂÂüĂÂÂĂĂÂțĂÂÂüĂ  ŸŸțÇÂÂțÁÂÂțÁÂÂęÀÂÁÁÂțÁÂÂśÁÂÂÁŸŸžžțÇÁÁ ŒțÁŒ ŒüÁŒŒÁÁ țÄÁÁțÀÁÁíÀÁÀÁÀÀÁÁÀÀÁÀÁÀÁÀÁÁÀÀÁûÀÁœœțÄÀÀțÁÀÀ ›ûĂÀżÀ‰‰țˆ‰‰üˆ‰ż‰‰ùÀżżÀ››ššüĂżŸżżțŸżżțŸżż šûÁżŸŸżżùŸżżŸżŸżżöŸżżŸżŸżŸżŸŸżŸżš ˜țÁŸŸ†ü…†Ÿ††ț…††űŸ…†…††…††ù…†ŸŸœŸ˜ ˜üżœŸœœûŸœœŸœœŸęœŸœœśŸœŸœœŸœŸœœüŸ˜˜——ęż»œœțŒœœúŒœœŒŒ— —ûŸ»œœƒƒű„ƒƒŒƒƒœƒƒ„ƒț„ƒƒü„ƒƒŒŒ —ęœșŒŒțœŒŒęșŒ— —úœč»Œ»ŒŒ»üŒ»»ŒŒț»ŒŒ»úŒ»»č»— —úŒ¶»»‚û»‚»ę‚»ę¶»— —ęŒ”»»țș»»ę”»— —úŒŽ»»ș»»ș»ș»ș»ęŽș— —ù»Ž”șș»șșü»ș»șș»șù»șș¶łș— —țșČ Čțș— —ęș¶ČČû”ș——ü—żÁĆĆ꿗%—0ț­ŚŚŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììț­ŚŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïț­ŚŚęÖîééôçàÔÇȚÙđđïț­ŚŚóÊæäÚÌŚßŚÖïț­ŹŹó­çäȚÍĐßȚÖï©țô©©țđ©©ô·»¶źÁàßÜŐï„țó„„țđ„„ôœßÖÇÈâàßÜŚïąóôóóąóŽąąïïëóąąôŁÛÓÁÂćăàßÛŰïŸőòŸŸ±é±æ±ŸïŸŸó‰±ȘąŻèæăáßÛÖïœőńœœŻŻĘŸœœïœœíŸŰÍ»”êéæäáßÚĐÄ wïïšțńššúĘœššíšší ŰÍ»źëêéçäáßŰÄ wïïšőńšš­ç­ç­šíšší‰Č©ĄŸîìêêçäâàÖ wïï™ńö™ńŹ™™ç™íń™™íąÜĐż°ńïìêêçćâàÔwïï™íĄȚÒÀŽôòïíêêèćăàÓwïï™ì—‰łŹŁ±öőòđíêêèæăàÒwïï™ő›±­©ŠŁŁ€ŁŁ€€æŁ€Ł€ĄȚÖĆÇìèćăâăćêéæäȚÏz””™™ŠőÀœœŸŸœŸŸœœŸŸœéŸÆߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””™™Ćțéćć¶û”¶ć”¶¶ű”±Ű§ ™“‘ö“—™­ČÈÖĐà™™ÄęèäććûäććäććêâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸà™™ĂòçćääćäćääććäćääöćăâÛÓÇŒ¶Ż­­°űŽ””ŽŽĄă™™ÂțçääłóćłČłČŻ­§Ą›š—••őș••˜œżÁÄźă™™ÁțçääăäțăääóăäâáĘÚÔÒÎÉÍÍÏÏöŃÒÎÌÏłł™™ÀÀùçäăääăääęăäăăçäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””™żżțçăăźę䯟źŻźû­źŻźŻŻęźŻźźúŻăâăăż żțæăățáăățäăăŸ œúćăâăâăățâăățâăăâăùâăăâăâăăâțăœ œûćâăâ««Źò«ŹŹ«â««Ź«ŹŹ««ŹŹû«â«ŹââüăœœŒŒțäââțăââăâöăââăâăââăâ⌠»țäââțáââüáâáââ» șțăââ šț©ššô©š©â©š©šš©šââüá»»șșúăáââáââáțâááöâáâáâáâáâááüâáâááüâččșșüâáâááűâááâááâááțâá á čúáàáá„ŠŠțà„„Š„Šțá„„śŠ„Š„„Š„Šáá žûâáààááàáàțáààáțàááśàáàáàážž··śáßàááààáààśáààááààáààęáàááûßážž··ûâȚààąąúáąąàĄąąțĄąąûáàȚà· ·ęáĘààțßààűßàßààĘà· ·ęàÛààțßààúßàßàßààțßààțßà àęÛß· ·ûßÚàß  țß  ęßà  ûßàÚß· ·îßÚààßßàßàßààßßàßßààßàűßàßàßÙà· ·úßŰàßàßßțàß ßțàßßöàßßààßßÙß· ·üߌÚßßțàßßțàßßúàßÚŚß· ·țßÖ Öțß· ·ęßÛÖÖûÚß··ü·ââććęâ·%·0țëśśńéđńđńńđđńđđńđńđńïîíéöŐàííțëśśđțûú úóűśńçćóóòò””ńțëśśțïùùôűóìâöóòò””ńțëśśóòśöđçńśńń””ńëôśôòçëśśń””ńêțüêêțüêêôÏÔĐÌȚśśőï””ńéțüééțûééúÎńëàâśśüőń”ńèüöèüìèèûûúüèèù”îèÜĘűśśęôđńçőüççëùëùëçûççűŸÌÆĂÍùűśśęôïńçőüççëëśïççûççíČëäŚÒùùűűśśóçâG::•ńńæțüææúśïææûææú±íćŚÍùùöűśśòâG::•ńńæőüææêùêùêæûææùŸÍÈÁżúùùśűśśńG::•ńńæüöæüêææùæûüææűŽïçÚÌûúùùűűśśđ::•ńńæöŽńèÛĐüûúúùùùűśśï:•ńńæôܟÎÊÄÌüüûûúùùúűśöî•ńńæô¶ÁŸ»ž””¶”¶¶””¶ś”ŽòêßĘőóńńôóőùùűűőì€ÂÂææÄțŃĐĐÏęĐÏĐĐÏűÛôìâÏÇÄÁÁôĂĆËÖȚíűôëÂÂææèûùűűùÏÏțűÏÏĐÏêÎÌíÄœčŽ±°±±ł”žșÎÓăîëśææèù űùèűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘśææçțùűűùûűùùűùùűéùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśææńùűűùÌÍÍÌÍÍÌÌÍűÌÌëÊÇÂœ··ŽŽłłÓ””·ŚÙÛßÖśææțúűűĘùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚææùùűűùùűùùæűùùśśóîèëëćéçëíîîííììîÜÜæććûúűűùÊÊțűÊÊțÉÊ Êûùűśść ćűùűùűùűùűűùűțöűűùęűùűűűùűùűűććääțùűűéùűùűűùűùùűűùśűűùùűűùűùűűúùűùùűä äôùűùűÇÆÇÇÆÆÇÆÆęÇűÆÆńÇÆÇÆÆÇÆűÆÆùűűùä äùűùűțùűűűùűűùűűùűűùùűùűääăăűțùűűûùűűùűűțùűűùűțùă ăûűùùűÄÄùĂÄÄĂÄĂÄÄțűÄÄöĂÄÄűùűùăăââűüùűùűűüùűùűűțùűűûùűűùâ âűûùűűùűűüùűùűűùűùű âűÁïűÂÂÁÁÂÁÂÁÂÁÂűÂÂÁÂÂÁțÂűűá âęűùűűțùűűțùűűțùűűâ áűțùűűęùűá áûűśűűÀÀżùÀżűÀżűżżÀżÀżűęśűá áęűśűűęöűá áęűśű űțùű űțùűűęöűá áűűőűűœœŒœœûűœœŒœœûŒœűűœœűęőűá áęűôűűęôűá áęùôűűțùűűęôűá áüűóőűűüőóűá áțűó óțűá áęűöóóûőűááüáűűùùúűùùűá%á0ÿüÿęęÿęű ț”ÿÿțđ !ÿęß "ÿęÇ #ÿęĄ$ÿęr%ÿęG&ÿț"'ÿț (ÿț(ÿęț)ÿęęțÚÿ(ÿüű "ÿęđ #ÿęá$ÿțÊ%ÿț%ÿț %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿț!ÿ$ÿț*ű2@AABCE@@200videoÿ     _ vÙ00ví00vęœű»ž”ŻÍŻÈìì ŒțáÚ ÚòÙŚÔËșČčèïïí șțÙÏ ÏóÎÌÆč­čžïïí čęÙÎÏÏÎțÏÎÎÏóÎÍÊÁł”ș¶”í ·țŰÎÎțÏÎÎńÏÍÍÌËĆČ°șș”í ¶țŰÍÍÎìÍÎÍÎÎÍÍËËÈÁ±Żœșč”í ¶țŚÍÍțÎÍÍńÌËÊÈÄż­ŹĂŸșž·í ŽûŚÍÍÌÍÍÌđÍËËÈÇÀž©šÉÄżș·ží łțÖÌÌçÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»··í ČțŐÌÌûËÌËÌËËÊìÇÄŒČą›ÓŃËÆÁ»·°šuíí °țÓË ËêÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶šuíí ŻțÓÊÊśËÊËÊËÊËÊËËëÊÉĆœŽ€”ÜŚÓÓÍÇÂœ”uíí źțÓÊÊțÉÊÊțÉÊÊìÇÆżŽ€—âĘŰÓÓÎÈĂŸłuíí ŹüÒÉÉÊÊÉțÊÉÉìÈÆÀ”§žéăȚÙÔÓÏÉÄżČuíí«ęĐÈÉÉțÈÉÉțÈÉÉÈìÇĆÁ·©šìêäßÚÔÓĐÊĆżłuííȘțĐÈÈêĆÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­©ûĐÈÇÈÇÇÈÇțÈÇÇêĆÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­§ęÎÆÇÇțÆÇÇêĆÂș±Šœ–’’“•”’™Ź·łŸț»ŠŠțÍÆ ÆțÇÆÆêĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸ»„țÍÆÆĆ ÆöÄĂŸ”­ąš–”••—ű™››š˜…Ä»€ęÌÄĆĆțÄĆĆöĂŸž°šŠą ŸŸűĄąŁ„§’Ļꛏ©©țȘÄÄôĂÂżŒ¶”°­°ŻłČČűłŽ±°Č–– »í©ÄÄĂĂÄÂÂżș”¶·°ŽČ·žččśž·žž™™==VV ŠVû=©ĂÄĂĂ Ă <VűFHHGHHGHHűIV”Ă<”ČÂÂęĂÁÂÂüĂÂÂĂĂÂțĂÂψ ;;TSTŠ ŠùT”Â;”„ÂÂęÀÂÁÁÂțÁÂÂíÁÂÂÁŸŸ;;TST„€€„€„„ś€TST;”ŠÂÁÁțÂÁÁțÂÁÁüÂÁÂÁÁ:üSRRŁ ŁRìS:”„ÁÀÀÁÁÀÀÁÀÁÀÁÀÁÁÀÀÁöÀÁ99SRRĄ ĄùR”À9”„À ÀțÁÀÀ›8OęPžŸŸțžŸŸžùP”À8”„ÀÀùżÀÀżÀÀżżÀđżÀżÀÀżżÀ››88OOPœœœôœœœPOO8”„ż żțŸżżš7üNMNš šśNMN7”€żŸżżöŸżżŸżŸżŸżŸŸżŸżš6üNMM˜ ˜ùM”Ÿ6”€ŸŸțœŸŸțœŸŸòœŸ˜˜44JIK—––—––ț—––őK”Ÿ4”€ŸŸœŸœœśŸœŸœœŸœŸœœśŸ˜˜33JIIL LIûJ3”€œ œțŒœœöŒœœŒŒ——33HH Hû3”€ŒœœŒțœŒŒűœŒŒœŒŒœŒŒ—1HûFŽŽŽŽőŽŽF”Œ1”€ŒŒțœŒŒőșŒ——00DDE‹ŒŒț‹ŒŒò‹ŒE”Œ0”€»»Œ»»ŒŒț»ŒŒ»óŒ»»č»——..DDC‰‰ńŠ‰‰ŠŠ‰‰CDD.”ŁŒ»»țŒ»»üŒ»Œ»»ù¶»——--BB‡ț†‡‡ę†‡BBü-”Ł» »țș»»ô”»——--BBA„…„„ț…„„ùA”ș-”Ł»»ș»ș»ôŽș——++>>?‚‚‚‚‚‚?”ș+”Łș»ș»șș»șő»șș¶łș——**>>ț€>ü*” ČČúș——))==}~û}~}~}}ț~==ü)” ČČö”ș——))==;> >ù;”Ć)”„ĆĆśż—''!!:~ ~û:——'——! k!ț&I ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔìì ŚęòïîîúïîîïïîîòíìèàĐÌÙìđđï ÖțîééôçàÔÇȚÙđđï ÔțîééțèééòèéæäÚÌŚßŚÖï ÓțîééőèééèéèèéèéèèôçäȚÍĐßȚÖï ÓűíèèééèéèèțéèèóçćâĘËÌàßĘŐï Ńțíè èńçæäăßÖÇÈâàßÜŚï ĐțìèèțçèèæóäáÛÓÁÂćăàßÛŰï ÏęìçèèçèçèđæääßŰÎŒ»èæăáßÛÖï ÎțëççèçțèççêæćăȚŰÍ»”êéæäáßÚĐÄ wïï ÍțëççäèçèçèçæćäàŰÍ»źëêéçäáßŰÄ wïï ËûëæçæççțæççèæççććâÙÏœŹîìêêçäâàÖ wïï ËțêææáçææççæçææçæćăÜĐż°ńïìêêçćâàÔwïï ÉûëçæçææççæçææćâȚÒÀŽôòïíêêèćăàÓwïï™Éțêæ æìäâȚÔĂœöőòđíêêèæăàÒwïï™ÇöêæćæććæććæææćæćæâȚÖĆÇìèćăâăćêéæäȚÏz””™™Æőéććææćææććææćéæâߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””™™ĆțéććêăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐà™™țàÄÄęèäććûäććäććêâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸà™™àĂòçćääćäćääććäćääöćăâÛÓÇŒ¶Ż­­°űŽ””ŽŽĄă™™àÂțçä äóćäćäâáÜŐÌĂÂœșșűŒœżÁÄźă™™àę¶ÆĆ ĆäóăäâáĘÚÔÒÎÉÍÍÏÏűŃÒÎÌÏłł™™ à™țĆăăæäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””EEii ÎięEĆăăúáäăăäăăîäăăäăâăăżżDDiihXVWWűXh­ăD­ÏăățáăățäăăŸCețfÎ Îűf­ăC­ÁâăăâăùâăăâăâăăâúăœœAAeeÍúÌÍÍÌÍeeüA­Âââăâûăâăăââúăœœ@@ccËțÌËËüÌËÌccü@­ÂââöăââăâăââăââŒ?cûbÉÉÊÉÉțÊÉÉőb­â?­Ââáâáââ»>^ę`ÈÇÇțÈÇÇöÈ`­â>­Áâáââáâáęâáââúá»»==^^ĆțÄĆĆțÄĆĆ^ń=­Áááâáâáâáâáâááüâáâááőâčč<<\\]ÂÂĂĂó]\\<­Âááâááâááțâá áč:\țZÁÁÀÁôÀÁÁÀZ­à:­Áàááțàááž9WțXżżțÀżżóX­á9­Áàááààáààáțàááőàáàáàážž88WW ZWô8­Ááààááààáààęáàááùßážž77UU žUû7­ÁáààțáààôáàȚà··66UUR··ț¶··¶ű·R­à6­ÁààțßààíßàßààĘà··44MNP”Ž”Ž””śŽP­ß4­Áßààțßààțßà àòÛß··22MNNłłČČłłêȳȳČNNM2­ÁàßßàßßààßàßßàńßàÚß··11KLL°±±°°LśK1­ÁßàßßààßàńßàßàßÙà··//KLIźź­źùI­ß/­ÁßßțàßßïàßßààßßÙß··..EEH««őŹ««ŹH­ß.­ÁßßțàßßöàßÚŚß··,,EE©țȘ©©Eü,­œÖÖśß··++BCB§§šò§šš§š§§BCB+­œÖÖöÚß··**BCAD DùA­ć*­Áććśâ·))""?š šû?··)··" ‘"ț'I ńéđńđńńđđńđđńđńđńïîíéöŐàíí đțûú úóűśńçćóóòò””ń ïùôűóìâöóòò””ń ïțúùùțűù ùôśöđçńśńń””ń îțúùùüűùűùùűśőôòçëśśń””ń îțúù ùűôöőïăçśśöï””ń íțúù ùśűśőôńëàâśśüőń”ń íțúùùțűùùțűùùűűôóîèÜĘűśśęôđń ìțúùùűùțűùùőűśôòëćÙŚùűśśęôïń ëțúùùűùțűùùśìôòëäŚÒùùűűśśóçâG::•ńń ìțúùùțűùùűöùűööńíćŚÍùùöűśśòâG::•ńń êțúùùțűùùüűùűùùűùôïæŰËúùùśűśśńG::•ńń ëöùűùűűùùűùűűùśśőïçÚÌûúùùűűśśđ::•ńń êęúűùùűęùűùùőűőńèÛĐüûúúùùùűśśï:•ńń™éțùűűùüűùűùùôűöńëȚŚüüûûúùùúűśöî•ńń™éőúűűùűűùűùùűűùśűöòêßĘőóńńôóőùùűűőì€Â™™èțúùùűęùűùùűűśôìâÏÇÄÁÁôĂĆËÖȚíűôë™™èÙùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăî붙™țśèèù űùèűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘś™™śçțùűűùûűùùűùùűéùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇś™™śæúùűűùùűűùțűùùöùńêăÜÛŚÔÔőÓŐŐŚŚÙÛßÖś™™śęÖßȚ ȚűçùűùűöòđëèäáääçæçèéêćäçÚڙ™ ś™âȚùùűùùśśóîèëëćéçëíîîííììîÜÜFFjj őjęFȚùùùűùùűűùűűûùűűùűűòùűśśććDDjjiSPQQPțQPPśRiÉűDÉçùűűțöűűùęűùűűóùűùűűććCCffhő őêhÉűCÉÚùùűűùśűűùùűűùűùűűöùűùùűääCCffùőôőôőőôôőțôffüCÉÛűűùűțùűűôùűűùääAAedeôôțőôôùedeAÉÛűűűùűűùűűùűűòùűùűää@@edcóóôôòóôôcÉű@ÉÛùűűùűűțùűűùűöùăă>>__aôóóîôóôóóaÉű>ÉÜùűùűűùűűúùűűùùűűűùűùăă==__üóòòóóüòóòóó_ü=ÉÛűűüùűùűűțùűűòùűűùââ<<\]]òòóóęòóòò]ö\<ÉÛűűùűùűűùűùűâ:û\]ZńòòțńòòöZÉű:ÉÛùűùűűțùűűá9WțXńńüòńòńńűòXÉű9ÉÛűűțùűűțùűűțùűűâ8W [Wü8ÉÛűűùùűáá77UU ïUü7ÉÛűűíùűűśűáá66UUSïïîîïîïïùSÉű6ÉÛűűööűáá55NOQî îöQÉű5ÉÛűűùű űțùűűôöűáá33NONíîííüîíîííùNON3ÉÛűűùőűáá11LLìíìțíLLü1ÉÛűűöôűáá//LLJììüëìëììùJÉű/ÉÛűűțùűűïôűáá..EEHêêëëêëêëëêùHÉű.ÉÛűűűőóűáá--EE êEü-ÉÙóóńűáá++DCCééêéêêééêCûD+ÉÙóóöőűáá**DCAD DùAÉù*ÉÚùùôűùùűá((!!?é éû?áá(áá! Ő!ț(IÿüÿęęÿęűÿțđÿęßÿęÇÿęĄÿęrÿęGÿț"ÿț ÿț ÿęț ÿęę !ÿüű "ÿęđ #ÿęá$ÿțÊ%ÿț%ÿț %ÿ %ÿ-ÿ-ÿüÿÿ)ÿüÿÿ)ÿ-ÿ-ÿüÿÿ)ÿüÿÿ)ÿ-ÿ-ÿüÿÿ)ÿüÿÿ)ÿ-ÿ-ÿüÿÿ)ÿüÿÿ)ÿ-ÿ-ÿüÿÿ)ÿüÿÿ)ÿ-ÿ-ÿüÿÿ)ÿüÿÿ)ÿę*ÿÿ@2ù@AABCE@ @ț2,0audioÿ     - Œ‚,0Œ–,0ŒŠœű»ž”ŻÍŻÈììŒțáÚ ÚòÙŚÔËșČčèïïíșțÙÏ ÏóÎÌÆč­čžïïíčęÙÎÏÏÎțÏÎÎÏóÎÍÊÁł”ș¶”í·țŰÎÎțÏÎÎńÏÍÍÌËĆČ°șș”í¶țŰÍÍÎìÍÎÍÎÎÍÍËËÈÁ±Żœșč”í¶țŚÍÍțÎÍÍńÌËÊÈÄż­ŹĂŸșž·íŽûŚÍÍÌÍÍÌđÍËËÈÇÀž©šÉÄżș·žíłțÖÌÌçÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»··íČțŐÌÌûËÌËÌËËÊìÇÄŒČą›ÓŃËÆÁ»·°šuíí°țÓË ËêÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶šuííŻțÓÊÊśËÊËÊËÊËÊËËëÊÉĆœŽ€”ÜŚÓÓÍÇÂœ”uííźțÓÊÊțÉÊÊțÉÊÊìÇÆżŽ€—âĘŰÓÓÎÈĂŸłuííŹüÒÉÉÊÊÉțÊÉÉìÈÆÀ”§žéăȚÙÔÓÏÉÄżČuíí«ęĐÈÉÉțÈÉÉțÈÉÉÈìÇĆÁ·©šìêäßÚÔÓĐÊĆżłuííȘțĐÈÈêĆÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­©©ûĐÈÇÈÇÇÈÇțÈÇÇêĆÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­§§ęÎÆÇÇțÆÇÇêĆÂș±Šœ–’’“•”’™Ź·łŸŠŠțÍÆ ÆțÇÆÆêĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸ„„țÍÆÆĆ ÆöÄĂŸ”­ąš–”••—ű™››š˜…Ä€€ęÌÄĆĆțÄĆĆöĂŸž°šŠą ŸŸűĄąŁ„§’ÄŁŁțËÄÄüpu€ÄÄțĆÄÄôĂÂżŒ¶”°­°ŻłČČűłŽ±°Č––ąąâÊÄĂÄpż~ĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žččùž·žž™™  țÉĂĂùpłxŸ­±ĂĂțÄĂĂ Ă ŸőÈÂÂĂpž…ŹŻĂĂÂęĂÁÂÂüĂÂÂĂĂÂțĂÂÂüĂ  ŸŸțÇÂÂśpž™xœ­ÂÁÂÂęÀÂÁÁÂțÁÂÂśÁÂÂÁŸŸžžțÇÁÁőp—š{Œ·ÁÂÂÁÁțÂÁÁțÂÁÁüÂÁÂÁÁțÄÁÁçp——›ˆžÀÁÀÀÁÁÀÀÁÀÁÀÁÀÁÁÀÀÁûÀÁœœțÄÀÀęp——ûž™±À ÀțÁÀÀ›ùĂÀżÀpœ——ò§ÂšƒŹżÀżÀÀżÀÀżżÀőżÀżÀÀżżÀ››ššïĂżŸżpœxĄ»À„ȘŸż żțŸżżšäÁżŸŸpœvv‰čœÀÀ™…ŹŸżŸżżŸżŸżŸżŸŸżŸżš˜țÁŸŸńp›{—~|±œœż‚—ŹœŸŸțœŸŸțœŸŸęœŸ˜˜íżœŸœp›{™™Šv«»Żšw§źœœśŸœŸœœŸœŸœœüŸ˜˜——ìż»œœpš{š§Ÿšv©›—†š¶œœțŒœœúŒœœŒŒ——韻œœpš{šš«Ž›v”•€§š»ŒœŒŒűœŒŒœŒŒœŒŒ—p—ëœșŒŒpš{ššȘŒ·|‰…~ąš”ŒŒțœŒŒûșŒ——ppèvp—œč»Œp—{ššȘŒŒ·u„}…šŻŒŒț»ŒŒ»űŒ»»č»——ppèvp~uutrp–zšš©»»žt‚u“œ§Ź»»üŒ»Œ»»û¶»——ppèv{•Ź©’ŽŽz™§©»»ąxz‚˜ §Č»»țș»»ö”»——ppt–ÈÊÊêȉ‹ˆw™§šșș~xsĄ—„§č»șș»»ș»űŽș——ptšÊÊțș„„òu˜Ššș§tt–Ą›Š«șș»șô»șș¶łș——tłÊÊíəƒw“ Ą±zq‹ •Ÿ °ČČäș——r‚™ÉÊÊ”‚€‚w‡’  “pŒ œœ ­ČČä”ș——q€Š˜€‚ƒ{zŸŻšr•±ŻšŻșĆĆúż—s{€€öxu€ˆŠzˆ‘‹‹ț——ópry‚~yraę0pötrqrpX#ę0ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïÖțîééôçàÔÇȚÙđđïÔțîééțèééòèéæäÚÌŚßŚÖïÓțîééőèééèéèèéèéèèôçäȚÍĐßȚÖïÓűíèèééèéèèțéèèóçćâĘËÌàßĘŐïŃțíè èńçæäăßÖÇÈâàßÜŚïĐțìèèțçèèæóäáÛÓÁÂćăàßÛŰïÏęìçèèçèçèđæääßŰÎŒ»èæăáßÛÖïÎțëççèçțèççêæćăȚŰÍ»”êéæäáßÚĐÄ wïïÍțëççäèçèçèçæćäàŰÍ»źëêéçäáßŰÄ wïïËûëæçæççțæççèæççććâÙÏœŹîìêêçäâàÖ wïïËțêææáçææççæçææçæćăÜĐż°ńïìêêçćâàÔwïïÉûëçæçææççæçææćâȚÒÀŽôòïíêêèćăàÓwïïÉțêæ æìäâȚÔĂœöőòđíêêèæăàÒwïïÇöêæćæććæććæææćæćæâȚÖĆÇìèćăâăćêéæäȚÏz””ÆÆőéććææćææććææćéæâߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””ĆĆțéććêăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàÄÄęèäććûäććäććêâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàĂĂòçćääćäćääććäćääöćăâÛÓÇŒ¶Ż­­°űŽ””ŽŽĄăÂÂțçä äóćäćäâáÜŐÌĂÂœșșűŒœżÁÄźăÁÁțçääúŁš°äăääóăäâáĘÚÔÒÎÉÍÍÏÏűŃÒÎÌÏłłÀÀűçäăäŁëŻääęăäăăèäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””żżțçăăùŁâȘčÉÎăăúáäăăäăăśäăăäăâăăżżțæăăùŁÓ¶±ÉÌăățáăățäăăŸœőćăâăŁÒÎȘŸÊăățâăăâăùâăăâăâăăâțăœœòćâăâŁÒÏÍ­¶ÖăăââăâûăâăăââüăœœŒŒțäâ✣ÒÏÏĐč°Úââöăââăâăââăâ⌻țäââęŁÒÏÏśÔDZŃâáâáââ»șțăââęŁÒÏÏùÛïÇČÌàââáâáęâáââüá»»șșçăáââŁŃŹÆŚêîđË°ÉááâáâáâáâááüâáâááüâččșșìâáâáŁŃššœéìîîÆČÊàáâááțâá áčôáàááŁŃŹČ«ŻâììûłŒËàá áțàáážìâáààŁŃŹ””Ż©ĘêáÍȘÆÎáààáțàááśàáàáàážž··êáßàáŁŃŹ¶Æșœ©ÛÒÏž¶ÈŰàáààęáàááûßážž··ëâȚààŁĐŹ”ÈÉÖŸȘÌÍżȘÆÈßààțáààùáàȚà··ŁŁ·êáĘààŁĐŹ”ÇÉàÚč±»·ȘÀÇŚßààößàßààĘà··ŁŁćȘŁ·àÛààŁÏŹ”ÇÉàßÚš”°ŹșÆĐààßà àûÛß··ŁŁćȘŁźš©§„ŁÎŹŽÇÉßàĘŠČš±žÆÎàßàßßàùßàÚß··ŁŁçȘŻÉȚĘÌÉÇÇŹŽÇÉààËȘ«°łŸÇÔàßßàńßàßàßÙà··ŁŁšÉőööíäÆÇĂȘŽÆÉà߯šŠÂŽÄÆÜßßțàßßńàßßààßßÙß··ŁšÎööîêÂÂÁ©ŽÆÉßĐŠ§»ÀžÆÌßßțàßßőàßÚŚß··šžćööíőÒÀ»©ŻżÁÖ«€”ż±œÀÔÖÖäß··ŠÁÓőööđÎÁÁ­ȘźżÀŸŁžż»șżÏÖÖäÚß··„ÁÀÇŃËÁÀÁ”Ș¶čËÇ„ÁÎËĂËŚććùâ·š¶ÁÀÀđÁż°Š›šŁ§§ŻŻ§Š§ź··óŁŠłŸÁÀ»ČŠ ęFŁöȘ§„„€€2 ęFńéđńđńńđđńđđńđńđńïîíéöŐàííđțûú úóűśńçćóóòò””ńïùôűóìâöóòò””ńïțúùùțűù ùôśöđçńśńń””ńîțúùùüűùűùùűśőôòçëśśń””ńîțúù ùűôöőïăçśśöï””ńíțúù ùśűśőôńëàâśśüőń”ńíțúùùțűùùțűùùűűôóîèÜĘűśśęôđńìțúùùűùțűùùőűśôòëćÙŚùűśśęôïńëțúùùűùțűùùśìôòëäŚÒùùűűśśóçâG::•ńńìțúùùțűùùűöùűööńíćŚÍùùöűśśòâG::•ńńêțúùùțűùùüűùűùùűùôïæŰËúùùśűśśńG::•ńńëöùűùűűùùűùűűùśśőïçÚÌûúùùűűśśđ::•ńńêęúűùùűęùűùùőűőńèÛĐüûúúùùùűśśï:•ńńéțùűűùüűùűùùôűöńëȚŚüüûûúùùúűśöî•ńńéőúűűùűűùűùùűűùśűöòêßĘőóńńôóőùùűűőì€ÂÂèèțúùùűęùűùùűűśôìâÏÇÄÁÁôĂĆËÖȚíűôëÂÂèèÙùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîëśèèù űùèűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘśççțùűűùûűùùűùùűéùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśææúùűűùùűűùțűùùöùńêăÜÛŚÔÔőÓŐŐŚŚÙÛßÖśææțúűűĘ!=űűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚææűùűűù`1ùùçűùùśśóîèëëćéçëíîîííììîÜÜććôúűűùa)ÊĘáűùùùűùùűűùűűûùűűùűűûùűśśććńùűùű;E„Ęàűűùùűűțöűűùęűùűűűùűùűűććääțùűűç99)©Ęűùűùùűűùśűűùùűűùűùűűúùűùùűääôùűùű6J-lëűűùűțùűűûùűűùääùűś56E>êűűűùűűùűűùűűùùűùűääăăűę3ś#b9áùűűùűűțùűűùűțùăăùűùùű0ő"Fl;Ûśùűűùűűúùűűùùűűúùűùăăââűó.5:@t=Űśűűüùűùűűțùűűûùűűùââűń,&%48:C`Ràśùűűùűùűâűï*/żI088N8àśűùűűáâíűùűű(/ÉɁ.5*A)Őäűűțùűűțùűűțùűűâáűîùű&/ÊÜĐȘ,<‘Ęïű űęùűááëűśűű#/ÊĘàíźC`ÜȚśű űűùűűśűáááëűśűű!/ÊĘàűńƒBIUŐĘîű űûöűááèáűśűű.ÊĘàűűń$M9xÏĘçűűțùűűûöűááûFï.ÊĘàűűï$X%”ÎĘäű űûőűááè#-&.ÊĘàűű­3BOÈÓĘëű űöôűáá#BDDí0(ÊĘàűűFG"ÉÈÛĘőűűțùűűűôűáá!DDî8 ÊĘàűÀ,&ąÖÍĘäű űśőóűáá2DDíC +ÆÙÛń9 zÙÈŚÚđóóäűááCDD> ŒĆÙڎsÙÔÓÙëóóäőűáá  3ÇËȚĆ wáȚÖȚëù ùśűùùűá  ń.°șĆĆP’ÖËÊËÔááó ę űę ÿüÿęęÿęűÿțđÿęßÿęÇÿęĄ ÿęr ÿęG ÿț" ÿț ÿț ÿęț ÿęę!ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿțBÿ$ÿüÛțÿ$ÿę3ùÿ&ÿüùÿ'ÿęžÿ(ÿęűÿ(ÿęûÿ(ÿęÚÿ(ÿü*'ùÿÿüę±H@@ę^J@@ô2’ôüúëšJ .0 applicationÿ     —ą{.0ą.0ąŸœű»ž”ŻÍŻÈììŒțáÚ ÚòÙŚÔËșČčèïïíșțÙÏ ÏóÎÌÆč­čžïïíčęÙÎÏÏÎțÏÎÎÏóÎÍÊÁł”ș¶”í·țŰÎÎțÏÎÎńÏÍÍÌËĆČ°șș”í¶țŰÍÍÎìÍÎÍÎÎÍÍËËÈÁ±Żœșč”í¶țŚÍÍțÎÍÍńÌËÊÈÄż­ŹĂŸșž·íŽûŚÍÍÌÍÍÌđÍËËÈÇÀž©šÉÄżș·žíłțÖÌÌçÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»··íČțŐÌÌûËÌËÌËËÊìÇÄŒČą›ÓŃËÆÁ»·°šuíí°țÓË ËêÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶šuííŻțÓÊÊśËÊËÊËÊËÊËËëÊÉĆœŽ€”ÜŚÓÓÍÇÂœ”uííźțÓÊÊțÉÊÊțÉÊÊìÇÆżŽ€—âĘŰÓÓÎÈĂŸłuííŹüÒÉÉÊÊÉțÊÉÉìÈÆÀ”§žéăȚÙÔÓÏÉÄżČuíí«ęĐÈÉÉțÈÉÉțÈÉÉÈìÇĆÁ·©šìêäßÚÔÓĐÊĆżłuííȘțĐÈÈêĆÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­©©ûĐÈÇÈÇÇÈÇțÈÇÇêĆÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­§§ęÎÆÇÇțÆÇÇêĆÂș±Šœ–’’“•”’™Ź·łŸŠŠțÍÆ ÆțÇÆÆêĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸ„„țÍÆÆĆ ÆöÄĂŸ”­ąš–”••—ö™››š˜…Ävv€€ęÌÄĆĆțÄĆĆöĂŸž°šŠą ŸŸűĄąŁ„§’ÄvvŁțËÄÄțĆÄÄôĂÂżŒ¶”°­°ŻłČČűłŽ±°Č––vvąâÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žččùž·žž™™vv țÉĂ ĂțÄĂĂ Ă vŸöÈÂÂĂÂĂÂĂÂĂĂÂęĂÁÂÂüĂÂÂĂĂÂțĂÂÂüĂ  vvęŸÇÂÂțÁÂÂțÁÂÂęÀÂÁÁÂțÁÂÂśÁÂÂÁŸŸvvÁțÂÁÁüÂÁÂÁÁvæőv”ŹÀÁÀÁÀÁÁÀÀÁùÀÁvvąąüv”žÀÀțÁÀÀ›vúąBAA@??ü>==<<;:ù9ąv”žÀżżÀîżÀżÀÀżżÀ››vvąUeedccûbaa`__û^]]\[[úGąv”żżțŸżżšvőąQb}{a`__^]]ù\[[ZYYXXôDąv”ŸżŸżŸżŸŸżŸżšváąM_y}x]\[[ZZYYXWWVSKHH,ąv”ŸŸœŸŸțœŸŸçœŸ˜˜vvąI\[v}uYXXWWVUTKC:66ńąv”œŸœŸœœŸœŸœœôŸ˜˜vvąFXt}srrùUTSNC866úąv”œœțŒœœđŒœœŒŒ——vvąBU}qp}}üQG=66ùąv”œŒŒűœŒŒœŒŒœŒŒ—vüą?RQQûnjb86 6úąv”ŒŒțœŒŒòșŒ——vvą;ONNI=6 6śąv”ŒŒ»ŒŒ»ńŒ»»č»——vvą7LG=66úąv”»»üŒ»Œ»»ö¶»——vvą0<66úąv”»»țș»»ś”»——vvą66űąv”șș»»ș»śŽș——vvą66ùąv”œș»»șó»șș¶łș——vvą66úąv”›Č Čűș——vvą66úąv”›Č Čű”ș——vvąûąv”ŸĆ Ćűż—vvææŚŚüæÁv——v@ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïÖțîééôçàÔÇȚÙđđïÔțîééțèééòèéæäÚÌŚßŚÖïÓțîééőèééèéèèéèéèèôçäȚÍĐßȚÖïÓűíèèééèéèèțéèèóçćâĘËÌàßĘŐïŃțíè èńçæäăßÖÇÈâàßÜŚïĐțìèèțçèèæóäáÛÓÁÂćăàßÛŰïÏęìçèèçèçèđæääßŰÎŒ»èæăáßÛÖïÎțëççèçțèççêæćăȚŰÍ»”êéæäáßÚĐÄ wïïÍțëççäèçèçèçæćäàŰÍ»źëêéçäáßŰÄ wïïËûëæçæççțæççèæççććâÙÏœŹîìêêçäâàÖ wïïËțêææáçææççæçææçæćăÜĐż°ńïìêêçćâàÔwïïÉûëçæçææççæçææćâȚÒÀŽôòïíêêèćăàÓwïïÉțêæ æìäâȚÔĂœöőòđíêêèæăàÒwïïÇöêæćæććæććæææćæćæâȚÖĆÇìèćăâăćêéæäȚÏz””ÆÆőéććææćææććææćéæâߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””ĆĆțéććêăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàÄÄęèäććûäććäććêâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàĂĂòçćääćäćääććäćääöćăâÛÓÇŒ¶Ż­­°öŽ””ŽŽĄăÂÂțçä äóćäćäâáÜŐÌĂÂœșșűŒœżÁÄźăÁțçääăäțăääóăäâáĘÚÔÒÎÉÍÍÏÏűŃÒÎÌÏłłÀùçäăääăääęăäăăèäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””żțçăăäęăäăăúáäăăäăăőäăăäăâăăżżżțæăățáăățäăăŸùœćăâăâăățâăățâăăâăùâăăâăâăăâüăœœțăââûăâăăââúăœœòòó­ÉăââăâăââăââŒźü­čâ â»ûźHGGFFEüDCCBBA@ú?ź­žââáęâáââÜá»»ź\nmmllkkjihhggffeddccNź­žâáâááüâáâááçâččźXkä‹ihhgffeeddcbaa``śJź­žááâá áčäźTgˆäˆeddcbbaa`__^ZROO1ź­žááțàáážíźPdc…ä„a``__^]\RJ@<<ö"ź­žàááàááïàáàáàážžźL`ƒä‚\û[UI><<ú"ź­žààęáàááóßážžźH]ä€ääüXNC<<ś"ź­žààáààíáàȚà··źEZYXX}yo>< <ú"ź­žààíßàßààĘà··źAVUUPC< <ű"ź­žàßà àôÛß··ź=SNC<<ű"ź­žßàßßàôßàÚß··ź5B<<ú"ź­žßßàòßàßàßÙà··ź"<<ś"ź­žßßàßßđàßßààßßÙß··ź"<<ś"ź­žßßàßßôàßÚŚß··ź"<<ú"ź­¶Ö Öűß··ź"<<ú"ź­¶Ö ÖűÚß··ź""ûź­čć ćűâ·òòááüòÍ··@ńéđńđńńđđńđđńđńđńïîíéöŐàííđțûú úóűśńçćóóòò””ńïùôűóìâöóòò””ńïțúùùțűù ùôśöđçńśńń””ńîțúùùüűùűùùűśőôòçëśśń””ńîțúù ùűôöőïăçśśöï””ńíțúù ùśűśőôńëàâśśüőń”ńíțúùùțűùùțűùùűűôóîèÜĘűśśęôđńìțúùùűùțűùùőűśôòëćÙŚùűśśęôïńëțúùùűùțűùùśìôòëäŚÒùùűűśśóçâG::•ńńìțúùùțűùùűöùűööńíćŚÍùùöűśśòâG::•ńńêțúùùțűùùüűùűùùűùôïæŰËúùùśűśśńG::•ńńëöùűùűűùùűùűűùśśőïçÚÌûúùùűűśśđ::•ńńêęúűùùűęùűùùőűőńèÛĐüûúúùùùűśśï:•ńńéțùűűùüűùűùùôűöńëȚŚüüûûúùùúűśöî•ńńéőúűűùűűùűùùűűùśűöòêßĘőóńńôóőùùűűőì€ÂÂèèțúùùűęùűùùűűśôìâÏÇÄÁÁôĂĆËÖȚíűôëÂÂèèÙùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîëśèèù űùèűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘśççțùűűùûűùùűùùűçùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇś||ææúùűűùùűűùțűùùöùńêăÜÛŚÔÔőÓŐŐŚŚÙÛßÖś||æțúűűĘùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚ||æùùűűùùűùùçűùùśśóîèëëćéçëíîîííììîÜÜ||ćùúűűùűùűűùùűùùűűùűűûùűűùűűùùűśśćć||ćűùűùűùűùűűùűțöűűùęűùűűűùűùűűćć||ęäùűűéùűùűűùűùùűűùśűűùùűűùűùűűűùűùùűää||űùűțùűűśùűűùää||đđù|Éâűűùűűśùűùűää||­­ú|ÉÓűùűűùűóùăă||­HGGFEEDDCBțA@@ô?­|ÉÓűùűűùùűűóùűùăă||­\nnmllúkjiihggńfeedccM­|ÉÓùűùűűțùűűìùűűùââ||­Xk!jiihggfeeúdcbba``úJ­|ÉÓűűùűùűâ|ő­Tgh!geedcbbńa``_^[SPP1­|ÉÓű űá|ś­Pece!da``ű_^^\SKA==ű"­|ÉÓűùűűțùűűțùűűâ|ù­L`c!baaù]\\VJ?==ú"­|ÉÓű űóùűáá||­H^!``!!üYOD==ú"­|ÉÓűűóùűűśűáá||­DZYYû\XP?= =ú"­|ÉÓű űòöűáá||­@WVVPD= =ú"­|ÉÓűűțùűűôöűáá||­??ęFăű űúùűűśűá áęűśűűú°‰N>?>>țȘűűęöűá áęűśűű?>țxű űțùűűęöűá áęűőűűûùű??>>ęwóűűęőűá áęűôűűț?>>üEôűűęôűá áęùôűűú>?`áű űțùűűęôűá áüűóőűűęăôűűüőóűá áțűó óțűá áęűöóóûőűááüáűűùùúűùùűá%á0ÿüÿęęÿęű ț±ÿÿțđ !ÿęß "ÿęÇ #ÿęĄ$ÿęr%ÿęG&ÿț"'ÿț (ÿț(ÿęț)ÿęęțÚÿ(ÿüű "ÿęđ #ÿęá$ÿțÊ%ÿț%ÿț %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿ %ÿț!ÿ$ÿț*ű2@AABCE@@2.0rarÿ     ±#Ë,.0Ë@.0ËPțŁÁÁœű»ž”ŻÍŻÈììțŁÁÁŒțáÚ ÚòÙŚÔËșČčèïïíțŁÁÁęșÙÏ ÏóÎÌÆč­čžïïíțŁÁÁóčÍÊÁł”ș¶”íąŁùąŁąŁŁąŁŁęąŁąąŁóąÌËĆČ°șș”í ôÆÈÁ±Żœșč”íțžžęžžôšÄż­ŹĂŸșž·íšòńšèš­èńńš›ńšńššô“Àž©šÉÄżș·ží˜úń珘瘘úń—ńńŹ˜˜óœł€ąĐÊĆÀ»··í•ęđ©••űæòòđ•đ©••íŒČą›ÓŃËÆÁ»·°šuíí•”•ú𔕔æ••ûđ•đ•””ê•”•œ±ą–ÖÓÒÌÇÁŒ¶šuíí’“ę’đ’’ű撓đđ’đ’’퐜Ž€”ÜŚÓÓÍÇÂœ”uíí‘ô𑒒Šæđ‘đ‘đ‘‘ì’‘żŽ€—âĘŰÓÓÎÈĂŸłuíí ț ì’‘À”§žéăȚÙÔÓÏÉÄżČuíí ț ì’Á·©šìêäßÚÔÓĐÊĆżłuííù‰ ›™—”’ ’êÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­û­§Š§ŠŠ§Šț§ŠŠêźÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­§ęÎÆÇÇțÆÇÇêĆÂș±Šœ–’’“•”’™Ź·łŸŠțÍÆ ÆțÇÆÆêĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸ„țÍÆÆĆ ÆöÄĂŸ”­ąš–”••—ö™››š˜…А€€ęÌÄĆĆțÄĆĆöĂŸž°šŠą ŸŸűĄąŁ„§’ÄÌÌŁțËÄÄțĆÄÄôĂÂżŒ¶”°­°ŻłČČűłŽ±°Č––ÌÌąâÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žččùž·žž™™ÌÌ țÉĂ ĂțÄĂĂ Ă ̟öÈÂÂĂÂĂÂĂÂĂĂÂęĂÁÂÂüĂÂÂĂĂÂțĂÂÂüĂ  ÌÌęŸÇÂÂțÁÂÂțÁÂÂęÀÂÁÁÂțÁÂÂśÁÂÂÁŸŸÌÌüÊĂÂÁÁțÂÁÁüÂÁÂÁÁÌțËđđôÓĂÀÁÀÁÀÁÀÁÁÀÀÁùÀÁËËđđüșźÀÀțÁÀÀ›ÊűÙŐÚŚÚÙÙŰŰŚÖŐÔűÚÙÙəąÀżżÀńżÀżÀÀżżÀ››ÈÈٔÙÙú”ÙșĄżżțŸżżšÇŐęᚏŹò±áŐŐǙĄŸżŸżŸżŸŸżŸżšÆŰęߎÂÂő»ßŃŃƙĄŸŸœŸŸțœŸŸőœŸ˜˜ĆĆŚŚĘŽĐĐțäăățäĐĐïÂĘĐĐƙĄœŸœŸœœŸœŸœœőŸ˜˜ÄÄÖÖߎÙÚÚțăââțăÚÚűÇßÏÏÙĄœœțŒœœòŒœœŒŒ——ĂĂŐŐàŽÉÉÏțÓÉÉśżàÎÎÙĄœŒŒűœŒŒœŒŒœŒŒ—ÁÔęß”ÛÛțćääÛűÉßÍÍÁ™ĄŒŒțœŒŒőșŒ——ÀÀÓÓĘ·ÔÔțĘÜÜțĘÔÔőÇĘÌÌÀ™ĄŒŒ»ŒŒ»îŒ»»č»——ŸŸÓÓȚ·ÔŐŐÙÚÚÖűÈȚËËż™ »»üŒ»Œ»»đ¶»——ŸŸÒÒĘžÄÄÆÆŐÍÍęŃŐÆÆűÀĘÊÊŸ™ »»țș»»ô”»——ŒŒŃŃĘžÔŐŐțÖȚȚęĘŚÖÖöËĘÉÉŒ™ șș»»ș»őŽș——»»ĐĐÜčÏÏțĐÓÓțŃĐĐśÇÜÈÈ»™ ș»»șń»șș¶łș——șșÏÏÜčÍÍüÏŃÏÍÍűÆÜÇÇș˜Č Čśș——ččϔÏđđùϔÇč˜Č Čù”ș——žžÌÌËÊÉÈÇțÆÄÄü·šŁĆ Ćóż—··ÈËÈÊÊÉÉÈÈÇÆĆûĂĆĆ·——”țŽ””ûŽ””Ž””üŽ”Ž””@țqŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììțqŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïțqęÖîééôçàÔÇȚÙđđïțqóźæäÚÌŚßŚÖïpqùpqpqqpqqępqppqópçäȚÍĐßȚÖïnôȚâĘËÌàßĘŐïjțkjjkęjkjjkjôčßÖÇÈâàßÜŚïgòêgÜg„ÜêêghêgêggôÛÓÁÂćăàßÛŰïdúêۂdÛddúêcêê‚ddóšŰÎŒ»èæăáßÛÖïüa``aaęéaaűÚììé`éaaì`™ŰÍ»”êéæäáßÚĐÄ wïï_^_úé^_^Ú__ûé_é_^^ê_^_šŰÍ»źëêéçäáßŰÄ wïï\]ę\é\\űÙ\]éé\é\\í›ÙÏœŹîìêêçäâàÖ wïï[ôè[\\{Ùè[è[è[[ì\œÜĐż°ńïìêêçćâàÔwïï YțXY Yìc›ȚÒÀŽôòïíêêèćăàÓwïï YțXY Yìc›ȚÔĂœöőòđíêêèæăàÒwïïYő˜Ź©§€ žžžæžž›ȚÖĆÇìèćăâăćêéæäȚÏz””YYŁőŒččșșčșșččșșčéșÄߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””YYĆțéććêăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàYYÄęèäććûäććäććêâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàYYĂòçćääćäćääććäćääöćăâÛÓÇŒ¶Ż­­°öŽ””ŽŽĄăYYÂÂțçä äóćäćäâáÜŐÌĂÂœșșűŒœżÁÄźăllÁțçääăäțăääóăäâáĘÚÔÒÎÉÍÍÏÏűŃÒÎÌÏłłllÀùçäăääăääęăäăăèäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””llżțçăăäęăäăăúáäăăäăăőäăăäăâăăżżllżțæăățáăățäăăŸlùœćăâăâăățâăățâăăâăùâăăâăâăăâüăœœllû†ÈăăââûăâăăââùăœœllkœœòwÈââăââăâăââăââŒkœü…łÌâ â»ję~z‚‚€ę~}}|ț{yyù‚~~jłœââáęâáââűá»»ii~j~~śj~iłœâáâááüâáâááöâččhh||‰LQQőT‰||hłœááâá áčg€ę‡Uccű[‡uugłœááțàáážeû~†Ussțáààțássôc†ssfłœàááàááđàáàáàážžee}}‡U‚‚ß‚űj‡rqełœààęáàááőßážžcc||‰UnnÎüÍÎÒooőb‰ppcłœààáààóáàȚà··aa{y‡U‚‚âțá‚‚űm‡ooałœààđßàßààĘà··``xx…W{{Ù{öj…ll`łœàßà àïÛß··^^xx†W{||ÂŚŚÖÖŚțÂ}}öl†kk_łœßàßßàîßàÚß··^^wv…XggilÄÌÌüÏÄliiűa…ji^łœßßàêßàßàßÙà··\\uu„Xxyyz‚ÔÛÛęӃ{{őn„hh\łœßßàßßîàßßààßßÙß··[[ss„XqqrúÌĐ́rrői„ggZłœßßàßßòàßÚŚß··ZZrqƒXllü†”†llűfƒfeZČșÖ Öśß··YYqjqœœùqjfYČșÖ ÖùÚß··XXllkjüihhggțfeețdaaüWŽżć ćóâ·WWmkmjihhggțfeedcúac``W··ôUVWVUVVUWVVUUVUśWUWVUVVU?ț›șșńéđńđńńđđńđđńđńđńïîíéöŐàííț›șșđțûú úóűśńçćóóòò””ńț›șșțïùùôűóìâöóòò””ńț›șșóËśöđçńśńń””ńš›ùš›š››š››ęš›šš›óšśôòçëśśń””ń˜ôđőïăçśśöï””ń”ț•””•ę”•””•”úŃńëàâśśüőń”ń‘òđ‘æ‘Šæđđ‘’đ‘đ‘‘ù»îèÜĘűśśęôđńúïć„ćúđŽđđ„űžëćÙŚùűśśęôïńŒęïąŒŒűäńńïŒïąŒŒížëäŚÒùùűűśśóçâG::•ńń‹Š‹úŠä‹‹ûï‹ï‹ŠŠś‹Š‹·íćŚÍùùöűśśòâG::•ńńˆ‰ęˆïˆˆű㈉ïïˆïˆˆùčïæŰËúùùśűśśńG::•ńń‡ôˆžăï‡ï‡ï‡‡śˆșïçÚÌûúùùűűśśđ::•ńń †ț…† †őŽșńèÛĐüûúúùùùűśśï:•ńń †ț…† †ôŽșńëȚŚüüûûúùùúűśöî•ńń†ôŸÆĆÄÁŸ»Œ»ŒŒ»»Œś»șòêßĘőóńńôóőùùűűőì€Â††ÇțŐÔÔÓęÔÓÔÔÓűĘôìâÏÇÄÁÁôĂĆËÖȚíűô놆èÙùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăî붆†èù űùèűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘś††çțùűűùûűùùűùùűçùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇś††ææúùűűùùűűùțűùùöùńêăÜÛŚÔÔőÓŐŐŚŚÙÛßÖś66æțúűűĘùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚ66æùùűűùùűùùçűùùśśóîèëëćéçëíîîííììîÜÜ66ćùúűűùűùűűùùűùùűűùűűûùűűùűűùùűśśćć66ćűùűùűùűùűűùűțöűűùęűùűűűùűùűűćć66ęäùűűéùűùűűùűùùűűùśűűùùűűùűùűűűùűùùűää66ęaÍűűùűțùűűùùűűùää66Xű=Íűùűűùűűśùűùűää55XXú`Ïäűùűűùűöùăă44C@FHFFDCBA@ò?FCC4ÏŰűùűűùùűűöùűùăă44CQCCśQC4ÏŰùűùűűțùűűóùűűùââ22BBJ##ű$JBB4ÏŰűűùűùűâ1DęI%//ű)I==2ÏŰű űá0CęI%;;țàßßțà;;ö/I;;0ÏŰűùűűțùűűțùűűâ0BęI%FFĘFű4I::/ÏŰű űőùűáá//AAJ%88ÎüÍÎÒ88ű/J99/ÏŰűűòùűűśűáá..@@I%FFàțßFFű6I88.ÏŰű űőöűáá-->>H&AAțŚÖÖțŚAAű5H66-ÏŰűűțùűűőöűáá,,>>H&AAțČÔÔțČAAű5H66-ÏŰű űđőűáá++>>H&1148ŒÌÌüÏŒ844ű.H55+ÏŰű űőôűáá))==G&>>ü@KÏÚÚęÍLAAő7G44)ÏŰűűùűűőôűáá((;;G&::úQÆÍÆQ::ű4G22(ÏŰű űôőóűáá((::F&66ü^Š^66ű1F11(ÎÖó óśűáá'':Q:XXù:Q1'ÎÖó óùőűáá''665421ț0//ü'ÏŰù ùđűùùűá&&:6:55442210/ú.2..&áá%ű&%%&%%&%%ú&%&&%?ÿüÿęęÿęű ț±ÿÿțđ ÿęß ÿęÇ !ÿęĄ"ÿęr#ÿęG$ÿț"%ÿț &ÿț&ÿęțțÚÿ%ÿęęțÚÿ&ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿę8Çÿ'ÿę8Èÿ(ÿțÇÿ)ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿę*ÿÿp@2ù@AABCE@@ț2.0tar_bzÿ     "à†.0àš.0àȘțŁÁÁœű»ž”ŻÍŻÈììțŁÁÁŒțáÚ ÚòÙŚÔËșČčèïïíțŁÁÁęșÙÏ ÏóÎÌÆč­čžïïíțŁÁÁóčÍÊÁł”ș¶”íąŁùąŁąŁŁąŁŁęąŁąąŁóąÌËĆČ°șș”í  țò  ôÆÈÁ±Żœșč”íęòžžúžòžžôšÄż­ŹĂŸșž·íțšńńï­èńńššńšèšńšèńššńńóš“Àž©šÉÄżș·ží˜îń˜ç˜˜—ń˜ńߏ˜îđŹń˜œł€ąĐÊĆÀ»··í•îđ•©æòòđ•đ©••đ©••đ••ê𩕐ŒČą›ÓŃËÆÁ»·°šuíí•öđ”æ••”đ•đ••â𔕔𔔩𔕐œ±ą–ÖÓÒÌÇÁŒ¶šuíí’Öđ’æ“’æđ’đ’’“đđ’’đ’’𧒒œŽ€”ÜŚÓÓÍÇÂœ”uíí‘đïŠđđŠđ’đ‘đ‘ò‘đđ‘‘đđ쒑żŽ€—âĘŰÓÓÎÈĂŸłuíí ț ì’‘À”§žéăȚÙÔÓÏÉÄżČuíí ț ì’Á·©šìêäßÚÔÓĐÊĆżłuííù‰ ›™—”’ ’êÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­û­§Š§ŠŠ§Šț§ŠŠêźÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­§ęÎÆÇÇțÆÇÇêĆÂș±Šœ–’’“•”’™Ź·łŸŠțÍÆ ÆțÇÆÆêĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸ„țÍÆÆĆ ÆöÄĂŸ”­ąš–”••—ö™››š˜…А€€ęÌÄĆĆțÄĆĆöĂŸž°šŠą ŸŸűĄąŁ„§’ÄÌÌŁțËÄÄțĆÄÄôĂÂżŒ¶”°­°ŻłČČűłŽ±°Č––ÌÌąâÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žččùž·žž™™ÌÌ țÉĂ ĂțÄĂĂ Ă ̟öÈÂÂĂÂĂÂĂÂĂĂÂęĂÁÂÂüĂÂÂĂĂÂțĂÂÂüĂ  ÌÌęŸÇÂÂțÁÂÂțÁÂÂęÀÂÁÁÂțÁÂÂśÁÂÂÁŸŸÌÌüÊĂÂÁÁțÂÁÁüÂÁÂÁÁÌțËđđôÓĂÀÁÀÁÀÁÀÁÁÀÀÁùÀÁËËđđüșźÀÀțÁÀÀ›ÊűÙŐÚŚÚÙÙŰŰŚÖŐÔűÚÙÙəąÀżżÀńżÀżÀÀżżÀ››ÈÈٔÙÙú”ÙșĄżżțŸżżšÇŐęᚏŹò±áŐŐǙĄŸżŸżŸżŸŸżŸżšÆŰęߎÂÂő»ßŃŃƙĄŸŸœŸŸțœŸŸőœŸ˜˜ĆĆŚŚĘŽĐĐțäăățäĐĐïÂĘĐĐƙĄœŸœŸœœŸœŸœœőŸ˜˜ÄÄÖÖߎÙÚÚțăââțăÚÚűÇßÏÏÙĄœœțŒœœòŒœœŒŒ——ĂĂŐŐàŽÉÉÏțÓÉÉśżàÎÎÙĄœŒŒűœŒŒœŒŒœŒŒ—ÁÔęß”ÛÛțćääÛűÉßÍÍÁ™ĄŒŒțœŒŒőșŒ——ÀÀÓÓĘ·ÔÔțĘÜÜțĘÔÔőÇĘÌÌÀ™ĄŒŒ»ŒŒ»îŒ»»č»——ŸŸÓÓȚ·ÔŐŐÙÚÚÖűÈȚËËż™ »»üŒ»Œ»»đ¶»——ŸŸÒÒĘžÄÄÆÆŐÍÍęŃŐÆÆűÀĘÊÊŸ™ »»țș»»ô”»——ŒŒŃŃĘžÔŐŐțÖȚȚęĘŚÖÖöËĘÉÉŒ™ șș»»ș»őŽș——»»ĐĐÜčÏÏțĐÓÓțŃĐĐśÇÜÈÈ»™ ș»»șń»șș¶łș——șșÏÏÜčÍÍüÏŃÏÍÍűÆÜÇÇș˜Č Čśș——ččϔÏđđùϔÇč˜Č Čù”ș——žžÌÌËÊÉÈÇțÆÄÄü·šŁĆ Ćóż—··ÈËÈÊÊÉÉÈÈÇÆĆûĂĆĆ·——”țŽ””ûŽ””Ž””üŽ”Ž””@țqŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììțqŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïțqęÖîééôçàÔÇȚÙđđïțqóźæäÚÌŚßŚÖïpqùpqpqqpqqępqppqópçäȚÍĐßȚÖï nțënnôȚâĘËÌàßĘŐïjęëkjjkújkjjëkkjôčßÖÇÈâàßÜŚïțgêêï„ÜêêggêgÜgêgÜêggêêógÛÓÁÂćăàßÛŰïdîêdÛddcêdê΂dććdćddđ‚êdšŰÎŒ»èæăáßÛÖïìa`éaÚììéaé`aé`aéaaêé`™ŰÍ»”êéæäáßÚĐÄ wïï_öé^Ú__^é_é__âé^_^é^^}é^_šŰÍ»źëêéçäáßŰÄ wïï\Öé\Ú]\Ùé\é\\]éé\\é\\é{\\›ÙÏœŹîìêêçäâàÖ wïï[èî{èè{è\é[è[ë[èè[[éèèì\œÜĐż°ńïìêêçćâàÔwïï YțXY Yìc›ȚÒÀŽôòïíêêèćăàÓwïï YțXY Yìc›ȚÔĂœöőòđíêêèæăàÒwïïYő˜Ź©§€ žžžæžž›ȚÖĆÇìèćăâăćêéæäȚÏz””YYŁőŒččșșčșșččșșčéșÄߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””YYĆțéććêăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàYYÄęèäććûäććäććêâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàYYĂòçćääćäćääććäćääöćăâÛÓÇŒ¶Ż­­°öŽ””ŽŽĄăYYÂÂțçä äóćäćäâáÜŐÌĂÂœșșűŒœżÁÄźăllÁțçääăäțăääóăäâáĘÚÔÒÎÉÍÍÏÏűŃÒÎÌÏłłllÀùçäăääăääęăäăăèäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””llżțçăăäęăäăăúáäăăäăăőäăăäăâăăżżllżțæăățáăățäăăŸlùœćăâăâăățâăățâăăâăùâăăâăâăăâüăœœllû†ÈăăââûăâăăââùăœœllkœœòwÈââăââăâăââăââŒkœü…łÌâ â»ję~z‚‚€ę~}}|ț{yyù‚~~jłœââáęâáââűá»»ii~j~~śj~iłœâáâááüâáâááöâččhh||‰LQQőT‰||hłœááâá áčg€ę‡Uccű[‡uugłœááțàáážeû~†Ussțáààțássôc†ssfłœàááàááđàáàáàážžee}}‡U‚‚ß‚űj‡rqełœààęáàááőßážžcc||‰UnnÎüÍÎÒooőb‰ppcłœààáààóáàȚà··aa{y‡U‚‚âțá‚‚űm‡ooałœààđßàßààĘà··``xx…W{{Ù{öj…ll`łœàßà àïÛß··^^xx†W{||ÂŚŚÖÖŚțÂ}}öl†kk_łœßàßßàîßàÚß··^^wv…XggilÄÌÌüÏÄliiűa…ji^łœßßàêßàßàßÙà··\\uu„Xxyyz‚ÔÛÛęӃ{{őn„hh\łœßßàßßîàßßààßßÙß··[[ss„XqqrúÌĐ́rrői„ggZłœßßàßßòàßÚŚß··ZZrqƒXllü†”†llűfƒfeZČșÖ Öśß··YYqjqœœùqjfYČșÖ ÖùÚß··XXllkjüihhggțfeețdaaüWŽżć ćóâ·WWmkmjihhggțfeedcúac``W··ôUVWVUVVUWVVUUVUśWUWVUVVU?ț›șșńéđńđńńđđńđđńđńđńïîíéöŐàííț›șșđțûú úóűśńçćóóòò””ńț›șșțïùùôűóìâöóòò””ńț›șșóËśöđçńśńń””ńš›ùš›š››š››ęš›šš›óšśôòçëśśń””ń ˜țń˜˜ôđőïăçśśöï””ń”ęđ•””•ú”•””đ••”úŃńëàâśśüőń”ńț‘đđïŠæđđ‘‘đ‘æ‘đ‘æđ‘‘đđű‘»îèÜĘűśśęôđńîđćŽđđÜ„ì쀏쏏ő„đžëćÙŚùűśśęôïńŒîïŒąäńńïŒïąŒŒïąŒŒïŒŒêïąŒžëäŚÒùùűűśśóçâG::•ńń‹öïŠä‹‹Šï‹ï‹‹ïŠïŠŠ ïŠ‹·íćŚÍùùöűśśòâG::•ńńˆâïˆä‰ˆăïˆïˆˆ‰ïˆčïæŰËúùùśűśśńG::•ńń‡ïïžïïžïˆï‡ï‡đ‡ïïïśˆșïçÚÌûúùùűűśśđ::•ńń †ț…† †őŽșńèÛĐüûúúùùùűśśï:•ńń †ț…† †ôŽșńëȚŚüüûûúùùúűśöî•ńń†ôŸÆĆÄÁŸ»Œ»ŒŒ»»Œś»șòêßĘőóńńôóőùùűűőì€Â††ÇțŐÔÔÓęÔÓÔÔÓűĘôìâÏÇÄÁÁôĂĆËÖȚíűô놆èÙùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăî붆†èù űùèűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘś††çțùűűùûűùùűùùűçùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇś††ææúùűűùùűűùțűùùöùńêăÜÛŚÔÔőÓŐŐŚŚÙÛßÖś66æțúűűĘùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚ66æùùűűùùűùùçűùùśśóîèëëćéçëíîîííììîÜÜ66ćùúűűùűùűűùùűùùűűùűűûùűűùűűùùűśśćć66ćűùűùűùűùűűùűțöűűùęűùűűűùűùűűćć66ęäùűűéùűùűűùűùùűűùśűűùùűűùűùűűűùűùùűää66ęaÍűűùűțùűűùùűűùää66Xű=Íűùűűùűűśùűùűää55XXú`Ïäűùűűùűöùăă44C@FHFFDCBA@ò?FCC4ÏŰűùűűùùűűöùűùăă44CQCCśQC4ÏŰùűùűűțùűűóùűűùââ22BBJ##ű$JBB4ÏŰűűùűùűâ1DęI%//ű)I==2ÏŰű űá0CęI%;;țàßßțà;;ö/I;;0ÏŰűùűűțùűűțùűűâ0BęI%FFĘFű4I::/ÏŰű űőùűáá//AAJ%88ÎüÍÎÒ88ű/J99/ÏŰűűòùűűśűáá..@@I%FFàțßFFű6I88.ÏŰű űőöűáá-->>H&AAțŚÖÖțŚAAű5H66-ÏŰűűțùűűőöűáá,,>>H&AAțČÔÔțČAAű5H66-ÏŰű űđőűáá++>>H&1148ŒÌÌüÏŒ844ű.H55+ÏŰű űőôűáá))==G&>>ü@KÏÚÚęÍLAAő7G44)ÏŰűűùűűőôűáá((;;G&::úQÆÍÆQ::ű4G22(ÏŰű űôőóűáá((::F&66ü^Š^66ű1F11(ÎÖó óśűáá'':Q:XXù:Q1'ÎÖó óùőűáá''665421ț0//ü'ÏŰù ùđűùùűá&&:6:55442210/ú.2..&áá%ű&%%&%%&%%ú&%&&%?ÿüÿęęÿęű ț±ÿÿțđ ÿęß ÿęÇ !ÿęĄ"ÿęr#ÿęG$ÿț"%ÿț &ÿț&ÿęțțÚÿ%ÿęęțÚÿ&ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿę8Çÿ'ÿę8Èÿ(ÿțÇÿ)ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿę*ÿÿ@2ù@AABCE@@ț2.0tar_gzÿ     M!öK.0ö_.0öoțŁÁÁœű»ž”ŻÍŻÈììțŁÁÁŒțáÚ ÚòÙŚÔËșČčèïïíțŁÁÁęșÙÏ ÏóÎÌÆč­čžïïíțŁÁÁóčÍÊÁł”ș¶”íąŁùąŁąŁŁąŁŁęąŁąąŁóąÌËĆČ°șș”í ôÆÈÁ±Żœșč”íęòžžęžžôšÄż­ŹĂŸșž·íțšńńïšèńńššń­èš­èń­ńšńńóš“Àž©šÉÄżș·ží˜îń˜ê˜˜—ń˜ń笘瘗ńń˜˜đŹń˜œł€ąĐÊĆÀ»··í•òđ•©æòòđ•đ©••è••țò••ê敕ŒČą›ÓŃËÆÁ»·°šuíí•Öđ”đ••”đ•đ©••æ”•đđ””©æ”•œ±ą–ÖÓÒÌÇÁŒ¶šuíí’Öđ’擧đđ’đ’’“šæđ§đ’§æ’§’œŽ€”ÜŚÓÓÍÇÂœ”uíí‘đöŠæđŠđ’đ‘đ‘‘ęđ‘đđ쒑żŽ€—âĘŰÓÓÎÈĂŸłuíí țđì‘À”§žéăȚÙÔÓÏÉÄżČuíí ț ì’Á·©šìêäßÚÔÓĐÊĆżłuííù‰ ›™—”’ ’êÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­û­§Š§ŠŠ§Šț§ŠŠêźÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­§ęÎÆÇÇțÆÇÇêĆÂș±Šœ–’’“•”’™Ź·łŸŠțÍÆ ÆțÇÆÆêĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸ„țÍÆÆĆ ÆöÄĂŸ”­ąš–”••—ö™››š˜…А€€ęÌÄĆĆțÄĆĆöĂŸž°šŠą ŸŸűĄąŁ„§’ÄÌÌŁțËÄÄțĆÄÄôĂÂżŒ¶”°­°ŻłČČűłŽ±°Č––ÌÌąâÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žččùž·žž™™ÌÌ țÉĂ ĂțÄĂĂ Ă ̟öÈÂÂĂÂĂÂĂÂĂĂÂęĂÁÂÂüĂÂÂĂĂÂțĂÂÂüĂ  ÌÌęŸÇÂÂțÁÂÂțÁÂÂęÀÂÁÁÂțÁÂÂśÁÂÂÁŸŸÌÌüÊĂÂÁÁțÂÁÁüÂÁÂÁÁÌțËđđôÓĂÀÁÀÁÀÁÀÁÁÀÀÁùÀÁËËđđüșźÀÀțÁÀÀ›ÊűÙŐÚŚÚÙÙŰŰŚÖŐÔűÚÙÙəąÀżżÀńżÀżÀÀżżÀ››ÈÈٔÙÙú”ÙșĄżżțŸżżšÇŐęᚏŹò±áŐŐǙĄŸżŸżŸżŸŸżŸżšÆŰęߎÂÂő»ßŃŃƙĄŸŸœŸŸțœŸŸőœŸ˜˜ĆĆŚŚĘŽĐĐțäăățäĐĐïÂĘĐĐƙĄœŸœŸœœŸœŸœœőŸ˜˜ÄÄÖÖߎÙÚÚțăââțăÚÚűÇßÏÏÙĄœœțŒœœòŒœœŒŒ——ĂĂŐŐàŽÉÉÏțÓÉÉśżàÎÎÙĄœŒŒűœŒŒœŒŒœŒŒ—ÁÔęß”ÛÛțćääÛűÉßÍÍÁ™ĄŒŒțœŒŒőșŒ——ÀÀÓÓĘ·ÔÔțĘÜÜțĘÔÔőÇĘÌÌÀ™ĄŒŒ»ŒŒ»îŒ»»č»——ŸŸÓÓȚ·ÔŐŐÙÚÚÖűÈȚËËż™ »»üŒ»Œ»»đ¶»——ŸŸÒÒĘžÄÄÆÆŐÍÍęŃŐÆÆűÀĘÊÊŸ™ »»țș»»ô”»——ŒŒŃŃĘžÔŐŐțÖȚȚęĘŚÖÖöËĘÉÉŒ™ șș»»ș»őŽș——»»ĐĐÜčÏÏțĐÓÓțŃĐĐśÇÜÈÈ»™ ș»»șń»șș¶łș——șșÏÏÜčÍÍüÏŃÏÍÍűÆÜÇÇș˜Č Čśș——ččϔÏđđùϔÇč˜Č Čù”ș——žžÌÌËÊÉÈÇțÆÄÄü·šŁĆ Ćóż—··ÈËÈÊÊÉÉÈÈÇÆĆûĂĆĆ·——”țŽ””ûŽ””Ž””üŽ”Ž””@țqŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììțqŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïțqęÖîééôçàÔÇȚÙđđïțqóźæäÚÌŚßŚÖïpqùpqpqqpqqępqppqópçäȚÍĐßȚÖïnôȚâĘËÌàßĘŐïjęëkjjkęjkjjkjôčßÖÇÈâàßÜŚïțgêêïgÜêêggê„Üg„Üê„êgêêógÛÓÁÂćăàßÛŰïdîêdßddcêdêۂdÛdcêêddđ‚êdšŰÎŒ»èæăáßÛÖïìa`éaÚììéaé`aÜ``aìaaêÚa`™ŰÍ»”êéæäáßÚĐÄ wïï_Öé^é__^é_é~__Ú^_éé^^}Ú^_šŰÍ»źëêéçäáßŰÄ wïï\Öé\Ú]{éé\é\\]|Ùé{é\{Ù\{\›ÙÏœŹîìêêçäâàÖ wïï[èö{Ùè{è\é[è[[ęè[èèì\œÜĐż°ńïìêêçćâàÔwïï YțXYYèYìX›ȚÒÀŽôòïíêêèćăàÓwïï YțXY Yìc›ȚÔĂœöőòđíêêèæăàÒwïïYő˜Ź©§€ žžžæžž›ȚÖĆÇìèćăâăćêéæäȚÏz””YYŁőŒččșșčșșččșșčéșÄߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””YYĆțéććêăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàYYÄęèäććûäććäććêâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàYYĂòçćääćäćääććäćääöćăâÛÓÇŒ¶Ż­­°öŽ””ŽŽĄăYYÂÂțçä äóćäćäâáÜŐÌĂÂœșșűŒœżÁÄźăllÁțçääăäțăääóăäâáĘÚÔÒÎÉÍÍÏÏűŃÒÎÌÏłłllÀùçäăääăääęăäăăèäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””llżțçăăäęăäăăúáäăăäăăőäăăäăâăăżżllżțæăățáăățäăăŸlùœćăâăâăățâăățâăăâăùâăăâăâăăâüăœœllû†ÈăăââûăâăăââùăœœllkœœòwÈââăââăâăââăââŒkœü…łÌâ â»ję~z‚‚€ę~}}|ț{yyù‚~~jłœââáęâáââűá»»ii~j~~śj~iłœâáâááüâáâááöâččhh||‰LQQőT‰||hłœááâá áčg€ę‡Uccű[‡uugłœááțàáážeû~†Ussțáààțássôc†ssfłœàááàááđàáàáàážžee}}‡U‚‚ß‚űj‡rqełœààęáàááőßážžcc||‰UnnÎüÍÎÒooőb‰ppcłœààáààóáàȚà··aa{y‡U‚‚âțá‚‚űm‡ooałœààđßàßààĘà··``xx…W{{Ù{öj…ll`łœàßà àïÛß··^^xx†W{||ÂŚŚÖÖŚțÂ}}öl†kk_łœßàßßàîßàÚß··^^wv…XggilÄÌÌüÏÄliiűa…ji^łœßßàêßàßàßÙà··\\uu„Xxyyz‚ÔÛÛęӃ{{őn„hh\łœßßàßßîàßßààßßÙß··[[ss„XqqrúÌĐ́rrői„ggZłœßßàßßòàßÚŚß··ZZrqƒXllü†”†llűfƒfeZČșÖ Öśß··YYqjqœœùqjfYČșÖ ÖùÚß··XXllkjüihhggțfeețdaaüWŽżć ćóâ·WWmkmjihhggțfeedcúac``W··ôUVWVUVVUWVVUUVUśWUWVUVVU?ț›șșńéđńđńńđđńđđńđńđńïîíéöŐàííț›șșđțûú úóűśńçćóóòò””ńț›șșțïùùôűóìâöóòò””ńț›șșóËśöđçńśńń””ńš›ùš›š››š››ęš›šš›óšśôòçëśśń””ń˜ôđőïăçśśöï””ń”ęđ•””•ę”•””•”úŃńëàâśśüőń”ńț‘đđï‘æđđ‘‘đŠæ‘ŠæđŠđ‘đđű‘»îèÜĘűśśęôđńîđèŽđđć„ćŽđđő„đžëćÙŚùűśśęôïńŒòïŒąäńńïŒïąŒŒæŒŒțńŒŒê䌌žëäŚÒùùűűśśóçâG::•ńń‹ăïŠï‹‹Šï‹ïĄ‹‹äŠ‹ï äŠ‹·íćŚÍùùöűśśòâG::•ńńˆâïˆä‰Ÿïïˆïˆˆ‰ ăïŸïˆŸăˆŸˆčïæŰËúùùśűśśńG::•ńń‡ïöžăïžïˆï‡ï‡‡ęï‡ïïśˆșïçÚÌûúùùűűśśđ::•ńń †ț…††î†öșńèÛĐüûúúùùùűśśï:•ńń †ț…† †ôŽșńëȚŚüüûûúùùúűśöî•ńń†ôŸÆĆÄÁŸ»Œ»ŒŒ»»Œś»șòêßĘőóńńôóőùùűűőì€Â††ÇțŐÔÔÓęÔÓÔÔÓűĘôìâÏÇÄÁÁôĂĆËÖȚíűô놆èÙùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăî붆†èù űùèűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘś††çțùűűùûűùùűùùűçùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇś††ææúùűűùùűűùțűùùöùńêăÜÛŚÔÔőÓŐŐŚŚÙÛßÖś66æțúűűĘùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚ66æùùűűùùűùùçűùùśśóîèëëćéçëíîîííììîÜÜ66ćùúűűùűùűűùùűùùűűùűűûùűűùűűùùűśśćć66ćűùűùűùűùűűùűțöűűùęűùűűűùűùűűćć66ęäùűűéùűùűűùűùùűűùśűűùùűűùűùűűűùűùùűää66ęaÍűűùűțùűűùùűűùää66Xű=Íűùűűùűűśùűùűää55XXú`Ïäűùűűùűöùăă44C@FHFFDCBA@ò?FCC4ÏŰűùűűùùűűöùűùăă44CQCCśQC4ÏŰùűùűűțùűűóùűűùââ22BBJ##ű$JBB4ÏŰűűùűùűâ1DęI%//ű)I==2ÏŰű űá0CęI%;;țàßßțà;;ö/I;;0ÏŰűùűűțùűűțùűűâ0BęI%FFĘFű4I::/ÏŰű űőùűáá//AAJ%88ÎüÍÎÒ88ű/J99/ÏŰűűòùűűśűáá..@@I%FFàțßFFű6I88.ÏŰű űőöűáá-->>H&AAțŚÖÖțŚAAű5H66-ÏŰűűțùűűőöűáá,,>>H&AAțČÔÔțČAAű5H66-ÏŰű űđőűáá++>>H&1148ŒÌÌüÏŒ844ű.H55+ÏŰű űőôűáá))==G&>>ü@KÏÚÚęÍLAAő7G44)ÏŰűűùűűőôűáá((;;G&::úQÆÍÆQ::ű4G22(ÏŰű űôőóűáá((::F&66ü^Š^66ű1F11(ÎÖó óśűáá'':Q:XXù:Q1'ÎÖó óùőűáá''665421ț0//ü'ÏŰù ùđűùùűá&&:6:55442210/ú.2..&áá%ű&%%&%%&%%ú&%&&%?ÿüÿęęÿęű ț±ÿÿțđ ÿęß ÿęÇ !ÿęĄ"ÿęr#ÿęG$ÿț"%ÿț &ÿț&ÿęțțúÿ%ÿęęțÚÿ&ÿüű"ÿęđ#ÿęá$ÿțÊ%ÿț%ÿț %ÿ%ÿ%ÿ%ÿ%ÿ%ÿę8Çÿ'ÿę8Èÿ(ÿțÇÿ)ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿ+ÿę*ÿÿ@2ù@AABCE@@ț2)#folder_closedÿ     : )# )# /…țˆs sț‡}}‡ï†……„„ƒ‚€~}|}……ùˆŒŒ‹‰‰ˆû‡ˆˆ‡}}‡ï†……„„ƒ‚€~}|}……țŠp püŒŠˆ‡‡ï†……„„ƒ‚€~}|}‡‡ìÉùÛÜÖÒÌÈŸ»ččŒÙ‹yŠˆ‡‡ï†……„„ƒ‚€~}|}ŒŒę¶˜” ”úš•‚˜ˆ‡‡ê†……„„ƒ‚€~}|}eˆ”˜” ”ü«˜ŒŒő}e…Č’“”“”““ű”““”“ż”ppń€S±’‘“’’“’“’““û’“–韟ńŒ–€_eŻ‘‘‘‘’’‘ț’‘‘æ’‘’‘’’‘’’‘’‘’€uˆn~­ŽŽ‘‘ś‘‘ő‘‘‘‘ù€tŽi}­‘!‘ò€s†`}«‘‘‘‘‘ț‘ü‘‘‘ț‘‘ùr•k}Șț ęțőr™x}šțöp±„}ŠŽŽțŽŽŽùŽŽŽŽŽű~oƜ~€țŽțŽŽśŽŽŽŽŽîŽ~oáȘ~ŁŒŒŒŒŒŒŒțŒŒđŒŒŒŒ~náÈ ‹‹űŒ‹ŒŒ‹‹Œ‹‹üŒ‹Œ‹ ‹öŒ‹‹~mßß~žŠŠț‹ŠŠț‹Š Šû‹Š‹‹ŠŠö‹ŠŠ}lßß~œ‰‰țˆ‰‰ù}l~šˆˆț‡ˆˆț‡ˆˆț‡ˆˆț‡ˆˆü‡ˆ‡ˆˆù}j„„z•„„ú…„…„„…… „ű…„„…„„…„„ù|iŹŹz“ƒ ƒț„ƒ ƒț„ƒƒś{iŻŻz‘‚‚‚ü‚‚‚ù{h””zŽ€ț€ț€ț€ ù{hÀÀzŒ€€€€ț€€€€ț€€ű{gÀÀz‰~ű~~~û~~~û~zfzzú‡~~}}~ ~ț}~~ț}~~ęzfzzț…}}ț|}}û|}}|}}ę{f{{ț‚| |ț}||ț}||ö}||}}|}zezzț||{|{ț|{{ę|{||{ö|{{yev†kkjklmnopűqxzel{!{ùoz\;j!jędW(­ț§™ ™ț„ŸŸ§Š„€ŁüąĄĄ  üŸž„­­ù§©ŹŹȘ©ššț§ŠŠę§„ŸŸ§Š„€ŁüąĄĄ  üŸž„­­țš— —ï«š©§§ŠŠ„„€€ŁŁąĄĄ  üŸž„ššßŰüîîìêçćâáßȚȚá櫞š©§§ŠŠ„„€€ŁŁąĄĄ  üŸž„±±ęÛĂż żíıŁČ©§§ŠŠ„„€€ŁŁąĄĄ  śŸž„¶Œ­ÚĂż żüÏČą©©ś„¶Œ«ŰœŸżŸŸôżŸżŸŸżżŸŸŐ°——ù§¶p§ŚŒœœțŸœœüŸżôââțăââțăââîàŠ_}ŠŐ»»Œ»Œ»ŒŒœœŒŒțœŒŒțœŒŒțœŒŒòœŒŒŠ›ˆ~„Óžčșș»»țș»»üș»ș»»șó»ș»»ș»§šz€Ó»!»ùŠ™‹z€Òșș»țș»»șț»șșă»ș»ș»»ș»»ș»șș»ș»ș»șșŠ˜ˆ€Đșčșșč șüčșčșșțčșșù„˜§”€ÏččțșččțșččùŠ–Δ€Ížžűčžžčžččžžčęžčžžóčžž„•ĐŠ„Ë·ž·žž·üž·ž··űž··ž··ž··țž··űž„”Ễɶ¶·¶·¶ț·¶¶û·¶¶·¶¶ț·¶¶ś€“áŃŠÈ¶¶””ț¶””𶔶””¶””¶¶”¶””¶””ö¶””€“ććŠĆŽŽț”ŽŽ” Žț”ŽŽù€’ââ„Äł!łö€‘šš€ÂČȱČČü±Č±ČȱČùŁ¶¶ĄœźźțŻźźțŻźźüŻźŻźźôŻźŻźŻąŽœœĄ»­­țź­­öź­­ĄŽŸŸĄčŹŹț«ŹŹț«ŹŹț«ŹŹü«Ź«ŹŹùĄÀÀĄ·« «űȘ«ȘȘ««Ș««ûȘ«ȘȘ««śĄËËĄ”Ș©ȘȘț©ȘȘś©ȘȘ©©Ș©©Ș ȘśĄŒËË Č©š©©țš©©š©šț©ššû©š©š©©ę ‹ąąț°ššț§ššü§š§š šț§ššú§š§ ŠĄĄüź§Š§§țŠ§§țŠ§§ęŸŠąąę­§Š Šû§ŠŠ§ŠŠ§üŠ§§ŠŠęŸŠĄĄęȘ„ŠŠț„ŠŠü„ŠŠ„„đŠ„Š„„Š„ŠŠ„Š„Š„„ŠŠö„ŠŠŸ‰œź’’‘’“”•–—ű˜Ąž‰Ș!Șù–ž€N!ę…r(çțÖÚ ÚțŐÖÖÚÙŰŚÖęŐáççúÖŰÚÙÙŰŰŚŐÖÚÙŰŚÖęŐáççțÖŚ ŚúÙÚÜÚÚÙÙŰŚÖęŐáÚÚęîÿțțęűöÙÚÚÜÚÚÙÙŰŚÖęŐáââęûôś śűűÜÚÛÜÚÚÙÙŰŚÖűŐáÌÍáûôś śüôÛÛŚŚéáÌÍàûöśśööśśööśööśöśđÛŚŚùȚ̏ßûőööüőöőööțőööțțęęűúőȚ}žȚúőőțöőőüöőöőőțöőőööőȚ՘ŹȚùńóôôțőôôùőôőôôőôôęőôőőđôőôôőôôőôȚŐȱȚúô!ôóȚÓŸ«ȚùôóóôôóôôțóôôțóôôțóôôóĘÓč”ĘùóóôóóôóóôűóôóôóôôóóôęóôóóśôóĘÓÓœĘűóóțôóóțôóóțôóóőȚŃߟȚűòóòòóóòóęòóòòűóòóòóòòóóòöóĘŃŚÉßśòóòòóòôóòóòòóòóóòóòòńóòòóĘĐáŚàśòòńńò òûńòòńò òńùĘĐáäáöńńòńśòńńòòńńòńńűòńńòńńòńńùĘÏïïáöńńüđńđńńđńțđń ńđńôĘÎííáőńđńđđńńđțńđđüńđńđđôńđńđđÜÎÊÊáôđđțïđđțïđđțïđđùÜÍŚŚßòîîțïîîïîțïî îüïîïîîóÛÌÜÜȚńíîííîíî îțíîîíüîííîîùÛÌÛÛȚńííțîííîûíîíîí íîűÛËÜÜȚđìííțìííìíìęíìííìóíìííìíÛËÚÚĘïììțíì ìțíììńÛÊÚÚȚïììëìëììëììëìüëìëììöëììëììëÛÊȚȚęîìëëțìëëțìëëì ëùìëìëÛÊĘĘùíëêëëêëëțêëëűêëëêêÛÉĘĘüìêëêêëđêëëêêëêëëêëêëêêëëțêëëêęÛÉĘĘțëêêûëêêëêêțëêêëêëêùÚÈÙîÖÖŐÖŚŰÙÚÛÜűĘçÚÈËî!îùÓÛÁpÉ!É꿝(ț țțÿ ÿęț%țÿÿțűțęÿÿț‡țțÿÿț`* țțțÿ#ÿû™țÿ$ÿüęÿ$ÿüęÿ$ÿüęÿ$ÿü ęÿ$ÿęÿ%ÿü ęÿ$ÿü ęÿ$ÿü ęÿ$ÿüüÿ$ÿüûÿ$ÿüúÿ$ÿüűÿ$ÿęÿ%ÿęÿ%ÿüśÿ$ÿüśÿ$ÿüśÿ$ÿüśÿ$ÿüűÿ$ÿțùÿ$ÿțűÿ$ÿțúÿ$ÿțûÿ$ÿțüÿ$ÿțúÿ$ÿęÿ$ÿûž'eÿ!ÿò܂$$99:;;=99ű=;;:99$//Layer 5ÿ     ,…//™//©ÿęÒŐÖ ÖőÓÏĆÒŽŐđîÎÇÈÈüÇÚïÿ ÿüÓăèæ æöćăÙĂŒÒêÿțsÿÿüÒßàȚ ȚöÙÌœÌÓæ%ęxÿÿüŃȚáß ßȚöÛÓÀÇÏÎÿęxÿÿęÒŐÖ ÖíÓĐÆÓŐȚȚĘÜÚÒŒÄÔŃÇÚïęxÿÿüÓăèæ æìćăÙĂŒÔȚÜÚÖÌ·ÂŰŃÖsÿęxÿÿüÒßàȚ ȚéÙÌœÌŐÜŰŃĆŻŸßÖŃŰÿÿrÿÿüŃȚáß ßȚæÛÓÀÇÏŃŚÏÂȘčćÜŚŃĘÿÿšüÒŐÖ ÖÛÓĐÆÓŐȚßȚĘÜÚÒŒÄÔŃŰЧłèàĘŰÒÔÿÿ ÁśÓăèæ æÛćăÙĂŒÔßĘÜÚÖÌ·ÂŰŃÖŃħ±íăâȚÙŐÒÿÿ»űÒßàȚ ȚĘÙÌœÌŐĘÛŰŃĆŻŸßÖŃŰĆ©¶óæââȚÙÖÀÿÿŒűŃȚáß ßȚăÛÓÀÇÏŃÚŚÏÂȘčćÜŚŃÜ­ŸűíéćâßÚÚžÿÿúÏȚáȚȚßßțȚßßÚȚĘÜÚÒŒÄÔŃÛŰЧłèàĘŰÒŃËűïêèæçćßĘĆÿÿÏȚáȚȚțßȚȚŰĘÜÚÖÌ·ÂŰŃÖÙŃħ±íăâȚÙŐÏŹ§„ŠšŹžĂÓĘžÿÏȚáȚĘȚȚ¶ĘȚÜÛŰŃĆŻŸßÖŃŰÓĆ©¶óæââȚÙÖŸ–”“”—œžąŻÆĂÍĘàĘĘȚĘĘȚĘȚĘĘÜÚŚÏÂȘčćÜŚŃÜÆ­ŸűíéćâßÚÚ¶ŸŸĄœûŠËÛßĘĘæÜÛŰЧłèàĘŰÒÓłËűïêèæçćßĘÂŁŁï„Ššš§•ËÚßÜÜĘĘÜĘÜĘĘçÜÙŃħ±íăâȚÙŐĐšŹ§„ŠšŹžĂÓĘžžöčș»șŒŻÊÚßÜÜțÛÜÜțÛÜÜćÛŰÓĆ©¶óæââȚÙÖż›–”“”—œžąŻÆÄËËöÊÈËčÉÙȚÛÜÛÛđÙÓÆ­ŸűíéćâßÚÚ·ąŸŸĄœțŠÖÖŐśŚĂÈŰĘÛÚÚÛÛüÚÛÛÚÚïÙÓÇłËűïêèæçćßĘ€ŁŁï„Ššš§•ÖÖŚÖÖÙĆÆŚĘÚ ÚđŰÔË·šŹ§„ŠšŹžĂÓĘžžïčș»șŒŻÖŐÖÖŐŰĂĆÖÜÚÚțÙÚÚíÙÖÌŸȘ›–”“”—œžąŻÆĂÉËËùÊÈËčÖÖŐŐúŚÂÄŐÜÙÙțÚÙÙűŰŐÏĂ·©ąŸŸĄœęŠŐÖÖŐęŚĂŐŐśŰÁĂŐÜÙÙŰÙÙśŰÖŃÆșź§€ŁŁç„Ššš§•ŚÖÖŚÖÖÙĆŐÔŐŐÔŚÁÁÔÛŰ ŰùŐŃËĂœčžžđčș»șŒŻÖÖŐÖÖŐŰĂÓÔÔđŚÀÁÓÚŚŰŚŰŚŚŰŚŰŰŚŚöÖÓÌÇÉĂĆĆÉËËűÊÈËčŐÖÖŐŐóŚÂÓÔÔÓÓÖżżÒÚŚŚțŰŚŚęŐÖŐŐțÔŐŐÖŐęŚĂŐŐăŰÁÓÒÒÓÓŐŸŸŃÙÖŚŚÖŚÖŚÖŚÖŚÖŚÖŚÖŚŚÖòŚÖÖÙĆŐŐÔŐŐÔŚÁÒÒúŐœŸŃÙÖÖțŐÖÖțŐÖÖțŐÖÖôŐÖÖŐÖÖŐŰĂÔÓÔÔęŚÀÒÒúŐœŒÏŚŐŐțÖŐŐțÖŐŐțÖŐŐÖŐőŚÂÓÓÔÔÓÓÖżÒÒùŃÓŸŒÏŚŐŐŚŰÁÓÓÒÒÓÓŐŸŃŃÒŃĐÒœ»ÍŚÔŐŐÔŐÔŐŐÔÔŐÔŐŐÔÔŐŐÔÔŐŐùÔŐŐÔŚÁÒÒòŐœÒÒŃŃÏŃœșÍÖÓÔÔțÓÔÔęŚÀÒÒęŐœŃŃùÏĐœčÌÖÓÓÔÓÔÓÔóÓÔÓÔÓÓÔÔÓÓÖżÒÒáŃÓŸĐŃĐĐÌĐœžÊÔÓÓÒÓÒÒÓÒÒÓÒÒÓÒÒÓÒÓÓöÒÓÓÒÒÓÓŐŸŃŃúÒŃĐÒœÉÉùÈÏœ·ÊÔÒÒőŐœŃÒÒŃŃÏŃœÒÒúŚŸ·ÉÓÒÒüŐœĐŃŃüÏĐœÇÇüč·ÉÒÒôŃÓŸĐĐŃĐĐÌĐœžžű”·ÉŃŃÒŃÒÒțŃÒÒțŃÒÒŃúÒŃĐÒœÉÉüÈÏœÿÿê·ÉĐŃŃÒŃÒÒŃŃÒŃÒÒŃŃÒŃÒÒŃŃÒŃüÏŃœÒÒęŚŸÿÿù·ÉÏŃŃĐŃŃțĐŃŃțĐŃŃúĐŃŃĐĐŃŃüÏĐœÇÇțčÿÿù·ÈÏÎĐŃĐĐțŃĐĐțŃĐĐțŃĐĐùŃĐĐÌĐœžžț”ÿÿü·ÈÍÉÉüÈÏœÿ ÿü·ÊŐÒÒęŚŸÿ ÿü¶żÆÇÇțčÿ ÿüŽ¶·žžț”ÿ ÿÿęćçè èôćáÙäÆȚïîÎËËÈÈüÇÚïÿ ÿüçòőôôûőôôőôôôóòéŐÒçíț țtÿÿüæïòńńțđńńôđëȚÓææò'ęyÿÿòäïóńńđńđńđńđńđđőíćÔàêéÿęyÿÿęćçè èìćáÚćçîđđîëäĐÛíêÇÚïęyÿÿüçòőôôûőôôőôôìóòéŐÒéïíìçȚËŚîêńtÿęyÿÿüæïòńńțđńńèđëȚÓæèíêăŰĂÒòíêóÿÿsÿÿòäïóńńđńđńđńđńđđæíćÔàêêéáŐœÌőïìéśÿÿ›ęćçè èùćáÚćçîđđäîëäĐÛíêéâÔșÆśńîìéíÿÿ ĂúçòőôôûőôôőôôÛóòéŐÒéđïíìçȚËŚîêńäÖ»ÄúòńïíìëÿÿœúæïòńńțđńńÒđëȚÓæèîíêăŰĂÒòíêóŰœÇüôńńïííŰÿÿŸúäïóńńđńđńđńđńđđăíćÔàêêìéáŐœÌőïìéőÁÍÿűőóòđíńÎÿÿűäîòđńđńđđțńđđÜîëäĐÛíêíéâÔșÆśńîìéêŚęśôôóöőòôÛÿÿăîòđđÚïíìçȚËŚîêńìäÖ»Äúòńïíìçœč··șżÊÖæóÌÿâíòđđțïđđÚîíêăŰĂÒòíêóæŰœÇüôńńïííÖȘšŠ©Ș°ŽžÄĘÙáíńđđïăđïïđîìéáŐœÌőïìéöÛÁÍÿűőóòđíṉ́±őČŽ¶¶Č”ŸàìńïïŐđïđđïîíéâÔșÆśńîìéìÇŚęśôôóöőòôŚ””¶žșŒœŸźßìńï ïçîìäÖ»Äúòńïíìè»œč··șżÊÖæóÌÌśÍÏÎŃÆßëńï ïæìæŰœÇüôńńïí팰ȘšŠ©Ș°ŽžÄĘÚßßùÜßÏĘëńï ïđíçÛÁÍÿűőóòđíńÍ”±±îČŽ¶¶Č”ŸììëëêíÚĘêńïïțîïïæíçĘÇŚęśôôóöőòô۶””¶žșŒœŸźííĘïÛÛêđîïîïïîîïïîîïîéàÌ»œč··șżÊÖæóÌËÌÌúÍÏÎŃÆííùìïÛÚéđî îííêáÒŸ°ȘšŠ©Ș°ŽžÄĘÙĘßßûÜßÏíììúïÛÚéïîîûíîîíîîűíéäŚÉ»”±±đČŽ¶¶Č”ŸëììëëêíÚììĘîÙÙèđííîîííîíîííîíëćÛÌÁ»¶””¶žșŒœŸźííóïÛëìëììîÙŚçïííóîíîìêæßÖŃÍËËÌÌùÍÏÎŃÆìííòìïÛìëìëëîÙŚçïí íöëæàÛĘŚŰÙĘßßúÜßÏìíììęïÛëëúíŰÖçïí íúëìëêëêêśëììëëêíÚììęîÙëëúíŰÖçïííúîíîíîííőïÛìëìëììîÙëëòíŰÔćïìíìííìíìííüìíìííúìíìíìííôìïÛëìëìëëîÙëëòêìŚŐćîíìííìíìííüìíìííțìííęìíììęïÛëëóíŰêëêëêìŚÓäîììțëììțëììțëììęîÙëëęíŰëëùêëŚÓäîììűëìëììîÙëëìíŰëëêëéëŚÓäíììëììëëììüëìëììëűìëìëëîÙëëńêìŚêëëêèêŚÒăíìëëëíŰëêëêëêìŚêêëêæêŚÒăíëëęíŰëëüêëŚääùăéŚŃâìëëęíŰëëúêëéëŚêêúëđŰŃăëëôêìŚëêëëêèêŚßßüÓŃâëëűêëêëêìŚêêúëêæêŚŃŃűÏŃâêëëêëëüêëêëëùêëêëëêëëüêëŚääüăéŚÿÿüŃáéëëńêëêëêëêëëêêëêëêêëúêëéëŚêêüëđŰÿÿùŃâèêêëêêțëêêțëêêśëêëëêèêŚßßțÓÿÿűŃâèçêêëêêțëêêțëêêúëêæêŚŃŃțÏÿÿûŃâçăääüăéŚÿ ÿüŃăíêêüëđŰÿ ÿüĐÙȚßßțÓÿ ÿęÎĐŃŃțÏÿ ÿÿöçśöśśöśööśśöśőóïóÚæïïÒäĘÉÌÌüÉĘđÿ ÿęöúü üôúöééśòü4±  ę~ÿÿęöùûûțúûûôúűđéűőû<Ž„ęƒÿÿüőúüûûüúûúûûúôùśóéòúțÿł„ęƒÿÿöàśöśśöśööśśöśőóïóôùûúùśńćîüûÉĘđęƒÿÿęöúü üèúöééűùűśóíáëüúț~ÿƒÿÿęöùûûțúûûèúűđéűöùőđèÛæęúúțÿÿ}ÿÿüőúüûûüúûúûûúòùśóéòúęőïæÖáÿúúÿÒ:#(§üööśöśśöśööśśöśőóïóôùûûúùśńćîüûöđæÔÜÿûûúúÿÿù2UŃűöúü üêúöééűúúűśóíáëüúțòéŐÚÿûûőúûûÿÿNËùöùûûțúûûêúűđéűöúùőđèÛæęúúțêÖÜÿûûőúûíÿÿÌùőúüûûüúûúûûúńùśóéòúęűőïæÖáÿúúóțÚàÿęęüüûúÿäÿÿüőúüû ûÛúùśńćîüûűöđæÔÜÿûûúúüæÿüûüüțțüÿńÿÿôùüûûïúűśóíáëüúțűòéŐÚÿûûêúûűŐŃÏÏÓŚàéőÿȚÿôùüûûúûûìúûûúùőđèÛæęúúțóêÖÜÿûûîúûëÆĂĂĆÇËÏÓĘńìóùüûûńúûûúûûùűőïæÖáÿúúòțëÚàÿęęüüûúÿâÊÊőËÍÏĐÎÒÚôùüûûțúûûúŃûúűöđæÔÜÿûûúúęȚæÿüûüüțțüÿíÍÌÍÏŃÓÖŚÏòùüûûúûûúûúûûűúűòéŐÚÿûûßúûùÔŐŃÏÏÓŚàéőÿȚàßàáâáăáóűûûúûûúûúúûùűóêÖÜÿûûđúûìÌÆĂĂĆÇËÏÓĘńìïïúëíæòùûûúûđűôëÚàÿęęüüûúÿăÍÊÊűËÍÏĐÎÒÚùùùűùđòùûúúûûúûûúúûÜúőíȚæÿüûüüțțüÿîÍÍÌÍÏŃÓÖŚÏúúûúûûòńűüûûüúûúûûúżöîàÔŐŃÏÏÓŚàéőÿȚßàßàáâáăáúúûúûüńńűûúûûúûúúûúúûûúöđćÖÌÆĂĂĆÇËÏÓĘńëíïïòëíæûúúûúüńńűüúúûśúûűòçĘÓÍÊÊűËÍÏĐÎÒÚùùûűùđûúúđüńđśûúúûûúûûúûûúúçśòêߌŃÍÍÌÍÏŃÓÖŚÏûúúûúûûòúúöûüńđűûúûûúúûúûÚùôîçăßȚßàßàáâáăáûúúûúûüńûúúûúüńđśûúûúûûóúûúùöîêìæééíïïóëíæúûúúûúüńúûûöúûđïűûúûûúúûùúûúùùśűűțśùùúűùđúûúúęüńúúôûúûđïśûûúûûúúüûúûúúûûúûúûûöúûúúûúûûòúúüûüńúúúüđîśûúúüûúûúúüûúûúúȚûúûúûúûúúûúûüńúûúúûúüńúúûúúûđîśüûúúțûúúțûúúüûúûúúöûúúûúüńúúûûüúûđúúúûđîöûúúțûúúțûúúțûúúțûúúęüńúúûûúûđúúćûđîöüûúûúûúúûúúûúúûúúûúúûûúúüûüńúúęüđúúúûđíöûúúțûúúțûúúțûúúűûúúûúüńúúúûúúûđúúùùúđíöûúúțûúúțûúúûúûüúûđúúęûđúúùűúđíöüúúțûúúúûúûđûúúęûđśśùúđìőûûúúęüđúúęûđúúűùúęđìőûúúțûúúțûúúțûúúúûúúûđúúüùúđóóúôîìőûúúęûđúúüűúđííűìííëìőûúúțûúúęûđśśęúđÿÿùìőùúúûúúțûúúțûú úęûđúúûùúęđÿÿęíöúúüùúđóóęôîÿÿûìőűùúúüűúđííûìííëÿÿüìőűśśęúđÿ ÿüìöüúúûùúęđÿ ÿęìđóóęôîÿ ÿüëììííûìííëÿ ÿțâśśüò9țêÿÿęĐțéÿÿęÈțéÿÿțÄțâśśțțÿÿțêÿÿțéÿÿțúțéÿÿțńțâśśțțÿÿțéțêÿ&ÿțêțéÿ'ÿțóțéÿ(ÿțìțéÿ)ÿûćéÿ*ÿüàéÿ+ÿęÒéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ,ÿțéÿ%ÿé&ÿțéÿ%ÿțéÿ%ÿțéÿÿéțéÿÿțéÿÿțțÿÿțŐéé(/unknownÿ     0(/0,(/0<œű»ž”ŻÍŻÈììŒțáÚ ÚòÙŚÔËșČčèïïíșțÙÏ ÏóÎÌÆč­čžïïíčęÙÎÏÏÎțÏÎÎÏóÎÍÊÁł”ș¶”í·țŰÎÎțÏÎÎńÏÍÍÌËĆČ°șș”í¶țŰÍÍÎìÍÎÍÎÎÍÍËËÈÁ±Żœșč”í¶țŚÍÍțÎÍÍńÌËÊÈÄż­ŹĂŸșž·íŽûŚÍÍÌÍÍÌđÍËËÈÇÀž©šÉÄżș·žíłțÖÌÌçÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»··íČțŐÌÌûËÌËÌËËÊìÇÄŒČą›ÓŃËÆÁ»·°šuíí°țÓË ËêÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶šuííŻțÓÊÊàËÊËÊËÊËÊËËłŸƒ~z‰ŒÜŚÓÓÍÇÂœ”uííźțÓÊÊțÉÊÊæÉÊʛ„„ƒ‚ywƒâĘŰÓÓÎÈĂŸłuííŹüÒÉÉÊÊÉûÊÉɛ„„샂€{yˆéăȚÙÔÓÏÉÄżČuíí«ęĐÈÉÉțÈÉÉüÈÉ­„„ë›čĆÁȘ‰”ìêäßÚÔÓĐÊĆżłuííȘțĐÈÈȚ’„„šÈÈĆÀčȘŹÜŚÔÓŃÏÏÒŃËÆżČv­­©©ĐÈÇÈÇÇÈûĄÇÇæĆÁ»Ż–uom‡‰Œ‘Ÿ«ŒÆœČ­­§§ÎÆÇÇû°„„ŁÇÇçĆÂș±Š„pn‡’“•”’™Ź·łŸŠŠÍÆ ÆțÇÆÆçĆÂŒłȘ€mk“””–˜——•‘˜ĄŸ„„ÍÆÆĆ ÆöÄĂŸ”ąplr”••—ô™››š˜…Ä€€ÌÄĆĆțÄĆĆöĂŸŹzrr‘ ŸŸőĄąŁ„§’ÄŁŁËÄÄțĆÄÄôĂÂź~{z–­°ŻłČČÙłŽ±°Č––ąąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄš}z“·°ŽČ·žččöž·žž™™  ÉĂ ĂțÄĂĂú­ƒ„„ŠĂ Ă ŸöÈÂÂĂÂĂÂĂÂĂĂÂöŸˆƒ„„ÂĂÂÂĂĂÂțĂÂÂùĂ  ŸŸÇÂÂțÁÂÂțÁÂÂû„„ƒ™ÁÁÂțÁÂÂôÁÂÂÁŸŸžžÇÁÁțÂÁÁÂÁű˜„„­ÁÁÂÁÁüÂÁÂÁÁțÄÁÁțÀÁÁíÀÁÀÁÀÀ”„„žÁÀÁÀÁÀÁÁÀÀÁűÀÁœœÄÀ Àû”„„ŒÀÀțÁÀÀ›öĂÀżÀÀżżÀżÀÀùżÀÀżÀÀżżÀđżÀżÀÀżżÀ››ššĂżŸżżțŸżżțŸżżšûÁżŸŸżżűŸżżŸżŸ·„„żùŸżŸżŸżŸŸżŸżš˜țÁŸŸțœŸŸț¶„„ŸțœŸŸțœŸŸęœŸ˜˜üżœŸœœûŸœœŸœœŸț”„„œśŸœŸœœŸœŸœœűŸ˜˜——ż»œœțŒœœúŒœœŒŒ——ńŸ»œœŒŒœŒŒœŒœœŒœœŒțœŒŒűœŒŒœŒŒœŒŒ—ęœșŒŒțœŒŒęșŒ——úœč»Œ»ŒŒ»üŒ»»ŒŒț»ŒŒ»úŒ»»č»——ęŒ¶»»ûŒ»ŒŒ»»țŒ»»țŒ»»üŒ»Œ»»ę¶»——ęŒ”»»țș»»ę”»——úŒŽ»»ș»»ș»ș»ș»ęŽș——ù»Ž”șș»șșü»ș»șș»șù»șș¶łș——țșČ Čțș——ęș¶ČČś”ș———żÁĆĆûż——$—(ŰŚęŰŚŰŰŚűÖÔĐÈæÁÔììŚęòïîîúïîîïïîîòíìèàĐÌÙìđđïÖțîééôçàÔÇȚÙđđïÔțîééțèééòèéæäÚÌŚßŚÖïÓțîééőèééèéèèéèéèèôçäȚÍĐßȚÖïÓűíèèééèéèèțéèèóçćâĘËÌàßĘŐïŃțíè èńçæäăßÖÇÈâàßÜŚïĐțìèèțçèèæóäáÛÓÁÂćăàßÛŰïÏęìçèèçèçèđæääßŰÎŒ»èæăáßÛÖïÎțëççèçțèççêæćăȚŰÍ»”êéæäáßÚĐÄ wïïÍțëççäèçèçèçæćäàŰÍ»źëêéçäáßŰÄ wïïËûëæçæççțæççèæçĐœą œ˜ą„îìêêçäâàÖ wïïËțêææáçææççæçæ裣ąĄ—’œńïìêêçćâàÔwïïÉûëçæçææęçčŁŁìąĄž™• ôòïíêêèćăàÓwïïÉțêææțËŁŁëčŚâȚÈ€ȘöőòđíêêèæăàÒwïïÇźêæćæććæććææ°ŁŁÇćæâȚÖĆŸçăàăâăćêéæäȚÏz””ÆÆéććææćææćć⣣Źććæâߌɰ‰‡šŸą„«žĆŚăÜÏ””ĆĆéććûÏŁŁÂććæăàŰÎÀž‰‡Ÿš©Ș­źŻ­ČÈÖĐàÄÄèäććûäććäććÛâàÚĐƛ†„§Ź­ŻŻČł±°źŽŸàĂĂçćääćäćääććäćääöćăâÛÓœ‹†Œ­­°őŽ””ŽŽĄăÂÂçä äóćäćäâáÜɗŽŹșșőŒœżÁÄźăÁÁçääăäțăääóăäâá͜˜—łÉÍÍÏÏđŃÒÎÌÏłłÀÀçäăääăääęăäăăćäăăǟ›—±ŐÎŃĐŐŰŚŚŰŚŐÖŚ””żżçăăäęăäăăùÍąŁŁĆäăăśäăăäăâăăżżțæă ăúߧąŁĆăățäăăŸœúćăâăâăățâăăđâăăĆŁąžăăâăăâăâăăâțăœœòćâăâăăââăââăăââûžŁŁÎââûăâăăââùăœœŒŒäââțăââăâńŽŁŁÚâăââăâăââăâ⌻țäââțáââùá⎣ŁȚââ»șțăââúáâáâáââáâáęâáââőá»»șșăáââáââáțâááöâáâáâáâáâááüâáâááśâččșșâáâááûâááÚŁŁáțâá áčęáàááàáüàáÙŁŁ áțàáážûâáààááàęáÙŁŁàáțàááíàáàáàážž··áßàááààáààśáààááààáààęáàááśßážž··âȚààțáààțáààțáààûáàȚà··ęáĘààțßààűßàßààĘà··ęàÛààțßààúßàßàßààțßààțßà àęÛß··èßÚàßàßàßàßßàßàßßàßßààßàßßàûßàÚß··îßÚààßßàßàßààßßàßßààßàűßàßàßÙà··úßŰàßàßßțàß ßțàßßöàßßààßßÙß··üߌÚßßțàßßțàßßúàßÚŚß··țßÖ Öțß··ęßÛÖÖśÚß···ââććûâ··$·(ńéđńđńńđđńđđńđńđńïîíéöŐàííđțûú úóűśńçćóóòò””ńïùôűóìâöóòò””ńïțúùùțűù ùôśöđçńśńń””ńîțúùùüűùűùùűśőôòçëśśń””ńîțúù ùűôöőïăçśśöï””ńíțúù ùśűśőôńëàâśśüőń”ńíțúùùțűùùțűùùűűôóîèÜĘűśśęôđńìțúùùűùțűùùőűśôòëćÙŚùűśśęôïńëțúùùűùțűùùśìôòëäŚÒùùűűśśóçâG::•ńńìțúùùțűùùűöùűööńíćŚÍùùöűśśòâG::•ńńêțúùùțűùùüűùűùùöæÖżœș·ĂĆúùùśűśśńG::•ńńëöùűùűűùùűùűűôÓÀÀżŸ»ž”Œûúùùűűśśđ::•ńńêęúűùùűüùűÓÀÀőżŸœč¶żüûúúùùùűśśï:•ńńéțùűűùęűâÀÀóÓíöńáĆÆüüûûúùùúűśöî•ńńéÖúűűùűűùűùùűËÀÀȚùűöòêßÖńîíńńóőùùűűőì€ÂÂèèúùùűŽùűùőÀÀÈùűűśôìâÏŽź«œÁĂĆËÖȚíűôëÂÂèèùűűùùűűùűűæÀÀÚùùűűôíæÚœ«©ŸÆÈÈËÌÎÎÓăîëśèèùùűűùćűùűőïçȚ»§ŠÄÉÉÊËÎÏĐÏÏŐĘśççùűűùûűùùűùùűâùśőđ錫§ŹÊÊÉÉËÍÏŃÓÔÓÇśææùűűùùűűùțűùùöùńà”­­ÈÔÔòÓŐŐŚŚÙÛßÖśææúűűŐùűùűűùűùűűùűùűöă趔ÍáääçæçèéêćäçÚÚææùűűùùűùùßűùùśàŒž”ËëćéçëíîîííììîÜÜććúűűùűùűűùòűùæżÀÀȚűűùűűùűűûùűśśććűùűùűùűùűűùűőôÄżÀȚűùùűùűűőùűùűűććääùűűéùűùűűùűùùűȚÀżÓűùùűűùűùűűúùűùùűääüùűùű űúÓÀÀćűùùűțùűűûùűűùääùűùűțùűűśÏÀÀńùűűùűűśùűùűääăăűűțùűűőùűűÏÀÀôűűùűűùűțùăăìűùùűùűűùűűùűùùűùűűùűűúùűűùùűűűùűùăăââűűüùűùűűüùűùűűțùűűûùűűùââűûùűűùűűțńÀÀűùűùűâ űùûűùűńÀÀțùűűáâęűùű űțńÀÀűțùűűțùűűțùűűâáűțùűűęùűááęűśűűțùűűúùűűśűááęűśűűęöűááęűśű űțùű űțùűűęöűááęűőűűțùűűęőűááęűôűűęôűááęùôűűțùűűęôűááüűóőűűüőóűááțűó óțűááęűöóóśőűáááűűùùűűùùűáá$á(țÿÿüÿęęÿęű ÿțđ ÿęß ÿęÇ ÿęĄ ÿęrÿęGÿț"ÿț ÿțÿęț ÿęę!ÿüű"ÿęđ#ÿûáÿ#ÿüÊÿ$ÿęÿ$ÿę ÿ$ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿ%ÿę!ÿ$ÿś*2@AABCE@@2application/library/img/src/toolbar.xcf000064400000150273147577724760014264 0ustar00gimp xcf v003BBŠgimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) ŻŸ żù T!Đ$é(ä text.pngÿ     đwh|Œÿę4 úÿ7íééűíÿ= èDèêDè ÿBëEEççEEëÿEśE= ćć =EËÿEFGF?7ÜÖ7?FGFÿEFGF44ĂĂ44FGFÿEFG>44ĂĂ44>GFÿ ,;88ûĂĂ88ÌD<ÿ " 00= ĂĂ =00$ÿ " #$ÄĆ$#ÿ " #»»#ÿđÚĐÆÆĐÚÿÿ țÿ ÿÿęx;: :ú;ÿz@óńńűó@ÿ|@đ{MMđMê{đ@ÿ~BòC€€CïïC€€CòBÿEEś|@íí@|EEęÿ€€ś}y<èăx|*8^#M[œkE4:?,WG9lŒo <:_6B* jŒopH1c03jŒoxo;o jŒp{üF†;ùjœkpooûkrlsülŻœŒŒœęÂ}ęuljjúl[|^sțtüMULśŽ›Ł€„€ą™ő’”ÇŰĘŐÄ°’ô‰žÏÄŹ€ŻÈŃȘ€‚ƒ˜ș·Œƒ‘œ·•Ÿ•{—ł‘€Ž‹„šŸˆxƒçŽnŒ°yrsx~GˆœŁă•°Ș‰©špdoŒČuyăŽst’•hŻa¶b±škâ‘UŁZ­»Ź~ZŒâ‘‰n‘‡”\ž”ŻbPŒâ‘Š‰Cr©Zuv{`NŒâ†òsłkBBAHNŒâŒ‘‘ûŽ•Ž•ęÔââăęçŸꗍŒŒúŁƒ•ț–üyxüàæêëëęêćőßàïöęÿüőìàôÙíűôéćêőűçÜ€‚ŃÜìëÖŚÙŚŰíêŰĂËÄÉŰçƠ̂›ÎÚìĐŽ·ÿż­ÎäÂźŻ·°ŠÍìÇŒŰûĆëĐăÌäá”ČčÎ蟎·ûżŻ¶ÒÒ«é©êźíÙŽœûÀĄÖÙÎÛąíöđÄŠœûÀ›™ÛÉò„śüíȘ›œûÀœ›Ž°ćĄ»œÁš™œûœ„òŻí©ŽŽ”™œûŒœÀÀûżĆżÄęŸđûûęÿËęĆŸœœû·Ű·ĂțÄüŽŒŽś"~œÔČmûSäśÿÿüőË6ô=ßÿęïìńÿÿËÓ”ûûËC\Ęÿőm~ÿàÓÿă?Z\ńÿł~żÿđöÿ뀁`3ìÿÔÿÿŽÁ­cìÿŸàđÿûßïśüÿÿżüÈÿś~xÿȚ.…»úÿÉüÿÿÛ!€ÿà's\íÿÌțÿś·%€ÿàŸ'æÿÁéíî陀ÿń7ûȚÿ}ò€ÿÿńààȚûÿđàțÿÿę@€€úxđÿż~ üàÿ~ resize-rotateÿ     Q… ™ ©ú92GGțŸ··ö°Š˜Œ…»Ì;;FFțș””úÌ88;DDț·ČČöˆzA>@2CCŽŻŻśŽCC20@Č­­üČ@0ę;Č°°ęČ;ț)66ț)țvw wùvwwäÂäââțäwwvûáÜÁáÜÜțávvûàÛżàÛÛțàvvuûßÚœßÚÚțßuuûȚÙŒȚÙÙôÀ·tsrttÜŚșÜŚŚêČĘqqossÛżÁÛÖŃÈŒČ­ŃĘoossśżÛÔÔÖŰÚÜĘĘúmssrÚÓÓöͶȘŁÏĘkkqqțŚÒÒúžĘiikppțŐĐĐö©›nmnTppÔÏÏśÔppTSnÓÎÎüÓnSękÔŃŃęÔkțOiițOțUqqțUę)rÿÿțrțtÿ ÿțtțvÿ ÿțvțxÿ ÿțxțzÿ ÿț|ț|ÿ ÿúˆ>~ÿ ÿúB-ÿ ÿû—„ÿ ÿúžG‡ÿÿę€Jț‰ÿÿț‘țŒÿÿțŒț“ÿÿù“ žÿÿùž ,‰ŠŠę‰,à toolbar.pngÿ     )˜à)ŒĐ‹Đ—ĐŁĐŻà*4k?ĆKXßežnŠz‚]‹—dĄÜŹčž Á–ÍHś/44/ˆƒˆö-7ÍÍ7-ÀțÀő$6ÌííÌ6§űŒô#1ÇíîîíǑռó"/ĆíÊÔÔÊíƌ“Ì-ÀíïÁææÁïíÀ†!(œíòòÁïïÁòòíœ(!+HŒùòòÊßßÊòòùŒH+ÉúőőęúÉóĂûööȚȘȘȚööûĂóżûűűœààœűűûżóŒüúúŒĘäÔúúüŒó·țûûÁŰۚûûț·óźțęęÆÓßÛęęțźț€țțûËÏÏËțțț€ónss^CFFC^ssnłŻü­ź§çÊÔËÉÄÈĂŻ€Ą”ŒžžȘłÎÆżÀÀżÆÊ»»úŒČżÂŒœœü»ÇÆÄÄùĆÆÇł¶ÂŒŒžčűžčŒŹ¶Àș»»Œ»úŒœŹčșččțžččžčűŒ«Œ¶·žčžžțčžžöș©č”Ž”Ž””ŽŽś”Ž””·©¶Ż° °ùŽ§Ž­źźŻŻęȧź źû°§ČŒ¶¶·úŒ«l€tvvüz€W>ț°ŒŒ ę©ôŚŚțÔŒŒúU©ĂœœÍÊśÇŽ…3©čȧ§ö©zvj©¶ššűŚŚúmš©§ÈččùźšĄÂčžžúąš›Æ¶¶ù°™§ŒčČČùą§É·șșù蛁«žžę›KFûăääæőÄäúúâÄóáàáȚàúśáȚáàáóßűśćßűńȚćőűßóÜìńôćőëăóńìÜóÚÙßćđđíđćßÙÚśŐÖćììćÖŐóÎĐßæëëíëćĘĐÎóÎííìŐæïŐìíéÎóËíèÔÉèđËÔèíËęĂÂÀÀűïńÂÀÀÂĂő±·ńìž±ûČ»»źüRZRśĆĆšśšöÂăăÂŒđœőżăää㿃˓ô»ă€ËË€ă»}só·ăæîîæă·vÜłăèèôôèèăł]đéé€ŐŐ€ééđ]ŹńììęńŹóšóííÌwwÌííóšó„ôđđččđđô„óœőńń‰”œȘńńőœó–öó󐟱Yóóö–ó’śőő˜š¶°őőś’ó‡ùűűŁŁűűù‡ó  ęÉËÉÉęÇÁìàèăâáäÛɀźżż¶¶żÌßćßààìâĘŐŚŚÖŐŐÖĐŰâÜĘĘÜÜâäââúăćÒÙâÛÛóÚÙÙÚÙÙÚÜËŐßÚÛ ÛûȚÌŐÛÙ ÙûÛËÚÙŰŰÙŰúÙÚËŐŚŐŐÖŐÖûŰÈÓÔÓ ÓûÔŐÇŃÒ ÒüŐÇŃĐ ĐûÓÈÖâÛÛÜúßЁœ”’’•ü”œm>țÎÔÔ ęÊûííțêÔÔú€ÊáȚȚçćśăÔ­fÉÙÓÈÈö˟˜„ÉŐÊÊęííúœÉÊÈăÚÚúϱÈĂĘÙ ÙúÄÈœáÖÖùŃÁÈŰŰÔÔùÄÈăÖÙÙúÀŸÌÂÂęŸ_FțŸ„„ő“€ŰÜĄ“ őžœ Ü۞œž  óœÙÔŻœŰ͛źÒŚœó—ÇÍŃȘŐÄȘĐÍǗ󐔫·ÌÌÈÌ·«”śŽžĂĂžŽ󈍫·ÂÂĆÂł„ˆó†ĆÄ–žÇ–ÂÂÀ†óÄŒ’}œÇ’ŒÄóvsrqrĂÈsqrsvőbdÆÁgbû]kkQÄü‰ń‰śÁÚÚÁsçwöŸÚÛÛÚŸĂlőșÚĆĆÚș{Wô¶ÚĘZööZĘÚ¶tó±ÚßßZùùZßßÚ±őèááĐĐááèęŽéăăęéŽó‰êććœEEœććê‰ó‚íççc’’cççí‚ówíééT™ééíwórđêê^…Œêêđrókńííe|ˆííńkó_ôńńmttmńńô_ śäèéëëêéíęôúùùńûòçÿäßæççßæôÿęțțúüńìïïííûïîóțúúțûüüúęțńóțú úûûíńęú úûûíóûù ùúüíőúű űúùúíóúś śûúëóűö öúśűéóśö öúűèóőőööțőööűőöőöśìśÿ ÿû󹻳ČČüłșˆ>țńîîțÿęìțûûțùîîúȘìűûûűó֙ëôòééöëÍÂÁëńëëÿûûûÊëçéú úúńăêâőű űúçêȚűśśúóáêńś śùèêűśűűùśâœëèèęäxFțGFFő'Fƒ…F'ó<@@B@ˆ~@B@@<ó@†U@†v?S}…@ó?qy}RƒnR|yq?ó18TayysyaT81ś92cppc29ó)0Tajjoj_O0)ó1nigB^oBghg1ó'd\;'\i';\d'ó!`e!ő `[ ś<ŹŹ<>R>ö>ŻÿÿŻ>jÿję?łÿÿûłÿoęAžÿÿțtęCœÿÿț§ęEÂÿ ÿûEFÆÿ ÿúÆFʇfÿÿùf‡Êhÿÿțhțjÿÿțjțlÿÿțlțoÿÿțoțrÿÿțrțuÿÿțuțyÿÿțyó™Ì̀«ŠŠ«€Ì̙ś9ŻŠąąȘ țȚÿÿő© đÿÿöűùùöśśÿŰđÿ ÿęđòÿ ÿęđńÿ ÿęđïÿ ÿęđïÿ ÿęđïÿ ÿęđíÿ ÿęđíÿ ÿęđïÿ ÿęđńÿ ÿûđŽŸź­­ü±Œ^>țĄÿÿț ÿüÿ ÿüÿ ÿü`Cÿ ÿțMÿ ÿęù.ÿ ÿęÆÿ ÿęfÿ ÿüéÿ ÿû©]ę ęûú38 87ûHÌÌfőÌùęÉófÌłMÌÿęłMłÌfóÌÿùÙÌÿù·ÙùÿÌóÌùÿÿÙÿőÙÿÿùÌû>łàìÿÿûìàł>śHÌóÿÿóÌHû>łàìÿÿûìàł>óÌùÿÿÙőÿÙÿÿùÌóÌÿùÙ·ùÿÌÙùÿÌófÌłMłęÿÌMłÌfőÉęùÌûfŃŃHțžŒŒțžśčŒßńńߌčü”čĘŒŒüĘŒžő»ÚčččŸßŒüœÔœüœÔœüŒŐŒüŒŐŒüŒŐŒüŒŐŒ ŒüŒàìââùăââìàŒüŒÏćÏÏüäÏŒüŒËâËËüàËŒóÎô—šÿùĄąÿű§rówüś˜ŹüùĄąțűuótĆțïąșőòŠŽÿÌüŒŸÏŸŸüÍŸŒ Ș&ùvŸ©šžtśž—‰‰—˜ő›‘‚ÿÿ‚‘‘óo‡‡{ÿÿ{‡‡Œ]țŒśpőńNLLShó{ûÖNêíMŚôObóŽpèèĐíïŚôőV\óx^UêíïńôőU]QóFkhZïńôőZhh$őgnn]ôő]nn_śettaattcù5euue56öÿßíńńòđïăôÿíïűûęęûűïâòÿìôûśîëëïűúïíúæđùòäóăśűűíđìőőćóòôöòőòëìőêÍïòöôâéóëîòîđïöóăçńëíïóđïőòâìîéèîìńïőòâóíëæçíîôóńăóőééæáèïđïâëöèêćàŸìäêéçèòïéèäîóYńéèìíìêæéń3ü<‘çććüȚlBú# *ꂅ ü€~~ ûw~Ë~ úwtÊÁtúloÉ°»ooêqaiǧ§Ż””ŽłłČ¶idÄ„„æą–Ž‰††‰›dPXÀŸˆˆ‘ŽŒ‹Š‰XúNJĄt„JJțKú=D€D û/:„: ü'(( ę!țÂĂĂțÂśÁĂæùùæĂÁüÂÄäĂĂüäĂÂőĂâÄÁÁĆæĂüÄÚĂüĂÚĂüÄÛÄüÄÛÄüÄÛÄüÄÛÄ ÄüÄèőêêéüôèÄüÄŐìŐŐüìŐÄüÄÓéÓÓüèÓÄóŐŠ”ÏʐĐɚoónÚʋ—ÎʐÎÖoóo°äɒŁÎ˕ŸÛ›üÄÇŰÇÇüŐÇÄ °śu‚„……„‚uő|‡­ĂÉÈĂ«‡|ó|ŽĂŸŽŽŸÂÀŽ|Ęz…ÀșčŻÿÿŻčșș…z~§žČČȘÿÿȘČČ” ~{ž­­Š€őń’”ž{xčȘûʓêí’Ęô•›xvŽ„éèŰíïĘôő›œvsšŁšêíïńôőšąšsl”«©ïńôő©©lRs©°ŻĄôőĄŻŻŁsRóds«¶¶€€¶¶ȘsdőXdȘ””ȘdXś1QOPPOQ1&ś—ŸšŻ­Š›qő—Š·ÁÄĆÁ”€—󜭾§ž›ž™ŽŒ§ú•€ŽšŽóąż°°Ÿ–›ŹŁ»ó”Ș° „§—š©ŠÍ” °œ›“©™œŁč¶™«”•  ˜—œË”–§Ž“„˜“™Šż—„‹”󱖏Š–ŁŹžˆ•óϓ‘ŒŽ‹ąŁ‡žëԔŽŠŠ€…ŒŒžÁĆł“Š‡’ô&‘‡‰“Š…‰ő Hˆƒ~…„,ú*ęÈË üÈÉÉ ûżÄđÄ úŒÂđéÂú·ŒïĘćŒŒő»Ž·ìŚŚÜáààűßâ·°ìŚŚìÔÎÈĆĂĂĆŃ°ŠȘèÖÏÏÓÒŃŃüĐÒȘú€ŁâÒÚŁŁúžŸà۟ û–™Ę™ ü’’ ꍎțÂĂĂțÂśÄĂæùùæĂÄüĆÄäĂĂüäĂÂőÆâÄÄÄĆæĂüÄÙĂüĂÙĂüĆÛĆüĆÛĆüĆÛĆüĆÛĆ ÄüÄçőééüôçÄüÄŐíŐŐüëŐÄüÄÒéÒÒüçÒÄôucZ__tdóXušbY__u^ô_u@f^;?fduüÄÆŰÆÆüŐÆÄ °śżŃÖÔÔÖŃżőÍÙéòśśòèÙÍóÍÙńòńééńòđÙÍĘ­ÖđíìćÿÿćìííÒ­ÍâêççáÿÿáççêĘÍËéăăŠÜőńĐÏÏŃÚËÉëáûéÒêíÒéôÓŚÉĆéßéèäíïéôőÚÜĆÂăáŰêíïńôőŰáÜÂÂŰééÜïńôőÜééŐ­ÁèïîàôőàîîæÁ­óŸĂìőőăăőőìĂŸő±¶ŐíśśíŐ¶±ś€ĄąąĄ€&ű7RQ:ś:l‡‡i*ôKkE?>G#hu@û1d ”óf‡^`&S:œó…Ja2BKNbŚ‚aTP #>“‡P>^9-ŻˆFBc ű#f™?EęVùPUEü¶ûHMbęÁ+úXŠ„„ țLęîđ üîïï ûéîțî úæéțüéúăćțűûććôäȚßęőőśùùűűùùßÛüőőëòîéæććæíÛÓŚûőòïòńńđđęòŚúĐŃûűúŃŃțĐúÈÍțțÍ ûĆÉțÉ üżÄÄ ężÁțpÙÙțpę_ÙÿÿęÙ_üOÈÿÙÙüÿÙpőŒÿÈ__ÛÿÙüńÿëüëÿëÿÿÿÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿț2ÿ ÿț2śdš¶¶šdőHłÚńüüńÚłHüHÂóÿÿüóÂHüŽóÿÿűóŽeÛÿÿùÛeòÿÿùòčüÿÿùüčșęÿÿùęșžóÿÿùóžhȚÿÿűȚhžôÿÿüôžüJÇôÿÿüôÇJőKŒáôęęôáŒKśk„ĂĂ„k%ö ŠÖőóÌnûGĘúÿÿüűÁ,ü_țÿÿęö9ú)țÿęęÿśàĄÿÿûțęÿÿùqéÿÿęûęÿÿæÎțÿÿûùûęęÿÿïüÿÿęęûûÿûńûÿÿęęûÿûáÔÿÿțęűûÿÿ­Vÿÿûÿú2Źÿÿțzęÿÿęmú3èÿÿêĘm6' 03-193*%ę\™ ü\ÌÌ û\ÌÿÌ ú\ÌÿÿÌę\ÌÿÿÌú™\Ìÿ ÿûÌÌÿ ÿúÌ\Ìÿ ÿțÌę\ÌÿÿÌț™ú\ÌÿÿÌ û\ÌÿÌ ü\ÌÌ ę\™'ꅂ ~ț€ û~Ê~w útÀÈtwțqooú»°ĂolíiÀž·¶¶””ź§§Œiad¶„„㱖Ž‰††‰šdX»ČŻŸ”‘Žƒzz˜XPKJJút‰JNúD{‚D= û::/ (ț' ę!+üwvw úloÁolűioż©żoiüghŸü»hgü^dŒ––ü”d^òP^șš§›ˆŒ”„^PțUTTü’vŽTTțUúLŒr‰L úDƒl€D úI‰…r=BŠ‘{ŠgB;e‚xŒAò3’3ƒ||‚xx‡@='ő$0bv~u_3ő! ț022ț0ù/Ć­­ĂÔŚŚęÚ/ù0ŚŐË”šŃŃęÖ0ù#ÖĐĐ֔ĐĐęŐ#ù*ÔÎÎԎÍÍęÓ*ù!ÒÌÌ҅ËËęŃ!ù ŃËËтÉÉüÏ ù&ÏÉÉÏÇÇęÌ&ù!ÌÇÇÌ|ÄÄęÊ!ùÊÄÄÊwÁÁęÈù ÉĂĂÉsÀÀęÆ ùÇÁÁÇpŸŸęÄúĆżżĆqÂÂțĆûwźÁĂ ûT™'ęËÈ ÉțÈ ûÄđÄż úÂéîÂŒț»ŒŒúćĘꌷí·éăăââáàÜŚŚæ·Ž°âŚŚäÔÎÈĆĂĂĆÙ°ȘćßßÚŐÓÒÎÊÊÖȘŠŁŁúŚÒÚŁ€úŸÚ۟ž û™Û™– ’ț ꎍ+üŒŸŒ ú·ŒìŒ·ű·čìÜìč·ü±ŽêÒÒü莱ŻțéÎÎü䯯òŠȘçÚÙĐÂĆÉÇÖȘŠț„ŁŁüÈŽÆŁŁț„úœÇ·Ćœ ú•ÈŒÇ• ú‘ÌÂʑ ú‡ÎÈ͇ ú‚ŃÍЂ ú~ÒÏŃ~ țayyța'ôŻÊÊÉËÉÉșÈËóĂÌŚćëëćÚËÇÉÉŒžÉèæćèèææèÆíƀÂćĘȚÎÁÂÎćßèć­ÎÜÚŒŸŸœćÙáœłŃÙÆłŽčäÜÜàčŸÒÏŽțŽłłûŽŹźźțŹŒȘÏΗŠÚŐŐĘŠ€ŁčĐĆ„ŁÖÍÙŁ ›ĄÌĐș™žÖÚŃÖŽžŽĐÏŚ U—Ę—ŚŐÖŚŚŐŐ֞…‘ő–čÎÚŰÏ”™ôŽ€ŽŒˆ€țŠ……țŠù†ĘÌËÛæèèęë†ùˆèçàĐŸăăęèˆù†èââèčââęç†ù…æááæ”ààęć…ùƒäßßä°ȚȚęăƒù‚ăȚȚăŹÜÜüá‚}ù„áÜÜáȘÚÚę߄ù€ßÚÚߧŰŰęȚ€ùȚŰŰȚŁŚŚęÛù}ÜŚŚÜĄŐŐęÛ}ùyÛÖÖ۞ÓÓęÙyùvÚÔÔڟŚŚüÛvmùqĄÈŚŰqrrțqúow’șq ügor'ęđî ïțî ûîțîé úéüțéæțäććúúűüćăûßûúúùùőśőőúßȚÛùőőìòîéæććæòÛŚúűűőòòńîîùóŚÓĐŃŃúúűúŃĐúÍęțÍÈ ûÉțÉĆ Äțż ęÁż+üéïé úéëțëéűæéțùțéæüăćțőőüüćăüÛßüòòüúßÛòŰÛüśśòéèéçńÛŰțÔÖÖüçÛæÖÖțÔúŃèßçŃ úÉìæëÉ úÆòîòÆ úÁśöśÁ úŒüûüŒ țžüüțž ț•ŽŽț•'ôßëđòóńîëîđđőöúęțûőïîïïúàìûùùüüûÆîțîŐèúôűíêêïúśúúêÖëóńćăăćűóöćăđîæÛăâűőőöâÇïçÜțßĘĘûßÙÚÚțÙŒŚçïÇÒóòòőÒÓŃßêíÏŃôńőŃÍËÒíïȚ­ÌśśőśÛÌÍÚïńóʀÈúÈúùúúùśűöÏ­ĂőÄÊàđüüńÜÆĂôÁżșżŸÂÁżœŸțš„„țšùšéÛÛæđńńęôšù„ńđêßÏííęń„ùŠńììńÌëëęńŠù©đêêđËêêęđ©ù€ïêêïÆééęî€ù€íééíÄééü퀟ùąíééíĂèèęíąù€íèèíÀççęì€ùĄìççìżææęêĄùĄëææëœääęéĄù êććê»ääęé ùžéääéœèèüêžĄùšÀĘè靛›țšú—ŸČњ ü’œ›'ę™\ Ìț\ ûÌÿÌ\ úÌÿÿÌ\ț™ÌÌÿęÌ\țÌÿ ÿúÌ\Ìÿ ÿûÌÌÿ ÿúÌ\™ÌÌÿęÌ\úÌÿÿÌ\ ûÌÿÌ\ Ìț\ ę™\+ü\Ì\ ú\ÌÿÌ\ę\ÌÿÿęÌ\ę\ÌÿÿęÌ\ę\ÌÿÿęÌ\ę\ÌÿÿęÌ\ț™ÌÌÿÌț™țÌÿÿțÌ țÌÿÿțÌ țÌÿÿțÌ țÌÿÿțÌ țÌÿÿțÌ țÌÿÿțÌû(3ŠÌÌûŠ3- ęęôMŒÁÌŠl\™ó"xŠÏńÿő㿅ÌÌù_ŽÖńÿÿńÌÿÌCmČșÁÌÜÿÿòÌNm‘ˆJ”ÌÿÿóÌ%Tlx2\ÌÿÿűÌ ?@3ț™ÌÌû™™ÌÌț™ű3@? ÌÿÿóÌ\2xlT%Ìÿÿò̔Jˆ‘mNÌÿÿńÜÌÁșȐmCÌÿÌÿÿùńÖŽ_Ìő…żăőÿńÏŠx"ô™\lŠÌÁŒMțUqqțUțrÿÿțrțtÿÿțtțvÿÿțvțyÿÿțyț{ÿÿț{ț~ÿÿę~-țÿ ÿțț„ÿ ÿț„ț‡ÿ ÿț‡ț‹ÿ ÿț‹țÿ ÿțț›ÿÿę›6ù|ÏîÿÿàŠŠț|úG…­Ö© ü*l€ț022ț0ę/ÚŚŚęÚ/ę*ŚŃŃęŚ*ę#ÖĐĐęÖ#ę(ÔÎÎęÔ(ę!ÒÌÌęÒ!ę)ŃËËęÓ)ę ÏÉÉûŃœ ę&ÌÇÇúÌ»žÌ&üg†‘ÄÄúÊ°ÄÊ!üq”‚ĂĂòÉźĂÉvtmŻ~~ÁÁűÇ«ÁÇ o€€țzżżòĆ€żĆkjeœwwˆŒŒúߌĂü`˜tÂÂüĘÂüPMF țw~~țjú|ïéèçććüÏ||óxëáßÜÙŚÖÇóxkś~ìâáßÜÙŚččțzóyëăâáßÜÙŚÖćyó{ëäăâáßÜÙŚć{ó{ëääăâáßÜÙć{óxìæääăâáßÜçxó{íçæääăâáßè{ó|íççæääă⟍uó}îèççæää㉔wçwîèèççæĄˆ‡Żrtv}ïéèèç熀€ào{ïêéèè瞃‚œmjk|đïïîîíí쁘fțxzzü`UYü\g\ó„U‰&Hdt†ómđŐÓûöòÌÔÚímólçÊôûööóÊÔílóoÚđôőăžăđÇíoóqçÊ뱝ŁšÖÔíqóiđŚžîś•ĐÔÚíióhçŃȚăűȚíÌĘíhóiŰđöáŠńæ»ÍæiógçÆö„—ˆ§éđŐgóbđÏÓć}öóđĆæbó^çĂíáśôòĂÔí^ó^ÔđôńËòĆÔÚí^ó|ĐĆĆŸ°­ČŒĆĐyó@đçâßÓÏÔÜäíFțw~~țjö{ïéçććÏ{kőwëáȚÚŚÇów|ùzëâáÇ»€€ü}~jò{ëäâżïéçććÏ{kć|ëääżëáȚÚŚÇów|}ìæäŸëâáȚÚčč«zzíçæœëäâáȚÚŚć{|îççŒëääâáȚÚæ|wîèçșìæääâáȚç}}ïéèčíçæääâáéz{đïîșîççæääâë|gzző|îèççæääìwőyïéèççæäë}ő{đïîîíìëï{țgzzțețŠ……țŠę†ëèèęë†ęŠèääęèŠę†èââęè†ę†æááęæ†ę„äßßęä„ę‚ăȚȚęć‚ę‚áÜÜûäт}ę„ßÚÚúßŃÌ߄ü­ĆÈŰŰúȚÆŰȚ€ü”êÁŚŚòÜƦ܀·čČ眜ÂÖÖűÛÁÖÛ}ČććțčÔÔòÚœÔÚ~Ź­ŠáŽŽ»ÒÒúŰčÒŰyü ß°ŚŚúÚłŚtoü‘Œ†rrțqț°””ț±ô±śôóńńđđß±ŹółőîíêæććŰúł”ś±őđîíêæćÍÍț©ó”öńđîíêæććđ”óŻöńńđîíêæćđŻę°öńńűđîíêæń°ü±śòńńùđîíêń±û­śóòńńúđîíó­ú°śôóòńńûđÒÊžùŹűôôóòńńüÆêșç«űőôôóòÏÄÄç¶č·«űőőôôóÀććúČŹűőőôôËŒŒáŹ­Ź„ùűűśüžß„Łü˜“•ü€Š€ó„U‰)Hdt†ó„ôâßęűűÙâçó„óŠïŚśęűűśŚâóŠóšäôśöêĂìőŚóšó€îŚđËÁĆÀáâó€óŁôăÎòűœßáçóŁó€íȚçêùćńÙçó€óĄßôśèŽöíÏÚìĄóŁíÔś°žČĂđôߣóôÜĘêŹűśôÓìóŸìÓńćűűöÓàóŸóžĘôśôŰűÓàçóžó|ĐĆĆŸ°­ČŒĆĐyó@đçâßÔĐŐĘæîFț°””ț±öŽśôòńđߎ”őŽőîìéćŰúŽ±ù”öđîĘÖÄÄü±”±òŻöńđŰśôòńđߎ”ć°öńńŰőîìéćŰúŽ±ŹśóńŰöđîìéÍÍ«©ŻśôóŚöńđîìéćđŻ­űôôÖöńńđîìéń°«űőôŐśóńńđîìòŹŹűőőÓśôóńńđîôŻȘùűűÓűôôóńńđő­‰ŁŁő«űőôôóńńő«ő„űőőôôóńöŹęȘùűűśüöùȘț‰ŁŁțŠțš„„țšęšôńńęôšę„ńííęń„ęŠńììęńŠęȘđêêęđȘę©ïêêęï©ę„íééęń„ę€íééûđȚ€ŸęąíèèúíĘÚíąüožççúìŐçì€ü`±}ææòëÓæëĄXX\§zz›ććűêŃćê UššțwääòéÎäéąMKRŠtt–ääúéËäéĄüR}sèèúêÇ螙üCA\››țšțŃŐŐțÍüÖęúùùűüìÖÖóŐúöőôòńńæțŐŚśÓûööőôòńȚȚțÊóÒûśööőôòńńűÒóÔûśśööőôòńűÔóÓûűśśööőôòùÓóŐûűűśśööőôùŐóĐûùűűśśööőùĐóÒüùùűűśśö§††ęÌüùùűśüƒ±hęÌüùùóű§‚§fXXÌęùùț€ššùUÉęúùùő„~}Š_KMÇęęüûü|}ZțÂÁÁüuPOü‡‡ó„U‰)Hdt†óżűíćęùűăíòűżóŒóâűęúęűâíűŒóŸêűűùîőúűâűŸûčóáśòòûçíűčóÀűëïüęïîèòűÀóčòäôëęêôëńűčóœäűùôéśöïăńœóŒńȚęćèæëöűäŒó”űçăűăęűűȚń”óčńÛôçęűűÜêűčó¶ßűűőĘűÛêòű¶ó|ĐĆĆŸ°­ČŒĆĐyó@đçâàÙÙȚćíöFțŃŐŐțÍöÙęúùùűìÙŚőŐúöőóńæțŐŃùÔûśöíéÛÛüŃŐÍòÔûśśêęúùùűìÙŚćÓûűśêúöőóńæțŐŃÔûùűêûśöőóȚȚ¶ÊŃüùùéûśśöőóńűÔŃüùùèûűśśöőóùÓÌüùùçûùűśśöőùÔËęúùæüùùűśśöúŃÇęęüæüùùśűśśúŃ„ÁÁęÈüùùûűśûÌüÂęúùùüűûËüÇęęüüûęęÇț„ÁÁț€țUqqțUțrÿÿțrțtÿÿțtțvÿÿțvțxÿÿțxțzÿÿțzț|ÿÿț|ț~ÿÿę~-țÿ ÿțțÎÿ ÿț„țçÿ ÿú‡™Ìèÿ ÿü‰Ìÿ ÿúŒ™Ìêÿ ÿț“țìÿÿęž7üČîÜŠŠț|țMggț$țiÿÿęi%țlÿÿęl&țoÿÿțŁțrÿÿțrțvÿÿțvțzÿÿțzțÿÿțțƒÿÿțƒțˆÿÿțÏțÿÿțèț’ÿÿùé̙—ÿ ÿûÌąÿÿùì̙”ÿÿțđț“ÄÄüéô·ü$f$óMffo‡ÁŽ€xpPó[ŃĂĐíȚßÉÄÀŃ[ó\ÔÊäíàæáÊÄŃ\ó^ŰàäíŚÿđâÊŃ^ó_ÔÊíûÿûÿŐÄŃ_óaŃËôóèÿćÉÀŃaóbŐŃńäçŚßćÌŃbódÙàæőÿæëűŃŐdófŐÊèÿęÿûìàÙfóhŃÆÓśÿèăàËŐhójŐËáăćáßËÄŃjólÙàäêÉßËÄÀŃlțeÿÿùi kÿÿùm ,o„„…ù„o,Mggț$țjÿÿęj&țmÿÿęm'țqÿÿüÈg$țvÿÿęj&ț{ÿ ÿúm'ÿ ÿûŁ†ÿ ÿûvŒÿ ÿû{’ÿ ÿû™ÿ ÿû†źÿ ÿûŒœÂÂțćÿÿû’ț€ÿÿț™ęźÿÿțźęœÂÂțꎂꂎ™țwüw™™ûMć’gûg’ćMûOè†\û\†èOöOì€LL€ìOűRđq1qđRúRózĘRôNő1ò y­Œœ©œœŒ­y òuœ^ččF»uûœ^ŽûŽF°üŽ”ü°Źęxœę°x#ùU‰‹‹‰U󻟟ČÆììÆČŸŸ»óŒèŃáćííćáŃçŒóčćÈĂÆËÌÉÆÊäčùžăÜŐŐÂŒŒüÁDZę”âÚÚśÀúùöóŐąŠęŽßÖÖê»úśőńÎÿ‡°ÜÓÓŃČûűśőÂÂÚV­ÚÎÈÄšęúűśőńó}ȘÔÆĆƧęúúűśőözšĐÆÆò„ęęúúűśùo€ĐÇÇòŁțęęúúűúfŸÏÊÊüŸÿțęęűûüUšÏÌÌțąő‘f,.ŠŃÎÍÌÌțŠțd||țdę{s üx•m ûrÿ’k úpÿÿ‹_ țiÿÿę‰hțgÿÿęˆfțZÿÿę‚^țVÿÿę~SțNÿÿę|LțMÿÿęú\MMțJű=ÿò«ÿčAű+òi.ĘùLś&a~ÿłś Ęù- üwÿP ęFțw~~țjö{ïêèçćÏ{ków~ÇÀÀœÎÇóy|»{ïêèçćÏŒČččzw~ÇÀÀœÎÇóșÎćy{ïêèçćÏŒČčč§ç{yìâàĘÙÇóșÎćčè|zëăâàĘč菧çčê~yëäăâàĘÙćčè·ëz{ìćäăâàĘçčê”ë}|íçćäăâàè·ë·ï}~íççćäăâê”ëz|gzîèççćäăë·ï{ó}ïèèççćäëz|gő}đïîííìëï{țg||țgꎂꂎ™țwüw™™ûMć’gûg’ćMûOé†\û\†éOöOì€LL€ìOűRđq1qđRű!RózĘR!ș‹––•}ő‹•––‹‹”ÓÜĘLJĘĘÜÓ”‹‹°ĘĄ‡ÙƒƒÙ‡—Ü°‹…ĘĄ‡Ő|~~|Շ—Ô…{ՇŚxsósxӇĐ{kŠĘn[ő[nÒŠkljJûMjlù+‰‹‹‰+ó}~~lźììźl~~}ó{Ă„âæîîæâ„Â{ó{Ÿš’˜Ÿ›•›œ{üvœŽȘȘü±”~ęt»ŻŻśźęęúùʋ„ęq¶ŹŹêȘęúùőÖÿšĄoŽšš„ ęúúùÊÊÚ}lŻąš“—ęüúúùőù›g©–””–ęęüúúùú•c€——ò•țęęüúúęŽ^Łššę“ÿęęśüúęŠ[Ł››ûŽÿÿțęęú~TŁžžț‰€€ő‚U\c=„ąĄ  Ÿț=ț))țę{s üx•m ûrÿ’k úpÿÿ‹_ țiÿÿę‰hțgÿÿęˆfțZÿÿę‚^țVÿÿę~SțNÿÿę|LțMÿÿęú\MMțJű=ÿò«ÿčAű+òi.ĘùLś&a~ÿłś Ęù- üwÿP ęFț°””ț±öŽűôóńńߎ”󰔶ȚÚÙŚàŰú°±»ŽűôóńńߌËÍÍ©°”¶ȚÚÙŚàŰúÖàń°ŽűôóńńߌËÍÍĆńČ°őïíêæŰúÖàńŐóź±öńïíêÍÍŹĆńÓô°°öńńïíêæńŐóÒőźČśòńńïíêńÓôŃö«źśóòńńïíóÒőŃùš°śôóòńńïôŃöȘ€‰źűôôóòńńőŃù€ó«űőôôóòńöȘ€‰ûšùűűśśüöù€ț‰€€ț‰ꎂꂎ™țwüw™™ûMć’gûg’ćMûOé†\û\†éOöOì€LL€ìOűRđq1qđRűLRózĘRLèąÉÊÍź›őșŸÍÊÉąąÈÜđőőȚ·őőÔđÜÈąÁÖőÉč󳔳óčÀőÖÁžőÉčîź­­źîčÀìž­îčđȘŹóŹȘíčë­ Êő€‘ő‘€íÊ 3ĄĄ{û|ĄĄ3ù+‰‹‹‰+ó!&&ŁííŁ&&!ó&žwçêńńêçwœ&óšg[dmnh`i˜ù—ŒŽ””üœ =ꔇ‡ś˜ęęûùȚpŹę‚‚ê“ęúùöŚÿšĄŒ||w‰ęûúùËËȚ} ‡sg]}ęüûúùöúž~a^^}ęęüûúùûœțuccö|țęęüûúę•țuggęyÿęęûüûęțtiiûtÿÿțęęț~țtmmțjffüBbcüvsqpponę{s üx•m ûrÿ’k úpÿÿ‹_ țiÿÿę‰hțgÿÿęˆfțZÿÿę‚^țVÿÿę~SțNÿÿę|LțMÿÿęú\MMțJű=ÿò«ÿčAű+òi.ĘùLś&a~ÿłś Ęù- üwÿP ęFțŃŐŐțÍöÙęúùùűìÙŚóŃŐÖíëêéîæțŐŃśÙęúùùűìéȚȚäÊŃŐÖíëêéîæțèíűŐÙęúùùűìéȚȚäÛùĐŐûööôńæțèíűèúÏŐûśööôȚȚ¶ÛùæúÓŐûśśööôńűèúćúÍĐûűśśööôùæúäûÌÏûùűśśööúćúäęÉÓüùùűśśöúäûÊ„ÍüùùűűśśúäęÂęÌęùùùűśûÊ„úÉęęüüûûęęÂț„ÂÂț„ęM/ę/Mzț/ü/zzûzÿz/û/zÿzú/zÿz/ú/zÿz/ô/zÿz//zÿz/ö/zÿzTzÿz/ű/zÿșÿz/ș Pƒ˜­ËÿË­˜ƒP yÂíțÿÿîÿÿțíÂy VÇÿÎœÿÀÀÿœÆÿÇV”ÿÎœÿÂWWÂÿœÆű””țœÿĆYóYĆÿœę”™çÿÉZéZÉțç™AšÆr-%")qƚAöùRggRó™ÌÌĐæÿÿæĐÌ̙țÌÿÿțÌțÌÿÿțÌțÌÿÿțÔțÌÿÿęá%țÌÿ ÿúj&Ìÿ ÿû|Ìÿ ÿûnÌÿ ÿûqÌÿ ÿûsÌÿ ÿûvÌÿ ÿû{Ìÿÿùç…dÌÿÿùÌ ,ŠÌÌüŠ,ęM* üh{* ûiÿ|+ úkÿÿ}+ țmÿÿę,țoÿÿę-țqÿÿęƒ.țsÿÿę„.țuÿÿę†/țxÿÿęőxxțZűzÿï©ÿč/ś~ï_Üöoś‘-˜ÿœ1śc/SȚöqő (œÿ“ő'_•S țMggț$țjÿÿęj&üMgšÿÿęn'țjÿÿùŁMgšÿÿûxjÿ ÿû~nÿ ÿû„sÿ ÿûŠxÿ ÿû~ÿ ÿû—„ÿ ÿûȘŠÿÿùæÁœ"ÿÿùł—ÿÿûæÁœ"țȘÿÿûł+țœÁÁęœ"țw~~țjú|ïéèçććüÏ||óxëáßÜÙŚÖÇóxkś~ìâáßÜÙŚččțzóyëăâáßÜÙŚÖćyó{ëäăâáßÜÙŚć{ó{ëääăâáßÜÙć{ÂxìæääăâáßÜçžéÓ{íçæääăâáßʙüÎ|íççæääăâßÆûxÁ}îèççæääáŚú`ówîèèççæăŰú̎ó}ïéèèçăÙúËá}ó{ïêéèäÚúÌÛë{ó|đïïîŚțÌâëï|țczzü”…zzțcEś…ΰzz°Î…óhâęÍĆllmÍęâhî{ôúúÛÿĆs~”úúô{źśśù{Ő``—{śśîź}îôôœ„žž„œôôî}ólȚó˕””•ËóȚlőŠÏ»••»ÏŠgô¶°êè蝝ê„󰔀”äßߔ”䔎󰉜‰ȚÙى‰Ț‰°óź{’{ÛŰŰĘĘÛ{źțȘnnțȘțš  țšę€ëțțęë€ęĄęûûú“J“ęĄęžúűűúúžęœűóóű–NN|DCęšôđđțP\\ęœőòòűNNCF üMD üŒSˆț°””ț±ô±śôóńńđđß±ŹółőîíêæććŰúł”ś±őđîíêæćÍÍț©ó”öńđîíêæććđ”óŻöńńđîíêæćđŻę°öńńűđîíêæń°ü±śòńńńđîíêń—wh­śóòńńńđîí扟c°śôóòńńêđăÍûFPŹűôôóòńńćËìxó«űőôôóòæÌìż€ó«űőőôôçÌìŸă«ęŹűőőűëÌìŸßöŹę„ùűűűÏűÀäöù„țŠŁŁü‰›ŁŁțŠEś…ΰzz°Î…óhâęÍĆllmÍęâhî{ôúúÛÿÆs~”úúô{źśśù{Öaa™{śśîź}îôôœšĄĄšœôôî}ólȚó˕čč•ËóȚlőŠÏ»••»ÏŠgô¶°êè蝝ê„󰔀”äßߔ”䔎󰉜‰ßÚډ‰ß‰°óź{’{ÜÚÚßßÜ{źțȘnnțȘțš  țšę€ëÿÿęë€ęĄțęęúÛÏÛțĄęžęúúúÆí»ęžęœûűűűÙÊÊëżžźęšúőőțÆèèț±ęœüùùűŃÁÁ涟šDû»â°D üÂźźțŃŐŐțÍüÖęúùùűüìÖÖóŐúöőôòńńæțŐŚśÓûööőôòńȚȚțÊóÒûśööőôòńńűÒóÔûśśööőôòńűÔóÓûűśśööőôòùÓÒŐûűűśśööőôù°-$Đûùűűśśööőí•”ÒüùùűűśśöŰŃû=ęÌüùùűùśŰ‹”‹ęÌüùùùűي”ƒȘęÌęùùùً”ÙÌóÉęúùùç‹”‚ŐûÉțÇęęśüŽíƒÙûęÇț„ÁÁü_ąÁÁț„Eś…ΰzz°Î…úhâęÍĆmmûÍęâhî{ôúúÛÿÈx„”úúô{źśśù{Ùiią{śśîź}îôôœČźźČœôôî}ólȚó˛ÆƛËóȚlőŠÏ»••»ÏŠgô¶°ëé靝ë„󰔀”çâ└甮󰉜‰ăȚȚ‰‰ă‰°óź{’{âààääâ{źțȘnnțȘțš  țšę€ëÿÿęë€ęĄțęęúŠzŠțĄęžęúúúmȘjęžęœûűűűŠxxvieęšúőőțvŠŠțGęœęùùțĄrrüoccFûoZmF üšj˜ŹŹŹŹŹŹŹź țźùČČYČûČ”ț”ț”țž ț»ț»û»ŸțŸțŸțÁ țĆțĆöĆÉÉdÉțÉțÛ ëÛ·çççççççç· ûMggț$țiÿÿęi%țlÿÿęl&țoÿÿțŁțrÿÿțrțvÿÿțvțzÿÿțzțÿÿù›Ż@ƒÿÿùÀÿÁˆÿ ÿúŽFÿÿęĆ.ț’ÿÿțźț—ÿÿț—țąÿÿțąę”ÿÿù” ,ŸÄÄüÿìÓÄÄüŸ,2őN”¶Èȶ”NìOŽŰîùÿÿùîŰŽOqÆđÿÿűđÆqHŸùÿÿúùŸH Đÿ ÿúĐ A±śÿÿűś±AZ„æÿÿŚæ„Z9€ŹŰńțțńŰŹ€9&8Sq€ˆˆ€qS8' û ?țŹŹfęŹ<țźÿÿùëź>°ÿ ÿû°Čÿ ÿûČ”ÿ ÿû”žÿ ÿûž»ÿ ÿû»Ÿÿ ÿûŸÁÿ ÿûÁĆÿ ÿûĆÉÿ ÿûÉÎÿ ÿûÎÛÿ ÿú۷犊ÿùŠç·ÿțô¶°êè蝝ê„󰔀”äßߔ”䔎󰉜‰ȚÙى‰Ț‰°óź{’{ÛŰŰĘĘÛ{źțȘnnțȘțš  țšę€ëțțęë€ęĄęûûęęĄęžúűűęúžęœűóóęűœęšôđđęôšęœőòòęőœBęa€««Șü©Ą_țą——‰—ț›ț€û‚ÿÿ‚țțŸ‡‡û{ÿÿ{‡‡ț”ț˜śyNHSLLSrś“{ubNääMOOțcśpZVSäéSVVțbśƒ^]]ZéńZ]]țdțxhhû`ńö`hhțxnnûfööfnnțottatțhęnxxęn"ț‡ ëŽXĘíééâÛÜàćëòXąŒŒțąóčàçêéçăčÍŹó”ÛŒÚĆŒÛ”ĆÍŻó°Ÿș±ČŸĆ°ÍŹóȘÛĘȚȚĘÛȘĆÍŻó€ÔžÚƞԀ͏ó–Ážź°șƖĆ͛ț||ùuXP7 òqTŃíééâÛÜàćëòęÍŹ üĆÍŻ ęÍŹ üĆÍpț‡ ëŽXĘíééâÛÜàćëòXąŒŒțąóčàçêéçăčÍŹó”ÛŒÚĆŒÛ”ĆÍŻó°Ÿș±ČŸĆ°ÍŹóȘÛĘȚȚĘÛȘĆÍŻó€ÔžÚƞԀ͏ó–Ážź°șƖĆ͛ț||ęuXț òqTŃíééâÛ܏òú–NN|D țP\\ úNNC üMD üŒSˆô¶°êè蝝ê„󰔀”äßߔ”䔎󰉜‰ßÚډ‰ß‰°óź{’{ÜÚÚßßÜ{źțȘnnțȘțš  țšę€ëÿÿęë€ęĄțęęęțĄęžęúúęęžęœûűűęûœęšúőőęúšęœüùùęüœ D#üt„‡„„ś‡„tƒŁÇÌÌËűĆąƒ…ĆŸŸŽŸùÁ…€ÇččûŻÿÿŻččù€}ĂČČûȘÿÿȘČČùŒ}|Ÿ­­ëš’””„|z»Șš“ä䒕•òzvž„›™ä陛›òŸvrČŁąąéńąąù€ro±©©ûŁńöŁ©©úolŽŻŻûšööšŻŻúliŻ¶¶€¶űŹi[°ččü°€[ę=PSSęP=ț‡ ëŽXĘíééăÜĘáçìóXg||țgóyčÁÄĂ»yÍŹór±ŽÚƎ±rĆÍŻóm—Žƒ„‘šmÍŹęg°””ùČgĆÍŻó^©ŠÚƊ©^ÍŹóN–‹}Œ˜NĆ͛țF))ù6XP7 òqTŃíééăÜĘáçìóęÍŹ üĆÍŻ ęÍŹ üĆÍpț‡ ëŽXĘíééăÜĘáçìóXg||țgóyčÁÄĂ»yÍŹór±ŽÚƎ±rĆÍŻóm—Žƒ„‘šmÍŹęg°””ùČgĆÍŻó^©ŠÚƊ©^ÍŹóN–‹}Œ˜NĆ͛țF))ù6X°»ź òqTŃíééăÜĘÂíčóűÙÊÊëżȘŁțÆèèțŽűŃÁÁ涀­ ü»â° üÂźźô¶°ëé靝ë„󰔀”çâ└甮󰉜‰ăȚȚ‰‰ă‰°óź{’{âààääâ{źțȘnnțȘțš  țšę€ëÿÿęë€ęĄțęęęțĄęžęúúęęžęœûűűęûœęšúőőęúšęœęùùęęœ F#ęčŃŐŐűŃčÔäöűűűőăÔŃőńńéńúŃÒőììûćÿÿćììùòÒÎòççûáÿÿáççùíÎÊîăăëàĐÎŃÏÏŃÜÊÉëáàÙÒääÒÓÓòÙÉÆêßÛÚÖäéÖÚÚùÜÆĆéááûÜéńÜááùâĆÀëééûâńöâééúÀżńîîûèööèîîúżčîőőăőűîč«ÌòúúśòÌ«#‘„ŁŁü„‘#ț‡ ëŽXĘíééæäćêïôúX&&țó’œĄ œ•ÍŹó‰]ÚĆ]‰ĆÍŻóc\NQ`hÍŹęˆùŠĆÍŻù~UÚĆU~ęÍŹôcTEHYdĆ͛ț5ùXP7 òqTŃíééæäćêïôúęÍŹ üĆÍŻ ęÍŹ üĆÍpț‡ ëŽXĘíééæäćêïôúX&&țó’œĄ œ•ÍŹó‰]ÚĆ]‰ĆÍŻóc\NQ`hÍŹęˆùŠĆÍŻù~UÚĆU~ęÍŹôcTEHYdĆ͛ț5ùX1*& òqTŃíééæäćgȘgúűŠxxvF țvŠŠțțĄrrüoA üoZm üšj˜țŹŹfęŹ<țźÿÿùëź>°ÿ ÿû°Čÿ ÿûČ”ÿ ÿû”žÿ ÿûž»ÿ ÿû»Ÿÿ ÿûŸÁÿ ÿûÁĆÿ ÿûĆÉÿ ÿûÉÎÿ ÿûÎÛÿ ÿú۷犊úç· ęü jŹœœśŹj kÓśÿÿűśÓk­śÿÿúś­żÿ ÿûżżÿ ÿûżÀÿ ÿûÀÁÿ ÿûÁÁÿ ÿûÁÂÿ ÿûÂĂÿ ÿûĂÄÿ ÿúÄłűÿÿűűłpÛűÿÿśűÛp3‚șËËùș‚3  ú $f fùM$fÙÿÿûfłÌÌțłffûMÌÿÿúÌłÿțÌÿÿúÌÿł3țÌÿÿúÌłÿțÌÿÿúÌÿł3țÌÿÿúÌłÿțÌÿÿúÌÿł3țłÌÌțłffùM$gÙÿÿțxò%hjloqtwz~‚†g ęłÿ üÿł3 ęłÿó!)0ÿłK$ț$f fùM$fÙÿÿûfłÌÌțłffûMÌÿÿúÌłÿțÌÿÿúÌÿł3țÌÿÿúÌłÿțÌÿÿúÌÿł3țÌÿÿúÌłÿțÌÿÿúÌÿł3țłÌÌółfÂàÂfM$gÙÿÿțxù%hjloqÿÿęôÂÿțÌÿęé™ ÿű!)0ÿÿę$ꏊ őŠ‰Ęíëéçäâààêá䦉ƒÚÙŰŚŐÔÒĐÏÍËÊÈƐÿ ÿ̐‰ęđŒđùÛùó óôŹôꉂęűăűúóúùèùùêùꂀûêÚòòÚòòÚòòÚêû€yùś śËùyqśçŒçòÛòê êìŹìśqmöïÛïńìńđáđńăńömcôáĐééĐééĐééĐáôcOőó óüőO ț>ꏊ őŠ‰Ęíëéçäâààêá䦉ƒÚÙŰŚŐÔÒĐÏÍËÊÈƐÿ ÿù‰ęŒęßääüÚäńęęü‰‚ęû ûűꂀûÛùŚááőÜáÜááæû€yùś śòùyqś őȚÔȚȚÔȚćőőûśqmöò òöömcôŹńĐàĐÛÛśÖÛńńôcOőó óüőO ț0ęa€««Șü©Ą_țą——‰—ț›û€‚ÿÿûȘ󟇇€żżŚÿLJ‡”ț˜śykȘäŹLSró“{ubR’ćÍNOOcśpZVSííUVVțbęƒ^]]U]țdțxhhû`öö`hhțxnnûfööfnnțottatțhęnxxęnLțÿ ęÿà ęÿà ęÿà úÿßÿùÿßÿßùÿßÿßùÿßÿßöÿßÿßÿőÿßÿßÿßőÿßÿßÿß2ꏊ őŠ‰ĘíëéçäâààéáâćىƒÚÙŰŚŐÔÒĐÏÍËÊÈƐÿ ÿ̐‰ęőÂőôŻôśÍśôŹôꉂęùîùùêùúđúùêùꂀûêÚòòÚòòÚòòÚêû€yùś śËùyqśíÂíìŻìïÍïìŹìśqmöđæđńăńńêńńăńömcôáĐééĐééĐééĐáôcOőó óüőO ț>ꏊ őŠ‰ĘíëéçäâààéáâćىƒÚÙŰŚŐÔÒĐÏÍËÊÈƐÿ ÿù‰ęÂęßääüÚäńęęü‰‚ęû ûűꂀûŻùŚááőÜáÜááæû€yùś śòùyqśÍőȚÔȚȚÔȚćőőûśqmöò òöömcôŹńĐàĐÛÛśÖÛńńôcOőó óüőO țüt„‡„„ś‡„tƒŁÇÌÌËűĆąƒ…ĆŸŸŽŸöÁ…€ÇččŻÿÿæÄčč€}ĂČČźÏÏáÿŐČČŒ}|Ÿ­­Ûš ŸäŸ”„|z»Șš–±æӓ••zvž„›™í홛›űŸvrČŁąąšąù€ro±©©ûŁööŁ©©úolŽŻŻûšööšŻŻúliŻ¶¶€¶űŹi[°ččü°€[ę=PSSęP=<țÿ ęÿà ęÿà ęÿà úÿßÿùÿßÿßùÿßÿßùÿßÿßöÿßÿßÿőÿßÿßÿßőÿßÿßÿß2ꏊ ÜŠ‰Ęíêéæäâààâäæé߉ƒÚÙŰŚŐÔÒĐÏÍËÊÈƐÿ ÿö‰ęíjíóŠóęęŰôŹôꉂęśßśùéùüûüùêùꂀûêÚòòÚòòÚòòÚêû€yùś śËùyqśćjćêŠêöęöìŹìśqmöîŰîńâńóôóńăńömcôáĐééĐééĐééĐáôcOőó óüőO ț>ꏊ ÜŠ‰Ęíêéæäâààâäæé߉ƒÚÙŰŚŐÔÒĐÏÍËÊÈƐÿ ÿù‰ęjęßääüÚäńęęü‰‚ęû ûűꂀûŠùŚááőÜáÜááæû€yùś śòùyqśęőȚÔȚȚÔȚćőőûśqmöò òöömcôŹńĐàĐÛÛśÖÛńńôcOőó óüőO țęčŃŐŐűŃčÔäöűűűőăÔŃőńńéńśŃÒőììćÿÿæêììòÒÎòççćèèńÿíççíÎÊîăăÛàÛĘäÙÏŃÜÊÉëáàÙÔÚçàÒÓÓÙÉÆêßÛÚÖííŚÚÚùÜÆĆéááŰáùâĆÀëééûâööâééúÀżńîîûèööèîîúżčîőőăőűîč«ÌòúúśòÌ«#‘„ŁŁü„‘#;țÿ ęÿà ęÿà ęÿà úÿßÿùÿßÿßùÿßÿßùÿßÿßöÿßÿßÿőÿßÿßÿßőÿßÿßÿß2ü jŹœœśŹj kÓśÿÿűśÓk­śÿÿúś­żÿ ÿûżżÿ ÿûżÀÿ ÿûÀÁÿ ÿûÁÁÿ ÿûÁÂÿ ÿûÂĂÿ ÿûĂÄÿ ÿúÄłűÿÿűűłpÛűÿÿśűÛp3‚șËËùș‚3  ę *țÿ ÿ ÿ ÿ ÿțÿÿÿÿÿÿÿÿÿțÿÿÿÿÿùÿęÿÿ2țvttțvțvttvûÂÁvnŒnvÁÂvoŸ»˜oillio˜»Ÿoee’Á’eeee’Ÿ’eeaZ_‹ź¶__¶ź‹_ZaUSČŒSSč°SUțKLLûKKLLțK"țFDDûFFDDțFŒ7=‹™==’…=74(7X‘77~†X7(411U‰U1111UzU11+ujK+(--(+Kjl+"yo"#ù#"il"țțț"ûôéÒÛÙÙęĘóęńĆę;ëûŰŚŚłękíęÿŚęiíęŰięjíőÿńœlŁcíőÿȚ…éöš?èő㘍ńđńàuńőŰoéöȚ±ëűżŃÿé@őƒpđđÿȘUÿüÄń úŃèöÿ)śbjjggjjbőck‚—–‚kcóco–š—‹‹—™”oc–bh“‘†ÿÿ†‘‘hb\~Ž‰‰ÿÿ‰‰Œz\]‚||wòíhggju]\{úìäćèëíńjq\\‹văâćèëíńólq\W|smmlëílmmsoWPmzwwsíńswwíeP1Uy||vńóv||uU1óLWz€€tt€€yWLő(Hcy‚‚ycH(ù.9;;9.*ęixttęxiöd‚ČÛé䜂dôizÆÙëììëĐziûkźÒăììüäČkębÎÒÒęŐbû^ÔÒÒììęÛ^üSŃÒììęÜSûIłŐëììüë»IûNdŰçììûđâV&őRYÇB°êóížCû[iĐ û[vŰ7 û\ƒàM üVç^ ę țÀżżțÀțÀżżùÀŸíퟟŸíÀŸŒìëÖŒččččŒÖë쌎ŽĐíĐŽŽŽŽĐìĐŽŽ­ŻźÌèêźźêèÌźŻ­„šèìššêèš„ț ĄĄû  ĄĄț "ț˜™™û˜˜™™ț˜‘ŸÛᑑßۑ‘‰‡ŒłßٌŒŚÛłŒ‡‰‡‡±Û±‡‡‡‡±Ś±‡‡‚ÖĐŻ‚‚„„‚‚ŻĐ҂}ÖÒ}}}ûÏÒ}zyyțzțzyyțz"ûôéÒÛÙÙęĘóęńĆę;ëûŰŚŚłękíęÿŚęiíęŰięjíőÿńœlŁcíőÿȚ…éöš?èő㘍ńđńàuńőŰoéöȚ±ëűżŃÿé@őƒpđđÿȘUÿüÄń úŃéöÿ)ꓶ””궓őłșÌÛááÛÌșłółžÚÛŰÎÎŰÚŰžł–“ŽŚÓÒÉÿÿÉÒÓÓł“ŻÇŃÍÍĆÿÿĆÍÍÏÀŻšĐÇÁÁŒòíŻ­­°ŒššŃÀúìäćéëíń±¶š€ÍŒăâćéëíń󶞀 Ćż··Žë펷·żș œ”ÇÆÆÀíńÀÆÆí°œ“ŸÆÍÍĆńóĆÍÍĞ“ó’ÉÓÒÀÀÒÒǝ’őm‹­ÈŐŐÈ­‹mś`txxt`)ęixttęxiöd‚œăđëƂdôi€ÔćńóóńۀiûkŸâìóóüìÀkębÛââęábû^áââóóęè^üSȚâóóęćSûIșâïóóüńÀIûNhàïóóûôćV&őRYÇD¶ńőń»Cû[iĐ û[vÙ7 û\ƒâM üVè_ ę țíïïțíțíïïùíïțțïëŒëïțțïêțțôêæèèæêôțțêććńțńććććńțńććááßïțțßßțțïßááŚÚțțÚÚțțÚŚțÔÒÒûÔÔÒÒțÔ"țÊÍÍûÊÊÍÍțÊŒĂÆęęÆÆęęÆĂÁŸÂăęęÂÂęęăŸÁœœßęßœœœœßüßœœčüüȚčŸ»»ŸčȚüüčŽüüŽŽŽüꎱŽŽț±ț±ŽŽț±"ûôéÒÛÙÙęĘóęńĆę;ëûŰŚŚłękíęÿŚęiíęŰięjíőÿńœlŁcíőÿȚ…éöš?èő㘍ńđńàuńőŰoéöȚ±ëűżŃÿé@őƒpđđÿȘUÿüÄń úŃéöÿ)ś'IHMMHI'őFPuššuPFóFSŽ“‚‚’ŒSFŹ'LŒ‰ˆ{ÿÿ{ˆ‰†H'@n…€€uÿÿu€€ƒk@CyoohòíUSSYeC>„núìäćéëíńS]>>‚făâćéëíńóUZ>@mZUUęëíUUńZU@2R`]]ZíńZ]]íI29_`^[ńó[^^Y9ó5:ZbaZZaaY:5ő -GZ``ZG- ù*ęixttęxiöd‚Èïőńɂdûi€áńűűüă€iûkÆîôűűüôĆkębéîîęëbû^ïîîűűęò^üSéîűűęíSûIżîöűűęĆIûNhçöűűüêV&őRYÉDčóùó»Cû[iÒ û[xĘ< û\ˆéP üVńd ę $üHÿûÿÿțJÿÿú -·ÿțÿÿühÿțÿÿüćÿüÿÿű ÿęÿęęÿÿőEÿțÿęÿÿęúûűZÿüüÿ«ÿÿőúÿüÿŒ”ł©űÿțÿÿ:țúÿ‰ùüÿßÿüY)ślŠÄÄŠlőMżăőęęőăżMüMÍöÿÿüöÍMüżöÿÿűöżlăÿÿùăl§őÿÿùő§ÄęÿÿùęÄÄęÿÿùęħőÿÿùő§lăÿÿűălżöÿÿüöżüMÍöÿÿüöÍMőMżăőęęőăżMì+C€«ÄÄ«€C- ü ű@ZeZ@ö!b‹ŻÇ”Žb!ôdĄÂÍÎÎÍ€dûCŽÀÈÎÎüȑCę`ŹÀÀęČ`ûoŸÀÀÎÎęĆoüe±ÀÎÎęžeûI—ĂËÎÎęIû${ŸËÎÎûŃžtôsÿ‡„ÄÖĆ©}*ô*|ÿƒ*Vy‡yVú8†ÿŒ%úKÿ–3 ûtÿžD đD„k/,($ %ü•‘• ú‡ÿ‡ț‡‹‹üțęț‹‹û‡‡ëęęüüÖüęęúë‡~ûùùțÓùùêû~xùśÄȶśĐśššČśùxpűőőőÌőőÖÂőűpmőòšœŽòÈòä“éòőmeôđ~đ~đĆđ„ËđđôeZò품€ĐÀíooíòZWńëëțœëëùńWAŐïîîüèșèîîúïŐA"!!üóçó!!ț"țòLûSTTS ûPąąP ûL”“L ûE‹‰E û?{u? û8fd8ț/11ę[Y11ț/ő*+kVMLQZ+*ś!$]HHU$!ùRQ û =Q ûPSSP ùKO©©OKśEI„~~ąIEőCAą‰ulv’ACț:<<ęrp<<ț:û5kh5 û,_], û'US' û!PO! ûON û(ț?@@ț?ő=Cg‚‘ƒgC=û9F‘…‚‚û…“F9Ú4;|pL44Lp|‘<40Zvi0110jx_0*lj@+ô+Aks*%la%ő%dv%^Wń[kFH,Û1KT(79]H:3)&,æüöîçáĘĘôÄ>8îŰŃÊÄŸ»»ôÌ82汆‚}ywwófÄ2'±ÜÚÓÍÇÄÄù»™'  ț &Q&țžžțőš œÒÜÜÒŒ šû•ĄȚÏÌÌûÏÜ •ڏ–ÛÄ»ĄĄ»ĂŚ•‰±Ÿł‰ŠŠ‰ČœŹ‰‚żŻ“ƒôƒ’ź¶‚zÀ«zòzšŽzsčȘsrrősŠ­sk©§…kkÚj€žkdŒš±dŸdcd „ƒd^bŽšșŽ]]xŁ©«b^WőœŹžW±ŻŹ­`XQőÆ»»ÀQ°˜yWRțNMMNMțN'ùóőáƱ«ùóőâƱ«ùôőêÏŽȘùíńêÔ¶ĄùâđßĂ­–ùÒńëÉ°¶űÒËŰőÛ»ȘűŐäçèÎł«űÖèîȚÌ·«űÖÛááÇ·ŹùÌȇÁčŒûĐsÏ ę© ęr ęo&üël ûÌnIæúŐŻ‹Q±úê™Ź\…ùë‘Äe`ŐùäÌkNêùҒŃlEÜùዂiAŐúxïx3Ìú†äv>ĆúłŠfEàúíjM4q ûz›T- őŁ1*‹ĐŐßíŐő`8&„ÄÊŐßîŐ UűQjńèàŚĐÌÌóŃeQM’íÙŃÈż»»ó̄MI«íÙŃÈż»»ó̖IDÊéŃÉÀ·łłóÈ­D>æüöîçáĘĘôÄ>8îŰŃÊÄŸ»»ôÌ82汆‚}ywwóÿÄ2'±ÜÚÓÍÇÄÄù»™'  ț û++ ûŠ}}Š ûLêêL ûk€€kțèééțèőćçòúțțúòçćûàćęúùùûúęćàÚÚȚüóïăÛÛăïóúĘÚÔçîèÔŐŐÔèíćÔÍìćÖÎôÎŐćèÍĆíâĆòĆàçĆŸé⟜œőŸßăŸ¶áăȶ¶Ú”ÆâܶŻÍèìŻđŻźŻàçÉŻ©­òîôòššżćïï­©ąúűöűąśööę«ŁœőęüüęœüăÄąț™˜˜™˜ț™'úœÉr úœËv  úÂ̘5 úžŽ”G úałj% ù5±Ÿ(ù NÌ_ùtŠ1ùąf*ùj: ú–X ęÙy ꩁ ęr ęo&üàLF û§#ĘúŐt7ĄúßCTiùŚ3j ;ŐùÏ.r%%ßùĂ/v$ŐùáxV!Đúfïx żúyäv7œúšŁf:àúíE)k û\w6 ő• ƒĐŐßíŐőQ'}ÄÊŐßîŐ U€‚QjńçßÖÏÌÎÒŚßhQM’íÙĐÆż»œÂÇۋMI«íÙĐÆż»œÂÇÛ IDÊéŃÈŸ·ł”șżŚŒD>æüőíćßĘȚáæêŐ>8îŰŃÉĂœ»ŒżĂÇÜ82汆{xx{†fÓ2'±ÜÚÒÌÆÄĆÈÌÇ€'  ț û û û bb û ślŠÌÌŠlőMÏăőÿÿőăÏMęMÒÿÿęÒMÚÏÿÿśÜÌÌÜśÿÿÏlăÿśÌZZÌśÿăl§őÿÜZôZÜÿő§ÌÿÿÌòÌÿÿÌÌÿÿÌ\™ŚÁńńÁ§őÿܔÌÌJ»ÖόlăÿÿÌÿÌ2ˆČŽŠMżÿÿśÌ3x‘xę„ÌÿÿűÌ@kmm_"ę\ÌÿÿùÌ?TNBț™ÌÌú™ %'ùŽșŽ'ù ©ÓšE ț>ÿÿțpęòÿÿțĆùCÿÿüœZù/ÓÿÿœüxÒÿÿțLțiÿÿț>țQÿÿț~üXèÿÿț_ùóSzS ûĄ ęđ ôQ ô@ üčœ ûZőđú“ÿÿ\úÊÿÿ—ù&ăÿÿÇù0éÿÿȚùDíÿÿê$ù"űÿÿđ+ùêÿÿű<ú”ÿÿúBúdÿÿêúÊÿÿź ú±ÿÿêțgÿÿùy+$ő­Śí80$ț4ggț4ęxÿÿùx) ÿÿù )@ŸÿÿùŸ@WÜÿÿúÜWlÿ ÿûlsÿ ÿûsvÿ ÿúv{ßÿÿúß{V……Ą…ûV†ęû™Ì̙ß7g˜żÌÌÿÿÌÌÉšt?&03Ì̏33*ć ÌûȚÿÿȚÌÌùÊÿêÿÿêÿÿțÊùÈÿçțțçțțęÿÈùÆęäęęäüüęęÆùĂüàüüàúúęüĂùÀúÜûûÜűűęúÀùœűŰúúŰőőûśòœ»òșöÓùùÓóóőđÓÒșò¶őÏűűÏńńőĐíű¶òłóÊüüÊîîóÍóêłòŻńŒÈÈŒììńÉńÛŻò«đźÖÖźêêđÆđA«ę„îèèúîÀî.„ę—đííúđČđ—ațjŒŒțjő Agsrf? óge_PP_ebê dYWWÿÿWWYZ 11>>4 ő 6@@6 5ûb^[TRRțNő`YtŁźźĄjBBó^U·ƒƒ”‹26\U”zvrtuyŽ‰--Yp·zrpnnqŸ~”^&TĄ›vonooÀÿ晝 K±€s·Öpżÿü™~źBŻ€ńÿíÿü–q}ŻBŸšt‡ôÿę–mr—š=dŽyq…Ù™lntŽN6/‡Čwspootłó+ ƒ”˜}|˜Ž}ő!Rš««–L#ù1210122ț1//ę0/ /+ +/ùțę  / ę ę   ˆû„„ˆˆù‡őN}}Nòòęő‡ù†ńKzzKììęń†ù„îIvvIééęî„ù‚êGrrGććęê‚ù€çDnnDââęç€ù~ăAjjAȚȚûáÜ~}ò|à>ff>ÚÚĘ۱«|òzÛ;cc;ŐŐÛźÒûzòwŚ8dd8ŃŃŚ«ŚòwòuÔ1::1ÎÎÔ§ÔêuòrŃ,““,ÊÊŃ€ŃÉręnÎÇÇúΞζnędÏËËúϐÏd@țF\\țFț/00ț/ő/8h‹–•‰f8/ó->Š‡rr‡†=-ê,5†{yyÿÿyy{~4,*axppÿÿp±uW*'yiiÿűëâàáFJY'%{fű᱌ÜčäèJT%#w_ÔŻKÜàKżìPU# eYOTTàäTTOXP Gc``YäèY``í=!ahg_èì_gg[ ó$booZZoo`#ő =appa= ęę&śÉĆÂœ»č·ŽőÇÂÂŚÜÜÖč«©óĆÀÎáŰÎÎŰáȝùŸÎáÌÊÈȊÉßĖ”ŸżáÌÈÇĆÄÄăÇß©»ŚŚÉÆÄĂÂäÿôŃΈŽĘÌÇáîÁăÿęĐÁŚ­ÜÊÊùÿśÿęÍčŸŚz©ÒÔĂÉúÿțË·čÌÇx€°ĘÁŸĆìͶ”·Ú›w›–ÂÛŒșž””·Ùžqqó‘ŠŸÛÌŒșËÙ·lqőŠƒ ÊÓÒǗnpś~zspqql"ù1210122ț1//ę0/ /+ +/ùțę  / ę ę   û„„ ú±8}}8źźț±úŹ6zz6§§țŹú©3vv3€€ț©ú„2rr2  ț„úĄ/nn/››țĄú,jj,——ęš—ô™*ff*’’–“m\ô”(cc(”jŒûô$dd$ˆˆgòôŒ -- „„ŒcŒêô‡\\‡`‡țț…||û…Z…ôț†ü†L†%țčșșțčőžœÙíôôíŰœžó”ÀíëçŰŰçêêż”êČžéàßßÿÿßßàă·ČŻŃÜÖÖÿÿÖ±ÚÉŻ«ĘÏÏÿűëâàá­°Á«§ĘÌűáÊŚÜÓä莜§ŁÙÈÔÉ”Üà”ÙìŸÂŁŸĐËŒÄĂàäĂÄŒËƟ›œÙŰŰÍäèÍŰŰíž›—œÚæćŚèìŚććۜ—ó’áńńÏÏńńà’őa‰žăőő㾉aś SnrrnS &ś@;91-++(ő=6Y–„„•Pó;4Ż’ww’źxù94źmjhhăkŹv4WŻmhecbc¶oŹH-•‘idaa©čÿ㋋&§rf°ÒcžÿûŒiĄŠpsđÿëÿûˆ[g ‘dyòÿę†W[…‡LȘd_uԊVX\ŠArš`\YYX[„iómš‡fd†„főB‡››ƒ=ú#ù1210122ț1//ę0/ /+ +/ùțę  / ę ę  û««ùaÖÿÿցțațƒÿÿțƒț…ÿÿț…ț‡ÿÿț‡ț‰ÿÿț‰țŒÿÿțŒțÿÿęț’ÿÿęÉuț•ÿ ÿț•ț™ÿ ÿț™țœÿ ÿțœțŸÿ ÿțŸțŠÿ ÿúŠ łÿÿùłQ ,›ŸŸü›,śdš¶¶šdőHłÚńüüńÚłHüHÂóÿÿüóÂHüŽóÿÿűóŽeÛÿÿùÛeòÿÿùòčüÿÿùüčșęÿÿùęșžóÿÿùóžhȚÿÿűȚhžôÿÿüôžüJÇôÿÿüôÇJőKŒáôęęôáŒKì+CȘĂĂȘC- ü ś#}ÛóóÛ}#ęSæÿÿęæSęSôÿÿęôSę"ćÿÿúć"~ÿ ÿû~Ûÿ ÿûÛöÿ ÿûööÿ ÿûöÛÿ ÿûÛ~ÿ ÿú~"ćÿÿęć"ęSôÿÿęôSęSæÿÿęæSś#}ÛóóÛ}#"ùïÿïïÿÿțïÿÿęÿ ÿùïÿïïÿÿțï.ùïÿïïÿÿțïÿÿęÿ ÿùïÿïïÿÿțï.ùïÿïïÿÿțïÿÿęÿ ÿùïÿïïÿÿïŸš–“Œˆ„€}zĄô ôêtžô„Ą˜“Ž‰„€|ôo›ôÿÿùôj˜ôŠŠöôd”ôŠÿ©ÿÿÔŹÿșŽë_òȘŹŹ­ź·ș±ÀŸŃžŁŒńźÿ°ÿÿșÚżÖ۞Ԉ†‡đČłłă¶Ò«ŠŽÊ“‚ï·ÿ»ÿŽÊè†ÿÿ™â¶‡~ïș»»Æ„·áœ””™Ő™ezîŸÿżÿùÍÉœœš”ÂmeuíêæâȚÛ É„ÊÂĄÄmnrnhc^[Vri^ą‹X]Y ęr\tüsrqöfdb`^t©§qődg”•\s„›‡nódb~†ZruŒ€„kóa}“sYWpom‰‚iô_usYUljhę[YDę_]ôPNLc_sqYóOdgJHGa_sŠtWóMaycLE_ŠzsWUőI^dpD\‰ƒ[TöFqsBZXVTRöFECBAtsröb`t‹qonófbyw\sŠ§Œslódbx”zZp‡˜Ÿkóa“…yYWmŸ ió_’^Wmljhgú][YWU@úca_][óQPNLJadŠ‹YóO~yJa_w{†WóMwh^G_w‰nWUóKNbu[D\omVRöIHF`ZBXVüECBü=Q= ûi”‡1 ùŸœ°v-śŽ©Á«œŠj"ś‹—ž­j4%műyžŻIƒ^Köœ…yž°McrÓÏËÆÁíxq`V†Ó‰‚|ÏäËÀÇŽŒšČ›„Žš©uÉÊżčł­Š š“†€zoŸżČș„°˜Š‹™sąi·±Ș€—Š„~xrmhdŻ±Ł«–„‰š|q„gc_Ą›”Ž‡{upkfb^òš“†€ztojeab[ ZîÂÁÀŸŒș·”ČŻŹ©„ŁÁś śê żśŐÓĐÎËÉÆĂÁŸś›œśÿÿùś—șśĂĂöś“·śĂÿÄÿÿÔÇÿșŽńŽöÆÆÇÇÉÄ»ĆÀŸŚŁŁ±öÉÿÉÿÿșÚżÖ۞Ԉ†źôËÌÌäÁÒ«ŠŽÊ“ȘóÎÿĐÿŽÊè†ÿÿ™â¶‡šóĐĐÆ„·áœÍ͚ՙe€óÒÿÓÿùÍÉœœš”ÂmeĄòđíêçä É„ÊÂĄÄmnž™–’ŽŠ‡†ią‹y]Y ęr\ÇüÆĆĂö¶ŽČŻ­ÇŰÖĂŽśÈÉȘÆÖŃÊÀół±œÀĆšÄĆÌÓÇŒó±œÇ¶§„ĂÁżÉÄčôźž”§ąœ»čꩧD꟏ôœ™—łź¶Ž§󛧹•“‘°ź¶À”€ó™„ł€”­À·Ž€ąő” Š­«ż»ŠĄö­źŒšŠŁĄŸöŽ‹ŠÇÆĆöČŻÇÎÏĂÂÀ󶱻čȘÆÍÖÌŸół±»ÇșšĂÊÍŃŒó±Çżč§„żŃĐčóźÆĂȘ„żœ»č·ú«©§€ą@úł±źŹȘ󞜙—•°°ÁÁ§󛶳•°źžžœ€󙳩Ą‘­žż±€ąó–—€°ž«ł±€Ÿö”’ĄœŒŠŁüŽ‹ü‹ž„ ûœĆż— ùÀÈŰŃŽ‹śÀËÚÍÄÊ«ƒś»¶ÀÔÍȘŽƒöą ±ÔϘ»‹qö€­ÓΘ‘Œ‘ÓÏËÆÁ폩 ›‘ӏ‰‚|ÏäËÀÇŽŒšČ›„Žš©uÉÊżčł­Š š“†€zoŸżČș„°˜Š‹™sąi·±Ș€—Š„~xrmhdŻ±Ł«–„‰š|q„gc_Ą›”Ž‡{upkfb^òš“†€ztojeab[ ZïđíëëéçæäâàĘÜÚîû ûêŚìûœ˜”‹‡‚~zvûÔëûÿÿùûŃéûééöûÎçûéÿèÿÿŐèÿșŽśËćúééêééŐœßÀŸà«ŁăúêÿêÿÿșÚżÖ۞Ԉ†áúêêäÎÒ«ŠŽÊ“ßùêÿëÿŽÊè†ÿÿšâ¶‡ĘùëëÆ„·áœêêšŐ™eÙùëÿëÿùÍÉœœš”ÂmeŚűśöôóń É„ÊÂĄÄmnÖÓŃÎËÉǟiźą‹Ł]Y ęr\hügfeö\[YXVhĄžeő[_ŽTg’~cóZYv~ŠRfkƒ›{`óYuŒmRPedc€y_ôWnlRNa`^ęSRDęWUôJHGZWljRóJ_bEDCXWl„nPóH]u_GAVƒslPNőEZ^l@Tƒ}TNöBmn?SQONLöBA@?>hgföYXh†edcó\YqoTg€žƒibóZYpsRe~Ž—`óYŒ}rRPc—˜_óWŒ‡WPba`^]úUSRPN@úZYWUTóKJHGEX\„†RóJytEXWqt€PóHscZBVqƒhPNóFJ_qW@TigOLöECB\V?QOüA@?ü  û$d_ ù;pŹŸU śE|Ż’€“KśKEj€šAöÎÇ;ą™Ő°˜öÆÀ@ ™”Š–ÓÏËÆÁíB;,#›Ó‰‚|ÏäËÀÇŽŒšČ›„Žš©uÉÊżčł­Š š“†€zoŸżČș„°˜Š‹™sąi·±Ș€—Š„~xrmhdŻ±Ł«–„‰š|q„gc_Ą›”Ž‡{upkfb^òš“†€ztojeab[ Zę~ăÿ ÿûÊëÿ ÿüűÿ ÿ ÿ ÿ ÿ ÿę˜ÿ ÿț ÿ ÿęžÿ,ÿęœÿ ÿüÄôÿ ÿęțč ÿÿÿțÿÿțźęńÿÿțźțìÿÿúńÿÿžôłÿÿźÿìłęžźDęźžôłìÿźÿÿłúžÿÿńÿÿțìțźÿÿęńțźÿÿțÿÿûłìöźžžÿÿńÿűÿźÿÿłźÿÿÿüìźÿÿÿûńÿÿÿüÿÿÿAÿÿțÿÿÿęńÿÿÿüźìÿÿÿűźłÿÿźÿöÿńÿÿžžźüìłüÿÌ ûęÿÿÀ ÿț ÿțâęđőÿÿțòț.ÿÿț.țšÿÿț”ú˜ÖÖÜțÿÿšöÿőÖÖÁ”ÿÿRÿÇÿWÿUÿ›ÿ[ÿă#ÿ2.0**ÿ”ńÿRÿ]ÿWÿWÿZÿ]ÿxž.32/+ùHRÿRÿYÿYÿYÿ\ÿ`ßû(9940[Ä ÿțł ę!©țš©©ú€üôÍ€úŁš€„„ôŸžÉê㯚©ŸžŸö˜––ÍÙ·Ÿ–šúŽŒŒ—ű‚†šŽŽŸś~ŠŸŠ~”~őu–ÌąwvŠvùmnŃĂnpnțmúfŸĘxgfțdû_ÛŻ_ę_Hû2YWę-! ę·ČČę·ęČ©©ęČę°§§ę°ę­€€ę­ęȘĄĄęȘęšŸŸęŹę„œœû©‹ęĄ˜˜úĄˆƒĄęž••úžy•žęœ““òœv“œŠ§“„ŁŁžű™r™˜śśț–ò–k–„€p„‚‚†‹‹ú”d‹”ę–’’ú–]’ %? ; 6ę™6 û/0™‹00ț/í()—rz‚€wc:)&"“hhàaTICAJ5"ŠfgV@;71+$)l,űù 2  üęțY? ; û6•66ț/00û‹0/É&)=k~ƒ~{qh)("I|uhVIC@@CHg"0vhL==;85* ;YW1"ś ! û  ęțț32ütk6țű7bX( ûAQ'/ ü13 ú"ù ü țę ü  ę ; PęOÙÔÔęÙOęOÔËËęÔOęNÒÉÉęÒNęMÏÆÆęÏMęLÌĂĂęÌLęKÊÁÁęÎKęJÇŸŸûË­JJęHĂșșúĂȘ„ĂHęGÀ··úÀ›·ÀGęFŸ””úŸ˜”ŸFú&$$GČČű»”Č»D^^ț#ŻŻúžŻžCú%##E­­ú¶†­¶@ę;žŽŽúžŽ;%ț)66ț)$ž ü˜™™ û‘’ć’ û‰ŠćŚŠŠț‰퀁ăŸÆÎÍÌËÄł|wߎŽà°§ž˜–Ÿ‹wonÖČžčČŻ­«š€„zmedÌœddűfny† —dù\[Ă[]]ü[l[ü?TTę?Tę1;ț;Yž ™ț˜ û’á’‘ț‰ŠŠûËŚŠ‰É|’ŒËÏÍÊÇœŽË€wšÈÁ·Șž˜””—œžwm‚ĂŒ¶°°ŻźŹ§ąČnod§ŻŽ|ogddö¶čde[n[]]û[ž[\ęT?Tț?ț;ę;022ütk6țű7bX( ûAQ'/ ü13 ú"ù ü țę ü  ę ; węwêææęêwęvćÜÜęćvęväÛÛęävęuăÚÚęăuęuâÙÙęâuętàŚŚęätęsßÖÖûăĂssęsĘÔÔúĘÁœĘsęrÜÓÓúÜłÓÜręqÛÒÒúÛ±ÒÛqú,**SĐĐűÙ­ĐÙp^^ț)ÏÏúŰ©ÏŰpú+))RÎÎúŚŁÎŚnękÚŐŐúڟŐkCțOiițO$é üăää ûÜĘÿĘ ûÔŐÿüŐŐțÔúËÌÿôöűűőśóéÔÌÇÂęïïàëăÚŐÒŰÍÂșčúîńđìëêêéèçĂž°ŻúüŻŻű±·ÁÎèàŻù§ŠÿŠššüŠ·ŠüxŸŸęxŸę_sțsYé äță ûĘțĘÜțÔŐŐûűûŐÔÛÇÌŐìöùűśöòïśÌËÂŚööïäÚŐŃŃÔÙëžĆóôđëëêòéçíčșŻĘćÎÁž±ŻŻęűŻ°ŠłŠššûŠÿŠ§ęŸxŸțxțsęs]2!ûHÌ̓û+~°fúÌÿțćÌú‰ÏœJôfÌćÿúÖ3ŸĘŽö3ŠÌîęăă±ú3ÌóúÔű°çùÒáÒś‘ćęÔcźÜ¶őgÜÿću‘Ő†ùÌûôŽü‚žAúŒćÿÓ3ü„‰ûÌțì‹Ęs2^ÌŒB  8L  țUqqțUțrÿÿțrțtÿÿțtțvÿÿțvțxÿÿțxțzÿÿțzț|ÿÿț|ț~ÿÿę~-țÿ ÿțț„ÿ ÿț„ț‡ÿ ÿú‡™Ìèÿ ÿü‰Ìÿ ÿúŒ™Ìêÿ ÿú“ žÿÿùžI ,‰ŠŠü‰,"ęH™ üHÌÌ ûHÌÿÌ ûHÌÿÿÌÌû˶5ęHÌÿÿśùìÓy ÌÿÿűüĘyHÌÿÿöüÓ5HÌÿÿÌÌűÍŃŚàńëòHÌÿÌ(GÍ¶üHÌÌòzÌ TĄ$).233óŠ  țHę™H ÌțH ûÌÿÌHû5¶ËÌÌÿęÌHú yÓìùÿÿűÌHyĘüÿÿúÌ5ÓüÿÿőÌHëńàŚŃÍÌÌÿîÌH¶ÍG(ÌÿÌHęÌzÌțHęŁ33ô0,'ąW  ö TőPQPQúőQPQPóKvêaLææLaêvKóGàËćŽääŽÜËàGó?SŃĐȚââȚĐŃS?Á899ĄÔŠ,,ŠÔĄ9982ÌżÇÒ--ÒÇżÌ2+Ä»ÄÓ00ÓÄ»Ä+%$$“ÏČ33Čϓ$$%ó2ÆœÙèèÙœÆ2óƱ”Êʔ±ÆóBË'ÆÆ'ËBő  ŚÓ  û ę·ČČę·ęČ©©ęČę°§§ę°ę­€€ę­ęȘĄĄęȘęšŸŸęŹę„œœû©‹ęĄ˜˜úĄˆƒĄûžav••úžy•žúœJJr““æœv“œ-.)DB—Bl™r™#’j]]æs9–k–1/8/b‹‹”d‹”ú–((d’’ú–]’ę€MBBA@@?>>=<<;::CBŰŚÖÔÓŃ>=ŰŚÖÔÓŃ9BŚșž”łĐ=<Śșž”łĐ8AÖž”ł±Î<<Öž”ł±Î7@Ô”ł±źÍ<;Ô”ł±źÍ7@Ół±źŹÌ;:Ół±źŹÌ6?ŃĐÎÍÌÊ::ŃĐÎÍÌÊ5>>=<<;::99877655>=<<;::998776554=ŰŚÖÔÓŃ98ŰŚÖÔÓŃ3<Śșž”łĐ87Śșž”łĐ3<Öž”ł±Î77Öž”ł±Î2;Ô”ł±źÍ76Ô”ł±źÍ1:Ół±źŹÌ65Ół±źŹÌ1:ŃĐÎÍÌÊ55ŃĐÎÍÌÊ0C98776554332110:őőîÈĆÂż»žőőÈĆÂż»žőőĆûûûŽőőĆûûŸŽőőÂûśśû±őőÂûśśû±őőżûśöú­őőżûśöú­őő»ûûúù©őő»ûûúù©őőžŽ±­©„őőžŽ±­©„ő őîÈĆÂż»žőőÈĆÂż»žőőĆûûûŽőőĆûûŸŽőőÂûśśû±őőÂûśśû±őőżûśöú­őőżûśöú­őő»ûûúù©őő»ûûúù©őőžŽ±­©„őőžŽ±­©„őőTőPQPQúőQPQPóKvêaLææLaêvKóGàËćŽääŽÜËàGó?SŃĐȚââȚĐŃS?Á899ĄÔŠ,,ŠÔĄ9982ÌżÇÒ--ÒÇżÌ2+Ä»ÄÓ00ÓÄ»Ä+%$$“ÏČ33Čϓ$$%ó2ÆœÙèèÙœÆ2óƱ”Êʔ±ÆóBË'ÆÆ'ËBő  ŚÓ  û PęOÙÔÔęÙOęOÔËËęÔOęNÒÉÉęÒNęMÏÆÆęÏMęLÌĂĂęÌLęKÊÁÁęÎKęJÇŸŸûË­JJęHĂșșúĂȘ„ĂHûGÀ§ź··úÀ›·ÀGúFŸ››©””柘”ŸF…‡‘ćąČČ»”Č»DyăŐŃŃæۃŻŻžŻžCljdywĆw•­­¶†­¶@ú;žmm—ŽŽúžŽ;%û)6GA66ú)ŁŸžžœ›Ÿžïîîíì읜ïîîíì욞îâáàß윜îâáàß욞îáàßß뜜îáàßß뚞íàßßȚꜛíàßßȚꙝìßßȚÜꛛìßßȚÜꙝììëêê雛ììëêê陝œœ›š™țœœ›š™˜œïîîíì욚ïîîíì옜îâáàß욚îâáàß옜îáàßß뚙îáàßß뗛íàßßȚꙙíàßßȚꗛìßßȚÜꙙìßßȚÜꗛììëêê陙ììëêê閟šš™˜—ę–›ööîÈĆÁŸ»·ööÈĆÁŸ»·ööĆûûûŽööĆûûŸŽööÁûśśû°ööÁûśśû°ööŸûśöúŹööŸûśöúŹöö»ûûúùšöö»ûûúùšöö·Ž°Źš€öö·Ž°Źš€ö öîÈĆÁŸ»·ööÈĆÁŸ»·ööĆûûûŽööĆûûŸŽööÁûśśû°ööÁûśśû°ööŸûśöúŹööŸûśöúŹöö»ûûúùšöö»ûûúùšöö·Ž°Źš€öö·Ž°Źš€ööTőPQPQúőQPQPóKvêaLććLaêvKóGàÊäŽääŽÜÊàGó?SĐÏĘááĘÏĐS?Á899 Ó„,,„Ó 9982ËŸÆÒ..ÒÆŸË2+Ä»ÄÖ22ÖÄ»Ä+%$$”ÔŒ66ŒÔ”$$%ó3ÌĂäśśäĂÌ3óĐș̛ÔԛÌșĐóEŰ)ÓÓ)ŰEő  çâ  û węwêææęêwęvćÜÜęćvęväÛÛęävęuăÚÚęăuęuâÙÙęâuętàŚŚęätęsßÖÖûăĂssęsĘÔÔúĘÁœĘsûrÜßÚÓÓúÜłÓÜrúqÛĘĘŚÒÒòÛ±ÒÛqĐÒÆÓŃÿŃĐĐűÙ­ĐÙpĂÿÿçÆÏÏŰ©ÏŰp·”ŹŒșÿșÆÎÎŚŁÎŚnúkÚ°°ÇŐŐúڟŐkCûOiŠiiûOçè èęçèÿÿèÿèÿèÿèÿèÿèÿèÿèÿèÿèÿèÿ!èÿèÿèÿèÿèÿèÿèÿèÿèÿèÿèÿèÿęèçè èțçśśîÈĆŸ»·śśÈĆŸ»·śśĆûûûŽśśĆûûŸŽśśÂûśśû°śśÂûśśû°śśŸûśöúŹśśŸûśöúŹśś»ûûúùšśś»ûûúùšśś·Ž°Źš€śś·Ž°Źš€ś śîÈĆŸ»·śśÈĆŸ»·śśĆûûûŽśśĆûûŸŽśśÂûśśû°śśÂûśśû°śśŸûśöúŹśśŸûśöúŹśś»ûûúùšśś»ûûúùšśś·Ž°Źš€śś·Ž°Źš€śśû9gg9ő:iiÿÿii:ó;ÿzkÿÿkzÿ;țmÿÿûÛÿÿÛÿÿțmę~ÿÿę~î?ssÜÿŚ••ŚÿÜss?vÿÿû‡‡ÿÿûvyÿÿû‚‚ÿÿîyE||ßÿÏ}}Ïÿß||Eę ŒÿÿęŒ ț‚ÿÿûàÿÿàÿÿț‚óI€ÿ‘…ÿÿ…‘ÿ€IőJ‡"‡ÿÿ‡"‡Jì+33_‰‰_33- ü țUqqțUțrÿÿțrțtÿÿțtțvÿÿțvțxÿÿțxțzÿÿțzț|ÿÿț|ț~ÿÿę~-țÿ ÿțț„ÿ ÿț„ț‡ÿ ÿú‡™Ìèÿ ÿü‰Ìÿ ÿúŒ™Ìêÿ ÿú“ žÿÿöžI ,‰ŠÜÇŠŠü‰,ÿÿÿÿÿÿÿÿÿÿÿęÿÿÿęÿÿÿû û țÿÿÿę ÿÿÿęÿÿÿęÿÿÿęÿÿÿęÿÿÿę őćMA@?=<;CőÈĆÂż»žőAŰŚÖÔÓŃ8őĆûû”Žő@Śșž”łĐ7őÂûśśû±ő?Öž”ł±Î5őżûśöú­ő=Ô”ł±źÍ4ő»ûûúù©ő<Ół±źŹÌ3őžŽ±­©„ő;ŃĐÎÍÌÊ1őőïC875431;MA@?=<;CőőćAŰŚÖÔÓŃ8őÈĆÂż»žő@Śșž”łĐ7őĆûû”Žő?Öž”ł±Î5őÂûśśû±ő=Ô”ł±źÍ4őżûśöú­ő<Ół±źŹÌ3ő»ûûúù©ő;ŃĐÎÍÌÊ1őžŽ±­©„őC875431;őőö棞žœœ›ŸöÈĆÁŸ»·öžïîîíììšöĆûû”Žöžîâáàßì™öÁûśśû°öîáàßßë™öŸûśöúŹöœíàßßȚê˜ö»ûûúùšöœìßßȚÜê˜ö·Ž°Źš€ö›ììëêêé—öö™™˜˜—›Łžžœœ›ŸööćžïîîíììšöÈĆÁŸ»·öžîâáàßì™öĆûû”Žöîáàßßë™öÁûśśû°öœíàßßȚê˜öŸûśöúŹöœìßßȚÜê˜ö»ûûúùšö›ììëêêé—ö·Ž°Źš€öŸš™™˜˜—›ööśțçèèőçśÈĆŸ»·śèÿÿüèśĆûûüŽśèÿÿőèśÂûśśû°śèÿÿőèśŸûśöúŹśèÿÿőèś»ûûúùšśèÿÿőèś·Ž°Źš€śèÿÿțèśśțçèèçèțçśśțèÿÿőèśÈĆŸ»·śèÿÿüèśĆûûüŽśèÿÿőèśÂûśśû°śèÿÿőèśŸûśöúŹśèÿÿőèś»ûûúùšśèÿÿőèś·Ž°Źš€śçèèțçśśțÿțÿÿțÿÿțÿÿțÿÿțÿÿțÿÿțÿÿțÿÿțÿÿțÿÿțÿÿțÿÿęÿÿțÿÿțÿÿțÿÿțÿÿțÿÿțÿÿțÿÿțÿÿțÿÿțÿÿțÿÿțÿÿđű|>application/library/img/src/trashmesh.xcf000064400000001650147577724760014612 0ustar00gimp xcf fileBBG gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) ČÇèƒŒæ™Żf     i}000ü1 țü)ęHęü8%ț8ü$1 ăƒŹă‚€ăƒ€ăƒŒÿ      | 0ő0ő0ő0ÿapplication/library/img/src/toolbar.pxm000064400000147300147577724760014305 0ustar00PXMT_DOCÊHEADER@@NĐ#\™ž™ÉMETADATArp> streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+ _IMAGE_ZOOM_†’„„„NSNumber„„NSValue•„*„„fœ†’„—˜_MASKS_VISIBLE_RECT_†’„—˜{{0, 0}, {0, 0}}†’„—˜_DOCUMENT_SLICES_†’„„„NSMutableArray„„NSArray•–†’„—˜ _PX_VERSION_†’„—˜ 1.6.5†’„—˜_DOCUMENT_WINDOW_RECT_†’„—˜{{370, 43}, {460, 821}}†’„—˜ _PRINT_INFO_†’„„„ NSMutableData„„NSData•–z„[378c] streamtypedè„@„„„ NSPrintInfo„„NSObject…’„„„NSMutableDictionary„„ NSDictionary”„i’„„„NSString”„+NSHorizontallyCentered†’„„„NSNumber„„NSValue”„*„——†’„™™ NSRightMargin†’„›œ„„fH†’„™™ NSLeftMargin†’„›œ H†’„™™NSHorizonalPagination†’„›œ—†’„™™NSVerticalPagination†’„›œ—†’„™™NSVerticallyCentered†’š’„™™ NSTopMargin†’„›œ Z†’„™™NSBottomMargin†’„›œ Z††††’„—˜_LAYERS_VISIBLE_RECT_†’„—˜{{0, 0}, {239, 240}}†’„—˜_DOCUMENT_SLICES_INFO_†’„“–’„—˜PXSlicesPreviewEnabledKey†’„™›„––†’„—˜PXSlicesVisibleKey†’„™›„„cą††’„—˜__OLD_METADATA_FOR_SPOTLIGHT__†’„“–’„—˜ colorMode†’Ż’„—˜ layersNames†’„ –'’„—˜ magnifier†’„—˜ plus-circle†’„—˜Untitled Layer 24†’„—˜ arrow-in-out†’„—˜Untitled Layer 18†’„—˜Untitled Layer 23†’„—˜Untitled Layer 22†’„—˜Untitled Layer 21†’„—˜Untitled Layer 20†’„—˜Untitled Layer 19†’„—˜Untitled Layer 17†’„—˜Untitled Layer 16†’„—˜Untitled Layer 15†’„—˜Untitled Layer 14†’„—˜Untitled Layer 13†’„—˜Untitled Layer 12†’„—˜Untitled Layer 11†’„—˜Untitled Layer 10†’„—˜Untitled Layer 9†’„—˜cursor†’„—˜Untitled Layer 8†’„—˜Untitled Layer 7†’„—˜Untitled Layer 6†’„—˜Untitled Layer 5†’„—˜Untitled Layer 4†’„—˜open†’„—˜mkdir†’„—˜ arrow-090†’„—˜home†’„—˜Untitled Layer 3†’„—˜folder†’„—˜lock†’„—˜fwd†’„—˜back†’„—˜Untitled Layer 2†’„—˜dropbox†’„—˜astersk†’Ò’„—˜Untitled Layer††’„—˜keywords†’„ –†’„—˜ csProfileName†’„—˜Generic RGB Profile†’„—˜resolutionType†’Ż’„—˜ resolution†’„™›„„dŁH†’„—˜ canvasSize†’„—˜ {16, 576}††’„—˜PXRulersMetadataKey†’„“–’„—˜PXSlicesPreviewEnabledKey†’Ż’„—˜PXGuidesArrayKey†’„ –!’„“–’„—˜PXGuidePositionKey†’„™›°–†’„—˜PXGuideOrientationKey†’„™›°–††’„“–’ï’„™›°– †’ń’ò†’„“–’ï’„™›°–0†’ń’ò†’„“–’ï’„™›°–@†’ń’ò†’„“–’ï’„™›°–P†’ń’ò†’„“–’ï’„™›°–`†’ń’ò†’„“–’ï’„™›°–p†’ń’ò†’„“–’ï’„™›°–€†’ń’ò†’„“–’ï’„™›°–†’ń’ò†’„“–’ï’„™›°– †’ń’ò†’„“–’ï’„™›°–°†’ń’ò†’„“–’ï’„™›°–À†’ń’ò†’„“–’ï’„™›°–Đ†’ń’ò†’„“–’ï’„™›°–à†’ń’ò†’„“–’ï’„™›°–đ†’ń’ò†’„“–’ï’„™›°–†’ń’ò†’„“–’ï’„™›°–†’ń’ò†’„“–’ï’„™›°– †’ń’ò†’„“–’ï’„™›°–0†’ń’ò†’„“–’ï’„™›°–@†’ń’ò†’„“–’ï’„™›°–P†’ń’ò†’„“–’ï’„™›°–`†’ń’ò†’„“–’ï’„™›°–o†’ń’ò†’„“–’ï’„™›°–€†’ń’ò†’„“–’ï’„™›°–†’ń’ò†’„“–’ï’„™›°– †’ń’ò†’„“–’ï’„™›°–°†’ń’ò†’„“–’ï’„™›°–À†’ń’ò†’„“–’ï’„™›°–Đ†’ń’ò†’„“–’ï’„™›°–à†’ń’ò†’„“–’ï’„™›°–đ†’ń’ò†’„“–’ï’„™›°–†’ń’ò†’„“–’ï’„™›°–†’ń’ò††’„—˜PXRulersVisibleKey†’„™›łą†’±’Ȇ’„—˜_MASKS_SELECTION_†’„š–I„[73c] streamtypedè„@„„„NSMutableIndexSet„„ NSIndexSet„„NSObject…„I††’„—˜_ICC_PROFILE_NAME_†’â’„—˜_ORIGINAL_EXIF_†’„“–’„—˜{TIFF}†’„“–’„—˜ResolutionUnit†’Ż’„—˜Software†’„—˜Pixelmator 1.6.5†’„—˜ Compression†’„™›°–†’„—˜DateTime†’„„„NSMutableString—˜2011-07-14 21:32:17 +0400†’„—˜ XResolution†’„™››œH†’„—˜ Orientation†’Ż’„—˜ YResolution†’„™››œH††’„—˜{Exif}†’„“–’„—˜ ColorSpace†’Ż’„—˜PixelXDimension†’„™›°–†’„—˜PixelYDimension†’„™›°–@††’„—˜*kCGImageDestinationLossyCompressionQuality†’„™››œ†’„—˜ PixelHeight†’„™››œ@†’„—˜ PixelWidth†’„™››œ†’F’Ż’„—˜{JFIF}†’„“–’„—˜ IsProgressive†’Č’„—˜YDensity†’„™››œH†’„—˜XDensity†’„™››œH†’„—˜ DensityUnit†’Ż†’„—˜{IPTC}†’„“–’„—˜ProgramVersion†’„—˜Pixelmator 1.6.5†’„—˜ImageOrientation†’Ż’„—˜Keywords†’à†’„—˜ ProfileName†’â’„—˜DPIWidth†’„™››œH†’„—˜{PNG}†’„“–’„—˜XPixelsPerMeter†’„™›°– †’„—˜YPixelsPerMeter†’„™›°– ††’„—˜ DPIHeight†’„™››œH†’„—˜ ColorModel†’„—˜RGB†’„—˜HasAlpha†’4’„—˜Depth†’„™›°–††’„—˜_DOCUMENT_LAST_SLICE_INFO_†’„”–’„—˜PXSliceMatteColorKey†’„„„NSColor•ą„ffff†’„—˜ transparent†’Ż’„—˜PXSliceFormatKey†’„—˜PXSliceFormatPNG24††’„—˜_LAYERGROUPS_EXPANSION_STATES_†’„ –'’„“–’„—˜_STATE_†’Č’„—˜_ID_†’„—˜;CD8727C2-6F67-41DA-8C2F-CE505FAB2C7A-33087-000042107C96E923††’„“–’’Č’€’„—˜;073F11BF-5069-446D-96FB-EF109F02CCFA-36602-000097AE2DC51F2F††’„“–’’Č’€’„—˜;C1363BFB-193E-443A-AD0B-8511BC409A6F-29548-000069B198A631CA††’„“–’’Č’€’„—˜;E356DD92-C0F9-4B5D-A211-BF39349433F9-39289-0000E9437ACCF231††’„“–’’Č’€’„—˜;AE2104D9-B13E-4B14-8BAB-AAC3D8FC40DC-35862-0000E8AD7D2189BE††’„“–’’Č’€’„—˜;011BEE3A-A0BC-4226-8CA7-E8E364BF9B8F-39289-0000E916B841A7B5††’„“–’’Č’€’„—˜;75D3E968-C599-48F5-9D1C-F977157F4291-35862-0000E8D3F98A5DCE††’„“–’’Č’€’„—˜;E8447E0C-376F-4BE1-88FB-A14AC09960E3-35862-0000E8D1DEA7B30D††’„“–’’Č’€’„—˜;B4F89CDE-801A-440B-969E-B64590186D69-35862-0000E8C65BD08A75††’„“–’’Č’€’„—˜;1B3A2DB2-462F-4AD2-8E63-A511531582BB-35862-0000E8B73E50FC4F††’„“–’’Č’€’„—˜;3FFF6F4D-C0FE-4904-98E1-7827D4FEDCF8-35862-0000E8AD3A5FD212††’„“–’’Č’€’„—˜;D0DA8E89-B9D2-4998-9F23-95DD3F815B1C-35862-0000E8A6A074A808††’„“–’’Č’€’„—˜;00D96706-BF0C-46D4-BEE4-2857CF789063-35862-0000E87E2F6439E3††’„“–’’Č’€’„—˜;32208EAF-B655-45DF-9226-55D78F3FB892-35862-0000E87BB790E53B††’„“–’’Č’€’„—˜;0B7C488D-95A8-4049-8BAA-8422C47BB507-35862-0000E8715334DD1A††’„“–’’Č’€’„—˜;51CC2D6E-18E6-45EF-99A5-4FF6D23BBE55-35862-0000E86BF410B247††’„“–’’Č’€’„—˜;1721C0AD-21A6-4934-9A35-C0AF5A6197E9-35862-0000E8582FC09B33††’„“–’’Č’€’„—˜;67CB2F1B-C59B-4391-BFEC-460CA1DAC141-35862-0000E8437DFE65C3††’„“–’’Č’€’„—˜;E49BA826-F158-444C-AFBF-1CA4D6D6540B-35862-0000E8367BC6E02E††’„“–’’Č’€’„—˜;016B29D2-3E17-4160-82DC-006092961693-35862-0000E82491257109††’„“–’’Č’€’„—˜;07FA941C-3EF9-4B08-844F-07C031BE3E26-35862-0000E80BBC6B937E††’„“–’’Č’€’„—˜;2EE02F45-7841-41A0-A750-018CA401B0C2-35862-0000E7FB5A9FB437††’„“–’’Č’€’„—˜;FBE60D08-3EA8-45EB-A97E-8900D766368B-35862-0000E7E7482B1C1C††’„“–’’Č’€’„—˜;44E6515D-E251-4175-9B8F-8294CF5BCF3F-35862-0000E7E14671DFD3††’„“–’’Č’€’„—˜;39BD2F4E-7D1A-40E3-B817-17E9E855E914-35862-0000E7D3E6BF9068††’„“–’’Č’€’„—˜;F76A522F-9997-4CF4-A4D4-EC5F801548BF-35862-0000E7B6F42BCBA3††’„“–’’Č’€’„—˜;4432BA72-5B16-43E1-8FAE-C9DB651AC51B-35862-0000E7ADCFEA1C98††’„“–’’Č’€’„—˜;949F4C82-6AAC-4CDB-A190-63EB00C81A5D-35862-0000E78DF34A65F5††’„“–’’Č’€’„—˜;37C2B011-5587-42AD-B6F5-E2FD07E267E8-35862-0000E6D9B27AA223††’„“–’’Č’€’„—˜;50233FD7-2823-4014-A50C-15D5CED50E6C-35862-0000E77FA392AB78††’„“–’’Č’€’„—˜;1D033B45-E2B1-4EFE-92B1-5DE8681F61F7-35862-0000E6DE7A0CC3B3††’„“–’’Č’€’„—˜;7A84FC86-36E9-493B-B9FB-A28B63C1F9C5-35862-0000E6FDE0068401††’„“–’’Č’€’„—˜;9F7F1C9B-8752-4969-ACB6-46386249F9BA-35862-0000E72809E9F8C2††’„“–’’Č’€’„—˜;AEE77F80-5E50-4A57-A909-0A342561B8F1-35862-0000E71BC4FCE99A††’„“–’’Č’€’„—˜;259ABD1D-DCA0-411F-85F3-2554EE05CA0B-35862-0000E71385F4E1E8††’„“–’’Č’€’„—˜;79085DED-F38C-4141-B3C8-ACCE9C02F7B3-35862-0000E70831DA0DFC††’„“–’’Č’€’„—˜;E6893B39-1C08-487D-BC79-EC6F986BFCA4-35862-0000E6F3C79F84A3††’„“–’’Č’€’„—˜;7888F9F4-C832-4179-880A-C90CA687A5BC-35862-0000E6E7B2620386††’„“–’’Č’€’„—˜;D91B76BE-DBDA-4627-9D50-7A221D5C4584-35862-0000E6C9040FDCBD†††’„—˜_IMAGE_VISIBLE_RECT_†’„—˜{{-167, 0}, {429, 779}}†’„—˜_LAYERS_SELECTION_†’„š–8„[56c] streamtypedè„@„„„ NSIndexSet„„NSObject…„I••††† GUIDES_INFO8! 0@P`p€ °ÀĐàđ 0@P`o€ °ÀĐàđ COLORSYNC00appl mntrRGB XYZ Ù  acspAPPLapplöÖÓ-appl dscmòdescüogXYZlwtpt€rXYZ”bXYZšrTRCŒcprtÌ8chad,gTRCŒbTRCŒmluc enUS&~esES&‚daDK.êdeDE,šfiFI(ÜfrFU(*itIT(VnlNL(nbNO&ptBR&‚svSE&jaJPRkoKR@zhTWlzhCNÔruRU"€plPL,ÆYleinen RGB-profiiliGenerisk RGB-profilProfil Générique RVBN‚, RGB 0Ś0í0Ő0Ą0€0ëu( RGB ‚r_icϏđPerfil RGB GenéricoAllgemeines RGB-Profilfn RGB cϏđe‡NöGenerel RGB-beskrivelseAlgemeen RGB-profielÇ|Œ RGB Őž\Ó Ç|Profilo RGB GenericoGeneric RGB Profile1I89 ?@>D8;L RGBUniwersalny profil RGBdescGeneric RGB ProfileGeneric RGB ProfileXYZ ZuŹs4XYZ óRÏXYZ tM=îĐXYZ (Ÿž6curvÍtextCopyright 2007 Apple Inc., all rights reserved.sf32 BȚÿÿó&’ę‘ÿÿûąÿÿęŁÜÀlLAYERSvN'$ 'V*ô-À0ć45É9';ù>ï@ÔDGMI2KĘNˆQCTÉVŻYÙ\‹`TcȘfŃjæn:qxtžwnzÖ~đ‚s…W‡śŠźŽë’q•ž˜(H1 magnifierd';CD8727C2-6F67-41DA-8C2F-CE505FAB2C7A-33087-000042107C96E923@x•’ïKqÇoóּ杧»\žžcĄ SńOz(H$HóG&CČ'>ĐŠ…Fțˆ&Ł›…͘5ÙùăRÜæĐٔH1€żÀÿăz|Ôu*ö†Ûśóy}vûn撰,[(Šâ]—ËŐ)Ër/œÒ™êh_Žă<ćŠÒÓÖÒxxčČ„-ć?„7ș|‚T§>ŽsCŸŻ(eOFŸ=©ŃàÎnjígvkꐠśCę‹ćèłđ ›"BƒŻ„)ű%2™I%bû4ś7)uażóasˆ<èŠ8Nhl Aóń~zT#9'’$őĂIƒ3—žù/ÚÂÌyĐMÁoÜ~=ČvŃ, ’äA7ĆápÜkomžUç»Û‰äűŠú”EɃnŠÍf«ć’‘ù™7éŽöÙ0ŸË€Žç"Ą$Ÿû Őj• ‚Y7zŁQ] Š:|­ŸŸȘńìŃAöśúȘșçï~/„˜őB7Än·{±gϗ—â:öăJ^‹Ćâƒ; ŠÀ0Q/†à.wn{<“™äŠ.đü4J•àJáyț~muőۓÜwęŠ$EđŒz”ŻìÁàéŻcĘ­(ó˜mDéÂaqßqÜŻç:PȘ@pƒR@wŠ}Ï°+`ődPn:ÓSD €à:žh&aËžaăJł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††š! plus-circled';073F11BF-5069-446D-96FB-EF109F02CCFA-36602-000097AE2DC51F2F@QÀx}ßKSqÆÍÖ6­°ćl& ›§șÊ”ÍmJ]†C- r7» ìŠ ąn"VDuQ*ÔjEP(QPiÛp7y3e7pÁ9wăí}ŸâˆŹűÀËû>ŸłSò[vŰk=xƶL4ŒȘŽ83vžqćŸ16UÈÇ"N„c> ÓÚÔÏHWŽŽč€Š:\ĘŁT!ŚĘp­żOëăéșűă*ù—ƘǒŚhhùČ^7ëZA—•bđ^ŐáeH™ÒżMÒùŻÔś~„¶ƒ;Üä/!Ę:ÓŹÀaU€Ü]>ńīʟCÔÿqTĐds+˜±O—ÈíUá°*bŸPëÿ0Șőćéä܀ÀőÔK›››ŽŸŸNö;§Évû” ńn'”>êÓà°*b™lHđïÜÏ€ë:­­­Q:ŠL&C«««”Íf)—ËŃÆÆÙîu’#ÚS€ĂȘHeȞđ-Žڞy)•JQ2™ü«›ÏçÉț ‹€Çœ8ŹŠđ—”/4酇ìŃî-îw]ÌbÇ c{Ű­ÁaUÄä4‡ßr«-ïÈś €9pń\ÌŰmS;ëRá°*Rj2XÍ#őŠă„OoY:GÍLÓkŸpńΘ± ż‡ŐböՖËGÆl+RÜŻ·*Ăäd€yŻ3hŒùttĐeeG ‡śË‡ÎÖ(5ŚÛÔÆ7>Íč,ÌŰá†WÿŒ±0Ò.CiïžŁŠ›ÆfóÛČvK`Æ7î8˜*ÎvJ™2Š’Áÿúxșp8%%ż»(^ęł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††È Untitled Layer 24d';C1363BFB-193E-443A-AD0B-8511BC409A6F-29548-000069B198A631CA@y@x’±kÂPƓè&%»cö‚ƒ:q2ŠŁé$âĐIpÏ"déV„ƒ„›”"+’A7ÄĄ'ÿMrę.ĐBiŽțàăîȚĘćœwy…BA_.—ÔëőNŽăĐh4úŃp8€ńxLûꞄ3hšvgÛ6ç#•L&iœ^łI"‘žQćÖČŹfłÉuÄ6T6›„ÍfĂțEÀ`0àș_ęétúȘțn·ër-\b*“É\쏃v»ęR«ŐžÆ‡űÌ~œ^ęT*u±óÓ&“ çĂs‹EŸÿÇáp j”êc~Çù|~B.]Śï+• ś{ćrÙs]—:Î›eYOÓé”òù<ív;ÎG‚™aHUUo”ZQżßwÇ ĄŃh<†ńȚj”^F‚»ó·Œb0C± Šbæ_pß —ËÛí–LÓ|Ä#Ą_”$)c°‰,ËîKłÙìá7t|îĆbA„RÉ@(`«ł{ęEŸÎËxł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††! arrow-in-outd';E356DD92-C0F9-4B5D-A211-BF39349433F9-39289-0000E9437ACCF231@Śx͏ÍKTQÆ]hŒ ƒ(Ă L iH ź4A„1”„Q*`Á(‚FĐ&"úŰT„ÁZŽ’‚1 QÛžp!‡‚$ÆH·śžgŒß;0aûxžÏŚ;sïă«Yqö„ŠˆoűèŰDėgrÊìĆìù‚>ÚŃâÙ韠cÖtiÊSfś”˜_/eûĘx€ÏŠbȚę˙Ú{ ÉèŰ°5»ó‚łŚń[q4àwżż đО: !ÿĆïœKûĘÉfïÍű”57T<Sy&x{ê€6•§BÇÏ ·¶vèj;è͍t©êÏ'b~żŽĐfç…T·șœ­ëP8•ôŸVń6v@“EÄÛűżÂÄńvÿŃùNoc4YDŒëNđîM)ęőșè͂ mì€Ö7DŻ^s9[;Œő&üÎx“w·?©ŸÌözcBôÊ°àmí€Ö˗DŻ<7ÜȚ>ÙŠàât6ĐëcÂí©҅Kë6ÓčV–$\8-Ÿ&»|ÇĄ&ïJ6^ûF4¶a)/űB_B…Ÿ/XFĐ©–ÆÚ·ę :6á‡~ ?æĘ~0óo‹«ˆx;Ętl"fbțŒż@ëł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††) Untitled Layer 18d';AE2104D9-B13E-4B14-8BAB-AAC3D8FC40DC-35862-0000E8AD7D2189BE@Úx•’ŃKSqĆ7·Šw]æĘF°Ńƒžź0ËЙŃ_Pa€šPQ Ò]˜$ÁƉąEV"Hkó}=íĄbZżRÌÊz*èèőtŸW./”|àśû}ÏáÜ{ŚCéșn& «^âńűUÆù|>3[…Ba·R© \.ŁŒłƒ­ š”UlŸ‡ŻŚńmk?śvńëÇwˆŸQGfo±ùÂ}ć†ÌhïŸTûC=êÆÒÜyù śVŸ`<ż +ś·–Ś!3ZÙ¶]Ìd2àČFzWZő?|ƒłĂK(•JÈçóÎZÎdF‹GÎ$‹ĆÎq[ŁăŁ*5òË0ŻÌą­oŚ—q~,™ŃâHònęZòŠș6ÿC «zȶŚȚBfŽü”żéÔ șdżBČĄúüȖ3™ŃâHònęÇNöȘÔíH=ß/nüê0è/xöìyo€¶amjŰNžp%œžWEc…đ~ˍJeêłś™CÓWŁ™_}!˜ędƒkH=đdúO[tnT* h4zèÍŹôž‘Ł‡ÿÂw9ßî·fžQ©Ź{/Ćż?òc±Û)>]=†ś%ïX*ÒnT*»UIqőÿ˜ žÉ+ ˜«‰aUKC}ò3îž7*•ĘÔèĘRO füGó&/Ášû âœ$“IÄzCè?YŠçŽrŒ]< nhma œăÂôćz$Œ”qY1tŠ±`3æfg19ű»1è(#źęàF„Č@îrbąĘŽŃæ=ˆ9+đȘÉĂ0Äë&MîrȚ^°‚•Êźíąśzđ8ŠZśaȘ„*oűœ&űl6ĘV nT*ë,„‰…ëuĐœ¶Œê·ÒéŽà3ߙqŁR™o'%VBuXîŽçÍ{j€e|æ;3nT*s‹>{öǍZ˜ÍŽYŸÍ:lYnT*;°™|[±±ì?”ęĘUBűM€f‹ÁJyĆ뉬éö‰­ôæl },„ßđ[nžUŠ”eÛR ęò€Ÿ›ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††ÎÒUntitled Layer 21d';E8447E0C-376F-4BE1-88FB-A14AC09960E3-35862-0000E8D1DEA7B30D@€xÒAKÂpÇń]Š7‰‰ą{œ—êžEН{"CEEE†"‚â¶hɍO" Š(((ąüú?Ł ŚàËó‡íÏÆ\.—àśûOAž°™_{žH$:ę~ßœșĘ.ŒvșźCÓ4(Š„ÙÄ;득 MƗțŰÛk‡l0ŒȘT*(—ːe„R …Bč\Ùlét©T Édńx’$!"‰€ă8Ú%Œ^dCĄĐć~żÇIì »ĘFĂÜʊvŁ9ÍûVdÈČ꯷Û-6›­È 7ëőśąŒŐjeŸżȘȘ‡j”ڟI†2dÙ7Œ[.—˜Ïç¶"CÖçó=, l„[L§SÔëuäóysRÖčŐj™ś­ÈőzœłÙ ŁŃÈVdÈz<ž§ÉdQ1 ÉdĐdÿ Íj”zšX,š“žĄÈu»ĘÏŽÏx<¶Č<χÇËâ™eÿ “uÄ:¶3œó‹TIòł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††òÁUntitled Layer 20d';B4F89CDE-801A-440B-969E-B64590186D69-35862-0000E8C65BD08A75@Ł€x’MKQ†ĘŠ;‰‰ąțˆțK”"ÈEëțCˆ€ˆ ˆ ˜èąMédNƒ`ŽáˆbŠƒX’ŒĘsh-ۅ—çpčÏćœË”Ùl~·Ûœîśû·– 9îf4­5 (ő:dYÆs”ŠJ„I’P,QŒ»ĂœÈŁšŸ„^+žșŒš‘ëőzw …òùßÎ|>G㳅”« ŠȚă(cț|ꘅ˜Ęn@€IčąÿœÙl†ŃdŒÛÖ#Ó0&ßtæśÄÀWKf†EQ˜äëńxö§Ó)ïÓ;t:ÎąšÎ’CźxĂCșo8.rÈuč\ÇŁŃOÍžŸššmžŸ8xWx~ąȘȘ •UŠȚnĄW“˜šŠĄ\.3É!Śápœöz=”J%$“Iț?”E5%‡\»Ę~ÖïśĄëúR!‡\łÙŒm±XÎÿłpĆŽŠŹˆŹ.ᘏż“ĐF­ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††áčUntitled Layer 19d';1B3A2DB2-462F-4AD2-8E63-A511531582BB-35862-0000E8B73E50FC4F@’Àxc€žT†™í g@4K2êePú.ćż|3Ś —hPp$íżăFc0N{úß~ŸÎč:ź\±ÄčĂ~•Ńÿ çŽ˜§œá Pš ÈȚžđßfĄÛ>Òùo5AëżtŚKŽâ쇫™úÿ”ïKę·èĐüä’ ’æGț7mŐÿŸPL‚~Š{A ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††)°Untitled Layer 17d';3FFF6F4D-C0FE-4904-98E1-7827D4FEDCF8-35862-0000E8AD3A5FD212@Úx•’ŃKSqĆ7·Šw]æĘF°Ńƒžź0ËЙŃ_Pa€šPQ Ò]˜$ÁƉąEV"Hkó}=íĄbZżRÌÊz*èèőtŸW./”|àśû}ÏáÜ{ŚCéșn& «^âńűUÆù|>3[…Ba·R© \.ŁŒłƒ­ š”UlŸ‡ŻŚńmk?śvńëÇwˆŸQGfo±ùÂ}ć†ÌhïŸTûC=êÆÒÜyù śVŸ`<ż +ś·–Ś!3ZÙ¶]Ìd2àČFzWZő?|ƒłĂK(•JÈçóÎZÎdF‹GÎ$‹ĆÎq[ŁăŁ*5òË0ŻÌą­oŚ—q~,™ŃâHònęZòŠș6ÿC «zȶŚȚBfŽü”żéÔ șdżBČĄúüȖ3™ŃâHònęÇNöȘÔíHùŸŒ§AűÀó><ŸśG–MŽíÄn ÆhânM—7žE#©"ߥqŸÓűțp űûÉÛęÇ6Œrî~°8æuh$UąNšÌ=łŁ]lŚˆwȘ˜í~»ŚSD#©2r€f<Šđڈß2uć$›`ÆÎ4—èc4’*7hVȚç•ŰË„ËíRț3vŠ™;€Ê 'œę:ÚÍˑă–ïûńž·–ŸvìăgŸęÒùo5AëżtŚKŽâ쇫™úÿ”ïKę·èĐüä’ ’æGț7mŐÿŸPL‚~Š{A ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††§Untitled Layer 14d';32208EAF-B655-45DF-9226-55D78F3FB892-35862-0000E87BB790E53B@XÀx•ŃżKaÇq§VÁ%hhžÿâ Zggq’3ÁApDHœú[""ˆŽ_d"dX6x45IXĂQ–à·ïû‰â°Œxžç>Ÿ4ö›]”żÌqœżđNm©ćŽZ-ÉçóÒh4ÌéÇò8<ƒ»T*5„Ż¶•Í!»l6+ćrٜĂĄÜôzÏàŽłÙl esTŻŚ%N‹çyæŒí]KśŽcđ î8éČQ6Ç”ZM’É€d2s.΄ßiwĘ+ƒ;ȚŃeŁlÚŐjU\Ś] ]6ÊæŹR©H±X\ ]6Êæ’ßÍś}YDąC—Čé–J%Y,æ2ŸÏ"ŃĄËFÙô …‚Ÿ% ƒHtèČQ6ț·Ù, x‰D‡.esŸËć$üœÊëô9șl”Íßüțz“śI$:tÙ(Č©NÔ$‘XÛ[]Ɔm\­«ÒM,țĂÒcł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††§qUntitled Layer 13d';0B7C488D-95A8-4049-8BAA-8422C47BB507-35862-0000E8715334DD1A@XÀx•ŃżKaÇq§VÁ%hhžÿâ Zggq’3ÁApDHœú[""ˆŽ_d"dX6x45IXĂQ–à·ïû‰â°Œxžç>Ÿ4ö›]”żÌqœżđNm©ćŽZ-ÉçóÒh4ÌéÇò8<ƒ»T*5„Ż¶•Í!»l6+ćrٜĂĄÜôzÏàŽłÙl esTŻŚ%N‹çyæŒí]KśŽcđ î8éČQ6Ç”ZM’É€d2s.΄ßiwĘ+ƒ;ȚŃeŁlÚŐjU\Ś] ]6ÊæŹR©H±X\ ]6Êæ’ßÍś}YDąC—Čé–J%Y,æ2ŸÏ"ŃĄËFÙô …‚Ÿ% ƒHtèČQ6ț·Ù, x‰D‡.esŸËć$üœÊëô9șl”Íßüțz“śI$:tÙ(Č©NÔ$‘XÛ[]Ɔm\­«ÒM,țĂÒcł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††· cUntitled Layer 12d';51CC2D6E-18E6-45EF-99A5-4FF6D23BBE55-35862-0000E86BF410B247@h€x…Đ1Hqđ;‹[j·p„/pč€!jh‹; :Ź!(Çp’hthł‹tj鈠ÁŁ±Q\…„âZ z}ß„C-=űÁßśŸï•ß“„-ž‚Gx™â›;Ț’đwTێÇă†aô\Ś}ŻV«cÓ4…űæŽ7f˜v8 PÉd2ϟÉD:Ž4›MŃóùșíxc†Yv€Ę MÓüÁ`0FBĘnW87ű†Q(Èf©$–eE7b–vUUœ-—ËŻaÊL±X”'Ï-›ïïE;ȚfŰaWQ#—ËĘśûęÏ „ǑÚ鉜FűæŽ7b–vaßÙM§ÓmÏóȚ†ĂĄŽZ-9°mčŸ8đÍoÌ0Ë»ÀQa=‘HÔđ_Ę5^œ^ÿ°mû‹űæNǍY`‡3)Xvđí ÔàrŠï oÀÌ€€Ę,/ĂÊ?˜Yt”Ű7đT绳 streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††‚ÿÿÿÿPUntitled Layer 11d';1721C0AD-21A6-4934-9A35-C0AF5A6197E9-35862-0000E8582FC09B33@3x}’OH“qÆŁƒ-Hx0hY›ÚY łĐț0lcelBQŃÁ‚(đĐĄAv©E–A™uˆ67f8Êr:WZ:K]Ë?9çțčwZűôęŸèđĆč<‡œ{>ïoûÉŃä˜ ;7ŐdJźr­šȘi1îRŸ 1ù ńń>Ä^DęDF{Ä Ÿowr• ŐW`Ú­ș˜@hžAŸ ęNŒyžműŐe…Çö ‰ poăE>)Žê6_‚ƒ~N»álźOćœAû„ U„y”ÂŽ3țźU7ű=ű,Ü%E‚yϖËBhá@wÆ öčKŠ„êČ­W’äG~śdÜàߔ»€H8ŸO}-9ó‘±ȚŒüż˜JËïgknœ^ŁŰ^![äDy~]2üŃqoƍ!O;*Ë*uőaŹS]m'UäÔț‚›säÇ&żźșasw őÙ‚€őÙê;òŹB=©"§Țž‹ #ö‡îNš6ϘŸ[qĂ?‹Š—\.Ś’–âÌĄmwُOőŻŰ°{?ÁüÂ&șÆƧ8fÚûŠ gőEóŃăt—m8úș`iiĘĂ awwI‘PcĐ6±?;ę=”Ń;à†ć„]t MxăzŸcÜ%e‰,JÎĆȘ’·ÿâđ‡ÏrœŐ _lÆ{Íptw‚ïÇßšÜe‡Âź’RŹ/É{TkŃu,=GёêàIóÁ/üy)Ü„ïŠe2™ò?°-žł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††âAUntitled Layer 10d';67CB2F1B-C59B-4391-BFEC-460CA1DAC141-35862-0000E8437DFE65C3@“Àx‹Á A/ƒ{ >./ÿ&rùˆAÁÇ=ŒÁLĂ*Ž…aYWƂąg˜éaeÆŠ©bȘ˜*ŠÂłüÓùÆ Î;4{Äû#őȚąśsĆ 7ŒÔ{‹űsÇHœ·èę<0‘zožXpȚŁÙăŚ=Ă ł”΄|Ł˜*ŠŠ©bÚ±;â·Ié ăț$Öł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††&ÿÿÿÿ0Untitled Layer 9d';E49BA826-F158-444C-AFBF-1CA4D6D6540B-35862-0000E8367BC6E02E@ŰxcÀÌŐĆ|œLäÒ±a)!. ŒÀÇT>ëŚÇÿżœșńÿËó«ÿ??čôÿ㣠ÿoZę$'-Ì­T†`öV†­žw`Áÿ›;§ęż±cêÿ«[&țżtŐÿ ÛçęÿśíĆ?s…< ê@-(d6.{ŻlžđÿÀŠÿ–vq†—Țb 0 ÖȚ˛úțß;Člfˆ”rP+bïž%`ùp[Ő: V0ùçû›[ÿß=8őÿíĘăÿ_^?űÿé…]X휎±çÿW Qöj-@­`h©XüęííÿïA1d Ă윰ŸìÎX'. V0ùćÇ»;ÿ?<9‡aÈÈöž[ÛùÿÛë›ÿ\4'”‚È/?ȚßęÿńÙŹf Û{zuې[“ÜŽ§”‚È/?>Üûÿé90Ü°˜lï™5ÿzô?ËÇ`P+€üòšÿóË+XÍ@¶wb†Ăłą`łƒźFŠs€Z•€˜䗟ïÿÿò wXÌ@±ŚŚp3P‹ 1È/ż>=űÿćő5ŹfàČ @~ùóćɐ w€ü P˜‚âÉ^m †Û ò 3AfăĂ 5@”ÈöƧ5Sł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††ź  cursord';016B29D2-3E17-4160-82DC-006092961693-35862-0000E82491257109@jx’KKQ†qd.*i^Æ î‡č$ęÜžk#’‹"B$‚è&RŽˆ E?@B‹~ˆíĆE«ÜNÏIŃ8ŠŒ0óś{ÏÇ9'NïDŁQ3Ž&…BaßqœsMÓÖÊÈçó.۶}A†Ei%rčÜ!í3,ËșTUu„ ]Śhcšf ›„‘Íf;ŽęÂ0Œ>ËKáü»ŽüĄZ­^+ŠČ…%T*uŒĘ—J„r#Ër`F2™<Áșrč|KF «/‰DâۜÉdòɝôŒú·b±Ű.V_âńűmîh4úšŚëC>Ęv»ę‰DîùȚ[*•î8Żæp8|c†)ûvX–Q ÜSżX,Ț‡ĂaG7ôÄn«Őz„¶%æÜE±Æç I’ƒÁà}<OÉîRZ†€$€ą f0žûgFp3™ÌƒWCŽ)h•P•™šŒ‹GæjđïŐ4äC(ôšÉ[ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††ĆUntitled Layer 8d';07FA941C-3EF9-4B08-844F-07C031BE3E26-35862-0000E80BBC6B937E@wx’kH“Qǧ”©œ&+“Œ€ÊXinÓć%+›­B„ČLŁÍmÙÚtêV™ŰûPÒïVtі*Ê/}ˆ"PâPA !]üPÍ5śșíéyNôÂA?űÁáœóxÎÑęETTtLZZÚ,;IkÚĂŁČ8gÏ@âZ#őĄ «łóóûÉI iM{tFÒ]Œ„‘Xìdő}°Ù5oÆÇàĘÄkű85Ć„5íљ­çĐ]Œ„±€š‰Ő]y …uWA”ż ÖX ÄvÖŐ߂ąƒŚ Ż¶Š­ŚÁriè.FÂH(h`æ‹cPuö lo}ÀĘÛÚÆ㝒Ö3Ęàè„„ö· CĐڙń ŰyjTÒÒ~‚Aˆąæ|30뙆çÏAa…ćƒ\ž Ä˜„ge5çžBù‰‡’†¶ó0?ÿŒȚïàń|…™oŸ`ôńÚ|…C.Vb”#š0ê]ßrKłÚć8 Àű|?€ĂCœ’ Ćò“ćÄçšőŒ±i˜ÏPmèœù(ö/‚ßï «A}xg§AŁÎtb”—m`ÛŽĘ‡|ShŒ=\œé0æçńęŸˆ4UnÆŒrb•ûX™Ó ZsżäÖZ'„BA|ƒQƒfș:'œŁœXE+kvc[ 8©öˆš!Š^È^•Ú†QÎąÌJŠkŸĂÿÈuŐ6Ì!Țœ…æA3 ę8żävŒrŠWđ|‰ęŠdQeìš·ŒR•š/))BGRRŒŁDò‚e:¶Éu—ÏżŽq68nKźoű-ęe’îRC UTL†;Z(dÿ#Ę„ șT&“É~șț米 streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††RUntitled Layer 7d';2EE02F45-7841-41A0-A750-018CA401B0C2-35862-0000E7FB5A9FB437@Àx…NKhQ}šŽ“O3i2”˜Z'šiëÀHnŹĘˆBŐPÛș(Ôș.Š(hńGW%V\űÙč*”€"‚X…X°"C! ŽĐ’Ő AŚnÌóœ1„k=pxśžÏć ™LžˆFŁ&Æÿ‚9æ16ašŠMF"‘moĐŒ,Ö&b±˜].—„av8ȚòuúÌ1©f<·+•ŠÌd2v0Ütƒ;uúÌAÚä7àĘpGŠÓi[Q/×»>$OÿLMÓìj”*u]·@ž/wêôÁmĄűÿÜp]WZ–őȘT*y]ê°·D»O„ö(Ăù·&Ô§ûCĆá\j”V«ÉéĄÄêTN-R§Ïóšyà|Œ/tu~2·ŒöäòśoK…zíőŒ|ûűŠŒ~TûÁ™€NŸ9æÙC]XĘí#…‰śÌÜÌg?ž?ÔùÆ}9'ÏćÔrwùr§~é۞•ŻKÉ<{š‹“û‚ś[»ÏîÈ «cÙHŽ-űr§NŸ7>/Îüd¶ĘŻŒXz»NŻú|Vž5CïČ]ț1XMp§ț„xĂ»ńiáÚ/ö`‰AĘśđȚÔa—5”șșsò_ NßYœ©3ÏdĄűÄĐĘÿèÔȚ¶•”șă"€~°L»Á0 fá_`Žyö Ę-L‚ P;A”ÁŰî™kPˆßÏ^ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††#đUntitled Layer 6d';FBE60D08-3EA8-45EB-A97E-8900D766368B-35862-0000E7E7482B1C1C@Őx•‘[(ƒqÆżknD)”™JÊY’S ©ćBJ+Ê)\žqćF9JÊáWŠH͍hč eÖ֖™ó0 Û>ł9ćőŸÿÚZŸoÊSOßĆś>żȚçęsšÜ€ÈjyVl‹˜ŁĂCpäOUeKÚ?œ—đú`‚—;đŚÇàș҂Yłô/&"T†cAU“Śé±ŸÀóĆŰÍ{pŻßëŃ«çáÛcúŒ$UmžŽËût Ž«CÆ°ì,€ac ¶§»üPæïëŁÈïĄŒÓzÄ&őü§O]ABïÛł\·ZÆ üúÔ&öœ9΀żŚ1†Q= ŽíÈŰ]ô»Už¶ˆQŠ†"Yÿ»óx›ž1 ›*–§]„ ڃșPgŒ25–$ż».àć»"Cż9}„ țFÔŁLÊҔ Ê»íFÆĐ­B`!Í7„ÎejȘHùàńȚ&ÆĐź A`!ÃïB1ÊÔQ“Ÿúć¶1híÚûÒ.b zêŒQ’€,C:Û­ÈŃűŹj+Ÿ„<í"Æđ>š:c–†ŽBGûÜ\™șD»űúô6ÔgĆ&ìÌś ›Ò»|òŚ@38+Š_}Ä\ž)ă8Žûvć48ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††àUntitled Layer 5d';44E6515D-E251-4175-9B8F-8294CF5BCF3F-35862-0000E7E14671DFD3@Ăx…’]HSaǝDb&ˆĐŽzQt„ȚVvă”7EDwI’ą}0!‚Ł&fB]K„M]Y­3S7)?VÙN.ĘΜÛÙ<ûpn;gskZ‹ąą@âíyÍEç"úߗó<ÿßyyÎyòțĄœEìߌ„OxüŻ‚8VRRҔŸŸ–È vuŐÖÖ҅…»‹ŠöôBO yyyykYYÙ @D:TIœ^ŽYYJß3o2ôy73©lÈ|żÓiÒśŰdžնĆčç,Î"Ôêé“+†Ÿv&òŻc>đńÂZ(ö»\§t€}‡ŻD€Ă•Ä™gcBAŻ“Ç|’e_N= nÜiAi7ęiŐ·”V+Ìă, "Aí,m”Ź Ęmg~&›Œ±•êiFŒZ¶•"‘Ćšárśă, "©"Îăù'F\ÁĄÎŻÙ(ś%%D3|Ś9äJ™{čùq‘ Ö@['9Ó°šż”~ž·MŻ'ăŃwÓæGA“ŽÛ©)JżŽĂ7"RMqÁ2jăùùH pÙŸ­ŽB‘›Ž/œyéțaԑŹmfœĂY@DȘ©’6ÙŹNŻșÎ$Ł«™ćkÇÛŃđÓ#?‰8ŐŐ-ž]ü€ßmŠôaœD$š5ăùGn-˜îśû7|ŽïÎÖ:Ž_ËDȚ$fuœ Śïû„̀ˆtŽZzŃ6cá4d›ËĂÌ Żf-Ia-œZćŒBeâZš”ĘÛßg j—Gj·çÇÿ?ôojÔNŒśH…ë±æöŸęĂY@D‚œn€( ét:€Őj‘J„B …Éćr€T*I’Û=œ©ššh$§B°Žžžű’ ˆeYäp8ЂʎfÍh†z‚h‹y^ÏĄŰČ}ŒEdŻ`ŒÙRp5X&‘Hn™sç߆^Ξ'“Wú Đ;Ź'ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††PĐUntitled Layer 4d';39BD2F4E-7D1A-40E3-B817-17E9E855E914-35862-0000E7D3E6BF9068@x3Wóő2‘KLJ„„žTpoSùÌ_üÿöòúÿ/ÏŻțÿüäÒÿO.üÿűđ<ß:Žú?H”·*P9đ5“ÏùöúæÿwśOțsûèÿŚüvaŚÿ'g·ÿ|fÛÿ ÛçęÿśíƐ:ian5 àoźÿęÍ­ÿïžÆjƁ„]pœá„·šX*}{ûÿûGgpšrÈ/ ”@-( ŰJ©ìû»;ÿ?<9‡Ś ~Z j­\őšÿăÓóxͅ)H-P ˆ°U©ÿńțîÿÏ.â5/ ”@-( Ò^­ùLJ{ÿ?=ż„Ś P܂Ô” €GőŽŸ@ęŸ_^ÁiFŃöŒÿ~ëcț;”ZžjAqNœ??Țÿÿù0íà0Ă{Eűÿú'Ęÿ ;_” €DÍI ę_^_Ă0ŁpsțŻ%aÿ=‡ț/zŰü_żÙț„RčĆÉ­™@­`ìŠ=ꌧÿżŒŠ_43<æ…üOșS LΔ‚Aș—Ț"țŻoo`˜‘ż:çżÛŒÀÿźÓț]ÏÿŻ]aùF&ËđŒh€*ÜțŒă­Ÿ<ù2„A~c`˜‚â·.ęÿ»]ÉúŻUdöš„ÙkN. 1?‚[ÆéżT‰Śù"í©Œš 00!(Oł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††: °opend';F76A522F-9997-4CF4-A4D4-EC5F801548BF-35862-0000E7B6F42BCBA3@űx•ßKSqÆG%¶<ƒ"ˆ@@AŃEVÓŽ_ԅ]Tìź+#(ˆÒ’˜„F%!j„,mÚ/ŠeiYsÍÖ E, usșč)•ëÇE7ț Oïs.|=7öŒŒïóŸg[¶ęÔî<íÒJdÖ¶Œ=yÚćűP;«öč ?D:êǟÙĆż©A0+ÙUòžž 9څ‘žÛxŃTŽ…ŻŻÏÙŻ”ŠÂȚ|íêŻŰ{̏śröĘ9ƒÔXâOù>łRQpækŚÒ?’Ÿ_r~zĂ%oéVLOœłRQ{qąs#Ï 9{Ę'îTü!ÿÀŹTŠtíúwčĆ%C9·VÇì§gŠßŸŒłkvJÍ€XŚjyc†röTC,ôÈâ‚Œy©™ìÓ”›ÜóN97_,ĂtĐkq~Èæ„fRąkuÜóN9ß=‘ț“á'`^j&„Yő)yw4ĐfÈčńÜaLŸm±˜u€y©™ìŚłšæ>>ƔßcÈčŸü&ȚÜ·đ‚y©™*XçM|hÇd_ł!熳1hUL†ÚÁì&Çj§ÔLvćdVWčŠ#ț–+K±~âÁ6ž ‹Gt{Śr™•Š…Ü eέko.ĘÒ{ŻâdBČĘČțoÖÛWmß±9ăBaNfmEŰlÿx“Ă`ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††"Àmkdird';4432BA72-5B16-43E1-8FAE-C9DB651AC51B-35862-0000E7ADCFEA1C98@ßxc€uiÎPcežBb0H-P 0Qæ)zysïÿ§WvàĆ 5 ”@-(ÀD…§ä Pțöéőx1H H-P 0Uá){|iÛÿ['ŚâĆ 5 ”@-(ÀL…§âáùÍÿo[…ƒÔ€Ô” sžȘg6üż~x9^ RR Ԃ€b5śN­ûőàRŒűŃčM ę5@-(À\•§îîńŐÿŻì[„?†ßÁ”ÿƒÔ óČè”Á…*Oăm û.횇ƒäöŻêûż{i'˜ RÔç<—…üO_ÿÿâöÙűց%ÿ7Îź‡ł-UyZ€Úà@»Ùöyę“îÿźóț_Ű:ßșęŒ8ÛJ§šA2BkŠRčĆÍ:ëE›ÿ;ÏôăäyQÿÏmžÇŚwÏÿżzJœm„ÊĘ ÔΠP`r&éNĆtì0ÙëÿÙ “áűÚÎ9ÿ—śÂÙÖȘ<=@í ąȘ3eČ Ïš˜Œ șžÿßźÇŒăŠ„ț?łn_Ę>óÿÂö,8ÛV{2P;(gŒq»’ő߶Íćÿć­30đłÿÏmHłÔžæ‰ń2›”ÁšłÜ&é0”wjžòwœT9—áÆ2ìĐôĂÀ·‚Úł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††Ì ‘ arrow-090d';949F4C82-6AAC-4CDB-A190-63EB00C81A5D-35862-0000E78DF34A65F5@…Àx•‹M(ƒqÇwɅÌËŒ”ƒĂIŁ2ËK!”<’ą0ŠƒPRœ8ɊÙ֒—°ppPÄÉù_š—òì"Y)Ù“ŐŚïw ÉđűÔ§ßïïûŚ„ĄȚ “·Œ‚_Šÿą./YȚê+Ák'űćL”*jreOAŻìxȚAđrœč§óŻTç$È+čâí|ÖO•ÓpÏwš…„"+^v·e ćÌßrÇ7_ÄűÎ;šĄ\'Û-zđNăioO»Cž_ïƉ­ Çv NÚáu”âvgŒă=}û€Ś”ê˜nÌĄzĘm83ăÈŃÎĄòžŸęÈdm†8vYp8!Á;ß ÎT«fŒ*M\șp4U‚ g8S­šQI'|‹Őž±ánĄœ©VÍ`qąđŻšńè*„EgȘUÓoԊ€GÂëRë„àL”jŹùqBٔ Ź™ xÊÀ™êżˆ"ő€Ą8=z”+/V|ș{2‡Œ!ĂAjɔ_L"#É4šwÄUŐł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††dhomed';37C2B011-5587-42AD-B6F5-E2FD07E267E8-35862-0000E6D9B27AA223@"x}’_HSqĆïœó†ôàú™š)€–ŒV>,Ì-Ń%Fiô’ŸŒ3°| „Čp"Z$ș`óA„ ”RÄH,X)F6ÓEjɔĄ”Æ·ïùúҍôÀ‡{v~猗«l*ę˜ȘÆőxuû›ł§Oțč…tïwž€G¶ÏbŻ …ŚO.m"ĘÎęŸûm^êó đÈÒłßt˜’Ìč—čűéyŠûą„Ő#»·YŃÉ2jś>„„Ö«\țGz>o\MÒ/ŹöĐïÎò JhoæŃ.ü%ĘÁÛĄ[ ś€7è ÒÁswińłO€G†3trm§H6"ę„ąÆŒÜšo–óáń›È\P€GĐA›mìšfŠżcŠOq~˜YŠŚ“_Üč»oP€GĐAlùąŽĂy'Bę4·%è ËƒR-Ç+?~[ĄwS?„–ÎW”lŻà‘tĐć‰A)‡ìUùUzÿeI°”șè|㐏  ƒ.O Â71őę§Üd7ÒٛęTŃú†Šj{%è ËƒłrjŠŚű~«‚™ßùékÏèÌőçqA2€ș<1(!ÓZ;^'ÿÂ/áHč›WzšìöK*æÿ@ĐA—'íȚŸ]7ùMĄ„uÁê|H¶K<2€ș<1HJu«ÛÌc@ŃvŐkQ;»5SœK` gwyÂR”? SżLł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††ĄUntitled Layer 3d';50233FD7-2823-4014-A50C-15D5CED50E6C-35862-0000E77FA392AB78@Ȁxc@|\Źź’Ÿ”z=k+nop935Ă|Y‚‹JŽž‡P C•\Lg‚ńL ȉp)eùhTÌȘôYvbEÉù·g§|ü}sîÿ·ÇșŸ^ZžùxU…ățÒ@­Ö-”Žg@šDùŰ%ƒ­â{*#&Ź›”ŸćÂșškŻOôüyeÆÿŠüÿ~~òÿ—§ÿßPewæś…`š X™Ù,ŐEœ3"r;òę&ŹèŠßŽ€ÆcŚą|óƒkJ­ÎšvçËÙÉÿßîűÿőòŒÿ 6Hš DxÙ$ćęRÌs[sŒ&æy©tŰhˆx„À "PcÊČó3ÏNúÿ|GęÿwÇzțƒű@)0æTőČR Iđ5ÉIöĐšP—â1 ƒ‡ŸX̂,Ł3€z_îkă·G{țƒÄ€Ò` ÁÏź`Ą+gÄj’ÜÆ@!8(ńQš9+Eś :‰„Á ßMnæ”xÍ3è$”†Uq.c  Y{q>6(è‹P9ó|gÉÿÇłÀűőțšÿ 1  4(‰rEÛ+TÄčk枛ʇH °©…Á #Xá̋MIÿ- üÿjGæ?ÙF| P ečœąÍE;êă'&zšæÚh‰ú p1K„À ÙOæÌ»-QÿßïLüÿj•Ï{IŸŃx—ÔÁź8­]óÊŹ7”$êLHóŚÌՑærffb`jƒ:O‰3_ś'ęџ·…üÿŽŃśÿçMŸÿżl țÿlßÇÓSź­Ș1Ûҙi4ÁN/žŸa7TșˆœaȚÖrW±ęë*ŒßYèțőÇź ÿŻÖû~ÜŐa}Ÿ.Le™—…7łP ˆ4ä›i*Ë+~&);%ΜSŸeeŽBg ìêòôèH°ùrČ2 • "/xł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††folderd';1D033B45-E2B1-4EFE-92B1-5DE8681F61F7-35862-0000E6DE7A0CC3B3@;€xÎ]H“ađ Zfš ȚdwAQÒmt‘PTàE7%Ž ‘"!ši.îĂíu˜:0·lÍ}Xæln*LÔü,»ÉÉhQ79ßg{·ÙŽúw·ĆąÀ^űqțçđŒçyŽȘ:alŹĐ]ż`SŚŚZŐŚj­ùù~ŐŐs–ÊęĆvló-ô"‰·CflˆO[ŸìEjö1ŸűMĐÉ/: KŠdećûŠ*K‹dć„{e\YńžÊĘ»vÊ"> ÜÁNlNt‘n|Ÿxˆôt>?AÈ„ęöèÒaO{:äÔ€V\Úő§vę㠀1áF(ìÔȟS&$’ŁĈD ©€éW€gÍT{ó<ÂÆL~Ì[đÎz—EÜÊűæ€ żđ7Ÿ‰—:H$ák§Ìeò:Ę·ÔÓÄBvel#Űɧ‡4bÈ#dńLü„WÂw§ÆŒX25±°])ŠüzćuˆÓț ÊĂŒæPÏń‘h–€ozn±î61ámClHM4DK4`^Ê\¶Ïśj‘€śŸîŸÉÂ6„( Ș°æyq@EČőÇsáęÖ\é… lÙȘˆ2W ąÎ{€őżŹčZŁóƶlŸ Ź:šłZ¶%Ì}sB ›o‹_í p«vúKźçțì3”"œc‘îÿôŽ9†©ÀŚŒäSț<MFPÀûȚ&vòđAœüìńńË5՞K§ȘĘżŐüsŚ>òŒț̱ŃȘŠ’+żÓÚfœł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††à@lockd';7A84FC86-36E9-493B-B9FB-A28B63C1F9C5-35862-0000E6FDE0068401@žx•Û+ƒqÆ7áżÀ”ӌćb“y‹{7Ü(mÉa5‡È"5ŁÜPžQ.ä0±ÆÊYQ[„9ŒfWRsۅB"=~ß_-{m/íSOßßû|Ÿç}Żì…EÚÆn‹é:\ä±ŐżšŐč:ʟœîâć펋ÎäюE$ÉRf·›Œ‡GÛ<źśŚ=š[ê6\› w„‹Î=œŸĐ=˜•ĄáŸç”uú,ìQyR»#ŁŰÜr‚&{AžÔ.í€2äIí«”±ˆUDç9ÛĂcЏË+śŒn\x]\ÏP–UD·äŽáÆÌg4]ûŽű€,«ˆ oÁ>ÉżC3š<ç{|R–UDÄ&!Ź ,Ń!]Ś čă łA(Ê L”-~!qæ ÚȘ&dkò"ú©jÂÎ+*śŸ ,Ő#­ą ńó/ąwÈíïփÈÔh#ú M> ÌVÔx>2í‡ȘŒŠÆ>$Ùï‘l»…JoDNƒÂ.»WőDDŸțil|Ë+s|FÓąsŠOÊČJ89]­ˆEÔabÈdߏ’ĄŒł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††œ ‚fwdd';9F7F1C9B-8752-4969-ACB6-46386249F9BA-35862-0000E72809E9F8C2@[@xcÀ:ŒgYÉƙd-”g@8ĐB–,36Tڞùûxùío&MČ«J,ÏüŒ:ăÿŸû‹ÿƒŰ>ƒfT©Ï\’gzțzvÂÿûÿÿŒ1ç?ˆïi(ŽbÆŒ ƒ3߁v|>Ùóÿó‰îÿŸŽwAđ±ÎÿŸŽvü··țÿë­ć`üőü€ÿ őîząp3f$霩”„ŽŸm(űwYÊÿ+sŁÿŸŸöÿÌÔ`0±ŸîšűÒÔ ąŐÎ|șńăáÖÿ6ț”3ÿÿ“IÿŻÿÿh]ìÿû˂țß]àÆÏ·Šę©wÔ„ÛŸá 9ł+Dń .üy[ĐÿkĘÿȚùÄ·Să‡ë%ZüeÏüÚćśÿśȚàÿ ¶ /ŃzA ȚKòÌïĘÿAŽ„"7IzA ÊUô ›Ës‘Ź" ùfšÊràŃËÀ,àł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††ł rbackd';AEE77F80-5E50-4A57-A909-0A342561B8F1-35862-0000E71BC4FCE99A@q@xcÀ‚Źäb:Œg™$ƒ@ ٘-”g@È% ű›IÇlšŽ=óśÉŠÿ (D4đ1–ŒYUbyæïăćÿ^›ùÄ < Ćc–䙞ùó`Éÿûÿ;7ń?ˆ W©ĂĂÆ]O4f^†Á™_wțœ”ŒßíkűÿéXçÿOG;ț<Úțÿă‘6>ÜúÿÓńźÿ ő@­`0#IçÌÏ[óțżÚR ÇÏ6üż»,ćÿ•čŃÿÏÏûfj0ƒŰ·WețéjGMÁ˜ ŃjgŸ_™țÿćŠÜÿW„ęďŚÇÿŽ.öÿŁ5ŃÿźŽúÿpUÄÿ‡+Ăÿ?^ó€šìÔűcșBÏ|;YôÿĂZśÿŸw†țńqá IžÿaÀF…7ŠĆ_öÌïŁ ÿï üb…I–ŠÜ1ő^’g~ï깁B$syź˜*WŃ3 ä’Le9b" ù0üˆ ˆÀßÜł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††9aUntitled Layer 2d';259ABD1D-DCA0-411F-85F3-2554EE05CA0B-35862-0000E71385F4E1E8@ëÀxu’kHSaÇϙÛÎq•mÓÔr--ïvqZâ șaâ5ŽšÎÛ*±Ź™ąùĄ’4»}0ńKő©‚Š("úT*5Mf™Îčœ·V&Q]šNóßłź ôƒ?ç}.ÿ‡śá=Œ–•Ì Vèž (Ÿg Ż±}Ż¶~ôÏ»ĘĂ­((gčùjjú,+ŐŹM4=tèO~ßÒòY>!ëâ'žÏkê_ŐÙW[%ê°ćÔü,+Ï* «ŸŃŸšFHĆ$Ž»±žű)BvőÁŻp őo±áì{hÍ_Œbődò Q.Zd¶ÏÄŚżƒČhەßĐ‡ŐeíÈl~‹U‡§[;uțƒ1–óQQID±țä„ȚWДM €±K ”‡ô‡kYőtG&±°tKö;Z9 .Š°’Ê"Êܶ©°*'tćÏ@Ą‡ÔșAÁwÏ°KW; •i‘;Û ÚaADŐæfÜ°P‹È“ufqÙŒ§mÆ1› /űQęRà —ÖŰ&îŽČŽ A„š íÓŠšŒÏ~˜lšœìęY v—Ô8è ©˜Ì!AkxäÙ)ÎüŸVűäŽ} Pd^v·àWhĆêò~˜Î@ž?íț 0©vWpîoŻ›èœPû Hč;NĄˆśŠkęjă"öÙU3ß]Ł`RìÉkï<ˉëNÁœżÏ6 žÄÆ[”‘j’¶ÏÉèÆÒœC-łƒÙbƒź€UÜe–æ;ŻC·Àoí…wz'$ÊÈ8Jÿ‹ăčÄŠ›ČäH3{!ÏŽ Š€ •-œ8p~ iu/ 6X MïŸÒYTé!ręDæ'­mâSzÀ„="»>;úĄÈĄ7Më…4ù1űTšZ`ŠÿUFŽ?aIš/Q.?Ê'ĘĂmî„lC;d;À'w‚_wĆÁòțfF"O Ț’†4‹œäžéMŁbÖ+ža%+H::ëé뎣©HrśJI^$‚a~L=Sł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††‚Qdropboxd';79085DED-F38C-4141-B3C8-ACCE9C02F7B3-35862-0000E70831DA0DFC@=€xuŽQHÓQĆ/&=䈰'„eÛ0l›ŒÌÔ#(™ËŽæŠ K(5B±dïF/‘!Ô¶Čb‘†Æ0Èț[ŁmÙ+[úßĂ6ŸîčሆÎw~ÜËțѶ͏ŹŸœÙ.«Ù„s?óÀÈèp㓠„/e N}ńsś…șPx̶ššÈŠîőgĂ·;W]”!Ü°áÓéx?^§˜ûvÇ.ÿwPlÌJÒ`ł0òOȚ…FÏËw*æ°ćH^ü_ÊșMźŻŁV9|«BN }ì?AëBF‡›tóŒ<Ź-rášĐŃ2fŸ9kGZiùú)áĆȚzNț2:80|šŠÌUa0êÚÍ&—ÍkŸ+Žno—‘’É$Ćb1zÜ€ą©“•ÂOÌzvΰ†ŁBj6±dńN&“Ą€ŚMO›U )‰ĐtÓ^úòÖC‰D‚fÌjr·éł`8*Ô§bŻ>·äæFòûę$I-觍Fól*•ąYË>zʟ́ášPG{đÎqX^°ééEkUț]°ńx<Ïâ¶Đ©#O‹ZĂQ!ăvæxŰP±âï=DRO-yÛ« XtžÁśìXĂQĄ­ĆLyi{éë>ŽöéûU#œ·êò,2:űƒU›Æ GóÒ(Xă5 [\ŸhH'‡Lûì5ÂÈđ§îš46Űr€@•[Űqë.öfÒ€ü!9 éßCŠŒŒ7lűtC•±òêÖsŹ”=2ïdó02:Üűä?1öÈź{ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††) 2asterskd';E6893B39-1C08-487D-BC79-EC6F986BFCA4-35862-0000E6F3C79F84A3@ä@xc@œòґ ΀0ŻN@Pˆ `æ–R` >ïŒÏźŚ?ęű+:ç$P Ő -ß4ɐÙgÄ<;6sÊ[ù‚ہÇ>ęwßóò/L DƒÄAjZP€DÀŒ3țȚÿśŰôô§Jöڛ ŸßțwÿVȚù)æѱ]9kÍM· úî}ó$ԂÄ}§œ±Ypő§óšÿĘ7=ꯔ¶êŠśŽ—ÿ-ŠŸÿȘ”¶òŠÛÆ'ÿAr 5 ”@-(€MLÇNÈĄnłJÆȘșu»ß8ŻŒśßyĆœÿv‹o‚iH€€š+`—0ôqí9cĐzűłőœkÿAĉä€J°Va ;A«2 ę+öïyc1óʶšwLkŚìzŁ”șìH H-P Čm:c5śêOóč7ț›Îșö_*pêMœ¶#_­ȚłAbfłŻÿ7™rá'H-P °š=c<śæœțs?%|&Țä7*Űź7ńÜOóEwÿƒä@b 9š°KX„ńêŸáÖHĘÌ*€ă ą æÜúkČäÁ8L Ä©jÁŒŹŒđŽĆ„š~Ò`ÁĘżșÓ.ÿäRˀۇŹ`0LăŃÎœÂÌÜJ8Ă­ìÔł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††† #opend';7888F9F4-C832-4179-880A-C90CA687A5BC-35862-0000E6E7B2620386@DxëÏ \xwmÿtÌÈÀD„Á­čćÿÿ}ęÿÛípüùú°ž0 3P+€ô<2ëÿ·œ“Pńù•|z ŸXđÿùșÖÿÂŒœ’@­ ÌLŒŹ7ç”걣śÿł5ÍÿŻÌ*!ˆoÎ/ÿo§.• %)è,ÄÍ.{šÿцöÿ7畁ńÿ_Á~ È ûȚ˜]úÿâŒr°Ù_N,üÿèbđĘĆŐ?U$…ôźőŸ˜’śÿŐȚÿ?nëùÿqkQxqIè1`0\ŸUúÿ@wÚÿÇæÿż±(ü|eĂÿ 4 v†k@w?Ú2áÿû-Ęÿß­m& êH} Ô  ęN,țÿncçÿÛûâw[{ÿ·ÇșźjS5™Űë Șț^œ”M>՝ö‹—“Ęš,ÈÄ@ÀÀ/xÈßł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††ŒXUntitled Layerd';D91B76BE-DBDA-4627-9D50-7A221D5C4584-35862-0000E6C9040FDCBD@@–xíÁ  ț©op©¶rŒł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;28AB29AE-B765-4EB6-B0A8-07613C8C6A5E-33087-000041DE5865A2E2††MASKSPREVIEW4è@@4Ԑxí X]Ûțwi If2{Š4)‰2f3fÎLÈ<ÏóđB…ÌS%$cæŰT*MBBf„B“띋œßœk—zŸś=țïś~ïyżă^ëZŚčîaï{Ęûș“ä+Íæjjú'ʐšé”k©źW„7Š\-@š-ÙwÊĂó0”«mŐÊćUraÊIùHłçŸÙșm?]’Æ PFŹ^Łö^a ÉTĂąĆNT!Í֔қ܌„ïòƒ'”ëÜ„?mßïK&¶399—4ÛČśòșő"żăd/Ú±ÿŽeÄĐÖ¶]oȘZßî€ÙžœŚWźÚ,ò‚ž“éwúô,L€2bhCN‹–ĘHx„4;HÔôn/YșAŽßŒHÀ“ööčeÄr ÏOoé{êĆÊüYŹL-çđÄ/t'ê”Ë|üLeÄr ŒŒB4l=.òUʋ}[ ÈA.[”TÇÊȚ%úÍWzűôŁ`ÓĄkTłŐtʈä —-JȘeÙjâ“wßèыUżu4híuʈä —-JÂwâé‡ ±|ÀžçZê»âp ŠÎł|D člQR5łfÓ>eńò}Xđ6wXàO}Ÿ§âÆĂD člQ’A}ÛY/“ł)î}ŠÀzž'”Ÿq‚úŻŸJ=čÄrË%UŹÛhȚ»Žz•’-°uȚC-' Œ@rÙą$5:žjZR QŻ°T]Łüqőbúë\F mÎeË?E ëְۇ© źĘTŽ„s!3“ŸùŹùœvv „űŻeÖ1ë™u”|–ËàW]‘/gŚS:/ïĂíӓă/ÿœê·š>\EŸO­f~MO”epê"ŸšRÏŹ%éÖ)ÉQû}L>±„>_Ê,+ŸN,ŁîóțæIÉQ{|ü윈>x/țƒßò‘IöYAśÜ&%Çí™ûùę‘E>aż@VÊőŸÓĆô™—ăÏ?ńèâșćN°†è‚"k‰ž(cĘO‚Ü(~ŚŹäfőknß„ń•ț-ÌOöknî#§…j8ÏgP«Ÿc:Ù\ȘQA(ïBÿ§”i|Ż}ń>›(7j<$róoë5‡~|{O_ăä€Fù‹>òCŁ˜ș[…àOččCìJ„xÿƒûrw/%ń~RźT‰*l•SWӌÙ5›ȚđxđúÄ ŠŰ1ó·Äì™C-ë 7©RŠmْÚŐŁÙÿâôŸł{¶€2SÄ:ËêćąwÎą°ĘsDßiwśń8ÄăC!ˆ?° Ă°JY‹(ößĘ:™Ț]ö ƒÄ˜QÌì{›7$jÇ,ș¶Ț™RnïĄÏŸŠ$ï„ÔÓÖۙí’ÇŒÜ/üĘèłÿzúÄûtažŸfÌ[¶ ÁŸ|ś}ò]KÉç7ț–Og7ПCÚ{łUÈŠn”!Q{çç„mžP(î­wÎ,UBۚ­2ÙțMțŁUąŠm§ȘśJA)łžâłțŠé”3à‰AÿĘÒnï3șßHÎ1è»+˜CBŠ9ŠÒ5qpźâžSZ±óš3%j6u@čŚí/ÔńÒÛY SđË%Uîé!íqí3uò{•a8Á'őîW?‘œś“ŒŠÖœÿĂćDL‡Ó‰—?ÚŰą€J[„ÍśFfŽ=ńœ:úœą:ÎÇbșŒ%Ûí!éuœœc:űŸ$Ž!člQ’VEł–eíŸ1wìčùâ‹Úz?„¶GŸRË1bŠڐƒ\¶š”ve«NćÛ»J-WĘHm¶ë1”C§š”f9ă–ešÎæù{óü/}°őŒ ĐtwŽ˜š. üPgÌáçÈA.[”T¶ĆriSŻÈŒ&^Ńdłă1ôÚc±úfzÓ}OD±Æ;ŁšŃÖĐ äČEIú¶‹€Ö^1d±éaFćnî1„N=oáț0ŁÉțxBbhCêlQ’vćŠÎ„,fHK9ŁYÖÌSË]±9>'Äe1”‘Ë–őöè†t~ ©|ŸđŸ|ùRîEÛíQVtźżq*珙/ÈjaUûŒjN|I†Óž‘¶éĐiÜ,€?đÆ[Ł/ÉjrÆečș.Ê*7îIŽŐą$*3"ŒGȚ 2ęRœÏI·û±‡œ"TaÄăŐ]žÒà5ŃrśćŃYZC"3êÍLÌÒŸScđ ±Ncƒ©êŰx*3àÖgź •–]iD4-ÚÿRű{źˆÍŃ•S{êó,I˜ŹźÉŚ©á€p*7ä1é9ȚHáȘP©>śČÊ}L&GĐś§€ćC5&Ÿ IŚŰœZÿá…LÆG’țàG€ÓùLW…JŽ=Qvp$՛Mőg'PčQÏHÒ9–j Ë,ÓȘŁ/ł°țz}’¶íZ iTkŚŻdś{Tg| șĒ€S4Y ë"ÓfߌYÜË*Ț+„J8Ü!u}ă†ț©bÚĆ”mĘNhvŒM=BH«ÇC2LÓ¶†ĐÏçÔmi•đ4€TŒómÒŹ?v>»”„źY^Ër‘[ńÎRÒîvŸtú<"œț€ăȟi·Òèx—Šwć> ‡Lâï«&;„ÆTă>ŹŐő͖oűF»ęÒŽżEš­oSńŽwšxËńjĆ+N’šk5æÜzL5F&-}–àź,%jĆŹ%jê挗íxŠș ·ăű‹\ Šóo«ȚMk8­níÉĆ"«—mu'ÿEöRÀŐ"©GăȘN§ç”æŒ=•âŠŻÁ|Ÿ I·ő wl<ÁĂVĄÖőË8č ź+ę±ȚúMąÄŁęè9“xjœ89„^œL ÇQ±”àʟO:òÙ*WËș„Ö9֖~ žÎŚæ;ò}ŽŸ„z~ŒłŻ"_™š–rZÙŁș4ëÖpÊșԋPæp‘dW»€Ó’.U€YWûŠ*ȚÔÔqšßŸ‚pőoÉŠzq§VzyÖńÿš0`,àâßƀ1«EÆìϘblàP‘„1 #ÒƒČŸăÆ+ û2öéüHà&ƄŒè]bLÀXÁ6č°/ăy€óœÆ»ëĆț-ű”ÿșŒDŒ =dłŰś1f°Uû2ò±ßË(hÿ0WiÿÇŸœÆˈ±%9hœ»0…^úŽ$ÙțÿìpoŠßÛEtÖYìû3Ű*„}ût~€žëęsLž8PŒ +ŰV(a È ìNY—ûˆńc‡ -ŒY{Š±c‡Š$ŒcW‹,Œ žűżN=ù»î;ÍVŠ)W‹€îV•|&ńń0~aŠ:‡ „n *:y»XKłă¶Ó—‹ó(;ö/Bqn.PÍ+8Ó@šœȚŸ '#‚ÇG;§©T“rN^ĂűXč™^‡téZB;ò8]ImË8mh,궉>]˜KŸæĐËŁă)|s_zŽ} EìAa;ùXzv!ùl“kb«Șž›úJ óF—·ŁÏÁ„ș"Èg[ŸZăPKúhç@șŸŒ …ń>:‡ ­eȘIcœzQÈږłŁ;ĄÎáBka›*ÒWû:ÓÓÍÍ(qOGBĂ…ÖŹæ„Ÿ·Ł;›ÒçƒmuZSmËKż{·Ąoû›ŃśŁö„:‡ ­ ÊH3NŽĄŒ#­(Ă»5ĄÎáßI›1fŹ›W/qxœ•ŸTêˆ3æLIF•đ»Ÿșg“I«&vqŸÜĆpMsăò]žIhn/㭇§6‘Š<ŰLIKèÓmWB›„Ș—+aÔ„i]Çá&Žêd<·žźüÜŽY{]J“ÙûöÊJÁÇ[ź„7 U.­]ËÖŒF+ÆŸn•’űŽÈ5ł[ÏŁÍ„čAœ›…ŠtšáčuX}inçfčŒ*éXۚUł·5«ȚȘ’žV-É/m`(Mș0“}]ïŻ.$ÄìőćcT ĆnUkîЎő'vŽ©éXE_ˈĂBkúԒŸńI/őąwă őQÍ+mć&!«ê%» nRa͒aÖî#:MjnRĄ»ŸN±*Ü$Žą{5é'ÿAôùÂzwŹĄ|pJĂ'ˆ/ìbŽnšIàîÙÍüVŽ0ssîQ’YU¶ĆÔÿ±,î\Yš~u$ašzΑŸű:PȘŸ„ëĂÏetOčżÍțń±…ęŚŽoèÖČźȚ°Ò%ț1oh^»òRĐĂŹÔȘ9í+^=9·aâ“}ÓżöŠw§RŚ4 YÜÏđpłÒs˗,V‡-JR<Ɨ.źnĐČN‰‰ĂmôÏn]V:”e™ ^æșźf•”JhȘésÊżDőȘ–èkę‡îŽÂ€\¶(©ŃșÓ#ŻyŃćC éÒÁzi%„žĄWJŒčLÈe‹’86í ag)úÖașqb5Ę4†âîTâeűyűgČEI6†șłŁŰ`ÊŚŁ˜»'”xÁę#—-Jjlš;/!ä Eß>&@yßòŒ,ȚJ$<ô#äČEI[đ\zšąn ŒsAOztH‰gŒÈe‹’šé.~Êm‘œPö˜ă@Wö+ç8!·\) äČ5Ò]†6ä”ÿšŃ…îÎC/òÙ&—‘îJÄŃPȚ2„#…ß™‡Űk ùl“«©‘Ł ì6Ą-…űoÏCô„œ„|¶ÉŐŹnÉő1ŒÜĄg=(ogO|·æáq !Ÿmr57*č)êâzxæ/ÊëÇŽ é©Íyˆ ŰIÈg›\­êêì||a=8œE€òç–~ÖC‰èÀ]„ÜŠ„Š5f›\VŐŽÎ`rfëŹOüÿąÈóž4 a©çmŒJÎ rْGŐËhvl\«űȘ~ÍjűžÏp|ÌčȚ.ČôKš›˜V֜۰šöRI!…}ûva@.[”ÄûätìÛۇ 9Èe‹’êÎ|ÉíqśOrË%aŸÆ>}ż ƒ\¶(‰śÉčŰç±ïrË%51ԝ}û~A člQÇbŸÇŸ_/úÁŸçûƒ1û<öęüHàíäăžïű}ûŸ*ĐvőŰFșxh­(#ŸmrYŽł|Űù°#=:LìÿčÁxà»s‰Œœ{ü0]Ń"iÉËőÔ~OO±ÿçăÁ)…òrÓș?Ǐ*L<ë̱•Ö_ÜìÍô„ÔÖÓA0jś 1ÈÀxp|ë\yč©QÉ”l—ÔšÚH:òÉ\ʍę–.bńàȆiòr3#]W¶K*ô4òŹæb%5œÚè]ïš)ÔÒ”Ł`èÖŸ$=é&ăÁŸ?]äćuKna»\žX~èáB-V·ăLną/ì$Ż„ŁDÙŸźÎnš°Mź mkűUíWśSĘÎ5Ÿđž!ƙüP5ț4©WŃĄKŁc  ŹŽ!§ȘTW›šă3“ŸÓŚ·Q”–I©/їĄ”’"ˆœ~œcP¶€üwŸąŚœűő} ÿœL0}ˆ»Eo_ŁŚĄôòÁyJ”žŁĐó»éÇŚ7„ŒȘćJÖe‹’z4©5ćۇXú”p_eŚ­“3ź‹Ć¶(©§]íéß>ÆŃçÒ|ûÀr`]Ë%őiZgö·OO(ùćĂû€člQRßfÌÿÎț”W!ömŠ\¶(i@ Ă%ß?ÇSÊë°ûÀç‚\¶(i`«ș+Ÿ'?„/I ìŸ-rÙą$§ÖőÖd°?őmDŸ}L??™șŸr"ûYv!lQÒĐ6Æ2RžQê;țîäÓGŚŁę c„ŐšÖoŰą€íêo†?íęă<}L;3…șìGô%Œ VŽz‹1c[…Fu0ʞù…ÿȚêsőŃi·#aLÈ Æ¶ íb±țôŃyú˜r|"uđèEí·ś$ŒŠsí>`ÌÀŰÁVĄÉ=­Ïf§œ$ô°.ȚŠű\đÙ¶sïA#LŠ7Nf‹’ú”Șżeșc“›a7ŽÁ[ĂafiU;ÿqž-J·€¶aÚœ1ćêoU©R%}}}guuuFmŠ¶¶ÆŸ-[¶ *QBË«dIÜ¶”sæV«Vmjćʕ{ČEI6&•ßčæœkÍc{·„Ÿ{óêctxÈÓèGžíĘș*űŰź 7}öž_»sćlrÙą$Ž9]ô‹Ű»eÙœűèđ—đÇ=~ô<áIôë˜đ ˆ{ïtœùËïÄ%56©4ÔßgtThđsűŸ?ęxé܉š·năéőƒ äŰGÒ{ܗȚƒčlQdžúFìȚŒìȚ‹đ{_x-Éz”a=wŸ’őÊu ùńˆ”ÍčlQRÓJ#°ț§l»”{UÚÇűÈÔW ńožÿ9œîžÜęê˜ŚÆ`Ùú#—-JâŰÈ @żÈc{ÜĂžĘ LčqíüËÄgńIçOŠ zvóȶWçŒwIùGČEI¶Š•Fû߃őśűő‹ûŚÒ#8RÜă°ŚÏ€ŚßÇXÿęÈNŚ°k'#‘Ë%ٚVtŸèčkÓâ{‰ń±oÎêNa+Fæ„ÌíM‘›fd=»ó}ŸöȚƒ\¶(‰că°ț¶­Ÿ}lßÖđ·î~ žÚ‰^>{ò&îqh"Œ;7.ŒÿsțDZEIvf]źűFzž.žrïFÂć Ÿ‰ Ob^ĆF†&D…Ę{æÉń#žëĆöG.[”ı‰ÇzŠőÇçțÎĂ}E0ŸÛ]Ț?ì±NțęC.[”Äßë1ȚȚȚŽsçNòôô€M›6Ń… iîÜčŽtéRruumÈ©^œúx¶ÈT‚©XȘT© FwïȚ„Û7o҅ӧ(Àû(ùžŠ«WèéĂôéi}›.P°XŹ3[…űŰëŠc ŽUè#œÿžFq}rśń%1Œ°Îlźxìć>Â|7Šă–EUiŒM±ÎlŐŃÌÇŒô_Ç͐SëĆqËąȘüÆÄ:łUhBw«“Čc'–#äÔ1ĆČšêŸ ֙­PÍö kïšȚ§ńuîă[ż‚ËąȘüÎÄ:łÒgȘ02Fw2;ˆe‘­Oî>đÙ`9W•ôsŻ€·¶)>—Ź//9œ«JyÖGŹk{qî?MUȘTq(]șt.țVÈC>ćjĐ Á|Àc[} %rč*W™2e懄„©©éü’%KȘìqŽ#ùRTƒČeËÎÇóŻőê՛_ąD „>PGíÈăRû/‰>bcc©N:ó”””EŠšÇríń|Ô \čróq,šQŁÆüâƋ;bŠ:âhg ”¶ÆÏ>’’’šaƁŚź]^ÄčY„ŽŠIJZWÓîéhĄ»b€žGsŸžkȚÿț=Mi]éțèÆz>ˆŁyÈg›Ê]Œuæčl|=lÿìï.núńžÿ–:hçZÜĄÜ'”âhGòác»€ĄVżMĂlî gčcę‡cìô/'l QőźqžŠš#>łSőÛoùoł‘Û%œLJlUô>ó]EĂê^7­€ÙŸ›%˜ąŽ8ÚŃGÌń%ßáăfÉ3íłOOŻü¶„3Òà:·êWĐÈMrĄŽxœÏ2ŃGÔŃE9đq“€Ubž›G·LÂ2 0ŐźĄ§>ˆĂy„8Úc/ù|ű8,Ń.&im_CcGïșš·kê©Mç9cÄÔdȘ2՘:L}nŸ†<äĂÇ1È@*L%Šƒ±Iïe˜ Ley2”ÄOđjU­Z”wíڔǔăŠ|UČ~ÏÒMŠHźù˜Đѓ]_?áï:@1ŽäČEI„O–ŽÛJ­§„°»w(*4„^>}*@1Ž9o{HÈe‹’ôl&JGșߣF#w’Ù -Ԑߜ€w&ۍÛG6ŁvQƒ!QăŃ^4|Ó]B.[”TÊzŒtŰÆ;äžü"uœuRĐwÖršă*gô’­äČjUn>6‚-JÒ”+uZ“z,:'gű7ÊÉùF™™©ôęÛ'JK}CŚƒü©Q·á eʔÂg+—nƒŃÒțüžˆ.s}ć žœŽČČŸRzúgJMę@Ÿ>Ÿąsgdeù‡K™2șuÙ*€k>BŠeÇû&¶UO—Ć”ęŸ}û"ïăàżäüńG……lÒ1*Ć2·˜xPlCóÁ[©=ÿ MNN&ed€+őćHO{Cæ”&łUš„ń`i‡™>d9t;Y8mŽ:•ęYŒțßòôíafZs[…Š ¶š|˜Ź†yÈi7d2ęű‘Ă됙§lS“úŐf°UšűŽÒV“óČïÓfđȚR?xČóô‘™™NÆő fłUH»V/)ȚłïˆŒ–ęœÙęˁuÁöÀ6ÍÉÉàíWq[…4«u~Û±{ćŰôO֝ú)Ó„?Y$U©ą»Ș|yŃl…*j”k)”ŸrDlÿæP3—ęršŽÿ ŸËčđ0ű황iŐ<ŹźÛHZ S–QRùòćűiÂĆż%ƒqæææ tttțVü›`}ûöíWî{‡~'5FƒÁŸ]š—Á˜?û]ŒTĄB…-ˆ1šL~RgŠ3Ű·«3őx™†ńśb/Wź#ŠĂä«Ê”€ŸđŽŻƒ&ńőOŸȚœÂçÏù;Ë$›ïŒŸ >œ¶—b.üEŃÛ(’ÏeŸĘ:Šxî<™ûšÇ%Ąïüæqƍźí[N8oŠç΅ožßFzzÓ[ôéŰìčl*Ê|/yÌíę[-f«Ö瓟žßŁńwèmTœâëüȘæûÈŚ•ÒyƒZŐ]ÉVĄ^v”gà|ŚÇûÀüdÈæÊçŐXÎ!mŒŚ±Uë‚sJœŚæîËĄ8߇>kĆč3Ÿûș±Uë‚óҔŚĄ*ûPœïęă«ĆčïHŸÖÎV!Ź źoă:»Ș>ç+=±Vœûștł<ÆV!Ź ΍Ć9¶Š>çë>Îț5Ÿûáü˜­u\»pĂùuÚŻkőčûPšŻƒŐ¶üą #Áșà<çùȘúÈoŸ2a]”Îőy]°=°Mńč(ÌÇ2ù|eBŸè» Ă©Jóę'ks‚0ŠÂ@˜Â#ÓIŠšú;žüäÇȄò@ӂ€Ű~–QTîș*”ÀEEćź«’bÎFQčëȘTPNSĘb•»źJŠ9ÁŒL(f0-Hżk/Šâ˜ąJæ©Áœg’Sa L„)<đâ7A%cCQ€^ù1° :öwćûúž^ŽëČČc ìš9À±9ÿœśŻ|Ę]&ÜÏÇXŸÂŚ† êÛčlQîçăx{ĘőÏĆÁźŐN}#ŚSš%Íí%ż„ûù8æü^˜{ÿçÜ$ŸĂ»űüû•Ö7ÜXŹ„q¶ ń”űïę„ȚĄ>Țçhć‹tČoht‹‹[°Mź‚îę_xtú;/Œ]·€^ÍOČEIùĘûŒ”’ăńáíŒm]xp—Ë%©șśó€O\Ț.Ûöә[—ĆoäČEQUĘû_îsŽâRPWCű0Xț[čđ0%ȌŻćïÁę}E8NŠĘû~ܧm8ê2ËmfLYæ?MzLwf+sŽčû ”C›“[jL>_óoĘșuŽ——Ś§ dŽiӆʈĄ 9ÈeàŠ3ÓêŚŻûʕ+ÉYYYtűđaqŻŚ¶I“ŸŰڊڐƒ\xx;5jÔèJbbbÆŚŻ_ \Ÿ|™Ïűˆvs­›7§n:“““hȅ^>GÜëììšœœL2Ú¶mKüüš‘……`âđa"†6đÀ+á?ß”ČČòć{ßȚœ{G€ÏčiéÔ)4oÜXʈĄ xmîg__8äççś:))‰öïßOŁ† Ą]«WPF mÈA.<đ2c§„„””·Ő 77·è•+WŠ 2ä@1[nCŽ„sx bL9Š.cËô៧1K™5ż@yÚäÔcÊ1đȘ3: êUƒß€œò <đțW?˟P„ïw9«mLsFQ'ù3Š1cÆĐâƋĆ4&:š"ÂĂšÄ:tèđùLKFŠÓđa™O’œ ç‡Só}–‚/Ìš©› Y­ȘA– ĆüăšsžI*[Vk*šz6 Ógd»Š>ß?ÖZ‡\xK3•ŒM*čg ÙŹj@×ôÁ|EŒȚ†–1ŰŻć`_WژÿîÿìadúȚÿAráad*pÿW9ȅ‡‘IćțŻ ä F&•ûż*ƒ\x™TîÿȘ@ráa Ìy&ßę?7Èeàûp%ûtQ€Țÿ±ŽŐ%%»V•žÌ7—œXm%č\ÈA.æáÙćšÛ·è9?Ëó.6†Ÿ&œÆówÎlÒ6ì|Št“Éü|P^ĐÆ)È͍|țz&JńbÆl}@v„“‹ç#ńŹĐŚ[„6Nš9sæ™9sæ•€k9VÚkI™ś[K/^ÏoŁŒÚ8E‚ü|?ۚ«J*i6\j5l#™őû“ », Łź‹šÁ@W~öhĄS„àW5íśôˆ€·V­Zăń €€€:wî9s†NŸ>M'Ož€ăǏ?ƒ%źż8p€öîĘK»wïŠ]»va;`YÆòOôż%xkŚź=.''‡ž|J Æû‰iқ/4uN€˜fâsŸœ“ÄïŁÆț‡)<đòò»dffRrúș™đ@LSSÓ)2*IL3Òùùá„H1MMM„èèh1…^țۀ‰ž§†8¶Ă댯•‘ ŒŒ 'ŁżÏŸ? xàćçćŠá~ÂĂgÄúc›(ÖÓÏŁĆúcÊś Äúc Œ|™ßéÏŸÓùˆ«búâĆKș{/VL“è]Ä]1ĆùÀœ{śÄxù™ÍÙž'qçÎ:qâ„űț€‚Êȅ^>.àgĆœ‰ąŒü|ĘX~ÖpŐßA“œü,Áà·žAȚÿŐú5üŸ?°ïdggÓ Ÿ^‰e—eĂô%ż í2à——_ŒxïQ€^Œ °żŠ„„‰őÇț!ăêŐ«JSúO?0F`Ÿș~ę:ùúúŠ)•>|(ÚeÀ/ƌۊ<đb ÀX€q ă Ƈ[ü]Áśaeűûû‹)r<đb Àò`L( đÀ‹1cÁßA“œüÄ€±cBQ€Țÿ±p-ŻÇę[]ÿĂu?E“ń»ëžȚ—[·đq‹ÛÀïźÿIgt„G‡¶^Ț<ÏnąűÓ»E(ìőż‹#íèȘë±ÿ_pW€ë§ûÖ§ sùžÿ­ă­S‡Ćő@\û…œț'8;ÀTÄdæúÀÿû(+RŰëžvPFLxŰ*„kyȘźÿÁ PFLxŰ*„kyÿŚŻÿęoïJēż%¶Š±‹E[ÿżyoò» ž(ÄUyùwâÔ<^ĆzAâT„\ź*Ő §*ćrU©^8U)—«yêîĄ],w·nĘrđyà|™Ÿ{Éáí—ÉçÿYÜŠR:u4|űpűłûöí›ęêŐ+òđđ8ŸrćJ7üâw‰kÜźRŒÍ2yBM›6ÍÆó|æŚùç._̟6mëÀÏž»»{sU„xĘŃśțțđ›°œ›r]Âś 4xò[ńúțhȚŒùŒo…ŸóZË!Hęjü7ŽĆx·»Š‰ćQ%~·M6Ż/?ăȘLêLĄ„ćÆ;frśÖòŚżŁŠéi”ni0±Òđú‡«NłŒ PF mœ’ŻtÌÊ:T›fyŐv_ŚDǛcÒG†OËŽ7G§Ûî횈6äpj阖uš”Àæă1_ߟ@ęo„.g PìBœƒF}­5ßærÙ"–«êÄW{_ù”Ś•ÔóòpjwČ{~ eÄĐæ8ô«Á‹«đ°Uš”]才<:&:\Êÿÿ{  Ő‘^ìü)”]Ï;‘ć涉đ°Uš|_Ă#|Š·9ևšîí&°ńì(źSa_5^ʜê­l&0YӂŹ¶¶K‡‡­B•FÔżÉęæŰíîÊÏÈ}ŚŚïßż/ź™á»„ń.>>^\·Ș·¶™on“[…*5ŸÙÙPŽőŽŽâú:wUz1î»”"ÓżÚæÀĂV!ȚòGšìïšnș§o¶ÿÉÆVr/Ê"Æ §ȚûtxŰ*TÒČüÄ?–Ù%68ŃÌu˜îí Œ˜/ʈɚ9ß&¶ ©—Ô0(ßÏđȘùĄÎ_đqȚ‚1;ÚYx±Ì(#êïïđ•·ĘUxŰ*—vÍRŐ{`zŹËW««}Ȓ1ĘŚQ€209Òù+rË–<Ò(WÜAż}ő«ŐçX'šxwN· rÌ(#†6äpjni0•S5 ő¶šUJ.Ő±(\·I„›eÄĐÆ9æ îíÁ#Æ]çôXŻ‚À| ÏżT|(*Ăśuíù:é ƒ1˜ąŽ87(ŸŸY»Főê#ûśèžȚcęČSęŽĘ9žkÛY§~œ6"ŽvNS)ô_œz”ŃKŠ9ïóńÚxęÆß7/ú?(Żš;ć` nŚàûïêÓÍyœžG||žûÒ'àÏOŚ%~ȓšżd ç\aD.æ™żę[o!Óóˆ·ń˜mkűæçû¶­@§ç?§Óy@ïnÛ}vźżqőì‰ûÈW"ĐïáđÁęœÇéyÄŚ„ Ș,Űœuʕ+~G”üwź]Ûù—{/ûL>ž–çt%±·&·ÍŰăćEúú„ÿŰŻśĄ3>Ț7C‚o>ö?ískűĐ!Ț„őô±Ś„Ó•Äï&1áïÙ“nj‰ż+8dÂÇë~œ;ù“™‡:Ç+2Jâu±­S»öêkçIŻT)W1…ż·€«č©©[ĝÛTĄ|ùżxùț†W%țÌ|ù(ŒjVŻŸ›œí8Tçïq;^ߕŒ~ž&Ț€1cŒCŠ&S•Á:ăûźËg4%‰úÿáégZapplication/library/img/src/editor-icons.xcf000064400000033652147577724760015222 0ustar00gimp xcf fileàBB=G gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0.000000 0.000000 0.000000 1.000000)) (bgcolor (color-rgba 1.000000 1.000000 1.000000 1.000000)) (xspacing 10.000000) (yspacing 10.000000) (spacing-unit inches) (xoffset 0.000000) (yoffset 0.000000) (offset-unit inches) êZ ŚsŹÍč$p(]+\.Ă2Č6{edit_ckeditor.pngÿ     €žÈô„m`SRlle^WSSò’qŠubgfhaXSRQSSòhd‡bsƒUbiżlQPSSòrh_t‚cNšÊ4—MOSSó—n_|gUo[bŸËVNN—RkJZT›}Mb•NLNN—dx{~eEˆŽSEŽIKNN—pL_VURȘUčIłAKNN—pjtœTRJŒ…t}wIJN—pcUžORQsŸ<ČHGN—p]WłIQPHŸS˜™CFN—pYT~yPNMY_ž@GENSSóHČIE”Č^GFE6RRóP”Šłw?EGFECCPPűOMHKJIHGGOüMLLMMÖöÍÉĂÄÎÎÌÊÈĆĆòÜĐÒÇÁÆÈÍËÈÆÁŸĆĆòÍÇÊ”ÁÌ»ËÍêÌż»ĆĆòĐÀ·»Ć”źâîčÙ»žĆĆóáÍżÄČŠ·ÆÊèë»””áŸŸ­°ÁŠÎÒœÁÓČŻ””áÊÌDZšÇäœłȚźŹ””áΔžșÁĆáżăČȚ§š””áÎÎŃȚÆ»ćÍÂÄŸ„”áÎÌÇèÂÀ»ÌĂâŁÙąŸ”áÎÊÈ朜čČâŻÍ̝œ”áÎËÆÒÍč”ČŽłÛœ˜”ĂĂóŒà”ŻÆĘÙ­žš–„ÀÀóŒÔÚÜÀąąŸ›˜””œœű蔯­©€Ą·üČŻ«„„ùáćäâàáăăâæúèâßâàăăüâàȚââòàâăŚßäÛăćőćȚÜââòàȚÙÛàŰÔđöÜëÜÚââôćȚàÖÏÙáäóőÜŰۏâĘĘÓŐȚÏćèĘßèÖŐŰŰâàäáȚŐÈáńĘŚîÔÓŰŰâáŰÙÙßâïȚđŚîĐŃŰŰâáăæîăàÜńćßàĘĐÍŰâáăâóàßÜäàđÏêÍÌŰâáăăòȚĘÛŚđŐääËÊŰâáăâèćÛÙÖŚÖìËËÈŰááóÜïŰŐáíëÓËÉÇÀßßóĘéìíĘÎÍÌÉÇĆĆĘĘűÛÙŐÔÒÏÎËËÙüŚÔÒÎÎóTĂüíçśh°î»țïÿÿțîÿÿț țÍÿ ÿțnțhÿ ÿțŒțÿ ÿțùÿ ÿț?ț­ÿ ÿțŽț;ÿ ÿțÚ ÿț țŽÿ ÿț[țcÿ ÿț«țÿ ÿțśțêÿ ÿțțšÿÿęčHțIÿÿüև;úÔáŸXedit_ckeditor5.pngÿ     )9Ž Ž Ž ŽŽțÿŽŽęÿ”ŽŽŽțÿŽŽțÿŽŽŽÿŽŽûÿŽŽÿŽŽŽûÿŽŽÿŽŽŽÿŽŽțÿŽŽțÿŽŽŽę•ÿŽŽęÿꎎ ŽŽ Ž ŽD D D DDțÿDDęÿLDDDțÿDDțÿDDDÿDDûÿDDÿDDDûÿDDÿDDDÿDDțÿDDțÿDDDęOÿDDęÿüDD DD D D­ ­ ­ ­­țÿ­­ęÿ±­­­țÿ­­țÿ­­­ÿ­­ûÿ­­ÿ­­­ûÿ­­ÿ­­­ÿ­­țÿ­­țÿ­­­ęČÿ­­ęÿț­­ ­­ ­ ­ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿÿ ÿ ÿedit_zohooffice.pngÿ       Æ Ú êț ù °û‰šö<,€šțùaI,€šùaI,€šùaI,€šűaI,€ź‰öaI,›Iź_ô_I<źpx„0ó„‰išB›ś<°i›ù i„B ęL LùKdXJLLőLKMTë–}PKLLÙJdÇQâD}žlKLLLd‚sŸQâDKMž\MJŁsŸQâDKKòg„LJąsŸQâDKKòg€LJąsŸQâDKKòg€LJąsŸMçÇKKŒg€LJątÖMKçąJg€LJąK‚ç°GQžà€LLdàÇKPȘâˆG[Ö_LLLM‚ëȘD[ÌÖJJLLőLKTȘà‡JTKLLùJdgKLLLY YțUYYYûXAUVYYYśUFXBZVTWYYçYUQSHXBZYYVT[YYLOSHXBZYYò^kYYLOSHXBZYYò^jYYLOSHXBZYYò^jYYLOSHYAFYYÊ^jYYLOSDYYOALY^jYYLOYQAJZXIBXjYYUBFYYJBPZWDXYYYűQAJZWFDYYYśXJBQYXYYYUY Yû”œ%ęÿÿęțXÿÿțZę"äÿÿúń+àÿ ÿțàÿ ÿûùàÿ ÿûùàÿ ÿûùàÿ ÿûùàÿ ÿûùàÿ ÿûùàÿ ÿúùìÿÿęùțNÿÿțNę‡ÿÿę ûœÉ"edit_tuiimgedit.pngÿ     0 “ § ·ÿ»ț·» »üČÿČ··»ț·ÿ ÿț·»»üČÿČ··üČÿ·»»ù·ÿ·œÛœ»»ü·ÿ·»»ó·ÿ·ÛÿÛ»č»·ÿ·»»ó·ÿ·œÛœÇëč·ÿ·»»ó·ÿ·»»Çÿîí·ÿ·»»ó·ÿ·»ÇÿÇčíéÿ·»»ó·ÿ·ÇÿÇ»»číÿ·»»ú·ÿĂÿĂ··üČÿČ»»ț·ÿ ÿț·»»·üČÿČ» »ț·»»;ț.; ;ü!ÿ!..;ț.ÿ ÿț.;;ü!ÿ!..ü!ÿ.;;ù.ÿ.A™A;;ü.ÿ.;;ó.ÿ.™ÿ™;4;.ÿ.;;ó.ÿ.A™A`Ç4.ÿ.;;ó.ÿ.;;`ÿÏÌ.ÿ.;;ó.ÿ.;`ÿ`4Ìżÿ.;;ó.ÿ.`ÿ`;;4Ìÿ.;;ú.ÿSÿS..ü!ÿ!;;ț.ÿ ÿț.;;.ü!ÿ!; ;ț.;;tinymce-16x16.pngÿ     @=ßóꏱ û©‰„Ź ùš‰Ź깉ꀫőš‰ÉÇÛ~«Ăš‰ș’Ż~ȘŰŁŠ·…‘’‡·†gŒžk·…‘’‡·{„Őš‡ș’Ż{šő§†ÉÇÛ|©깉ę}Șù©ˆ~­ û©‡ƒź ęŹČęÄÈ ûĂŻŹÆ ùÂŻ©ÇęÂŻę©ÄőÂŻŚÖä©ÄĂĂ°ÎŽŽÈšÄâż°ÌŹŽ”­Í­›Ï͜łÌŹŽ”­ÍŠÁàĂ­ÎŽŽÈ„ĂőÂźŚŚäšĂęÂźęšĆùÂź©Æ ûĂ­ŹÇ ęĆÈęȚá ûĘÔÔß ùĘÔŃßęĘÔęŃĘőĘŐæćíŃȚĂĘŐâŰŚàÒßìÛŐâÓŚŚÔáÔËăáÌŚâÓŚŚÔáĐĘêȚÓâŰŚàĐĘőĘÓæćíÒĘęȚÔęŃȚùȚÔÒß ûĘÔÓß ęȚàÿ ÿ ÿÿÿÿÿÿüÿÿÿÿÿűÿÿÿÿÿÿÿÿűÿÿÿÿÿÿÿÿüÿÿÿÿÿÿ ÿ ÿedit_tinymce.pngÿ     @ ,@Pț!" "! "! "!"ü#”""!"ú#”4=""!"ű#”4""=""!"ö#”40UU#=""!ú"#”4"UUòM"=©z"!!"‘”""UUçM"/€&"!!",<‡"0UU#0–%""!!""ę;‡""ü0–%""!"ù;‡"0–%""!"û;Š–%""!"ę6$""! "! "!țuv vu vu vuvęș·vvuvûș†”vvuvùșvv†”vvuvśș~””v†”vvuvüșv””òv†ÆȘvuuvžșvv””çv~Ăxvuuv|…Čv~””v~șwvvuuvvę„Čvvü~șwvvuvù„Čv~șwvvuvû„Žșwvvuvę‚wvvu vu vuțŃÒ ÒŃ ÒŃ ÒŃÒăÒŃÒûăÔÖâÒÒŃÒùăÔÒÒÖâÒÒŃÒśăÔÔÙÙÒÖâÒÒŃÒüăÔÒÙÙòŰÒÖæßÒŃŃÒăăÒÒÙÙìŰÒÔæÒÒŃŃÒÓÖáÒÔÙÙÒÔăÒÒŃÒęŐáÒÒęÔăÒÒŃÒúŐáÒÔăÒÒŃÒüŐâăÒÒŃÒțŐÒÒŃ ÒŃ ÒŃțàÿ ÿà ÿà ÿà ÿà ÿà ÿà ÿà ÿà ÿà ÿà ÿà ÿà ÿà ÿà ÿà ÿàedit_simplemde.pngÿ     P g{‹#ŹțÿđđŹęÿŹääțæŹŹüÿŹÿŹ ŹüÿŹÿŹ ŹüÿŹÿŹ ŹûÿŹûúûûțÿŹŹțÿûûęŹÿŹ ŹüÿŹÿŹ ŹüÿŹÿŹ ŹüÿŹÿŹŹțæääęŹÿŹŹđțÿŹ"Ź#ŐțÿśśțűŐŐęÿŐńńțòŐŐüÿŐÿŐ ŐüÿŐÿŐ ŐüÿŐÿŐ ŐęÿŐęęțÿŐŐțÿęęęŐÿŐ ŐüÿŐÿŐ ŐüÿŐÿŐ ŐüÿŐÿŐŐțòńńęŐÿŐŐțűśśțÿŐ"Ő#ațÿââțăaaęÿaÌÌțÏaaüÿaÿa aüÿaÿa aüÿaÿa aûÿaűöűűțÿaațÿűűęaÿa aüÿaÿa aüÿaÿa aüÿaÿaațÏÌÌęaÿaațăââțÿa"aedit_aceeditor.pngÿ     `ˆœŹ5ûNJHMHnțmFFQüM^^]]ț^CCLđZeeTOńTTSL?KQQM\\ł^`ôuUw`^g[PP™ÿ–˜ćòÿ«—úȚŚĆ˜ŚnŻÿ«ÙíčtRäĐВځ­ÿƒ§ÙÇq]>­êŰՑÚŽÿœ˜Íqz{€Äłž ›ŚhQíԇBm˜Ș‘‘™lÈż6Șÿš(Om~˜žŸt›ć‚BŻŃŒHTrŠ†p˜èŁ*ŸI ÓŸ„—Ăáą?Œ•9†łÊŃŃΞ‚-wóoAhyxe9]óžÿvŠŒčže•€ßŸ}Éőÿÿțÿń”U—Ü’ăÿâ™~àÿÊbŰ|âÿ—††bS—đÂKÌÿœd«Żœ˜ib§ïąwőá[Őƚą”eЎÊÔN„ÿ›Œáíÿ™}‚Ï ąç|čęŠáùûŽyclÏčš’ìŽ·ęŽÏìôŽP>ŠĐ”„’ì‹›ÿŸÀìÏŃ{ƒŒ««Ž„ætbđҗă¶ÒÉ„›˜ŸsŚÌBłÿ•™ÔÍ՟œ s„ôŽRșܐ’čÖÇ}s€śŻ5ÍWŻß»›•™ĄŃđŻJÉąG“ĂÖÚÜĘƏ4ˆózLu‡†pDgóÇÿ’žËÈ°~•úž•Őűÿÿ€ÖőÂk§íŠêÿۙ……žÙÿÄnǙéÿ”9F€Șt•ŰŽbÖÿ—<ș»Î»Ź‹•ÖœúÙ<ŚÏČż·›Û—ŽÁ\”ÿš€éïÿ ˆł·Òș—Í|ÆęŠáùüłz`…ÖÆǑΈĂęÔńû“O@ąŐÆƑυšÿŸĂòă㑚ÓĆË”™ÎqvôїóĐćèŃƿыŒșE»ÿ”­ïăćÄÄϖ•Ü„aĂ␞ĐêĘȘŠ–áą7Ńc”⾚–˜›ŸȚŁIž«P˜ĆÔÔÓŃ»‡4…óƒOu…‚mCbó2„°±‰8ú%Żùÿÿăûč3AíÿțțęęțțÿöY*ëÿûțÿÿőțûÿű;±ÿûÿÿśûÿĂ7ùÿțÿÿúțQŽÿęÿÿùęÿł»ÿęÿÿùțÿÓŸÿęÿÿùțÿԚÿęÿÿúęÿșDûÿ ÿűțÿ_ÁÿüÿÿöüÿĐ@ÿțüÿÿüĘÿKlÿțțęțțęțțÿsHÔÿțÿÿțÿÔIó _șÖŚ»` edit_pixlreditor.pngÿ     € J ^ nú ț€ÏÿEÿæ ( ÿ±,.!'O>łÌ& ME-|„)Jćs *WnžW*$ŐĄă%%21Q`X(»Ê- #$3$uÏ_ ?9=2ś8 4 H&7*Öy  *.+§œ   ÜŃ   ÿóbçŃțűeÿi ęúú)#ț;Űâ/HX1ÿĄ @pWYCU"ÂXBc¶’€„:”›[’t"XzÎ‚&„ۊYk!-Z{~†±wÉȘ—ƒš@y EZmY\"I“™ˆ«Y".TbŹ$6vZŽm9"P€©Ï•A©‹JH-[ŠŒ‡C`ĄRwM,^an‡†g`cK);X‰<œqKoL3ÿLKÿšR8)Ƅț]űE’0'ő" ę.'ț@Ű%B_"[M#+K[n%h\x4H>_€Ë€€„:‰žsE'J6zĄŻĘ)ŽżĄ—V>0F†«¶°ż ` „ž”B3[2^n€{7…‰J0 Am…”·%8„X0855u­ÇÔÈI .gnB2}ąŸĂm ‘?MŁr"?p€™À*J’~a8W~čQ,3z„pIÿ$og§T-{U"@ Vțsś&8<ő$(0&úț˜șӆ*‚ 75àÿÿæ3nőęÿošÎmÿùÿć%eÿüÿă ć)ZÿęúÿŽ.íÿüÿôÿVuÿüÿęÿG†ÿûÿüÿš:·ăÿțÿíőÿÿęÿÖ€ïÿțÿÿôüÿzjÿęÿÿțțÿ­țÿï#aÿęÿüÿŽŃÿțțÿö+0őÿęüÿDÿûęÿÔ ŐÿúÿŒkÿüùÿ”\üÿ˜ïąÙÿûNBM…”(sDțś9ő'edit_onlineconvert.pngÿ     %/%C%S€ ŸĄ€š«ź±”ž»żÂĆÊЙP=BGFETW\`eikÏ–.,06:>CFyϖ1 #78)DHzϖ1 !-$)FHzϖ1 %;FJ{ϖ1&3KLNN|ϖ1/E+DQPPN|ϖ/:OM7QPPN|ϖ38PQ)- OPPN|ϕHNQB.R3JPPN|ϙ]OQ%MQD GQQO|ϚbQK9RRJ ;LCB{ϚU2.'-UΙA!! !"]Ο™š ŁŠ©ŹŻČ”ž»ĂЄą„š«źČ”·»ŸÁÄÇÊÎŃĄ Ą€§™‰ź°Č”·čŒÄŃĄžŸĄ„uŹȘźŻŻŽ¶ÀŃĄžŸĄŠzc‰[­§xȶÀŃĄžŸĄ€š812’sv¶¶ÀŃĄžŸĄŁš`'c„”·ÀŃĄžŸĄŁ©o…ž·žžÁŃĄžŸąȘ·o Ÿ»ččòÁŃĄžĄŻč°6†ŒččòÁŃĄ Żčșfq'DžččžÁŃĄ©č»œrŸ{"«șččÁŃŁłč»`:ł»Ą,Š»»șÁŃŁ¶œ­0ŠœœŹ,ŽŻĄżŃŁž~BvMdr nѝM"%"! !]ÏĄ›œŸą€š«­°ł¶čŒÄŃŚ€„§Ș­°ł¶čŒżÁÄÇÌÒ oabd]UffghijiŽŃžZCDE3-EDDCDBuў[EFG2'7!FB,EDvў[EFFA:+,GDvў[EFFG% $AFDwў[EFFG+1GFFDwў[EFFG(GGDwў\FA 3IGA 4B:9vўP*(!'SНB ! !!ì" _Đ€žžĄ€§Ș­ŻČ”žșœĆÒedit_photopea.pngÿ      ))+);5 țțțțțțțțțțțțțțțț ț ț ț ț 5€ €ț€€ț€€ț€€ț€€ț€€ț€€ț€€€ț€€ț€€ț€€ț€€ț€€ț€€ț€€ț€€€ț€ €ț€ €ț€ €ț€ €ț€ €5— —ț——ț——ț——ț——ț——ț——ț———ț——ț——ț——ț——ț——ț——ț——ț———ț— —ț— —ț— —ț— —ț— —üÀęÿÿûężÀÿ ÿężțÿÿúï˜q{Çÿÿțęÿÿț`ț=ÿÿö%uŹ›Gÿÿü]1ÿÿüŰÿÿóê ÿÿ5ÿ’ÿÿóŒ†ÿCÿ€ÿÿó_ÇÿÏÿÿF”ÿÿôVÍÿòùjÿÿúWÌÿzțÛÿÿőXËÿÿ|hóÿÿüZÊÿ ÿúțÿ[ÈÿÿùęÀÿ\ÇÿÿùżÄ[Ćÿÿęęż pixo.icoÿ     Đ,, ,!,1>ù;cźźb;>>>ù;yüüx;>>ù>ù>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;rùùq;>>ù=PßĘO=> >û=Ș„=>>>û;mi;>>>û<88<>>>û;33;> >û<99<> >ù>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;rùùq;>>ù=PßĘO=> >û=Ș„=>>>û;mi;>>>ù=FUUE=>>>ù=JffJ=>>ù=H_^G=>>ù>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;yüüx;>>ù;rùùq;>>ù=PßĘO=> >û=Ș„=>>>û;mi;>>őGŠâúùáŁDü‘îÿÿüìŒęŻÿÿùțȘÿ ÿúțŠGìÿ ÿüéA€ÿ ÿęœàÿ ÿęÚűÿ ÿęóűÿ ÿęòßÿ ÿęŰĄÿ ÿü™Cêÿ ÿúç=Šțÿÿűę„šțÿÿüęŁü‡êÿÿüèƒő>šŰòńŚ˜;edit_codemirror.pngÿ     °//“/Łś,AL=))--ś țțó™0--ęK`ÿÿûű©'.ü.%°ÿÿüŚ3-ü1*ŒÿÿűÉ%+Ćúÿÿû˜+ÿÿűőïÿô7-ÿÿűđŻÿü;-ÿÿűê_d4+-ÿÿöŐtŒ|)ÿüÿÿóe±ÜŃ<ÿô—œüÿÿś9ŰÚÜa%ÿÿùu*FS%MÚÚûÛß7-ÿÿóóă8)ÒÛÚĘÂTV0ÿÿőq-?uŒp(*ÿÿű†-,-+--ś*?J;&'++śŸțțó—.++ęL^ÿÿûűš$,ü,#ŻÿÿüŰ1+ü/(ŒÿÿűÉ#)Ćúÿÿû—)ÿÿűőïÿô5+ÿÿűïźÿü9+ÿÿűêYa4)+ÿÿöÖD]G*ÿüÿÿófZie0ÿô–œüÿÿś*ghi>(ÿÿùs(DQ#4hhüj/,ÿÿóóă7)ehhi`99,ÿÿőp+2DMC)*%ÿÿț…++ü*++ś,@K<((,,śŸțțó˜/,,ęM_ÿÿûű©%-ü-$°ÿÿüŰ2,ü0)ŒÿÿűÉ$*Ćúÿÿû—*ÿÿűőïÿô6+ÿÿűïŻÿü:,ÿÿűêZc5*,ÿÿöÖMoQ*ÿüÿÿófj~y3ÿô—œüÿÿś.|}~D(ÿÿűt)ER$:~}}ü1,ÿÿóóă8*y~}~r>?.ÿÿőp,5NXK*+$ÿÿű…,+,+,,ś&‹ùÿÿçŽ)țdÿÿțŠęíÿÿțłę*Ęÿÿț˜ęáęÿÿûúÿ ÿü°ÿ ÿęÿ ÿęUÿ ÿûûkÿ ÿûęÿ ÿü™ÿÿțțÿÿęWÿ ÿț%ÿ ÿțhÿÿțïÿÿüÿÿúyșȘ=edit_creativecloud.pngÿ     À3q3…3•€ÖÙĘáäæççæäâȚÚÖÒÎÉŚÛßâäććäăàÜÙŐŃÌÈŐŰÜȚáââáàĘÚÖÒÏËÇÒŐÙÛÜĘȚàßàÜŚÒÌÉĆÏÒÔŰÜĘȚćîêèáŐÍÆĂÌÎÓÛăéâßÚÒŃȚßÏĆżÉÌÖçëÜáæĐÌÌĆÜŐÄ»ÄËÜëÉÇÇŐćÍÈÄÎÙÁžÀÇáÚĂèÏÂÏÊĿˌŸ”»ĂÚâžÒđÈ»żœžÚËč°·ŒÉèÙœÏìĐÁÂÙÓœČ­łłœÈȚćÔÂÛȚÜÍŒł«©ź°°žœÁÄż»Ÿș¶Ż©š„©«­Źź°°ôźŹ©§ŠŁĄ€Š§š©©óš§Š„ŁĄžœŸĄąŁ€€ŁúĄ žœš—ț  ę  €č!   !" #%$  #8BSJ;, "34JTHDJTap’ĄŻșÁê;5è>DJS]gr}‡˜Ÿè5&ìæ æüì& țTlüklf śl-AWiklföl,0AWjlödQdlM,.löI..;Nblflö2*-.:Kiț+ü*-Qț9ț8țMț+úTWY[Yț3úFcumVțHú3SUGIțXû$',1úHNSWX ú8]tjM ú'PQ<= û"(1lüČÌŰŚŰćŚÒŐÜèîülgú}…žæèëëæïíđőúgaùYhxȘÀÓâèđđöûùa[öMPYjr}ˆ“ ­ÂŰö[Wőiov€›ŹœËÙăêőWSóiov‰“ž©łŒĂÊóSAűò òüűA., ,ț.Tœțł śœ{’§șœœłöœ{’§»œö”ĄŽœ™{|œö||ŠžŽœłœö‰w{|‰›șțƒüw{€țțŽțąțƒúŸšȘ­­ț‹ú‘ČĆœ§țúyąą“•țŹûfipwú“žą§Ș úȘÄž› úi„‡ û[^ai1ûnüÂăüüțęüüęòțünjúcm»ęęțțęțțóújcù=M^ĄżÛìôțțÊÿùc]śUYas|‡“ŸŹșÓîś]Yö—€źșÇŐâíöûęöYSô—€­·ÁÌŚáêòùôSAùó óęùA..Uûüúùæ śûÆÙêùúùæöûÆÈÙêùúöùćôùæÆĆûööĆÇÓäôùæûöńÄÆÇÓáûțńüÄÇśțśțòțúțńúçńśùúțőúŐîűőđțùú»ăäÖÜțúû€©źčúŚăëđő úÁćśđà ú©ȚȚÄÉ û–šŸŠ1țmÿ ÿęmoÿ ÿęoqÿ ÿęqsÿ ÿęsuÿ ÿęuxÿ ÿęx~ÿ ÿę~d† †țdTÿü©U śÿ“âÿő©U öÿ:âÿÿÀÿű©U :€ÿöÿ€Öÿő©U ÿùÿ+Öÿÿțÿü+vÿțÿțÿțÿțÿú@ÊüÿüțÿțçÿÿțÛțÿțòÿÿțlțÿûpòämú@Êüÿü țçÿÿțÛ țòÿÿțl ûpòäm1󼖓“’’źś–‹‹Š‰ˆ‡{󭕌‹‰†_S­ś‹~z|‹~[R󫈃Š–§ąu]«ś”Œˆ“—x}úš==%țšüƒ€qnnęmkû„‹ƒyyüx„ś‹|{€€}ytóŁ‚uplik‡Łśwsy†šœŽ󜀁‹š€Šœ1óź«©©šš§„Šźę«ŁąąüĄ ‘ó­©ŁŁĄ–xj­ś“ž“vj󫜙ąš«©Žx«ś«§ŠŸĄŠ“šúš==%țšüžœ’ęŽŒû„§Ą™™ü˜„śŠ™š  ˜’󣚑Œˆ…‡ž€Łś›“—ŠČÂÂ󜛞«źźŽžœœ1üźÍÌÌùËÊÉÉźęÌÆĆĆÄțžó­ÊÆĆÄÀșŠ›­śÄœșž»Čąœó«ĆÂĆÆżŒ±š«śÍÊÊĂœŸ¶Âúš==%țšüÏĐËÊÊęÉÆû„ÖÔĐĐüÏ„śÙÒÒÖÖÔÏÊóŁÖŃÍÉĆÄÎŃŁśÚŐÒŐȚáââóœĘĘăääćáâœ1ńęhŠŹŹűŠhŠ°­ÿÿś­°ŠŒŒŻÿÿśŻŒŒŽ±ČÿÿśČ±ŽŽÿÿśŽ’±·ÿÿś·±’””čÿÿô蔔—ČŒÖÖÓÌÌśŒČ—ššÀÿÿśÀššœČĂÿÿśĂȜŸŸÆÿÿśÆŸŸąŽÊÿÿśÊŽąŠŠĐÿÿśĐŠŠ±¶Ęÿÿűʶ±‹čèèęč‹ țIJJțGôKàŚŐÒĐÏÏ«KLóIÙÉĆÀș·¶žèIJśJÚËÉĆÀș·ŠŠțHóJÛĄŸ« Àș·¶ÏJóIÜŸŒ»žĆÀș·ÏIóIÜ„±ĄŸ™Ą•ĐIóHĘŃÏÎÌËžŽŻÒHóJȚÎÎÏÏ̟« ŐJóIȚdĆòìÎŒ»žŰIóHߐ–ÂŽÏŁš­ÙHóHßÖŐÔÒŃÀŸŒÚHóIà°Œ­čȘ”łȘÚIóHàŰŚÖŐÔÒŃÏÛHóHäààßßȚȚĘÜâHțGHHțGńț€ôđéçäâáá|ó€ëßÛÖĐÍÌ·ö€€ś~ìáßÛÖĐÍ„„țtó€íŒșÄșÖĐÍÌá€ó}îŚŐÔÒÛÖĐÍá}ó{îÀËŒș·łŒ°â{ózïæćäâáÒÎÉäzó{đ­­ŻźâșÄșç{ózđHŠáÓäŐÔÒêzówńqwȘ˜ćŸÂÇëwówńëêéçæÙŚŐìwóvòÍÖÉÔĆÏÍÄìvótòíìëêéçæćítóqôòòńńđđïîòq mòț¶··țžô¶úöôóòńńÚ¶łó¶öîìèæäăĐț¶”ś”śîîìèæäÀÀțŁółśÈÆÒÉèæäăńłółśäăáàìèæäńłóČűËŚÈÆÄÂÌÂòČó±űńńđïîàȚÚó±ó­ű8898ïÆÒÉô­ó­ù2AgWđăáàö­óȘù!%:3ńÊÏÔöȘó©ùôóóòńćäăö©ó§úÔßÒĘÏÙŰĐś§óąúőôôóóòńńśąû›üúúùùűęû›ț•””ț•ńțMggț$țiÿÿęi%țlÿÿęl&țoÿÿțŁțrÿÿțrțvÿÿțvțzÿÿțzțÿÿțțƒÿÿțƒțˆÿÿțˆțÿÿțț’ÿÿț’ț—ÿÿț—țąÿÿțąț”ÿÿț”ț“ÄÄț“ń"țIJJțGôKàŚŐÒĐÏÏ«KLćŸÇÊËÈÄÀș°¶žèIJÄŃŰÚŐÎƻȷŠŠŽHÁÏÔÖÿĐĂčźș·¶ÏJœÉÍÔôŰżŽȘÀș·ÏI·ÂÄÙÖđÇ­€ĆÀșĐIŻ·Ïűćđû̞ÉĆÀÒH§ȘúÜĂ°€Ÿ–ËÉĆŐJ  ŁŁąŸžÌËÉŰIš—•“‘ŽąÎÌËÙHóHßÖŐÔÒŃÏÎÌÚHóIàŚÖŐÔÒŃÏÎÚIóHàŰŚÖŐÔÒŃÏÛHóHäààßßȚȚĘÜâHțGHHțG#țIJJțGôKàŚŐÒĐÏÏ«KLÿçĐìäÓÀș·¶žèIJÿÎĆËĘńâßÜɊŠÌHÿĆéòÚÿwYAÜ·¶ÏJÿËóÿìÿ„ÿPßș·ÏIÿÜÚìćçižcâÀșĐIÿÿőùéŰÿÿäĆÀÒHòÿáííêyž‹ćÉĆŐJòÿŐÿíÿžÿxæËÉŰIòÿËŐáÿ‹xfæÌËÙHòÿĐđëêêéèÛÎÌÚH"ț€ôđéçäâáá|ć14554310vÌ·ö€€379:8630-Í„„Žt2689ț@30,ĐÍÌá€145GŐp1.+ÖĐÍá}/23rmÊQ,)ÛÖĐâ{,/_ߧÈé|'ßÛÖäz*+ă˜Y5*($áßÛç{(())((''#âáßêz&%$$##""mäâáëwówńëêéçæćäâìwóvòìëêéçæćäìvótòíìëêéçæćítóqôòòńńđđïîòq m$ț€ôđéçäâáá|ÿçȚőïäÖĐÍÌ·ö€€ÿrOWˆśíêçÙ„„ÌtÿOœŐnÿšhçÍÌá€ÿWŐÿ©ÿŸÿvêĐÍá}ÿ‡n©†Ț…·‡íÖĐâ{ÿÿőæäăÿÿïÛÖäzòÿčÌŸë­ăÏđßÛç{òÿŠÿÌÿăÿșńáßêzòÿ•ŠčÿÏș§ńâáëwòÿÜűöőőôóìäâìw"ț¶··țžô¶úöôóòńńÚ¶łțì~ăĐț¶”äÀÀŹŁț*æäăńł5ÔgèæäńłjdÈDìèæòČUĘŁÆèvîìèó±á“O#îîìô­ó ïîîö­  ùnđïîöȘó©ùôóóòńńđïö©ó§úôôóóòńńđś§óąúőôôóóòńńśąû›üúúùùűęû›ț•””ț•#ț¶··țžô¶úöôóòńńÚ¶łÿçìúöđèæäăĐț¶”ÿI"YûőóòëÀÀÌŁÿ§Æ0ÿâÍœòäăńłÿ"Çÿ}ÿńÿÇóæäńłÿY0}KßÈìÓőèæòČÿÿőÎÙäÿÿöìèó±òÿ=FSÓlyöîìô­òÿ4ÿFÿÿeśîîö­òÿ-4=ÿyeSśïîöȘüÿêęúúűùűôđïö©"țMggț$țiÿÿęi%țÿ ÿûl&ÿ ÿüŁÿ ÿürÿ ÿüvÿ ÿüzÿ ÿüÿ ÿüƒÿ ÿûˆÿ ÿțț’ÿÿț’ț—ÿÿț—țąÿÿțąț”ÿÿț”ț“ÄÄț“#țMggț$țiÿÿęi%ü@€Úÿÿúl&€ÿ ÿûŁ€ÿ ÿûr€ÿ ÿûv€ÿ ÿúz@Àÿ ÿțț€ÿ ÿțƒț€ÿ ÿțˆț€ÿ ÿțę@äÿÿț’óIàŚÖŐÔÒŃÏÎÚIóHàŰŚÖŐÔÒŃÏÛHóHäààßßȚȚĘÜâHțGHHțG$ę 144ę1 ô0/O‘źčÓŻZ/0›(1{łÓź€ÌĘʙ1(${”ÂÓ­”ÊŃÒΑ$BCDBGPg3HNK;>@AAù>K[2`bÒ<@AEGIIGKBP^T$IIOUYZXTGkk/>GMPRTUUüM țÿ0S US€›QĆÜÙŐŃÌÈÆĆĆÆÈÌžQN»șž¶ł°ź«šŠŁ žœT8MMLJIHFD?79=9QMˋrnid_QCFJODML[ƈfa\NDHNRWIGJżw_żŒOGKPUY]NCGT`[LMJOSW\`cR=E]XSOMQVZ^bdgU7BUQLKTX\`cfggV2@NJGM[_beggóV%8?>>GMPSTVVüM țÿ0S US€›QĆÜŰŐĐÌÈÆÆÉÍĐÖĂQN»șž¶ł°ź«šŠŁ žœT8MMLJIHFD?9=A<QMˋrnid_RHLQWJML[ƈfa\PJOU[`OGJżw_żŒQMSX^diUCGT`[LMQV\aglpY=E]XSORY_ejnsu\7BUQLL\bhmquvv]2@NJGSfkosvvò]%8?>>LTWZ[\]]üQ țÿ0ę"Yf fûY"[Ôÿ ÿüÔ[iÿ ÿęfgÿ ÿęfhÿ ÿęfjÿ ÿęflÿ ÿęfnÿ ÿęfqÿ ÿęfsÿ ÿęfvÿ ÿęf{ÿ ÿęrd… …țdÿBțY] ]țXUUęŒęüüűòsRPőììüó–NęFèÜÜęèFę<䌌ęä<ę2æÙÙęæ2ę+çÛÛęç+ó!éȚɆÔԆÉȚé!óíÖzŒăăŒzÖíûđ«èèû«đó óÜcčííčcÜó ń öòÌZßßZÌòö őëéëìîđòóőùôTżÄÉĐŚßæíóúü0êțțú˜ ț %țY] ]țXUUęŒęüüűòsRPőììóó–N`f|u{ŒÀÜÜűèF\s„……ü„zŽŚŚòä<bŸš–š–šŸ|ÙÙòæ2dŠŠŠŠjÛÛòç+Sš€€€šsȚȚűé!:\wxxüwełăăóí:2<^U]tżèèęđBțy{ {țvttęÉțęęűőŽsnüóóüúŹjęgóççęógę]ńääęń]ęSòććęòSęIóççęóIóAôéІĘʆĐéôAó7őĘzÂììÂzĘő7û0śŻ đđû Żś0ó*úâcœóóœcâú*ń$ûöÏZââZÏöû$""őńïđńóôőśűü""ôjÌÏÔÙßæìńöü""ü!GíțțùÿŁ!" "ț%țy{ {țvttęÉțęęűőŽsnüóóóúŹjiqƒ|‚“Êççűógcz‹ŒŒü‹żääòń]h€Ź›Ź›Ź€…ććòòSjȘȘȘȘqççòóIYŸš•š•šŸzééűôADc~ü~l»ììóő7D;Fc\bzĆđđęś0B }țvttęÊțęęűősqüóóüúźqęiôèèęôię_òććęò_ęUóææęóUęKôèèęôKóAőêцȚȚ†ŃêőAó7öȚzÂííÂzȚö7û0űŻ đđû Żű0ó*úâcœóóœcâú*ń$ûöÏZââZÏöû$""őńïđńóôőśűü""ôjÍĐŐÚàæìńöü""ü!Gíțțùÿ€!" "ț% }țvttęÊțęęűősqüóóóúźqŁą»·șżŰèèűôiœ¶ÆÇÇüÆčŃććòò_ĄÒÖÎÖÎÖÒČææòóUĄÓÓÓÓŠèèòôKŽÌŃÇŃÇŃÌ€êêűőApščșșüčŸÉííóö7pip”“žŃđđęű0Bț9f fú9łÿÿùìzfÿÿę $țfÿÿțfțfÿÿțfțfÿÿțfțfÿÿțfțfÿÿțfțfÿÿțfțfÿÿțfțgÿÿțgțkÿÿțkțqÿÿțqę+«ÿÿùy'ïÿÿúÁF"‡ ‡țJ%ț9f fú9łÿÿùìzfÿÿù $=ÖÿÿúfKôÿ ÿûfËÿ ÿûfőÿ ÿûfËÿ ÿúfKôÿ ÿțfę=Öÿÿțfę óííęó ę öòòûö őëéëìîđòóőùôTżÄÉĐŚßæíóúü0êțțú˜ ț %țY] ]țXUUęŒęüüűòsRPőììüó–NęFèÜÜęèFę<䌌ęä<ę2æÙÙęæ2ę+çÛÛęç+ó!éȚɆÔԆÉȚé!óíÖzŒăăŒzÖíûđ«èèû«đó óÜcčííčcÜó ń öòÌZßßZÌòö őëéëìîđòóőùôTżÄÉĐŚßæíóúü0êțțú˜ ț ‚ę*úóóęú*ę$ûööûû$""őńïđńóôőśűü""ôjÌÏÔÙßæìńöü""ü!GíțțùÿŁ!" "ț%țy{ {țvttęÉțęęűőŽsnüóóüúŹjęgóççęógę]ńääęń]ęSòććęòSęIóççęóIóAôéІĘʆĐéôAó7őĘzÂììÂzĘő7û0śŻ đđû Żś0ó*úâcœóóœcâú*ń$ûöÏZââZÏöû$""őńïđńóôőśűü""ôjÌÏÔÙßæìńöü""ü!GíțțùÿŁ!" "ț‚ę*úóóęú*ę$ûööûû$""őńïđńóôőśűü""ôjÍĐŐÚàæìńöü""ü!Gíțțùÿ€!" "ț% }țvttęÊțęęűősqüóóüúźqęiôèèęôię_òććęò_ęUóææęóUęKôèèęôKóAőêцȚȚ†ŃêőAó7öȚzÂííÂzȚö7û0űŻ đđû Żű0ó*úâcœóóœcâú*ń$ûöÏZââZÏöû$""őńïđńóôőśűü""ôjÍĐŐÚàæìńöü""ü!Gíțțùÿ€!" "ț‚țgÿÿțgțkÿÿțkțqÿÿțqę+«ÿÿùy'ïÿÿúÁF"‡ ‡țJ%ț9f fú9łÿÿùìzfÿÿę $țfÿÿțfțfÿÿțfțfÿÿțfțfÿÿțfțfÿÿțfțfÿÿțfțfÿÿțfțgÿÿțgțkÿÿțkțqÿÿțqę+«ÿÿùy'ïÿÿúÁF"‡ ‡țJ‚ąțIJJù99JJGôKàŚŐ™»™Ï«KLóIÙÉĆ»Ìw¶žèIJśJÚËÉ»Ęw·ŠŠțHóJÛÌË»îwș·¶ÏJóIÜÎÌ»™wÀș·ÏIóIÜÏΙŚwĆÀșĐIóHĘŃÏ»w™ÉĆÀÒHóJȚÒŃÏ»wËÉĆŐJóIȚÔÒ»wÎÌËÉŰIóHßŐÔÒ»wÎÌËÙHóHßÖŐ»wŃÏÎÌÚHóIàŚÖŐ»wŃÏÎÚIóHàŰŚ»wÔÒŃÏÛHóHäààß»wȚĘÜâHțGHHțHHțGaąùaa€ôđé登™á|ó€ëßÛ»ÌwÌ·ö€€ś~ìáß»ĘwÍ„„țtó€íâá»îwĐÍÌá€ó}îä⻙wÖĐÍá}ó{îćä™äwÛÖĐâ{ózïæć»w™ßÛÖäzó{đçæć»wáßÛç{ózđéç»wäâáßêzówńêéç»wäâáëwówńëê»wæćäâìwóvòìëê»wæćäìvótòíì»wéçæćítóqôòòń»wđïîòqmțmmbąț¶··ù‹‹··žô¶úöô™»™ńÚ¶łó¶öîì»ÌwăĐț¶”ś”śîî»ĘwäÀÀțŁółśïî»îwæäăńłółśđﻙwèæäńłóČűńđ™ćwìèæòČó±űńń»w™îìèó±ó­űòńń»wîîìô­ó­ùóò»wđïîîö­óȘùóóò»wđïîöȘó©ùôó»wńńđïö©ó§úôôó»wńńđś§óąúőô»wóòńńśąű›üúúù»wűűęû›ț•””ț””ț•aąțMggțfggț$țiÿÿęi%țlÿÿęl&țoÿÿțŁțrÿÿțrțvÿÿțvțzÿÿțzțÿÿțțƒÿÿțƒțˆÿÿțˆțÿÿțț’ÿÿț’ț—ÿÿț—țąÿÿțąț”ÿÿț”ț“ÄÄțŠÄÄț“aÂțIJJù99JJGôKàŚŐ™»™Ï«KLóIÙÉĆ»Ìw¶žèIJśJÚËÉ»Ęw·ŠŠțHóJÛÌË»îwș·¶ÏJóIÜÎÌ»™wÀș·ÏIóIÜÏΙŚwĆÀșĐIóHĘŃÏ»w™ÉĆÀÒHóJȚÒŃÏ»wËÉĆŐJóIȚÔÒ»wÎÌËÉŰIóHßŐÔÒ»wÎÌËÙHóHßÖŐ»wŃÏÎÌÚHóIàŚÖŐ»wŃÏÎÚIóHàŰŚ»wÔÒŃÏÛHóHäààß»wȚĘÜâHțGHHțHHțG#țIJJù99JJGôKàŚŐ™»™Ï«KLùaa€ôđé登™á|ó€ëßÛ»ÌwÌ·ö€€ś~ìáß»ĘwÍ„„țtó€íâá»îwĐÍÌá€ó}îä⻙wÖĐÍá}ó{îćä™äwÛÖĐâ{ózïæć»w™ßÛÖäzó{đçæć»wáßÛç{ózđéç»wäâáßêzówńêéç»wäâáëwówńëê»wæćäâìwóvòìëê»wæćäìvótòíì»wéçæćítóqôòòń»wđïîòqmțmm$ùaa€ôđé登™á|Âț¶··ù‹‹··žô¶úöô™»™ńÚ¶łó¶öîì»ÌwăĐț¶”ś”śîî»ĘwäÀÀțŁółśïî»îwæäăńłółśđﻙwèæäńłóČűńđ™ćwìèæòČó±űńń»w™îìèó±ó­űòńń»wîîìô­ó­ùóò»wđïîîö­óȘùóóò»wđïîöȘó©ùôó»wńńđïö©ó§úôôó»wńńđś§óąúőô»wóòńńśąű›üúúù»wűűęû›ț•””ț””ț•#ț¶··ù‹‹··žô¶úöô™»™ńÚ¶łÂțMggțfggț$țiÿÿęi%țlÿÿęl&țoÿÿțŁțrÿÿțrțvÿÿțvțzÿÿțzțÿÿțțƒÿÿțƒțˆÿÿțˆțÿÿțț’ÿÿț’ț—ÿÿț—țąÿÿțąț”ÿÿț”ț“ÄÄțŠÄÄț“#țMggțfggț$țiÿÿęi%óIÙÉĆ»Ìw¶žèIJśJÚËÉ»Ęw·ŠŠțHóJÛÌË»îwș·¶ÏJóIÜÎÌ»™wÀș·ÏIóIÜÏΙŚwĆÀșĐIóHĘŃÏ»w™ÉĆÀÒHóJȚÒŃÏ»wËÉĆŐJóIȚÔÒ»wÎÌËÉŰIóHßŐÔÒ»wÎÌËÙHóHßÖŐ»wŃÏÎÌÚHóIàŚÖŐ»wŃÏÎÚIóHàŰŚ»wÔÒŃÏÛHóHäààß»wȚĘÜâHțGHHțHHțG3țIJJù99JJGôKàŚŐ™»™Ï«KLóIÙÉĆ»Ìw¶žèIJśJÚËÉ»Ęw·ŠŠțHóJÛÌË»îwș·¶ÏJóIÜÎÌ»™wÀș·ÏIóIÜÏΙŚwĆÀșĐIóHĘŃÏ»w™ÉĆÀÒHóJȚÒŃÏ»wËÉĆŐJóIȚÔÒ»wÎÌËÉŰIóHßŐÔÒ»wÎÌËÙHóHßÖŐ»wŃÏÎÌÚHóIàŚÖŐ»wŃÏÎÚIóHàŰŚ»wÔÒŃÏÛHóHäààß»wȚĘÜâHó€ëßÛ»ÌwÌ·ö€€ś~ìáß»ĘwÍ„„țtó€íâá»îwĐÍÌá€ó}îä⻙wÖĐÍá}ó{îćä™äwÛÖĐâ{ózïæć»w™ßÛÖäzó{đçæć»wáßÛç{ózđéç»wäâáßêzówńêéç»wäâáëwówńëê»wæćäâìwóvòìëê»wæćäìvótòíì»wéçæćítóqôòòń»wđïîòqmțmm4ùaa€ôđé登™á|ó€ëßÛ»ÌwÌ·ö€€ś~ìáß»ĘwÍ„„țtó€íâá»îwĐÍÌá€ó}îä⻙wÖĐÍá}ó{îćä™äwÛÖĐâ{ózïæć»w™ßÛÖäzó{đçæć»wáßÛç{ózđéç»wäâáßêzówńêéç»wäâáëwówńëê»wæćäâìwóvòìëê»wæćäìvótòíì»wéçæćítóqôòòń»wđïîòqó¶öîì»ÌwăĐț¶”ś”śîî»ĘwäÀÀțŁółśïî»îwæäăńłółśđﻙwèæäńłóČűńđ™ćwìèæòČó±űńń»w™îìèó±ó­űòńń»wîîìô­ó­ùóò»wđïîîö­óȘùóóò»wđïîöȘó©ùôó»wńńđïö©ó§úôôó»wńńđś§óąúőô»wóòńńśąű›üúúù»wűűęû›ț•””ț””ț•3ț¶··ù‹‹··žô¶úöô™»™ńÚ¶łó¶öîì»ÌwăĐț¶”ś”śîî»ĘwäÀÀțŁółśïî»îwæäăńłółśđﻙwèæäńłóČűńđ™ćwìèæòČó±űńń»w™îìèó±ó­űòńń»wîîìô­ó­ùóò»wđïîîö­óȘùóóò»wđïîöȘó©ùôó»wńńđïö©ó§úôôó»wńńđś§óąúőô»wóòńńśąű›üúúù»wűűęû›țlÿÿęl&țoÿÿțŁțrÿÿțrțvÿÿțvțzÿÿțzțÿÿțțƒÿÿțƒțˆÿÿțˆțÿÿțț’ÿÿț’ț—ÿÿț—țąÿÿțąț”ÿÿț”ț“ÄÄțŠÄÄț“3țMggțfggț$țiÿÿęi%țlÿÿęl&țoÿÿțŁțrÿÿțrțvÿÿțvțzÿÿțzțÿÿțțƒÿÿțƒțˆÿÿțˆțÿÿțț’ÿÿț’ț—ÿÿț—țąÿÿțąț”ÿÿț”țGHHțHHțGțIJJțGôKàŚŐÒĐÏÏ«KLćŸÇÊËÈÄÀș°¶žèIJÄŃŰÚŐÎƻȷŠŠŽHÁÏÿÿÙÿĂčźș·¶ÏJœÉțÎËțżŽȘÀș·ÏI·ÂęęÎę·­€ĆÀșĐIŻ·û»čû­„žÉĆÀÒH§ȘúźŹă⟖ËÉĆŐJ  ŁŁąŸžÌËÉŰIš—•“‘ŽąÎÌËÙHóHßÖŐÔÒŃÏÎÌÚHóIàŚÖŐÔÒŃÏÎÚIóHàŰŚÖŐÔÒŃÏÛHóHäààßßȚȚĘÜâHțGHHțGàmțmmț€ôđéçäâáá|ć14554310vÌ·ö€€379:8630-Í„„Žt26țțTț30,ĐÍÌá€14ű65ű1.+ÖĐÍá}/2ńńPń/,)ÛÖĐâ{,/é00é,)'ßÛÖäz*+ă,+­Ź($áßÛç{(())((''#âáßêz&%$$##""mäâáëwówńëêéçæćäâìwóvòìëêéçæćäìvótòíìëêéçæćítóqôòòńńđđïîòq máț•””ț””ț•ț¶··țžô¶úöôóòńńÚ¶łțì~ăĐț¶”äÀÀŹŁțțFțæäăńłűűèæäńłđđBđìèæòČèèîìèó±áȘ©îîìô­ó ïîîö­  ùnđïîöȘó©ùôóóòńńđïö©ó§úôôóóòńńđś§óąúőôôóóòńńśąû›üúúùùűęû›ț•””ț•àț“ÄÄțŠÄÄț“ń€@ P(ow.pngÿ     Öcgc{c‹űśÿÿövÿÿöûRÿÿśï4ÿÿüÛ!țÿÿńżÿÿÿÿú™ ÿ ÿë ÿÿ ÿÿ ÿ ÿë ÿÿ ÿÿÿ ÿóÿÿ ÿÿûÿ ÿûÿ ÿî 홗–”“’ˆ‰‰‡…—ÿÿö»‹Š‡†„•ÿÿöꚈ†„‚“ÿÿśś—ƒ‚€‘ÿÿü튀țÿÿńʀ|ÿÿ‡†…ƒ‚€ÿÿúÈ{‹ÿ ÿëy‰ÿÿ„‚~|{zÿÿw‡ÿ ÿëu†ÿÿ€~}{zywvÿÿs„ÿ ÿóq‚ÿÿ|{yxvuÿÿûo€ÿ ÿûm~ÿ ÿîk|{yxvusrponlkiőàȚÜÚŰŚŐÓŃÌÌúÊÈĘÿÿöăÍÊÉÇĆÛÿÿöțŰÊÇĆĂŰÿÿśûÎĆÀÀÖÿÿüöÆÁțÓÿÿńîÀșŃÿÿÊÈÆÄÂÁÿÿúâčÏÿ ÿë·ÌÿÿĆĂÁżŸŒșžÿÿŽÊÿ ÿëČÇÿÿÀŸŒșč·”łÿÿ°Ćÿ ÿó­Âÿÿ»č·¶ŽČÿÿû«Àÿ ÿûšŸÿ ÿîŠŒč·¶ŽČ°źŹ«©§„ŁęŒÿÿśËÙÿÿëÿÿűž?òÿÿÿÿù;òÿÿ ÿúe=Űÿ ÿęúB ÿûí%ÿ ÿüÏÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿțÁÿ ÿțżoc.pngÿ     €fûggíBA@?><;:936532AÿÿöŠ55320?ÿÿöüj200/>ÿÿśńP0.-<ÿÿüà<+ü:ÿÿțțăÇ.)8ÿÿ321/.-,*ÿ„'7ÿÿ2țț.țțâ)ÿÿ&5ÿÿ0/-,+)('ÿÿ$3ÿÿ.țț*țțâ%ÿÿ#2ÿÿ,+*)'&%#ÿÿ!0ÿÿ+țț'țțè"ÿÿ.ÿÿ)(&%$#! ÿÿ,ÿ ÿû+ÿ ÿî)(&%$#! íĂÂÁÀżŸœŒ»»žž·¶ÂÿÿöŚž¶·¶”ÀÿÿöțËž¶”ŽżÿÿśúÀłŽłŸÿÿüôžČțŒÿÿăêłł»ÿÿ·¶”ŽłłČ±ÿȚŻșÿÿ¶ÿÿłÿÿâŻÿÿ­čÿÿ”ŽłČ±°ŻźÿÿŹ·ÿÿłÿÿ±ÿÿâ­ÿÿ«¶ÿÿȱ°Żź­Ź«ÿÿȘ”ÿÿ±ÿÿźÿÿèȘÿÿšłÿÿ°Żź­Ź«Ș©ÿÿ§Čÿ ÿûŠ±ÿ ÿŻź­Ź«Ș©š§Š„€Łí/.-,*)(&$""! .ÿÿö~# ,ÿÿöü[*ÿÿśđ?)ÿÿüĘ)ü'ÿÿțțăÁ%ÿÿ ÿ#ÿÿțțțțâÿÿ!ÿÿÿÿ ÿÿțțțțâÿÿÿÿÿÿ ÿÿțțțțè ÿÿ ÿÿ ÿÿ ÿ ÿûÿ ÿî ęŒÿÿśËÙÿÿëÿÿűž?òÿÿÿÿù;òÿÿ ÿúe=Űÿ ÿęúB ÿûí%ÿ ÿüÏÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿțÁÿ ÿțżoi.pngÿ     rjßjókíÔŃĐÎÍÌÊÉÆÌÄĂÁÀŃÿÿöĘĂÂÁÀŸÏÿÿöțÒÁŸŸŒÍÿÿśûÉœŒ»ËÿÿüőÀčțÉÿÿùìčłÇÿ ÿæà”ĆÿÿÄÁÀŸœ»șžÿÿłĂÿÿÂęÿÿä¶ÿÿ±ÁÿÿÀțŒÿč·ÿ”ÿÿŻÀÿÿŸțÿÿćłÿÿ­ŸÿÿŒțžÿ”Žÿ±ÿÿ«ŒÿÿčÿÿèŻÿÿ©șÿÿ·”Žł±°ź­ÿÿ§žÿ ÿ”łČ°Ż­ŹȘ©šŠ„Łíb`_^]\[YXUVUTR_ÿÿöVUTSR^ÿÿöü‚TRQP]ÿÿśôlQOO[ÿÿüć\MțZÿÿùĐQLXÿ ÿæŽKWÿÿZTSRQPONÿÿIVÿÿXúÿÿäLÿÿHTÿÿUüPÿNMÿKÿÿGSÿÿSęÿÿćIÿÿEQÿÿPțMÿKJÿHÿÿDPÿÿNÿÿèGÿÿBOÿÿMKJIHGFEÿÿAMÿ ÿî@MKJIHGFDCBA@?=íÿÿöuÿÿöûP ÿÿśï3 ÿÿüÛ țÿÿùŸÿ ÿæ™ ÿÿ ÿÿ ÿÿűÿÿä ÿÿ ÿÿúÿ ÿ ÿÿÿÿüÿÿć ÿÿÿÿę ÿ ÿ ÿÿÿÿ ÿÿèÿÿ ÿÿ ÿÿ ÿ ÿî ęŒÿÿśËÙÿÿëÿÿűž?òÿÿÿÿù;òÿÿ ÿúe=Űÿ ÿęúB ÿûí%ÿ ÿüÏÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿțÁÿ ÿțżoo.pngÿ     @n­nÁnŃí~|{zywvutwqpnm|ÿÿö­pmnmkzÿÿöę•mlkjyÿÿśő‚jihwÿÿüéshțuÿÿùÖigsÿ ÿúŸcrÿ ÿûapÿ ÿû_nÿ ÿû^mÿ ÿû\kÿ ÿûZiÿ ÿûXgÿ ÿûWfÿ ÿîUdca`_^\[ZXWVTSí~|{zywvutwqpnm|ÿÿö­pmnmkzÿÿöę•mlkjyÿÿśő‚jihwÿÿüéshțuÿÿùÖigsÿ ÿúŸcrÿ ÿûapÿ ÿû_nÿ ÿû^mÿ ÿû\kÿ ÿûZiÿ ÿûXgÿ ÿûWfÿ ÿîUdca`_^\[ZXWVTSí~|{zywvutwqpnm|ÿÿö­pmnmkzÿÿöę•mlkjyÿÿśő‚jihwÿÿüéshțuÿÿùÖigsÿ ÿúŸcrÿ ÿûapÿ ÿû_nÿ ÿû^mÿ ÿû\kÿ ÿûZiÿ ÿûXgÿ ÿûWfÿ ÿîUdca`_^\[ZXWVTSęŒÿÿśËÙÿÿëÿÿűž?òÿÿÿÿù;òÿÿ ÿúe=Űÿ ÿęúB ÿûí%ÿ ÿüÏÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿțÁÿ ÿțżicons8-pp.svgÿ     ÿÿÿțv qæqúr /ûÿçææ üÿççææțçæțűÿÿțćææûùÿțțÿÿțćææűśțüûțÿÿïćææęęûòææöęęûüÿÿòćææÿîńÿèæöüțțÿÿòćææÿîńțçæöûûüÿÿòćææÿțúîææöûûțÿÿúćææÿìææęùțÿÿúćææęìææțśüüÿțćææțűțțÿțćææțśęęÿæțűÿÿüÿççææțçûÿçææ./ûUIIM ü3GIJJțLJțwŠŠț‹JűzŠȘĄŠŠ‰Jű«ÉéȘŠ‰JóôćžJJÂșĆâ̊‰JòÿƒœțZJÂÆŁąŠŠ‰Jòÿ‚ûUJÂééيŠ‰JòÿőʆJJŒé㡊Š‰JęÿwJJü~ŠŠț‰JęóuJJț¶ÚÚü͊‰JțŒĄĄüŠ‰Jț€ÁÁü·Š‰JțwŠŠț‹ü3GIJJțLûUIIM.0ü țțOeețdțűRe’„eefțű“Œæefïđđ߃łŠ¶ßŸefïÿa‚ț.łžˆ‡eefïÿ`ƒú'łççĐeefïÿòÔe­çȚ†eefúÿSüWkeețfúđOțŁÒÒüżefțțj††ü€efțț‹±±üŁefțOeețdțü./û*[ ö+^‘Äôÿÿ@ęqûÿÿțÙÌÌț\ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ęqûÿÿțÙÌÌț\ö+^‘Äôÿÿ@û*[.icons8-excel.svgÿ     ÿÿÿțš v<vPv`/ûU1-+ ę3/..ț0ț-..țDLLțK.țELL.űȘŠÓÓnL.ń‡îDZđX.ˆyˆŠŠbL.ń4âąÈ°..ŸˆœÄÄiL.òoöń@..”€‘””fL.òtôôD..”€‘””fL.ń<ëŒŃč..ŸˆœÄÄiL.ńąĘ5bń`.ˆyˆŠŠbL.űȘŠÓÓnL.țELLț-..țDLLțKę3/..ț0ûU1-+./ûU€~€ țf}}ț|ț|}}ț ŻŻț~}}țąŻŻț~}}űÏÍŚëëŸŻï~}”ô‹™ö—}ÀĂÊŚŚčŻï~}íĆĘÎ}}ËÊÓććŒŻï~}}„ùöˆ}}ĆÆÎȚȚ»Żï~}}©űű‹}}ĆÆÎȚȚ»Żï~}†óžâÓ}}ËÊÓććŒŻï~}Ćꁞöœ}ÀĂÊŚŚčŻț~}}űÏÍŚëëŸŻț~}}țąŻŻț|}}ț ŻŻțf}}ț|ûU€~€./ûU123 ę3/112ț42țHPP2țIPP2űŹ’šÔÔqP2ńŠîH]ń[2‹|ŠššfP2ń8ăŁÉČ22ĄŠžĆĆmP2òröńD22•ƒ”¶¶iP2òwőőH22•ƒ”¶¶iP2ń@ìŽÒș22ĄŠžĆĆmP2ńŁȚ8eńc2‹|ŠššfP2űŹ’šÔÔqP2țIPP2țHPPę3/112ț4ûU123./û*[ ö+^‘Äôÿÿ@ęqûÿÿțÙÌÌț\ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ęqûÿÿțÙÌÌț\ö+^‘Äôÿÿ@û*[.icons8-word-2.svgÿ     ÿÿÿțÚ z€z”z€0ü  ü   ț ț  ț!!ț  ț!!ț"ț  ț™ÈÈęK"őLĆ °‰!Ț 6DDę)"ő!öäŸHœ ™ÈÈęK"ő âPŒæo‹ a~~ę8"ő °«†Î±Y a~~ę8"ő ńSó( ™ÈÈęK"ő Kï!hÛ 6DDę)"ț  ț™ÈÈęK"ț  ț!!ț"ț  ț!!ü   ț ü ./ûUIFD ú3GGFHGGțHțFGGț––țHGGț‚––ț•țHGGțŸććęȘ•őHwÓGĂŠVæG§§ęš•őHVùIëÎtÌGŸććęȘ•őHGézÌ쑧GŁÂÂꡕőHGĂżŁÙāGŁÂÂꡕőHGžô|”ö[GŸććęȘ•őHGvóVŒäGG§§ęš•țHGGțŸććęȘ•țHGGț‚––ț•țFGGț––ú3GGFHGGțHûUIFD./ûȘ€ ą û™  ąĄĄțŸț ĄĄțÙóóțôĄțȚóóĄțćüüęőóőĄčéĄàŃ©òĄàőőóőĄ©üąőæžćĄćüüęőóĄśô»ćőÇÒĄâűűęôóĄśàßĐìáŸĄâűűęôóĄśÍùŒÙú«ĄćüüęőóĄśčù©ÄńĄĄàőőóĄțćüüęőóĄțȚóóț ĄĄțÙóóțôû™  ąĄĄțŸûȘ€ ą./û*[ ö+^‘Äôÿÿ@ęqûÿÿțÙÌÌț\ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ț€ÿ ÿț€ęqûÿÿțÙÌÌț\ö+^‘Äôÿÿ@û*[.2 icon-groupÿ     ~ă2~ś2țIJJțGčIJJŁžœ›™™»«KLIJJŁžœ›™™»«‰’èIJKàŚŐÒĐÏÏ«‰’èn€ŠHIÙÉĆÀș·¶žèn€ŠoÏJJÚËÉĆÀș·ŠŠ€·oφÏIJÛÌËÉĆÀș·¶Ï†Ï…ĐIIÜÎÌËÉĆÀș·Ï…ЇÒHIÜÏÎÌËÉĆÀșĐ‡Ò†ŐJHĘŃÏÎÌËÉĆÀÒ†Ő‡ŰIJȚÒŃÏÎÌËÉĆՇۅÙHIȚÔÒŃÏÎÌËÉŰ…ÙƒÚHHßŐÔÒŃÏÎÌËكځÚIHßÖŐÔÒŃÏÎÌځÚÛHIàŚÖŐÔÒŃÏÎÚÛ}âHHàŰŚÖŐÔÒŃÏÛ}âHHGHäààßßȚȚĘÜâHHGGHHțGț€ôĂŸœŒșșӁ|ÊĂŸœŒșșÓ­źö€€đéçäâáá­źö•Ÿ„t€ëßÛÖĐÍÌ·ö•Ÿ„“á€~ìáßÛÖĐÍ„„€¶“áȘá}€íâáßÛÖĐÍÌáȘá©â{}îäâáßÛÖĐÍá©âȘäz{îćäâáßÛÖĐâȘäȘç{zïæćäâáßÛÖäȘç«êz{đçæćäâáßÛç«êȘëwzđéçæćäâáßêȘëŠìwwńêéçæćäâáëŠì„ìvwńëêéçæćäâì„ìŁítvòìëêéçæćäìŁí òqtòíìëêéçæćí òpmmqôòòńńđđïîòpmmm mț¶··țž趷¶ȚÜÛÚÚÙèÚ¶ł¶·¶ȚÜÛÚÚÙèÚĐËț¶”¶úöôóòńńÚĐËț»ŸÀŁ¶öîìèæäăĐț»ŸÀșńł”śîîìèæäÀÀ€ȘșńÎńłłśïîîìèæäăńÎńÎòČłśđïîîìèæäńÎòÎó±ČűńđïîîìèæòÎóÎô­±űńńđïîîìèóÎôÌö­­űòńńđïîîìôÌöËöȘ­ùóòńńđïîîöËöÈö©ȘùóóòńńđïîöÈöÇś§©ùôóóòńńđïöǜƜą§úôôóóòńńđśĆśÁû›ąúőôôóóòńńśÁû™”•›üúúùùűűû™”••””ț•țMggț$üMgŠÿÿùi%MgŠÿ ÿül&iÿ ÿęŁlÿ ÿęroÿ ÿęvrÿ ÿęzvÿ ÿęzÿ ÿęƒÿ ÿꈃÿ ÿꍈÿ ÿ꒍ÿ ÿꗒÿ ÿ걗ÿ ÿꔹÿ ÿûîē”ÿÿùîē“ÄÄț“2 icon-textÿ     Fƒ‚2ƒ–2ƒŠțIJJțGôKàŚŐÒĐÏÏ«KLóIÙÉĆÀș·¶žèIJśJÚËÉĆÀș·ŠŠțHóJÛąĄŹąÀș·¶ÏJóIÜżœŒșĆÀș·ÏIóIÜŠČąĄŸ›ą–ĐIóHĘĂÁżœŒș¶°ÒHóJȚ«šŠČąŻŹąŐJóIȚÈÆĂÁżœŒșŰIóHßźș«šŽČ©ŻÙHóHßÊÉÈÆŃÏÎÌÚHóIà±Ż»łÒŃÏÎÚIóHàŰŚÖŐÔÒŃÏÛHóHäààßßȚȚĘÜâHțGHHțG!ț€ôđéçäâáá|ó€ëßÛÖĐÍÌ·ö€€ś~ìáßÛÖĐÍ„„țtó€íŒ»ĆŒÖĐÍÌá€ó}îŰÖŐÓÛÖĐÍá}ó{îÁËŒ»žŽœ±â{ózïÜÚŰÖŐÓÏÊäzó{đÆĂÁÌŒÈĆŒç{ózđáßÜÚŰÖŐÓêzówńÊŐÆĂÎÌĂÈëwówńăâáßæćäâìwóvòÍÌÖÏçæćäìvótòíìëêéçæćítóqôòòńńđđïîòq m"ț¶··țžô¶úöôóòńńÚ¶łó¶öîìèæäăĐț¶”ś”śîîìèæäÀÀțŁółśÉÇÓÊèæäăńłółśćäâáìèæäńłóČűÌŰÉÇĆĂÍĂòČó±űçæćäâáßÛó±ó­űĐÍÌŰÉŐÓÊô­ó­ùêéçæćäâáö­óȘùÓȚĐÍÙŰĐŐöȘó©ùìëêéńńđïö©ó§úÔÔߌòńńđś§óąúőôôóóòńńśąû›üúúùùűęû›ț•””ț•!țMggț$țiÿÿęi%țlÿÿęl&țoÿÿțŁțrÿÿțrțvÿÿțvțzÿÿțzțÿÿțțƒÿÿțƒțˆÿÿțˆțÿÿțț’ÿÿț’ț—ÿÿț—țąÿÿțąț”ÿÿț”ț“ÄÄț“!application/library/img/src/dialogs.pxm000064400000132217147577724760014266 0ustar00PXMT_DOCÊHEADER °@Nï2CpàpńMETADATA‘ ] streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+ _IMAGE_ZOOM_†’„„„NSNumber„„NSValue•„*„„fœ†’„—˜_MASKS_VISIBLE_RECT_†’„—˜{{0, 0}, {0, 0}}†’„—˜_DOCUMENT_SLICES_†’„„„NSMutableArray„„NSArray•–†’„—˜_ORIGINAL_EXIF_†’„“–’„—˜{TIFF}†’„“–’„—˜ResolutionUnit†’„™›„––†’„—˜Software†’„—˜Pixelmator 1.6.5†’„—˜ Compression†’„™›š–†’„—˜DateTime†’„„„NSMutableString—˜2011-07-06 14:57:18 +0400†’„—˜ XResolution†’„™››œH†’„—˜ Orientation†’§’„—˜ YResolution†’„™››œH††’„—˜{Exif}†’„“–’„—˜PixelYDimension†’„™›š–°†’„—˜ ColorSpace†’§’„—˜PixelXDimension†’„™›š– ††’„—˜*kCGImageDestinationLossyCompressionQuality†’„™››œ†’„—˜ PixelHeight†’„™››œ°†’„—˜ PixelWidth†’„™››œ †’Č’§’„—˜{JFIF}†’„“–’„—˜ IsProgressive†’„™›„„c †’„—˜YDensity†’„™››œH†’„—˜XDensity†’„™››œH†’„—˜ DensityUnit†’§†’„—˜{IPTC}†’„“–’„—˜ProgramVersion†’„—˜Pixelmator 1.6.5†’„—˜ImageOrientation†’§’„—˜Keywords†’„ –††’„—˜ ProfileName†’„—˜ Color LCD†’„—˜DPIWidth†’„™››œH†’„—˜{PNG}†’„“–’„—˜ InterlaceType†’„™›š–†’„—˜XPixelsPerMeter†’„™›š– †’„—˜YPixelsPerMeter†’„™›š– ††’„—˜ DPIHeight†’„™››œH†’„—˜ ColorModel†’„—˜RGB†’„—˜HasAlpha†’„™›Æ †’„—˜Depth†’„™›š–††’„—˜ _PX_VERSION_†’„—˜ 1.6.5†’„—˜_DOCUMENT_WINDOW_RECT_†’„—˜{{620, 85}, {408, 670}}†’„—˜_LAYERS_VISIBLE_RECT_†’„—˜{{0, 0}, {239, 240}}†’„—˜_DOCUMENT_SLICES_INFO_†’„“–’„—˜PXSlicesPreviewEnabledKey†’§’„—˜PXSlicesVisibleKey†’Ɔ’„—˜__OLD_METADATA_FOR_SPOTLIGHT__†’„“–’„—˜ colorMode†’§’„—˜ layersNames†’„ – ’„—˜trash_32†’„—˜ search_32†’„—˜ magnifier†’„—˜compress†’„—˜pencil†’„—˜Untitled Layer 4†’„—˜arrow_up†’„—˜ bullet_add†’„—˜Untitled Layer 2†’„—˜Untitled Layer 5†’„—˜Untitled Layer 3†’„—˜Untitled Layer††’„—˜keywords†’Ò’„—˜ csProfileName†’Ô’„—˜resolutionType†’§’„—˜ resolution†’„™›„„dĄH†’„—˜ canvasSize†’„—˜ {32, 432}††’„—˜ _PRINT_INFO_†’„„„ NSMutableData„„NSData•–z„[378c] streamtypedè„@„„„ NSPrintInfo„„NSObject…’„„„NSMutableDictionary„„ NSDictionary”„i’„„„NSString”„+NSHorizontallyCentered†’„„„NSNumber„„NSValue”„*„——†’„™™ NSRightMargin†’„›œ„„fH†’„™™ NSLeftMargin†’„›œ H†’„™™NSHorizonalPagination†’„›œ—†’„™™NSVerticalPagination†’„›œ—†’„™™NSVerticallyCentered†’š’„™™ NSTopMargin†’„›œ Z†’„™™NSBottomMargin†’„›œ Z††††’„—˜_MASKS_SELECTION_†’„ –I„[73c] streamtypedè„@„„„NSMutableIndexSet„„ NSIndexSet„„NSObject…„I††’„—˜_ICC_PROFILE_NAME_†’Ô’„—˜_LAYERGROUPS_EXPANSION_STATES_†’„ – ’„“–’„—˜_STATE_†’Ć’„—˜_ID_†’„—˜;18DCEA49-EC76-443A-A8F7-C33B7F0ABE40-38719-0000A622FFF83A76††’„“–’’Ć’’„—˜;B04E2227-A8FB-445E-8507-715014398607-38719-0000A5FC7D711AD1††’„“–’’Ć’’„—˜;0828C7D6-460F-46D8-A0A3-17F76E305E18-37040-00009A59C66DC784††’„“–’’Ć’’„—˜9566ABCBB-01BE-4C4C-87D1-0B342B8B69DE-876-000009D534597ABC††’„“–’’Ć’’„—˜997AB2E81-9E27-4462-9760-F6AA01B147B3-876-000009B8F9D8ED23††’„“–’’Ć’’„—˜992F51EF2-97FC-4217-9109-D7BCBC694246-876-000008D641B063BD††’„“–’’Ć’’„—˜944BD8AFF-ECBA-439E-AE3B-DCF4874F4791-876-000008CD62DBA8BA††’„“–’’Ć’’„—˜9606B053D-0A88-4C9F-B995-4A1465F464A3-876-000008AF7D200E79††’„“–’’Ć’’„—˜9A308625B-DFD4-4F42-B24E-7647D1E32544-876-00000897A3BCCCB3††’„“–’’Ć’’„—˜93DED5A86-9E91-4497-8896-05443D45274C-876-000008E8F68B3C6B††’„“–’’Ć’’„—˜9B488B5C0-15AF-492B-9E78-BF75A597D20B-876-000008D39490AF11††’„“–’’Ć’’„—˜9ABC8B5FA-F536-49F3-A247-199BBC422425-876-00000892F8AC9460†††’„—˜_DOCUMENT_LAST_SLICE_INFO_†’„”–’„—˜PXSliceMatteColorKey†’„„„NSColor• „ffff†’„—˜ transparent†’§’„—˜PXSliceFormatKey†’„—˜PXSliceFormatPNG24††’„—˜_IMAGE_VISIBLE_RECT_†’„—˜{{-125, 1}, {377, 628}}†’„—˜_LAYERS_SELECTION_†’„ –8„[56c] streamtypedè„@„„„ NSIndexSet„„NSObject…„I••††† GUIDES_INFO0 COLORSYNCLAYERSa …lU$'+Ô/2œ5í9.AœGxMTă Âtrash_32d';18DCEA49-EC76-443A-A8F7-C33B7F0ABE40-38719-0000A622FFF83A76€€xœ•{L•eÇ_˜á™TKł…ó*B«tkÙEÍr±’¶VëbőGłÙ‰;(ˆ…M74± Ó-CJ™@G8ÜA‘ĂU 8r=p8 € ô‡s~û};tDnKâ·}öŒïóŒçûyŸç}ȚśhcËÎÎ^ó\śf> ÍžgæhŰ í•ŐŻ«ü‰ËNÛìț–Vmèg”ȚČ`ęÍÌû†9ÌSč›Ü<”çȚČÓ^uĘąź‘k— $Â釶Ąúèț) Ěż~Sč*Ÿë0¶^Zùš“kæZŽ*śŒŸfÎOœQùÊóąËFͶŰDZق>‡9sĆ|§ô_€Ăÿ‹>±ț[<ŻÜ5{Đg[<ŻțŠ3‡A`;ôÙÏËĂl•ßłŹ-ûîjCÈÔń?XÙë1[Âcúl‹ç5_C»$Ye2^ÆVàù%ńńۊêx“–Œیń:+Ș_ ‡>Ûâ9ûg úlëÏSȘo¶ oœòóók9pàNœ8űűxÄĆĆMHllì(111“’˜˜ˆèèhw‰fŒïŻ*ÿ’””à… (,,ŒŽ‘3GÀÙx„„AFžùùùw‘——‡<ĄššH'''#<<ŒF4–——ŚwÌźźźFgg'š››Wź\Ćh4ąŃۄ‡Ó}1?mŠùBKùMÒDZŠŠ&EccŁą­­Mćń>ÂÂÂ2D3ač»»o,..ŸY__‘‘\»vMqőêŐ»ŹIÂ#yÁx<7HÁSÒ:[w™Æ"ôôôŒ244æ x{{Gj“”ŁŁŁSzzz_mm-†‡‡•k,Š^3òÄ„CőéűÌp‹Č°2;sÎ퀄ǹŒ‹EAUUŸç-77· ą™Ždï”ÔÔÔ`ppPùÆČțü>ć^(tYș±čà[,Ë Âòì ,úc›rÚręúuTVVB§Óős~ą˜ŽdߗŃߌŚ§ ł··WaìnG\ƒ.»°łúWć©8Žò"áœá‡ĐòăÊÙĘĘ łÙŹŽ™Aÿɓ'Û%~ʊˆˆ8ÍőêêêÂÀÀ€ŹgȚ.=炝jȚOæŁ[ÖŰ,næ[é_˜!Țç*7áœ3‡ț„„„J‰ŸČ<<<¶•••Ęææłăłlł˜đ|a$äȘgœŻæŒrë\?-ù.:?,ÓùąŸĂšŒęęęêàȚ‹ŠŠJ•ű)ËÙÙÙ5++k˜ï̍7”żÆduŻÎĂÇ„‡•Ó çnìl…›NÆć6é#ÔûËgÏ””ù@ȚíP‰ŸČìííçÈ·ÂÂßqrŽÏîÆâŹ@<ŁW*Ú”—Đœ5w/Ž_ÎDFS)V„ûbUê—8}9Wù+** ïôm—u?­:vìX=ę|țÍæv,śR}Ț=‹càUt[óśĄĆԆ7sö`uÚW8X™ŒĘeČupKőAœ!Y­?Ś^ŻŚp^=­’ÿ€îΝûț“’#2,ÍôÇò <-íŠs~đ+IPó]#ž€ûÁUŸ‡tŻ‘ùW”Ő«gGżŹ§Yb§]Û·o)//Gkk«šC«©r#áY°ïäÌ}sv$Z:Z±%++Ćč^‚72ñń\|ŠŽšû淗~YÏZ‰v­]»ÖCŸŚ·êêêÔà^â^‹ÉdRŒ—łčeȘï á{Ïß_Œx‘{ÿŒÄN»œœœŠ„„ pïXęVè }”-ąŁŁííí îźaII ś~ÄŽWƒÂ<áQá ÁYX‘””dŠŸïś…~YGÈȚß*™Ìe>=óz~“ ‹…ç„—Ć™ÀÇÇGÇ<ç̌‡>zŹkđ0_àہŚńž—hČ‚‹à: xŻ_ąĘù=s˜Ç\æÓ#>Íáo=É Oł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53††ć’ search_32d';B04E2227-A8FB-445E-8507-715014398607-38719-0000A5FC7D711AD1€ž€x”– P•Ś†ŻiÜąDÉhă2mjŁ]2c%c”ÓBj›Ćă5ŃhY†ȘT@TöME ‚ ąąB$ì‹ ›lFEQ,MPŁIŸ\ž\ž—Ë}û~ÿ…$)XÓæ›y8ÿÙŸś=ç?śçšFˆQŁT?š6í™?Y[ÿúèČe‹źźYcû„ĘkRê Ÿ-ę2ŽĂÿŻńüó3ìDÇgër$xŸŠÔDnAĂ)WÜ<žeûÇvé_»Ö¶AÆsÚÿăǏúúëÖćŸÎoą2Ü é0ú„0–ÀXLJLh?òBkŒ;.ìł‡7}È<™Ï4ß+&M2ŸûÖ[6u‰ŸНć…Ń* ”Ę_š&Ú łƛ (ò‡.Ï 1Ûëő6dŸäașG ń-û]ê]ŽŻą=PDę{…€úĐuŸÔ‘zzh 0Șëa ŸBĄ?śÊY›”ó!ù˜öż 9?ČwÁvĐ0—äâê1[Ș©uÆÎ{&èĆŰń9jÒ]Ą_8ï‡öT/ÄúŹWȚ…äeú‡ÆsÏ=»Îśo+ĄÍöUòˆn?ßčäŐ3§ź(ę‘Đ߈Cu" •'ŰżöőŸDžęÿÍ đq^ÉËô#†x\œúśśjăÜ8?€zÌE]9sò^{ÏyŁçŹ'4Y;y&LhÎz(gŻ7Ç}yôX`š§”ÔïÍőCéÁ­Œ’Ÿ2ĂƔ)O/òwYE-æań ËśƒöcoE«#Ęí)ź mɄe{ŠśÙ ê wúą—l/ÎçÚóDŸóI{ș/<č’Ÿ2ĂÆK/ęòPÎáżR;PA—Í9/šÏìPtڒ\š·™HpUh‰wAkąÉO'=*òEŸ9šŻÍ @|ŹŹ~I™aă7]ŻKśRŽő烞§ŸPgîą65’ܚ㊊¶W4~à†Š84R[6ńҚŒ]Yž|ąM˜«ëžtÌ ’Ÿ2ĂÆ;ïüĄ­ó}S[r+É’Ÿ2Æ=żçšŒĘĐ큟pzó‚ țĐ-)žhJÜĆ5{ Č ń;ż)ioNöB[Fș>ڋžŒ`ôì„ț^%WË߃aoÿ(3ll|ś•îî‚}è/âқżĘ9ûŃqvÚ3њ„–tțŠR}M€űĄIHő§nÚłöĄ+;ĘčĄ\G(Ž!\{tĆ!h̆ä§Ì°±jŐïî4æRżdçĄè9š‚ƒèÎGW^:r +7 êœPš?Agv( áó{lg_A8Ç‚&Ÿđč‡sû @W[™Aü ÚÜĄÌ°ak3/ęÆŸÿrz/>ŒžąHE"Ą)æsńtF §ä4%R€VêJÇÈX–ŠńGĐ[Äț’CĐWDAôNŰÚZŠSfۘ={Šăń`'~ŚN śÂQh/#Gù|ÌÄĆ(h/Čœ< œeR©—±.ęŸpôž›_ùŸ<.w͌1‡č(ùgb?Fł)?ŚpóIéUWCĆíź–çŒ}­CĄÔWÜwoÉ[WÌ\Ö ôŸsZ”9ŚPüÂ\ÜAokeI—·íő=CáŰ«Š;ùyën±„ą…5U§ëSNŚL̛4?5őĐo2«-żŃžž–zš”h!Jrč|ÍĄœÛÌÖÊ»zÿ 6ä5îzÌZŽ%ŹćȚÒç^‡ú7ZîyÚŹ5}ĘN[?çŠÇa}ËóĘËÖą…(ĆĆĆoš(śïȚ€ÛięĆśȚöŠæ4ՕśČ-DI«ŐžhŹ)őòžČ/ĄÏï`ŽŁț‘Ÿ”h!J8WŒæ’+.{őęö%ôűÌ©*»ĘÁZŽ„èèèővÖŽ7Tőł/éu7Òg2k©+ë;^`|ÎZŽ„°°0­naâENjȘ~Ç3“țÜcôš îI—­v(I·àkŃB”d2Y žŁąŒ k+{]ÖQgœÙï¶?őÓëgȚt·œòy>lÚhšŒŠŠÊEč(áśËcbbò322V[,Á†Őu-/ßô8LJęž1úù=Îá~oÇÈè ÿăà›Ț@îC-Ν‚ DżŒ˜śŽÌÌLS“ĘÔétŐžçŐ*EÉĄę»›êG>}ęű8ö„Ćn+‡Ąțù}őÿ†ó†œÿ,ŚRì’vcaŽ z…ĄG{ìłA`?Ç’Ÿ‰ä æżąŻÖqłw…ęż‹ÖÀ„ê/ìÿÍVÿ»ê'X~± ŸžnÀÂaà8çmżń7æœZÿ0—œ:bŸÄÁH 9&ÔżțŚËœ7dęg»•Ášș†ŚŸôrc(Ÿ•0ŹêÆGĄuÜ/뫚­N Ło]ęßyÏ1ü <Œ‹Æc*üu¶D}­Śö?ÿ44 =ó&»V‚Ï eq莶Ÿ8’Jí'™,O‡č@VSŽźÎÛÂęAŒ]y‡LxgË[y|/[Q~ꀟ°D’—%E„ùkS^‚ÈŃÖ(ÎJÀĂÎ&4J‹éŹSœü| ŸìçóïŽÈ–őù;ÈÆu˜!öłĂï]-xÔو‡tN+ÁƒöÈéLżw§N8ÿùĐ\U€fșđœàż4WćŁû9b}íYŸŚMamwn**Ɋ„ûOĘxÌœăU†ÒŸ}=…©‘ˆśsBŒżÎűÄـC8ŰżȚ˜n)fMBaŒóöîűȘèڏ‰ÂčÍsæòx^őćÙHń†„ń†ŒńăÔL /D #ƉĄÎˆö>€%șs§OŐŽš5}ÊȚfNł!­ 5BaŒÄșǖ&‡»!II8—ïżL·^„öș„ÎÏÙńÈ9€óŽ'#Eû0uÒx#òÏ&Ž‰i„:ÁšęM…Đ æzĊ7€óčŚT«<3n€ŸÖd”ä—Mšoƒ‰ëÂęđțŽ)_o\v!ÂÌÖuŸû’ïmBł"k >?KÈÿŽáúć"Îe¶oZ@>ËHmŒ8ÄÒü~żHę&ÓZôŻÄqZ'W€ž 9œËđ;ő1–©iÄŃ>ÏOțA Îß1tŻŽò±Ă/—ÎúŒÿ"è[Mÿ·X?GÊéŸïÄúŒȚ#5 ę„ §=mÁl\č8‘|«ˆ5–ÛŠÓąŒí G+ăbö«8‡snKŸÿŁÏ”ûXÖÇ\‚śö B‡ĐëƒßÙÇ1Îá\†Ûr#5‚Ûó˜1ûT 5‚} żłcœĂ>†ÚŽRù2GßŃł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53††© Jpencild'997AB2E81-9E27-4462-9760-F6AA01B147B3-876-000009B8F9D8ED23€gxíÓOl‹qÇńźxŠbXL•°ƒ]&!–(âÏæ@ÄA„ •m*E4Șőšvÿj,ÄÒÎ֕[ÂaF‘Ć–Ùš>¶&6‹nÖ4Ź‘&t:łïoêàȚçéeŸä}xÚĂëù=}*“fœ§ȘíÜV욒jÜ+ë{„Z‚=…çÚł±ŻTśÀ5ßsĄÖ^ƒđë1LD'đĄemüĂ°KśVì{à59ŃçëE$òÁÏŁŽĐeëDG„u„Ó~:%ÆžuÆ^4ÛŻ" ˜‚OđąÜfFgùx.»a/îfŸ’JôžÆ.ì€S~à{(żĐƒ;.',3ŒWÎĄŸŰÇìMTąÏ?mïöçûQàÀKÀQy6 Íń"è ZfçR+šDțțÿÙĂQà˜XìÒêëüY˜.œ‘Ì."{)ÙËêe#°țô}Éíć,Čs” ɱÀvímńlÓ_[ߟ;ïéOèé?– {GÜI‚ęïܒÛńwÙ’?󾝔ś|ƞ±™ËrŠkožÔƒ]ɱć‹Č7kŽ<FĘ0ô 8úB2›M±ŠÄńĆőiăż›0ôZ@e—ÄN™§Z•WÒDőàîĆÀwÿÀÁ'ż l`vœ˜6§Ö””֌Vÿ$ÌȚLăÈ· ŰȘmۖÉččȘț tT …MÈ*ŒSdæŰèë-”h6m–:ÿđ­C{ò°OW†œŐïR32KéómÔjj %–Í6_ËW@œÿ€[>'u/]«©,*ƒRPrJÌ- Č©”ÔJj!ĆΛBI1f13šMI8™ì”ĄžŃł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53††8Untitled Layer 4d'992F51EF2-97FC-4217-9109-D7BCBC694246-876-000008D641B063BD@ì@x’ÏK”qÄ\»Iupϝ++A:Qi?HđœAęT*‚­]ZӃ*țDK3ĂK—dkYŠq·€{OŸçy7Șo ĂÌ<óŸËîêWä`l†ù:șśÜûüæ<;êèȚsïSh֕¶UĘ>o*œÛĄ{ÏœO#ï·żÎ™>=4}„hxòèÓÈ«pÖZ«ÓŠòÓ;ˆ†'>Űʜ5œ2•ŠĄáÉŁOcż §­ŻúÆŽÆ~śŁáÉŁOƒ}‡]Żź›VyśKž†'>ŰßȘ–L/ŠlÙŁáÉŁO#öƒ”Či„Ȗ=ž<ú4bŻV1-łÎ O}ìÛmèËÓûeöhxòèÇ.žúosÌï†ęțû%öhxòèł;żśc7<OÁnżùÌę"û§ìŃđäŃKí°&Ęí2 všîđčyÜFkïM ŸćśGÓGïw~żłÏérی& vĄüŠÏ;Êf8ăâHŠNòèčӍ3[ìá6tńđ„ÆźÙŐÊkÓïwČsĆGNŻŸ“ÜŚo·Ń Ț– =°ûÓ Ÿÿ'Ó«§e<îțŽìûmjkÓö­Œ‡șÜû#{ÆŁ~+}ûnźá=ÿätéÈd|ßźîÿéï8Uëł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53††,Źarrow_upd'944BD8AFF-ECBA-439E-AE3B-DCF4874F4791-876-000008CD62DBA8BA@è@x“ÏK”qÄÔn‘ÜsçJKTjJBç~ˆ`ÿD' ‹`-€C—Öô  DÄC™‘i™áĆK±”,…‚žkÒ=‚§Ïó,šH~k`fæ™ś}YQG”zÎÎêA‡…șÿTéFęŒ&ú-ÿó—膜üßšl'ûíÙƝXžu趇ŁJŚë§őô¶=Ț,šæ†śž<ńŒő]ŰÔԀĘ*~0Í?1œtŽ@9œșÏ|Fî^ÚŃlÖźÖL‹cŠWìœ Łu’Gϝz›æŰíțŠ”zxĆ4Ôeń{ßk±±òW6|ûïFÓGïw~/…ŽZŰ[á5e[mtûۜé”?#WńäŃKa<Gàq˜çünä;ś‹ì—ŰŁáÉŁŻÜùœïâ€ß ûęû7ìŃđäѧÁŸÍ•‹lÙże†'>Ű• ŠeöïŰŁáÉŁO#öƒ„<ۜi…=ž<ú4b§ô‰mÎôž=ž<ú4Ű·[_éŁi•í*4hÂĐŚÿĂßßoÄ4ûŸi!5Iﶶí]O—óbšĆKWò˜č1tüjțœźí‰Ł“Y‘ʏ<üÀ,7Ę1Áÿ??“ŸOĂdÂ?ßÇì™SBr7¶:/}K=§JeéTIß’trI',$5˜IȘßIÒ±`YČ©ăhžûfy Y>}ç› šÛüoăőgæ­ +Őälmv]ȘVÜ+A…âțčLq5—*źóEŠë\!ۧžÎ(òùꊣčJi)I—[ )"üŐ/'Ț4) đž ÀÉśMŸrÿ仧NšxW`àĀ ń˜'MŒ{J04^ ›»Dn."Çiłl?’BŽștŽșÍä8ÊlŃÈPAÜy<“zś*­ć_ŃysÌ_GRŚ^=”ČúòáMk~«K_{íHꚫŐ)«Ż€ ¶u„č-‡6}|9~ćąm(Ăç±(lΛòčBrž¶žßd’ła+9êż8«Ł>‹ÇY5Ž}EÎïr©ûÇj„œz+uLŠîȘ4êźLŁ©PFőZî6Ê©ŁhĄ ŸÇËaĄËÜM{Èy*ŚmŻĆ}Ł¶!ôĄŸˆ˂>ökÓiűlčZë•á %îá‹e~Ń`›a›a[çÒAw_Ăśï{c Őż(,ô-Ś™Ę4Ԙí<’FvŒ#öș bpŹjŒQíLČŁ{ Ö oa ‡ÎĄđa;ê¶Pgé—taW€‚2|Ż<>'Üőƒő›Q?öçșFĄÖË= Ő>çÿ)žù6ŹćgûGY]Üièț_{rîJŚéĂ6Ă6ß SÊ ~ôĐ^GM«ÿ±Ć¶Ă©d-O”„ąőâ ©ä ČŻ'ô#l©hj-FȘąÚVÀȘąÆ«¶Æ;ŠĂçŽÄțő/±ágI: śÆQOöG=À[„ą8 úÌX{û«†śĘæûiĂïÎM[Ț7ZÿbŸ RÉùfa,őìGă ÖĐëm±ńÀ<Û^XA۞jÚŒÊ`ęĄKlűžá^äî‚șYÈÄÒÍ}PFŰè‹ă#~ őˆ˜ŠˆÏaeÄ<ű"ŰżžC?Š»ÿ—ÎYjĂ·Ź§(Î-aOŸSi?«ŽÇ·Š<ă‰Iž[±Î źM䘱6æsžčžÿ9I{ÏĐÿ_űęÀ·șĂò©ûZv„r='JčnŽTÉaTż vì63Ă6['7Jiω†F+ílkt€v䅝 ŸóŃʍüuÊ5ËgrÓfƒśż dù_•Itcï:č=g-uæE‚êȍê!’ș,È1šĘe‰Òˆ€?vGËŸ»Ł=ä«ÜÈÿką©?żÇăWöą _ǝ3&=WőFKWț:ú-;‚~7GȘäo‡«ÿˆˆÛh͍ął™ÊY«^k|<űțšĂ§?Ț̀<090 ,xÖôđ‡fN]ń°Ê;`%`]8ÆêÓt°Ś4mÏi+fϘpçS8ßÇżŸšLšŠł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53††Ű %Untitled Layer 5d'93DED5A86-9E91-4497-8896-05443D45274C-876-000008E8F68B3C6B€Œ€x͔Éo[UĆ-»€ŰŽ, a‰çxˆ'q’Y_[‘ɉqUßșőĆčűăś_%™HÀC{R_íŒRîèè"Ò”žÿńGÊ{0ùŹ-ëÏsł8?Ż<ęÍ= Ò”Æ yY_]Qčë«e„Ìk­,§§?ËÉé/JO•jôLĂ: ·àYÎźÒƒ~^Œf!Ò”Fó9čŸș,ŚË+`gu>ûă“}99ÙÓïŁßPԜ©țxOćŸ1ZP°?Á™âű˜ö5ÀYˆt­‘|VÖVemy șÔÊłŁŁ§Â™ÏžÇFàOű*#čl[~!›‘Ő„E˜|ö‡‡›ò<Ź‚MôÔ*”3ĘBùì9Ÿ@MCyqA˜…HŚÊgÓČŒ0ŚÂäł>8ű|šŐȚsæł'üźWàACYˆt­\:%‹sł63­|öÆŚšú©7îèÚ æTg>û:æ|Öôx̌ä2©¶üLjHægŠd~–L·òI­~[ê” üœÜƌ҂ûÎ|î“B&-sôtxg†ÛóÓCƒ2;U’Ùé’\ƒò=á=7>•ZíËs‘ĆsUŸÒ©Á¶üáÁ€L—źÊô$(•%ƒó|>iöôx)NŒ*n~ț‰4îÿ«ÜülÿEđÈB€k%ûzeż›‰ŃŒX»b5vŐuք5aíÄÌš š„5AMÂ,DșV"ŽÿĆŹđ°Čę#űI*ślZ”™CUoÙÁôTbŒœ™Ń‡,DșV"“|fXŃägoü PÏȘaMX»±ŐÀȚÀžŚŃ;Ÿ–DoŹ-?àœÔżáfçë;ž@-ôÚGśZíȚÌ[ Çž:ŻÎČŠÇüńn€ȚX€-?†ÿŽȚ RÙÚwł œzOÚłĄ7a"]+ É@ŸąYż'V Ô·UĘŹm«ŸÉȚV 3îY3öáLïĘžoŰVȚ„Yˆt­p0 ‰xDzăQ©Tïƒ]©lÚŽj̍rfÎ9U턘Q»’ˆEáP -?đ©ï%éë·*۔Š=«șjłgMxŽ=Uśœ+ÿhXBA_[~ù‘ž ÂzÀk€Òï•6@9S æŒ5繕ąoȘ=bfÀźùÜIĐߞïśuK8èÇœùŐYą2žû»€ú$îÚŚèłô…üÂ,Dș–ÏÛ%żWŻ<óțхÄ3fłéZȚîŚq_]â<{űŒúsûq­îźŚÄ‹ûâ}ŒđÁŁ ÁÛMÿ.a"]ë„˗68'žwżčèMźŒòòWˆ4«ÄAÎăń\ûÈyđ•{<žÎżĐŠJł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53††Ű Untitled Layer 3d'9B488B5C0-15AF-492B-9E78-BF75A597D20B-876-000008D39490AF11€Œ€x͔Éo[UĆ-»€ŰŽ, a‰çxˆ'q’Y_[‘ɉqUßșőĆčűăś_%™HÀC{R_íŒRîèè"Ò”žÿńGÊ{0ùŹ-ëÏsł8?Ż<ęÍ= Ò”Æ yY_]Qčë«e„Ìk­,§§?ËÉé/JO•jôLĂ: ·àYÎźÒƒ~^Œf!Ò”Fó9čŸș,ŚË+`gu>ûă“}99ÙÓïŁßPԜ©țxOćŸ1ZP°?Á™âű˜ö5ÀYˆt­‘|VÖVemy șÔÊłŁŁ§Â™ÏžÇFàOű*#čl[~!›‘Ő„E˜|ö‡‡›ò<Ź‚MôÔ*”3ĘBùì9Ÿ@MCyqA˜…HŚÊgÓČŒ0ŚÂäł>8ű|šŐȚsæł'üźWàACYˆt­\:%‹sł63­|öÆŚšú©7îèÚ æTg>û:æ|Öôx̌ä2©¶üLjHægŠd~–L·òI­~[ê” üœÜƌ҂ûÎ|î“B&-sôtxg†ÛóÓCƒ2;U’Ùé’\ƒò=á=7>•ZíËs‘ĆsUŸÒ©Á¶üáÁ€L—źÊô$(•%ƒó|>iöôx)NŒ*n~ț‰4îÿ«ÜülÿEđÈB€k%ûzeż›‰ŃŒX»b5vŐuք5aíÄÌš š„5AMÂ,DșV"ŽÿĆŹđ°Čę#űI*ślZ”™CUoÙÁôTbŒœ™Ń‡,DșV"“|fXŃägoü PÏȘaMX»±ŐÀȚÀžŚŃ;Ÿ–DoŹ-?àœÔżáfçë;ž@-ôÚGśZíȚÌ[ Çž:ŻÎČŠÇüńn€ȚX€-?†ÿŽȚ RÙÚwł œzOÚłĄ7a"]+ É@ŸąYż'V Ô·UĘŹm«ŸÉȚV 3îY3öáLïĘžoŰVȚ„Yˆt­p0 ‰xDzăQ©Tïƒ]©lÚŽj̍rfÎ9U턘Q»’ˆEáP -?đ©ï%éë·*۔Š=«șjłgMxŽ=Uśœ+ÿhXBA_[~ù‘ž ÂzÀk€Òï•6@9S æŒ5繕ąoȘ=bfÀźùÜIĐߞïśuK8èÇœùŐYą2žû»€ú$îÚŚèłô…üÂ,Dș–ÏÛ%żWŻ<óțхÄ3fłéZȚîŚq_]â<{űŒúsûq­îźŚÄ‹ûâ}ŒđÁŁ ÁÛMÿ.a"]ë„˗68'žwżčèMźŒòòWˆ4«ÄAÎăń\ûÈyđ•{<žÎżĐŠJł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53††#ˆ ûUntitled Layerd'9ABC8B5FA-F536-49F3-A247-199BBC422425-876-00000892F8AC9460€">€}xítUĆí/`Ci*à_ABŻĄHoÒ{i"MPŒô*"]: ĄšiĄ©ÒAZB jBé! öÛûœÜK.$˜ ŸőÖzùÖú9sŠ|{Μ™937—«%•–!ăÙȚyżŐü%–x:T܇ ‰0^˜©ŽŸ”\âùîû­‡š,«Œ Ëđêëč?꾄ëùŐĄ“Ó5|7-3VÇcÎÚG˜țKŠ,‹ĂD—XŒű9Ęż»‹Æ]œPČÚA|ZjéyՕò"–éZ\Œê!8OőÇò]ÀÒíÀ2ȒüČĂ Wl–oaž;0ç7àû…±4%-{_‡ÚüÁ§ƒËI‹œZ Ì:ß&Ę.Àe5v«<€‘sbŃâë(Őű>Șr ùDŐ[FŒTŁ{hÖç†N‹ĂąuÀžč1èòm*79ƒÂÖûÊ'Iœúi©”śLôĆÊĘÀŻÔŒ$„›ÜCwàPçŠ~~ĆêĘłCi…™W°Ö”iâ‹Ńł0}9ĐőÛ`Ôjs ŽëîÉ7yžœZ ô:?iŻűĂŒç/Ÿ CšÔ€F‰Ÿ(ÙĐDńâ‰(ź4Ąx±úśàPû.Ú ÇÏ|&œ‚P­…Çë?iäŒÏ{ k“źçû^ĆçĘn@ŠÖœ‡Rô[¶±Ê61)ÙЏțï!UƕŠ<–-ʈmc›[}ŠY+f_úŁ\ʓ]„E’Z†W_Ë]€8Ç­žśŻÔî:4œő}ٗśáŰì ey]€ź–­‹‚ŐWšòTƊźKČ?: ŠÀÄù@•f>(Yę8/ŠH“Xí5Î1Żo9Î5ÖŠž$°ž›ßGƖțv86śç3öŁȘœ)My*“”òôQ†ę1|úc|Ć{*śùy*ëæ%MbŚ‹4W4Ç~„~ŐvŹ€J­ńÙSThˆ”ü©hoJSžÊS]ò ÙÔÊHMJË2q]­”ƕ}?~^<›rȚŽBŐ¶ÏòY« ź@E{SšòTæiȘŽ b_bÈ䎃@«z 9?l5ZÚ$3ŚT/gźknÔïâiű©Ö>ՓĄJÛ`Żˆè‡M4ƕŠ<•I”ĄƒSú‰AĄJž(TÎUÏ 3y[kžÖÔćÔŻÛ9ŐÛ=@­ŽÉSŁę>Ï \Ÿ‘@eÓWšòT&9”śyŚPü0ÈWæ"JŚüÒ&čô™œæ‘Ą_č5Ś‹Ž!šóEò(Ż|ł8u>žÊŠ)ź4ć©LrÔîÄûbŠ.țWÔŠŸ‹ä–ț4ŸK–q-ŻȚ–íìŠz]’§îĄšÜ*+6ÄPÙ4ƕŠ<•IùTŠ,rŒ`ŐÏ-ÔÿSÜbᶚÙ! ő»†ŁA·ä©ÇŒêí°jó}ƕŠ<•IùüŒs8&/r|ì‰2”Úô Sÿû%±Æ;ŹN§p4ìÆ_&OŁî,㣚lšâJSžÊ$‡òt0ôłç·ŚŚȚaĜH,ÙŸ7#Ń€G$šőL™†Ę"1ìGúDS\iÊK‰Š_EąUŸ(Œ›óÌęçúŽÔ’«Ęžw˜”ò1úŽŽcÙ(Žè2ÍzF±?ŁűŹ" WšòRąYŻ(ô/‡Dá깧àPÎőȘŽÉÛïŸßjFŁ.^ż †ëÏcúŠf[ŁŃșoòŽèÍgÚŁ WšòRąeïh8Oá; é]|\îr}Űz†ŽIfźże”g89óWúÇ°ÎCŽęæYZęÏç!6yÄłçMS\iÊS™§iĂôŽN±FßçvžˆR5ję-+mą5đĂOJ/œȚČŚuŒ™ƒI#múÆą}żX¶ĆžvßÄąQ·XȘڛҔ§2Oӎ~FLc™ÎAÈS‚}ïèv]šDÚČ|'6Ń;šóL]úƒ~xLę8tÇęĂ:ôăxŽŁąœ)My*c„#éÀúęÆ>ÆÀ wçŒ{—–4‰Őô.ÌÇœûgÏ° Á˜”BóêŸpŠGçńè2ÈDń6}ă±uÏ#ȘšŠžÒ”§2Vtę͘Ç;È[ò U8Š<čK‹HÓjÚ d%%ÊŻȘŐƋśˆénÀI|' J@ŚÁ è6Ä ;L`_' e/ƕŠ<•ŠœC»@ù«ÈWò/«Œ!HDZÒLjzš•ÊÿX­ĆE4í~ăç>&@Ïań„ó#Ęż”Gi=Ÿ3é5ü1FÎőŒûÎWŠÚ•ÖÊ7‘†Ž’3í ß'•*Ź Ö~­2śL_:‡crÌ,`ĐD Ïà«ajÓúŽ€ȚśÜŁO7Ë5ü"ˆëÜ9öù1jŻ–O"ßÒxž)_ć*}X`Đ6íŚÊÖęćű Iś|=ê!&°?&-~Xc_§PšĘGqżč ]4ÆčÆZžBƒ·É‘OùN©œú©$Çj'îŚ|ŽgÒŸE{‡űțÖ;4gÁ ŒGOdËçɱíiŹk—=aèvtóQ]ù ò%Ÿi1=ŁŹ$żĆb)Ïőą śL‹čnȚĐ»ÓJÁ”\fŚ”Ć*«:$żĆô!_/bˆæIąőąQ_Ö"užBiÊS•UŐÍ@^†e"™‰Öì\D}š„)OeTö„ÚëŻXČ5*ôƐi ČzźoŸëÚełĄëőr`ZƒlžȚòú+ȱÊË° 9ßÊűéôÙÎoê’çf”ÀĘ Îˆ9”ńžnˆ;ょ§#úä„ę9 ŚWöĆÉÉőáȚ57f4Êq^ućƒŒˆeêćűÖbéȚ\í\YűlîïB’ă@È1àăÁ‡€xÄü‡ç–mńZŰ›șŒ‡Țćł,–/’{uIłìŸGFWEüÙ„ÀĘ]@ÄI„œœ‹ËË:ăȘ2Ű; ö:ćM$ŽŒ-Kź|hàûąÙßÍC±ßč4\[Ÿă+Ÿ$5öêąŠYïy/ë \ꝶwQVâÈűČŰÿí'űsšŽ(‚C#‹‘â‰cZQü9́zŸâèžČ=9ńŚ6ÀçXœț©!7ûž|“ç™îÛÏŠÍ{ŸŸź} ÿb8<șïœ4ï”Lò0OeÔŠC Áû·žx|s ü¶Â_?~—–ï>śüßÓń-ŚĂcȘâń•Ő†öŐ_żÂÁáEé· Ž+‡căÍplY„^R”fä%–QšúćòČ.xtĂwÖƞAĆŃ«|Wi‘€–áĘ73ŃX‹9œ˜}~77ÄĄQ%pl‚#ŽOŹhò}yö-ïqû8ûdè'ŠY„š„XŸŒY–(~dL)\[ŐÏŻÄŐ„±©ë{–4‰Ő^›Ț0»Ś_ŸnmCŽŚŻìǒ8ö}Eœ˜TÙàűÄJ†ö©iuvó4wövóÎÍoĂ2„X6iœŠÆł 9:{'áÄÄZ˜Ùèm/iĂž^|àȚ9ÎŻàŒ:AÚ8ńĂg|fŐHuRő*Âsa{*=ß<ŽcÙ FłnuŁ§§ŚFÜ„5žÂ>pgH“ÒČL\łFŸț© źźCŰÙ%ì犬W§~Șe2”N|ïˆè@X-Òï2.žuÇE·/zkŐ%àű„ČFŁ.ù‹q”!pÿÜȚ8ûœKĄqá7GK›dæșéćłș?ponźwÂÉ)ŐqzZ¶čźÁ©ŸŰŒ'«=Nˆc™*8ùû™U1Á·™cÚń eX§–QŚÊ_Skó!äà4>ŁÊ˜n>ƒÌäm­ĘĄâž;‚ss›â ˟Uÿ 3ëqŚÀŐ”Cpï  nl™€ÓS«±\Țguœú±2â†QÙŽ“?”Ç™ö>tí9· bÎŻ ŻșŰÔ97€MréęydŚÓŁlg –o€ssÙĄ4ù8ĂçšđìŹz‰ńÏHUÓąƒ|۶Ș|W<ćcvöCÄ]üùušŸKúzgæ–~ہ©Æ:~jFöAcxÎkš ML˜vv}úŹŰÈ Ș>±K+{2ŻžYΚ“ïęŒÊ_űMȘA}ățs‹őís dïd èï«>țžß çŽH‘żéïìŒZHˆ ĄąiqážüK/xRûüŒdêÏoŽs?7B,Ś+ÛëóùïžțÉŸjÌò­paQ›hMęfžŸq(UM‹ śgZcüÍ{ŒRʅ­ÙÍóś _ŃNCÇwà·e8ß­{p‰ï· ‹ÛàąKûhÇö5Gà9w*›vsÛöYS\XҖù*ó,Ê»ìÖ‘Ü/YÆx7K›äâÚwŐkQÄ]^ƒ»;Fââ’vžŽŽS tÄE¶ïÎîiT6íÚșÁđą3?yŒ\:àÖÆÁđÛ>{9`F“wŻJ›ŒĘÈ!óŒ#ăȘ!ôđL„Ÿu…—k{Ÿ7:ăòò.ÉЙț:°?›âïÙ” .,lf€™ùÉŃ^nÜìÿ”ĂźŸù”ț̐6ÉÌœ]YśźïÁŚĘžłȚ«zČN\YÙęYVtŁV{ÿœ•wnšâJSžQæ).ŻèÊ”§"NÌgߗ†{7cę”;ÿÏjôöő3Ó!ôÈlDŸ_Ž+Ë»âê/_›ï`;V~‰Ëźm©joJSžQ&)żôÀUŠ‡šŽ«ËżÄę>ÆŹŠ9Ÿ9ÿóŰĝcÂ{YwÄ\ZŸ«ôțśæ»óÚê>6ŒWő•ešhoJSžÊ<Ą·‘æ»s4‚öLÂȚŸđĘó?ŒûVFOt>°šȚ…ùz–ÏâŸ{`QűüÖ Ś7â>瀜Ș>žŸæk\_û ăȚżö@ˆ—UMS\iÊ3Ê|kkúÂwûDŸÇęAilęêôźÍ]ZDšVÓ^ +)éÚꝠŁăȘâÆoœïœÎxg]ÿęűpæłŸż ŻŻŻæœțÚĘ@q„ùŹHÜ ță íŁă*`gŸŒXÚ6w4ˆŽ€™Ôô,4+-nńNàáѕűL;!êôRDqNÜÚìLżNđÙà„›DĄqMt}sĂ@î›noqæ8šÉ>ÿ‡†•ÄÎȚyàÒ*wšÎÿź-ß öèWgŠ}Ž{[†ëv8Ïw¶ ÇMśÁ‰ ÁÍÍCŒ4ÿ=Ì9Ìq~Ć­ vśË‹­=ȚÇÒ6čƒć“È·4žgÊWčJ|VÛ4^țQgَk+żBÀ:çfŹăZKc<—ó̱ -À=îś=nÎ}șƒqϛY·OĆlÿêüÏ3T§YMȚńÙÌčńGÿ‚ô]œûÏ2O„žßç>û»ÂL+Ä5­<Ÿù;z™șœc>9ßÊÔI>ˆ|ÉgZLÏ(+ÉoáYžëEźY‹g6~ś†ÖwùŸ1Żf6ÉyCeTVuH~‹éCŸ^Ä2͓DëEąŸŹEê<…Ò”§2*«:Ș›Œ ËD2­Ùčˆú4)JSžÊšlș„[ș„[ș„[ș„[ș„[ș„[ș„[șę7ŠłŸÎüىÎă:— ƕŠ<•ùŃ^śEŽm;ÆfĂöQ™±íŰ>& F”Ëâ._$­–UÚÿÖœś`hËŚ7Ò_Z?É„û–ù]ÚL¶àțć­ÿˆÊù]2ÿ±~€…ÿćW.ïÀwÍ_[OŸiiCnőĄÌïÊ6ÜżČțWÿ•SyÙƁD]e 𿎠+Țđ„ßÔ~îfÓśśö@ÀőĘdO*Űm”—mdáßĂê{†WôĂ6,đÆ=ú~•ü“ÙôźíAà}d*Űg”—IÿŃŁxD‡ű° §™B_—wbčSæ{ôÿ*yžQÿ Ö}ö#èæŸä`*ű“mŰÙöżLmP?D&> ÉŐÎ9šńŒ6ŰôƒnBđ­ĂäH*8Œ ŸƒŹœęœ»1ÔŒ[Ç€æ&5r”ÌŠ|û(Ü9FŽ§ • čƚ)›ž­4HJfÓpçBîòû.wÿJ%':n›í1âBŚD&ßÒ )™M?ôȚ)cüh§ ŐyBę™|Kƒ€d6ę°ûçńü—ÈÇ9zL›~žÿùD.üKäă<=ŠM?"đń" ÿ ŠÙvú–IÉlúš·‘AWˆÂŽ䍇ÁŚű}ŒD\ŁG`ÏšŚÿYdąțƒëi&êÁ ĄúàQű:đć!€‡"č6ŒNœ~TÈÍ4Íčv—pàÊ~|ö«,ca[ÁdB”›T–\YȘR'„ęM?šŸąĂ‡,›éĆąû¶É°üT­öÏĂ,ŸCXâ{Ê`öÍ#ètŰoÌkKËb.ÔJîœlÓîG|SE|€?”ĂĐtę(X~n…9\“żžđ;ȚÜ3śŸoí‡ÎÖcŃĘÈ耛ÚàJœ§Û`ӏ D ß1ìÏçÇrșïCŚś=…ïŁ<‡~‚e§3,[ГiŠ+-ïái˜Á”:‹úáĂìŐ©™ôYŰôăcÂH(Q˜2cĂùe€8T]ćŒvĄ0ÿÖkùc8,d›=™Šž‘ÆŒąÇçă«cËaé]ț05_#VłÍż{7ÀŚkÓ?À}ZüuXÆUÂŚWwÀțÎŒŚÁ°léKOŠ)n€)eœź±ÎÔúšړ[ú™Yš_Ÿä~Ώ{»ûWŽK™@jÂgÇwU”ÿ›śŽ{(k?ß,»‡á3țíÖ2”ôu.°šM_ûÏû—„±ęčqÿ‡›ÒŻŽśN̓eïHÖ~Ÿ©Ì‡§PżĄô“ź6}ăț/ńțՆçÈ6<öÙKęȘ°ú|ËŸŃ°ìËź°šâFšòM„ćÈŽŚFÏè[śßz¶Ÿ^jƒöá)ăy bźíB5·ž°ląÆń©ôÍ5@ûFГiŠiÊ;țçƒ3Ç_ĆÓÔŽëÿ=œ…eFSXNL‡ć$9ö#őÆ3Ç4ƍ4杘Áuą%,yČwĄŠĘű[7òœp”aûhó<őOšżv~GÇeCó)ć`YĐ–żfÁršœà}dąžÒ”ÇïGZZßLœüûù§œaÙÂy^PđƒWû§‘~…țśÊ7–fĆ·X掆eûûôlX<ç™(źŽ9­€­ï#” ÙHb5íß!yIŸàSR†ęú”„WO żslŒqĄžÒ”gjK'yÚÔ„«-iáąŸÔóÌo±XIM‹ùœQÓbŠć·˜ś‰ü–XÛĄ±­ù%WšòT&©„éÜŻsÄż8ă'gi>śë<ő‚güäì™sżŚ;”Æ5Qf=OéŒ?±ăk,ÿŸlëîę«<Óó,àę‡J»Żw MgLíőd:_ŻHÛ?9łéë­óŽÎłö۟±ăc#žŻżÀ+Öa?€ò|’Qÿ zÏĘxöՙúĐSd°őyÿ2”!Šû^™ÆC*ÎŚ)™M?ˆ{·`o{ŠŁlĂa–à>:É[ÏÂ:4/è+I«ÙôCxfŐYÖ<Ó>óąCč·OÁŽw“/’Vłé?ÿÜk=ÏČ-F(gÛd[†eä{ë-òŠ±NXQżŹrÎáO”žMß<łŠżŸƒòMBęÎÈ܇˜Ï!9ÓűxΔé‡\LÄ+•šìEÖ6 ¶đs˜đçž(„ő"…ÏÂlú:?ŠíÜi–•mâękŹ\ßûÜő"™6Űöę*ś"Ètÿæ\MÓzaÓŚűŽœFÌ9!ęPŽ sźȘ ˜J}ȚżLmHaœ°é?ŒHęčÏëÈ€Ʊđ€óŚlCȘŚ ›~lTÏ}:û„Ցm€ŸÆƒæȘæä?źœ›ÒVęöы “ŸúŚ˜—lĂ?­óÒŠËÌsßFąęjŰhԑI?:ô–1ÍuŠčV­B&Mi ő…L>čËł_Ș`YՑI_ă!‚ÏÀ\’ăÉz‘TßșÿŻÔœ{ŹšŹêÈ€ËÏô Ž&$ϓő"©~Zś_əÆ\ôăhMx29i‹4{XoëđWàîl1Ö<­ûbï4Ä= ágBüìÈXRœò#mą9X†Ô&uRAƒcłÒƒ9_Ÿæ?;J\/’èk RO zÇÊâc#ÇÏ`âbï]ú1üLHëBJšŒ,‰~ZóƜŻâ"ùŸ` S‰ìeèkîk ĐHOÖ ù/’VŁț“ùȘ5ÀX RËȘŽL>ä‹€Ő^Êz!òEÒj/eœù"i”ÜëFŒŠú©Z/žBuT—gȚĂô„sqZMs5-ëErÔ ĆHV’VKëz‘șoiżBțŸ°Ê•*șÔ«SőêÔ"”ŃœsG4ź_ψ>Œă…ˆŒž‹ŠŽŽôaúT˜ïŁŒČdÉąŸ·3ćϜ1NęûXőzaÚ”icűòom%íìóÚ”Đꋎ†nś/:Ąô»u°ë »a„aFhbŠ™(^șT *«ŽFò!‚ŸÔiQÒÎêÖȘ‰ź_t@ŚNI–5őuzĄĄÜ[Š«ŒŸB2ź4ă:äŠĄÛ nm]‡ČLĂzŸ›~­ĐŸŽ(igujŐ@çŽíĐčC{†ímú]˜öàśŐ© ©ŸźEĂÏëĐ}ÒŻ’:5k<Ł_»Fu|ŃŸ­A'bŐŚuPĐ9‹`ž/‚ÏńZĄ'C„™ŚA “êëZéő—+Ú”…Ž(ig”jTC‡¶­mXő žĐ5«WyFżz•ÊhÓąÚŽÍmúâŸÿQűß?BI9Êô#6”ŸT_ùąvőjh-ŸI|WŻúŹ~”ʟĄeł&hÙŒ Z1Ô{FżêgŃŒI#4oLš4$ ECTgyőO”Dt-OÒWšâfŸ‰yĘŹqą?†Íè_Z”Žł*•* IĂú©ą1Q(’‹[C‘\Œ2”(igŸU,†őël]ł —_*[W»p-ąR‰Z”ŽłŠćËĄÇMęș”Ïï Ä\2ê™(.Š'ƚŠ…BqÁžü iQÒÎ*8–ćșXZœś&ŚpäB"¶ž5ĄqˆÒŹXŻ «/"ßÒ(O-JڙcÙ2šUœȘA‚îçUaôCƅâöÄ…VtmEŚȘ'ß”jT…cč2Ïè—-]ŠóÒĂ ț,ï‘uĂx^›~Ìk3LŒ¶ŠÛà5óŒòFYĆćă"ęsnreJ=Ł_†kGÎ qäï«öœ'IĂäx^^"ò-€EI;+]Ș8*U(oÀÏÊâï~wFń„ûçë]'†ńLS^Œ`šźU^ĄÒ2 ójŽUȘèˆÒ%ŸŐ/Yą4…ôűىY~ ț¶ĆšùBifž0Ż­(ßÊyĂ·%íŹD±ąp,[ ćÊòś}șęŁYCzŹ]>ÁÉcùű~ËÆ~Múx,CFśòpŐÓĂmd]łw[›3{–śYć„ڜmW‡xG?§Žœö'bœś!öŠbœ¶!ö‚;3|·{".zÀedŸ]ŹòRmé€1[ÎÍG있Ù=1{f!fïìDæ fa<îÏyđ?ôŸl\Í9û[oŒóȚÛÙò|òAźąæÌńqîY?äu^“Ź6Ț'[ŸY2ç̔1cŠß”™î6Äț”wó·—śÌA”ŸÍ6)ŃÂcâÏüŽG|Îț†„s«đÈ`ő<Ż=WóÇ­EìÙŐŰă6ȚçL3Sî›Ń»ń†š“źˆÜ5‘»©KŒv0Œô˜Îôid†ò˜ˆ­“L¶ęh#’(ŒŰ6•y ăQÛ§"lëTx,z㕠ɯ]Óû6Ęqx!Öÿ€€MSè>™üˆ€ Œ}ìuáïŁ/ÀƒĘ Éę1<ÈóÈ\{ˆŸŽk™`†Á; ă<˜¶c6vÏpș]àęwKæxóőœÿ{;kŸ\og{?[Ö·ČQȚ2󛖛ÂűŹïü2wVĂĘUcqkĆpÜß2 Ąwwû çĂ^ÄyHœ{ÈnÄ]æ讝ód+b/n!îœ/›űÛÀYo#òôêǁ'WEùžZpÈ-*đű/>'żMyËì~í7„ì™ Ÿć#p“mžőË(ÜtûŽ?ÇÏÿÇÊ„œšDăÏÍ ąù±ïgÄ&ąxR”w`žxÎŁ„sqsíDăï †u_°m Œ]œqĘm8Œ‹Û쇈ż\9ŠÓÇ\Äđßtż,-Dűł±d`띔·žŒïżÖoăx\Z0W‹Ëóc1ê€ÇÛ,cŒ,ŰóqwĘDTpÈ[ÓBs›üíš{«Gàüœțž8Ś —ÙĄÇ\ÁŸŰÉ1ÏyùČĐŒ Û9;&őŸ)ccMZ<șżÂÉżÄé{âöŠIˆ:áŠpÍ!êGpûpś,Ü];Ę>wLiĂfśoœÆŚ}ö oƒż&ś@àŒśŸê>áÛ§!|ÛO/úŠÜ1 §ç{í•L¶”háđknę6›żnÀÿÈ`DwEĐú‰a?„mžÂvLțślžŒđ-?âȚêqpj^őÊÚlŃđŻÖűü2 ›û5Ä=Țsǜÿocđ`ăx°á%è'đś ü|›'gö)kł…ŁúŹčæ2Çwæ:?ÇĐö_5ÁżGĐÚO0uVĆ#° «Í”ŽłE#ŸZse±ź.rBԎ鞜ԁ«F“1ÿžŐŁđÛhÜÿe€±ŸT*üQ=JÚÙ|§VkĂœ"âđŻžć27]† ˜íU=a¶ćĆZ=~+GàÖÒï°vx§Ó”{Ææőkțûă»gyb<§tÏâ!đc_ù.nÂw\§•oĆ7Œ<–œéêlŹ©mȘ”èAčglę˜n;cűn âžé2>KăÆąAl‡ÉM^ÛĂߌ'·ŰOźOžíÊ”;‘;DĄßŠažŽhHd¶7ßÈIčgŹm”’sÁśKôúqHŰ:q›' Ν(4űțčħĖïùEóÉd ȘË?‰RȌ$©e͘!ĂGŸ›­Țœ9†çy7ûĐŒ9łŠż0ȘŸ3û°ŒčČ{/G–žÔy‡ä# ͒áÿÒ©Hqł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;5B792C89-3A87-47BD-AE80-BFEB96DF95A4-38719-0000A5FA48522E53††MASKSPREVIEWC °€C{Űxíœ\ÙûÆęëźkź”ĄîșźkwŻ]kÇkçÚk#6ŠŰ-ˆ-¶š`+ۅ(*š€JwJ_ïuŸáAP@0öśߌûóùzrîë̙3gæ όștZŠÌßäÎśc'ƒb6ٗȘu„j&ÀxiRŠöyŻžÉ>ÿ €.7ù–é«Ż ęök3‡ ő/Łç觘°ÄK-b°roLvÄbÁ–hÌ1Â”Uaè?áÚôuDĆú—đ[„ÍČ­ű bY~űuìÆòő.Ăp‘7¶ž6¶ídÇ -Üv Űz”e–ÀÊ]ÀìőQ» ‡<ƒŽù§ßÆn_$#öU‰*û=Úö{S+jœv[SWFáŻášÔÆ?ŚuĂ/B=7ŻÔÚí‡`â’hlŰŻŽDŸń>šÓöJŚ<à!>Izì«ß*íu5ÇÛO;©;S *·uG‰†/QȘéK”ęóÊ5wO†ä•fÙï_ąJ[­ˆ…ÉV ïx4îò„Șïwß$-ûȘDćꞱœÍFÛç^ăƒQą5©QĄ„*¶Òxù$.y‚ÄË”pG©&ŻĐuLVń˜ôí‡ú9rŒô ’’ńx1kÛŚAíśnïźŁQ¶™;*ŃoŐ6žšÚVŁb+OúwG±z—<)S°nćÖlÛÜix–oÚđF”f78Ƙ‰Ij™ŸÊVšLyŽ[9Ț;©Ęwb·ś`_zĄzû7TeșL3OlÙœI\ò€Lêè‘tEöGś±Ą˜łšÛȚ\ϋ2ąIô–ç˜ăxŽsk Lcč'ȘwđB­ŽȚÉšȚÁ›ÇۓȘÉMò€Lê$„}TaL6‰Ç@îS”?PČȘčŁheœ/~’sEαÔŻŚŐ—Ûù vg_üń5ÿòE‰ÆȚTLn’'eRçmjțćƒúĘü°È šŃŠ}@­ÌÔ€ŽXÎkF2·˜±ïgź‰Aővÿì‚ù€ŒżÚŁJăK‰ú„©?{S”ș†5í‚VęBŃf@ÊŽîÊ:Ą53œÊšI\ò€Lꀄ””ìȘôóKź/śSV†aÓ!đș†¶ÿ„Ąę ÔiŐ/ “rĐ'˜Ä%OÊRŁĘÀ0tă•ïìÁß*mrêÇ{‡ćÛă1Ì(šuĂńŚÔi?(œęÎcŠžäIYjŽŽ&Æ`€A8~,{ „Ș™9‰6ù.ÿ–¶î㈙ë"9ÿÄÓWہÎĂRæŻÁ<ŠhÒ#\!qɓČÔè8$† x hś żV»Ž‚…;/m’óoUčg3?k-€î##čÍküęï»tțšÇç5[Ç°ç5“žäI™Ôy›.Ìï1:Jő}ĄRQ©á%™«Š6‘9°pńʛŸuü ÓWFbÇH—aQè6"ŠmINŚŁĐș_U“›äI™Ôy›źô3e ëôöC‘ ìûêæÏD“ˆ¶X^^ÛÊ5š·mŽÇŰčńԏFQŃŒxCś‘ŃÏŃTLn’'eRGOҝۏ˜1łb9îî©}-Ń$z“ká/Œ7°üŁÍ¶ÁË·Éy‡^ŁcĐ{L úŒŐx—a18v&ŽȘšI\ò€Lêè‘ôżÓă1cPŽâ#”ŹyE~k)ZD4ő&śčHĆR5ű5îâÈęö…‰9`0Ś€±±è;.ę Ž°ś˜Xöu,:֐žäI™Ô$>f”v‰Nű„âM”«sĐO4ˆh‰fR“c!çcíR5öùÖÿë!ÚőśÂÌŐń4) ăé?>9’śÏÁ“ă1uš«öû—JÔźœßW|Ń­”Lî $uJŐÜï/śkuxÏ4À0XÉéˁ±s€ĄS€“€Mo6•złynąŐkŐˏóÜ=öùUjđŸD|‹FZ&ćRŻvác­ä~­jłûšŃÒmûû`űŽŚ˜Ćț˜·˜»êŸNBŃì?.œśûŻPšäC5ÎeŹ)9ÎJ|ń)ŸÓcROú©"ÇjOȚŻčÈ=“Ü·ÈœĂÏŒ~Ë5ŽÀöÈę‹=ǶœšŚ~­z]閼nî"ۊ"ŸÄgFLŽQ.RL§ÓŐà|іśL9o>—k§ž*çrĄ4Ë8Żm”șČ )ŠÓ|ˆŻ±LDΓŒDæ‹2DúČ1iú’'eRGêÊ6Čm&ò), ÉNdÎ.H€O“"yR&u€î'”Żłêr·.ùÁ’–čìt˃ę]s'"éĘóbIËÜö­K}cđuÖLččɧ°LrdțÍ€en‡Ă} áȚòżđê !"om@Œœ9ąï˜âő­ˆž±Á—àÙöaž1ż,ûÂÒÖyd[ńA>ÄČ źžcŁèșZŒžì\Ž^g +äx`Üßđč€8–żŸ·Y”Ćq}îó=†ÔÈčQ|‘ŒŰW›Úçń°3Ș‡˜»›W§€ĐŒ±·ô†Ęô*8;ȘΎ.š@ŰÍšŒGf=áy)àaƒ¶ĂăÈDœ7Ź łŽù<Ä'I}”Ą].wç-ƒ§}Ü?;„?Ű»™Uq~|q\œX —Š”Áć©ćHùÊ1Ż,.N*EœßpĆž*‚nŹAÌӃđ>9··ÂÆßč‹o’–É~{&jsŸŸíAŸ%èżl*qß+s_«€ Ë€ŽŽéÂĒpȚ5ńźGái5 7ț ӎùÓ\ÿȘžĂÌvz=Ä?±PÚN;âÒäČô[W«áêÌêZ8Ł*źP/)’§ÊêHžôËă-}śÜ/ŒĂ™±ć1žFN3Ń"I-Sțo3—‘±y{#ûü2\ÁćipuVu\›SKcv ö-śqû2ûdbq…Äm§–Ąf%ÖŻĄŐ%·›^ OwÁk‡ípÚ܇û~ŃMą·l&­ò8>ßń/àf…ǝìNJž:»źÏ«Łž6§¶ÒŸ”€‚]oóź#č»ȚÂœ”]X§ë&Ęź–:6WVÀśì<\ŸÓËZç(šD狟,{DŹĂ6žWŚ©ŃŚçțÁcVŸ4 őč]-ŰŻïF„ŽÍ~]WÖ­©¶Ń¶m ÚqÛ€ ąíÁö%û@4)-–…s–ŃíĆmëŽÁw7±Ÿkq»†ž”ž±Æą†ž>»:"|] ·0ÏÇx`ȚÍ èçœĆĆâÚŹȘj”-čÉžŽÁśüŒ8d€s†•ĐŠô·FąMČsȚtt± žŸ‚ëŃž± n/iÊ67SÜZÌțà>é->6šuêâÆ\ö3±›V‘ț/XąÙ”YUžMc”­ž›‹©ó!đÒŁ:0юAvòÌĘA—sÜÙáȚêvžĂúw—·xĂČæ<‡ÂiŻÜ/™âùŃYžœš>ë5ć~6À­…uó:˜ÊšĘ˜[w–&ś!iûŐm鰍ŸšápïBmRPźavË9Ÿ^a;Č~KÜ[Ù:’'>îđ8Jxwyó„űŸˆ ń„Șf~.l[=^+Țò±ą%ûĄ)ąîbySê}čfęà ‹Ô<~kiSöAŰŻi—m5X~wE úlš0?ȘŸ±GÛ±ŹčVOm“śęŽÔ°7ç5€ŸÚÿBnyxv>àw™ûŐśŚ¶‡ĂșżRć>ęĘ]Ú±áTÔ,:ďw †=”Ö€°ęÚž·Ș5ą8\ŸS'č>żÿéY€ïEöUÖï„ș€Bgê·ÇłC©ȘYtˆ7óÚà>śńAjÛźïÌ~è€ÈûÛpef­dú{äƒçŃÉŒ¶žÁ#^ßl삇ŠĘRĄ+ÛŚŸś,©Ź™«Ő,öY;<Űô7˄λHÙcóȚăęÂć©UÔ”YŽIAÎ}NŽș#úńŒ:17uĆŁÍ=SĄČ}/O/ĄČfOśƒ#ękć)ăhÚn‡ÆÁóžΎ-…„mó;‰6ùźu©ìKíŒë#ÈvBîšÁŃŹŻœńxkŸèMĘٟípEƃőíUžVžœáhÎ{ƒó ńpCWœVL柄ąMČóȚźȘeßïáaiŒ<çʃžM<ÙȚÿ]¶őŁV7űß?Æ=ŚLâ’'eȘÎ[<Ț֗sÏ`„^_ËŸŻ Ë~jțM¶ț_Țú»gwLZ#Èn"¶âÉÖŸpÚ1ÎŒ'cû<6û›ȘÉMò€LŐIʎàÄüÀË&pÚ:6#~ĆòvȚYÿóšŰ֒cÂyKD>Ú o^«äúïÌkçS‹Ą‰8ïŒ'[zR1čIž”I7 Qy'àwfΎ)ÎkÏȟ#łŹOd} 7čț2šFNËÓcÊÂeŚPÄ>;/ž“λ‡âٞáx¶ś_ Ɲwțƒ@GkȘj&qɓ2UG1Oś ƒÇń)œ¶†ś•qlàOR3·„hŃÔ›Ü ä"Í:ćó»b\Ïw AŒó~uÍz¶ï_žđ>ÌćÀH ŠŸYp_wöWH\ò\ŒJ`$žokc„}Ćž&N-ŠÍò "Zą™ÔäXÈùX{ă_ù|mjó˜öDűíÍç9ávĐ~GĂćàhž UšHÚőà… ï›^5ä8ZÆ>Ÿ‹Ë“*âä"0íT(C볎ùę­G”ĝ%Âęè$5o‡páĂqńÒj2\-Ç%`Ś#*ÏûÌ,íæ8bȚ§GƱ~Äæ.…üĆ'ßą‘–IčÔ«Íce%ăćâ”*žËv<Ę>>§ç üžčšÇe.ŽßÊ5Ç„Ț\wȚïÛŻêÀûôRjŸpÛĄ”rÔúŸkšžËÛæs9ÂsĂfäïô]žśŸU8ž*ń~ŸśÙJ3Ż$现țśgœŹéòs)#KOńAėű̈É1ÊEŠéž–ç|іsÖÆemò?—č;)–}~PçŐȶžK©+ېb:͇űúËDä<ÉKdŸ(C€/“Šo!yR&u€źl#Ûf"iÚòź[©tłú•K7Ż§§R©$”ZÖ«XČ]íò%;.”OæÎB™3eúA 5Ÿ“,$]öëùKš?äčÛNc^sŒ8GNç\&œÁ܈ŚN#ź/§ÁeÇ \^mè]ț·ąŐžč.k–ÌY3eÒeú cß\0_đü”ă%ű^9çwe/üì,xŽ~·Âï‚üÎo„ßÙ dü/˜òș»%Öçđ"lÒÿLjł exrŻŸÛFĆ8}p”‰œ(>Æț@|Ìœœń1w-Èîű˜;»âăî퉏°?ïŽiœÓźyߧĂÜÙżÎùí7ßäȓ3GȚ |W$oźùŸÍțuŽÙżÉ™ߒßfϕ…Fy]œę^D\3‹ ;č6KN"l–!⎰<^æż>·Ÿ¶;ăŸ^…{fF‘'—<”Z4æń‰Ćcm–žœ\2öéńEcž§$źG„YŚÉjńžÇłŽYwŚŻŻm8łŻ/ŹEÄù5ŠŚDˆó«qNÂÎźÂk;sxß<ÿâűZx[.„ś1x5Ś‘% -­H({‡CœGśÎBì­x}Ć<6̚ûKßál‡ăL«Œł«™f;I[/EԝCˆy~>>ÊalԃCox˜€Ä‰ ŚăhxaCìłÓscÂmMcCNš Œ}fłá*€jy‚_‰0¶!ì·a»U\…)pJʈ ™f<Âf9^˜ ‡M†ń1Ś·Rߌú,żÉĐô€M*ÔŁÒRž^ȚÔć¶Ò·‡æóžŰ1Ś¶ Bé/C(Ë„źÔ€ŸÂF`:) Mš—l"ej;‰ Z\ÊŃw?8Ç#úȘ9Â/oą>śŸeRź°^źÁŸ’Ž”…©4ËòÖZŸ ćkHę€Û«PÒŹ/ÇŃ]úĂxD]1CŰƍq!'LXÆòS đX©P`<„HzJ`ž‚ùz€Lż=C•f<„HZÛVKKÛDß~ę8Dۚ"ìüúېăKX¶4Ąì“7ú<Ɖ–Ï<ÖyêóŸ óĆ_0‘ŸRúëÆ"úò&„ž[l”Á'€Ü„ő ûCƒț„$yÁ ˆŠ ő$Öa}…>.Ą†Ô—¶żÚ?ökÇ"êÒF„œ]tl!‚„ˆ„Éá¶*L ۫ŒD€ŻöÍáóȘ1ˆș°!6+ゎ.€ôAĐ1"! ¶ZÄpCŠUŸ€%$*ăRGÁž>OĄßæŰ?!lû«}łqwÍhÄ^܀`뱁G è(ë]È:ŹKT<1o!B•VHIŹK’Æőè·I„2śȚY=Ży.7‰ 88‡ç#àđ< $ĐRÒăD•Kž qąòHÀáč°Ù9 őVvƒnQsèț©Áxœ•]ałcüY'èÈ|Œ°˜‰Û+GrL.CÀŃEqțûgÁŸmHŠŽémȚΗŽàËíûŹí‹oŚtE?[3Ź}qæžw—<)“:~fáĆîžœb$Â8†Ž,ŒóÛgï`6ȚaO €Hš`™śȚ™h”Ș lê‡ ŻźŁÏƒÈqÆ:Ëa ‰Kž”I>kúò>Ê·VŒ@è‰%ì“yq~{éküöτÿ>c°=*$„țûXÎP#!Î펚ŽAÎ5Ę°ôĆ”]ĘIC莍‚Ț$.yR&u€îŸ Łqs9ő9üΉó”˜_î‡űó%ICżœ3ˆ–’Æ=vĄ–I' ŒșeŻ­…Îf2tÖÄj4•5“žÊc™Ô‘șŐčÍU“Ąć˜ôÛ?+ÎÇb:|ś° )àG$L„mŐç=3ŸÄńŐŁŸZCwšÖÜś“ă ;:ŒÊšI\ćIëšșÜæÂüćùÀęˆóæ~űXÓ᳛Ą âl—ä'Šà«ò4ńŠ[Ôp=Š;=‰ji›ÔQučÍŹćčà»wFŹ}É>ùí‘PϛŽż*Țäù±o4 ŻV(|{tg§R!m“:Ș.·±žÙ/>Űr>^nëb:>Țuó„xW3CÍ‚–vc܍q73AâăäÎòńșĆ­Ął[Ęć9Н3‚î É©1TÓLâ*OÊ€ŽÔć66ł òè|xíœśbł^m1$ăńÒ|Œ ß`ś­,âî['(îŻțæ·ç籜¶˜ŸçkçŠPY3‰«<)“:Ź[aț_84©G Ć„nNîÛ'ĂÙt<ž™jl&IĂxšÀĘŐŁ`bÜșUĄ»Ÿș&Đ]]Hœ™TÖLâ*OÊ€ëöéŚÄ©z‰Ÿ†ćÍńM͒… ô)țCŸ~żiô'ˆ„}‰äI˜"ĆżÏśÏ/óäè^掎ûĐĘ\Ęmrûyež†Ä%OÊXçÛîUnûőWčüű†|Źq§ËM*è:–·Ò­ìʉ)Ô[ę ‰Kž”I©«m#Û~ “”T>RAW$ÏpĘàšö:țÍQÆžBâ’'eRG«+Û|JyÈN§û‹H o€ÓÊ€ŽÔę&ę)ÏDCžÈsAâ’'eR'%ËjÜ+ŻŐ‰čq|ZvX}ǧçÄŽź9-ĆÉšćí5_ç3˜ŰńëCô—Ń>.(û-æùè9 ŻÇÇȚ‹Ôó|€ę-âÀ(ÿćOŸÀ„ÙĐgFÚPHúPÌ󉌞œ„·Óû‘zR_ìĐBęœŒYaûèo<èś+’KÔśv¶†ÏłÓäL:8­ê‹«ăßĂ|äq‡)úa¶ŽúƝŸż"ïłD}Ÿ§gàûü9ŸΩúbąƒˆ@¶á6sèëńIlĘțż"iőżá€ŻËyűč^$—ÒÁE¶á<ÄČÿĆ€ Òa ÇBÆ€…a^j€Ő†D}?ŚËđwł%véÀ~.—žpw_5€ŒëÇ€œ›ÔÈKRłD}Ț#ŒŒJź„ ©èÆ-S79¶ąARłDꀗŚűŠżwyu3ÜPÛŒĐÚŁâ‚€‰˜ű ’š%êčßRăGÆqƐmȚH?‚˜ű ’š%ê{ĘKÀț#śè1cú!Ț <űHć=fL?Ôśq$~ š±ăô-$5Kԗó6Ìï ‘0cDű9ă”ÿSț#€§ôœ™öőûő§&è<Ë0áÏ䂾—tàDűŻ_zäÜ`”~ęđ@Ś Ás?&ű7ôÁ…'çńÇÎŃĐMŻʌšłêąÚŒȘĐÌY:©Ę$êGĐWDđËtńšucĂ<š ô·âęęâèÄçÔË].c“Ç-Ć W;ôŽ5Ă7\śê:–3„VJŚćDęŚ!žÄ#]ĄyS;íLă}}'ŹäœÜëÁ>|{f†Zû ČțïdęÏ6˜Qïí6$êG…û"’ŚHögZDłžìśćgWŐ~/àőšÈeȚës­/k~œI\ò’źÿu…ó4 fÒc‘šL‚ˆ„©Â#EŁȚnCtœŽ„ù·^Yă«”>Śüz“žÊc™~ęŻR֚وȚÏ?ś‡ááxűœűđ>-æ™5tÆ”1ÜéŚÖԐ5ŸŹőčæŚ›ÄUž”±Ž~ęOMč'Öőłł6àÁû9OȚÛy=‘û°Ôń„&\Îq|ŚCûܧÓčuږtęOMč/Ś[ąŸÜz=ăiâÇû?žŠ~|kZÛżÏ€Ž~ę/šDo‰újÿqÿ„ iàË6Ä»œ„~=źqç’Ù\kik}źùő&q•'ejŸ€ă”ő;úúûo9¶ŽÒčOïÇGùôꛂî05ź-ąoÎąqn =i&q•'e ëʐZ·©™Źÿ?tęáĘÒv\g›hk|YësÍŻ7‰«<)KXÿs-ڇšÉÆßț©ß‡HŽië©ś!ęuÊè[\1΍ Șqmß][ăËZ_ÖüČö$.yRÆő?ŚàGšWL—üü“{ĂȘ„‹|5êśŸŸ™AF”ü!ëżșöćêVvÖÖúČæ—”ż qÉK{ę/śÆČ./J~ù~#UŰŻłț—öHŸŽ%#d%җr<‹étșꀑNû]€ĐH§ćÓiû…|ËDô퐱-ç— qɓ2©“Ô2Žî—uÄGŹńSČ Żûe=őkü”ìuż'ç•dHçD1ęzJÖűszd» ûű~HœwœœžŠçZÚÇÙ&’ç%ŚšŹ1ć^OLÖŚÛ2¶ÆOÉőe-ëiYÏ&'ù;&*”śő˜â6ì‡tźŻS3êCOàșûŚŸČŠŸüü}Èó ŹA}Ž!œśœb2Ò±ŸNÍőęxïæÏû#țœ(9WŰ[Öà}t’5¶ ęxó‚Ÿò’ŒZą~ ŚŹČ–ŐÖŽoÁȈ ȚÛ§brï&ŸHF-Q?íuŻ~=˶šP`œm;:)3Ż[9È·jžĐ#ęČÛ0Ż7uR;6‰úښUžŸRźäyO!fi ‡”LÆGc4Q?ÄçaŽéDê>ä–Àáq:>‡čoȚ„6_€ò,,Q_֏[wjuĆsÿeŹú<;›æ|‘Bïû„Ț‡ &û/cB;W34_$êËűŽz‘AŽsBôƒ8&ŽsUÚpčÔçț‹IR™/ő_‡Šʗ·ę`Ž…žżZÒ=_$êG…ûqĘ'kżô#ۈąŸŒ9Wćœ|ï|ÁsSŽœ~,ûèC}é_u^Č ï›/d̋¶ q1mĘwˆÈęz8€¶ęˆ 7u>jó„mźdźÄDSŽé 1ń©Î]źęÒëÊ6bą/ă!”Ç@›RâÍ|‘T_ÿ!ŸÒłîŃ#ue1яâ392'€Ì›ù"©~FïżR2ÿŃêȜb2æD[ÈĐș‡Û›œ–†:5çÉŒ/œ]R ŃŻùLˆÏŽÔŒÚ9!~D›È9X…4!MÓAË3rуvŸŸÍ{Ÿ%ÌIôe’6H<=”’kŹXLTąù &:’pßE?’Ï„d^H ©#–D?ŁÆóE;_ăąĂÔù«ӉۧЗs_æ9ÒǛùB|ˆ/’QŁț›óUæ5€֕mÄćű"”O2_ˆńE2jŸdŸâ‹dÔ íŸò}°lŸźùâ-dٖk^[ú’uqFMÎՌÌ)ѐ”#čHF-ŁóEJÈ~‹vVòÂêÔźeÚŒi4oژ4AÿȚ=ĐŠEs·”=ńA„…ŸB­êŐéCó)á/?í™3gNéûd&ć˖š`ôÈ œŸÄcbÂ?˜ź]ș(‚űŚ·’ÉìÏ&ŃżW„ÛżWOŠ~żȚ=ü AÁÏUŹB -OCâ•+UHDêJ^kń!țú’vˆ%“YłÆĐ·Wwôíكtg]M_ҁAN ✄èÄôqÉSéÀ'J·eł& I±N«æj~őПhQ2™5mÜœ{tEïîĘvKÔïĂŒ€ȚW§ƒ€ú’Zęٔ>è“~UHš6jűŽ~“† Đ«ÛߊžDŻ/i?ż{đüčŸđżÇŽ„ö %OKû1LȘ/iÉoÁžűĐÓłëß-J&łÆ ëŁûߝŃëKÜŚśčM$L‚‘0Ą,©Ÿ€9Ö=èCüèiD-J&łFőëąkçŽ ü•š/iŸkȚŚáís]‹'…ù&՗Ž7ó„ŻĆÇțBŁußŃoP·șüŐ]: ő/ï+đöČŁż€\aŸ]"RžT_ʅ& êŁłűLâ»AœwőëŚùÛ·EÇmщĄœ'ÒáèŃíđòșüA4dż*żIš_śwôëęQ Ú¶F‡6€m+"ĄĐ X_ú§~’oò$.yŚÊ5Žtû6 ț¶§Ńąd2«[»&Ú¶j‘.Ú …”â¶iÙ?6çłw-”ŽäKyjQ2™ęQ«Z”hŠ8¶gb}0Q^ńŚ.èvMÇăèXț±Œ/Zr.hŐŒjS‹’ÉŹVjhÎqÓąYcÄđ71>”/ ‰ $ž}^‚öNjó7ÂVț^(vé€ %]hlüÉù_Ž(™ÌjVŻÊy±!dŽsp&Oaś Äž>ŸĄJ' yäòœ'hd>:ț.xœÇ3țÍec"*ÍüBcŁz”*ïèWŻZÔSÄÊŸsœ*š~`š!qAâɉpżWÿ “>ń™=ÿ淉oL CŠU>ËóŽPóo’hU+Wây©áXoúô~Hż„a Ó1ÔЧ”0!ÍüŚîöÈ·ș ÿÖŸĘœońï}[ùwVê gÌŽP`Ÿ*g=]ÿê'(›xÿS…sG]ž‚Ę}§ä8€á[XÛŃçČvЙŽVă]7·>¶úžP“}†ûÎP„™ŻÊ„žÔŚîÁ”UźT”kÖPÄòYYŒáog$ëć Ò±’Nc˜'e1ÄŚé*nžȚ›ƒfŰča1t šÀÌŚ•Úűś^iĂ-ÍüßKG‰âżŠvE"RV±B9ÈD/–ÏN”‘0†i}\B­\p@ű ^žŰÁăÁE\:¶Cé˜úQïőÏSŸĄJ3żléR([Š”èGČeʕEőȘ•P­*żïcÿ˜<‚ĘœăÌŚ‡’§Ż—$ÜuÈJélœóÔż@}†*ÍüreJŁBùČąŸÌʗ- U*UDŒ§=č‡Ű$hyöÉâIÓśpÿâ!ê4Ć*ŸgÔŠțEê3Tiæ—)]ć˕~Gż,ő+U,§ˆńŸD…wUëÁPòŒKžÄ%Ÿq2}ÿâA„câă Ę%ê_Š>C•f~ɒ%TP2™I»*”+ö•Ń|„™„äé;DÂäÜż é/ô~Lí ĐÙRŸĄJ3ÿśß‹«> d2+]êw5.ʖ-…,3>˜Ì#ź*Yœt¶ű7ê3TiæÿƱ/Z”Lf„Ű/eJÿŽÒDü|(š~3ńŐ]„öUžÿ Ušù”*[šZ “YÉßC)¶Kڑ{AÈ“kšŒłæšéuș'ÔÌ>`šÒÌ/ń[qˆ%“Ùś… šJŸ uăĂd­tȘx‡Î™ûîDȘ4ó+^ E‹ŸJIœęLȘ’F:źÓ'`€üÍż|à)è^nƒîašÒÌWćšV)"ÚŸÚ êT·UZ ZŒAҒ/柦äš"ëۆ€i$-ùRț9-+ ÙÏBIŽäKùÿ]˔)łź}őn:5·ł>æAWżL3ć?uË€kZĄîȘ!t!Ûp-Ö uą­?ń#ț”ßÆć[)w-“źAÙæȘë܉ŒțæęZżçÚ”‹ŰŁü*ÿÒo[ĘRMTë|í”YiçÚôéô…ąÁ;”„óGÉFș€&yRö_!zÙČ~MeÍlFò©(żćŠÛŸ1ŃŁê“ô]ŁÿŃKj’ŸĂü;Ó>·‰„)!zIMÒ·Š&a ·—èCÉK’Û“5T<}\BA—Pžè%5Ißçï'oÒŚ –ߐHú&ő$źGć©§Ê ‰ń$eROÊ'ą#zIMҒÿ_!zImNû}*ïżBôR0ƒçK—.Ćź]»°víZŹ^œ:UV­Z•Èʕ+ÓdçΝ011Á€I“Ü)“Òü«lüűńW>Œ‹/âʕ+žtéÒ;H™°Ńz? ŹĆÔŁëpêŒ .\žŒóçÏă<č|ùČJ}šˆłł3ž8;!·ŐXä96ßËßߎ€ó€ÌÉÉIńäÉ…«««ò'í˜:uê)Ê€j*Thdggíèèˆđđp>CőSűúú&cÂęĘűîü$<7‘LF†·_=ÂȘ‡G`í|™ÏțŒ ű»}û6úôé3S—†ćȑ#Ż•••żƒƒ”ÖÛŒôń@¶ó†ÔˆŽVű—ß(ûńŒ!J™‚Ź'Çđy€—ÒőòòRˆțœ{śäxƖ/_Ÿ!eÒ4Žœçśïó· ÁÁJïmêŰ.TÚßw/O4œ8ĆùÛóßÎLďLJ(Í€áîĘ»8qâD€ì%Ò4ŽûąïïïŻM…ł§V?:’0ÍȚBéOŸł”ÎÏDŃS˜rKž•zÁÓÓ*.>DïȚœntÿ^›1cÆé/wwwț!ę鍶ŚV èĆijż:; žìcj‹=îԛz{'úŰ.SڂŽ]üˆŸ©©é]șŻ”jŐjȍ7âe ˱“céêőU/ÍDĄłÔ±^xŸß磊 ßŚĄWŚŁä ?1Ž/œ•n@@€:'dì͝;ś(ĘżŚŠ-ZöôéÓar΄††*ęû/”˜™Šț|ŚB4őÈŸ;żrAù,gÛÌPçŻ{éKîxnOĄûśZæ̙łrźđ’íd Ê>VŸdŒŸOO@E›)ÔrÇ·GJWívçæaûkœrș†ÒVcQúè(xpNéßčs<§ăK–,)żN—™››;ŠŸÿgn(Fí_m ŃÉÖœíVąŚćhwa!žżtEËłłPæŰ8,»{Æ78OL@ùŁŁ±úöAŐÿÒś666áČ_t.ă5àąŒÙwśƒźźățÇŻÖăńÛ©ńűa‰“0žjȘö·)ie€ČœE»śÿž«Ł:vąÏțô ÛtÛđáĂWȚșu ...j\^Ÿ@Ăs3Ńțâ"tà·jÛsߛž™‰ç/\ĐüôL”ąf“ń§őt4:Éw\.ó[…l·ÌœąÏțt Ût[”jŐZqŸŽ}űż§â±$cńm^Ÿ|©èÂï"ž{rCćÉ9#Èy/Û_ż~]Æț!șM·ć͛śûcǎÊŰŃë뜷=‡çńâĆ žčč)dìH^œzUÆțDșMÉȑìDÖŠùÈDȚA(±{śnїóûC}ö#Ÿ»•lGŸâWü‹N."ș9ˆÌÉùɏDžIT!őšOÁèŃŁOˆ?"~Ćżèˆžè~Eô}“ ż’2€©LȘ‘šDŠ€ì{(IJb:mŸEŻÉOòŃÉNȑ/F+UŽPćš%~j\óś"k”(ÜšÆïB…>Żd‘B•Xő“ÛOòüŒÜàŸœ[g¶Ț:s„ő–ĂÉPë-ӉŃ`kóiƒŹÍ§țsjùž~{ äÉ)Çò“ÚÊ1[:_C4ŸcG=œˆ(çsˆzb(Ț[E=°ä7Ăò»ĘúĐŠS‡žâ&ŸÔ6ϛ~,űêZDYŠÈÓËyf9"ÏźH`%"ùÍE‰G_\ïË»0 M}Ă<9ŸÉśęwč‹ÿ©`ÙÂòțZ(oźÂLŐȕȏùrÿ’7göYÒžö˜Ž;f»Qü¶áëóüÆá9~gńCŽôk¶!òÊVxß= ÇS[‚žžȚærn{äÓ3[m6‡>”Ù&8[›†9Ÿ2 s"ÎÖfᏭ žőÏ_(•ą-Úú`ÔÍmx}šß˜Tß^ԓđęE†B„`œ1wö!ŽÇ#îî.ÄȚۍ8…ĆìÒŒ?„Ă^DĘ”Àó™.ßdÉ,çü;¶tH›ƒá7ű>~NŸ(ßWTí`fmÂü%DŸ[gąŸęzlž†ŐÂDˆ„ĄüȚš|SJÁxűqí[jÖë'>ϚIÍuï˜É°v‡BmŚĂçÀ\ű^_Ëùd!|ű]1ÿăKp֔ßG_‡€ÓëÉ:űÙŹE€5±YCVĂßZXżS+É ű3ô?I°fȚ‰8œtô‹?æŻ˜śÛŻ üđ]ź_ ~—ûÇÜčr䊌nÙżóXżÜa„—»ńjś žm› /~K36èą_ÜáùpŃÎ΍3ä4ąóytœçÉ1D=Ÿăçÿ±Â{ęH–)dü%CÎ "çÇčUˆJ@âI‘Œè k‰áy{a5\śÎćuë&őßïc”Ίü¶’9żĆŽq<żÏfÌo›q ˜ĐÇjDòîOEìćőüæß lÓù$ćuŠ3Gîő<4ÖĆ“ăńxÍxr,†ß0çx[źÎOĆës«ĆïŹÊśk–*ÚHG3Ÿ?~»Ć8Ź‰‡ü&ßcöCï+CÙ·Ą'9æy^~*䌒o@ž˜7äA–̙ԜŽŃh۞WûŠáÆžœp^đ[~áŚÍ"çőCyî}šûšßł}”wúęY}„•­Ùyż'xfrܜÿ|/ŹăŸó»„– ű­D~ŻŃŠßLüĐWۉ%žœv\p¶ŹYçąő“ÿÙă¶k Ž oÉobŽCű5~wű€|q‚đ»Œœ>š#óÂoÍč[ct‡zs)›h&ÜăČcŽŒhwîs0ǜ7łph.~üűî›ĆÿÛ`BT‘y~„lą­Ÿ6tÏSÓQž4ł7çù•JÛ{7ż9Çßjűíęx仅>üíÉËmS°nd§#”LfŠ Üódăh8mđ&x±ÙßŰ3"üÆȚÇ"ßîă·ęŒvLUóKíÒ?7§d2[;șÓȚ~ƒ:Ôv'ÜLÇÂŐԀßۛĄ¶Ž¶|ò]?ÏíSÀoćaï䞷)śŽ­Ńa_ü«;»~ö úÀeŁ<ÙW['kđZ ÎÓRźÇ#Tëò~jNíR·Â?”{ÇLïw2’ŚV?žźŠăàČižoËvhž2~óžž±ŸfoxaÆč;—DBÏm“đhƒAXîoż‘”Ć;öwꊫÁëKÄcÄ›ƒè#łmI$TÌN“˜Ô8:›?4ŸO Ačbó(%–™$”\™3eúčpțÜ#‹È;čHț<‹È3Yű#ÛÈ3©hÁ<“ŸÏ›sudÍś ‘Po™Èûb_ìÿ=öÉKäyƇòî·_ȚżűòțEoŸk!ïIôæ;zę/ï_|yÿâËûoȚ„$->ȚäI\ò$ź•khéÿòę yÏąÏ9™çä]ƒfDBIKŸ”Îś/]nĂțČÎÙ›ƒ[Y0cäËùđ9ßżđ||uÖŃ~o)ż»ÔĂtȚqM9ö붜/«KŚ•–úœéËmïüțTÆD jQ2™}ìûÚûŽđpŒÌęMęś·uëÔJńꏏyÿB 5ôúêśÆO6ŸóûcgŐȘTzG_~{/ï^òNE2ôï]èÔH(ÛuűuRÿęu•Êùÿ ïèÌûR&i©ÿ’%uRÿęčüŸżrĆwő?æę ”Œ7úêśöüĘęÛżż—ś,D‹’ÉLò?Ęû©ż ïüÿę‹Ôß?ùï_„»Ęà·0/ÂęțY\:șUéšśműȚî<őȘ4ó‹/Æw0~ęïH6ąLȚ‰űàś/Šž"óđËÈÜï2w1S:ê}Ł3Ô?K}†*Íü"…ÂÏE ‹~"ë(eòȚĂż1ő…ö>•IkíęȘčő”ś­N‹6φ*Í|U.ő€~}yïáƒßż˜€Ź ŠšśÊș9ßbo„Š©FjïŸÍțӟČȖTöŃï_ŒŒÆoíŽáïßÿț]ăŠŃ”ÔkËïȘ’F:íꉏĄ‹źg…kòžĄzߐïêQiæëzTžÊzMH)"ڟÚČ° ‡ä}Kyï2éû—*_Ê?żimàsôÇ ïŸȘŽäÿw–UŚ§Č„ïJúÿ&ă6/‘ç(ʗç/o™”ËóYw z}‰Ës”ćËó—/Ï_ćž/Ï_Ÿ<‘ç%”LfőžîӞ‘>sQq…Ź™ßȚäI\ò$ź•khéÿòùKÒPH)ț9Ÿż€Æ1 SÎEôO>çó…‘PžÀžűD‹’ÉLÖœŸâùKbZBAoŃűœÏ_ôHZ€e;ńĘžaœÏúüE„YŠê«șéŸçùœÏ_ÒB| ąEÉdö©žżH(ùȘŽ„ eÊ9V»VőÏúüEKë‘r=Ê· Z”LfŸêù‹VFTÈ< PœJeĆç|țą!ő$-Ą––|ćżr>ă(ęŽț§zț«Ê}IˆKż ŸúùKêÜIŰF«+ŸË—/Ăç%ßŃÿšç/é€ûX4D‹’ÉLž{|đó—tRș”¶ßŸóûiQȘ€űÿ]{Æò–}ôó—t Ÿ…ąE>ëś/ÒC#9í/öĆŸŰç”lgÙĂfßÁ{WæžÄçîÿe;?ŚŻ,_àŐi7œ]jí”*ŸA3Ÿ|n˶gŚŹ]Ïß3_đBtH4žX>ÆQăȚ[Æńï€,'ŸËČłŰ û;7ùŒÂ/<ÜđìÈ3\Yl‡K ÏbăH„ÿù–­’ŃMìYÏßźû{ókńžsśæ/ž»ù¶8;óÖÿ{MôćY䧶l5ź Ć]`”ÿOWÏàpś¶nٌ9sfÁh¶!Lÿœ#ڔȧȚ„Ęú0ń>đ4è~Ű°pÏ1ÆĐÁ1iêhŃźOŠOyü“i?ț9 äßä2–Çô)ÿ™ö@jOí7…́jcvÿçÚ? Ôź?ÚìŁœh0š{ú\ÚÓ5íIśÿ7ÚMN…cϱÿ…vÓm—ÿ¶~żÿs턱&ÚÿyŸ'hÿOÆùí/Úą+lțŒÚ5fÜ@Ëÿv挄ÿÚÏê96șNAÀțRÿ‘¶Xöò#6xnqEh°űn4Ÿ[ ü°ț?ŃÎôíƛŒ°y“ÇńŰæăkaèy<…ÌDÛôsj‹e«>tȚ‘ćü/Üç:ÄbÖ­(LżŠöëïąîhóÏ­­Ëœí›úŻDßqS±èĐßâ~ëż**ûϕłžùlÚŽ,ŐÛśYÓ»Mt7•‡˜ÜûșÀÏ#™_”!ò[Ï„-–sŽńTï2ìDæŻŸnËtuò)@ȓÌäsZnRšT EI"ûû_œ›&Zą™‹üŸù=Æûÿ„e?ž›ćțu3±o­qșÙżnd;ٞ|šeտ㥠GÌàëńȚŻœÒÍӇŚpt‹ țíÓażű!”Źct:fw|Ż‡ƒĘQ8ŰZâ~:zÎś/ÁÏę)źXïÁț łp`ăìT˜ƒCfó`0š‹•hœćÚœt<âÂęđÒá<^ÜO?źöçńđÚ1<și O·‡đzù˜À"Ï7,NÉWx0ÍÇZ•6<?•IőÁĘZÚź1ŽÓcùÔA a„Ń`Ź6†”3ÿM`8ÖÎúĂ{””ć6úę/ôót[,xô;ëƒÖ{ĘȚKż3>˜ûšșöĄè&â«"iHZ^9Čn/ÁćÁl^<óÆö†ä“Š€!)GôÇ_éÏąż–ź˜Ä{Ż‰ORGÊ[ìvĆ ŚxT_}Č=ÉJr‘Ÿ<Ÿ\ĂËG¶Xl8‹ÆśÇÊéC/oźź,+N i«Ô•mÄ ęB}#Ś84ßí‚zçPÿœȘHùŸŹ7őy,őíőúzûnùäĄ0™8'·óŠ+ŠÀùȚ8Ț:)őD3%SúžĆąËIO4ÙùÍÒ@Ê„žĄs ȘźzWŸÔșbi·ńœççŠă1gT©'e)YĄbÔû8ŁDbÔĂtÀzcŁQćĘęÏáțÈ/ùŠôęBö?Ç`țŒč:ł,uęvń(mŽșŁęĄWhwèeȘHčÔț0 •SŰÿe“‡`ɄA8‘țÿ•úĂèŻ¶ÙSLqŽÆ$g© ć”̜1„}PyŐ=ń›Lżhá;ß:” źȘÿÏ%ôO©—êțÿjl‡"Qsł3^DCŽ±) ùR^“úîżF„•ïèçòx|ŻÔűÿ‡Ç`û_ù›cšú}í_ŁÉÁ—šaꄚi ćRŻśĘTXńnÿŻ™1+ŠÇéĘ+a±ÊHőÿŁÛ§€^Șę_|ætłDŚ;Ż5îŠËÿ&]ïEąÌjGń+úYwk~h çșU<ßeÌ 2.ŸòÛ3P„WOŠ5œ‡śjôúW @Śùg0ŸčH/3î {«©‡žęś;7Ù»{Í 8?ž ?ÏgêțA»3|<œU\ôqĆÆč#„Ęúț°ò‘%C±wÁPXÌBż—ĘŹ·sȚPlž3—­vÂßó9ž:\æ”Nę“đ rę“|čț™Î#ú2ŠI?üŒÛÄ!|G%Àó)ü=xNŸîNđá5Ę녣șțË}€Ëœópá=ÜŒËœsˆ őÁ–ĆăE_Ž›Ț Žéßńą­ŐȚÿXńțGÚŹ”7=8Qûٝ3žph#¶™LĶ„±}é$ìX6;–' ńeÌc|ÜÀ.—E“èMŽAƑęțșxÓÆB]·eÔŸŒÙŻGWăˆùB íŐîlŸ<č\8°GÍÁbőtl^8u«—[^ô§BĂ~-úăÈߋE­ò$ћƒ€*ïcíö­‰œéDêÊę_âöŐIćëÇ·áäŽeŰĂ1čqȚhüô}ŸnÌ/N~!EH^"šI- )@*’†€iúȝôiá«Ç¶&Ó/üCÖÌÿ†È»YHjk[i“ô‹ű‘ń‘?voßt́ s üĘŠńbæÉZ¶Đ5«äúŒțÔețŚ]Û6™'u…Ț›/cžŽćC-ÇîUÓápnżBâéwEÒțß0w“1mš§êH]Aâô‘“|šŰÊq~nßzĆÖ„`ÎûjłEžqb»Ò—ń·sÍfžo[L&°NÒúE_Žś‡ZÎ-ëí4?Bûf”-˜ś'ia8ŽÇeKł8Čy!& ëuYòȟRGê Č-ó>F_úź4©Ÿ@"cûgR™4L@â’'eRGê Č­űűPËBd{Ù!‘ŒŹ$‘êXˆ_șŻ/țSÏ飻 Âjșò#ș1<æâ7š>ŁÎÍBÌ”ŐˆŸ· 1öüæïÍM,ŸƒX–ĆđôŸĄÚïłs2ŒFuæ»æ?ő€û4MÚŰ”kă珷pû™ÔŁ/êʘ“ăúúű4„™‚0ˉaG&«±śúä4DZłüțœl§Bêż>5—„űÿ”IŐŸÿț»zÆcÿŠęЇŽ!Êf"NLSZû °gœÂ߂0 ŰcÀ~6@đC¶‹m±šÊíčïÖąÏíIÀțé˜Â>ÿ”IŐjŐ*»âäÊáÔæwI”Íl„ŸŠàƒ”Žÿî± Ÿ]c4vŽSűîËï5jí bUlDŸ>šqr&v̈?ț(·š2©Ú_Ő»ë¶ȘҎ>3›}:Á‡&Q›» š3ȚÛǓqđÚnïmcù-M ɓ¶űYŒGˆć Ń&ôÉęžșȚâŸ2©ZïȚúg»©-mˆ8nŒÀšM͝†Ô0€Ù6^áÉŽ'Ûă”MòŽr_‹É¶äX89›Ú‘äÉîiÿ”IŐq>łžƒèss}v.^[ÏFđa#űî™ï]“žÏ“àÿ9Čcbb(HŸĆTű˜Éoćò›čÖóù}Ûyԟ§|ùAƒÚ€2©Zÿ~­BCO/@ ÿÿŒhòÚFŸč»GűÍÖCłűÚÙđĘÏsjït=3à-ì5Šîlđ[!üÎuš|#›ßæŽ8œˆûŸQçÁËj>Ä?eR”żÿnäìuŠúđ<_Âïż.ç7ž—#ÔfBű­íÀS&á·{ƒO.Ađ‰EČZBűMíüžź”^Æú+Æï)‡1Îm#Ϛ ÊnžšÍs°‰3eR”ŠMȘîżwÇÿ Û~~%ÂÏ­&kÉj„ń›Űáü^sèY~œß» ií;ÊáȘŒu€.C­ț~_™ćű­ö;Š8œq"š6­¶Ÿ2©Z©R?Ù0ç”Mx}i".­'ë_Ża»¶ÌżČŻí$$’¶cZÊù-éąBŠ#űÿnDĘ6GÔs,1€ï4ü<„2©Z¶l_ćû§ëïŐ6QW6ńï \cȚ †·6ŒáfŚYÆïÚšzÂ5SFßڌ˜gûđâôJ  _ńO™4Mæ ÍËF!ö…ûaąolFôusDß6Cô]Îőö}?{uîČLÊùîè›ŹËmbîlAŹË^Ä>څ•łCüÒę{MÚŰłg3ÇÓKïčqw öîVÄȚ7CŹŁ)bˆ}ž™i␀=a=э{À{ˆ”ŚśÏ…űËÿ]nYcŃ2}ÍÒ4č6€}ŹÇüś©vÄ;mCܓ͊x's†æˆ'q©śˆ<ŰÊpâĘö~‡Żƒp9·C·‹2Ș?êwî›uœ5ży± ș?TŠLš&śpÿëûôÊ* €>ƒI â=v"țćÄčjÄżdÚ}7àĂòàƒ^đ€ß,—}˜2Šț6 †¶Ąžú;œ”6ä,Z‡2išôƒÌ‡ÌŠ †șÛ „ï"/q>$ˆćœXű~–`;śă”ÓNì^kˆŸ}[„ÊöŽîQŃíxʀCxJkĂ[kmÈUäÊ€ičr}[ą ç…Q#:âđ։xy‡?Äńă>†ÙòȚïûĆû»źŚÖb߆ ùoGHęÜčsüÎÍù?Œ‚źîldnnÂÿsőMj›>ĐڐłHmÖzŻ(§&ÇđRȚ_» Ò†ŒO˜Ïszܘ.<žïóšžŐŹYf©Ôcőă”ëÈß~Ólqb6>ŽDő”ÌÏ@ôöőŚÙòçϟ§”ȘK(ç łS¶\EÿíjKnȘ6|UoFČ6T]ÊüjcŸ±æçłÜ?ŚíÊsìTČ%iƒ€›ôèËZŸŚrqŒS«ôŽ Jó·A*|öòšwéœæu9 ËLäyJ6"żÏÉEòyŠò)BŠéŽÿÿŠ”.ŚÏ}Dł„ĄÒźÓŒ•ąBÍÚWYž]č—ęŠ|CrÜDŻę=)MȘj€.i@šëòțj€Ś6?`‚Nę»'ì»NśÿăOFapplication/library/img/src/icons-big.svg000064400000205207147577724760014511 0ustar00 image/svg+xml application/library/img/src/icons-small.psd000064400000630665147577724760015061 0ustar008BPS@{È8BIMZ%G8BIM%ÍÏú}šÇŸ pvźŻĂN8BIM$P„ Adobe Photoshop CS5 Macintosh 2011-01-20T17:47+03:00 2011-02-04T15:33:45+03:00 2011-02-04T15:33:45+03:00 application/vnd.adobe.photoshop 3 sRGB IEC61966-2.1 xmp.did:018011740720681188E6C239B0A8A931 xmp.iid:C7C4172C0E206811A3A3FC4A228C975D xmp.did:018011740720681188E6C239B0A8A931 xmp.did:018011740720681188E6C239B0A8A931 created xmp.iid:018011740720681188E6C239B0A8A931 2011-01-20T17:47+03:00 Adobe Photoshop CS5 Macintosh converted from image/png to application/vnd.adobe.photoshop saved xmp.iid:028011740720681188E6C239B0A8A931 2011-02-03T20:28:49+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:038011740720681188E6C239B0A8A931 2011-02-03T20:44:05+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:048011740720681188E6C239B0A8A931 2011-02-03T20:47:19+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0480117407206811A3A3FC4A228C975D 2011-02-04T14:56:04+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0580117407206811A3A3FC4A228C975D 2011-02-04T14:56:54+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0680117407206811A3A3FC4A228C975D 2011-02-04T14:57:23+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0780117407206811A3A3FC4A228C975D 2011-02-04T14:58:19+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0880117407206811A3A3FC4A228C975D 2011-02-04T15:04:56+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0980117407206811A3A3FC4A228C975D 2011-02-04T15:06:13+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0A80117407206811A3A3FC4A228C975D 2011-02-04T15:19:11+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:C4C4172C0E206811A3A3FC4A228C975D 2011-02-04T15:21+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:C5C4172C0E206811A3A3FC4A228C975D 2011-02-04T15:23:53+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:C6C4172C0E206811A3A3FC4A228C975D 2011-02-04T15:32:31+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:C7C4172C0E206811A3A3FC4A228C975D 2011-02-04T15:33:45+03:00 Adobe Photoshop CS5 Macintosh / 8BIM:“ printOutputClrSenumClrSRGBCInteenumInteClrmMpBlboolprintSixteenBitbool printerNameTEXT8BIM;ČprintOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oàGrn doub@oàBl doub@oàBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R“€ vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMíHNHN8BIM&?€8BIMî Transparency8BIM Transparency8BIMïÿÿd8BIM5ÿÿd8BIM8BIMò ÿÿÿÿÿÿ8BIM 8BIM8BIMó 8BIM' 8BIMőH/fflff/ffĄ™š2Z5-8BIMűpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM8BIM>8BIM08BIM-8BIM@@ X8BIM6šnullVrsnlongenabbool numBeforelongnumAfterlongSpcnlong minOpacitylong maxOpacitylong2BlnMlong8BIM3null Vrsnlong frameStepObjcnull numeratorlong denominatorlongX frameRatedoub@>timeObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlongp denominatorlongX workInTimeObjcnull numeratorlong denominatorlongX workOutTimeObjcnull numeratorlongp denominatorlongXLCntlongglobalTrackListVlLs hasMotionbool8BIM4FnullVrsnlongsheetTimelineOptionsVlLs8BIM8BIMönullbaseNameTEXTUserboundsObjcRct1Top longLeftlongBtomlong@RghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlong@RghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?đ8BIM H HLinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3desc„lwtptđbkptrXYZgXYZ,bXYZ@dmndTpdmddĈvuedL†viewÔ$lumiűmeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ oą8őXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view€ț_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ€©źČ·ŒÁÆËĐŐÛàćëđöû %+28>ELRY`gnu|ƒ‹’šĄ©±čÁÉŃÙáéòú &/8AKT]gqz„Ž˜ąŹ¶ÁËŐàëő !-8COZfr~Š–ąźșÇÓàìù -;HUcq~Œšš¶ÄÓáđț +:IXgw†–Š”ĆŐćö'7HYj{ŒŻÀŃăő+=Oat†™ŹżÒćű 2FZn‚–ȘŸÒçû  % : O d y  € ș Ï ć û  ' = T j  ˜ ź Ć Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ă Ț ű.Id›¶Òî %A^z–łÏì &Ca~›čŚő1OmŒȘÉè&Ed„ŁĂă#Ccƒ€Ćć'Ij‹­Îđ4Vx›œà&IlČÖúAe‰źÒś@eŠŻŐú Ek‘·Ę*QwžĆì;cŠČÚ*R{ŁÌőGp™Ăì@j”Ÿé>i”żê  A l ˜ Ä đ!!H!u!Ą!Î!û"'"U"‚"Ż"Ę# #8#f#”#Â#đ$$M$|$«$Ú% %8%h%—%Ç%ś&'&W&‡&·&è''I'z'«'Ü( (?(q(ą(Ô))8)k))Đ**5*h*›*Ï++6+i++Ń,,9,n,ą,Ś- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/ț050l0€0Û11J1‚1ș1ò2*2c2›2Ô3 3F33ž3ń4+4e4ž4Ű55M5‡5Â5ę676r6ź6é7$7`7œ7Ś88P8Œ8È99B99Œ9ù:6:t:Č:ï;-;k;Ș;è<' >`> >à?!?a?ą?â@#@d@Š@çA)AjAŹAîB0BrB”BśC:C}CÀDDGDŠDÎEEUEšEȚF"FgF«FđG5G{GÀHHKH‘HŚIIcI©IđJ7J}JÄK KSKšKâL*LrLșMMJM“MÜN%NnN·OOIO“OĘP'PqP»QQPQ›QæR1R|RÇSS_SȘSöTBTTÛU(UuUÂVV\V©VśWDW’WàX/X}XËYYiYžZZVZŠZő[E[•[ć\5\†\Ö]']x]É^^l^œ__a_ł``W`Ș`üaOaąaőbIbœbđcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišińjHjŸjśkOk§kÿlWlŻmm`mčnnknÄooxoŃp+p†pàq:q•qđrKrŠss]sžttptÌu(u…uáv>v›vűwVwłxxnxÌy*y‰yçzFz„{{c{Â|!||á}A}Ą~~b~Â#„ć€G€š kÍ‚0‚’‚ôƒWƒș„„€„ă…G…«††r†Ś‡;‡ŸˆˆiˆÎ‰3‰™‰țŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘š’’z’ă“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜ž™$™™üšhšŐ›B›Żœœ‰œśdÒž@žźŸŸ‹Ÿú i ŰĄGĄ¶ą&ą–ŁŁvŁæ€V€Ç„8„©ŠŠ‹Šę§n§àšRšÄ©7©©ȘȘ««u«éŹ\ŹĐ­D­žź-źĄŻŻ‹°°u°ê±`±ÖČKČÂł8łźŽ%Žœ””Š¶¶y¶đ·h·àžYžŃčJčÂș;ș”».»§Œ!Œ›œœŸ Ÿ„ŸÿżzżőÀpÀìÁgÁăÂ_ÂÛĂXĂÔÄQÄÎĆKĆÈÆFÆĂÇAÇżÈ=ÈŒÉ:ÉčÊ8Ê·Ë6˶Ì5Ì”Í5Í”Î6ζÏ7ÏžĐ9ĐșŃ<ŃŸÒ?ÒÁÓDÓÆÔIÔËŐNŐŃÖUÖŰŚ\ŚàŰdŰèÙlÙńÚvÚûۀÜ܊ĘʖȚȚąß)߯à6àœáDáÌâSâÛăcăëäsäüć„æ æ–çç©è2èŒéFéĐê[êćëpëûì†ííœî(îŽï@ïÌđXđćńrńÿòŒóó§ô4ôÂőPőȚömöûśŠűűšù8ùÇúWúçûwüü˜ę)ęșțKțÜÿmÿÿ8BIM,8BIM î ÒÿŰÿí Adobe_CMÿîAdobed€ÿۄ            ÿÀ "ÿĘÿÄ?   3!1AQa"q2‘Ą±B#$RÁb34r‚ŃC%’Sđáńcs5ąČƒ&D“TdEÂŁt6ÒUâeòł„ĂÓuăóF'”€…Ž•ÄÔäô„”ĆŐćőVfv†–Š¶ÆÖæö7GWgw‡—§·ÇŚçś5!1AQaq"2‘Ą±B#ÁRŃđ3$bár‚’CScs4ń%ąČƒ&5ÂÒD“TŁdEU6teâòł„ĂÓuăóF”€…Ž•ÄÔäô„”ĆŐćőVfv†–Š¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?î~ÉÒżòȘÿŁłè~oî:’±öȘżòȚŻĄ?àżíԕ›—söć`švÙÿĐô ÙßùSWŃÿJÏ„ûŸÍęć$…öî—ÿsr~†î-ú?öŚÓÿÁR^Oó'țwęûĂüä~ŃÿzÿÿŃôXëÿœ‰ôvÏ„ăôț‚K3Đé?ùI—üÜ}ßèŸú_ôR{ž»ÿăcțę_uæ;ü7ÿAÿÒï=cÿ—•7?FŽ?ÓŻèÒDÜïüŠwПûOÏú?çRSéŰă,űÿăŻÿÓôMű_ś"ÿŁăgwÓÿŠ’±Cƞ<ÏȚ’«ÂpáúőšÇùßúÿÔîțŃGțSćę úÿÛ_Ïę/ú +»ÿîû~Œÿƒăę"J,æcÿ߯áÉțpÿÎÿœÿŐô-ęGÿ+)ú?é›ôżwùŸŁü€•oÚ=țçe} âïŁÿm9ÿ‚$†żæ#öÉ·>óÿÿÖô=żXżÒáęôvę?Țț{è%%ön•ÿ”y_ÍÇŃoè€æ #ƏŒżĆÿЗûżv?űd_ÿŚőT’I%?ÿĐőT’I%?ÿÙ8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIM".MM*bj(1r2‡i€Đ üÚ' üÚ'Adobe Photoshop CS5 Macintosh2011:02:04 15:33:45   @&(.HH8BIM ¶moptÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4TargetSettingsMttCObjc NativeQuadBl longÿGrn longÿRd longÿTrnsbool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIMĄ‰msetnullHTMLBackgroundSettingsObjcnullBackgroundColorBluelongÿBackgroundColorGreenlongÿBackgroundColorRedlongÿBackgroundColorStatelongBackgroundImagePathTEXTUseImageAsBackgroundbool HTMLSettingsObjcnullAlwaysAddAltAttributebool AttributeCaselong CloseAllTagsboolEncodinglongFileSavingSettingsObjcnull CopyBackgroundboolDuplicateFileNameBehaviorlongHtmlFileNameComponentsVlLslonglonglonglonglonglongImageSubfolderNameTEXTimagesNameCompatibilityObjcnull NameCompatMacboolNameCompatUNIXboolNameCompatWindowsboolOutputMultipleFilesboolSavingFileNameComponentsVlLs longlonglonglonglonglonglonglonglongSliceFileNameComponentsVlLslonglonglonglonglonglongUseImageSubfolderboolUseLongExtensionsboolGoLiveCompatibleboolImageMapLocationlong ImageMapTypelongIncludeCommentsboolIncludeZeroMarginsboolIndentlongÿÿÿÿ LineEndingslong OutputXHTMLboolQuoteAllAttributesboolSpacersEmptyCellslongSpacersHorizontallongSpacersVerticallong StylesFormatlong TDWidthHeightlongTagCaselongUseCSSboolUseLongHTMLExtensionboolMetadataOutputSettingsObjcnull AddCustomIRboolAddEXIFboolAddXMPboolAddXMPSourceFileURIbool ColorPolicylongMetadataPolicylongWriteMinimalXMPboolWriteXMPToSidecarFilesboolVersionlong8BIMąms4w8BIMŁmaniIRFR8BIMAnDsđnullAFStlongFrInVlLsObjcnullFrIDlonge>wFrDllongèFrGAdoub@>FStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslonge>wLCntlong8BIMRoll8BIM€mfri DÌ8ÿá±oÿÿ 5U~[8BIMnormÿ <(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLayer 08BIMluniLayer 08BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRč]{û8BIMfxrp?đ@aà—ŠÿÿJŠŸ˜8BIMnormÿ 8(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ application8BIMluni application8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRčoĂÒ8BIMfxrpÀG–ŠÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_exe8BIMluni(file_extension_exe8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRû…Ü©Ê8BIMPlLdxplcL$c483e490-7049-1173-895f-b3229314356c@bÀ@0@bÀ@0@dÀ@dÀwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%c483e490-7049-1173-895f-b3229314356cplacedTEXT%d6d3c99b-70e6-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@bÀdoub@0doub@bÀdoub@0doub@dÀdoubdoub@dÀnonAffineTransformVlLsdoubdoub@bÀdoub@0doub@bÀdoub@0doub@dÀdoubdoub@dÀwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@bÀÉÙÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_txt8BIMluni(file_extension_txt8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRúŠÉŒX8BIMPlLdxplcL$c5d8d499-7049-1173-895f-b3229314356c@i @0@i @0@k @k warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%c5d8d499-7049-1173-895f-b3229314356cplacedTEXT%eddf1ce2-70e4-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@i doub@0doub@i doub@0doub@k doubdoub@k nonAffineTransformVlLsdoubdoub@i doub@0doub@i doub@0doub@k doubdoub@k warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@i _oÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_mp48BIMluni(file_extension_mp48BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRüˆąò8BIMPlLdxplcL$14ebc9c7-704b-1173-895f-b3229314356cżđ@uđ@.@uđ@.@vđżđ@vđwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%14ebc9c7-704b-1173-895f-b3229314356cplacedTEXT%40b0444b-70e9-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@uđdoub@.doub@uđdoub@.doub@vđdoubżđdoub@vđnonAffineTransformVlLsdoubżđdoub@uđdoub@.doub@uđdoub@.doub@vđdoubżđdoub@vđwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrpżđ@uđ^nÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_mpeg8BIMluni,file_extension_mpeg8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRúÌńŠ8BIMPlLdxplcL$29a1d44e-704b-1173-895f-b3229314356c@uà@0@uà@0@và@vàwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%29a1d44e-704b-1173-895f-b3229314356cplacedTEXT%394b586f-70e5-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@uàdoub@0doub@uàdoub@0doub@vàdoubdoub@vànonAffineTransformVlLsdoubdoub@uàdoub@0doub@uàdoub@0doub@vàdoubdoub@vàwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@uàĂÓÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_pdf8BIMluni(file_extension_pdf8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRúôÿa8BIMPlLdxplcL$3b187f9a-704b-1173-895f-b3229314356cżđ@|0@.@|0@.@}0żđ@}0warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%3b187f9a-704b-1173-895f-b3229314356cplacedTEXT%9658e37c-70e5-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@|0doub@.doub@|0doub@.doub@}0doubżđdoub@}0nonAffineTransformVlLsdoubżđdoub@|0doub@.doub@|0doub@.doub@}0doubżđdoub@}0warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrpżđ@|0‘ĄÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_rtf8BIMluni(file_extension_rtf8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRúô‹8BIMPlLdxplcL$3d2e709b-704b-1173-895f-b3229314356c@y@0@y@0@z@zwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%3d2e709b-704b-1173-895f-b3229314356cplacedTEXT%9658e37f-70e5-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@ydoub@0doub@ydoub@0doub@zdoubdoub@znonAffineTransformVlLsdoubdoub@ydoub@0doub@ydoub@0doub@zdoubdoub@zwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@y±ÁÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_ace8BIMluni(file_extension_ace8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRü……-™8BIMPlLdxplcL$919ca3ae-704b-1173-895f-b3229314356c@’Ä@0@’Ä@0@“@“warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%919ca3ae-704b-1173-895f-b3229314356cplacedTEXT%40b04448-70e9-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@’Ädoub@0doub@’Ädoub@0doub@“doubdoub@“nonAffineTransformVlLsdoubdoub@’Ädoub@0doub@’Ädoub@0doub@“doubdoub@“warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@’ÄŠšÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_ptb8BIMluni(file_extension_ptb8BIMlnsrrend8BIMlyid'8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRüSîäq8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@„P@0@„P@0@„Đ@„Đwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%b153c44f-70e8-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@„Pdoub@0doub@„Pdoub@0doub@„Đdoubdoub@„ĐnonAffineTransformVlLsdoubdoub@„Pdoub@0doub@„Pdoub@0doub@„Đdoubdoub@„ĐwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@„PœÍÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_ptb copy8BIMluni4file_extension_ptb copy8BIMlnsrrend8BIMlyid(8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRüa*ûÒ8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@…è@0@…è@0@†h@†hwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%eff5c546-70e8-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@…èdoub@0doub@…èdoub@0doub@†hdoubdoub@†hnonAffineTransformVlLsdoubdoub@…èdoub@0doub@…èdoub@0doub@†hdoubdoub@†hwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@…èïÿÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_ptb copy 28BIMluni8file_extension_ptb copy 28BIMlnsrrend8BIMlyid)8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRüdL»ę8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@‡x@0@‡x@0@‡ű@‡űwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%12d74bf7-70e9-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@‡xdoub@0doub@‡xdoub@0doub@‡űdoubdoub@‡űnonAffineTransformVlLsdoubdoub@‡xdoub@0doub@‡xdoub@0doub@‡űdoubdoub@‡űwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@‡x 0ÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_ptb copy 38BIMluni8file_extension_ptb copy 38BIMlnsrrend8BIMlyid*8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRükaqï8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@‰@0@‰@0@‰€@‰€warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%23f46844-70e9-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@‰doub@0doub@‰doub@0doub@‰€doubdoub@‰€nonAffineTransformVlLsdoubdoub@‰doub@0doub@‰doub@0doub@‰€doubdoub@‰€warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@‰„”ÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_ptb copy 48BIMluni8file_extension_ptb copy 48BIMlnsrrend8BIMlyid+8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRüqA„Ś8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@Œ @0@Œ @0@Œ @Œ warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%2765d4fa-70e9-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@Œ doub@0doub@Œ doub@0doub@Œ doubdoub@Œ nonAffineTransformVlLsdoubdoub@Œ doub@0doub@Œ doub@0doub@Œ doubdoub@Œ warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@Œ ·ÇÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_ptb copy 58BIMluni8file_extension_ptb copy 58BIMlnsrrend8BIMlyid,8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRüvGÜ8BIMPlLdxplcL$b153c44e-70e8-1173-9870-930db18117f2@ž@0@ž@0@Ž8@Ž8warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b153c44e-70e8-1173-9870-930db18117f2placedTEXT%3655fd43-70e9-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@ždoub@0doub@ždoub@0doub@Ž8doubdoub@Ž8nonAffineTransformVlLsdoubdoub@ždoub@0doub@ždoub@0doub@Ž8doubdoub@Ž8warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@žÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_chm8BIMluni(file_extension_chm8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRștźÊ8BIMPlLdxplcL$9e507f6c-704b-1173-895f-b3229314356c@0@0@0@0warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%9e507f6c-704b-1173-895f-b3229314356cplacedTEXT%de4c467a-704b-1173-895f-b3229314356cPgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoubdoub@0doubdoub@0doub@0doubdoub@0nonAffineTransformVlLsdoubdoubdoub@0doubdoub@0doub@0doubdoub@0warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrpÉÙÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_bin8BIMluni(file_extension_bin8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRû”38BIMPlLdxplcL$e17a80c3-704b-1173-895f-b3229314356cżđ@i @.@i @.@k żđ@k warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%e17a80c3-704b-1173-895f-b3229314356cplacedTEXT%d7abbc97-70e5-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@i doub@.doub@i doub@.doub@k doubżđdoub@k nonAffineTransformVlLsdoubżđdoub@i doub@.doub@i doub@.doub@k doubżđdoub@k warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrpżđ@i RbÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_bat copy 38BIMluni8file_extension_bat copy 38BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRûÉQì8BIMPlLdxplcL$a5667c38-70e6-1173-9870-930db18117f2@Š@0@Š@0@‹@‹warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%a5667c38-70e6-1173-9870-930db18117f2placedTEXT%9f59f49e-70e7-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@Šdoub@0doub@Šdoub@0doub@‹doubdoub@‹nonAffineTransformVlLsdoubdoub@Šdoub@0doub@Šdoub@0doub@‹doubdoub@‹warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@ŠèűÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_bin8BIMluni(file_extension_bin8BIMlnsrrend8BIMlyid#8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRûóŻ ž8BIMPlLdxplcL$d5cca80a-70e7-1173-9870-930db18117f2żđ@@@.@@@.@Àżđ@Àwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%d5cca80a-70e7-1173-9870-930db18117f2placedTEXT%064310a5-70e8-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@@doub@.doub@@doub@.doub@Àdoubżđdoub@ÀnonAffineTransformVlLsdoubżđdoub@@doub@.doub@@doub@.doub@Àdoubżđdoub@ÀwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrpżđ@@^nÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_html8BIMluni,file_extension_html8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRûš«șo8BIMPlLdxplcL$cc65cd91-70e6-1173-9870-930db18117f2@‚đ@0@‚đ@0@ƒp@ƒpwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%cc65cd91-70e6-1173-9870-930db18117f2placedTEXT%2dda0a16-70e7-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@‚đdoub@0doub@‚đdoub@0doub@ƒpdoubdoub@ƒpnonAffineTransformVlLsdoubdoub@‚đdoub@0doub@‚đdoub@0doub@ƒpdoubdoub@ƒpwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@‚đőÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_doc8BIMluni(file_extension_doc8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRúûRš78BIMPlLdxplcL$b8532814-704a-1173-895f-b3229314356cżđ@P@.@P@.@€(żđ@€(warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%b8532814-704a-1173-895f-b3229314356cplacedTEXT%b5ce6370-70e5-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@Pdoub@.doub@Pdoub@.doub@€(doubżđdoub@€(nonAffineTransformVlLsdoubżđdoub@Pdoub@.doub@Pdoub@.doub@€(doubżđdoub@€(warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrpżđ@PâòÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_flv8BIMluni(file_extension_flv8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRü6‡h 8BIMPlLdxplcL$c718de88-704a-1173-895f-b3229314356cżđ@“ˆ@.@“ˆ@.@“Èżđ@“Èwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%c718de88-704a-1173-895f-b3229314356cplacedTEXT%a483b5cc-70e8-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@“ˆdoub@.doub@“ˆdoub@.doub@“Èdoubżđdoub@“ÈnonAffineTransformVlLsdoubżđdoub@“ˆdoub@.doub@“ˆdoub@.doub@“Èdoubżđdoub@“ÈwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrpżđ@“ˆM]ÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_gz8BIMluni(file_extension_gz8BIMlnsrrend8BIMlyid%8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRüâá 8BIMPlLdxplcL$4e0ca1c0-70e8-1173-9870-930db18117f2@‘4@0@‘4@0@‘t@‘twarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%4e0ca1c0-70e8-1173-9870-930db18117f2placedTEXT%5dbedc4f-70e8-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@‘4doub@0doub@‘4doub@0doub@‘tdoubdoub@‘tnonAffineTransformVlLsdoubdoub@‘4doub@0doub@‘4doub@0doub@‘tdoubdoub@‘twarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@‘4~ŽÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_hqx8BIMluni(file_extension_hqx8BIMlnsrrend8BIMlyid&8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRü1J8BIMPlLdxplcL$9825338c-70e8-1173-9870-930db18117f2@‘ű@0@‘ű@0@’8@’8warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%9825338c-70e8-1173-9870-930db18117f2placedTEXT%99e5dd11-70e8-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@‘űdoub@0doub@‘űdoub@0doub@’8doubdoub@’8nonAffineTransformVlLsdoubdoub@‘űdoub@0doub@‘űdoub@0doub@’8doubdoub@’8warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@‘ű+ÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_zip8BIMluni(file_extension_zip8BIMlnsrrend8BIMlyid$8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRü ćíŠ8BIMPlLdxplcL$21f17c42-70e8-1173-9870-930db18117f2@l@0@l@0@Ź@Źwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%21f17c42-70e8-1173-9870-930db18117f2placedTEXT%2f2545e7-70e8-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@ldoub@0doub@ldoub@0doub@Źdoubdoub@ŹnonAffineTransformVlLsdoubdoub@ldoub@0doub@ldoub@0doub@Źdoubdoub@ŹwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@l'7ÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_htm8BIMluni(file_extension_htm8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRûŹq28BIMPlLdxplcL$d6c29263-704a-1173-895f-b3229314356c@8@0@8@0@ž@žwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%d6c29263-704a-1173-895f-b3229314356cplacedTEXT%d508738d-70e5-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@8doub@0doub@8doub@0doub@ždoubdoub@žnonAffineTransformVlLsdoubdoub@8doub@0doub@8doub@0doub@ždoubdoub@žwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@8û ÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_jpeg8BIMluni,file_extension_jpeg8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRüŠƒ8BIMPlLdxplcL$e6d2e6e0-704a-1173-895f-b3229314356c@o`@0@o`@0@p°@p°warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%e6d2e6e0-704a-1173-895f-b3229314356cplacedTEXT%6dccac23-70e9-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@o`doub@0doub@o`doub@0doub@p°doubdoub@p°nonAffineTransformVlLsdoubdoub@o`doub@0doub@o`doub@0doub@p°doubdoub@p°warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@o`-=ÿÿYÒÒÒ8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿfile_extension_m4b8BIMluni(file_extension_m4b8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRúŒr<Ź8BIMPlLdxplcL$fdefcf69-704a-1173-895f-b3229314356c@rĐ@0@rĐ@0@sĐ@sĐwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@08BIMSoLdsoLDnullIdntTEXT%fdefcf69-704a-1173-895f-b3229314356cplacedTEXT%049e389e-70e5-1173-9870-930db18117f2PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@rĐdoub@0doub@rĐdoub@0doub@sĐdoubdoub@sĐnonAffineTransformVlLsdoubdoub@rĐdoub@0doub@rĐdoub@0doub@sĐdoubdoub@sĐwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@0RghtUntF#Pxl@0uOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0@UUUUUU@%UUUUUU@0VrtcUnFl#Pxl@UUUUUU@UUUUUU@UUUUUU@UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@%UUUUUU@0@0@0@0Sz ObjcPnt Wdthdoub@0Hghtdoub@0RsltUntF#Rsl@R8BIMfxrp@rĐfrÿÿ~ÂÂÂ8BIMnormÿ4(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ dir-opened8BIMluni dir-opened8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRúhŒ^Ä8BIMfxrpÀ{à3AÿÿŠââż8BIMnormÿ (ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿdir8BIMluni dir8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRč:ß Ű8BIMfxrpÀDÿÿYÒÒÒ8BIMnormÿ <(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLayer 18BIMluniLayer 18BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓRč'ÿàß8BIMfxrpÀV€                     ïùÿêûśÿŠüöÿ§ęőÿŹțôÿțôÿțôÿțôÿțôÿțôÿțôÿțôÿțôÿțôÿțÀöÿÀț#ö3#țńńïôÿïòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿÀôÿá#ô3,ńńńű Z’äÿü:‚žûÿÿüűÿÿüűÿÿüûÿƐÿü ÿä§{<3$ÿüÿ,țÿüÿúÿü ÿ!üÿÿíÿüÿûÿÿ!üÿÿíÿûÿÿûÿÿęüÿÿûÿÿMęÿÿęMęüÿÿ2332MęÿÿęMś2332śńńń±ÿ©û©ÿ±ęőÿęőÿęőÿęőÿęőÿęőÿęőÿęőÿęőÿęőÿęőÿęőÿęőÿęÁÿșû3șÿÁę#3"û"3#ęńńńńńńńńńńńńńńńńńńńńńïùÿêûśÿŠüöÿ§ęőÿŹțôÿțôÿțôÿțôÿțôÿțôÿjóÿ óÿÏòÿEńÿÀòÿ#ò3ńńńńńïùÿêûśÿŠüöÿ§ęőÿŹțôÿțôÿțôÿțôÿțôÿțôÿțôÿțôÿțôÿțôÿțÀöÿÀț#ö3#țńńńńïùÿêûśÿŠüöÿ§ęőÿŹțôÿțôÿțôÿțôÿjóÿóÿäòÿsòÿzòÿvńÿÀôÿ»3#ô3"ńńńńę•śțÿś•üÿFűÿFțFöÿFôÿÿ•ôÿ•űôÿűòÿòÿòÿùôÿù©ôÿ©ôÿköÿkkűÿkÿ3ȘùțÿùȘ3țę1ț31üńńńńïùÿêûśÿŠüöÿ§ęőÿŹțôÿțôÿțôÿțôÿțôÿ€óÿÿòÿœóÿ3&ôÿ¶ôÿ!Àöÿżț#ö3#țńńńńęêśÿ#țƒöÿżțćőÿțôÿÿ śÿĐ33ÿ4śÿČÿsśÿÿ›śÿ`ÿÒöÿÿÿïőÿńÿńÿÊóÿ3Dôÿ3û3ÿÿÿ3ÿÿ3úÿ3ÿÿ3țńńńÏùÿÏûśÿŸüöÿŸęőÿŸțôÿțôÿțôÿțòÿšńÿńÿńÿńÿńÿńÿČóÿč ó3"ńńńĘùÿêûśÿŠüöÿ§ęőÿ«țôÿțôÿ0śÿńÿóÿČ5ôÿû òÿòÿôÿÿ3ôÿțôÿț„öÿŽțö3 țńńńïùÿêûśÿŠüöÿ§ęőÿŹțôÿțôÿțôÿțôÿțôÿțôÿțòÿȚôÿŸÿÿôÿ#33ôÿțÀöÿÀț#ö3#țńńńńïùÿêûśÿŠüöÿ§ęőÿŹțôÿțôÿțóÿÿôÿ3ôÿțôÿțóÿÿôÿ3ôÿŹÿÈńÿÀöÿČ„ÿ„#ö3 3ńńńńïùÿêûśÿŠüöÿ§ęőÿŹțôÿțôÿțôÿțôÿĆŰ)ôÿæôòÿ†ôÿÿ3ńÿóÿ3ÿńÿÀöÿșț3#ö3"țńńńńńïùÿêûśÿŠüöÿ§ęőÿŹțôÿțôÿțòÿïńÿńÿńÿńÿńÿńÿńÿÀóÿò#ó30ńńńïùÿêûśÿŠüöÿ§ęőÿŹțôÿțôÿțôÿțòÿòÿóÿ3ôÿ3ńÿòÿ3ńÿÀöÿ±țÿ#ö3ț3ńńńńïùÿêûśÿŠüöÿ§ęőÿȘțôÿțòÿïńÿńÿńÿńÿńÿńÿńÿńÿÀóÿò#ó30ńńńńxúÿùCŸűÿțțÿùŐÿęțÿù_țțüęÿÿù:çÿüÿÿûüù{ÿüÿÉŰÿÿùæüÿĆ?ŻŠùÿÿúKőúÿ„śÿÓùńńńńńüÿûùŚÿțÿțÿŚú•ÿûțÿûÿ”úűțûÿùúűÿúÿțüÿțÿúÌÿûțÿûÿÌúLÿÿțüÿțLútçțÿælùÿ1sws1űńńń ÿțÿ ù„üÿ„ú>ÿțĄ\Ąțÿ>ú3ÿîîÿ5úŒÿö†z†öÿƒúÿțúÿúțÿțûțÿúùÿțúțúÿțúÿúțÿúśúÿűúThüfhTúńńńńńńńńńńńńńńńńńńńńńńńńńńńńxáțâxśwùțÿüműĘüÿȚűțüÿțűăüÿäű€ûțÿüzűxßțăzś                                           Ż­Źü«­šû­ùÿé©ü ŹÿȚȚßȚȚÿŁÿèšę «ÿâăäăâÿ€êÿéŹț «ÿćæçæćÿË„Łÿ­ț«ÿêíîíëőęÿ«ț «ÿ±°ńƒźìÿ«ț«ÿńśśțöśôđÿ«ț «ÿôƒŽű„”Ž±òÿ«ț «ÿśüüúûęęúöÿ«ț «ÿû‚¶łțƒ¶Čùÿ«ț«ÿęúÿûÿ«ț «ÿÿž·”ÿ”ÿÿ«ț­öÿ­țĄ­űŹ­ĄțńńńPOțKùLOPNôëêîóüőÿôűOJțÿéy~ę~zÿKIțÿ ҅Š–‹Š„ÿKJÿìԊ‘“ț—”’ŒÿKKÿŒ‘•˜‘țŽ‘˜’ÿKKÿ˜œž …†‡†„ž˜ÿKKÿŸŁ€Š“}~’€ŸÿKKÿ§«Ź­źš’šźŹ§ÿKKÿ™žț ĄĄ ž™ÿKKÿˆúˆÿKJÿrvúxvrÿJIôÿIMôÿMÿLIűHILLńńńńś9?ICü BA@I[o‚„Bü CrƒqaSOCü C]NKFB?@Eü E@>??B=7EüEB72 țEüEúEüEúEü E>BAABDü ECi||iC>BAABDCXPPXCCi||iCDDAADDCXPPXCęEÿDÿAÿDśęEśńńńńÿXSûSXXę XWY[[XVUUWWXę XÇZ D]qTÆXę YV[6[u‡•œUUYę ZÆ\Ip„~bSYĆZę \Y\Yplm]F]Y\ę \Ć]U]v}dI]Ć\ę _\`eda__`^\_ę `ÄcC\p€]Ă`ę a_d5[t†”›^^aę bÄdHp„~bSbĂbę dbeXolm]Dfbdę eĂfS\u}dHgĂeęgfhkțjÿkhfgę^j`û`j^ęńńńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńńŻ­Źü«­šû­ùÿé©ü ŹÿȚȚßȚȚÿŁÿèšę «ÿâăäăâÿ€êÿéŹț«ÿäțæäÿÊ„Łÿ­ț«ÿèțéèòęÿŹț«ÿêęëêëȚĘńŹț«ÿüîïéÜÿáŽț«ÿüđòŰÿAÿÊț«ÿęó őäèÿDÿêÏ«ÿțö śôÔÿÿ?ÿÿŐÌ«ÿűűùúŰòüÿôÏ«ÿęęțïÛțÿ8țÿȚÓ­ęÿÓűÿÔĄ­««ȘÖÓțÒÓțÒÓŐńńńńńń-$ę"$û$ùÿĂü ÿ±ČłČ°ÿÿżę ÿčŒœŒčÿ öÿĂ$ț ÿÁĂÄĂÁÿp ÿ"țÿÈÉÊÊÈáęÿțÿÎÏĐĐÏÎțÍÿțÿÖüŚÖŐŐÿțÿĘĘüȚÿĘÿțÿçèüéèçÿțÿ­Żü°Ż­ÿțÿŻČüłČŻÿț ÿź°ü±°źÿ ț$öÿ$ț($ ú $(țńńńńńŻ­Źü«­šû­ùÿé©ü ŹÿȚȚßȚȚÿŁÿêšę «ÿâăäăâÿŠđÿűžț«ÿäțæäÿ΁hț«ÿèțéèóÿÊĂÜț«ÿêüëïŽćÜț«ÿüîńö·ÿÿ)«ÿęđ òű•ČäÿŽ«ÿțóôűïFûțÿ/«ÿțöśęuŽęÿq«ÿțűùęžăęÿs&, «ÿęęüęűùûšțÿàöă­üÿțűÿÿÙ»üùűĄ­ț« ©ŃäűûRUÏûàńńńńńęüÿ \źŃĆĄŠJț{ö㾝{ƒœiràŰƞš±pg™m6ÆÌŃÊŒŻ›’<7—BWÈ”«ÀȐ›e3&N{j°Ą’¶Š› @(–!M‡‡źĄžj0'mšSg]Ż„Ą›0,!i_HHˆŹZ€F  (9??@zžRwWHZ ,131*!hŸ˜šL#&&!HŁœ`ÿ  k.țę üńńńńńŻ­Źü«­šû­ùÿé©ü ŹÿȚȚßȚȚÿŁÿèšę «ÿâăäăâÿ€êÿéŹț«ÿäțæäÿÊ€Łÿ­țŹÿêëìëéóęÿŹț Żÿùüüúôíëêéÿźț șČ >="ùòóđÿłț~=p%CM ÿü|ùÿ¶H)sÎÿ‘6ÿÿ6ÿÿŒK/bęÿƒ6?7?MST+Uûÿ5ÿÿŒK Y"Śÿ–[ÿÿ€ÿÿ¶>:V2=<üÿ”ț ź9;;(}·­ŹŹźŁțńńńńńę ;I8 ț§ùÿșÉț ÿÿûûțüțÿAÂ4țIÿóęńòőÿ"țVÿëêęëőęÿˆÿćüäöÈ ÿ »îûĘùž ÿ ÌàŐÔŃÒÖÖŐáțÿ ÿÏÌĐÿÓÏÎÓÿȚÿ ÿÈĐÿÿÚÎÉÒÿÿÒ'ŰÿÿÖ${ÏêÎțÿŃțÿ ŚÿÿÔ°ÖÈÎÿÿщàÛŰĘÿÿߒĘÙÿÿÏ ĘÿáàÿÏúŰććŐțńńńńŻùłŻûłùÿăŻüłÿüáÿłÿăŻęłÿüäÿłæÿăŻțłÿüæÿĐłłÿłțłÿüéńęÿłțłÿűëÿłțłÿëoőRłÿëRöRłÿëRÿÿÄcÿcÿcÿÿÄRłÿëRÿhÿhțÿhÿhÿRłÿëRÿÿÉmÿmÿmÿÿÉRłÿëRÿțrÿrÿrÿrrRłÿÿRöwR™ł­döREńńńńŹ­Źü«­šû­ùÿé©ü ŹÿȚȚßȚȚÿŁÿèšę «ÿâăäăâÿ€êÿé­ț«ÿäțæäÿÊ€Łÿšț«ÿèțéèòęÿ„Úææ«ÿêęëêțéÿ¶đöæ«ÿùîíÿâòÀ «ÿűđńïÚ«ÿùóôâńêć«ÿúöśïèíćâ«ÿûűùúäïŚț«ÿûęüïćïžț­úÿàçíś­ț–­ü«šćâÇ­œțńńńńŻ­Źü«­šû­ùÿé©ü ŹÿȚȚßȚȚÿŁÿèšę «ÿâăäăâÿŁèÿèŹț«ÿäțæäÿÉŚéÿŹț«ÿèțéèòÿôíÿ«ț«ÿêęëêéíìÿ«ț«ÿùîíÿ«ț«ÿúđÿíÿ©ț«ÿûóńìđńčț«ÿüöśîïòîńđîí«ÿęű ùóëíòü»Őîí «ÿęüęüđìôțțÿŠț­ęÿśïőęÿ«țĄ­««ȘÉĘŻț«­ĄțńńńńńŻ­Źü«­šû­ùÿé©ü ŹÿȚȚßȚȚÿŁÿèšę «ÿâăääăÿŠìÿêŻț «ÿäææèëÿŐŻ­ÿ±ț «ÿèéëïvz}€čț «ÿêëîÌÇÉÉËÙțpÿ«ÿîîńÁęÿÌŸpț «ÿđđóÁûææęÊŸpț «ÿóóöÁúßßüÌŸpț «ÿööùŰÇËËÌèțpÿ «ÿűűúÿt{ƒŸpț«ÿțęțÿŸpÆŸp›p­úÿùpĄ­ę« ŹČ§p§»ąwpwńńńńńŻ­Źü«­šû­ùÿé©ü ŹÿȚȚßȚȚÿŁÿèšę «ÿâăäăâÿ„ëÿéŹț«ÿäęæÿΚ„ÿźț«ÿèțéëșÊÚéűłț«ÿêțëíÇéííù»ț«ÿęî đÖíïï꣫ÿęđ ńćđđòú=«ÿüóíńòïöqeK«ÿùöűÿčț«ÿûűÿśűÿÇ {Č«ÿûęőüęęÇr†­úÿđÿÿęÄȘ…MĄ­ü«§ëđőęźțńńńńńńŻ­Źü«­šû­ùÿé©ü ŹÿȚȚßȚȚÿŁÿèšę «ÿâăäăâÿ€êÿéŻț«ÿäțæćÿÍšŠÿŽț«ÿèééêìțęÿÁț«ÿêëëíöWü«ÿțîńÿúÿ«ÿțđ óÿI“Ę«ÿțó öÿÿÇĂÿ«ÿțö ùÿÿ5/lÿ «ÿțű ûÿÿ3Őÿ«ÿțęÿÿÿŸBÿÿ­ûÿúÿ Ą­ț«­žLț ÿ ńńńńŻ­Źü«­šû­ùÿé©ü ŹÿȚȚßȚȚÿŁÿèšę «ÿâăäăâÿ€êÿéŹț«ÿäțæäÿÊ€Łÿ­ț«ÿèęéôęÿ°ț «ÿêëëìđöùöđÿčț«ÿțî đú$ ÿÿ'5>«ÿțđ òüÊË(*ÎŐ<«ÿțó ôùÿ"kż1t8«ÿęöùÿÿ,t”5ț«ÿțű ùțÿ$€2yš9?B«ÿțę țÿ!•~6œ;­ûÿ%/1232‚ˆ?Ą­ț« Ź±čœŸŸÀȘ5=@ńńńńńŻ­Źü«­šû­ùÿé©ü ŹÿȚȚßȚȚÿŁÿèšę «ÿâăäăâÿ„ëÿé«ț«ÿäęæÿΚŠÿȘț«ÿèééëŃÉËÍÌËÌÍÍΫÿêëëíÉùúûûÍ«ÿțîńÉùțĆÿÇÆîÌ«ÿțđ óÈùÊèÿËÎÍïÌ«ÿóóôöÈùÏÿÿÎÒÒđÌ«ÿööśùÇűÓęÿŐùÌ«ÿűűùüÇűÚïÿÿïÚùÌ«ÿțęÿÇűáęàáűÌ­üÿÊúûűúÌĄ­ę«ÈÍúÌÇńńńńńĘ„o„„‚„ÌùÊf(«ùÿÂ$ČùÌ`țČùÿ”jȘùĆC•đŚL­ù}“öŚÆ…ŽùQAìőőąóUÿśĐÿÿöńńńńń XyvjO:ùlÊĂ·°’U úTœšŰęȚ™€LúsŒ‹éÿ薚UúlȚęüÿûÿĆSúg ÒÿüÿՏYúP–ŐÿՖ…Kú/\‰šÆšˆX/ú5TnkoR4ùÿ*-*űńńń;ł·Ž;ù™ÎÊÂËΙùoŹŻo=oŻ­sú7ĄŒț„ȘWúÿșČÌŃÊŹŸ»úáûőțÿőùÛúŐïć˖ÌăôÙúĐíî»BŒíóÓúËïëÆvÆêôÏúÊöèÜÙÜçüÍúžáßÏĐÏȚă¶úÿ[ZțdZ[XúńńńńńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńńńńńńńĂżŒ·čśĂŃśțőÊčűžöțÿëčűŒțțÿïŒűžôÿűîážűÁÈæêĘŒžűĂžŒžžś                                           Ż°ûźŻȘûŻùÿé©ü źÿßßàßßÿ„ÿèšę źÿăäćäăÿ§ëÿéŻț źÿæçèçæÿ̧„ÿŻț­ÿëîïîíśęÿźț ­ÿï„ȱ°òƒźíÿ­ț­ÿòűűțśűőńÿ­ț ­ÿőƒłù„”Ž°ôÿ­ț ­ÿűęęüüÿțûśÿ­ț ­ÿû‚¶łțƒ¶Čùÿ­ț­ÿęúÿûÿ­ț źÿÿž·Žÿ”ÿÿźț°öÿ°țĄ°źźŻûźŻĄțńńńÿ„ƒű‚ƒ„„„ÿöęÿ„‚ÿÊęËțÌËÊÉÿ‚‚ÿŸÀÇĐŃÊŸÊŃÏÍÿ‚ÿ»ĂŐŐŰź°źŰÔŃÿÿÖŚŚÙčȘ«ȘčŰŐÿÿŰÙÚʟ„Š€ŸÜŰÿÿÛÜĘßżœ ążßÜÿÿßààáćăeăćáßÿÿËțÍ ÏŐ?ŐÏÍËÿ‚ÿ”žțčŒŸŒčž”ÿ‚ÿžĄęąŁąąĄžÿôÿ„ôÿ„}ƒű€ƒ…ńńńńűtwwz{ü wzv~•«ÁÊyü z°ĂĂžŹĄzü zš›•‹…|ü {‡~|{r`}ü}xkUț}ü}ú}ü}ú}ü }|uxxu|ü }zšĂĂšz|uxxu|zŁœœŁzzšĂĂšz{†ˆˆ†{zŁœœŁz5|{{|5{†ˆˆ†{ś5|{{|5śńńńńXYSûSYXę YXXTRQPPRVWYę YÆTĄ«·ÁËŚQĆYę ZUS€°»ĂÌŰPUZę [ÄT­žÁŸ±±RÄ[ę ]YU”č””Ż«UY]ę ]ÄW¶ŽŸÁž°XÄ]ę _\[WSQPQUZ[_ę aĂ\ž©”żÈÔYĂaę b_\€ŻșĂÌŚY^bę cÂ[ŹžÁŸ°±ZÁcę eb^Žž””źȘ_beę fÂa¶ŽŸÁžŻaÂfę hggfdccdfgghębk`û`kbęńńńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńńŻ°ûźŻȘûŻùÿé©ü źÿßßàßßÿ„ÿèšę źÿăäćäăÿ§ëÿéŻțźÿćțçćÿ̧ŠÿŻț­ÿéțêéôęÿ°ț­ÿëüìđŽ–Çłț­ÿęïđóߑÿ•­ț­ÿęńóù˜äKæŽț­ÿțô öúÂŹőLöł‚­ÿööśúđ†àëHëă‰f­ÿűűúÿšÀàáćááƄźÿęęÿۑÜÙÜFÜÙȚš‰°ęÿ „ŃÛÚÛĘÛÚÛ։ĄŻźŻłƒ†ț…†ț…‡Šńńńńńń‚ę~€~ûùÿÜ~ü ÿŰŰÙŰŰÿqÿÚxę~ÿÜțĘÜÿrüÿ܁ț~ÿàțáßÿŹrpÿ€ț~ÿățäăđęÿț~ÿæęçæțćÿ~ț~ÿúêÿéÿ~ț~ÿűíÿ~ț~ÿűôÿ~ț~ÿŐÖüŚÖŐÿ~ț~ÿÖŚüŰŚÖÿ~țÿÖúŚÖÿțöÿț|ű|țńńńńńŻ°ûźŻȘûŻùÿé©ü źÿßßàßßÿ„ÿê©ę źÿăäćäăÿšńÿű»țźÿćțçćÿςgț­ÿéțêéôÿÊÈà ț­ÿëüìń«ÉÊț­ÿüïòù€Ìê"­ÿęń óù•łæÿł­ÿțôőùđCûțÿ*­ÿțöűțt”ęÿo­ÿțűúÿÜęÿ^ źÿęüęÿĆÙÛ§ÿÿóÂÔș°üÿ ”ÚÙæÿÚ­ȚË”ĄŻź­źŻ°°șÌUXŻœĄńńńńńę~|‡~üÿ |~șëÿùëÚ«€|ț|ƒÈÿúäŐÆŐæĀ|ÄőőíŚÙìÈÆăƀ ìîööńëăȚŹšá„{»êäàôïĘçÄŠž¶Î{ĆáÛŐóìçćèźĄ•á‹čÓĐŐóìèæÈ„ —É‚€éčÁŸôîê怣•Ž…ÉÂČČÛòŸŐț–‘‹€s–Ź­ŹŻÒèčÏœŽŸ†v„Ąš§ŠąÇçâäȃV† Ÿž™Žê激Vÿ V…—˜””Èš€Vțęu…‡„rüńńńńńŻ°ûźŻȘûŻùÿé©ü źÿßßàßßÿ„ÿèšę źÿăäćäăÿ§ëÿéŻțźÿćțçćÿ˧„ÿŻțźÿêëììêôęÿźț °ÿôőöőòíëëêÿŻț ”Òu‰‰wŽőńòđÿ±ț›‹Șy‹“hüù€śÿȃwŻrÜÿžÿÿvÿÿ”…~„jÿüęÿ©v|wČ}‡Š‡| kÿțęÿuÿÿ”…t„yăÿŒ™ÿÿšÿÿłsŽ€„‰eüÿłț Șœ„ŒŒ{›łŻźź°Łțńńńńńęy—•yțz||ț{ÏùÿÚâțuÿÿüțÿÿ™ß’țžÿùüűúÿw…‰ÿU„ÿöüőúțnÿ {żÿńòóóòòüäpÿ xÛśđôûúôôÿÙnÿ uäđđüùù!pÿ wÿïùÍúùŃ*ÿ ÿöČd őócž0„~™šm(„Âïÿ$ną5€țÿ †w(ïŽóü%xŽ6xÁńôÿ%€#Őę €„3@~„Ž-Ž,Š‰+4ú5116țńńńńŽù”Žû”ùÿăŻü”ÿüâÿ”ÿăŻę”ÿüćÿ”çÿăŻț”ÿüçÿŃ””ÿ”ț”ÿüêòęÿ”ț”ÿűìÿ”ț”ÿì„öki”ÿìkö™k”ÿìkÿÿρÿÿÿÿÏk”ÿìkÿ†ÿ†țÿ†ÿ†ÿk”ÿìkÿÿԋÿ‹ÿ‹ÿÿÔk”ÿìkÿț‘ÿ‘ÿ‘ÿ‘‘k”ÿÿkö–ką”°yök[ńńńńł°ûźŻȘûŻùÿé©ü źÿßßàßßÿ„ÿèšę źÿăäćäăÿ§ëÿé¶țźÿćțçćÿ˧„ÿșț­ÿéțêéôęÿŸ;1­ÿëęìÿëêìÿƒ>c1­ÿùïôÿ+Q­ÿúńóüŒF­ÿúôùÿO>0­ÿûöűÿș(?+%­ÿüűúÿÿE=Qțźÿęțüęÿÿ 2›ț°úÿ%3xÀț™Żźț­°œ+nÂŁțńńńńŻ°ûźŻȘûŻùÿé©ü źÿßßàßßÿŠÿéšę źÿăäćäăÿȘőÿíŻțźÿćțçćÿÖ/ÿ±ț­ÿéțêéőÿCÿ±ț­ÿëęìîúL,ÿ±ț­ÿüïòÿ†ÿ”ț­ÿüńöÿ ËÁț­ÿęôöțÈc ț­ÿțö śüÿAM— ­ÿűűúÿÿšcąźÿęęÿÿ-yțÿÀț°ęÿb5ęÿ¶ț ĄŻźŻ·l?ž·Żź°„țńńńńńŻ°ûźŻȘûŻùÿé©ü źÿßßàßßÿ„ÿèšę źÿăäććäÿšíÿêŻț źÿćççêìÿÖ±ŻÿČț ­ÿéêíô“—™›™—žț ­ÿëíó‹wxxz–țˆÿ ­ÿïńűrćőőç{͈ț ­ÿńóûrÙČČÛz͈ț ­ÿôöęrӛ›Ô{͈ț ­ÿöśę©x|}|¶țˆÿ­ÿűűûÿ‘—ț›͈țźÿęüęțÿ͈Ò͈Ȉ°°úÿùˆĄŻźț­ źČ±ˆ±șą…ˆ…ńńńńńŻ°ûźŻȘûŻùÿé©ü źÿßßàßßÿ„ÿèšę źÿăäćääÿȘîÿêŻțźÿćțçêÿÜ”ČÿČț ­ÿéêêìö(AZ·ț ­ÿëììîû&Ôÿꐞț­ÿțï ńę@ÖûüœŒąnQ­ÿțń óęYÇćæ~ÆØt­ÿțô öüxŒ˜ye§Æȑ­ÿęöùüÿČț­ÿęű ùęÄÏÛŃ”ŽËÒźÿęțü ęÿ”ÿÿßčËł°úÿ„ÿÿŐŒÔŽ—ĄŻźț­ź°Ÿ«ŒÉŁțńńńńńńŻ°ûźŻȘûŻùÿé©ü źÿßßàßßÿ„ÿèšę źÿăäćäăÿ§ëÿéŻțźÿćțçæÿÍš§ÿČț­ÿéțêìúęÿžț­ÿëììíò“YYXZ^dio­ÿțïńù[úÿl­ÿțń óü]Ž]Œsê]nl­ÿțô öÿ[ÿbÜdÚ_ÿj­ÿțö űÿYÿc‚k€ÿf­ÿțű úÿXÿbjcćÿeźÿęüüțÿXÿZÖ`Šÿÿe°ûÿ[úÿhĄŻź­­ŻŽ†üfehińńńńŻ°ûźŻȘûŻùÿé©ü źÿßßàßßÿ„ÿèšę źÿăäćäăÿ§ëÿéŻțźÿćțçćÿ˧„ÿŻț­ÿéęêőęÿ°ț­ÿëțìîòôòîÿłț­ÿțï đöuyuüÿzƒˆ­ÿțń òűuȚȚz{á懭ÿęô űÿvȘÜ~Ż„­ÿęöűțÿ{ŽŰț­ÿęű üÿvÒ}œŐ‚‡ŠźÿęüüțÿuŃÆȀÇӃ°ûÿz€‚€ĐӇĄŻź­­ź±¶žțč ‚…ˆńńńńńŻ°ûźŻȘûŻùÿé©ü źÿßßàßßÿ„ÿèšę źÿăäććäÿ©íÿëŽț źÿćççéíÿŚł±ÿčț­ÿéêëń…begfehmpp­ÿëìîöbîîțđÿńóq­ÿïïńúbîghhlnkŃp­ÿńńóübîoÁÿsywŐq­ÿôôöÿbísÿÿqz|Őp­ÿööűÿbízęÿ}đo­ÿűűúÿaìƒÉÿÿʄïoźÿęüțÿa쌋ˆˆ‹Œîo°üÿdïûîòqĄŻź­Ż”zúoqtńńńńńĘ„o„„‚„ÌùÊf(«ùÿÂ$ČùÌ`țČùÿ”jȘùĆC•đŚL­ù}“öŚÆ…ŽùQAìőőąóUÿśĐÿÿöńńńńńX”«« sùj èàŰÓēuúáŃèęíÉčŒú„ȚÂôÿóÉǒú€đțęÿęÿߓúŸÒëÿțÿíƖú‡ĆÔíÿíÔŸ‡ú^–ÄÒêÒÕeúg‹«­«‹hùÿ4[Z[4űńńń;Ÿ”č¶Ÿ;ùšĐËÄÌКùkŹ°o5oŻ­oú_°›ț’čoú~•~†~Šš~ú ÔÌàćàÍӝúžËȘ–q—§ÓŁú•ŒȘ'‚§Ćœú»«P©Ă•úŽż«ŸœŸ©Ç’ú{ą țŸ€xú=/2ț<2/=úńńńńńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńńńńńńńWLAEDśVs”ÖšjAűC”’w†ŠDűAÍțÿAűDvvhDűVdwydMEűUDADEś                                              Ż°ęź­źŻȘûŻùÿé©üźÿàțáàÿ„ÿèšęźÿățäăÿ§ëÿéŻț ­ÿçèééçÿ̧„ÿŻț­ÿëîïîìöęÿźț ­ÿđ„ŽČ±óƒŻïÿ­ț­ÿòűűțśűőńÿ­ț ­ÿśƒ”ú„¶”Čőÿ­ț ­ÿűęęüüțțûśÿ­ț ­ÿû‚·”ț‚·łùÿ­ț­ÿțúÿęÿ­ț źÿÿž¶Žÿ”ÿÿźț°öÿ°țĄ°źźŻûźŻĄțńńńłę”Žúł”ł”ôÿ””ÿ&+]űÿł ”ÿ&)‹ÿÿÔxÔęÿł”ÿUˆțÿ(ęÿłŽüÿw(0(wțÿłłüÿ'-&țÿłłüÿ”"*“țÿłŽúÿüÿŽŽÿluvwz‚‚zulÿŽ”ÿ0=ț@BDB@=0ÿ””ÿ%ú(%ÿ”ŽôÿŽ”ôÿ”©”öł”ČńńńńűtŸĄąŠü Ł„ž©ÁÚóÿŁü „áőúòèȚÙ„ü ŠäŚÎÇżžČšü š»±­Șš™…Șü« ‹rț«ü«ú«üŹúŹü ­Ș©§§©Źü ­ȘÛûûÛȘÿȘÿš Ș­«ÜŚŚÜ««ÛûûÛ«Šž»»žŹŹÜŚŚÜŹIš­­šIšęșźśI©źź©Iśńńńńÿ[TûT[[ę [YWOLKKLOWY[ęZÄNûÿNÄZę ]WMÿÿûęÿÿMW]ę ]ÂMÿúśöùÿMÂ]ę _ZOÿûôóűÿPZ_ę aÂTÿÿüúÿÿUÂaę b^YNGFFGNY^bęcÁVûÿVÁcę e`VÿÿûęÿÿV`eę fÀVÿúśöùÿVÀfę gbYÿúôòűÿYbgę iÀ^ÿÿęüÿÿ_Àięljhcț`achjlębn`û`nbęńńńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńńŻ°ęź­źŻȘûŻùÿé©üźÿàțáàÿ„ÿèšęźÿățäăÿ§ëÿéŻț­ÿçțèçÿÌš§ÿŻț­ÿéțêéôęÿ±ț­ÿìęíïű‹0œșț­ÿęïđöŚ0‡5§ț­ÿțòóśÿYlhpUț­ÿțô öÿŁDsivO5­ÿööśęî4bgkhg:3­ÿúùęÿ\I]\[\^S9źÿęęÿÈ/PQPpPQT?4°ęÿ1AțHGHHIH:ĄŻźŻ»*7ú9:;ńńńńńńŽ¶”üŽ”±û¶ùÿëŽü”ÿüçÿŹÿêźę Žÿêêëêéÿ­ęÿë”țŽÿìțíìÿÏ­Źÿ”țŽÿîțïîöęÿŽțŽÿüńęđÿŽțŽÿűóÿŽțŽÿűôÿŽțŽÿűűÿŽțŽÿűæÿŽțŽÿæúçæÿŽț”ÿææüçÿæÿ”ț¶öÿ¶țȘ¶”úŽ”¶ȘțńńńńńŻ°ęź­źŻȘûŻùÿé©üźÿàțáàÿ„ÿê©ęźÿățäăÿšńÿű»ț­ÿçțèçÿЃiț­ÿéțêéôÿĐÓêț­ÿìęíîöŒ!Oț­ÿüïòęgC­ÿęò ôû˜șóÿž­ÿțôőùòEęțÿ,­ÿțöűÿ}»ęÿu­ÿúùúÿÿ¶țÿä5źÿęüțÿ"#źÿÿ”# °üÿ # WÿæV%ĄŻź­Ż»X*hh3ńńńńńęÀżÄĐÇÂÀüÿ șœXG2 yÊșțŻșì«°ùÿÿ@AÎș”đÿĂčÿÌ,žf-ÉŽÖÿòŽQG/*ßÉwÀ”íțÿÿ3"Xüòx¶öûÿÿțÒéđÈÄöùüÆęsńâć#ĂœFśűőęÿêßĘĘœ··đüLŹ>ŽïæßŐŽŁÔêèíçY›:pyIÍŁžÜäăçîű[țZÂușŰàȚßæ‰AË|ÿ užÊÖÚĘŐ;™É|țęąČžÀœ»šüńńńńńŻ°ęź­źŻȘûŻùÿé©üźÿàțáàÿ„ÿèšęźÿățäăÿ§ëÿéŻț­ÿçțèçÿ˧„ÿŻț­ÿęêéóęÿźțŻÿđțńïíțìÿ­ț °éčÆÇžÒòđđïÿ­ț±ËȚ»ĂÏČśśĆöÿźłŽáșçûŚŒûę©ęÿŻŽŒȚČęùùûÈ©­©Đ°Ž””œȚłÿüęțțÿšÿÿŻŽŽáœíÿÚÈÿÿÈÿÿźłŃàĂĆÒČüÿ°ț„ČŸÊÊ»±ŻțźŻŁțńńńńńę±ÄÇĂłțŽ”¶žŻț·äùÿéî°ț°ÿÿüțÿÿÆìÁțÈÿüüûüÿČșŒÿȘÌÿûùüțšÿ ŹÛÿśűùùűűÿđąÿ ­êúśûÿÿûûÿï„ÿ šđśùÿÿÿ„ÿ ȘÿűÿčÿÿŒ(ÿ Žÿÿ›9ÿț9Ą2趞ÌH*Ùàűÿ(Iˆ7·țÿ gT*ÿĂûÿ(Vo8ŹÜśûÿ#^^!îÿ^c6^ž¶·œÌ,l)ÇÆ(n7ú5,,6țńńńńŽù”Žû”ùÿăŻü”ÿüăÿ”ÿăŻę”ÿüćÿ”çÿăŻț”ÿüèÿŃ””ÿ”ț”ÿüêòęÿ”ț”ÿűíÿ”ț”ÿí±öŁĄ”ÿíŁöÁŁ”ÿíŁÿÿă”ÿ”ÿ”ÿÿ㣔ÿíŁÿ»ÿ»țÿ»ÿ»ÿŁ”ÿíŁÿÿèÁÿÁÿÁÿÿèŁ”ÿíŁÿțÇÿÇÿÇÿÇÇŁ”ÿÿŁöÍŁą”ŽŠöŁŽńńńńł°ęź­źŻȘûŻùÿé©üźÿàțáàÿ„ÿèšęźÿățäăÿ§ëÿé¶ț­ÿçțèçÿ˧„ÿœț­ÿéțêéóęÿÁ!­ÿìęíțìíÿ{+Z­ÿùïôÿB­ÿúòôÿ{5ț­ÿúôùÿA*­ÿûöűÿČ,­ÿúęùûÿÿ,+=țźÿęțüęÿÿ’•ț°úÿ eĂț™Żźț­°ÀaĆŁțńńńńŻ°ęź­źŻȘûŻùÿé©üźÿàțáàÿ„ÿéšęźÿățäăÿȘôÿìŻț­ÿçțèçÿŐ>ÿ°ț­ÿéțêéőÿR ÿ°ț­ÿìęíîú\>ÿ°ț­ÿüïńę0ÿłț­ÿüòöÿ1Đżț­ÿęôöęÍp)Ąț­ÿțö śüÿP[ ',.­ÿúùûÿÿŁ2p«”,.źÿęęÿÿ>„țÿŸț°ęÿpFęÿ”ț ĄŻźŻ¶tMž”Żź°„țńńńńńŻ°ęź­źŻȘûŻùÿé©üźÿàțáàÿ„ÿèšę źÿăäćäăÿšìÿéŻț ­ÿçèéëîÿÖ±ŻÿČț ­ÿéêïúŻČ”¶Č«”ț ­ÿìïû1 :țÿ ­ÿïòÿƒ··…ٝț ­ÿòőÿ oIIpٝț ­ÿôśÿ[\ٝț ­ÿöűÿf qțÿ ­ÿúúțÿ­ł¶”±ÙțźÿęüęțÿٝĘٝŒÂ°úÿùĄŻźț­ ź°șș·ą““ńńńńńŻ°ęź­źŻȘûŻùÿé©üźÿàțáàÿ„ÿèšęźÿăęäÿȘïÿëČț ­ÿçèèéìÿĘč·ÿŽț ­ÿéêêìś%»ț ­ÿìííđțÏÿÿŒț­ÿțï òÿĐÿÿËíœą­ÿțò őÿŠÌÏäőßż­ÿțô öÿÎțÿß­ÿțöśüüÿŸț­ÿúțù üÿ=$ŸFcjźÿęțüÿÿÿÿƒȘ`D°úÿÿÿMżgC:ĄŻźț­°ż țțńńńńńńŻ°ęź­źŻȘûŻùÿé©üźÿàțáàÿ„ÿèšęźÿățäăÿ§ëÿéŻț­ÿçțèçÿ̧ŠÿŻț­ÿéęêöęÿŻț­ÿìííîđÄšš§©Źź°Ż­ÿțïđô©úÿ±­ÿțò óűȘÄȘÛ”ô©ł±­ÿțô őú©ÿŹì­ë«ÿ°­ÿțö śüšÿ­Œ±șÏÿź­ÿúùùúÿ§ÿŹŒ°­òÿ­źÿęüüęÿ§ÿšé«Âÿÿ­°ûÿȘúÿŻĄŻź­­źŻ±ŻüźŻ«ńńńńŻ°ęź­źŻȘûŻùÿé©üźÿàțáàÿ„ÿèšęźÿățäăÿ§ëÿéŻț­ÿçțèçÿ˧„ÿ°ț­ÿéęêöęÿ”ț ­ÿìííîóüÿüôÿÁț­ÿțïńțțÿÿ­ÿțò ôÿ°Č¶Ÿ­ÿțô őüÿ2„; ­ÿęöùÿÿ?– ț­ÿúùùúÿÿ€I†źÿęüüÿÿmNR Pw°ûÿÿW^ĄŻź­­ŻŽŸÄĆĆÇ·ńńńńńŻ°ęź­źŻȘûŻùÿé©üźÿàțáàÿ„ÿèšęźÿăäțćÿȘïÿì·ț ­ÿçèéìòÿĘč·ÿÂț­ÿéêìőL&-/­ÿìíđęææèèééêî.­ÿïïòÿæț#*-)Œ-­ÿòòőÿæ%Ąÿ,61ż-­ÿôôśÿæ#ÿÿ .0ż-­ÿööùÿæ%ęÿ+ë+­ÿúùüÿæ,Łÿÿ„-é+źÿęüÿÿć/.**./è+°üÿ èèéèèéèì-ĄŻź­ŻșA)ü*+-.ńńńńńĘ„o„„‚„ÌùÊf(«ùÿÂ$ČùÌ`țČùÿ”jȘùĆC•đŚL­ù}“öŚÆ…ŽùQAìőőąóUÿśĐÿÿöńńńńńÿ;1ű'wSE4#ùb §ÿŻù.IÎÿÌùĄțűțśÿ|ù“ÿùÿ—ű šÿšúeùÿțűęöńńń;ą·»žą;ùÒÍÆÎҝùkŹ°o5o°­kú–ÆŽ@ „Οú,`XTe1ú5qk‚…‚ls4ú?c&#sGú1G X8ú'D&#Q/ú&: C,ú-,+/úțț śńńńńńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńńńńńńńś7žr-űM!@űźțÿűcű%!űś°óÿÚńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÁóÿÁ$ó3$   ő›˜śš˜›ź"&ù'&"źżILùMLIż óÿ ÿÖŐùÖŐÖÿÿßśȚßÿÿçśæçÿÿïśíïÿÿśśôśÿÿÿśûÿÿ óÿ óÿ  ś  ń    „‚őÿ‚‚ĐőÎЂ€Ű’ś”’Ű€~àŠ§ùš§Šà~|óÿ|{ÿÖÖùŚÿÖÿ{{ÿȚśßȚÿ{{ÿæśçæÿ{zÿőîÿzzÿőśôőÿzzÿęśûęÿz{óÿ{~óÿ~s~{śz{~sń  łžő·žșžîőìòőÔò¶”śőàś””óÿ”ŽÿŐÖùŚÖŐÿŽŽÿȚśàȚÿŽŽÿçśèçÿŽŽÿíśîíÿŽŽÿőőÿŽŽÿüśûüÿŽŽóÿŽ¶óÿ¶š¶őŽ¶šńïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#ž·čșč¶ČČrłźÿh° ŹÿÿmŹ  §?„§ 5‘•›Ą œÿÿÿÿÿŽšÿÿÿÿÿÿÿš•%ÿ%'%ÿ%•2ÿ2>A>2ÿ2‹>ÿ8@C@8ÿ>‹‡LÿÿÿÿÿÿÿL‡„`YWWWWWY`„…uttsssttu……‚€‚‚‚ßĘȚßȚĘÛÛ·‚ÛvzzzvŰuÿČ‚Ù€………€Śwöÿ”‚Ű†ŠŠ‰†ŐšvvՁÔŠŠˆ†ƒ›ÉËÎсŃ‹ȚÿÿÿÿÿهρÎŽÿÿÿÿÿÿÿÎË“ÿ“”“ÿ“ˁÊšÿš Ą šÿšÊÇ ÿœĄąĄœÿ ÇÄ§ÿÿÿÿÿÿÿ§Ä‚Ä°­ŹŹŹŹŹ­°Ä‚ƒĆŒŒŒ»»»ŒŒŒĆƒzƒ‚‚‚‚‚‚‚‚‚ƒz趔”””””¶·””·¶ÿÿÿÿÿÿÿÿç””·”ÿĂĆĆĆĂÿźÿä”·”ÿÉËÌËÉÿ°ëÿä·¶ÿÌÎÎÍËęÍŻźÿ¶¶ęÏÏÎÍÌÛűùúü”¶üÏòÿÿÿÿÿïÍû¶¶ùÒÿÿÿÿÿÿÿŃù¶¶śÔÿÓÔÔÔÓÿÔś¶¶öŰÿŰÚÛÚŰÿŰö¶¶óÜÿÚÜÜÜÚÿÜó¶¶òȚÿÿÿÿÿÿÿȚò¶¶đäâââââââäđ¶žòëëêêêêêëëòžȘž¶¶¶¶¶¶¶¶¶žȘïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#a_^^^^^]^_[[__©š©©©šŠ„‡[[_^Š[^_^[ŁQÿ€[_^€befebĄSțÿ„_^ĄdfgfdŸoQQž^^žeb`_`t““—œ^_šdÿÿÿÿ\ÿÿa˜^_—ha^[[][^g—__”jÿbÿÿÿÿÿi”__‘ngecc`_dn‘__qÿÿÿhÿÿÿq__ŒtjefjijmtŒ_`‰xÿÿÿÿÿqÿy‰``‰€{xxx{}~‰`Za`^^^^^__`aZxvuuuuuuuwsswvž··ž·¶”Ž™sswuŽtvvvsČjÿ“swvČx{|{x±lúÿ–wv°{}}|zź…kk­vv­|zxwx‰€Ł§«vvȘ{ÿÿÿÿuÿÿy©vv§~yvssusv}§vw€€ÿzÿÿÿÿÿ€wwąƒ}{zzwwzƒąwwŸ„ÿÿÿ~ÿÿÿ„Ÿwwœˆ{|~€ˆœwwšŒÿÿÿÿÿ†ÿŒšwxš“ŒŽ‘‘”šxoxwvvuvvwwwxo‹‰ˆˆˆˆˆ‡ˆ‰††‰‰ÄĂĂĂĂÂÁÀš††‰ˆÀ†ˆ‰ˆ†Ÿ~ÿ€†‰ˆż‹Ž‹Ÿ€śÿŠ‰ˆœŽ»–»ˆˆ»‹‹‹›Žł¶čˆˆčŽÿÿÿÿ‰ÿÿŒčˆ‰·“ŽŒ‰‰‹‰‹’·‰‰”•ÿÿÿÿÿÿ””‰‰ł—’—ł‰‰±šÿÿÿ”ÿÿÿš±‰‰°–’”••–˜°‰‰­Ÿÿÿÿÿÿ›ÿ ­‰Šźš€ąąą€ŠŠ©źŠ€Š‰ˆˆˆˆˆ‰‰‰Š€âùÿàțśÿ€öÿ€őÿŠôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿčöÿč"ö3"-*******))$$**~~|zœ$$**x&***&xÿ”$**t+///+u ÿÿ**n,.(,.FC# j*+h-&ÿ[)./0-h++b.%ÿÿ\+01.b++]0&ÿÿÿ\,10]+,W0&ÿÿÿÿe00W,,Q1'ÿÿÿ‰;21Q,,L3(ÿÿŠ:243L,-E3)ÿŠ:2443E--@41i=35554@--:664567776:-*-----------*wtttttttturrutËÊËËËÊÈÉłrrutÈruuurÇjÿźrutÆ{|ÇmûÿłutĆ‚~€›“pmÄtt„ÿĄƒ††‡„ÂttÀ‰…ÿÿŁ‰ŒŒ‰ÀttŸ‰ÿÿÿŠŸttŒ’ŽÿÿÿÿŻ“’Œttș—“ÿÿÿƜ™—șttžœ—ÿÿƟœœžtt”ĄÿÊŁĄąąĄ”ttŽ„€Œš„ŠŠŠ„ŽtuŽźźźźŻŻŻŻźŽuluuuuuuuuuuulÁżŸŸŸŸŸŸżÁÀÀÁżÿÿÿÿÿÿÿÿÊÀÀÁŸÿŒżżżŒÿčÿÊÀÁŸÿĂÆÆÆĂÿŒóÿËÁŸÿÆÈÇÈÈÜŚŸŒÿżżęÉÉÿŚÊËËÌÊężżúÍÌÿÿÙÎÏÏÍúżżűĐÏÿÿÿÛŃÒĐűżżőÓÒÿÿÿÿàŐÓőżżóŚÖÿÿÿèÚŰŚóżżńÚÙÿÿêĘÚÛÚńżżîĘÜÿìßȚȚȚĘîżÀìààéâááááàìÀÀëæææææææææëÀ±ÀÀÀÀÀÀÀÀÀÀÀ±ïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#,)((((''')#$))ˆ†‡ˆ‡†„‚[#$)(€#&'&#|ÿP$)({(+,+(xÿÿS))t&#"%%p;p()m!ÿԏ;2adhl))g%qźÿÿțȘm"f)*a'+|żÿ`*+Z!ÿÿÿÿÿÿÿ-Y*+RÿËÖÉÿR++M ÿ%(%ÿ M+,F#ÿ!#!ÿ#F,,@(ÿÿÿÿÿÿÿ(@,-=3+'''''+3=-*-,+*****+,-*gdcccccccdaaee”Ž”””łČ±aaed±beeebźWÿŠaed±ilmliźXęÿŽedźjiijjȘxXW«dd«kÿâŽ||ą„§ȘcdȘqŁËÿÿțƟn©dd§vojfyźŚÿpŠdd„uÿÿÿÿÿÿÿ}€ddŁxÿßræqȚÿwŁdd }ÿx€€xÿ} ddŸ‚ÿ|‚|ÿ‚ŸddˆÿÿÿÿÿÿÿˆdfŸ–‘‘–Ÿf_fdcccccccdf_¶”ŽŽŽŽŽłŽ”łł””đïïïïîîł”ŽîČŽ”ŽČì­ÿÔł”ŽížșșșžëŻíÿÖ”Žëșș»»șéĆŻ­êŽŽéŒÿòĘĆÉćæç莎éÀÖéÿÿțćԟ莎çÄÂÀŸÆÜîÿÁ玎æÆÿÿÿÿÿÿÿÈ掎äÈÿóÆőÆòÿÈ䎎ăÌÿËÎÎÎËÿÌ㎎áÏÿÌÎÏÎÌÿÏᎎàÔÿÿÿÿÿÿÿÔàŽ”ăÜÚÙÙÙÙÙÚÜ㔚””ŽŽŽŽŽŽŽ””šâùÿàțśÿ€öÿ€őÿŠôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿčöÿč"ö3"ÙŚŚŚŚŚŚŚŚÙÙÙÙŚÿÿÿÿÿÿÿÿĐÙÙÙŚÿŚÙÙŰŚÿÔÿĐÙÙŚÿÜȚȚßȚÿŐïÿĐÙŚÿßáàòîìèÖŐÿŚŚÿâäăòòăääăÿŚŚÿćçæđíçççćÿŚŚÿéêéśűéêêéÿŚŚÿìíìúöòìíìÿŚŚÿđńööòÿùűśÿŚŚÿóóęùśóôûùÿŚŚÿűÿùśśśśśöÿŚŚÿțüúúúúúúúÿŚŚÿÿÿÿÿÿÿÿÿÿÿŚĆŚŚŚŚŚŚŚŚŚŚŚĆ §„§§§„ąŁ”   œÿŒ ˜)#˜ÿÿ•$ŠF@ ‰$)#œ"()%‰*.)€^)..*y04-źż,340yr68/Ξf031qj;9Š†Wÿł€Šeb>Cá›uHUȘ«^VŒÿsBFHGDDZMÿ‘HMNNNNNTMRTWXXXXXXOŠ€ŠŠŠ€ąŁ—žœÿ˜$"/*˜ ÿÿ˜‘%*%ĄJD Š+0*Ÿ )/1,Šƒ150ƒd0551ƒ|7;4±Á3:;7|u>@7Đąl8;:tlEC‹_ÿ¶šȘheFLâŸ{O]źŻaZ’ÿzKOQPMM]Qÿ–RWXXXXXWQ]^bbbbbbcSïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#,)((((((()$$*)|{{{{zxvR$$*)t%(((%qÿG$*)n(***(kÿÿL**g"#f:c)*`ÿÿÿ@4ÿ–4@A>†''‚CD7•ÿ6DFC‚'({HE5ÿÿ3EJH{((uLDÆÿÿÆDMMu((pOFÿÿÿÿGPPp()jVRJFFJRVVj)*h_^]\\]^__h*(+)))))))))+(a][[[ZZZ[]YY^]ËÊÊÈĂÀĂƛYY^[ÆX[UȘÿčKÿ•Y^\Ăad\ÿŠ”Męÿ—^\Àhkc­ÿłxONœ\\Œmogÿźžč·č\\žqskłÿhppn·\]Žvxoÿ”owxuŽ]]±{{s”ÿr|}{±]]­€tÿÿs‚­]]©„Űÿÿۀ……©]]„‰ƒÿÿÿÿƒ‰Š„]^ŁŒ‡„„‡Ł^_ąš™™˜˜™™ššą_Y_^^^^^^^^^_Yš—––––•––˜•–˜˜èçèæăáăćƕ–˜—ä•—“Èÿ܌ÿ–˜—䝟šÿÇێòÿʗᡣžÌÿÙ­ß——à„§ąÿÍŽĘĘÜʖ—ȚȘ«§Òÿ€š©§Ę——ÛźŻ«ÿÔ«Ż°źÛ——ÚČČźÔÿ­łŽČڗ—۶”ŻÿÿŻ¶·¶Ű——Őșžèÿÿèž»»Ő——ÓżŒÿÿÿÿŒżÀӗ—ŃĂÂżœœżÂĂĂї™ÓÌÌËËËËÌÌÌә™—————————™ïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#ßȚĘĘĘĘĘĘȚȚĘĘȚȚÿÿÿÿÿÿÿÿôĘĘȚĘÿĘȚȚȚĘÿÚÿôĘȚĘÿàâââàÿÛăÿôȚĘÿäææćäÿéÛÚÿĘĘÿæçæíìőÿÿțÿĘĘÿèîÿÿÿÿÿÿöÿĘĘÿëűțúúûüÿțÿĘĘÿíęôôôóúùÿÿĘĘÿïÿëìììûśïÿĘĘÿÿÿÿÿÿăęöóÿĘĘÿÿôòòóâÿśöÿĘĘÿęÿÿÿÿÿÿűűÿĘȚÿțțțțțțțțțÿȚÍȚĘĘĘĘĘĘĘĘĘȚͧ„€€€€€€€„ŁŁ„„ÚÙÙÙÙÙŚŚÂŁŁ„„ŰŁ€„€ŁÖÿżŁ„„Ś©««ȘšŐžđÿÀ„„Ő«­Ź«©Ń°œœÓ„„Őźź«ÂÀÍÛÜÎÒ€„ÓźÄÿÿÿÿÿÿäÏ€„Ń°äĘÀÀÀÏÿùÌŁ„Đłö»ŒčâÌÿÌ€€ÎČÿŹŻ±°đڳ΀€Òÿÿÿÿÿ€ù̻΄€Èÿ·±ł”ŠÿżŸÍ„€ÉïÿÿÿÿÿùÀĂÌ„„ÍĆĂĂĂĂĂĆÇÈ΄™„„€€€€€€„„Š™&#!!!! !###š˜™™™—•”d#!•!"!‘ÿ[#!“(-.-'ÿÿ`#!/33/)‡: ‹!!32*gbŸĄz… !‰5mÿÿÿÿÿÿ»} !„8»ąVXTÿđv!:é`NQKČxÿv !y9ÿ+5:7Ù ?z!‡ÿÿÿÿÿò|M{" kÿD7:> ÿZVx"!mÔÿÿÿÿÿïV^v"$td`___`cilx$$$! !"#$$ïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#ßȚĘĘĘĘĘĘȚȚĘĘȚȚÿÿÿÿÿÿÿÿôĘĘȚĘÿĘȚȚȚĘÿÚÿôĘȚĘÿàâââàÿÛăÿôȚĘÿäææćäÿéÛÚÿĘĘÿæçæíìőÿÿțÿĘĘÿèîÿÿÿÿÿÿöÿĘĘÿëűțúúûüÿțÿĘĘÿíęôôôóúùÿÿĘĘÿïÿëìììûśïÿĘĘÿÿÿÿÿÿăęöóÿĘĘÿÿôòòóâÿśöÿĘĘÿęÿÿÿÿÿÿűűÿĘȚÿțțțțțțțțțÿȚÍȚĘĘĘĘĘĘĘĘĘȚͧ„€€€€€€€„ŁŁ„„ÚÙÙÙÙÙŚŚÂŁŁ„„ŰŁ€„€ŁÖÿżŁ„„Ś©««ȘšŐžđÿÀ„„Ő«­Ź«©Ń°œœÓ„„Őźź«ÂÀÍÛÜÎÒ€„ÓźÄÿÿÿÿÿÿäÏ€„Ń°äĘÀÀÀÏÿùÌŁ„Đłö»ŒčâÌÿÌ€€ÎČÿŹŻ±°đڳ΀€Òÿÿÿÿÿ€ù̻΄€Èÿ·±ł”ŠÿżŸÍ„€ÉïÿÿÿÿÿùÀĂÌ„„ÍĆĂĂĂĂĂĆÇÈ΄™„„€€€€€€„„Š™&#!!!! !###š˜™™™—•”d#!•!"!‘ÿ[#!“(-.-'ÿÿ`#!/33/)‡: ‹!!32*gbŸĄz… !‰5mÿÿÿÿÿÿ»} !„8»ąVXTÿđv!:é`NQKČxÿv !y9ÿ+5:7Ù ?z!‡ÿÿÿÿÿò|M{" kÿD7:> ÿZVx"!mÔÿÿÿÿÿïV^v"$td`___`cilx$$$! !"#$$ïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#ßȚĘĘĘĘĘĘȚȚĘĘȚȚÿÿÿÿÿÿÿÿôĘĘȚĘÿĘȚȚȚĘÿÚÿôĘȚĘÿàâââàÿÛăÿôȚĘÿäææćäÿéÛÚÿĘĘÿæçæíìőÿÿțÿĘĘÿèîÿÿÿÿÿÿöÿĘĘÿëűțúúûüÿțÿĘĘÿíęôôôóúùÿÿĘĘÿïÿëìììûśïÿĘĘÿÿÿÿÿÿăęöóÿĘĘÿÿôòòóâÿśöÿĘĘÿęÿÿÿÿÿÿűűÿĘȚÿțțțțțțțțțÿȚÍȚĘĘĘĘĘĘĘĘĘȚͧ„€€€€€€€„ŁŁ„„ÚÙÙÙÙÙŚŚÂŁŁ„„ŰŁ€„€ŁÖÿżŁ„„Ś©««ȘšŐžđÿÀ„„Ő«­Ź«©Ń°œœÓ„„Őźź«ÂÀÍÛÜÎÒ€„ÓźÄÿÿÿÿÿÿäÏ€„Ń°äĘÀÀÀÏÿùÌŁ„Đłö»ŒčâÌÿÌ€€ÎČÿŹŻ±°đڳ΀€Òÿÿÿÿÿ€ù̻΄€Èÿ·±ł”ŠÿżŸÍ„€ÉïÿÿÿÿÿùÀĂÌ„„ÍĆĂĂĂĂĂĆÇÈ΄™„„€€€€€€„„Š™&#!!!! !###š˜™™™—•”d#!•!"!‘ÿ[#!“(-.-'ÿÿ`#!/33/)‡: ‹!!32*gbŸĄz… !‰5mÿÿÿÿÿÿ»} !„8»ąVXTÿđv!:é`NQKČxÿv !y9ÿ+5:7Ù ?z!‡ÿÿÿÿÿò|M{" kÿD7:> ÿZVx"!mÔÿÿÿÿÿïV^v"$td`___`cilx$$$! !"#$$ïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#ßȚĘĘĘĘĘĘȚȚĘĘȚȚÿÿÿÿÿÿÿÿôĘĘȚĘÿĘȚȚȚĘÿÚÿôĘȚĘÿàâââàÿÛăÿôȚĘÿäææćäÿéÛÚÿĘĘÿæçæíìőÿÿțÿĘĘÿèîÿÿÿÿÿÿöÿĘĘÿëűțúúûüÿțÿĘĘÿíęôôôóúùÿÿĘĘÿïÿëìììûśïÿĘĘÿÿÿÿÿÿăęöóÿĘĘÿÿôòòóâÿśöÿĘĘÿęÿÿÿÿÿÿűűÿĘȚÿțțțțțțțțțÿȚÍȚĘĘĘĘĘĘĘĘĘȚͧ„€€€€€€€„ŁŁ„„ÚÙÙÙÙÙŚŚÂŁŁ„„ŰŁ€„€ŁÖÿżŁ„„Ś©««ȘšŐžđÿÀ„„Ő«­Ź«©Ń°œœÓ„„Őźź«ÂÀÍÛÜÎÒ€„ÓźÄÿÿÿÿÿÿäÏ€„Ń°äĘÀÀÀÏÿùÌŁ„Đłö»ŒčâÌÿÌ€€ÎČÿŹŻ±°đڳ΀€Òÿÿÿÿÿ€ù̻΄€Èÿ·±ł”ŠÿżŸÍ„€ÉïÿÿÿÿÿùÀĂÌ„„ÍĆĂĂĂĂĂĆÇÈ΄™„„€€€€€€„„Š™&#!!!! !###š˜™™™—•”d#!•!"!‘ÿ[#!“(-.-'ÿÿ`#!/33/)‡: ‹!!32*gbŸĄz… !‰5mÿÿÿÿÿÿ»} !„8»ąVXTÿđv!:é`NQKČxÿv !y9ÿ+5:7Ù ?z!‡ÿÿÿÿÿò|M{" kÿD7:> ÿZVx"!mÔÿÿÿÿÿïV^v"$td`___`cilx$$$! !"#$$ïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#ßȚĘĘĘĘĘĘȚȚĘĘȚȚÿÿÿÿÿÿÿÿôĘĘȚĘÿĘȚȚȚĘÿÚÿôĘȚĘÿàâââàÿÛăÿôȚĘÿäææćäÿéÛÚÿĘĘÿæçæíìőÿÿțÿĘĘÿèîÿÿÿÿÿÿöÿĘĘÿëűțúúûüÿțÿĘĘÿíęôôôóúùÿÿĘĘÿïÿëìììûśïÿĘĘÿÿÿÿÿÿăęöóÿĘĘÿÿôòòóâÿśöÿĘĘÿęÿÿÿÿÿÿűűÿĘȚÿțțțțțțțțțÿȚÍȚĘĘĘĘĘĘĘĘĘȚͧ„€€€€€€€„ŁŁ„„ÚÙÙÙÙÙŚŚÂŁŁ„„ŰŁ€„€ŁÖÿżŁ„„Ś©««ȘšŐžđÿÀ„„Ő«­Ź«©Ń°œœÓ„„Őźź«ÂÀÍÛÜÎÒ€„ÓźÄÿÿÿÿÿÿäÏ€„Ń°äĘÀÀÀÏÿùÌŁ„Đłö»ŒčâÌÿÌ€€ÎČÿŹŻ±°đڳ΀€Òÿÿÿÿÿ€ù̻΄€Èÿ·±ł”ŠÿżŸÍ„€ÉïÿÿÿÿÿùÀĂÌ„„ÍĆĂĂĂĂĂĆÇÈ΄™„„€€€€€€„„Š™&#!!!! !###š˜™™™—•”d#!•!"!‘ÿ[#!“(-.-'ÿÿ`#!/33/)‡: ‹!!32*gbŸĄz… !‰5mÿÿÿÿÿÿ»} !„8»ąVXTÿđv!:é`NQKČxÿv !y9ÿ+5:7Ù ?z!‡ÿÿÿÿÿò|M{" kÿD7:> ÿZVx"!mÔÿÿÿÿÿïV^v"$td`___`cilx$$$! !"#$$ïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#ßȚĘĘĘĘĘĘȚȚĘĘȚȚÿÿÿÿÿÿÿÿôĘĘȚĘÿĘȚȚȚĘÿÚÿôĘȚĘÿàâââàÿÛăÿôȚĘÿäææćäÿéÛÚÿĘĘÿæçæíìőÿÿțÿĘĘÿèîÿÿÿÿÿÿöÿĘĘÿëűțúúûüÿțÿĘĘÿíęôôôóúùÿÿĘĘÿïÿëìììûśïÿĘĘÿÿÿÿÿÿăęöóÿĘĘÿÿôòòóâÿśöÿĘĘÿęÿÿÿÿÿÿűűÿĘȚÿțțțțțțțțțÿȚÍȚĘĘĘĘĘĘĘĘĘȚͧ„€€€€€€€„ŁŁ„„ÚÙÙÙÙÙŚŚÂŁŁ„„ŰŁ€„€ŁÖÿżŁ„„Ś©««ȘšŐžđÿÀ„„Ő«­Ź«©Ń°œœÓ„„Őźź«ÂÀÍÛÜÎÒ€„ÓźÄÿÿÿÿÿÿäÏ€„Ń°äĘÀÀÀÏÿùÌŁ„Đłö»ŒčâÌÿÌ€€ÎČÿŹŻ±°đڳ΀€Òÿÿÿÿÿ€ù̻΄€Èÿ·±ł”ŠÿżŸÍ„€ÉïÿÿÿÿÿùÀĂÌ„„ÍĆĂĂĂĂĂĆÇÈ΄™„„€€€€€€„„Š™&#!!!! !###š˜™™™—•”d#!•!"!‘ÿ[#!“(-.-'ÿÿ`#!/33/)‡: ‹!!32*gbŸĄz… !‰5mÿÿÿÿÿÿ»} !„8»ąVXTÿđv!:é`NQKČxÿv !y9ÿ+5:7Ù ?z!‡ÿÿÿÿÿò|M{" kÿD7:> ÿZVx"!mÔÿÿÿÿÿïV^v"$td`___`cilx$$$! !"#$$ïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#+(&&&&&%&("#)(š˜™š™˜•”f"#)'!%&%!‹ÿX#)(‡&+,+&„ÿÿ[)('++)${?z()w'(#5kprs()n'"ÿÿÿy#m)*d' ÿÎ,’ÿ%d*+\'&/‚ÿ&\++T)*'őÿk"'T+,K*,)ÿ5 ))K,,A*,* o(+*A,-9*+) ÿ )+*9-.0*+*&"&*+*0.*.....-.....*vsrrrrqqrsppssŃÏĐĐĐÎÌͧppsrËorsroÈeÿąpsrÈw{|{wÆgúÿ€srÆ{~zÊgfĂrrÂ~€}yu»œŸżrsŸ€”ÿÿÿ°{~œrsș…ÿăˆÂÿ~„čss·‰ˆ|șÿ‚ˆ·ssłŽˆúÿ±ŠłssŻ‘“‘‹ÿ—‘‘Żss«•–•¶Ž”–•«st©™™™”ÿ”™™™©tuš   žœž   šumuttttsttttumÀŸœœœœŒŒœżœœżŸÿÿÿÿÿÿÿÿ윜żœÿșœŸœșÿ¶ÿèœżœÿÀĂÄĂÀÿžêÿèżœÿĂÆÇÆÂțÒž·țœœûĆÇÆÄÂÖűùűùœŸśÈÈßÿÿÿÛĆĆśŸŸôÊÊÿóÍćÿÈÉôŸŸńËÌÏÉÇáÿÉËńŸżíÎÏÏÍęÿȚÍÎíżżéĐÒŃÏÿŐÏŃĐéżżæÓÔÔŃáŃÓÔÓæżżâÖÖÖÔÿÔÖÖÖâżÀàÚÛÚÚÙÚÚÛÚàÀ±ÀÀÀÀÀżÀÀÀÀÀ±âùÿàțśÿ€öÿ€őÿŠôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿčöÿč"ö3"edcccccccc__cd••••••”’ź__cc“Z\\\Z’Zÿ§_cd‘^aaa_’]üÿźcdŽ_[ZZXhjWZŒcdŒ]ÿÿÿÿÿÿÿ]ŒddŠc^VTV\^_cŠdd‡gcÿÿÿciig‡dd„ihaYZahji„dd‚klgÿÿÿglk‚dekgc^^elnmee}jÿÿÿÿkppo}ee{pkiikprrr{eeyuuuuuuuuuye]eeeeeeeeeee]wuuuuuuuuurruu±°±±±°ŻŻŽrruuŻuwwwuŻlÿźruuŻz}}}{ŻnûÿŽuu­|zxxwˆ‚klŹuuŹ|ÿÿÿÿÿÿÿ}Źuu«‚~ywy}~€‚«uu©‡…ÿÿÿ…‰‰‡©uušŠŠ……‹ŒŠšuu§ŒÿÿÿŒ§uuŠ‘Ž‹‡‡Œ’“’Šuu€’ÿÿÿÿ’––•€uuŁ—”““”˜™™™ŁuvŁžžžžžžžžžŁvmvvvvvvvvvvvmÂÀÀÀÀÀÀÀÀÁÀÀÁÀççççççæçËÀÀÁÀæżÁÁÁżćŒÿÊÀÁÀćĂĆĆĆĂćŸóÿÌÁÀäĆÄÄÄĂÍÊŒœäÀÀăĆÿÿÿÿÿÿÿÆăÀÀâÉÈĆĆĆÇÈÈÉâÀÀáÌËÿÿÿËÍÍÌáÀÀàÍÍËÉÉËÍÎÍàÀÀàÏĐÎÿÿÿÎĐÏàÀÀȚŃĐÏÍÍÏŃÒŃȚÀÀĘÒÿÿÿÿÒÔÔÔĘÀÀÜŐÔÓÓÔŐÖÖÖÜÀÁĘÙÚÚÚÚÚÚÚÙĘÁ±ÁÁÁÁÁÁÁÁÁÁÁ±ïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#,)((((''')##))‡…†††…‚Y##)($'('$}ÿQ#)(~,010,{ÿÿV)({0443/x>v((w331/*Cmpqt()s4-©ÿ„)0q()n4ȘÿÿÿÿÿȘ3n))j6#ÿ!ÿ#6j))e7ÿÿ%1%ÿÿ7e))b=*ÿ ) ÿ*=b)*^B°ÿÿÿÿÿ°B^**\JA±2ÿ2±AJ\*+[SQMKIKMQS[+)++**)))**++)_\[[[[[Z[\XX\\¶””””ŽČȎXX\[±X[\[W­Mÿ†X\[Ż_cdc_­Oÿÿ‰\[«cggfb©rONš[\§fhfd`x ąą€[\ŁhcÀXÿUŒ_eą\\ iÀÿÿÿÿÿżh \\œk^ÿž]žÿ^kœ\\˜mÿÿaiaÿÿm˜\\•reÿ»d»ÿer•\]’wÆÿÿÿÿÿÆw’]]Ž~xÈmÿmÈx~Ž]^†…‚‚…†^X^^]]]\]]]^^XŠˆ‡‡‡‡††‡ˆ……ˆˆŐÔÔŐÔÓŃŃł……ˆ‡Ń„‡ˆ‡„Î|ÿź…ˆ‡ÎŠŽŠÌ~öÿŻˆ‡ÊŽ‘’‘Éš~}ȇ‡È‘ŒŸĂÄÄƇˆÄ‘ŽÒ†ÿ„΋ŽĂ‡ˆÁ“ÒÿÿÿÿÿђÁˆˆŒ”‹ÿˊËÿ‹”Œˆˆș•ÿÿ“ÿÿ•șˆˆ¶š‘ÿϑÏÿ‘š¶ˆ‰łžŚÿÿÿÿÿŚžł‰‰±ąžŰ–ÿ–Űžą±‰ŠźȘ©§Š„Š§©ȘźŠ€Š‰‰‰‰‰‰‰‰‰Š€âùÿàțśÿ€öÿ€őÿŠôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿčöÿč"ö3"edcccccccc__cd••••••”’ź__cc“Z\\\Z’Zÿ§_cd‘^aaa_’]üÿźcdŽ_[ZZXhjWZŒcdŒ]ÿÿÿÿÿÿÿ]ŒddŠc^VTV\^_cŠdd‡gcÿÿÿciig‡dd„ihaYZahji„dd‚klgÿÿÿglk‚dekgc^^elnmee}jÿÿÿÿkppo}ee{pkiikprrr{eeyuuuuuuuuuye]eeeeeeeeeee]wuuuuuuuuurruu±°±±±°ŻŻŽrruuŻuwwwuŻlÿźruuŻz}}}{ŻnûÿŽuu­|zxxwˆ‚klŹuuŹ|ÿÿÿÿÿÿÿ}Źuu«‚~ywy}~€‚«uu©‡…ÿÿÿ…‰‰‡©uušŠŠ……‹ŒŠšuu§ŒÿÿÿŒ§uuŠ‘Ž‹‡‡Œ’“’Šuu€’ÿÿÿÿ’––•€uuŁ—”““”˜™™™ŁuvŁžžžžžžžžžŁvmvvvvvvvvvvvmÂÀÀÀÀÀÀÀÀÁÀÀÁÀççççççæçËÀÀÁÀæżÁÁÁżćŒÿÊÀÁÀćĂĆĆĆĂćŸóÿÌÁÀäĆÄÄÄĂÍÊŒœäÀÀăĆÿÿÿÿÿÿÿÆăÀÀâÉÈĆĆĆÇÈÈÉâÀÀáÌËÿÿÿËÍÍÌáÀÀàÍÍËÉÉËÍÎÍàÀÀàÏĐÎÿÿÿÎĐÏàÀÀȚŃĐÏÍÍÏŃÒŃȚÀÀĘÒÿÿÿÿÒÔÔÔĘÀÀÜŐÔÓÓÔŐÖÖÖÜÀÁĘÙÚÚÚÚÚÚÚÙĘÁ±ÁÁÁÁÁÁÁÁÁÁÁ±ïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#+(&&&&&%&("#)(š˜™š™˜•”f"#)'!%&%!‹ÿX#)(‡&+,+&„ÿÿ[)('+,*&|@z()w'(%!=prrs()n$s°Ì~M"l)*c­űŽ±Ž`!c*+YÿÿiXyÿłZ++Qÿÿ;H›ÿáQ+,I„ÿV\ÏÿÿI,,@źÿÿÇmks!@,-9%Șÿÿ…\!'9-.0)%<%()0.*...,++,-...*vsrrrrqqrsppssŃÏĐĐĐÎÌͧppsrËorsroÈeÿąpsrÈw{|{wÆgúÿ€srÆ{~zÊgfĂrrÂ~€~{xŒŸŸżrsŸ€}”Ęé{~ŒrsčĐęÜÛÈÏ©čss¶ÿÿčŻœÿق¶ss±„ÿÿą§Îÿï…Čssź‰Śÿ°Čçÿÿ‰źssȘÖÿÿ䞎žȘst©—‘ŰÿÿÄ°•˜©tuš žš—©šŸ šumuttssrstttumÀŸœœœœŒŒœżœœżŸÿÿÿÿÿÿÿÿ윜żœÿșœŸœșÿ¶ÿèœżœÿÀĂÄĂÀÿžêÿèżœÿĂÆÇÆĂțÒž·țœœûĆÇÇĆĂÖűùűùœŸśÇÆáśûöáĂÄöŸŸóÈëÿöśőęæÇóŸŸđÇÿÿêëòÿÿÇđŸżíÊÿÿăéőÿÿÊíżżéÍđÿçëúÿÿÍéżżćŃîÿÿùńűëŃćżżâŐÓïÿÿöëÓŐâżÀàÚÚŰÖĘŚÙÚÚàÀ±ÀÀÀżżżżżÀÀÀ±âùÿàțśÿ€öÿ€őÿŠôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿčöÿč"ö3"5433333332,,24ffgggfea ,,24a)+++)a'ÿ—,24^+...,^*ÿÿ 24Y*---,BCBcZBłÿÜ?HIIH[SSÿĘOLNNNNTOVPQVXXXXXOŠ€ŠŠŠ€ąŁ—žœÿ˜$$$š ÿÿ˜‘%***'L;Š+00/*LÖÿ#Šƒ1551pÿä+ƒ|7;:/ÿȚ"47|u>A=†ÿÿÿ9>ulEF<ÙćjsCEleIC˜ÿFJKKe^L·ÿĘIQRRQ^W]ÿßXVXXXXWRaZ[abbbbcSïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#ŒŒŒ‹‹‹Œ‹‹ŽÒŃÒĐÍËÍÏł‹‹ŽŒĐŠŒ‡Ăÿǁÿ°‹ŽŒÎ‘“ŽÿÁăôÿȎŒÍ•—‘Æÿ߄ƒËŒŒË™š”ÿÆŁÈÉÈɌŒÉž™Ëÿ—œ›ÉŒŒÈĄĄœÿ˛Ąą ÈŒŒÇ€€ŸÌÿž€Š€ÇŒÄ§ŠžÿÿžŠš§ÄÂ«šćÿÿ䚏ŹÂÁŻ«ÿÿÿÿ«Ż°Áżł±źŹŹź±łŽżŽÁșșččččșș»ÁŽ„ŽŽ„CA@@?>>??@<7ÿ|/ÿ`CBBBBBBBBBC>{yxxwwvwxyuvyyĆĂÄŸŒŸÀąuvyxÁuwrșÿ¶kÿœvyxż|~wÿ”ŽmùÿŸyxŒ€‚{»ÿ±‹omșxx脅~ÿŒŽ¶·¶žxxž‡ˆŸÿ…†„·xx”Š‹„ÿÀ„‹ŒŠ”xxłŽŽ‡Àÿ†ŽŽłxy°‘…ÿÿ…’‘°yy­”Țÿÿʐ••­yyŹ—’ÿÿÿÿ“˜˜Źyy©œš•““•šœœ©yz©ŁąąĄĄąąŁŁ©zrzzzzzzzzzzzrïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#gedddcbcce`aeeąąŁ ›˜›œƒ`aed AC<Ÿÿ’Wÿ|aeeŸKNDÿ™‘XęÿeežQTJĄÿrZY˜de›WYOÿąc˜˜——de™]^U§ÿR[[Y˜de—bdZÿ©Zcdb—ee•hh^Șÿ]ikh•ee“mk^ÿÿ]kon“ee‘qkÒÿÿÒlrr‘eevpÿÿÿÿpwxee}{uqqu{~~ef††…………†††f_feeeeeeeeef_feddccbccd``ee„Š§€Ÿœž †``edŁ@C<Ÿÿ–Vÿ`edŁJNDÿ™”Wÿÿƒed QTJĄÿ’sYX›ddŸWYOÿąf›œš›dd\^UšÿR[[Y›ddšbcZÿ©Zcda™dd˜ij`Șÿ^jki˜dd–nl`ÿÿ^lpn–de“smÒÿÿÒntt“ee’yrÿÿÿÿryz’ee€}wssw}€€eeˆˆ‡‡‡‡ˆˆˆe_feeeeeeeeef_fdddcbbbcd``dešš©ŠĄžĄą‡``dd„BE>Ÿÿ˜Vÿ€`dd„LPFÿ›–Wÿÿ„dd€SVLąÿ–tYXžcdĄZ\RÿŁhžžœcdŸ_aX©ÿU^^\ddeg]ÿ«]fgdddškkb­ÿ`lmkšdd™pnbÿÿ`nrp™dd—uoÓÿÿÓpvv—dd•|uÿÿÿÿv|}•dd’ƒ€zwwz€ƒƒ’de“Œ‹ŠŠŠŠ‹ŒŒ“e_eeeeeeeeeee_ïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#œ»șșșčččșŒșșŒ»ÿÿÿÿÿÿÿÿçșșŒșÿ·ș·ÚÿüČÿćșŒșÿŸÀŸÿÚúŽéÿćŒșęÂĆÂßÿűÏ”ŽüșșúĆÆĂÿßÔùùűùșșűÈÊÇâÿĆÇÇĆśș»őËÍÊÿăÊÍÍËő»»òÏĐÍćÿÍĐŃÏò»»đŃŃÎÿÿÍŃÒŃđ»»íÔÓńÿÿńÓŐŐí»»êŰÖÿÿÿÿÖÙŰê»»èÜÜÚÙÙÚÜÜÜ軌éáááááááááéŒźŒŒŒŒŒŒŒŒŒŒŒź’ŽŽŽŽŽăââáĘÛĘàżŽßŽ‹Äÿփÿ»ŽĘ“–ÿÂԅôÿŒÛ—š”ÇÿŃ€†…ۏŰ›—ÿÈ©ŐŐÔ֎ŐŸ ›Ìÿ™œÔŃąŁžÿ͝ŁŁąŃÎŠŠĄÍÿ Š§ŠÎÌȘ©ąÿÿĄ©ŹȘ̏É­ȘćÿÿćȘźźÉÆ°­ÿÿÿÿ­±±ÆÄ”ł°źź°ł””Đ‘ÄŒŒ»»»»ŒŒŒÄ‘‡‘‘‡C@?>>===>@;;@@Ÿž›•’–™s;;@?˜;=6œÿ‰-ÿi;@?”BD9ÿ”„/ÿÿm@?DF;šÿ€S20‹?@‰FH=ÿ™Q…†…†?@„IJ@ÿ=GHFƒ@@KK@ÿœ@KLJ@AzMMAšÿ@MPMzAAtOL<ÿÿ;MQPtABoPHÇÿÿÆHQQoBBjRJÿÿÿÿJSTjBBdVSKGGKSWWdBC`ZZXXXXZZZ`C>CCCCCCCCCCC>ïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#+(&&&&&%&("#)(š˜™š™˜•”f"#)'!%&%!‹ÿX#)(‡&+,+&„ÿÿ[)(',-,'|>z()w(++("9ghnr()n(*$X§Çäk)*d(#Gÿÿÿÿ‚b*+\$ÿÿnnÿúZ++S!DÿÿÿÿÿÿQ+,IÍÿÜ 4kœI,,?đ1ÿÿÿőq#A,-7ÿò­#'9-.0%$'()*0.*.-,,,......*vsrrrrqqrsppssŃÏĐĐĐÎÌͧppsrËorsroÈeÿąpsrÈw{|{wÆgúÿ€srÆ{€{ÊgfĂrr‚‚€{žčŒżrsŸ‚„{žÌȚîyŒrsș…ƒ˜ÿÿÿÿž}žss·‡ÿÿ±±ÿü¶ssłŠœÿÿÿÿÿÿ…Čssź‹ćÿłÊ‹źssȘű™ÿÿÿûč‘«stš“ÿùٍ“–˜©tu§žš™šžŸŸ šumutssstttttumÀŸœœœœŒŒœżœœżŸÿÿÿÿÿÿÿÿ윜żœÿșœŸœșÿ¶ÿèœżœÿÀĂÄĂÀÿžêÿèżœÿĂÆÇÆĂțÒž·țœœûÆÈÉÇĆÖśśűùœŸśÈÊÉÆŐèđöĂöŸŸôÊÊÓÿÿÿÿáÇóŸŸńËÉÿÿȚȚÿțÈđŸżíÌŐÿÿÿÿÿÿÊíżżéÎôÿűÌÓàéÎéżżćĐüŐÿÿÿęâÒæżżâÓÿüïŃÓÓÔÖâżÀàÙŰŰŰÙÚÚÚÚàÀ±ÀżżżżÀÀÀÀÀÀ±ïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿòöÿò0ö30`ZXWWXXXY\XX\[çßÜȚăääæŻXX\XÜĐÿÿx|ßHÿȘX\WŚÿÿÿ‚†ȚKúÿŹ\XŐÿÿʌŽÙ€KIĘZXŚ“—•©ÏŃÓŰYY֜žŸ˜éćç“ÔYYÔ„§§ŁŐńîđÓÏXYĐŹ­Ź§țśőöęÉXXËČČČźćÿÿÿćÇWN”””Ž±ČŠ±±ÀNăÿâăăăăæ|ćâÿăÙÿìíííîïńïìÿÙŰÿüęęęęęęęüÿŰŚŰŰŰŰŰŰŰŰŰŰŰŚ–“‘‘”‘‘”“ÿęęęęüęÿՑ‘”‘üÉËËÊÉű…ÿӑ”‘ûÁĂĂĐÎű‡đÿԔ‘ú·žÄŐÓöłˆ†û’‘ùŰÙÙŰÙćûûűù‘‘śÚÚÚÜà…ˆ…àű‘‘őĘĘĘᔝŸœ”ù‘‘óààáäąšȘšąű‘‘óćććèñ”±Ăö‘“śïïïđóúWùóű“…»†‡‡ˆ‰GŒ‡»…‡żŸŸŸŸĄą žż‡‰ÁŽŽŽŽ””””ŽÁ‰‰‰ˆ‰‰‰‰‰‰‰ˆ‰‰ÂÀÀÀÀżŸŸżÁżżÁÀÿÿÿÿÿÿÿÿîżżÁÀÿ-%ÿÿÿ·ÿíżÁÁÿ'3'ÿÿÿčéÿîÁÀÿ#zÿÿÿŰ»žÿżżÿÿÿÿÿÿÿÿÿÿÿŸŸÿÿÿÿÿÿÿÿżŸÿÿÿÿÿv#+#wÿżŸÿÿÿÿÿ-3-ÿÀÁÿÿÿÿÿ{(1(|ÿÂĐÿÿÿÿÿÿÿÿÿÿĐ- .!>-....//.->!$B;;;;;;;;;B$%$$$$$$$$$$$%ïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#,('''''&'(#$))ŽŽŒŠˆ_#$)(„#&'&#€ÿQ$)({%)*)#vÿÿS))r&)(#a,l)*j%(!Y•áÿÿXd)*a%&ÿÿÿÿÿ]*+Y##ÿӎBÿV+,O" ÿÿL,,Eÿëÿÿ C,-<đÿÿÿÿÿ :-.2 ÿÿÿïÿò3..)ńÿđ  +./! "/*/.-,-//00//*vsrrrrrqrspptsÍÌÌÌÌËÉÉ„pptrÈorsrnÄfÿ ptrĆvzzyuÁgűÿątrÁz~}zt·bdŸssŸ~€}žÀńÿÿł»rsș‚ƒ{ÿÿÿÿÿtžss¶„„|ÿæÁ—ÿxŽssł‡‡~ÿvxtÿ|±ssźˆ„{ÿzőÿÿ€­stȘ‡śÿÿ{ÿÿÿ„©tt§‰ÿÿÿśÿű‹§tt€ŽùÿűŒŒŽ’€tuą™•’•™šš››ŁumutssstuuuuumÁżŸŸŸŸŸŸżżŸŸÀżőôőőőôóóȚŸŸÀżńŒœŸœŒïčÿÚŸÀżïÀÁÂÁżíșëÿÛÀżëÁĂĂÁŸçÉžčêżżèÂÄÂÒâúÿÿäçżżćÄĆÁÿÿÿÿÿœăżżâĆÆÂÿôâÎÿÀáżÀßĆĆÁÿŸŸŒÿÀĘÀÀÜĆĂżÿżúÿÿÁÛÀÀŰÄûÿÿżÿÿÿĂŚÀÀŐĆÿÿÿÁûÿûÆŐÀÀÒÇûÿûÆÇÆÈÉÒÀÁĐÌÊÉÊÌÌÌÍÍĐÁČÁÁÀÀÀÁÁÁÁÁÁČ  ˆÂźźÄ{śđüÿ w@TPQURńőÿMòőÿ,?ńóÿđïóÿ§îóÿ9îôÿżîôÿ\ïőÿÙđőÿušÉžù·Äź™ą—’”€ź„ąĄ€™‘‹‡Š“’Š‚‹ž››œœŸ€T‡Žš«ž™™—–•–œh]œ‡zs©ł€„ŁĄ ŸŸœ§Ź—Œf„–ˆŽŽŽ‘”|ƒ`Ž’ŽŽŽŽŽŽŽŽ’‡qog“…‰ˆˆˆˆˆˆˆˆŠzmlŠ€€€€€€€‚{s ‡r~|||||||}yyźš|‡‡‡‡ˆˆˆˆŠŠi:LJHHHHHHHHMG ¶œ·ŽžŹÈŐÍÌÎÇłźŻ­ŹȘŠ±”ÁŸ·±žÄĂĂĂĂÇËl°žŹœËĂÀÀżŸŸÀƆ}᯹ËÔÊËÊÉÉÈÈĆÓŚŸł«Ć¶șș»»»»»»œÀ€©†žŸžžžžžžžžžœ°–•ŸŻłČČČČČČČłŽĄ“˜ŽšȘȘȘȘȘȘȘȘŹ€—ż­§„„„„„„„ŠąąŐÆ­·¶¶·····ș»‹Ridbbbbbbbbi`âćććæÚíÿüüÿőÛÚÛÚÙŰÙÛçțűőòśőóôôôűíŚäòëđôòóôôóóöïÙÓòäâĘòęùùùùùùùùúÿńçŐáśśśśśśśśśśùúâàËéśôôôôôôôôôùëĐÒÉôńđđđđđđđđńôȚŃÙôìííííííííïćÔìèćíëëëëëëêëèæúÿțÿÿÿÿÿÿÿÿÿÿĆy˜‹‹‹ŒŒŒŒŒ•‰   9ŻŠąąȘ ùȚûÿ© đúÿűùùöśśÿŰđóÿđòóÿđńóÿđïóÿđïóÿđïóÿđíóÿđíóÿđïóÿđńóÿđŽŸźś­±Œ^…ƒ}|{}€ŽŠąœĄ™€ƒ‚}|z|ȘŸ”–—•žŁ…”™‘’‘ Ÿœœœž „‰™ŒŒŒŒ|Š–Ž’|‹ŽŒŒŒŒ{‘ˆ‰Š‹ŠŠŠ‹ŠŠŠŠ‹Žy‹†…†…††………†…††‰v‡€…t„}~~ƒt€}}~~}}}~}}}}~t…‘ˆˆˆˆ‰‰‰‰‰‰ŠŠ|7IBBBBBBBBBBBCH+©ą Ÿžžž ĂŃÈÆÄÉșŸĄ Ÿž›™ ĂÊÁÂÂÂÆŸ±ČȱȱČȘ¶Ć»ŒŒ»»ÇÉÇÇÇÇÈËŹ¶Äșșșșșž··ž··ž»ą±ÁžčččččččșččșœŁČș¶···¶····¶¶·șĄč”ŽŽŽŽ””ŽŽŽŽŽ”ž ±ČźŻŻŻ°°ŻŻŻ°°°łźŹ«««««««««««ŹŻ›«©©©©©©©©©©©©©­™Ș§§§§§§§§§§§§§«›ČĆžččččșșș»»»»ÁŠJcYYYYZZZZZZZ[a:   àŐęŚŐÖùêôóòòöæÓŐÔÔÓÒÒÏÙìÿúûûüùćȚûàßéțțőôöûùúęăêûúôóęôśĘćúöóôöĘêööòóőÜîôęńđûńòőÛêóîùïîïïóÙçđöíîńŰçïöìíđŚêëëțìëțìëìëìïÚđóÿëjś€‚‰RïùÿêțśÿŠöÿ§őÿŹôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÀöÿÀ#ö3#Ż­Ź«««««­š­ÿÿÿÿÿÿÿÿé©ŹÿȚȚßȚȚÿŁÿèš«ÿâăäăâÿ€êÿ鏫ÿäæææäÿÊ€Łÿ­«ÿèéééèòÿÿÿÿ««ÿêëëëëêéééÿ««ÿîîîîîîîííÿ««ÿđđđđđđđđđÿ««ÿóóóóóóóóóÿ««ÿöööööööööÿ««ÿűűűűűűűűűÿ««ÿęęęęęęęęęÿ«­ÿÿÿÿÿÿÿÿÿÿÿ­Ą­«««««««««­ĄŻ°źźźźźźŻȘŻÿÿÿÿÿÿÿÿé©źÿßßàßßÿ„ÿèšźÿăäćäăÿ§ëÿ鯟ÿćçççćÿ˧„ÿŻ­ÿéêêêéôÿÿÿÿź­ÿëììììëëêêÿ­­ÿïïïïïïïîîÿ­­ÿńńńńńńńńńÿ­­ÿôôôôôôôôôÿ­­ÿöööööööööÿ­­ÿűűűűűűűűűÿ­źÿęüüüüüüüęÿź°ÿÿÿÿÿÿÿÿÿÿÿ°ĄŻź­­­­­­­źŻĄŻ°źźźź­źŻȘŻÿÿÿÿÿÿÿÿé©źÿàáááàÿ„ÿèšźÿăäääăÿ§ëÿ鯭ÿçèèèçÿ˧„ÿŻ­ÿéêêêéóÿÿÿÿź­ÿìííííììëëÿ­­ÿïïïïïïïîîÿ­­ÿòòòòòòòòòÿ­­ÿôôôôôôôôôÿ­­ÿöööööööööÿ­­ÿúùùùùùùùúÿ­źÿęüüüüüüüęÿź°ÿÿÿÿÿÿÿÿÿÿÿ°ĄŻź­­­­­­­źŻĄ8BIMPatt8BIMlnk2>ÔliFD$b153c44e-70e8-1173-9870-930db18117f2file_extension_ptb.png˜‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<:IDATxڌSÏkAțȚÌdłiÒ4ml‚ˆb€`@„RŠXÁ‹^z±țžț‚xzô(Ț=Ɗ‡<ô T{ĐC<š(5Ah bÀŠÖ&ÛÍîŽogmšmzđíÎ̛yoŸùȚ›7€”Æśç›:đsZˆ‹6=ńńŐBŚą#›2Ț<6u/TŒûŸđ< ĐNăĂh”â>+ĘZżȚ{D`;š­>/…Gđïa|ò.ÖȚ=À©Û[(ú7çȘ•bč=±Ï6€ŽÒPÉ ”5™0@Dő- =óĆăŻŐJ‹ę%’Ü,(J@ò&Ć ^ّÓp3X{2ˆtŸ2ž…‰!g€©ìây;hy ć;(0˜țę•č†U?@à1«pĂӏq˜8ŻjŹ /‰@RH œŒ ]«À[_2<ĐPòì<ìŃ)àÇrŒAO;‚@bä ZŻávžȚ.œĘ6‚ü$ÜśśAÖPäKt€AžŒ,RŽź‚$߀H°Í‡€ïüBsičcÓ±ZQʂQYäźŒ5ł#ł»ő…Nć~ƒČłŃæ>áb«nŽ——˜Ì6Ÿ.čz4ÂmŚ eÊ0:$‰ŠÖ4?!}y9æ ;·É‡r2•ęŻÜI֒ ÏŰîuQœYXÉ<«ì'›q€Í?xƒ//.h.ŠȚ+Š˜žù]òúíYŽ©u*±žĂÿK“śUCćŻ`"Ë$ƒÇGæIENDźB`‚óliFD$9825338c-70e8-1173-9870-930db18117f2file_extension_hqx.pngƒ‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<%IDATxڌSÏkA}ł;;»Í^rń„bĄ"(öXoRÿ”± Šl±mŒȘUZZđŸ(qÁЈ?Ò"Eċ—ŠÿAăGőàAoŐ&;ăśÍ6›mcÁ/LòíΛ7c nÖj?”ŃEjÓąÆ~èY~!àńăQFIÁ’żŽ1Ćsç/1Ž$I‚v»m]DžpŸûz(Šą§FŁ‚\9]6­<źŚŃˆcÄ++ÄŹQ»1íßÛxûæ5,.`èűpy:Šžő°JT(†!‚ í†z=†ŃÚȘÒ4ÿpy Ă#'&gggÖśX‰ò}(„ìX]mbnn†€ÁĄcšV*š”Ë8rt_鼓Ę&1 -ôá8<Żƒ©©*šÍ'űđq ccgqòÔi«ÆÀäô4M*ÏŁÀ«àù‹ȘŐëŰŰx…ś››füâ…]Óû  :ÂA§ÓÁä”Z­u›› [ûCLÙɂŻ } ©<Ź­œD©tźtí{Ÿ† |:òä †Œ{V&ŚÄÄćȚ.dKJ —æŚwŒŹ‰-H"à«7ûVž;ÇæâJVŠ,.ïĄ§ÀpŸœŸŁŁg2śR*R§ÒŒ>ÀäÓ=đh§{ ś)ÈÔ«€ °Śu3\°š‚{'ùFæK‘;:±‹ÏüÙÙyśùÓÖžÙ›Ï?‹čŸ=ó‰vĄŸˆÿŻ_Žî 7F΋±Ž0IENDźB`‚śliFD$4e0ca1c0-70e8-1173-9870-930db18117f2file_extension_gz.png‰‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<+IDATxڌSMHUA=ósß՝›(úC^…H =D-#š-Č6nڄBP;AáAžÒMäN&šAQő"hóT"— íZXyȚ;ÓśÍŒwyëąč|3sçž9sŸóĘÖZÌ <Ț3ÆŽđÜ5ę”:!à!~=ü4ušA")B‚LB WKÁ၁RÚÉçX^$’<Aű]Ó7Æ„pícRÀ@XrŸ{4ä‡*Á*'ê$ԕ1vùKJńêÔHž2= I‡:oš:ŒK{ 8o"„A[Ï©ĐȚsJűŽDWïAcUÙŹ°rs–Șâsć_9ÓșQTqiˆZÒz†ț"55ù‹T•Ç'ûK‡B4”ŠëÛßò¶±ÄG6ȚËűä/1žĄy țżęŠ};<ù'ÀŸšá|p„¶šIENDźB`‚ôliFD$21f17c42-70e8-1173-9870-930db18117f2file_extension_zip.png„‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<&IDATxڌS=hQțȚÏȚ‘&A…3êÁ%]î/H°đ°ÒÊÆF0$…‚¶Ö†€Ž0hc°S°P$ˆűƒÁD Á F""Z(B„ÜîŸő›·w›»ĂȚŸyïÍ|3ßÌŹJ’Oæj?]ˆȒoÒRĄ”‚ÖúGíüÓhJj Xùˆsmüo˜sš!€Š‰1űöéĂöĆÙđΑ /OąMl†mâŃœÛ0J#Ž7QÆđÁIÄï/ăáĘ»ű.:3±8 E‰/.B>—‡6źyçŐŚPÜJúűŸjŚ™à華=ÆĆM§$éOk5.ÙŚ–æ1q”sčŸt€›TÛ«h[?‹B„ oÓ«$èˆB”-•vȘ»żÿ„ÏȚ-ŻjžąRûì(ÓEÄőüżüąßGQț 05Ô)vMÈ8IENDźB`‚liFD$d5cca80a-70e7-1173-9870-930db18117f2file_extension_bin.png-‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<ÏIDATxڌS=KQ=ïcfš€, ‹€ DĆ ‚}:“B[˜N, EŰHÀ&‚ B IÔbQDH°°ÄBpł»óžśŸù`f?À Ă̛wîč眙'Ź”àú0ûí5æIŽjW⶗ՑîdĆœ:]PóËáçôÀžL€†^vyWOëáțöÖÚèdČ­38cqđęRʎ߃ÁĄgű±w†ő1üŻț,ûHHRjˆF{Jć ž‘†ő[LŒîGàŽúÊ ·:ë0$‚€ŐВ„˜€€_ăqç#fĄ„@ï(YĆƛ&ăŒÛKŻÚÆ85à ‹Æ ߌ(.ąR Áê9_KHš,űÙS‡VlAÊbkq }ÿ~ù—#A4ăZłT]ïš©R5NjàKXêgRD8Ž¶@ OBĐrsź/ʛțtI*Ü?‘ùÛrŸ1Ž‘é}…ș(ź»œ€H_9LÀžÖ!”%ĐÆÇčäKëeè8VoL[ Ö„\ú|š&ÍSœxzŚL@æ^î04Vt.Š•»›ĘżeŒăĆx779Δ|Ę:đđúGœ—ś êŃÂ…šIENDźB`‚9liFD$cc65cd91-70e6-1173-9870-930db18117f2file_extension_html.pngljPNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<iIDATxڌSÏkAțf3›MkQjlšÒą„ZP*ĂœšÔ"šƊQŻ‚Rš?ÀżÀ‹ Ä« '©ˆàA…PJMš+xve.kžèż=ŻSÈyŽŐZHuŠOÁàI,ŸśŻ+#C}è›ț€è”·Œž=ŐÁ nYœ ŠČsĘò?ÉâP|/âcû\eL«‰ Xč(ąjRà…ńŽŒDĐ”x•kâăç"––‰œÀéŁqJ(ÖŽƒ?M &ɝœÆœ“€Aᗅ°ßÁÙx?ŽčeŐHX!¶0à}• &QÏ9/IăàyïŸsïùùȚ9ßœ—ą(B߉¶0ŽI™·JďŒ ‚CôuîöèȘŠŻëÉG’‡3{aÙHjŠ8ŚĄ”Šń±òyeÍŒĘ©ȚËeZâ5ĐjÁ­»áș.ÿâd"=Ž7nÎàKń"^ÒÀ1Hș @«°!ș»đŒ%ÖÇq8b3Ù8z•Ž%ŒŒÏ†Ă’ç4ŒádO‡ë6†«UŹïíAj©}°fuJÀ”WÀ-c9ÁAÄsË}[!àńòőôoـ­•Ëq­âÄùÄäsb4łß~.àęäÌU籜g9JËxò셶Zgșƒ ‡ƒóÇwàÈ`†xˆÌßÏ©öč+Ółș+ԂĐäÀ˜€É"d'Jșž(œÂÚá‚j‘ìä#mQâ:ZĐ ž7iĄ2uVŚùé§HźXŠZDìâțĆA|˜ ŸM§Æuc«ZDì◾Žƒ$ûn˜ßśpéänuŒìĐѱ?(kœÄwT ÛÓĘćáZ±ŒâóOŰvúșÚEËZìâÿ{INÜæ‘B4Đż‹żȚZŐr„XŸHđ˜@ŃòæmïŠÎQł[û5ËÆÁű5nbęCKÛWNßVśÔËó$ț_~p^U&゠ÈfÁĄIENDźB`‚ęliFD$fdefcf69-704a-1173-895f-b3229314356cfile_extension_m4b.png‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe</IDATxڌS=kQ=MÔlvE]T$àgD (ˆQÄB4ˆ±ĐÂ*Á"ż!žUP‹ŰY‰…E0)Ł’BA…l%"a“ˆłł;ïĂ{çÍŹf’ÂÇÌîË=çÜ{îŒpÎaűÁÂOml•ăâᔂnŽ>OŸ«ęÍûڀ ïŽŸÊ’TÌY‘”tSüič”'™˜›m6FÇÿr•(Ńxúü-”©"ƒvžyę$fž-bćńE\Mt]L̉ćÆh}Ÿ¶±}T ÒReQžûGç^Ü:Š1)n„śß„cœDÚ4h A`–șèRŰ&’VÔEm•{ïQ»óûTžćk:`Ű8"pR CȘ#GvâÌĄ*.ŸŰ…ĄK{ÓâúËoi\ÁƒtmŒ:±”‡ÙÛÛ6òjț ź\8– æ§7BL–ԍàö}ĆÇïżńpá+Î?ZÊä:ÚB·ÀŠE<‚­ŒÖ&}Ç‹P$‘hÛ«ŽŒÎ]!J ÊGTŒn<À’'+S§±{{è_znçdEy čȚœA„?ă„|öŐÒok+x„.yĐó)IŹÆ: u4‚>òÀnၑ T(±ȚŐ,X#ÀÀŽgȚÁPgĄ”ŰFŒF”y˜˜û 0ôd Ú82\` \‚ÊäÒŠ…œEYLLâ”ùÁ8[vțrÙX’ ęćMÌțč>' öĂWńÿg•pMț0lő!B_ANIENDźB`‚liFD$e6d2e6e0-704a-1173-895f-b3229314356cfile_extension_jpeg.pngŠ‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<HIDATxڌSMhQțöíæo·i“KRL‹„‚ÁRÚ ő(֞ċÖ*T‚ĆŁWŃłœ*”ŰŁŠèEđȘ'=ˆÖR„€‚T0ÁJ„ö6%›}Ïïíf›<űàcgȚÌ|3ofÖPJáÒę·ë5OŠ€šúǀĆ0 ˜Šűęűêń G…ŽZ(ΟV+Ÿ{J}#–‰2Q©üț€íy鏚ŸûêI+†ĐŠÇÌ;°čp‹ĂÈ/ÂÜ'`žp]àò­83˜Æىá $yŠ–cùl,ŰeE#{L șxSƒ€Q0…€»čŠóCcdÚșś&Âës:V„ï•Úsw‡„l`٘‚M—8á’äèĐALÎÆ©Û/q€†”rȘ­GàNŸÌ†1#oê’Ö„uàôÉ& á„û tŠ†€J"$Y\ZÇÄP7mWńŹž‡œhxG„‚a 'ą,ÿXé:âœęHdsDÆK7àáp;ê$ˆé@"ÂÌż‡Ś"êۈ9qD»l RŻ©T űjNËÏ!ą$ˆ+ù+ˆ'\ێD‚ß_Ôęekæ z°+zP„ħ6™™datFl_.fPxŽȘ§‹ÆVEw;ÁÜÖúȚćPțXń§ĐŰ_BÀŽ"ű°á`lö<·†ț±¶*tXkŻVvVÇ4ߧ%­_+ê&+n,`„èżĘ±‰‚RÙî–öŽőȘ±ÿđę|ÿŽUȚțúțGҟOGP;C`Śțû9ôVńwE°€ÿ{űȘ%-ü`g–áŹÔ)ŚRIENDźB`‚liFD$d6c29263-704a-1173-895f-b3229314356cfile_extension_htm.pngĄ‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<CIDATxڌSMhAțȚìf“úƒKÄ€š5JlĆZSŽˆ7„Dœ(š#*^ŽP‹ô ^<©-Ț*ȚDoD°"Qr/9ˆH-D„àĆ"­P’MvgÖ7»Ù4i<űà%3óȚûȚûŸ™%ßś1t»Ž,„ČŻ;Œśú„ˆ H,Í?M­…Â\Sÿè⛗GĄ”NfŚ Úy/Ù}>űŽđ{[cČűâÛTțB{3B«6€éçïaFĐQŸyRbąpŸœĆŻ™1Üš,Re*_èĐkˆ%,ÄÌ5ò$ê<!à.áć„4. œ·n}ŒqÉ9]+"$GŻ‹Śč#} d·ŁśzœăłÈdR źÎvMàx^Pà‚ùsWpż87\źƒĂę° â<]hćj ]Ìă6žkŐőq,kăt.‰ĘÉ:úl GÍáL~„á ]T™ŻМśŠ7`v|šŁÓęw‹<ĄÉdpS‘‰VÜ„Uć·ŠoŒțž¶;'ú‚žŁd[ÿˆB ’9ܱ©œ>”§”ŽqŒ,L€Rp=ž$đ`,*Ëu ?ùŒę©8Žî܌CéX–ŠĘ=ÖÀ ÌnMàđÌ”Ż bőȚH3ŠpśĂÏ@Êî[ĐąÜ,[âJWöáŐ źŸYä«ü:8S0ă  Œ›„:?üžv=ę Ö&'%í ŽE߇țŻqŃ: <çOÉ,ÿ8žàçoû E{«Š) óŁ=ož(Ëkÿo+\Wыż çä87_@yIENDźB`‚éliFD$c718de88-704a-1173-895f-b3229314356cfile_extension_flv.pngy‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<IDATxڌSżkAțfgöŚ]NČ+šàđxbÄȚJB ±Đ˜4ț”š;Á4ژXi-h„œ VÄä‚wț€€őP/»·îóÍìí^Ž;Äowgç}ß|óÍADбș{ï—4Iö#M18,K|ź6żÈÿhŹÈ VÂ:z†ÀČș8=țĂ)–6Âż2ûžú«9˜‡Îćá]D‹ičR-)RiaȚA‘Ž·wæ©VćȘGe;†=4ËușâŰ(ÊÁÇf.aÉśŠjŚoj™Źí{D+‚t]HÇ)Rù>Ÿ?yŠđÄqŹ ±­RąIČ¶ăGĐî€Č!…D›-àĆšìÙ$íŹŸ‡@ÇVN`gÉf–&Æ1úüäđlȚžéyŠ.źìȞPL ”ҁą᜻Hêńíä)X;C(öÈ1@A€ž™|Ką!™čY©ô¶v§nđ)đù:n 83e|p\ŸÁąïRĄ”Q(*~/V^ŸGçrę3ŹëÍg~yĆCü đÿŃdlăŻ9‡Ò…3Š0IENDźB`‚àliFD$b8532814-704a-1173-895f-b3229314356cfile_extension_doc.pngp‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<IDATxڌSOHTAÿ}ófŚ]ąƒ‡DI2úwèlF Û!ŠNÒ)Ìș†žș ^B*ʃàĄËâ!"șäY*4BÒ )ŃĆ­ łÔ„Ú­}ofúfžûȚ[V€yŒá›o~żßśÍśÍ1vœŒőjŐhÓiźwâóâhŸ+Z3WF &Ÿèíq0â/&»‡yZȚxæŃòłWëû2©ï+…7ł BD^­5Nćs˜{9‡ÂŰ9TęâÀÄđ ê"2™ąČIŠ%<ϋ|€4ûX4ű…ÁŸČ©·ăbÖFčÒ à3Ű0Ùxq„ÒÊ*ÚÚśáűÍ"çۙr±żIàVšhŽÊĆa<žX”2&êtÆVÊ,`k` Wń|Œ}Ú­Ś~Öpïù<žÔË…ś˜Œv„S3»űt=*ŽHf@dpxŽèìÏVp·ï@…‰ț_—Êè™·)Æ'L pPŐĄ=rĄ R„Q ę‡đûŻÂĐT {śH‡ÛQÀ7 ŽæѶ,Îsv‹žÎäÀv#í9\“ïč.x©°…ß}NjOeg?Yú…Ż•p;dqDM‰ÛÌʙ‰ƒăK xêfÛcÛú­Ï^ß ‘Aƒ@oà(™TìK5Œ…'›Ÿœśîìò€,Nnc"żș5ę€ó»Q“™XŒ [ÎDd›ȚŠÿ›Ì-ę`ìÒ"°MY5IENDźB`‚liFD$e17a80c3-704b-1173-895f-b3229314356cfile_extension_bin.png-‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<ÏIDATxڌS=KQ=ïcfš€, ‹€ DĆ ‚}:“B[˜N, EŰHÀ&‚ B IÔbQDH°°ÄBpł»óžśŸù`f?À Ă̛wîč眙'Ź”àú0ûí5æIŽjW⶗ՑîdĆœ:]PóËáçôÀžL€†^vyWOëáțöÖÚèdČ­38cqđęRʎ߃ÁĄgű±w†ő1üŻț,ûHHRjˆF{Jć ž‘†ő[LŒîGàŽúÊ ·:ë0$‚€ŐВ„˜€€_ăqç#fĄ„@ï(YĆƛ&ăŒÛKŻÚÆ85à ‹Æ ߌ(.ąR Áê9_KHš,űÙS‡VlAÊbkq }ÿ~ù—#A4ăZłT]ïš©R5NjàKXêgRD8Ž¶@ OBĐrsź/ʛțtI*Ü?‘ùÛrŸ1Ž‘é}…ș(ź»œ€H_9LÀžÖ!”%ĐÆÇčäKëeè8VoL[ Ö„\ú|š&ÍSœxzŚL@æ^î04Vt.Š•»›ĘżeŒăĆx779Δ|Ę:đđúGœ—ś êŃÂ…šIENDźB`‚liFD$9e507f6c-704b-1173-895f-b3229314356cfile_extension_chm.png–‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<8IDATxڌS1hA}3;»c“Æh,Œpb …`B°H -<1¶‚(ZˆVV‚‚pb#Bș ”6%H°SŒb!!‘ 9Ä(’»ÜîÌúțÜmnÏk˜cæïûÿœyÿŸJÓŻ,üŽÖő9ž;ïQJA+]]ș=ȚßțÔÄù‘äKgÇᜀč ›w˝2đnùǎFyțÁÇÊÄé<‡ÉȘm4€;łÏ`‚À3J,±çKÇpkfkś'QŠ”Ty^­T&J„±f°'BhÚTb±IÖ@\ĆĂé8Łq*șüëC@ŽRPZašÀ#'«Ÿ+\˜ÏąfŹĂš6rÁ6K $KßB,,æ°BBPQ­€“>/C`•AÈŽ&{î\Șuî^źQ[ùcÒȚ#Î[ĂU@&:‹ÚźŸnïÌČX|҅ÿ%§.’FEtOMÌ{ł|yPȚT€– qÎ˚Ű) i$JćxFÊ$€3+>9šdÈ€ÏÏÏBűçíû7Ç.Ooœ|ć§Ï‚Ç’zŒƒöl<~n‰7ÿțjâ*ŒxIENDźB`‚liFD$3d2e709b-704b-1173-895f-b3229314356cfile_extension_rtf.png˜‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<:IDATxڌSKhSA=ó~ęè"c«U  ˆZMƅHŃEu!uaĘ źŽ ĄȘ„T‘ąˆnDq§àź»,,R€*FÁ•ĘH5•€„ŒßLÏŒ|šô)80/wfÎ=śÜ{s…R ‡ÆæKa(ÚțŚ†±òćöÀŽÚ膔ô'”21|fѝŰpRȘČóK…€?:ś$śäùFb«J‡rÌÎ>‡iUȘÂĐĐ)<}–ĆòƒA zF0:'H2ÒLÀć1šéŰ0Lsƒ> á1ș!HèŻ {Ą §ËsΕ6_Ïjˆj/æ‘>’ÆțȚ4%é­šk ”)Qț Ed:?‹«(,äPń‘èëï%^ V-Őn±°müm…VˀÍę'Ô,n‡<6ÖÍè…# ”n‹¶O.`yêh8uă5\âțȘÀe Â1Ń1ę†y*8¶‰äő·‘­›`qoá»Æ5źzҞȘÔ x5ƒ”É~üšèŁ—Ò” l:&2<›\,Č{ì‚A@ÇLŽUì=`ó“Œő>RłëÎŽ‘Pă„@Œ ž IP;›ƒź{ńăòAì»ÿ)‰Ű_™”.ov{." ‚ÚX˜TŃŸŐAÏŁŻ°Ûœ'ÄŠ"ćßóÖ»„­œ‰4Îdc4íš}5Ÿ~§Ç’=Žűÿ”JżoÚX`}êHŰ1ۇIENDźB`‚liFD$3b187f9a-704b-1173-895f-b3229314356cfile_extension_pdf.png‘‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<3IDATxڌSÏkA}ßÌlÖ4‰nÛüŃÒK=”g‹èMDDR+^ îűűț.zƒ •G+߆Ł/†K‘@±?Żś\ŸC( ÄožY·xĄP­!yńÒƒŃÊ©H |˜±ä h}ë¶^JőëR6Žą“çuVëùyœ„ Ț_Ó„Tö~$ b.›ŹtÂN„;S&í5ß©Öžd|ú< É-S„Ù+ÆæIŃ}Fž HۆL$ €DnæœłgđęńäöMàkÊÁG«ăuÖ“†„șùđmČe!ŒFPčȘŸW@ü}ëĐŽo5Ûő1ƒúŠ€R0ü`u­ć2»‹†™R».B— ( #Àì±1Ёęđß-€Œ™VŠ¶”-ˆ˜ƒ†qÀ( RHÈá!+e$'öBp+%ے$Y ȚÁ9‡Ł,Ä°Š&á? ż°ˆÌŁ»đž>ƒźźCŻ_! AÄB4H¶Ù—„}âäÀvX»wąvè(šśv6N{‡Xۀuä0ìésđf.#X(p…‚2»źÿ„óN.^G`ž.Ln]»úP„L„;aĆày邙ŽŸæ r›Ó±ùç„‚»Ö©ïü^ߌ=ˆÍËőO0ÙԇŻŃm$ąžČűT˜»üK€ŻđÛśl°–IENDźB`‚liFD$29a1d44e-704b-1173-895f-b3229314356cfile_extension_mpeg.pngž‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<@IDATxڌSAkAțfv7ˆ6Ö6`!P«—ȘƃôÒ<ô$5Hjl‚G©űÚŁ„àÁV(šˆŠ(„ˆ §–BDr1PbÔڂ‚Ő6R“ÍîŒï횾1-8°Ë›ï}ï›oȚÌ­5șŻŒÜt]á88tí/ …XÏȚˆÖrž&ÿ\„#—}P ÁtżL+MŒ/·’ołGç.ÏÄ/1«j%Gáțì" C’€  ŚUHžíĆÔăyä "qĂMŠŃ9ńi&žŹàQĄ«)ä $ 8„B’ <ż~C7ć°uù…E%C\'ßr™ÈŠˆ%Űvl%àòœœuvDŃ~q‡†Ÿ!keÇç°@… >ßîÇҗ"^gÖńôÍ2«8yŹ]ʇaJG+ˆ@Że5° 4C&Ædń!ÿ W:±8ыôxÎöŰx•Êz<ÏrĐÏmr -OÒ?p/ő#ÓKˆ #ŃEW &GÚ1ûî'ńt°țŻ@™ÎÊÖ_oőa·ŃŒŻ‰xȘ«mĄD eűÓôêÚź„ę¶Ö±Țź=Œ`ÓBșȚAM ÂÖ,ż§ń;ïq`ƒÓ9Ž4‡qn*çáőˆyŰq Ô]Ă2ükjR· Tt!_)Ó_“óÌkèw Ô+dyńÚÄ©{Àyæ5: óu„œdûÄäG8ÿ<"q8Ï<æŚ žćâ|!•9­•ś0`ìr eڒ-}~Ú{âĆüÿ(PĘ2ż@ őg.Á!ZIENDźB`‚ËliFD$14ebc9c7-704b-1173-895f-b3229314356cfile_extension_mp4.png[‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<ęIDATxڌS=kTA=wfȚêqIe!Ád ÁJŽJ@HŻ$&űì[;qQlüf+ Ń6°€Đâi!Db”Ń|4śíۙńȚÙ}›YłEî2,sçžsÏ=3Œś8soć›”nèìÿH}]«MŽörŒ5ĆFÀ3Ś§ |DśÎńâ\u#=ùÀ.Ő??žš/ÎMÜ#łÀ‹ç ­{Ù¶”ž6sőg‹űțtÍ<{‚%$&–ÙæNIùŒÙ' &°R(€í=ÜŸzćäíÜ#œŹ8}CĆ-‘Ï`Ż2O°€ “ïWŚqjâÆÓÀ»á ,ŰÍ ŠG@ükYJ4š ^» gÇ*ȕÍlíîaèű±°›RŰÔŻÀY&0đĘê7Oăüh–ćSÉrYR‡A93+SäÁÂü΍ ĄÍă°á\êPWžCXQ,̎ăr”ÂȚt΂҃Ś(.Œ@Ôÿ˜Ÿț‰Û-šìTšĂ ‚0‚ÌœÆڛMŒúôM‘+7Ä/+D ’2ÛĄPPK·ńrÁŠ Žé=M©0!ś.x”GœŐŰÀêV†ŒŻQǖˆïș-cȚ·Xș*—‚łéoźN@ęűPW$ś?Šżżw—?Lă!őĄoń9Q•ÿ†qűŰaì— ™QÏÂAÊ.öIENDźB`‚ïliFD$c5d8d499-7049-1173-895f-b3229314356cfile_extension_txt.png‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<!IDATxڌSœkAÿœ™]śÎX€1 h’ÆB°SP€Á*1ŠŻHą čHB.â]„‹^ô4~œ FáŠÓFÒ –±ń?Ä/B@,ŽR17łŸ7»{æČW8ĂìŸyó{żś5Cabtöæwkm·È[Gȓd*úVŻÌôŽô1֓<â”$ r–noyÉęËŚ#S ÏŐ©ÍŒ„Í4›xčúZ)çQ<cqlà0V^­b„6ùûa&!&NbÖ†<Ïk[üçĆj(& 7~Łxaûûö<;Syс c-”ö$Ś( agÙƒĘ»z04yĘéN Ćû”őĄ4‡KlÙdź €FČûa ę{{Ńß»ž§ĘYȘâ±iŹ«Ć“rŸ pfz7ŠsN-Tqèà4PHžötÛɆ#‰ÒP8}iZ+dƒ!Gđ/Ʉ€ąütaçæ–PŻL„îÄD©æp›ìۋ豗±+ś 9ùÜܝž6Fź|­±=8\‡žÌŹIăŃŐ±Öáx±†ćòĆÖ>_~ìp Œ ĄčÊçK±Á—ŠHqD„‰âŚZÍû đźcŒ5Ü&…Zi<•{țÚ2nÍæPšÖŽRHĂY ČžŒÔˆò #fńŒŁ« Ć»Ï‘Éd#%méŸ_?_żûüq y<ń3lU›bŠeÁ'ä^ QËĘűÿńƒí>‰đW€„Öäbo‘ùIENDźB`‚ŐliFD$c483e490-7049-1173-895f-b3229314356cfile_extension_exe.pnge‰PNG  IHDRóÿatEXtSoftwareAdobe ImageReadyqÉe<IDATxڌS1OQțfśv;s…АK4m$; ‰•„P ÆbŁÀÎN”‚‚‚PXcbĄŃâš.&F‚ÀÊ Dˆ1\dwßó›·À»W0›ĘŒ}óÍ73ߌ'ÖZÔÖö’€jžÎšn‰|‘_{ÏGÚû)¶  ~śh֞h@˜đMđuëgÿÛčæûę—c3 fŽb`üőwŒ¶—эÇ7qïÍ*ìâŁáésM!Éô”D3•C”­ÈœUy$męÆ«ńA>Š>͈ŸŻq.đ‰ ì }”‰P’+)…"cp«^ƒŒŰ€<[ĆÈ„A­x2WAÄr{ >Tšˆi”ś8,mî`vűÜBè3Qœc‘#űGĆèLJÉ:î\îËMŁùă;Xș{ĘU|b§ŠqìÏïŹ6v”Ê œŒAn ÊQĆròՖżSq#U[hśéÓHq’%pp”}Ćôw 7@…òđ0ŁĆߣ4«úŁÌak°…J˜ț†›'ž«À2_xÜšúŚ• ŠˆŠ)òۓ+]uPżâò̔đè\,…˜iìșŸłŠŐš_q"8Ÿć ßțJńx­Šœ78œâÏNĄőg}ćËæm“Q7SmJźŚ’Ś”Îuç·ÆmëâżBƒÁk: đîIENDźB`‚8BIMFMsk ÿÿ2                                                                                                                                                                                                                                ÿ8(ü&%&:üÿ ÿ(š˜™š™˜•”foęÿ ÿ'!%&%!‹ÿXoțÿÿ(‡&+,+&„ÿÿ[oÿÿÿ('++)${?z(ÿÿÿ)w'(#5kprs(ÿÿÿ)n'"țÿy#m)ÿÿÿ*d' ÿÎ,’ÿ%d*ÿÿÿ+\'&/‚ÿ&\+ÿÿÿ+T)*'őÿk"'T+ÿÿÿ,K*,)ÿ5 ))K,ÿÿÿ,A*,* o(+*A,ÿÿÿ-9*+) ÿ )+*9-ÿÿÿ.0*+*&"&*+*0.ÿÿÿ_ü.-ü._ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿäȘțŹ§­đùÿ°ŽŠąœĄ™«țöóőôôòú ŻŸ”–—•žŁ’’ꓐ˜š™‘’‘ Ÿțœž ‹™üțŒÿŒ„–Žțÿü’„’ŽŒŒțÿŒțƒ˜ˆ‰Š‹țŠ‹ęŠ‹Ž’†…†…††ț…†…††‰~€ö…|}~~śƒ|ˆ}}~~ț}~ę}~|Œ‘ęˆû‰ÿŠ„w~ś}x±ńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÉžž”­Èśÿ©ź„ąĄ€ÏăÛÜÛŰŰùÿÿ“’Š‚‹ž››œœŸ€ËÿÿŽš«ž™™—–•–œȘăïŽzs©ł€„ŁĄ ŸŸœ§Ź“f„–ˆțŽțÿ‘”©‹`Ž’ùŽ’‡ßyg“…‰ùˆŠ›ÿwlŠ€û€‚{ÌÿŠ‡r~ú|}yÿÿłš|ę‡ęˆÿŠșÿÿˆrű|vçÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ*ü*üÿ ÿž·čșč¶ČČrdęÿÿłüźÿhcțÿÿ° ŹÿÿmcÿÿÿŹ  §?„ÿÿÿ§ 5‘•›Ąÿÿÿ œüÿŽÿÿÿšúÿšÿÿÿ•%ÿ%'%ÿ%•ÿÿÿ2ÿ2>A>2ÿ2ÿÿÿ‹>ÿ8@C@8ÿ>‹ÿÿÿ‡LúÿL‡ÿÿÿ„`YüWY`„ÿÿÿ…uttțsÿtu…ÿÿÿSűSÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿfdúceüÿÿdû•”’źręÿÿc“Zț\Z’Zÿ§rțÿÿd‘^ța_’]üÿźtÿÿÿdŽ_[ZZXhjWZŒcÿÿÿdŒ]úÿ]ŒdÿÿÿdŠc^VTV\^_cŠdÿÿÿd‡gcțÿciig‡dÿÿÿd„ihaYZahji„dÿÿÿd‚klgțÿglk‚dÿÿÿekgc^^elnmeÿÿÿe}jęÿkppo}eÿÿÿe{pkiikpțr{eÿÿÿeyűuyeÿÿÿgöegÿÿÿżöŁżÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿjZXWWțXYiüÿ ÿ[çßÜȚăääæŻ’ęÿ ÿXÜĐÿÿx|ßHÿȘ’țÿÿWŚțÿ ‚†ȚKúÿŹ‘ÿÿÿXŐÿÿʌŽÙ€KIĘZÿÿÿXŚ“—•©ÏŃÓŰYÿÿÿY֜žŸ˜éćç“ÔYÿÿÿYÔ„§§ŁŐńîđÓÏXÿÿÿYĐŹ­Ź§țśőöęÉXÿÿÿXËțČźćțÿćÇWÿÿÿNÂț” Ž±ČŠ±±ÀNÿÿÿăÿâęăæ|ćâÿăÿÿÿÙÿìțíîïńïìÿÙÿÿÿŰÿüúęüÿŰÿÿÿÙöŰÙÿÿÿÏöÌÏÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ9(ü'&':üÿ ÿ)ŽŽŒŠˆ_pęÿ ÿ(„#&'&#€ÿQpțÿÿ({%)*)#vÿÿSoÿÿÿ)r&)(#a,l)ÿÿÿ*j%(!Y•áÿÿXd)ÿÿÿ*a%&üÿ]*ÿÿÿ+Y##ÿӎBÿV+ÿÿÿ,O" ÿÿL,ÿÿÿ,Eÿëÿÿ C,ÿÿÿ-<đÿÿțÿ :-ÿÿÿ.2 țÿïÿò3.ÿÿÿ.)ńÿđ  +.ÿÿÿ/! "/ÿÿÿ_/.-,-//00//_ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿEú*)Cüÿÿ*~ț~|zœręÿÿ*x&ț*&xÿ”rțÿÿ*t+ț/+u ÿÿtÿÿÿ*n,.(,.FC# j*ÿÿÿ+h-&ÿ[)./0-h+ÿÿÿ+b.%ÿÿ\+01.b+ÿÿÿ+]0&țÿ\,10]+ÿÿÿ,W0&ęÿe00W,ÿÿÿ,Q1'țÿ‰;21Q,ÿÿÿ,L3(ÿÿŠ:243L,ÿÿÿ-E3)ÿŠ:2443E-ÿÿÿ-@41i=3ț54@-ÿÿÿ-:66456ț76:-ÿÿÿdö-dÿÿÿĘöÌĘÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ9)ú(;üÿÿ)|ę{zxvRpęÿÿ)t%ț(%qÿGpțÿÿ)n(ț*(kÿÿLoÿÿÿ*g"#f:c)ÿÿÿ*`țÿz(ÿÿÿ)w(++("9ghnr(ÿÿÿ)n(*$X§Çäk)ÿÿÿ*d(#Gęÿ‚b*ÿÿÿ+\$ÿÿnnÿúZ+ÿÿÿ+S!DûÿQ+ÿÿÿ,IÍÿÜ 4kœI,ÿÿÿ,?đ1țÿőq#A,ÿÿÿ-7ÿò­#'9-ÿÿÿ.0%$'()*0.ÿÿÿ_.-ț,û._ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ8(ü&%&:üÿ ÿ(š˜™š™˜•”foęÿ ÿ'!%&%!‹ÿXoțÿÿ(‡&+,+&„ÿÿ[oÿÿÿ('+,*&|@z(ÿÿÿ)w'(%!=prrs(ÿÿÿ)n$s°Ì~M"l)ÿÿÿ*c­űŽ±Ž`!c*ÿÿÿ+YÿÿiXyÿłZ+ÿÿÿ+Qÿÿ;H›ÿáQ+ÿÿÿ,I„ÿV\ÏÿÿI,ÿÿÿ,@źÿÿÇmks!@,ÿÿÿ-9%Șÿÿ…\!'9-ÿÿÿ.0)%<%()0.ÿÿÿ_ț.,++,-ț._ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿáȚûĘȚáüÿÿȚùÿôéęÿÿĘÿĘțȚĘÿÚÿôéțÿÿĘÿàțâàÿÛăÿôéÿÿÿĘÿäææćäÿéÛÚÿĘÿÿÿĘÿæçæíìőÿÿțÿĘÿÿÿĘÿèîûÿöÿĘÿÿÿĘÿëűțúúûüÿțÿĘÿÿÿĘÿíęțôóúùÿÿĘÿÿÿĘÿïÿëțìûśïÿĘÿÿÿĘûÿăęöóÿĘÿÿÿĘÿÿôòòóâÿśöÿĘÿÿÿĘÿęûÿÿűÿĘÿÿÿȚÿűțÿȚÿÿÿÙȚűĘȚÙÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿáȚûĘȚáüÿÿȚùÿôéęÿÿĘÿĘțȚĘÿÚÿôéțÿÿĘÿàțâàÿÛăÿôéÿÿÿĘÿäææćäÿéÛÚÿĘÿÿÿĘÿæçæíìőÿÿțÿĘÿÿÿĘÿèîûÿöÿĘÿÿÿĘÿëűțúúûüÿțÿĘÿÿÿĘÿíęțôóúùÿÿĘÿÿÿĘÿïÿëțìûśïÿĘÿÿÿĘûÿăęöóÿĘÿÿÿĘÿÿôòòóâÿśöÿĘÿÿÿĘÿęûÿÿűÿĘÿÿÿȚÿűțÿȚÿÿÿÙȚűĘȚÙÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿáȚûĘȚáüÿÿȚùÿôéęÿÿĘÿĘțȚĘÿÚÿôéțÿÿĘÿàțâàÿÛăÿôéÿÿÿĘÿäææćäÿéÛÚÿĘÿÿÿĘÿæçæíìőÿÿțÿĘÿÿÿĘÿèîûÿöÿĘÿÿÿĘÿëűțúúûüÿțÿĘÿÿÿĘÿíęțôóúùÿÿĘÿÿÿĘÿïÿëțìûśïÿĘÿÿÿĘûÿăęöóÿĘÿÿÿĘÿÿôòòóâÿśöÿĘÿÿÿĘÿęûÿÿűÿĘÿÿÿȚÿűțÿȚÿÿÿÙȚűĘȚÙÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿáȚûĘȚáüÿÿȚùÿôéęÿÿĘÿĘțȚĘÿÚÿôéțÿÿĘÿàțâàÿÛăÿôéÿÿÿĘÿäææćäÿéÛÚÿĘÿÿÿĘÿæçæíìőÿÿțÿĘÿÿÿĘÿèîûÿöÿĘÿÿÿĘÿëűțúúûüÿțÿĘÿÿÿĘÿíęțôóúùÿÿĘÿÿÿĘÿïÿëțìûśïÿĘÿÿÿĘûÿăęöóÿĘÿÿÿĘÿÿôòòóâÿśöÿĘÿÿÿĘÿęûÿÿűÿĘÿÿÿȚÿűțÿȚÿÿÿÙȚűĘȚÙÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ9)ę(ț';üÿÿ)‡…ț†…‚Ypęÿ ÿ($'('$}ÿQoțÿÿ(~,010,{ÿÿVoÿÿÿ({0443/x>v(ÿÿÿ(w331/*Cmpqt(ÿÿÿ)s4-©ÿ„)0q(ÿÿÿ)n4ȘüÿȘ3n)ÿÿÿ)j6#ÿ!ÿ#6j)ÿÿÿ)e7ÿÿ%1%ÿÿ7e)ÿÿÿ)b=*ÿ ) ÿ*=b)ÿÿÿ*^B°üÿ°B^*ÿÿÿ*\JA±2ÿ2±AJ\*ÿÿÿ+[SQMKIKMQS[+ÿÿÿ^++**ț)ÿ*ÿ+^ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿáȚûĘȚáüÿÿȚùÿôéęÿÿĘÿĘțȚĘÿÚÿôéțÿÿĘÿàțâàÿÛăÿôéÿÿÿĘÿäææćäÿéÛÚÿĘÿÿÿĘÿæçæíìőÿÿțÿĘÿÿÿĘÿèîûÿöÿĘÿÿÿĘÿëűțúúûüÿțÿĘÿÿÿĘÿíęțôóúùÿÿĘÿÿÿĘÿïÿëțìûśïÿĘÿÿÿĘûÿăęöóÿĘÿÿÿĘÿÿôòòóâÿśöÿĘÿÿÿĘÿęûÿÿűÿĘÿÿÿȚÿűțÿȚÿÿÿÙȚűĘȚÙÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿáȚûĘȚáüÿÿȚùÿôéęÿÿĘÿĘțȚĘÿÚÿôéțÿÿĘÿàțâàÿÛăÿôéÿÿÿĘÿäææćäÿéÛÚÿĘÿÿÿĘÿæçæíìőÿÿțÿĘÿÿÿĘÿèîûÿöÿĘÿÿÿĘÿëűțúúûüÿțÿĘÿÿÿĘÿíęțôóúùÿÿĘÿÿÿĘÿïÿëțìûśïÿĘÿÿÿĘûÿăęöóÿĘÿÿÿĘÿÿôòòóâÿśöÿĘÿÿÿĘÿęûÿÿűÿĘÿÿÿȚÿűțÿȚÿÿÿÙȚűĘȚÙÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿwdúcvüÿÿdû•”’ź˜ęÿÿc“Zț\Z’Zÿ§˜țÿÿd‘^ța_’]üÿź™ÿÿÿdŽ_[ZZXhjWZŒcÿÿÿdŒ]úÿ]ŒdÿÿÿdŠc^VTV\^_cŠdÿÿÿd‡gcțÿciig‡dÿÿÿd„ihaYZahji„dÿÿÿd‚klgțÿglk‚dÿÿÿekgc^^elnmeÿÿÿe}jęÿkppo}eÿÿÿe{pkiikpțr{eÿÿÿeyűuyeÿÿÿ‰öe‰ÿÿÿĘöÌĘÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿÁ»țșțčșÂüÿÿ»ùÿçÒęÿ ÿșÿ·ș·ÚÿüČÿćÒțÿÿșÿŸÀŸÿÚúŽéÿćÒÿÿÿșęÂĆÂßÿűÏ”ŽüșÿÿÿșúĆÆĂÿßÔùùűùșÿÿÿșűÈÊÇâÿĆÇÇĆśșÿÿÿ»őËÍÊÿăÊÍÍËő»ÿÿÿ»òÏĐÍćÿÍĐŃÏò»ÿÿÿ»đŃŃÎÿÿÍŃÒŃđ»ÿÿÿ»íÔÓńÿÿńÓŐŐí»ÿÿÿ»êŰÖęÿÖÙŰê»ÿÿÿ»èÜÜÚÙÙÚțÜè»ÿÿÿŒéűáéŒÿÿÿÂöŒÂÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ–țŒț‹Œ–üÿ ÿÒŃÒĐÍËÍÏłłęÿ ÿŒĐŠŒ‡Ăÿǁÿ°łțÿÿŒÎ‘“ŽÿÁăôÿČłÿÿÿŒÍ•—‘Æÿ߄ƒËŒÿÿÿŒË™š”ÿÆŁÈÉÈɌÿÿÿŒÉž™Ëÿ—œ›ÉŒÿÿÿŒÈĄĄœÿ˛Ąą ÈŒÿÿÿŒÇ€€ŸÌÿž€Š€ÇŒÿÿÿÄ§ŠžÿÿžŠš§ÄÿÿÿÂ«šćÿÿ䚏ŹÂÿÿÿÁŻ«ęÿ«Ż°Áÿÿÿżł±źŹŹź±łŽżÿÿÿŽÁșșęčÿș»ÁŽÿÿÿąŽűŽąÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿqețdcbccrüÿ ÿeąąŁ ›˜›œƒ—ęÿ ÿd AC<Ÿÿ’Wÿ|˜țÿÿeŸKNDÿ™‘Xęÿ—ÿÿÿežQTJĄÿrZY˜dÿÿÿe›WYOÿąc˜˜——dÿÿÿe™]^U§ÿR[[Y˜dÿÿÿe—bdZÿ©Zcdb—eÿÿÿe•hh^Șÿ]ikh•eÿÿÿe“mk^ÿÿ]kon“eÿÿÿe‘qkÒÿÿÒlrr‘eÿÿÿevpęÿpwxeÿÿÿe}{uqqu{~~eÿÿÿf††ę…ț†fÿÿÿ‡fűef‡ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ8'ț%ÿ#$%9üÿ ÿ'§„ŠŁœ™ noęÿ ÿ% "$Žÿÿcnțÿÿ&œ+/#ÿ‡Šÿÿhnÿÿÿ&—15)ÿ†E“&ÿÿÿ&‘58+ÿHŒŒŽ&ÿÿÿ'Œ:<1”ÿ,785Š&ÿÿÿ'‡>@4ÿ–4@A>†'ÿÿÿ'‚CD7•ÿ6DFC‚'ÿÿÿ({HE5ÿÿ3EJH{(ÿÿÿ(uLDÆÿÿÆDMMu(ÿÿÿ(pOFęÿGPPp(ÿÿÿ)jVRJFFJRVVj)ÿÿÿ*h_^]\\]^__h*ÿÿÿ]+ű)+]ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿĘùŚȚüÿÿŚùÿĐçęÿÿŚÿŚțÙŚÿÔÿĐçțÿÿŚÿÜțȚÜÿŐïÿĐæÿÿÿŚÿßțáàìçŐŐÿŚÿÿÿŚÿâțäăçùÿâÿŚÿÿÿŚÿćțçíÿüđćÿŚÿÿÿŚÿéêêéÿûçééÿŚÿÿÿŚÿìííôțÿÿìÿŚÿÿÿŚÿđńđüțôőńđÿŚÿÿÿŚÿóôűÿöóôôóÿŚÿÿÿŚÿöûÿęęśöÿŚÿÿÿŚÿùÿțùüúÿŚÿÿÿŚöÿŚÿÿÿŐöŚŐÿÿÿĘöÌĘÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿsęrÿqrüÿÿsŃÏțĐÎÌͧąęÿ ÿrËorsroÈeÿąĄțÿÿrÈw{|{wÆgúÿ€ĄÿÿÿrÆ{~zÊgfĂrÿÿÿrÂ~€}yu»œŸżrÿÿÿsŸ€”țÿ°{~œrÿÿÿsș…ÿăˆÂÿ~„čsÿÿÿs·‰ˆ|șÿ‚ˆ·sÿÿÿsłŽˆúÿ±ŠłsÿÿÿsŻ‘“‘‹ÿ—‘‘Żsÿÿÿs«•–•¶Ž”–•«sÿÿÿt©ț™”ÿ”ț™©tÿÿÿušț žœžț šuÿÿÿ‘uętsętu‘ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿìżÁÂÁŸÂôùÿ ËŃÈÆÄÉșżțűöțśőûÇÊÁțÂÆŸłęŽłČ·șĆ»ŒŒ»»ÇÉęÇÈ˱șÄüșž··ž··ž»§”Ážúčșččșœš·ș¶ț·¶ę·ÿ¶·ș§œ”ęŽÿ”üŽ”žŠ¶ČźțŻÿ°țŻț°łŁŽŹö«ŹŻĄ±ô©­ŸŻô§«Ą¶Ćžęčțșę»Á«š‹ęŽú‹¶ńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿŰÍÎÌÈŚśÿËŐÍÌÎÇÜëțćăâûÿÿčÁŸ·±žÄęĂÇËÓÿÿŽžŹœËĂÀÀżŸŸÀĆ»éűłąËÔÊËÊÉÉÈÈĆӌž«Ć¶șșû»œÀĂŻ†žŸűžœ°èœŸŻłúČłŽčÿš˜ŽšùȘŹ€ÙÿĂ­§ú„Šą°ÿÿŚÆ­·¶¶ü·ș»Êÿÿ—‰ùŽŒ“çÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ‚ü€Œüÿ ÿ‚ßĘȚßȚĘÛÛ·ŹęÿÿÛvțzvŰuÿČ«țÿÿÙ€ț…€Śwöÿ”«ÿÿÿŰ†ŠŠ‰†ŐšvvՁÿÿÿÔŠŠˆ†ƒ›ÉËÎсÿÿÿŃ‹ȚüÿهρÿÿÿÎŽúÿÎÿÿÿË“ÿ“”“ÿ“ˁÿÿÿÊšÿš Ą šÿšÊÿÿÿÇ ÿœĄąĄœÿ ÇÿÿÿÄ§úÿ§Äÿÿÿ‚Ä°­üŹ­°Ä‚ÿÿÿƒĆțŒț»țŒƃÿÿÿ›ƒű‚ƒ›ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿxùuwüÿÿu±°ț±°ŻŻŽ„ęÿÿuŻuțwuŻlÿźƒțÿÿuŻzț}{ŻnûÿŽ†ÿÿÿu­|zxxwˆ‚klŹuÿÿÿuŹ|úÿ}Źuÿÿÿu«‚~ywy}~€‚«uÿÿÿu©‡…țÿ…‰‰‡©uÿÿÿušŠŠ……‹ŒŠšuÿÿÿu§ŒțÿŒ§uÿÿÿuŠ‘Ž‹‡‡Œ’“’Šuÿÿÿu€’ęÿ’––•€uÿÿÿuŁ—”““”˜ț™ŁuÿÿÿvŁűžŁvÿÿÿwövwÿÿÿżöŁżÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ“‘ü‘üÿÿ“ÿęęüęÿŐ·ęÿ ÿ‘üÉËËÊÉű…ÿÓ·țÿÿ‘ûÁĂĂĐÎű‡đÿÔ·ÿÿÿ‘ú·žÄŐÓöłˆ†û’ÿÿÿ‘ùŰÙÙŰÙćûûűù‘ÿÿÿ‘śțÚ Üà…ˆ…àű‘ÿÿÿ‘őțĘ á”Ÿœ”ù‘ÿÿÿ‘óààáäąšȘšąű‘ÿÿÿ‘óțć èñ”±Ăö‘ÿÿÿ“śțï đóúWùóű“ÿÿÿ…»†‡‡ˆ‰GŒ‡»…ÿÿÿ‡żęŸĄą žż‡ÿÿÿ‰ÁęŽę”ŽÁ‰ÿÿÿ‰ˆú‰ˆ‰ÿÿÿÏöÌÏÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿsürqrüÿÿsÍęÌËÉÉ„ąęÿ ÿrÈorsrnÄfÿ ĄțÿÿrĆvzzyuÁgűÿąĄÿÿÿrÁz~}zt·bdŸsÿÿÿsŸ~€}žÀńÿÿł»rÿÿÿsș‚ƒ{üÿtžsÿÿÿs¶„„|ÿæÁ—ÿxŽsÿÿÿsł‡‡~ÿvxtÿ|±sÿÿÿsźˆ„{ÿzőÿÿ€­sÿÿÿtȘ‡śÿÿ{țÿ„©tÿÿÿt§‰țÿśÿű‹§tÿÿÿt€ŽùÿűŒŒŽ’€tÿÿÿuą™•’•™šš››Łuÿÿÿ‘utțstüu‘ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ†ùt†üÿÿtËÊțËÊÈÉł€ęÿÿtÈrțurÇjÿź€țÿÿtÆ{ț|Çmûÿł„ÿÿÿtĆ‚~€›“pmÄtÿÿÿt„ÿĄƒ††‡„ÂtÿÿÿtÀ‰…ÿÿŁ‰ŒŒ‰ÀtÿÿÿtŸ‰țÿŠŸtÿÿÿtŒ’ŽęÿŻ“’Œtÿÿÿtș—“țÿƜ™—ștÿÿÿtžœ—ÿÿƟœœžtÿÿÿt”ĄÿÊŁĄąąĄ”tÿÿÿtŽ„€Œš„țŠ„ŽtÿÿÿuŽęźęŻźŽuÿÿÿ”öu”ÿÿÿĘöÌĘÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿsúrüÿÿtÄĂțÄÂÁÀ ąęÿÿsÀqțtqœgÿšĄțÿÿsŸwțzwŒhúÿžĄÿÿÿsŒxvtvxșˆhgčsÿÿÿsžvțÿx“ž·¶·sÿÿÿs”yțÿ{€€¶sÿÿÿsł€xvz~~€ƒłsÿÿÿs°ƒÿÿ~ęÿ„°sÿÿÿs­‰‚€ƒƒ‚ƒ‰­sÿÿÿsŹŒțÿ‡ÿˆÿŹsÿÿÿtšˆ…†ˆŠ‘štÿÿÿtŠ”üÿÿ•Štÿÿÿu§žšț—™œœž§uÿÿÿ‘utústu‘ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ0ú.üÿÿ§„ț§„ąŁ”bęÿ ÿ  œÿŒbțÿÿ˜)#˜ÿÿ•dÿÿÿ$ŠF@ ÿÿÿ‰$)#œ"()%‰ÿÿÿ*.)€^)..*ÿÿÿy04-źż,340yÿÿÿr68/Ξf031qÿÿÿj;9Š†Wÿł€Šeÿÿÿb>Cá›uHUȘ«^ÿÿÿVŒÿsBFHGDDZÿÿÿMÿ‘HMüNTÿÿÿMRTWûXOÿÿÿUűUÿÿÿĘöÌĘÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ‹ùzŠüÿÿzû¶ÿŽ”šęÿÿzłtțvtłqÿ°šțÿÿzłzț}zŽtûÿ”šÿÿÿz°}ț€‘ŽvtŻzÿÿÿzź{|}}}|{źzÿÿÿz©ÿÿòźÿúÿÿ©zÿÿÿzȘ…ÿĄęÿąÿĘ~ȘzÿÿÿzȘƒÿèÿÿûű‰Șzÿÿÿz©ˆÿÿÈÿÿšŽ©zÿÿÿ{ŠÿŃšÿҎ“’Š{ÿÿÿ{„”‘’“‘’•–•„{ÿÿÿ{Łű™Ł{ÿÿÿ{ŁűžŁ{ÿÿÿ™ö{™ÿÿÿĘöÌĘÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿsęrÿqrüÿÿsŃÏțĐÎÌͧąęÿ ÿrËorsroÈeÿąĄțÿÿrÈw{|{wÆgúÿ€ĄÿÿÿrÆ{€{ÊgfĂrÿÿÿr‚‚€{žčŒżrÿÿÿsŸ‚„{žÌȚîyŒrÿÿÿsș…ƒ˜ęÿž}žsÿÿÿs·‡ÿÿ±±ÿü¶sÿÿÿsłŠœûÿ…Čsÿÿÿsź‹ćÿłÊ‹źsÿÿÿsȘű™țÿûč‘«sÿÿÿtš“ÿùٍ“–˜©tÿÿÿu§žš™šžŸŸ šuÿÿÿ‘utțsütu‘ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿsęrÿqrüÿÿsŃÏțĐÎÌͧąęÿ ÿrËorsroÈeÿąĄțÿÿrÈw{|{wÆgúÿ€ĄÿÿÿrÆ{~zÊgfĂrÿÿÿrÂ~€~{xŒŸŸżrÿÿÿsŸ€}”Ęé{~ŒrÿÿÿsčĐęÜÛÈÏ©čsÿÿÿs¶ÿÿčŻœÿق¶sÿÿÿs±„ÿÿą§Îÿï…Čsÿÿÿsź‰Śÿ°Čçÿÿ‰źsÿÿÿsȘÖÿÿ䞎žȘsÿÿÿt©—‘ŰÿÿÄ°•˜©tÿÿÿuš žš—©šŸ šuÿÿÿ‘uttssrsțtu‘ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ­„ú€Źüÿÿ„ÚüÙÿŚÂĂęÿ ÿ„ŰŁ€„€ŁÖÿżĂțÿÿ„Ś©««ȘšŐžđÿÀÂÿÿÿ„Ő«­Ź«©Ń°œœÓ„ÿÿÿ„Őźź«ÂÀÍÛÜÎÒ€ÿÿÿ„ÓźÄûÿäÏ€ÿÿÿ„Ń°äĘțÀÏÿùÌŁÿÿÿ„Đłö»ŒčâÌÿÌ€ÿÿÿ€ÎČÿŹŻ±°đڳ΀ÿÿÿ€Òüÿ€ù̻΄ÿÿÿ€Èÿ·±ł”ŠÿżŸÍ„ÿÿÿ€ÉïüÿùÀĂÌ„ÿÿÿ„ÍĆüĂĆÇÈ΄ÿÿÿČ„„û€ÿ„ŠČÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ­„ú€Źüÿÿ„ÚüÙÿŚÂĂęÿ ÿ„ŰŁ€„€ŁÖÿżĂțÿÿ„Ś©««ȘšŐžđÿÀÂÿÿÿ„Ő«­Ź«©Ń°œœÓ„ÿÿÿ„Őźź«ÂÀÍÛÜÎÒ€ÿÿÿ„ÓźÄûÿäÏ€ÿÿÿ„Ń°äĘțÀÏÿùÌŁÿÿÿ„Đłö»ŒčâÌÿÌ€ÿÿÿ€ÎČÿŹŻ±°đڳ΀ÿÿÿ€Òüÿ€ù̻΄ÿÿÿ€Èÿ·±ł”ŠÿżŸÍ„ÿÿÿ€ÉïüÿùÀĂÌ„ÿÿÿ„ÍĆüĂĆÇÈ΄ÿÿÿČ„„û€ÿ„ŠČÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ­„ú€Źüÿÿ„ÚüÙÿŚÂĂęÿ ÿ„ŰŁ€„€ŁÖÿżĂțÿÿ„Ś©««ȘšŐžđÿÀÂÿÿÿ„Ő«­Ź«©Ń°œœÓ„ÿÿÿ„Őźź«ÂÀÍÛÜÎÒ€ÿÿÿ„ÓźÄûÿäÏ€ÿÿÿ„Ń°äĘțÀÏÿùÌŁÿÿÿ„Đłö»ŒčâÌÿÌ€ÿÿÿ€ÎČÿŹŻ±°đڳ΀ÿÿÿ€Òüÿ€ù̻΄ÿÿÿ€Èÿ·±ł”ŠÿżŸÍ„ÿÿÿ€ÉïüÿùÀĂÌ„ÿÿÿ„ÍĆüĂĆÇÈ΄ÿÿÿČ„„û€ÿ„ŠČÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ­„ú€Źüÿÿ„ÚüÙÿŚÂĂęÿ ÿ„ŰŁ€„€ŁÖÿżĂțÿÿ„Ś©««ȘšŐžđÿÀÂÿÿÿ„Ő«­Ź«©Ń°œœÓ„ÿÿÿ„Őźź«ÂÀÍÛÜÎÒ€ÿÿÿ„ÓźÄûÿäÏ€ÿÿÿ„Ń°äĘțÀÏÿùÌŁÿÿÿ„Đłö»ŒčâÌÿÌ€ÿÿÿ€ÎČÿŹŻ±°đڳ΀ÿÿÿ€Òüÿ€ù̻΄ÿÿÿ€Èÿ·±ł”ŠÿżŸÍ„ÿÿÿ€ÉïüÿùÀĂÌ„ÿÿÿ„ÍĆüĂĆÇÈ΄ÿÿÿČ„„û€ÿ„ŠČÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿi\ü[Z[iüÿÿ\¶ę”ŽČȎ’ęÿ ÿ[±X[\[W­Mÿ†’țÿÿ[Ż_cdc_­Oÿÿ‰‘ÿÿÿ[«cggfb©rONš[ÿÿÿ\§fhfd`x ąą€[ÿÿÿ\ŁhcÀXÿUŒ_eą\ÿÿÿ\ iÀüÿżh \ÿÿÿ\œk^ÿž]žÿ^kœ\ÿÿÿ\˜mÿÿaiaÿÿm˜\ÿÿÿ\•reÿ»d»ÿer•\ÿÿÿ]’wÆüÿÆw’]ÿÿÿ]Ž~xÈmÿmÈx~Ž]ÿÿÿ^†…‚‚…†^ÿÿÿ^^ț]\ț]ÿ^ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ­„ú€Źüÿÿ„ÚüÙÿŚÂĂęÿ ÿ„ŰŁ€„€ŁÖÿżĂțÿÿ„Ś©««ȘšŐžđÿÀÂÿÿÿ„Ő«­Ź«©Ń°œœÓ„ÿÿÿ„Őźź«ÂÀÍÛÜÎÒ€ÿÿÿ„ÓźÄûÿäÏ€ÿÿÿ„Ń°äĘțÀÏÿùÌŁÿÿÿ„Đłö»ŒčâÌÿÌ€ÿÿÿ€ÎČÿŹŻ±°đڳ΀ÿÿÿ€Òüÿ€ù̻΄ÿÿÿ€Èÿ·±ł”ŠÿżŸÍ„ÿÿÿ€ÉïüÿùÀĂÌ„ÿÿÿ„ÍĆüĂĆÇÈ΄ÿÿÿČ„„û€ÿ„ŠČÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ­„ú€Źüÿÿ„ÚüÙÿŚÂĂęÿ ÿ„ŰŁ€„€ŁÖÿżĂțÿÿ„Ś©««ȘšŐžđÿÀÂÿÿÿ„Ő«­Ź«©Ń°œœÓ„ÿÿÿ„Őźź«ÂÀÍÛÜÎÒ€ÿÿÿ„ÓźÄûÿäÏ€ÿÿÿ„Ń°äĘțÀÏÿùÌŁÿÿÿ„Đłö»ŒčâÌÿÌ€ÿÿÿ€ÎČÿŹŻ±°đڳ΀ÿÿÿ€Òüÿ€ù̻΄ÿÿÿ€Èÿ·±ł”ŠÿżŸÍ„ÿÿÿ€ÉïüÿùÀĂÌ„ÿÿÿ„ÍĆüĂĆÇÈ΄ÿÿÿČ„„û€ÿ„ŠČÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ†ùu†üÿÿu±°ț±°ŻŻŽ€ęÿÿuŻuțwuŻlÿź€țÿÿuŻzț}{ŻnûÿŽ„ÿÿÿu­|zxxwˆ‚klŹuÿÿÿuŹ|úÿ}Źuÿÿÿu«‚~ywy}~€‚«uÿÿÿu©‡…țÿ…‰‰‡©uÿÿÿušŠŠ……‹ŒŠšuÿÿÿu§ŒțÿŒ§uÿÿÿuŠ‘Ž‹‡‡Œ’“’Šuÿÿÿu€’ęÿ’––•€uÿÿÿuŁ—”““”˜ț™ŁuÿÿÿvŁűžŁvÿÿÿ•öv•ÿÿÿĘöÌĘÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ™ęŽÿŽ™üÿ ÿăââáĘÛĘàż”ęÿ ÿŽßŽ‹Äÿփÿ»ŽțÿÿŽĘ“–ÿÂԅôÿŒŽÿÿÿÛ—š”ÇÿŃ€†…ۏÿÿÿŰ›—ÿÈ©ŐŐÔ֎ÿÿÿŐŸ ›Ìÿ™œÔÿÿÿŃąŁžÿ͝ŁŁąŃÿÿÿÎŠŠĄÍÿ Š§ŠÎÿÿÿÌȘ©ąÿÿĄ©ŹȘ̏ÿÿÿÉ­ȘćÿÿćȘźźÉÿÿÿÆ°­ęÿ­±±ÆÿÿÿÄ”ł°źź°ł””Đÿÿÿ‘ÄŒŒę»țŒđÿÿÿ„‘ű‘„ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿ ÿOA@@?>>??Püÿ ÿAŽŠ„‚†ˆh€ęÿ ÿ@Š=>7ÿ|/ÿ`țÿÿ@‡CD9ÿ–w0ÿÿeÿÿÿ@ƒGH=›ÿtO32@ÿÿÿ@IJ?ÿ›Pț}~@ÿÿÿA}LLBžÿ?IKI|@ÿÿÿAzOODÿžDOQOzAÿÿÿAvRQFÿDQTRvAÿÿÿAsTPAÿÿ@QUTsAÿÿÿApVOÈÿÿÈOWXpAÿÿÿBlYPęÿPYZlBÿÿÿBj\YQMMQY]]jBÿÿÿCgcbęabccgCÿÿÿnCűBCnÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿ ÿpeddccbccqüÿ ÿe„Š§€Ÿœž †—ęÿ ÿdŁ@C<Ÿÿ–Vÿ—țÿÿdŁJNDÿ™”Wÿÿƒ—ÿÿÿd QTJĄÿ’sYX›dÿÿÿdŸWYOÿąf›œš›dÿÿÿd\^UšÿR[[Y›dÿÿÿdšbcZÿ©Zcda™dÿÿÿd˜ij`Șÿ^jki˜dÿÿÿd–nl`ÿÿ^lpn–dÿÿÿe“smÒÿÿÒntt“eÿÿÿe’yręÿryz’eÿÿÿe€}wssw}€€eÿÿÿeˆˆę‡țˆeÿÿÿ‡fűef‡ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿk]ț[țZ[jüÿ ÿ]ËÊÊÈĂÀĂƛ“ęÿ ÿ[ÆX[UȘÿčKÿ•’țÿÿ\Ăad\ÿŠ”Męÿ—’ÿÿÿ\Àhkc­ÿłxONœ\ÿÿÿ\Œmogÿźžč·č\ÿÿÿ\žqskłÿhppn·\ÿÿÿ]Žvxoÿ”owxuŽ]ÿÿÿ]±{{s”ÿr|}{±]ÿÿÿ]­€tÿÿs‚­]ÿÿÿ]©„Űÿÿۀ……©]ÿÿÿ]„‰ƒęÿƒ‰Š„]ÿÿÿ^ŁŒ‡„„‡Ł^ÿÿÿ_ąš™™˜˜™™ššą_ÿÿÿ‚_ű^_‚ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ0ú.üÿÿ§„ț§„ąŁ”bęÿÿ ț œÿŒbțÿÿ˜ț™ÿÿ•dÿÿÿț$!H7ÿÿÿ‰$))("FÔÿ‰ÿÿÿ*..*jÿä|$ÿÿÿy043'ÿÜ-0yÿÿÿr695€țÿ16rÿÿÿj<=2Űädm:BCBcÿÿÿZBłÿÜ?HIIH[ÿÿÿSSÿĘOLęNTÿÿÿOVPQVüXOÿÿÿUűUÿÿÿĘöÌĘÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿÄŸęœÿŒœÄüÿÿŸùÿìÔęÿ ÿœÿșœŸœșÿ¶ÿèÔțÿÿœÿÀĂÄĂÀÿžêÿèÔÿÿÿœÿĂÆÇÆÂțÒž·țœÿÿÿœûĆÇÆÄÂÖűùűùœÿÿÿŸśÈÈßțÿÛĆĆśŸÿÿÿŸôÊÊÿóÍćÿÈÉôŸÿÿÿŸńËÌÏÉÇáÿÉËńŸÿÿÿżíÎÏÏÍęÿȚÍÎíżÿÿÿżéĐÒŃÏÿŐÏŃĐéżÿÿÿżæÓÔÔŃáŃÓÔÓæżÿÿÿżâțÖÔÿÔțÖâżÿÿÿÀàÚÛÚÚÙÚÚÛÚàÀÿÿÿÄüÀżüÀÄÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿűâćææäćúùÿíôóòòöæâÿüûüûûúțíÿúûûüùćßüáàäêțțőôöûùúęćëûúôóęôśßæúöóôößëööòóőȚïôęńđûńòőĘëóîùïîïïóÛéđöíîńÚéïöìíđÙțëțìëțìëìëìïÜńóÿìŹȘśš©ššżńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿđëííìíśÿîÿüüÿőîöțóòóęÿÿèțűőòśőóțôűíóÿÿćòëđôòóôôóóöïêśüćâĘòęùùúÿòéŐáśśùúìâËéśűôùëôŐÉôńùđńôæÿÔÙôìùíïćïÿíèćíûëêëèêÿÿúÿțśÿäÿÿÿź­ùŹÿźèÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿœ¶û”¶œüÿÿ¶ùÿçÏęÿÿ”ÿĂțĆĂÿźÿäÏțÿÿ”ÿÉËÌËÉÿ°ëÿäÎÿÿÿ¶ÿÌÎÎÍËęÍŻźÿ¶ÿÿÿ¶ęÏÏÎÍÌÛűùúü”ÿÿÿ¶üÏòüÿïÍû¶ÿÿÿ¶ùÒúÿŃù¶ÿÿÿ¶śÔÿÓțÔÓÿÔś¶ÿÿÿ¶öŰÿŰÚÛÚŰÿŰö¶ÿÿÿ¶óÜÿÚțÜÚÿÜó¶ÿÿÿ¶òȚúÿȚò¶ÿÿÿ¶đäúâäđ¶ÿÿÿžòëëüêÿëòžÿÿÿżžű¶žżÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿœùÀŒüÿÿÀûçæçË»ęÿÿÀæżțÁżćŒÿÊșțÿÿÀćĂțĆĂćŸóÿÌ»ÿÿÿÀäĆțÄĂÍÊŒœäÀÿÿÿÀăĆúÿÆăÀÿÿÿÀâÉÈțĆÇÈÈÉâÀÿÿÿÀáÌËțÿËÍÍÌáÀÿÿÿÀàÍÍËÉÉËÍÎÍàÀÿÿÿÀàÏĐÎțÿÎĐÏàÀÿÿÿÀȚŃĐÏÍÍÏŃÒŃȚÀÿÿÿÀĘÒęÿÒțÔĘÀÿÿÿÀÜŐÔÓÓÔŐțÖÜÀÿÿÿÁĘÙúÚÙĘÁÿÿÿŹöÁŹÿÿÿżöŁżÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿÆęÀżŸŸżÆüÿÿÀùÿîŐęÿÿÀÿ-%țÿ·ÿíŐțÿÿÁÿ'3'țÿčéÿîŐÿÿÿÀÿ#zțÿŰ»žÿżÿÿÿżöÿŸÿÿÿŸûÿÿÿżÿÿÿŸüÿv#+#wÿżÿÿÿŸüÿ-3-ÿÀÿÿÿÁüÿ{(1(|ÿÂÿÿÿĐúÿțÿĐÿÿÿ-ț  .ÿÿÿ!>-ę.ÿ/.->!ÿÿÿ$Bű;B$ÿÿÿ0ö$0ÿÿÿÏöÌÏÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿĆżûŸżÄüÿÿżőôțőôóóȚŐęÿ ÿżńŒœŸœŒïčÿÚÔțÿÿżïÀÁÂÁżíșëÿÛŐÿÿÿżëÁĂĂÁŸçÉžčêżÿÿÿżèÂÄÂÒâúÿÿäçżÿÿÿżćÄĆÁüÿœăżÿÿÿżâĆÆÂÿôâÎÿÀáżÿÿÿÀßĆĆÁÿŸŸŒÿÀĘÀÿÿÿÀÜĆĂżÿżúÿÿÁÛÀÿÿÿÀŰÄûÿÿżțÿĂŚÀÿÿÿÀŐĆțÿÁûÿûÆŐÀÿÿÿÀÒÇûÿûÆÇÆÈÉÒÀÿÿÿÁĐÌÊÉÊțÌÿÍĐÁÿÿÿĆÁÁțÀûÁĆÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿÈżûŸżÉüÿÿżùÿÊÖęÿÿŸÿŒțżŒÿčÿÊÖțÿÿŸÿĂțÆĂÿŒóÿËŚÿÿÿŸÿÆÈÇÈÈÜŚŸŒÿżÿÿÿżęÉÉÿŚÊËËÌÊężÿÿÿżúÍÌÿÿÙÎÏÏÍúżÿÿÿżűĐÏțÿÛŃÒĐűżÿÿÿżőÓÒęÿàŐÓőżÿÿÿżóŚÖțÿèÚŰŚóżÿÿÿżńÚÙÿÿêĘÚÛÚńżÿÿÿżîĘÜÿìßțȚĘîżÿÿÿÀìààéâęáàìÀÿÿÿÀëűæëÀÿÿÿÆöÀÆÿÿÿĘöÌĘÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿÄŸúœÄüÿÿŸùÿéÔęÿ ÿœÿ»œŸœ»ÿ·ÿçÔțÿÿœÿÀțĂÀÿžêÿćÔÿÿÿœüüÂüŃč·üŸÿÿÿŸűÂțÿĂŰűűöśœÿÿÿŸőÄțÿÆÈÇÇĆôŸÿÿÿŸòÈÆĆÇțÈÿÉòŸÿÿÿżîÉÿÿÈęÿÉîżÿÿÿżëÌÊÉËËțÊÌëżÿÿÿżèÎțÿÍÿÍÿÏèżÿÿÿżäŃÎÍÍÎÏĐĐŃäżÿÿÿżàÔüÿÓÿÔàżÿÿÿÀàÚŰțŚŰÙÙÚàÀÿÿÿÄÀùżÿÀÄÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ4û2üÿÿŠ€țŠ€ąŁ—fęÿÿžțœÿfțÿÿ˜$"/*˜ ÿÿ˜hÿÿÿ‘%*%ĄJD ÿÿÿŠ+0*Ÿ )/1,Šÿÿÿƒ150ƒd0551ƒÿÿÿ|7;4±Á3:;7|ÿÿÿu>@7Đąl8;:tÿÿÿlEC‹_ÿ¶šȘhÿÿÿeFLâŸ{O]źŻaÿÿÿZ’ÿzKOQPMM]ÿÿÿQÿ–RWüXWÿÿÿQ]^ûbcSÿÿÿXűXÿÿÿĘöÌĘÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿÈÀúżÉüÿÿÀśöțśöőśËÖęÿÿżôŸțÀŸó»ÿÊÖțÿÿżóÂțĆĂôœóÿËŚÿÿÿżńĆțÇÆÖÒŸœòÀÿÿÿżîĆÆÆÇÆÇÆÆĆîżÿÿÿÀêÿÿùÜÿŐęÿÿêÀÿÿÿÀéÊÿÖțÿŚÿđÈéÀÿÿÿÀèÊÿöÿÿęüÎÌèÀÿÿÿÀćÌÿÿéÿÿÚÏÏćÀÿÿÿÀăÏÿëÚÿìĐÒŃăÀÿÿÿÀàÓÒÒÓÒÒÔÔÓàÀÿÿÿÀȚűÖȚÀÿÿÿÁĘÙúÚÙĘÁÿÿÿÆöÁÆÿÿÿĘöÌĘÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿÄŸęœÿŒœÄüÿÿŸùÿìÔęÿ ÿœÿșœŸœșÿ¶ÿèÔțÿÿœÿÀĂÄĂÀÿžêÿèÔÿÿÿœÿĂÆÇÆĂțÒž·țœÿÿÿœûÆÈÉÇĆÖśśűùœÿÿÿŸśÈÊÉÆŐèđöĂöŸÿÿÿŸôÊÊÓęÿáÇóŸÿÿÿŸńËÉÿÿȚȚÿțÈđŸÿÿÿżíÌŐûÿÊíżÿÿÿżéÎôÿűÌÓàéÎéżÿÿÿżćĐüŐțÿęâÒæżÿÿÿżâÓÿüïŃÓÓÔÖâżÿÿÿÀàÙțŰÙęÚàÀÿÿÿÄÀężûÀÄÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿÄŸęœÿŒœÄüÿÿŸùÿìÔęÿ ÿœÿșœŸœșÿ¶ÿèÔțÿÿœÿÀĂÄĂÀÿžêÿèÔÿÿÿœÿĂÆÇÆĂțÒž·țœÿÿÿœûĆÇÇĆĂÖűùűùœÿÿÿŸśÇÆáśûöáĂÄöŸÿÿÿŸóÈëÿöśőęæÇóŸÿÿÿŸđÇÿÿêëòÿÿÇđŸÿÿÿżíÊÿÿăéőÿÿÊíżÿÿÿżéÍđÿçëúÿÿÍéżÿÿÿżćŃîÿÿùńűëŃćżÿÿÿżâŐÓïÿÿöëÓŐâżÿÿÿÀàÚÚŰÖĘŚÙÚÚàÀÿÿÿÄțÀüżțÀÄÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ4#ę!ÿ !5üÿÿ#š˜ț™—•”dlęÿ ÿ!•!"!‘ÿ[kțÿÿ!“(-.-'ÿÿ`kÿÿÿ!/33/)‡: ‹!ÿÿÿ!32*gbŸĄz… ÿÿÿ!‰5mûÿ»} ÿÿÿ!„8»ąVXTÿđvÿÿÿ!:é`NQKČxÿv ÿÿÿ!y9ÿ+5:7Ù ?z!ÿÿÿ‡üÿò|M{"ÿÿÿ kÿD7:> ÿZVx"ÿÿÿ!mÔüÿïV^v"ÿÿÿ$td`ț_`cilx$ÿÿÿZ$!ü !"#$ZÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ4#ę!ÿ !5üÿÿ#š˜ț™—•”dlęÿ ÿ!•!"!‘ÿ[kțÿÿ!“(-.-'ÿÿ`kÿÿÿ!/33/)‡: ‹!ÿÿÿ!32*gbŸĄz… ÿÿÿ!‰5mûÿ»} ÿÿÿ!„8»ąVXTÿđvÿÿÿ!:é`NQKČxÿv ÿÿÿ!y9ÿ+5:7Ù ?z!ÿÿÿ‡üÿò|M{"ÿÿÿ kÿD7:> ÿZVx"ÿÿÿ!mÔüÿïV^v"ÿÿÿ$td`ț_`cilx$ÿÿÿZ$!ü !"#$ZÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ4#ę!ÿ !5üÿÿ#š˜ț™—•”dlęÿ ÿ!•!"!‘ÿ[kțÿÿ!“(-.-'ÿÿ`kÿÿÿ!/33/)‡: ‹!ÿÿÿ!32*gbŸĄz… ÿÿÿ!‰5mûÿ»} ÿÿÿ!„8»ąVXTÿđvÿÿÿ!:é`NQKČxÿv ÿÿÿ!y9ÿ+5:7Ù ?z!ÿÿÿ‡üÿò|M{"ÿÿÿ kÿD7:> ÿZVx"ÿÿÿ!mÔüÿïV^v"ÿÿÿ$td`ț_`cilx$ÿÿÿZ$!ü !"#$ZÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ4#ę!ÿ !5üÿÿ#š˜ț™—•”dlęÿ ÿ!•!"!‘ÿ[kțÿÿ!“(-.-'ÿÿ`kÿÿÿ!/33/)‡: ‹!ÿÿÿ!32*gbŸĄz… ÿÿÿ!‰5mûÿ»} ÿÿÿ!„8»ąVXTÿđvÿÿÿ!:é`NQKČxÿv ÿÿÿ!y9ÿ+5:7Ù ?z!ÿÿÿ‡üÿò|M{"ÿÿÿ kÿD7:> ÿZVx"ÿÿÿ!mÔüÿïV^v"ÿÿÿ$td`ț_`cilx$ÿÿÿZ$!ü !"#$ZÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ‘ˆę‡ÿ†‡’üÿ ÿˆŐÔÔŐÔÓŃŃł°ęÿ ÿ‡Ń„‡ˆ‡„Î|ÿźŻțÿÿ‡ÎŠŽŠÌ~öÿŻŻÿÿÿ‡ÊŽ‘’‘Éš~}ȇÿÿÿ‡È‘ŒŸĂÄÄƇÿÿÿˆÄ‘ŽÒ†ÿ„΋ŽĂ‡ÿÿÿˆÁ“ÒüÿђÁˆÿÿÿˆŒ”‹ÿˊËÿ‹”Œˆÿÿÿˆș•ÿÿ“ÿÿ•șˆÿÿÿˆ¶š‘ÿϑÏÿ‘š¶ˆÿÿÿ‰łžŚüÿŚžł‰ÿÿÿ‰±ąžŰ–ÿ–Űžą±‰ÿÿÿŠźȘ©§Š„Š§©ȘźŠÿÿÿŸŠű‰ŠŸÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ4#ę!ÿ !5üÿÿ#š˜ț™—•”dlęÿ ÿ!•!"!‘ÿ[kțÿÿ!“(-.-'ÿÿ`kÿÿÿ!/33/)‡: ‹!ÿÿÿ!32*gbŸĄz… ÿÿÿ!‰5mûÿ»} ÿÿÿ!„8»ąVXTÿđvÿÿÿ!:é`NQKČxÿv ÿÿÿ!y9ÿ+5:7Ù ?z!ÿÿÿ‡üÿò|M{"ÿÿÿ kÿD7:> ÿZVx"ÿÿÿ!mÔüÿïV^v"ÿÿÿ$td`ț_`cilx$ÿÿÿZ$!ü !"#$ZÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ4#ę!ÿ !5üÿÿ#š˜ț™—•”dlęÿ ÿ!•!"!‘ÿ[kțÿÿ!“(-.-'ÿÿ`kÿÿÿ!/33/)‡: ‹!ÿÿÿ!32*gbŸĄz… ÿÿÿ!‰5mûÿ»} ÿÿÿ!„8»ąVXTÿđvÿÿÿ!:é`NQKČxÿv ÿÿÿ!y9ÿ+5:7Ù ?z!ÿÿÿ‡üÿò|M{"ÿÿÿ kÿD7:> ÿZVx"ÿÿÿ!mÔüÿïV^v"ÿÿÿ$td`ț_`cilx$ÿÿÿZ$!ü !"#$ZÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿÉùÀÉüÿÿÀûçæçËÖęÿÿÀæżțÁżćŒÿÊÖțÿÿÀćĂțĆĂćŸóÿÌŚÿÿÿÀäĆțÄĂÍÊŒœäÀÿÿÿÀăĆúÿÆăÀÿÿÿÀâÉÈțĆÇÈÈÉâÀÿÿÿÀáÌËțÿËÍÍÌáÀÿÿÿÀàÍÍËÉÉËÍÎÍàÀÿÿÿÀàÏĐÎțÿÎĐÏàÀÿÿÿÀȚŃĐÏÍÍÏŃÒŃȚÀÿÿÿÀĘÒęÿÒțÔĘÀÿÿÿÀÜŐÔÓÓÔŐțÖÜÀÿÿÿÁĘÙúÚÙĘÁÿÿÿÆöÁÆÿÿÿĘöÌĘÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿO@?>>ț=>Püÿ ÿ@Ÿž›•’–™sęÿ ÿ?˜;=6œÿ‰-ÿițÿÿ?”BD9ÿ”„/ÿÿm~ÿÿÿ?DF;šÿ€S20‹?ÿÿÿ@‰FH=ÿ™Q…†…†?ÿÿÿ@„IJ@ÿ=GHFƒ@ÿÿÿ@KK@ÿœ@KLJ@ÿÿÿAzMMAšÿ@MPMzAÿÿÿAtOL<ÿÿ;MQPtAÿÿÿBoPHÇÿÿÆHQQoBÿÿÿBjRJęÿJSTjBÿÿÿBdVSKGGKSWWdBÿÿÿC`ZZęXțZ`CÿÿÿnöCnÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿ ÿƒyxxwwvwx„üÿ ÿyĆĂÄŸŒŸÀą„ęÿ ÿxÁuwrșÿ¶kÿœ„țÿÿxż|~wÿ”ŽmùÿŸ„ÿÿÿxŒ€‚{»ÿ±‹omșxÿÿÿx脅~ÿŒŽ¶·¶žxÿÿÿxž‡ˆŸÿ…†„·xÿÿÿx”Š‹„ÿÀ„‹ŒŠ”xÿÿÿxłŽŽ‡Àÿ†ŽŽłxÿÿÿy°‘…ÿÿ…’‘°yÿÿÿy­”Țÿÿʐ••­yÿÿÿyŹ—’ęÿ“˜˜Źyÿÿÿy©œš•““•šœœ©yÿÿÿz©ŁąąĄĄąąŁŁ©zÿÿÿ•öz•ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿpțdcțbcqüÿ ÿešš©ŠĄžĄą‡—ęÿ ÿd„BE>Ÿÿ˜Vÿ€—țÿÿd„LPFÿ›–Wÿÿ„–ÿÿÿd€SVLąÿ–tYXžcÿÿÿdĄZ\RÿŁhžžœcÿÿÿdŸ_aX©ÿU^^\dÿÿÿdeg]ÿ«]fgddÿÿÿdškkb­ÿ`lmkšdÿÿÿd™pnbÿÿ`nrp™dÿÿÿd—uoÓÿÿÓpvv—dÿÿÿd•|uęÿv|}•dÿÿÿd’ƒ€zwwz€ƒƒ’dÿÿÿe“Œ‹ęŠ‹ŒŒ“eÿÿÿ‡öe‡ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ —ę–•–– üÿ ÿ˜èçèæăáăćÆșęÿ ÿ—ä•—“Èÿ܌ÿÂșțÿÿ—䝟šÿÇێòÿÄșÿÿÿ—ᥣžÌÿÙ­ß—ÿÿÿ—à„§ąÿÍŽĘĘÜʖÿÿÿ—ȚȘ«§Òÿ€š©§Ę—ÿÿÿ—ÛźŻ«ÿÔ«Ż°źÛ—ÿÿÿ—ÚČČźÔÿ­łŽČڗÿÿÿ—۶”ŻÿÿŻ¶·¶Ű—ÿÿÿ—Őșžèÿÿèž»»Ő—ÿÿÿ—ÓżŒęÿŒżÀӗÿÿÿ—ŃĂÂżœœżÂĂĂїÿÿÿ™ÓÌÌęËțÌәÿÿÿ©™ű—™©ÿÿÿÜöÌÜÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿÿ4û2üÿÿŠ€țŠ€ąŁ—fęÿÿžțœÿfțÿÿ˜ț$š ÿÿ˜hÿÿÿ‘%ț*'L;ÿÿÿŠ+00/*LÖÿ#Šÿÿÿƒ1551pÿä+ƒÿÿÿ|7;:/ÿȚ"47|ÿÿÿu>A=†țÿ9>uÿÿÿlEF<ÙćjsCElÿÿÿeIC˜ÿFJKKeÿÿÿ^L·ÿĘIQRRQ^ÿÿÿW]ÿßXVęXWÿÿÿRaZ[aębcSÿÿÿXűXÿÿÿĘöÌĘÿÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńń9ŻŠąąȘ ùȚûÿ© đúÿűùùöśśÿŰđóÿđòóÿđńóÿđïóÿđïóÿđïóÿđíóÿđíóÿđïóÿđńóÿđŽŸźś­±Œ^ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńˆÂźźÄ{śđüÿ w@TPQURńőÿMòőÿ,?ńóÿđïóÿ§îóÿ9îôÿżîôÿ\ïőÿÙđőÿušÉžù·ÄźńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńęùÿüüśÿßęöÿàțőÿâôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿîöÿî@ö\@ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿòöÿò0ö30ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńâùÿàüśÿ€ęöÿ€țőÿŠôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿčöÿč"ö3"ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńâùÿàüśÿ€ęöÿ€țőÿŠôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿčöÿč"ö3"ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńâùÿàüśÿ€ęöÿ€țőÿŠôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿčöÿč"ö3"ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńâùÿàüśÿ€ęöÿ€țőÿŠôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿčöÿč"ö3"ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńïùÿêüśÿŠęöÿ§țőÿŹôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿÀöÿÀ#ö3#ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńâùÿàüśÿ€ęöÿ€țőÿŠôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿôÿÿčöÿč"ö3"ńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńńapplication/library/img/src/icons-big.psd000064400002163203147577724760014501 0ustar008BPSŽ0œj8BIMZ%GZ%G8BIM%Ç]ćt”nőÛŸ9”Àéy\8BIM$o_ Adobe Photoshop CS5 Macintosh 2010-09-19T17:17:49+04:00 2011-04-22T18:30:18+04:00 2011-04-22T18:30:18+04:00 application/vnd.adobe.photoshop xmp.iid:FD7F117407206811B1BA95E37140A3C2 xmp.did:01801174072068119109C4A19543BAD1 xmp.did:01801174072068119109C4A19543BAD1 created xmp.iid:01801174072068119109C4A19543BAD1 2010-09-19T17:17:49+04:00 Adobe Photoshop CS5 Macintosh saved xmp.iid:02801174072068119109C4A19543BAD1 2010-09-19T17:27:56+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:03801174072068119109C4A19543BAD1 2010-09-19T17:41:22+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:04801174072068119109C4A19543BAD1 2010-09-19T17:43:45+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:05801174072068119109C4A19543BAD1 2010-09-19T17:45:17+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:06801174072068119109C4A19543BAD1 2010-09-19T17:46:50+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:07801174072068119109C4A19543BAD1 2010-09-19T17:54:48+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:08801174072068119109C4A19543BAD1 2010-09-19T17:56:02+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:09801174072068119109C4A19543BAD1 2010-09-19T18:04:23+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0A801174072068119109C4A19543BAD1 2010-09-19T18:04:51+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:963608160E2068119109C4A19543BAD1 2010-09-19T18:05:17+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:973608160E2068119109C4A19543BAD1 2010-09-19T18:09:57+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:983608160E2068119109C4A19543BAD1 2010-09-19T18:12:55+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:993608160E2068119109C4A19543BAD1 2010-09-19T18:15:16+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:9A3608160E2068119109C4A19543BAD1 2010-09-19T18:18:59+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:9B3608160E2068119109C4A19543BAD1 2010-09-19T18:19:05+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:9C3608160E2068119109C4A19543BAD1 2010-09-19T18:22:08+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:9D3608160E2068119109C4A19543BAD1 2010-09-19T18:24:50+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:9E3608160E2068119109C4A19543BAD1 2010-09-19T18:27:36+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:9F3608160E2068119109C4A19543BAD1 2010-09-19T18:31:59+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:A03608160E2068119109C4A19543BAD1 2010-09-19T18:33:42+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:08D3AC5E122068119109C4A19543BAD1 2010-09-19T18:35:57+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:09D3AC5E122068119109C4A19543BAD1 2010-09-19T18:36:56+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0AD3AC5E122068119109C4A19543BAD1 2010-09-19T18:39:46+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0BD3AC5E122068119109C4A19543BAD1 2010-09-19T18:49:04+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0CD3AC5E122068119109C4A19543BAD1 2010-09-19T18:50:02+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0180117407206811A3A3FC4A228C975D 2011-02-04T14:32:54+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0280117407206811A3A3FC4A228C975D 2011-02-04T14:49:22+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:0380117407206811A3A3FC4A228C975D 2011-02-04T14:50:09+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:C8C4172C0E206811A3A3FC4A228C975D 2011-02-04T15:35:46+03:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:FA7F117407206811B1BA95E37140A3C2 2011-04-22T18:20:12+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:FC7F117407206811B1BA95E37140A3C2 2011-04-22T18:28:45+04:00 Adobe Photoshop CS5 Macintosh / saved xmp.iid:FD7F117407206811B1BA95E37140A3C2 2011-04-22T18:30:18+04:00 Adobe Photoshop CS5 Macintosh / 3 sRGB IEC61966-2.1 php php xmp.did:F77F117407206811B1BA95E37140A3C2 8BIM:“ printOutputClrSenumClrSRGBCInteenumInteClrmMpBlboolprintSixteenBitbool printerNameTEXT8BIM;ČprintOutputOptionsCptnboolClbrboolRgsMboolCrnCboolCntCboolLblsboolNgtvboolEmlDboolIntrboolBckgObjcRGBCRd doub@oàGrn doub@oàBl doub@oàBrdTUntF#RltBld UntF#RltRsltUntF#Pxl@R vectorDataboolPgPsenumPgPsPgPCLeftUntF#RltTop UntF#RltScl UntF#Prc@Y8BIMíHH8BIM&?€8BIMî Transparency8BIM Transparency8BIMïÿÿd8BIM5ÿÿd8BIM8BIM x8BIM8BIMó 8BIM' 8BIMőH/fflff/ffĄ™š2Z5-8BIMűpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿè8BIM8BIM>8BIM08BIM-,8BIM’@@U ‹À–œPH%€+Æ28:>†DÀKQ@W†]ÆcújFp†vÀ}ƒM‰†Æą†8BIM6šnullVrsnlongenabbool numBeforelongnumAfterlongSpcnlong minOpacitylong maxOpacitylong2BlnMlong8BIM3null Vrsnlong frameStepObjcnull numeratorlong denominatorlongX frameRatedoub@>timeObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlongp denominatorlongX workInTimeObjcnull numeratorlong denominatorlongX workOutTimeObjcnull numeratorlongp denominatorlongXLCntlongglobalTrackListVlLs hasMotionbool8BIM4FnullVrsnlongsheetTimelineOptionsVlLs8BIM8BIMönullbaseNameTEXTUserboundsObjcRct1Top longLeftlongBtomlongŽRghtlong0slicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongŽRghtlong0urlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?đ8BIM H HLinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP cprtP3desc„lwtptđbkptrXYZgXYZ,bXYZ@dmndTpdmddĈvuedL†viewÔ$lumiűmeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ oą8őXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view€ț_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ€©źČ·ŒÁÆËĐŐÛàćëđöû %+28>ELRY`gnu|ƒ‹’šĄ©±čÁÉŃÙáéòú &/8AKT]gqz„Ž˜ąŹ¶ÁËŐàëő !-8COZfr~Š–ąźșÇÓàìù -;HUcq~Œšš¶ÄÓáđț +:IXgw†–Š”ĆŐćö'7HYj{ŒŻÀŃăő+=Oat†™ŹżÒćű 2FZn‚–ȘŸÒçû  % : O d y  € ș Ï ć û  ' = T j  ˜ ź Ć Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ă Ț ű.Id›¶Òî %A^z–łÏì &Ca~›čŚő1OmŒȘÉè&Ed„ŁĂă#Ccƒ€Ćć'Ij‹­Îđ4Vx›œà&IlČÖúAe‰źÒś@eŠŻŐú Ek‘·Ę*QwžĆì;cŠČÚ*R{ŁÌőGp™Ăì@j”Ÿé>i”żê  A l ˜ Ä đ!!H!u!Ą!Î!û"'"U"‚"Ż"Ę# #8#f#”#Â#đ$$M$|$«$Ú% %8%h%—%Ç%ś&'&W&‡&·&è''I'z'«'Ü( (?(q(ą(Ô))8)k))Đ**5*h*›*Ï++6+i++Ń,,9,n,ą,Ś- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/ț050l0€0Û11J1‚1ș1ò2*2c2›2Ô3 3F33ž3ń4+4e4ž4Ű55M5‡5Â5ę676r6ź6é7$7`7œ7Ś88P8Œ8È99B99Œ9ù:6:t:Č:ï;-;k;Ș;è<' >`> >à?!?a?ą?â@#@d@Š@çA)AjAŹAîB0BrB”BśC:C}CÀDDGDŠDÎEEUEšEȚF"FgF«FđG5G{GÀHHKH‘HŚIIcI©IđJ7J}JÄK KSKšKâL*LrLșMMJM“MÜN%NnN·OOIO“OĘP'PqP»QQPQ›QæR1R|RÇSS_SȘSöTBTTÛU(UuUÂVV\V©VśWDW’WàX/X}XËYYiYžZZVZŠZő[E[•[ć\5\†\Ö]']x]É^^l^œ__a_ł``W`Ș`üaOaąaőbIbœbđcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišińjHjŸjśkOk§kÿlWlŻmm`mčnnknÄooxoŃp+p†pàq:q•qđrKrŠss]sžttptÌu(u…uáv>v›vűwVwłxxnxÌy*y‰yçzFz„{{c{Â|!||á}A}Ą~~b~Â#„ć€G€š kÍ‚0‚’‚ôƒWƒș„„€„ă…G…«††r†Ś‡;‡ŸˆˆiˆÎ‰3‰™‰țŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘š’’z’ă“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜ž™$™™üšhšŐ›B›Żœœ‰œśdÒž@žźŸŸ‹Ÿú i ŰĄGĄ¶ą&ą–ŁŁvŁæ€V€Ç„8„©ŠŠ‹Šę§n§àšRšÄ©7©©ȘȘ««u«éŹ\ŹĐ­D­žź-źĄŻŻ‹°°u°ê±`±ÖČKČÂł8łźŽ%Žœ””Š¶¶y¶đ·h·àžYžŃčJčÂș;ș”».»§Œ!Œ›œœŸ Ÿ„ŸÿżzżőÀpÀìÁgÁăÂ_ÂÛĂXĂÔÄQÄÎĆKĆÈÆFÆĂÇAÇżÈ=ÈŒÉ:ÉčÊ8Ê·Ë6˶Ì5Ì”Í5Í”Î6ζÏ7ÏžĐ9ĐșŃ<ŃŸÒ?ÒÁÓDÓÆÔIÔËŐNŐŃÖUÖŰŚ\ŚàŰdŰèÙlÙńÚvÚûۀÜ܊ĘʖȚȚąß)߯à6àœáDáÌâSâÛăcăëäsäüć„æ æ–çç©è2èŒéFéĐê[êćëpëûì†ííœî(îŽï@ïÌđXđćńrńÿòŒóó§ô4ôÂőPőȚömöûśŠűűšù8ùÇúWúçûwüü˜ę)ęșțKțÜÿmÿÿ8BIM,8BIM Y  =ÿŰÿí Adobe_CMÿîAdobed€ÿۄ            ÿÀ "ÿĘÿÄ?   3!1AQa"q2‘Ą±B#$RÁb34r‚ŃC%’Sđáńcs5ąČƒ&D“TdEÂŁt6ÒUâeòł„ĂÓuăóF'”€…Ž•ÄÔäô„”ĆŐćőVfv†–Š¶ÆÖæö7GWgw‡—§·ÇŚçś5!1AQaq"2‘Ą±B#ÁRŃđ3$bár‚’CScs4ń%ąČƒ&5ÂÒD“TŁdEU6teâòł„ĂÓuăóF”€…Ž•ÄÔäô„”ĆŐćőVfv†–Š¶ÆÖæö'7GWgw‡—§·ÇÿÚ ?ïEŒőÿ”W«NÏS@}ŐFÍ»œßæ$ł›‘Ò¶>чvđö9ĂŐ¶7Mfżçțnĕżo]„żő?wûÍ~-7[śżșÿÿĐêÿmuŻ@äú8ț§Ú…FŸ”û;MąÿSgóîoę€úŸü"JśÚ0>ÔnőÄzÁŸŠöíĘž»Đęíÿđśô”Őço?‹ÿŃîCmÔ}…žžŒWŁw»ô±?MŐ~gúT•/C/Đô7ßöĄvßWs7Á;öú»ÿÒ{6oÿ‡IIí_§èáŸËĐÁgĆÿÒíț˙êú~”»=}2vSêGŃçÓôönę?ó^§ękôi(7"żŽ>gŻë3u>ٝÖmvïSÒțs}?ûïúDăm?“¶Mžżéă«8ü·âùaüżÁÿÓíF.fâ>ĐßPȚöżFœĘëÚtôżá=OçżÁÿ4’š)éÛ f?Òû@wìÿłłźę/ĄżìÿÍțŻëę?đÌ$Šúôțł~ÔÿÔíE=KyŻ}^żźöAûcVÿGőöÿ;ïőęoű/Oü2J «€zEżfłìßhì~ûçk›ê}—o©·Ńę«üÎÿĐ$§țËÒęŰ?ÿŐíê^ĄgêÿjőÁővĘéÄž3êoßê~w©èÿƒI;§zDz¶ęíô{Č}IÚáôvęŻùŸúÇ©ÿvRS_OȚbúuęŰżÿÖë?kLäÎ?«ë†îßg§~ÓțƒíżÂ7öłț“ÔőRAûKŸÆ_ÓûTmûO}Ÿ§óßÎę/ĐìÿЄ‘ăŸüÛù2|ßËüšïjòŸç8~l/òę7ÿŚé}Gę›wÚÏ«öˆőŸŐíN}?ŽzŻęÚôę/KțÔÿ7ú•áÒíÜìx>‡ź,ꚌVmŸOfŚŁôę_đž§ű“jUòGäáȚ_7Ëó|«űá{Ÿç8¶ę'ÿĐ釦«…îx9Łlöwï5șöÍ_Ï{±˜ëŸ‡Đÿ„Id¶ü7dÙQÀȊrëĆoëčțšeŻ·őz‡èȚïł1țƒ/~ êțvúœ:n”!ïxț ö‡oĆÿÙ8BIM!UAdobe PhotoshopAdobe Photoshop CS58BIM".MM*bj(1r2‡i€Đ ü€' ü€'Adobe Photoshop CS5 Macintosh2011:04:22 18:30:18  0 Ž&(.HH8BIM ¶moptÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ4TargetSettingsMttCObjc NativeQuadBl longÿGrn longÿRd longÿTrnsbool fileFormatenum FileFormatPNG24 interlacedbool noMatteColorbooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlong8BIMĄ‰msetnullHTMLBackgroundSettingsObjcnullBackgroundColorBluelongÿBackgroundColorGreenlongÿBackgroundColorRedlongÿBackgroundColorStatelongBackgroundImagePathTEXTUseImageAsBackgroundbool HTMLSettingsObjcnullAlwaysAddAltAttributebool AttributeCaselong CloseAllTagsboolEncodinglongFileSavingSettingsObjcnull CopyBackgroundboolDuplicateFileNameBehaviorlongHtmlFileNameComponentsVlLslonglonglonglonglonglongImageSubfolderNameTEXTimagesNameCompatibilityObjcnull NameCompatMacboolNameCompatUNIXboolNameCompatWindowsboolOutputMultipleFilesboolSavingFileNameComponentsVlLs longlonglonglonglonglonglonglonglongSliceFileNameComponentsVlLslonglonglonglonglonglongUseImageSubfolderboolUseLongExtensionsboolGoLiveCompatibleboolImageMapLocationlong ImageMapTypelongIncludeCommentsboolIncludeZeroMarginsboolIndentlongÿÿÿÿ LineEndingslong OutputXHTMLboolQuoteAllAttributesboolSpacersEmptyCellslongSpacersHorizontallongSpacersVerticallong StylesFormatlong TDWidthHeightlongTagCaselongUseCSSboolUseLongHTMLExtensionboolMetadataOutputSettingsObjcnull AddCustomIRboolAddEXIFboolAddXMPboolAddXMPSourceFileURIbool ColorPolicylongMetadataPolicylongWriteMinimalXMPboolWriteXMPToSidecarFilesboolVersionlong8BIMąms4w8BIMŁmaniIRFRü8BIMAnDsÜnullAFStlongFrInVlLsObjcnullFrIDlonggNđFrDllongèFStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslonggNđLCntlong8BIMRoll8BIM€mfrix„ÿá0,ÿÿ± Ïb8BIMnormÿ ä(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿunknown8BIMluniunknown8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžMûr8BIMPlLdxplcL$63b0519e-047e-1173-a2a2-eaea0594271aÀ?đ@F?đ@F@H€À@H€warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%63b0519e-047e-1173-a2a2-eaea0594271aplacedTEXT%d5f75db0-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubÀdoub?đdoub@Fdoub?đdoub@Fdoub@H€doubÀdoub@H€nonAffineTransformVlLsdoubÀdoub?đdoub@Fdoub?đdoub@Fdoub@H€doubÀdoub@H€warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpÀ?đC0ÿÿ»Ÿő8BIMnormÿ<(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLayer 58BIMluniLayer 58BIMlnsrlayr8BIMlyid,8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓld8.[>8BIMfxrp?đÀ":]+ÿÿJÖȚÎ8BIMnormÿ ű(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ folder_closed8BIMluni folder_closed8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžNH„8BIMPlLdxplcL$6ef1e0ad-047e-1173-a2a2-eaea0594271a@@F€@I@F€@I@W@@@W@warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%6ef1e0ad-047e-1173-a2a2-eaea0594271aplacedTEXT%d5f75db3-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoub@doub@F€doub@Idoub@F€doub@Idoub@W@doub@doub@W@nonAffineTransformVlLsdoub@doub@F€doub@Idoub@F€doub@Idoub@W@doub@doub@W@warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrp@@F€M}/ÿÿ±nŽ8BIMnormÿ à(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtar_gz8BIMlunitar_gz8BIMlnsrrend8BIMlyid!8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžNm@8BIMPlLdxplcL$60c01c09-0488-1173-a2a2-eaea0594271ażđ@‘4@G€@‘4@G€@‘ôżđ@‘ôwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%60c01c09-0488-1173-a2a2-eaea0594271aplacedTEXT%d5f75db6-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@‘4doub@G€doub@‘4doub@G€doub@‘ôdoubżđdoub@‘ônonAffineTransformVlLsdoubżđdoub@‘4doub@G€doub@‘4doub@G€doub@‘ôdoubżđdoub@‘ôwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@‘4Ż/ÿÿ±q’…8BIMnormÿ à(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtar_bz8BIMlunitar_bz8BIMlnsrrend8BIMlyid"8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžN–‰8BIMPlLdxplcL$619aeb1b-0488-1173-a2a2-eaea0594271ażđ@‘ü@G€@‘ü@G€@’Œżđ@’Œwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%619aeb1b-0488-1173-a2a2-eaea0594271aplacedTEXT%faa87fc0-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@‘üdoub@G€doub@‘üdoub@G€doub@’Œdoubżđdoub@’ŒnonAffineTransformVlLsdoubżđdoub@‘üdoub@G€doub@‘üdoub@G€doub@’Œdoubżđdoub@’ŒwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@‘ü±á/ÿÿłHm\8BIMnormÿ Ű(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrar8BIMluni rar8BIMlnsrrend8BIMlyid#8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžNœo8BIMPlLdxplcL$6a10139e-0488-1173-a2a2-eaea0594271ażé™™™™™ @’Ă33333@G™™™™™š@’Ă33333@G™™™™™š@“ƒ33333żé™™™™™ @“ƒ33333warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%6a10139e-0488-1173-a2a2-eaea0594271aplacedTEXT%faa87fc3-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżé™™™™™ doub@’Ă33333doub@G™™™™™šdoub@’Ă33333doub@G™™™™™šdoub@“ƒ33333doubżé™™™™™ doub@“ƒ33333nonAffineTransformVlLsdoubżé™™™™™ doub@’Ă33333doub@G™™™™™šdoub@’Ă33333doub@G™™™™™šdoub@“ƒ33333doubżé™™™™™ doub@“ƒ33333warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżé™™™™™ @’Ă33333ăÿÿÿÿ/ÿÿĄA8BIMnormÿ Ű(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿswf8BIMluni swf8BIMlnsrrend8BIMlyid$8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžNäÍ8BIMPlLdxplcL$53a52047-0489-1173-a2a2-eaea0594271ażđ@“Œ@G€@“Œ@G€@”Lżđ@”Lwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%53a52047-0489-1173-a2a2-eaea0594271aplacedTEXT%faa87fc6-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@“Œdoub@G€doub@“Œdoub@G€doub@”Ldoubżđdoub@”LnonAffineTransformVlLsdoubżđdoub@“Œdoub@G€doub@“Œdoub@G€doub@”Ldoubżđdoub@”LwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@“ŒUŽ0ÿÿ g p s8BIMnormÿ<(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLayer 48BIMluniLayer 48BIMlnsrlayr8BIMlyid&8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlc€Žú8BIMfxrp@X@—Ç/ÿÿœù8BIMnormÿ đ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ application8BIMluni application8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžOHM8BIMPlLdxplcL$20883df8-0480-1173-a2a2-eaea0594271ażđ@bà@G€@bà@G€@hàżđ@hàwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%20883df8-0480-1173-a2a2-eaea0594271aplacedTEXT%faaa2896-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@bàdoub@G€doub@bàdoub@G€doub@hàdoubżđdoub@hànonAffineTransformVlLsdoubżđdoub@bàdoub@G€doub@bàdoub@G€doub@hàdoubżđdoub@hàwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@bà-].ÿÿÏ”š‹8BIMnormÿ à(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿaudio8BIMluniaudio8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžOn8BIMPlLdxplcL$928d337a-0482-1173-a2a2-eaea0594271aÀ@rĐ@G@rĐ@G@uĐÀ@uĐwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%928d337a-0482-1173-a2a2-eaea0594271aplacedTEXT%faaa2899-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubÀdoub@rĐdoub@Gdoub@rĐdoub@Gdoub@uĐdoubÀdoub@uĐnonAffineTransformVlLsdoubÀdoub@rĐdoub@Gdoub@rĐdoub@Gdoub@uĐdoubÀdoub@uĐwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpÀ@rĐ_0ÿÿádv^8BIMnormÿ à(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿvideo8BIMlunivideo8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžO™8BIMPlLdxplcL$a01c1b80-0482-1173-a2a2-eaea0594271a@uđ@H@uđ@H@xđ@xđwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%a01c1b80-0482-1173-a2a2-eaea0594271aplacedTEXT%faaa289c-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@uđdoub@Hdoub@uđdoub@Hdoub@xđdoubdoub@xđnonAffineTransformVlLsdoubdoub@uđdoub@Hdoub@uđdoub@Hdoub@xđdoubdoub@xđwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrp@uđÉű0ÿÿĄt”[8BIMnormÿ Ű(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿtxt8BIMluni txt8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžOĂ38BIMPlLdxplcL$00ebdf9f-0482-1173-a2a2-eaea0594271a@i @H@i @H@o @o warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%00ebdf9f-0482-1173-a2a2-eaea0594271aplacedTEXT%faaa289f-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@i doub@Hdoub@i doub@Hdoub@o doubdoub@o nonAffineTransformVlLsdoubdoub@i doub@Hdoub@i doub@Hdoub@o doubdoub@o warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrp@i ‘À0ÿÿĄQy8BIMnormÿ Ű(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrtf8BIMluni rtf8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžP}8BIMPlLdxplcL$c782a35c-0482-1173-a2a2-eaea0594271a@y@H@y@H@|@|warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%c782a35c-0482-1173-a2a2-eaea0594271aplacedTEXT%faabed85-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@ydoub@Hdoub@ydoub@Hdoub@|doubdoub@|nonAffineTransformVlLsdoubdoub@ydoub@Hdoub@ydoub@Hdoub@|doubdoub@|warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrp@yĂò0ÿÿĄ@‰V8BIMnormÿ Ű(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpdf8BIMluni pdf8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžP;~8BIMPlLdxplcL$dfc1d08c-0483-1173-a2a2-eaea0594271a@|0@H@|0@H@0@0warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%dfc1d08c-0483-1173-a2a2-eaea0594271aplacedTEXT%faabed88-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubdoub@|0doub@Hdoub@|0doub@Hdoub@0doubdoub@0nonAffineTransformVlLsdoubdoub@|0doub@Hdoub@|0doub@Hdoub@0doubdoub@0warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrp@|0ö%-ÿÿ±éœ8BIMnormÿ à(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿoffice8BIMlunioffice8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžPqi8BIMPlLdxplcL$fbf50e48-0483-1173-a2a2-eaea0594271aÀ@`@F€@`@F€@0À@0warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%fbf50e48-0483-1173-a2a2-eaea0594271aplacedTEXT%faabed8b-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubÀdoub@`doub@F€doub@`doub@F€doub@0doubÀdoub@0nonAffineTransformVlLsdoubÀdoub@`doub@F€doub@`doub@F€doub@0doubÀdoub@0warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpÀ@`'ÿÿÿÿV/ÿÿy’>8BIMnormÿ Ü(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿhtml8BIMluni html8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžPĄÏ8BIMPlLdxplcL$09ed4b52-0484-1173-a2a2-eaea0594271ażđ@8@G€@8@G€@‚žżđ@‚žwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%09ed4b52-0484-1173-a2a2-eaea0594271aplacedTEXT%faabed8e-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@8doub@G€doub@8doub@G€doub@‚ždoubżđdoub@‚žnonAffineTransformVlLsdoubżđdoub@8doub@G€doub@8doub@G€doub@‚ždoubżđdoub@‚žwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@8Yˆ/ÿÿĄâ©8BIMnormÿ Ű(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿcss8BIMluni css8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžPÏ}8BIMPlLdxplcL$39292081-0485-1173-a2a2-eaea0594271ażđ@‚È@G€@‚È@G€@„Hżđ@„Hwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%39292081-0485-1173-a2a2-eaea0594271aplacedTEXT%faadcbec-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@‚Èdoub@G€doub@‚Èdoub@G€doub@„Hdoubżđdoub@„HnonAffineTransformVlLsdoubżđdoub@‚Èdoub@G€doub@‚Èdoub@G€doub@„Hdoubżđdoub@„HwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@‚Èœì/ÿÿĄÜÿÀ8BIMnormÿ Ô(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpl8BIMlunipl8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžPűù8BIMPlLdxplcL$7d242227-0485-1173-a2a2-eaea0594271ażđ@…è@G€@…è@G€@‡hżđ@‡hwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%7d242227-0485-1173-a2a2-eaea0594271aplacedTEXT%faadcbef-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@…èdoub@G€doub@…èdoub@G€doub@‡hdoubżđdoub@‡hnonAffineTransformVlLsdoubżđdoub@…èdoub@G€doub@…èdoub@G€doub@‡hdoubżđdoub@‡hwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@…èï/ÿÿĄæ Ê8BIMnormÿ Ô(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpy8BIMlunipy8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžQ/8BIMPlLdxplcL$e25c83d8-0485-1173-a2a2-eaea0594271ażđ@‡x@G€@‡x@G€@ˆűżđ@ˆűwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%e25c83d8-0485-1173-a2a2-eaea0594271aplacedTEXT%faadcbf2-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@‡xdoub@G€doub@‡xdoub@G€doub@ˆűdoubżđdoub@ˆűnonAffineTransformVlLsdoubżđdoub@‡xdoub@G€doub@‡xdoub@G€doub@ˆűdoubżđdoub@ˆűwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@‡x!P/ÿÿĄàÄ8BIMnormÿ Ô(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿrb8BIMlunirb8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžQX\8BIMPlLdxplcL$f3bba182-0485-1173-a2a2-eaea0594271ażđ@‰@G€@‰@G€@Šˆżđ@Šˆwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%f3bba182-0485-1173-a2a2-eaea0594271aplacedTEXT%faaf1392-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@‰doub@G€doub@‰doub@G€doub@Šˆdoubżđdoub@ŠˆnonAffineTransformVlLsdoubżđdoub@‰doub@G€doub@‰doub@G€doub@Šˆdoubżđdoub@ŠˆwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@‰S‚/ÿÿĄäÈ8BIMnormÿ Ô(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿsh8BIMlunish8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžQ€8BIMPlLdxplcL$bc26a07a-0486-1173-a2a2-eaea0594271ażđ@Š˜@G€@Š˜@G€@Œżđ@Œwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%bc26a07a-0486-1173-a2a2-eaea0594271aplacedTEXT%faaf1395-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@Š˜doub@G€doub@Š˜doub@G€doub@Œdoubżđdoub@ŒnonAffineTransformVlLsdoubżđdoub@Š˜doub@G€doub@Š˜doub@G€doub@Œdoubżđdoub@ŒwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@Š˜…Ž/ÿÿĄăÇ8BIMnormÿ Ű(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿc++8BIMluni c++8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžQ«q8BIMPlLdxplcL$bdafd78e-0486-1173-a2a2-eaea0594271ażđ@Œ(@G€@Œ(@G€@šżđ@šwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%bdafd78e-0486-1173-a2a2-eaea0594271aplacedTEXT%faaf1398-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@Œ(doub@G€doub@Œ(doub@G€doub@šdoubżđdoub@šnonAffineTransformVlLsdoubżđdoub@Œ(doub@G€doub@Œ(doub@G€doub@šdoubżđdoub@šwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@Œ(·æ/ÿÿĄÜÿÀ8BIMnormÿ Ô(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿpl8BIMlunipl8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžQٙ8BIMPlLdxplcL$ebc7ebeb-0486-1173-a2a2-eaea0594271ażđ@ž@G€@ž@G€@8żđ@8warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%ebc7ebeb-0486-1173-a2a2-eaea0594271aplacedTEXT%faaf139b-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@ždoub@G€doub@ždoub@G€doub@8doubżđdoub@8nonAffineTransformVlLsdoubżđdoub@ždoub@G€doub@ždoub@G€doub@8doubżđdoub@8warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@žœ Æÿÿ////8BIMnormÿ<(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLayer 18BIMluniLayer 18BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžR»8BIMfxrpÀ$À(ŒĆÿÿ////8BIMnormÿ<(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿLayer 28BIMluniLayer 28BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžR:Š8BIMfxrpÀÀ*ŒĆÿÿ’&&&8BIMnormÿ%d(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿphp8BIMTySh$(?đ?đ@@Ž2TxLrTxt TEXTphp textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntantiAliasSharp TextIndexlong EngineDatatdta"\ << /EngineDict << /Editor << /Text (țÿphp ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 4 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 10.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading .01 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking -10 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 1.0 1.0 1.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth .4 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> >> ] /RunLengthArray [ 4 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 4 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (țÿPhotoshopKinsokuHard) /NoStart (țÿ00ÿ ÿ0ûÿÿÿÿ0ü   ÿ 0ÿ=ÿ]0 0 0 000ę0ț00ž00A0C0E0G0I0c0ƒ0…0‡0Ž0Ą0Ł0„0§0©0Ă0ă0ć0ç0î0ő0ö0›0œ?!\)]},.:;!! ąÿ 0) /NoEnd (țÿ  ÿ0ÿ;ÿ[00 0 00\([{ÿćÿŁÿ §0ÿ) /Keep (țÿ  %) /Hanging (țÿ00.,) >> << /Name (țÿPhotoshopKinsokuSoft) /NoStart (țÿ00ÿ ÿ0ûÿÿÿÿ  ÿ 0ÿ=ÿ]0 0 0 000ę0ț00ž0) /NoEnd (țÿ  ÿ0ÿ;ÿ[00 0 00) /Keep (țÿ  %) /Hanging (țÿ00.,) >> ] /MojiKumiSet [ << /InternalName (țÿPhotoshop6MojiKumiSet1) >> << /InternalName (țÿPhotoshop6MojiKumiSet2) >> << /InternalName (țÿPhotoshop6MojiKumiSet3) >> << /InternalName (țÿPhotoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (țÿNormal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (țÿNormal RGB) /StyleSheetData << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (țÿArialMT) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (țÿMyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (țÿAdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (țÿPhotoshopKinsokuHard) /NoStart (țÿ00ÿ ÿ0ûÿÿÿÿ0ü   ÿ 0ÿ=ÿ]0 0 0 000ę0ț00ž00A0C0E0G0I0c0ƒ0…0‡0Ž0Ą0Ł0„0§0©0Ă0ă0ć0ç0î0ő0ö0›0œ?!\)]},.:;!! ąÿ 0) /NoEnd (țÿ  ÿ0ÿ;ÿ[00 0 00\([{ÿćÿŁÿ §0ÿ) /Keep (țÿ  %) /Hanging (țÿ00.,) >> << /Name (țÿPhotoshopKinsokuSoft) /NoStart (țÿ00ÿ ÿ0ûÿÿÿÿ  ÿ 0ÿ=ÿ]0 0 0 000ę0ț00ž0) /NoEnd (țÿ  ÿ0ÿ;ÿ[00 0 00) /Keep (țÿ  %) /Hanging (țÿ00.,) >> ] /MojiKumiSet [ << /InternalName (țÿPhotoshop6MojiKumiSet1) >> << /InternalName (țÿPhotoshop6MojiKumiSet2) >> << /InternalName (țÿPhotoshop6MojiKumiSet3) >> << /InternalName (țÿPhotoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (țÿNormal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (țÿNormal RGB) /StyleSheetData << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 /CharacterDirection 0 /HindiNumbers false /Kashida 1 /DiacriticPos 2 >> >> ] /FontSet [ << /Name (țÿArialMT) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (țÿMyriadPro-Regular) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (țÿAdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni php8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžZó8BIMfxrp@é/ÿÿĄèŻ8BIMnormÿ Ű(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿxml8BIMluni xml8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžZ*ő8BIMPlLdxplcL$10ef980d-0488-1173-a2a2-eaea0594271ażđ@H@G€@H@G€@dżđ@dwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%10ef980d-0488-1173-a2a2-eaea0594271aplacedTEXT%fac41c07-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@Hdoub@G€doub@Hdoub@G€doub@ddoubżđdoub@dnonAffineTransformVlLsdoubżđdoub@Hdoub@G€doub@Hdoub@G€doub@ddoubżđdoub@dwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@HK/ÿÿ±@fT8BIMnormÿ Ű(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿzip8BIMluni zip8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžZTű8BIMPlLdxplcL$16ba0847-0488-1173-a2a2-eaea0594271ażđ@l@G€@l@G€@‘,żđ@‘,warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%16ba0847-0488-1173-a2a2-eaea0594271aplacedTEXT%fac41c0a-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@ldoub@G€doub@ldoub@G€doub@‘,doubżđdoub@‘,nonAffineTransformVlLsdoubżđdoub@ldoub@G€doub@ldoub@G€doub@‘,doubżđdoub@‘,warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@l‹ș/ÿÿĄÚțŸ8BIMnormÿ Ô(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjs8BIMlunijs8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžZ}|8BIMPlLdxplcL$4c02335c-0485-1173-a2a2-eaea0594271ażđ@„X@G€@„X@G€@…Űżđ@…Űwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%4c02335c-0485-1173-a2a2-eaea0594271aplacedTEXT%fac41c0d-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@„Xdoub@G€doub@„Xdoub@G€doub@…Űdoubżđdoub@…ŰnonAffineTransformVlLsdoubżđdoub@„Xdoub@G€doub@„Xdoub@G€doub@…Űdoubżđdoub@…ŰwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@„Xlÿÿÿÿ/ÿÿÁäŐ±8BIMnormÿ đ(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ folder_open8BIMluni folder_open8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžZš78BIMPlLdxplcL$94592e07-047e-1173-a2a2-eaea0594271ażđ@WÀ@G€@WÀ@G€@aàżđ@aàwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%94592e07-047e-1173-a2a2-eaea0594271aplacedTEXT%fac41c10-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@WÀdoub@G€doub@WÀdoub@G€doub@aàdoubżđdoub@aànonAffineTransformVlLsdoubżđdoub@WÀdoub@G€doub@WÀdoub@G€doub@aàdoubżđdoub@aàwarpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@WÀû+/ÿÿœŸ—8BIMnormÿ à(ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿimage8BIMluniimage8BIMlnsrrend8BIMlyid 8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMshmdH8BIMcust4metadata layerTimedoubAÓlcžZÓć8BIMPlLdxplcL$6959b6d6-0482-1173-a2a2-eaea0594271ażđ@o`@G€@o`@G€@r°żđ@r°warp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@H8BIMSoLdsoLDnullIdntTEXT%6959b6d6-0482-1173-a2a2-eaea0594271aplacedTEXT%fac5ae2e-ad79-1173-b145-c2ce92730991PgNmlong totalPageslong frameStepObjcnull numeratorlong denominatorlongXdurationObjcnull numeratorlong denominatorlongX frameCountlongAnntlongTypelongTrnfVlLsdoubżđdoub@o`doub@G€doub@o`doub@G€doub@r°doubżđdoub@r°nonAffineTransformVlLsdoubżđdoub@o`doub@G€doub@o`doub@G€doub@r°doubżđdoub@r°warpObjcwarp warpStyleenum warpStyle warpCustom warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrznboundsObjcRctnTop UntF#PxlLeftUntF#PxlBtomUntF#Pxl@HRghtUntF#Pxl@HuOrderlongvOrderlongcustomEnvelopeWarpObjccustomEnvelopeWarp meshPointsObAr rationalPointHrznUnFl#Pxl@0@@@H@0@@@H@0@@@H@0@@@HVrtcUnFl#Pxl@0@0@0@0@@@@@@@@@H@H@H@HSz ObjcPnt Wdthdoub@HHghtdoub@HRsltUntF#Rsl@R“€8BIMfxrpżđ@o`    ìÿòëÿęòêÿűóéÿđóèÿßőçÿÇöæÿĄśćÿrűäÿGùăÿ"ùâÿ úáÿûáÿțüàÿęęßÿűȚÿđĘÿáÜÿÊÛÿÛÿ ÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿ!Ûÿ*2@AABCEá@2   #%(&'("($  )&$ &$&&% ! đœ»ž”ŻÍŻÈńìÿŒáóÚ ÙŚÔËșČčèïïúțíÿșÙòÏ ÎÌÆč­čžïïúțíÿčÙÎęÏęÎÏțÎÿÏ ÎÍÊÁł”ș¶”úțíÿ·ŰùÎÏęÎ ÏÍÍÌËĆČ°șș”úțíÿ¶ŰęÍęÎÍÎÍÎÎÍÍËËÈÁ±Żœșč”úțíÿ¶ŚüÍÎúÍ ÌËÊÈÄż­ŹĂŸșž·úțíÿŽŚÍÍÌúÍÿÌÍËËÈÇÀž©šÉÄżș·žúțíÿłÖęÌÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»··ûțíÿČŐțÌËÌËÌûËÿÊÇÄŒČą›ÓŃËÆÁ»·°šuțíÿ°ÓôËÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶šuțíÿŻÓțÊËÊËÊËÊËÊËËłŸƒ~z‰ŒÜŚÓÓÍÇÂœ”uțíÿźÓüÊÉțÊÉÊʛ„„ƒ‚ywƒâĘŰÓÓÎÈĂŸłuțíÿŹÒÉÉțÊțÉÊÉɛț„ƒ‚€{yˆéăȚÙÔÓÏÉÄżČuțíÿ«ĐÈțÉÈțÉÈÉ­ț„›čĆÁȘ‰”ìêäßÚÔÓĐÊĆżłuțíÿȘĐśÈ’„„šÈÈĆÀčȘŹÜŚÔÓŃÏÏÒŃËÆżČv­­ÿ©ĐÈÇÈțÇțÈĄțÇĆÁ»Ż–uom‡‰Œ‘Ÿ«ŒÆœČ­­ÿ§ÎÆùÇ°„„ŁțÇĆÂș±Š„pn‡’“•”’™Ź·łŸÿŠÍöÆÇęÆĆÂŒłȘ€mk“””–˜——•‘˜ĄŸÿ„ÍțÆÿĆöÆÄĂŸ”ąplr”ț•ÿ—™››š˜…Äÿ€ÌÄęĆÄśĆĂŸŹzrr‘ üŸĄąŁ„§’ÄÿŁËśÄĆüÄ ĂÂź~{z–­°ŻłțČłŽ±°Č––ÿąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄš}z“·°ŽČ·žțčž·žž™™ÿ ÉőĂÄțĂ­ƒ„„ŠöĂțÂÿ ÿŸÈÂÂĂÂĂÂĂÂęĂțŸˆƒ„„ÂĂÂÂțĂțÂĂțÂĂ  ÿŸÇüÂÁęÂÁę„„ƒ™țÁțÂÁțÂÁÂÂÁŸŸÿžÇüÁÂüÁÿÂÿÁ˜„„­ÁÁÂüÁÂÁÂüÁÿÿÄüÁÀțÁÀÁÀÁÀÀ”„„žÁÀÁÀÁÀÁÁțÀțÁÀÁÿœÄòÀ”„„ŒúÀÁùÀÿ›ÿ›ĂÀżÀÀżżÀżúÀżÀÀżÀÀężÿÀ żÀżÀÀżżÀ››ÿšĂżŸúżŸđżŸúżÿšÿšÁżŸŸüżŸżżŸżŸ·ț„ÿżŸżŸżŸżțŸÿżÿŸÿżÿšÿ˜ÁțŸœśŸ¶ț„ęŸœęŸœüŸœŸ˜˜ÿ˜żœŸțœŸœœŸțœÿŸ”ț„țœŸœŸœœŸœŸüœŸ˜˜ÿ—ż»ëœŒûœŒœœŒŒ——ÿ— Ÿ»œœŒŒœŒŒœŒœœŒțœęŒœțŒœŒŒœŒŒœęŒÿ—ÿ—œșćŒœțŒșŒ——ÿ—œč»Œ»ùŒÿ»Œ»»üŒ»țŒę»Œ»»č»——ÿ—Œ¶ț»Œ»ŒŒę»Œț»Œś»Œ»Œț»¶»——ÿ—Œ”è»șû»”»——ÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș——ÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș——ÿ—șßČș——ÿ—ș¶áČ”ș———żÁàĆż—Û—Ù!#!#&$''$!))#$(%(!&$!&!" %$ țŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïÿÖîńé çàÔÇȚÙđđúțïÿÔîśéèțé èéæäÚÌŚßŚÖúțïÿÓîțé èééèéèèéèéțè çäȚÍĐßȚÖúțïÿÓíèèééèéțèéüè çćâĘËÌàßĘŐúțïÿŃíôè çæäăßÖÇÈâàßÜŚúțïÿĐìùèçęèÿæ äáÛÓÁÂćăàßÛŰúțïÿÏìçțèțçÿèÿçÿèæääßŰÎŒ»èæăáßÛÖûțïÿÎëțçÿèțçèęçæćăȚŰÍ»”êéæäáßÚĐÄ wțïÿÍëúçèçèçèçæćäàŰÍ»źëêéçäáßŰÄ wțïÿËëæçæęçæțçæçĐœą œ˜ą„îìêêçäâàÖ wțïÿËêęæçææççæçæ裣ąĄ—’œńïìêêçćâàÔwțïÿÉëçæçúæçčțŁąĄž™• ôòïíêêèćăàÓwțïÿÉêśæËțŁčŚâȚÈ€ȘöőòđíêêèæăàÒwțïÿÇ%êæćæććæććææ°ŁŁÇćæâȚÖĆŸçăàăâăćêéæäȚÏz””ÿÆ%éććææćææćć⣣Źććæâߌɰ‰‡šŸą„«žĆŚăÜÏ””ÿĆéűćÏŁŁÂțćăàŰÎÀž‰‡Ÿš©Ș­źŻ­ČÈÖĐàÿÄèäüćäććäûćâàÚĐƛ†„§Ź­ŻŻČł±°źŽŸàÿĂ çćääćäćääććäćțäćăâÛÓœ‹†Œę­ÿ°Ž””ŽŽĄăÿÂçőä ćäćäâáÜɗŽŹûșŒœżÁÄźăÿÁçțäÿăÿäăûä ăäâá͜˜—łÉÍÍęÏŃÒÎÌÏłłÿÀçäăääăęäăäțăäăăǟ›—±ŐÎŃĐŐŰŚŚŰŚŐÖŚ””ÿżçęățäăäúăÍąŁŁĆäüă äăăäăâăăżżÿżæòăߧąŁĆùăäûăÿŸÿœćăâăâțăâęăâăăĆŁąžăăâăăâăâüăÿâăœœÿœ ćâăâăăââăââăăț➣ŁÎțâăâăăùâăœœÿŒäüâățâÿăęâ ŽŁŁÚâăââăâăââăûâÿŒÿ»äûâáûâá⎣ŁȚńâÿ»ÿșăűâáâáâáęâÿáúâÿáâáțâá»»ÿșăáââáțâÿáâęáâáâáâáâáâüáâáâțáâččÿșâáâűáâááÚțŁęáâőáÿčÿčáàüáțàțáàáÙțŁöáàüáÿžÿžâáààùáÿàáÙțŁțàÿáàüáàáàáàážžÿ·áßàááààáüàáààááààáùàáàțáßážžÿ·âȚûàáęàáűàáùàáàȚà··ÿ·áĘïàßùàßàßààĘà··ÿ·àÛțàßțàßàßàßęàßțàßöàÛß··ÿ·ßÚàßàßàßàßßàßàßßàßßààßàęßüàßàÚß··ÿ·ßÚààßßàßàßààßßàßßęàûßÿàßàßàßÙà··ÿ·ßŰàßàüßàőßàțß àßßààßßÙß··ÿ·ߌÚțßàńßàúßàßÚŚß··ÿ·ßßÖß··ÿ·ßÛáÖÚß···ââàćâ·Û·Ù!"&$'&%$)() (&)$$%' &    ÿńđńđńńđđńđđńđńđńïîíéöŐàńíÿđûòú űśńçćóóòò””úțńÿïđù űóìâöóòò””úțńÿïúęùűöù śöđçńśńń””úțńÿîúüùűùűüùÿűÿś ôòçëśśń””úțńÿîúóùÿű öőïăçśśöï””úțńÿíúôùűśőôńëàâțśőń”úțńÿíúęùűęùűțùÿűôóîèÜĘűțśôđúțńÿìúțùÿűęùűțù űśôòëćÙŚùűțśôïûțńÿëúęùțűÿùűțùÿśôòëäŚÒùùűűśśóçâG::•țńÿìúüùűțùțűùűööńíćŚÍęùűśśòâG::•țńÿêúțùűțùűùűțùæÖżœș·ĂĆúęùűśśńG::•țńÿëùűùűűùùűùęű ÓÀÀżŸ»ž”Œûúęùűśśđ::•țńÿêúűûùÿűùűÓțÀ żŸœč¶żüûúúțùűśśï:•țńÿéùęűüùűâțÀ ÓíöńáĆÆüüûûúțùűśöî•țńÿé%úűűùűűùűùùűËÀÀȚùűöòêßÖńîíńńóőùùűűőì€ÂÂÿèúęùÿűùűùőÀÀÈùűűśôìâÏŽź«œÁĂĆËÖȚíűôëÂÂÿè%ùűűùùűűùűűæÀÀÚùùűűôíæÚœ«©ŸÆÈÈËÌÎÎÓăîëśÿèÿùśűțùűùűőïçȚ»§ŠÄÉÉÊËÎÏĐÏÏŐĘśÿçùęűÿùűùùűțùÿűùśőđ錫§ŹÊÊÉÉËÍÏŃÓÔÓÇśÿæùűűùùęűęùűțùÿöńà”­­ÈțÔ ÓŐŐŚŚÙÛßÖśÿæúțű!ùűùűűùűùűűùűùűöă趔ÍáääçæçèéêćäçÚÚÿæùűűùùűùùűùùśàŒž”ËëćéçëíîîííììîÜÜÿćúűűùűùüűęù űùæżÀÀȚűűùűűùęűùűśśććÿćùűùűùűùüűÿùÿű ôÄżÀȚűùùűùüűùűùűűććÿäùüűùűùűűùűùùűȚÀżÓűùùűűùűùțűùűùùűääÿäùűùôűÓÀÀćűęùțűùțűùűűùääÿäÿùęűÿùțűùęűÏÀÀńùűűùùűùűùűääÿăûűùûű ùűűÏÀÀôűűùüűÿùüűùăăÿăűùùűùűűùűűùűùùűùűűùțűùűűùùûűùűùăăÿâűűùűùűűùűùęűùțűùűűùââÿâùűùűűùțűńțÀüűÿùęűțùțűÿâÿâśűÿùűùűńțÀùńűÿáÿâűùôűńțÀțűùțűùüűùțűÿâÿáÿűùâűùűááÿáűśúűùìűùűűśűááÿáűśáűöűááÿáűśôűùöűùûűöűááÿáűőțűùćűőűááÿáűôáűôűááÿáùôìűùśűôűááÿáűóőăűőóűááÿáűßóűááÿáűöáóőűáááűűăùűùùűáÛáÙ  òâńśò9őòêïÿĐöòéîÿÈśòéíÿÄśùâûśțìÿśùêäÿűùéäÿúùùéăÿńúâúśțâÿéûêÙÿêüéŰÿóęéŚÿìțéÖÿćéŐÿàéÔÿÒéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÚÿúééÚÿúéÚÿúéÚÿúéâÿùéúéâÿòéâÿòțâÿòŐâéò " "'(&'/--.)/0'0&+'*$0&+('-*/!'#" òÿÒŐőÖ ÓÏĆÒŽŐđîÎÇüÈÇÚïòÿÓăèöæćăÙĂŒÒêÿúsÿòÿÒßàôȚÙÌœÌÓæ%ęxÿòÿŃȚáößÿȚÛÓÀÇÏÎÿęxÿùÿÒŐőÖÓĐÆÓŐȚȚĘÜÚÒŒÄÔŃÇÚïęxÿùÿÓăèöæćăÙĂŒÔȚÜÚÖÌ·ÂŰŃÖsÿțxÿùÿÒßàôȚÙÌœÌŐÜŰŃĆŻŸßÖŃŰÿÿrÿùÿŃȚáößÿȚÛÓÀÇÏŃŚÏÂȘčćÜŚŃĘÿÿšüÒŐőÖ ÓĐÆÓŐȚßȚĘÜÚÒŒÄÔŃŰЧłèàĘŰÒÔÿÿ ÁśÓăèöæ ćăÙĂŒÔßĘÜÚÖÌ·ÂŰŃÖŃħ±íăâȚÙŐÒÿÿ»űÒßàôȚÙÌœÌŐĘÛŰŃĆŻŸßÖŃŰĆ©¶óæââȚÙÖÀÿÿŒűŃȚáößÿȚÛÓÀÇÏŃÚŚÏÂȘčćÜŚŃÜ­ŸűíéćâßÚÚžțÿÏȚáȚȚęßȚțß!ȚĘÜÚÒŒÄÔŃÛŰЧłèàĘŰÒŃËűïêèæçćßĘĆÿÿÏȚáțȚßûȚ!ĘÜÚÖÌ·ÂŰŃÖÙŃħ±íăâȚÙŐÏŹ§„ŠšŹžĂÓĘžÿÏȚáȚĘûȚ#ĘȚÜÛŰŃĆŻŸßÖŃŰÓĆ©¶óæââȚÙÖŸ–”“”—œžąŻÆĂ$ÍĘàĘĘȚĘĘȚĘȚĘĘÜÚŚÏÂȘčćÜŚŃÜÆ­ŸűíéćâßÚÚ¶țŸęĄÿœŠËÛßśĘÜÛŰЧłèàĘŰÒÓłËűïêèæçćßĘÂțŁ„Ššš§• ËÚßÜÜĘĘÜĘÜęĘÜÙŃħ±íăâȚÙŐĐšŹ§„ŠšŹžĂÓĘțžčș»șŒŻÊÚßțÜÛțÜÛțÜÛŰÓĆ©¶óæââȚÙÖż›–”“”—œžąŻÆÄțËÊÈËčÉÙȚÛÜśÛÙÓÆ­ŸűíéćâßÚÚ·ąțŸęĄÿœŠțÖÿŐŚĂÈŰĘÛÚÚțÛÚÛÛțÚÙÓÇłËűïêèæçćßĘ€țŁ „Ššš§•ÖÖŚÖÖÙĆÆŚĘőÚŰÔË·šŹ§„ŠšŹžĂÓĘęž čș»șŒŻÖŐÖÖŐŰĂĆÖÜúÚÙęÚÙÖÌŸȘ›–”“”—œžąŻÆĂÉțËÊÈËčÖÖțŐŚÂÄŐÜùÙÚțÙŰŐÏĂ·©ąțŸęĄÿœŠŐțÖÿŐŚĂüŐŰÁĂŐÜÙÙŰűÙŰÖŃÆșź§€țŁ„Ššš§•ŚÖÖŚÖÖÙĆŐÔŐŐÔŚÁÁÔÛôŰŐŃËĂœčęžčș»șŒŻÖÖŐÖÖŐŰĂÓęÔŚÀ ÁÓÚŚŰŚŰŚŚŰŚŰŰțŚÖÓÌÇÉĂĆĆÉțËÊÈËčŐÖÖțŐŚÂÓÔÔÓÓÖżżÒÚűŚŰțŚŐÖțŐÔțŐțÖÿŐŚĂûŐŰÁÓÒÒÓÓŐŸŸŃÙÖŚŚÖŚÖŚÖŚÖŚÖŚÖŚÖûŚÿÖ ŚÖÖÙĆŐŐÔŐŐÔŚÁüÒŐœŸŃÙțÖŐüÖŐüÖŐęÖ ŐÖÖŐÖÖŐŰĂÔÓęÔŚÀüÒŐœŒÏŚțŐÖüŐÖüŐÖûŐÿÖțŐ ŚÂÓÓÔÔÓÓÖżęÒŃÓŸŒÏŚæŐŰÁÓÓÒÒÓÓŐŸŃŃÒŃĐÒœ»ÍŚÔŐŐÔŐÔŐŐÔÔŐÔŐŐÔÔŐŐÔÔțŐÔŐŐÔŚÁûÒŐœÒÒŃŃÏŃœșÍÖÓìÔÓęÔŚÀûÒŐœęŃÏĐœčÌÖțÓțÔÿÓęÔÿÓțÔ ÓÔÓÔÓÓÔÔÓÓÖżüÒ ŃÓŸĐŃĐĐÌĐœžÊÔÓÓÒÓÒÒÓÒÒÓÒÒÓÒÒÓÒțÓÒÓÓÒÒÓÓŐŸțŃÒŃĐÒœęÉÈÏœ·ÊÔæÒ ŐœŃÒÒŃŃÏŃœüÒŚŸ·ÉÓæÒŐœĐęŃÏĐœûÇč·ÉæÒ ŃÓŸĐĐŃĐĐÌĐœûž”·ÉŃŃÒŃęÒŃüÒŃúÒțŃÒŃĐÒœüÉÈÏœúÿ·ÉĐŃŃÒŃÒÒŃŃÒŃÒÒŃŃÒŃÒÒęŃÿÒÿŃÏŃœûÒŚŸúÿ·ÉÏŃŃĐțŃĐûŃĐțŃĐŃŃĐĐęŃÏĐœúÇčúÿ·ÈÏÎĐŃüĐŃüĐŃțĐŃęĐŃĐĐÌĐœúž”úÿ·ÈÍçÉÈÏœòÿ·ÊŐæÒŚŸòÿ¶żÆćÇčòÿŽ¶·ćž”òÿ #!)%*'/+//)-/.'&')/%,-)"!.+ *$'  òÿćçőè ćáÙäÆȚïîÎËËęÈÇÚïòÿçòőęôőôôőțô óòéŐÒçíț ütÿòÿæïòúńđęń đëȚÓææò'țyÿòÿ äïóńńđńđńđńđńțđ íćÔàêéÿțyÿùÿćçőèćáÚćçîđđîëäĐÛíêÇÚïțyÿùÿçòőęôőôôőțôóòéŐÒéïíìçȚËŚîêńtÿțyÿùÿæïòúńđęńđëȚÓæèíêăŰĂÒòíêóÿÿsÿùÿ äïóńńđńđńđńđńțđíćÔàêêéáŐœÌőïìéśÿÿ›ęćçőèćáÚćçîțđîëäĐÛíêéâÔșÆśńîìéíÿÿ Ăúçòőęôőôôőțô óòéŐÒéđïíìçȚËŚîêńäÖ»ÄúòńïíìëÿÿœúæïòúńđęńđëȚÓæèîíêăŰĂÒòíêóŰœÇüôńńïííŰÿÿŸú äïóńńđńđńđńđńțđíćÔàêêìéáŐœÌőïìéőÁÍÿűőóòđíńÎțÿäîòđńđńțđńęđîëäĐÛíêíéâÔșÆśńîìéêŚęśôôóöőòôÛÿÿăîòśđ!ïíìçȚËŚîêńìäÖ»Äúòńïíìçœč··șżÊÖæóÌÿâíòûđïțđ!îíêăŰĂÒòíêóæŰœÇüôńńïííÖȘšŠ©Ș°ŽžÄĘÙáíńțđțïđïïđîìéáŐœÌőïìéöÛÁÍÿűőóòđíńÌț±ČŽ¶¶Č”Ÿàìńüï&đïđđïîíéâÔșÆśńîìéìÇŚęśôôóöőòôŚ””¶žșŒœŸźßìńöïîìäÖ»Äúòńïíìè»œč··șżÊÖæóęÌÍÏÎŃÆßëńőïìæŰœÇüôńńïí팰ȘšŠ©Ș°ŽžÄĘÚęßÜßÏĘëńőïíçÛÁÍÿűőóòđíńÍ”ț± ČŽ¶¶Č”ŸììëëêíÚĘêńęïîúïíçĘÇŚęśôôóöőòô۶””¶žșŒœŸźüíïÛÛêđîïîïïîîïïîîïîéàÌ»œč··șżÊÖæóÌËțÌÍÏÎŃÆęíìïÛÚéđőîíêáÒŸ°ȘšŠ©Ș°ŽžÄĘÙĘęßÜßÏíęìïÛÚéïęîíîîíęîíéäŚÉ»”ț±ČŽ¶¶Č”ŸëììëëêíÚüìîÙÙèđííîîííîíîííîíëćÛÌÁ»¶””¶žșŒœŸźûíïÛëìëììîÙŚçïűí îíîìêæßÖŃÍËËțÌÍÏÎŃÆìęí ìïÛìëìëëîÙŚçïôíëæàÛĘŚŰÙĘęßÜßÏìíęìïÛüëíŰÖçïôíëìëêëțêëììëëêíÚûìîÙüëíŰÖçïńíîíîíîûí ïÛìëìëììîÙüëíŰ Ôćïìíìííìíìțíìíìțíìíìíìęí ìïÛëìëìëëîÙęëêìŚ ŐćîíìííìíìțíìíìțíìęíìíęìïÛûëíŰêëêëêìŚÓäîęìëüìëüìëśìîÙûëíŰęëêëŚÓäîëìëìëììîÙûëíŰëëêëéëŚ ÓäíììëììëëęìëìëțìüëìëìëëîÙüë êìŚêëëêèêŚÒăíìçëíŰëêëêëêìŚêêëêæêŚÒăíæëíŰüëêëŚęäăéŚŃâìæëíŰțëêëéëŚęêëđŰŃăæë êìŚëêëëêèêŚûßÓŃâêëêëêëêìŚțêëêæêŚûŃÏŃâêëëêțëêëêțëêëêëëêùëêëŚüäăéŚúÿŃáéęë êëêëêëêëëêêëêëțêțëêëéëŚüêëđŰúÿŃâèêêëęêëüêëúêëêëëêèêŚúßÓúÿŃâèçêêëüêëüêëùêëêæêŚúŃÏúÿŃâçăèäăéŚòÿŃăíçêëđŰòÿĐÙȚćßÓòÿÎĐäŃÏòÿ#"* $(0&).()./00-)0./'//+*,0*%)(## òÿÿöśöśśöśööśśöśőóïóÚæïïÒäĘÉțÌÉĘđòÿöúôü úöééśòü4±ț ~ÿòÿöùțûúűû úűđéűőû<Ž„țƒÿòÿőúüțûúûúęûÿú ùśóéòúțÿł„țƒÿùÿÿöśöśśöśööśśöśőóïóôùûúùśńćîüûÉĘđțƒÿùÿöúôüúöééűùűśóíáëüúț~ÿƒÿùÿöùțûúűûúűđéűöùőđèÛæęúúțÿÿ}ÿùÿőúüțûúûúęûÿú ùśóéòúęőïæÖáÿțúțÿ:#(§üÿö%śöśśöśööśśöśőóïóôùûûúùśńćîüûöđæÔÜÿûûúúțÿ2UŃűöúôüúöééűúúűśóíáëüúțòéŐÚÿțûúûûÿÿNËùöùțûúűûúűđéűöúùőđèÛæęúúțêÖÜÿęûúûíÿÿÌùőúüțûúûúęûÿú ùśóéòúęűőïæÖáÿțú țÚàÿęęüüûúÿäțÿőúüöû úùśńćîüûűöđæÔÜÿûûúúüæÿüûüüțțüÿńÿÿôùüśûúűśóíáëüúțűòéŐÚÿțûúûűŐŃÏÏÓŚàéőÿȚÿôùüûûúęûúûûúùőđèÛæęúúțóêÖÜÿęû úûëÆĂĂĆÇËÏÓĘńìóùüęû úûûúûûùűőïæÖáÿțú țëÚàÿęęüüûúÿâțÊËÍÏĐÎÒÚôùüțûúțûÿú"ûúűöđæÔÜÿûûúúęȚæÿüûüüțțüÿíÍÌÍÏŃÓÖŚÏ òùüûûúûûúûúțûúűòéŐÚÿțûúûùÔŐŃÏÏÓŚàéőÿȚàßàáâáăáóűûûúûûúûțúțûűóêÖÜÿęûúûìÌÆĂĂĆÇËÏÓĘńìęïëíæòùûûÿúüûűôëÚàÿęęüüûúÿăÍțÊËÍÏĐÎÒÚęùűùđòùûțúûúûûțúÿûúőíȚæÿüûüüțțüÿîÍÍÌÍÏŃÓÖŚÏúúûúûûòńűüțûúûúüûÿúöîàÔŐŃÏÏÓŚàéőÿȚßàßàáâáăáúúûúûüń ńűûúûûúûúúûúúûûúöđćÖÌÆĂĂĆÇËÏÓĘńëíęï ëíæûúúûúüńńűüùúțûúûűòçĘÓÍțÊËÍÏĐÎÒÚüùűùđûęúüń đśûúúûûúûûúûûțúśòêߌŃÍÍÌÍÏŃÓÖŚÏûúúûúûûòęúûüńđűûúûûțúÿûÿúțûùôîçăßȚßàßàáâáăáûúúûúûüńûúúûúüńđśûúûúúû úûúùöîêìæééíęï ëíæúûúúûúüńúțûúûđïűûúûûęúęûúûúùùśțűśüùűùđúûęúüńțúûúûđïśûûúûûțúûúûțúûúûúțûúûúúûúûûòüúûüńüúüđîśûțúûúûțúûúûțúûúûúûúûúúûúûüńúûúúûúüńúúûúúûđîśüûțúûüúûüúûúûțúûúúûúüńúúțûúûđüúûđîöûțúûüúûüúûûúûęúüńęúûúûđüúûđîöüûúûúûúúûúúûúúûúúûúúûûüúûüńûúüđüúûđíöûûúûüúûęúûęúûúúûúüńțúûúúûđęúùúđíöûüúûüúûüúțûțúțûúûđûúûđęúűúđíöüíúûęúûúûđûüúûđüśúđìőûûçúüđûúûđțúùúęđìőûûúûüúûęúûûúûúúûđüúùúđüóôîìőûæúûđüúűúđțíìííëìőûìúûüúûđûśúđúÿìőùúúûüúûüúûőúûđęúùúęđúÿíöæúùúđûóôîúÿìőűùèúűúđęíìííëúÿìőűæśúđòÿìöüèúùúęđòÿìđćóôîòÿëììèíìííëòÿ  üöêțóÿț%ìÿńÿűìÿęđÿ‡íÿțïÿ`țÿ*őÿțÜÿ™țÛÿęÛÿęÛÿęÛÿ ęÛÿÚÿ ęÛÿ ęÛÿ ęÛÿüÛÿûÛÿúÛÿűÛÿÚÿÚÿśÛÿśÛÿśÛÿśÛÿűÛÿÿùÛÿÿűÛÿÿúÛÿÿûÛÿÿüÛÿÿúÛÿÛÿž'eȚÿ܂$ $99:;;=ê9=;;:99$') $* %"# " ꅈôs‡ț}ț‡†……„„ƒ‚€~}|}ę…ˆŒŒ‹ț‰ÿˆ‡ˆˆ‡ț}ț‡†……„„ƒ‚€~}|}ț…ŠòpŒŠˆț‡†……„„ƒ‚€~}|}ț‡ÉùÛÜÖÒÌÈŸ»ččŒÙ‹yŠˆț‡†……„„ƒ‚€~}|}țŒ¶˜ő”š•‚˜ˆț‡†……„„ƒ‚€~}|}eˆ”˜ô”«˜îŒ}e…Č’“”“”ü“”““”“ż”îp€ S±’‘“’’“’“’ę“’“–éđŸŒ–€ _eŻ‘‘‘‘û’ÿ‘’û‘’‘’‘’’‘’’‘’‘’€u ˆn~­ŽŽ‘‘ț‘țÿ‘ ‘‘‘‘ț€tŽi}­Ț‘€s †`}«‘‘‘ę‘ꐑꐑț‘ț‘țÿ‘r•k}Șúöțțțr™x}šțÿđűp±„}ŠùŽüŽÿùŽŽŽŽęŽ~oƜ~€ęŽęŽțęŽęŽŽŽŽŽüŽ~o áȘ~ŁŒŒŒŒŒúŒûŒÿ ŒŒŒŒ~náÈ ú‹Œ‹ŒŒ‹‹Œț‹Œ‹Œő‹Œ‹‹~mÿß~žüŠ‹ęŠ‹őŠ‹Š‹‹üŠ‹ŠŠ}lÿß~œç‰ˆù‰}lÿ~šțˆ‡ûˆ‡ęˆ‡üˆ‡ûˆ‡ˆ‡ęˆ}jÿ„z•ü„…„…„„ț…ö„…„„…„„…ę„|iÿŹz“óƒ„óƒ„üƒ{iÿŻz‘‚æ‚‚ț‚{hÿ”zŽęț€ÿ€ú€ü€ö{hÿÀzŒü€ÿÿ€ÿÿ€ț€țü€ÿț€ę€{gÿÀz‰~ü~~~ú~~~ű~zfțz‡~~}}ô~}ù~}ù~zfțz…ü}|ę}|}}|ì}{fț{‚ô|}ț|}ś|}||}}|}zețzț|ÿ{ę|ÿ{|û{|{ț|ű{|{{yeÿv†ękÿjękülęmúnęoțpqxzeÿlȚ{oz\ÿ;ȚjdWŰ() # *$!% !) ę­§ô™„țŸÿ§ÿŠÿ„ÿ€ÿŁąĄĄț Ÿž„ę­§©ŹŹȘ©țš§țŠ§„țŸÿ§ÿŠÿ„ÿ€ÿŁąĄĄț Ÿž„ț­šò—«š©§§ŠŠ„„€€ŁŁąĄĄț Ÿž„țšŰüîîìêçćâáßȚȚá櫞š©§§ŠŠ„„€€ŁŁąĄĄț Ÿž„ț±ÛĂőżıŁČ©§§ŠŠ„„€€ŁŁąĄĄț Ÿž„¶Œ­ÚĂôżÏČąî©„¶Œ«ŰœŸżțŸ żŸżŸŸżżŸŸŐ°î—§¶p§ŚŒțœŸűœŸżôûâăęâăüâàŠ _}ŠŐ»»Œ»Œ»ŒŒœœúŒœûŒœțŒœțŒœŒŒŠ›ˆ~„Óžčșșü»șę»ș»șś»ÿș»ș»»ș»§šz€ÓȚ»Š™‹z€Òțșÿ»șț»ÿș»țș»ș»ș»»ș»»ș»șș»ș»ș»șșŠ˜ˆ€Đșčęșÿčśșčșčśșčțș„˜§”€ÏéčșęčșüčŠ–Δ€Íûžčžžčžččùžÿčžčúžčžž„•ĐŠ„Ë·ž·țžÿ·ž·žü·ž··ž··žú·žț·ž„”ỄÉę¶ÿ·ę¶ÿ·ü¶·ę¶·¶¶·ț¶·ü¶€“áŃŠÈ¶¶ț”¶ę”¶”¶””¶””¶¶”¶””¶ú”¶””€“ÿćŠĆúŽ”üŽÿ”ôŽ”ûŽ€’ÿâ„ÄȚł€‘ÿš€ÂČȱęȱȱúČÿ±ńČŁÿ¶ĄœùźŻûźŻûźŻźŻüźŻźŻźŻąŽÿœĄ»ç­źü­ź­­ĄŽÿŸĄčűŹ«ùŹ«ęŹ«ęŹ«Ź«ęŹĄÿÀĄ·ö«Ș«ȘȘ««Șű«Ș«ȘȘę«ĄÿËĄ”Ș©țȘ©śȘ©ȘȘ©©Ș©©öȘĄŒÿË Č©šü©šû©ÿšû©ÿš©țš©š©šț© ‹țą°üš§ûš§š§őš§ęš§š§ ŠțĄź§Šê§Šę§Šę§ŸŠțą­§öŠ§ŠŠ§ùŠÿ§Š§§ûŠŸŠțĄȘ„țŠ„țŠ„ŠŠț„Š„Š„„Š„ŠŠ„Š„Š„„țŠ„ŠŠŸ‰ÿœźę’ÿ‘ę’ü“ę”ț•ù–ț—˜Ąž‰ÿȚȘ–ž€ÿNȚ…rŰ' %$"# "#% ęçÖôÚŐțÖÿÚęÙęŰęŚțÖŐáęçÖŰÚÙÙüŰțŚÿŐțÖÿÚęÙęŰęŚțÖŐáțçÖòŚÙÚÜÚÚęÙęŰęŚțÖŐáțÚîÿüțúęöÙÚÚÜÚÚęÙęŰęŚțÖŐáțâûôőśűÜÚÛÜÚÚęÙęŰęŚțÖŐáÌÍáûôôśôÛÛîŚáÌÍàûöśśööśśööśööśöśđÛîŚȚ̏ßûőțöőöőțöőüöțđęúőȚ}žȚúùőöțőöőöúőöűőÿöőȚŐ˜ŹȚùńóțôőțôőôőôôőûôőôțő ôőôôőôôőôȚŐȱȚúȚôȚÓ Ÿ«ȚùôóóôôóűôóüôóűôóțôĘÓ č”ĘùóóôóóôęóęôóôóôóôôțóțôóôęóôóĘÓÓœĘűțóôțóôùóôïóȚŃߟȚűòóòòûóÿòüóòóțòóòóòóòòțóÿòóĘŃŚÉßśòóüòÿóÿò óòóòòóòóóòóűòóòòóĘĐáŚàśòòńńöòńòòńóòÿńĘĐáäáöțńÿòÿńòńńòòńńòùńòńńòńńòüńĘÏÿïáöęńđńđęńÿđÿńđôńÿđęńĘÎÿíáőńđńđđțńÿđńűđńđńúđńđńđđÜÎÿÊáôęđïúđïńđïüđÜÍÿŚßòüîïüîÿïÿîïôîïîïțîÛÌÿÜȚńíîííîíőîíûîÿíîííüîÛÌÿÛȚńüíîùíÿîíîíîőíțîÛËÿÜȚđìûíìûíÿìęíÿìíìțíÿìíìííìíÛËÿÚĘïïìíöìíęìÛÊÿÚ ȚïììëìëììëęìÿëÿìëìëűìëììëììëÛÊțȚîìęëìțëìüëÿìóëìëìëÛÊțĘíëêëëêúëêđëêëëêêÛÉțĘìêëüêÿëêëëêêëêëëêëêëêêęëêęëÿêÛÉțĘëűêëêêëúêëüêÿëÿêÿëțêÚÈÿÙîęÖÿŐęÖüŚęŰțÙęÚęÛțÜĘçÚÈÿËȚîÓÛÁÿpȚÉżŰ   úìÿòúëÿęòúêÿűó±ăÿđóáÿßőàÿÇößÿĄśȚÿrűĘÿGùÜÿ"ùÛÿ úÚÿûÚÿțüúÚÿęęÚÙÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿÿ8ÇŰÿ8ÈŚÿÇÖÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿ*çÿï@22@AABCEí@2ï%"(*...+ !'#""!"+'#+!((&"($&('ŁęÁž”ŻÍŻÈńìŁüÁÿŒáóÚ ÙŚÔËșČčèïïúțíŁûÁșÙòÏ ÎÌÆč­čžïïúțíŁêÁ čÍÊÁł”ș¶”úțíțąÿŁąŁąŁŁąțŁąŁęąęŁ ąÌËĆČ°șș”úțíè  ÆÈÁ±Żœșč”úțíÿòžțțžžțûžę šÄż­ŹĂŸșž·úțíšțńšèńńššń­èš­èń­ńšęń š“Àž©šÉÄżș·žúțíÿ˜ń˜ê˜˜—ń˜ń笘瘗ńńț˜Źń˜œł€ąĐÊĆÀ»··ûțíÿ• đ•©æòòđ•đ©••èț•òț•敕ŒČą›ÓŃËÆÁ»·°šuțíÿ•(đ”đ••”đ•đ©••æ”•đđ””©æ”•œ±ą–ÖÓÒÌÇÁŒ¶šuțíÿ’(đ’擧đđ’đ’’“šæđ§đ’§æ’§’œŽ€”ÜŚÓÓÍÇÂœ”uțíÿ‘ÿđŠæđŠđ’đ‘đü‘đ‘ęđ’‘żŽ€—âĘŰÓÓÎÈĂŸłuțíöțțđû‘À”§žéăȚÙÔÓÏÉÄżČuțíöő’Á·©šìêäßÚÔÓĐÊĆżłuțíú‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ù­§Š§țŠț§țŠ§țŠźÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­üț§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·łŸęęŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸțü„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…Äÿû€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÄțÌüŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č––ęÌęąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™™üÌț ÉőĂÄțĂÿÂóĂțÂÿ ûÌÿŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ  úÌŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸŸéÌÊĂÂțÁÂüÁÂÁÂüÁÿÿÌËëđ ÓĂÀÁÀÁÀÁÀÁÁțÀțÁÀÁÿËéđșźûÀÁùÀÿ›ÿÊÙŐÚŚÚÙÙțŰÿŚțÖÿŐęÔÚÙÙəąÀężÿÀ żÀżÀÀżżÀ››ÿÈٔíÙ”ÙșĄúżŸúżÿšÿÇÿŐášńŹ ±áŐŐǙĄŸżŸżŸżțŸÿżÿŸÿżÿšÿÆÿŰߎń »ßŃŃƙĄŸŸœęŸœüŸœŸ˜˜ÿĆÿŚĘŽüĐäțăäûĐÂĘĐĐƙĄœŸœŸœœŸœŸüœŸ˜˜ÿÄÿÖߎÙęÚățâăûÚÇßÏÏÙĄțœŒûœŒœœŒŒ——ÿĂÿŐàŽüÉęÏÓûÉżàÎÎÙĄœțŒœŒŒœŒŒœęŒÿ—ÿÁÿÔß”üÛćęäûÛÉßÍÍÁ™ĄűŒœțŒșŒ——ÿÀÿÓĘ·üÔĘțÜĘûÔ ÇĘÌÌÀ™ĄŒŒ»țŒę»Œ»»č»——ÿŸÿÓȚ·ÔŐŐÙùÚęÖÈȚËËż™ ú»Œ»Œț»¶»——ÿŸÿÒĘžÄÄÆÆŐęÍŃŐüÆÀĘÊÊŸ™ û»șû»”»——ÿŒÿŃĘžÔțŐÖęȚĘŚüÖËĘÉÉŒ™ șșț»țșü»Žș——ÿ»ÿĐÜčüÏĐțÓŃûĐÇÜÈÈ»™ șț»üș»șș¶łș——ÿșÿÏÜčûÍÏŃÏúÍÆÜÇÇș˜óČș——ÿčϔÏïđϔÇ蘝ôČ”ș——ÿžüÌÿËțÊÿÉțÈüÇÆțÄ·šŁóĆż—ÿ·ÈËÈÊÊÉÉțÈüÇÿÆęĆĂĆĆ·ï—””Žü”Ž””Žû”Ž”Žü”îÓ%%"(*...+ )*&*'*"& *("%#**-( qęęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìqüÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïqûÖîńé çàÔÇȚÙđđúțïqê źæäÚÌŚßŚÖúțïțpÿqpqpqqpțqpqępęq pçäȚÍĐßȚÖúțïèn ȚâĘËÌàßĘŐúțïÿjëkțjțkjkțjûkęj čßÖÇÈâàßÜŚúțïgțêgÜêêggê„Üg„Üê„êgęê gÛÓÁÂćăàßÛŰúțïÿdêdßddcêdêۂdÛdcêêțd‚êdšŰÎŒ»èæăáßÛÖûțïa`éaÚììéaé`aÜ``aìțaÚa`™ŰÍ»”êéæäáßÚĐÄ wțïÿ_(é^é__^é_é~__Ú^_éé^^}Ú^_šŰÍ»źëêéçäáßŰÄ wțïÿ\(é\Ú]{éé\é\\]|Ùé{é\{Ù\{\›ÙÏœŹîìêêçäâàÖ wțïÿ[ÿè{Ùè{è\é[èü[è[ęè\œÜĐż°ńïìêêçćâàÔwțïöYXțYțèûYX›ȚÒÀŽôòïíêêèćăàÓwțïöYXőYc›ȚÔĂœöőòđíêêèæăàÒwțïúY ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ûYÿŁ ŒččșșčșșččțșțčșÄߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””üYțĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàęYęÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàțYüĂ çćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄăÿYûÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźățlüÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłłęlęÀçäăääăęäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””ülțżçęățäăäùăáäăăäüă äăăäăâăăżżûlÿżæđăáśăäûăÿŸúlœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœœél†Èăățâăâăăùâăœœÿlkëœ wÈââăââăâăââăûâÿŒÿk霅łÌòâÿ»ÿj~zț‚ÿț€~ț}ÿ|{țy‚~~jłœúâÿáâáțâá»»ÿi~jí~j~iłœâáâüáâáâțáâččÿhÿ|‰LńQ T‰||hłœááâőáÿčÿgÿ€‡Uńc[‡uugłœűáàüáÿžÿe~†Uüsáțàáûs c†ssfłœàááàüáàáàáàážžÿeÿ}‡Uę‚üßû‚j‡rqełœùàáàțáßážžÿcÿ|‰UünÿÎÍÎÒûo b‰ppcłœààáùàáàȚà··ÿa{y‡Uü‚ęâáû‚m‡ooałœùàßàßààĘà··ÿ`ÿx…Wü{üÙû{j…ll`łœàßöàÛß··ÿ^ÿx†W{||ÂŚŚțÖÿŚÂę}l†kk_łœßàęßüàßàÚß··ÿ^wv…XggilÄęÌÏÄlęia…ji^łœûßÿàßàßàßÙà··ÿ\ÿu„Xxyyz‚ÔțÛӃü{ n„hh\łœßßàțß àßßààßßÙß··ÿ[ÿs„XțqÿrÌĐ́ûr i„ggZłœßßàúßàßÚŚß··ÿZrqƒXûl†”†úlfƒfeZČșóÖß··ÿYqjqïœqjfYČșôÖÚß··ÿXülÿkÿjihhțgfęedțaWŽżóćâ·ÿWmkmjihhțgfęeÿdțcac``Wï· UVWVUVVUWVVțUÿVÿUWUWVUVVUîÓ%"(*.--*)'+"*(+&&%()'#$ #&!›ęșțńđńđńńđđńđđńđńđńïîíéöŐàńí›üșÿđûòú űśńçćóóòò””úțń›ûșïđù űóìâöóòò””úțń›êș Ëśöđçńśńń””úțńțšÿ›š›š››šț›š›ęšę› šśôòçëśśń””úțńè˜ đőïăçśśöï””úțńÿ”đ•ț”ț•”•ț”û•ę”Ńńëàâțśőń”úțń‘țđ‘æđđ‘‘đŠæ‘ŠæđŠđ‘ęđ‘»îèÜĘűțśôđúțńÿđèŽđđć„ćŽđđț „đžëćÙŚùűțśôïûțńÿŒ ïŒąäńńïŒïąŒŒæțŒńțŒ䌌žëäŚÒùùűűśśóçâG::•țńÿ‹ïŠï‹‹Šï‹ïĄ‹‹äŠ‹ï äŠ‹·íćŚÍęùűśśòâG::•țńÿˆïˆä‰Ÿïïˆïˆˆ‰ ăïŸïˆŸăˆŸˆčïæŰËúęùűśśńG::•țńÿ‡ÿïžăïžïˆï‡ïü‡ï‡ęïˆșïçÚÌûúęùűśśđ::•țńö†…ț†țîú†șńèÛĐüûúúțùűśśï:•țńö†…ő† ŽșńëȚŚüüûûúțùűśöî•țńú† ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțń óőùùűűőì€ÂÂû†ÿÇŐęÔÿÓÔÓûÔÿÓĘôìâÏÇÄțÁ ĂĆËÖȚíűôëÂÂü†țè%ùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîëśę†ęèÿùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘśț†üçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśÿ†ûæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖśț6üæúțű!ùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚę6ęæùűűùùűùùűùùśśóîèëëćéçëíîîííììîÜÜü6țćúűűùűùüűęùűùùűűùțűùűűùęűùűśśććû6ÿćùűùűùűùüűÿùęűöțűÿùűùüűùűùűűććú6äùüűùűùűűùűùùűűùśűűùùűűùűùțűùűùùűääé6aÍțűęùțűùțűùűűùääț6ëX=Íűùűűùùűùűùűääÿ5éX`Ïäűùüűÿùüűùăăÿ4C@FHțFțDÿCțBÿAț@ ?FCC4ÏŰűùűűùùûűùűùăăÿ4CQíCQC4ÏŰùűùęűùțűùűűùââÿ2ÿBJń#$JBB4ÏŰțűÿùęűțùțűÿâÿ1ÿDI%ń/)I==2ÏŰòűÿáÿ0ÿCI%ü;àțßàû;/I;;0ÏŰűùțűùüűùțűÿâÿ0ÿBI%üFüĘûF4I::/ÏŰôűùűááÿ/ÿAJ%ü8ÿÎÍÎÒû8/J99/ÏŰśűùűűśűááÿ.ÿ@I%üFęàßûF6I88.ÏŰôűöűááÿ-ÿ>H&üAŚțÖŚûA5H66-ÏŰûűùûűöűááÿ,ÿ>H&țAČúÔČęA5H66-ÏŰôűőűááÿ+ÿ>H&1148ŒęÌÏŒ8ę4.H55+ÏŰôűôűááÿ)ÿ=G&ț>@KÏțÚÍLüA 7G44)ÏŰűűùśűôűááÿ(ÿ;G&ü:QÆÍÆQû:4G22(ÏŰőűőóűááÿ(ÿ:F&û6^Š^ú61F11(ÎÖóóűááÿ':Q:ïX:Q1'ÎÖôóőűááÿ'ú6ț5ÿ4ț2ü10ț/'ÏŰöùűùùűáÿ&:6:5544ț2ü1ÿ0ț/.2..&ïáű%&%%&%%&ü%&%&&%îÓ   úìÿòúëÿęòúêÿűó±ăÿđóáÿßőàÿÇößÿĄśȚÿrűĘÿGùÜÿ"ùÛÿ úÚÿûÚÿțüÚÚÿęęÚÙÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿÿ8ÇŰÿ8ÈŚÿÇÖÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿ*çÿï@22@AABCEí@2ï%#(*...-!'#""!"+'#+!((&"($&('ŁęÁž”ŻÍŻÈńìŁüÁÿŒáóÚ ÙŚÔËșČčèïïúțíŁûÁșÙòÏ ÎÌÆč­čžïïúțíŁêÁ čÍÊÁł”ș¶”úțíțąÿŁąŁąŁŁąțŁąŁęąęŁ ąÌËĆČ°șș”úțíó òś  ÆÈÁ±Żœșč”úțíÿòžțțžžòûžę šÄż­ŹĂŸșž·úțíšțń­èńńššńšèšńšèńššęń š“Àž©šÉÄżș·žúțíÿ˜ń˜ç˜˜—ń˜ńߏ˜îîț˜Źń˜œł€ąĐÊĆÀ»··ûțíÿ•đ•©æòòđ•đ©••đ©••đț•𩕐ŒČą›ÓŃËÆÁ»·°šuțíÿ•đ”æ••”đ•đț•𔕔𔔩𔕐œ±ą–ÖÓÒÌÇÁŒ¶šuțíÿ’(đ’æ“’æđ’đ’’“đđ’’đ’’𧒒œŽ€”ÜŚÓÓÍÇÂœ”uțíÿ‘ÿđŠđđŠđ’đ‘đ‘ò‘đđ‘‘ęđ’‘żŽ€—âĘŰÓÓÎÈĂŸłuțíöő’‘À”§žéăȚÙÔÓÏÉÄżČuțíöő’Á·©šìêäßÚÔÓĐÊĆżłuțíú‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ù­§Š§țŠț§țŠ§țŠźÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­üț§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·łŸęęŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸțü„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…Äÿû€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÄțÌüŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č––ęÌęąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™™üÌț ÉőĂÄțĂÿÂóĂțÂÿ ûÌÿŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ  úÌŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸŸéÌÊĂÂțÁÂüÁÂÁÂüÁÿÿÌËëđ ÓĂÀÁÀÁÀÁÀÁÁțÀțÁÀÁÿËéđșźûÀÁùÀÿ›ÿÊÙŐÚŚÚÙÙțŰÿŚțÖÿŐęÔÚÙÙəąÀężÿÀ żÀżÀÀżżÀ››ÿÈٔíÙ”ÙșĄúżŸúżÿšÿÇÿŐášńŹ ±áŐŐǙĄŸżŸżŸżțŸÿżÿŸÿżÿšÿÆÿŰߎń »ßŃŃƙĄŸŸœęŸœüŸœŸ˜˜ÿĆÿŚĘŽüĐäțăäûĐÂĘĐĐƙĄœŸœŸœœŸœŸüœŸ˜˜ÿÄÿÖߎÙęÚățâăûÚÇßÏÏÙĄțœŒûœŒœœŒŒ——ÿĂÿŐàŽüÉęÏÓûÉżàÎÎÙĄœțŒœŒŒœŒŒœęŒÿ—ÿÁÿÔß”üÛćęäûÛÉßÍÍÁ™ĄűŒœțŒșŒ——ÿÀÿÓĘ·üÔĘțÜĘûÔ ÇĘÌÌÀ™ĄŒŒ»țŒę»Œ»»č»——ÿŸÿÓȚ·ÔŐŐÙùÚęÖÈȚËËż™ ú»Œ»Œț»¶»——ÿŸÿÒĘžÄÄÆÆŐęÍŃŐüÆÀĘÊÊŸ™ û»șû»”»——ÿŒÿŃĘžÔțŐÖęȚĘŚüÖËĘÉÉŒ™ șșț»țșü»Žș——ÿ»ÿĐÜčüÏĐțÓŃûĐÇÜÈÈ»™ șț»üș»șș¶łș——ÿșÿÏÜčûÍÏŃÏúÍÆÜÇÇș˜óČș——ÿčϔÏïđϔÇ蘝ôČ”ș——ÿžüÌÿËțÊÿÉțÈüÇÆțÄ·šŁóĆż—ÿ·ÈËÈÊÊÉÉțÈüÇÿÆęĆĂĆĆ·ï—””Žü”Ž””Žû”Ž”Žü”îÓ%%#(*....)*&*'*"& *("%#**-( qęęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìqüÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïqûÖîńé çàÔÇȚÙđđúțïqê źæäÚÌŚßŚÖúțïțpÿqpqpqqpțqpqępęq pçäȚÍĐßȚÖúțïónëśn ȚâĘËÌàßĘŐúțïÿjëkțjțkjkjjëûkęj čßÖÇÈâàßÜŚúțïgțê„ÜêêggêgÜgêgÜêggęê gÛÓÁÂćăàßÛŰúțïÿdêdÛddcêdê΂dććdćțd‚êdšŰÎŒ»èæăáßÛÖûțïa`éaÚììéaé`aé`aéțaé`™ŰÍ»”êéæäáßÚĐÄ wțïÿ_é^Ú__^é_éț_é^_^é^^}é^_šŰÍ»źëêéçäáßŰÄ wțïÿ\(é\Ú]\Ùé\é\\]éé\\é\\é{\\›ÙÏœŹîìêêçäâàÖ wțïÿ[ÿè{èè{è\é[è[ë[èè[[éțè\œÜĐż°ńïìêêçćâàÔwțïöYXőYc›ȚÒÀŽôòïíêêèćăàÓwțïöYXőYc›ȚÔĂœöőòđíêêèæăàÒwțïúY ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ûYÿŁ ŒččșșčșșččțșțčșÄߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””üYțĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàęYęÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàțYüĂ çćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄăÿYûÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźățlüÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłłęlęÀçäăääăęäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””ülțżçęățäăäùăáäăăäüă äăăäăâăăżżûlÿżæđăáśăäûăÿŸúlœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœœél†Èăățâăâăăùâăœœÿlkëœ wÈââăââăâăââăûâÿŒÿk霅łÌòâÿ»ÿj~zț‚ÿț€~ț}ÿ|{țy‚~~jłœúâÿáâáțâá»»ÿi~jí~j~iłœâáâüáâáâțáâččÿhÿ|‰LńQ T‰||hłœááâőáÿčÿgÿ€‡Uńc[‡uugłœűáàüáÿžÿe~†Uüsáțàáûs c†ssfłœàááàüáàáàáàážžÿeÿ}‡Uę‚üßû‚j‡rqełœùàáàțáßážžÿcÿ|‰UünÿÎÍÎÒûo b‰ppcłœààáùàáàȚà··ÿa{y‡Uü‚ęâáû‚m‡ooałœùàßàßààĘà··ÿ`ÿx…Wü{üÙû{j…ll`łœàßöàÛß··ÿ^ÿx†W{||ÂŚŚțÖÿŚÂę}l†kk_łœßàęßüàßàÚß··ÿ^wv…XggilÄęÌÏÄlęia…ji^łœûßÿàßàßàßÙà··ÿ\ÿu„Xxyyz‚ÔțÛӃü{ n„hh\łœßßàțß àßßààßßÙß··ÿ[ÿs„XțqÿrÌĐ́ûr i„ggZłœßßàúßàßÚŚß··ÿZrqƒXûl†”†úlfƒfeZČșóÖß··ÿYqjqïœqjfYČșôÖÚß··ÿXülÿkÿjihhțgfęedțaWŽżóćâ·ÿWmkmjihhțgfęeÿdțcac``Wï· UVWVUVVUWVVțUÿVÿUWUWVUVVUîÓ%#(*.--,)'+"*(+&&%()'#$ #&!›ęșțńđńđńńđđńđđńđńđńïîíéöŐàńí›üșÿđûòú űśńçćóóòò””úțń›ûșïđù űóìâöóòò””úțń›êș Ëśöđçńśńń””úțńțšÿ›š›š››šț›š›ęšę› šśôòçëśśń””úțńó˜ńś˜ đőïăçśśöï””úțńÿ”đ•ț”ț•”•””đû•ę”Ńńëàâțśőń”úțń‘țđŠæđđ‘‘đ‘æ‘đ‘æđ‘‘ęđ‘»îèÜĘűțśôđúțńÿđćŽđđÜ„ì쀏ìț „đžëćÙŚùűțśôïûțńÿŒïŒąäńńïŒïąŒŒïąŒŒïțŒïąŒžëäŚÒùùűűśśóçâG::•țńÿ‹ïŠä‹‹Šï‹ïț‹ŠïŠŠ ïŠ‹·íćŚÍęùűśśòâG::•țńÿˆïˆä‰ˆăïˆïˆˆ‰ïˆčïæŰËúęùűśśńG::•țńÿ‡ÿïžïïžïˆï‡ï‡đ‡ïęïˆșïçÚÌûúęùűśśđ::•țńö†…ő† ŽșńèÛĐüûúúțùűśśï:•țńö†…ő† ŽșńëȚŚüüûûúțùűśöî•țńú† ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțń óőùùűűőì€ÂÂû†ÿÇŐęÔÿÓÔÓûÔÿÓĘôìâÏÇÄțÁ ĂĆËÖȚíűôëÂÂü†țè%ùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîëśę†ęèÿùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘśț†üçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśÿ†ûæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖśț6üæúțű!ùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚę6ęæùűűùùűùùűùùśśóîèëëćéçëíîîííììîÜÜü6țćúűűùűùüűęùűùùűűùțűùűűùęűùűśśććû6ÿćùűùűùűùüűÿùęűöțűÿùűùüűùűùűűććú6äùüűùűùűűùűùùűűùśűűùùűűùűùțűùűùùűääé6aÍțűęùțűùțűùűűùääț6ëX=Íűùűűùùűùűùűääÿ5éX`Ïäűùüűÿùüűùăăÿ4C@FHțFțDÿCțBÿAț@ ?FCC4ÏŰűùűűùùûűùűùăăÿ4CQíCQC4ÏŰùűùęűùțűùűűùââÿ2ÿBJń#$JBB4ÏŰțűÿùęűțùțűÿâÿ1ÿDI%ń/)I==2ÏŰòűÿáÿ0ÿCI%ü;àțßàû;/I;;0ÏŰűùțűùüűùțűÿâÿ0ÿBI%üFüĘûF4I::/ÏŰôűùűááÿ/ÿAJ%ü8ÿÎÍÎÒû8/J99/ÏŰśűùűűśűááÿ.ÿ@I%üFęàßûF6I88.ÏŰôűöűááÿ-ÿ>H&üAŚțÖŚûA5H66-ÏŰûűùûűöűááÿ,ÿ>H&țAČúÔČęA5H66-ÏŰôűőűááÿ+ÿ>H&1148ŒęÌÏŒ8ę4.H55+ÏŰôűôűááÿ)ÿ=G&ț>@KÏțÚÍLüA 7G44)ÏŰűűùśűôűááÿ(ÿ;G&ü:QÆÍÆQû:4G22(ÏŰőűőóűááÿ(ÿ:F&û6^Š^ú61F11(ÎÖóóűááÿ':Q:ïX:Q1'ÎÖôóőűááÿ'ú6ț5ÿ4ț2ü10ț/'ÏŰöùűùùűáÿ&:6:5544ț2ü1ÿ0ț/.2..&ïáű%&%%&%%&ü%&%&&%îÓ    úìÿòúëÿęòúêÿűó±ăÿđóáÿßőàÿÇößÿĄśȚÿrűĘÿGùÜÿ"ùÛÿ úÚÿûÚÿțüÚÚÿęęÚÙÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿÿ8ÇŰÿ8ÈŚÿÇÖÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿ*çÿÿpń@22@AABCEí@2ï%!"#&-(&!'#""!"+'#+!((&"($&('ŁęÁž”ŻÍŻÈńìŁüÁÿŒáóÚ ÙŚÔËșČčèïïúțíŁûÁșÙòÏ ÎÌÆč­čžïïúțíŁêÁ čÍÊÁł”ș¶”úțíțąÿŁąŁąŁŁąțŁąŁęąęŁ ąÌËĆČ°șș”úțíè  ÆÈÁ±Żœșč”úțíțžțțžžțûžę šÄż­ŹĂŸșž·úțíúš ńšèš­èńńš›ńšńüš “Àž©šÉÄżș·žúțíú˜ń珘çț˜ń—ńńŹü˜ œł€ąĐÊĆÀ»··ûțíú•đ©ț•æòòđ•đ©û•ŒČą›ÓŃËÆÁ»·°šuțíÿ•ț”ÿ•𔕔æț•đ•đ•ț”•”•œ±ą–ÖÓÒÌÇÁŒ¶šuțíę’ÿ“’đț’撓đđ’đú’œŽ€”ÜŚÓÓÍÇÂœ”uțíú‘ 𑒒Šæđ‘đ‘đû‘’‘żŽ€—âĘŰÓÓÎÈĂŸłuțíöő’‘À”§žéăȚÙÔÓÏÉÄżČuțíöő’Á·©šìêäßÚÔÓĐÊĆżłuțíú‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ù­§Š§țŠț§țŠ§țŠźÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­üț§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·łŸęęŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸțü„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…Äÿû€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÄțÌüŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č––ęÌęąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™™üÌț ÉőĂÄțĂÿÂóĂțÂÿ ûÌÿŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ  úÌŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸŸéÌÊĂÂțÁÂüÁÂÁÂüÁÿÿÌËëđ ÓĂÀÁÀÁÀÁÀÁÁțÀțÁÀÁÿËéđșźûÀÁùÀÿ›ÿÊÙŐÚŚÚÙÙțŰÿŚțÖÿŐęÔÚÙÙəąÀężÿÀ żÀżÀÀżżÀ››ÿÈٔíÙ”ÙșĄúżŸúżÿšÿÇÿŐášńŹ ±áŐŐǙĄŸżŸżŸżțŸÿżÿŸÿżÿšÿÆÿŰߎń »ßŃŃƙĄŸŸœęŸœüŸœŸ˜˜ÿĆÿŚĘŽüĐäțăäûĐÂĘĐĐƙĄœŸœŸœœŸœŸüœŸ˜˜ÿÄÿÖߎÙęÚățâăûÚÇßÏÏÙĄțœŒûœŒœœŒŒ——ÿĂÿŐàŽüÉęÏÓûÉżàÎÎÙĄœțŒœŒŒœŒŒœęŒÿ—ÿÁÿÔß”üÛćęäûÛÉßÍÍÁ™ĄűŒœțŒșŒ——ÿÀÿÓĘ·üÔĘțÜĘûÔ ÇĘÌÌÀ™ĄŒŒ»țŒę»Œ»»č»——ÿŸÿÓȚ·ÔŐŐÙùÚęÖÈȚËËż™ ú»Œ»Œț»¶»——ÿŸÿÒĘžÄÄÆÆŐęÍŃŐüÆÀĘÊÊŸ™ û»șû»”»——ÿŒÿŃĘžÔțŐÖęȚĘŚüÖËĘÉÉŒ™ șșț»țșü»Žș——ÿ»ÿĐÜčüÏĐțÓŃûĐÇÜÈÈ»™ șț»üș»șș¶łș——ÿșÿÏÜčûÍÏŃÏúÍÆÜÇÇș˜óČș——ÿčϔÏïđϔÇ蘝ôČ”ș——ÿžüÌÿËțÊÿÉțÈüÇÆțÄ·šŁóĆż—ÿ·ÈËÈÊÊÉÉțÈüÇÿÆęĆĂĆĆ·ï—””Žü”Ž””Žû”Ž”Žü”îÓ%%!"#+-(&)*&*'*"& *("%#**-( qęęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìqüÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïqûÖîńé çàÔÇȚÙđđúțïqê źæäÚÌŚßŚÖúțïțpÿqpqpqqpțqpqępęq pçäȚÍĐßȚÖúțïèn ȚâĘËÌàßĘŐúțïțjkțjțkjkțjûkęj čßÖÇÈâàßÜŚúțïúg êgÜg„Üêêghêgêüg ÛÓÁÂćăàßÛŰúțïúdêۂdÛțdêcêê‚üd šŰÎŒ»èæăáßÛÖûțïa``ęaéțaÚììé`éüa`™ŰÍ»”êéæäáßÚĐÄ wțïÿ_ț^ÿ_é^_^Úț_é_é_ț^_^_šŰÍ»źëêéçäáßŰÄ wțïę\ÿ]\éț\Ù\]éé\éú\›ÙÏœŹîìêêçäâàÖ wțïú[ è[\\{Ùè[è[èû[\œÜĐż°ńïìêêçćâàÔwțïöYXőYc›ȚÒÀŽôòïíêêèćăàÓwțïöYXőYc›ȚÔĂœöőòđíêêèæăàÒwțïúY ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ûYÿŁ ŒččșșčșșččțșțčșÄߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””üYțĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàęYęÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàțYüĂ çćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄăÿYûÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźățlüÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłłęlęÀçäăääăęäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””ülțżçęățäăäùăáäăăäüă äăăäăâăăżżûlÿżæđăáśăäûăÿŸúlœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœœél†Èăățâăâăăùâăœœÿlkëœ wÈââăââăâăââăûâÿŒÿk霅łÌòâÿ»ÿj~zț‚ÿț€~ț}ÿ|{țy‚~~jłœúâÿáâáțâá»»ÿi~jí~j~iłœâáâüáâáâțáâččÿhÿ|‰LńQ T‰||hłœááâőáÿčÿgÿ€‡Uńc[‡uugłœűáàüáÿžÿe~†Uüsáțàáûs c†ssfłœàááàüáàáàáàážžÿeÿ}‡Uę‚üßû‚j‡rqełœùàáàțáßážžÿcÿ|‰UünÿÎÍÎÒûo b‰ppcłœààáùàáàȚà··ÿa{y‡Uü‚ęâáû‚m‡ooałœùàßàßààĘà··ÿ`ÿx…Wü{üÙû{j…ll`łœàßöàÛß··ÿ^ÿx†W{||ÂŚŚțÖÿŚÂę}l†kk_łœßàęßüàßàÚß··ÿ^wv…XggilÄęÌÏÄlęia…ji^łœûßÿàßàßàßÙà··ÿ\ÿu„Xxyyz‚ÔțÛӃü{ n„hh\łœßßàțß àßßààßßÙß··ÿ[ÿs„XțqÿrÌĐ́ûr i„ggZłœßßàúßàßÚŚß··ÿZrqƒXûl†”†úlfƒfeZČșóÖß··ÿYqjqïœqjfYČșôÖÚß··ÿXülÿkÿjihhțgfęedțaWŽżóćâ·ÿWmkmjihhțgfęeÿdțcac``Wï· UVWVUVVUWVVțUÿVÿUWUWVUVVUîÓ%!"#&,'%)'+"*(+&&%()'#$ #&!›ęșțńđńđńńđđńđđńđńđńïîíéöŐàńí›üșÿđûòú űśńçćóóòò””úțń›ûșïđù űóìâöóòò””úțń›êș Ëśöđçńśńń””úțńțšÿ›š›š››šț›š›ęšę› šśôòçëśśń””úțńè˜ đőïăçśśöï””úțńț”•ț”ț•”•ț”û•ę”Ńńëàâțśőń”úțńú‘ đ‘æ‘Šæđđ‘’đ‘đü‘»îèÜĘűțśôđúțńúïć„ćțđŽđđ„üžëćÙŚùűțśôïûțńúŒïąțŒäńńïŒïąûŒžëäŚÒùùűűśśóçâG::•țńÿ‹țŠÿ‹Šäț‹ï‹ï‹țŠ‹Š‹·íćŚÍęùűśśòâG::•țńęˆÿ‰ˆïțˆ㈉ïïˆïúˆčïæŰËúęùűśśńG::•țńú‡ ˆžăï‡ï‡ïû‡ˆșïçÚÌûúęùűśśđ::•țńö†…ő† ŽșńèÛĐüûúúțùűśśï:•țńö†…ő† ŽșńëȚŚüüûûúțùűśöî•țńú† ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțń óőùùűűőì€ÂÂû†ÿÇŐęÔÿÓÔÓûÔÿÓĘôìâÏÇÄțÁ ĂĆËÖȚíűôëÂÂü†țè%ùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîëśę†ęèÿùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘśț†üçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśÿ†ûæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖśț6üæúțű!ùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚę6ęæùűűùùűùùűùùśśóîèëëćéçëíîîííììîÜÜü6țćúűűùűùüűęùűùùűűùțűùűűùęűùűśśććû6ÿćùűùűùűùüűÿùęűöțűÿùűùüűùűùűűććú6äùüűùűùűűùűùùűűùśűűùùűűùűùțűùűùùűääé6aÍțűęùțűùțűùűűùääț6ëX=Íűùűűùùűùűùűääÿ5éX`Ïäűùüűÿùüűùăăÿ4C@FHțFțDÿCțBÿAț@ ?FCC4ÏŰűùűűùùûűùűùăăÿ4CQíCQC4ÏŰùűùęűùțűùűűùââÿ2ÿBJń#$JBB4ÏŰțűÿùęűțùțűÿâÿ1ÿDI%ń/)I==2ÏŰòűÿáÿ0ÿCI%ü;àțßàû;/I;;0ÏŰűùțűùüűùțűÿâÿ0ÿBI%üFüĘûF4I::/ÏŰôűùűááÿ/ÿAJ%ü8ÿÎÍÎÒû8/J99/ÏŰśűùűűśűááÿ.ÿ@I%üFęàßûF6I88.ÏŰôűöűááÿ-ÿ>H&üAŚțÖŚûA5H66-ÏŰûűùûűöűááÿ,ÿ>H&țAČúÔČęA5H66-ÏŰôűőűááÿ+ÿ>H&1148ŒęÌÏŒ8ę4.H55+ÏŰôűôűááÿ)ÿ=G&ț>@KÏțÚÍLüA 7G44)ÏŰűűùśűôűááÿ(ÿ;G&ü:QÆÍÆQû:4G22(ÏŰőűőóűááÿ(ÿ:F&û6^Š^ú61F11(ÎÖóóűááÿ':Q:ïX:Q1'ÎÖôóőűááÿ'ú6ț5ÿ4ț2ü10ț/'ÏŰöùűùùűáÿ&:6:5544ț2ü1ÿ0ț/.2..&ïáű%&%%&%%&ü%&%&&%îÓ  űìÿòűëÿęòűêÿűó±áÿđóßÿßőȚÿÇöĘÿĄśÜÿrűÛÿGùÚÿ"ùÙÿ úŰÿûŰÿțüŚÿęęÚŚÿűűȚÿđűĘÿáűÜÿÊűÛÿűÛÿ űÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿù!Ûÿ*ù2@AABCEá@2)&,//+/' #+%""""+'& ("%&%!! Ęûìž”ŻÍŻÈńìĘúìÿŒáóÚ ÙŚÔËșČčèïïúțíĘùìșÙòÏ ÎÌÆč­čžïïúțíĘèì ŐÍÊÁł”ș¶”úțíæĘ ÌËĆČ°șș”úțíüÛÜńÛțÛÜÛÛĆÈÁ±Żœșč”úțíęŰÿÙŰÙŰŰțÙÿŰÙŰŰțÙțŰŰÙÙŰ„Äż­ŹĂŸșž·úțíüŚțțÿŚțțŚțțŚțŚțțÿęŚ ŽÀž©šÉÄżș·žúțíÿŐÖŐțțŐ țŐțŐŐțŐțŐÖțŐŐțțŐ ÖՋœł€ąĐÊĆÀ»··ûțíÓÒÒÓÓțțÓÒÓÓțÓțÓțÓțÒÒÓțęÓҊŒČą›ÓŃËÆÁ»·°šuțíÓÒÒÓÓÒÓțÒÓÓțÓțÓțÓțÒÒÓțęÓҋœ±ą–ÖÓÒÌÇÁŒ¶šuțíęŃÿțŃțțŃțțŃțęŃțüŃ‹œŽ€”ÜŚÓÓÍÇÂœ”uțíțÏÿĐÿÿțĐțÏțțĐțțĐÏțțĐÏЋżŽ€—âĘŰÓÓÎÈĂŸłuțíęÎÏúÎÿÏÿÎÍûÎÍÏÎϋÀ”§žéăȚÙÔÓÏÉÄżČuțíûÍÌúÍÌöÍȋÁ·©šìêäßÚÔÓĐÊĆżłuțíûÍÌÍ̓›”’ŽôŒ‹ÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ûÍÌ͍Ș€Ł€țŁț€țŁ€țŁŹÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­ûÍÌț§ÎÆùÇÆûÇĆÂș±Šœ˜––’’“•”’™Ź·łŸûÍęŠÍöÆÇęÆĆÂŒŽČŹŠąŸ˜””–˜——•‘˜ĄŸüÍü„ÍțÆÿĆöÆÄĂÁÄŒ±©ŁĄ™••——™››š˜…ÄęÍû€ÌÄęĆÄśĆ ĂÇĐÊÁž¶±ź€ęŸĄąŁ„§’ÄțÍúŁËśÄĆüÄ ĆÓŃÎÈÆÁœż”łțČłŽ±°Č––ÿÍùąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÒÖÒÍÇÉÂłŽČ·žțčž·žž™™Íű ÉőĂ ÄĂĂËÖŐŚŚÖÉśĂțÂÿ śŸÈÂÂĂÂĂÂĂÂęĂÿ ĂŐŚÔÖÖÊĂÂÂțĂțÂĂțÂĂ  śŸÇüÂÁęÂÁțÂÊÖÖÔÖĐÁÁțÂÁțÂÁÂÂÁŸŸśžÇüÁÂüÁÿÂÁÒŐŐÖŐĆÁÂüÁÂÁÂüÁÿśÄüÁÀțÁÀÁÀÁÆűŐÁÀÁÁțÀțÁÀÁśœÄôÀÎÔÔúŐțÀÁùÀÿ›ś›ĂÀżÀÀżżÀżęÀÂÓÔÓÔÔÓŐÔŐÔżżÀÀżÀżÀÀżżÀ››śšĂżŸúżŸżżÉęÓÔüÓężŸúżÿšśšÁżŸŸüżŸțżŃúÓÒÓÒżŸżțŸÿżÿŸÿżÿšś˜ÁțŸœúŸÈęÓÉüŸœęŸœüŸœŸ˜˜ś˜żœŸțœŸœœŸœÀÒęÓÀęœŸœŸœœŸœŸüœŸ˜˜ś—ż»űœÌțÓÒÊúœŒûœŒœœŒŒ——ś—Ÿ»œœŒŒœŒŒŸÊÒÒÓÓŃżęŒœțŒœŒŒœŒŒœęŒÿ—ś—œșüŒĆÉŃÒÓÒŃÒĆóŒœțŒșŒ——ś—œč»Œ»ŒŒÓÓțÒŃÒËŒ»»üŒ»țŒę»Œ»»č»——ś—Œ¶ț»Œ»ÓÓęÒËŒ»»Œś»Œ»Œț»¶»——ś—Œ”ü»ęÒŃÆó»șû»”»——ś— ŒŽ»»ș»»ÒÒÍÆœșù»ÿșț»țșü»Žș——ś—»Ž”șș»șœ»üș»ș»üșț»üș»șș¶łș——ś—șßČș——ś—ș¶áČ”ș——ű—żÁàĆż—űۗŃ% (&,))//* //#*.#'*$&$ '#$!$$! xû§ęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìxú§ÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïxù§Öîńé çàÔÇȚÙđđúțïxè§ ±æäÚÌŚßŚÖúțïwûvwțvwövwvwwçäȚÍĐßȚÖúțïësęęs ßâĘËÌàßĘŐúțïnonoonnonnonnooûnęnnonnœßÖÇÈâàßÜŚúțïüjțęÿjęțjęțjęjęęÿęj ŁÛÓÁÂćăàßÛŰúțïgfggęghgęfęggęfęggęfgęțg hg ŰÎŒ»èæăáßÛÖûțïübÿęębębębęcęțbęübŸŰÍ»”êéæäáßÚĐÄ wțïúbęțbębębęcęțbęüb ŰÍ»źëêéçäáßŰÄ wțïÿ_^_ÿ__^üț_üț^üę_ü^_^_^ĄÙÏœŹîìêêçäâàÖ wțï\]]\[ÿÿü]ț\ü\\]üę\ü\\]\\ąÜĐż°ńïìêêçćâàÔwțïț[YZY[Zü[Z[[Zû[Z[[ZĄȚÒÀŽôòïíêêèćăàÓwțïțYXYXYXïYiĄȚÔĂœöőòđíêêèæăàÒwțïțYXYXYXY›±­©ŠŁŁ€ŁŁę€Ł€Ł€ĄȚÖĆÇìèćăâăćêéæäȚÏz””țYXYXYXŠŠÀœœŸŸœŸŸœœțŸțœŸÆߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””țYXYXYțĆéńćăàŰÎÀŽˆ™©Ș­źŻ­ČÈÖĐàțYXYXęÄèäüćäććäûćâàÚ͝ukkj“­ŻŻČł±°źŽŸàțYXYüĂ çćääćäćääććäćțäćăâɀpligg“­­°°Ž””ŽŽĄățYXûÂçőä ćäćäâÈ|tpmmlk›ęșŒœżÁÄźățYúÁçțäÿăÿäăûä ăäրwvsrpozŻęÏŃÒÎÌÏłłÿYùÀçäăääăęäăäțăäâywtru˜œŃĐŐŰŚŚŰŚŐÖŚ””Yűżçęățäăäûăčțyz{Ăüă äăăäăâăăżżśżæóăȚywxxŒúăäûăÿŸśœćăâăâțăâęăâă”xwwx™ăâăăâăâüăÿâăœœśœćâăâăăââăââăăâá†vvwxÎââăâăăùâăœœśŒäüâățâÿăÿâÄüvțxyăâăââăûâÿŒś»äûâáûâ–uuûvwőâÿ»śșăűâáâáŐùuÿvęâÿáâáțâá»»śșăáââáțâÿá âáá©tuututuutvüáâáâțáâččśșâáâűáĘ}ęsvęwxőáÿčśčáàüáțàÿášęrŠőáàüáÿžśžâáààúáÒuțrtÒáțàÿáàüáàáàáàážžś·áßàááààáààߓsrsrŸáààáùàáàțáßážžś·âȚûàáٙęrvÔûàáùàáàȚà··ś·áĘüà”ž{rsqqr±ęàßùàßàßààĘà··ś·àÛțàßàțręq”ßààßțàßöàÛß··ś·ßÚàßàßàssęr ”ÜßàßßààßàęßüàßàÚß··ś·ßÚààßßàsțrwȘĘàßßęàûßÿàßàßàßÙà··ś· ßŰàßàßßsr†ȘŃößàțß àßßààßßÙß··ś·ߌÚțßàÓĘóßàúßàßÚŚß··ś·ßßÖß··ś·ßÛáÖÚß··ű·ââàćâ·űÛ·Ń)+&(+(++0-/-1'.+-'%%' ! (ûhțńđńđńńđđńđđńđńđńïîíéöŐàńí(úhÿđûòú űśńçćóóòò””úțń(ùhïđù űóìâöóòò””úțń(èh ‘śöđçńśńń””úțńț&ÿ' &''&'&''&'&'&'ę&'&''śôòçëśśń””úțńë$üę$ đőïăçśśöï””úțń țțÿ   ü Îńëàâțśőń”úțńüțûÿûțûțûûûÿę”îèÜĘűțśôđúțńęûț ûûûûûûüČëćÙŚùűțśôïûțńüÿû ûûûûțûüČëäŚÒùùűűśśóçâG::•țńú ûûûûûțûü±íćŚÍęùűśśòâG::•țńęÿțûûûęûęłïæŰËúęùűśśńG::•țńę ÿÿûęûț û ûü ŽïçÚÌûúęùűśśđ::•țńÿ ! ŽńèÛĐüûúúțùűśśï:•țń ę  ü  ț ,ŽńëȚŚüüûûúțùűśöî•țń ę ¶ÁŸ»ž””¶”¶¶ę”ÿ¶”ŽòêßĘőóțń óőùùűűőì€Â ț ÿÄŃęĐÿÏĐÏûĐÿÏÛôìâÏÇÄțÁ ĂĆËÖȚíűôë țè%ùűűùùűűùűűùùűűùùűűôíæÚݚŽźÈÈËÌÎÎÓăîëś ęèÿùśűțùűùűőïá—\RTUžÉÊËÎÏĐÏÏŐĘś üçùęűÿùűùùűțùÿűùśőŃXGJMNN›ÉÉËÍÏŃÓÔÓÇś ûæùűűùùęűęùűțùöÉI@ACFHJŸÔÓŐŐŚŚÙÛßÖś úæúțű!ùűùűűùűùűűùűùăN@?@@ADS±çæçèéêćäçÚÚ ùæùűűùùűùùűùśh@@??D€ÉéçëíîîííììîÜÜ űćúűűùűùüűęùűŻę@CżűùűűùęűùűśśććśćùűùűùűùüűÿùűđOț@AŽùùűùüűùűùűűććśäùüűùűùűűùűùùȘ@??@yùùűűùűùțűùűùùűääśäùűùöűöZț?@ÖęùțűùțűùűűùääśäÿùęűÿùțűùűűÄę?@țBDùűùűùűääśăûűùûűùxù?AęűÿùüűùăăśăűùùűùűűùűűùűùäAù?Aűùùûűùűùăăśâűűùűùű™ű?AęűùțűùűűùââśâùűùűűùđQę?DęEFùùęűțùțűÿâśâśűÿù™ę?•űùńűÿáśâűùűűßEț?Báęűùțűùüűùțűÿâśáÿűùúűövę?ˆđűùűááśáűśúűî>ț?Făóűùűűśűááśáűśüű°‰N>?ț>Șïűöűááśáűśüűÿ?ü>xőűùûűöűááśáűőțűùű??ę>wóîűőűááśáűôüű?ț>Eôíűôűááśáùôüű>?`áöűùśűôűááśáűóőęűăôéűőóűááśáűßóűááśáűöáóőűááűáűűăùűùùűáűÛáŃ   ÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțŃŃŃŃŃŃŃŃŃń$ț"îÿÿÊëőCri,ü6Áÿÿ˜üFóökĄ“Gü4ÇÿÿŁü1u‚Xőö`Çûêœ/ęvúÿÿá`ę'ŽÖèżőś[ŐęÿŹZ1@áęÿŐy;/XšęÿäxśűjàûÿòÖáùÿßŐńûÿò}űúŒűćÿő{ùû0­âÿóùüȘàÿáUûü\ïßÿ™ûü[ößÿ„ûü&Éßÿ„ûû‡àÿüTûûWśáÿă8ûû[ôáÿéIûü˜ßÿŽüę,”üßÿôƒ ęțkÊÛÿŠ1ț!™ŰÿÇQRžÖÿć#ïÓÿŃŃÿŃÿŃÿÒÿńŃÔÿÁV#ćŚÿŽ3ÿQÈÙÿ€&ț3ȘÜÿá{ țę’ȚÿÇRüü!Żàÿè^ûû€àÿÀ!ûû„àÿÆ!ûü­àÿïMûü9ŚßÿûüFȚßÿûü«àÿùfûûAÄáÿ—ûú:łäÿùŠùù!—æÿêsűűŽïÿâéüÿśöś2łęÿȚš§Úùÿœ‹—Țęÿ«öś’ęÿ¶šûûÿí˜țęÿŽöű öûÿüęÿ±ű $&!#&**))*$&'&(+*+*(%%# !###(***)(#)'/,&/.%-0/(/*((%)&*)*)&$! ÿ Ù.țÿ“Ù#8țÿ“Ù#8țÿ“ă#ț$ú#8țÿ“ö#"ô#! ü#8țÿ“ű#"_F!ű# !?csuhH# ț#8țÿ“ű#Uęó­Y%"û#$hĂòęÿűŃx$#8țÿ“ù# !ÊęÿWü#$,łśÿ¶)#8țÿ“ù#zęÿÍ(ü#,ÈőÿŻ!8țÿ“ú#5æțÿûYü#!łûÿțúÿf8țÿ“û#"€ęÿŹ"ü#hüÿĆnRh»üÿ»6țÿ“ü#$Tùțÿí=ü#!ĆęÿŹ§ęÿç03țÿ“ü# "Éęÿˆû#1ńțÿă1##$DöțÿöD1țÿ“ü#{ęÿŐ)û#!$ŃÿÿŽę#,ćțÿúP0țÿ“ę#6èțÿędù#"%\”8ę#1èțÿśH0țÿ“ț#"€ęÿ¶ę!"û#$ę#Pùțÿí63țÿ“ț#UúțÿóFț!!ó#˜ęÿÍ#5țÿ“## Ëęÿ “}ÓÍĐž0ö#$Jòęÿ9țÿ“##|ęÿà.»țÿû?ś#$3Öęÿî:8țÿ“#6èęÿp!#Çțÿò>ś#>Òüÿ#8țÿ“"€ęÿĂ!)Śțÿò>ù# [èüÿŹ!#8țÿ“UúțÿűP$3çțÿò>û#$†śüÿ­###8țÿ“#ÌęÿĄ##Dśțÿò>ü#$'«ûÿ•ț#8țÿ“ zęÿá+Pęÿ ń6 ##$3Ćüÿînę#8țÿ“ Šęÿ˜;țH>}ęÿ ô_DJ+!#.ÍüÿÏF"ü#8țÿ“ Łęÿòőțöőùęÿțśöùj Žüÿ­(ú#8țÿ“ ŁîÿvuüÿŠ$ú#8țÿ“ Šîÿv%ÖęÿË#$ù#8țÿ“ ˜ÿùüûüüÿÿüęk Węțÿțb ú#8țÿ“1PùND†ęÿôdJL)ŠęÿöbDúJL;!8țÿ“űdęÿń6!ŻęÿțśùűùÒ)4țÿ“ś#jęÿò>#! Èòÿá.4țÿ“ś#jęÿò># %ÒòÿÜ,4țÿ“ś#jęÿò>#(ßòÿć,4țÿ“ś#nęÿü>#!#ĄËôÆ˘"6țÿ“ś# :‰Œ‹})!##" ô !8țÿ“ś#$ę"ę#"!ô"!"#8țÿ“Ù#8țÿ“Ù#8țÿ“Ù#8țÿ‘Ù#4țÿ+Ú96JțŃŃŃŃŃŃŃŃŃńÿțÿÿ€Íÿëőÿôîÿüÿû=ƒÿÿüÿâóöÿìNRűüÿÒ7śÿüć#ƒÿőöÚ7-ȘÿęÿËÿęÿf0gőśŸMìŸ(çțÿïÖ5nâöțÿ·ÜÍ!BèśűĄośÿúHl֏M$ T2aŹÛ4Œÿÿà:(Đűú è… ŠÿțÿÿÔęĂ\üFùțÿïUŽùû ï`©ÿțÿŒÊÿü/üȘü Íü°Țÿÿùuùü ăEÇÿțú„ÜöCę{ÿéę ‚ÿ˜(Áÿțÿ“{ûü,-ßÿțê\ț UțÉÊÿÿcț 6óÖšțęÿ· ûüh)ïÿôIl3žÿ}>țÿ» œęLHašÿÿÄûü$ë8^ęì!RÿŻÜń4jÄśë·nÿ” Ùÿ,vÿè'xûû#Ńžÿœ„BTțžMÿé%êŚ[y!áüZ;óûûÿ ÒęQęÿi »”«üJ©ÿ›ŚÿûûÿÏBöÛüȚï&ę`ÿ“û`ÿÒ?ęÿûüÿÿc|ÿ›ț M‚ :˜ü"âő@ŸÿÿüęŃą† ț±ęRûzĂßÖŠJû§ÿtț:’«êęț)n2S^__]ùÛVçÿĘ·Äśÿźaÿàf`__\L$"—țđM&ČśüÿüùÿœMűâV/J?4—ÿč $ățûûÿì‹ ÿp%ßÿțùÿù8Üç4wæțûÂ4†ÿt‘űÿțÿł”ÿÔżÿęóyę{|uH"^ÿmkÿÿûûÿÛ*ÖÚ+c|ę{z~Èÿüÿz8ùeCțęûa$uü~žÉšő2Śÿțû úÿl†ț*p‡}ę~XÁÿțà"Ëuÿÿá·ùÿă °ă4đęęûÿŒiÿ8cűÿ?mÿęś6Ł'jÿęđ/Q»ÀüżĐÜŸó2Üÿęûÿs€ÿ,sćÄŸężÁ –ÿęô0ź“,òțÿĆ<),ț+ÿ, . gÿ`|ÿęûüÿć.Ìá&$(-,ę+)tôüÿĆÛë$ˆÿûÿúțïđïđđàOćȚ)śÿÿŰ@qÿ‚ŸïđüïòÿęțüHZÿÿ„ ŠùÿęÿÚ^ÿĐC=\O/~ÿÉ_ÿțțúÿśnŚÿ„ `ÂĘțàÿßûúOę iőÿƛ©ćÿÁ#ț€ÿőĘęàÚ­=Œț Ż9!ÿ—û+—ÚńëÄeü àńL UȘțę êȚÓ90ïŰü ^ 4düZțÆ …Ùàüüÿÿš ÄęOü ÿPkJ˜ÿN€ÿˆ*ëÿûûÿá„ÿ–ü Xÿ«/ÿŐâÚüàúAHÿÿûû#ùYAśÙCàê& oM_ÿ˜):Xꌙÿûüÿ•ŐùPNÿšĄÿoúŽțQ Ńü)„ÿŸÍûü$Ć ÿé&Ż`Węż G‡{--íŰąmÿę`4ûü>áÿęŠțȚö9ˆțÿđQxÿšț>Ęęÿ­úü$Š.ŃÿÿÄ+ĄÿˆCțŸ9QéȚÆțRaîÿÿŠ Fûû#Ű/»ÿÿàUpțĐ€ÿ<‚ÿ:?śÜHŠüÿțˆdÛûú ćM ąÿÿțÿúJțpÿaŁę.țŒÿęÿÿùnùùđnˆęțÿ—%9"ćò‘©ÿŽY€ÔÿÿíS ąűűÿŽmùăŠÿűXCĐÿûŻ˜ęÿaHÿȚ9öśÿŻPQTęÿęä;+#oûÿÿâ%y(6ŰöśÿÿÌ&Úÿÿë|' :ĄțÿțąTíÿöűÿöÿòÚßúÿüò„öÿęÿű $&!#&**))*$&'&(+*+*'!%$ !###(***)'%))//*..%,0.+0*(($)&*(*)&$! ÿŽÙ*țÿ“Ù5țÿ“Ù5țÿ“ö ïț ú5țÿ“öôü5țÿ“ű^Dű =bqsgF ț5țÿ“űTęó­W"û gÄòęÿűÒv 5țÿ“ùÊęÿVü )Čśÿ·&5țÿ“ùyęÿÍ%ü)ÇőÿŻ5țÿ“ú2æțÿûWüŽûÿțúÿe5țÿ“û€ęÿ«ügüÿĆmQgŒüÿ»4țÿ“ü Rùțÿí:üĆęÿŹ§ęÿç-0țÿ“üÉęÿˆû/òțÿă/ AöțÿöB/țÿ“ü{ęÿÖ&û €Òÿÿę)ćțÿûN-țÿ“ę4èțÿțcù"Z”5ę/èțÿśF-țÿ“ț€ęÿ·ęû ęNúțÿí40țÿ“țTûțÿóDțó˜ęÿÍ2țÿ“Ëęÿ “{ÓÍĐž-ö HòęÿŽ5țÿ“zęÿà*»țÿü=ś 0Öęÿï85țÿ“4èęÿn Çțÿò<ś<Òüÿ€5țÿ“€ęÿĂ&Űțÿò<ùZèüÿŹ5țÿ“TúțÿùN 0çțÿò<û …űüÿ­ 5țÿ“ ËęÿĄBśțÿò<ü $«ûÿ”ț5țÿ“yęÿá( Nęÿ ò4 0Ćüÿïmę5țÿ“Šęÿ˜9țF<}ęÿ ô]AH(*ÍüÿÏDü5țÿ“Łęÿóőęöùęÿțśöúh”üÿ­%ú5țÿ“ŁîÿusüÿŠ ú5țÿ“€îÿu"ÖęÿË ù5țÿ“—ÿśüüÿüęęjVțțÿț`ù5țÿ“/NùLB…ęÿôcHJ&‰ęÿś`AúHJ95țÿ“ù cęÿò4ŻęÿțśùűúÒ&1țÿ“śhęÿò<Éòÿá*1țÿ“śhęÿò<"ÔòÿĘ)1țÿ“śhęÿò<%àòÿć)1țÿ“śmęÿü< ĄËôÆ˘4țÿ“ś 8ˆ‹ŠŒ|&ô5țÿ“ś ęęô5țÿ“Ù5țÿ“Ù5țÿ“Ù5țÿÙ1țÿœ(Ú54HțŃŃŃŃŃŃŃŃŃńÿțÿÿ€Ìÿëőÿôîÿüÿû<‚ÿÿüÿâóöÿìQRűüÿÒ7śÿüć%…ÿőöÚ;ȘÿęÿËÿęÿjgőśŸ 7Čt(èțÿïÖ5nâöțÿ裗CèśűĄQžœș2n֏M$ S2aŹÛ4fÁżŠ()Đűú è…dŸŒŸÂęĂ\ü 3čÁŒœČ<¶ùû ï` |À»œŠ”Ăgü/üȘü —Œ€żŒčU ùü ăE’ÀŒș`„ș0ę{ÿéę ^ÈoÁ»Ÿl{ûü2ŠżŒźBț =ż” Êÿÿcț '·ž rœșÁ†ûüj±Œ”6l3sÇ[>țÿ»‹À7HasŸÀûü$ë8BżŻRÿŻ€¶%jÄśë·QÇn Ùÿ,WÄ­zûû#ŃrÇr„B=Á‡Mÿé°Ą[y§À?=óûûÿ œż;üsĆL »”~ż6zÉoŚÿûûÿÏ/čĄü€ČęEÇjęF› @ęÿûüÿÿc[Çrü 8_  )rț©č.ŸÿÿüęŃ€‰ ț‚ż<ę{ĂßÖŠLû{ĂUț<•­êęț!n";FGGF_»ąVçÿȚčÆśÿźGż€JțGC6"—țđMƒ¶ŸężœčÀsMűâV&7/1˜ÿč ©ŒčœężŸźf „ÿq„ÁŒÀûÁ»)Üè2UŹœș$‡ÿtlÇúÁŸ»Ăƒ ”ÿŐŒÁ»ŽrWęXYV5_ÿnMÂŒčșÁĄ"ŰÚ !IYüXZ”œčÂW:ùg1œșșG%xę€ Éšö.žŸęčÁM‰ț)pÉ~ęZŽŸŒ€ÎUÁ»Š žùÿă °ä*ŻșęčÁdkÿ8cűÿALÁș·&Š)MÀșł SŒÂüÀĐÜŸó,ąœęčÂQƒÿ,rćĆüÀĂĄmÀșŽ"±•ł»œ*!ț !". gÿaZÄșččŸȘ#Îá%""ę !U”șżÛë$bÂșœčČę±ÿČ©8ćȚ%fžÀżŸ+sÿ‚uțČ걎œș»Œ1^ÿÿ„yÀŸûœșżŁ^ÿŃB.@8)ÿÉEŸ»»ûœÀžNŚÿ„ D€ț§Š„čș:ę jőÿǞ«æÿÁ#țyÁłŁŠț„ą*ŒțŻ9ț`Äoû-˜ÚńëĂfü §Ž7UȘțę êȚÔ9"ŽĄü E $IüAÁ“†Úàüüÿÿ§ ‘À:ü tĆ8kJoÄ9țyÇc)ëÿûûÿá`Çoû ?Â}/ÿÔšŁüŠ»-Kÿÿûûù[.ŒąCŠźnMDÄpț*:Až™ÿûüÿ• žœ;Nÿ§vÆQúƒÁ: Ńü)yÇsÍûü$ĆuÂź%Ż`?G‡z-!łąąPÀœE6ûü>ŠÀŒ{ ț€ž)ˆțÿđQWÇqę-ŁŒÄúü$Š›ÁÁ‘wÉbCțŸ9QéȚ ‘À;G±żżyFûû#Ű0‰Áż„>RŸ› €ÿ<‚ÿ;.»Ł3f»ŸœddÛûú ćPvÁœșœ»4țpÿ`Łę.țgÄșœœžOùùđndœ»Àn%9"ćó‘©ÿŽY€›œŸ°; ąűűÿŽN»§§ÿűXCĐÿûŻ˜ęÿb2ÁŠ(öśÿ°99Uüÿęä;+#oûÿÿć$W7ŰöśÿÿÌ'Úÿÿë|' :ĄțÿțąUíÿöűÿöÿòÚßúÿüò…öÿęÿű $&!#&**))*#&'&(+*+*("%% !##%*)**)'(*)/0),-#.-,&1,))&)'*)*)&$! ÿÙ,țÿ”Ù 6țÿ”Ù 6țÿ”ö !ï ț!ú 6țÿ”ö ô ü 6țÿ”ű _Fű >dsthH!ț 6țÿ”ű UțóźY#û !hĆòęÿűÓx! 6țÿ”ù ËęÿXü !+łśÿž' 6țÿ”ù zęÿÎ&ü +Èőÿ°6țÿ”ú 4çțÿüYü ”ûÿțúÿf6țÿ”û „ęÿŹü hüÿÆnRhŒüÿ»5țÿ”ü !Túțÿí<ü ÿÆęÿ­šęÿè/1țÿ”ü Êęÿ‰û 0òțÿä0 !BöțÿöD0țÿ”ü |ęÿÖ'û !Óÿÿę +ćțÿûO/țÿ”ę 5éțÿțdù #[–6ę 0éțÿśG/țÿ”ț „ęÿžęû !ę Oúțÿí51țÿ”ț UûțÿôFęó ™ęÿÎ 4țÿ” Ìęÿ ”|ÓÎŃč/ö !Iòęÿ6țÿ” {ęÿá,»țÿü>ś !1Śęÿï96țÿ” 5éęÿp!Èțÿó=ś =Óüÿ 6țÿ”„ęÿÄ'Ùțÿó=ù [éüÿ­ 6țÿ”UúțÿùO!1èțÿó=û !†űüÿź! 6țÿ”!Ìęÿą Dśțÿó=ü !&Źûÿ•ț 6țÿ”zęÿâ) Oęÿ ò5 !1Æüÿïnę 6țÿ”§ęÿš:țH=~ęÿ ô_BI) ,ÎüÿĐFü 6țÿ”Łęÿóöțśöùęÿțűśúi”üÿź&ú 6țÿ”Łîÿvtüÿ§!ú 6țÿ”„îÿv#ŚęÿÌ !ù 6țÿ”˜ÿűüęüÿüęțkXțęÿbù 6țÿ”0OùND†ęÿôdIL'ŠęÿśbBúIL:6țÿ”ù dęÿò5°ęÿțűűúùúÓ'2țÿ”ś ięÿó= Éòÿâ,2țÿ”ś ięÿó= #ÔòÿȚ+2țÿ”ś ięÿó= &àòÿć+2țÿ”ś nęÿę= !ąÌôÇ̙5țÿ”ś 9‰Œ‹}' ò6țÿ”ś !ęę ô 6țÿ”Ù 6țÿ”Ù 6țÿ”Ù 6țÿ‘Ù 2țÿ)Ú65IțŃŃŃŃŃŃŃŃŃńÿțÿÿ€Ìÿëőÿôîÿüÿû<‚ÿÿüÿâóöÿìQUűüÿÒ7śÿüć'…ùőöÚ?«ÿęÿËÿęÿllőśÁ$ ,èțÿïÖ5nâöțÿș KèśűŠ t֏M$ S2aŹĘ;/Đűú è‡ ęĂ\ü  ¶ùûïfțț/üȘü ùü ăK ț{ÿéț  ~ûü5țÊÿÿcț  úüml3>țÿ»Haûü$ëB  RÿŻjÄśë· Ùÿ,zûû#Ń„BMÿé  [x  CóûûÿŁ ü !ș”"ŰÿûûÿÏ  ę  țțCęÿûüÿÿcę   ț Ÿÿÿüę Ń€Žû }ĂßÖŠNęțBšŻêęț!p   VçÿáœÉűÿźț (—țđRęÿMűâ[-œÿč ț„ÿvùÜè2 Šÿtû·ÿŐ ü ^ÿr țÛÚ û @ùl -ûˆ€Êšś)ț ț)pƏ†ę‡‰cÏ»ùÿă °äûsÿ8cűÿJ©/ ZżÄüĂÒÜŸô%ț  ‰ÿ,sæÇÂęĂĆ€ ”— ü / gÿe ț Ńá'" üĘë(ûÿćà"wÿ‚übÿÿ§ù ^ÿÒD ‚ÿÉűŚÿ‡ țÿ ÿiőÿÉ€ČçÿÁ# țŒțŻ? ț ü2™ÚńëÄi ę    YȘțę êȚÖ;  ę   üˆÚăüüÿÿšę kJț*ëÿûûÿáę 0ÿÔ ü  Pÿÿûû#ù` C  oM );ÿûüÿ˜Nÿš û Đü*Íûü$Ć&Ż`G‡{,~ą :ûüB"ț ˆțÿïQúüŠ! ț CțŸ9QéȚ Fûû#Ü7€ÿ<‚ÿ: dÛûú ćQ țpÿ`Łę.țƒùùđo*9"ćò‘©ÿłY ąűűÿ ©ÿűXCĐÿûŻ˜ęÿhöśÿ° Züÿęä;+#nûÿÿć%>ŰöśÿÿÍ+Ûÿÿë|' :ĄûÿțŁYíÿöűÿöÿòÚßúÿüń…öÿęÿű   úìÿòúëÿęòúêÿűóúéÿđóúèÿßőúçÿÇöúæÿĄśúćÿrűúäÿGùúăÿ"ùúâÿ úúáÿûúáÿțüúàÿęęúßÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿ*çÿï@22@AABCEí@2ï   #%($$''! !"+'#*&.,,(& !ꜻž”ŻÍŻÈńìùŒáóÚ ÙŚÔËșČčèïïúțíùșÙòÏ ÎÌÆč­čžïïúțíùčÙÎęÏęÎÏțÎÿÏ ÎÍÊÁł”ș¶”úțíù·ŰùÎÏęÎ ÏÍÍÌËĆČ°șș”úțíù¶ŰęÍęÎÍÎÍÎÎÍÍËËÈÁ±Żœșč”úțíù¶ŚüÍÎúÍ ÌËÊÈÄż­ŹĂŸșž·úțíùŽŚÍÍÌúÍÿÌÍËËÈÇÀž©šÉÄżș·žúțíùłÖęÌÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»··ûțíùČŐțÌËÌËÌûËÿÊÇÄŒČą›ÓŃËÆÁ»·°šuțíù°ÓôËÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶šuțíùŻÓțÊËÊËÊËÊËÊțËÊÉĆœŽ€”ÜŚÓÓÍÇÂœ”uțíùźÓüÊÉțÊÉüÊÇÆżŽ€—âĘŰÓÓÎÈĂŸłuțíùŹÒÉÉțÊțÉÊûÉÈÆÀ”§žéăȚÙÔÓÏÉÄżČuțíù«ĐÈțÉÈțÉÈțÉțÈÇĆÁ·©šìêäßÚÔÓĐÊĆżłuțíùȘĐńÈĆÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ù©ĐÈÇÈțÇțÈțÇÈțÇĆÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­ù§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·łŸùŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸù„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…Äÿvû€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÄțvüŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č––ęvęąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™™üvț ÉőĂÄțĂÿÂóĂțÂÿ ûvÿŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ  úvŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸŸævțÁÂüÁÂÁÂüÁÿÿvéæ v”ŹÀÁÀÁÀÁÁțÀțÁÀÁÿvéąv”žûÀÁùÀÿ›ÿvąBAA@ü?>==ę<ÿ;ț:9ąv”žÀężÿÀ żÀżÀÀżżÀ››ÿvąUeedțcbaa`ț_^]]\ț[Gąv”úżŸúżÿšÿv ąQb}{a`__^ț]\[[ZYYțX Dąv”ŸżŸżŸżțŸÿżÿŸÿżÿšÿvąM_y}x]\[[ZZYYXWWVSKHH,ąv”ŸŸœęŸœüŸœŸ˜˜ÿvąI\[v}uYXXWWVUTKC:ę6 ąv”œŸœŸœœŸœŸüœŸ˜˜ÿvąFXt}sțrUTSNC8ú6ąv”țœŒûœŒœœŒŒ——ÿvąBU}qpț}QG=ś6ąv”œțŒœŒŒœŒŒœęŒÿ—ÿvą?RțQnjb8ő6ąv”űŒœțŒșŒ——ÿvą;ONNI=ò6ąv”ŒŒ»țŒę»Œ»»č»——ÿvą7LG=đ6ąv”ú»Œ»Œț»¶»——ÿvą0<î6ąv”û»șû»”»——ÿvąí6ąv”șșț»țșü»Žș——ÿvąí6ąv”œșț»üș»șș¶łș——ÿvąí6ąv”›óČș——ÿvąí6ąv”›ôČ”ș——ÿvąëąv”ŸóĆż—ÿvÿæíŚæÁvï—çvîÓ!#!#&$''$(($('*"& (-%&,&#!űŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìùŚòïüîïîîïïțî íìèàĐÌÙìđđúțïùÖîńé çàÔÇȚÙđđúțïùÔîśéèțé èéæäÚÌŚßŚÖúțïùÓîțé èééèéèèéèéțè çäȚÍĐßȚÖúțïùÓíèèééèéțèéüè çćâĘËÌàßĘŐúțïùŃíôè çæäăßÖÇÈâàßÜŚúțïùĐìùèçęèÿæ äáÛÓÁÂćăàßÛŰúțïùÏìçțèțçÿèÿçÿèæääßŰÎŒ»èæăáßÛÖûțïùÎëțçÿèțçèęçæćăȚŰÍ»”êéæäáßÚĐÄ wțïùÍëúçèçèçèçæćäàŰÍ»źëêéçäáßŰÄ wțïùËëæçæęçæțçæççććâÙÏœŹîìêêçäâàÖ wțïùËêęæçææççæçææçæćăÜĐż°ńïìêêçćâàÔwțïùÉëçæçúæçæçææćâȚÒÀŽôòïíêêèćăàÓwțïùÉêòæäâȚÔĂœöőòđíêêèæăàÒwțïùÇêæćæććæććęæćæćæâȚÖĆÇìèćăâăćêéæäȚÏz””ùÆ éććææćææććțæțćæâߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””ùĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàùÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàùĂ çćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄăÿûÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźățüÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłłęęÀçäăääăęäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””üțżçęățäăäùăáäăăäüă äăăäăâăăżżûÿżæđăáśăäûăÿŸúœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœœæățâăâăăùâăœœÿéò ­ÉăââăâăââăûâÿŒÿéź­čòâÿ»ÿźHGGțFțEDCCęBÿAț@?ź­žúâÿáâáțâá»»ÿź\nmmllkkjihhggffeddccNź­žâáâüáâáâțáâččÿźXkä‹ihhgffeeddcbaaț`Jź­žááâőáÿčÿźTgˆäˆeddcbbaa`__^ZROO1ź­žűáàüáÿžÿźPdc…ä„a``__^]\RJ@ę<"ź­žàááàüáàáàáàážžÿźL`ƒä‚țÿ\[UI>ú<"ź­žùàáàțáßážžÿźH]ä€țäXNCś<"ź­žààáùàáàȚà··ÿ źEZYXX}yo>ő<"ź­žùàßàßààĘà··ÿźAVUUPCò<"ź­žàßöàÛß··ÿź=SNCđ<"ź­žßàęßüàßàÚß··ÿź5Bî<"ź­žûßÿàßàßàßÙà··ÿź"í<"ź­žßßàțß àßßààßßÙß··ÿź"í<"ź­žßßàúßàßÚŚß··ÿź"í<"ź­¶óÖß··ÿź"í<"ź­¶ôÖÚß··ÿźë"ź­čóćâ·ÿÿòíáòÍï·çîÓ!"&$&%$$(%) ((+&&%((.*"+!!ùńđńđńńđđńđđńđńđńïîíéöŐàńíùđûòú űśńçćóóòò””úțńùïđù űóìâöóòò””úțńùïúęùűöù śöđçńśńń””úțńùîúüùűùűüùÿűÿś ôòçëśśń””úțńùîúóùÿű öőïăçśśöï””úțńùíúôùűśőôńëàâțśőń”úțńùíúęùűęùűțùÿűôóîèÜĘűțśôđúțńùìúțùÿűęùűțù űśôòëćÙŚùűțśôïûțńùëúęùțűÿùűțùÿśôòëäŚÒùùűűśśóçâG::•țńùìúüùűțùțűùűööńíćŚÍęùűśśòâG::•țńùêúțùűțùűùűęùÿűôïæŰËúęùűśśńG::•țńùëùűùűűùùűùęűțùśőïçÚÌûúęùűśśđ::•țńùêúűûùÿűùűęù űőńèÛĐüûúúțùűśśï:•țńùéùęűüùűùűțù űöńëȚŚüüûûúțùűśöî•țńùé úűűùűűùűùùęűÿùűöòêßĘőóțń óőùùűűőì€ÂÂùèúęùÿűùűûùÿűśôìâÏÇÄțÁ ĂĆËÖȚíűôëÂÂùè%ùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîëśùèÿùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘśùçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśÿ|ûæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖśț|üæúțű!ùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚę|ęæùűűùùűùùűùùśśóîèëëćéçëíîîííììîÜÜü|țćúűűùűùüűęùűùùűűùțűùűűùęűùűśśććû|ÿćùűùűùűùüűÿùęűöțűÿùűùüűùűùűűććú|äùüűùűùűűùűùùűűùśűűùùűűùűùțűùűùùűääæ|ÿűęùțűùțűùűűùääÿ|éđ|Éâűűùùűùűùűääÿ|é­|ÉÓűùüűÿùüűùăăÿ|­HGGFEEęDÿCțBAü@ ?­|ÉÓűùűűùùûűùűùăăÿ|­\nnmțlkjiihțg feedccM­|ÉÓùűùęűùțűùűűùââÿ| ­Xk!jiihggfțedcbbaț`J­|ÉÓțűÿùęűțùțűÿâÿ| ­Tgh!geedcțb a``_^[SPP1­|ÉÓòűÿáÿ|­Pece!daț`_^^\SKAę="­|ÉÓűùțűùüűùțűÿâÿ|­L`c!bța]\\VJ?ú="­|ÉÓôűùűááÿ|­H^!``ț!YODś="­|ÉÓśűùűűśűááÿ|­DZțY\XP?ő="­|ÉÓôűöűááÿ|­@WVVPDò="­|ÉÓûűùûűöűááÿ|­êüűùűűùűűùùűùűùűääûăęű3ț#b9áùűűùüűùüűÿùüűùăăûăűùùű0ț "Fl;Ûśùűűùțűùűűùùûűùűùăăûâęű .5:@t=Űśüűùűùęűùțűùűűùââûâęű ,&%48:C`Ràśùûűÿùęűțùțűÿâûâęű*/żI088N8àśűùńűÿáûâűùűű(/ÉɁ.5*A)Őäęűùțűùüűùțűÿâûáÿűùű&/ÊÜĐȘ,<‘Ęïòűùűááûáűśűű#/ÊĘàíźC`ÜȚśöűùűűśűááțțáűśűű!/ÊĘàűńƒBIUŐĘîóűöűááțáűśűű.ÊĘàűűń$M9xÏĘçúűùûűöűááțFț.ÊĘàűűï$X%”ÎĘäóűőűááț#-&.ÊĘàűű­3BOÈÓĘëóűôűááÿ#BțD0(ÊĘàűűFG"ÉÈÛĘőțűùśűôűáá!üD8 ÊĘàűÀ,&ąÖÍĘäóűőóűáá2ęDC +ÆÙÛń9 zÙÈŚÚđńóűááCDD> ŒĆÙڎsÙÔÓÙëńóőűáá  3ÇËȚĆ wáȚÖȚëòùűùùűáû .°șĆĆP’ÖËÊËÔìá  ț ćÿÿț ć         űìÿòűëÿęòűêÿűóűéÿđóűèÿßőűçÿÇöűæÿĄśűćÿrűűäÿGùűăÿ"ùűâÿ úűáÿûűáÿțüűàÿęęűßÿűűȚÿđűĘÿáűÜÿÊűÛÿűÛÿ űÛÿűÛÿÓÿÓÿÿÖÿÿÖÿÓÿÓÿÿÖÿÿÖÿÓÿÓÿÿÖÿÿÖÿÓÿÓÿÿÖÿÿÖÿÓÿÓÿÿÖÿÿÖÿÓÿÓÿÿÖÿÿÖÿ*íÿç@22@AABCEó@2ç   #%($$))#$$##"-%('. ',!!+($+ 蜻ž”ŻÍŻÈńìśŒáóÚ ÙŚÔËșČčèïïúțíśșÙòÏ ÎÌÆč­čžïïúțíśčÙÎęÏęÎÏțÎÿÏ ÎÍÊÁł”ș¶”úțíś·ŰùÎÏęÎ ÏÍÍÌËĆČ°șș”úț휶ŰęÍęÎÍÎÍÎÎÍÍËËÈÁ±Żœșč”úț휶ŚüÍÎúÍ ÌËÊÈÄż­ŹĂŸșž·úț휎ŚÍÍÌúÍÿÌÍËËÈÇÀž©šÉÄżș·žúțíśłÖęÌÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»··ûțíśČŐțÌËÌËÌûËÿÊÇÄŒČą›ÓŃËÆÁ»·°šuțíś°ÓôËÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶šuț휯ÓțÊËÊËÊËÊËÊțËÊÉĆœŽ€”ÜŚÓÓÍÇÂœ”uțíśźÓüÊÉțÊÉüÊÇÆżŽ€—âĘŰÓÓÎÈĂŸłuț휏ÒÉÉțÊțÉÊûÉÈÆÀ”§žéăȚÙÔÓÏÉÄżČuțíÿù«ĐÈțÉÈțÉÈțÉțÈÇĆÁ·©šìêäßÚÔÓĐÊĆżłuțíțúȘĐńÈĆÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ęû©ĐÈÇÈțÇțÈțÇÈțÇĆÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­üü§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·łŸü»ęŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸüÿ»ț„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…Äüț»ÿ€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’Äüę»›Źś©ȘüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č––üő»ę©ÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™™ÿ=țVőŠțV=©ĂÄțĂÿÂóĂțÂÿ ÿ<țVFHHGHHGęHIV”Ă<”ČęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ  ÿ;TSTőŠT”Â;”„üÂÀÂțÁțÂÁțÂÁÂÂÁŸŸÿ;TST„€€„€û„€TST;”ŠÂęÁÂțÁÂüÁÂÁÂüÁÿÿ:SRRőŁÿRS:”„ÁÀÀÁÁÀÀÁÀÁÀÁÀÁÁțÀțÁÀÁÿ9SRRőĄR”À9”„óÀÁùÀÿ›ÿ8ÿOPžțŸžüŸÿžP”À8”„țÀżÀÀżÀÀężÿÀ żÀżÀÀżżÀ››ÿ8ÿOPțœÿÿœ œœœPOO8”„òżŸúżÿšÿ7NMNőšNMN7”€żŸțżŸżżŸżŸżŸżțŸÿżÿŸÿżÿšÿ6NMMő˜M”Ÿ6”€śŸœęŸœüŸœŸ˜˜ÿ4JIK—––—ț–—ę– K”Ÿ4”€ŸŸœŸüœŸœŸœœŸœŸüœŸ˜˜ÿ3JIIőLÿIJ3”€öœŒûœŒœœŒŒ——ÿ3țHőțH3”€ŒțœęŒœțŒœŒŒœŒŒœęŒÿ—ÿ1ÿHFŽŽüŽ ŽŽF”Œ1”€đŒœțŒșŒ——ÿ0ÿDE‹üŒ‹țŒ ‹ŒE”Œ0”€»»Œ»»üŒ»țŒę»Œ»»č»——ÿ.ÿDCü‰ Š‰‰ŠŠ‰‰CDD.”ŁŒț»Œś»Œ»Œț»¶»——ÿ-țBꇆü‡†‡țB-”Łó»șû»”»——ÿ-ÿBA„…ę„…ü„A”ș-”Łù»ÿșț»țșü»Žș——ÿ+ÿ>?‚ț‚‚‚‚‚?”ș+”Łș»ș»üșț»üș»șș¶łș——ÿ*ț>ü€ûț>*” ëČș——ÿ)ț=ÿ}ÿ~}~}~ț}~ț=)” ìČ”ș——ÿ)ÿ=;ő>;”Ć)”„ëĆż—ÿ'ÿ!:ő~:——'ç—ę!őkț!&æŃ!#!#&$''$**(,!"" %#$(+ * &$-&%! öŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìśŚòïüîïîîïïțî íìèàĐÌÙìđđúțïśÖîńé çàÔÇȚÙđđúțïśÔîśéèțé èéæäÚÌŚßŚÖúțïśÓîțé èééèéèèéèéțè çäȚÍĐßȚÖúțïśÓíèèééèéțèéüè çćâĘËÌàßĘŐúțïśŃíôè çæäăßÖÇÈâàßÜŚúțïśĐìùèçęèÿæ äáÛÓÁÂćăàßÛŰúțïśÏìçțèțçÿèÿçÿèæääßŰÎŒ»èæăáßÛÖûțïśÎëțçÿèțçèęçæćăȚŰÍ»”êéæäáßÚĐÄ wțïśÍëúçèçèçèçæćäàŰÍ»źëêéçäáßŰÄ wțïśËëæçæęçæțçæççććâÙÏœŹîìêêçäâàÖ wțïśËêęæçææççæçææçæćăÜĐż°ńïìêêçćâàÔwțïśÉëçæçúæçæçææćâȚÒÀŽôòïíêêèćăàÓwțïÿ™ùÉêòæäâȚÔĂœöőòđíêêèæăàÒwțïț™úÇêæćæććæććęæćæćæâȚÖĆÇìèćăâăćêéæäȚÏz””ę™ûÆ éććææćææććțæțćæâߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””ü™üĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàü™àęÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàü™ÿàțĂ çćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄăü™țàÿÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźăü™ęà¶ÆöĆțä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłłü™őàę™ĆțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””ÿEțiőÎțiEĆûăáäăăäüă äăăäăâăăżżÿDÿihXVűWXh­ăD­ÏüăáśăäûăÿŸÿCÿefőÎf­ăC­ÁâęăÿâÿăâăăâăâüăÿâăœœÿAțeúÍÌÍÍÌÍțeA­Âüâÿățâăâăăùâăœœÿ@țcęËÌęËÌËÌțc@­ÂùâăââăâăââăûâÿŒÿ?ÿcbÉÉÊüÉÊțÉ b­â?­Ââáâáîâÿ»ÿ>ÿ^`ÈüÇÈęÇÈ`­â>­Áâáęâÿáúâÿáâáțâá»»ÿ=ț^ÿĆÄęĆÄęĆț^ =­Áááâáâáâáâáâüáâáâțáâččÿ<ÿ\]Âψ ]\\<­Âááâááâęáâőáÿčÿ:ÿ\ZțÁÿÀțÁ ÀÁÁÀZ­à:­Áàńáàüáÿžÿ9ÿWXûżÀüż X­á9­Áàááààáțàÿáàüáàáàáàážžÿ8țWőZțW 8­Ááààááààáùàáàțáßážžÿ7țUőžțU7­ÁáűàáùàáàȚà··ÿ6ÿURę·¶ț·ț¶·R­à6­ÁúàßùàßàßààĘà··ÿ4MNP”Ž”Žú”ŽP­ß4­ÁßęàßțàßöàÛß··ÿ2MNNłłČČțłȳȳČNNM2­ÁàßßàßßààßàęßüàßàÚß··ÿ1KLL°±±ű°ÿLK1­ÁßàßßęàûßÿàßàßàßÙà··ÿ/KLIùźÿ­ÿźI­ß/­Áśßàțß àßßààßßÙß··ÿ.ÿEHù« Ź««ŹH­ß.­ÁśßàúßàßÚŚß··ÿ,țEę©Șú©țE,­œëÖß··ÿ+BCBț§ÿš §šš§š§§BCB+­œìÖÚß··ÿ*BCAőDA­ć*­Áëćâ·ÿ)ÿ"?őš?··)ç·ę"ő‘ț"'æŃ!"&$&%$&*'+$,*$"$.((&&+)'&  śńđńđńńđđńđđńđńđńïîíéöŐàńíśđûòú űśńçćóóòò””úțńśïđù űóìâöóòò””úțńśïúęùűöù śöđçńśńń””úțńśîúüùűùűüùÿűÿś ôòçëśśń””úțńśîúóùÿű öőïăçśśöï””úțńśíúôùűśőôńëàâțśőń”úțńśíúęùűęùűțùÿűôóîèÜĘűțśôđúțńśìúțùÿűęùűțù űśôòëćÙŚùűțśôïûțńśëúęùțűÿùűțùÿśôòëäŚÒùùűűśśóçâG::•țńśìúüùűțùțűùűööńíćŚÍęùűśśòâG::•țńśêúțùűțùűùűęùÿűôïæŰËúęùűśśńG::•țńśëùűùűűùùűùęűțùśőïçÚÌûúęùűśśđ::•țńśêúűûùÿűùűęù űőńèÛĐüûúúțùűśśï:•țńÿ™ùéùęűüùűùűțù űöńëȚŚüüûûúțùűśöî•țńț™úé úűűùűűùűùùęűÿùűöòêßĘőóțń óőùùűűőì€ÂÂę™ûèúęùÿűùűûùÿűśôìâÏÇÄțÁ ĂĆËÖȚíűôëÂÂü™üè%ùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîëśü™śęèÿùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘśü™ÿśțçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśü™țśÿæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖśü™ęśÖßöȚÿűùűùűöòđëèäáääçæçèéêćäçÚÚü™őśę™ȚùùűùùśśóîèëëćéçëíîîííììîÜÜÿFțjőőțjFȚțùűùùűűùțűùűűùęűùűśśććÿDÿjiSPțQÿPQțPRiÉűDÉçùęűöțűÿùűùüűùűùűűććÿCÿfhőőhÉűCÉÚùùűűùśűűùùűűùűùțűùűùùűääÿCțfőôőôőőțôÿőôțfCÉÛùűęùțűùțűùűűùääÿAedețôőùôedeAÉÛęűùűűùűűùùűùűùűääÿ@edcóóúô óôôcÉű@ÉÛùűűùüűùüűÿùüűùăăÿ>ÿ_aôûóôóôóóaÉű>ÉÜùűùűűùțűùűűùùûűùűùăăÿ=ț_óòòțóòóòțóț_=ÉÛùűùűùęűùțűùűűùââÿ<\]]òòțóòóüòÿ]\<ÉÛűűùűùûűÿùęűțùțűÿâÿ:\]ZńțòńúòZÉű:ÉÛùűùțűùńűÿáÿ9ÿWXțńòńòüńòXÉű9ÉÛűűùțűùüűùțűÿâÿ8țWő[țW8ÉÛìűùűááÿ7țUőïțU7ÉÛïűùűűśűááÿ6ÿUSïïîîïîûïSÉű6ÉÛìűöűááÿ5NOQőîQÉű5ÉÛűűùöűùûűöűááÿ3NONíîęíîíîțíNON3ÉÛìűőűááÿ1țLÿìÿíúìíțL1ÉÛìűôűááÿ/ÿLJęìëìëüìJÉű/ÉÛśűùśűôűááÿ.ÿEHêêëëêëêțëÿêHÉű.ÉÛíűőóűááÿ-țEőêțE-ÉÙëóűááÿ+DCCééêéêêęéÿêÿCD+ÉÙìóőűááÿ*DCAőDAÉù*ÉÚîùűùùűáÿ(ÿ!?őé?áá(çáę!őŐț!(æŃ  űìÿòűëÿęòűêÿűó”áÿđóßÿßőȚÿÇöĘÿĄśÜÿrűÛÿGùÚÿ"ùÙÿ úŰÿûŰÿțüŚÿęęÚŚÿűűȚÿđűĘÿáűÜÿÊűÛÿűÛÿ űÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿù!Ûÿ*ù2@AABCEá@2! $#$% )("")"+'%"& &%%#  …û°ïœ»ž”ŻÍŻÈńì…ú°ÿŒáóÚ ÙŚÔËșČčèïïúțí…ù°șÙòÏ ÎÌÆč­čžïïúțí…è° šÍÊÁł”ș¶”úțíæ„ ÌËĆČ°șș”úțíù€îù€éű€ šš‘€œș·”úțíù|íù|éű| „Äż­ŹĂŸșž·úțíúy ïííyí’yyééâíùy ŽÀž©šÉÄżș·žúțíùv ívvßÜvçűv r•Žˆ–ĐÊĆÀ»··ûțíùs ìssŽŽÏŁssçűsŠŒČą›ÓŃËÆÁ»·°šuțíùpìępÎĄppçűp‹œ±ą–ÖÓÒÌÇÁŒ¶šuțíùp ìpp‹Ț‹Ț‹pçűpr•††ÜŚÓÓÍÇÂœ”uțíùoÿìoì‹ooȚoæìùo‹żŽ€—âĘŰÓÓÎÈĂŸłuțíæo‹À”§žéăȚÙÔÓÏÉÄżČuțíçopr•‰›ìêäßÚÔÓĐÊĆżłuțíűoƒ›”’ŽôŒ‹ÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ùoÿȘ€Ł€țŁț€țŁ€țŁŹÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­úoț§ÎÆÇÇę—Ǘț˜ę—–”șŠ…€zyvvwyz}~’™Ź·łŸûoęŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸüoü„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…Äęoû€ÌÄĆƓ””“ü”Ćț”“’Š…|țz Ÿ{|}ąŁ„§’ÄțoúŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č––ÿoùąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™™oű ÉțĂț‘Б‘‘‘‘ü‘‘‘ĂțÂÿ śŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ  śŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸŸśžÇțÁőŒÁőŒÁŒŒęÁÿśÄüÁÀțÁÀÁÀÁÀÀÁÁÀÀÁÀÁÀÁÀÁÁțÀțÁÀÁśœÄçÀÁùÀÿ›ś›ĂÀżÀù‰ˆű‰ˆ‰żú‰ÀżżÀ››śšĂżŸúżŸđżŸúżÿšśšÁżŸŸüżŸżżŸżŸțżŸżżŸżŸżŸżțŸÿżÿŸÿżÿšś˜ÁțŸÿ†…†Ÿę†…û†Ÿ…†…††…ț†…†ŸŸœŸ˜˜ś˜żœŸțœŸœœŸțœÿŸœŸüœŸœŸœœŸœŸüœŸ˜˜ś—ż»ëœŒûœŒœœŒŒ——ś—Ÿ»œœûƒ„ƒƒŒƒƒœęƒÿ„ÿƒ„țƒ„ƒƒęŒÿ—ś—œșćŒœțŒșŒ——ś—œč»Œ»ùŒÿ»Œ»»üŒ»țŒę»Œ»»č»——ś—Œ¶»»‚ü»‚úÿ»‚úÿ»¶»——ś—Œ”è»șû»”»——ś—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș——ś—»Ž”șș»ùș»ș»üșț»üș»șș¶łș——ś—șßČș——ś—ș¶áČ”ș——ű—żÁàĆż—űۗŃ#! $#$%)*'&*$'*'%&&%"" $ ­ûŚęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńì­űŚòïüîïîîïïțî íìèàĐÌÙìđđúțï­ùŚÖîńé çàÔÇȚÙđđúțï­èŚ ÊæäÚÌŚßŚÖúțï­èŹ ­çäȚÍĐßȚÖúțïù©ôù©đű© ·»¶źÁàßÜŐúțïù„óù„đű„ œßÖÇÈâàßÜŚúțïúą ôóóąóŽąąïïëóùą ŁÛÓÁÂćăàßÛŰúțïùŸ òŸŸ±é±æ±ŸïűŸ ‰±ȘąŻèæăáßÛÖûțïùœ ńœœŻŻĘŸœœïűœŸŰÍ»”êéæäáßÚĐÄ wțïùšńęšĘœššíűš ŰÍ»źëêéçäáßŰÄ wțïùš ńšš­ç­ç­šíűš‰Č©ĄŸîìêêçäâàÖ wțïù™ÿń™ńŹ™™ç™íńù™ąÜĐż°ńïìêêçćâàÔwțïæ™ĄȚÒÀŽôòïíêêèćăàÓwțïç™—‰łŹŁ±öőòđíêêèæăàÒwțïű™ ›±­©ŠŁŁ€ŁŁę€Ł€Ł€ĄȚÖĆÇìèćăâăćêéæäȚÏz””ù™ÿŠ ÀœœŸŸœŸŸœœțŸțœŸÆߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””ú™țĆéțćÿ¶”¶ć”ú¶”±Ű§ ™“țÿ‘“—™­ČÈÖĐàû™ęÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàü™üĂ çćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄăę™ûÂçțäűł ćłČłČŻ­§Ą›š—ț• ș••˜œżÁÄźăț™úÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłłÿ™ùÀçäăääăęäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””™űżçțățźäŻęźțŻÿź­źŻźțŻźŻęźŻăâăăżżśżæđăáśăäûăÿŸśœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœœśœćâăâû«ÿŹ «ŹŹ«â««Ź«ŹŹ««țŹ«â«ŹțâăœœśŒäüâățâÿăűâăââăâăââăûâÿŒś»äûâáûâáâáîâÿ»śșățâöš©üš ©š©â©š©šš©šțâá»»śșăáââáțâÿáâęáâáâáâáâáâüáâáâțáâččśșâáâűáâááâááâęáâőáÿčśčáàáá„țŠàț„țŠÿ„țŠáț„Š„Š„„Š„Šęáÿžśžâáààùáÿàÿáÿàáțàÿáàüáàáàáàážžś·áßàááààáüàáààááààáùàáàțáßážžś·âȚààűąáąąàĄúąĄûąáàȚà··ś·áĘïàßùàßàßààĘà··ś·àÛțàßțàßàßàßęàßțàßöàÛß··ś·ßÚàßû ßś ßàű ßàÚß··ś·ßÚààßßàßàßààßßàßßęàûßÿàßàßàßÙà··ś·ßŰàßàüßàőßàțß àßßààßßÙß··ś·ߌÚțßàńßàúßàßÚŚß··ś·ßßÖß··ś·ßÛáÖÚß··ű·ââàćâ·űÛ·Ń $"#$)')"*()$#'& ! # !  ëûśțńđńđńńđđńđđńđńđńïîíéöŐàńíëúśÿđûòú űśńçćóóòò””úțńëùśïđù űóìâöóòò””úțńëèś òśöđçńśńń””úțńæë śôòçëśśń””úțńùêüùêüűê ÏÔĐÌȚśśőï””úțńùéüùéûűéÎńëàâțśőń”úțńúèțüèüìèèûûúüùè”îèÜĘűțśôđúțńùç üççëùëùëçûűçŸÌÆĂÍùűțśôïûțńùç üççëëśïççûűçČëäŚÒùùűűśśóçâG::•țńùæüęæśïææûűæ±íćŚÍęùűśśòâG::•țńùæ üææêùêùêæûűæŸÍÈÁżúęùűśśńG::•țńùæÿüæüêææùæûüùæŽïçÚÌûúęùűśśđ::•țńææŽńèÛĐüûúúțùűśśï:•țńçæ ܟÎÊÄÌüüûûúțùűśöî•țńűæ ¶ÁŸ»ž””¶”¶¶ę”ÿ¶”ŽòêßĘőóțń óőùùűűőì€ÂÂùæÿÄŃęĐÿÏĐÏûĐÿÏÛôìâÏÇÄțÁ ĂĆËÖȚíűôëÂÂúæțèùűűùęÏűęÏÿĐÿÏÎÌíÄœčŽ±°±±ł”žșÎÓăîëśûæęèÿùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘśüæüçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśśæ ùűűùÌÍÍÌÍÍÌÌÍűęÌÊÇÂœ··ŽŽłłÓ””·ŚÙÛßÖśśæúțű!ùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚśæùűűùùűùùűùùśśóîèëëćéçëíîîííììîÜÜæűćúűűùțÊűśÊÉôÊùűśśććśćùűùűùűùüűÿùęűöțűÿùűùüűùűùűűććśäùüűùűùűűùűùùűűùśűűùùűűùűùțűùűùùűääśä ùűùűÇÆÇÇÆÆÇęÆÇűüÆÇÆÇÆÆÇÆűÆÆùűűùääśäÿùęűÿùțűùüűùűűùűűùùűùűùűääśăûűùûűùűűùüűùüűÿùüűùăăśăűùùűűÄĂÄÄĂÄĂüÄűęÄĂÄÄűùűùăăśâűűùűùűűùűùęűùțűùűűùââśâùűùűűùțűùűùûűÿùęűțùțűÿâśâęűęÁűÂÂÁÁÂÁÂÁÂÁÂűÂÂÁüÂÿÁÂęűÿáśâűùíűùțűùüűùțűÿâśáÿűùâűùűááśáűśűűęÀțżÀżűÀżűțżÿÀÿżÿÀûżÿűśűááśáűśáűöűááśáűśôűùöűùûűöűááśáűőűűœœŒțœűœœŒüœŒœűűűœÿűőűááśáűôáűôűááśáùôìűùśűôűááśáűóőăűőóűááśáűßóűááśáűöáóőűááűáűűăùűùùűáűÛáŃ  űìÿòűëÿęòűêÿűó”áÿđóßÿßőȚÿÇöĘÿĄśÜÿrűÛÿGùÚÿ"ùÙÿ úŰÿûŰÿțüŚÿęęÚŚÿűűȚÿđűĘÿáűÜÿÊűÛÿűÛÿ űÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿù!Ûÿ*ù2@AABCEá@2####$)# "!"%#&$&% " …û°ïœ»ž”ŻÍŻÈńì…ú°ÿŒáóÚ ÙŚÔËșČčèïïúțí…ù°șÙòÏ ÎÌÆč­čžïïúțí…è° šÍÊÁł”ș¶”úțíæ„ ÌËĆČ°șș”úțíő€îț€˜âű€ ĆÈÁ±Żœșč”úțíő|íț|á•ű| „Äż­ŹĂŸșž·úțíùyí“àŐííyțíűy ŽÀž©šÉÄżș·žúțíùvìßvvìțvìśv ‹œł€ąĐÊĆÀ»··ûțíùsߎssìțsìśsr”Ž†ÓŃËÆÁ»·°šuțíùpëțpëțpëśp‹œ±ą–ÖÓÒÌÇÁŒ¶šuțíùpëțpëțpëśp‹œŽ€”ÜŚÓÓÍÇÂœ”uțíùoëțoÿëÿoëśor–‡ŠâĘŰÓÓÎÈĂŸłuțíæo‹À”§žéăȚÙÔÓÏÉÄżČuțíços‹Á·©šìêäßÚÔÓĐÊĆżłuțíűoƒ›”’Žùrÿsțrq•‹šȚÙŐÓŃÏÏÒŃËÆżČv­­ùoÿȘ€Ł€țŁț€țŁ€țŁŹÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­úoț§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·łŸûoęŠÍțÆô—–ÂŒłȘ ˜–““””–˜——•‘˜ĄŸüoü„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…Äęoû€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÄțoúŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č––ÿoùąÊÄĂÄôÌ ËÊÇÂŒżżž»»żüÁ·žž™™oű ÉőĂÄțĂÿÂóĂțÂÿ śŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ  śŸÇțÂúŽŽęŽțŽÿÿÂÁțÂÁÂÂÁŸŸśžÇüÁÂüÁÿÂęÁÂțÁÂüÁÂÁÂüÁÿśÄüÁÀțÁÀÁÀÁÀÀÁÁÀÀÁÀÁÀÁÀÁÁțÀțÁÀÁśœÄțÀęŠ ‰Š‰Š‰ŠŠ‰‰ŠűÀÁùÀÿ›ś›ĂÀżÀÀżżÀżúÀżÀÀżÀÀężÿÀ żÀżÀÀżżÀ››śšĂżŸúżŸđżŸúżÿšśšÁżŸŸüżŸżżŸżŸțżŸżżŸżŸżŸżțŸÿżÿŸÿżÿšś˜ÁțŸćăÿŸœŸ˜˜ś˜żœŸțœŸœœŸțœÿŸœŸüœŸœŸœœŸœŸüœŸ˜˜ś—ż»ëœŒûœŒœœŒŒ——ś—Ÿ»œœ‚‚ű‚ÿę‚ ‚‚œŒŒœŒŒœęŒÿ—ś—œșćŒœțŒșŒ——ś—œč»Œ»ùŒÿ»Œ»»üŒ»țŒę»Œ»»č»——ś—Œ¶»»‹ŒŒ‹țŒÿ‹Œ‹‹Œś»Œ»Œț»¶»——ś—Œ”è»șû»”»——ś—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș——ś—»Ž”șș»ùș»ș»üșț»üș»șș¶łș——ś—șßČș——ś—ș¶áČ”ș——ű—żÁàĆż—űۗŃ#####****'"$!& "" $ ­ûŚęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńì­űŚòïüîïîîïïțî íìèàĐÌÙìđđúțï­ùŚÖîńé çàÔÇȚÙđđúțï­èŚ ÊæäÚÌŚßŚÖúțï­èŹ ­çäȚÍĐßȚÖúțïő©óț©șëű© ßâĘËÌàßĘŐúțïő„óț„ê¶ű„ œßÖÇÈâàßÜŚúțïùąòŽéâòòąțòűą ŁÛÓÁÂćăàßÛŰúțïùŸò韟òțŸòśŸ  ŰÎŒ»èæăáßÛÖûțïùœèŻœœńțœńśœŠ±« ©êéæäáßÚĐÄ wțïùšńțšńțšńśš ŰÍ»źëêéçäáßŰÄ wțïùšńțšńțšńśšĄÙÏœŹîìêêçäâàÖ wțïù™ńț™ÿńÿ™ńś™ŠŽ­ąŁńïìêêçćâàÔwțïæ™ĄȚÒÀŽôòïíêêèćăàÓwțïç™›ĄȚÔĂœöőòđíêêèæăàÒwțïű™&›±­©ŠŠ‹‹ŠŠ‹Š‹Š‹Š‹‹‰”Ź§șèćâăâăćêéæäȚÏz””ù™ÿŠ ÀœœŸŸœŸŸœœțŸțœŸÆߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””ú™țĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàû™ęÄèäćć””¶ț”ÿ¶ț”ÿ¶ŽàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàü™üĂ çćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄăę™ûÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźăț™úÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłłÿ™ùÀçäăäô‹ Š‰‡„‚‚€ƒü„ŐÖŚ””™űżçęățäăäùăáäăăäüă äăăäăâăăżżśżæđăáśăäûăÿŸśœćăâăźźŹŹźûŹźŹŹ«țźÿŹăâăâüăÿâăœœśœ ćâăâăăââăââăăüâÿățâăâăăùâăœœśŒäüâățâÿăűâăââăâăââăûâÿŒś»äțâ©šő©ïâÿ»śșăűâáâáâáęâÿáúâÿáâáțâá»»śșăáââáțâÿáâęáâáâáâáâáâüáâáâțáâččśșâáâűáâááâááâęáâőáÿčśčáàááćŽęáÿžśžâáààùáÿàÿáÿàáțàÿáàüáàáàáàážžś·áßàááààáüàáààááààáùàáàțáßážžś·âȚààąĄĄțąțĄúąĄąąĄąúàáàȚà··ś·áĘïàßùàßàßààĘà··ś·àÛțàßțàßàßàßęàßțàßöàÛß··ś·ßÚàßôžżßààßàęßüàßàÚß··ś·ßÚààßßàßàßààßßàßßęàûßÿàßàßàßÙà··ś·ßŰàßàüßàőßàțß àßßààßßÙß··ś·ߌÚțßàńßàúßàßÚŚß··ś·ßßÖß··ś·ßÛáÖÚß··ű·ââàćâ·űÛ·Ń#""" '+)*&)&#&     ëûśțńđńđńńđđńđđńđńđńïîíéöŐàńíëúśÿđûòú űśńçćóóòò””úțńëùśïđù űóìâöóòò””úțńëèś òśöđçńśńń””úțńæë śôòçëśśń””úțńőêüțêîúűê đőïăçśśöï””úțńőéüțéúíűéÎńëàâțśőń”úțńùèüìúűüüèțüűè”îèÜĘűțśôđúțńùçüùççüțçüśçČëćÙŚùűțśôïûțńùçùìççüțçüśçŸÌÇÂÈùùűűśśóçâG::•țńùæüțæüțæüśæ±íćŚÍęùűśśòâG::•țńùæüțæüțæüśæłïæŰËúęùűśśńG::•țńùæüțæÿüÿæüśæ ÎÉĂÂûúęùűśśđ::•țńææŽńèÛĐüûúúțùűśśï:•țńçæ ߎńëȚŚüüûûúțùűśöî•țńűæ¶ÁŸ»žô ŸÏÊÄÓòđîńńóőùùűűőì€ÂÂùæÿÄŃęĐÿÏĐÏûĐÿÏÛôìâÏÇÄțÁ ĂĆËÖȚíűôëÂÂúæțè%ùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîëśûæęèÿùÿűțĐÏțĐÏțĐțÏőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘśüæüçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśśæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖśśæúțű!ùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚśæùűűùóihgfûefügÿìîÜÜæűćúűűùűùüűęùűùùűűùțűùűűùęűùűśśććśćùűùűùűùüűÿùęűöțűÿùűùüűùűùűűććśäùțűóÈÇüÈűùűùțűùűùùűääśäùűùïűęùțűùțűùűűùääśäÿùęűÿùțűùüűùűűùűűùùűùűùűääśăęűóĆęűùüűÿùüűùăăśăűùùűùűűùűűùűùùűùűűùțűùűűùùûűùűùăăśâűűùűùűűùűùęűùțűùűűùââśâùűùűűùțűùűùûűÿùęűțùțűÿâśâęűć>ęűÿáśâűùíűùțűùüűùțűÿâśáÿűùâűùűááśáűśűűìŸûűùűűśűááśáűśáűöűááśáűśôűùöűùûűöűááśáűőűűôT7ńűőűááśáűôáűôűááśáùôìűùśűôűááśáűóőăűőóűááśáűßóűááśáűöáóőűááűáűűăùűùùűáűÛáŃ  űìÿòűëÿęòűêÿűó±áÿđóßÿßőȚÿÇöĘÿĄśÜÿrűÛÿGùÚÿ"ùÙÿ úŰÿûŰÿțüŚÿęęÚŚÿűűȚÿđűĘÿáűÜÿÊűÛÿűÛÿűÛÿ űÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿù!Ûÿ*ù2@AABCEá@2!) *--&-) $+'#$#$+"&$%'$"'#&#&%"! Ęûìž”ŻÍŻÈńìĘúìÿŒáóÚ ÙŚÔËșČčèïïúțíĘùìșÙòÏ ÎÌÆč­čžïïúțíĘèì ŐÍÊÁł”ș¶”úțíæĘ ÌËĆČ°șș”úțíüÛÜśÛúțÛúțÛ ÜÛÛĆÈÁ±Żœșč”úțíęŰÿÙŰÙŰŰțÙÿŰÙúŰÙúÙțŰÿÙ Ű„Äż­ŹĂŸșž·úțíûŚęúțŚÿúŚúŚțúûŚ ŽÀž©šÉÄżș·žúțíÿŐÖțŐúțŐ úŐúÖŐúúÖŐúüŐ ÖՋœł€ąĐÊĆÀ»··ûțíÓÒÒÓÓÒțÓÒÓțÓùÓÓÒùÓÒùûÓҊŒČą›ÓŃËÆÁ»·°šuțíÓÒÒÓÓÒùÓÒÓùÓùÓÓÒùÓÒùûÓҋœ±ą–ÖÓÒÌÇÁŒ¶šuțíûŃęùÿŃùŃŃùùŃŃùúŃ‹œŽ€”ÜŚÓÓÍÇÂœ”uțíțÏțĐùĐĐțÏĐùùĐùĐĐùÏęĐÏЋżŽ€—âĘŰÓÓÎÈĂŸłuțíęÎÏÎÿüÎÿÏÿÎÍûÎÍÏÎϋÀ”§žéăȚÙÔÓÏÉÄżČuțíûÍÌúÍÌöÍȋÁ·©šìêäßÚÔÓĐÊĆżłuțíûÍÌÍ̓›”’ŽőŒŽŒÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­áûÍÌ͍Ș€Ł€țŁț€țŁ€ŁšŻžÄ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­áûÍÌț§ÎÆùÇÆęÇÔÖÓÊș±Šœ–’’“•”’™Ź·łáûÍęŠÍöÆÇÆÆŐŐĐÍŒłȘ ˜–““””–˜——•‘˜ĄÄüÍü„ÍțÆÿĆűÆÿŐÒÍŸ”­ąš–”ț•ÿ—™››š˜…șęÍû€ÌÄęĆÄùĆ ÔŐÓÉŸž°šŠą üŸĄąŁ„§’©țÍúŁËśÄĆțÄ ÒÖÔĆżșČŹ«§«ȘŻțźŻ±ź°Č–ÂÿÍùąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂÌÖÔÂżș”¶ł«°źłČțłČŽ”¶™ÂÍű ÉőĂ ÄĂĆÖÓÂżŒ·č¶·ț¶ÿčÿžș·ž”——śŸÈÂÂĂÂĂÂĂÂęĂțÂÖŐÁżœčč”țč»șțčțž虙śŸÇüÂÁęÂÁę ŐÖÁÁœ»čž»șęžÿ·ž·č蘘śžÇüÁÂüÁÿ ÁÌŐŐŃÀÀŸŸ»œțŒ œ»»șč·¶Ž““śÄüÁÀțÁÀÁÀÁÀÓÓÒŐÀÀżÀŸÀżŸŸœœŒœŒșž·••śœÄôÀĆŐÍĂŐÒÀûż ÀżżŸœŒŒčž““ś›ĂÀżÀÀżżÀżüÀŃÔÀÀÏŐÌÀûż ŸżŸżŸŒ»č””śšĂżŸúżŸżżÁŐÏțżÓŐÌûżŸțżÿŸœ»––śšÁżŸŸüżŸżżŸĐÔÁżżŸżÓŐÓżżŸÀżŸŸżżŸœŸŸ˜˜ś˜ÁțŸœúŸÀÔĐęŸÂÉÓŐÔęŐ ÔÓĐÁŸŸœœ——ś˜żœŸțœ ŸœœŸœœĐÔÀŸÉŃûÔŐÔÎÉËÎÓÒțœŸ˜˜ś—ż»űœ ÁÔÒŃÔÔÓÍÇÁțœ ĆÒÔÔÓÒÓÓœœŒŒ——ś—Ÿ»œœŒŒœŒŒœŸÓÔÔĐÆŸęŒœțŒœżÉŃÒŃĂęŒÿ—ś—œșúŒËÓÔÊđŒœțŒșŒ——ś—œč»Œ»ŒŒÂțÓŃŒ»»Œ»»üŒ»țŒę»Œ»»č»——ś—Œ¶ț»ŒĆÔÓÎÓŸ»Œț»Œś»Œ»Œț»¶»——ś—Œ”ț»ÂÔÓÄÔÉń»șû»”»——ś— ŒŽ»»șÓÔĆÓÎțșù»ÿșț»țșü»Žș——ś—»Ž”șœÔŃÓÏüș»ș»üșț»üș»șș¶łș——ś—șțČłÏÎĂæČș——ś—ș¶áČ”ș——ű—żÁàĆż—űۗŃ% *!)**..* /0%,-!'*'()&!'!"$)# %$  xû§ęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìxú§ÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïxù§Öîńé çàÔÇȚÙđđúțïxè§ ±æäÚÌŚßŚÖúțïwûvwțvwövwvwwçäȚÍĐßȚÖúțïńsíțsíûs ßâĘËÌàßĘŐúțïnonoonnonnonnoonínníęn onnœßÖÇÈâàßÜŚúțïûjęìkjjììjìjțìûj ŁÛÓÁÂćăàßÛŰúțïgfęg ìggfìgìgfììggìüg hg ŰÎŒ»èæăáßÛÖûțïûbęțbębëțbëcbëbcübŸŰÍ»”êéæäáßÚĐÄ wțïûbëțbëbëțbëcbëbcüb ŰÍ»źëêéçäáßŰÄ wțïÿ_^ț_ęëÿ_ ë^^ëë__ë__^_^_^ĄÙÏœŹîìêêçäâàÖ wțï\]]\[]ë\]ę\ÿë]ë\\ëę\]\\ąÜĐż°ńïìêêçćâàÔwțïț[YZYÿZü[Z[[Zû[Z[[ZĄȚÒÀŽôòïíêêèćăàÓwțïțYXYXYXïYiĄȚÔĂœöőòđíêêèæăàÒwțïțYXYXYXY›±­©ŠŁŁ€ŁŁę€Ł€Ł™˜ȚÖĆÇìèćăâăćêéæäȚÏz”áțYXYXYXŠŠÀœœŸŸœŸŸœœțŸÿœ˜loËŚÉ°§ŁĄ Ÿą„«žĆŚăÜÏ”áțYXYXYțĆéóć†y~ŠŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐáțYXYXęÄèäüćäććäęć~€‘—ÚĐĆșČźŹŹ­ŻŻČł±°źŽŸÙțYXYüĂçćääćäćääććäćää}‰ąÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄĐțYXûÂçőä ćä…{”ÜŐÌĂÂœûșŒœżÁÄźșțYúÁçțäÿăÿäăûä xyŃĘŚÏÈÈÂÈÇęËÿÍÊÌÏłËÿYùÀçäăääăęäăäță±wzàȚÙÓŐŃÈÌËŃŃÏÏĐĐÒÓÔ”ËYűżçęățäăäüă Úw€áàÚŐŰÔŐțÔ ŰŚÖŚÙŐŚÔ””śżæòă wyáàĘÙŰÔÙŰŚțÚÙŰŰŚŚŰ””śœćăâăâțăâęăâăâwwßàßÜÙŚÚÙÙŚŰŰŚÖŰÖŰÙ””śœćâăâăăââăââăăââ„xvâàßĘÜțĘÿÜÛÚÙÙŚŐÔ±±śŒäüâățâÿăț₃‰wàááàßáààßßàȚĘÜÚÙŚČČś»äûâáûâÉwžÒw‡âęáüàÿßȚĘÚÙČČśșăűâ áâáâˆ|Țâ—v„üâÿáÿàáțßĘÙłłśșăáââáțâÿá âááŰx”áâáwŁáâüáâáâàßȚȚ””śșâáâűáâxŚááâ߁vÜááȚȚüáÿàß··śčáàüáțàÿáŚyŒęáÍ«~ûvz€Ńțáà··śžâáààùáŒyŚÛź‡wvvwyxvx‘«ą”z‚àáàážžś·áßàááààáțà Ïw‚„vw}•ČÎțà ș‚vw}‚~{ááßážžś·âȚûàáàÖ{vy‹”ĘûàáààÒ§‡}ƒĆáàȚà··ś·áĘûàߝywĄúàßùàßàßààĘà··ś·àÛțàßàÇ{z|‚àßęàßțàßöàÛß··ś·ßÚàßàß·v}xÒßàßßàßßààßàęßüàßàÚß··ś·ßÚààßÂvyčwŠàßßàßßęàûßÿàßàßàßÙà··ś· ßŰàßàyv·xŒàőßàțß àßßààßßÙß··ś·ߌÚßÒvƒyŠóßàúßàßÚŚß··ś·ßțÖÔ}ĄæÖß··ś·ßÛáÖÚß··ű·ââàćâ·űÛ·Ń)+"$('&(0-/-1'.+-&'%' %"' #!$ (ûhțńđńđńńđđńđđńđńđńïîíéöŐàńí(úhÿđûòú űśńçćóóòò””úțń(ùhïđù űóìâöóòò””úțń(èh ‘śöđçńśńń””úțńț&ÿ' &''&'&''&'&'&'ę&'&''śôòçëśśń””úțńń$äț$äû$ đőïăçśśöï””úțń țțÿ  ă ă Îńëàâțśőń”úțńûęâ ââââăâû”îèÜĘűțśôđúțńûâț âââââúČëćÙŚùűțśôïûțńûûûáțááúČëäŚÒùùűűśśóçâG::•țńûáááțááú±íćŚÍęùűśśòâG::•țńûęáÿááááûłïæŰËúęùűśśńG::•țńü áü áá á áû ŽïçÚÌûúęùűśśđ::•țńÿ ! ÿ ŽńèÛĐüûúúțùűśśï:•țń ę  ü  ț ,ŽńëȚŚüüûûúțùűśöî•țń ę ¶ÁŸ»ž””¶”¶¶ę”ÿ¶€„òêßĘőóțń óőùùűűőì€Âë ț ÿÄŃęĐÿÏĐÏûĐ’IGÒìâÏÇÄțÁ ĂĆËÖȚíűôëÂë țè%ùűűùùűűùűűùùűűùYDN•íæÚÒËÈÆÆÈÈËÌÎÎÓăîëë ęèÿùśűțùKOozïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘè üçùęűÿùűùùűțùűKQ`‰đéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇă ûæùűűùùęűęù űùWGO­ńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖŚ úæúțű!ùűùűűùűùűűùkBEÛòíçßßÛßßăâăäćæáäçÚè ùæùűűùùűùù űŁ@EśóîèëçàćâęçæçééëÜè űćúűűùűùüűęùé@OűôńëíêìëêëííììđìíêÛÛśćùűùűùűùüűÿùÿű @DöőòïïìïïíüïÿîíîÜÜśäùüűùűùűűùűùùöA@òśôóđíđđïïîîííîîđïÜÜśäùűùőűD@iśööôòôóòòóòńđđîììŰŰśäÿùęűÿùțűùțű TUaAőűööśööęőôóôńđîÚÚśăûűùûű ùÎA…ÜA]űśűśśțöÿśöőôóńđÚÚśăűùùűùűűùűűùűùù_Ińűy@‘űùűűùűęśțöóòÛÛśâűűùűùűèCrțűOAŒűùęűùęűÿöőȚȚśâùűùűűùűlDæűùűőR@SîùùòóűűțùÿśöààśâśűÿùçEeùțűŚ›Nû@FPiÜțűśààśâűùśűfDçíĄ]B@@BEC@Do›‹sGUùțűÿâśáÿűùùű ÛBUYAALv§Śțű ¶TABMUNIűűùűááśáűśúűùçH@Ddźóűű à–^MVÊűűśűááśáűśûűöƒEB‹ìűöűááśáűśüűÍHHKUțűùöűùûűöűááśáűőțűùČ@LnDßëűőűááśáűôțűĆ@EŽC”êűôűááśáùôțűF@ČDgôűùśűôűááśáűóőűâ@WEdéűőóűááśáűțóîOT‘æóűááśáűöáóőűááűáűűăùűùùűáűÛáŃ    ìÿòëÿęòêÿűóéÿđóèÿßőçÿÇöæÿĄśćÿrűäÿGùăÿ"ùâÿ úáÿûáÿțüàÿęęßÿűȚÿđĘÿáÜÿÊÛÿÛÿ ÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿ!Ûÿ*2@AABCEá@2   #%($(($)&&&$$)&"#$% ($$$' ! đœ»ž”ŻÍŻÈńìÿŒáóÚ ÙŚÔËșČčèïïúțíÿșÙòÏ ÎÌÆč­čžïïúțíÿčÙÎęÏęÎÏțÎÿÏ ÎÍÊÁł”ș¶”úțíÿ·ŰùÎÏęÎ ÏÍÍÌËĆČ°șș”úțíÿ¶ŰęÍęÎÍÎÍÎÎÍÍËËÈÁ±Żœșč”úțíÿ¶ŚüÍÎúÍ ÌËÊÈÄż­ŹĂŸșž·úțíÿŽŚÍÍÌúÍÿÌÍËËÈÇÀž©šÉÄżș·žúțíÿłÖęÌÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»··ûțíÿČŐțÌËÌËÌûËÿÊÇÄŒČą›ÓŃËÆÁ»·°šuțíÿ°ÓôËÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶šuțíÿŻÓțÊËÊËÊËÊËÊțËÊÉĆœŽ€”ÜŚÓÓÍÇÂœ”uțíÿźÓüÊÉțÊÉüÊÇÆżŽ€—âĘŰÓÓÎÈĂŸłuțíÿŹÒÉÉțÊÉțÿțțęÿțüùÀ”§žéăȚÙÔÓÏÉÄżČuțíÿ«ĐÈțÉÈÉÿÿęțüÿęțüùÁ·©šìêäßÚÔÓĐÊĆżłuțíÿȘĐûÈÿúÊüÈÎüúÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ÿ©ĐÈÇÈțÇțöÈțÇÈÇÉęüÁ»Ż•‰‡†‡‰Œ‘Ÿ«ŒÆœČ­­ÿ§ÎÆüÇęöÇÆęÇÉÿüÂșŠ{wrqnu’“•”’™Ź·łŸÿŠÍûÆęöțÆÇÆÆÈÿęÂŒ~yzvtmn”–˜——•‘˜ĄŸÿ„ÍțÆÿĆÆęöûÆÈÿęĂŸ~z š–zl•——™››š˜…Äÿ€ÌÄęĆÄęśúĆ ÚÙŸąžšŠą„ršțŸĄąŁ„§’ÄÿŁËûÄțùÆÄĆüÄ ĂÂżŒ¶”°­|ŹțČłŽ±°Č––ÿąÊÄĂÄĂÄÄęțűööśśÏĂśűÂż†‚łŻŠ€~°žțčž·žž™™ÿ ÉûĂęțțÿ ÓÄÿțÂƆż¶‰ˆ‹żüĂțÂÿ ÿŸÈÂÂĂÂĂÂĂÂęĂę ĂÁ»»ĂÁ»ŒÀĂțÂĂțÂĂ  ÿŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸŸÿžÇüÁÂÁêśęù ŃÁôöÂÁ“’ż·ț”ÂÁÂüÁÿÿÄüÁÀÁțù ûęÿÔÁÿęÀÀŒŒœŽęțÀțÁÀÁÿœÄúÀûùńÀŒùÀÿ›ÿ› ĂÀżÀÀżżÀûûûÀżÀÀżÀÀężÿŒ żÀżÀÀżżÀ››ÿšĂżŸüżúûŸężÀőśżż‘‘ężÿŒŸúżÿšÿšÁżŸŸężùűżżŸżŸÀûüŸżŒŒżŸżŸŒŒŸŸżżŸŸżżššÿ˜ÁțŸœțŸÿûüŸ żùúŸŸŒŒŸœŸŸŒŒœüŸœŸ˜˜ÿ˜żœŸțœŸœùúżœœŸŸżûúœœŒûŒœŸüœŸ˜˜ÿ—ż»ûœ ûúìććæćìûûœœțŒÿ‘țŒțœŒœœŒŒ——ÿ—Ÿ»œœŒŒœŒțûúűűùùúúțŒœțŒœŒŒœŒŒœęŒÿ—ÿ—œșćŒœțŒșŒ——ÿ—œč»Œ»ùŒÿ»Œ»»üŒ»țŒę»Œ»»č»——ÿ—Œ¶ț»Œ»ŒŒę»Œț»Œś»Œ»Œț»¶»——ÿ—Œ”è»șû»”»——ÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș——ÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș——ÿ—șßČș——ÿ—ș¶áČ”ș———żÁàĆż—Û—Ù!#!#&$'''%))#&)%')(%##!(!#%( %$ țŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïÿÖîńé çàÔÇȚÙđđúțïÿÔîśéèțé èéæäÚÌŚßŚÖúțïÿÓîțé èééèéèèéèéțè çäȚÍĐßȚÖúțïÿÓíèèééèéțèéüè çćâĘËÌàßĘŐúțïÿŃíôè çæäăßÖÇÈâàßÜŚúțïÿĐìùèçęèÿæ äáÛÓÁÂćăàßÛŰúțïÿÏìçțèțçÿèÿçÿèæääßŰÎŒ»èæăáßÛÖûțïÿÎëțçÿèțçèęçæćăȚŰÍ»”êéæäáßÚĐÄ wțïÿÍëúçèçèçèçæćäàŰÍ»źëêéçäáßŰÄ wțïÿËëæçæęçæțçæççććâÙÏœŹîìêêçäâàÖ wțïÿËêęæçææççæçææçæćăÜĐż°ńïìêêçćâàÔwțïÿÉëçæçțæț‘ț’ÿ‘ÿȚÒÀŽôòïíêêèćăàÓwțïÿÉêûæÿ‘ț“’‘‘‘ȚÔĂœöőòđíêêèæăàÒwțïÿÇ êæćæćć揗ățæćæܑȚÖĆÇìèćăâăćêéæäȚÏz””ÿÆ éććææć搝ćțæÿć⑎ߦɯ§Ł ŸŸą„«žĆŚăÜÏ””ÿĆéûć’ûć⏎àŰ«›–‹’šȘ­źŻ­ČÈÖĐàÿÄèäüć’ćäęć⏎àÚą›˜•’‹Œ©ŻŻČł±°źŽŸàÿĂ%çćääćä撜ććäćääᏎâÛŁœ»¶Ż–‹©­°°Ž””ŽŽĄăÿÂçûä’›ęäćäćĆÂáÜÄŒĂÂœą“¶țșŒœżÁÄźăÿÁçțäÿă䐗áüä ăäâáĘÚÔÒÎɱ ÊțÏŃÒÎÌÏłłÿÀ%çäăääă䑐™œœ››Ò㛖àȚ«§ÓÎŹ„ĄĐŰŚŚŰŚŐÖŚ””ÿżçęăÿäÿ‘țÍ⏏áä­­àŰ°°Čàäăăäăâăăżżÿżæđă áăććăăäćäăăäûăÿŸÿœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœœÿœćâăâăăââÖüŃ ĘâÒÒăăÄÄàĘțĂĆúâăœœÿŒäüâăâțŃÿĐÏÜâÏĐââÀÀßÚÁÀÁÁâăûâÿŒÿ»äûâáĐŃęâáâáűâÀÁùâÿ»ÿșăúâÿĐáâáâáęâÿáüâÿÀÿáâáțâá»»ÿșăáââáțâÿĐâęáâÒŃáâĂĂáâááÀÀáâáâțáâččÿșâáâüáÿŃÿáâááâĐĐâáÀÀáâááÀÀùáÿčÿčáàüáàĐĐțáàááŃĐááÀÀęáÿÀÿáàüáÿžÿžâáààęá ŃĐàáààááĐĐáàÀÁûÀÿáàáàáàážžÿ· áßàááààáĐĐÔęÖÔĐĐààțÀÄĂțÀàáàțáßážžÿ·âȚûàęĐțŃțĐüàáùàáàȚà··ÿ·áĘïàßùàßàßààĘà··ÿ·àÛțàßțàßàßàßęàßțàßöàÛß··ÿ·ßÚàßàßàßàßßàßàßßàßßààßàęßüàßàÚß··ÿ·ßÚààßßàßàßààßßàßßęàûßÿàßàßàßÙà··ÿ·ßŰàßàüßàőßàțß àßßààßßÙß··ÿ·ߌÚțßàńßàúßàßÚŚß··ÿ·ßßÖß··ÿ·ßÛáÖÚß···ââàćâ·Û·Ù!"&$&%%'(%)%(())&$'&&!'#!"#   ÿńđńđńńđđńđđńđńđńïîíéöŐàńíÿđûòú űśńçćóóòò””úțńÿïđù űóìâöóòò””úțńÿïúęùűöù śöđçńśńń””úțńÿîúüùűùűüùÿűÿś ôòçëśśń””úțńÿîúóùÿű öőïăçśśöï””úțńÿíúôùűśőôńëàâțśőń”úțńÿíúęùűęùűțùÿűôóîèÜĘűțśôđúțńÿìúțùÿűęùűțù űśôòëćÙŚùűțśôïûțńÿëúęùțűÿùűțùÿśôòëäŚÒùùűűśśóçâG::•țńÿìúüùűțùțűùűööńíćŚÍęùűśśòâG::•țńÿêúțùűțùűùűęùÿűôïæŰËúęùűśśńG::•țńÿëùűùűűùùűùęűțùśőïçÚÌûúęùűśśđ::•țńÿêúűüùț$*,,+()(+ńèÛĐüûúúțùűśśï:•țńÿéùęűÿùÿ$*//.+*)*-ńëȚŚüüûûúțùűśöî•țńÿé úűűùűűù$8ńęű ùâ+)òêßĘőóțń óőùùűűőì€ÂÂÿèúęùÿű'Gûùń)%ôìâÏÇÄțÁ ĂĆËÖȚíűôëÂÂÿè%ùűűùùűű,Gűùùűűùò$%ôíßÓÌĆÂÁÁÈÈËÌÎÎÓăîëśÿèÿùüű,Fțűțùń$$őïȚŐÎÈÄÂÂÉÊËÎÏĐÏÏŐĘśÿçùęűÿù,Eùűțùűń$$őđȚŚŚŃÌĆÂÈÉËÍÏŃÓÔÓÇśÿæùűűùùűű+BęùűùűŹŠöńçßÜÛŚĐÍÔÓŐŐŚŚÙÛßÖśÿæúțű!ùűù'8òűùűűùűùűöòđëèäáßÛćæçèéêćäçÚÚÿæ%ùűűùùűù*'=EEBBÌśA9śóäßêéßßĘêíîîííììîÜÜÿć úűűùűùű&'('ț$ Áö$%űűîíśőțîüűùűśśććÿćùűùűùűùüűÿùęűöűúúùùúûùęűùűùűűććÿäùüűùűùűűùűùùűűùśűűùùűűùűùțűùűùùűääÿäùűùüűSęčö+&űű20ìÏ&%&5ùțűùűűùääÿäÿùęűÿù šőűűæÄęűùűùűääÿăûűùűțűùűűùüűùțűùùüűùăăÿăűùùűùűűùùűùùűùűűùțűùűűùüűùűùăăÿâùűűùțű ő' űű+)űùűűùțűùűűùââÿâùűűùțűô űűűűùùűűțùțűÿâÿâùű ùùűùűőűùęűùűÿáÿâűùûűđęűòűűęęűùțűÿâÿáÿűùüű Ib`^`Hűűț-+țûűùűááÿáűśûű ôűùűűśűááÿáűśáűöűááÿáűśôűùöűùûűöűááÿáűőțűùćűőűááÿáűôáűôűááÿáùôìűùśűôűááÿáűóőăűőóűááÿáűßóűááÿáűöáóőűáááűűăùűùùűáÛáÙ  űìÿòűëÿęòűêÿűóàÿđóßÿßőȚÿÇöĘÿĄśÜÿrűÛÿGùÚÿ"ùÙÿ úŰÿûŰÿțüŚÿęęÖÿűűȚÿđűĘÿáűÜÿÊűÛÿűÛÿ űÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿù!Ûÿ*ù2@AABCEá@2'(,,,,*+))++*+))((((%&)$'&'%'(! úźïœ»ž”ŻÍŻÈńìùźÿŒáóÚ ÙŚÔËșČčèïïúțíűźșÙòÏ ÎÌÆč­čžïïúțíæź ÍÊÁł”ș¶”úțíæ” ÌËĆČ°șș”úțíę‘ÿü‘ÿś‘ÿü‘ ĆÈÁ±Żœșč”úțíęÿüÿśÿü „Äż­ŹĂŸșž·úțíęŠÿ€òÿ€țÿ Šÿ€òÿÿò€ŠÿüŠ ŽÀž©šÉÄżș·žúțíę†ÿòĄ†ò†ÿ††ÿòĄÿ††ò†ÿü† ‹œł€ąĐÊĆÀ»··ûțíęƒÿžƒƒÿƒÿƒƒÿžƒÿƒƒÿƒÿüƒŠŒČą›ÓŃËÆÁ»·°šuțíęƒÿțƒ ÿƒÿƒƒÿƒƒÿƒƒÿƒÿüƒ‹œ±ą–ÖÓÒÌÇÁŒ¶šuțíę€ÿț€ ÿ€ÿ€€ÿ€€ÿ€€ÿ€ÿü€‹œŽ€”ÜŚÓÓÍÇÂœ”uțíę~ÿț~ ÿ~ÿÿ~ÿ~~ÿ~~ÿ~ÿü~f€ƒ„âĘŰÓÓÎÈĂŸłuțíæ}h†x†éăȚÙÔÓÏÉÄżČuțíæ}mˆ‚—ìêäßÚÔÓĐÊĆżłuțíű}…›–”’ŽțŒ‹od{oxqqrpŠ„„ĘÙŐËÍÏÏÒŃËÆżČv­­ù}ÿȘ€Ł€țŁ€|xƒi“…†šˆ{|tqqhqŒ‘Ÿ«ŒÆœČ­­ú}ț§ÎÆüÇ Œš˜ušŒž»§”Š‚oltrsh{“•”’™Ź·łŸû}ęŠÍüÆ·€Ș•ŠžÎïúôôăș™Œˆx|rppeŽ˜——•‘˜ĄŸü}ü„ÍțÆÿĆŒ„“ŽĐśÂżńïáŰąw–ƒvpnjm—™››š˜…Äę}û€ÌÄțĆ ș‡ •©Áà‘±ÀôńâŐŹ“}›ZZeese“ĄąŁ„§’Äț}úŁËęÄ ž€Œš°·ĘđśőóćŃł›‰Šsˆs€x‚łŽ±°Č––ÿ}ùą%ÊÄĂÄʔŠu}‚ÒèíôòńæŃ·žˆy°° Ž„‚w”ž·žž™™}ű ÉęĂ„ŒŒ—›ŹżÛäíïêȚÌ耔ĂÏŒ«’‹‹v°ĂțÂÿ śŸ%ÈÂÂĂ‚”•„ ȘčÊÖßáĘŐÄŽĄ„ÚÊș©’‹‹t€ÁÂÂĂ  śŸÇꠃ–„–žŠČżÉÒÔŃÈ謜§ÓĆ·š›‹‹sœŸÁŸŸśžÇęÁ €—”ˆœĄȘŽœĂÄÁ蟥•–ÁżČŁ—‹ŠrœŒÀÁÁśÄęÁ ‚•——šąšŻČłŻ©Ą—‹„Ź“ƒ‘‹‡y»ÀÀÁśœÄęÀ ‘”–—™›ž ŁŁ š•Œ‹‰z}‹‹„ƒŸ»żÀÀ››ś› ĂÀżÀÀŹ€’“”ț•ț—“’ŽŒû‹ ˆŠ‹{‘ŁŒŸżÀ››śšĂżŸțżsü‘ŽŒŒț‹ÿŠ‰ˆ™Š‰v›Ș»țżÿšśšÁżŸŸżż{țŽÿ ŽŒŒ‹‹Šˆ‡ț… œ‹}‹žłŒŸżżššś˜ÁțŸœŸŸw…ùŒŠˆ†…‚ț …œ‡x˜€žœŸœŸ˜˜ś˜żœŸțœŸŻl…üŠ‰†„‚}{|~‚Š˜w“šŻșŒœœŸ˜˜ś—ż»ûœŸl†…ƒ~|zyvv|ƒ‰‰}–„·»œœŒŒ——ś—Ÿ»œœŒŒœŒ»œtqƒƒ|{yyz}‡kv“”ŸŽșœęŒÿ—ś—œșúŒ螅mq}†ț„ †…ylm†””žŽčœțŒșŒ——ś—œč»Œ»üŒ»„”‹{nojjlo|“””€¶č»»Œ»»č»——ś—Œ¶ț»Œ»ŒŒț»° —•””ę“ÿ”Ż·șŒ»Œț»¶»——ś—Œ”ś»ș¶Ż§ ––œžšČ·čșșû»”»——ś—ŒŽ»»șę»ęș »ș·””ŽŽ””¶čüșü»Žș——ś—»Ž”șș»ùș»ș»üčț»üș»șș¶łș——ś—șßČș——ś—ș¶áČ”ș——ű—żÁàĆż—űۗŃ#'(,,,,*+(*+*++*'))(($'%!()%%'()& úèęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìùèÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïűèÖîńé çàÔÇȚÙđđúțïæè æäÚÌŚßŚÖúțïæÍ çäȚÍĐßȚÖúțïęÉÿüÉÿśÉÿüÉ ßâĘËÌàßĘŐúțïęÆÿüÆÿśÆÿüÆ œßÖÇÈâàßÜŚúțïęÄÿŃùÿŃțÿ ÄÿŃùÿÿùŃÄÿüÄ ŁÛÓÁÂćăàßÛŰúțïęÁÿűÏÁűÁÿÁÁÿűÏÿÁÁűÁÿüÁ  ŰÎŒ»èæăáßÛÖûțïęœÿËœœÿœÿœœÿËœÿœœÿœÿüœŸŰÍ»”êéæäáßÚĐÄ wțïęœÿțœ ÿœÿœœÿœœÿœœÿœÿüœ ŰÍ»źëêéçäáßŰÄ wțïęșÿțș ÿșÿșșÿșșÿșșÿșÿüșĄÙÏœŹîìêêçäâàÖ wțïęčÿțč ÿčÿÿčÿččÿččÿčÿü耹ŁąšńïìêêçćâàÔwțï枃§ą– ôòïíêêèćăàÓwțï枉Ž­ŁŻöőòđíêêèæăàÒwțïűž&±źŹȘ„Ł€Łą‰‰Œ‰‹‹Š¶±šŒéćâÜȚăćêéæäȚÏz””ùžÿŠ%ÀœœŸŸœŸŸ™”Ł ›‡Łž §¶Ż©š•’Ž„Œ„«žĆŚăÜÏ””úžțĆéûć­ÁŸ±œ»©ÎĐÁč°š Ž•”’„–­źŻ­ČÈÖĐàûžęÄèäę挀ÀœÂÇÍÜêśśëÏŽ©Ą“•˜–”‚šČł±°źŽŸàüžüĂ%çćääćä°ŒŒżÆÏáŸőôêă»Șš ™””“Šˆ°Ž””ŽŽĄăęžûÂçęä ÚȘżœĂÊŐŠżĐśöêáÁ°Ą—§|~‰Šš„­ŒœżÁÄźățžúÁçțä!ăÁŒșŸÄ©çőùűśìȚȶšœ‘€€•©­žĄŃÒÎÌÏłłÿžùÀ%çäăääź”· €àïóśöőíĘÌ·Šœ··ŽŽ±±«˜ÒŚŐÖŚ””žűżçęă šź·¶čÆÓæíóôńçÛÏÀŽÇÎÈĂżŒșž›ÎăâăăżżśżæęăŠłčżŒÄÏÚăéêèáÖËŸ»ĐÌÈĂżŒșșšÀáțăÿŸśœ%ćăâă⊷Ș»ŒÁÊÓÚàáßÙÏĆșŒÏËÇÂż»șș™čßââăœœśœ%ćâăâ㣷ŽŹșŸÄËŃŐÖÓÎÇœ”ČÇÉĆÁœ»ș蘷ÜáâăœœśŒäęâ Š”·žč»ŸĂÇÉËÈĂœ·±ź„ÀČ©ș»ș”čÛáâ⌌ś»äęâÿł”··žș»ŸÀÀœș”ČŻŻ­ĄŁ§Čșș±„ŒÜáââ»»śșăęâÏ€łŽ”ę¶ÿ·Žł±ûŻ ź­čș§ŻÁĘáâá»»śș ăáââá☱ČČțłÿȱ°üŻÿź ­Ź¶čž·ÊĘááâččśșâáâțáÀŸț°ÿ±ÿ°üŻ źŹȘ©š©șșȘȘ»ÔȚțáÿčśčáàüᙩùŻ­ŹȘš„€€„šœ¶ž”ÂÚßțáÿžśžâáààțáѐ©­ęź­Șš„ą žžĄŠźœŁ±žÏȚßáàážžś·%áßàááàà័ŁȘšŠ€ąĄ š™™Ÿ§­Š§źłĆÙàááßážžś·âȚúà»—–§ŠąŸœ› €Ș„˜°ČœŚĘàáàȚà··ś·áĘúàĘŒ„‘–ą©š§šȘ©ž“Š±±œŚÜàßààĘà··ś·àÛțàßțàÿß Ä±Șœ‘““žȘț±ÄÚĘüàÛß··ś·ßÚàßàßàßàßßàÒż”ČČ°°±±°±±ŒŃÛȚęàßàÚß··ś·%ßÚààßßàßàßààĘÙÒÇżœ””ŒœÈÔÚÜĘààßàßàßÙà··ś·ßŰàßàüßàțßĘÛŰęŚÙÛĘȚȚßàßßààßßÙß··ś·ߌÚțßàűßûȚßàúßàßÚŚß··ś·ßßÖß··ś·ßÛáÖÚß··ű·ââàćâ·űÛ·Ń'(,+++**+)*++++)()(" #'&$"  úțńđńđńńđđńđđńđńđńïîíéöŐàńíùÿđûòú űśńçćóóòò””úțńűïđù űóìâöóòò””úțńæ śöđçńśńń””úțńæ śôòçëśśń””úțńęÿüÿśÿü đőïăçśśöï””úțńęÿüÿśÿüÎńëàâțśőń”úțńęÿEćÿEțÿ ÿEćÿÿćEÿü”îèÜĘűțśôđúțńęÿćDćÿÿćDÿćÿüČëćÙŚùűțśôïûțńęÿDÿÿÿDÿÿÿüČëäŚÒùùűűśśóçâG::•țńęÿț ÿÿÿÿÿÿü±íćŚÍęùűśśòâG::•țńęÿț ÿÿÿÿÿÿüłïæŰËúęùűśśńG::•țńęÿț ÿÿÿÿÿÿÿüŁÔÒÌÈûúęùűśśđ::•țńæŹäÛÌÇüûúúțùűśśï:•țńæ °íæÚÔüüûûúțùűśöî•țńű&čÁÀŸŒž”¶””š§s”ŒŹ±±°íèĘĘôîêíïóőùùűűőì€ÂÂùÿÄŃęĐÿÏĐŸČZG@FZÊÊŐìćȚÍ°š˜—±čĆËÖȚíűôëÂÂúțè%ùűűùùűűçŃU?Jq–`őőòíæȚՄ™Ÿˆ”żËÌÎÎÓăîëśûęèÿùęűńĘ^?;;TGŽęęúńçßĂ»‰{ˆ…Œ”ÇÎÏĐÏÏŐĘśüüçùęű ùàŽ@=89VF8ęęùśëáFEMewu›žÍÏŃÓÔÓÇśęûæ%ùűűùùóŚI?:8N>kŹęęùśìăڔ98Răęțęęúőîçá8HŁȘŻŒ_°ËéêćäçÚÚÿùæ ùűűùùáwBIDiòüüțęúöđçàčP4@ABP~ËèíììîÜÜűć%úűűùűà Vććóöúûüęüúśôńïe05:=AEeÓçùűśśććść ùűùűùàÜ[§ńóőśùțúűőôńœ.26:=@BKÓĘśùűűććśäùęű áït{đòôöśűùűśóòđŻ/36:>ABBÓŰőùùűääśä ùűùűűȚïâ„đńóôőțöôóđïł248ABDÒŰôśùűääśăüűàíțïÿđüńÿïțí䄯ÆgBBQÒÚóśűùăăśăűùùűùîáîűïîûíÿì €CBlÓȚôűűùăăśâûűÓśîüíìțë œCAšÖäöűűùââśâûűäßííțîúí ìêéèççcBQŃÚîśțűÿâśâúűÎçùíìëéçćțäçMAĄÓßòśțűÿáśâűùüűëËèüìëéçćâàßßáćè?oĐŐêőęűÿâśáÿűùüűÛËăéçæäâáàȚÜÚÛàæëȘbÎŃàòśűűùűááśáűśûűśŰÈŚæćâßȚĘÜȚàäéäĐÆÎĐÚđöùűűśűááśáűśúűőŚËËÖàèțç éçĘÒÉÌÎÏÙđőęűöűááśáűśùű śßÎÌÊÉÍĐĐÊËÌÍțÎßôöüűöűááśáűőțűùûűìÚÒĐÏûÎÏÙëôöûűőűááśáűôśűöóëăÜÙÒÒŰÚäîôööúűôűááśáùôőűśôòęńóôțśùűôűááśáűóőńűśűśöűőóűááśáűßóűááśáűöáóőűááűáűűăùűùùűáűÛáŃ  úìÿòúëÿęòúêÿűó±ăÿđóáÿßőàÿÇößÿĄśȚÿrűĘÿGùÜÿ"ùÛÿ úÚÿûÚÿțüÙÿęęÚÙÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿû!Ûÿ*û2@AABCEá@2%!&'+*.*!)#""!#)!(&"))&%% ! ~ę€ïœ»ž”ŻÍŻÈńì~ü€ÿŒáóÚ ÙŚÔËșČčèïïúțí~û€șÙòÏ ÎÌÆč­čžïïúțí~ê€ ŠÍÊÁł”ș¶”úțíț}ÿ~}~}~~}ț~}~ę}ę~ }ÌËĆČ°șș”úțíè{ ĆÈÄ»Żœșč”úțíțwxțwțxwxțwûxęw „ÄÀ”ŹĂŸșž·úțíętßìߏtßìßttßìߏęt ŽÀș°šÉÄżș·žúțíęrȚrrŒȚrȚțrȚrȚțrȚęr ‹œ¶ŹąĐÊĆÀ»··ûțíonnoëüo ‹ëĘoonŠȚë‹ęonŠŒ”«›ÓŃËÆÁ»·°šuțíonnoëúoŠȚonno‹Ț‹țon‹œŽ«–ÖÓÒÌÇÁŒ¶šuțíÿmÿl&ĘmmˆĘmĘmm‰ĘlĘlmˆĘlmlm‹œ·­”ÜŚÓÓÍÇÂœ”uțíęj‡Ęëʇj‡ëëʇj‡Ęëëüj‹żžŹ—âĘŰÓÓÎÈĂŸłuțíűiÿjôij‹ÀžŻžéăȚÙÔÓÏÉÄżČuțíöhgőhm‹Áč°šìêäßÚÔÓĐÊĆżłuțíúh…›–”’ŽőŒ‹ÀșŻŽáÜÙÓŃÏÏÒŃËÆżČv­­ûhÿȘ€Ł€țŁț€țŁ€țŁŹÁ»±–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­ühț§ÎÆùÇÆûÇĆÂșžvœ–’’“•”’™Ź·łŸęhęŠÍöÆÇęÆĆÂŒ‚† ˜–““””–˜——•‘˜ĄŸțhü„ÍțÆÿĆöÆÄĂžjŁąš–”ț•ÿ—™››š˜…Äÿhû€ÌÄęĆÄśĆĂ™z°šŠą üŸĄąŁ„§’ÄhúŁËśÄĆŸęÄ ĂÂ~œ¶”«­°ŻłțČłŽ±°Č––ùąÊÄĂÄĂÄÄĂĂÄł‡ÄĂĂıt””¶t{€Č·žțčž·žž™™ù ÉúĂžŒq’ŸÄțĂ‘’țĂ­q’žüĂțÂÿ ùŸ ÈÂÂĂÂĂ·’qŒłĂĂęŸuČÂÂĂš|q‘·ÂĂțÂĂ  ùŸÇțÂœ—q‡ČÂÂÁüÂąÂțÁț Áą|qŒČÂÁŸŸùžÇțÁ|qŒüÁÿÂțÁąțÁÂüÁČvqĄęÁÿùÄțÁ¶‘qvœÁÀÁÀÁÀÀ±q»ÀÁÀÁÀÁÀ¶‘q‹°țÁÀÁùœÄüÀ»–qv üÀÿ‘ûÀ»‘qŒ°úÀÿ›ù›%ĂÀżÀÀżżÀș‘q|°ÀÀ»v°ÀżÀÀż q†°ÀżÀżÀÀżżÀ››ùšĂżŸúżŽ‹ żż ûż‹ȘțżŸúżÿšùšÁżŸŸüżŸżżŸżŸ„żŸżżŸżŸżŸżțŸÿżÿŸÿżÿšù˜ÁțŸœűŸ©€úŸœęŸœüŸœŸ˜˜ù˜żœŸțœŸœœŸțœŸčœŸüœŸœŸœœŸœŸüœŸ˜˜ù—ż»ëœŒûœŒœœŒŒ——ù— Ÿ»œœŒŒœŒŒœŒœœŒțœęŒœțŒœŒŒœŒŒœęŒÿ—ù—œșćŒœțŒșŒ——ù—œč»Œ»ùŒÿ»Œ»»üŒ»țŒę»Œ»»č»——ù—Œ¶ț»Œ»ŒŒę»Œț»Œś»Œ»Œț»¶»——ù—Œ”è»șû»”»——ù—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș——ù—»Ž”șș»ùș»ș»üșț»üș»șș¶łș——ù—șßČș——ù—ș¶áČ”ș——ú—żÁàĆż—úۗÓ%%!&'+*.*)*&**(%((%%("" %$ ~ę€ęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńì~ü€ÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțï~û€Öîńé çàÔÇȚÙđđúțï~ê€ ŽæäÚÌŚßŚÖúțïț}ÿ~}~}~~}ț~}~ę}ę~ }çäȚÍĐßȚÖúțïè{ ßâßÔÌàßĘŐúțïțwxțwțxwxțwûxęw œßŰÎÈâàßÜŚúțïętßìߏtßìßttßìߏęt ŁÛÔÈÂćăàßÛŰúțïęrȚrrŒȚrȚțrȚrȚțrȚęr  ŰĐÄ»èæăáßÛÖûțïonnoëüo ‹ëĘoonŠȚë‹ęonŸŰÏĂ”êéæäáßÚĐÄ wțïonnoëúoŠȚonno‹Ț‹țon ŰÏÄźëêéçäáßŰÄ wțïÿmÿl&ĘmmˆĘmĘmm‰ĘlĘlmˆĘlmlmĄÙŃĆŹîìêêçäâàÖ wțïęj‡Ęëʇj‡ëëʇj‡ĘëëüjąÜÒÇ°ńïìêêçćâàÔwțïűiÿjôijĄȚÔÉŽôòïíêêèćăàÓwțïöhgőhpĄȚÖÊœöőòđíêêèæăàÒwțïúh ±źŹȘ„Ł€ŁŁę€Ł€Ł€ĄȚŚÊÇìèćăâăćêéæäȚÏz””ûhÿŠ ÀœœŸŸœŸŸœœțŸțœŸÆßŚÌ°§ŁĄ Ÿą„«žĆŚăÜÏ””ühțĆéńćăàŰž‹¶źȘšš©Ș­źŻ­ČÈÖĐàęhęÄèäüćäććäûćâàښžșČźŹŹ­ŻŻČł±°źŽŸàțhüĂ çćääćäćääććäćțäćăâŐŸŒ¶Żę­ÿ°Ž””ŽŽĄăÿhûÂçőä ćäćäâ᳑ÌĂÂœûșŒœżÁÄźăhúÁçțäÿăÿäățäȚääăäâᕶÔÒÈÉÍÍęÏŃÒÎÌÏłłùÀçäăääăęäŃ žăăäăăωÓÓՊ’ÀĐŐŰŚŚŰŚŐÖŚ””ùżçęăț䌊‡ŹĘüă«Źăăäʙ‡ŹŚäăăäăâăăżżùżæü㌏‡ŠŃûăʌŃüăē‡ŹŰûăÿŸùœćăâăÜȇ ĐęăâțăŸ˜âăăâăăâăŸ“‡ŠŃăââăœœùœ ćâăⓇ„âăââăăę♟ățâăâăăâЍ‡ŸțâăœœùŒäțâÖ«‡žâăăęâЇÜââăââă⌫‡ŠĐüâÿŒù»äüâܱ‡Ÿțâáâ««ûâÜ«‡„Đúâÿ»ùșăúâÜ«‡“Ïâá܍Đâááâ⟇ŸĐâááâáțâá»»ùșăáââáțâÿáÖ„œá៙âáâáâá„Éęáâáâțáâččùșâáâűáâáá™ĂáâęáâőáÿčùčáàüáțàțáàəóáàüáÿžùžâáààùáÿàÛáààáțàÿáàüáàáàáàážžù·áßàááààáüàáààááààáùàáàțáßážžù·âȚûàáęàáűàáùàáàȚà··ù·áĘïàßùàßàßààĘà··ù·àÛțàßțàßàßàßęàßțàßöàÛß··ù·ßÚàßàßàßàßßàßàßßàßßààßàęßüàßàÚß··ù·ßÚààßßàßàßààßßàßßęàûßÿàßàßàßÙà··ù·ßŰàßàüßàőßàțß àßßààßßÙß··ù·ߌÚțßàńßàúßàßÚŚß··ù·ßßÖß··ù·ßÛáÖÚß··ú·ââàćâ·úÛ·Ó%!&'+)-))'+"*(+(()) ("&!    ~ę€țńđńđńńđđńđđńđńđńïîíéöŐàńí~ü€ÿđûòú űśńçćóóòò””úțń~û€ïđù űóìâöóòò””úțń~ê€ Œśöđçńśńń””úțńț}ÿ~}~}~~}ț~}~ę}ę~ }śôòçëśśń””úțńè{ đőđêçśśöï””úțńțwxțwțxwxțwûxęwÎńìćâțśőń”úțńętßìߏtßìßttßìߏęt”îéàĘűțśôđúțńęrȚrrŒȚrȚțrȚrȚțrȚęrČëćÜŚùűțśôïûțńonnoëüo ‹ëĘoonŠȚë‹ęonČëćÜÒùùűűśśóçâG::•țńonnoëúoŠȚonno‹Ț‹țon±íæÜÍęùűśśòâG::•țńÿmÿlĘmmˆĘmĘmm‰ĘlĘlmˆĘlmlmłïçĘËúęùűśśńG::•țńęj‡Ęëʇj‡ëëʇj‡ĘëëüjŽïèßÌûúęùűśśđ::•țńűiÿjôi jŽńéàĐüûúúțùűśśï:•țńöhgőh sŽńìâŚüüûûúțùűśöî•țńúh čÁÀŸŒž”¶”¶¶ę”ÿ¶”ŽòëâĘőóțń óőùùűűőì€ÂÂûhÿÄŃęĐÿÏĐÏûĐÿÏÛôìäÏÇÄțÁ ĂĆËÖȚíűôëÂÂühțè%ùűűùùűűùűűùùűűùùűűôíŃŠÒËÈÆÆÈÈËÌÎÎÓăîëśęhęèÿùśűțùűùűőï±·ŐÍËÈÉÉÊËÎÏĐÏÏŐĘśțhüçùęűÿùűùùűțùÿűùśőê•ÖŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśÿhûæùűűùùęűęùűțùÿöÇŠăÜÛŚțÔ ÓŐŐŚŚÙÛßÖśhúæúțű!ùűùűűùűùòűùűùűöȘËëèßáääçæçèéêćäçÚÚùæùűűùùűęùæŽÍùűùùśäžèè럹ŰçëíîîííììîÜÜùćúűűùűùűűìș›ÁóùùűùùÀÀùűűßź›Àìęűùűśśććùć ùűùűùűìÀ›șćűùùțűò ćűűùùűÚ§›Àìűùűùűűććùäùțű!òƛŽæűűùűùùűűÓ­űűùùűűùűÓ§›șæűùùűääùäùűùű§›șśűźÓűűęùțű æĄ›ÓùűűùääùäÿùÿűìÀ›ĄÍűűùęűć›òűùűűùűűìÀ›șćűùűùűääùăûű óƛĄÓűűùűűÁÀęűùűòÀ›șæùüűùăăùăűùùűùűűùòÀ›§æùűóĄćùțűùӛŽæûűùűùăăùâűűùìșÓűűÓźęűùűșßțűùțűùűűùââùâùűùűűùțűźÙùûűÿùęűțùțűÿâùâśűÿùűùßźțűùńűÿáùâűùőűòúűùțűùüűùțűÿâùáÿűùâűùűááùáűśúűùìűùűűśűááùáűśáűöűááùáűśôűùöűùûűöűááùáűőțűùćűőűááùáűôáűôűááùáùôìűùśűôűááùáűóőăűőóűááùáűßóűááùáűöáóőűááúáűűăùűùùűáúÛáÓ  úìÿòúëÿęòúêÿűó±ăÿđóáÿßőàÿÇößÿĄśȚÿrűĘÿGùÜÿ"ùÛÿ úÚÿûÚÿțüÙÿęęÚÙÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿû!Ûÿ*û2@AABCEá@2%$ !--%!(%%&&$)%$#&&%%%( ‹ęźïœ»ž”ŻÍŻÈńì‹üźÿŒáóÚ ÙŚÔËșČčèïïúțí‹ûźșÙòÏ ÎÌÆč­čžïïúțí‹êź ­ÍÊÁł”ș¶”úțíțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠÌËĆČ°șș”úțíńˆńùˆ ÆÈÁ±Żœșč”úțíț„…ț„ț…„…ț„…đę…ę„ šÄż­ŹĂŸșž·úț휁țđđù “Àž©šÉÄżș·žúțíú~ïțîïù œł€ąĐÊĆÀ»··ûțíś|ïț|ï|ïù|ŒČą›ÓŃËÆÁ»·°šuțíÿ{țzÿ{ÿz{ïț{ézïz{țz{z{œ±ą–ÖÓÒÌÇÁŒ¶šuțíÿ{țzÿ{ÿz{țïí©zïz{țz{z{œŽ€”ÜŚÓÓÍÇÂœ”uțíęxÿyęxïxxyyxïùx‘żŽ€—âĘŰÓÓÎÈĂŸłuțíűwxïôwx‘À”§žéăȚÙÔÓÏÉÄżČuțíövuővzÁ·©šìêäßÚÔÓĐÊĆżłuțíúv‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ûvÿ­§Š§țŠț§›{üuy€~|uromkkmq‹Ÿ«ŒÆœČ­­üvț§ÎÆúÇž‹žüÇĆÂș±Šœ–’ˆo’s•”’™Ź·łŸęvęŠÍùÆ’·ÆÇęÆĆÂŒłȘ ˜–n‹””n˜——•‘˜ĄŸțvü„ÍțÆÿĆțƄúÆÄĂŸ”­ąš–iț•k—™››š˜…Äÿvû€ÌÄęĆÄĆƄúĆĂŸž°šŠąnțŸoŸĄąŁ„§’ÄvúŁËùÄ„ÄĆü„ƒ‚€~{z°­xŻłČ€ČłŽ±°Č––ùą%ÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™™ù ÉùÄțĂÄțĂÿÂûÄúĂțÂÿ ùŸ ÈÂÂĂÂĂÂĂ„ĂĂû„ƒę„ÿ„ĂĂțÂĂțÂĂ  ùŸÇüÂÁ„ÂÁûÂÀÂțÁÿ„ÁțÂÁÂÂÁŸŸùžÇüÁÂÁÁ„ÁÁÂÂęÁÂțÁÂÁÁ„ÁÁÂÁÂüÁÿùÄüÁÀÁÁ„ÀÁö„ÀÁ„ÁÁțÀțÁÀÁùœÄùÀ„òÀ„ÀÁùÀÿ›ù› ĂÀżÀÀżżÀżƒûÀżÀÀżÀÀțż ƒÀÀżÀżÀÀżżÀ››ùšĂżŸûż„Ÿżö„ÿż„żżŸúżÿšùšÁżŸŸüż„żżŸżŸțżŸżżŸżŸż„żțŸÿżÿŸÿżÿšù˜ÁțŸœęŸ„ôŸœŸ„ŸŸœüŸœŸ˜˜ù˜żœŸțœŸœœ„țœÿŸœŸüœŸœŸ„œŸœŸüœŸ˜˜ù—ż»țœô„ƒț„ÿœŒ„üœŒœœŒŒ——ù— Ÿ»œœŒ„œŒŒœŒœœŒțœęŒ„țŒ„ŒŒœŒŒœęŒÿ—ù—œșțŒ„òŒ„țŒ„ęŒœțŒșŒ——ù—œč»Œ»ŠŻûŒÿ»Œ»»țŒŠŒ»Œ„Œę»Œ»»č»——ù—Œ¶ț»Ż‰ŻŒę»Œț»Œț» ŻŠ»»Š»»Œ»Œț»¶»——ù—Œ”껯‰òƒ„ŠŻ»șû»”»——ù—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș——ù—»Ž”șș»ùș»ș»üșț»üș»șș¶łș——ù—șßČș——ù—ș¶áČ”ș——ú—żÁàĆż—úۗÓ%%$ &--%))$&+&))"&!!!&!#' pę™ęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìpü™ÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïpû™Öîńé çàÔÇȚÙđđúțïpê™ ­æäÚÌŚßŚÖúțïțoÿpopoppoțpopęoęp oçäȚÍĐßȚÖúțïńmíùm ȚâĘËÌàßĘŐúțïțijțițjijțijíęjęi čßÖÇÈâàßÜŚúțïśfțìê›fíùf ÛÓÁÂćăàßÛŰúțïúdcddìțdëdìùd šŰÎŒ»èæăáßÛÖûțïa``úaìa`aì`ìúa`™ŰÍ»”êéæäáßÚĐÄ wțïÿ_ț^ÿ_ÿ^_ëț_ć^ì^_ț^_^_šŰÍ»źëêéçäáßŰÄ wțïÿ_ț^ÿ_ÿ^ _ëììé–^ì^_ț^_^_›ÙÏœŹîìêêçäâàÖ wțïę\ÿ]ę\ë\\]]\ëù\œÜĐż°ńïìêêçćâàÔwțïű[\ëô[\›ȚÒÀŽôòïíêêèćăàÓwțïöZYőZd›ȚÔĂœöőòđíêêèæăàÒwțïúZ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ûZÿŁ Œččșșčșșč诏ü‰Ÿœ˜‘Œ‰‡„„†Š€žĆŚăÜÏ””üZțĆéùćÖȘÖüćăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖĐàęZęÄèäüćäć±ÖûćâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸàțZüĂ çćääćäćääŁćäćțä ćăâÛÓÇŒ¶Ż‚ț­„°Ž””ŽŽĄăÿZûÂçùäŁțä ćäćäâáÜŐÌĂÂœ‰țș‰șŒœżÁÄźăZúÁçțäÿăÿäăŁääüŁąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłłùÀçäăääățäŁăäțăäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ””ùżçęățäăŁùăáäăăäăăŁăăäăăäăâăăżżùżæùăŁăăûŁąęŁÿăŁțăäûăÿŸùœćăâăâțăâŁțăâęăÿâÿăâăăŁăâüăÿâăœœùœ ćâăâăăââăŁâăăüâÿățâăâŁăùâăœœùŒäüâăââŁăăöŁâăŁăââăûâÿŒù»äûâáâŁęâáâáù⣜âÿ»ùșăùâąáâáâáęâÿáęâąââááâáțâá»»ùșăáââáțâáŁâáöŁâáŁțáâáâțáâččùșâáâûá ŁááâááâááâęáâᣜáÿčùčáàüáÿàŁțáàöáŁęáàüáÿžùžâáààüá ŁááààááààáțàÿáàŁęáàáàáàážžù·áßàááôŁąțŁțàŁțàáàțáßážžù·âȚțàŁààáęàáúàŁàáàŁûàáàȚà··ù·áĘțàŁóàߣțàŁțàßàßààĘà··ù·àÛțàȘÒààßàßàßęàßààȘßààŁùàÛß··ù·ßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßüàßàÚß··ù·ßÚààßßÒ©òąŁȘÒßààßàßàßÙà··ù·ßŰàßàüßàőßàțß àßßààßßÙß··ù·ߌÚțßàńßàúßàßÚŚß··ù·ßßÖß··ù·ßÛáÖÚß··ú·ââàćâ·úÛ·Ó%$ !,,$)(+&**)('#'!& ‹ęźțńđńđńńđđńđđńđńđńïîíéöŐàńí‹üźÿđûòú űśńçćóóòò””úțń‹ûźïđù űóìâöóòò””úțń‹êź Ăśöđçńśńń””úțńțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ Šśôòçëśśń””úțńńˆńùˆ đőïăçśśöï””úțńț„…ț„ț…„…ț„…đę…ę„Ńńëàâțśőń”úțńśțđđù»îèÜĘűțśôđúțńú~ïțîïùžëćÙŚùűțśôïûțńś|ïț|ï|ïù|žëäŚÒùùűűśśóçâG::•țńÿ{țzÿ{ÿz{ïț{ézïz{țz{z{·íćŚÍęùűśśòâG::•țńÿ{țzÿ{ÿz{țïí©zïz{țz{z{čïæŰËúęùűśśńG::•țńęxÿyęxïxxyyxïùxșïçÚÌûúęùűśśđ::•țńűwxïôw xșńèÛĐüûúúțùűśśï:•țńövuőv €șńëȚŚüüûûúțùűśöî•țńúv ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțń óőùùűűőì€ÂÂûvÿÇŐęÔÿÓÔÓÔÊŻüȘ°œșžŽ°ź«Ș©«ŻÆÖȚíűôëÂÂüvțè%ùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîëśęvęèÿùúűÌëűțùűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘśțvüçùęűÿùűùÀűțùÿűùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇśÿvûæùűűùùęűÀțùűțùÿöńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖśvúæúțűùűùűűÀűùüÀżŸŒč¶”äáŽäçæșèéêćäçÚÚùæùűűùùűțùÀęùűùùśśóîèëë攎·ŸâîííììîÜÜùćúűűùűùțűÀűęùűùùűűùțűùÀűùęűùűśśććùć ùűùűùűùűűÀűűûÀżęÀùűÀüűùűùűűććùäùüűùűùÀűùűùùűűùśűűùùűűÀűùțűùűùùűääùäùűùûűÀöűęùÀűűùțűùűűùääùäÿùęűÿùűÀűùöÀùűÀûűùűùűääùăûűùűűÀțűùűűùüűùűűÀűűùùüűùăăùăűùùűùűűùűżùűùùűùűűùțűùűűżùûűùűùăăùâűűÀűùöÀùűÀűűùțűùűűùââùâùűùÀűùțűùűùûűùÀęűțùțűÿâùâűűÀùùűùűùțűùüűÀśűÿáùâűùúűÀőűùűűÀùüűùțűÿâùáÿűùűűôÀżțÀțűÀùűùűááùáűśțűÀțűùöűÀțűÀüűùűűśűááùáűśțűÀòűÀțűÀùűöűááùáűśțűÆëùűùüűÆțűÀűùûűöűááùáűőțűìĆëôűëÆűűÆùűőűááùáűôęűëĆòżÀÆëùűôűááùáùôìűùśűôűááùáűóőăűőóűááùáűßóűááùáűöáóőűááúáűűăùűùùűáúÛáÓ  úìÿòúëÿęòúêÿűó±ăÿđóáÿßőàÿÇößÿĄśȚÿrűĘÿGùÜÿ"ùÛÿ úÚÿûÚÿțüÙÿęęÚÙÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿû!Ûÿ*û2@AABCEá@2%!"%--&#!(%%&&$)%$#&&%%%( ‹ęźïœ»ž”ŻÍŻÈńì‹üźÿŒáóÚ ÙŚÔËșČčèïïúțí‹ûźșÙòÏ ÎÌÆč­čžïïúțí‹êź ­ÍÊÁł”ș¶”úțíțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠÌËĆČ°șș”úțíèˆ ÆÈÁ±Żœșč”úțíț„…ț„ț…„…ț„û…ę„ šÄż­ŹĂŸșž·úțíùțęęû “Àž©šÉÄżș·žúțíú~ęțïï›~›ïû œł€ąĐÊĆÀ»··ûțíù|ęț|ę|™ï|ï™û|ŒČą›ÓŃËÆÁ»·°šuțíÿ{țzÿ{ zę{z{ę{{î˜î{țz{z{œ±ą–ÖÓÒÌÇÁŒ¶šuțíÿ{țzÿ{ zÿęęî˜{{—ń—{țz{z{œŽ€”ÜŚÓÓÍÇÂœ”uțíęxÿyÿxęęxÿyxîùx‘żŽ€—âĘŰÓÓÎÈĂŸłuțíùwęxxęwî•úwx‘À”§žéăȚÙÔÓÏÉÄżČuțíövuővzÁ·©šìêäßÚÔÓĐÊĆżłuțíúv‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ûvÿ­§Š§țŠț§›{üuy€~|uromkkmq‹Ÿ«ŒÆœČ­­üvț§ÎÆúÇž‹žüÇĆÂș±Šœ–’ˆo’s•”’™Ź·łŸęvęŠÍùÆ’·ÆÇęÆĆÂŒłȘ ˜–n‹””n˜——•‘˜ĄŸțvü„ÍțÆÿĆțƄúÆÄĂŸ”­ąš–iț•k—™››š˜…Äÿvû€ÌÄęĆÄĆƄúĆĂŸž°šŠąnțŸoŸĄąŁ„§’ÄvúŁËùÄ„ÄĆü„ƒ‚€~{z°­xŻłČ€ČłŽ±°Č––ùą%ÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™™ù ÉùÄțĂÄțĂÿÂûÄúĂțÂÿ ùŸ ÈÂÂĂÂĂÂĂ„ĂĂû„ƒę„ÿ„ĂĂțÂĂțÂĂ  ùŸÇüÂÁ„ÂÁûÂÀÂțÁÿ„ÁțÂÁÂÂÁŸŸùžÇüÁÂÁÁ„ÁÁÂÂęÁÂțÁÂÁÁ„ÁÁÂÁÂüÁÿùÄüÁÀÁÁ„ÀÁö„ÀÁ„ÁÁțÀțÁÀÁùœÄùÀ„òÀ„ÀÁùÀÿ›ù› ĂÀżÀÀżżÀżƒûÀżÀÀżÀÀțż ƒÀÀżÀżÀÀżżÀ››ùšĂżŸûż„Ÿżö„ÿż„żżŸúżÿšùšÁżŸŸüż„żżŸżŸțżŸżżŸżŸż„żțŸÿżÿŸÿżÿšù˜ÁțŸœęŸ„ôŸœŸ„ŸŸœüŸœŸ˜˜ù˜żœŸțœŸœœ„țœÿŸœŸüœŸœŸ„œŸœŸüœŸ˜˜ù—ż»țœô„ƒț„ÿœŒ„üœŒœœŒŒ——ù— Ÿ»œœŒ„œŒŒœŒœœŒțœęŒ„țŒ„ŒŒœŒŒœęŒÿ—ù—œșțŒ„òŒ„țŒ„ęŒœțŒșŒ——ù—œč»Œ»ŠŻûŒÿ»Œ»»țŒŠŒ»Œ„Œę»Œ»»č»——ù—Œ¶ț»Ż‰ŻŒę»Œț»Œț» ŻŠ»»Š»»Œ»Œț»¶»——ù—Œ”껯‰òƒ„ŠŻ»șû»”»——ù—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș——ù—»Ž”șș»ùș»ș»üșț»üș»șș¶łș——ù—șßČș——ù—ș¶áČ”ș——ú—żÁàĆż—úۗÓ%%!"*--&#))$&+&))"&!!!&!#' pę™ęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìpü™ÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïpû™Öîńé çàÔÇȚÙđđúțïpê™ ­æäÚÌŚßŚÖúțïțoÿpopoppoțpopęoęp oçäȚÍĐßȚÖúțïèm ȚâĘËÌàßĘŐúțïțijțițjijțiûjęi čßÖÇÈâàßÜŚúțïùfțęìˆfìˆgfęûf ÛÓÁÂćăàßÛŰúțïúdcęțdìdì†c†ìûd šŰÎŒ»èæăáßÛÖûțïa``üaęțaęa„ë`ë„üa`™ŰÍ»”êéæäáßÚĐÄ wțïÿ_ț^ÿ_ ^ü_^_ü__ë‚ë_ț^_^_šŰÍ»źëêéçäáßŰÄ wțïÿ_ț^ÿ_ ^ÿüüë‚__í_ț^_^_›ÙÏœŹîìêêçäâàÖ wțïę\ÿ]ÿ\üę\ÿ]\ëù\œÜĐż°ńïìêêçćâàÔwțïù[ü\\ę[êú[\›ȚÒÀŽôòïíêêèćăàÓwțïöZYőZd›ȚÔĂœöőòđíêêèæăàÒwțïúZ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ûZÿŁ Œččșșčșșč诏ü‰Ÿœ˜‘Œ‰‡„„†Š€žĆŚăÜÏ””üZțĆéùćÖȘÖüćăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖĐàęZęÄèäüćäć±ÖûćâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸàțZüĂ çćääćäćääŁćäćțä ćăâÛÓÇŒ¶Ż‚ț­„°Ž””ŽŽĄăÿZûÂçùäŁțä ćäćäâáÜŐÌĂÂœ‰țș‰șŒœżÁÄźăZúÁçțäÿăÿäăŁääüŁąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłłùÀçäăääățäŁăäțăäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ””ùżçęățäăŁùăáäăăäăăŁăăäăăäăâăăżżùżæùăŁăăûŁąęŁÿăŁțăäûăÿŸùœćăâăâțăâŁțăâęăÿâÿăâăăŁăâüăÿâăœœùœ ćâăâăăââăŁâăăüâÿățâăâŁăùâăœœùŒäüâăââŁăăöŁâăŁăââăûâÿŒù»äûâáâŁęâáâáù⣜âÿ»ùșăùâąáâáâáęâÿáęâąââááâáțâá»»ùșăáââáțâáŁâáöŁâáŁțáâáâțáâččùșâáâûá ŁááâááâááâęáâᣜáÿčùčáàüáÿàŁțáàöáŁęáàüáÿžùžâáààüá ŁááààááààáțàÿáàŁęáàáàáàážžù·áßàááôŁąțŁțàŁțàáàțáßážžù·âȚțàŁààáęàáúàŁàáàŁûàáàȚà··ù·áĘțàŁóàߣțàŁțàßàßààĘà··ù·àÛțàȘÒààßàßàßęàßààȘßààŁùàÛß··ù·ßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßüàßàÚß··ù·ßÚààßßÒ©òąŁȘÒßààßàßàßÙà··ù·ßŰàßàüßàőßàțß àßßààßßÙß··ù·ߌÚțßàńßàúßàßÚŚß··ù·ßßÖß··ù·ßÛáÖÚß··ú·ââàćâ·úÛ·Ó%!"%,,%#)(+&**)('#'!& ‹ęźțńđńđńńđđńđđńđńđńïîíéöŐàńí‹üźÿđûòú űśńçćóóòò””úțń‹ûźïđù űóìâöóòò””úțń‹êź Ăśöđçńśńń””úțńțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ Šśôòçëśśń””úțńèˆ đőïăçśśöï””úțńț„…ț„ț…„…ț„û…ę„Ńńëàâțśőń”úțńùțęęû»îèÜĘűțśôđúțńú~ęțïï›~›ïûžëćÙŚùűțśôïûțńù|ęț|ę|™ï|ï™û|žëäŚÒùùűűśśóçâG::•țńÿ{țzÿ{ zę{z{ę{{î˜î{țz{z{·íćŚÍęùűśśòâG::•țńÿ{țzÿ{ zÿęęî˜{{—ń—{țz{z{čïæŰËúęùűśśńG::•țńęxÿyÿxęęxÿyxîùxșïçÚÌûúęùűśśđ::•țńùwęxxęwî•úw xșńèÛĐüûúúțùűśśï:•țńövuőv €șńëȚŚüüûûúțùűśöî•țńúv ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțń óőùùűűőì€ÂÂûvÿÇŐęÔÿÓÔÓÔÊŻüȘ°œșžŽ°ź«Ș©«ŻÆÖȚíűôëÂÂüvțè%ùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîëśęvęèÿùúűÌëűțùűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘśțvüçùęűÿùűùÀűțùÿűùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇśÿvûæùűűùùęűÀțùűțùÿöńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖśvúæúțűùűùűűÀűùüÀżŸŒč¶”äáŽäçæșèéêćäçÚÚùæùűűùùűțùÀęùűùùśśóîèëë攎·ŸâîííììîÜÜùćúűűùűùțűÀűęùűùùűűùțűùÀűùęűùűśśććùć ùűùűùűùűűÀűűûÀżęÀùűÀüűùűùűűććùäùüűùűùÀűùűùùűűùśűűùùűűÀűùțűùűùùűääùäùűùûűÀöűęùÀűűùțűùűűùääùäÿùęűÿùűÀűùöÀùűÀûűùűùűääùăûűùűűÀțűùűűùüűùűűÀűűùùüűùăăùăűùùűùűűùűżùűùùűùűűùțűùűűżùûűùűùăăùâűűÀűùöÀùűÀűűùțűùűűùââùâùűùÀűùțűùűùûűùÀęűțùțűÿâùâűűÀùùűùűùțűùüűÀśűÿáùâűùúűÀőűùűűÀùüűùțűÿâùáÿűùűűôÀżțÀțűÀùűùűááùáűśțűÀțűùöűÀțűÀüűùűűśűááùáűśțűÀòűÀțűÀùűöűááùáűśțűÆëùűùüűÆțűÀűùûűöűááùáűőțűìĆëôűëÆűűÆùűőűááùáűôęűëĆòżÀÆëùűôűááùáùôìűùśűôűááùáűóőăűőóűááùáűßóűááùáűöáóőűááúáűűăùűùùűáúÛáÓ  úìÿòúëÿęòúêÿűó±ăÿđóáÿßőàÿÇößÿĄśȚÿrűĘÿGùÜÿ"ùÛÿ úÚÿûÚÿțüÙÿęęÚÙÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿû!Ûÿ*û2@AABCEá@2%" #--'!(%%&&$)%$#&&%%%( ‹ęźïœ»ž”ŻÍŻÈńì‹üźÿŒáóÚ ÙŚÔËșČčèïïúțí‹ûźșÙòÏ ÎÌÆč­čžïïúțí‹êź ­ÍÊÁł”ș¶”úțíțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠÌËĆČ°șș”úțíőˆïőˆ ÆÈÁ±Żœșč”úțíț„…ț„ț…„…î„„û…ę„ šÄż­ŹĂŸșž·úțíùî™âî™ââšù “Àž©šÉÄżș·žúțíú ~íá˜íá˜áù œł€ąĐÊĆÀ»··ûțíù|í•||íț|ïù|ŒČą›ÓŃËÆÁ»·°šuțíÿ{țzÿ{ zí{z{í{{zïz{țz{z{œ±ą–ÖÓÒÌÇÁŒ¶šuțíÿ{țzÿ{ zí{z{íà”zíz{țz{z{œŽ€”ÜŚÓÓÍÇÂœ”uțíęxÿyÿxìțxì“àà’ùx‘żŽ€—âĘŰÓÓÎÈĂŸłuțíűwÿxôwx‘À”§žéăȚÙÔÓÏÉÄżČuțíövuővzÁ·©šìêäßÚÔÓĐÊĆżłuțíúv‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ûvÿ­§Š§țŠț§›{üuy€~|uromkkmq‹Ÿ«ŒÆœČ­­üvț§ÎÆúÇž‹žüÇĆÂș±Šœ–’ˆo’s•”’™Ź·łŸęvęŠÍùÆ’·ÆÇęÆĆÂŒłȘ ˜–n‹””n˜——•‘˜ĄŸțvü„ÍțÆÿĆțƄúÆÄĂŸ”­ąš–iț•k—™››š˜…Äÿvû€ÌÄęĆÄĆƄúĆĂŸž°šŠąnțŸoŸĄąŁ„§’ÄvúŁËùÄ„ÄĆü„ƒ‚€~{z°­xŻłČ€ČłŽ±°Č––ùą%ÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™™ù ÉùÄțĂÄțĂÿÂûÄúĂțÂÿ ùŸ ÈÂÂĂÂĂÂĂ„ĂĂû„ƒę„ÿ„ĂĂțÂĂțÂĂ  ùŸÇüÂÁ„ÂÁûÂÀÂțÁÿ„ÁțÂÁÂÂÁŸŸùžÇüÁÂÁÁ„ÁÁÂÂęÁÂțÁÂÁÁ„ÁÁÂÁÂüÁÿùÄüÁÀÁÁ„ÀÁö„ÀÁ„ÁÁțÀțÁÀÁùœÄùÀ„òÀ„ÀÁùÀÿ›ù› ĂÀżÀÀżżÀżƒûÀżÀÀżÀÀțż ƒÀÀżÀżÀÀżżÀ››ùšĂżŸûż„Ÿżö„ÿż„żżŸúżÿšùšÁżŸŸüż„żżŸżŸțżŸżżŸżŸż„żțŸÿżÿŸÿżÿšù˜ÁțŸœęŸ„ôŸœŸ„ŸŸœüŸœŸ˜˜ù˜żœŸțœŸœœ„țœÿŸœŸüœŸœŸ„œŸœŸüœŸ˜˜ù—ż»țœô„ƒț„ÿœŒ„üœŒœœŒŒ——ù— Ÿ»œœŒ„œŒŒœŒœœŒțœęŒ„țŒ„ŒŒœŒŒœęŒÿ—ù—œșțŒ„òŒ„țŒ„ęŒœțŒșŒ——ù—œč»Œ»ŠŻûŒÿ»Œ»»țŒŠŒ»Œ„Œę»Œ»»č»——ù—Œ¶ț»Ż‰ŻŒę»Œț»Œț» ŻŠ»»Š»»Œ»Œț»¶»——ù—Œ”껯‰òƒ„ŠŻ»șû»”»——ù—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș——ù—»Ž”șș»ùș»ș»üșț»üș»șș¶łș——ù—șßČș——ù—ș¶áČ”ș——ú—żÁàĆż—úۗÓ%%" (--'))$&+&))"&!!!&!#' pę™ęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìpü™ÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïpû™Öîńé çàÔÇȚÙđđúțïpê™ ­æäÚÌŚßŚÖúțïțoÿpopoppoțpopęoęp oçäȚÍĐßȚÖúțïőmëőm ȚâĘËÌàßĘŐúțïțijțițjijêiiûjęi čßÖÇÈâàßÜŚúțïùfêƒÜfêƒÜ܄ùf ÛÓÁÂćăàßÛŰúțïúd cêۂdêۂdÛùd šŰÎŒ»èæăáßÛÖûțïa``üaéaaéaa`ìúa`™ŰÍ»”êéæäáßÚĐÄ wțïÿ_ț^ÿ_ ^é_^_é__^ì^_ț^_^_šŰÍ»źëêéçäáßŰÄ wțïÿ_ț^ÿ_ ^é_^_éÚ~^é^_ț^_^_›ÙÏœŹîìêêçäâàÖ wțïę\ÿ]ÿ\éț\é|ÚÙ{ù\œÜĐż°ńïìêêçćâàÔwțïű[ÿ\ô[\›ȚÒÀŽôòïíêêèćăàÓwțïöZYőZd›ȚÔĂœöőòđíêêèæăàÒwțïúZ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ûZÿŁ Œččșșčșșč诏ü‰Ÿœ˜‘Œ‰‡„„†Š€žĆŚăÜÏ””üZțĆéùćÖȘÖüćăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖĐàęZęÄèäüćäć±ÖûćâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸàțZüĂ çćääćäćääŁćäćțä ćăâÛÓÇŒ¶Ż‚ț­„°Ž””ŽŽĄăÿZûÂçùäŁțä ćäćäâáÜŐÌĂÂœ‰țș‰șŒœżÁÄźăZúÁçțäÿăÿäăŁääüŁąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłłùÀçäăääățäŁăäțăäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ””ùżçęățäăŁùăáäăăäăăŁăăäăăäăâăăżżùżæùăŁăăûŁąęŁÿăŁțăäûăÿŸùœćăâăâțăâŁțăâęăÿâÿăâăăŁăâüăÿâăœœùœ ćâăâăăââăŁâăăüâÿățâăâŁăùâăœœùŒäüâăââŁăăöŁâăŁăââăûâÿŒù»äûâáâŁęâáâáù⣜âÿ»ùșăùâąáâáâáęâÿáęâąââááâáțâá»»ùșăáââáțâáŁâáöŁâáŁțáâáâțáâččùșâáâûá ŁááâááâááâęáâᣜáÿčùčáàüáÿàŁțáàöáŁęáàüáÿžùžâáààüá ŁááààááààáțàÿáàŁęáàáàáàážžù·áßàááôŁąțŁțàŁțàáàțáßážžù·âȚțàŁààáęàáúàŁàáàŁûàáàȚà··ù·áĘțàŁóàߣțàŁțàßàßààĘà··ù·àÛțàȘÒààßàßàßęàßààȘßààŁùàÛß··ù·ßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßüàßàÚß··ù·ßÚààßßÒ©òąŁȘÒßààßàßàßÙà··ù·ßŰàßàüßàőßàțß àßßààßßÙß··ù·ߌÚțßàńßàúßàßÚŚß··ù·ßßÖß··ù·ßÛáÖÚß··ú·ââàćâ·úÛ·Ó%" #,,&)(+&**)('#'!& ‹ęźțńđńđńńđđńđđńđńđńïîíéöŐàńí‹üźÿđûòú űśńçćóóòò””úțń‹ûźïđù űóìâöóòò””úțń‹êź Ăśöđçńśńń””úțńțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ Šśôòçëśśń””úțńőˆïőˆ đőïăçśśöï””úțńț„…ț„ț…„…î„„û…ę„Ńńëàâțśőń”úțńùî™âî™ââšù»îèÜĘűțśôđúțńú ~íá˜íá˜áùžëćÙŚùűțśôïûțńù|í•||íț|ïù|žëäŚÒùùűűśśóçâG::•țńÿ{țzÿ{ zí{z{í{{zïz{țz{z{·íćŚÍęùűśśòâG::•țńÿ{țzÿ{ zí{z{íà”zíz{țz{z{čïæŰËúęùűśśńG::•țńęxÿyÿxìțxì“àà’ùxșïçÚÌûúęùűśśđ::•țńűwÿxôw xșńèÛĐüûúúțùűśśï:•țńövuőv €șńëȚŚüüûûúțùűśöî•țńúv ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțń óőùùűűőì€ÂÂûvÿÇŐęÔÿÓÔÓÔÊŻüȘ°œșžŽ°ź«Ș©«ŻÆÖȚíűôëÂÂüvțè%ùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîëśęvęèÿùúűÌëűțùűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘśțvüçùęűÿùűùÀűțùÿűùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇśÿvûæùűűùùęűÀțùűțùÿöńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖśvúæúțűùűùűűÀűùüÀżŸŒč¶”äáŽäçæșèéêćäçÚÚùæùűűùùűțùÀęùűùùśśóîèëë攎·ŸâîííììîÜÜùćúűűùűùțűÀűęùűùùűűùțűùÀűùęűùűśśććùć ùűùűùűùűűÀűűûÀżęÀùűÀüűùűùűűććùäùüűùűùÀűùűùùűűùśűűùùűűÀűùțűùűùùűääùäùűùûűÀöűęùÀűűùțűùűűùääùäÿùęűÿùűÀűùöÀùűÀûűùűùűääùăûűùűűÀțűùűűùüűùűűÀűűùùüűùăăùăűùùűùűűùűżùűùùűùűűùțűùűűżùûűùűùăăùâűűÀűùöÀùűÀűűùțűùűűùââùâùűùÀűùțűùűùûűùÀęűțùțűÿâùâűűÀùùűùűùțűùüűÀśűÿáùâűùúűÀőűùűűÀùüűùțűÿâùáÿűùűűôÀżțÀțűÀùűùűááùáűśțűÀțűùöűÀțűÀüűùűűśűááùáűśțűÀòűÀțűÀùűöűááùáűśțűÆëùűùüűÆțűÀűùûűöűááùáűőțűìĆëôűëÆűűÆùűőűááùáűôęűëĆòżÀÆëùűôűááùáùôìűùśűôűááùáűóőăűőóűááùáűßóűááùáűöáóőűááúáűűăùűùùűáúÛáÓ  úìÿòúëÿęòúêÿűó±ăÿđóáÿßőàÿÇößÿĄśȚÿrűĘÿGùÜÿ"ùÛÿ úÚÿûÚÿțüÙÿęęÚÙÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿû!Ûÿ*û2@AABCEá@2%"!$--(!(%%&&$)%$#&&%%%( ‹ęźïœ»ž”ŻÍŻÈńì‹üźÿŒáóÚ ÙŚÔËșČčèïïúțí‹ûźșÙòÏ ÎÌÆč­čžïïúțí‹êź ­ÍÊÁł”ș¶”úțíțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠÌËĆČ°șș”úțíôˆïöˆ ÆÈÁ±Żœșč”úțíț„…ț„ț…„…„î„û…ę„ šÄż­ŹĂŸșž·úțíù™âîîțîâ™ú “Àž©šÉÄżș·žúțíú~á˜țí~áú œł€ąĐÊĆÀ»··ûțíù|ÿá•||íț|íú|ŒČą›ÓŃËÆÁ»·°šuțíÿ{țzÿ{ÿz ”àÖ{í{z{í{țz{z{œ±ą–ÖÓÒÌÇÁŒ¶šuțíÿ{țzÿ{ÿz {”à{í{z{í{țz{z{œŽ€”ÜŚÓÓÍÇÂœ”uțíęxÿyÿxÿìàxxíyxxìúx‘żŽ€—âĘŰÓÓÎÈĂŸłuțíűwÿxôwx‘À”§žéăȚÙÔÓÏÉÄżČuțíövuővzÁ·©šìêäßÚÔÓĐÊĆżłuțíúv‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ûvÿ­§Š§țŠț§›{üuy€~|uromkkmq‹Ÿ«ŒÆœČ­­üvț§ÎÆúÇž‹žüÇĆÂș±Šœ–’ˆo’s•”’™Ź·łŸęvęŠÍùÆ’·ÆÇęÆĆÂŒłȘ ˜–n‹””n˜——•‘˜ĄŸțvü„ÍțÆÿĆțƄúÆÄĂŸ”­ąš–iț•k—™››š˜…Äÿvû€ÌÄęĆÄĆƄúĆĂŸž°šŠąnțŸoŸĄąŁ„§’ÄvúŁËùÄ„ÄĆü„ƒ‚€~{z°­xŻłČ€ČłŽ±°Č––ùą%ÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™™ù ÉùÄțĂÄțĂÿÂûÄúĂțÂÿ ùŸ ÈÂÂĂÂĂÂĂ„ĂĂû„ƒę„ÿ„ĂĂțÂĂțÂĂ  ùŸÇüÂÁ„ÂÁûÂÀÂțÁÿ„ÁțÂÁÂÂÁŸŸùžÇüÁÂÁÁ„ÁÁÂÂęÁÂțÁÂÁÁ„ÁÁÂÁÂüÁÿùÄüÁÀÁÁ„ÀÁö„ÀÁ„ÁÁțÀțÁÀÁùœÄùÀ„òÀ„ÀÁùÀÿ›ù› ĂÀżÀÀżżÀżƒûÀżÀÀżÀÀțż ƒÀÀżÀżÀÀżżÀ››ùšĂżŸûż„Ÿżö„ÿż„żżŸúżÿšùšÁżŸŸüż„żżŸżŸțżŸżżŸżŸż„żțŸÿżÿŸÿżÿšù˜ÁțŸœęŸ„ôŸœŸ„ŸŸœüŸœŸ˜˜ù˜żœŸțœŸœœ„țœÿŸœŸüœŸœŸ„œŸœŸüœŸ˜˜ù—ż»țœô„ƒț„ÿœŒ„üœŒœœŒŒ——ù— Ÿ»œœŒ„œŒŒœŒœœŒțœęŒ„țŒ„ŒŒœŒŒœęŒÿ—ù—œșțŒ„òŒ„țŒ„ęŒœțŒșŒ——ù—œč»Œ»ŠŻûŒÿ»Œ»»țŒŠŒ»Œ„Œę»Œ»»č»——ù—Œ¶ț»Ż‰ŻŒę»Œț»Œț» ŻŠ»»Š»»Œ»Œț»¶»——ù—Œ”껯‰òƒ„ŠŻ»șû»”»——ù—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș——ù—»Ž”șș»ùș»ș»üșț»üș»șș¶łș——ù—șßČș——ù—ș¶áČ”ș——ú—żÁàĆż—úۗÓ%%"!)--())$&+&))"&!!!&!#' pę™ęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìpü™ÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïpû™Öîńé çàÔÇȚÙđđúțïpê™ ­æäÚÌŚßŚÖúțïțoÿpopoppoțpopęoęp oçäȚÍĐßȚÖúțïômëöm ȚâĘËÌàßĘŐúțïțijțițjijiêiûjęi čßÖÇÈâàßÜŚúțïùfƒÜêêfțê܃úf ÛÓÁÂćăàßÛŰúțïúdcۂțdêddcÛúd šŰÎŒ»èæăáßÛÖûțïa``üaÿÚa`éa``éûa`™ŰÍ»”êéæäáßÚĐÄ wțïÿ_ț^ÿ_ÿ^ ~ÚÍ_é_^_é_ț^_^_šŰÍ»źëêéçäáßŰÄ wțïÿ_ț^ÿ_ÿ^ _}Ú_é_^_é_ț^_^_›ÙÏœŹîìêêçäâàÖ wțïę\ÿ]ÿ\ÿéÙ\\é]\\éú\œÜĐż°ńïìêêçćâàÔwțïű[ÿ\ô[\›ȚÒÀŽôòïíêêèćăàÓwțïöZYőZd›ȚÔĂœöőòđíêêèæăàÒwțïúZ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ûZÿŁ Œččșșčșșč诏ü‰Ÿœ˜‘Œ‰‡„„†Š€žĆŚăÜÏ””üZțĆéùćÖȘÖüćăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖĐàęZęÄèäüćäć±ÖûćâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸàțZüĂ çćääćäćääŁćäćțä ćăâÛÓÇŒ¶Ż‚ț­„°Ž””ŽŽĄăÿZûÂçùäŁțä ćäćäâáÜŐÌĂÂœ‰țș‰șŒœżÁÄźăZúÁçțäÿăÿäăŁääüŁąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłłùÀçäăääățäŁăäțăäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ””ùżçęățäăŁùăáäăăäăăŁăăäăăäăâăăżżùżæùăŁăăûŁąęŁÿăŁțăäûăÿŸùœćăâăâțăâŁțăâęăÿâÿăâăăŁăâüăÿâăœœùœ ćâăâăăââăŁâăăüâÿățâăâŁăùâăœœùŒäüâăââŁăăöŁâăŁăââăûâÿŒù»äûâáâŁęâáâáù⣜âÿ»ùșăùâąáâáâáęâÿáęâąââááâáțâá»»ùșăáââáțâáŁâáöŁâáŁțáâáâțáâččùșâáâûá ŁááâááâááâęáâᣜáÿčùčáàüáÿàŁțáàöáŁęáàüáÿžùžâáààüá ŁááààááààáțàÿáàŁęáàáàáàážžù·áßàááôŁąțŁțàŁțàáàțáßážžù·âȚțàŁààáęàáúàŁàáàŁûàáàȚà··ù·áĘțàŁóàߣțàŁțàßàßààĘà··ù·àÛțàȘÒààßàßàßęàßààȘßààŁùàÛß··ù·ßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßüàßàÚß··ù·ßÚààßßÒ©òąŁȘÒßààßàßàßÙà··ù·ßŰàßàüßàőßàțß àßßààßßÙß··ù·ߌÚțßàńßàúßàßÚŚß··ù·ßßÖß··ù·ßÛáÖÚß··ú·ââàćâ·úÛ·Ó%"!$,,')(+&**)('#'!& ‹ęźțńđńđńńđđńđđńđńđńïîíéöŐàńí‹üźÿđûòú űśńçćóóòò””úțń‹ûźïđù űóìâöóòò””úțń‹êź Ăśöđçńśńń””úțńțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ Šśôòçëśśń””úțńôˆïöˆ đőïăçśśöï””úțńț„…ț„ț…„…„î„û…ę„Ńńëàâțśőń”úțńù™âîîțîâ™ú»îèÜĘűțśôđúțńú~á˜țí~áúžëćÙŚùűțśôïûțńù|ÿá•||íț|íú|žëäŚÒùùűűśśóçâG::•țńÿ{țzÿ{ÿz ”àÖ{í{z{í{țz{z{·íćŚÍęùűśśòâG::•țńÿ{țzÿ{ÿz {”à{í{z{í{țz{z{čïæŰËúęùűśśńG::•țńęxÿyÿxÿìàxxíyxxìúxșïçÚÌûúęùűśśđ::•țńűwÿxôw xșńèÛĐüûúúțùűśśï:•țńövuőv €șńëȚŚüüûûúțùűśöî•țńúv ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțń óőùùűűőì€ÂÂûvÿÇŐęÔÿÓÔÓÔÊŻüȘ°œșžŽ°ź«Ș©«ŻÆÖȚíűôëÂÂüvțè%ùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîëśęvęèÿùúűÌëűțùűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘśțvüçùęűÿùűùÀűțùÿűùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇśÿvûæùűűùùęűÀțùűțùÿöńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖśvúæúțűùűùűűÀűùüÀżŸŒč¶”äáŽäçæșèéêćäçÚÚùæùűűùùűțùÀęùűùùśśóîèëë攎·ŸâîííììîÜÜùćúűűùűùțűÀűęùűùùűűùțűùÀűùęűùűśśććùć ùűùűùűùűűÀűűûÀżęÀùűÀüűùűùűűććùäùüűùűùÀűùűùùűűùśűűùùűűÀűùțűùűùùűääùäùűùûűÀöűęùÀűűùțűùűűùääùäÿùęűÿùűÀűùöÀùűÀûűùűùűääùăûűùűűÀțűùűűùüűùűűÀűűùùüűùăăùăűùùűùűűùűżùűùùűùűűùțűùűűżùûűùűùăăùâűűÀűùöÀùűÀűűùțűùűűùââùâùűùÀűùțűùűùûűùÀęűțùțűÿâùâűűÀùùűùűùțűùüűÀśűÿáùâűùúűÀőűùűűÀùüűùțűÿâùáÿűùűűôÀżțÀțűÀùűùűááùáűśțűÀțűùöűÀțűÀüűùűűśűááùáűśțűÀòűÀțűÀùűöűááùáűśțűÆëùűùüűÆțűÀűùûűöűááùáűőțűìĆëôűëÆűűÆùűőűááùáűôęűëĆòżÀÆëùűôűááùáùôìűùśűôűááùáűóőăűőóűááùáűßóűááùáűöáóőűááúáűűăùűùùűáúÛáÓ  úìÿòúëÿęòúêÿűó±ăÿđóáÿßőàÿÇößÿĄśȚÿrűĘÿGùÜÿ"ùÛÿ úÚÿûÚÿțüÙÿęęÚÙÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿû!Ûÿ*û2@AABCEá@2%!$%#--$!(%%&&$)%$#&&%%%( ‹ęźïœ»ž”ŻÍŻÈńì‹üźÿŒáóÚ ÙŚÔËșČčèïïúțí‹ûźșÙòÏ ÎÌÆč­čžïïúțí‹êź ­ÍÊÁł”ș¶”úțíțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠÌËĆČ°șș”úțíèˆ ÆÈÁ±Żœșč”úțíț„…ț„ț…„…ț„û…ę„ šÄż­ŹĂŸșž·úțíü‡áûá‡țû‚ûü “Àž©šÉÄżș·žúțíüá~áțû~ûü œł€ąĐÊĆÀ»··ûțíü|ûü|üû|üûț|ŒČą›ÓŃËÆÁ»·°šuțíÿ{țz%û{zz{z{{û{z{z{ûzz{z{œ±ą–ÖÓÒÌÇÁŒ¶šuțíÿ{țz%à{zzàz{{û{z{z{ûzz{z{œŽ€”ÜŚÓÓÍÇÂœ”uțíęxyßûß~țxÿyśx‘żŽ€—âĘŰÓÓÎÈĂŸłuțíűwÿxôwx‘À”§žéăȚÙÔÓÏÉÄżČuțíövuővzÁ·©šìêäßÚÔÓĐÊĆżłuțíúv‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ûvÿ­§Š§țŠț§›{üuy€~|uromkkmq‹Ÿ«ŒÆœČ­­üvț§ÎÆúÇž‹žüÇĆÂș±Šœ–’ˆo’s•”’™Ź·łŸęvęŠÍùÆ’·ÆÇęÆĆÂŒłȘ ˜–n‹””n˜——•‘˜ĄŸțvü„ÍțÆÿĆțƄúÆÄĂŸ”­ąš–iț•k—™››š˜…Äÿvû€ÌÄęĆÄĆƄúĆĂŸž°šŠąnțŸoŸĄąŁ„§’ÄvúŁËùÄ„ÄĆü„ƒ‚€~{z°­xŻłČ€ČłŽ±°Č––ùą%ÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™™ù ÉùÄțĂÄțĂÿÂûÄúĂțÂÿ ùŸ ÈÂÂĂÂĂÂĂ„ĂĂû„ƒę„ÿ„ĂĂțÂĂțÂĂ  ùŸÇüÂÁ„ÂÁûÂÀÂțÁÿ„ÁțÂÁÂÂÁŸŸùžÇüÁÂÁÁ„ÁÁÂÂęÁÂțÁÂÁÁ„ÁÁÂÁÂüÁÿùÄüÁÀÁÁ„ÀÁö„ÀÁ„ÁÁțÀțÁÀÁùœÄùÀ„òÀ„ÀÁùÀÿ›ù› ĂÀżÀÀżżÀżƒûÀżÀÀżÀÀțż ƒÀÀżÀżÀÀżżÀ››ùšĂżŸûż„Ÿżö„ÿż„żżŸúżÿšùšÁżŸŸüż„żżŸżŸțżŸżżŸżŸż„żțŸÿżÿŸÿżÿšù˜ÁțŸœęŸ„ôŸœŸ„ŸŸœüŸœŸ˜˜ù˜żœŸțœŸœœ„țœÿŸœŸüœŸœŸ„œŸœŸüœŸ˜˜ù—ż»țœô„ƒț„ÿœŒ„üœŒœœŒŒ——ù— Ÿ»œœŒ„œŒŒœŒœœŒțœęŒ„țŒ„ŒŒœŒŒœęŒÿ—ù—œșțŒ„òŒ„țŒ„ęŒœțŒșŒ——ù—œč»Œ»ŠŻûŒÿ»Œ»»țŒŠŒ»Œ„Œę»Œ»»č»——ù—Œ¶ț»Ż‰ŻŒę»Œț»Œț» ŻŠ»»Š»»Œ»Œț»¶»——ù—Œ”껯‰òƒ„ŠŻ»șû»”»——ù—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș——ù—»Ž”șș»ùș»ș»üșț»üș»șș¶łș——ù—șßČș——ù—ș¶áČ”ș——ú—żÁàĆż—úۗÓ%%!$%'--$))$&+&))"&!!!&!#' pę™ęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìpü™ÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïpû™Öîńé çàÔÇȚÙđđúțïpê™ ­æäÚÌŚßŚÖúțïțoÿpopoppoțpopęoęp oçäȚÍĐßȚÖúțïèm ȚâĘËÌàßĘŐúțïțijțițjijțiûjęi čßÖÇÈâàßÜŚúțïüfmÛúÛmțfúffgffúüf ÛÓÁÂćăàßÛŰúțïüdÛdcdÛțdúddcddúüd šŰÎŒ»èæăáßÛÖûțïa``aaúüaüú`üúÿa`™ŰÍ»”êéæäáßÚĐÄ wțïÿ_ț^%ú_^^_^__ú_^_^_ú^^_^_šŰÍ»źëêéçäáßŰÄ wțïÿ_ț^%Ù_^^Ù^__ú_^_^_ú^^_^_›ÙÏœŹîìêêçäâàÖ wțïę\]eÙúÙdț\ÿ]ś\œÜĐż°ńïìêêçćâàÔwțïű[ÿ\ô[\›ȚÒÀŽôòïíêêèćăàÓwțïöZYőZd›ȚÔĂœöőòđíêêèæăàÒwțïúZ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ûZÿŁ Œččșșčșșč诏ü‰Ÿœ˜‘Œ‰‡„„†Š€žĆŚăÜÏ””üZțĆéùćÖȘÖüćăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖĐàęZęÄèäüćäć±ÖûćâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸàțZüĂ çćääćäćääŁćäćțä ćăâÛÓÇŒ¶Ż‚ț­„°Ž””ŽŽĄăÿZûÂçùäŁțä ćäćäâáÜŐÌĂÂœ‰țș‰șŒœżÁÄźăZúÁçțäÿăÿäăŁääüŁąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłłùÀçäăääățäŁăäțăäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ””ùżçęățäăŁùăáäăăäăăŁăăäăăäăâăăżżùżæùăŁăăûŁąęŁÿăŁțăäûăÿŸùœćăâăâțăâŁțăâęăÿâÿăâăăŁăâüăÿâăœœùœ ćâăâăăââăŁâăăüâÿățâăâŁăùâăœœùŒäüâăââŁăăöŁâăŁăââăûâÿŒù»äûâáâŁęâáâáù⣜âÿ»ùșăùâąáâáâáęâÿáęâąââááâáțâá»»ùșăáââáțâáŁâáöŁâáŁțáâáâțáâččùșâáâûá ŁááâááâááâęáâᣜáÿčùčáàüáÿàŁțáàöáŁęáàüáÿžùžâáààüá ŁááààááààáțàÿáàŁęáàáàáàážžù·áßàááôŁąțŁțàŁțàáàțáßážžù·âȚțàŁààáęàáúàŁàáàŁûàáàȚà··ù·áĘțàŁóàߣțàŁțàßàßààĘà··ù·àÛțàȘÒààßàßàßęàßààȘßààŁùàÛß··ù·ßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßüàßàÚß··ù·ßÚààßßÒ©òąŁȘÒßààßàßàßÙà··ù·ßŰàßàüßàőßàțß àßßààßßÙß··ù·ߌÚțßàńßàúßàßÚŚß··ù·ßßÖß··ù·ßÛáÖÚß··ú·ââàćâ·úÛ·Ó%!$%#,,#)(+&**)('#'!& ‹ęźțńđńđńńđđńđđńđńđńïîíéöŐàńí‹üźÿđûòú űśńçćóóòò””úțń‹ûźïđù űóìâöóòò””úțń‹êź Ăśöđçńśńń””úțńțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ Šśôòçëśśń””úțńèˆ đőïăçśśöï””úțńț„…ț„ț…„…ț„û…ę„Ńńëàâțśőń”úțńü‡áûá‡țû‚ûü»îèÜĘűțśôđúțńüá~áțû~ûüžëćÙŚùűțśôïûțńü|ûü|üû|üûț|žëäŚÒùùűűśśóçâG::•țńÿ{țzû{zz{z{{û{z{z{ûzz{z{·íćŚÍęùűśśòâG::•țńÿ{țzà{zzàz{{û{z{z{ûzz{z{čïæŰËúęùűśśńG::•țńęxyßûß~țxÿyśxșïçÚÌûúęùűśśđ::•țńűwÿxôw xșńèÛĐüûúúțùűśśï:•țńövuőv €șńëȚŚüüûûúțùűśöî•țńúv ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțń óőùùűűőì€ÂÂûvÿÇŐęÔÿÓÔÓÔÊŻüȘ°œșžŽ°ź«Ș©«ŻÆÖȚíűôëÂÂüvțè%ùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîëśęvęèÿùúűÌëűțùűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘśțvüçùęűÿùűùÀűțùÿűùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇśÿvûæùűűùùęűÀțùűțùÿöńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖśvúæúțűùűùűűÀűùüÀżŸŒč¶”äáŽäçæșèéêćäçÚÚùæùűűùùűțùÀęùűùùśśóîèëë攎·ŸâîííììîÜÜùćúűűùűùțűÀűęùűùùűűùțűùÀűùęűùűśśććùć ùűùűùűùűűÀűűûÀżęÀùűÀüűùűùűűććùäùüűùűùÀűùűùùűűùśűűùùűűÀűùțűùűùùűääùäùűùûűÀöűęùÀűűùțűùűűùääùäÿùęűÿùűÀűùöÀùűÀûűùűùűääùăûűùűűÀțűùűűùüűùűűÀűűùùüűùăăùăűùùűùűűùűżùűùùűùűűùțűùűűżùûűùűùăăùâűűÀűùöÀùűÀűűùțűùűűùââùâùűùÀűùțűùűùûűùÀęűțùțűÿâùâűűÀùùűùűùțűùüűÀśűÿáùâűùúűÀőűùűűÀùüűùțűÿâùáÿűùűűôÀżțÀțűÀùűùűááùáűśțűÀțűùöűÀțűÀüűùűűśűááùáűśțűÀòűÀțűÀùűöűááùáűśțűÆëùűùüűÆțűÀűùûűöűááùáűőțűìĆëôűëÆűűÆùűőűááùáűôęűëĆòżÀÆëùűôűááùáùôìűùśűôűááùáűóőăűőóűááùáűßóűááùáűöáóőűááúáűűăùűùùűáúÛáÓ  úìÿòúëÿęòúêÿűó±ăÿđóáÿßőàÿÇößÿĄśȚÿrűĘÿGùÜÿ"ùÛÿ úÚÿûÚÿțüÙÿęęÚÙÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿû!Ûÿ*û2@AABCEá@2%$ !--%!(%%&&$)%$#&&%%%( ‹ęźïœ»ž”ŻÍŻÈńì‹üźÿŒáóÚ ÙŚÔËșČčèïïúțí‹ûźșÙòÏ ÎÌÆč­čžïïúțí‹êź ­ÍÊÁł”ș¶”úțíțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠÌËĆČ°șș”úțíńˆńùˆ ÆÈÁ±Żœșč”úțíț„…ț„ț…„…ț„…đę…ę„ šÄż­ŹĂŸșž·úț휁țđđù “Àž©šÉÄżș·žúțíú~ïțîïù œł€ąĐÊĆÀ»··ûțíś|ïț|ï|ïù|ŒČą›ÓŃËÆÁ»·°šuțíÿ{țzÿ{ÿz{ïț{ézïz{țz{z{œ±ą–ÖÓÒÌÇÁŒ¶šuțíÿ{țzÿ{ÿz{țïí©zïz{țz{z{œŽ€”ÜŚÓÓÍÇÂœ”uțíęxÿyęxïxxyyxïùx‘żŽ€—âĘŰÓÓÎÈĂŸłuțíűwxïôwx‘À”§žéăȚÙÔÓÏÉÄżČuțíövuővzÁ·©šìêäßÚÔÓĐÊĆżłuțíúv‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ûvÿ­§Š§țŠț§›{üuy€~|uromkkmq‹Ÿ«ŒÆœČ­­üvț§ÎÆúÇž‹žüÇĆÂș±Šœ–’ˆo’s•”’™Ź·łŸęvęŠÍùÆ’·ÆÇęÆĆÂŒłȘ ˜–n‹””n˜——•‘˜ĄŸțvü„ÍțÆÿĆțƄúÆÄĂŸ”­ąš–iț•k—™››š˜…Äÿvû€ÌÄęĆÄĆƄúĆĂŸž°šŠąnțŸoŸĄąŁ„§’ÄvúŁËùÄ„ÄĆü„ƒ‚€~{z°­xŻłČ€ČłŽ±°Č––ùą%ÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™™ù ÉùÄțĂÄțĂÿÂûÄúĂțÂÿ ùŸ ÈÂÂĂÂĂÂĂ„ĂĂû„ƒę„ÿ„ĂĂțÂĂțÂĂ  ùŸÇüÂÁ„ÂÁûÂÀÂțÁÿ„ÁțÂÁÂÂÁŸŸùžÇüÁÂÁÁ„ÁÁÂÂęÁÂțÁÂÁÁ„ÁÁÂÁÂüÁÿùÄüÁÀÁÁ„ÀÁö„ÀÁ„ÁÁțÀțÁÀÁùœÄùÀ„òÀ„ÀÁùÀÿ›ù› ĂÀżÀÀżżÀżƒûÀżÀÀżÀÀțż ƒÀÀżÀżÀÀżżÀ››ùšĂżŸûż„Ÿżö„ÿż„żżŸúżÿšùšÁżŸŸüż„żżŸżŸțżŸżżŸżŸż„żțŸÿżÿŸÿżÿšù˜ÁțŸœęŸ„ôŸœŸ„ŸŸœüŸœŸ˜˜ù˜żœŸțœŸœœ„țœÿŸœŸüœŸœŸ„œŸœŸüœŸ˜˜ù—ż»țœô„ƒț„ÿœŒ„üœŒœœŒŒ——ù— Ÿ»œœŒ„œŒŒœŒœœŒțœęŒ„țŒ„ŒŒœŒŒœęŒÿ—ù—œșțŒ„òŒ„țŒ„ęŒœțŒșŒ——ù—œč»Œ»ŠŻûŒÿ»Œ»»țŒŠŒ»Œ„Œę»Œ»»č»——ù—Œ¶ț»Ż‰ŻŒę»Œț»Œț» ŻŠ»»Š»»Œ»Œț»¶»——ù—Œ”껯‰òƒ„ŠŻ»șû»”»——ù—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș——ù—»Ž”șș»ùș»ș»üșț»üș»șș¶łș——ù—șßČș——ù—ș¶áČ”ș——ú—żÁàĆż—úۗÓ%%$ &--%))$&+&))"&!!!&!#' pę™ęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìpü™ÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïpû™Öîńé çàÔÇȚÙđđúțïpê™ ­æäÚÌŚßŚÖúțïțoÿpopoppoțpopęoęp oçäȚÍĐßȚÖúțïńmíùm ȚâĘËÌàßĘŐúțïțijțițjijțijíęjęi čßÖÇÈâàßÜŚúțïśfțìê›fíùf ÛÓÁÂćăàßÛŰúțïúdcddìțdëdìùd šŰÎŒ»èæăáßÛÖûțïa``úaìa`aì`ìúa`™ŰÍ»”êéæäáßÚĐÄ wțïÿ_ț^ÿ_ÿ^_ëț_ć^ì^_ț^_^_šŰÍ»źëêéçäáßŰÄ wțïÿ_ț^ÿ_ÿ^ _ëììé–^ì^_ț^_^_›ÙÏœŹîìêêçäâàÖ wțïę\ÿ]ę\ë\\]]\ëù\œÜĐż°ńïìêêçćâàÔwțïű[\ëô[\›ȚÒÀŽôòïíêêèćăàÓwțïöZYőZd›ȚÔĂœöőòđíêêèæăàÒwțïúZ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ûZÿŁ Œččșșčșșč诏ü‰Ÿœ˜‘Œ‰‡„„†Š€žĆŚăÜÏ””üZțĆéùćÖȘÖüćăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖĐàęZęÄèäüćäć±ÖûćâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸàțZüĂ çćääćäćääŁćäćțä ćăâÛÓÇŒ¶Ż‚ț­„°Ž””ŽŽĄăÿZûÂçùäŁțä ćäćäâáÜŐÌĂÂœ‰țș‰șŒœżÁÄźăZúÁçțäÿăÿäăŁääüŁąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłłùÀçäăääățäŁăäțăäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ””ùżçęățäăŁùăáäăăäăăŁăăäăăäăâăăżżùżæùăŁăăûŁąęŁÿăŁțăäûăÿŸùœćăâăâțăâŁțăâęăÿâÿăâăăŁăâüăÿâăœœùœ ćâăâăăââăŁâăăüâÿățâăâŁăùâăœœùŒäüâăââŁăăöŁâăŁăââăûâÿŒù»äûâáâŁęâáâáù⣜âÿ»ùșăùâąáâáâáęâÿáęâąââááâáțâá»»ùșăáââáțâáŁâáöŁâáŁțáâáâțáâččùșâáâûá ŁááâááâááâęáâᣜáÿčùčáàüáÿàŁțáàöáŁęáàüáÿžùžâáààüá ŁááààááààáțàÿáàŁęáàáàáàážžù·áßàááôŁąțŁțàŁțàáàțáßážžù·âȚțàŁààáęàáúàŁàáàŁûàáàȚà··ù·áĘțàŁóàߣțàŁțàßàßààĘà··ù·àÛțàȘÒààßàßàßęàßààȘßààŁùàÛß··ù·ßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßüàßàÚß··ù·ßÚààßßÒ©òąŁȘÒßààßàßàßÙà··ù·ßŰàßàüßàőßàțß àßßààßßÙß··ù·ߌÚțßàńßàúßàßÚŚß··ù·ßßÖß··ù·ßÛáÖÚß··ú·ââàćâ·úÛ·Ó%$ !,,$)(+&**)('#'!& ‹ęźțńđńđńńđđńđđńđńđńïîíéöŐàńí‹üźÿđûòú űśńçćóóòò””úțń‹ûźïđù űóìâöóòò””úțń‹êź Ăśöđçńśńń””úțńțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ Šśôòçëśśń””úțńńˆńùˆ đőïăçśśöï””úțńț„…ț„ț…„…ț„…đę…ę„Ńńëàâțśőń”úțńśțđđù»îèÜĘűțśôđúțńú~ïțîïùžëćÙŚùűțśôïûțńś|ïț|ï|ïù|žëäŚÒùùűűśśóçâG::•țńÿ{țzÿ{ÿz{ïț{ézïz{țz{z{·íćŚÍęùűśśòâG::•țńÿ{țzÿ{ÿz{țïí©zïz{țz{z{čïæŰËúęùűśśńG::•țńęxÿyęxïxxyyxïùxșïçÚÌûúęùűśśđ::•țńűwxïôw xșńèÛĐüûúúțùűśśï:•țńövuőv €șńëȚŚüüûûúțùűśöî•țńúv ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțń óőùùűűőì€ÂÂûvÿÇŐęÔÿÓÔÓÔÊŻüȘ°œșžŽ°ź«Ș©«ŻÆÖȚíűôëÂÂüvțè%ùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîëśęvęèÿùúűÌëűțùűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘśțvüçùęűÿùűùÀűțùÿűùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇśÿvûæùűűùùęűÀțùűțùÿöńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖśvúæúțűùűùűűÀűùüÀżŸŒč¶”äáŽäçæșèéêćäçÚÚùæùűűùùűțùÀęùűùùśśóîèëë攎·ŸâîííììîÜÜùćúűűùűùțűÀűęùűùùűűùțűùÀűùęűùűśśććùć ùűùűùűùűűÀűűûÀżęÀùűÀüűùűùűűććùäùüűùűùÀűùűùùűűùśűűùùűűÀűùțűùűùùűääùäùűùûűÀöűęùÀűűùțűùűűùääùäÿùęűÿùűÀűùöÀùűÀûűùűùűääùăûűùűűÀțűùűűùüűùűűÀűűùùüűùăăùăűùùűùűűùűżùűùùűùűűùțűùűűżùûűùűùăăùâűűÀűùöÀùűÀűűùțűùűűùââùâùűùÀűùțűùűùûűùÀęűțùțűÿâùâűűÀùùűùűùțűùüűÀśűÿáùâűùúűÀőűùűűÀùüűùțűÿâùáÿűùűűôÀżțÀțűÀùűùűááùáűśțűÀțűùöűÀțűÀüűùűűśűááùáűśțűÀòűÀțűÀùűöűááùáűśțűÆëùűùüűÆțűÀűùûűöűááùáűőțűìĆëôűëÆűűÆùűőűááùáűôęűëĆòżÀÆëùűôűááùáùôìűùśűôűááùáűóőăűőóűááùáűßóűááùáűöáóőűááúáűűăùűùùűáúÛáÓÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆˆˆˆˆ„…„„„|||||zzz{{zzz{{xxyyxwwwwwmmmmmijiiifffffddddd`aaaa^^^__^^^__\\]]\[[[[[ˆˆˆˆˆ„…„„„|||||zzz{{zzz{{xxyyxwwwwwÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿˆˆˆˆˆ„…„„„|||||zzz{{zzz{{xxyyxwwwwwmmmmmijiiifffffddddd`aaaa^^^__^^^__\\]]\[[[[[ˆˆˆˆˆ„…„„„|||||zzz{{zzz{{xxyyxwwwwww™w™ÿÌÿÌ"wÌîÿwÿÌÿÌ"ÿwȘ™wĘDÿÿwȘ™ÿ"f»w™"ÿÿ"f»ÿwȘˆw™"ÿÿwȘˆÿÌÿÌw™"ÿÿÌÿÌÿ"ÿ"ÿ"ÿ"ńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿńÿ  úìÿòúëÿęòúêÿűó±ăÿđóáÿßőàÿÇößÿĄśȚÿrűĘÿGùÜÿ"ùÛÿ úÚÿûÚÿțüÙÿęęÚÙÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿû!Ûÿ*û2@AABCEá@2%%$%,,.)!)#""!#)!(&"))&%% ! ~ę€ïœ»ž”ŻÍŻÈńì~ü€ÿŒáóÚ ÙŚÔËșČčèïïúțí~û€șÙòÏ ÎÌÆč­čžïïúțí~ê€ ŠÍÊÁł”ș¶”úțíț}ÿ~}~}~~}ț~}~ę}ę~ }ÌËĆČ°șș”úțíï{ïû{ ĆÈÄ»Żœșč”úțíțwxțwțxwxțwțxïxxęw „ÄÀ”ŹĂŸșž·úțíętàtàtîàîîàtîût ŽÀș°šÉÄżș·žúțíęrààrîύîràrîûr ‹œ¶ŹąĐÊĆÀ»··ûțíonnoo‹ă‹ooíoníoníoíüonŠŒ”«›ÓŃËÆÁ»·°šuțíonnoo‹í‹ooíoníoníoíüon‹œŽ«–ÖÓÒÌÇÁŒ¶šuțíÿmÿlˆßŸíˆmímmímlílíțlmlm‹œ·­”ÜŚÓÓÍÇÂœ”uțíęjȚ‡j‡Țjíjjíkjíjíûj‹żžŹ—âĘŰÓÓÎÈĂŸłuțíűiÿjôij‹ÀžŻžéăȚÙÔÓÏÉÄżČuțíöhgőhm‹Áč°šìêäßÚÔÓĐÊĆżłuțíúh…›–”’ŽőŒ‹ÀșŻŽáÜÙÓŃÏÏÒŃËÆżČv­­ûhÿȘ€Ł€țŁț€țŁ€țŁŹÁ»±–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­ühț§ÎÆùÇÆûÇĆÂșžvœ–’’“•”’™Ź·łŸęhęŠÍöÆÇęÆĆÂŒ‚† ˜–““””–˜——•‘˜ĄŸțhü„ÍțÆÿĆöÆÄĂžjŁąš–”ț•ÿ—™››š˜…Äÿhû€ÌÄęĆÄśĆĂ™z°šŠą üŸĄąŁ„§’ÄhúŁËśÄĆŸęÄ ĂÂ~œ¶”«­°ŻłțČłŽ±°Č––ùąÊÄĂÄĂÄÄĂĂÄł‡ÄĂĂıt””¶t{€Č·žțčž·žž™™ù ÉúĂžŒq’ŸÄțĂ‘’țĂ­q’žüĂțÂÿ ùŸ ÈÂÂĂÂĂ·’qŒłĂĂęŸuČÂÂĂš|q‘·ÂĂțÂĂ  ùŸÇțÂœ—q‡ČÂÂÁüÂąÂțÁț Áą|qŒČÂÁŸŸùžÇțÁ|qŒüÁÿÂțÁąțÁÂüÁČvqĄęÁÿùÄțÁ¶‘qvœÁÀÁÀÁÀÀ±q»ÀÁÀÁÀÁÀ¶‘q‹°țÁÀÁùœÄüÀ»–qv üÀÿ‘ûÀ»‘qŒ°úÀÿ›ù›%ĂÀżÀÀżżÀș‘q|°ÀÀ»v°ÀżÀÀż q†°ÀżÀżÀÀżżÀ››ùšĂżŸúżŽ‹ żż ûż‹ȘțżŸúżÿšùšÁżŸŸüżŸżżŸżŸ„żŸżżŸżŸżŸżțŸÿżÿŸÿżÿšù˜ÁțŸœűŸ©€úŸœęŸœüŸœŸ˜˜ù˜żœŸțœŸœœŸțœŸčœŸüœŸœŸœœŸœŸüœŸ˜˜ù—ż»ëœŒûœŒœœŒŒ——ù— Ÿ»œœŒŒœŒŒœŒœœŒțœęŒœțŒœŒŒœŒŒœęŒÿ—ù—œșćŒœțŒșŒ——ù—œč»Œ»ùŒÿ»Œ»»üŒ»țŒę»Œ»»č»——ù—Œ¶ț»Œ»ŒŒę»Œț»Œś»Œ»Œț»¶»——ù—Œ”è»șû»”»——ù—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș——ù—»Ž”șș»ùș»ș»üșț»üș»șș¶łș——ù—șßČș——ù—ș¶áČ”ș——ú—żÁàĆż—úۗÓ%%%$%,,.))*&**(%((%%("" %$ ~ę€ęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńì~ü€ÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțï~û€Öîńé çàÔÇȚÙđđúțï~ê€ ŽæäÚÌŚßŚÖúțïț}ÿ~}~}~~}ț~}~ę}ę~ }çäȚÍĐßȚÖúțïï{ïû{ ßâßÔÌàßĘŐúțïțwxțwțxwxțwțxïxxęw œßŰÎÈâàßÜŚúțïętàtàtîàîîàtîût ŁÛÔÈÂćăàßÛŰúțïęrààrîύîràrîûr  ŰĐÄ»èæăáßÛÖûțïonnoo‹ă‹ooíoníoníoíüonŸŰÏĂ”êéæäáßÚĐÄ wțïonnoo‹í‹ooíoníoníoíüon ŰÏÄźëêéçäáßŰÄ wțïÿmÿlˆßŸíˆmímmímlílíțlmlmĄÙŃĆŹîìêêçäâàÖ wțïęjȚ‡j‡ȚjíjjíkjíjíûjąÜÒÇ°ńïìêêçćâàÔwțïűiÿjôijĄȚÔÉŽôòïíêêèćăàÓwțïöhgőhpĄȚÖÊœöőòđíêêèæăàÒwțïúh ±źŹȘ„Ł€ŁŁę€Ł€Ł€ĄȚŚÊÇìèćăâăćêéæäȚÏz””ûhÿŠ ÀœœŸŸœŸŸœœțŸțœŸÆßŚÌ°§ŁĄ Ÿą„«žĆŚăÜÏ””ühțĆéńćăàŰž‹¶źȘšš©Ș­źŻ­ČÈÖĐàęhęÄèäüćäććäûćâàښžșČźŹŹ­ŻŻČł±°źŽŸàțhüĂ çćääćäćääććäćțäćăâŐŸŒ¶Żę­ÿ°Ž””ŽŽĄăÿhûÂçőä ćäćäâ᳑ÌĂÂœûșŒœżÁÄźăhúÁçțäÿăÿäățäȚääăäâᕶÔÒÈÉÍÍęÏŃÒÎÌÏłłùÀçäăääăęäŃ žăăäăăωÓÓՊ’ÀĐŐŰŚŚŰŚŐÖŚ””ùżçęăț䌊‡ŹĘüă«Źăăäʙ‡ŹŚäăăäăâăăżżùżæü㌏‡ŠŃûăʌŃüăē‡ŹŰûăÿŸùœćăâăÜȇ ĐęăâțăŸ˜âăăâăăâăŸ“‡ŠŃăââăœœùœ ćâăⓇ„âăââăăę♟ățâăâăăâЍ‡ŸțâăœœùŒäțâÖ«‡žâăăęâЇÜââăââă⌫‡ŠĐüâÿŒù»äüâܱ‡Ÿțâáâ««ûâÜ«‡„Đúâÿ»ùșăúâÜ«‡“Ïâá܍Đâááâ⟇ŸĐâááâáțâá»»ùșăáââáțâÿáÖ„œá៙âáâáâá„Éęáâáâțáâččùșâáâűáâáá™ĂáâęáâőáÿčùčáàüáțàțáàəóáàüáÿžùžâáààùáÿàÛáààáțàÿáàüáàáàáàážžù·áßàááààáüàáààááààáùàáàțáßážžù·âȚûàáęàáűàáùàáàȚà··ù·áĘïàßùàßàßààĘà··ù·àÛțàßțàßàßàßęàßțàßöàÛß··ù·ßÚàßàßàßàßßàßàßßàßßààßàęßüàßàÚß··ù·ßÚààßßàßàßààßßàßßęàûßÿàßàßàßÙà··ù·ßŰàßàüßàőßàțß àßßààßßÙß··ù·ߌÚțßàńßàúßàßÚŚß··ù·ßßÖß··ù·ßÛáÖÚß··ú·ââàćâ·úÛ·Ó%%$%,+-()'+"*(+(()) ("&!    ~ę€țńđńđńńđđńđđńđńđńïîíéöŐàńí~ü€ÿđûòú űśńçćóóòò””úțń~û€ïđù űóìâöóòò””úțń~ê€ Œśöđçńśńń””úțńț}ÿ~}~}~~}ț~}~ę}ę~ }śôòçëśśń””úțńï{ïû{ đőđêçśśöï””úțńțwxțwțxwxțwțxïxxęwÎńìćâțśőń”úțńętàtàtîàîîàtîût”îéàĘűțśôđúțńęrààrîύîràrîûrČëćÜŚùűțśôïûțńonnoo‹ă‹ooíoníoníoíüonČëćÜÒùùűűśśóçâG::•țńonnoo‹í‹ooíoníoníoíüon±íæÜÍęùűśśòâG::•țńÿmÿlˆßŸíˆmímmímlílíțlmlmłïçĘËúęùűśśńG::•țńęjȚ‡j‡ȚjíjjíkjíjíûjŽïèßÌûúęùűśśđ::•țńűiÿjôi jŽńéàĐüûúúțùűśśï:•țńöhgőh sŽńìâŚüüûûúțùűśöî•țńúh čÁÀŸŒž”¶”¶¶ę”ÿ¶”ŽòëâĘőóțń óőùùűűőì€ÂÂûhÿÄŃęĐÿÏĐÏûĐÿÏÛôìäÏÇÄțÁ ĂĆËÖȚíűôëÂÂühțè%ùűűùùűűùűűùùűűùùűűôíŃŠÒËÈÆÆÈÈËÌÎÎÓăîëśęhęèÿùśűțùűùűőï±·ŐÍËÈÉÉÊËÎÏĐÏÏŐĘśțhüçùęűÿùűùùűțùÿűùśőê•ÖŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśÿhûæùűűùùęűęùűțùÿöÇŠăÜÛŚțÔ ÓŐŐŚŚÙÛßÖśhúæúțű!ùűùűűùűùòűùűùűöȘËëèßáääçæçèéêćäçÚÚùæùűűùùűęùæŽÍùűùùśäžèè럹ŰçëíîîííììîÜÜùćúűűùűùűűìș›ÁóùùűùùÀÀùűűßź›Àìęűùűśśććùć ùűùűùűìÀ›șćűùùțűò ćűűùùűÚ§›Àìűùűùűűććùäùțű!òƛŽæűűùűùùűűÓ­űűùùűűùűÓ§›șæűùùűääùäùűùű§›șśűźÓűűęùțű æĄ›ÓùűűùääùäÿùÿűìÀ›ĄÍűűùęűć›òűùűűùűűìÀ›șćűùűùűääùăûű óƛĄÓűűùűűÁÀęűùűòÀ›șæùüűùăăùăűùùűùűűùòÀ›§æùűóĄćùțűùӛŽæûűùűùăăùâűűùìșÓűűÓźęűùűșßțűùțűùűűùââùâùűùűűùțűźÙùûűÿùęűțùțűÿâùâśűÿùűùßźțűùńűÿáùâűùőűòúűùțűùüűùțűÿâùáÿűùâűùűááùáűśúűùìűùűűśűááùáűśáűöűááùáűśôűùöűùûűöűááùáűőțűùćűőűááùáűôáűôűááùáùôìűùśűôűááùáűóőăűőóűááùáűßóűááùáűöáóőűááúáűűăùűùùűáúÛáÓ   úìÿòúëÿęòúêÿűó±ăÿđóáÿßőàÿÇößÿĄśȚÿrűĘÿGùÜÿ"ùÛÿ úÚÿûÚÿțüÚÚÿęęÚÙÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿÿ8ÇŰÿ8ÈŚÿÇÖÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿ*çÿï@22@AABCEí@2ï%!!$-'!!'#""!"+'#+!((&"($&('ŁęÁž”ŻÍŻÈńìŁüÁÿŒáóÚ ÙŚÔËșČčèïïúțíŁûÁșÙòÏ ÎÌÆč­čžïïúțíŁêÁ čÍÊÁł”ș¶”úțíțąÿŁąŁąŁŁąțŁąŁęąęŁ ąÌËĆČ°șș”úțíö òô  ÆÈÁ±Żœșč”úțíțžțțžžțûžę šÄż­ŹĂŸșž·úțíûšęńšńšęń­úš “Àž©šÉÄżș·žúțíú˜ —˜ń˜ń˜ń˜˜—ńú˜ œł€ąĐÊĆÀ»··ûțíù•đ©•đ•òț•òú•ŒČą›ÓŃËÆÁ»·°šuțíÿ•ț”ÿ• ©đ•”đ•đ•”•đ•ț”•”•œ±ą–ÖÓÒÌÇÁŒ¶šuțíę’ÿ“§đ§’’đ’ęđ§ú’œŽ€”ÜŚÓÓÍÇÂœ”uțíû‘ęđ’đ‘đś‘’‘żŽ€—âĘŰÓÓÎÈĂŸłuțíöđś’‘À”§žéăȚÙÔÓÏÉÄżČuțíöő’Á·©šìêäßÚÔÓĐÊĆżłuțíú‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ù­§Š§țŠț§țŠ§țŠźÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­üț§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·łŸęęŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸțü„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…Äÿû€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÄțÌüŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č––ęÌęąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™™üÌț ÉőĂÄțĂÿÂóĂțÂÿ ûÌÿŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ  úÌŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸŸéÌÊĂÂțÁÂüÁÂÁÂüÁÿÿÌËëđ ÓĂÀÁÀÁÀÁÀÁÁțÀțÁÀÁÿËéđșźûÀÁùÀÿ›ÿÊÙŐÚŚÚÙÙțŰÿŚțÖÿŐęÔÚÙÙəąÀężÿÀ żÀżÀÀżżÀ››ÿÈٔíÙ”ÙșĄúżŸúżÿšÿÇÿŐášńŹ ±áŐŐǙĄŸżŸżŸżțŸÿżÿŸÿżÿšÿÆÿŰߎń »ßŃŃƙĄŸŸœęŸœüŸœŸ˜˜ÿĆÿŚĘŽüĐäțăäûĐÂĘĐĐƙĄœŸœŸœœŸœŸüœŸ˜˜ÿÄÿÖߎÙęÚățâăûÚÇßÏÏÙĄțœŒûœŒœœŒŒ——ÿĂÿŐàŽüÉęÏÓûÉżàÎÎÙĄœțŒœŒŒœŒŒœęŒÿ—ÿÁÿÔß”üÛćęäûÛÉßÍÍÁ™ĄűŒœțŒșŒ——ÿÀÿÓĘ·üÔĘțÜĘûÔ ÇĘÌÌÀ™ĄŒŒ»țŒę»Œ»»č»——ÿŸÿÓȚ·ÔŐŐÙùÚęÖÈȚËËż™ ú»Œ»Œț»¶»——ÿŸÿÒĘžÄÄÆÆŐęÍŃŐüÆÀĘÊÊŸ™ û»șû»”»——ÿŒÿŃĘžÔțŐÖęȚĘŚüÖËĘÉÉŒ™ șșț»țșü»Žș——ÿ»ÿĐÜčüÏĐțÓŃûĐÇÜÈÈ»™ șț»üș»șș¶łș——ÿșÿÏÜčûÍÏŃÏúÍÆÜÇÇș˜óČș——ÿčϔÏïđϔÇ蘝ôČ”ș——ÿžüÌÿËțÊÿÉțÈüÇÆțÄ·šŁóĆż—ÿ·ÈËÈÊÊÉÉțÈüÇÿÆęĆĂĆĆ·ï—””Žü”Ž””Žû”Ž”Žü”îÓ%%!!)-'")*&*'*"& *("%#**-( qęęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìqüÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïqûÖîńé çàÔÇȚÙđđúțïqê źæäÚÌŚßŚÖúțïțpÿqpqpqqpțqpqępęq pçäȚÍĐßȚÖúțïönëôn ȚâĘËÌàßĘŐúțïțjkțjțkjkțjûkęj čßÖÇÈâàßÜŚúțïûgęêgêgęê„úg ÛÓÁÂćăàßÛŰúțïúd cdêdêdêddcêúd šŰÎŒ»èæăáßÛÖûțïa``üa éaé`ìa``ìûa`™ŰÍ»”êéæäáßÚĐÄ wțïÿ_ț^ÿ_ }é_^é_é_^_é_ț^_^_šŰÍ»źëêéçäáßŰÄ wțïę\ÿ]{é{\\é\ęé{ú\›ÙÏœŹîìêêçäâàÖ wțïû[țèé\è[èś[\œÜĐż°ńïìêêçćâàÔwțïöYXYèśYc›ȚÒÀŽôòïíêêèćăàÓwțïöYXőYc›ȚÔĂœöőòđíêêèæăàÒwțïúY ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ûYÿŁ ŒččșșčșșččțșțčșÄߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””üYțĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàęYęÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàțYüĂ çćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄăÿYûÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźățlüÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłłęlęÀçäăääăęäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””ülțżçęățäăäùăáäăăäüă äăăäăâăăżżûlÿżæđăáśăäûăÿŸúlœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœœél†Èăățâăâăăùâăœœÿlkëœ wÈââăââăâăââăûâÿŒÿk霅łÌòâÿ»ÿj~zț‚ÿț€~ț}ÿ|{țy‚~~jłœúâÿáâáțâá»»ÿi~jí~j~iłœâáâüáâáâțáâččÿhÿ|‰LńQ T‰||hłœááâőáÿčÿgÿ€‡Uńc[‡uugłœűáàüáÿžÿe~†Uüsáțàáûs c†ssfłœàááàüáàáàáàážžÿeÿ}‡Uę‚üßû‚j‡rqełœùàáàțáßážžÿcÿ|‰UünÿÎÍÎÒûo b‰ppcłœààáùàáàȚà··ÿa{y‡Uü‚ęâáû‚m‡ooałœùàßàßààĘà··ÿ`ÿx…Wü{üÙû{j…ll`łœàßöàÛß··ÿ^ÿx†W{||ÂŚŚțÖÿŚÂę}l†kk_łœßàęßüàßàÚß··ÿ^wv…XggilÄęÌÏÄlęia…ji^łœûßÿàßàßàßÙà··ÿ\ÿu„Xxyyz‚ÔțÛӃü{ n„hh\łœßßàțß àßßààßßÙß··ÿ[ÿs„XțqÿrÌĐ́ûr i„ggZłœßßàúßàßÚŚß··ÿZrqƒXûl†”†úlfƒfeZČșóÖß··ÿYqjqïœqjfYČșôÖÚß··ÿXülÿkÿjihhțgfęedțaWŽżóćâ·ÿWmkmjihhțgfęeÿdțcac``Wï· UVWVUVVUWVVțUÿVÿUWUWVUVVUîÓ%!!$,& )'+"*(+&&%()'#$ #&!›ęșțńđńđńńđđńđđńđńđńïîíéöŐàńí›üșÿđûòú űśńçćóóòò””úțń›ûșïđù űóìâöóòò””úțń›êș Ëśöđçńśńń””úțńțšÿ›š›š››šț›š›ęšę› šśôòçëśśń””úțńö˜ńô˜ đőïăçśśöï””úțńț”•ț”ț•”•ț”û•ę”Ńńëàâțśőń”úțńû‘ęđ‘đ‘ęđŠú‘»îèÜĘűțśôđúțńú ŽđđđŽđúžëćÙŚùűțśôïûțńùŒïąŒïŒńțŒńúŒžëäŚÒùùűűśśóçâG::•țńÿ‹țŠÿ‹  ï‹Šï‹ï‹Š‹ï‹țŠ‹Š‹·íćŚÍęùűśśòâG::•țńęˆÿ‰ŸïŸˆˆïˆęïŸúˆčïæŰËúęùűśśńG::•țńû‡ęïˆï‡ïś‡ˆșïçÚÌûúęùűśśđ::•țńö†…†îś† ŽșńèÛĐüûúúțùűśśï:•țńö†…ő† ŽșńëȚŚüüûûúțùűśöî•țńú† ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțń óőùùűűőì€ÂÂû†ÿÇŐęÔÿÓÔÓûÔÿÓĘôìâÏÇÄțÁ ĂĆËÖȚíűôëÂÂü†țè%ùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîëśę†ęèÿùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘśț†üçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśÿ†ûæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖśț6üæúțű!ùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚę6ęæùűűùùűùùűùùśśóîèëëćéçëíîîííììîÜÜü6țćúűűùűùüűęùűùùűűùțűùűűùęűùűśśććû6ÿćùűùűùűùüűÿùęűöțűÿùűùüűùűùűűććú6äùüűùűùűűùűùùűűùśűűùùűűùűùțűùűùùűääé6aÍțűęùțűùțűùűűùääț6ëX=Íűùűűùùűùűùűääÿ5éX`Ïäűùüűÿùüűùăăÿ4C@FHțFțDÿCțBÿAț@ ?FCC4ÏŰűùűűùùûűùűùăăÿ4CQíCQC4ÏŰùűùęűùțűùűűùââÿ2ÿBJń#$JBB4ÏŰțűÿùęűțùțűÿâÿ1ÿDI%ń/)I==2ÏŰòűÿáÿ0ÿCI%ü;àțßàû;/I;;0ÏŰűùțűùüűùțűÿâÿ0ÿBI%üFüĘûF4I::/ÏŰôűùűááÿ/ÿAJ%ü8ÿÎÍÎÒû8/J99/ÏŰśűùűűśűááÿ.ÿ@I%üFęàßûF6I88.ÏŰôűöűááÿ-ÿ>H&üAŚțÖŚûA5H66-ÏŰûűùûűöűááÿ,ÿ>H&țAČúÔČęA5H66-ÏŰôűőűááÿ+ÿ>H&1148ŒęÌÏŒ8ę4.H55+ÏŰôűôűááÿ)ÿ=G&ț>@KÏțÚÍLüA 7G44)ÏŰűűùśűôűááÿ(ÿ;G&ü:QÆÍÆQû:4G22(ÏŰőűőóűááÿ(ÿ:F&û6^Š^ú61F11(ÎÖóóűááÿ':Q:ïX:Q1'ÎÖôóőűááÿ'ú6ț5ÿ4ț2ü10ț/'ÏŰöùűùùűáÿ&:6:5544ț2ü1ÿ0ț/.2..&ïáű%&%%&%%&ü%&%&&%îÓ  úìÿòúëÿęòúêÿűó±ăÿđóáÿßőàÿÇößÿĄśȚÿrűĘÿGùÜÿ"ùÛÿ úÚÿûÚÿțüÙÿęęÚÙÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿúÛÿû!Ûÿ*û2@AABCEá@2%! -,%!(%%&&$)%$#&&%%%( ‹ęźïœ»ž”ŻÍŻÈńì‹üźÿŒáóÚ ÙŚÔËșČčèïïúțí‹ûźșÙòÏ ÎÌÆč­čžïïúțí‹êź ­ÍÊÁł”ș¶”úțíțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠÌËĆČ°șș”úț휈ńóˆ ÆÈÁ±Żœșč”úțíț„…ț„ț…„…ț„û…ę„ šÄż­ŹĂŸșž·úțíűđぁ™ăđđù “Àž©šÉÄżș·žúțíú ~ïă~ù œł€ąĐÊĆÀ»··ûțíś|ï||ââ•ű|ŒČą›ÓŃËÆÁ»·°šuțíÿ{țzÿ{ÿz{ïț{”ââz{țz{z{œ±ą–ÖÓÒÌÇÁŒ¶šuțíÿ{țzÿ{ÿz{ïę{zâz{țz{z{œŽ€”ÜŚÓÓÍÇÂœ”uțíęxÿyęxáxxïïá’ùx‘żŽ€—âĘŰÓÓÎÈĂŸłuțíùwîá’ôwx‘À”§žéăȚÙÔÓÏÉÄżČuțíövuővzÁ·©šìêäßÚÔÓĐÊĆżłuțíúv‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ûvÿ­§Š§țŠț§›{üuy€~|uromkkmq‹Ÿ«ŒÆœČ­­üvț§ÎÆúÇž‹žüÇĆÂș±Šœ–’ˆo’s•”’™Ź·łŸęvęŠÍùÆ’·ÆÇęÆĆÂŒłȘ ˜–n‹””n˜——•‘˜ĄŸțvü„ÍțÆÿĆțƄúÆÄĂŸ”­ąš–iț•k—™››š˜…Äÿvû€ÌÄęĆÄĆƄúĆĂŸž°šŠąnțŸoŸĄąŁ„§’ÄvúŁËùÄ„ÄĆü„ƒ‚€~{z°­xŻłČ€ČłŽ±°Č––ùą%ÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™™ù ÉùÄțĂÄțĂÿÂûÄúĂțÂÿ ùŸ ÈÂÂĂÂĂÂĂ„ĂĂû„ƒę„ÿ„ĂĂțÂĂțÂĂ  ùŸÇüÂÁ„ÂÁûÂÀÂțÁÿ„ÁțÂÁÂÂÁŸŸùžÇüÁÂÁÁ„ÁÁÂÂęÁÂțÁÂÁÁ„ÁÁÂÁÂüÁÿùÄüÁÀÁÁ„ÀÁö„ÀÁ„ÁÁțÀțÁÀÁùœÄùÀ„òÀ„ÀÁùÀÿ›ù› ĂÀżÀÀżżÀżƒûÀżÀÀżÀÀțż ƒÀÀżÀżÀÀżżÀ››ùšĂżŸûż„Ÿżö„ÿż„żżŸúżÿšùšÁżŸŸüż„żżŸżŸțżŸżżŸżŸż„żțŸÿżÿŸÿżÿšù˜ÁțŸœęŸ„ôŸœŸ„ŸŸœüŸœŸ˜˜ù˜żœŸțœŸœœ„țœÿŸœŸüœŸœŸ„œŸœŸüœŸ˜˜ù—ż»țœô„ƒț„ÿœŒ„üœŒœœŒŒ——ù— Ÿ»œœŒ„œŒŒœŒœœŒțœęŒ„țŒ„ŒŒœŒŒœęŒÿ—ù—œșțŒ„òŒ„țŒ„ęŒœțŒșŒ——ù—œč»Œ»ŠŻûŒÿ»Œ»»țŒŠŒ»Œ„Œę»Œ»»č»——ù—Œ¶ț»Ż‰ŻŒę»Œț»Œț» ŻŠ»»Š»»Œ»Œț»¶»——ù—Œ”껯‰òƒ„ŠŻ»șû»”»——ù—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș——ù—»Ž”șș»ùș»ș»üșț»üș»șș¶łș——ù—șßČș——ù—ș¶áČ”ș——ú—żÁàĆż—úۗÓ%%! &-,%))$&+&))"&!!!&!#' pę™ęŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìpü™ÿŚòïüîïîîïïțî íìèàĐÌÙìđđúțïpû™Öîńé çàÔÇȚÙđđúțïpê™ ­æäÚÌŚßŚÖúțïțoÿpopoppoțpopęoęp oçäȚÍĐßȚÖúțïśmíóm ȚâĘËÌàßĘŐúțïțijțițjijțiûjęi čßÖÇÈâàßÜŚúțïűfìĘffƒĘìíùf ÛÓÁÂćăàßÛŰúțïúd cddìddĘddcùd šŰÎŒ»èæăáßÛÖûțïa``úaìa`ÜÜ`úa`™ŰÍ»”êéæäáßÚĐÄ wțïÿ_ț^ÿ_ÿ^_ëț_~ÜÜ^_ț^_^_šŰÍ»źëêéçäáßŰÄ wțïÿ_ț^ÿ_ÿ^_ëę_^Ü^_ț^_^_›ÙÏœŹîìêêçäâàÖ wțïę\ÿ]ę\Û\\ëëÛ{ù\œÜĐż°ńïìêêçćâàÔwțïù[ëÛ{ô[\›ȚÒÀŽôòïíêêèćăàÓwțïöZYőZd›ȚÔĂœöőòđíêêèæăàÒwțïúZ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÏz””ûZÿŁ Œččșșčșșč诏ü‰Ÿœ˜‘Œ‰‡„„†Š€žĆŚăÜÏ””üZțĆéùćÖȘÖüćăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖĐàęZęÄèäüćäć±ÖûćâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸàțZüĂ çćääćäćääŁćäćțä ćăâÛÓÇŒ¶Ż‚ț­„°Ž””ŽŽĄăÿZûÂçùäŁțä ćäćäâáÜŐÌĂÂœ‰țș‰șŒœżÁÄźăZúÁçțäÿăÿäăŁääüŁąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłłùÀçäăääățäŁăäțăäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ””ùżçęățäăŁùăáäăăäăăŁăăäăăäăâăăżżùżæùăŁăăûŁąęŁÿăŁțăäûăÿŸùœćăâăâțăâŁțăâęăÿâÿăâăăŁăâüăÿâăœœùœ ćâăâăăââăŁâăăüâÿățâăâŁăùâăœœùŒäüâăââŁăăöŁâăŁăââăûâÿŒù»äûâáâŁęâáâáù⣜âÿ»ùșăùâąáâáâáęâÿáęâąââááâáțâá»»ùșăáââáțâáŁâáöŁâáŁțáâáâțáâččùșâáâûá ŁááâááâááâęáâᣜáÿčùčáàüáÿàŁțáàöáŁęáàüáÿžùžâáààüá ŁááààááààáțàÿáàŁęáàáàáàážžù·áßàááôŁąțŁțàŁțàáàțáßážžù·âȚțàŁààáęàáúàŁàáàŁûàáàȚà··ù·áĘțàŁóàߣțàŁțàßàßààĘà··ù·àÛțàȘÒààßàßàßęàßààȘßààŁùàÛß··ù·ßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßüàßàÚß··ù·ßÚààßßÒ©òąŁȘÒßààßàßàßÙà··ù·ßŰàßàüßàőßàțß àßßààßßÙß··ù·ߌÚțßàńßàúßàßÚŚß··ù·ßßÖß··ù·ßÛáÖÚß··ú·ââàćâ·úÛ·Ó%! ,+$)(+&**)('#'!& ‹ęźțńđńđńńđđńđđńđńđńïîíéöŐàńí‹üźÿđûòú űśńçćóóòò””úțń‹ûźïđù űóìâöóòò””úțń‹êź Ăśöđçńśńń””úțńțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ Šśôòçëśśń””úțńśˆńóˆ đőïăçśśöï””úțńț„…ț„ț…„…ț„û…ę„Ńńëàâțśőń”úțńűđぁ™ăđđù»îèÜĘűțśôđúțńú ~ïă~ùžëćÙŚùűțśôïûțńś|ï||ââ•ű|žëäŚÒùùűűśśóçâG::•țńÿ{țzÿ{ÿz{ïț{”ââz{țz{z{·íćŚÍęùűśśòâG::•țńÿ{țzÿ{ÿz{ïę{zâz{țz{z{čïæŰËúęùűśśńG::•țńęxÿyęxáxxïïá’ùxșïçÚÌûúęùűśśđ::•țńùwîá’ôw xșńèÛĐüûúúțùűśśï:•țńövuőv €șńëȚŚüüûûúțùűśöî•țńúv ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțń óőùùűűőì€ÂÂûvÿÇŐęÔÿÓÔÓÔÊŻüȘ°œșžŽ°ź«Ș©«ŻÆÖȚíűôëÂÂüvțè%ùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîëśęvęèÿùúűÌëűțùűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘśțvüçùęűÿùűùÀűțùÿűùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇśÿvûæùűűùùęűÀțùűțùÿöńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖśvúæúțűùűùűűÀűùüÀżŸŒč¶”äáŽäçæșèéêćäçÚÚùæùűűùùűțùÀęùűùùśśóîèëë攎·ŸâîííììîÜÜùćúűűùűùțűÀűęùűùùűűùțűùÀűùęűùűśśććùć ùűùűùűùűűÀűűûÀżęÀùűÀüűùűùűűććùäùüűùűùÀűùűùùűűùśűűùùűűÀűùțűùűùùűääùäùűùûűÀöűęùÀűűùțűùűűùääùäÿùęűÿùűÀűùöÀùűÀûűùűùűääùăûűùűűÀțűùűűùüűùűűÀűűùùüűùăăùăűùùűùűűùűżùűùùűùűűùțűùűűżùûűùűùăăùâűűÀűùöÀùűÀűűùțűùűűùââùâùűùÀűùțűùűùûűùÀęűțùțűÿâùâűűÀùùűùűùțűùüűÀśűÿáùâűùúűÀőűùűűÀùüűùțűÿâùáÿűùűűôÀżțÀțűÀùűùűááùáűśțűÀțűùöűÀțűÀüűùűűśűááùáűśțűÀòűÀțűÀùűöűááùáűśțűÆëùűùüűÆțűÀűùûűöűááùáűőțűìĆëôűëÆűűÆùűőűááùáűôęűëĆòżÀÆëùűôűááùáùôìűùśűôűááùáűóőăűőóűááùáűßóűááùáűöáóőűááúáűűăùűùùűáúÛáÓ   ęöâÿóÿț%äÿęòÿűäÿțńÿ‡ćÿțđÿ`țÿ*őűțĘÿȚùęÜÿ*úęÜÿiúęÜÿiûęÜÿküęÜÿ|ęÿ ęŐÿțęÔÿüŐÿțûŐÿÌúÖÿț$űÖÿćűÖÿZűŚÿòśŚÿ”öŰÿúśŰÿœțśÙÿęțśÙÿÙęśÚÿțMęűÚÿíüÿùÚÿ…üÿűÛÿùüÿúÛÿŒûÿûÜÿțûÿüÜÿćúÿúÜÿeúÿÜÿțùQȚÿÒ0 ü $99:;;=ê9 =;;:99$&ę#-.%%- *0'*) ț…Šôs‡ț}ț‡†……„„ƒ‚€~}|ˆęÿmÿÆț…ŠŽțŒ‹Š‰‰ˆ‡ț}ț‡†……„„ƒ‚€~}|ˆęÿmÿÆț‡ÉùÛÜÖÒÌÈŸ»ččŒÙŒŠˆț‡†……„„ƒ‚€~}|ˆęÿmÿÆțŒ°˜ő”š•Šˆț‡†……„„ƒ‚€~}|ˆęÿmÿÆÁˆ ˜ô”«˜ˆț‡†……„„ƒ‚€~}|ˆęÿmÿÆÁ…Ÿ’“”“”ü“”““”“ż”ț“”““ț’ ‘ŽŒ‹‰ˆęÿmÿÆ HŸ’‘“’’“’“’ę“’“–éđŸŒŒęÿmÿÆ _TŸ‘‘‘‘û’ÿ‘’û‘’‘’‘’’‘’’‘’‘’‰€& țmÿÆ ˆ[~žŽŽ‘‘ț‘țÿ‘ ‘‘‘‘ț€{& țmÿÆŠ]}žŠŒŽęŽÿęŽûŽțțŽÿŽęxuR țmÿÆ •_}‚ƒ„„ƒ„…û„…„ûƒ„ƒ„ƒ„țƒ „ƒƒ„ƒ„pmjițmÿÆ™k}œú€ÖÿáàßĘÜÚŰŚŐÓÏËÊÈÆĆĂÂÁÀüżșüčșÆƱ|}œ~~}~ț}ö«á•“§ƒ~œę{z{~Ą˜”á•’sáȘ~›ûx “’ᔄ|áÈ›vuțvxž™’’â“’v|ÿß ~štsstsˆĄ’á’‡y|ÿđ ~šqqpqq™™Žáx||ÿű ~™llnn|ĄŠâŽˆv||ÿÖ |™deik’š‹‰áŒzț{ÿB |˜]`do ˆŠă‹Š‰sțhÿ„z˜Y[_‡œ‡„ăˆÿ‡|xțhÿŹz˜VW]˜Žƒ„ă†ƒ…ręyÿŻz—UTyšƒƒä„ƒ€}uęyÿ”z—TTŽă‚~€süxÿÀz–Tj•€y~ä~y{rüxÿÀz–S†Šywă}xzrûvțzŹ`’qyä|{tzoûhțzÄȗwnă{ÿvrsühț{±ÿ€oitęyûzï{zpykûtțz”š{hătqrtpütÿ vv•‚ztkjjękülęmúnęoțpqxmqqûÿl}qwyâ{olùÿIȚjiùŃ$..%%+#)&'$, ț­šô™„țŸÿ§ÿŠÿ„ÿ€ÿŁąĄĄț Ÿž©ęąÿ‘ÿéț­š«źźŹ«țȘ©šț§„țŸÿ§ÿŠÿ„ÿ€ÿŁąĄĄț Ÿž©ęąÿ‘ÿéțšŰüîîìêçćâáßȚȚáæ«š©§§ŠŠ„„€€ŁŁąĄĄț Ÿž©ęąÿ‘ÿéț±ÖĂőżıš©§§ŠŠ„„€€ŁŁąĄĄț Ÿž©ęąÿ‘ÿé¶Á­ÍĂôżÏČ©§§ŠŠ„„€€ŁŁąĄĄț Ÿž©ęąÿ‘ÿé¶Á«ÌœŸżțŸ żŸżŸŸżżŸŸŐ°ûŻțźÿ­Ź«ȘȘ©š§©ęąÿ‘ÿ鶁§ÌŒțœŸűœŸżôûâăęâăüâàšęąÿ‘ÿé _xŠË»»Œ»Œ»ŒŒœœúŒœûŒœțŒœțŒœŒŒ©ą(#ț‘ÿéˆt„Ëžčșșü»șę»ș»șś»ÿș »ș»»ș»Ą(#ț‘ÿés€ËŽ”··čțžțčÿžțčÿžčžüčúžčžž›™q#ț‘ÿ靀€Éț«ÿŹț­țŹę­üŹ­ùŹ «ŹŹ«ŹŹ“‘Žț‘ÿ駇€Éțš©țš«ïÿòńńđđïîíììêèèçææćääûăȚüÜĘéé΍€Èú„ÄúÍáÀœÊО„ÈŁŁąțŁšÍĂżáÀŒ—ỄÇûŸ»ÍŸœáż«Ł áѩǜœ›œœžÊÄœœâŸœ›ŁÿćŠÆü™±ÎœșáœŻ Łÿő „Ɩ–—––ĆĆčžá»ŁŁÿù €Ć’’“”„λ”žâč±›ŁŁÿÙ €ĆŠŒŽŸÆ¶Žá·Ąțąÿj ŁÄ‚…‰”Ì豎ă”ŽČ˜țŠÿ¶ĄÄ}‚±È±źăȱ°ŁžțŠÿœĄĂ{{Ă菟ă°­ź—ę ÿŸĄĂyx Æ­š­äźŹȘ„›ę ÿÀĄÂxwč·§§ă«Š©—üžÿËĄÂx‘ÀȘąšä©šą€—üžÿË Áw°ŽŁ ă§ĄŁ˜ûœțąΆœš™ąä„€œą”ûŠțĄÜÚœĄ–ă„ÿŸ™˜üŠțąŃÿȘ–ĄęąúŁń€ą—ĄŽû™țĄżÀ€Žă›™šš”ü™ÿ œœÀ«Łœ’‘‘ę’ü“ę”ț•ù–ț—˜Ą‘––ûÿ€—€§âȘ–ùÿaȚŒ(ùŃ$" + "..-! țçÖôÚŐțÖÿÚęÙęŰęŚțÖŐȚęÙÿÎțÿțçÖŰÚÙÙüŰțŚÿŐțÖÿÚęÙęŰęŚțÖŐȚęÙÿÎțÿțÚîÿüțúęöÙÚÜÚÚęÙęŰęŚțÖŐȚęÙÿÎțÿțâđôőśűÜÚÜÚÚęÙęŰęŚțÖŐȚęÙÿÎțÿÌÍáíôôśôÛÜÚÚęÙęŰęŚțÖŐȚęÙÿÎțÿÌÍàîöśśööśśööśööśöśđÛÙÙÚÚûÙęŰÿŚÖÔȚęÙÿÎțÿÌ ßîőțöőöőțöőüöțđęúŐęÙÿÎțÿ}ĄȚîùőöțőöőöúőöűőÿöőŰÙêÜțÎțÿ˜©Țîńóțôőțôőôőôôőûôőôțő ôőôôőôôőôŐŚêÜțÎțÿž«Țïîđńòțóòóüòÿó òóóòóóòóóòòóòțóțòŃÔżÜțÎțÿčźĘđèèçüèțéèțéèççééęèçèççèèçțèéÍÎËËțÎțÿ Ó¶Ęđćäććäćäæțÿöțóęűûśțÿß»ȚđățâțăòțùáűőíŚÆßńțàáàáćïöśáűôĐáŚàńûȚïđśöáűäĘ áäáńÛÜÛÛÜĘđôööâśöÔßÿïáòüÙêîöóáöèÚßÿöáòÖÖțŚđńóòáőŚßßÿû áóÒÓÓŐáîôđóâôìÖßßÿé àóÊÌÏŃîđòđáóÛțȚÿ± ßóĂÆËŐîńîńăòńïÒțĂÿŚßôżÁĆèîđíăńđïàÛțĂÿÜȚôœœĂđïìîăđìîÒęĘÿÛȚôŒșßđíèíäîìêăŚęĘÿÜȚő»șńïééăíèëÔüÜÿÚĘőșÓőìćëäìëććÓüÜÿÚȚőșîńæăăëćçŚûÚțȚűÈöëĘæäêéàæĐûĂțĘúöôćÙăêÿăŰÖüĂțĘűÿìÙÒáææțçúèńéçÛæÈûÖțĘśőéŃăáĘȚÛŃüÖÿ ÙÙűíéáÖŐŐęÖüŚęŰțÙęÚęÛțÜĘçÍÔÔûÿËߌæêâîÓÌùÿ‹ȚÉÈ:ùŃ   úìÿòúëÿęòúêÿűóúéÿđóúèÿßőúçÿÇöúæÿĄśúćÿrűúäÿGùúăÿ"ùúâÿ úúáÿûúáÿțüúàÿęęúßÿűúȚÿđúĘÿáúÜÿÊúÛÿúÛÿ úÛÿúÛÿúÛÿúÛÿúÛÿúÛÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿŐÿ*çÿï@22@AABCEí@2ï   #%($$''! !$-)%&.&.,-,-)-+)+,$% ꜻž”ŻÍŻÈńìùŒáóÚ ÙŚÔËșČčèïïúțíùșÙòÏ ÎÌÆč­čžïïúțíùčÙÎęÏęÎÏțÎÿÏ ÎÍÊÁł”ș¶”úțíù·ŰùÎÏęÎ ÏÍÍÌËĆČ°șș”úțíù¶ŰęÍęÎÍÎÍÎÎÍÍËËÈÁ±Żœșč”úțíù¶ŚüÍÎúÍ ÌËÊÈÄż­ŹĂŸșž·úțíùŽŚÍÍÌúÍÿÌÍËËÈÇÀž©šÉÄżș·žúțíùłÖęÌÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»··ûțíùČŐțÌËÌËÌûËÿÊÇÄŒČą›ÓŃËÆÁ»·°šuțíù°ÓôËÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶šuțíùŻÓțÊËÊËÊËÊËÊțËÊÉĆœŽ€”ÜŚÓÓÍÇÂœ”uțíùźÓüÊÉțÊÉüÊÇÆżŽ€—âĘŰÓÓÎÈĂŸłuțíùŹÒÉÉțÊțÉÊûÉÈÆÀ”§žéăȚÙÔÓÏÉÄżČuțíù«ĐÈțÉÈțÉÈțÉțÈÇĆÁ·©šìêäßÚÔÓĐÊĆżłuțíùȘĐńÈĆÀčȘŽáÜÙÓŃÏÏÒŃËÆżČv­­ù©ĐÈÇÈțÇțÈțÇÈțÇĆÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœČ­­ù§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·łŸùŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜ĄŸù„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…ÄÿÁû€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÄÿÁÂüŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č––ÿÁÿÂęąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™™ÿÁțÂț ÉőĂÄțĂÿÂóĂțÂÿ ÿÁęÂÿŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ  ÿÁüŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸŸÿÁé»țÁÂüÁÂÁÂüÁÿÿÀéó ž§”ÀÁÀÁÀÁÁțÀțÁÀÁÿÀòœœžžŸț ÿĄÿąŁ„€țŠ‡ò¶§­ûÀÁùÀÿ›ÿżńąŁ€€„„Š§§šš©©łéí°«Ș’ńŽ§­ÀężÿÀ żÀżÀÀżżÀ››ÿœï©©ȘȘ««Ź­­źŻŻłìàÓÌŻ’‚‹zﱧŹúżŸúżÿšÿŒ ï§e•ĆÔÚĎ°”¶ĂŃÖŚÔ­°ș””ŹŸżŸżŸżțŸÿżÿŸÿżÿšÿ»í~NŰäìîèĘlxč©Č“ÆŠŃÚĂœ ŽíźŠŹŸŸœęŸœüŸœŸ˜˜ÿč#됥ŒÉńńđçŚ\—•‘«‘Š–™“•Œë«Š«œŸœŸœœŸœŸüœŸ˜˜ÿžéÆĆŹžæńîß߯• ’˜Ąƒ†‡éȘŠ«țœŒûœŒœœŒŒ——ÿ¶蝜ș=ąíymà˓•—œŒ•ˆƒ…„„Œè©ŠȘœțŒœŒŒœŒŒœęŒÿ—ÿ”æÄÔrOĘçłKÊԔ‚‡˜‘–ƒ‚˜ć§ŠȘűŒœțŒșŒ——ÿŽä„ÆŠÔôûî”œĐ„z‚…ƒ}~…ä„ŠȘŒŒ»țŒę»Œ»»č»——ÿČá•ŐÂìăóïÜƧilpx}ŽŠoim} Șú»Œ»Œț»¶»——ÿ±ái¶Â c§ŒÎkafih{†o“ŠŠu{àŁ„Șû»șû»”»——ÿŻȚc:u§°Â«yf[Y]d{ƒut…`ˆ_Țą„Șșșț»țșü»Žș——ÿźÜba[H9@ETn_STofg†„ƒlpmÜĄ„©șț»üș»șș¶łș——ÿ­Û\;;9<;?HO\Viha^qv—€lW}Û Ą„óČș——ÿŹÙYGFBqhILQXQr~†„e‡‹‰~^Ű Ą„ôČ”ș——ÿ«éŰ ȘŻóĆż—ÿȘ馟ï—çîÓ!#!#&$''$(($(),$(*+%&-***'+,/+$% űŰÿŚŰŚúŰțŚÖÔĐÈæÁÔńìùŚòïüîïîîïïțî íìèàĐÌÙìđđúțïùÖîńé çàÔÇȚÙđđúțïùÔîśéèțé èéæäÚÌŚßŚÖúțïùÓîțé èééèéèèéèéțè çäȚÍĐßȚÖúțïùÓíèèééèéțèéüè çćâĘËÌàßĘŐúțïùŃíôè çæäăßÖÇÈâàßÜŚúțïùĐìùèçęèÿæ äáÛÓÁÂćăàßÛŰúțïùÏìçțèțçÿèÿçÿèæääßŰÎŒ»èæăáßÛÖûțïùÎëțçÿèțçèęçæćăȚŰÍ»”êéæäáßÚĐÄ wțïùÍëúçèçèçèçæćäàŰÍ»źëêéçäáßŰÄ wțïùËëæçæęçæțçæççććâÙÏœŹîìêêçäâàÖ wțïùËêęæçææççæçææçæćăÜĐż°ńïìêêçćâàÔwțïùÉëçæçúæçæçææćâȚÒÀŽôòïíêêèćăàÓwțïùÉêòæäâȚÔĂœöőòđíêêèæăàÒwțïùÇêæćæććæććęæćæćæâȚÖĆÇìèćăâăćêéæäȚÏz””ùÆ éććææćææććțæțćæâߌɰ§ŁĄ Ÿą„«žĆŚăÜÏ””ùĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖĐàùÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸàùĂ çćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄăÿÁûÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźăÿÁÂüÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłłÿÁÿÂęÀçäăääăęäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ””ÿÁțÂțżçęățäăäùăáäăăäüă äăăäăâăăżżÿÁęÂÿżæđăáśăäûăÿŸÿÁüÂœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœœÿÁé»ățâăâăăùâăœœÿÀéó žÄÔăââăâăââăûâÿŒÿÀòżżÀÀÁÁțÂüĂ ÄĂÄżĆÆĆȘò¶ÄËòâÿ»ÿżńĂĂÄÄĆĆțÆțÇ ÈËìïÇÊɶ§ŠńŽÄÊúâÿáâáțâá»»ÿœńÈÈÉÉÊÊüËÿÌîâÖÒË”šŻ ï±ÄÊâáâüáâáâțáâččÿŒîÁf€ÓŰÚƠ̋ÉŃĐËÔÙÚÚżÌÔ”ŽïŻÄÊááâőáÿčÿ»íˆKŰäëíçĘi~Ń”ž›É­ÔĘÎŐœÎíźÄÊűáàüáÿžÿș멱ÉȚńńïæÖZąž™–č›™«Č¶»ČëŹĂÊàááàüáàáàáàážžÿčéÚŃÌÎéńîßßȟŒ„«Ż·Œ—ŒŠ°ŸéȘĂÊùàáàțáßážžÿžèŒÍș>«ïymà̝©±”•§•ŽȘ©§Đè©ĂÊààáùàáàȚà··ÿ”æÎÔpNĘîłIÉÓąŠ‰”ł§°žœ‹›ąæ§ĂÉùàßàßààĘà··ÿŽä»Ò­Őôûđ“œÏ‹†”˜Á‘‹„äŠĂÊàßöàÛß··ÿłá°ŚÂìâôïĘĆ„†‹“š±­Ć†{žá€ĂÊßàęßüàßàÚß··ÿČàˆšžÂ aŠ»ÍhvŠŒĄŹ•ŒČłŠàŁĂÊûßÿàßàßàßÙà··ÿ±Ț}5šŻÂŻ˜vXi€‰ą«ž›Ź…Č‚ȚąĂÉßßàțß àßßààßßÙß··ÿŻÜzoUFDA\‘gbt”ŒŻ«Š©’–“ÜĄĂÉßßàúßàßÚŚß··ÿźÛxHA5HR>EJ`g‹‡…—œż§’z„ÛĄżÄóÖß··ÿ­ŰpPMB’‡JHMUk”€­Șˆ­Č°Ł€ŁÙ żÄôÖÚß··ÿŹéŰ ÆÌóćâ·ÿ«éŚŸï·çîÓ!"&$&%$$(%) ((-(('*$$'*",%(%)%%(&$% ùńđńđńńđđńđđńđńđńïîíéöŐàńíùđûòú űśńçćóóòò””úțńùïđù űóìâöóòò””úțńùïúęùűöù śöđçńśńń””úțńùîúüùűùűüùÿűÿś ôòçëśśń””úțńùîúóùÿű öőïăçśśöï””úțńùíúôùűśőôńëàâțśőń”úțńùíúęùűęùűțùÿűôóîèÜĘűțśôđúțńùìúțùÿűęùűțù űśôòëćÙŚùűțśôïûțńùëúęùțűÿùűțùÿśôòëäŚÒùùűűśśóçâG::•țńùìúüùűțùțűùűööńíćŚÍęùűśśòâG::•țńùêúțùűțùűùűęùÿűôïæŰËúęùűśśńG::•țńùëùűùűűùùűùęűțùśőïçÚÌûúęùűśśđ::•țńùêúűûùÿűùűęù űőńèÛĐüûúúțùűśśï:•țńùéùęűüùűùűțù űöńëȚŚüüûûúțùűśöî•țńùé úűűùűűùűùùęűÿùűöòêßĘőóțń óőùùűűőì€ÂÂùèúęùÿűùűûùÿűśôìâÏÇÄțÁ ĂĆËÖȚíűôëÂÂùè%ùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîëśùèÿùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘśùçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇśÿÁûæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖśÿÁÂüæúțű!ùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÚÿÁÿÂęæùűűùùűùùűùùśśóîèëëćéçëíîîííììîÜÜÿÁțÂțćúűűùűùüűęùűùùűűùțűùűűùęűùűśśććÿÁęÂÿćùűùűùűùüűÿùęűöțűÿùűùüűùűùűűććÿÁüÂäùüűùűùűűùűùùűűùśűűùùűűùűùțűùűùùűääÿÁéÂșűűęùțűùțűùűűùääÿÁéó·ȚìűűùùűùűùűääÿÀòńòńòüńûò đòĂòđílò¶Țăűùüűÿùüűùăăÿżńűòęóíńóëóë€/DńŽȚăűùűűùùûűùűùăăÿżïűóțôđóëáààn4[-ń±Țăùűùęűùțűùűűùââÿœïæ{ĂçßßáëžëőóĘàääÜĄÓôyï°ȚățűÿùęűțùțűÿâÿŒíĄTĘæìíèȚw•ńĐÍžÙÄàćáê–Ïí­Țăòűÿáÿ»ëŽ™—đđïçÙmżș¶Č©Ż•~rLXCêŹȚăűùțűùüűùțűÿâÿčéń«c‚ßïíàáĂŻf„ mŁŽ›D0qéȘȚăôűùűááÿžèh”»FŒæ€uâÔ·„alšŠ’œ12=ßçšȚăśűùűűśűááÿ¶æÀÓ{YÜŚłWÌŚ–€€’[qc[]’\œæŠȚăôűöűááÿ”äz«–Ôòûè™żÔ™ą“ˆvx;Œ“Ÿ…©ä„ȚăûűùûűöűááÿŽá]ÒĂìăóïĘÈŻ9EDA>25(PbeGá€Țăôűőűááÿłà!kłÄ„k«œĐy9țÿÿàŁȚăôűôűááÿ±Ț#>W§ČÄą0Dk?ȚąȚăűűùśűôűááÿ±Ü#*3,>NEP>țÜĄȚăőűőóűááÿźÛ#47=,!CR[T7Û ÛáóóűááÿźÙ2<=A !FU]d)' "!"##!!ٟÛáôóőűááÿ­éŰŸȚäöùűùùűáÿŹéŚžïáçŽîÓ8BIMPatt8BIMTxt2Yw /DocumentResources << /FontSet << /Resources [ << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (țÿArialMT) /Type 1 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (țÿMyriadPro-Regular) /Type 0 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (țÿAdobeInvisFont) /Type 0 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (țÿTimesNewRomanPSMT) /Type 1 >> >> >> ] >> /MojiKumiCodeToClassSet << /Resources [ << /Resource << /Name (țÿ) >> >> ] /DisplayList [ << /Resource 0 >> ] >> /MojiKumiTableSet << /Resources [ << /Resource << /Name (țÿPhotoshop6MojiKumiSet4) /Members << /CodeToClass 0 /PredefinedTag 2 >> >> >> << /Resource << /Name (țÿPhotoshop6MojiKumiSet3) /Members << /CodeToClass 0 /PredefinedTag 4 >> >> >> << /Resource << /Name (țÿPhotoshop6MojiKumiSet2) /Members << /CodeToClass 0 /PredefinedTag 3 >> >> >> << /Resource << /Name (țÿPhotoshop6MojiKumiSet1) /Members << /CodeToClass 0 /PredefinedTag 1 >> >> >> << /Resource << /Name (țÿYakumonoHankaku) /Members << /CodeToClass 0 /PredefinedTag 1 >> >> >> << /Resource << /Name (țÿGyomatsuYakumonoHankaku) /Members << /CodeToClass 0 /PredefinedTag 3 >> >> >> << /Resource << /Name (țÿGyomatsuYakumonoZenkaku) /Members << /CodeToClass 0 /PredefinedTag 4 >> >> >> << /Resource << /Name (țÿYakumonoZenkaku) /Members << /CodeToClass 0 /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> << /Resource 5 >> << /Resource 6 >> << /Resource 7 >> ] >> /KinsokuSet << /Resources [ << /Resource << /Name (țÿNone) /Data << /NoStart (țÿ) /NoEnd (țÿ) /Keep (țÿ) /Hanging (țÿ) /PredefinedTag 0 >> >> >> << /Resource << /Name (țÿPhotoshopKinsokuHard) /Data << /NoStart (țÿ!\),.:;?]}ą    0!! 0000 0 0 0000A0C0E0G0I0c0ƒ0…0‡0Ž0›0œ00ž0Ą0Ł0„0§0©0Ă0ă0ć0ç0î0ő0ö0û0ü0ę0țÿÿÿ ÿ ÿÿÿÿÿ=ÿ]) /NoEnd (țÿ\([{Ł§  00 0 0000ÿÿÿÿ ÿ;ÿ[ÿć) /Keep (țÿ  % &) /Hanging (țÿ00ÿ ÿ) /PredefinedTag 1 >> >> >> << /Resource << /Name (țÿPhotoshopKinsokuSoft) /Data << /NoStart (țÿ  0000 0 0 00000ž0û0ę0țÿÿ ÿ ÿÿÿÿÿ=ÿ]) /NoEnd (țÿ  00 0 000ÿÿ;ÿ[) /Keep (țÿ  % &) /Hanging (țÿ00ÿ ÿ) /PredefinedTag 2 >> >> >> << /Resource << /Name (țÿHard) /Data << /NoStart (țÿ!\),.:;?]}ą    0!! 0000 0 0 0000A0C0E0G0I0c0ƒ0…0‡0Ž0›0œ00ž0Ą0Ł0„0§0©0Ă0ă0ć0ç0î0ő0ö0û0ü0ę0țÿÿÿ ÿ ÿÿÿÿÿ=ÿ]) /NoEnd (țÿ\([{Ł§  00 0 0000ÿÿÿÿ ÿ;ÿ[ÿć) /Keep (țÿ  % &) /Hanging (țÿ00ÿ ÿ) /PredefinedTag 1 >> >> >> << /Resource << /Name (țÿSoft) /Data << /NoStart (țÿ  0000 0 0 00000ž0û0ę0țÿÿ ÿ ÿÿÿÿÿ=ÿ]) /NoEnd (țÿ  00 0 000ÿÿ;ÿ[) /Keep (țÿ  % &) /Hanging (țÿ00ÿ ÿ) /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> ] >> /StyleSheetSet << /Resources [ << /Resource << /Name (țÿNormal RGB) /Features << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /ParagraphSheetSet << /Resources [ << /Resource << /Name (țÿNormal RGB) /Features << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /TextFrameSet << /Resources [ << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> ] >> /ListStyleSet << /Resources [ << /Resource << /Name (țÿkPredefinedNumericListStyleTag) /PredefinedTag 1 >> >> << /Resource << /Name (țÿkPredefinedUppercaseAlphaListStyleTag) /PredefinedTag 2 >> >> << /Resource << /Name (țÿkPredefinedLowercaseAlphaListStyleTag) /PredefinedTag 3 >> >> << /Resource << /Name (țÿkPredefinedUppercaseRomanNumListStyleTag) /PredefinedTag 4 >> >> << /Resource << /Name (țÿkPredefinedLowercaseRomanNumListStyleTag) /PredefinedTag 5 >> >> << /Resource << /Name (țÿkPredefinedBulletListStyleTag) /PredefinedTag 6 >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> << /Resource 5 >> ] >> >> /DocumentObjects << /DocumentSettings << /HiddenGlyphFont << /AlternateGlyphFont 2 /WhitespaceCharacterMapping [ << /WhitespaceCharacter (țÿ ) /AlternateCharacter (țÿ1) >> << /WhitespaceCharacter (țÿ ) /AlternateCharacter (țÿ6) >> << /WhitespaceCharacter (țÿ ) /AlternateCharacter (țÿ0) >> << /WhitespaceCharacter (țÿ \)) /AlternateCharacter (țÿ5) >> << /WhitespaceCharacter (țÿ) /AlternateCharacter (țÿ5) >> << /WhitespaceCharacter (țÿ0) /AlternateCharacter (țÿ1) >> << /WhitespaceCharacter (țÿ­) /AlternateCharacter (țÿ3) >> ] >> /NormalStyleSheet 0 /NormalParagraphSheet 0 /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 /UseSmartQuotes true /SmartQuoteSets [ << /Language 0 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 1 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 2 /OpenDoubleQuote (țÿ«) /CloseDoubleQuote (țÿ») /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 3 /OpenDoubleQuote (țÿ«) /CloseDoubleQuote (țÿ») /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 4 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 5 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 6 /OpenDoubleQuote (țÿ«) /CloseDoubleQuote (țÿ») /OpenSingleQuote (țÿ 9) /CloseSingleQuote (țÿ :) >> << /Language 7 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 8 /OpenDoubleQuote (țÿ«) /CloseDoubleQuote (țÿ») /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 9 /OpenDoubleQuote (țÿ«) /CloseDoubleQuote (țÿ») /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 10 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 11 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 12 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 13 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 14 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 15 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 16 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 17 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 18 /OpenDoubleQuote (țÿ«) /CloseDoubleQuote (țÿ») /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 19 /OpenDoubleQuote (țÿ«) /CloseDoubleQuote (țÿ») /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 20 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 21 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 22 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 23 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 24 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 25 /OpenDoubleQuote (țÿ«) /CloseDoubleQuote (țÿ») /OpenSingleQuote (țÿ 9) /CloseSingleQuote (țÿ :) >> << /Language 26 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 27 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 28 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 29 /OpenDoubleQuote (țÿ0) /CloseDoubleQuote (țÿ0) >> << /Language 30 /OpenDoubleQuote (țÿ0 ) /CloseDoubleQuote (țÿ0 ) >> << /Language 31 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 32 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 33 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 34 /OpenDoubleQuote (țÿ«) /CloseDoubleQuote (țÿ») /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 35 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 36 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 37 /OpenDoubleQuote (țÿ«) /CloseDoubleQuote (țÿ») /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 38 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 39 /OpenDoubleQuote (țÿ«) /CloseDoubleQuote (țÿ») /OpenSingleQuote (țÿ<) /CloseSingleQuote (țÿ>) >> << /Language 40 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 41 /OpenDoubleQuote (țÿ«) /CloseDoubleQuote (țÿ») /OpenSingleQuote (țÿ<) /CloseSingleQuote (țÿ>) >> << /Language 42 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 43 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> << /Language 44 /OpenDoubleQuote (țÿ«) /CloseDoubleQuote (țÿ») /OpenSingleQuote (țÿ 9) /CloseSingleQuote (țÿ :) >> << /Language 45 /OpenDoubleQuote (țÿ ) /CloseDoubleQuote (țÿ ) /OpenSingleQuote (țÿ ) /CloseSingleQuote (țÿ ) >> ] >> /TextObjects [ << /Model << /Text (țÿphp ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name (țÿ) /Features << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 1 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> /Parent 0 >> >> /Length 4 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name (țÿ) /Parent 0 /Features << /Font 0 /FontSize 10.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading .01 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking -10 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures true /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms true /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 1.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst false /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth .4 /MiterLimit 1.6 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> >> >> /Length 4 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 4 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 4 >> ] >> /StorySheet << /AntiAlias 4 /UseFractionalGlyphWidths true >> >> /View << /Frames [ << /Resource 0 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 4 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 12.0 /EMHeight 10.0 /DHeight 7.15988 /SelectionAscent -8.58154 /SelectionDescent 3.24707 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -8.58154 0.0 3.24707 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 4 /GlyphCount 0 /WRValid false >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -8.58154 16.38457 3.24707 ] /Glyphs [ 83 75 83 3 ] /GlyphAdjustments << /Data [ << /BackFixed -.1 >> ] /RunLengths [ 4 ] >> /VisualBounds [ 0.0 -8.58154 16.38457 3.24707 ] /RenderedBounds [ 0.0 -8.58154 16.38457 3.24707 ] /Invalidation [ 0.0 -8.58154 21.18453 3.24707 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 0 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 /EmbeddingLevel 0 /ComplementaryFontIndex 0 >> ] /RunLengths [ 4 ] >> /EndsInCR true /SelectionAscent -8.58154 /SelectionDescent 3.24707 /MainDir 0 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> ] /OriginalNormalStyleFeatures << /Font 1 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] /Kashidas 0 /DirOverride 0 /DigitSet 0 /DiacVPos 4 /DiacXOffset 0.0 /DiacYOffset 0.0 /OverlapSwash false /JustificationAlternates false /StretchedAlternates false /FillVisibleFlag true /StrokeVisibleFlag true /FillBackgroundColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 1.0 1.0 0.0 ] >> >> /FillBackgroundFlag false /UnderlineStyle 0 /DashedUnderlineGapLength 3.0 /DashedUnderlineDashLength 3.0 /SlashedZero false /StylisticSets 0 /CustomFeature << /StreamTag /SimpleCustomFeature >> >> /OriginalNormalParagraphFeatures << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /Kinsoku /nil /KurikaeshiMojiShori false /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> /ParagraphDirection 0 /JustificationMethod 0 /ComposerEngine 0 /ListStyle /nil /ListTier 0 /ListSkip false /ListOffset 0 >> >>8BIMlnk2(ŹfliFD$6959b6d6-0482-1173-a2a2-eaea0594271a image.png‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF +IDATxÚŽ™[Œ]çUÇëûöȚçœ9gî±Ç”±'MLMCB’†šUŠòԋÎ œ JHˆŠ xë E ˆđ­@š”S‰ŠQ/iÓ8qB[%$6Ę\ìŒí±Çžû̙9—œś·xۗłś9“2ă8ŸtæìùΟŹË­ő_k‹Șòÿ­ț|MAAP$»6Ę/gç"8uÄN‰#„ێ˜žæ›çÇ?0YߌmÏpžŒŽŹS˜ą>ÔÀvŽŒíœ€ȘÜŸŻN'֞œĆŐ/?”ÎS%Q"RZí.‹ŚV±ő±ćUÄEàĘvû!źwmK§J;rl†ŚęÁ)„Ôó [›T|k^]Œ[ńÖkcŁĂz=śĘ–ĂÔ%ŠŐ-ÄÒÔŰZ0șjùÿì@TńeO)Î)ÇÄÎĆźE1qđĶ<đ­ïÿú7vąÄ6!ԗUúb ßUƒ I#§DQL'Ž‰șQ7$°B`Á0րgÿ©gŽ~i»p2ÛMŁZÎ\ÌŹRĄÚ+ùč.9rN‰ă˜0L>ĘN—Š•\‰À€çYÔzûÔé7~g;Jl_퇏$§ź%G1^4‹<~TqêètCŹĄ „äJàyß9țò©[n„’-„KUÉs<œÂ›Vë^eSƒE0iö‚°bŒ *áûA”țö'/Öo@pćüźEü§ő! ô,œșDHA0ˆ0Ä``Œàœ#°‚gvR±ô”°P©ú OŒ6ꡇć=ŠŃ,7öRO)—j€"9”ćŽ3’±ˆ`lò?Æ`œžŐęT’ÀŒa 6đ͟>Gćú!äUz%Àî)š=iS˜IÔ Č’óƘ$eŠPńŒ2tŹ €_TÂBŁQ‘ă'ŸÁ Ûô€&Ő8·~baŚÇè\-RŠŹr `ŒĆXËP­2Ä©ž)+1<\1ÿùòS­?û‹Ż›„•5č..DA͠ӗ„4PčȘ‰éyËEŒĐ ŰŰì°¶Țbc}“æú&­a§KF˜‚ÏĐhT*ûœ„żyìïrd;ęÀ“/]Ő;MЎÁČv Iú< hÁɒŚä<)QÓm·iźmrćÊ"­V›8ŠQ§ÉËXƒ”?źÓź2>1ÊPŁN«±±Țș^>sÛ§y0ô¶[‰ )zé“•ÈÁŠ’ù*ÏRy!I”Áűccu‚ÀÒmwˆąç\j ƒ‘Äk›››lŽÚ\™[ĄâûLîŁ>RŸ–}‡OśołĄÉ’ ÒÇ+ žÈŽ5őŠ–8FÏKÆŒ<ßĂó,‘gđ€8…Ș`Câ Á:!rł—š,ŹQȘȚśìL#Űv%Î[ÈB6M<ŃcŁäMòšPä*Š0" LŒI”ńŒÔ;#‰Ćiâ-§Ïߣű€ăÒĆk–ÀÛ rčĄó (ìiO‰Üèé^–œ4"X#XßT|ŒÀ#ȘDž8îóZb_c "I 6Æ`ŹG·k9șżÚÜ>„R)Ž$lѱËh„PŰ˂(ÁàžPÊáŐèmˆöMjÒç§V« ŐvàBDT0ÉźćŹăÊ]8šÉś% űŒNkkec(•Ü“ïÎZÊB‹„…B?PŒ)‘BM« F-àéŠuf«v5{N*PÉ'NœP‘AÒwȇđís[ê&ÛÜËVŰiÜùœQKÎv{.T4·z/uH©8ș­[ȘpÏ=wó~ź“'_àòÌeFÆFš6òÆHÒ@Íìç œôQ{)Ôo€wȘòäË)–âwró‹’üXz[uš:ákԂ»@hÌÌìWűâĂ…Kûăv«E}€Ńł±öu) ÊĘžà¶‚PRh”ÀK«ĄôșȘ~€PC¶Ëę·xxÖòüÙ6•àWPm3·ű5–Wż ș+±žRÇŻ}àˀąȘYòA2&’Nße6ê\’%*Ÿ— Üÿ-…GeÂ{DüÚ­Íf›őæ&ûëÊĆÎçgeęE†ȘGX^=…sÇqvśH^Öń•r–‡âœ4«Ò›t˜ČÄà:ë<ó/Íü›ŻČošÉá‘î[àÖĄ%ȘÒfæՓŚ"„Š§Œé"ł—Ùlu’Ùg5Â5Ÿczê KÜ<À[§Î»ríą[Œô„ŰP°Ï֕8yÀÌâś0Swsïƒûűüejj7•JŁŽ3óÎe֛ëA•Ćy‹őaŽÊúÚ&áÌ>ŹgŰłś,Ì|’ž[ÁuèÚaY@Ă„ùœű.Me°Úfҗ†™Ì»ŐMŠÇ+ő±ŚöLíayi•± AŽÂÏ<Ä”čyÎŒț&sÍo`ꞯT‡c Š1ŐdqÁČśȚæÔswÒmMà…–±'pńyțÎłĄôŒG­Zh«cŐlŒÁ€Rțśì ŽŻpxúa^ę,çÎÍđüs/òĐoÿ»vM011É Ïÿ„öű7&6†vG˜1ŽCáêUšÂŸ#/ƒÀü”WíƘ ŒSŰâokó¶ŽxƒŸ vÄÎŃĘ0ÿ§Ó<ûăeöòEÆF‡ùÌçĆ«”űÁÛÊ?>ńeVVÖhŻŽ6a2č;ą:±ŒÚáàĄ˜™óÂnÄë§ÚLî2\z+JÆ&…aW‹"— ^î›Jżyę8çÏŒĂć„N‹ŐŐ71șo{ïûŐ͎6 7)óŚbDbÜêł±îšŚCcX˜»12nJ ”_+ë€ćûçQ— ž„bT•źƒó?Ț ‹kŰÉaă"șàÓŒ:ÊÌw?Æđî¶ÒarJètbÂP‰ÌÏĆűŸpË!Ÿ«s ïčr)æƒòóȘE1ˆ„Ę ß3=è\ìˆÛŁ4ȘUÔ"ńžë‘&­ aæy‹uc ŃÆaęgÔj#4Æ:Tk+3ç"nœĘ§č.Ôj01îX[ 1Î'vź;_Ö3ż8*ÊWțđ߶Ÿú“ę_<çĂ[\w_Ű”ŠĆ,“ŁÁŽȚőg€ëÆú xÚΐlqŐ1sósïé^"òK%f/]`öÒȚïő„ÏűŰ șU5Ż‹È=ÀH±CL?o°kȘúʍžŃÿ ŒÍê uIENDźB`‚1liFD$94592e07-047e-1173-a2a2-eaea0594271afolder_open.pngωPNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆFêIDATxÚì™[ˆ]WÇßÚ{Ÿs&sOs™\;i3‰cŁTPDăƒ/ߌԇÚ„ą yDÄ@UȘ‚}©XŸú ĐbßmœDlŁP#B‚ÖLnÎd23ç̙łÏÙk}Ÿ{ï3g&“€Qœca6Źł6{ŻłÖúŻïÿ]·˜oçËń6ż¶lŰ°` À€-[ț‹+^ÿàé]Ü$ś1ÇÊwŸšZè)ŁŃgÎȚ8d —“È!‘ S03Ž'`5˟•AŹĄ˜b+9úÍÏN_ì›\ÖxóűŁșŻI*‰Í_ĄÙÒoŸ~|ê«}𝳗ubrHҕê}Ű=˜ŸčÎbKNšêË%ß vKÜ,Ś2#§"Ęûœ¶JӛgNŸS߀W^9/ż™} ì=4"„"‚HŸ€†ßXŃ ‚a ˆ†plw› ç0+Ś•âÿ«_ŁKX±ÙVêbnÛ?Ÿò©CĘ@íćŚä#ü‹|àÈńìàÔšk,V1r5Äò- FŽőw‘ÀÇßWă­;€©RNzg€jàÏç.Òìď|ę3GțzG%~ügżæžĂN qȘ˜ĄRž€š!RlUr0Ű*ˆü$óț§çZnȘY!Ù:˜€t-ˆHńȚapž#7=œȘŻIÉK ž ŠéȘl…RŹ†ȘB*š)j†©,?S+L­u ŻŠyŻùNÍ UАÏ4ç•k«­4eÊŃé9čŁ\2;kHÎAÁû€'‚sÂjć"—€ ôì $Ś±=:cRÒ/ÿ…rÌč`ZP¶”^ÚńÜ±Ç.$ƒ‡„愇ĂmÇÄ»FTÉ—¶ÚHAŒœ.9șŹ0é5=ŠZX•.w\wLč§RĄËmwAX9—ŽBHSOĐ0>q`hû‰/-è©çțÔ]účSăm{ȘΔ GCXUĐÒò”¶(r|òŁL —֕€öô%óÔ@ÉĄW[ûžŐqÖcVŚ_Y6Š©ÎŹŃ'ßÏ ObæZbМŒ='¶Ș‘“û‡˜„ŸŸï0ÛŰŹ‚ŰÆôŚĐbÇp*ńN—ÚźńA»)b  œ&C„(‰‰/ț!Ć{ADú…šŻœ>cńŸńm\9@ž9›;ćà7v~;'F0„,˕Účțš/,204|>>xđ ]_Œjæ‚Qè€Ț•ÂÓ:'ŒŒ íVÌj8`}=ęúâąUjƒŸŽvï4Łźf‚í±9“¶ï'Š•ć†#„@E}ĐŹŚ‰’Êő3OL^ŠÆÇȘ]«B(<€t=äűŽ i+śf†H+ÚK·ˆ+”ÓĘ| '…w2ïsÚ Ž‘ń!jÊ­ù Ț{ą(B”:iŠȘ5Î<1ù“.€żżyKŽˆÓ4Eœ#vÎ9v튝:|Öă}ûHŸúâI”ö⚀ț‹?8ffíŽMÖîež8ŽfC™Ï=hëlrÓ „ÌÓn”ČùWO­I)?ś±#\˜Ë]ŻÏ|źÈÁ˜xÇŒ‡45B0âźżȚ|«ƒÍÆIeàŐçOżKŚšVÊÔ(šąȘ8çß^ŁŸdűÌ#Îőû!xœ8V–ëZšËžv»“gHȘ¶é­Óî âh-Ś‰“êï^ZtŰźáˆáц†kÌÏ5IWZÔòôČ§ïłŒJ„BđíÎJœń5˜șKqŚÌMŒ8>ÿ‰w“ €íNźęQL™gmfËČ.ŠH[uâžòêó§?dw­N‹ óMćęSük>%m.“”ÛŽÓê=<B­†€©ȚÖ([o±ç?h4%ríæą‰đä=kŁfÈÌ-ă…_Żuí4ehx ČN¶čv_s˓”›$•ëÏ>5}íž|æUDąs)f042Fk„ٍ{Ög`edwłțw+"Tj4Ż'ŐoŒ„êôJŁžÜžrćFJex”dp€êÈp߂¶ć›W13ûțyá^ó(P}ìäłçŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF ŠIDATxÚ̙[Œ]UÇßÚûì3sfNgzĄp€B‹iƒA„Zh#/ژÆűB$†yà±űbkb4Áš%ÁT‚Ń’äQbPPDŁF°r)‚ˆ¶(—V*PfŠ™łś^ëóa_ÎÚçœNÏc`%;sfŸuöú.ÿïÿ]¶š*çZü笂‚    HńÛüŸÿčۋàÔabS%^LčđÂ&o}mć†Ő#ó›Ö7“SïŸÒuÖ1ÒĆZa?›T•É FhYmËéŻNùĄČO•L‰TYXŒyïä ÁÈű©™Ú —BžiòR–»úRÀ©Č˜:æ“eŸƒ"8…ƒ†5’…yê”ÀŒđž]ž&œkêrž+„îüê_zù„»ù?-]sO_…uÊÂ|Ìììf€Am("]Œg>·yĆűÿäUĘęêß_ÍŽ)Ą#"ć_ÿžŻbOĆ2Țžlß«\tíUŽ04š@Ҋ© E„őhìŃWf_ÛœuÓ%izr O”!ăœ+/k-ÖÚòłïÖoȚZ~îÜÓëțŸxĄ…uBȘu)šŠ’ĆMXŻ]üˏûù+Ö\ĘgC“X„««É=qäè1¶l™dĆŰ(r+X*œdŒÁ!Ź…„a@Bàűńw˜˜XO !‰[ĄAEœș”·żKęĘY†CŸ~ìŰhdúS@Û-d.–Q„mafgO36ÖÌ-äÖv§ąˆ#‚ 1™2a"$iBŁŃÈÚ)Ö:Ô)F …š2ŐÇ[ož$ ˆún)•,ÀJć¶ï™\<ŁçœqŃ&«fߋ!šDőa’ÖSjő:fŁôZX j aŒÉŰšP8‰ă€m:Ę?„r)ŽźT$»[XE{ìéȚ†PĆćA[ÔSW_s6±4FŒŻ'4ŠČrÍ8«Ï[AD°i’y$8UKiê=Ń5ÏÒÒJhIĄ”œÀΝӄBˆ ŹKI’„$Ž @‹c„ż<óA04TgËÖÍԇ"E‚ óDVŽœŹ©WÚEšæđQńÆžŠhĂMs%Œj„”ˆáFŁ„Ś(Bct„;§òœą$—ŸŸ[­ȚÀ^dŹŸE Àh/)züđ’œ…żźß9ĘÁlZæFD„ôdIÌ:ÀX—?076łÊț–Çj;”áúSíöLéÔa|{› ÊŁÈ.< ]lQy†Ÿ=PB§(€œË%Ț­ZÒ{’©È,E U*-­ȚŠŸD7ŰdŹâ%Ł¶.ĐâŸæ„ơǟî»ĐÛŸc‘*Z'2ńrKßy€.œ·ĘŁț)9cmß1EEŸ¶zÌ%K»ôÈ5ZĆA>ćÓț;ČȔÈZŒò`őhRˌ-•˜(śzƒ`Ő*y©GćsóC”ÂpÒ2ęÆ@»_.ćòŹ^$2ÁI†ß'őĄm;ŠĄc§•jáAÚ0-úò°ßCœvŐn5]îűüȚ”;ŠJ*ŻgPQ/¶CS<€«G’C©2üö˜!ì[x­ü.Ł»Ê‰žćÊې2‹zRr‹_ïхô\čŽ(.ÎuƒĐ( Nđ’W;Æ€îê[Ú¶l'V©ZPŠlîáŒłoӛ¶͔ꟅœËxŒÀÀӇșłmŻ{KeâéëŠJ˖‰Čšs¶«]- Őw ٗȘÁ˜ŸnȘŽŹŸ|èÁœ$zűχ=ŻôèńŠdW4R šĂ/úW@+œIw36gy#Ő„žćëâuœ9§Šń‚ąÿɜæÊ{DőˆčÙč5‡_†û9ŁjâšőTČà{•Zâć W%3ˆŹ:|›Ü|G^9R*QvEö:1Ș) LnžäùgŸ/.ȘG%#IçûĂüLÛ1„èB†)jűæ(—]ž)·âeÏWŸyâ0Q=bród7„’0șhuuŐ‹ÂhłÉ•WȘ}°T+Í~ȘÜvą«VŸÒă5źČ\ć~Žc[­O<|Òc0ŚùŚżÚJvżÈĆț$±e 1°Š©©ĂŠŽÊèę@X >tƒĐ,Ï”ê!l|XJŽÇ± ˜‘?țÍ1țńò;|Ԗˆ|âœĂ]čXá‘J1O4@ò!ë0ÛŚtúŁŒț;”Èż9` IENDźB`‚çliFD$16ba0847-0488-1173-a2a2-eaea0594271azip.png•‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF °IDATxÚŽ™kŒ%Eǧșșï̝ÙÙÙqXX`Ù5* ˆAÖŹ~@‚& |#ńńĆ H4†ÄhQ1fÁ˜C@E@‰Šš  ”ÇòȚśÌîÎ}tW?T?ïœł»PI§ûÖ­î>§ÎÿüÏŁEUyœqßó *€‚( Ćœù|ęșX‹àŐăŒâ2„ßÍX»v’-O=łâЕ ë™LwíÜ„«]ÍD{Æ°_Ă.e‘ȘČaÍ=§•œő1(?4Ö©”È”N·ÏŽ­sDÓ»æâ)Ÿ]żát,IŻJ7ó,€üÁ+€ÔÆ€ZqdÚá:'Û=ăÓË'ő@ž+„nűÚ/ÿ°öž#OçMĘ+˜ĘxÎ+…>óóÌD›x,!ëöçN{ÛÔôAY@UOîŃgƒV"%tD€<Śçêđ*Ö4vŠ¶&Ź{–•ï;Ác­AÒ^Ÿx,Á¶’ćw>>ÿÌéÇŻ_—e[śË„ËxïËĂ9‡sźŒœ;ăąO\3êőuęNç…Lê34ˈ$űmĆGĘöȓžSH—ećáú].ËűíwnXôÿÁ”őcËSϑč ßËÈ2‡ËRV@Œ”’ŒçęŚí%„œs#œuń9ß7}ëzÎșűœò\śțâNv<żmїm{a+‡Ź;‚žsdę !‰E€‘ÁiôùÛïĘô°”«6/N„Țù‘ nŒèÚçŸčô ćșâ|ăEŚ–ŸđÙï±ü=jpJÓpxőŽ"AE<€6"ƒßț蓏Y»êîŚSąiA.Żłđ%îúÙm8çPU\æ#ûÊߣy4Ä·\YŻž^?%2ĐA T‘©Țu˃<œ$À+šąȚŁ.xŻÌ> Àög_ óytòùőŸùÛ5ŸĄ.ü(‚AóJ{)‘€hENI$$âےŒMüŸ8 (šqví*>zîüéŠß7ÖŚg_öćrnpÍpÔ1 †ÈÆȚ{’HHœ’yhE čr"ŠŒĆLÎ,ß·O5éÂ]úzq`(}8íŒO€æg_]xM€‚<\áŐK‹˜"ˆ&ʱb ‘-œ8@'őäJ”~ŃNžő_7čdfSÔßù€.ź€Ś§€ ƒ ź»àçCÂ\{țUy RÔ/-îH»ò@ceŠĐȶæÄAŻÔ)q”+\XbYKnùËY’lČę~S s0éÁu\œŸùPԘEŽÇ[Á‰ëű‚à¶1““-ó»oï|ă›W™»çe(z­qÙ5śëêÙ1R§xŻy Á*€Öčh2˜†ÒHœœSNűĐFzĘ.s»öŃ6žă7Bšyœóô Ț [TĄïŒz}ǞčÎÜß~óә~ïÛ~É üä†ê‡NŃwڐ)0Kîxč*őL±P'Źk·Yčf5ęn—œó Œüò:..sšwž@T˜ÈE†8I˜šœ`Ùä+f–Ó^6A§—±oOgKúÒăëÏüŰÒ%„Ó«ŚÍŃëWĐÍ Lú«‚@K.ŒçB6±ezz‚$‰èw{dYȗÂŒÒZXX`_§ËËŻìŠÇŹ\5ÍÄÔÄZYóö€ś.± É7XešȘÉ-Q\knDn%c Æ6¶X‘YƒBˆ N Á*Bä…ÌgŒűÒvZÛçotÿsËł4Ž*!UȘ.ź%WŽŒŸU§ąˆ#`bLPÆZÉw>gŻȘ^1Ö IlObÀóÂó[I"’%—”šëBč„ŐœVJ”›žÏeČjPZ„ÈQ‘ŽblbÉZ!«mZ-ìŻ1&PmĄpdéś#6>¶wéÊ„Đ†°ÁŁ”0‰T^PÎiJÀàlœš'1i–áRGd#°&Êß6DL‚.KƒEąˆ]qș?E}MtÍÓ ©ššCGr(yŃÂ.Aű` %ü:Ș‰"ZQD>6ČxőŰŰ"‘)Ÿ(ȘEÁ!Ù·EœR•šĂG„֎š„đ nš[Ѐ(6‰±qÂx»]ÂkÙ`kCt€äòśç»Öjï‡j~@ ArÁ€0ž6YÇ7è4šàń Šœ—ÂáK,QÄFŽXSÀ°/—–JűüMÖÎ%©æ‚h@yÍ€ŃZŃ< j­ŐB žŸd·ÛŐ \Ÿ'šaÏ;`#°9?p|~Ž"oò‡KïƒçbÖKMæ|“›>EË]ŻšŁN"…u‡!ŽQ•Ë7Œ{ĘÉo|gšĂó·žÏîO^Ž?ìŰŒçȘĄ.Ö %ű<ęšÇÈh”Űbű~ó›#|GlXCüç+yâáÇÙ±u[©0_DáüR«F+ Đ!UĘűê–md™#Kp"|íá~(:Ś“ÁŠ„r0ç/LÆ[h*5Ù>ï„œs{™Y5;”H U-È' K*eE©ŠÚäțĘ+ĐÌaČ4ŒŰ…CŒ–‡Ńps$RÖŹ1ÄQD‡E3Ç=Û§;Ź%ö”ŠìȘyŽ.ŸągU)ÓÍSŒđd^9efŽ±‰1țńŚÿ`ăű `G 'œ•Sü™ŻC„j—K2Š€äVBĆZ…êèîŽȘY“·•eă-ŠŠÚ„@ŻÛÇ{%ë„C0Źç{”ÊĄQœé€û|~Žx-±]ÀijzِPł_ęuû"Âö+ΩÀüîœĄcăę?ąŹ­«H>œˆ—ÙźÔs.Ą¶LźőűԍfÔ»Šó)Ž—nßt:=ŒPۘŃĘ_†­ŹPOl‹‘Ś$ĆȘŃÈ»l»wÌ ”oŚ\} ±ÖČ0b@·›"FȘî…NShŠTU€+‚V1őčđ_(àƒ2ÌÌN ՞°€2¶rj‘ìăę(x }•*Ł”H“Șœ*ŠæCN\ŽœWŒzœáïJŠÓ©: vÔșНŒâčCM„ZÍC#íӒ]EjÎ]ä‚,bÊ1ș¶čyË:œwÍíH>w%l{šìžÍĂĘDa(ҖìSùpŁ!u&ȘђSm/;žZÔŒčùvoߝ—uÜ|)Ë?} ʱæç,EŰ};˜»ùRpYăż~·Ÿ7ŠÈ=Ê ™j~­­"ż,j_9[ŸUÓ+&+kˆAîÛ̊3/VĆ:ÚĘCÿț˙^>>ìđ{òź·–ïTj&ҍŽA'ŻŁpŰŒo’Ž—5żwûôoù.ŃÇż¶YǏĐč#} K]țR_2Ęà'æÁ VVj•^–șĄûípÿGjú4ń­èEôî«1ï:ÿđ]űm/.^Í9Wæ8őÎyș”ƒvTÿçȚj6í|•“?|âkÜڇ—oƒUÀȘuŻù’gÛƒö(Ț“=ËRZ™Ż5ŠTgQ ž4cŁy—ÂzșÉ5 ©Rçá{pSŒSNài\ #$±aćòäzÛĄÙ»š2±D>Ă‹qé~ ;Äő^Qc1%;).šaoy䕃ȆˆŒc(ìxu[UDhł«ŠèśÔR]ŽJź  ˆŻ­ŻŚŠȘ|ćŽ#OyƒŠŒ±Čœ."'S5‘‹>ĄRȚŰ1ŻȘÿ~#ôÿżœűż<ž};IENDźB`‚áliFD$10ef980d-0488-1173-a2a2-eaea0594271axml.png‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF ȘIDATxÚ̙[p]eÇëÛûœ“ää47Úæ€$-M‚6AäZ EÀ‘Öašb_œ‘§ŸäÁűÆ >űà›Ł3<ńXŠŃŻ#^`:Ž*‰ÚžBsBZ€Đ{šäìË·|ŰŚs’Ú“šßÌnwöùöȚk­ÿ­őÿŸ-ȘÊ”ÆoŽ]RPPD@IçϓčV-ĄUÂ@ń–††*ÌŐNöUʋ#ƒÿüčóșčș™rW7Æ°Šá¶3IUœĄL#ÔÌÎüh”šæ©9(KËgÏ\Ä)śžżXŰ`pGF·±ȚіV•ćÀČèŻû=(‚Uđ1š[À_Z€TpÌ_ΆKwč—;{{*șžçJBĄgŸ}ö'cccńŠw›oÛAh•„EK—–0ć. E‚eï⣟ÜĐû_! Ș;v,òJ$„Žˆ€ÿçŻćé•ÌiŠLnN4ïc·ï@°žźAü†GĄŁˆ[*öŒúK'»eäŠ 8ł&$Ҕ±ÖŠG†„a˜žŻvm”9ÖZžyæ™s’ßË B+šX:K8ć[*lyùoÇÿTžńUY—A€G†+țNŽkę4ÍÍłïŒCÏó ŸąW@Œà”Šwÿô—śœ°'RZ·Œâ–0ŽxŹ‚Æà\T$ á…\Ÿžtń‡~Đÿœï>kÛVŁezz*x1Œ‰MšÆvgNšäù™žÍëìèFÄ ÆæN_âŰì DmHšŃ=Æ18ŽĄP,ČĄRŠ»ÒA_]Ęel„ŁçŸŻ~óäKŻŸ6òćĘ;}i‡ÏÿôŸȚ<ÒÇr ±Üoęق@#wV] X a°ŒÜ`~vžŸ5ĂŰűȚrƒ ˆ’= Áˆă`DP1X „BMœ”7” Œđđ—>sʝm.hâ« ąŹXŐÄH$磹Í\JQ2Æ0?7Kï@źëžmä°`C„†ŠàX!°§NHéĂKtvuÜńÛzwŃŽç€fKÈŰțšŁJáä\bG»5[Ć©(b đ}țujž· cŒÁž.ˆÄ‘»ČՈȘV1ź+ .Ć`™ś E‡bÛKJ%J°”B±…Ù5͜Hƒ_K–ÉȘš őwȚŠ·żÊ† ËK ÜąKP °aۂZ_cL$3Œ‰v\<ÏaÇ':Ú§Pl…6eŽ&H– ŻA±XLրČ,§æȚćŠŃQŠŠ—(•Š8źƒźqâ7E#ˆaàGˆ8ç țZő9Ó5mJ$ÚF€ógÏ1}ô›«Ü<>Ę'ƒĄœ?{ŽĆ…Ș7Țˆjˆ8oüțw”::ùÔ§?ˆȚ܂‹8Iƒ Aljˆäȕ”-ê•lÙš1}TČêsćòÓGpȘ^gëè[GÇČ*߆Ù'ÚvzûÒòzÏź]L=ʛ~­ŁŁŒOPî.·čűęqÔJ]k@ —I}QQeaaÚÌ4'k5næó»wÓÛ?í5•S%đ<æëłì|ä‘QQacőzŹV9]Ÿcú蛜ŹŐŰ2:ÊŰÄćr7ą’" ÍęČ-°JÚ.â2é7ÿû4ÇgfŰT­òàŁ{è菊'ET%~itó|œNww…ȚŸ4%ŁżźŠ:ÁèöńŽ‰YŐŠ »‹çÎráÜYȘC7E2*Ż‚ĉșxeÚtôÜ뇇Ę>N_ÿ@Ó™äzKÛ} ó>^©uwó™»îfû­·S›y‹™ŁG8>3Íö[ocËÈhVâ.=[;Á–‘Q qiMJo⊌đűûŃ#̞šqĂĐ0<ș'΄\éN¶2# Mÿ*n±Àö[ogd|‚=Â_ßx3Ó|îŸèˆ"ç{>§æf蜥‡cȚǚ*fNęDżŸń:«±áę±tŃŹ\KæŹèZ7wÓ ™ÚÌéE)Š|úÎ{Ű;ráÜYzúŁ€>57Kč»BOÿ@\ ł€ ÊïœÇ=Ÿ˜ƒŐæÆ)ùMńœ`Œ%FûU(nŠ+Ž›6oQ+JčÜÍçî{ ă7PŻŐÙ>žŠÁŽÆHÜŸóțžT&OÉ €Ä05iÛ\epÛ6^›îĂæ„rŠÜˆ›ir~đțiš Żà}^ﱂéq…Ê+ĘÜ{Ś”(XÉ*€æű›ą›–ÄT_ (œęìüâî,ŠÒAIúD*ŻV ń”7’Ś\ÒȚŸP^N[«©îÉąÜrž[.š€[(6 ՖuNúìš“ì©’äaÔ’@”ęAGÓÈijlŸÁ%ŃÓU`ȚAmąM|.-Č„ID’æGôzÛ4©}Z X qsĆVr Vù2„ÍśČÚs5—š Ë5m-6œĐ¶ÀȘWÓÍLŃŐ—Ê«NăßpR É‚RIENDźB`‚ˆliFD$ebc7ebeb-0486-1173-a2a2-eaea0594271apl.png8‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF SIDATxÚ̙]Œ]UÇkŸŻÛ;3éŽ Ł”v°˜6D˜Ą…6òąÆ4Æă‹ŸđXLˆáIŸH ò`ôŐG‰Aƒ"%€•bAjE[ÊG‘ ԙ¶3sÏ9{/ÎŚ>śȚvî-1°““{ÏŸûžœ>țëżÖÚGT•”ÆÿXRPPD@©ț[Îûß«”NÖ)6WÒ՜O}jŠ7NŒ¶áŠMË;¶Neg>8Ł[źŰÂDwck„Ł,RUæ>1AÏj#§?úć‡Ö:U %ree5ćęӋ3gŁő.‡pÇÜv.uŒ€€Se5w,g—ŒŠà2 Fd+Ë$Q`^zߟܞ]73=„—ò\© tßwî{xû”Ûđșù2źZž딕攄„ÌD—š“ŻŠ‹_Țč~æCy@UŒú·W ­DjèˆHęéÏùđȘÖŽ,ă­)֜ʧoŸÁ†Èz)Q'&LâéG_YzíÀîWçùé±țl4ûš\’yžŚ—”vàŸș.ô»ąBûkò<ç'ÉmŽëćäčĆ汁P@Œ$ńüoț°śgă(QCÈZ;Òțđ ŸŚžxű Ž9Vábă?ofëŐłôŹ%OsT„8D±«Á·y|Ï_Âđò§Đæb4ZÇÊw=Đ(tśAŽ>Uœè3*#YkÉČârêHAEda@ś?rôű±0Œüśk)Ńö@?—_D2G!"ŰÜźíE-ó[i§Ž^šHDš! ÈU{腗·ÿ)ÔimEg‹KąN[śhłV’öÒÚò՚jœŻȘ Š`ĐÒBY/#0IPÀ)„Ű@…ĝ‰>ư̋:‘ő;ïżłűń‡#ëC`cçq dNÉ$H©œˆ"ˆ©Óçąî—L¶ü˜ŽÄ·«•îœăȚ|Čf ˆ&(±b AXqÌA\*QÇE7æWGŽńÆ=AúÁ3z±D6žĂđóŚÜsÇ=k ‚SPŠIzA\è•Y% ŠőRyb2‘‡ę6ă=aš¶•0žÀ'*‹_èrÎqśÁ»qαÖÚțËt:UÜcL€ șë’"ˆ}ü…àakŠŠóËYùî]?1üwIjĄ _<ÈȚo|M·lîYĆ9ĆY‹Í-ÎÚČŽź(©ż „Uz;«|î¶yz««,ž9OŚ8vÏm%ËÖ:RNÁ‰) …šBj xőRËÙƕƧń㍶țàûndnûö7uöŠő€V[2ĄZÊĘ(qny™Ś_›4,]Ă$&™žÂY‹Ëœ^ŽÍrŹu8gq¶àZc arć•[ŰŒy†É©6Nӝœ`„—sțìÊÙ©Wv|ę+·d2JCóógßŐÏìŰÀj^`Ń_4‹‹g9úŚìȚu Óӓ ‚s`mÎêj•ćç—αŒŒJșÚ#Ï-ËË+ŒóïśŰ¶m#pòÍwžzÛ,*ç ‰"6]>ĂÄú òÔùêu›o±Ą) Ź‚Š2ĐՔž8~â$»vͱ~z’2%ùXȘœdŒÁ!ŒBÂ0  !pêÔ»ÌÎn% ‹ä„=‚Đ "NÈ]ÎÛ§Ț#yo‰uĘΞ<9›ŃĐŠ…leTi,ŹÂÒÒ9Š§§ EëìÛtq*Š0"˜ÀS(† B–gt»Ę‚}œbËDhÂPˆŁuq8Țzó4q@7ÜZ–ź`2UćƛźĂf–îd—™M3„&@Q6lžaÓe›#e͕ ÎDÙ8Mœ'ș–YZšC ­)Ž€’ŰżĄVDÁáÀ‚u9Y–‘„)bè‘bŒđçç_":„]»w’tbE‚ đDQŽœŻ©WÄËÀ„hâGxšb ›–4 JG„QÌșn·†Ś$Bwr‚}ûç˜ą}$'uAtŚá/ Ö/ą`Ž—”?>uxÍȚą·î_èc6­s# ąR{Č&f§ućKógVĆgœ­ŠWö ·îŸoŰ3„S‡AÊć Ô[Q\y@Űș ò #{ †NU:H]‹ż‹ŻúÄÎSŒŒ7"-™„ŠĄVą”ŐêđIDpăÌUŒdÔàÊ­æ”,-=őÜÈmÂȚ} ˆŽAèĐz;é; /·ŒœÀyăőw)kïŸyZűŽ5ä\ȶː\Łm”§|Ú.§G*%ŠŁȚX=šÔ:cK+&ê”ȚA°j›ŒÔ#ŠúčćŠÚb8é™Qc i`jč<«W‰LDpRàś™CŁChÏŸè;áSJ”ò LՍÄ%őŚn}5]éűrîæ}ó5•‹Ś3šš—›ĐéꀔPj˜xÌŽ,Œ¶țWĐ]kGÏrulHEœ©čĆŻś@z©\_Wûșqh'xÉ«‰1郻zà–Æ–Mb•¶„ÊæÎû ń†ȚŽÙŽÔjtRpźàń Ï̶Ăæ.–‰n™Ż-['Êvn,aŰT»*ZjäšČ/mƒ±pË|mY?ù0„9ûIôđŸ{^ÒăUÉźj€P‡_Œź€¶z“!.dl.đFj@œÀÏŐë8rNăĆèŻÔŽTȚÛ NbÎ.RsűežŸ3Ú&Ž“xš’ß«”Đ/Wž6™˜q<`ŐáłŰÜÎk8țÊńZ‰șƒŹ°Ś‰ŃîHQ`nç/y±fž8‰kF’țś‡ćž¶ïbŹłQmW`LNMrÍ”…i/œäśgÏ?}˜8‰™Û97Ai%ŒZCA]ûÁą095Ćő7~ŸÙXڕæ(Un“èڕŻ y«\*„J?§©mŚ'>r0Śÿé_’ƒÁïr”>Ël]BŒíêT‚ÜasÇÇeŒőb?Œ‚\à 4—æ(€$0„ʏJ‰æ˜ ”cs"Čí§ż;ÉߏœËÇmˆÈgŚ<Ü‘ëő©Tç‰È>b–F:ț8ÿ 0 OŽ6^‚ZIENDźB`‚ŚliFD$bdafd78e-0486-1173-a2a2-eaea0594271ac++.png…‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF  IDATxÚ̙kŒ]UÇkŸÇœœ3әÒBie„ÒӊASÚÒŸ(šÆđ…HÀBő›cŠ’L4!b‚‰AŽIńŁÆ`ą"5‚•G‘@ˆh‹–ÒR23™{Ï9{/?œÇ=çȚ[æN œÌÜ}ö9{=țëżÖÚGT•ĆƟÿ5Ł  (ˆ€’?›Í—ÿÏŚ"8uX§ŰD‰š ęèŻ<ŽbÍʁù çĆ'ß>©«ŚŹf 1ˆ1,iűę,RUÆ>2@Ëj[Îòè”*ëTI•H”…fÄ['ŠńFNNË]ț†±őœéèK§J3qÌÇgŒŠàb êÄ óÔÏ<ÿ–]žÒŸ]62<€gò^É!tïíśțjęĆëwò> ]u6lč 딅ùˆ™™Ì@ƒ ’4ŁéÏn\>òž< Ș;_ùÇ+©V"tD€ű[ž+Ă+_S±LiMșîÎżê2‡ïT nEőż?òòÌĄ›7\˜$'ôŒpÎń~hĄ…ń”šKPOÀ~-žàŚ/x2}äȘűÈu}+QÄ|’$Će­íú_‹Ęï\[Ÿ^;x˜Ä&žVB’XlđÄ^-ÿÍ·ę4}D–Ź@/!=ßăæŻßÌîûvsÓí7aZűśÏŸ82xĂÖŃčEc Ś8vèXćśźoízo4$ÄàÁÁ9Gè ŸI­_óÈb"‹Z=`èŹáSAă3Čh"»óæ;”“ÇĂzÈ-ßž…ó֝ÇŃCGyđ{5Ł.źï§žX3q Ÿ˜žœčSMȚ99Ëìô Ÿûô%ÄN‰­ga[ˆJss§ZzęöëŒèí'ôĘYWęӜoòÀ·8­Àę ^<« Æ€”)BÍś+ЁŰ*—źOçŹÉCû~›„áV?ŠȘJ˜’ÀUSŒŸîrÎŚbk;/SŻg”)ăa<ÆČZÄlÒKż2CC5óËg^ŰęÍûÍÛïÌH„N7v^ó5¶Ęđ]œȘNlçg-6±8kłÒ:M:ËP*„·łÊ'Ż§Ől2}rŽ†ql;—8qXëˆ8'ŒÁ |T!ʠԊ,łÓ ӏÿâ‡gĘóIŚ·ŚȚúE]łœÈjE&T3čÛJœšŸçŐWEĘ„«_ © áŹĆ%ŽV+ÁÆ Ö:œł8›r­1ßśY»v5«V08TgĆYĂ4Xh%ÌÍ.ŒyĂőŚm„ÿìÉ7ôcVĐLrì,úӆ`zz–ÿ~Í›.bxx°«ApŹMh6[,Ì·˜›9Ćü|“šÙ"I,óó Œțß7Y·n#pűÈë\žnƒsP Vž3ÂÀò’È>óùKV]ŃgC“X„««É-Q©æ€ ÓŒ‡śûĘÄiWíÖQÓeŽÏæźÚ1^Pč”z-%ÀvhJ éZ"É T90)1ƒß·đZy.„»ÊŽ%˱!E-HÁ-ćz.€gÊuDqŸŻ[ ąà„RòjǘtÀ]Kà–¶-ۉUȘ”<›—pȚYˆ·éMۛfZőÏB ΄<žcà©}ĘÙ¶ŚÜ»eâ-ÛÇ Ë‰Čš3¶«]- Őw äٗȘÁŰČ}Œ°l9ùЃ9;Itÿ_ś—ŒÒŁÇ˓]ȚH) Žr ĐżZéMzžž›±9Í©.mô4·óÏq%È9UL)(úÿ€Š™ò„ ÂZÈìÌlšŁ\†—sFŐÄa-ì©dÎś*Ž€”+\•LÌR<`ŐQf±±qàć…E™'àR'F”#E±c<śÌsÅ”°`$éü~˜íi;!ú†P…aò~h‹.N•ˆZŃ™>ęű~ÂZÈŰƱnJ%atŃêÔU_, ƒCC\zƧÚK”Òì§Êm'șjć+=>ă*g ĄÌÏQd«őI Ÿô8˜ëü[ŸÚJv9óőql‹bÉÈO%H6yÿ?.ùY_ߣïŰó͙y đ æüÆ„Dû˜ ČK(æDdʏ~w˜Ÿô¶!"_ôpWD.–—H%?O4@üë0#KùÊòaÿűÖ'Âá·ò@IENDźB`‚ĐliFD$bc26a07a-0486-1173-a2a2-eaea0594271ash.png€‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF ›IDATxÚ̙[Œ]UÇßÚû\zæÌ„zĂA ,Š ŠŽĐ†ŸP!Ń !>OŒb51} ˜€Qx!&•5jSŒAäR$m1ĐZšĐ2—ÎÌÙ{Żőù°okŸ3Ӟ3ÆÀJVÎ9{ŻłŚúŸïÿężËUć|ăOÿšVPPD@Éÿ›]śżçkœ:ŹSląD ]4̱#oŹÜ°zhnóúáűÌé3șnĂ:†ZmŒa öłHU™žpˆŽŐòœțè>?TÖ©’ ‘(ó ";3Uq „›'.ečŁ/œ* ‰c.^ö>(‚Sˆ1hX#žŸŁQ ÌKïÛùk™cŁĂșœçJĄ{żrïŻ/œüÒ}üŸ†źč€‹·_…uÊü\ÄôôęûȘÚsż{­?9Jb\'!I,6‰©ÄAŁ>ùÛ?ìüŃ BČ֞sáúńőìœm/í‘6|ăîúÖ]ÌNÏòŰOăăï,ùŒÿŒuŠő—ŒÓ±–$JPê ąˆ…80X Ÿxà;ț†kżŚœBBçąŃoœ‘ƒ?9ÈÉc'=fQîÿÚęƚ;ößÁĂś<ŒäsrËÄq:: ‚"â0 ûŒrűŐ0\ûûó a*OČč~QŰ{ë^Ö^ž¶X‹–ÿsÖŃi/ §|œfÂ:utą˜À@#H-Q$…T@țî/ŒŒ©rZhțIT•‡Ÿó/ȚÈÍ·ßÌÜ̏ÜÿHńż KeżęgśE šE»ž§N ž%ČšQ ŃæĐż}úxû–ăgÏk~ÆÉŁ'9đ㎆[Ë b@ ŒœsÔ!4ivÒ(-@ŁYcxŐèl­uŁ ìÄčærmȚ}ßĘ©ł~0˃ß~ßwò5Šž“ DžÖ‚0wâÔbőÏ/Zu~őüŁ¶ŸjG~Z—ŒÄûoß^ś!5°òEŰ°ëźŰs ggç™>=ĂüìYnÚœ•È)±Mˆ­ą@â ČJì”ŰÂÌ̂û•7…QTÂxLs$ŚűRÓTç[Û=Mł™ćŠ`L€ Z+œN„•ë0<Ü0ż|áÀüWśÿÀœț`Zz,°ÔŰw×ÙyËçtʚ&±UœS\Á<6K­łŁIwJ%ővVùԞI: L9KË8¶MŹ'NÖ:"NÁ‰I!V QÍ-È235?őÔÏżżêžï~Óő-Àž/ĘŠăFˆ2óægB5;w)ÄìÜoŸù6Qԛș†:Ńaœ”žÄŃé$Ű8ÁZ‡sgPŒ1„aÈƍëXłfŒöp“•«Fi”‡˜ï$œ™?Ÿxmóç?{],ęàùgÏŒ«ŸŰŒ’…$'Àî€?-ŠŠfxćïG۶ő2FGÛ=‚s`mÂÂB‡ùčg§g™›[ Zè$–ččyNŸó›6cŽ?É%›ÆQ18ZŐkÇ"‰ìó7_±æê> šLÁ*š(=UMf‰ĂGŽČuë#ŁmR©`©°’1c„°†Ih'Țe||=a(`„8ê„!pBâȚ>ńśŠYŃj~æńŁíșéO-KÈìüiD•RĂ*LOÏ2::œ šŸ[Ë*NEFcRaÂDˆ“˜V«…âkê#†BœČą^o?E= ȚwI©€V@(;ay-äâ)=«ó2Y5œ/B`„ PoÔë!I#ĄÖhxAR k!ÍVcLrƒ( Űń±ælÿÊN‘‡,òƒŠ€W”Lđáńǟ]\ȘžÌimbQUźŸæ lli”[Œ­#4ŠČrÍ«/XAD°IœZ$8S‹)êœŁk„„lJhAĄ)”œÀîĘÛ A,X—Ç1q!&@€Æ}î%‚  Ùl°uÛÍ:ˆą AZ"MGÎVÔ+eÙš|TŒv„gÜJžifAą„őa­ÎŠV«€WĄŐbŚîÉ,ŠhÉeûgZkŽV `ÏRÖπą9`Ž‹—”??qhIêź—Żßœœ‹ÙŽˆ(ˆJaɂ˜u€¶ .{`ŠțŽg•~ÛjéʊpęîÉҁ=U:u$[^’A±és h[§TžŁĄo ĐÉS)r‘ôŸxđ*:vžàÙo#R9łä>TÉ@ŽĐzI>‰n°ÎXĆ Fć\æ ùuÍR‹'Ÿx¶ïLuçźíˆTAèĐb;éj‰[úŽôàŒ4ú»dŒ”sŚ$•űŽ”H_ČĐË"±F«8Èș|ÚEV€i‰QlŹMj±„âĆZŻŹZ%/őˆąxn¶©VNș]Š_(ëćâ\žÖó@&"8Ińûô“ęChÇźíĐŐáSJ5· %Ló>ìw§=č[WN—>»víźÉ‚ÊĆ«TÔ €„kŠ‡tő@2(Ušß3„}^+ÿKéźČŁ§čÂ7€ˆąžƒÜâç{ô =źË‹ó}Ę 4Š‚ŒàUú˜tÁ]=pK©Ë2°JUƒ’GsçʉxIoZnšIŐ? )8—òxŽgŸì¶‹];W$Ț~ĘdĄÙ"PVccĂ2ÛUŃBQ}û@}©*ŒíŚMšőƒ‹0g7‰úË!Ï*‹Ôxy°Ë )Ôá§ę  •Údś26KŒ‘ê‘F—žżŽó çT1žSôߙÓLxoƒzŁÎÌôÌ"9‡Ÿ†û1ŁȘâzŁŸš9ß«dĐ/Vž*™˜A,`ŐáłŰĖË8üÚáBˆą‚Ì°W‰Q­HQ`bË/>ÿbÁpőFœ`$é~˜íi»š}CšÂ0y?ÜæČËS!ąNŽìśgÏ=uˆzŁÎĖ‰^J%`ôĐêêȘ…öđ0W^ęérc©fšędče «fŸČÈk\ečÊìE¶šŸxűd‘Æ\ś§?K!{ßwä|}Û"…ŰyW‚ÄaÇGe ô~ ŹúƒĐ,Ï”!l}XB”m‚Ȑ̉Ȋ>v”Ÿú.”!"ŸJăżË|q-wxImIENDźB`‚ÀliFD$f3bba182-0485-1173-a2a2-eaea0594271arb.pngp‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF ‹IDATxÚ̙]ŹUÇkϜ9§ç~¶œ„ŽZ Ž‹iƒA„{iĄ $‚"Ń4‘>xàÉ ‰!áA_4šà‹1ú@HŒ#1j”Ššh‘"PŃ…h„B뜷œśž™Ù{ù0_{Î9—žsI&ç̞=łśÚëżțÿ”öˆȘrŸăśŸWPPD@)žÍÛęÿE_§ë›*ńrÊEqüè«k7­YÜ~áXræôĘži##íQŒaš#€“Ș2ę:V«yúGśüĄÖO•ÌˆTYZŽyçÔÁÈä™čÆžK!Ü>œŐàTYN‹ÉȘÇAœB‚AĂÉÒ"ÍF`^xÇ.].Ź™œÓŐŒW ĘśężÜvù¶ęüŸÚÀ%łWaČŽ3?ż„iÓhE€ËńÜ'vŒOțOPŐęŻüő•Ì*‘:"Rțúm>ŒŠ>”•ńúdę^áâkŻBp„ĄA’NLŁ6Ł‰C/ÏżșŚöKÓôÔPž(CÆ9WžÖZŹ”ćÿ~mwÜwGOŸ~ï🋗:X'€jQ—ąiJ Y܄ÍÆ%żzńÈS-‡dU€iZžÖڞëâ,źU”ïęîŸțyüè1R›â:)ij±iBd #Íhæ‘ßîùÁ0F”ô›€}ŚŚîbjÓî9@šŠlŰŒśàö/ßΆÍz&ÜmĐżß8EšZ:֒Æ)iœB@CÀÂàÀÁßíŸ; /UCšćæÏĘÌĄÂ9W»~đ›rÓm7œë;|X%IvƝ˜f „‘0 Đ üöÁ—Ž||#Bß=\^çAțè 'Ÿ,ŻűÆćÿń”ăÙ;VæŃLßòÀwêèÄ ŠBŠ‚BȘțægÏœž űç@P§Ù‹ĂÙìT§šSœuœxíDÙ^>ăČg€ò^ńŒ­Ș Š`Đ|…’NB `ÏBd Ń‰Z#ÿxűÉŚG2`5ǝśĘÉŠ‹7•“?żêC`cçQ „&[ęf@eDÍVƒ±ugí›e0uńžȘ–üźh­ą<òĂGžőÀ­ đĐw*=±âüE0AŽcÂlČtQBŐ&íˆ_<û°ÖíâÓOêŠJ|ïî=Ż€űb6Žä‹°iï \qă5œ;»Äüé–Ξă–};‰’Ű̀Ä* €b«$NI,,,,»Ï^yKÇu#Œ§šG‹_éôć|}»OÓjćč)`‚€öšfÄ>țƒ, ĂZ;Œ5Íϟ;žô•{żgNÿg^z<°Ò±ÿ†/±ç¶OëÆ©‰UœSœ”ŰÔâŹÍSë|jҝ†RKœU>r㠝ćeæΜŁm»Š/$IÖ:bNÁ‰É ÖQ-<ŰČ0·4śÄOż»î[_ÿȘۀżűyĘČiœ8wo1'TóyWFœ]\䔌Ț$Ž{SŚ°ќĂY‹KNŠMRŹu8gq6ăZc aČyóFŠŠ&k±vĘíŃ–:)ç–Ž''^Țț™O^—È xțÉSo釶Że9-°;éÏ ‚čč^úóQv파‰‰ŃžÁ9°6eyčĂÒb‡sógY\\&^–ĆĆ%Nțëm¶nʂ8öúI.ĘșƒsĐl4XÁ$#ă#€±}öSWL]=`A“/° *JOU“{âÈŃcìÜ9ÍűÄ(č$ùX*œdŒÁ!l„„a@Bàĉ·ŰČćBÂ0‡$î„!pBêRȚ<ń6Í·çYÓn}ìŃcŁ‘Ì­JȚąJ”Â*Ìϟebb,3ŽTßȘŠSQĀÁ†À˜Ì˜0’4ĄĘngȘì› ĄC!j„Ź‰€ăŚOD—”J`%„òVmč^šx‹žŚÆE™ŹšĘ!0BĐˆš Â($mŠ4šMÚcíÒka#€ŐnaŒÉtĄ08‰ă€ĘlBù, YŁ˜šHÖȘ•À ÂŁ>Ę!4O5\ÆdȘÊŐŚ\M,íŃ6“ë' M€ąŹšdę†őˆD›&™G‚€3d˜ąȚ›șæ*-ŐŠ„–šAÉ ìÛ7[„ąàp`Áș”$IHâ1tˆ1FűÓ3/­V“»vĐlE Š*Aæ‰,97\QŻTeŁæđQń¶#<1PÁMs%Œ„ˆ5ív ŻQ„öè{śÍ䚱]$'eBĐlŻÂ^dŹŸE Àh/)xìđŠńÔ]/_żo¶‹ÙŽÔFD„ôdIÌ:Ķ .aŸüٞUö[«â„ęÂőûfȘö–Ò©Ă yśŠ ÊĄÈ&\x@{Ű:Łò { „N‘:H™‹dśĆƒWčcçž_‘Úœ„ˆĄZąćȘWÔᓈà†Û™«xbTMÀćZŽkžZ<țŰÓgȘ{öÎ"RĄCËá€kƒLôaÎn=üÇÞWúÔx…Ű…”êđS€Á ĐZmÒÇĆœŒÍ _€zŹŃnŸă<È9UŒƒïÌinŒ7@ԌX˜_è“sűižŻő%ŽšQ_# ŸWÉĄ%žVž:™˜a<`ŐáłŰôŽË8òò‘ÒˆČ‚,Ű«ÄšW€(0œcšçŸ}Ÿdžš•Œ$Ęßó1mŚ&ÄÀȘ1L‘ύrÙć™q'^őë3O&jFLï˜î… ÔŁ‡V‡0@PW±(ŒŽqćŐ­–zŠ9H–[ ]=ó•>Ÿq•ŐB(śsÛz~âá“>sĘżțYÙü~ ę“Ä–)ÄĐ(v%H6uŒ_ŽĄŸ„à=ŸpšŐy @30„íśÊˆj› ¶C$s"Čőûż>Æßțòï·CD>|ȚÍ]čśH„ŰO4@òÛ0/«ùÚò~:ț;!}«=çBvIENDźB`‚ćliFD$e25c83d8-0485-1173-a2a2-eaea0594271apy.png•‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF °IDATxÚ̙kŹUÇkÏ㜞ûìZ‹ôq±˜6Dž„…6òE‰iŒibä1&ĘÄ/Ą‰ A‚ > ?­ĄFE$h+" ˆh/ ·/€Ś{ÚȚ{ÏÌìœü03sÎi{N I&ç̞=łŚăżțk­=ąȘœîűă?› *€‚( ùłÙxù>Á©Ă:Ć&JŽ˜pțù#˜~ké9Ë‡æŚ­‰g?˜Ő•çŹdš1Œ1 tűęLRU&?5DËj[ÎòŃ)?T橒*‘( ‹ïĂŸ F]țșÉ”œéїN•ĆÄ1Ÿń:(‚Sˆ1š/ÌS <óÊûvárÿےń±=“śJĄ»ŸŚŻÖ^Žv;ŃĄ+Îâ‚M—bČ0Ńl.`†őd1šûòúŃńćUĘțæßßL”) #"ĆoyŹ Ż|NĆ2„9éŒ7ùô—"8|ß q+"š‡ű”pìń7šomßžnM’Ő3RÀ9ÇG}D -ŒšE]‚*xđkÁż~uÿsÁÄăWÄŻé[‰"æ“$)NkmŚu~žî~çÜòy`z†Ä&žVB’XlđÄ^-œúÍï·ü,˜x\ö€”ö”wȚżłűߜmČçĄ=úś!nžăö<Ž‡ĂoFUÙyÿNnÿÎí=ßńßCGY”f‚–”$Q‚Šz‚ˆ"bÏ`Ő»î±?lț«ïŸ}w?pê B9ŸoûömĆۍwȚÈ=7ßS<›$ k'hÎ6OúźÜ3qœžN5OA±ï‘ÀO{mÿëŸö“§SÂT^ždgrÊcŁKG±ÖČûĘìž~Î:v\żƒĘìî ©ÄŠù-3ˆSG+Šń ÔŒÔĄ')€||ÿ‰G_zuuß1 NÓ;‡łé©NQ§8ëÒĆłÿꎞ>0}E9oÍy(éuț|>ŚY—zQÁ Y¶‹[1ž€‘n%‚À'ŹękŚł‡>t"0žá¶ŸŠš›ăÁ;,îíșoŚ~śZŸśáÓdbđŒ`Œàœ#ô„Ű)‰ƒš’)'ąH=`dÙŰń ń%Ï?ĄqÎí9țuÜúÍ[{ręÌô ÖYfŠgN-żÆ#­„ŒÁóó Nc vfJqŃùć‹»lžlł}đŹž*‘ő ÜSuț{ÓĘ7ńÈœœòÉ @1&„LjŸ_ âTŻŰ*—ΗÜĂ5ytïo“0ÜìGQU Sj:·xŻó–ënIă#;ËśîŒńNfŠg8ŐóŠ^ÏjS0ÆĂx%”î öRÁęÊ8ŒŒÔ̞—[űÁÍś™țŚ”źZèdÇö/~-_ÿȘź\Q'¶ŠsŠËXĆY›•Ö™hÒY†R)œU>wő­ĆEæfOĐ0Ž“«ˆ‡”ŽÈSpbRˆ>ȘÙ^­Èrlnaî™_Ü»ìÇ?úĄë[«żő 8g”ÈjE&T3čÛJŸŸçí·EĘ„«_ ©àŹĆ%ŽV+ÁÆ Ö:œł8«€bŒÁś}Î=w%+VŒ3ę|ß»[¶nB€ B‡ËIÇ™”rKßy€.œ·ĘŁćU2ÆÚČuŠŠeÚê±/YŰ„GźŃ*Č]>­–Ó}•i‹Q,Ź%šÔ"cK%&Šč„`Ő*yi‰(Šśf‹j…á€3dúvSÈUČzžÈD')~ŸĘÛ?„6oĘ;|ZąRÍ=HŠê⌈:k·Žš.s|6vĆÖ©‚Ê„Ô3šh)¶CSJHŚH„Êæw‰üŸ…ŚÊs)ĘUV,Yźˆ )Čh)@ n)Ś{t!=Sź#ŠóuĘ 4Š‚JÉ«cÒw-[Ú¶l'V©ZPòl^Âyg!ȚŠ7m/šiŐ? )8—òxŽçśvgÛ^c§Ê켜*,[$ÊjnÌ`ŰźvUŽ0Tß1g_ȘcӕS…eËɇÌÙIąûțŒŻä•=^žìòFJu”K€țĐJoÒĂĆʌÍIŸHuiŁ'蝮+AΩbJAŃÿ'5͔/-ÖBŽ5őš9Êex9gTMÖžJæ|Ż’AKJčÂUÉÄ â«Ž2‹Mźżęoì/”(:È<—:1Ș) LźŸäć_..Ź…#IçśĂlMÛ± Ń7„* “Śđ#Ă\xQȘDԊÎűËÍ Ïì#Ź…LźŸì† TF­ € źúbQá’Ë>ß^XȘ•f?Un;ŃU+_éńW9Se~Ž"[­OJű€ÇÆ\çoùl+Ùüć@ÎçDZ-Jˆ=ïJ8lòŃű#__ÔïcŰó͙y đ æüÆÇ„D{› Čs"ČúțßÍđŚßć“vˆÈgO»č+"—Ł%RÉś Ì:4ûڝț$ÿ+JźÓëxIENDźB`‚ˆliFD$7d242227-0485-1173-a2a2-eaea0594271apl.png8‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF SIDATxÚ̙]Œ]UÇkŸŻÛ;3éŽ Ł”v°˜6D˜Ą…6òąÆ4Æă‹ŸđXLˆáIŸH ò`ôŐG‰Aƒ"%€•bAjE[ÊG‘ ԙ¶3sÏ9{/ÎŚ>śȚvî-1°““{ÏŸûžœ>țëżÖÚGT•”ÆÿXRPPD@©ț[Îûß«”NÖ)6WÒ՜O}jŠ7NŒ¶áŠMË;¶Neg>8Ł[źŰÂDwck„Ł,RUæ>1AÏj#§?úć‡Ö:U %ree5ćęӋ3gŁő.‡pÇÜv.uŒ€€Se5w,g—ŒŠà2 Fd+Ë$Q`^zߟܞ]73=„—ò\© tßwî{xû”Ûđșù2źZž딕攄„ÌD—š“ŻŠ‹_Țč~æCy@UŒú·W ­DjèˆHęéÏùđȘÖŽ,ă­)֜ʧoŸÁ†Èz)Q'&LâéG_YzíÀîWçùé±țl4ûš\’yžŚ—”vàŸș.ô»ąBûkò<ç'ÉmŽëćäčĆ汁P@Œ$ńüoț°śgă(QCÈZ;Òțđ ŸŚžxű Ž9Vábă?ofëŐłôŹ%OsT„8D±«Á·y|Ï_Âđò§Đæb4ZÇÊw=Đ(tśAŽ>Uœè3*#YkÉČârêHAEda@ś?rôű±0Œüśk)Ńö@?—_D2G!"ŰÜźíE-ó[i§Ž^šHDš! ÈU{腗·ÿ)ÔimEg‹KąN[śhłV’öÒÚò՚jœŻȘ Š`ĐÒBY/#0IPÀ)„Ű@…ĝ‰>ư̋:‘ő;ïżłűń‡#ëC`cçq dNÉ$H©œˆ"ˆ©Óçąî—L¶ü˜ŽÄ·«•îœăȚ|Čf ˆ&(±b AXqÌA\*QÇE7æWGŽńÆ=AúÁ3z±D6žĂđóŚÜsÇ=k ‚SPŠIzA\è•Y% ŠőRyb2‘‡ę6ă=aš¶•0žÀ'*‹_èrÎqśÁ»qαÖÚțËt:UÜcL€ șë’"ˆ}ü…àakŠŠóËYùî]?1üwIjĄ _<ÈȚo|M·lîYĆ9ĆY‹Í-ÎÚČŽź(©ż „Uz;«|î¶yz««,ž9OŚ8vÏm%ËÖ:RNÁ‰) …šBj xőRËÙƕƧń㍶țàûndnûö7uöŠő€V[2ĄZÊĘ(qny™Ś_›4,]Ă$&™žÂY‹Ëœ^ŽÍrŹu8gq¶àZc arć•[ŰŒy†É©6Nӝœ`„—sțìÊÙ©Wv|ę+·d2JCóógßŐÏìŰÀj^`Ń_4‹‹g9úŚìȚu Óӓ ‚s`mÎêj•ćç—αŒŒJșÚ#Ï-ËË+ŒóïśŰ¶m#pòÍwžzÛ,*ç ‰"6]>ĂÄú òÔùêu›o±Ą) Ź‚Š2ĐՔž8~â$»vͱ~z’2%ùXȘœdŒÁ!ŒBÂ0  !pêÔ»ÌÎn% ‹ä„=‚Đ "NÈ]ÎÛ§Ț#yo‰uĘΞ<9›ŃĐŠ…leTi,ŹÂÒÒ9Š§§ EëìÛtq*Š0"˜ÀS(† B–gt»Ę‚}œbËDhÂPˆŁuq8Țzó4q@7ÜZ–ź`2UćƛźĂf–îd—™M3„&@Q6lžaÓe›#e͕ ÎDÙ8Mœ'ș–YZšC ­)Ž€’ŰżĄVDÁáÀ‚u9Y–‘„)bè‘bŒđçç_":„]»w’tbE‚ đDQŽœŻ©WÄËÀ„hâGxšb ›–4 JG„QÌșn·†Ś$Bwr‚}ûç˜ą}$'uAtŚá/ Ö/ą`Ž—”?>uxÍȚą·î_èc6­s# ąR{Č&f§ućKógVĆgœ­ŠWö ·îŸoŰ3„S‡AÊć Ô[Q\y@Űș ò #{ †NU:H]‹ż‹ŻúÄÎSŒŒ7"-™„ŠĄVą”ŐêđIDpăÌUŒdÔàÊ­æ”,-=őÜÈmÂȚ} ˆŽAèĐz;é; /·ŒœÀyăőw)kïŸyZűŽ5ä\ȶː\Łm”§|Ú.§G*%ŠŁȚX=šÔ:cK+&ê”ȚA°j›ŒÔ#ŠúčćŠÚb8é™Qc i`jč<«W‰LDpRàś™CŁChÏŸè;áSJ”ò LՍÄ%őŚn}5]éűrîæ}ó5•‹Ś3šš—›ĐéꀔPj˜xÌŽ,Œ¶țWĐ]kGÏrulHEœ©čĆŻś@z©\_Wûșqh'xÉ«‰1郻zà–Æ–Mb•¶„ÊæÎû ń†ȚŽÙŽÔjtRpźàń Ï̶Ăæ.–‰n™Ż-['Êvn,aŰT»*ZjäšČ/mƒ±pË|mY?ù0„9ûIôđŸ{^ÒăUÉźj€P‡_Œź€¶z“!.dl.đFj@œÀÏŐë8rNăĆèŻÔŽTȚÛ NbÎ.RsűežŸ3Ú&Ž“xš’ß«”Đ/Wž6™˜q<`ŐáłŰÜÎk8țÊńZ‰șƒŹ°Ś‰ŃîHQ`nç/y±fž8‰kF’țś‡ćž¶ïbŹłQmW`LNMrÍ”…i/œäśgÏ?}˜8‰™Û97Ai%ŒZCA]ûÁą095Ćő7~ŸÙXڕæ(Un“èڕŻ y«\*„J?§©mŚ'>r0Śÿé_’ƒÁïr”>Ël]BŒíêT‚ÜasÇÇeŒőb?Œ‚\à 4—æ(€$0„ʏJ‰æ˜ ”cs"Čí§ż;ÉߏœËÇmˆÈgŚ<Ü‘ëő©Tç‰È>b–F:ț8ÿ 0 OŽ6^‚ZIENDźB`‚liFD$39292081-0485-1173-a2a2-eaea0594271acss.pngż‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF ÚIDATxÚ̙[p]eÇëÛûœ“äää*”§-I IĐ&^±”‹ÂŒ§eÊűà‹3Ÿb‡Â‹#/đ‚>8N èk%„ŠŠèˆ·ńÎ8Ž"‰ÚžJs-RlKOÒ$gߖû~’Ú“8|3_ČóćÛ{ëö_ÿ”¶š*ŚżśÛvâx>źăâ9>EKQÄŚ2űj}é„Ÿïyʶ·|«wČł.”àÙgŸ`Û¶mJÉïčč9Ž;–ü}űđa|ßgvv–‰‰ <˜C)U1 ËF„ (Z‚mBí—,R!,(”šôu/:>'≉ {ì1șșșšŚëLLLàû><ùä“ÉzLLLđűăÓŐŐ'ÆuÒŠ`ŹĐEŐ,[ą ]Ç  h‰‹Ž"ßÿóó~±oć\üœ^5?òÈ#ŚŒűl2ÛpÊaŚíûžmï^V—WYčČ„wȚćÁ{ÆpĆőC\_QÀ Àń7P\Wƒ‡oyĐvœŒ&d”0Đź>ł‰êZ{›§UlOžž CG{) âŹÿ[a@ÛčušTJæ{ŻœŽòŐŻ}Û\|·.k,p”qïC_æțę_Ô-hĂőS!<Ś#üˆZ‡Ž9dąYJŽz«ŻÜ¶ś.œFƒ+‹+|— oĆő|?À PĀ1XŐŰĐp|/Ż\țʱ#}ßűúSAËlŽ­œLww'2o|&TŁs§Bšdę3'ÜŚȚ։ˆAŒ1̞«sjú<ŸçŁŻá=Æ2X–ĄP,ÒU)ÓYiŁ·Ż›ŽÎ2A„­ûÎ/|ćìś^țíĐÁ}{]iƟżû‡·őŠĄ^V=è~3éO  ĆY·@đ}ŐŐóÓóüă)FFÇpVx^ˆXĄ‚ F@, #‚Š! T(Đż„‡rWÏńÿüù}à“-4‘‚UPQÖT5‘%âkŹąy_JŹdŒa~všžț^lÛÂł 6àĄÀ"€ Ą5T+ŒÀcáÜż)ę»N{GÛmżšé,šÖĐŽ„ŒÎfTI5_K$h|nM«8E xźËżæč~ç ÆŒmƒH€ù(+șj ÛŠ›öb˜Ÿ;OŃąŰrI©„–žPtÂtMS!„Gkq™ŹŠȘ0óæ?ééë„ÒUau„]ŽńJï7Y-ÔŻ1&Ì Æ„[6Žc±gGÛRë.Bs‡ #Zc“H §A±XŒkR"żfçžax˜b[…bććJ„"–mĄ€mŹèMĄBÄ"‚ïčĄE,‹Kw#E}æèeRI›1·à҅‹Lž<Á–­Un Ą\șp‘ć„%ȘŚ_ȘXŻțæŚ”ÚÚùđG?NWO7vÁF,ƒ$J ‰ e…–éȕőJZ6jä>*)ú\Y\bòä ffŰ5<Âźá‘…ąûÁ0}æ 7Ț@WOoŻwÜs“'OòÚËźáaFFÇ(w–›@.z€”RGû,‰ƒ_ATYZZą65ÉÙZíƒƒ|fß>zúúĂ~PNÏq˜Ÿ™fïęś'ź«năȚj•s3łLž|ł”;‡‡Ł\îDTKB>_¶$’€‹&ĘFƒÓ›äôÔ[ȘUî}àAzúûÂí1ˆȘD/ ožŸ™ĄłłBOoąŒĐ%Ăż¶ R`ŠVăôÔ$ӑRFFÇèéë‹Đ:„òŰZ¶@â:uűŐO~̕„%¶ rÛȚ»R˜'۱˜­ŐŰ52’6í’˜ïô  ÓÓŚÏï~ń 33\·”JwoDbën ˆ}…ì)?ęÙû©MM2}ŠÆùcÏ32:ÆđîŃ$‰Șč†Ęć‹xśâȘść4ÂkX«Âò•%j“ás· 2Œ{”ȚŸț\ƒL2č„ć<JŽŽÎN>vû§Ű}ó­ÔŠȚ`êä NOMČûæ[Ű94œąS”„§kgŰ94L!‚Özc1†ĂßNž`úLíƒÜęÀƒQ,e ;č3TĐÆ`4Ȁæ~*v±Àî›oehtŒżŸ<ÁëŻț‰3S“|âλéé5ç:. łÓ|úłśE~qȘÈsfÎÔxęŐ?qĘÖjtđŸˆșh Ś’ +șŃæn’4e›țŁ(…B‘~ònŒyśâșû ^˜ŠÜYĄ»Ż?‚ÂT!šòÎ[oqÇgîăș­Ő|â”lSqçĘ©3”C»G2˜$ÀÈ·îœ+‚Êű))HdŠ·Í ƒĘòá5wA†(§Ì(č‘ç;oŸCêÀàżÏò=Öxz„PYŠ›yï†b…@RЌÿ&ÖM 1áJO_?{?·/Őąä5(qžHèŐZ"žűd9—ŽȚŠéthÂ{R-7]gÊ° ĆŹóeJóśČȚs5šËÍ”5Ÿ)nŚáy ƖŃőKću#‰e‚LŒ%ĐM҉€<ŠIîPšq'ՔÇ%Mă&‹hæcŠj6aj"Ÿ4 î7Y ć<MhI‰Ű}9͒¶‹’:Zț SŒš[JSŚÂêșӂMnr][ÇŻuìÌLÜ*ûÍ-+ü:Ÿq•ÍșPdgÇńón#MAȘW ‰æóg Šk4Ï:@àș~B!6ìBqW/ÀśȚ/cC8ì‚őžŰČÍæ,P° dìŽśJˆ„Càű s"Čë;?™áSoó~"ČûšÍ]čèÊdÌj àŸÇ2Ôe3_[ȚOă?9Țæœv>sSIENDźB`‚RliFD$09ed4b52-0484-1173-a2a2-eaea0594271a html.pngț‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF IDATxÚ̙[Œ]ŚYÇk­}9çì9gn¶Ç—ŚNlr#©°’( š܅UoHä äńRE<@TĄ‚*"ńPą…ÒˆÚšš0—¶ ÈIê$NâÄöű2žÛ93sÎÙ{]>ö>gΌ3ă‡$KZ3{Ö|{íïżŸû·”ˆđaă_ßꈔÔàĘj}ôy@‹"HÀÁ;Ąè;nrńü…ÉÓYśŰțŠ]Y^‘™3d1ŽfW#Ú ‘ˆpüPFîe“ÏѱŰB'B  œ~ÁÒB“MŹŽăVp;~7w:v ˆĐwźœăï (‚€E#QŒíuIcŁÿwÉś‰ÖêăMč“}Ő7źÍ ŃűTx„^· Ó饳q-Áő‹öÏĘۚž# \™ï}Tüsű (Q€6/ˆk QšŒó\穏ĘćÜÂźT{Łó·NÜ`ûÚíÖwC›śs|P8ńHpˆsUÚM”ÆGțùìÛÿÏ}Sí €óÂèŰŸv»őĘĐŸÿȚ{8ïčĂ9w–DC€@i…I“Gÿć;OœȚ íC`tÌd'űüÉł<ęŰ"3Ù ž~l€§[ć0\Đ<ęŰ"Ÿ?y–™ìÄpíûúž~ć*Îyrïq…Ă–Ä(±m4DæŚ^xéńߋą}êŽ%pêžÓ<ÿçxöćINĘsšg_žàٗ'oąŹùżàÔ=§o+ï=Ț{Ź-g‘€F A$ąÈ &úÒ ŻœęÓ;ywóâŚ_{ŠùÎhŠĐŒÒŽÒ Öÿ?ÚáÇȘ0"" ä…ĆhH•BQÆG…@dp"/ță+gïȚ»­n”8`ìvc'47ùl%(4RE;›[Œ­‘„"ŃÇI-{śkg.e·—€żÙkm_ü=șțaÏ·Ú„AiŒVh­!… ‚ P8„U‹iNŻÇŸŐ¶ûâ-Ękn‘ m_üęÌO­òÌ·ÇoąčŐó­ö=a• 5Q%c‰'1jš:6@RŹ©FÂóßÿšOŠ7Ćò™›6U_x±ő‘Eâßÿ ‡=Jn{äëmZ ËŻÿÊĂA°Ÿ`œ € PxÁÁzX[ë‡_>ń QQlĄùGœD€Í:ő,ŁŃl19Ț,xTÿM©Dіuh6SęW^èęțü…^^í œ“ÚI:ęÇ_ù¶ìÛSĂz!„@g!ű*”DàòŐ56șÂL돻ŁÔMŸÜŁ*”:òŁORXKŃÛàèxôÁœ+pȚŃ- ZktÖ˜8Bd È ÏZ»ŚțśűòÔÿ虰cúwgdî`“ąï @T©łož_ÆÙuö•¶_Bۜ+‹ śÏîĄc„!M3šă3tóœ~‘ł¶Ÿ‚ò—èÛ>ȚŻ‚zʃÔk5#NZ͌±fÉ©qcœÜ±±Ö»hŻœ;öK?ÿ€ĘQ:}đSÇ8vl’Ÿ8À­Iÿ[ïź0±G1»ç9VęŹeÌßű1~ò3ÇčŒü=N>đFĂbÛÓí["„Đ©©±Ôy/{©„)A·Éąsltd„]°&ĄÛíČŃësőÚ*i3œo‚Ź•V‡î;üű šr" QČ„ZiwrȚżŰćțÙ/qĂ-0;Žìkół—8:țCČOÿ EłÀÊșçÜeáÂ|VŠD-SĄź_ƚĘĐÄă©cań>Š§j4)ą&(\pÌ_Y$]ìPoÔțîc‰ȚÙ,!+țˈȘxă­Žïÿ'ź»‹Ôt yöŚśíŃŒvE8óúßăX_ÚÀá= ő4B)M/ÿRü {ł—HŐYąđ.Đ!˜ëÄ”+\xżA+ˆ"EGԓ\ŸŽ@bHv\R „MŰèŰą‡5ßAa,ò4#˜Höò—gźqäÀƒŒO}Ł«Rđ‰"I4:ęEŸ§_ćÜ;z™,낚ą5ń…#8­±ZŽ.ÜD…áńÙÚúÎUš*|e ûąž|uč©—žfsZ‘*ĄÛ‡ç/Dœúìß2Ę:H)‚0Zá| M5”$ą–Š(û7Œč0ÁÉ{KʍvÌìžwiGŻGŹŹOpäŰJ)Œł„DŒa%¶»)êGXPJ! — ée‚†ó—2.KçsO|‘ŹÖ(;Ą”œTÍ DEŁ@‚°Êòä<ü9K~ŒęŠeŻˆhŃhŸÊÆÒ!ŽLaŒ.śPŁ7vWÔ ŠË- E!hîCŚ/pŚ?#20Ùl±Žfš'zZ*œV ë…~6(Ž‰Hê Æ|Ç~±ô}–Šk :Îùˆ4l@z•őŐÖ ­É±òûU+'mÔw‰eÄ6UIÔâ'šë˜Vęeb3FP8aeĘÓé†jzÖz^èۀu„-LŠŻ2SÿolĐaË=è+őN—B%BU&|țT"ĂxWA…BGÓŹŽĐvŻ( —Ü č°Ö ŐÖ{”Ÿ°‘úEÀ:A«č(Ź(|„fEAœé!ęÜâCŰtćÏžc±…Aê€ï= ˜hüö_“ŽšTEĐ*‚ą°efé=ôm`#‡~ ·Bá#–3CĐ 4V4.š‘ï "9Cđ‚Ö›R»ëÌA™Ț+†ąĐFŒi2>ö)KÉ~ą°NatY°;/¶ü_·Ź Xÿț휇čśĐÿp”ŁXí„Ž&-A Ș:C'(­G>«PČÙ!ÜqŰôC›ŁÙ4ž0hŽŽń"ˆ”nÓyè)c„ °Źžš„žö^ęà4F?@ÍàúEšŻ4iÔȘb_UyŰÀțv„BƒTąŹX‡?çf[ŒțÆSăMDJU J(ć+h»™69_„ „Ô‡ĄuÉÖoĂ»”Đé;(%ôș‡ŰŚPDqTșîA•Ę6w‡1@ڗÓÓ ÖÖço6«zw$Ïc4ć4xe{ßwSșÍdc–6‚`»ј0€őA—[Wo Č»‚&lë68čÿȚI—Û„ eàòB9}”‚ÜÄŒHŐfqe‹ĆY‡śę'J ë ö6ÁDőFŁ’Àvv ž‘D4TGîÁ+ôò‚PòqDńê x°Öa K‘[ŠÂâŹĂy_šœìúçhfš$‰“št>#ßÈÎ$ HUɌ8"}tŽ«W/“vxڣӇ@a]Y‰ćy?§ßÏÉó[ŰÒ+Eœ(V—âĐô§ŃF“53tdÊL`‹ț©]z!)OP+”iEŐé¶&šœ|h‚WÎ^bzz?iš !”`ȘT€|@|ÀKI'1I#ęï2Ÿß́ì)ŒVd͌ZŁ†Òz(©j’]F;”òÆH6oF/gfïšĆ{ϛïÌÓYgjr(xˆ Œ&5Q‘$1…”\Œ8OVŸenÿoŁŽŠȚš3>5‰"4șdX •łKÛôy{”V(æîšC+áêőuź-ŹĆcc zĆ|‰XkH`}ŁË•e”ïqhÆĐÊj€ą‘ŐÙ{pqcŒF¶őôˆ«Û1€o6ŻÄ”lu›Fæî>BZ»ÆűŰ œŒËjgk+‚Ò֕/k ŒQ43ĆŃE’ÆĂm&Š'˜Ú·c4ÚhÂha Íî”éD@cȘœˆÍž(Ă" Pì›=@ÖjČșŽÌXÖ/őŸ4ą’FEĂCQŐ>őŹÁÔȚ)jzɌցmŻ_G»—Àh21Žƒ›Óà(Yƒ$MÉó>ę~u;ăÉû9Iš •Š‘5hŒ5ˆ“=0֊ùm·”•”-Rß…„u8#Ùu‡ˆŽ&N4QQ«Ś >lŠâœZ—73Ú œÌàa Ÿ#ŚžČ5ŽíB…ȘPž86›ȘíčÁÖǒÁˆÈ°­`)_,Ęò-`ÄÎ鋳~˜BÜ€*"»€wOÊŰUs7ŠÍÇΰ‰ôI 6MÔűž@lúìbäòäC(„Ž>ś­xóë|҆RêțíN+„N­‘U]MŁû1cèìšœțIÿ7ŒÏ€-“2–IENDźB`‚ÊliFD$fbf50e48-0483-1173-a2a2-eaea0594271a office.pngr‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF IDATxÚ̙ϏdUÇ?çȚûȚ«źêžžÈàÀ€ * (ż 7FPcbbPúžrcÜč2q§[⎘(żŒEù‘ Łf‡așizș»êœ{‹{߯ê6T”xÉLWWżȘw~|Ïù~ÏčąȘŒÛőۋk *€‚( őgÓûĘŚőœA>(ŸR&[—]¶Ä©ă'öŒ`ŽqäCKćÊ[+zŃÁ‹ 1†č.7ËMȘÊU—Œ{míì^ÓöCï>Uą•Čč5áÍsocG{WȚÎö„ ܑ«źd·ŚLU¶ȘÀFčëç AĄÄ .ŁÜÜ ÈŹù˛~óVśÎÂȚć%ĘͶΔ0 1ŽșƒYš‚­ «öŻ_ˆ*ÎYč#Ï2Șq‰É]ńôkșČÛÀ˜Y3 [Ž1ČÆ{Š±Æś{R% šT@8gPr<‰0(òć‡ț±vÂčòÿÉ@úO”ĘÆÈôLRąĐŽ·!ę=š AńAšÔŁĄB« +ń3źÈ.ÿŐ±—žÊ.}HȚsڇöż >ęL)!(ê=>*_ÆUćńUInÀ ˆl‘úŚżœížyœ˜BS]eȘŠS”Ę!‰0 JUyÆȚSM*ȘIIn…ÜB&`ŹgżùÀŁGż3+œÌŹmT;Ć٘فUBȘ-=4ś†ű*Ć{OYÆ“ń„ÂJăDnÀ9‹Zś“țúÒçfqbvt> No„”ĘzŃŠ.šúQ%h`<)±†ŽÒ8sÜśÜ±Ăï„böÚ„‚Ș4=ž–x[·ÌŠ("1Š`Rś‚r\bŒlw"Ëù`ôòœOžœ<úę]»űOüPzĘ^C4RD "Œ1X##„È­àLT'…„uÂB1ÈXÚżŒž ?/ÿc­{cÛzjH…ä‘Š4PŠÎi[3‹XD06țŽ1XŚF=K–䶓  Ü_țé^Ÿï?*»—!šąIËIŻwȚ|ï5­ł&GĆŽź«]((ËÓ_~*¶L ç(Ź "Pz%łuæ@D‘ĆBîûÃUžu“É“ș‹ hdă&ú1ÂaÚQ“L†ŠmœĐúbÀ0ÆbŹežPl/b wœśai©0ś?śÀæwżś3óÖêšÌ§FC+9ŁTh!ĄćàBțòĆßlŃçòŚčîÁ;PĄÆ(b„Ń0çüÆ˜Č x˜„ɐœ”™Łh2!°X·íź·îțńOśßęƒïë\rș֍Ôé9a©òe‚ôˆMRÁ—ù2BÀh…ˆÁˆ!s–“gVyń•sT•'x9„HhÖČü„(ê4 "\|`ÉÄĄÁSVŸô,.Ű û/’gÒԏADđU3b-+Y9ÏPß1=™JGuŠ%ŻpĂ#_ ŰA=/Üú#Öś}‚›Ÿ)·xæÎÇ@„gž_§ȘJźżf„’ńò钍11ž<#X€ RlßÖÆLD9r~ŸĄ^êLChI>ˆV€oęTă\yQe°~:‰>Áć˜!.W—†lnÔe XË{‡87œ©IÏOQ+† őœęîˀ{~FŻțè…L|,Ô€/§~¶ș"ŻSÁ„c§Đ DFŸH„‰Ó€­gđz Ő{BóËÇßä[ŸœXfÊĄ;hš‡5Í4ӌŠ6âOê:‘v3„ yiéőNĄ !~‡ÖűœZCiíŒhƒ†Ùj ;Ö ,íȘD«ŚżÁRù,†­Țg_Xü«ÙíÜžz3†’gśCc'?ƒžöĐŁlùÓŒxæźf pf™ë.}"ć—^ôkF ómæÀëÔÊĄ–Ó)ąËć©íŒŽ1lbt«+€2ò'H‘Ú.Œ«S)Œ?ku‡À‡5Bg’“)i/n™] Mđ])ĄŠŃ1A žȚwČŻ†’ÏïßêLipÓŻ6ś,ÚęÜxűžęç!D\kú”€i˧óÌÄívA›x["@Àèžć‡ź^ą­f6bjL­ż[Ő'öo§ŒŠ†Šöź3Ï-#k3˜wÿźÄš…T„ÚÌ ·Ź~’[W>–Z!<êFž?y}+AŽłTą]Ôœ@ë•Gę{˜Łˆ›Ń±Ś ŠvEb ärk„“ äá,‚oȚ/ęëMüÚfÜ_wŚ]§Û„ŸŁ3ËiŽś9B·ï+>T-Äê­EÊHA$ŒF–ąHo‰q:çRgZ¶?7ÌÓF‰-șéÚŃs‰$ 2Dt‚è&A‰€jŁ śŠùܧ.•Ț‚[û[ù.ÔEۍèJ€ÙĐmłI/Əï=;ï‘MÛiuÛ©TÓ.#ńkOXšÄÌ\ ô:ț«7Ú?©i9cçł4Ęa‘VŸA„Nœ5 ˜—Z9èw1™"šdŽ4Ș ajúiïȚȚá‰ÒĄŽŹÒ3ü”zvóe]û'©Ûs_SśŽ›tŠœ·6ìĐyz§”m0dI źńÛ=©éՊn?Ùé-ÒXșŁòĘáwŠ°ç€PÊódâû°‘O$w(‰O4„sÇôwLa•„o$ÄÜȘ·T_>(Ś\û.łï»Á֙Ęe łPXƒŸ_NŽSwœÍgt@Dÿüá“Œđ·Śù ]"òńwĘJˆÈ ÀžNƒŹŐ–ÊśÙ‡”™Ö*äë?3˜Ÿ V(wIENDźB`‚ńliFD$dfc1d08c-0483-1173-a2a2-eaea0594271apdf.pngŸ‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF șIDATxÚ̙mŒ]GyÇÏ̜sïȚ»/ȚupìÄ16Űźœ4EX5„6ˆ¶Đ@‹ęÒ7!Ujń*B늈*Ń*ĄšŽššBTBPÔŠ@1$ąÔQ‚R„Q©_ˆǐÆϝŰëœöîĘ{ÏÌ<ę0çž{îÚÁw]Q˜ŐŐÎÌ9gÎüçyžÿórDUčR;đdGAAPdđl9_ïîEˆ Q ^é/{6mšâÙc?œĘ°¶œŽuęT1n^ŻĘp-íÖ$Æ°ȘæÆčIUÙv}›^Đá>ëmćțaä>UŻt—ûœ=ł€mŻ™_ÈŠŁ·uÛ+čÚ6€šÊȏ,Wę!*ÔeĘ%™5ß;șżè.LŹ™™Ò«YWŽxÇŚf~ț oă'ÜN·vČŒû Qé.őétș˜v‹Ź™ă—û ·ï˜^suîÜźCqŚć/„jèPGșOmî’ÿőŐ%=/iĘùś~ ~?rv~‘h­™IP(–ûό튭ŻđțÌȘ$aąÄ0űbè ïCm>–ăŃčîü·ăĂő|č–Okő–{„(x hôšśXIŰ]#Ûü/ŸúnvĂ7eUBQ|Ÿôß}‘úEAÌŃÄ ŸîśžXôMŚ ÏËÿäA~űŃ[ …/}‚/ˆEZç™ü<±çń>|AnÀ ˆl#ßóő}ęçW©/V[jŻŒûёùăwœ4Ž\;ț‘= Šú‚WÜę((lùÈĂițR2âôÉS\żi3œđ}Š[AD‘…5”ïÜÿí[ÿÛčuŸG\ aTœkíŰŸĘŐ.¶ęÙcÛ·›mŒ§śíFË9 ĄșV=sS!B (Ò/j€a‰P8‹‡{özêˆsëŸu%&Áűą –żPžÙ e?ępŹȘ•JęĐ-i\ȘȘŠ5üp­X„țàz:$U%j€Ś/°6I"·’TÊYpîû?žćŠ6đRŠs'ìűȘ(OÁ %Ûœ+`äRYæțíă_~äDûÊ*DÍûŚÚöOüWŐ?úÁ›‡ŽÍ§gvÜspd P_o”aĀŹŒbŒäV(ąâ#4,H ND‘fÆÔÜÌĆŹőëŠXz@_€V1Äò…„\žxßMPêï =ńŸ]ìüäáÔÿ.vȚ{ Z™k ŠÔ­I’íKi ƖFa Ö Œ8Ù@!/ATvŃÊùÊc_ùÜ­¶îœ”…4”ï6hŒˆÔGòk6cH§–¶ViĘśßł •4>üž]ˆDÀpäœ7ŠuÊ{U FHc5‰,ŒI”)BĂčš'\EP2 "RÎ)2ِûú†Ïó[]ż? Âhä˜FEcš‚.UćńßmSÍÇXö!Æ@Ô@ŒŠF h€ŒOGîE±œïÍŒŒòőÆXŒ”Ž&—±Mw#ó05Ő0ÿüűțî‡>ü7æÜùN„ì2N8걿»_ŚŻkÓ+=Ș/=öGB‘0”ŠŸÍÒ9ą ŻyÓoÒ[^fa~‘–‰ÜŽm=…„éGˆ QLR±ÌĄ ęÔ«Ś\Xè.|ç?=ś‰ßÇpï—Ńź›ąŽŸ§2Î) ŻQ')i3;öĂś3a#“żÿt'Żăbg‰S§ÎÒí.|@c``ŽÆŹ5dyÎôT›É©&łs3Ž&Ût{žĆ Ęg‹“Ol}Ç[~© À?|śŽțÜÖY–ę€WęĂ@N+^›úûwa.Œ@ÈZtwŒ™óŻțmșK=;YZZŠżÜĂû@Œ±< d;b-FCŒĐÈ2Öź[C{șï‡ÇnžeϘ MyÀ*šè„Qg)‰A_K©T–;hŁM˜ĘŒ]xc Æ.s8gńÎà€”"ŻF0$iš6 >zž;ù";LŽš»OLŽ§Ìxt˜B–ûOU†ÒôKÎŻąîêYƒY^€ö F$©‰1 Œs Rž|É>Q“ȘFĆ8'ä™c"πȏNœa©[LŽR*ÉÀ**w8œÓ!ˆÊ€Óœ6'‘„óHŒű”[Ak›YòF†ËŸáS(?Âé|1‰j€­Łß·ÌŸčxn|*ő\Wșm‘4;đž„Ts@l_ƒ»đB°ńfD€€R‡Ë|őšk7Q…ÌčòMé@Ä!„ąąàùŹ`Ăìtotšî’ŰfP”ĐRu€T„( :‹ÒßČwêK˜ÙуŹZù$Á{–é‘čŒš—»Žę8€3EÈłf’„$őû_ŒcÙ@ÔŽÀ€°TÆZž4ÉÊŒ/„ȚÎ7„çòVFF,ÆXŹ5Xk™œš$oæ4'šXëh4ròfNÖÈÈ9͉ Ź”ŰR:ć3Ÿûë1Ë*5; RAJ`U™hP*ûab&éro± 3±‚QW‚UŹłć‹bbžšQFb  8ç0Ǐ>Íxe€šĂ€nD«ł/ÇRő㈠€hN$zˆCòŽÆ&ö±Vûˆ ÆUšc$ÆXS_[ÚĘòË„™Ș$”)m8–cú‹áš*­‡? bQ…5_œ5`%©Næ6Ë0ÖaœĆ9‹Ë,™Ë°ÖáŹĂZ‹ˆ|ÊèŒ_MeBuš:‚*Š”bÖÊBT­üsăűwˆíY4ŸÄ=b±ˆ€è”ŁCČ(…g~@UA$AbĔQòűŽlhą+Tghőń€ČSßÇ,ž„ę-,ÜŸ€č/œ{  bĂ %©“ƒÁ€&yeAŒ©ś« %RŠQ±ËV]'+ÿPțŸ|đShÖäÂțˆ°f#ęÍ{°ó'˜|űo‘Ä‰ĂŸ± Šd·Á“H@lAČ КG֊•Fźk -ą$q+Š,ÍăÎÿˆbęNÔ6Pàü[î"NÌ0qđ«Lțû§‡ĄxM “S1`$…†6„ąęf‰‚ÇPшD†üJĆ6Š›ÀÌC:żòÁjR^|Ś‰­Y&íçšÏÿô+éJèC(JŰ]’ŠTٜ)ëđnìÍëhnkA55æсhçq§ŸÄ_ł…ĐZK= ŽçžeéÆÛiú:fń,/ûì;XYŠS—Ły‹0”…_ęaÍÆDł+˜q,(DĄæŒ†R—šÚŚŁ„5ßž PÎżőnè_€}h?Í'ż=ÿ\UáC jł4Ž5Žț†WQ\· Ó=íu€©G?GțÜAò“‡ĐŒfMp €w±z§–9Éà Üž6 RK\tE.6H‰U„sÌęÓȚtçńs›éܶ—ćżFŽÙć?ìt·ż‘ćíoÄtž§uä›4ŸyYš'ætȚü§”ü"œèȘè07蜗&FŠÜCó釐XzŐ[éܶśÇȘ„źÈLÓëčđÚ;žđÚ;†5ÛZU15‹Z‚·”‚[yòù©#Ìîߗ&mN˜hŃčmo­X!•Èe揑ŸŁÒî-" `Æš^>œˆŁ4Š0ńÄ·˜ûÊÀ8ŠuÛÁś8ûö?~˜©yæZF:Ì6eÈpőXJVȘYùΰą±ȘšŐ·šrŐüÄ2óàœšÍXxę»ÉOaéæ·Š7 ź8éKùò%Âś:IÔêŹZ/ ŹJ…Šę›™œÿŁt~y/3ț%ę—meáu@çÈőò{‰z™BGęóۈĂ^• •rîśSâm;gĐ'L]ËôC…ŸÛ̋żő©K s+ÿ8o©!)—55”+ŠTŠ\őwâÁbQ >"f’ą1ƒú@gÇo0żûèț>$ÿ$?tW7g_€šššŒżó…ÿś [gź@fĄa źeùéŽ!#ôƒŽ@D¶|æțÿáè‘ÓüŹ5čńŠĆ]y50]#À ű)cèŒUțYnÿ;ćÈKÇ &IENDźB`‚űliFD$c782a35c-0482-1173-a2a2-eaea0594271artf.pngŠ‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆFÁIDATxÚ̙[Œ]UÇßZ{Ÿ33gŠÓ‹ ”‹Lćb! Ű"”ąÄD}ÓOŸh_Œ‰ŸÈê‹Á˜ű ‰‰SIÁxÆB"ą(Ć¶ĐBK[:·sÎȚ{­Ï‡}9kï93=§Ja%{ÎŹ”ŚÚû»üżÿś­”EU9WûÁy@Arm1ț_ÎEđêq^q™’ô2.ż|†#_Û°eSgyîâ™ôÌé3zі‹èLMc c”h”IȘʶK;ôä [S~šÍS%W"Sșœ„S'Îb;ëϜŚù ąčmWsŸm$Œ*œÌłœžś{PŻbĐ(&í.ӎ­yț”ëȚ-LźŸŃóyź<ŽïäŻ>ręô=ŒË­·ČíČç•îrÂü|ә"žh‘ő’łw_»nęyy@ážœŽÈ»Țæ¶Æž(2š@ÚOˆ'ZDíÖì“/Ïżö™æ>”e'Æò„É2%sŁ__țä†Zÿë,~|öÜk3„ßëăŒ©C}†fVrćąv|ć/_xőéxë“2Ÿc\ ”țĘ;Šyüم‘ÖțçĐ!2—áûYæpYJË@$ F°íÖÇÿíí?G ăœČÖ”śŸM\4kùҝűžYPŰ{ߊêȚô„áÛg9ŚsœSȚ:vœ,sô#K2Č$„e…–…XÀX‘}đ‰ßíȚE›ćÿą€ŸȚ9Ă#OžâÇż?ƒï;‰sÊĂûNÖúçŸÎ9Ò4ż’~BÛJ„DË@YÔFß~âĆWïE‰Èč”',,;{fjžBmMłżF;~ú/8L’€ô–R&'[Xm„2ęȘÖ3ÆbŹejȝq›ü ȘĂÌLÛüâč'ș_ûú#æô;ó•7d”rú[?|J/ȚÜĄŸ9|æȜăőŚß\Yy*èŒÒ–fĆ<őÊÜö€Ę”4MŰși–]7^Aê<™óx±x/ŒÁÆȘ„' Ÿ8ÎvÏțćçßÛűđCßô#+đŸîŚ­—̐î-·šæÂ’j€T©Șï|ȚäÄ4Üȅ€Ścq~™ăÇOŃíöp™CœĂiŸÆXƒ”†žŐbĘL‡é™ 6lœejșC·Ÿ±ŽĐ=’{yîsśìIG*§/čbŽčč ô2-ŒčšéóČYVÜËûȚƒs*‚‰#ÖŻïĐjY’^Ÿ,sxï Œä€”ŒŒÌR·Çń7ߥÇlÚŒžÎșÎćréuû]#nh « ą€òÏç_ dp";ČÀ€zŰŸęĂc0Fˆâˆ(Čd‘!\ D#rošÖ ™ÏxăŰÛŽßžgrjbçO·FȚ‘U[È°7xY©@(|ć”bäŒŻê1"9LŒÉ•‰"ŒK1ïyEŹ ^1‘`",± ÏëGOpő¶KFW@Ż T7+­.tI]UEU@k혚‘”3ŒsÔs|žŒ1y–.¶IbÙ}ÙÄâè*€PÉGu!ŁÔ\ <"B·h©·bÒ,Ă„YˆŒ-Ț”DŒ "ž,Í=b-gâtœM} ș‚ˆ0ńłŻŽż/.ŒàŠÄ…ÓȘê;°&·Md#+ïògÊí k–ÆÛÔ+BIčȘĐ}໅U5€LٕÜTԙ¶AThôŠBÔ<Úâ-ż%tT+BhOMŽá š"HĄ˜”Śp…àktšƒĐăAM5.* ÎYNƒäsJžbdđZnšą{öĆœ (ń+rțžàžjÎ.Ăă7ßČ#‡˜ä—Đ…œÊK4Œì*¶ÌłîÍ;wÔłmeŹ7«G ÙUJtÏ.}Ą•ŐÔ’ˆÔì6RđčRJ 0ŻàEZ-É)?ÄÒÁŽJ3_•á…%+ž^<č§ę2TǃPî.­YóŻÏ<Pg2áołšŰuë͕• éYC˜Ôs6b)?ćÓ1iŽŽZńwŚ­eeXS‚8H`ZćŠR0ŐâiBL* ”s4Źl‹»ąăîV9@%ÎÀT5kȘäű­@xž­„R†—5 R-5)ćŒ4kOì§ÍaPyg`•>R j˜:TIćŁjŽRRê±K4ČđZ[Ç܋w]Đó€ƒ7üŠbm)’ëèy@Á”"ĄœZăjăžËúȘ$‰«aY„QqêȘ!є?pŠź°|gćü4uU 1~ ”9óžÌó~ic}ˆbûž l#s~ˆ-Ž­!šzŻ”0DâÆ(æDäȘï?u˜W^z‹ś[‘ëÏy:-"7ë,ß ŸÇ:̏tŒț~nÿcní8oÂIENDźB`‚óliFD$00ebdf9f-0482-1173-a2a2-eaea0594271atxt.pngĄ‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF ŒIDATxÚ̙[ŒUćÇëÛûœf†aAgJĆą‚Ì…›˜Æbj“òà[ÓŠéKӘ&Mšô„ŠńÁ&Mš6MúĐ€ÆXjc­šŽiȘqAD äÎÌ0sÎٗoőaߟ= Ì9/_Č3{Î^{ïuùŻÿZßÚąȘÌ·țęßI@AìȚôwś<“E°j‰­GJPX”Ș‹ăGŽőŹèíœé[Ț^ŒpQo\q# 1†––ߌȘÒs'X =Ę5[(É©’)”zÀù3x‹/NTÙüŸțÛčȚՔV•zd™ Żû=(‚U1š_!ŹÍĐVńÌŸóqmȟZ°ž»KŻçčòĎłÿžsĘÂm|Æ«>ÒK…Ű*”™€ÉÉŠłƒJ{•šL|ó«‹_W¶œ{à2Ÿùè[YA°űŸAÂF@„œŠßVí~ńàä±GÖś­‰ą3-EÂD‘ĆW?~ôPÏ5ŻG±òĂ痉"eïŸCì?űćۇsyb OăLŐżőùę‡Ç++_”–"E:OĂ|2 MÈ@gUYœf%a-àÂÄ4*†ȘĐžAÚȘĂÿç}ȘŹ|ń{á‰mMEÂır”ă'ßîàńGz‰cćńGzYÖíćŚÛ¶„Ƕ-Ąj.s­ăôÉSDQL#Ž‰‚ˆ(©zBՃŠ€ń űȚw_űŚèăŸżL>”żzö,(<ù—łÄ±òç_ä[]ÜŰíńƒ{xúŐK<ő·sT|Éeźu|tò Ț;Ê{rìĂS\8‰6Or#Ș|ßC=ÿ©Ț9üfŒđă˜y!”ÉX ύOòő»ČóĐ 'ÎFčÜ|ÏXŸŹ—”kW33Ęà҅)Aˆg M!©‚‚ï©ŸŒcÏțہŁŚ6ÀΔLæűÙ0ŻQV‹ß±Îù”ˆÈWƒŠŐ.l„Imž€€UŁâŁíï?3vbᣣ+§?U!ËÖÍœ>ÛGșÙ1>Áö‘nÎ\ ùű|Ôôę§N_àĐáj!”zŹ„ê ĄU" mHj‚ˆ"íș–t_źt§uKû^¶laúrÉ SÔ.Oóđ_#°J+Ą…0Vˆ,±Z%ŒajȘn·o|Ű‚±’Ÿ8òy(/v†SŸœćÀś9rű8ÇOœ&ŽŁ$‰s&JüÒïĐŐŐfțșç…ÚOö;sáÒd iŠțć_ÒćË:iD16Š‰â›ŃŽHŠ”,Ę6”Rë­±2°ć~ő:§é0–őęË #K[›ƒÆàU|TłH@#ˆ™ššMŒöìo—<ùÄ/lÓüúé1]ySAȚL'TSœ #ÔAȘäĘw"· }!7ŹXAPŻsyr†S§ÎS«Ő‰Ł”1±&śÏày†J”ÊąźNv”Ół€›Ž…ÔÓS”ăáɃ}ßÙ¶%lŠ…nZĘG__ő(#@aßÛï9^Vîčûöí;ˆHč…vŚTmŠOÎNđ•”·qäèqÂFƒ°!ĆÄéH  b çÎyˆ1,]ș”¶J…Țe‹é\ÔčJnŸc l*OÖ”}=4"wÆ,š”Ï%)I„5Vb”™:”é3Ó5êő:6ČÄ6N ÀÁx*V°šÒm”ʂŽvVźč©­© œf\™a"ûŁRhžKrź™ȚZìâT4ńźHc0Æ`|D1˜Ź*[M j#àûB”âł Z,8CŐŁÚô–2«Ÿ„öî}'/:ŠæçîȚrĂÆ;ykï»yTTAăÄÓa!A€BÇX[Üßß+ÿ;r<1Æ3ôśßŠd{>Aà1zKûć& ÈđŹyRnžg}±ÁÏB’ž'đQTហëÓdÔ*Ș–8ŠÖ BÔƄQDÆxŸ‡ŸńP”Ț–Š9!ˆq&ń<.VÂV6őŽê " Ûdé )t$…’-ąƒH‚>Q’‹É€B5F<6ÏŁA€ïùX”űńLț $q†ç™ÄGbđÌtk›zEÈ^öî~;żŸqđ.öìȚïĐfž ĆÀB ê‘"pr%dÏÉA)p“ś§^këXĐBœ<ÈűeĂÀĘ)PpoÜtŚ,Ҕą8FYkgű#Žœ8óuÆ5$3Žvëesc$«ycGfHúWsK~nłȘ;(JTÔŽ Ș3jÁ§ÍÙÍa;Êù{R…šŽ@ț€ŽuŰœë­9 ł’șÀÀÀĐvïÚS„ =!ćIŸ*CÙœk/ Ț됈`[›ÌAŹîË``hCȘ›€ïŐŻ’æ‹”;#†î„DŃï‚€‰êÚŻ›†6"łdâԖŠë@aę•áQŐR ÔAuÖ/©K[ÙÓ\zÖÂY9ҕuăTÛ„ò͍dM»Æߜv‚Ó„f0q±%y‰`pó&ȚŰùfq9‹jš3C#›rcĘnŠÉĐą"§ïÜŒ fS`‹Yàqő.ęu,PepxS*ŸȘóLM[ŒæY(m#܈üê(ïxÇ!’RżäږŚ•<^âÜŁyÔ]†++Đt!Ë°^ü¶ó”]9Lâő±7 Ë€h*JßÒ;†GÙùÚyƒ"œ–ÈHóÊ?<:˜ @’zÒJv(0tßP  ß7èxÉaIws#…3†G“¶$œJQÚr€č*•hi‘…ŹUŒ”š ČRłïsárełZ0XæÙë”a(’ća’g™TÓs!‡ăÆ_}}Îr'ÔžyëfvŸú: ŒÜż™ńWv:‰ï6ăéÿYĂ7LJŸÍ[7§Ą¶i·8ŰÊç;Ùïn z™œfJÌ”‹»ÆęùÌ@‹ÆÒ876ÿIMSă]ëŐz· /ê‡2ś·4ăsTV‰­“GyZ­E;a1xšÂÎWƜ Yxddë(㯌áëUËÜÈÖQÿÏŰmÇì•ÉÆȘ%Ż·4ÍÓK`óÖŃ«©‘FŻHV˜2©[GČg9ù&Ì]üJmKKBPë„]ź„^č/»UËGQeîÎwŽlÖYŚLKȚW%â–U˜U%Żšłőw‚2këŁć<ËäĂ0Î[ˆÖs «È‘%Ž,_–Ő҇}żâ}á {ŸčŸTçŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF 9IDATxÚŒYkŒ]UțÖȚçœÛy”Ckx*"”Ä$|` ˆ„Æ!QˆšQ#!˜hô‡1*QcD$<€dBQh)òP"òĂ`°ț@ƒ‚ÒÊ«0ÓÎÌœśìőùcïłÏȚgŠzg(ÜäNÎ=sîčëń­ï[k!‰ÿśzè©Y(ˆ ÍwĂùôžč„Â)ájb°XăŰc§đÜߞ=ìš óœî{u8êLŒOÂŹèUŒrIœxÌúŽ­é«k?]GÂ;Q ‹Œòâë°Óû^/Śj O<«}ä€’XŹóĂUÿ€E‰áÂŽ\Æ,†`3 :™n„DQXŹ© Te‰ș?„©ŠȚc{žo”1Łf€‰-ŒF6x1Š?ŸAŠ„‚ @ (  0ì< zŐșOÎ>[‡Ë›“đ‡Lą żIAH˜x«áÿJ•p*šé@­Áș†ÿąWwśî§ÿPŸc§r ÌáĂ,đKà“gŠP%èœ*jWCû5êÚÁŐCT(#°œêŒí»Îșu%NŒĄ«tj ›Ș„‰‡‘uíĐwő F=ąČ‚Ê„Æ °—ìxàÌŻ '3*2)Îhf«€"­<ÄkŐ©Î9 ‡ț=èĐłš PŽĆvüćésGqbtۅxƒĂ M €H녱.bęP*úƒ!ŹAâ„D'Pśm{|ś»„|ftI€”Èńh…7šu«l!b †˜À^À°?„ÀÈR'ÊČ@”fâï·?úüÄ!ĐÍù)țƒ>4…ȚĐ«z#E ˆ5cȘŠÊ 㻓žEë„zkJL­_·żÿˆŒAmž±„žR<ąH„’wŽm͈/b±ț3Œ-Úš—Á’Ê&Ù0ÀŰx…_ÿńvW­?SV!őRZƒ<°[ÙZ`&±š=ČüőbŒ§LôŠ"‡Ž€2u““=ÙöÈ=uU-ubÄ Đ«qŒŸ°v::ítąiKŃ(·0ÆÂX‹ń±ȚÒ"N&wbjȘgî||ÇÂŐŚ\o^}mVVŐ !1„ t:,Ć \ŐÄŽÙ2†#˜Żp`ŸÙč˜›Çțčy,XÀ°?@=Źa'z…ÁädŻwö–‹_ęÁ”?‰È(óÀÌcÿáI'ŹÇbí kÆOú <9…~s Ï _xrăEçŸ=,FUb…oÊ-}"i%"Ű(Mź"KE!ń΋À”Š§'PUƒĆ>êÚAUC€ ŒűŹÍÏÏăÀÂ"öì} œČĆç1±vâX9æʏ8}āŠ!!„ÓW$™hŽČÂŹÇhłdŒ1‚ą,PuaPpȘ"ŒÀÀgƒ"°*š”Æż_xœ—g16ŸæŽ‡ÿ9YŹÄq„LŰÔgąíFMą&€ę…cŒ3EČc`ÄgP”>[JŠBP•ÆȘ€â_ÏżˆÊą*VÒ i t,‚ä['bĐĂ膜è!X#°„EŐ+QTê^ uź“5_c D<c`lÁÀâÌ·ŻÙ?’ û_Ă?žíĂqŽ©OęÎŁ[€iXÀPˆŠČBEAY•Ö5ÜĐÁP*ÈDŒ@DàêĄÏˆ”ŰWۙű;7Ț˜YvÖy—d·éśTżżÿ¶ìóŠ“7LJY$$ƒŸĆż© ÄZôŹE¶€RQ”ÄHCâiÚZ4ÔÀš­ʱ GmÜ 8é4]ŃXśäŽÇ{žy›NȚÜöuĄx=@ˆą*Q”ÆÆÇ#Œ&»« agSÔ>4‰œń±ÖRqûő?žű WòÖ^ŁI aÛ$H1˜š>ïß|)N9ę|ăČ ńÒȚ—06>†é·­O§…4ńŒ4ušmŻŐŹĄ(1“HȚÄf}Ï„W߶ą ÜyĂŚ[śš›Ăô†őáG[áú&ąÊŠæÙf€KŰÚSyó;ŸˆűäćWŽN37clâ„e" *ŸïüöŸ0̈́6:íZ›,I(69ßôŒQ—$ś©8*CˆZ`TÓÁQbćșԆGăĐ, 5êł…@٘D1 F~# šLrÒií%ŃÓ@莛o”m7ß$ BŐo”Ț8u€jò& ŽțŰùnïœó?/ûg™¶Ü Ž»35òL”_—„É’± r Ą&j>š ÇàeۊEÔ€KÛfȚUŐ§š(sk …1 $SfŚ5@iźiÊÁ_+q–ïFI|üł—Æ5•ș¶_Ó‘ÏÓœ*vĘu=vʅl«ĆtÇ&ËŻ¶Ék&ŸŒł$ę^BÒn:" QÇ—4€}sš‡dŁ…Vƒ]­ŃL;ŠdĐĄŽŒQ4‘ä5ÂȘ™äČZJ`jšĄęź­[ćî­· ƒ2Ć?ĄNț[ÜÇzpĂyŸűŸúʛă ÛZ°Ćq\É€[¶ëv–gÍôŚœi¶#Y hŠ jJX í…èć ¶$żÒČcČJe*„’Cl™F<ŠT:4žBè‚-[âmïčéÊ ™’žgæÇŰ9“‹bÛ¶Š»rŰFV˜Ż+3F± BæEœ2ɇ/»nEÜËćÉjtÉłÌä§Ì$+ËűŸ+Žšáá!č(‰{gfäȚ™Q§qó›úï„ÁôŰgšP§žpËUžêÚ­9„žTЖEčä©T„©€șm €Ì¶pNÙroąșŒKÁÖ(Q䅛Ț‹ˆCŹ©¶ÍG:uŐ¶±ž2dÓ Šš*6ôcôĘ'Ck aí–LŠÁ# ŒĘ`\Őá7żüpk ĆűĂɂW–QÆÌÉ:CòÇŽÌvAQ‰U5†A›ęFä`¶Í\Æ.!șa›à‹R—d ÎŃr°Ç?9•?­m‹^ș›9U<žc»<ž}»Đ)\àwçú"tÀ)àœ«N :ĆE—} Ś\w‡?y0;Ocmˆ,č<ƒz§ÈÙm%2 B& š3Ì(đ0ÒŽ—Z†…șÏęșósšŃnQK’čzèČˊűçžÿăŽû|Ô?"ՃäœÎaæ†ofOc\­X\x–Wò ›T°Á=牳@;”K†íĐć8MæV}S ¶…YæI=‰GÜ%pÖ9çđw·|f…JŹűôżSÏx>·ùT@Y6Ź«Ąé­,»5 ™|đŠ_­èÖüâS°ăGbśîœP*ìű‘˜vïȚûŠfCD6 IÂń°ÏÿʎĘhçO/ŒÇeÙĂÓOęőCxk^łàœÖ&ÚŰ耰Ú*œ%ù§·Âƒÿ—R”B _%©IENDźB`‚€liFD$928d337a-0482-1173-a2a2-eaea0594271a audio.pngN‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF iIDATxÚŒ™YŒ%ŚYÇß©SUwëeö­Ûéo)Â@@Æá(B‘PąäE‰x@˜PxA ČÄ$ŽP!Q0"& Û ă0&šxìńàńdzzŠçö2Ęw©ć|<ÔrOĘî±oJêVĘȘSUßòÿ–ÿwDUy§ăŻn)(š " €TϖŚęój-‚SGî”ńìs?5+œÌŹiTœàŹĆô`UąŐIyšŚșâÌ9%ÏsÒŽűKÆ q ”‘k4°ôì+?0‹ł+ Óđ‘Bàò‚ó äđăEëžšăG§Žq’<%€VkÿéK/àAšĐFșTP•:Ç3)Œe”žT6E1ˆQSf/HÇ)€‘ĘJ„Ą%ju/}ńù·șś žf~Wÿe}šœJŻźRD "LbŒ`Œàœ# kŠî$˜(@Ü ™;ž°v~^Țe­ră$őTr„F*RC©PN'1#E‹&(~c X=,%‰Ïڝˆ/Ÿûb|\îBźPe"P쉂:‘¶„™ÔA] «X/Æ)S„ŰÚ&tA€ĐW"€^/–/ęÛ?fQŽ[‰= E5ź­_XŰMutnȘő[ŠȘr `L€ :íxw—JXÓTbn.6ÿÒłĂßü­?1ę-č«^O­ 3•„ŽPłȘ‰™xËEŒĐëDì ÆlĘČs{ÀöíÝ!é8!K3Œ§Dl œ^?ńKżŰÿĂÏ=]+ łđż}qUZ>È(+«è@‘ô+x@QÏÉRŚbË”,ÏIF#¶·ŹŹÜb8‘g9êrò2y™À†0Š˜Ÿëқkqàà^—á8cçöđJz홏|đ‰ÔÎZ‰ES&LÒ'^+QƒM„òU„êB R(/‚ -‹‹]ą( ÉČç\i ƒ‘ÂkƒÁ€áˆ•ëÄaÈĄŁ‹t继ćÔ#Ï?1#Ą©’ 2ŐWxžšÎ”ôŠ6zŒ‰—Œ1#ŰĐbm@f ÈKšŠF0ȚP'd.ăŚÖˆŚ¶hwZ?țÍ7{Ń̕žŠ^6-<1éF© šÔ5Áï?T1`D ˜S(cm郑ƒâŽđ–SŒ€”BZÚQ8źŸuƒ( Čûé…\mè:Œk:Qą6zy­JNZ@ #a@‡ŰȒĆ.ϧŒVŰŚƒH‘‚1˜À’$/”¶ïšÀSÏ,Ő珝>W“—*(ÿî›Ë„aD·”Äûìë6BÊöĄ–Æ•ƒ àl©F!i–‘§9 PÀš üRa1‚ˆgiᑠ`=LśÓÌyą{$æƒOț N·Ëą5ElT (UUZ QzÀ©C5G‚€8Ž B‹”!A`#KԎ‰[1q+"Š-6 ˆâ˜V§EԊ ÊńĆÌ€Ÿź¶^zß I:âőïę󋇰Ąćà‘cu LàŠ„ ˆbŁFŽ;^œéцèÔ€Šü~Ù$Ɲöț(eÍ ŒĘÜŒÈ\o‰ț蟋qÚ <Î+j„ ŠdŹ~±“úŽ?“ŃÒY“5Z·0â”1łSJb©Wąßææű lì|çò’ű1 Š°†“7jÁƒ§óëÌ^t”ôn…†ÙI} "^‡ăä"ïY~€ËëÀ攧Ùč}›o+Û -ł)›ÂJ2©›ÁȘÆTlOjvWgŻȘËEê>læ Îuzä0Q-7ßæțć6Yđ*ÿqńŁ ‡[ †Š~ç“D 2i»mŒÚQDw§Ö^ś„€zÚûM^Ÿé%ŽžzƒăÇÎđí bs}”üXőiŒjN4űĆD šńy1Sy`_ò­ÖÀtȚXŚŽ•GŸÊ‰Łqț͏±văJ©üԝìÔű„NÆuÂòêšš»ÎÌ&čÄo^Š V‡Ă ‡pșÍÏü7ï9ńS|ïê§ččú&NŚ~h]ÈŐëȘ¶ŁŽ&±RŁ tT&“Ž™‡ÙnjÚ\AÈe=Vź,ręšÁ©’;‡s §–_æűŃe^[ęú««„Eœö2I•BuҔx°’IæÙ-Àț[șkÀćm›:ÎNÿQțę…U¶#rçÈĘ>Ű'—kÜÜúú7W=OHsÖȘxŐb:ó5#ŻšŽì+ĐbÈPçpm± :œê|–y>Ăó/öéop.gcçuŽŸló?ęϓŠ;löo5œ6f«~ìšb–IÀ7 ì3 iIčô@5:™?pˆ#Ęqæđç9śMú›CÖ6ŚÈÍyæ±șńI2f<66Bêw{îh @êČÖÙÌyŸš9 ìNż9ś8ŻĐ[Xää‰'9{äi^zy“qâpÎÇ1Û/ŁNÙÚXśȚ€{ÊâțJêê[toŃì è~™)ï”:]––žääÂŻpę-¶û?ÂháŰ!MÆ J26©šîڕȘá">Ąò°żżńz% k~$WÇ^›faóĐżÆxŰ"MșŒÆÄf™4I@!{ișG”­<ă<țT;@ś·Gös+Ă_æoœ ’ŁÊI#ȘùTĄ™€u \±6ï2}ŸŁí'Đrü˜;ï9ÙC ŃÆšŐ_›«6Źțv ÜĆú\Êò±“—8vdž\ÇŹźŻ‘æ nŽQčE€ț\·Žìț7°vŃűs­G Í!l‚@Ć{m6ìŸÔÜ­­i©Ÿšìèäc6Ôęè߇ă” .\茑ŒGï}xśxŸ”H3¶ úšŁŠnm~‹ÁđHÂò‘Ï‚›ĂÚ!b 6Š‘ ˜ÚVÖ]–Ÿž di^·wTÀ†î/»‹itâŰń=ëÁćë+äN1Fq‰ĆĐ%M3’q†Çp8æ•Ś~›ÜmsòÀÇèŰś±œčN§·@’ätæ{Œ†ïbĂù†»ÎńłA;ćZÿțŰq”$œ{őûŹźśKȘ' ¶"ćSWVź\ÿ Ł+œ:üQŽt>I–„Äí.b s 0&xWÖŒœT%p(ŚoőùŚíï2ßé2L¶ƒ’QA ÂèvD/qŽś8&°,ôBÆÙ çßűcΞț8KsżŠËsÆŁœžŐąÛ›Ł;?ÿ.DŸpæ$Ś;+`œœîŰła7e0N”™ŠÚP' 6[äƒătw~«·‰Û]nöWŰàsíüYÿę\ŒvŁž‡†±#nÀ€{yˆÈŁ»ÈSó ÍÖy—›šŐM‹|ź§é0dŒmĘúJöì~ś•?M†UÏœśœÓW/ŒŚÖȚúÊœ•òíÖžăő§žY:lcśû.çÓê€%šsȘ›Ś_ÏŸ|î«Û_čôŸŁ—ęŻO­ŒĘ›ŸțűŐÿ țwÜ Äsa}IENDźB`‚liFD$20883df8-0480-1173-a2a2-eaea0594271aapplication.pngŒ‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆFŚIDATxÚęKˆ&WÇçÖ­úú9әæa’1’Ń„ Æ !C|íÜèB ]dăŁqĄàV4èJđDÈ&BLŒąŁ’@Pòš‚B0é1fŠgzșżWĘ{‹[[_wOŸîéN.|ĘUőĘŻê<țçœÿ9%ȘÊ;­żÿ{UAAP€țmu==źś" ű x§Œ‡ŽăÇyíÌ«Ś;8ßżéèbčraE;ÂüÜÆ°­e§Ù€ȘÜ|í<#Ż­œéš”:ûT‰J8e0sț­KdóK+—ò}ÁœéæÙéšJ ÊĐú掟ƒ"…ƒÚœrЧ—gæčó~đq{yviÿąîäŸS9LC4­n"–VÆÖÄèȘĘóú@T±6cŠ°yŽ•˜ÂöžZ֕ÆLëMdŃFÈ5^ï@J•€ąP!`­AÊŃ8 Wìô„ŐW­=,{ăêjbĘFÈê™*TŽBmCő}PAƒâƒàÔŁÁĄÎ‘Iüíć7üáôËOæŚ?*»źA»đюá7À§ë)%EœÇ‡€óŽ0r8çńź€0`ÄYŻžćáż~âțí(1%„&ČÊD LșjŁBaç<#ïqc‡—™Pd ˜Ì€ÍŸüÈ©ߜNfÚ4ȘIp6b&°ȘP„j[šœ!… xï)ËűÆô2i”( X›Ą™œï‘^Ÿc%ŠW@'á#QàêBH HăE›žhâG• Ńž$3$JHŁÖțùĄ§O`— Ž“.T„ÉńŽ…·ȘÖmeSƒE0Uö‚rT’ ÙšDž[Š™ùW|âőù]šĄ›ß5ĆUê@ŻÓkˆBŠ‚AĀÉ@ ™ŒB™`Md'œŒV‰ z39‹öŻćsŸ–«LŁunlSO ©Pi€" ”ąrÚÆŒÄ LÏ1†Ì¶VÏ+IŠ,ń†Ùč‚ßÿëA_8!;‡PˆȘŽE`· j+m3i‚:"+îcbÊĄgm:™ @ž*‘ÁÂBOzüź(6*1„4VăÆúŃÂa‚Ń… &šRŠșr `L†É2æf{ƒžRšź‹‹=ó»§|ç»?3.źÊŽž‰ ZCg"Ki nUÓzËEŒ°0W°Ț±zyÀúć>k—û Ö”Ł1źt˜D‰ž5,,ôz·~ń ~űŁŸ4 È4ęÀoŸúŻ~đÆ ]ŹnbÒŻáą‰“„©q_pŠóžńpÈÚjŸććó CŒóhđű*y™Ìe†Œ(Ű·8ÏÂâ ŚŰÏÜÂ<ƒ‘cęòà”òìK7}țł·–vÚJˆ€LhÓ' •hÀŠRûȘÉRM!‰Ê‹`rËÒÒw‘^žsđđóûæË”zű۔ M„• ^‘xą>ÖÊ+Úá­—Œ1#ŰÜbm†ł ű Ș"€ Ń*Bož}›ȚÛ«ÌÎÍ|ôÿY(ŠźÄM ™dÓ艖Ò4ijBÊ?T1`D"LŒ‰ÊX[yÇ`$zP‚FoĆX+če¶ÈÀŻżE‘QŰípĄĐș ‚䚶J4FŻźŐÉI#Ä!3B–gœ[X\ÏŒŸđZŽŻ1‘˜‚1˜Ì2gœžnfmzURhGŰŃ5±«i„\«ƒ(âˆ6/(TȋœÒ9|éÉl†ÖdՓąAÄ"‚weôH–±’—ÛiêŃ5Ò•”uJƒTąI(‹TÎĐH1$N*T=’eôȌclf °čE2Ó܉i:ËLUC ™Yß^SßT۔ IÒ;&N©c …›V4 Š-rl^0;7ŚÀkarŽ!:1©©ž_Y­77» $q@A*Á€vžvłNèv Šč.uÀ7uZ[źUĄTO’Țí””I‹„Éÿ–^KÒ€1 RšUÔdÔBϐ֙ÍÚŐú9•@ÜûƒïoY–_zœ][ŸûÊśÚQKĂv[*ÚXœMÒ)Ža«ÁÖ7Ÿu{č~zߏyáŸÏsôșczßáŠ1’*P+”’NN&šœ$”eƒ§Nęwc­^ŒÄĄc‡[ëdQ—ΐ Û a3Őëț_ü2É8ÚÎâ§JgO‡|wČU[ ïțúŚ6Œ6t‚’Ś@QŐ:ùDdI[‹Dßa6zđĐ!–š‚ššsźÚևDàú|ò»·ÿśÖÆ̖Œșăëä,I‡âmšUi'›f!çȚ{ŽȚû0GŽ{‚śxçqȚᝫŽ=ȚÇòï}hÎœ«†Vő^ïăÇùÍ9V€Ú’’VÒÉp“ź”[*àîOażô'ŽÎčnĐ^șŽ)EiÄ1ęo$â n$ć\Č”%ŚĘ˜Ń»óę_߆ȘçŰ ń‡ŻŸqÍÔĄY_[c}}ÂößT MHâ %¶ušz’zŚ=0{ŚcŹęê“šżúXûę=·ĐïśéŻŻ3ź*êÄžęiȚ+T”V șÊÖuˆè/~ûĐ(àő??sŽaÈòÙł;ČöŠÂo‘R밈 J;ÄÒ$Aq… nń^–cž}ríȘ­œ•uÏÓ€Ő•8"Ô0LĄ€ś”ć˜țzo§û6§SĐD;ŁVMҒWíäțM G\\Ya<ï=§Đ+CK'4™L«›Č çÏż+Â7ĆIdƒđv2äéw†śhu_+ëÖAôeé ±­śÄ{ą@P†ƒòȘïóžy`§+łf:œ;ûæž b3ĂÁęĆ6A7öW s'OȚÎÉçžáÒÊĆ]xÿ5Kœ9s†Ÿ–lî(çOŸ»Ș{ŠÈ‡íf-ß^Ż»?óțÛvéV3Íx]D>ìKÆőœĐć.ë°ȘȘÏìƍț?Ę\·Ąò­I:IENDźB`‚ŚliFD$53a52047-0489-1173-a2a2-eaea0594271aswf.png…‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF  IDATxÚ̙YŒGÇ_uśÌz{í8qœ˜`“Ę8!$À\&$@Ą<đˆ;€È ńD$bĄ@—Ä…û0ÄâaB$vpHbLl6ÄYïÚ»3Ó]UU}Í8xրBIŁî©źźúțő]ÿúZT•ł”ŸÿeYAAP€|7ö7ï˱^=Î+Î*yßrÉ%3\]üEű惜n"ˆŽ4MĐ$ę䟃śŸ|ÆÎŰšț»śláŠ[æŠÏ<Œ/ íي·uż/Š(l}œü–‡9ŽgK4«ŰçóEËƒjL#ȘŠWÏ /H R Mśëö»vœÀ™:íÙÂĘ{¶pćț«ĄTD Ł]1(HŒŒ‚ÈȔÎÄԑ[<4uVRçĐaźú҉ʜ^·™«>ŒŠ2߶™+?żÀÁë6ă­ăàuçsćç8ű¶ÍaŽűJ±âU­1 †ÄÆȚ{:‰ši» 5ˆș3›6œÎ&Ży\SJœÓŠÓˆ‡;ßžžg|e9dgčëșóŠKê}+mšÓ*”»ÛŁ>Á$1?C’aE@P „șO&;|ç·șΊĘIțہ‘‘Șșž¶AœGÄđ§ŚOƒ1qćÒʂ@wŸeSäjțôæMˆűházÇ[f#2ƃš  !S„nšÒ­\…SČD$ö)2ʕoęú‡¶Óٝæy„QÏ}êőź"]ȘŠśŽȘßûxȚ;Œ:ŒWÔ+šC=qœ¶Æąźšg°áɕҌI0IÂäșîš'AđŽŐ33]óíÛśőȚÿÁ[Ìc'—+“’qèôGżx›^xÁƒ˜QmiëMșPR „EœŐ)»ź~ƒ~Ÿ„Ć&çióRXsžÜƒWđb‚‰e)Ș»`^ƒÜqj©·ô›o|zÓÇoü°ÀM_; Oșh†ÜiKŠÀs‚Í– Žáną”g °nbšó·n%ïś9œŒÊńă'èőú8rEéŽ&1$‰!ëtX?3ĆôÌ7m`rzŠȚÀČrȘś`qìđÜ«_yu1ŸèÉsÌÍm€oK&ęÒrbyț{ÎYT“„ÌÎNŃI»pż|§±·ăg/ÂHpżŐŐUVz}Žÿă$Ę,ăŒ f™Z?u‰\|Ćà9châ« ąŁŹ3jąŒŚšmÛR„%c ‰Lù{Żźb18SłŰôb0‚!hCEHŒ`œćïÇ„ûè2ë&'vęâéÎŰ'Čê„ 'F‰L9!„#ő‰Č|A@EÙâƒLÜö1ú'Q›à|‚óA`Á…œđŠ$‚zĆ€‚IHÈTđx~è.żh|æŹM( Wś•ç`ilz˜†yÒc‡X·ï#äęĄ+†,M(ÔàԐL€3Sq‚1!Ôƒ1“€äyÂîm§Ç7Ą(…¶„ ­h}Š‰^PőQ"ÌéLïż_ôHÒM 3ŽÂ{Ź&˜© t7oŸ^\)lˆADp¶Iłb-‡ú†è’ŒJ]”ĐB%ږ-ő„ï™ùń$ƒć@è|ĐH’dŰË^Èêü+ÍÛńêÉČIL5ąšB’M:ČȶCœ"”!WŁùš4Ž‘ „ R+$:ośđ~҅{P 3%Â:I8u͇íÏgvžŽŃđ7ąż©ÖŽ§;čîńÙèhEĄöƒÚ”‚`ȘÁŽ•ĂŽ"ŒLțîËáM5ê…Ó/č|û Âæ4 CŰq­\M*MFŠT­5^ÉkMè"*@ÍEÂœoù€Đ=üc€·šG\9ßń‹űœf0é]ùr܆-#çœj—Ą¶©*GšÔ~-> Ò0țašőmú«Lÿòf:GWŸÌ4íČČë íòŒ6 ©M©ÚóˆĄ–‰R}ƒcŹ€ÖánXĆëîȚOșđ&Ž@z'[őìUàôîwàŠÏÍC'SÎțć'‰rŻŠi˜ÙŰĐ>i|҈;żțg{ÛáTëä?xÊ è=ęÚ6ːö±Ze4ۖ*jJ˜łÔFŸNxÚQLj†î%,:žôù,]óĄ–đÚrÌ:Œ«6Š¶Šk:ŻȘąŒŻfš‘aÊЎ͚uYyÖëXyÖk!I+‰Uț S$Ÿc[Ӈę4Kxą[’šsÓ@–@71€“Oˆú̜»59ÙńÙÛàž»űk"òÔłV§Eä™ÀúŃHyBŒŸĘ–Ç*Żÿ?· TáKÓóhIENDźB`‚liFD$6a10139e-0488-1173-a2a2-eaea0594271arar.pngȉPNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF ÍIDATxÚŒ™yŹUÇ?ż3gæŸwßțZ[°€¶F„(bŽŐj\c" H jL ‰‰!j4Ń`\pžÄ`bŒԀ\ UkÔÄ`%P–ČwŻïœ»Ì9ççłß{[^[q’Éœwî™3żćûûț–UćéŽßß»š  (ˆ€Rܛ_Ż/Ö" ű x§ô»ŽSN™bśęΝŒfbeóISéÁuęÉë™hOb ÇtŰŐ,RU¶l˜ ç”’ł~ ʍuȘdJ8„ÓíłÏŃÄìÁ…x:8°›·<ă=V„@P„ë+éq?E )”1ig…V™;śûÎ6{x|vfJg_) tĘßùù)[O=gèèÎͱvûV|P:+};˜‰6ńX‚ëöȚò‚éÙò€Șžśđ?ÊŽ)Ą#"ćgęZ^ƚ†ejkČu±æ•[ÖT íő‰Çl+™čćžĆÏ;có&çöèq)Bà™>úÆÆ8őhpšB$àۊŸû‹»îûsŒń–W„œłj%ʘśÎ•gđ~èwq>ĘÿƒkëçîûÆyGè9œóx—’°b„š•lÿćÎW/Țx‹»Ț—§sźńûmW^‚sŽs.?ï=3'Ïqîpá§.ćÂO]Zź/ÖŸő=Œśì}tÎyzȚăúŚOI"!‰ 0‘œëæßîžÜÚurlòášòÖ_Èm?ÚEđW]ôZ~ö…ëËß~Ő{űŃÇż ÀEŸy7;ŻęŐÈę EÒ4;ƒZ‘ ‚"Ráà«7ÿóŸ»­]ś›§‹ [ß|ˆËk<țÇë~ÇŸĘ{žńȘsțÇ/fr~ȘT>ű€ȘòëoęČ\7`ƒ,żć4Đë§DZ"”Š`#œê­?œăźçŹ.-Ye“ì}đɒm.űÄ;žés?.ÿ»äKïÍŽö=ôÔĐ%s‰"4·PÚK‰òGTžÈłFlѱ‰ÿ\û#“íŰžŒ: Đ Ș–Â4XJï="Â;żrYățÁ}š›Cdc„I$€AqZHź‚ˆ"c1Só3Kqûl“źÜȘG âBŰâ !B Žé™?ü`'~òȚùćËűțŚVÿëđ>u#ˆ&ʱb ‘•<ˆ…8—$‰2o$‘o'Üô·ë}2żCŽš‰żöŽÏßlYmm4˜šž–îÚcèö­ŒäÛX^ê°xà0„eÎ}ĘVúAIœ’Hœą€ ĐśJ”ÔĂáĂĘđ¶łÎ”ęțí:ÒÿCs~0&ÂDíńVÄQć‰$Ê@dŚajȘenŒăæÎG?ö-sàĐą yàhǗŸœKŚŻ#őJš'©,Ye„u.š –Ą4Jïà•3ßž^·ËÂÁeÚ&pƖ“H]Àû@?d\Äd‹-Ș…' Śś^è,Üö“oÎńsW†U+đ”ëțȘOžŠŸ»· Ő\îJ •:> uČucí6k6Ź§ßíČŽžÂOì§ÓéâGƒÇkv‰ Qdˆ“„é© &§Æ˜›ŸĄ=9A§çX>Üٝ>~Ïæ ÎyMșȘrzęŠÓ8mó]Wà`Ń_5ZòÈpƒxïPLl™ I"úĘÎùŒ4ƒ‘ŒŽVVVXîtyâÉCŽâ˜5ëf™˜ž8E6Œđvà«lhr« ą u5č'Šïš{Eџ{Ƀ1‚-ÖF8k°@–Œł|€ ™7T„(.8{|­}‹Œ·Ç^ŸëáÉÄŹ–uÊȑQ„Čpń]rEËì[uq*Š0"LŒÉ”±DrËçY9hŐ k…$¶Œ'1xô‘=$ÉȘ[J͓u Ą\ÂêšVJ”FÏŻmČjŠŽ‘ą8"iĆŰÄâZYUÛôZf_cL–„ …#Kż±ă9cK«‡P.…6„Í"Z —H改LÉpD'$*ÄILê>őD6BkąüI™AÄ"‚wiæ‘(â`œKS_]ó2CȘĄ„æБJA@ŽđK&|æ %û3›Tšz$ŠhE=úŰÈ4`c‹DŠÜŃŹù‰2OdćÈò±5őJŐ6j•Ú8ąæ”"*žiîAąŰ$ÆÆ ăív ŻÉÁцèÉćÏÏ­Öjƒjq@ ArÁ€pž6Y'4è4S!@My]Š€/ 8c‰"7ąĆš†Í|čșR"(eŸ+É?KRÍŃ ć”ÆhEó,š”Q 5x†’ĘjlWƒrùœ\ †îűÀ6€íÀŐù'gäŸń ÔAáÙ§Ó{Ăû1N§&snäæ€OŃÒêuÔI€đî0„¶«r͖—nÚöż/ć:!zĘ>!(ź—Á°^ïŐ:‡FśŠQòëŁc h‰íNÓł“CB­ęà‡F'ûŸ~ÉH-4Ÿj4ăšĘÔȚŸŒ(ÄËjWê5—ŒP€ [&Śz|z‚Áț]ƒoŸB{fb4yvzĄf.Ő Ë*5źŻJÍÇ,äIN„â€Ń ¶Úż8$ÔòÁ…ș ±ÖČ2b@·›"FJÆ˚%U•àŠd§UÎ@CĆ#b  „LæŚN Ő^;?àelÍôRph&„Qđz+Ufk‘&UUL-(†‚XóĄlŠ1BŻ7ü^Ét:5Ggš”.››f“Œbߥ!B­çĄQöiÉź"”à.jAŽà*0únß|9òŹMűà›æH.ęì}·óêáią0”iKö©bž1ΐ:ŐhÉ«6’—4‡=oîŸCûćm]7\ĆÌƟ„;Ö|eŁ»ŒŸ…źïšoeșę|(PdîQAp„KÍ·”Uæ—#z TÁ–›jvnȘò†äśW3wÁgĄU±ŽvÓßu ł3ăĂx%Ë°axHŹő)žäșœA^Gáp „ĐH$iÏ5ßwûôúiąs?¶źGű՗х#cÀ„>h(™nđó`« +”NÏ„~è~;<ÿцš!uĂRí} ęÍ”˜—œMűÇ­„œč›óŸŹqê/8Œt;)'zŰQóŸÛ{ëÙqà)¶œéŹŁœs„'~ë€u›ŽúïȚÍöčŒÌ=ÄjF™G;ŠRçˆđ©c»y ŸÂżï| É5 ©Jçá{Đ(Á+gò>K #$±aÍLrłílŰ{D8±DÁáĆűô˜…âú š±˜’ͳԅ»îzò„Œ!"/ÊûŸÚ[5ڜăȘ)æ=”R­Š«Bjëëœą*ï{Ë©—ç»Țy‚!0&”Ś?gÓ5‘‹9ĄN<ÚŠTUęûÿbŁÿ…ÿkàlFIENDźB`‚§liFD$619aeb1b-0488-1173-a2a2-eaea0594271a tar_bz.pngO‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF jIDATxÚŒ™{Œ]WuÆkŸÇčóđxlìŚ»ąSÒTÔź\$ÂŁ%X24H0j%êV‚ȘZ„Q „¶6rx„Rê6mä ! ÁUKhŐ* EĄÍĂ!$ńű5cÏÜÇÙ{Żț±ÏóȚk{l‡né螻Ï>珔Ś·Ÿő8ąȘœm|û‡ *€‚( Ćœù|ęŒX‹àŐăŒâŹÒïZ6l˜âЏžYyńȘ‰„MMeǏŚ”Żeą=‰1œÓˆ—łHUÙŒn‚žÓJÎú”ëT JX„Óísôđ<ŃÄÌńùdÚ[ˆ7m~ç;–„€W„k=KÙyżEđ Čέ$2ß;ê:[ă“ă3+Šô|ž+„îșńK_Û°ć’ü”FwćJVoۂóJg©ÏÂB3Ń&K±ĘțüUŻŸžč šêÎçŸÿlĐJ€„Žˆ”żőč:ŒŠ5©­ ëžeŐŻlAđıAČ^Ÿd,%n„+xrᙝ—mÚhíásČDé2ȚûòpÎáœ+ÏGÍÇ»?~m9?êőûúÎ Vê-j-‘ż‰[Ékî{â©ï&ëóRÀY‹ł–«očï\ùßY‹wź<ŠÿĆ5ĐÆőÁ”őăЏžĂ:‹ïYŹu8›‘ˆÄQ+Ęöő‡őoÎE‰BÎ9źęćP…śÜz=ßúëŰ~ʛŸnpà–ę\û‰qà–ęìŒéîÛóeTÁZËΛźa|șĘXWnÙÏ܏sŃÆőôœĂö-*B "Š8È"ƒÓhŚęßÚțxŻÙ·8• xçčûæ;yÿmżÉĘ7ßÉ»țđ}|őÏ”8ÿÀ§‹»oŸ€·ïȚÁwțá Țy\fyï_Ï#_zŁÏÏńŸ?ù śÜúwćÚŐÖđößÙÖæpÊČpxőŽ"AE7™šćČNYBæò‡ˆ*Őç’+ZÈ­U§ąˆ#`bLP&ŽA$ßù<*{ PőŠˆc!MbÆÓđüűùĂ€éČKJ̓u Ą\ÂjN+%ÊMÏçŠ2Y5(-Bd„(‰H[ qc[!ËmZ-ìŻ1&DéBá(ŠßŰț3c§–Ą\ mEË]ŻšŁN"…u‡!ŽM•Û7ÿâÆ­Ż|*Śáù{Ÿżq;ț՗àć8W u±V(ÁçéG=F–@«Ć3Àśû~:‡±~ó:’G>Ï’Ł‡çrˆH…ù’ 篒­Qx€Ț©ê¶—Ía­#Kq"|íá~(:Ś“ÁŠ„r0ç/LÇ[š ՜™‡_€Só§˜]łz )‘(ȘZO@–TʊžŠ(Êâƒ'VąÖal^ìÂ!^ËĂhž9)ŰbcHąˆ$)Ž”Ž‡L7vXKìkÙóȘ°œZkt«J™–hžbŒ°€ÇzćÊÙyÆ&Æű·ęoâ$č Ű$‘pù–+ę<ÖŚ!B”Ë%SRr+Ąb­ŠButwZU‰b“æÊäx‹éŒ±uŸŁŚíăœb{Ù ëù^­rhTo:àĆ>ŸíŸ*ì 8MÏL ”úśțŸ}áÈçź©À‰SxÍ;M?*šÀ”ï'#ń2ەzÎ%# Â–É”Ÿž`°~WïšÎ§Đ^11š<;=ŒPÛNՋUj\_„&ĄÈ)"Đo±jŽÍV€G†„Z<>_ßBâ8fiÄ:€n7CLŐô§)4SȘ*ÀÁN«˜ú܋Gű€/đAfWO Ő^=;`elŐôiB°olŒśŁà1ôUȘŒÖ"MȘöȘ˜šS 9qŃô^1Fèő†ż+™N§fè€ÚQëBO5t2Šç5j5ŽOKv©9w‘ r TŽÉĐyük€Œj#λæv €7|æžÆ>ŒŻšL­ó2j§6ÛmH‰jŽäTÁ+Ü-jȚÜ|'ŽœÈËșî荦}’îXósVEċG™żç6p¶q­ßíçM"rr‚ÓL5żÖV‘_Nk_9[ŸU3+§*kˆAŸœ•WZëhś$ꃷ3łb|ŰáO.…ë”Ń8n8lÍD:ąŃ1èäuû€ś@’őló{p·Oÿ+JŽă&ˆ[`{űoìA珍ô›čü„ŸdșÁÕAŹ.ŹÔ*=›čĄûăáț6Ôô™–jîôĄ;0oxțńńs/œŸšsźÌqê8œót;:âQęŸG{kÙ~ìe¶ŸíŠ3Üڇïƒ5Àšg|É3?8Äcńkű%û,Ëieži©Îi-à2Ë6ó.ƒÿùȚÓMæšQH•:§Űƒ›âr9OăBXÀ!M «V€çŃÛÍȚÓZÀJLä-ÎÄ—ł°C\ï51Šd'ĆEłœêÂOŒtAÖ‘ŸŠG_ž«ŠmöqŐęžZȘ‹VÉUĄ€ń”őőZQ•ßœê’+_Ą"oŹlŻ‹ÈÀtMäąOh€ŒWv,šêœúż^!H=€ê€zIENDźB`‚ÎliFD$60c01c09-0488-1173-a2a2-eaea0594271a tar_gz.pngv‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆF ‘IDATxÚŽ™{Œ]ŐuÆkŸsîčó;ƱI»j 4”6”‹QJ1V±‰xŰEm•ˆŽ*UA*A€•JHšLH R9E$MHSJ#Hâ( m„Š*!P’ÖbüžńÌÜÇÙ{Żț±Ïsî3¶aKGśÎ™}ÏYo}ë±EUyŁő­Í*(š " €äżÍîWżç{ŒzœWœUzËúőcúÉKSkVŒ,l|ÛXzòő“șzÍjFZŁĂY­x9›T•MkGè:-揟ĆòCmŸ*A «Ž;=N!™<9“Œ{ ńÆMïâ\ŚČđȘtŹg!=çś ^!Ć qBÚ^ ™Dæ{'\{s|zxrbLÏćč’ChߏüÓúK.ș–·huŠŠXčćœWÚ =fgۘ‘ÉPÛéÍlûùńÉóò€Ș^ûò­D èˆHńYœW…WŸ§f™Êž°ï +~ęOT íöH†ÄÍÆÄÓ/Οtí„7X{TÏIï=oőê”»˜8ÁȘCœE"ÄÍä_{áÇÿžŹ{úŠô•k–­DóÎZœ”ìűëńÎ;kńÎWțśRÿ_Œ·zúÉËXgń]‹”gSb1BÔllùçgă±dĘÓrö 8ÇőśìFvîمsŽíwìàú{vłsÏ.Ź”XkčțžĘLŹ™bû;pÎ1yá4ŚÜț~vîÙĆĚ©bïÎ=»žțžĘĆćœăŰOb­Łë¶g±œ”F$4"HLd ŽnyêăUrvržÇï~”›îû#żûQv|ô&ŸòńÇ œßü‰?æń»àŠźä»ÿ°ïòpÿ‡ÂłČuƍWČï#„Œ„UĆ«§ÛK‰ 4E(!Ž°Ș_ÿòó/Œ 8°Œ<àKEŐy~ïOŸ/ÜùHáĘśšÜŁš]!űŐ{D„]Ÿü ȚyÔBžàąUĆóDD še»Ž›e@)=‘e$F‡Fțï‰ç^œaëșùeĆ@n9ï= 3óxï™~ûÊ |î%àȁĂ8çđȚóżÿ;>z»>őAțőĄŻż_±îȚ»ûjțńȚ}ŹXwAű­Cdcï=HˆM°~3"‹‰ÍĄ„±é‰č€ő>yCT5pčÂ-ÜÊ·?ÿ ;ÿêf¶ĘvO?ôäąÒ@čć[ńȚsä„Ă|éȚ}|țŽ‡9zđ”†Ûn»ŽÖÄ(·6ÂèŰSÓŽFGhw-ó§Û‡ÒŸœžqÇ5ïM—UNŻȚđNȚčqŠŽÍ pqŃ_6ÔŰ xÎYT“ÄLNŽĐhDô:]Ź Ź d0Hkaaùv‡ĂŻą™$ŹX5ÉÈűÈzYû Ïż¶Ì†&3° *J_W“y"ÿź™WŽŽ„ÂKÆŒâ$&Ž#llˆ>î1‚!xCEˆŒ`œć՟§y|–áÖĐ{öż<Ú0Ëeą…ŹeT)-œ—LŃ\n-»8E ‘c‚2q "™ćł€ö ê#ÇB#‰n$€ç§Ż„ŃXvK©YČ. ”IXȚÓR‰ÂèÙœŒMV J‹!J"̈́žc›ĄȘ­{-ŰŚŰ(W8Šéő"¶Ÿ}hnùÊ€Đš°!ą5w‰”QPÜË˔€ ”qÒ ĄBÒHH­Ć„Ž(ŽP 6QöŠ`1’Ő\iđHq2IÏŠ©Żˆź!ŁȘ”C Í #”Œ€hî— |p†ț&Ș‰"šQD—qăŐ'1™âˆ†æ' žćÈüÙ5őJÙ6j•Ê8ąâ”<JžiæAąÄ„8i0Üjđ]<Ú]DrÙû3«5[ĂgáJPDL0ÉźuÖń5: *x<š)îKđ–Ès#šïÉaXϗË#ùì9MV> RÍрòJ HmŽąYÔÊš… <}Án¶«@čxO&PÍÏ߶` °7ûàÒŒž9†Ț_x1Ęßú3Ìڋ©Èœč>éSŽ°zIUÉœÛĄ-Ș<žé—7l~ógm^yò/8őțń^€—á\U,Pó"ŚgćG5G@«äłˆïśŸ5‡”nÓZ’o~†}ÿEN=–ADJÌ‘Y”h…Âô@HU·9t kÉP‡!ÂWîûČs”,Y*söÂÆpÍúf9>żs3sLŻZčš(‘(Șš“O@–”ÊŠèÈȘmńțSSšu›†»p‰Śâ2~‰Wl ±1$QD’äWŒZÇłÇÇkÖûZföŹ+̧VĘȘR”%š•<à±^čjz†Ą‘!țăßț‡8IÎ 6I$\öžŸă*?ƒőUˆPZč c JÎa%”ŹURšžN«*QlČÆ\n2>Ț:/șȚ+¶›öÁ°ZïU:‡jęš%Ż JČûƒcÀ—}§ńÉŃ>ĄVțùjŰŽ?Žk ł§æđ šÍ^ëq”+ç' ńąÚ•jÍ% Ä–ÉŽaŃ őź| ­‰‘ÁäÙîb„ŠaŽżTÏ-«TžŸ,MB““D ß|Ś`†­§NÌö 5rŠjBâ8faÀ>€N'EŒ†Áś—)ÔKȘ2ÁćÉN˜ú,ŠĀÏđAŠWŽś ŐZ9œÈÊЊń%R°ŻÆûAđè;•*Č”HȘœ*Š}AœœWŒșĘțs%ÓnWP;h_˜©†IFțÜŸ!B„çĄVöiÁź"•àÎkA–đ@˜ô}śvä‚ 8ïêæhìț ;€}vo=5™ÊäeqšTœZ·!U&ȘВS­%Żx±94ïy3ś:~*kë"űâ}LÜű1:CőăŹ8ŠˆçO0óĆûÀÙú©L§— òÌ=(–žU?­-3ż,é_[fȘÉ©±ÒboíejÇÇ YȎvNÓÛÿ “Ăęz!dXŻ}GYZ=OÓEy *çą Żą°?ŒŻ%’ŽkëçÁœ/ßKŽę/!n‚íâÿć~tæő1`S—œÔL·űˆyq« +•NÏŠźïśqÿüGkjúÔöKuìUô™‡1ï~țû_Ç{uénÎčąÆ©p8çéŽSÎwƃæ?ÏuWłőő#lțíËÏtæ‡ż«€UÎű’—~xˆçăwđ+ö Ëežić„Βp©e‹y—Âÿ~ï@9*R–Îę%öbŁx§\Æ\H #4ʉÆYőç€ëč3sVb"oq&ÆžôŹ…íăzŻš‰1;).šfź/ŒđÚyyCD~±/œ8rŹl"Ž>ÇU“Ï{*„.ZWčÄWöW{EUțdÛEWœIMȚP1^‘ˁńŠÈùœĐ)oîšUŐÿ~3ôÿŚ‘V‡·áIENDźB`‚”liFD$6ef1e0ad-047e-1173-a2a2-eaea0594271afolder_closed.png.‰PNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆFIIDATxÚìYIˆ]E=çę’2v'm†F‰1$f!ž ˆ;AÜHЕAˆ.táÆE„…Ă>ĆE0›€Y8+эÁ$.:1étFMwÿáUőȘêę1qHęĄûOőȘî©{îč§Ț§$<ȏűcÀ €+VŹX°à<†:}űÖŃӛ ßÁ<·ß?žóúœÀԍ>1żœVż>7T`­ ÈI°ÄŽJîŸhA·ëÜuèŐʧïIŸ˜ß>Üž>wá@ëN™ÈmSĆ/Vʓ 9~șőìȚ©bïŁë1wS €șMê- irÏZ†2#”°}x'ż?‡k·ˆőc8òöțïüï>8yÎöìyˆsóËh6kw4ÉÈ0ŃžzWo6­%n,ò€ÌŸ|0ć—č֓\žć_(P*_KșòȚ=6…šMángő†°yv”sqń09ÚűűîőÙëwÍ=ôÊìë=üöçâaۈ–őz Ę ›WòÏ!ÈU0(ațz ï˜FóôeœčűïQdĘșÖAĘŹțò'>ÿÍwƶ§^tńJ0EH+*€ĄÇ —h9x€~]ÁKÏíÀ©kêŸčà3f-ü6ŚÀÂùKœUhÿńÏ92ûHa̜\R‚Ńo8“@:~‚ôÁûśŽÜóg?,v ÊçÌg6EèÇ 7éÚÂ%üőŚbo»woƅÛk @« °@Aæ‹{ʇ\°€àrbnaFč̱ÊhÂ`nt`aځ" &7èö«ËĄ‘Ń-lÜTá”Z'R^Z~ËĆ éÇ0/ĂüúöyŰ6'ȔHÖ»-5'°ˆú(€Â€ŰeƒÜE)LăÉ€/üJä1ČHéőŠĘ\ •Ž+çïŻŒCk744Ț[d2! Š5!G•|QCô ‰XëÁzÄ끊5"­ł>†Æ¶`rb€+VĆms‹Ć €‰:R-«àdGçb˜Ò/wȚó f}(4łk „yăæ» LS·ź©š”€ĘÓOék/”ćőUȘZ€”Aíăz˜.–4ła\$e։Ă>PÿčTč1FȔžóÛI"Œ”UAű̇ú±Œ~ú!Úș~ ç§ŃÄ]Á—MËOH–MđM \–rÿȚÉą•z*(g]EE€Ç1ËBŸ ÌÎÎjvÓ€HȘ%čBž:„,Ԇân…ÉĂąRF3™böTÍ k˜òs™”ŻáŚ¶€ĐûščÍSănš”\PUœ JQŠŒł±Q=ÈÀ…Ű2 ÙY Ë ‘,ÊìșČîúșіÂhTĄ\M”ÉŠÚ[R¶H7łC(™Ż<Í)§vIêà“ŻÎc›}j dì¶U•cwEő•R!$yA‡~XBcu<ÍúxlÛ€N]¶„FĂV5›ÖĆD*8éRŚă’VêvŚȘ#’ŻQ‚4ŚƒJ0ÖS_ŁŁĂ.Œ2Ì¶Ńśà”AčÊ`ÚšÄ6f)élĄs‚‰ùä(P  F7ÔJ NźvÓ^‰-Ż Ćz!ș_—Tșы*Ÿx ")èk9f 7 ©ûdiŸslŹ€ë#L[t©Ay€A’ŒI„šóő0>îlZĐçìÄâ`æ^Č Î6ÛĄcä—oZȘÖxYaì fę2PÀŸ'w "[-Dï“ű™Ò«‘pÔüČŽ±Em7„qqn˜û 7Íä•Í.[Đ[‹dŠŠWÜ%ÆYȘé©]vĂ€†ÔÖ”ÓNșšùck/ÓÛ€T”*‚IÌ4«Ț?Q‰šș¶łNź;U”ü lˆ3 €[R ­ÂGeśl’B ‚ áń‘va$?ę˜ćAˆùá©i€Șćę2•)™§:xĂùSœ§ZyûÈ«•śâƒæ€êæEŃ(vgźŃŽ‰ÉZma~ŸŁ“čŹUßśSęĘǒÄèê1ƒ62’kßűèÇáá5ÓX73s_üpńç•?0Ÿj—żîw#r-€™§_xó™'öœ|ô~ùć„Ÿtûì­«ż;țákŸJ:Ó ÀFățő0€éä;&ęąùÿNa“ —{;Šˆ@E–ŽIENDźB`‚liFD$63b0519e-047e-1173-a2a2-eaea0594271a unknown.pngÉPNG  IHDR00Wù‡ pHYs  šœ OiCCPPhotoshop ICC profilexڝSgTSé=śȚôBKˆ€”KoR RB‹€‘&*! Jˆ!ĄÙQÁEEÈ ˆŽŽ€ŒQ, Š Űä!ąŽƒŁˆŠÊûá{ŁkÖŒśæÍț”Ś>çŹółÏÀ –H3Q5€ ©BàƒÇÄÆáä.@ $płd!sę#ű~<<+"ÀŸxÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽBŠ@F€˜&S `ËcbăP-`'æӀű™{[”! ‘ eˆDh;ŹÏVŠEX0fKÄ9Ű-0IWfH°·ÀÎ Č 0Qˆ…){`È##x„™FòW<ń+źç*x™Č<č$9E[-qWW.(ÎI+6aaš@.Ây™24àóÌ ‘àƒóęxÎźÎÎ6Ž¶_-êżÿ"bbățćÏ«p@át~Ńț,/ł€;€mțą%îh^  uś‹fČ@” éÚWópű~<ß5°j>{‘-š]cöK'XtÀâśò»oÁÔ(€hƒáÏwÿï?ęG %€fI’q^D$.TÊł?ÇD *°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)Ź‚B(†Í°*`/Ô@4ÀQh†“p.ÂUž=púažÁ(Œ AÈa!ڈbŠX#Ž™…ű!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fș‘;È2‚ü†ŒG1”ČQ=Ô ”Cčš7„Fą Đdt1š ›ĐrŽ=Œ6ĄçĐ«hڏ>CÇ0Àè3Äl0.ÆĂB±8, “c˱"Ź «Æ°VŹ»‰őcϱwEÀ 6wB aAHXLXNŰHš $4Ú 7 „QÂ'"“šKŽ&șùÄb21‡XH,#֏/{ˆCÄ7$‰C2'čI±€TÒÒFÒnR#é,©›4H#“ÉÚdkČ9”, +ȅääĂä3ää!ò[ b@q€űSâ(RÊjJćć4će˜2AUŁšRĘšĄT5ZB­Ą¶RŻQ‡š4uš9̓IK„­ą•ÓhhśiŻètșʕN—ĐWÒËéGè—èôw †ƒÇˆg(›gwŻ˜LŠӋÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ȘŠȘȚȘ UóUËT©^S}źFU3Să© Ô–«UȘPëSSg©;š‡ȘgšoT?€~Yę‰YĂLĂOC€Q ±_ăŒÆ cłx,!k «†u5Ä&±ÍÙ|v*»˜ę»‹=Ș©Ą9C3J3WłRó”f?ă˜qűœtN ç(§—ó~ŠȚï)â)Š4Lč1e\kȘ–—–X«H«Q«Gëœ6źí§ŠœE»YûAÇJ'\'GgÎçSÙSʧ §M=:őź.Șk„Ą»Dwżn§î˜žŸ^€žLo§Țyœçú}/ęTęmú§őG Xł $Û Î<Ć5qo</ÇÛńQC]Ă@C„a•a—á„‘čŃ<ŁŐFFŒiÆ\ă$ămÆmÆŁ&&!&KMêMîšRMčŠ)Š;L;LÇÍÌÍąÍ֙5›=1Ś2ç›ç›Ś›ß·`ZxZ,¶š¶žeIČäZŠYn…Z9Y„XUZ]łF­­%Ö»­»§§čN“N«žÖgĂ°ń¶É¶©·°ćŰÛź¶m¶}agbg·ĆźĂî“œ“}ș}ę= ‡Ù«Z~sŽr:V:ȚšÎœî?}Ćô–é/gXÏÏŰ3ă¶Ë)ÄiS›ÓGggčsƒóˆ‹‰K‚Ë.—>.›ÆĘÈœäJtőq]ázÒő›ł›ÂíšÛŻî6îiî‡ÜŸÌ4Ÿ)žY3sĐĂÈCàQćŃ? Ÿ•0kߏ~OCOg”ç#/c/‘W­Ś°·„wȘśaï>ö>rŸă>ă<7Ț2ȚY_Ì7À·È·ËOĂož_…ßC#ÿdÿzÿѧ€%g‰A[ûűz|!żŽ?:ÛeöČÙíAŒ čAA‚­‚ćÁ­!hÈ쐭!śç˜Î‘Îi…P~èÖĐaæa‹Ă~ '…‡…W†?ŽpˆXŃ1—5wŃÜCsßDúD–DȚ›g1O9Ż-J5*>Ș.j<Ú7ș4ș?Æ.fYÌŐXXIlK9.*ź6nlŸßüíó‡ââ ă{˜/È]pyĄÎÂô…§©.,:–@LˆN8”đA*šŒ%òw%Ž yÂÂg"/Ń6шŰC\*NòH*Mz’ì‘Œ5y$Ć3„,ćč„'©ŒL Lʛ:žšv m2=:œ1ƒ’‘qBȘ!M“¶gêgæfvËŹe…ČțĆn‹·/•ÉkłŹY- ¶BŠèTZ(Ś*ČgeWfżÍ‰Ê9–«ž+ÍíÌłÊې7œïŸÿíÂᒶ„†KW-XæœŹj9ȉŠźÛ—Ű(Üxć‡oÊż™Ü”Ž©«ÄčdÏfÒféæȚ-ž[–Ș—æ—n ÙÚŽ ßVŽíőöEÛ/—Í(Û»ƒ¶C裿<žŒe§ÉÎÍ;?T€TôTúT6îÒĘ”aŚűnŃî{Œö4ìŐÛ[Œśę>ÉŸÛUUMŐfŐeûIûłś?ź‰Șéű–ûm]­NmqíÇÒę#¶ŚčÔŐÒ=TRÖ+ëGÇŸțïw- 6 UœÆâ#pDyäéś ßś :ÚvŒ{ŹáÓvg/jBšòšF›Sšû[b[șOÌ>ŃÖêȚzüGÛœ499â?ręéü§CÏdÏ&žțąțËź/~űŐëŚÎјѥ—ò—“żm|„ęêÀëŻÛÆÂÆŸÉx31^ôVûíÁwÜwïŁßOä| (ÿhù±őSЧû“““ÿ˜óüc3-ÛgAMA±Ž|ûQ“ cHRMz%€ƒùÿ€éu0ê`:˜o’_ĆFȚIDATxÚ̚ˏWÆçȚ[Ő=Ó=ŒíqüÈ)ŒH@Y Ä Áń°bƒò/ „ہ۱Í"A‚`"@" Ąb áGˆbÇxâÇńÌtWŐ=,ȘêÖ­ê†tAIIWŚTWÇwŸóĘsGT•ś:~{uWAAP€țnu=>ŻïEđê)ŒRäÊű gcc‰^żńȉ#ƒœó.eś¶ïéńÇ,1†č7ËMȘÊă§Œ m쌏źęĐșO•Ò‰\Ù?ł”y;Xœw?Yö9žó”Ă39àU9È={ÙĄßƒ"x… ƒș„l^bÍ_·ŠęÏ» «+Kz˜çΔ0őehuŠYZ[Ł «¶?Ś'ąŠs–~êH“„|”aRŚûămœwŰÀ˜Y3 ‘-ŒŹń^ĆXËë-H©âQT=* xœ3š@6—0è„+ÿŸ{Ăčuùÿd úĄE7YœS…*Qhä­Ż~ïUPŻ^È”@}Žæ9VÊïž^ò‘Ÿ_șö‡ä±‹òŸ;€Ś6|Žű űŽ3„xŻhQPxO^äűQNžyFjÀ ˆl/}òż~ê§ó81#„:ŹÒ©nȘ&’F^Éó‚QQsòqFj…ÔB"`Źgżőâo.|gV8™YiTŁâ fF°ȘP„jÓÂœŸ<ó^)Š‚,+ÿGczV‚©ç,jĘ^Œ|íKł81»څ”W|%O\/ê"ԏ*^=Łq†5DNHpç^zțŐKgß'•ÚąKU OÓx«nĘt6E1ˆQS±dŁ +`d҉$q€ęÁ?ž{ć­ÁÿȚ‰œođԄąRőńŠŠ”TŠ ŸŒśÎæ6w·vžyëȚ{ŠŒ Ï V‡XkH­y%śĐł •s"Šô–ÖVȚMżlČœ—ôđnl4N팦*Æ"J„sđÚ„ëÜÙÜj‡"‚Ș°œłËp±Gj‘ò™‡ŽrąŸ&‹)?ûósEșvÁŽ·_ŃĂAšŠźJMęyk㠆 /3òÚć¶ńcc…ÄÙ6tlÿÄÒ*îá°'Ïÿț—yš^Cf@Ën\G;2\"Eç+óoȚÜl|ę'ÈóŒ;›;Üxę&ƒTÊ"–ò9R•ÒžPœigbi©g^xőĆęï>ûŁĆgŸęŠź­.ëÜZˆHBhĆ«Úa)nĘșŸ{țüŸúäÇXY§W–8{ö$]eçțC¶¶wÙÙȚćĘ{ì?Ü'Éł1TφĂ^ïéo|}û{ßÿĄÌ-§kęêXšșú\…Ź(Ű}đ€……>g6NEíNJ‰!q–ÛïŒűÉs/3ńŸàè‘5ÒÄaŹÁZC’Š,/ .őydm…ĆáżÔ_yêkߟńÂƗÏő+OgnÖNì)E™ĐĐ'‘”š?lmĘŸÖŚŚšE‚– !‘Òy“8VWŹ,/pś}Ošę…€rÄÀȚȚśžęŻzI‘őU˃ 9őÄ+ÀçfÌ@lA„Ł+ê*ŸÖ­ńÌ3OzŐ, çÖÛwéĘĘea±ÿÙßœ9LÍ\m č2%44 Í.Ö*Š0"k88±łłƒœ~J/M1uA{-łć#àœ&Ž…4<7ßÚ$”€n-äC %Žăæš6N„ WŚêeƒjéŽû{û\čöÆR“ræÌ)†K‹-8ÖcŒ)ÙȘ2{Ö1[.œîż;;„*+ŽelÉ}”°«e„]«‹šÄàÙčżË„ËWú }NŸ~”ăëG±Îą€3¶zS1e,òŹÌˆ”ÜKČyX(2]ˎȘ«N èA/ A'UĆ«%„ȚŸ”ÉŐ+ŻWÙPNœ\çìč FŁ1Î:Œz\âkÂ3’Š­5U5XópŸE}è¶Aă7òĄ›”˜nëâU„w6ïqęú ŹsXç8wnƒÇΜ…awŽ!ڙÔTïŻąÖ[\˜§7u@ˆ Ș1`ZσąUAžg\żöFxæÙsœȚ8Ù|èëÚÒZ„°•I"Á;ߒ2Zbiô#Ż%ZÄ5PŸôöۛäyÀ±cG8œq2ŒZˆàéă>3mčZż§2hæ 4rZZŒ/”C­”Gë¶êôA՝E„ŁëkÍš%šĘæ{Š†š7Ô“HĘ™WdPhgäP…Æw•©T/ĐöšŽ>À`8,eŸ(àe™Čó« ö:Żê.àc)e„˜±hg+0g›55ÒʔNé5ÚÆA=“F#­ßülÄ\îÀŻu«ŒùħŸ†5œ+J$EUkò)‘%łą‡X„Ž,“ú'ŽŠŠVü­íÙbXÌi„ÄFäŃÉČFTȘҚ€• +?GÂlšk»¶Ł§Qt4ąòŃÁˆWÿô—pç…/>"íŒÖ°’*M­áwT,3Ëi”N‘E‰©P" ŹŒènAhÔŽ4jŒm€WŒÓ©ĄúœsŐ@É6DÍ«ÁoÈn‡èĐfž­SIĄYè· rљÆ)•ŠżÌ”"ó^1ÒAMŻšČśQößëń… 69•3>Žšba[śmèwöNLT€ńH1f)™ÜCĐ șmç„dbnÜÚgĐ}«șÎ+%茧©mÆîNźuZÿèȘ·=„„œđŽYLZFi§šȚcœK'#mfjkÒ­Á?é8^t20sh•—LBŠ”cÙŃD[ț‹RüO°Œ‡Æ:I«sìÊJ5àê.^˜Ÿ:ßím›ŽT™ź|§lă*‡…P•çńžhĂFŠïHN)‰©;šÂdkuäh–ABÌ Ąz*Aî)rχć˜kcß%ö7Ű:sž ”#oƒ[ü œhÆăb1'"gü«7čò·;|ŰùžŒŚ_«ˆÈg€ćˆ ëń›Čۇ]™ćÏm>ÌÇż| Žž±?ęIENDźB`‚8BIMFMsk ÿÿ2#!&%')#*&##!"+(&#(&)(("#    (.)! %& #!$     (%,$() #!&#$()#""!"+'$,)1..*)"#  !# ('!!(!*'&#'(&&%!  #!&#$()#""!"+'$)0)1./.0+/-+-.&' #!&#$()###!(+('&**+&(&*$)''+*"#!#!&#$(("!! !$.%)'.!(,#!+($+ !$("! !&$ '%(&!!# ')()#+("!($"#"#*!'%&(%#($'$(&#" #!&#()%+())&&+"($&&'#*&&&*"#   &''()**+))++*+*+****')+&)(*')*!#  #!'('',*!)#""!#+$*(%++ )'("#  #!!++%!(%%&&$+'&& ()'('*  #$!+,%!(%%&&$+'&& ()'('*  #! #"+,&$!(%%&&$+'&& ()'('*  #"! +,'!(%%&&$+'&& ()'('*  #" "!+,(!(%%&&$+'&& ()'('*  #!%& +,$!(%%&&$+'&& ()'('*  ##&''+,))!(%%&&$+'&& ()'('*  #%%&(),)!)#""!#+$*(%++ )'("#  #!"!+&! !)#""!"+'$-$!**)$*&(*)#!(**+,*"!)#""!"+'$-$!**)$*&(*)#"(**+,,!)#""!"+'$-$!**)$*&(*)#!#$#+'&!)#""!"+'$-$!**)$*&(*) '%*)*(-& )#""""+)(#"*%!')'#!#  &&%(0../*01(1',(+%1',)(.+0"($#  $&!#&**))*$&'&(+*+*(%%# !###(***)&!%'/,&/.%-0/(/*(%"(%***)&$  #"!%&$"*+%'+'*#(&$(#$"'&     !'$.!'$(  #,   &$"$#,  #"!%&$)*&*'*"'*/().(%#   !#))&%)#&)&&'''##!%  #"!%&$)*&*'*"'",-()/,,,)-.1-&'  #"!%&$)*'+'+$(#"%)! )&&&#(+/)"#! #"!%&$))%) $!%$&(, !*!&$-&%! !*)))&!%"'## !% ( (%&+,)!)*')&)&)*' "("#%*$!&%!  #"!%&'&*+%),')+*'%&#*$&'*"'&    &''()**+(*+*++**++**&)($*+'')*+(  #!'('',*)*&***'!**("'*$$"'&   #!!"++%))$&+&)+$(### ( # %)   #$!"+,%))$&+&)+$(### ( # %)   #! #&+,&$))$&+&)+$(### ( # %)   #"!$+,'))$&+&)+$(### ( # %)   #" "%+,())$&+&)+$(### ( # %)   #!%&#+,$))$&+&)+$(### ( # %)   ##&'*+,))))$&+&)+$(### ( # %)   #%%&(),))*&***'!**("'*$$"'&   #!"%+&" )*&*'*"',*$'% ,,/*# "#!(**+,*")*&*'*"',*$'% ,,/*# "#"(**+,-)*&*'*"',*$'% ,,/*# "#!#$'+'&)*&*'*"',*$'% ,,/*# $ %%*$%+,) )*&+!'*$(&#)%&#!&&#  "%&-*00*.0/('(*0&-.*#"/,!+%(!  $&!#&**))*$&'&(+*+*'!%$ !###(***)%#%)//*..%,0.+0*(%!(%*)*)&$ !""!%%%%**+#*(+&&')# (    + )'%%"$%(   %()* !""!$$$%)'+#*(+&&%)*0-%.##  ")&("))*%$('!!$$ "  !""!$$$%)'+#*(+&&%)&&)-%/'*'+''*(&' !""!$$$%)'+#*(+')(+!$#('#(# $!#(#"#$!""!$$$%)&*")'"$%.()&&+*( '   &*))'*%$!'    %(!####&/-)&*")'*$&&(!'$("% #%  !""!$$%()'+(**++(&)()$)&% %%   &'''()**+**+++++*++%"#"&)(&$"   # '('&+))'+#*(+**++"*%($  # !**$)(+'**)*)%)$( !!  ##!*+$)(+'**)*)%)$( !!  # #"*+%$)(+'**)*)%)$( !!  #!! *+&)(+'**)*)%)$( !!  #! "!*+')(+'**)*)%)$( !!  # %& *+#)(+'**)*)%)$( !!  #"&''*+())(+'**)*)%)$( !!  #$%&((+()'+#*(+**++"*%($  # "!*% )'+#*(+&&%)+ *% &"%(# # (***+)!)'+#*(+&&%)+ *% &"%(# #!(***++)'+#*(+&&%)+ *% &"%(# # #$#*&%)'+#*(+&&%)+ *% &"%(#  %'%'&$('.+)'+#*(+&%')!##!"  "",$(/)*/011.*1/0(00,+-1+&*)$$   $&!#&**))*#&'&(+*+*("%% !##%****)%&&)/0),-#.-,&1,)&#(&***)&$                                                                                                    Ńÿüÿńœ»ž”ŻÍúțíÿüÿŒáóÚÙŚÔËșČșíÿüÿșÙòÏÎÌÆč­čșîÿüÿčÙÎęÏęÎÏțÎÿÏÎÍÊÁł”șșïÿüÿ·ŰùÎÏęÎ ÏÍÍÌËĆČ°șșŸțńÿüÿ¶ŰęÍęÎÍÎÍÎÎÍÍËËÈÁ±ŻœșčĆțòÿüÿ¶ŚüÍÎúÍ ÌËÊÈÄż­ŹĂŸșžÒțóÿüÿŽŚÍÍÌúÍÿÌÍËËÈÇÀž©šÉÄżș·ßțôÿüÿłÖęÌÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»·ëțőÿüÿČŐțÌËÌËÌûËÿÊ ÇÄŒČą›ÓŃËÆÁ»·ôőÿüÿ°ÓôËÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶ûöÿüÿŻÓțÊËÊËÊËÊËÊËËłŸƒ~z‰ŒÜŚÓÓÍÇÂœ”țśÿüÿźÓüÊÉțÊÉÊʛ„„ƒ‚ywƒâĘŰÓÓÎÈĂŸłțűÿüÿŹÒÉÉțÊțÉÊÉɛț„ƒ‚€{yˆéăȚÙÔÓÏÉÄżłțùÿüÿ«ĐÈțÉÈțÉÈÉ­ț„›čĆÁȘ‰”ìêäßÚÔÓĐÊĆż”țúÿüÿȘĐśÈ’„„šÈÈĆÀčȘŹÜŚÔÓŃÏÏÒŃËÆż·țûÿüÿ©ĐÈÇÈțÇțÈĄțÇĆÁ»Ż–uom‡‰Œ‘Ÿ«ŒÆœ»ęüÿüÿ§ÎÆùÇ°„„ŁțÇĆÂș±Š„pn‡’“•”’™Ź·ĂüÿüÿŠÍöÆÇęÆĆÂŒłȘ€mk“””–˜——•‘˜Ąęęÿüÿ„ÍțÆÿĆöÆÄĂŸ”ąplr”ț•ÿ—™››š˜…üęÿüÿ€ÌÄęĆÄśĆĂŸŹzrr‘ üŸĄąŁ„§’üÿüÿŁËśÄĆüÄ ĂÂź~{z–­°ŻłțČłŽ±°Č–üÿüÿąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄš}z“·°ŽČ·žțčž·žž™üÿüÿ ÉőĂÄțĂ­ƒ„„ŠöĂț üÿüÿ ŸÈÂÂĂÂĂÂĂÂęĂțŸˆƒ„„ÂĂÂÂțĂțÂĂțÂĂ üÿüÿŸÇüÂÁęÂÁę„„ƒ™țÁțÂÁțÂÁÂÂÁŸüÿüÿžÇüÁÂüÁÿÂÿÁ˜„„­ÁÁÂüÁÂÁÂüÁüÿüÿÄüÁÀțÁÀÁÀÁÀÀ”„„žÁÀÁÀÁÀÁÁțÀțÁÀÁüÿüÿœÄòÀ”„„ŒúÀÁùÀ›üÿüÿ ›ĂÀżÀÀżżÀżúÀżÀÀżÀÀężÿÀżÀżÀÀżżÀ›üÿüÿšĂżŸúżŸđżŸúżšüÿüÿšÁżŸŸüżŸżżŸżŸ·ț„ÿżŸżŸżŸżțŸÿżÿŸÿżšüÿüÿ˜ÁțŸœśŸ¶ț„ęŸœęŸœüŸœŸ˜üÿüÿ˜żœŸțœŸœœŸțœÿŸ”ț„țœŸœŸœœŸœŸüœŸ˜üÿüÿ—ż»ëœŒûœŒœœŒŒ—üÿüÿ—Ÿ»œœŒŒœŒŒœŒœœŒțœęŒœțŒœŒŒœŒŒœęŒ—üÿüÿ—œșćŒœțŒșŒ—üÿüÿ—œč»Œ»ùŒÿ»Œ»»üŒ»țŒę»Œ»»č»—üÿüÿ—Œ¶ț»Œ»ŒŒę»Œț»Œś»Œ»Œț»¶»—üÿüÿ—Œ”è»șû»”»—üÿüÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș—üÿüÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș—üÿüÿ—șßČș—üÿüÿ—ș¶áČ”ș—üÿüÿ—żÁàĆż—üÿęÿȚۗŐęÿęÿÍżŸŸœŒșáżÍęÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿúÿóöđöćÿüÿńˆŒŒ‹ț‰ÿˆ‡ˆˆ‡ìçÿęÿńŠòpçÿęÿˆÉùÛÜÖÒÌÈŸ»ččŒÙ‹yÁèÿęÿŒ¶˜ő”š•‚˜Òțőÿëőôțûÿęÿˆ”˜ô”«˜üÿțÿț…Č’“”“”ü“”““”“ż”îp€üÿÿÿ țü‚±’‘“’’“’“’ę“’“–éđŸŒ–€üÿÿÿ țû€Ż‘‘‘‘û’ÿ‘’û‘’‘’‘’’‘’’‘’‘’€uüÿÿÿ țú­ŽŽ‘‘ț‘țÿ‘ ‘‘‘‘ț€tüÿÿÿțù~­Ț‘€süÿÿÿ țô}«‘‘‘ę‘ꐑꐑț‘ț‘țÿ‘rüÿÿÿțù~Șúöțțțrüÿÿÿțù~šțÿđűpüÿÿÿțû~ŠùŽüŽÿùŽŽŽŽęŽ~oüÿțÿü€€ęŽęŽțęŽęŽŽŽŽŽüŽ~oüÿțÿ ț€ŁŒŒŒŒŒúŒûŒÿ ŒŒŒŒ~nüÿțÿț‚ ú‹Œ‹ŒŒ‹‹Œț‹Œ‹Œő‹Œ‹‹~müÿęÿ‚žüŠ‹ęŠ‹őŠ‹Š‹‹üŠ‹ŠŠ}lüÿęÿ~œç‰ˆù‰}lüÿțÿę~šțˆ‡ûˆ‡ęˆ‡üˆ‡ûˆ‡ˆ‡ęˆ}jüÿțÿț~•ü„…„…„„ț…ö„…„„…„„…ę„|iüÿțÿț~“óƒ„óƒ„üƒ{iüÿęÿ~‘‚æ‚‚ț‚{hüÿęÿ~Žęț€ÿ€ú€ü€ö{hüÿęÿ~Œü€ÿÿ€ÿÿ€ț€țü€ÿț€ę€{güÿęÿ}‰~ü~~~ú~~~ű~zfüÿęÿ~‡~~}}ô~}ù~}ù~zfüÿęÿ}…ü}|ę}|}}|ì}{füÿęÿ}‚ô|}ț|}ś|}||}}|}zeüÿęÿ|ț|ÿ{ę|ÿ{|û{|{ț|ű{|{{yeüÿęÿy†ękÿjękülęmúnęoțpqxzeüÿțÿđlȚ{oz‰üÿÿÿđ۱Țjy©Ûüÿÿÿ ìáàÛÆÆĆÄÄÂêÆÂÄÄĆÆÆÛûÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿțÿóöđöáÿÿńŠŽțŒ‹Š‰‰ˆ‡ìăÿÿˆÉùÛÜÖÒÌÈŸ»ččŒÙăÿÿŒ°˜ő”š•Áäÿÿˆ ˜ô”«˜Òțőÿëőôțśÿÿ…Ÿ’“”“”ü“”““”“ż”ț“”““ț’ ‘ŽŒ‹‰—űÿ ț‚Ÿ’‘“’’“’“’ę“’“–éđŸŒŒêùÿ ü€Ÿ‘‘‘‘û’ÿ‘’û‘’‘’‘’’‘’’‘’‘’‰ËùÿüžŽŽ‘‘ț‘țÿ‘ ‘‘‘‘ț€Éțúÿû~žŠŒŽęŽÿęŽûŽțțŽÿŽęxĆûüûÿ ú~‚ƒ„„ƒ„…û„…„ûƒ„ƒ„ƒ„țƒ„ƒƒ„ƒ„pžńęòțÿú~œú€ÖÿáàßĘÜÚŰŚŐÓÏËÊÈÆĆĂÂÁÀüżșüčșÆÆÿû~œ~~}~ț}ö«á•“§ÿü€œę{z{~Ą˜”á•’tÿț€›ûx “’ᔄ–ÿț‚›vuțvxž™’’â“’wíÿ ÿ‚štsstsˆĄ’á’ÿ‡ÿÿ ÿ‚šqqpqq™™ŽáxŃÿÿ ÿ‚™llnn|ĄŠâŽˆ}țÿ ÿ€™deik’š‹‰áŒzČțÿ ț˜]`do ˆŠă‹Š‰vțțÿ ț~˜Y[_‡œ‡„ăˆÿ‡|›ęÿ ț~˜VW]˜Žƒ„ă†ƒ…sđęÿ ÿ~—UTyšƒƒä„ƒ€}Šüÿÿ~—TTŽă‚~€tÖüÿÿ~–Tj•€y~ä~y{|ûÿÿ}–S†Šywă}xzržûÿÿ~Ź`’qyä|{tzrțûÿÿ}Äȗwnă{ÿvr˜úÿÿ}±ÿ€oitęyûzï{zpylńúÿÿ|”š{hătqrtùÿÿy•‚ztkjjękülęmúnęoțpqxmÇùÿÿl}qwyâ{oműÿéĆȚjƒŐßéđûÿáàÛÆÆĆÄÄÂêÆ ÂÄÄĆÆÆÛàÙàęÿûÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿùÿčÙÎęÏęÎÏțÎÿÏÎÍÊÁł”șșòÿùÿ·ŰùÎÏęÎ ÏÍÍÌËĆČ°șșŸțôÿùÿ¶ŰęÍęÎÍÎÍÎÎÍÍËËÈÁ±ŻœșčĆțőÿùÿ¶ŚüÍÎúÍ ÌËÊÈÄż­ŹĂŸșžÒțöÿùÿŽŚÍÍÌúÍÿÌÍËËÈÇÀž©šÉÄżș·ßțśÿùÿłÖęÌÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»·ëțűÿùÿČŐțÌËÌËÌûËÿÊ ÇÄŒČą›ÓŃËÆÁ»·ôűÿùÿ°ÓôËÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶ûùÿùÿŻÓțÊËÊËÊËÊËÊțËÊÉĆœŽ€”ÜŚÓÓÍÇÂœ”țúÿùÿźÓüÊÉțÊÉüÊÇÆżŽ€—âĘŰÓÓÎÈĂŸłțûÿùÿŹÒÉÉțÊțÉÊûÉÈÆÀ”§žéăȚÙÔÓÏÉÄżłțüÿùÿ«ĐÈțÉÈțÉÈțÉțÈÇĆÁ·©šìêäßÚÔÓĐÊĆż”țęÿùÿȘĐńÈĆÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿ©ĐÈÇÈțÇțÈțÇÈțÇĆÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·ĂÿÿùÿŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜Ąęÿùÿ„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…üÿùÿ€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÿÿùÿŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č–ÿÿùÿąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™ÿÿùÿ ÉőĂÄțĂÿÂóĂț ÿÿùÿ ŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ ÿÿùÿŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸÿÿÿÿçvțÁÂüÁÂÁÂüÁÿÿÿÿvéæ v”ŹÀÁÀÁÀÁÁțÀțÁÀÁÿÿÿÿvéąv”žûÀÁùÀ›ÿÿÿÿvąBAA@ü?>==ę<ÿ;ț:9ąv”žÀężÿÀ żÀżÀÀżżÀ›ÿÿÿÿvąUeedțcbaa`ț_^]]\ț[Gąv”úżŸúżšÿÿÿÿ vąQb}{a`__^ț]\[[ZYYțX Dąv”ŸżŸżŸżțŸÿżÿŸÿżšÿÿÿÿvąM_y}x]\[[ZZYYXWWVSKHH,ąv”ŸŸœęŸœüŸœŸ˜ÿÿÿÿvąI\[v}uYXXWWVUTKC:ę6 ąv”œŸœŸœœŸœŸüœŸ˜ÿÿÿÿvąFXt}sțrUTSNC8ú6ąv”țœŒûœŒœœŒŒ—ÿÿÿÿvąBU}qpț}QG=ś6ąv”œțŒœŒŒœŒŒœęŒ—ÿÿÿÿvą?RțQnjb8ő6ąv”űŒœțŒșŒ—ÿÿÿÿvą;ONNI=ò6ąv”ŒŒ»țŒę»Œ»»č»—ÿÿÿÿvą7LG=đ6ąv”ú»Œ»Œț»¶»—ÿÿÿÿvą0<î6ąv”û»șû»”»—ÿÿÿÿvąí6ąv”șșț»țșü»Žș—ÿÿÿÿvąí6ąv”œșț»üș»șș¶łș—ÿÿÿÿvąí6ąv”›óČș—ÿÿÿÿvąí6ąv”›ôČ”ș—ÿÿÿÿvąëąv”ŸóĆż—ÿÿÿÿvææíŚæÁvï—ŐÿÿÿçvïżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿűÿńœ»ž”ŻÍúțńÿűÿŒáóÚÙŚÔËșČșńÿűÿșÙòÏÎÌÆč­čșòÿšè°šÍÊÁł”șșóÿæ„ÌËĆČ°șșŸțőÿù€îù€éű€ šš‘€œș·Ćțöÿù|íù|éű| „Äż­ŹĂŸșžÒțśÿúy ïííyí’yyééâíùy ŽÀž©šÉÄżș·ßțűÿùv ívvßÜvçűv r•Žˆ–ĐÊĆÀ»·ëțùÿùs ìssŽŽÏŁssçűs ŠŒČą›ÓŃËÆÁ»·ôùÿùpìępÎĄppçűp ‹œ±ą–ÖÓÒÌÇÁŒ¶ûúÿùp ìpp‹Ț‹Ț‹pçűpr•††ÜŚÓÓÍÇÂœ”țûÿùoÿìoì‹ooȚoæìùo‹żŽ€—âĘŰÓÓÎÈĂŸłțüÿæo‹À”§žéăȚÙÔÓÏÉÄżłțęÿ„èopr•‰›ìêäßÚÔÓĐÊĆż”țțÿűÿƒ›”’ŽôŒ‹ÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țÿÿűÿȘ€Ł€țŁț€țŁ€țŁŹÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœ»ęÿűÿ§ÎÆÇÇę—Ǘț˜ę—–”șŠ…€zyvvwyz}~’™Ź·ĂÿűÿŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜Ąęűÿ„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…üűÿ€ÌÄĆƓ””“ü”Ćț”“’Š…|țz Ÿ{|}ąŁ„§’ÿűÿŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č–ÿűÿąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™ÿűÿ ÉțĂț‘Б‘‘‘‘ü‘‘‘Ăț ÿűÿ ŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ ÿűÿŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸÿűÿžÇțÁőŒÁőŒÁŒŒęÁÿűÿÄüÁÀțÁÀÁÀÁÀÀÁÁÀÀÁÀÁÀÁÀÁÁțÀțÁÀÁÿűÿœÄçÀÁùÀ›ÿűÿ›ĂÀżÀù‰ˆű‰ˆ‰żú‰ÀżżÀ›ÿűÿšĂżŸúżŸđżŸúżšÿűÿšÁżŸŸüżŸżżŸżŸțżŸżżŸżŸżŸżțŸÿżÿŸÿżšÿűÿ˜ÁțŸÿ†…†Ÿę†…û†Ÿ…†…††…ț†…†ŸŸœŸ˜ÿűÿ˜żœŸțœŸœœŸțœÿŸœŸüœŸœŸœœŸœŸüœŸ˜ÿűÿ—ż»ëœŒûœŒœœŒŒ—ÿűÿ—Ÿ»œœûƒ„ƒƒŒƒƒœęƒÿ„ÿƒ„țƒ„ƒƒęŒ—ÿűÿ—œșćŒœțŒșŒ—ÿűÿ—œč»Œ»ùŒÿ»Œ»»üŒ»țŒę»Œ»»č»—ÿűÿ—Œ¶»»‚ü»‚úÿ»‚úÿ»¶»—ÿűÿ—Œ”è»șû»”»—ÿűÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș—ÿűÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș—ÿűÿ—șßČș—ÿűÿ—ș¶áČ”ș—ÿűÿ—żÁàĆż—ÿùÿȚۗŐùÿÍżŸŸœŒșáżÍŃÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿùÿčÙÎęÏęÎÏțÎÿÏÎÍÊÁł”șșòÿùÿ·ŰùÎÏęÎ ÏÍÍÌËĆČ°șșŸțôÿùÿ¶ŰęÍęÎÍÎÍÎÎÍÍËËÈÁ±ŻœșčĆțőÿùÿ¶ŚüÍÎúÍ ÌËÊÈÄż­ŹĂŸșžÒțöÿùÿŽŚÍÍÌúÍÿÌÍËËÈÇÀž©šÉÄżș·ßțśÿùÿłÖęÌÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»·ëțűÿùÿČŐțÌËÌËÌûËÿÊ ÇÄŒČą›ÓŃËÆÁ»·ôűÿùÿ°ÓôËÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶ûùÿùÿŻÓțÊËÊËÊËÊËÊțËÊÉĆœŽ€”ÜŚÓÓÍÇÂœ”țúÿùÿźÓüÊÉțÊÉüÊÇÆżŽ€—âĘŰÓÓÎÈĂŸłțûÿùÿŹÒÉÉțÊțÉÊûÉÈÆÀ”§žéăȚÙÔÓÏÉÄżłțüÿùÿ«ĐÈțÉÈțÉÈțÉțÈÇĆÁ·©šìêäßÚÔÓĐÊĆż”țęÿùÿȘĐńÈĆÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿ©ĐÈÇÈțÇțÈțÇÈțÇĆÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·ĂÿÿùÿŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜Ąęÿùÿ„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…üÿùÿ€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÿÿùÿŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č–ÿÿùÿąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™ÿÿùÿ ÉőĂÄțĂÿÂóĂț ÿÿùÿ ŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ ÿÿùÿŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸÿÿÿÿÁé»țÁÂüÁÂÁÂüÁÿÿÿÿÀéó ž§”ÀÁÀÁÀÁÁțÀțÁÀÁÿÿÿÿÀòœœžžŸț ÿĄÿąŁ„€țŠ‡ò¶§­ûÀÁùÀ›ÿÿÿÿżńąŁ€€„„Š§§šš©©łéí°«Ș’ńŽ§­ÀężÿÀ żÀżÀÀżżÀ›ÿÿÿÿœï©©ȘȘ««Ź­­źŻŻłìàÓÌŻ’‚‹zﱧŹúżŸúżšÿÿÿÿ!Œï§e•ĆÔÚĎ°”¶ĂŃÖŚÔ­°ș””ŹŸżŸżŸżțŸÿżÿŸÿżšÿÿÿÿ»í~NŰäìîèĘlxč©Č“ÆŠŃÚĂœ ŽíźŠŹŸŸœęŸœüŸœŸ˜ÿÿÿÿ$č됥ŒÉńńđçŚ\—•‘«‘Š–™“•Œë«Š«œŸœŸœœŸœŸüœŸ˜ÿÿÿÿžéÆĆŹžæńîß߯• ’˜Ąƒ†‡éȘŠ«țœŒûœŒœœŒŒ—ÿÿÿÿ¶èœș=ąíymà˓•—œŒ•ˆƒ…„„Œè©ŠȘœțŒœŒŒœŒŒœęŒ—ÿÿÿÿ”æÄÔrOĘçłKÊԔ‚‡˜‘–ƒ‚˜ć§ŠȘűŒœțŒșŒ—ÿÿÿÿŽä„ÆŠÔôûî”œĐ„z‚…ƒ}~…ä„ŠȘŒŒ»țŒę»Œ»»č»—ÿÿÿÿČá•ŐÂìăóïÜƧilpx}ŽŠoim} Șú»Œ»Œț»¶»—ÿÿÿÿ±ái¶Â c§ŒÎkafih{†o“ŠŠu{àŁ„Șû»șû»”»—ÿÿÿÿŻȚc:u§°Â«yf[Y]d{ƒut…`ˆ_Țą„Șșșț»țșü»Žș—ÿÿÿÿźÜba[H9@ETn_STofg†„ƒlpmÜĄ„©șț»üș»șș¶łș—ÿÿÿÿ­Û\;;9<;?HO\Viha^qv—€lW}Û Ą„óČș—ÿÿÿÿŹÙYGFBqhILQXQr~†„e‡‹‰~^Ű Ą„ôČ”ș—ÿÿÿÿ«éŰ ȘŻóĆż—ÿÿÿÿȘ馟ï—ŐÿÿÿçïżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿúÿńœ»ž”ŻÍúțïÿúÿŒáóÚÙŚÔËșČșïÿúÿșÙòÏÎÌÆč­čșđÿúÿčÙÎęÏęÎÏțÎÿÏÎÍÊÁł”șșńÿúÿ·ŰùÎÏęÎ ÏÍÍÌËĆČ°șșŸțóÿúÿ¶ŰęÍęÎÍÎÍÎÎÍÍËËÈÁ±ŻœșčĆțôÿúÿ¶ŚüÍÎúÍ ÌËÊÈÄż­ŹĂŸșžÒțőÿúÿŽŚÍÍÌúÍÿÌÍËËÈÇÀž©šÉÄżș·ßțöÿúÿłÖęÌÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»·ëțśÿúÿČŐțÌËÌËÌûËÿÊ ÇÄŒČą›ÓŃËÆÁ»·ôśÿúÿ°ÓôËÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶ûűÿúÿŻÓțÊËÊËÊËÊËÊțËÊÉĆœŽ€”ÜŚÓÓÍÇÂœ”țùÿúÿźÓüÊÉțÊÉüÊÇÆżŽ€—âĘŰÓÓÎÈĂŸłțúÿúÿŹÒÉÉțÊțÉÊûÉÈÆÀ”§žéăȚÙÔÓÏÉÄżłțûÿúÿ«ĐÈțÉÈțÉÈțÉțÈÇĆÁ·©šìêäßÚÔÓĐÊĆż”țüÿúÿȘĐńÈĆÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țęÿúÿ©ĐÈÇÈțÇțÈțÇÈțÇĆÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœ»ęțÿúÿ§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·ĂțÿúÿŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜Ąęÿÿúÿ„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…üÿÿúÿ€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’țÿúÿŁËțÄpu€ęÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č–țÿúÿąÊÄĂÄpż~ĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™țÿúÿ ÉțĂpłxŸ­±țĂÄțĂÿÂóĂț țÿúÿ ŸÈÂÂĂpž…ŹŻțĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ țÿúÿŸÇțÂpž™xœ­ÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸțÿúÿžÇțÁ p—š{Œ·ÁÂÂęÁÂțÁÂüÁÂÁÂüÁțÿúÿÄțÁp——›ˆžÀÁÀÀÁÁÀÀÁÀÁÀÁÀÁÁțÀțÁÀÁțÿúÿœÄțÀpț—ž™±óÀÁùÀ›țÿúÿ›ĂÀżÀpœț— §ÂšƒŹżÀżÀÀżÀÀężÿÀżÀżÀÀżżÀ›țÿúÿšĂżŸżpœxĄ»À„ȘŸőżŸúżšțÿúÿšÁżŸŸpœvv‰čœÀÀ™…ŹŸżŸżżŸżŸżŸżțŸÿżÿŸÿżšțÿúÿ˜ÁțŸ p›{—~|±œœż‚—ŹœüŸœęŸœüŸœŸ˜țÿúÿ˜żœŸœp›{™™Šv«»Żšw§źęœŸœŸœœŸœŸüœŸ˜țÿúÿ—ż»œœpš{š§Ÿšv©›—†š¶üœŒûœŒœœŒŒ—țÿúÿ—Ÿ»œœpš{šš«Ž›v”•€§š»ŒœțŒœŒŒœŒŒœęŒ—țÿúÿ—œșŒŒpš{ššȘŒ·|‰…~ąš”śŒœțŒșŒ—țÿúÿ—œč»Œp—{ššȘŒŒ·u„}…šŻțŒ»țŒę»Œ»»č»—țÿûÿÚ~uutrp–zšš©»»žt‚u“œ§Źù»Œ»Œț»¶»—țÿęÿî‰|•Ź©’ŽŽz™§©»»ąxz‚˜ §Čú»șû»”»—țÿțÿâw–ÈțÊȉ‹ˆw™§šșș~xsĄ—„§č»șșț»țșü»Žș—țÿÿÿńwšüÊșț„ u˜Ššș§tt–Ą›Š«țșț»üș»șș¶łș—țÿÿÿ›łęÊəƒw“ Ą±zq‹ •Ÿ °ńČș—țÿÿÿv‚™ÉÊÊ”‚€‚w‡’  “pŒ œœ ­ńČ”ș—țÿÿÿs€Š˜€‚ƒ{zŸŻšr•±ŻšŻșïĆż—țÿÿÿ‡{ü€ÿxu€ˆŠzˆ‘ț‹ì—Őÿÿÿÿ éuy‚~ys‘čțżł»æżÍÿÿțÿôŻxsu{šżæĘÿŃÿŃÿűÿńœ»ž”ŻÍúțńÿűÿŒáóÚÙŚÔËșČșńÿűÿșÙòÏÎÌÆč­čșòÿűÿčÙÎęÏęÎÏțÎÿÏÎÍÊÁł”șșóÿűÿ·ŰùÎÏęÎ ÏÍÍÌËĆČ°șșŸțőÿűÿ¶ŰęÍęÎÍÎÍÎÎÍÍËËÈÁ±ŻœșčĆțöÿűÿ¶ŚüÍÎúÍ ÌËÊÈÄż­ŹĂŸșžÒțśÿűÿŽŚÍÍÌúÍÿÌÍËËÈÇÀž©šÉÄżș·ßțűÿűÿłÖęÌÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»·ëțùÿűÿČŐțÌËÌËÌûËÿÊ ÇÄŒČą›ÓŃËÆÁ»·ôùÿűÿ°ÓôËÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶ûúÿűÿŻÓțÊËÊËÊËÊËÊțËÊÉĆœŽ€”ÜŚÓÓÍÇÂœ”țûÿűÿźÓüÊÉțÊÉüÊÇÆżŽ€—âĘŰÓÓÎÈĂŸłțüÿűÿŹÒÉÉțÊțÉÊûÉÈÆÀ”§žéăȚÙÔÓÏÉÄżłțęÿűÿ«ĐÈțÉÈțÉÈțÉțÈÇĆÁ·©šìêäßÚÔÓĐÊĆż”țțÿűÿȘĐńÈĆÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țÿÿűÿ©ĐÈÇÈțÇțÈțÇÈțÇĆÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœ»ęÿűÿ§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·ĂÿűÿŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜Ąęűÿ„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…üűÿ€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÿűÿ›Źś©ȘüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č–ÿÿęő»ę©ÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™ÿÿ=țVőŠțV=©ĂÄțĂÿÂóĂț ÿ ÿ<ÿÿVFHHGHHGęHIV”Ă<”ČęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ ÿÿ;ÿÿTőŠT”Â;”„üÂÀÂțÁțÂÁțÂÁÂÂÁŸÿ ÿ;TST„€€„€û„€TST;”ŠÂęÁÂțÁÂüÁÂÁÂüÁÿÿ:SRRőŁÿRS:”„ÁÀÀÁÁÀÀÁÀÁÀÁÀÁÁțÀțÁÀÁÿÿ9ÿÿRőĄR”À9”„óÀÁùÀ›ÿÿ8ÿÿPžțŸžüŸÿžP”À8”„țÀżÀÀżÀÀężÿÀ żÀżÀÀżżÀ›ÿÿ8OOPțœÿÿœ œœœPOO8”„òżŸúżšÿÿ7NMNőšNMN7”€żŸțżŸżżŸżŸżŸżțŸÿżÿŸÿżšÿÿ6ÿÿMő˜M”Ÿ6”€śŸœęŸœüŸœŸ˜ÿÿ4ÿÿK—––—ț–—ę– K”Ÿ4”€ŸŸœŸüœŸœŸœœŸœŸüœŸ˜ÿÿ3JIIőLÿIJ3”€öœŒûœŒœœŒŒ—ÿÿ3țHőțH3”€ŒțœęŒœțŒœŒŒœŒŒœęŒ—ÿÿ1ÿÿFŽŽüŽ ŽŽF”Œ1”€đŒœțŒșŒ—ÿÿ0ÿÿE‹üŒ‹țŒ ‹ŒE”Œ0”€»»Œ»»üŒ»țŒę»Œ»»č»—ÿÿ.DDCü‰ Š‰‰ŠŠ‰‰CDD.”ŁŒț»Œś»Œ»Œț»¶»—ÿÿ-țBꇆü‡†‡țB-”Łó»șû»”»—ÿÿ-ÿÿA„…ę„…ü„A”ș-”Łù»ÿșț»țșü»Žș—ÿÿ+ÿÿ?‚ț‚‚‚‚‚?”ș+”Łș»ș»üșț»üș»șș¶łș—ÿÿ*ț>ü€ûț>*” ëČș—ÿÿ)ț=ÿ}ÿ~}~}~ț}~ț=)” ìČ”ș—ÿÿ)ÿÿ;ő>;”Ć)”„ëĆż—ÿÿ'ÿÿ:ő~:——'ç—Őÿę!őkț!&çżÍÍżŸŸœŒșóżÍçÿŃÿŃÿűÿńœ»ž”ŻÍúțńÿűÿŒáóÚÙŚÔËșČșńÿűÿșÙòÏÎÌÆč­čșòÿšè°šÍÊÁł”șșóÿæ„ÌËĆČ°șșŸțőÿő€îț€˜âű€ ĆÈÁ±ŻœșčĆțöÿő|íț|á•ű| „Äż­ŹĂŸșžÒțśÿùyí“àŐííyțíűy ŽÀž©šÉÄżș·ßțűÿùvìßvvìțvìśv ‹œł€ąĐÊĆÀ»·ëțùÿùsߎssìțsìśs r”Ž†ÓŃËÆÁ»·ôùÿùpëțpëțpëśp ‹œ±ą–ÖÓÒÌÇÁŒ¶ûúÿùpëțpëțpëśp‹œŽ€”ÜŚÓÓÍÇÂœ”țûÿùoëțoÿëÿoëśor–‡ŠâĘŰÓÓÎÈĂŸłțüÿæo‹À”§žéăȚÙÔÓÏÉÄżłțęÿ„èos‹Á·©šìêäßÚÔÓĐÊĆż”țțÿűÿƒ›”’Žùrÿsțrq•‹šȚÙŐÓŃÏÏÒŃËÆż·țÿÿűÿȘ€Ł€țŁț€țŁ€țŁŹÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœ»ęÿűÿ§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·ĂÿűÿŠÍțÆô—–ÂŒłȘ ˜–““””–˜——•‘˜Ąęűÿ„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…üűÿ€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÿűÿŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č–ÿűÿąÊÄĂÄôÌ ËÊÇÂŒżżž»»żüÁ·žž™ÿűÿ ÉőĂÄțĂÿÂóĂț ÿűÿ ŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ ÿűÿŸÇțÂúŽŽęŽțŽÿÿÂÁțÂÁÂÂÁŸÿűÿžÇüÁÂüÁÿÂęÁÂțÁÂüÁÂÁÂüÁÿűÿÄüÁÀțÁÀÁÀÁÀÀÁÁÀÀÁÀÁÀÁÀÁÁțÀțÁÀÁÿűÿœÄțÀęŠ ‰Š‰Š‰ŠŠ‰‰ŠűÀÁùÀ›ÿűÿ ›ĂÀżÀÀżżÀżúÀżÀÀżÀÀężÿÀ żÀżÀÀżżÀ›ÿűÿšĂżŸúżŸđżŸúżšÿűÿšÁżŸŸüżŸżżŸżŸțżŸżżŸżŸżŸżțŸÿżÿŸÿżšÿűÿ˜ÁțŸćăÿŸœŸ˜ÿűÿ˜żœŸțœŸœœŸțœÿŸœŸüœŸœŸœœŸœŸüœŸ˜ÿűÿ—ż»ëœŒûœŒœœŒŒ—ÿűÿ—Ÿ»œœ‚‚ű‚ÿę‚ ‚‚œŒŒœŒŒœęŒ—ÿűÿ—œșćŒœțŒșŒ—ÿűÿ—œč»Œ»ùŒÿ»Œ»»üŒ»țŒę»Œ»»č»—ÿűÿ—Œ¶»»‹ŒŒ‹țŒÿ‹Œ‹‹Œś»Œ»Œț»¶»—ÿűÿ—Œ”è»șû»”»—ÿűÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș—ÿűÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș—ÿűÿ—șßČș—ÿűÿ—ș¶áČ”ș—ÿűÿ—żÁàĆż—ÿùÿȚۗŐùÿÍżŸŸœŒșáżÍŃÿŃÿŃÿűÿńœ»ž”ŻÍúțńÿűÿŒáóÚÙŚÔËșČșńÿűÿșÙòÏÎÌÆč­čșòÿçèìŐÍÊÁł”șșóÿæĘÌËĆČ°șșŸțőÿüÛÜśÛúțÛúțÛ ÜÛÛĆÈÁ±ŻœșčĆțöÿęŰÿÙŰÙŰŰțÙÿŰÙúŰÙúÙțŰÿÙ Ű„Äż­ŹĂŸșžÒțśÿûŚęúțŚÿúŚúŚțúûŚ ŽÀž©šÉÄżș·ßțűÿÿŐÖțŐúțŐ úŐúÖŐúúÖŐúüŐÖՋœł€ąĐÊĆÀ»·ëțùÿÓÒÒÓÓÒțÓÒÓțÓùÓÓÒùÓÒùûÓ ÒŠŒČą›ÓŃËÆÁ»·ôùÿÓÒÒÓÓÒùÓÒÓùÓùÓÓÒùÓÒùûÓҋœ±ą–ÖÓÒÌÇÁŒ¶ûúÿûŃęùÿŃùŃŃùùŃŃùúŃ‹œŽ€”ÜŚÓÓÍÇÂœ”țûÿțÏțĐùĐĐțÏĐùùĐùĐĐùÏęĐÏЋżŽ€—âĘŰÓÓÎÈĂŸłțüÿęÎÏÎÿüÎÿÏÿÎÍûÎÍÏÎϋÀ”§žéăȚÙÔÓÏÉÄżłțęÿÔüÍÌúÍÌöÍȋÁ·©šìêäßÚÔÓĐÊĆż”țțÿűÿƒ›”’ŽőŒŽŒÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țÿÿűÿȘ€Ł€țŁț€țŁ€ŁšŻžÄ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœ»ęÿűÿ§ÎÆùÇÆęÇÔÖÓÊș±Šœ–’’“•”’™Ź·ĂÿűÿŠÍöÆÇÆÆŐŐĐÍŒłȘ ˜–““””–˜——•‘˜Ąüűÿ„ÍțÆÿĆűÆÿŐÒÍŸ”­ąš–”ț•ÿ—™››š˜…űűÿ€ÌÄęĆÄùĆ ÔŐÓÉŸž°šŠą üŸĄąŁ„§’üűÿŁËśÄĆțÄ ÒÖÔĆżșČŹ«§«ȘŻțźŻ±ź°Č–ÿűÿąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂÌÖÔÂżș”¶ł«°źłČțłČŽ”¶™ÿűÿ ÉőĂ ÄĂĆÖÓÂżŒ·č¶·ț¶ÿčÿžș·ž”—ÿűÿ ŸÈÂÂĂÂĂÂĂÂęĂțÂÖŐÁżœčč”țč»șțčțžč™ÿűÿŸÇüÂÁęÂÁę ŐÖÁÁœ»čž»șęžÿ·ž·čč˜ÿűÿžÇüÁÂüÁÿ ÁÌŐŐŃÀÀŸŸ»œțŒ œ»»șč·¶Ž“ÿűÿÄüÁÀțÁÀÁÀÁÀÓÓÒŐÀÀżÀŸÀżŸŸœœŒœŒșž·•ÿűÿœÄôÀĆŐÍĂŐÒÀûż ÀżżŸœŒŒčž“ÿűÿ ›ĂÀżÀÀżżÀżüÀŃÔÀÀÏŐÌÀûż ŸżŸżŸŒ»č”ÿűÿšĂżŸúżŸżżÁŐÏțżÓŐÌûżŸțżÿŸœ»–ÿűÿšÁżŸŸüżŸżżŸĐÔÁżżŸżÓŐÓżżŸÀżŸŸżżŸœŸŸ˜ÿűÿ˜ÁțŸœúŸÀÔĐęŸÂÉÓŐÔęŐ ÔÓĐÁŸŸœœ—ÿűÿ˜żœŸțœ ŸœœŸœœĐÔÀŸÉŃûÔŐÔÎÉËÎÓÒțœŸ˜ÿűÿ—ż»űœ ÁÔÒŃÔÔÓÍÇÁțœ ĆÒÔÔÓÒÓÓœœŒŒ—ÿűÿ—Ÿ»œœŒŒœŒŒœŸÓÔÔĐÆŸęŒœțŒœżÉŃÒŃĂęŒ—ÿűÿ—œșúŒËÓÔÊđŒœțŒșŒ—ÿűÿ—œč»Œ»ŒŒÂțÓŃŒ»»Œ»»üŒ»țŒę»Œ»»č»—ÿűÿ—Œ¶ț»ŒĆÔÓÎÓŸ»Œț»Œś»Œ»Œț»¶»—ÿűÿ—Œ”ț»ÂÔÓÄÔÉń»șû»”»—ÿűÿ —ŒŽ»»șÓÔĆÓÎțșù»ÿșț»țșü»Žș—ÿűÿ —»Ž”șœÔŃÓÏüș»ș»üșț»üș»șș¶łș—ÿűÿ—șțČłÏÎĂæČș—ÿűÿ—ș¶áČ”ș—ÿűÿ—żÁàĆż—ÿùÿȚۗŐùÿÍżŸŸœŒșáżÍŃÿŃÿŃÿŃÿûÿńœ»ž”ŻÍúțîÿûÿŒáóÚÙŚÔËșČșîÿûÿșÙòÏÎÌÆč­čșïÿûÿčÙÎęÏęÎÏțÎÿÏÎÍÊÁł”șșđÿûÿ·ŰùÎÏęÎ ÏÍÍÌËĆČ°șșŸțòÿûÿ¶ŰęÍęÎÍÎÍÎÎÍÍËËÈÁ±ŻœșčĆțóÿûÿ¶ŚüÍÎúÍ ÌËÊÈÄż­ŹĂŸșžÒțôÿûÿŽŚÍÍÌúÍÿÌÍËËÈÇÀž©šÉÄżș·ßțőÿûÿłÖęÌÍÌÌÍÌÌÍÌÌËÊÈĆœł€ąĐÊĆÀ»·ëțöÿûÿČŐțÌËÌËÌûËÿÊ ÇÄŒČą›ÓŃËÆÁ»·ôöÿûÿ°ÓôËÊÉÈĆœ±ą–ÖÓÒÌÇÁŒ¶ûśÿûÿŻÓțÊËÊËÊËÊËÊțËÊÉĆœŽ€”ÜŚÓÓÍÇÂœ”țűÿûÿźÓüÊÉțÊÉüÊÇÆżŽ€—âĘŰÓÓÎÈĂŸłțùÿûÿŹÒÉÉțÊÉțÿțțęÿțüùÀ”§žéăȚÙÔÓÏÉÄżłțúÿûÿ«ĐÈțÉÈÉÿÿęțüÿęțüùÁ·©šìêäßÚÔÓĐÊĆż”țûÿûÿȘĐûÈÿúÊüÈÎüúÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țüÿûÿ©ĐÈÇÈțÇțöÈțÇÈÇÉęüÁ»Ż•‰‡†‡‰Œ‘Ÿ«ŒÆœ»ęęÿûÿ§ÎÆüÇęöÇÆęÇÉÿüÂșŠ{wrqnu’“•”’™Ź·ĂęÿûÿŠÍûÆęöțÆÇÆÆÈÿęÂŒ~yzvtmn”–˜——•‘˜Ąęțÿûÿ„ÍțÆÿĆÆęöûÆÈÿęĂŸ~z š–zl•——™››š˜…üțÿûÿ€ÌÄęĆÄęśúĆ ÚÙŸąžšŠą„ršțŸĄąŁ„§’ęÿûÿŁËûÄțùÆÄĆüÄ ĂÂżŒ¶”°­|ŹțČłŽ±°Č–ęÿûÿąÊÄĂÄĂÄÄęțűööśśÏĂśűÂż†‚łŻŠ€~°žțčž·žž™ęÿûÿ ÉûĂęțțÿ ÓÄÿțÂƆż¶‰ˆ‹żüĂț ęÿûÿ ŸÈÂÂĂÂĂÂĂÂęĂę ĂÁ»»ĂÁ»ŒÀĂțÂĂțÂĂ ęÿûÿŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸęÿûÿžÇüÁÂÁêśęù ŃÁôöÂÁ“’ż·ț”ÂÁÂüÁęÿûÿÄüÁÀÁțù ûęÿÔÁÿęÀÀŒŒœŽęțÀțÁÀÁęÿûÿœÄúÀûùńÀŒùÀ›ęÿûÿ ›ĂÀżÀÀżżÀûûûÀżÀÀżÀÀężÿŒżÀżÀÀżżÀ›ęÿûÿšĂżŸüżúûŸężÀőśżż‘‘ężÿŒŸúżšęÿûÿšÁżŸŸężùűżżŸżŸÀûüŸżŒŒżŸżŸŒŒŸŸżżŸŸżżšęÿûÿ˜ÁțŸœțŸÿûüŸ żùúŸŸŒŒŸœŸŸŒŒœüŸœŸ˜ęÿûÿ˜żœŸțœŸœùúżœœŸŸżûúœœŒûŒœŸüœŸ˜ęÿûÿ—ż»ûœ ûúìććæćìûûœœțŒÿ‘țŒțœŒœœŒŒ—ęÿûÿ—Ÿ»œœŒŒœŒțûúűűùùúúțŒœțŒœŒŒœŒŒœęŒ—ęÿûÿ—œșćŒœțŒșŒ—ęÿûÿ—œč»Œ»ùŒÿ»Œ»»üŒ»țŒę»Œ»»č»—ęÿûÿ—Œ¶ț»Œ»ŒŒę»Œț»Œś»Œ»Œț»¶»—ęÿûÿ—Œ”è»șû»”»—ęÿûÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș—ęÿûÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș—ęÿûÿ—șßČș—ęÿûÿ—ș¶áČ”ș—ęÿûÿ—żÁàĆż—ęÿüÿȚۗŐțÿüÿÍżŸŸœŒșáżÍțÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿçźÍÊÁł”șșòÿç”ÌËĆČ°șșŸțôÿț‘ÿü‘ÿś‘ÿü‘ ĆÈÁ±ŻœșčĆțőÿțÿüÿśÿü „Äż­ŹĂŸșžÒțöÿțŠÿ€òÿ€țÿ Šÿ€òÿÿò€ŠÿüŠ ŽÀž©šÉÄżș·ßțśÿț†ÿòĄ†ò†ÿ††ÿòĄÿ††ò†ÿü† ‹œł€ąĐÊĆÀ»·ëțűÿțƒÿžƒƒÿƒÿƒƒÿžƒÿƒƒÿƒÿüƒ ŠŒČą›ÓŃËÆÁ»·ôűÿțƒÿțƒ ÿƒÿƒƒÿƒƒÿƒƒÿƒÿüƒ ‹œ±ą–ÖÓÒÌÇÁŒ¶ûùÿț€ÿț€ ÿ€ÿ€€ÿ€€ÿ€€ÿ€ÿü€‹œŽ€”ÜŚÓÓÍÇÂœ”țúÿț~ÿț~ ÿ~ÿÿ~ÿ~~ÿ~~ÿ~ÿü~f€ƒ„âĘŰÓÓÎÈĂŸłțûÿç}h†x†éăȚÙÔÓÏÉÄżłțüÿç}mˆ‚—ìêäßÚÔÓĐÊĆż”țęÿùÿ…›–”’ŽțŒ‹od{oxqqrpŠ„„ĘÙŐËÍÏÏÒŃËÆż·țțÿùÿȘ€Ł€țŁ€|xƒi“…†šˆ{|tqqhqŒ‘Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆüÇ Œš˜ušŒž»§”Š‚oltrsh{“•”’™Ź·ĂÿÿùÿŠÍüÆ ·€Ș•ŠžÎïúôôăș™Œˆx|rppeŽ˜——•‘˜Ąęÿùÿ„ÍțÆÿĆ Œ„“ŽĐśÂżńïáŰąw–ƒvpnjm—™››š˜…üÿùÿ€ÌÄțĆ!ș‡ •©Áà‘±ÀôńâŐŹ“}›ZZeese“ĄąŁ„§’ÿÿùÿŁËęÄ!ž€Œš°·ĘđśőóćŃł›‰Šsˆs€x‚łŽ±°Č–ÿÿùÿ'ąÊÄĂÄʔŠu}‚ÒèíôòńæŃ·žˆy°° Ž„‚w”ž·žž™ÿÿùÿ ÉęĂ„ŒŒ—›ŹżÛäíïêȚÌ耔ĂÏŒ«’‹‹v°Ăț ÿÿùÿ'ŸÈÂÂĂ‚”•„ ȘčÊÖßáĘŐÄŽĄ„ÚÊș©’‹‹t€ÁÂÂĂ ÿÿùÿŸÇęÂ!ƒ–„–žŠČżÉÒÔŃÈ謜§ÓĆ·š›‹‹sœŸÁŸÿÿùÿžÇęÁ!€—”ˆœĄȘŽœĂÄÁ蟥•–ÁżČŁ—‹ŠrœŒÀÁÁÿÿùÿÄęÁ!‚•——šąšŻČłŻ©Ą—‹„Ź“ƒ‘‹‡y»ÀÀÁÿÿùÿœÄęÀ!‘”–—™›ž ŁŁ š•Œ‹‰z}‹‹„ƒŸ»żÀÀ›ÿÿùÿ ›ĂÀżÀÀŹ€’“”ț•ț—“’ŽŒû‹ ˆŠ‹{‘ŁŒŸżÀ›ÿÿùÿšĂżŸțżsü‘ŽŒŒț‹ÿŠ‰ˆ™Š‰v›Ș»țżšÿÿùÿšÁżŸŸżż{țŽÿ ŽŒŒ‹‹Šˆ‡ț… œ‹}‹žłŒŸżżšÿÿùÿ˜ÁțŸœŸŸw…ùŒŠˆ†…‚ț …œ‡x˜€žœŸœŸ˜ÿÿùÿ˜żœŸțœŸŻl…üŠ‰†„‚}{|~‚Š˜w“šŻșŒœœŸ˜ÿÿùÿ—ż»ûœŸl†…ƒ~|zyvv|ƒ‰‰}–„·»œœŒŒ—ÿÿùÿ —Ÿ»œœŒŒœŒ»œtqƒƒ|{yyz}‡kv“”ŸŽșœęŒ—ÿÿùÿ—œșúŒ螅mq}†ț„ †…ylm†””žŽčœțŒșŒ—ÿÿùÿ—œč»Œ»üŒ»„”‹{nojjlo|“””€¶č»»Œ»»č»—ÿÿùÿ—Œ¶ț»Œ»ŒŒț»° —•””ę“ÿ”Ż·șŒ»Œț»¶»—ÿÿùÿ—Œ”ś»ș¶Ż§ ––œžšČ·čșșû»”»—ÿÿùÿ—ŒŽ»»șę»ęș »ș·””ŽŽ””¶čüșü»Žș—ÿÿùÿ—»Ž”șș»ùș»ș»üčț»üș»șș¶łș—ÿÿùÿ—șßČș—ÿÿùÿ—ș¶áČ”ș—ÿÿùÿ—żÁàĆż—ÿÿúÿȚۗŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿÿ„ꀊÍÊÁł”șșòÿÿț}ÿ~}~}~~}ț~}~ę}ę~ }ÌËĆČ°șșŸțôÿÿè{ ĆÈÄ»ŻœșčĆțőÿÿțwxțwțxwxțwûxęw „ÄÀ”ŹĂŸșžÒțöÿÿętßìߏtßìßttßìߏęt ŽÀș°šÉÄżș·ßțśÿÿęrȚrrŒȚrȚțrȚrȚțrȚęr ‹œ¶ŹąĐÊĆÀ»·ëțűÿÿonnoëüo ‹ëĘoonŠȚë‹ęo nŠŒ”«›ÓŃËÆÁ»·ôűÿÿonnoëúoŠȚonno‹Ț‹țon‹œŽ«–ÖÓÒÌÇÁŒ¶ûùÿ(ÿmmllĘmmˆĘmĘmm‰ĘlĘlmˆĘlmlm‹œ·­”ÜŚÓÓÍÇÂœ”țúÿÿęj‡Ęëʇj‡ëëʇj‡Ęëëüj‹żžŹ—âĘŰÓÓÎÈĂŸłțûÿÿűiÿjôij‹ÀžŻžéăȚÙÔÓÏÉÄżłțüÿÿ~śhgőhm‹Áč°šìêäßÚÔÓĐÊĆż”țęÿùÿ…›–”’ŽőŒ‹ÀșŻŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿȘ€Ł€țŁț€țŁ€țŁŹÁ»±–Š‰†‡‰Œ‘Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆùÇÆûÇĆÂșžvœ–’’“•”’™Ź·ĂÿÿùÿŠÍöÆÇęÆĆÂŒ‚† ˜–““””–˜——•‘˜Ąęÿùÿ„ÍțÆÿĆöÆÄĂžjŁąš–”ț•ÿ—™››š˜…üÿùÿ€ÌÄęĆÄśĆĂ™z°šŠą üŸĄąŁ„§’ÿÿùÿŁËśÄĆŸęÄ ĂÂ~œ¶”«­°ŻłțČłŽ±°Č–ÿÿùÿąÊÄĂÄĂÄÄĂĂÄł‡ÄĂĂıt””¶t{€Č·žțčž·žž™ÿÿùÿ ÉúĂžŒq’ŸÄțĂ‘’țĂ­q’žüĂț ÿÿùÿ ŸÈÂÂĂÂĂ·’qŒłĂĂęŸuČÂÂĂš|q‘·ÂĂțÂĂ ÿÿùÿŸÇțÂœ—q‡ČÂÂÁüÂąÂțÁț Áą|qŒČÂÁŸÿÿùÿžÇțÁ|qŒüÁÿÂțÁąțÁÂüÁČvqĄęÁÿÿùÿÄțÁ¶‘qvœÁÀÁÀÁÀÀ±q»ÀÁÀÁÀÁÀ¶‘q‹°țÁÀÁÿÿùÿœÄüÀ»–qv üÀÿ‘ûÀ»‘qŒ°úÀ›ÿÿùÿ'›ĂÀżÀÀżżÀș‘q|°ÀÀ»v°ÀżÀÀż q†°ÀżÀżÀÀżżÀ›ÿÿùÿšĂżŸúżŽ‹ żż ûż‹ȘțżŸúżšÿÿùÿšÁżŸŸüżŸżżŸżŸ„żŸżżŸżŸżŸżțŸÿżÿŸÿżšÿÿùÿ˜ÁțŸœűŸ©€úŸœęŸœüŸœŸ˜ÿÿùÿ˜żœŸțœŸœœŸțœŸčœŸüœŸœŸœœŸœŸüœŸ˜ÿÿùÿ—ż»ëœŒûœŒœœŒŒ—ÿÿùÿ—Ÿ»œœŒŒœŒŒœŒœœŒțœęŒœțŒœŒŒœŒŒœęŒ—ÿÿùÿ—œșćŒœțŒșŒ—ÿÿùÿ—œč»Œ»ùŒÿ»Œ»»üŒ»țŒę»Œ»»č»—ÿÿùÿ—Œ¶ț»Œ»ŒŒę»Œț»Œś»Œ»Œț»¶»—ÿÿùÿ—Œ”è»șû»”»—ÿÿùÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș—ÿÿùÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș—ÿÿùÿ—șßČș—ÿÿùÿ—ș¶áČ”ș—ÿÿùÿ—żÁàĆż—ÿÿúÿȚۗŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿÿéź­ÍÊÁł”șșòÿÿțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠÌËĆČ°șșŸțôÿÿśˆńóˆ ÆÈÁ±ŻœșčĆțőÿÿț„…ț„ț…„…ț„û…ę„ šÄż­ŹĂŸșžÒțöÿÿűđぁ™ăđđù “Àž©šÉÄżș·ßțśÿÿú ~ïă~ù œł€ąĐÊĆÀ»·ëțűÿÿś|ï||ââ•ű| ŒČą›ÓŃËÆÁ»·ôűÿÿ{{țzÿ{ÿz{ïț{”ââz{țz{z{œ±ą–ÖÓÒÌÇÁŒ¶ûùÿÿ{{țzÿ{ÿz{ïę{zâz{țz{z{œŽ€”ÜŚÓÓÍÇÂœ”țúÿÿęxÿyęxáxxïïá’ùx‘żŽ€—âĘŰÓÓÎÈĂŸłțûÿÿùwîá’ôwx‘À”§žéăȚÙÔÓÏÉÄżłțüÿÿŠśvuővzÁ·©šìêäßÚÔÓĐÊĆż”țęÿùÿ‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿ­§Š§țŠț§›{üuy€~|uromkkmq‹Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆúÇž‹žüÇĆÂș±Šœ–’ˆo’s•”’™Ź·ĂÿÿùÿŠÍùÆ’·ÆÇęÆĆÂŒłȘ ˜–n‹””n˜——•‘˜Ąęÿùÿ„ÍțÆÿĆțƄúÆÄĂŸ”­ąš–iț• k—™››š˜…üÿùÿ€ÌÄęĆÄĆƄúĆĂŸž°šŠąnțŸ oŸĄąŁ„§’ÿÿùÿŁËùÄ„ÄĆü„ƒ‚€~{z°­xŻłČ€ČłŽ±°Č–ÿÿùÿ'ąÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™ÿÿùÿ ÉùÄțĂÄțĂÿÂûÄúĂț ÿÿùÿ ŸÈÂÂĂÂĂÂĂ„ĂĂû„ƒę„ÿ„ĂĂțÂĂțÂĂ ÿÿùÿŸÇüÂÁ„ÂÁûÂÀÂțÁÿ„ÁțÂÁÂÂÁŸÿÿùÿžÇüÁÂÁÁ„ÁÁÂÂęÁÂțÁÂÁÁ„ÁÁÂÁÂüÁÿÿùÿÄüÁÀÁÁ„ÀÁö„ÀÁ„ÁÁțÀțÁÀÁÿÿùÿœÄùÀ„òÀ„ÀÁùÀ›ÿÿùÿ ›ĂÀżÀÀżżÀżƒûÀżÀÀżÀÀțż ƒÀÀżÀżÀÀżżÀ›ÿÿùÿšĂżŸûż„Ÿżö„ÿż„żżŸúżšÿÿùÿšÁżŸŸüż„żżŸżŸțżŸżżŸżŸż„żțŸÿżÿŸÿżšÿÿùÿ˜ÁțŸœęŸ„ôŸœŸ„ŸŸœüŸœŸ˜ÿÿùÿ˜żœŸțœŸœœ„țœÿŸœŸüœŸœŸ„œŸœŸüœŸ˜ÿÿùÿ—ż»țœô„ƒț„ÿœŒ„üœŒœœŒŒ—ÿÿùÿ—Ÿ»œœŒ„œŒŒœŒœœŒțœęŒ„țŒ„ŒŒœŒŒœęŒ—ÿÿùÿ—œșțŒ„òŒ„țŒ„ęŒœțŒșŒ—ÿÿùÿ—œč»Œ»ŠŻûŒÿ»Œ»»țŒŠŒ»Œ„Œę»Œ»»č»—ÿÿùÿ—Œ¶ț»Ż‰ŻŒę»Œț»Œț» ŻŠ»»Š»»Œ»Œț»¶»—ÿÿùÿ—Œ”껯‰òƒ„ŠŻ»șû»”»—ÿÿùÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș—ÿÿùÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș—ÿÿùÿ—șßČș—ÿÿùÿ—ș¶áČ”ș—ÿÿùÿ—żÁàĆż—ÿÿúÿȚۗŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿÿéź­ÍÊÁł”șșòÿÿțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠÌËĆČ°șșŸțôÿÿńˆńùˆ ÆÈÁ±ŻœșčĆțőÿÿț„…ț„ț…„…ț„…đę…ę„ šÄż­ŹĂŸșžÒțöÿÿśțđđù “Àž©šÉÄżș·ßțśÿÿú~ïțîïù œł€ąĐÊĆÀ»·ëțűÿÿś|ïț|ï|ïù| ŒČą›ÓŃËÆÁ»·ôűÿÿ{{țzÿ{ÿz{ïț{ézïz{țz{z{œ±ą–ÖÓÒÌÇÁŒ¶ûùÿÿ{{țzÿ{ÿz{țïí©zïz{țz{z{œŽ€”ÜŚÓÓÍÇÂœ”țúÿÿęxÿyęxïxxyyxïùx‘żŽ€—âĘŰÓÓÎÈĂŸłțûÿÿűwxïôwx‘À”§žéăȚÙÔÓÏÉÄżłțüÿÿŠśvuővzÁ·©šìêäßÚÔÓĐÊĆż”țęÿùÿ‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿ­§Š§țŠț§›{üuy€~|uromkkmq‹Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆúÇž‹žüÇĆÂș±Šœ–’ˆo’s•”’™Ź·ĂÿÿùÿŠÍùÆ’·ÆÇęÆĆÂŒłȘ ˜–n‹””n˜——•‘˜Ąęÿùÿ„ÍțÆÿĆțƄúÆÄĂŸ”­ąš–iț• k—™››š˜…üÿùÿ€ÌÄęĆÄĆƄúĆĂŸž°šŠąnțŸ oŸĄąŁ„§’ÿÿùÿŁËùÄ„ÄĆü„ƒ‚€~{z°­xŻłČ€ČłŽ±°Č–ÿÿùÿ'ąÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™ÿÿùÿ ÉùÄțĂÄțĂÿÂûÄúĂț ÿÿùÿ ŸÈÂÂĂÂĂÂĂ„ĂĂû„ƒę„ÿ„ĂĂțÂĂțÂĂ ÿÿùÿŸÇüÂÁ„ÂÁûÂÀÂțÁÿ„ÁțÂÁÂÂÁŸÿÿùÿžÇüÁÂÁÁ„ÁÁÂÂęÁÂțÁÂÁÁ„ÁÁÂÁÂüÁÿÿùÿÄüÁÀÁÁ„ÀÁö„ÀÁ„ÁÁțÀțÁÀÁÿÿùÿœÄùÀ„òÀ„ÀÁùÀ›ÿÿùÿ ›ĂÀżÀÀżżÀżƒûÀżÀÀżÀÀțż ƒÀÀżÀżÀÀżżÀ›ÿÿùÿšĂżŸûż„Ÿżö„ÿż„żżŸúżšÿÿùÿšÁżŸŸüż„żżŸżŸțżŸżżŸżŸż„żțŸÿżÿŸÿżšÿÿùÿ˜ÁțŸœęŸ„ôŸœŸ„ŸŸœüŸœŸ˜ÿÿùÿ˜żœŸțœŸœœ„țœÿŸœŸüœŸœŸ„œŸœŸüœŸ˜ÿÿùÿ—ż»țœô„ƒț„ÿœŒ„üœŒœœŒŒ—ÿÿùÿ—Ÿ»œœŒ„œŒŒœŒœœŒțœęŒ„țŒ„ŒŒœŒŒœęŒ—ÿÿùÿ—œșțŒ„òŒ„țŒ„ęŒœțŒșŒ—ÿÿùÿ—œč»Œ»ŠŻûŒÿ»Œ»»țŒŠŒ»Œ„Œę»Œ»»č»—ÿÿùÿ—Œ¶ț»Ż‰ŻŒę»Œț»Œț» ŻŠ»»Š»»Œ»Œț»¶»—ÿÿùÿ—Œ”껯‰òƒ„ŠŻ»șû»”»—ÿÿùÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș—ÿÿùÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș—ÿÿùÿ—șßČș—ÿÿùÿ—ș¶áČ”ș—ÿÿùÿ—żÁàĆż—ÿÿúÿȚۗŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿÿéź­ÍÊÁł”șșòÿÿțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠÌËĆČ°șșŸțôÿÿèˆ ÆÈÁ±ŻœșčĆțőÿÿț„…ț„ț…„…ț„û…ę„ šÄż­ŹĂŸșžÒțöÿÿùțęęû “Àž©šÉÄżș·ßțśÿÿú~ęțïï›~›ïû œł€ąĐÊĆÀ»·ëțűÿÿù|ęț|ę|™ï|ï™û| ŒČą›ÓŃËÆÁ»·ôűÿÿ{{țzÿ{ zę{z{ę{{î˜î{țz{z{œ±ą–ÖÓÒÌÇÁŒ¶ûùÿÿ{{țzÿ{ zÿęęî˜{{—ń—{țz{z{œŽ€”ÜŚÓÓÍÇÂœ”țúÿÿęxÿyÿxęęxÿyxîùx‘żŽ€—âĘŰÓÓÎÈĂŸłțûÿÿùwęxxęwî•úwx‘À”§žéăȚÙÔÓÏÉÄżłțüÿÿŠśvuővzÁ·©šìêäßÚÔÓĐÊĆż”țęÿùÿ‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿ­§Š§țŠț§›{üuy€~|uromkkmq‹Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆúÇž‹žüÇĆÂș±Šœ–’ˆo’s•”’™Ź·ĂÿÿùÿŠÍùÆ’·ÆÇęÆĆÂŒłȘ ˜–n‹””n˜——•‘˜Ąęÿùÿ„ÍțÆÿĆțƄúÆÄĂŸ”­ąš–iț• k—™››š˜…üÿùÿ€ÌÄęĆÄĆƄúĆĂŸž°šŠąnțŸ oŸĄąŁ„§’ÿÿùÿŁËùÄ„ÄĆü„ƒ‚€~{z°­xŻłČ€ČłŽ±°Č–ÿÿùÿ'ąÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™ÿÿùÿ ÉùÄțĂÄțĂÿÂûÄúĂț ÿÿùÿ ŸÈÂÂĂÂĂÂĂ„ĂĂû„ƒę„ÿ„ĂĂțÂĂțÂĂ ÿÿùÿŸÇüÂÁ„ÂÁûÂÀÂțÁÿ„ÁțÂÁÂÂÁŸÿÿùÿžÇüÁÂÁÁ„ÁÁÂÂęÁÂțÁÂÁÁ„ÁÁÂÁÂüÁÿÿùÿÄüÁÀÁÁ„ÀÁö„ÀÁ„ÁÁțÀțÁÀÁÿÿùÿœÄùÀ„òÀ„ÀÁùÀ›ÿÿùÿ ›ĂÀżÀÀżżÀżƒûÀżÀÀżÀÀțż ƒÀÀżÀżÀÀżżÀ›ÿÿùÿšĂżŸûż„Ÿżö„ÿż„żżŸúżšÿÿùÿšÁżŸŸüż„żżŸżŸțżŸżżŸżŸż„żțŸÿżÿŸÿżšÿÿùÿ˜ÁțŸœęŸ„ôŸœŸ„ŸŸœüŸœŸ˜ÿÿùÿ˜żœŸțœŸœœ„țœÿŸœŸüœŸœŸ„œŸœŸüœŸ˜ÿÿùÿ—ż»țœô„ƒț„ÿœŒ„üœŒœœŒŒ—ÿÿùÿ—Ÿ»œœŒ„œŒŒœŒœœŒțœęŒ„țŒ„ŒŒœŒŒœęŒ—ÿÿùÿ—œșțŒ„òŒ„țŒ„ęŒœțŒșŒ—ÿÿùÿ—œč»Œ»ŠŻûŒÿ»Œ»»țŒŠŒ»Œ„Œę»Œ»»č»—ÿÿùÿ—Œ¶ț»Ż‰ŻŒę»Œț»Œț» ŻŠ»»Š»»Œ»Œț»¶»—ÿÿùÿ—Œ”껯‰òƒ„ŠŻ»șû»”»—ÿÿùÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș—ÿÿùÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș—ÿÿùÿ—șßČș—ÿÿùÿ—ș¶áČ”ș—ÿÿùÿ—żÁàĆż—ÿÿúÿȚۗŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿÿéź­ÍÊÁł”șșòÿÿțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠÌËĆČ°șșŸțôÿÿőˆïőˆ ÆÈÁ±ŻœșčĆțőÿÿț„…ț„ț…„…î„„û…ę„ šÄż­ŹĂŸșžÒțöÿÿùî™âî™ââšù “Àž©šÉÄżș·ßțśÿÿú ~íá˜íá˜áù œł€ąĐÊĆÀ»·ëțűÿÿù|í•||íț|ïù| ŒČą›ÓŃËÆÁ»·ôűÿÿ{{țzÿ{ zí{z{í{{zïz{țz{z{œ±ą–ÖÓÒÌÇÁŒ¶ûùÿÿ{{țzÿ{ zí{z{íà”zíz{țz{z{œŽ€”ÜŚÓÓÍÇÂœ”țúÿÿęxÿyÿxìțxì“àà’ùx‘żŽ€—âĘŰÓÓÎÈĂŸłțûÿÿűwÿxôwx‘À”§žéăȚÙÔÓÏÉÄżłțüÿÿŠśvuővzÁ·©šìêäßÚÔÓĐÊĆż”țęÿùÿ‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿ­§Š§țŠț§›{üuy€~|uromkkmq‹Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆúÇž‹žüÇĆÂș±Šœ–’ˆo’s•”’™Ź·ĂÿÿùÿŠÍùÆ’·ÆÇęÆĆÂŒłȘ ˜–n‹””n˜——•‘˜Ąęÿùÿ„ÍțÆÿĆțƄúÆÄĂŸ”­ąš–iț• k—™››š˜…üÿùÿ€ÌÄęĆÄĆƄúĆĂŸž°šŠąnțŸ oŸĄąŁ„§’ÿÿùÿŁËùÄ„ÄĆü„ƒ‚€~{z°­xŻłČ€ČłŽ±°Č–ÿÿùÿ'ąÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™ÿÿùÿ ÉùÄțĂÄțĂÿÂûÄúĂț ÿÿùÿ ŸÈÂÂĂÂĂÂĂ„ĂĂû„ƒę„ÿ„ĂĂțÂĂțÂĂ ÿÿùÿŸÇüÂÁ„ÂÁûÂÀÂțÁÿ„ÁțÂÁÂÂÁŸÿÿùÿžÇüÁÂÁÁ„ÁÁÂÂęÁÂțÁÂÁÁ„ÁÁÂÁÂüÁÿÿùÿÄüÁÀÁÁ„ÀÁö„ÀÁ„ÁÁțÀțÁÀÁÿÿùÿœÄùÀ„òÀ„ÀÁùÀ›ÿÿùÿ ›ĂÀżÀÀżżÀżƒûÀżÀÀżÀÀțż ƒÀÀżÀżÀÀżżÀ›ÿÿùÿšĂżŸûż„Ÿżö„ÿż„żżŸúżšÿÿùÿšÁżŸŸüż„żżŸżŸțżŸżżŸżŸż„żțŸÿżÿŸÿżšÿÿùÿ˜ÁțŸœęŸ„ôŸœŸ„ŸŸœüŸœŸ˜ÿÿùÿ˜żœŸțœŸœœ„țœÿŸœŸüœŸœŸ„œŸœŸüœŸ˜ÿÿùÿ—ż»țœô„ƒț„ÿœŒ„üœŒœœŒŒ—ÿÿùÿ—Ÿ»œœŒ„œŒŒœŒœœŒțœęŒ„țŒ„ŒŒœŒŒœęŒ—ÿÿùÿ—œșțŒ„òŒ„țŒ„ęŒœțŒșŒ—ÿÿùÿ—œč»Œ»ŠŻûŒÿ»Œ»»țŒŠŒ»Œ„Œę»Œ»»č»—ÿÿùÿ—Œ¶ț»Ż‰ŻŒę»Œț»Œț» ŻŠ»»Š»»Œ»Œț»¶»—ÿÿùÿ—Œ”껯‰òƒ„ŠŻ»șû»”»—ÿÿùÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș—ÿÿùÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș—ÿÿùÿ—șßČș—ÿÿùÿ—ș¶áČ”ș—ÿÿùÿ—żÁàĆż—ÿÿúÿȚۗŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿÿéź­ÍÊÁł”șșòÿÿțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠÌËĆČ°șșŸțôÿÿôˆïöˆ ÆÈÁ±ŻœșčĆțőÿÿț„…ț„ț…„…„î„û…ę„ šÄż­ŹĂŸșžÒțöÿÿù™âîîțîâ™ú “Àž©šÉÄżș·ßțśÿÿú~á˜țí~áú œł€ąĐÊĆÀ»·ëțűÿÿù|ÿá•||íț|íú| ŒČą›ÓŃËÆÁ»·ôűÿÿ{{țzÿ{ÿz ”àÖ{í{z{í{țz{z{œ±ą–ÖÓÒÌÇÁŒ¶ûùÿÿ{{țzÿ{ÿz {”à{í{z{í{țz{z{œŽ€”ÜŚÓÓÍÇÂœ”țúÿÿęxÿyÿxÿìàxxíyxxìúx‘żŽ€—âĘŰÓÓÎÈĂŸłțûÿÿűwÿxôwx‘À”§žéăȚÙÔÓÏÉÄżłțüÿÿŠśvuővzÁ·©šìêäßÚÔÓĐÊĆż”țęÿùÿ‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿ­§Š§țŠț§›{üuy€~|uromkkmq‹Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆúÇž‹žüÇĆÂș±Šœ–’ˆo’s•”’™Ź·ĂÿÿùÿŠÍùÆ’·ÆÇęÆĆÂŒłȘ ˜–n‹””n˜——•‘˜Ąęÿùÿ„ÍțÆÿĆțƄúÆÄĂŸ”­ąš–iț• k—™››š˜…üÿùÿ€ÌÄęĆÄĆƄúĆĂŸž°šŠąnțŸ oŸĄąŁ„§’ÿÿùÿŁËùÄ„ÄĆü„ƒ‚€~{z°­xŻłČ€ČłŽ±°Č–ÿÿùÿ'ąÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™ÿÿùÿ ÉùÄțĂÄțĂÿÂûÄúĂț ÿÿùÿ ŸÈÂÂĂÂĂÂĂ„ĂĂû„ƒę„ÿ„ĂĂțÂĂțÂĂ ÿÿùÿŸÇüÂÁ„ÂÁûÂÀÂțÁÿ„ÁțÂÁÂÂÁŸÿÿùÿžÇüÁÂÁÁ„ÁÁÂÂęÁÂțÁÂÁÁ„ÁÁÂÁÂüÁÿÿùÿÄüÁÀÁÁ„ÀÁö„ÀÁ„ÁÁțÀțÁÀÁÿÿùÿœÄùÀ„òÀ„ÀÁùÀ›ÿÿùÿ ›ĂÀżÀÀżżÀżƒûÀżÀÀżÀÀțż ƒÀÀżÀżÀÀżżÀ›ÿÿùÿšĂżŸûż„Ÿżö„ÿż„żżŸúżšÿÿùÿšÁżŸŸüż„żżŸżŸțżŸżżŸżŸż„żțŸÿżÿŸÿżšÿÿùÿ˜ÁțŸœęŸ„ôŸœŸ„ŸŸœüŸœŸ˜ÿÿùÿ˜żœŸțœŸœœ„țœÿŸœŸüœŸœŸ„œŸœŸüœŸ˜ÿÿùÿ—ż»țœô„ƒț„ÿœŒ„üœŒœœŒŒ—ÿÿùÿ—Ÿ»œœŒ„œŒŒœŒœœŒțœęŒ„țŒ„ŒŒœŒŒœęŒ—ÿÿùÿ—œșțŒ„òŒ„țŒ„ęŒœțŒșŒ—ÿÿùÿ—œč»Œ»ŠŻûŒÿ»Œ»»țŒŠŒ»Œ„Œę»Œ»»č»—ÿÿùÿ—Œ¶ț»Ż‰ŻŒę»Œț»Œț» ŻŠ»»Š»»Œ»Œț»¶»—ÿÿùÿ—Œ”껯‰òƒ„ŠŻ»șû»”»—ÿÿùÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș—ÿÿùÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș—ÿÿùÿ—șßČș—ÿÿùÿ—ș¶áČ”ș—ÿÿùÿ—żÁàĆż—ÿÿúÿȚۗŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿÿéź­ÍÊÁł”șșòÿÿțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠÌËĆČ°șșŸțôÿÿèˆ ÆÈÁ±ŻœșčĆțőÿÿț„…ț„ț…„…ț„û…ę„ šÄż­ŹĂŸșžÒțöÿÿü‡áûá‡țû‚ûü “Àž©šÉÄżș·ßțśÿÿüá~áțû~ûü œł€ąĐÊĆÀ»·ëțűÿÿü|ûü|üû|üûț| ŒČą›ÓŃËÆÁ»·ôűÿÿ{{țz!û{zz{z{{û{z{z{ûzz{z{œ±ą–ÖÓÒÌÇÁŒ¶ûùÿÿ{{țz"à{zzàz{{û{z{z{ûzz{z{œŽ€”ÜŚÓÓÍÇÂœ”țúÿÿęxyßûß~țxÿyśx‘żŽ€—âĘŰÓÓÎÈĂŸłțûÿÿűwÿxôwx‘À”§žéăȚÙÔÓÏÉÄżłțüÿÿŠśvuővzÁ·©šìêäßÚÔÓĐÊĆż”țęÿùÿ‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿ­§Š§țŠț§›{üuy€~|uromkkmq‹Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆúÇž‹žüÇĆÂș±Šœ–’ˆo’s•”’™Ź·ĂÿÿùÿŠÍùÆ’·ÆÇęÆĆÂŒłȘ ˜–n‹””n˜——•‘˜Ąęÿùÿ„ÍțÆÿĆțƄúÆÄĂŸ”­ąš–iț• k—™››š˜…üÿùÿ€ÌÄęĆÄĆƄúĆĂŸž°šŠąnțŸ oŸĄąŁ„§’ÿÿùÿŁËùÄ„ÄĆü„ƒ‚€~{z°­xŻłČ€ČłŽ±°Č–ÿÿùÿ'ąÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™ÿÿùÿ ÉùÄțĂÄțĂÿÂûÄúĂț ÿÿùÿ ŸÈÂÂĂÂĂÂĂ„ĂĂû„ƒę„ÿ„ĂĂțÂĂțÂĂ ÿÿùÿŸÇüÂÁ„ÂÁûÂÀÂțÁÿ„ÁțÂÁÂÂÁŸÿÿùÿžÇüÁÂÁÁ„ÁÁÂÂęÁÂțÁÂÁÁ„ÁÁÂÁÂüÁÿÿùÿÄüÁÀÁÁ„ÀÁö„ÀÁ„ÁÁțÀțÁÀÁÿÿùÿœÄùÀ„òÀ„ÀÁùÀ›ÿÿùÿ ›ĂÀżÀÀżżÀżƒûÀżÀÀżÀÀțż ƒÀÀżÀżÀÀżżÀ›ÿÿùÿšĂżŸûż„Ÿżö„ÿż„żżŸúżšÿÿùÿšÁżŸŸüż„żżŸżŸțżŸżżŸżŸż„żțŸÿżÿŸÿżšÿÿùÿ˜ÁțŸœęŸ„ôŸœŸ„ŸŸœüŸœŸ˜ÿÿùÿ˜żœŸțœŸœœ„țœÿŸœŸüœŸœŸ„œŸœŸüœŸ˜ÿÿùÿ—ż»țœô„ƒț„ÿœŒ„üœŒœœŒŒ—ÿÿùÿ—Ÿ»œœŒ„œŒŒœŒœœŒțœęŒ„țŒ„ŒŒœŒŒœęŒ—ÿÿùÿ—œșțŒ„òŒ„țŒ„ęŒœțŒșŒ—ÿÿùÿ—œč»Œ»ŠŻûŒÿ»Œ»»țŒŠŒ»Œ„Œę»Œ»»č»—ÿÿùÿ—Œ¶ț»Ż‰ŻŒę»Œț»Œț» ŻŠ»»Š»»Œ»Œț»¶»—ÿÿùÿ—Œ”껯‰òƒ„ŠŻ»șû»”»—ÿÿùÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș—ÿÿùÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș—ÿÿùÿ—șßČș—ÿÿùÿ—ș¶áČ”ș—ÿÿùÿ—żÁàĆż—ÿÿúÿȚۗŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿÿéź­ÍÊÁł”șșòÿÿțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠÌËĆČ°șșŸțôÿÿśˆÀÏôˆ ÆÈÁ±ŻœșčĆțőÿÿț„…ț„ț…ÀÏțˆ…„…ú„ šÄż­ŹĂŸșžÒțöÿÿüÿæÿæ’œçśÿœÿæÿæ’ę “Àž©šÉÄżș·ßțśÿÿüÿ»~ÔÌŒî‰Łÿÿ»ÔÌę œł€ąĐÊĆÀ»·ëțűÿÿü|ÿ|°Ü»Ìÿ|ÿ|°Üę| ŒČą›ÓŃËÆÁ»·ôűÿÿ{{țz!ÿčzÓÁčË|ÿzÿžzÓÁz{z{œ±ą–ÖÓÒÌÇÁŒ¶ûùÿÿ{{țz"ÿćÿ䄾Êzÿzÿäÿć„z{z{œŽ€”ÜŚÓÓÍÇÂœ”țúÿÿęxyÿŠțxțzÿ{xÿŠyyüx‘żŽ€—âĘŰÓÓÎÈĂŸłțûÿÿüwÿ‰wwțxÿyxwÿ‰ûwx‘À”§žéăȚÙÔÓÏÉÄżłțüÿÿŠűvüwűvzÁ·©šìêäßÚÔÓĐÊĆż”țęÿùÿ‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿ­§Š§țŠț§›{üuy€~|uromkkmq‹Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆúÇž‹žüÇĆÂș±Šœ–’ˆo’s•”’™Ź·ĂÿÿùÿŠÍùÆ’·ÆÇęÆĆÂŒłȘ ˜–n‹””n˜——•‘˜Ąęÿùÿ„ÍțÆÿĆțƄúÆÄĂŸ”­ąš–iț• k—™››š˜…üÿùÿ€ÌÄęĆÄĆƄúĆĂŸž°šŠąnțŸ oŸĄąŁ„§’ÿÿùÿŁËùÄ„ÄĆü„ƒ‚€~{z°­xŻłČ€ČłŽ±°Č–ÿÿùÿ'ąÊÄĂÄĂÄÄĂÄÄĂÄÄĂĂÄÂÂżș”¶·°zy|„Źččž·žž™ÿÿùÿ ÉùÄțĂÄțĂÿÂûÄúĂț ÿÿùÿ ŸÈÂÂĂÂĂÂĂ„ĂĂû„ƒę„ÿ„ĂĂțÂĂțÂĂ ÿÿùÿŸÇüÂÁ„ÂÁûÂÀÂțÁÿ„ÁțÂÁÂÂÁŸÿÿùÿžÇüÁÂÁÁ„ÁÁÂÂęÁÂțÁÂÁÁ„ÁÁÂÁÂüÁÿÿùÿÄüÁÀÁÁ„ÀÁö„ÀÁ„ÁÁțÀțÁÀÁÿÿùÿœÄùÀ„òÀ„ÀÁùÀ›ÿÿùÿ ›ĂÀżÀÀżżÀżƒûÀżÀÀżÀÀțż ƒÀÀżÀżÀÀżżÀ›ÿÿùÿšĂżŸûż„Ÿżö„ÿż„żżŸúżšÿÿùÿšÁżŸŸüż„żżŸżŸțżŸżżŸżŸż„żțŸÿżÿŸÿżšÿÿùÿ˜ÁțŸœęŸ„ôŸœŸ„ŸŸœüŸœŸ˜ÿÿùÿ˜żœŸțœŸœœ„țœÿŸœŸüœŸœŸ„œŸœŸüœŸ˜ÿÿùÿ—ż»țœô„ƒț„ÿœŒ„üœŒœœŒŒ—ÿÿùÿ—Ÿ»œœŒ„œŒŒœŒœœŒțœęŒ„țŒ„ŒŒœŒŒœęŒ—ÿÿùÿ—œșțŒ„òŒ„țŒ„ęŒœțŒșŒ—ÿÿùÿ—œč»Œ»ŠŻûŒÿ»Œ»»țŒŠŒ»Œ„Œę»Œ»»č»—ÿÿùÿ—Œ¶ț»Ż‰ŻŒę»Œț»Œț» ŻŠ»»Š»»Œ»Œț»¶»—ÿÿùÿ—Œ”껯‰òƒ„ŠŻ»șû»”»—ÿÿùÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș—ÿÿùÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș—ÿÿùÿ—șßČș—ÿÿùÿ—ș¶áČ”ș—ÿÿùÿ—żÁàĆż—ÿÿúÿȚۗŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿÿ„ꀊÍÊÁł”șșòÿÿț}ÿ~}~}~~}ț~}~ę}ę~ }ÌËĆČ°șșŸțôÿÿï{ïû{ ĆÈÄ»ŻœșčĆțőÿÿțwxțwțxwxțwțxïxxęw „ÄÀ”ŹĂŸșžÒțöÿÿętàtàtîàîîàtîût ŽÀș°šÉÄżș·ßțśÿÿęrààrîύîràrîûr ‹œ¶ŹąĐÊĆÀ»·ëțűÿÿonnoo‹ă‹ooíoníoníoíüo nŠŒ”«›ÓŃËÆÁ»·ôűÿÿonnoo‹í‹ooíoníoníoíüon‹œŽ«–ÖÓÒÌÇÁŒ¶ûùÿÿmmllˆßŸíˆmímmímlílíțlmlm‹œ·­”ÜŚÓÓÍÇÂœ”țúÿÿęjȚ‡j‡Țjíjjíkjíjíûj‹żžŹ—âĘŰÓÓÎÈĂŸłțûÿÿűiÿjôij‹ÀžŻžéăȚÙÔÓÏÉÄżłțüÿÿ~śhgőhm‹Áč°šìêäßÚÔÓĐÊĆż”țęÿùÿ…›–”’ŽőŒ‹ÀșŻŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿȘ€Ł€țŁț€țŁ€țŁŹÁ»±–Š‰†‡‰Œ‘Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆùÇÆûÇĆÂșžvœ–’’“•”’™Ź·ĂÿÿùÿŠÍöÆÇęÆĆÂŒ‚† ˜–““””–˜——•‘˜Ąęÿùÿ„ÍțÆÿĆöÆÄĂžjŁąš–”ț•ÿ—™››š˜…üÿùÿ€ÌÄęĆÄśĆĂ™z°šŠą üŸĄąŁ„§’ÿÿùÿŁËśÄĆŸęÄ ĂÂ~œ¶”«­°ŻłțČłŽ±°Č–ÿÿùÿąÊÄĂÄĂÄÄĂĂÄł‡ÄĂĂıt””¶t{€Č·žțčž·žž™ÿÿùÿ ÉúĂžŒq’ŸÄțĂ‘’țĂ­q’žüĂț ÿÿùÿ ŸÈÂÂĂÂĂ·’qŒłĂĂęŸuČÂÂĂš|q‘·ÂĂțÂĂ ÿÿùÿŸÇțÂœ—q‡ČÂÂÁüÂąÂțÁț Áą|qŒČÂÁŸÿÿùÿžÇțÁ|qŒüÁÿÂțÁąțÁÂüÁČvqĄęÁÿÿùÿÄțÁ¶‘qvœÁÀÁÀÁÀÀ±q»ÀÁÀÁÀÁÀ¶‘q‹°țÁÀÁÿÿùÿœÄüÀ»–qv üÀÿ‘ûÀ»‘qŒ°úÀ›ÿÿùÿ'›ĂÀżÀÀżżÀș‘q|°ÀÀ»v°ÀżÀÀż q†°ÀżÀżÀÀżżÀ›ÿÿùÿšĂżŸúżŽ‹ żż ûż‹ȘțżŸúżšÿÿùÿšÁżŸŸüżŸżżŸżŸ„żŸżżŸżŸżŸżțŸÿżÿŸÿżšÿÿùÿ˜ÁțŸœűŸ©€úŸœęŸœüŸœŸ˜ÿÿùÿ˜żœŸțœŸœœŸțœŸčœŸüœŸœŸœœŸœŸüœŸ˜ÿÿùÿ—ż»ëœŒûœŒœœŒŒ—ÿÿùÿ—Ÿ»œœŒŒœŒŒœŒœœŒțœęŒœțŒœŒŒœŒŒœęŒ—ÿÿùÿ—œșćŒœțŒșŒ—ÿÿùÿ—œč»Œ»ùŒÿ»Œ»»üŒ»țŒę»Œ»»č»—ÿÿùÿ—Œ¶ț»Œ»ŒŒę»Œț»Œś»Œ»Œț»¶»—ÿÿùÿ—Œ”è»șû»”»—ÿÿùÿ—ŒŽ»»șę»ęșù»ÿșț»țșü»Žș—ÿÿùÿ—»Ž”șș»ùș»ș»üșț»üș»șș¶łș—ÿÿùÿ—șßČș—ÿÿùÿ—ș¶áČ”ș—ÿÿùÿ—żÁàĆż—ÿÿúÿȚۗŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿÿżêÁčÍÊÁł”șșòÿÿțąÿŁąŁąŁŁąțŁąŁęąęŁ ąÌËĆČ°șșŸțôÿÿö òô  ÆÈÁ±ŻœșčĆțőÿÿțžțțžžțûžę šÄż­ŹĂŸșžÒțöÿÿûšęńšńšęń­úš “Àž©šÉÄżș·ßțśÿÿú˜ —˜ń˜ń˜ń˜˜—ńú˜ œł€ąĐÊĆÀ»·ëțűÿÿù•đ©•đ•òț•òú• ŒČą›ÓŃËÆÁ»·ôűÿÿ••ț”ÿ• ©đ•”đ•đ•”•đ•ț”•”•œ±ą–ÖÓÒÌÇÁŒ¶ûùÿÿę’ÿ“§đ§’’đ’ęđ§ú’œŽ€”ÜŚÓÓÍÇÂœ”țúÿÿû‘ęđ’đ‘đś‘’‘żŽ€—âĘŰÓÓÎÈĂŸłțûÿÿ śđś’‘À”§žéăȚÙÔÓÏÉÄżłțüÿÿ śő’Á·©šìêäßÚÔÓĐÊĆż”țęÿùÿ‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿ­§Š§țŠț§țŠ§țŠźÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·ĂÿÿùÿŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜Ąęÿùÿ„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…üÿùÿ€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÿÿùÿŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č–ÿÿùÿąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™ÿÿùÿ ÉőĂÄțĂÿÂóĂț ÿÿùÿ ŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ ÿÿùÿŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸÿÿțÿôŚíÌÊĂÂțÁÂüÁÂÁÂüÁÿÿÿÿôÖëđ ÓĂÀÁÀÁÀÁÀÁÁțÀțÁÀÁÿÿÿÿÖéđșźûÀÁùÀ›ÿÿÿÿÊÙŐÚŚÚÙÙțŰÿŚțÖÿŐęÔÚÙÙəąÀężÿÀ żÀżÀÀżżÀ›ÿÿÿÿÈٔíÙ”ÙșĄúżŸúżšÿÿÿÿÇŐŐášńŹ ±áŐŐǙĄŸżŸżŸżțŸÿżÿŸÿżšÿÿÿÿÆŰŰߎń »ßŃŃƙĄŸŸœęŸœüŸœŸ˜ÿÿÿÿĆŚŚĘŽüĐäțăäûĐÂĘĐĐƙĄœŸœŸœœŸœŸüœŸ˜ÿÿÿÿÄÖÖߎÙęÚățâăûÚÇßÏÏÙĄțœŒûœŒœœŒŒ—ÿÿÿÿĂŐŐàŽüÉęÏÓûÉżàÎÎÙĄœțŒœŒŒœŒŒœęŒ—ÿÿÿÿÁÔÔß”üÛćęäûÛÉßÍÍÁ™ĄűŒœțŒșŒ—ÿÿÿÿÀÓÓĘ·üÔĘțÜĘûÔ ÇĘÌÌÀ™ĄŒŒ»țŒę»Œ»»č»—ÿÿÿÿŸÓÓȚ·ÔŐŐÙùÚęÖÈȚËËż™ ú»Œ»Œț»¶»—ÿÿÿÿ ŸÒÒĘžÄÄÆÆŐęÍŃŐüÆÀĘÊÊŸ™ û»șû»”»—ÿÿÿÿŒŃŃĘžÔțŐÖęȚĘŚüÖËĘÉÉŒ™ șșț»țșü»Žș—ÿÿÿÿ»ĐĐÜčüÏĐțÓŃûĐÇÜÈÈ»™ șț»üș»șș¶łș—ÿÿÿÿșÏÏÜčûÍÏŃÏúÍÆÜÇÇș˜óČș—ÿÿÿÿčϔÏïđϔÇ蘝ôČ”ș—ÿÿÿÿžüÌÿËțÊÿÉțÈüÇÆțÄ·šŁóĆż—ÿÿÿÿ·ÈËÈÊÊÉÉțÈüÇÿÆęĆĂĆĆ·ï—Őÿÿÿÿ”Žü”Ž””Žû”Ž”Žü”ïżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿÿżêÁčÍÊÁł”șșòÿÿțąÿŁąŁąŁŁąțŁąŁęąęŁ ąÌËĆČ°șșŸțôÿÿè  ÆÈÁ±ŻœșčĆțőÿÿòžțțžžțûžę šÄż­ŹĂŸșžÒțöÿÿšțńšèńńššń­èš­èń­ńšęń š“Àž©šÉÄżș·ßțśÿÿ˜˜ń˜ê˜˜—ń˜ń笘瘗ńńț˜Źń˜œł€ąĐÊĆÀ»·ëțűÿÿ••đ•©æòòđ•đ©••èț•òț•敕ŒČą›ÓŃËÆÁ»·ôűÿ'ÿ••đ”đ••”đ•đ©••æ”•đđ””©æ”•œ±ą–ÖÓÒÌÇÁŒ¶ûùÿ(ÿ’’đ’擧đđ’đ’’“šæđ§đ’§æ’§’œŽ€”ÜŚÓÓÍÇÂœ”țúÿ ÿ‘‘đđŠæđŠđ’đ‘đü‘đ‘ęđ’‘żŽ€—âĘŰÓÓÎÈĂŸłțûÿÿ’śțțđû‘À”§žéăȚÙÔÓÏÉÄżłțüÿÿ śő’Á·©šìêäßÚÔÓĐÊĆż”țęÿùÿ‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿ­§Š§țŠț§țŠ§țŠźÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·ĂÿÿùÿŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜Ąęÿùÿ„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…üÿùÿ€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÿÿùÿŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č–ÿÿùÿąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™ÿÿùÿ ÉőĂÄțĂÿÂóĂț ÿÿùÿ ŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ ÿÿùÿŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸÿÿțÿôŚíÌÊĂÂțÁÂüÁÂÁÂüÁÿÿÿÿôÖëđ ÓĂÀÁÀÁÀÁÀÁÁțÀțÁÀÁÿÿÿÿÖéđșźûÀÁùÀ›ÿÿÿÿÊÙŐÚŚÚÙÙțŰÿŚțÖÿŐęÔÚÙÙəąÀężÿÀ żÀżÀÀżżÀ›ÿÿÿÿÈٔíÙ”ÙșĄúżŸúżšÿÿÿÿÇŐŐášńŹ ±áŐŐǙĄŸżŸżŸżțŸÿżÿŸÿżšÿÿÿÿÆŰŰߎń »ßŃŃƙĄŸŸœęŸœüŸœŸ˜ÿÿÿÿĆŚŚĘŽüĐäțăäûĐÂĘĐĐƙĄœŸœŸœœŸœŸüœŸ˜ÿÿÿÿÄÖÖߎÙęÚățâăûÚÇßÏÏÙĄțœŒûœŒœœŒŒ—ÿÿÿÿĂŐŐàŽüÉęÏÓûÉżàÎÎÙĄœțŒœŒŒœŒŒœęŒ—ÿÿÿÿÁÔÔß”üÛćęäûÛÉßÍÍÁ™ĄűŒœțŒșŒ—ÿÿÿÿÀÓÓĘ·üÔĘțÜĘûÔ ÇĘÌÌÀ™ĄŒŒ»țŒę»Œ»»č»—ÿÿÿÿŸÓÓȚ·ÔŐŐÙùÚęÖÈȚËËż™ ú»Œ»Œț»¶»—ÿÿÿÿ ŸÒÒĘžÄÄÆÆŐęÍŃŐüÆÀĘÊÊŸ™ û»șû»”»—ÿÿÿÿŒŃŃĘžÔțŐÖęȚĘŚüÖËĘÉÉŒ™ șșț»țșü»Žș—ÿÿÿÿ»ĐĐÜčüÏĐțÓŃûĐÇÜÈÈ»™ șț»üș»șș¶łș—ÿÿÿÿșÏÏÜčûÍÏŃÏúÍÆÜÇÇș˜óČș—ÿÿÿÿčϔÏïđϔÇ蘝ôČ”ș—ÿÿÿÿžüÌÿËțÊÿÉțÈüÇÆțÄ·šŁóĆż—ÿÿÿÿ·ÈËÈÊÊÉÉțÈüÇÿÆęĆĂĆĆ·ï—Őÿÿÿÿ”Žü”Ž””Žû”Ž”Žü”ïżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿÿżêÁčÍÊÁł”șșòÿÿțąÿŁąŁąŁŁąțŁąŁęąęŁ ąÌËĆČ°șșŸțôÿÿó òś  ÆÈÁ±ŻœșčĆțőÿÿòžțțžžòûžę šÄż­ŹĂŸșžÒțöÿÿšțń­èńńššńšèšńšèńššęń š“Àž©šÉÄżș·ßțśÿÿ˜˜ń˜ç˜˜—ń˜ńߏ˜îîț˜Źń˜œł€ąĐÊĆÀ»·ëțűÿÿ••đ•©æòòđ•đ©••đ©••đț•𩕐ŒČą›ÓŃËÆÁ»·ôűÿ ÿ••đ”æ••”đ•đț•𔕔𔔩𔕐œ±ą–ÖÓÒÌÇÁŒ¶ûùÿ(ÿ’’đ’æ“’æđ’đ’’“đđ’’đ’’𧒒œŽ€”ÜŚÓÓÍÇÂœ”țúÿÿ‘‘đđŠđđŠđ’đ‘đ‘ò‘đđ‘‘ęđ’‘żŽ€—âĘŰÓÓÎÈĂŸłțûÿÿ śő’‘À”§žéăȚÙÔÓÏÉÄżłțüÿÿ śő’Á·©šìêäßÚÔÓĐÊĆż”țęÿùÿ‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿ­§Š§țŠț§țŠ§țŠźÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·ĂÿÿùÿŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜Ąęÿùÿ„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…üÿùÿ€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÿÿùÿŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č–ÿÿùÿąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™ÿÿùÿ ÉőĂÄțĂÿÂóĂț ÿÿùÿ ŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ ÿÿùÿŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸÿÿțÿôŚíÌÊĂÂțÁÂüÁÂÁÂüÁÿÿÿÿôÖëđ ÓĂÀÁÀÁÀÁÀÁÁțÀțÁÀÁÿÿÿÿÖéđșźûÀÁùÀ›ÿÿÿÿÊÙŐÚŚÚÙÙțŰÿŚțÖÿŐęÔÚÙÙəąÀężÿÀ żÀżÀÀżżÀ›ÿÿÿÿÈٔíÙ”ÙșĄúżŸúżšÿÿÿÿÇŐŐášńŹ ±áŐŐǙĄŸżŸżŸżțŸÿżÿŸÿżšÿÿÿÿÆŰŰߎń »ßŃŃƙĄŸŸœęŸœüŸœŸ˜ÿÿÿÿĆŚŚĘŽüĐäțăäûĐÂĘĐĐƙĄœŸœŸœœŸœŸüœŸ˜ÿÿÿÿÄÖÖߎÙęÚățâăûÚÇßÏÏÙĄțœŒûœŒœœŒŒ—ÿÿÿÿĂŐŐàŽüÉęÏÓûÉżàÎÎÙĄœțŒœŒŒœŒŒœęŒ—ÿÿÿÿÁÔÔß”üÛćęäûÛÉßÍÍÁ™ĄűŒœțŒșŒ—ÿÿÿÿÀÓÓĘ·üÔĘțÜĘûÔ ÇĘÌÌÀ™ĄŒŒ»țŒę»Œ»»č»—ÿÿÿÿŸÓÓȚ·ÔŐŐÙùÚęÖÈȚËËż™ ú»Œ»Œț»¶»—ÿÿÿÿ ŸÒÒĘžÄÄÆÆŐęÍŃŐüÆÀĘÊÊŸ™ û»șû»”»—ÿÿÿÿŒŃŃĘžÔțŐÖęȚĘŚüÖËĘÉÉŒ™ șșț»țșü»Žș—ÿÿÿÿ»ĐĐÜčüÏĐțÓŃûĐÇÜÈÈ»™ șț»üș»șș¶łș—ÿÿÿÿșÏÏÜčûÍÏŃÏúÍÆÜÇÇș˜óČș—ÿÿÿÿčϔÏïđϔÇ蘝ôČ”ș—ÿÿÿÿžüÌÿËțÊÿÉțÈüÇÆțÄ·šŁóĆż—ÿÿÿÿ·ÈËÈÊÊÉÉțÈüÇÿÆęĆĂĆĆ·ï—Őÿÿÿÿ”Žü”Ž””Žû”Ž”Žü”ïżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿÿżêÁčÍÊÁł”șșòÿÿțąÿŁąŁąŁŁąțŁąŁęąęŁ ąÌËĆČ°șșŸțôÿÿè  ÆÈÁ±ŻœșčĆțőÿÿțžțțžžțûžę šÄż­ŹĂŸșžÒțöÿÿúš ńšèš­èńńš›ńšńüš “Àž©šÉÄżș·ßțśÿÿú˜ń珘çț˜ń—ńńŹü˜ œł€ąĐÊĆÀ»·ëțűÿÿú•đ©ț•æòòđ•đ©û• ŒČą›ÓŃËÆÁ»·ôűÿÿ••ț”ÿ•𔕔æț•đ•đ•ț”•”•œ±ą–ÖÓÒÌÇÁŒ¶ûùÿÿę’ÿ“’đț’撓đđ’đú’œŽ€”ÜŚÓÓÍÇÂœ”țúÿÿú‘ 𑒒Šæđ‘đ‘đû‘’‘żŽ€—âĘŰÓÓÎÈĂŸłțûÿÿ śő’‘À”§žéăȚÙÔÓÏÉÄżłțüÿÿ śő’Á·©šìêäßÚÔÓĐÊĆż”țęÿùÿ‰ ›™—”ő’ÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿ­§Š§țŠț§țŠ§țŠźÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆùÇÆûÇĆÂș±Šœ–’’“•”’™Ź·ĂÿÿùÿŠÍöÆÇęÆĆÂŒłȘ ˜–““””–˜——•‘˜Ąęÿùÿ„ÍțÆÿĆöÆÄĂŸ”­ąš–”ț•ÿ—™››š˜…üÿùÿ€ÌÄęĆÄśĆĂŸž°šŠą üŸĄąŁ„§’ÿÿùÿŁËśÄĆüÄ ĂÂżŒ¶”°­°ŻłțČłŽ±°Č–ÿÿùÿąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÂÂżș”¶·°ŽČ·žțčž·žž™ÿÿùÿ ÉőĂÄțĂÿÂóĂț ÿÿùÿ ŸÈÂÂĂÂĂÂĂÂęĂęÂĂÁțÂĂÂÂțĂțÂĂțÂĂ ÿÿùÿŸÇüÂÁęÂÁûÂÀÂțÁțÂÁțÂÁÂÂÁŸÿÿțÿôŚíÌÊĂÂțÁÂüÁÂÁÂüÁÿÿÿÿôÖëđ ÓĂÀÁÀÁÀÁÀÁÁțÀțÁÀÁÿÿÿÿÖéđșźûÀÁùÀ›ÿÿÿÿÊÙŐÚŚÚÙÙțŰÿŚțÖÿŐęÔÚÙÙəąÀężÿÀ żÀżÀÀżżÀ›ÿÿÿÿÈٔíÙ”ÙșĄúżŸúżšÿÿÿÿÇŐŐášńŹ ±áŐŐǙĄŸżŸżŸżțŸÿżÿŸÿżšÿÿÿÿÆŰŰߎń »ßŃŃƙĄŸŸœęŸœüŸœŸ˜ÿÿÿÿĆŚŚĘŽüĐäțăäûĐÂĘĐĐƙĄœŸœŸœœŸœŸüœŸ˜ÿÿÿÿÄÖÖߎÙęÚățâăûÚÇßÏÏÙĄțœŒûœŒœœŒŒ—ÿÿÿÿĂŐŐàŽüÉęÏÓûÉżàÎÎÙĄœțŒœŒŒœŒŒœęŒ—ÿÿÿÿÁÔÔß”üÛćęäûÛÉßÍÍÁ™ĄűŒœțŒșŒ—ÿÿÿÿÀÓÓĘ·üÔĘțÜĘûÔ ÇĘÌÌÀ™ĄŒŒ»țŒę»Œ»»č»—ÿÿÿÿŸÓÓȚ·ÔŐŐÙùÚęÖÈȚËËż™ ú»Œ»Œț»¶»—ÿÿÿÿ ŸÒÒĘžÄÄÆÆŐęÍŃŐüÆÀĘÊÊŸ™ û»șû»”»—ÿÿÿÿŒŃŃĘžÔțŐÖęȚĘŚüÖËĘÉÉŒ™ șșț»țșü»Žș—ÿÿÿÿ»ĐĐÜčüÏĐțÓŃûĐÇÜÈÈ»™ șț»üș»șș¶łș—ÿÿÿÿșÏÏÜčûÍÏŃÏúÍÆÜÇÇș˜óČș—ÿÿÿÿčϔÏïđϔÇ蘝ôČ”ș—ÿÿÿÿžüÌÿËțÊÿÉțÈüÇÆțÄ·šŁóĆż—ÿÿÿÿ·ÈËÈÊÊÉÉțÈüÇÿÆęĆĂĆĆ·ï—Őÿÿÿÿ”Žü”Ž””Žû”Ž”Žü”ÿńżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿùÿńœ»ž”ŻÍúțđÿùÿŒáóÚÙŚÔËșČșđÿùÿșÙòÏÎÌÆč­čșńÿèìŐÍÊÁł”șșòÿçĘÌËĆČ°șșŸțôÿęÛÜńÛțÛÜÛÛĆÈÁ±ŻœșčĆțőÿțŰÿÙŰÙŰŰțÙÿŰÙŰŰțÙțŰŰÙÙŰ„Äż­ŹĂŸșžÒțöÿęŚțțÿŚțțŚțțŚțŚțțÿęŚ ŽÀž©šÉÄżș·ßțśÿŐÖŐțțŐ țŐțŐŐțŐțŐÖțŐŐțțŐÖՋœł€ąĐÊĆÀ»·ëțűÿÿÒÿÓÿțÓÒÓÓțÓțÓțÓțÒÒÓțęÓ ÒŠŒČą›ÓŃËÆÁ»·ôűÿÿÒÿÓÒÓțÒÓÓțÓțÓțÓțÒÒÓțęÓҋœ±ą–ÖÓÒÌÇÁŒ¶ûùÿțŃÿțŃțțŃțțŃțęŃțüŃ‹œŽ€”ÜŚÓÓÍÇÂœ”țúÿÿÏÿĐÿÿțĐțÏțțĐțțĐÏțțĐÏЋżŽ€—âĘŰÓÓÎÈĂŸłțûÿțÎÏúÎÿÏÿÎÍûÎÍÏÎϋÀ”§žéăȚÙÔÓÏÉÄżłțüÿüÍÌúÍÌöÍȋÁ·©šìêäßÚÔÓĐÊĆż”țęÿùÿƒ›”’ŽôŒ‹ÀčȘŽáÜÙÓŃÏÏÒŃËÆż·țțÿùÿȘ€Ł€țŁț€țŁ€țŁŹÁ»Ż–Š‰†‡‰Œ‘Ÿ«ŒÆœ»ęÿÿùÿ§ÎÆùÇÆûÇĆÂș±Šœ˜––’’“•”’™Ź·ĂÿÿùÿŠÍöÆÇęÆĆÂŒŽČŹŠąŸ˜””–˜——•‘˜Ąęÿùÿ„ÍțÆÿĆöÆÄĂÁÄŒ±©ŁĄ™••——™››š˜…üÿùÿ€ÌÄęĆÄśĆ ĂÇĐÊÁž¶±ź€ęŸĄąŁ„§’ÿÿùÿŁËśÄĆüÄ ĆÓŃÎÈÆÁœż”łțČłŽ±°Č–ÿÿùÿąÊÄĂÄĂÄÄĂĂÄÄĂÄÄĂĂÄÒÖÒÍÇÉÂłŽČ·žțčž·žž™ÿÿùÿ ÉőĂ ÄĂĂËÖŐŚŚÖÉśĂț ÿÿùÿ ŸÈÂÂĂÂĂÂĂÂęĂÿ ĂŐŚÔÖÖÊĂÂÂțĂțÂĂțÂĂ ÿÿùÿŸÇüÂÁęÂÁțÂÊÖÖÔÖĐÁÁțÂÁțÂÁÂÂÁŸÿÿùÿžÇüÁÂüÁÿÂÁÒŐŐÖŐĆÁÂüÁÂÁÂüÁÿÿùÿÄüÁÀțÁÀÁÀÁÆűŐÁÀÁÁțÀțÁÀÁÿÿùÿœÄôÀÎÔÔúŐțÀÁùÀ›ÿÿùÿ ›ĂÀżÀÀżżÀżęÀÂÓÔÓÔÔÓŐÔŐÔżżÀÀżÀżÀÀżżÀ›ÿÿùÿšĂżŸúżŸżżÉęÓÔüÓężŸúżšÿÿùÿšÁżŸŸüżŸțżŃúÓÒÓÒżŸżțŸÿżÿŸÿżšÿÿùÿ˜ÁțŸœúŸÈęÓÉüŸœęŸœüŸœŸ˜ÿÿùÿ˜żœŸțœŸœœŸœÀÒęÓÀęœŸœŸœœŸœŸüœŸ˜ÿÿùÿ—ż»űœÌțÓÒÊúœŒûœŒœœŒŒ—ÿÿùÿ—Ÿ»œœŒŒœŒŒŸÊÒÒÓÓŃżęŒœțŒœŒŒœŒŒœęŒ—ÿÿùÿ—œșüŒĆÉŃÒÓÒŃÒĆóŒœțŒșŒ—ÿÿùÿ —œč»Œ»ŒŒÓÓțÒŃÒËŒ»»üŒ»țŒę»Œ»»č»—ÿÿùÿ—Œ¶ț»Œ»ÓÓęÒËŒ»»Œś»Œ»Œț»¶»—ÿÿùÿ—Œ”ü»ęÒŃÆó»șû»”»—ÿÿùÿ —ŒŽ»»ș»»ÒÒÍÆœșù»ÿșț»țșü»Žș—ÿÿùÿ —»Ž”șș»șœ»üș»ș»üșț»üș»șș¶łș—ÿÿùÿ—șßČș—ÿÿùÿ—ș¶áČ”ș—ÿÿùÿ—żÁàĆż—ÿÿúÿȚۗŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿńÿŚÖőŚÔŃÇÔîûőÿńÿŚăèöæćăÙĂŒÚęöÿńÿÖßàôȚÙÌœÌÜęśÿńÿŐȚáößÿȚÛÓÀÇÏÙśÿűÿŚÖüŚúÖÓĐÆÓŐȚȚĘÜÚÒŒÄÔŃśÿűÿŚăèöæćăÙĂŒÔȚÜÚÖÌ·ÂŰŃÖűÿűÿÖßàôȚÙÌœÌŐÜŰŃĆŻŸßÖŃÙùÿűÿŐȚáößÿȚÛÓÀÇÏŃŚÏÂȘčćÜŚŃßúÿÿŚÖûŚûÖÓĐÆÓŐȚßȚĘÜÚÒŒÄÔŃŰЧłèàĘŰÒŰûÿÿŚăèöæćăÙĂŒÔßĘÜÚÖÌ·ÂŰŃÖŃħ±íăâȚÙŐÖüÿÿÖßàôȚÙÌœÌŐĘÛŰŃĆŻŸßÖŃŰĆ©¶óæââȚÙÖĂęÿÿŐȚáößÿȚÛÓÀÇÏŃÚŚÏÂȘčćÜŚŃÜ­ŸűíéćâßÚÚœțÿÿÓȚáȚȚęßȚțß!ȚĘÜÚÒŒÄÔŃÛŰЧłèàĘŰÒŃËűïêèæçćßĘËÿÿÿÓȚáțȚßûȚ!ĘÜÚÖÌ·ÂŰŃÖÙŃħ±íăâȚÙŐÏŹ§„ŠšŹžĂÓĘÁÿÿÓȚáȚĘûȚ#ĘȚÜÛŰŃĆŻŸßÖŃŰÓĆ©¶óæââȚÙÖŸ–”“”—œžąŻÆÎ%ÿŃĘàĘĘȚĘĘȚĘȚĘĘÜÚŚÏÂȘčćÜŚŃÜÆ­ŸűíéćâßÚÚ¶țŸęĄÿœŠÿÏÛßśĘÜÛŰЧłèàĘŰÒÓłËűïêèæçćßĘÂțŁ„Ššš§• ÿÏÚßÜÜĘĘÜĘÜęĘÜÙŃħ±íăâȚÙŐĐšŹ§„ŠšŹžĂÓĘțžčș»șŒŻÿÏÚßțÜÛțÜÛțÜÛŰÓĆ©¶óæââȚÙÖż›–”“”—œžąŻÆÄțËÊÈËčÿÎÙȚÛÜśÛÙÓÆ­ŸűíéćâßÚÚ·ąțŸęĄÿœŠțÖÿŐŚĂÿÍŰĘÛÚÚțÛÚÛÛțÚÙÓÇłËűïêèæçćßĘ€țŁ „Ššš§•ÖÖŚÖÖÙĆÿËŚĘőÚŰÔË·šŹ§„ŠšŹžĂÓĘęž čș»șŒŻÖŐÖÖŐŰĂÿÊÖÜúÚÙęÚÙÖÌŸȘ›–”“”—œžąŻÆĂÉțËÊÈËčÖÖțŐŚÂÿÉŐÜùÙÚțÙŰŐÏĂ·©ąțŸęĄÿœŠŐțÖÿŐŚĂüŐŰÁÿÈŐÜÙÙŰűÙŰÖŃÆșź§€țŁ„Ššš§•ŚÖÖŚÖÖÙĆŐÔŐŐÔŚÁÿÆÔÛôŰŐŃËĂœčęžčș»șŒŻÖÖŐÖÖŐŰĂÓęÔŚÀ ÿÆÓÚŚŰŚŰŚŚŰŚŰŰțŚÖÓÌÇÉĂĆĆÉțËÊÈËčŐÖÖțŐŚÂÓÔÔÓÓÖżÿĆÒÚűŚŰțŚŐÖțŐÔțŐțÖÿŐŚĂûŐŰÁÓÒÒÓÓŐŸÿÄŃÙÖŚŚÖŚÖŚÖŚÖŚÖŚÖŚÖûŚÿÖ ŚÖÖÙĆŐŐÔŐŐÔŚÁüÒŐœÿÄŃÙțÖŐüÖŐüÖŐęÖ ŐÖÖŐÖÖŐŰĂÔÓęÔŚÀüÒŐœÿÂÏŚțŐÖüŐÖüŐÖûŐÿÖțŐ ŚÂÓÓÔÔÓÓÖżęÒŃÓŸÿÂÏŚæŐŰÁÓÓÒÒÓÓŐŸŃŃÒŃĐÒœÿÁÍŚÔŐŐÔŐÔŐŐÔÔŐÔŐŐÔÔŐŐÔÔțŐÔŐŐÔŚÁûÒŐœÒÒŃŃÏŃœÿÀÍÖÓìÔÓęÔŚÀûÒŐœęŃÏĐœÿżÌÖțÓțÔÿÓęÔÿÓțÔ ÓÔÓÔÓÓÔÔÓÓÖżüÒ ŃÓŸĐŃĐĐÌĐœÿŸÊÔÓÓÒÓÒÒÓÒÒÓÒÒÓÒÒÓÒțÓÒÓÓÒÒÓÓŐŸțŃÒŃĐÒœęÉÈÏœÿœÊÔæÒ ŐœŃÒÒŃŃÏŃœüÒŚŸÿœÉÓæÒŐœĐęŃÏĐœûÇčÿœÉæÒ ŃÓŸĐĐŃĐĐÌĐœûŸ»ÿœÉŃŃÒŃęÒŃüÒŃúÒțŃÒŃĐÒœüÉÈÏœúÿÿœÉĐŃŃÒŃÒÒŃŃÒŃÒÒŃŃÒŃÒÒęŃÿÒÿŃÏŃœûÒŚŸúÿÿœÉÏŃŃĐțŃĐûŃĐțŃĐŃŃĐĐęŃÏĐœúÇčúÿÿœÈÏÎĐŃüĐŃüĐŃțĐŃęĐŃĐĐÌĐœúŸ»úÿÿœÈÍçÉÈÏœòÿÿœÊŐæÒŚŸòÿÿ¶żÆćÇčòÿÿÀŒœćŸ»òÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿÿÿ Ù.țÿÿÿ“Ù#8țÿÿÿ“Ù#8țÿÿÿ“ă#ț$ú#8țÿÿÿ“ö#"ô#! ü#8țÿÿÿ“ű#"_F!ű# !?csuhH# ț#8țÿÿÿ“ű#Uęó­Y%"û#$hĂòęÿűŃx$#8țÿÿÿ“ù# !ÊęÿWü#$,łśÿ¶)#8țÿÿÿ“ù#zęÿÍ(ü#,ÈőÿŻ!8țÿÿÿ“ú#5æțÿûYü#!łûÿțúÿf8țÿÿÿ“û#"€ęÿŹ"ü#hüÿĆnRh»üÿ»6țÿÿÿ“ü#$Tùțÿí=ü#!ĆęÿŹ§ęÿç03țÿÿÿ“ü# "Éęÿˆû#1ńțÿă1##$DöțÿöD1țÿÿÿ“ü#{ęÿŐ)û#!$ŃÿÿŽę#,ćțÿúP0țÿÿÿ“ę#6èțÿędù#"%\”8ę#1èțÿśH0țÿÿÿ“ț#"€ęÿ¶ę!"û#$ę#Pùțÿí63țÿÿÿ“ț#UúțÿóFț!!ó#˜ęÿÍ#5țÿÿÿ“## Ëęÿ “}ÓÍĐž0ö#$Jòęÿ9țÿÿÿ“##|ęÿà.»țÿû?ś#$3Öęÿî:8țÿÿÿ“#6èęÿp!#Çțÿò>ś#>Òüÿ#8țÿÿÿ“"€ęÿĂ!)Śțÿò>ù# [èüÿŹ!#8țÿÿÿ“UúțÿűP$3çțÿò>û#$†śüÿ­###8țÿÿÿ“#ÌęÿĄ##Dśțÿò>ü#$'«ûÿ•ț#8țÿÿÿ“ zęÿá+Pęÿ ń6 ##$3Ćüÿînę#8țÿÿÿ“ Šęÿ˜;țH>}ęÿ ô_DJ+!#.ÍüÿÏF"ü#8țÿÿÿ“ Łęÿòőțöőùęÿțśöùj Žüÿ­(ú#8țÿÿÿ“ ŁîÿvuüÿŠ$ú#8țÿÿÿ“ Šîÿv%ÖęÿË#$ù#8țÿÿÿ“ ˜ÿùüûüüÿÿüęk Węțÿțb ú#8țÿÿÿ“1PùND†ęÿôdJL)ŠęÿöbDúJL;!8țÿÿÿ“űdęÿń6!ŻęÿțśùűùÒ)4țÿÿÿ“ś#jęÿò>#! Èòÿá.4țÿÿÿ“ś#jęÿò># %ÒòÿÜ,4țÿÿÿ“ś#jęÿò>#(ßòÿć,4țÿÿÿ“ś#nęÿü>#!#ĄËôÆ˘"6țÿÿÿ“ś# :‰Œ‹})!##" ô !8țÿÿÿ“ś#$ę"ę#"!ô"!"#8țÿÿÿ“Ù#8țÿÿÿ“Ù#8țÿÿÿ“Ù#8țÿÿÿ‘Ù#4țÿÿÿ+Ú96JțÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿêÿ€Íêÿôÿúűúÿü=ƒùÿśóÿőÿś›ęûÿÜ7úûÿúšÀôÿöÿńc0/ËûÿŃûÿȘQ.őÿśÿèCMìŸ(ïțÿśÛ5nçûțÿĐÜÍ!VôśÿűÿŰ-ośÿúHlŰĄb$ T2ușĘ4Œÿÿà:3èűÿúÿ ęŒŠÿțÿÿÔęĂ\üFùțÿïU"Ûùÿûÿ ü“©ÿțÿŒÊÿü/üȘü Íü°Țÿÿùuùÿüÿ üƒÇÿțú„ÜöCę{ÿéę ‚ÿ˜(Áÿțÿ“*Óûÿüÿł:ßÿțê\ț UțÉÊÿÿcț 6óÖšțęÿ·lûÿüÿÉ1ïÿôIl3žÿ}>țÿ» œęLHašÿÿÄeûÿüÿ$üb^ęì!RÿŻÜń4jÄśë·nÿ” Ùÿ,vÿè'čûÿûÿ#çžÿœ„BTțžMÿé%êŚ[y!áüZ=ûûÿúÿŁÒęQęÿi »”«üJ©ÿ›ÛúÿúÿŃBöÛüȚï&ę`ÿ“û`ÿÒ?ęúÿúÿc|ÿ›ț M‚ :˜ü"âő@ŸúÿęÿśÉ‡ ț±ęRûzĂßÖŠJû§ÿtț:—Ôțęÿțÿ)ÂD2S^__]ùÛVçÿĘ·Äśÿźaÿàf`__\L$oëțÿÿę”&ČśüÿüùÿœMűâV/J?4—ÿč $ățûûÿì‹AŚÿÿÿ˜%ßÿțùÿù8Üç4wæțûÂ4†ÿt‘űÿțÿł(ÚÿŚżÿęóyę{|uH"^ÿmkÿÿûûÿÛ*ÖÚ+c|ę{z~Èÿüÿz8úeCțęûa$uü~žÉšő2Śÿțû úÿl†ț*p‡}ę~XÁÿțà"Ëuÿÿá·ùÿă °ă4đęęûÿŒiÿ8cűÿ?mÿęś6Ł'jÿęđ/Q»ÀüżĐÜŸó2Üÿęûÿs€ÿ,sćÄŸężÁ –ÿęô0ź“,òțÿĆ<),ț+ÿ, . gÿ`|ÿęûüÿć.Ìá&$(-,ę+)tôüÿĆĘï$ˆÿûÿúțïđïđđàOćȚ)śÿÿŰ@qÿ‚ŸïđüïòÿęțüH‚ÿÿÒ#ŠùÿęÿÚ^ÿĐC=\O/~ÿÉ_ÿțțúÿśn\śÿÿÿŰ>`ÂĘțàÿßûúOę iőÿƛ©ćÿÁ#ț€ÿőĘęàÚ­=gőÿÿțÿ ï{!ÿ—û+—ÚńëÄeü àńL 4­üțÿęÿ ęìÓ90ïŰü ^ 4düZțÆ …áőüÿúÿš ÄęOü ÿPkJ˜ÿN€ÿˆ*íúÿúÿá„ÿ–ü Xÿ«/ÿŐâÚüàúAHùÿûÿ"üYAśÙCàê& oM_ÿ˜):Xꌰúÿûÿ ·ŐùPNÿšĄÿoúŽțQ Ńü)„ÿŸđûÿüÿ$ò8 ÿé&Ż`Węż G‡{--íŰąmÿę`šûÿüÿÊ.áÿęŠțȚö9ˆțÿđQxÿšț>Ęęÿ­pûÿüÿ$śh.ŃÿÿÄ+ĄÿˆCțŸ9QéȚÆțRaîÿÿŠ”ûÿûÿ#ő_»ÿÿàUpțĐ€ÿ<‚ÿ:?śÜHŠüÿțˆŁțûÿúÿ ù‚ ąÿÿțÿúJțpÿaŁę.țŒÿęÿÿùn»ùÿùÿę©ˆęțÿ—%9"ćò‘©ÿŽY€ÔÿÿíS ŐűÿśÿÀmùăŠÿűXCĐÿûŻ˜ęÿaHÿȚ9 öÿöÿÇPQTęÿțè;+#oüÿÿæ%y(6ćöÿőÿÌ&Úęÿë|' :ĄțęÿąTíőÿëÿòÚßúûÿò„öÿțöÿŃÿüÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțíÿüÿŚòïüîïîîïïțîíìèàĐÌÙíÿüÿÖîńéçàÔÇȚÚîÿüÿÔîśéèțéèéæäÚÌŚßÙïÿüÿÓîțé èééèéèèéèéțèçäȚÍĐßȚÛțńÿüÿÓíèèééèéțèéüè çćâĘËÌàßĘȚțòÿüÿŃíôè çæäăßÖÇÈâàßÜæțóÿüÿĐìùèçęèÿæ äáÛÓÁÂćăàßÛîțôÿüÿÏìçțèțçÿèÿçÿèæääßŰÎŒ»èæăáßÛôțőÿüÿÎëțçÿèțçèęçæćăȚŰÍ»”êéæäáßÚùőÿüÿÍëúçèçèçèçæćäàŰÍ»źëêéçäáßŰüöÿüÿËëæçæęçæțçæçĐœą œ˜ą„îìêêçäâàÖțśÿüÿËêęæçææççæçæ裣ąĄ—’œńïìêêçćâàÔțűÿüÿÉëçæçúæçčțŁąĄž™• ôòïíêêèćăàÓțùÿüÿÉêśæËțŁčŚâȚÈ€ȘöőòđíêêèæăàÓțúÿüÿ$Çêæćæććæććææ°ŁŁÇćæâȚÖĆŸçăàăâăćêéæäȚÒțûÿüÿ%Æéććææćææćć⣣Źććæâߌɰ‰‡šŸą„«žĆŚăÜŐțüÿüÿĆéűćÏŁŁÂțćăàŰÎÀž‰‡Ÿš©Ș­źŻ­ČÈÖÚüÿüÿÄèäüćäććäûćâàÚĐƛ†„§Ź­ŻŻČł±°źŽŸțęÿüÿ ĂçćääćäćääććäćțäćăâÛÓœ‹†Œę­ÿ°Ž””ŽŽĄțęÿüÿÂçőä ćäćäâáÜɗŽŹûșŒœżÁÄźüÿüÿÁçțäÿăÿäăûä ăäâá͜˜—łÉÍÍęÏŃÒÎÌÏłüÿüÿÀçäăääăęäăäțăäăăǟ›—±ŐÎŃĐŐŰŚŚŰŚŐÖŚ”üÿüÿżçęățäăäúăÍąŁŁĆäüăäăăäăâăăżüÿüÿżæòăߧąŁĆùăäûăŸüÿüÿœćăâăâțăâęăâăăĆŁąžăăâăăâăâüăÿâăœüÿüÿ œćâăâăăââăââăăț➣ŁÎțâăâăăùâăœüÿüÿŒäüâățâÿăęâ ŽŁŁÚâăââăâăââăûâŒüÿüÿ»äûâáûâá⎣ŁȚńâ»üÿüÿșăűâáâáâáęâÿáúâÿáâáțâá»üÿüÿșăáââáțâÿáâęáâáâáâáâáâüáâáâțáâčüÿüÿșâáâűáâááÚțŁęáâőáčüÿüÿčáàüáțàțáàáÙțŁöáàüážüÿüÿžâáààùáÿàáÙțŁțàÿáàüáàáàáàážüÿüÿ·áßàááààáüàáààááààáùàáàțáßážüÿüÿ·âȚûàáęàáűàáùàáàȚà·üÿüÿ·áĘïàßùàßàßààĘà·üÿüÿ·àÛțàßțàßàßàßęàßțàßöàÛß·üÿüÿ·ßÚàßàßàßàßßàßàßßàßßààßàęßüàßàÚß·üÿüÿ·ßÚààßßàßàßààßßàßßęàûßÿàßàßàßÙà·üÿüÿ·ßŰàßàüßàőßàțß àßßààßßÙß·üÿüÿ·ßŚÚțßàńßàúßàßÚŚß·üÿüÿ·ßßÖß·üÿüÿ·ßÛáÖÚß·üÿüÿ·ââàćâ·üÿęÿȚÛ·ŐęÿęÿÍżŸŸœŒșáżÍęÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿúÿööôűćÿüÿö§©ŹŹȘ©țš§țŠ§„ńçÿęÿöšò—­çÿęÿ©ŰüîîìêçćâáßȚȚá櫞Ńèÿęÿ±ÛĂőżıŁČßțśÿđőśțûÿęÿ­ÚĂôżÏČąî©Éüÿțÿț«ŰœŸżțŸ żŸżŸŸżżŸŸŐ°î—§üÿțÿꚌŒțœŸűœŸżôûâăęâăüâàŠüÿÿÿ țü§Ő»»Œ»Œ»ŒŒœœúŒœûŒœțŒœțŒœŒŒŠ›üÿÿÿțûŠÓžčșșü»șę»ș»șś»ÿș»ș»»ș»§šüÿÿÿțú„ÓȚ»Š™üÿÿÿțö€Òțșÿ»șț»ÿș»țș»ș»ș»»ș»»ș»șș»ș»ș»șșŠ˜üÿÿÿțú„Đșčęșÿčśșčșčśșčțș„˜üÿÿÿțú„Ïéčșęčșü芖üÿțÿû„Íûžčžžčžččùžÿčžčúžčžž„•üÿțÿüŠË·ž·țžÿ·ž·žü·ž··ž··žú·žț·ž„”üÿțÿțŠÉę¶ÿ·ę¶ÿ·ü¶·ę¶·¶¶·ț¶·ü¶€“üÿțÿțšÈ¶¶ț”¶ę”¶”¶””¶””¶¶”¶””¶ú”¶””€“üÿęÿšĆúŽ”üŽÿ”ôŽ”ûŽ€’üÿęÿ„ÄȚł€‘üÿțÿț€ÂČȱęȱȱúČÿ±ńČŁüÿțÿț€œùźŻûźŻûźŻźŻüźŻźŻźŻąŽüÿțÿț€»ç­źü­ź­­ĄŽüÿęÿ€čűŹ«ùŹ«ęŹ«ęŹ«Ź«ęŹĄüÿęÿ€·ö«Ș«ȘȘ««Șű«Ș«ȘȘę«Ąüÿęÿ€”Ș©țȘ©śȘ©ȘȘ©©Ș©©öȘĄŒüÿęÿąČ©šü©šû©ÿšû©ÿš©țš©š©šț© ‹üÿęÿ„°üš§ûš§š§őš§ęš§š§ ŠüÿęÿŁź§Šê§Šę§Šę§ŸŠüÿęÿŁ­§öŠ§ŠŠ§ùŠÿ§Š§§ûŠŸŠüÿęÿąȘ„țŠ„țŠ„ŠŠț„Š„Š„„Š„ŠŠ„Š„Š„„țŠ„ŠŠŸ‰üÿęÿžźę’ÿ‘ę’ü“ę”ț•ù–ț—˜Ąž‰üÿțÿđȚȘ–žŁüÿÿÿđŰčȚ–·Ûüÿÿÿ ìáàÛÆÆĆÄÄÂêÆÂÄÄĆÆÆÛûÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿțÿööôűáÿÿöš«źźŹ«țȘ©šț§„ńăÿÿ©ŰüîîìêçćâáßȚȚáæ­ăÿÿ±ÖĂőżıŃäÿÿ­ÍĂôżÏČßțśÿđőśțśÿÿ«ÌœŸżțŸ żŸżŸŸżżŸŸŐ°ûŻțźÿ­Ź«ȘȘ©š§ŽűÿțšÌŒțœŸűœŸżôûâăęâăüâàšđùÿ ę§Ë»»Œ»Œ»ŒŒœœúŒœûŒœțŒœțŒœŒŒ©ÙùÿüŠËžčșșü»șę»ș»șś»ÿș»ș»»ș»ĄŚțúÿû„ËŽ”··čțžțčÿžțčÿžčžüčúžčžž›Ôüüûÿû„Éț«ÿŹț­țŹę­üŹ­ùŹ «ŹŹ«ŹŹ“Êôőțöțÿû„Éțš©țš«ïÿòńńđđïîíììêèèçææćääûăȚüÜĘééÿû„Èú„ÄúÍáÀœÊÿüŠÈŁŁąțŁšÍĂżáÀŒ—ÿțŠÇûŸ»ÍŸœáż«”ÿ țšÇœœ›œœžÊÄœœâŸœ›òÿÿšÆü™±ÎœșáœŻȘÿÿ ÿ§Æ––—––ĆĆčžá»ßÿÿ ÿŠĆ’’“”„λ”žâč± țÿ ÿ§ĆŠŒŽŸÆ¶Žá·ĄÉțÿ țŠÄ‚…‰”Ì豎㔎Țțțÿ ț€Ä}‚±È±źăȱ°Ł·ęÿ ț€Ă{{Ă菟ă°­ź˜őęÿ ÿ€Ăyx Æ­š­äźŹȘ„Șüÿÿ€Âxwč·§§ă«Š©—âüÿÿ€Âx‘ÀȘąšä©šą€žûÿÿąÁw°ŽŁ ă§ĄŁ˜Ëûÿÿ„Άœš™ąä„€œą—úÿÿŁÜÚœĄ–ă„ÿŸ™łúÿÿŁŃÿȘ–ĄęąúŁń€ą—ĄŽőúÿÿążÀ€Žă›™ššŸùÿÿžÀ«Łœ’‘‘ę’ü“ę”ț•ù–ț—˜Ą‘Őùÿÿ€—€§âȘ–űÿéÍȚ ŚßéđûÿáàÛÆÆĆÄÄÂêÆ ÂÄÄĆÆÆÛàÙàęÿûÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿùÿÔîśéèțéèéæäÚÌŚßÙòÿùÿÓîțé èééèéèèéèéțèçäȚÍĐßȚÛțôÿùÿÓíèèééèéțèéüè çćâĘËÌàßĘȚțőÿùÿŃíôè çæäăßÖÇÈâàßÜæțöÿùÿĐìùèçęèÿæ äáÛÓÁÂćăàßÛîțśÿùÿÏìçțèțçÿèÿçÿèæääßŰÎŒ»èæăáßÛôțűÿùÿÎëțçÿèțçèęçæćăȚŰÍ»”êéæäáßÚùűÿùÿÍëúçèçèçèçæćäàŰÍ»źëêéçäáßŰüùÿùÿËëæçæęçæțçæççććâÙÏœŹîìêêçäâàÖțúÿùÿËêęæçææççæçææçæćăÜĐż°ńïìêêçćâàÔțûÿùÿÉëçæçúæçæçææćâȚÒÀŽôòïíêêèćăàÓțüÿùÿÉêòæäâȚÔĂœöőòđíêêèæăàÓțęÿùÿ ÇêæćæććæććęæćæćæâȚÖĆÇìèćăâăćêéæäȚÒțțÿùÿ Æéććææćææććțæțćæâߌɰ§ŁĄ Ÿą„«žĆŚăÜŐțÿÿùÿĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖÚÿÿùÿÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸțÿùÿ ĂçćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄțÿùÿÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźÿÿùÿÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłÿÿùÿÀçäăääăęäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ”ÿÿùÿżçęățäăäùăáäăăäüă äăăäăâăăżÿÿùÿżæđăáśăäûăŸÿÿùÿœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœÿÿÿÿçățâăâăăùâăœÿÿÿÿéò ­ÉăââăâăââăûâŒÿÿÿÿéź­čòâ»ÿÿÿÿźHGGțFțEDCCęBÿAț@?ź­žúâÿáâáțâá»ÿÿÿÿź\nmmllkkjihhggffeddccNź­žâáâüáâáâțáâčÿÿÿÿźXkä‹ihhgffeeddcbaaț`Jź­žááâőáčÿÿÿÿźTgˆäˆeddcbbaa`__^ZROO1ź­žűáàüážÿÿÿÿźPdc…ä„a``__^]\RJ@ę<"ź­žàááàüáàáàáàážÿÿÿÿźL`ƒä‚țÿ\[UI>ú<"ź­žùàáàțáßážÿÿÿÿźH]ä€țäXNCś<"ź­žààáùàáàȚà·ÿÿÿÿ źEZYXX}yo>ő<"ź­žùà ßàßààĘà·ÿÿÿÿźAVUUPCò<"ź­žàßöàÛß·ÿÿÿÿź=SNCđ<"ź­žßàęßüàßàÚß·ÿÿÿÿź5Bî<"ź­žûßÿà ßàßàßÙà·ÿÿÿÿź"í<"ź­žßßàțß àßßààßßÙß·ÿÿÿÿź"í<"ź­žßßàúßàßÚŚß·ÿÿÿÿź"í<"ź­¶óÖß·ÿÿÿÿź"í<"ź­¶ôÖÚß·ÿÿÿÿźë"ź­čóćâ·ÿÿÿÿòòíáòÍï·ŐÿÿÿçïżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿűÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțńÿűÿŚòïüîïîîïïțîíìèàĐÌÙńÿűÿÖîńéçàÔÇȚÚòÿĆèŚÊæäÚÌŚßÙóÿ­èŹ ­çäȚÍĐßȚÛțőÿù©ôù©đű© ·»¶źÁàßÜȚțöÿù„óù„đű„ œßÖÇÈâàßÜæțśÿúą ôóóąóŽąąïïëóùą ŁÛÓÁÂćăàßÛîțűÿùŸ òŸŸ±é±æ±ŸïűŸ ‰±ȘąŻèæăáßÛôțùÿùœ ńœœŻŻĘŸœœïűœ ŸŰÍ»”êéæäáßÚùùÿùšńęšĘœššíűš  ŰÍ»źëêéçäáßŰüúÿùš ńšš­ç­ç­šíűš‰Č©ĄŸîìêêçäâàÖțûÿù™ÿń™ńŹ™™ç™íńù™ąÜĐż°ńïìêêçćâàÔțüÿæ™ĄȚÒÀŽôòïíêêèćăàÓțęÿšè™—‰łŹŁ±öőòđíêêèæăàÓțțÿűÿ ›±­©ŠŁŁ€ŁŁę€Ł€Ł€ĄȚÖĆÇìèćăâăćêéæäȚÒțÿÿűÿ ŠÀœœŸŸœŸŸœœțŸțœŸÆߌɰ§ŁĄ Ÿą„«žĆŚăÜŐțÿűÿĆéțćÿ¶”¶ć”ú¶”±Ű§ ™“țÿ‘“—™­ČÈÖÚÿűÿÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸțűÿ ĂçćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄțűÿÂçțäűł ćłČłČŻ­§Ą›š—ț• ș••˜œżÁÄźÿűÿÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłÿűÿÀçäăääăęäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ”ÿűÿżçțățźäŻęźțŻÿź­źŻźțŻźŻęźŻăâăăżÿűÿżæđăáśăäûăŸÿűÿœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœÿűÿœćâăâû«ÿŹ «ŹŹ«â««Ź«ŹŹ««țŹ«â«ŹțâăœÿűÿŒäüâățâÿăűâăââăâăââăûâŒÿűÿ»äûâáûâáâáîâ»ÿűÿșățâöš©üš ©š©â©š©šš©šțâá»ÿűÿșăáââáțâÿáâęáâáâáâáâáâüáâáâțáâčÿűÿșâáâűáâááâááâęáâőáčÿűÿčáàáá„țŠàț„țŠÿ„țŠáț„Š„Š„„Š„Šęážÿűÿžâáààùáÿàÿáÿàáțàÿáàüáàáàáàážÿűÿ·áßàááààáüàáààááààáùàáàțáßážÿűÿ·âȚààűąáąąàĄúąĄûąáàȚà·ÿűÿ·áĘïàßùàßàßààĘà·ÿűÿ·àÛțàßțàßàßàßęàßțàßöàÛß·ÿűÿ·ßÚàßû ßś ßàű ßàÚß·ÿűÿ·ßÚààßßàßàßààßßàßßęàûßÿàßàßàßÙà·ÿűÿ·ßŰàßàüßàőßàțß àßßààßßÙß·ÿűÿ·ßŚÚțßàńßàúßàßÚŚß·ÿűÿ·ßßÖß·ÿűÿ·ßÛáÖÚß·ÿűÿ·ââàćâ·ÿùÿȚÛ·ŐùÿÍżŸŸœŒșáżÍŃÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿùÿÔîśéèțéèéæäÚÌŚßÙòÿùÿÓîțé èééèéèèéèéțèçäȚÍĐßȚÛțôÿùÿÓíèèééèéțèéüè çćâĘËÌàßĘȚțőÿùÿŃíôè çæäăßÖÇÈâàßÜæțöÿùÿĐìùèçęèÿæ äáÛÓÁÂćăàßÛîțśÿùÿÏìçțèțçÿèÿçÿèæääßŰÎŒ»èæăáßÛôțűÿùÿÎëțçÿèțçèęçæćăȚŰÍ»”êéæäáßÚùűÿùÿÍëúçèçèçèçæćäàŰÍ»źëêéçäáßŰüùÿùÿËëæçæęçæțçæççććâÙÏœŹîìêêçäâàÖțúÿùÿËêęæçææççæçææçæćăÜĐż°ńïìêêçćâàÔțûÿùÿÉëçæçúæçæçææćâȚÒÀŽôòïíêêèćăàÓțüÿùÿÉêòæäâȚÔĂœöőòđíêêèæăàÓțęÿùÿ ÇêæćæććæććęæćæćæâȚÖĆÇìèćăâăćêéæäȚÒțțÿùÿ Æéććææćææććțæțćæâߌɰ§ŁĄ Ÿą„«žĆŚăÜŐțÿÿùÿĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖÚÿÿùÿÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸțÿùÿ ĂçćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄțÿùÿÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźÿÿùÿÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłÿÿùÿÀçäăääăęäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ”ÿÿùÿżçęățäăäùăáäăăäüă äăăäăâăăżÿÿùÿżæđăáśăäûăŸÿÿùÿœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœÿÿÿÿÁé»ățâăâăăùâăœÿÿÿÿÀéó žÄÔăââăâăââăûâŒÿÿÿÿÀòżżÀÀÁÁțÂüĂ ÄĂÄżĆÆĆȘò¶ÄËòâ»ÿÿÿÿżńĂĂÄÄĆĆțÆțÇ ÈËìïÇÊɶ§ŠńŽÄÊúâÿáâáțâá»ÿÿÿÿœńÈÈÉÉÊÊüËÿÌîâÖÒË”šŻ ï±ÄÊâáâüáâáâțáâčÿÿÿÿŒîÁf€ÓŰÚƠ̋ÉŃĐËÔÙÚÚżÌÔ”ŽïŻÄÊááâőáčÿÿÿÿ»íˆKŰäëíçĘi~Ń”ž›É­ÔĘÎŐœÎíźÄÊűáàüážÿÿÿÿș멱ÉȚńńïæÖZąž™–č›™«Č¶»ČëŹĂÊàááàüáàáàáàážÿÿÿÿčéÚŃÌÎéńîßßȟŒ„«Ż·Œ—ŒŠ°ŸéȘĂÊùàáàțáßážÿÿÿÿžèŒÍș>«ïymà̝©±”•§•ŽȘ©§Đè©ĂÊààáùàáàȚà·ÿÿÿÿ”æÎÔpNĘîłIÉÓąŠ‰”ł§°žœ‹›ąæ§ĂÉùà ßàßààĘà·ÿÿÿÿŽä»Ò­Őôûđ“œÏ‹†”˜Á‘‹„äŠĂÊàßöàÛß·ÿÿÿÿłá°ŚÂìâôïĘĆ„†‹“š±­Ć†{žá€ĂÊßàęßüàßàÚß·ÿÿÿÿČàˆšžÂ aŠ»ÍhvŠŒĄŹ•ŒČłŠàŁĂÊûßÿà ßàßàßÙà·ÿÿÿÿ±Ț}5šŻÂŻ˜vXi€‰ą«ž›Ź…Č‚ȚąĂÉßßàțß àßßààßßÙß·ÿÿÿÿŻÜzoUFDA\‘gbt”ŒŻ«Š©’–“ÜĄĂÉßßàúßàßÚŚß·ÿÿÿÿźÛxHA5HR>EJ`g‹‡…—œż§’z„ÛĄżÄóÖß·ÿÿÿÿ­ŰpPMB’‡JHMUk”€­Șˆ­Č°Ł€ŁÙ żÄôÖÚß·ÿÿÿÿŹéŰ ÆÌóćâ·ÿÿÿÿ«éŚŸï·ŐÿÿÿçïżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿúÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțïÿúÿŚòïüîïîîïïțîíìèàĐÌÙïÿúÿÖîńéçàÔÇȚÚđÿúÿÔîśéèțéèéæäÚÌŚßÙńÿúÿÓîțé èééèéèèéèéțèçäȚÍĐßȚÛțóÿúÿÓíèèééèéțèéüè çćâĘËÌàßĘȚțôÿúÿŃíôè çæäăßÖÇÈâàßÜæțőÿúÿĐìùèçęèÿæ äáÛÓÁÂćăàßÛîțöÿúÿÏìçțèțçÿèÿçÿèæääßŰÎŒ»èæăáßÛôțśÿúÿÎëțçÿèțçèęçæćăȚŰÍ»”êéæäáßÚùśÿúÿÍëúçèçèçèçæćäàŰÍ»źëêéçäáßŰüűÿúÿËëæçæęçæțçæççććâÙÏœŹîìêêçäâàÖțùÿúÿËêęæçææççæçææçæćăÜĐż°ńïìêêçćâàÔțúÿúÿÉëçæçúæçæçææćâȚÒÀŽôòïíêêèćăàÓțûÿúÿÉêòæäâȚÔĂœöőòđíêêèæăàÓțüÿúÿ ÇêæćæććæććęæćæćæâȚÖĆÇìèćăâăćêéæäȚÒțęÿúÿ Æéććææćææććțæțćæâߌɰ§ŁĄ Ÿą„«žĆŚăÜŐțțÿúÿĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖÚțÿúÿÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸțÿÿúÿ ĂçćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄțÿÿúÿÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźțÿúÿÁçț䣚°äăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłțÿúÿÀçäăäŁëŻțäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ”țÿúÿżçțăŁâȘčÉÎùăáäăăäüăäăăäăâăăżțÿúÿżæțăŁÓ¶±ÉÌùăáśăäûăŸțÿúÿ œćăâăŁÒÎȘŸÊțăâęăÿâÿăâăăâăâüăÿâăœțÿúÿ œćâăâŁÒÏÍ­¶ÖăăüâÿățâăâăăùâăœțÿúÿŒäțâŁÒÏÏĐč°ÚűâăââăâăââăûâŒțÿúÿ»äțâŁÒțÏÔDZŃâáâáîâ»țÿúÿșățâŁÒțÏÛïÇČÌàęâÿáúâÿáâáțâá»țÿúÿșăáââŁŃŹÆŚêîđË°ÉááâáâáâáâüáâáâțáâčțÿúÿșâáâáŁŃššœéìîîÆČÊàáâęáâőáčțÿúÿ čáàááŁŃŹČ«ŻâțìłŒËàőáàüážțÿúÿžâáààŁŃŹ””Ż©ĘêáÍȘÆÎáțàÿáàüáàáàáàážțÿúÿ·áßàáŁŃŹ¶Æșœ©ÛÒÏž¶ÈŰàáùàáàțáßážțÿúÿ·âȚààŁĐŹ”ÈÉÖŸȘÌÍżȘÆÈßțàáùàáàȚà·țÿúÿ·áĘààŁĐŹ”ÇÉàÚč±»·ȘÀÇŚßùàßàßààĘà·țÿúÿ·àÛààŁÏŹ”ÇÉàßÚš”°ŹșÆĐààßöàÛß·țÿûÿçźš©§„ŁÎŹŽÇÉßàĘŠČš±žÆÎàßàęßüàßàÚß·țÿęÿô¶ŻÉȚĘÌÉÇÇŹŽÇÉààËȘ«°łŸÇÔàûßÿàßàßàßÙà·țÿțÿíȘÉőțöäÆÇĂȘŽÆÉà߯šŠÂŽÄÆÜțßàțß àßßààßßÙß·țÿÿÿöȘÎüöêÂÂÁ©ŽÆÉßĐŠ§»ÀžÆÌęßàúßàßÚŚß·țÿÿÿÀžćęöőÒÀ»©ŻżÁÖ«€”ż±œÀÔńÖß·țÿÿÿšÁÓőööđÎÁÁ­ȘźżÀŸŁžż»șżÏńÖÚß·țÿÿÿŠÁÀÇŃËÁÀÁ”Ș¶čËÇ„ÁÎËĂËŚïćâ·țÿÿÿ”¶ÁęÀÁż°Š›šŁ§§ŻŻ§Š§źì·Őÿÿÿÿ ńšłŸÁÀ»Č§°șțż»œæżÍÿÿțÿűΫŠ§«ČÄæĘÿŃÿŃÿűÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțńÿűÿŚòïüîïîîïïțîíìèàĐÌÙńÿűÿÖîńéçàÔÇȚÚòÿűÿÔîśéèțéèéæäÚÌŚßÙóÿűÿÓîțé èééèéèèéèéțèçäȚÍĐßȚÛțőÿűÿÓíèèééèéțèéüè çćâĘËÌàßĘȚțöÿűÿŃíôè çæäăßÖÇÈâàßÜæțśÿűÿĐìùèçęèÿæ äáÛÓÁÂćăàßÛîțűÿűÿÏìçțèțçÿèÿçÿèæääßŰÎŒ»èæăáßÛôțùÿűÿÎëțçÿèțçèęçæćăȚŰÍ»”êéæäáßÚùùÿűÿÍëúçèçèçèçæćäàŰÍ»źëêéçäáßŰüúÿűÿËëæçæęçæțçæççććâÙÏœŹîìêêçäâàÖțûÿűÿËêęæçææççæçææçæćăÜĐż°ńïìêêçćâàÔțüÿűÿÉëçæçúæçæçææćâȚÒÀŽôòïíêêèćăàÓțęÿűÿÉêòæäâȚÔĂœöőòđíêêèæăàÓțțÿűÿ ÇêæćæććæććęæćæćæâȚÖĆÇìèćăâăćêéæäȚÒțÿÿűÿ Æéććææćææććțæțćæâߌɰ§ŁĄ Ÿą„«žĆŚăÜŐțÿűÿĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖÚÿűÿÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸțűÿ ĂçćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄțűÿÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźÿűÿ¶ÆöĆțä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłÿÿę™őàę™ĆțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ”ÿÿEțiőÎțiEĆûăáäăăäüă äăăäăâăăżÿÿDÿÿhXVűWXh­ăD­ÏüăáśăäûăŸÿÿCÿÿfőÎf­ăC­ÁâęăÿâÿăâăăâăâüăÿâăœÿÿAțeúÍÌÍÍÌÍțeA­Âüâÿățâăâăăùâăœÿÿ@țcęËÌęËÌËÌțc@­ÂùâăââăâăââăûâŒÿÿ?ÿÿbÉÉÊüÉÊțÉ b­â?­Ââáâáîâ»ÿÿ>ÿÿ`ÈüÇÈęÇÈ`­â>­Áâáęâÿáúâÿáâáțâá»ÿÿ=ț^ÿĆÄęĆÄęĆț^ =­Áááâáâáâáâáâüáâáâțáâčÿÿ<\\]Âψ ]\\<­Âááâááâęáâőáčÿÿ:ÿÿZțÁÿÀțÁ ÀÁÁÀZ­à:­Áàńáàüážÿÿ9ÿÿXûżÀüż X­á9­Áàááààáțàÿáàüáàáàáàážÿÿ8țWőZțW 8­Ááààááààáùàáàțáßážÿÿ7țUőžțU7­ÁáűàáùàáàȚà·ÿÿ6ÿÿRę·¶ț·ț¶·R­à6­ÁúàßùàßàßààĘà·ÿÿ4ÿÿP”Ž”Žú”ŽP­ß4­ÁßęàßțàßöàÛß·ÿÿ2MNNłłČČțłȳȳČNNM2­ÁàßßàßßààßàęßüàßàÚß·ÿÿ1KLL°±±ű°ÿLK1­ÁßàßßęàûßÿàßàßàßÙà·ÿÿ/ÿÿIùźÿ­ÿźI­ß/­Áśßàțß àßßààßßÙß·ÿÿ.ÿÿHù« Ź««ŹH­ß.­ÁśßàúßàßÚŚß·ÿÿ,țEę©Șú©țE,­œëÖß·ÿÿ+BCBț§ÿš §šš§š§§BCB+­œìÖÚß·ÿÿ*ÿÿAőDA­ć*­Áëćâ·ÿÿ)ÿÿ?őš?··)ç·Őÿę"ő‘ț"'çżÍÍżŸŸœŒșóżÍçÿŃÿŃÿűÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțńÿűÿŚòïüîïîîïïțîíìèàĐÌÙńÿűÿÖîńéçàÔÇȚÚòÿĆèŚÊæäÚÌŚßÙóÿ­èŹ ­çäȚÍĐßȚÛțőÿő©óț©șëű© ßâĘËÌàßĘȚțöÿő„óț„ê¶ű„ œßÖÇÈâàßÜæțśÿùąòŽéâòòąțòűą ŁÛÓÁÂćăàßÛîțűÿùŸò韟òțŸòśŸ  ŰÎŒ»èæăáßÛôțùÿùœèŻœœńțœńśœ Š±« ©êéæäáßÚùùÿùšńțšńțšńśš  ŰÍ»źëêéçäáßŰüúÿùšńțšńțšńśšĄÙÏœŹîìêêçäâàÖțûÿù™ńț™ÿńÿ™ńś™ŠŽ­ąŁńïìêêçćâàÔțüÿæ™ĄȚÒÀŽôòïíêêèćăàÓțęÿšè™›ĄȚÔĂœöőòđíêêèæăàÓțțÿűÿ&›±­©ŠŠ‹‹ŠŠ‹Š‹Š‹Š‹‹‰”Ź§șèćâăâăćêéæäȚÒțÿÿűÿ ŠÀœœŸŸœŸŸœœțŸțœŸÆߌɰ§ŁĄ Ÿą„«žĆŚăÜŐțÿűÿĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖÚÿűÿÄèäćć””¶ț”ÿ¶ț”ÿ¶ŽàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸțűÿ ĂçćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄțűÿÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźÿűÿÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłÿűÿÀçäăäô‹ Š‰‡„‚‚€ƒü„ŐÖŚ”ÿűÿżçęățäăäùăáäăăäüă äăăäăâăăżÿűÿżæđăáśăäûăŸÿűÿ œćăâăźźŹŹźûŹźŹŹ«țźÿŹăâăâüăÿâăœÿűÿ œćâăâăăââăââăăüâÿățâăâăăùâăœÿűÿŒäüâățâÿăűâăââăâăââăûâŒÿűÿ»äțâ©šő©ïâ»ÿűÿșăűâáâáâáęâÿáúâÿáâáțâá»ÿűÿșăáââáțâÿáâęáâáâáâáâáâüáâáâțáâčÿűÿșâáâűáâááâááâęáâőáčÿűÿčáàááćŽęážÿűÿžâáààùáÿàÿáÿàáțàÿáàüáàáàáàážÿűÿ·áßàááààáüàáààááààáùàáàțáßážÿűÿ·âȚààąĄĄțąțĄúąĄąąĄąúàáàȚà·ÿűÿ·áĘïàßùàßàßààĘà·ÿűÿ·àÛțàßțàßàßàßęàßțàßöàÛß·ÿűÿ·ßÚàßôžżßààßàęßüàßàÚß·ÿűÿ·ßÚààßßàßàßààßßàßßęàûßÿàßàßàßÙà·ÿűÿ·ßŰàßàüßàőßàțß àßßààßßÙß·ÿűÿ·ßŚÚțßàńßàúßàßÚŚß·ÿűÿ·ßßÖß·ÿűÿ·ßÛáÖÚß·ÿűÿ·ââàćâ·ÿùÿȚÛ·ŐùÿÍżŸŸœŒșáżÍŃÿŃÿŃÿűÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțńÿűÿŚòïüîïîîïïțîíìèàĐÌÙńÿűÿÖîńéçàÔÇȚÚòÿĄè§±æäÚÌŚßÙóÿwûvwțvwöv wvwwçäȚÍĐßȚÛțőÿńsíțsíûs ßâĘËÌàßĘȚțöÿnonoonnonnonnoonínníęn onnœßÖÇÈâàßÜæțśÿûjęìkjjììjìjțìûj ŁÛÓÁÂćăàßÛîțűÿgfęg ìggfìgìgfììggìüghg ŰÎŒ»èæăáßÛôțùÿûbęțbębëțbëcbëbcüb ŸŰÍ»”êéæäáßÚùùÿûbëțbëbëțbëcbëbcüb  ŰÍ»źëêéçäáßŰüúÿÿ_^ț_ęëÿ_ë^^ëë__ë__^_^_^ĄÙÏœŹîìêêçäâàÖțûÿ\]]\[]ë\]ę\ÿë]ë\\ëę\]\\ąÜĐż°ńïìêêçćâàÔțüÿț[YZYÿZü[Z[[Zû[Z[[ZĄȚÒÀŽôòïíêêèćăàÓțęÿqYYXYXYXïYiĄȚÔĂœöőòđíêêèæăàÓțțÿűÿ ›±­©ŠŁŁ€ŁŁę€Ł€Ł™˜ȚÖĆÇìèćăâăćêéæäȚÒțÿÿűÿ ŠÀœœŸŸœŸŸœœțŸÿœ˜loËŚÉ°§ŁĄ Ÿą„«žĆŚăÜŐțÿűÿĆéóć†y~ŠŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖÚÿűÿÄèäüćäććäęć~€‘—ÚĐĆșČźŹŹ­ŻŻČł±°źŽŸęűÿĂçćääćäćääććäćää}‰ąÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄúűÿÂçőä ćä…{”ÜŐÌĂÂœûșŒœżÁÄźęűÿÁçțäÿăÿäăûä xyŃĘŚÏÈÈÂÈÇęËÿÍÊÌÏłÿűÿÀçäăääăęäăäță±wzàȚÙÓŐŃÈÌËŃŃÏÏĐĐÒÓÔ”ÿűÿżçęățäăäüă Úw€áàÚŐŰÔŐțÔ ŰŚÖŚÙŐŚÔ”ÿűÿżæòă wyáàĘÙŰÔÙŰŚțÚÙŰŰŚŚŰ”ÿűÿœćăâăâțăâęăâăâwwßàßÜÙŚÚÙÙŚŰŰŚÖŰÖŰÙ”ÿűÿœćâăâăăââăââăăââ„xvâàßĘÜțĘÿÜÛÚÙÙŚŐÔ±ÿűÿŒäüâățâÿăț₃‰wàááàßáààßßàȚĘÜÚÙŚČÿűÿ»äûâáûâÉwžÒw‡âęáüàÿßȚĘÚÙČÿűÿșăűâ áâáâˆ|Țâ—v„üâÿáÿàáțßĘÙłÿűÿșăáââáțâÿá âááŰx”áâáwŁáâüáâáâàßȚȚ”ÿűÿșâáâűáâxŚááâ߁vÜááȚȚüáÿàß·ÿűÿčáàüáțàÿáŚyŒęáÍ«~ûvz€Ńțáà·ÿűÿžâáààùáŒyŚÛź‡wvvwyxvx‘«ą”z‚àáàážÿűÿ·áßàááààáțà Ïw‚„vw}•ČÎțà ș‚vw}‚~{ááßážÿűÿ·âȚûàáàÖ{vy‹”ĘûàáààÒ§‡}ƒĆáàȚà·ÿűÿ·áĘûàߝywĄúàßùàßàßààĘà·ÿűÿ·àÛțàßàÇ{z|‚àßęàßțàßöàÛß·ÿűÿ·ßÚàßàß·v}xÒßàßßàßßààßàęßüàßàÚß·ÿűÿ·ßÚààßÂvyčwŠàßßàßßęàûßÿàßàßàßÙà·ÿűÿ ·ßŰàßàyv·xŒàőßàțß àßßààßßÙß·ÿűÿ ·ßŚÚßÒvƒyŠóßàúßàßÚŚß·ÿűÿ·ßțÖÔ}ĄæÖß·ÿűÿ·ßÛáÖÚß·ÿűÿ·ââàćâ·ÿùÿȚÛ·ŐùÿÍżŸŸœŒșáżÍŃÿŃÿŃÿŃÿûÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțîÿûÿŚòïüîïîîïïțîíìèàĐÌÙîÿûÿÖîńéçàÔÇȚÚïÿûÿÔîśéèțéèéæäÚÌŚßÙđÿûÿÓîțé èééèéèèéèéțèçäȚÍĐßȚÛțòÿûÿÓíèèééèéțèéüè çćâĘËÌàßĘȚțóÿûÿŃíôè çæäăßÖÇÈâàßÜæțôÿûÿĐìùèçęèÿæ äáÛÓÁÂćăàßÛîțőÿûÿÏìçțèțçÿèÿçÿèæääßŰÎŒ»èæăáßÛôțöÿûÿÎëțçÿèțçèęçæćăȚŰÍ»”êéæäáßÚùöÿûÿÍëúçèçèçèçæćäàŰÍ»źëêéçäáßŰüśÿûÿËëæçæęçæțçæççććâÙÏœŹîìêêçäâàÖțűÿûÿËêęæçææççæçææçæćăÜĐż°ńïìêêçćâàÔțùÿûÿÉëçæçțæț‘ț’ÿ‘ÿȚÒÀŽôòïíêêèćăàÓțúÿûÿÉêûæÿ‘ț“’‘‘‘ȚÔĂœöőòđíêêèæăàÓțûÿûÿ Çêæćæćć揗ățæćæܑȚÖĆÇìèćăâăćêéæäȚÒțüÿûÿ Æéććææć搝ćțæÿć⑎ߦɯ§Ł ŸŸą„«žĆŚăÜŐțęÿûÿĆéûć’ûć⏎àŰ«›–‹’šȘ­źŻ­ČÈÖÚęÿûÿÄèäüć’ćäęć⏎àÚą›˜•’‹Œ©ŻŻČł±°źŽŸțțÿûÿ&Ăçćääćä撜ććäćääᏎâÛŁœ»¶Ż–‹©­°°Ž””ŽŽĄțțÿûÿÂçûä’›ęäćäćĆÂáÜÄŒĂÂœą“¶țșŒœżÁÄźęÿûÿÁçțäÿă䐗áüä ăäâáĘÚÔÒÎɱ ÊțÏŃÒÎÌÏłęÿûÿ%Àçäăääă䑐™œœ››Ò㛖àȚ«§ÓÎŹ„ĄĐŰŚŚŰŚŐÖŚ”ęÿûÿżçęăÿäÿ‘țÍ⏏áä­­àŰ°°Čàäăăäăâăăżęÿûÿżæđă áăććăăäćäăăäûăŸęÿûÿœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœęÿûÿ œćâăâăăââÖüŃ ĘâÒÒăăÄÄàĘțĂĆúâăœęÿûÿŒäüâăâțŃÿĐÏÜâÏĐââÀÀßÚÁÀÁÁâăûâŒęÿûÿ»äûâáĐŃęâáâáűâÀÁùâ»ęÿûÿșăúâÿĐáâáâáęâÿáüâÿÀÿáâáțâá»ęÿûÿșăáââáțâÿĐâęáâÒŃáâĂĂáâááÀÀáâáâțáâčęÿûÿșâáâüáÿŃÿáâááâĐĐâáÀÀáâááÀÀùáčęÿûÿčáàüáàĐĐțáàááŃĐááÀÀęáÿÀÿáàüážęÿûÿžâáààęá ŃĐàáààááĐĐáàÀÁûÀÿáàáàáàážęÿûÿ ·áßàááààáĐĐÔęÖÔĐĐààțÀÄĂțÀàáàțáßážęÿûÿ·âȚûàęĐțŃțĐüàáùàáàȚà·ęÿûÿ·áĘïàßùàßàßààĘà·ęÿûÿ·àÛțàßțàßàßàßęàßțàßöàÛß·ęÿûÿ·ßÚàßàßàßàßßàßàßßàßßààßàęßüàßàÚß·ęÿûÿ·ßÚààßßàßàßààßßàßßęàûßÿàßàßàßÙà·ęÿûÿ·ßŰàßàüßàőßàțß àßßààßßÙß·ęÿûÿ·ßŚÚțßàńßàúßàßÚŚß·ęÿûÿ·ßßÖß·ęÿûÿ·ßÛáÖÚß·ęÿûÿ·ââàćâ·ęÿüÿȚÛ·ŐțÿüÿÍżŸŸœŒșáżÍțÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿçèæäÚÌŚßÙòÿçÍçäȚÍĐßȚÛțôÿțÉÿüÉÿśÉÿüÉ ßâĘËÌàßĘȚțőÿțÆÿüÆÿśÆÿüÆ œßÖÇÈâàßÜæțöÿțÄÿŃùÿŃțÿ ÄÿŃùÿÿùŃÄÿüÄ ŁÛÓÁÂćăàßÛîțśÿțÁÿűÏÁűÁÿÁÁÿűÏÿÁÁűÁÿüÁ  ŰÎŒ»èæăáßÛôțűÿțœÿËœœÿœÿœœÿËœÿœœÿœÿüœ ŸŰÍ»”êéæäáßÚùűÿțœÿțœ ÿœÿœœÿœœÿœœÿœÿüœ  ŰÍ»źëêéçäáßŰüùÿțșÿțș ÿșÿșșÿșșÿșșÿșÿüșĄÙÏœŹîìêêçäâàÖțúÿțčÿțč ÿčÿÿčÿččÿččÿčÿü耹ŁąšńïìêêçćâàÔțûÿ瞃§ą– ôòïíêêèćăàÓțüÿ瞉Ž­ŁŻöőòđíêêèæăàÓțęÿùÿ$±źŹȘ„Ł€Łą‰‰Œ‰‹‹Š¶±šŒéćâÜȚăćêéæäȚÒțțÿùÿ'ŠÀœœŸŸœŸŸ™”Ł ›‡Łž §¶Ż©š•’Ž„Œ„«žĆŚăÜŐțÿÿùÿĆéûć­ÁŸ±œ»©ÎĐÁč°š Ž•”’„–­źŻ­ČÈÖÚÿÿùÿÄèäęć Ś€ÀœÂÇÍÜêśśëÏŽ©Ą“•˜–”‚šČł±°źŽŸțÿùÿ'Ăçćääćä°ŒŒżÆÏáŸőôêă»Șš ™””“Šˆ°Ž””ŽŽĄțÿùÿÂçęä!ÚȘżœĂÊŐŠżĐśöêáÁ°Ą—§|~‰Šš„­ŒœżÁÄźÿÿùÿÁçțä"ăÁŒșŸÄ©çőùűśìȚȶšœ‘€€•©­žĄŃÒÎÌÏłÿÿùÿ'Àçäăääź”· €àïóśöőíĘÌ·Šœ··ŽŽ±±«˜ÒŚŐÖŚ”ÿÿùÿżçęă!šź·¶čÆÓæíóôńçÛÏÀŽÇÎÈĂżŒșž›ÎăâăăżÿÿùÿżæęăŠłčżŒÄÏÚăéêèáÖËŸ»ĐÌÈĂżŒșșšÀáțăŸÿÿùÿ'œćăâă⊷Ș»ŒÁÊÓÚàáßÙÏĆșŒÏËÇÂż»șș™čßââăœÿÿùÿ'œćâăâ㣷ŽŹșŸÄËŃŐÖÓÎÇœ”ČÇÉĆÁœ»ș蘷ÜáâăœÿÿùÿŒäęâ!Š”·žč»ŸĂÇÉËÈĂœ·±ź„ÀČ©ș»ș”čÛáââŒÿÿùÿ»äęâÿł”··žș»ŸÀÀœș”ČŻŻ­ĄŁ§Čșș±„ŒÜáââ»ÿÿùÿșăęâÏ€łŽ”ę¶ÿ·Žł±ûŻ ź­čș§ŻÁĘáâá»ÿÿùÿ șăáââá☱ČČțłÿȱ°üŻÿź­Ź¶čž·ÊĘááâčÿÿùÿșâáâțáÀŸț°ÿ±ÿ°üŻ źŹȘ©š©șșȘȘ»ÔȚțáčÿÿùÿčáàüᙩùŻ­ŹȘš„€€„šœ¶ž”ÂÚßțážÿÿùÿžâáààțáѐ©­ęź­Șš„ą žžĄŠźœŁ±žÏȚßáàážÿÿùÿ'·áßàááàà័ŁȘšŠ€ąĄ š™™Ÿ§­Š§źłĆÙàááßážÿÿùÿ·âȚúà»—–§ŠąŸœ› €Ș„˜°ČœŚĘàáàȚà·ÿÿùÿ·áĘúàĘŒ„‘–ą©š§šȘ©ž“Š±±œŚÜàßààĘà·ÿÿùÿ·àÛțàßțàÿß Ä±Șœ‘““žȘț±ÄÚĘüàÛß·ÿÿùÿ·ßÚàßàßàßàßßàÒż”ČČ°°±±°±±ŒŃÛȚęàßàÚß·ÿÿùÿ'·ßÚààßßàßàßààĘÙÒÇżœ””ŒœÈÔÚÜĘààßàßàßÙà·ÿÿùÿ·ßŰàßàüßàțßĘÛŰęŚÙÛĘȚȚßàßßààßßÙß·ÿÿùÿ·ßŚÚțßàűßûȚßàúßàßÚŚß·ÿÿùÿ·ßßÖß·ÿÿùÿ·ßÛáÖÚß·ÿÿùÿ·ââàćâ·ÿÿúÿȚÛ·ŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿÿ„ꀎæäÚÌŚßÙòÿÿț}ÿ~}~}~~}ț~}~ę}ę~ }çäȚÍĐßȚÛțôÿÿè{ ßâßÔÌàßĘȚțőÿÿțwxțwțxwxțwûxęw œßŰÎÈâàßÜæțöÿÿętßìߏtßìßttßìߏęt ŁÛÔÈÂćăàßÛîțśÿÿęrȚrrŒȚrȚțrȚrȚțrȚęr  ŰĐÄ»èæăáßÛôțűÿÿonnoëüo ‹ëĘoonŠȚë‹ęo nŸŰÏĂ”êéæäáßÚùűÿÿonnoëúoŠȚonno‹Ț‹țon ŰÏÄźëêéçäáßŰüùÿ(ÿmmllĘmmˆĘmĘmm‰ĘlĘlmˆĘlmlmĄÙŃĆŹîìêêçäâàÖțúÿÿęj‡Ęëʇj‡ëëʇj‡ĘëëüjąÜÒÇ°ńïìêêçćâàÔțûÿÿűiÿjôijĄȚÔÉŽôòïíêêèćăàÓțüÿÿ~śhgőhpĄȚÖÊœöőòđíêêèæăàÓțęÿùÿ ±źŹȘ„Ł€ŁŁę€Ł€Ł€ĄȚŚÊÇìèćăâăćêéæäȚÒțțÿùÿ ŠÀœœŸŸœŸŸœœțŸțœŸÆßŚÌ°§ŁĄ Ÿą„«žĆŚăÜŐțÿÿùÿĆéńćăàŰž‹¶źȘšš©Ș­źŻ­ČÈÖÚÿÿùÿÄèäüćäććäûćâàښžșČźŹŹ­ŻŻČł±°źŽŸțÿùÿ ĂçćääćäćääććäćțäćăâŐŸŒ¶Żę­ÿ°Ž””ŽŽĄțÿùÿÂçőä ćäćäâ᳑ÌĂÂœûșŒœżÁÄźÿÿùÿÁçțäÿăÿäățäȚääăäâᕶÔÒÈÉÍÍęÏŃÒÎÌÏłÿÿùÿÀçäăääăęäŃ žăăäăăωÓÓՊ’ÀĐŐŰŚŚŰŚŐÖŚ”ÿÿùÿżçęăț䌊‡ŹĘüă«Źăăäʙ‡ŹŚäăăäăâăăżÿÿùÿżæü㌏‡ŠŃûăʌŃüăē‡ŹŰûăŸÿÿùÿ œćăâăÜȇ ĐęăâțăŸ˜âăăâăăâăŸ“‡ŠŃăââăœÿÿùÿ œćâăⓇ„âăââăăę♟ățâăâăăâЍ‡ŸțâăœÿÿùÿŒäțâÖ«‡žâăăęâЇÜââăââă⌫‡ŠĐüâŒÿÿùÿ»äüâܱ‡Ÿțâáâ««ûâÜ«‡„Đúâ»ÿÿùÿșăúâÜ«‡“Ïâá܍Đâááâ⟇ŸĐâááâáțâá»ÿÿùÿșăáââáțâÿáÖ„œá៙âáâáâá„Éęáâáâțáâčÿÿùÿșâáâűáâáá™ĂáâęáâőáčÿÿùÿčáàüáțàțáàəóáàüážÿÿùÿžâáààùáÿàÛáààáțàÿáàüáàáàáàážÿÿùÿ·áßàááààáüàáààááààáùàáàțáßážÿÿùÿ·âȚûàáęàáűàáùàáàȚà·ÿÿùÿ·áĘïàßùà ßàßààĘà·ÿÿùÿ·àÛțàßțàßàßàßęàßțàßöàÛß·ÿÿùÿ·ßÚàßàßàßàßßàßàßßàßßààßàęßüàßàÚß·ÿÿùÿ·ßÚààßßàßàßààßßàßßęàûßÿà ßàßàßÙà·ÿÿùÿ·ßŰàßàüßàőßàțß àßßààßßÙß·ÿÿùÿ·ßŚÚțßàńßàúßàßÚŚß·ÿÿùÿ·ßßÖß·ÿÿùÿ·ßÛáÖÚß·ÿÿùÿ·ââàćâ·ÿÿúÿȚÛ·ŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿÿœê™­æäÚÌŚßÙòÿÿțoÿpopoppoțpopęoęp oçäȚÍĐßȚÛțôÿÿśmíóm ȚâĘËÌàßĘȚțőÿÿțijțițjijțiûjęi čßÖÇÈâàßÜæțöÿÿűfìĘffƒĘìíùf ÛÓÁÂćăàßÛîțśÿÿúd cddìddĘddcùd šŰÎŒ»èæăáßÛôțűÿÿa``úaìa`ÜÜ`úa `™ŰÍ»”êéæäáßÚùűÿÿ__ț^ÿ_ÿ^_ëț_~ÜÜ^_ț^_^_šŰÍ»źëêéçäáßŰüùÿÿ__ț^ÿ_ÿ^_ëę_^Ü^_ț^_^_›ÙÏœŹîìêêçäâàÖțúÿÿę\ÿ]ę\Û\\ëëÛ{ù\œÜĐż°ńïìêêçćâàÔțûÿÿù[ëÛ{ô[\›ȚÒÀŽôòïíêêèćăàÓțüÿÿrśZYőZd›ȚÔĂœöőòđíêêèæăàÓțęÿùÿ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÒțțÿùÿ ŁŒččșșčșșč诏ü‰Ÿœ˜‘Œ‰‡„„†Š€žĆŚăÜŐțÿÿùÿĆéùćÖȘÖüćăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖÚÿÿùÿÄèäüćäć±ÖûćâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸțÿùÿ ĂçćääćäćääŁćäćțä ćăâÛÓÇŒ¶Ż‚ț­ „°Ž””ŽŽĄțÿùÿÂçùäŁțä ćäćäâáÜŐÌĂÂœ‰țș ‰șŒœżÁÄźÿÿùÿÁçțäÿăÿäăŁääüŁąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłÿÿùÿÀçäăääățäŁăäțăäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ”ÿÿùÿżçęățäăŁùăáäăăäăăŁăăäăăäăâăăżÿÿùÿżæùăŁăăûŁąęŁÿăŁțăäûăŸÿÿùÿœćăâăâțăâŁțăâęăÿâÿăâăăŁăâüăÿâăœÿÿùÿ œćâăâăăââăŁâăăüâÿățâăâŁăùâăœÿÿùÿŒäüâăââŁăăöŁâăŁăââăûâŒÿÿùÿ»äûâáâŁęâáâáù⣜â»ÿÿùÿșăùâąáâáâáęâÿáęâąââááâáțâá»ÿÿùÿșăáââáțâáŁâáöŁâáŁțáâáâțáâčÿÿùÿșâáâûá ŁááâááâááâęáâᣜáčÿÿùÿčáàüáÿàŁțáàöáŁęáàüážÿÿùÿžâáààüá ŁááààááààáțàÿáàŁęáàáàáàážÿÿùÿ·áßàááôŁąțŁțàŁțàáàțáßážÿÿùÿ·âȚțàŁààáęàáúàŁàáàŁûàáàȚà·ÿÿùÿ·áĘțàŁóàߣțàŁțà ßàßààĘà·ÿÿùÿ·àÛțàȘÒààßàßàßęàßààȘßààŁùàÛß·ÿÿùÿ·ßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßüàßàÚß·ÿÿùÿ·ßÚààßßÒ©òąŁȘÒßààßàßàßÙà·ÿÿùÿ·ßŰàßàüßàőßàțß àßßààßßÙß·ÿÿùÿ·ßŚÚțßàńßàúßàßÚŚß·ÿÿùÿ·ßßÖß·ÿÿùÿ·ßÛáÖÚß·ÿÿùÿ·ââàćâ·ÿÿúÿȚÛ·ŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿÿœê™­æäÚÌŚßÙòÿÿțoÿpopoppoțpopęoęp oçäȚÍĐßȚÛțôÿÿńmíùm ȚâĘËÌàßĘȚțőÿÿțijțițjijțijíęjęi čßÖÇÈâàßÜæțöÿÿśfțìê›fíùf ÛÓÁÂćăàßÛîțśÿÿúdcddìțdëdìùd šŰÎŒ»èæăáßÛôțűÿÿa``úaìa`aì`ìúa `™ŰÍ»”êéæäáßÚùűÿÿ__ț^ÿ_ÿ^_ëț_ć^ì^_ț^_^_šŰÍ»źëêéçäáßŰüùÿÿ__ț^ÿ_ÿ^ _ëììé–^ì^_ț^_^_›ÙÏœŹîìêêçäâàÖțúÿÿę\ÿ]ę\ë\\]]\ëù\œÜĐż°ńïìêêçćâàÔțûÿÿű[\ëô[\›ȚÒÀŽôòïíêêèćăàÓțüÿÿrśZYőZd›ȚÔĂœöőòđíêêèæăàÓțęÿùÿ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÒțțÿùÿ ŁŒččșșčșșč诏ü‰Ÿœ˜‘Œ‰‡„„†Š€žĆŚăÜŐțÿÿùÿĆéùćÖȘÖüćăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖÚÿÿùÿÄèäüćäć±ÖûćâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸțÿùÿ ĂçćääćäćääŁćäćțä ćăâÛÓÇŒ¶Ż‚ț­ „°Ž””ŽŽĄțÿùÿÂçùäŁțä ćäćäâáÜŐÌĂÂœ‰țș ‰șŒœżÁÄźÿÿùÿÁçțäÿăÿäăŁääüŁąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłÿÿùÿÀçäăääățäŁăäțăäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ”ÿÿùÿżçęățäăŁùăáäăăäăăŁăăäăăäăâăăżÿÿùÿżæùăŁăăûŁąęŁÿăŁțăäûăŸÿÿùÿœćăâăâțăâŁțăâęăÿâÿăâăăŁăâüăÿâăœÿÿùÿ œćâăâăăââăŁâăăüâÿățâăâŁăùâăœÿÿùÿŒäüâăââŁăăöŁâăŁăââăûâŒÿÿùÿ»äûâáâŁęâáâáù⣜â»ÿÿùÿșăùâąáâáâáęâÿáęâąââááâáțâá»ÿÿùÿșăáââáțâáŁâáöŁâáŁțáâáâțáâčÿÿùÿșâáâûá ŁááâááâááâęáâᣜáčÿÿùÿčáàüáÿàŁțáàöáŁęáàüážÿÿùÿžâáààüá ŁááààááààáțàÿáàŁęáàáàáàážÿÿùÿ·áßàááôŁąțŁțàŁțàáàțáßážÿÿùÿ·âȚțàŁààáęàáúàŁàáàŁûàáàȚà·ÿÿùÿ·áĘțàŁóàߣțàŁțà ßàßààĘà·ÿÿùÿ·àÛțàȘÒààßàßàßęàßààȘßààŁùàÛß·ÿÿùÿ·ßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßüàßàÚß·ÿÿùÿ·ßÚààßßÒ©òąŁȘÒßààßàßàßÙà·ÿÿùÿ·ßŰàßàüßàőßàțß àßßààßßÙß·ÿÿùÿ·ßŚÚțßàńßàúßàßÚŚß·ÿÿùÿ·ßßÖß·ÿÿùÿ·ßÛáÖÚß·ÿÿùÿ·ââàćâ·ÿÿúÿȚÛ·ŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿÿœê™­æäÚÌŚßÙòÿÿțoÿpopoppoțpopęoęp oçäȚÍĐßȚÛțôÿÿèm ȚâĘËÌàßĘȚțőÿÿțijțițjijțiûjęi čßÖÇÈâàßÜæțöÿÿùfțęìˆfìˆgfęûf ÛÓÁÂćăàßÛîțśÿÿúdcęțdìdì†c†ìûd šŰÎŒ»èæăáßÛôțűÿÿa``üaęțaęa„ë`ë„üa `™ŰÍ»”êéæäáßÚùűÿÿ__ț^ÿ_ ^ü_^_ü__ë‚ë_ț^_^_šŰÍ»źëêéçäáßŰüùÿÿ__ț^ÿ_ ^ÿüüë‚__í_ț^_^_›ÙÏœŹîìêêçäâàÖțúÿÿę\ÿ]ÿ\üę\ÿ]\ëù\œÜĐż°ńïìêêçćâàÔțûÿÿù[ü\\ę[êú[\›ȚÒÀŽôòïíêêèćăàÓțüÿÿrśZYőZd›ȚÔĂœöőòđíêêèæăàÓțęÿùÿ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÒțțÿùÿ ŁŒččșșčșșč诏ü‰Ÿœ˜‘Œ‰‡„„†Š€žĆŚăÜŐțÿÿùÿĆéùćÖȘÖüćăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖÚÿÿùÿÄèäüćäć±ÖûćâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸțÿùÿ ĂçćääćäćääŁćäćțä ćăâÛÓÇŒ¶Ż‚ț­ „°Ž””ŽŽĄțÿùÿÂçùäŁțä ćäćäâáÜŐÌĂÂœ‰țș ‰șŒœżÁÄźÿÿùÿÁçțäÿăÿäăŁääüŁąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłÿÿùÿÀçäăääățäŁăäțăäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ”ÿÿùÿżçęățäăŁùăáäăăäăăŁăăäăăäăâăăżÿÿùÿżæùăŁăăûŁąęŁÿăŁțăäûăŸÿÿùÿœćăâăâțăâŁțăâęăÿâÿăâăăŁăâüăÿâăœÿÿùÿ œćâăâăăââăŁâăăüâÿățâăâŁăùâăœÿÿùÿŒäüâăââŁăăöŁâăŁăââăûâŒÿÿùÿ»äûâáâŁęâáâáù⣜â»ÿÿùÿșăùâąáâáâáęâÿáęâąââááâáțâá»ÿÿùÿșăáââáțâáŁâáöŁâáŁțáâáâțáâčÿÿùÿșâáâûá ŁááâááâááâęáâᣜáčÿÿùÿčáàüáÿàŁțáàöáŁęáàüážÿÿùÿžâáààüá ŁááààááààáțàÿáàŁęáàáàáàážÿÿùÿ·áßàááôŁąțŁțàŁțàáàțáßážÿÿùÿ·âȚțàŁààáęàáúàŁàáàŁûàáàȚà·ÿÿùÿ·áĘțàŁóàߣțàŁțà ßàßààĘà·ÿÿùÿ·àÛțàȘÒààßàßàßęàßààȘßààŁùàÛß·ÿÿùÿ·ßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßüàßàÚß·ÿÿùÿ·ßÚààßßÒ©òąŁȘÒßààßàßàßÙà·ÿÿùÿ·ßŰàßàüßàőßàțß àßßààßßÙß·ÿÿùÿ·ßŚÚțßàńßàúßàßÚŚß·ÿÿùÿ·ßßÖß·ÿÿùÿ·ßÛáÖÚß·ÿÿùÿ·ââàćâ·ÿÿúÿȚÛ·ŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿÿœê™­æäÚÌŚßÙòÿÿțoÿpopoppoțpopęoęp oçäȚÍĐßȚÛțôÿÿőmëőm ȚâĘËÌàßĘȚțőÿÿțijțițjijêiiûjęi čßÖÇÈâàßÜæțöÿÿùfêƒÜfêƒÜ܄ùf ÛÓÁÂćăàßÛîțśÿÿúd cêۂdêۂdÛùd šŰÎŒ»èæăáßÛôțűÿÿa``üaéaaéaa`ìúa `™ŰÍ»”êéæäáßÚùűÿÿ__ț^ÿ_ ^é_^_é__^ì^_ț^_^_šŰÍ»źëêéçäáßŰüùÿÿ__ț^ÿ_ ^é_^_éÚ~^é^_ț^_^_›ÙÏœŹîìêêçäâàÖțúÿÿę\ÿ]ÿ\éț\é|ÚÙ{ù\œÜĐż°ńïìêêçćâàÔțûÿÿű[ÿ\ô[\›ȚÒÀŽôòïíêêèćăàÓțüÿÿrśZYőZd›ȚÔĂœöőòđíêêèæăàÓțęÿùÿ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÒțțÿùÿ ŁŒččșșčșșč诏ü‰Ÿœ˜‘Œ‰‡„„†Š€žĆŚăÜŐțÿÿùÿĆéùćÖȘÖüćăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖÚÿÿùÿÄèäüćäć±ÖûćâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸțÿùÿ ĂçćääćäćääŁćäćțä ćăâÛÓÇŒ¶Ż‚ț­ „°Ž””ŽŽĄțÿùÿÂçùäŁțä ćäćäâáÜŐÌĂÂœ‰țș ‰șŒœżÁÄźÿÿùÿÁçțäÿăÿäăŁääüŁąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłÿÿùÿÀçäăääățäŁăäțăäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ”ÿÿùÿżçęățäăŁùăáäăăäăăŁăăäăăäăâăăżÿÿùÿżæùăŁăăûŁąęŁÿăŁțăäûăŸÿÿùÿœćăâăâțăâŁțăâęăÿâÿăâăăŁăâüăÿâăœÿÿùÿ œćâăâăăââăŁâăăüâÿățâăâŁăùâăœÿÿùÿŒäüâăââŁăăöŁâăŁăââăûâŒÿÿùÿ»äûâáâŁęâáâáù⣜â»ÿÿùÿșăùâąáâáâáęâÿáęâąââááâáțâá»ÿÿùÿșăáââáțâáŁâáöŁâáŁțáâáâțáâčÿÿùÿșâáâûá ŁááâááâááâęáâᣜáčÿÿùÿčáàüáÿàŁțáàöáŁęáàüážÿÿùÿžâáààüá ŁááààááààáțàÿáàŁęáàáàáàážÿÿùÿ·áßàááôŁąțŁțàŁțàáàțáßážÿÿùÿ·âȚțàŁààáęàáúàŁàáàŁûàáàȚà·ÿÿùÿ·áĘțàŁóàߣțàŁțà ßàßààĘà·ÿÿùÿ·àÛțàȘÒààßàßàßęàßààȘßààŁùàÛß·ÿÿùÿ·ßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßüàßàÚß·ÿÿùÿ·ßÚààßßÒ©òąŁȘÒßààßàßàßÙà·ÿÿùÿ·ßŰàßàüßàőßàțß àßßààßßÙß·ÿÿùÿ·ßŚÚțßàńßàúßàßÚŚß·ÿÿùÿ·ßßÖß·ÿÿùÿ·ßÛáÖÚß·ÿÿùÿ·ââàćâ·ÿÿúÿȚÛ·ŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿÿœê™­æäÚÌŚßÙòÿÿțoÿpopoppoțpopęoęp oçäȚÍĐßȚÛțôÿÿômëöm ȚâĘËÌàßĘȚțőÿÿțijțițjijiêiûjęi čßÖÇÈâàßÜæțöÿÿùfƒÜêêfțê܃úf ÛÓÁÂćăàßÛîțśÿÿúdcۂțdêddcÛúd šŰÎŒ»èæăáßÛôțűÿÿa``üaÿÚa`éa``éûa `™ŰÍ»”êéæäáßÚùűÿÿ__ț^ÿ_ÿ^ ~ÚÍ_é_^_é_ț^_^_šŰÍ»źëêéçäáßŰüùÿÿ__ț^ÿ_ÿ^ _}Ú_é_^_é_ț^_^_›ÙÏœŹîìêêçäâàÖțúÿÿę\ÿ]ÿ\ÿéÙ\\é]\\éú\œÜĐż°ńïìêêçćâàÔțûÿÿű[ÿ\ô[\›ȚÒÀŽôòïíêêèćăàÓțüÿÿrśZYőZd›ȚÔĂœöőòđíêêèæăàÓțęÿùÿ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÒțțÿùÿ ŁŒččșșčșșč诏ü‰Ÿœ˜‘Œ‰‡„„†Š€žĆŚăÜŐțÿÿùÿĆéùćÖȘÖüćăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖÚÿÿùÿÄèäüćäć±ÖûćâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸțÿùÿ ĂçćääćäćääŁćäćțä ćăâÛÓÇŒ¶Ż‚ț­ „°Ž””ŽŽĄțÿùÿÂçùäŁțä ćäćäâáÜŐÌĂÂœ‰țș ‰șŒœżÁÄźÿÿùÿÁçțäÿăÿäăŁääüŁąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłÿÿùÿÀçäăääățäŁăäțăäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ”ÿÿùÿżçęățäăŁùăáäăăäăăŁăăäăăäăâăăżÿÿùÿżæùăŁăăûŁąęŁÿăŁțăäûăŸÿÿùÿœćăâăâțăâŁțăâęăÿâÿăâăăŁăâüăÿâăœÿÿùÿ œćâăâăăââăŁâăăüâÿățâăâŁăùâăœÿÿùÿŒäüâăââŁăăöŁâăŁăââăûâŒÿÿùÿ»äûâáâŁęâáâáù⣜â»ÿÿùÿșăùâąáâáâáęâÿáęâąââááâáțâá»ÿÿùÿșăáââáțâáŁâáöŁâáŁțáâáâțáâčÿÿùÿșâáâûá ŁááâááâááâęáâᣜáčÿÿùÿčáàüáÿàŁțáàöáŁęáàüážÿÿùÿžâáààüá ŁááààááààáțàÿáàŁęáàáàáàážÿÿùÿ·áßàááôŁąțŁțàŁțàáàțáßážÿÿùÿ·âȚțàŁààáęàáúàŁàáàŁûàáàȚà·ÿÿùÿ·áĘțàŁóàߣțàŁțà ßàßààĘà·ÿÿùÿ·àÛțàȘÒààßàßàßęàßààȘßààŁùàÛß·ÿÿùÿ·ßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßüàßàÚß·ÿÿùÿ·ßÚààßßÒ©òąŁȘÒßààßàßàßÙà·ÿÿùÿ·ßŰàßàüßàőßàțß àßßààßßÙß·ÿÿùÿ·ßŚÚțßàńßàúßàßÚŚß·ÿÿùÿ·ßßÖß·ÿÿùÿ·ßÛáÖÚß·ÿÿùÿ·ââàćâ·ÿÿúÿȚÛ·ŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿÿœê™­æäÚÌŚßÙòÿÿțoÿpopoppoțpopęoęp oçäȚÍĐßȚÛțôÿÿèm ȚâĘËÌàßĘȚțőÿÿțijțițjijțiûjęi čßÖÇÈâàßÜæțöÿÿüfmÛúÛmțfúffgffúüf ÛÓÁÂćăàßÛîțśÿÿüdÛdcdÛțdúddcddúüd šŰÎŒ»èæăáßÛôțűÿÿa``aaúüaüú`üúÿa `™ŰÍ»”êéæäáßÚùűÿÿ__ț^!ú_^^_^__ú_^_^_ú^^_^_šŰÍ»źëêéçäáßŰüùÿÿ__ț^"Ù_^^Ù^__ú_^_^_ú^^_^_›ÙÏœŹîìêêçäâàÖțúÿÿę\]eÙúÙdț\ÿ]ś\œÜĐż°ńïìêêçćâàÔțûÿÿű[ÿ\ô[\›ȚÒÀŽôòïíêêèćăàÓțüÿÿrśZYőZd›ȚÔĂœöőòđíêêèæăàÓțęÿùÿ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÒțțÿùÿ ŁŒččșșčșșč诏ü‰Ÿœ˜‘Œ‰‡„„†Š€žĆŚăÜŐțÿÿùÿĆéùćÖȘÖüćăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖÚÿÿùÿÄèäüćäć±ÖûćâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸțÿùÿ ĂçćääćäćääŁćäćțä ćăâÛÓÇŒ¶Ż‚ț­ „°Ž””ŽŽĄțÿùÿÂçùäŁțä ćäćäâáÜŐÌĂÂœ‰țș ‰șŒœżÁÄźÿÿùÿÁçțäÿăÿäăŁääüŁąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłÿÿùÿÀçäăääățäŁăäțăäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ”ÿÿùÿżçęățäăŁùăáäăăäăăŁăăäăăäăâăăżÿÿùÿżæùăŁăăûŁąęŁÿăŁțăäûăŸÿÿùÿœćăâăâțăâŁțăâęăÿâÿăâăăŁăâüăÿâăœÿÿùÿ œćâăâăăââăŁâăăüâÿățâăâŁăùâăœÿÿùÿŒäüâăââŁăăöŁâăŁăââăûâŒÿÿùÿ»äûâáâŁęâáâáù⣜â»ÿÿùÿșăùâąáâáâáęâÿáęâąââááâáțâá»ÿÿùÿșăáââáțâáŁâáöŁâáŁțáâáâțáâčÿÿùÿșâáâûá ŁááâááâááâęáâᣜáčÿÿùÿčáàüáÿàŁțáàöáŁęáàüážÿÿùÿžâáààüá ŁááààááààáțàÿáàŁęáàáàáàážÿÿùÿ·áßàááôŁąțŁțàŁțàáàțáßážÿÿùÿ·âȚțàŁààáęàáúàŁàáàŁûàáàȚà·ÿÿùÿ·áĘțàŁóàߣțàŁțà ßàßààĘà·ÿÿùÿ·àÛțàȘÒààßàßàßęàßààȘßààŁùàÛß·ÿÿùÿ·ßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßüàßàÚß·ÿÿùÿ·ßÚààßßÒ©òąŁȘÒßààßàßàßÙà·ÿÿùÿ·ßŰàßàüßàőßàțß àßßààßßÙß·ÿÿùÿ·ßŚÚțßàńßàúßàßÚŚß·ÿÿùÿ·ßßÖß·ÿÿùÿ·ßÛáÖÚß·ÿÿùÿ·ââàćâ·ÿÿúÿȚÛ·ŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿÿœê™­æäÚÌŚßÙòÿÿțoÿpopoppoțpopęoęp oçäȚÍĐßȚÛțôÿÿśm±Ćôm ȚâĘËÌàßĘȚțőÿÿțijțițj±Ćțmjijúi čßÖÇÈâàßÜæțöÿÿüfÿàÿàzŻáőÿŻfÿàÿàzęf ÛÓÁÂćăàßÛîțśÿÿüdÿŹcËÁ­ëpÿdÿŹdËÁęd šŰÎŒ»èæăáßÛôțűÿÿa``aaÿva ŐŹÁdyÿ`ÿva Őța `™ŰÍ»”êéæäáßÚùűÿÿ__ț^!ÿȘ^ÉŽȘÀavÿ^ÿ©^ÊŽ^_^_šŰÍ»źëêéçäáßŰüùÿÿ__ț^"ÿßÿßj©ż^tÿ^ÿßÿßj^_^_›ÙÏœŹîìêêçäâàÖțúÿÿę\]ÿrț\ț^ÿ_\ÿr]]ü\œÜĐż°ńïìêêçćâàÔțûÿÿü[ÿq[[ț\ÿ]\[ÿqû[\›ȚÒÀŽôòïíêêèćăàÓțüÿÿrűZü[űZd›ȚÔĂœöőòđíêêèæăàÓțęÿùÿ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÒțțÿùÿ ŁŒččșșčșșč诏ü‰Ÿœ˜‘Œ‰‡„„†Š€žĆŚăÜŐțÿÿùÿĆéùćÖȘÖüćăàŰÎÀ¶źȘ ˆ©ȘźŻ­ČÈÖÚÿÿùÿÄèäüćäć±ÖûćâàÚĐĆșČź†Ł­Ż‡Čł±°źŽŸțÿùÿ ĂçćääćäćääŁćäćțä ćăâÛÓÇŒ¶Ż‚ț­ „°Ž””ŽŽĄțÿùÿÂçùäŁțä ćäćäâáÜŐÌĂÂœ‰țș ‰șŒœżÁÄźÿÿùÿÁçțäÿăÿäăŁääüŁąĄžœ˜—ÎɕÍÏϝÏŃÒÎÌÏłÿÿùÿÀçäăääățäŁăäțăäăăàȚÙÓŐŐΗ–™ĄÊŚŰŚŐÖŚ”ÿÿùÿżçęățäăŁùăáäăăäăăŁăăäăăäăâăăżÿÿùÿżæùăŁăăûŁąęŁÿăŁțăäûăŸÿÿùÿœćăâăâțăâŁțăâęăÿâÿăâăăŁăâüăÿâăœÿÿùÿ œćâăâăăââăŁâăăüâÿățâăâŁăùâăœÿÿùÿŒäüâăââŁăăöŁâăŁăââăûâŒÿÿùÿ»äûâáâŁęâáâáù⣜â»ÿÿùÿșăùâąáâáâáęâÿáęâąââááâáțâá»ÿÿùÿșăáââáțâáŁâáöŁâáŁțáâáâțáâčÿÿùÿșâáâûá ŁááâááâááâęáâᣜáčÿÿùÿčáàüáÿàŁțáàöáŁęáàüážÿÿùÿžâáààüá ŁááààááààáțàÿáàŁęáàáàáàážÿÿùÿ·áßàááôŁąțŁțàŁțàáàțáßážÿÿùÿ·âȚțàŁààáęàáúàŁàáàŁûàáàȚà·ÿÿùÿ·áĘțàŁóàߣțàŁțà ßàßààĘà·ÿÿùÿ·àÛțàȘÒààßàßàßęàßààȘßààŁùàÛß·ÿÿùÿ·ßÚàßàÒ©ÒàßßàßàßßàßßààÒȘßßȘßüàßàÚß·ÿÿùÿ·ßÚààßßÒ©òąŁȘÒßààßàßàßÙà·ÿÿùÿ·ßŰàßàüßàőßàțß àßßààßßÙß·ÿÿùÿ·ßŚÚțßàńßàúßàßÚŚß·ÿÿùÿ·ßßÖß·ÿÿùÿ·ßÛáÖÚß·ÿÿùÿ·ââàćâ·ÿÿúÿȚÛ·ŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿÿ„ꀎæäÚÌŚßÙòÿÿț}ÿ~}~}~~}ț~}~ę}ę~ }çäȚÍĐßȚÛțôÿÿï{ïû{ ßâßÔÌàßĘȚțőÿÿțwxțwțxwxțwțxïxxęw œßŰÎÈâàßÜæțöÿÿętàtàtîàîîàtîût ŁÛÔÈÂćăàßÛîțśÿÿęrààrîύîràrîûr  ŰĐÄ»èæăáßÛôțűÿÿonnoo‹ă‹ooíoníoníoíüo nŸŰÏĂ”êéæäáßÚùűÿÿonnoo‹í‹ooíoníoníoíüon ŰÏÄźëêéçäáßŰüùÿÿmmllˆßŸíˆmímmímlílíțlmlmĄÙŃĆŹîìêêçäâàÖțúÿÿęjȚ‡j‡ȚjíjjíkjíjíûjąÜÒÇ°ńïìêêçćâàÔțûÿÿűiÿjôijĄȚÔÉŽôòïíêêèćăàÓțüÿÿ~śhgőhpĄȚÖÊœöőòđíêêèæăàÓțęÿùÿ ±źŹȘ„Ł€ŁŁę€Ł€Ł€ĄȚŚÊÇìèćăâăćêéæäȚÒțțÿùÿ ŠÀœœŸŸœŸŸœœțŸțœŸÆßŚÌ°§ŁĄ Ÿą„«žĆŚăÜŐțÿÿùÿĆéńćăàŰž‹¶źȘšš©Ș­źŻ­ČÈÖÚÿÿùÿÄèäüćäććäûćâàښžșČźŹŹ­ŻŻČł±°źŽŸțÿùÿ ĂçćääćäćääććäćțäćăâŐŸŒ¶Żę­ÿ°Ž””ŽŽĄțÿùÿÂçőä ćäćäâ᳑ÌĂÂœûșŒœżÁÄźÿÿùÿÁçțäÿăÿäățäȚääăäâᕶÔÒÈÉÍÍęÏŃÒÎÌÏłÿÿùÿÀçäăääăęäŃ žăăäăăωÓÓՊ’ÀĐŐŰŚŚŰŚŐÖŚ”ÿÿùÿżçęăț䌊‡ŹĘüă«Źăăäʙ‡ŹŚäăăäăâăăżÿÿùÿżæü㌏‡ŠŃûăʌŃüăē‡ŹŰûăŸÿÿùÿ œćăâăÜȇ ĐęăâțăŸ˜âăăâăăâăŸ“‡ŠŃăââăœÿÿùÿ œćâăⓇ„âăââăăę♟ățâăâăăâЍ‡ŸțâăœÿÿùÿŒäțâÖ«‡žâăăęâЇÜââăââă⌫‡ŠĐüâŒÿÿùÿ»äüâܱ‡Ÿțâáâ««ûâÜ«‡„Đúâ»ÿÿùÿșăúâÜ«‡“Ïâá܍Đâááâ⟇ŸĐâááâáțâá»ÿÿùÿșăáââáțâÿáÖ„œá៙âáâáâá„Éęáâáâțáâčÿÿùÿșâáâűáâáá™ĂáâęáâőáčÿÿùÿčáàüáțàțáàəóáàüážÿÿùÿžâáààùáÿàÛáààáțàÿáàüáàáàáàážÿÿùÿ·áßàááààáüàáààááààáùàáàțáßážÿÿùÿ·âȚûàáęàáűàáùàáàȚà·ÿÿùÿ·áĘïàßùà ßàßààĘà·ÿÿùÿ·àÛțàßțàßàßàßęàßțàßöàÛß·ÿÿùÿ·ßÚàßàßàßàßßàßàßßàßßààßàęßüàßàÚß·ÿÿùÿ·ßÚààßßàßàßààßßàßßęàûßÿà ßàßàßÙà·ÿÿùÿ·ßŰàßàüßàőßàțß àßßààßßÙß·ÿÿùÿ·ßŚÚțßàńßàúßàßÚŚß·ÿÿùÿ·ßßÖß·ÿÿùÿ·ßÛáÖÚß·ÿÿùÿ·ââàćâ·ÿÿúÿȚÛ·ŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿÿœêźæäÚÌŚßÙòÿÿțpÿqpqpqqpțqpqępęq pçäȚÍĐßȚÛțôÿÿönëôn ȚâĘËÌàßĘȚțőÿÿțjkțjțkjkțjûkęj čßÖÇÈâàßÜæțöÿÿûgęêgêgęê„úg ÛÓÁÂćăàßÛîțśÿÿúd cdêdêdêddcêúd šŰÎŒ»èæăáßÛôțűÿÿa``üa éaé`ìa``ìûa `™ŰÍ»”êéæäáßÚùűÿÿ__ț^ÿ_ }é_^é_é_^_é_ț^_^_šŰÍ»źëêéçäáßŰüùÿÿę\ÿ]{é{\\é\ęé{ú\›ÙÏœŹîìêêçäâàÖțúÿÿû[țèé\è[èś[\œÜĐż°ńïìêêçćâàÔțûÿÿqśYXYèśYc›ȚÒÀŽôòïíêêèćăàÓțüÿÿqśYXőYc›ȚÔĂœöőòđíêêèæăàÓțęÿùÿ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÒțțÿùÿ ŁŒččșșčșșččțșțčșÄߌɰ§ŁĄ Ÿą„«žĆŚăÜŐțÿÿùÿĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖÚÿÿùÿÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸțÿùÿ ĂçćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄțÿùÿÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźÿÿùÿÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłÿÿùÿÀçäăääăęäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ”ÿÿùÿżçęățäăäùăáäăăäüă äăăäăâăăżÿÿùÿżæđăáśăäûăŸÿÿùÿœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœÿÿțÿߌíl†Èăățâăâăăùâăœÿÿÿÿß‹ëœ wÈââăââăâăââăûâŒÿÿÿÿŒéœ…łÌòâ»ÿÿÿÿj~zț‚ÿț€~ț}ÿ|{țy‚~~jłœúâÿáâáțâá»ÿÿÿÿi~jí~j~iłœâáâüáâáâțáâčÿÿÿÿh||‰LńQ T‰||hłœááâőáčÿÿÿÿg€€‡Uńc[‡uugłœűáàüážÿÿÿÿe~†Uüsáțàáûs c†ssfłœàááàüáàáàáàážÿÿÿÿe}}‡Uę‚üßû‚j‡rqełœùàáàțáßážÿÿÿÿc||‰UünÿÎÍÎÒûo b‰ppcłœààáùàáàȚà·ÿÿÿÿa{y‡Uü‚ęâáû‚m‡ooałœùà ßàßààĘà·ÿÿÿÿ`xx…Wü{üÙû{j…ll`łœàßöàÛß·ÿÿÿÿ ^xx†W{||ÂŚŚțÖÿŚÂę}l†kk_łœßàęßüàßàÚß·ÿÿÿÿ ^wv…XggilÄęÌÏÄlęia…ji^łœûßÿà ßàßàßÙà·ÿÿÿÿ \uu„Xxyyz‚ÔțÛӃü{ n„hh\łœßßàțß àßßààßßÙß·ÿÿÿÿ[ss„XțqÿrÌĐ́ûr i„ggZłœßßàúßàßÚŚß·ÿÿÿÿZrqƒXûl†”†úlfƒfeZČșóÖß·ÿÿÿÿYqjqïœqjfYČșôÖÚß·ÿÿÿÿXülÿkÿjihhțgfęedțaWŽżóćâ·ÿÿÿÿWmkmjihhțgfęeÿdțcac``Wï·Őÿÿÿ UVWVUVVUWVVțUÿVÿUWUWVUVVUïżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿÿœêźæäÚÌŚßÙòÿÿțpÿqpqpqqpțqpqępęq pçäȚÍĐßȚÛțôÿÿèn ȚâĘËÌàßĘȚțőÿÿjjëkțjțkjkțjûkęj čßÖÇÈâàßÜæțöÿÿgțêgÜêêggê„Üg„Üê„êgęê gÛÓÁÂćăàßÛîțśÿÿddêdßddcêdêۂdÛdcêêțd‚êdšŰÎŒ»èæăáßÛôțűÿÿa`éaÚììéaé`aÜ``aìțaÚa`™ŰÍ»”êéæäáßÚùűÿ'ÿ__é^é__^é_é~__Ú^_éé^^}Ú^_šŰÍ»źëêéçäáßŰüùÿ(ÿ\\é\Ú]{éé\é\\]|Ùé{é\{Ù\{\›ÙÏœŹîìêêçäâàÖțúÿ ÿ[[èè{Ùè{è\é[èü[è[ęè\œÜĐż°ńïìêêçćâàÔțûÿÿ\śYXțYțèûYX›ȚÒÀŽôòïíêêèćăàÓțüÿÿqśYXőYc›ȚÔĂœöőòđíêêèæăàÓțęÿùÿ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÒțțÿùÿ ŁŒččșșčșșččțșțčșÄߌɰ§ŁĄ Ÿą„«žĆŚăÜŐțÿÿùÿĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖÚÿÿùÿÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸțÿùÿ ĂçćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄțÿùÿÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźÿÿùÿÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłÿÿùÿÀçäăääăęäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ”ÿÿùÿżçęățäăäùăáäăăäüă äăăäăâăăżÿÿùÿżæđăáśăäûăŸÿÿùÿœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœÿÿțÿߌíl†Èăățâăâăăùâăœÿÿÿÿß‹ëœ wÈââăââăâăââăûâŒÿÿÿÿŒéœ…łÌòâ»ÿÿÿÿj~zț‚ÿț€~ț}ÿ|{țy‚~~jłœúâÿáâáțâá»ÿÿÿÿi~jí~j~iłœâáâüáâáâțáâčÿÿÿÿh||‰LńQ T‰||hłœááâőáčÿÿÿÿg€€‡Uńc[‡uugłœűáàüážÿÿÿÿe~†Uüsáțàáûs c†ssfłœàááàüáàáàáàážÿÿÿÿe}}‡Uę‚üßû‚j‡rqełœùàáàțáßážÿÿÿÿc||‰UünÿÎÍÎÒûo b‰ppcłœààáùàáàȚà·ÿÿÿÿa{y‡Uü‚ęâáû‚m‡ooałœùà ßàßààĘà·ÿÿÿÿ`xx…Wü{üÙû{j…ll`łœàßöàÛß·ÿÿÿÿ ^xx†W{||ÂŚŚțÖÿŚÂę}l†kk_łœßàęßüàßàÚß·ÿÿÿÿ ^wv…XggilÄęÌÏÄlęia…ji^łœûßÿà ßàßàßÙà·ÿÿÿÿ \uu„Xxyyz‚ÔțÛӃü{ n„hh\łœßßàțß àßßààßßÙß·ÿÿÿÿ[ss„XțqÿrÌĐ́ûr i„ggZłœßßàúßàßÚŚß·ÿÿÿÿZrqƒXûl†”†úlfƒfeZČșóÖß·ÿÿÿÿYqjqïœqjfYČșôÖÚß·ÿÿÿÿXülÿkÿjihhțgfęedțaWŽżóćâ·ÿÿÿÿWmkmjihhțgfęeÿdțcac``Wï·Őÿÿÿ UVWVUVVUWVVțUÿVÿUWUWVUVVUïżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿÿœêźæäÚÌŚßÙòÿÿțpÿqpqpqqpțqpqępęq pçäȚÍĐßȚÛțôÿÿónëśn ȚâĘËÌàßĘȚțőÿÿjjëkțjțkjkjjëûkęj čßÖÇÈâàßÜæțöÿÿgțê„ÜêêggêgÜgêgÜêggęê gÛÓÁÂćăàßÛîțśÿÿddêdÛddcêdê΂dććdćțd‚êdšŰÎŒ»èæăáßÛôțűÿÿa`éaÚììéaé`aé`aéțaé`™ŰÍ»”êéæäáßÚùűÿ ÿ__é^Ú__^é_éț_é^_^é^^}é^_šŰÍ»źëêéçäáßŰüùÿ(ÿ\\é\Ú]\Ùé\é\\]éé\\é\\é{\\›ÙÏœŹîìêêçäâàÖțúÿÿ[[èè{èè{è\é[è[ë[èè[[éțè\œÜĐż°ńïìêêçćâàÔțûÿÿqśYXőYc›ȚÒÀŽôòïíêêèćăàÓțüÿÿqśYXőYc›ȚÔĂœöőòđíêêèæăàÓțęÿùÿ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÒțțÿùÿ ŁŒččșșčșșččțșțčșÄߌɰ§ŁĄ Ÿą„«žĆŚăÜŐțÿÿùÿĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖÚÿÿùÿÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸțÿùÿ ĂçćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄțÿùÿÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźÿÿùÿÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłÿÿùÿÀçäăääăęäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ”ÿÿùÿżçęățäăäùăáäăăäüă äăăäăâăăżÿÿùÿżæđăáśăäûăŸÿÿùÿœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœÿÿțÿߌíl†Èăățâăâăăùâăœÿÿÿÿß‹ëœ wÈââăââăâăââăûâŒÿÿÿÿŒéœ…łÌòâ»ÿÿÿÿj~zț‚ÿț€~ț}ÿ|{țy‚~~jłœúâÿáâáțâá»ÿÿÿÿi~jí~j~iłœâáâüáâáâțáâčÿÿÿÿh||‰LńQ T‰||hłœááâőáčÿÿÿÿg€€‡Uńc[‡uugłœűáàüážÿÿÿÿe~†Uüsáțàáûs c†ssfłœàááàüáàáàáàážÿÿÿÿe}}‡Uę‚üßû‚j‡rqełœùàáàțáßážÿÿÿÿc||‰UünÿÎÍÎÒûo b‰ppcłœààáùàáàȚà·ÿÿÿÿa{y‡Uü‚ęâáû‚m‡ooałœùà ßàßààĘà·ÿÿÿÿ`xx…Wü{üÙû{j…ll`łœàßöàÛß·ÿÿÿÿ ^xx†W{||ÂŚŚțÖÿŚÂę}l†kk_łœßàęßüàßàÚß·ÿÿÿÿ ^wv…XggilÄęÌÏÄlęia…ji^łœûßÿà ßàßàßÙà·ÿÿÿÿ \uu„Xxyyz‚ÔțÛӃü{ n„hh\łœßßàțß àßßààßßÙß·ÿÿÿÿ[ss„XțqÿrÌĐ́ûr i„ggZłœßßàúßàßÚŚß·ÿÿÿÿZrqƒXûl†”†úlfƒfeZČșóÖß·ÿÿÿÿYqjqïœqjfYČșôÖÚß·ÿÿÿÿXülÿkÿjihhțgfęedțaWŽżóćâ·ÿÿÿÿWmkmjihhțgfęeÿdțcac``Wï·Őÿÿÿ UVWVUVVUWVVțUÿVÿUWUWVUVVUïżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿÿœêźæäÚÌŚßÙòÿÿțpÿqpqpqqpțqpqępęq pçäȚÍĐßȚÛțôÿÿèn ȚâĘËÌàßĘȚțőÿÿțjkțjțkjkțjûkęj čßÖÇÈâàßÜæțöÿÿúg êgÜg„Üêêghêgêüg ÛÓÁÂćăàßÛîțśÿÿúdêۂdÛțdêcêê‚üd šŰÎŒ»èæăáßÛôțűÿÿa``ęaéțaÚììé`éüa `™ŰÍ»”êéæäáßÚùűÿÿ__ț^ÿ_é^_^Úț_é_é_ț^_^_šŰÍ»źëêéçäáßŰüùÿÿę\ÿ]\éț\Ù\]éé\éú\›ÙÏœŹîìêêçäâàÖțúÿÿú[ è[\\{Ùè[è[èû[\œÜĐż°ńïìêêçćâàÔțûÿÿqśYXőYc›ȚÒÀŽôòïíêêèćăàÓțüÿÿqśYXőYc›ȚÔĂœöőòđíêêèæăàÓțęÿùÿ ˜Ź©§€ žęžžž›ȚÖĆÇìèćăâăćêéæäȚÒțțÿùÿ ŁŒččșșčșșččțșțčșÄߌɰ§ŁĄ Ÿą„«žĆŚăÜŐțÿÿùÿĆéńćăàŰÎÀ¶źȘšš©Ș­źŻ­ČÈÖÚÿÿùÿÄèäüćäććäûćâàÚĐĆșČźŹŹ­ŻŻČł±°źŽŸțÿùÿ ĂçćääćäćääććäćțäćăâÛÓÇŒ¶Żę­ÿ°Ž””ŽŽĄțÿùÿÂçőä ćäćäâáÜŐÌĂÂœûșŒœżÁÄźÿÿùÿÁçțäÿăÿäăûä ăäâáĘÚÔÒÎÉÍÍęÏŃÒÎÌÏłÿÿùÿÀçäăääăęäăäțăäăăàȚÙÓŐŐÎŃĐŐŰŚŚŰŚŐÖŚ”ÿÿùÿżçęățäăäùăáäăăäüă äăăäăâăăżÿÿùÿżæđăáśăäûăŸÿÿùÿœćăâăâțăâęăâęăÿâÿăâăăâăâüăÿâăœÿÿțÿߌíl†Èăățâăâăăùâăœÿÿÿÿß‹ëœ wÈââăââăâăââăûâŒÿÿÿÿŒéœ…łÌòâ»ÿÿÿÿj~zț‚ÿț€~ț}ÿ|{țy‚~~jłœúâÿáâáțâá»ÿÿÿÿi~jí~j~iłœâáâüáâáâțáâčÿÿÿÿh||‰LńQ T‰||hłœááâőáčÿÿÿÿg€€‡Uńc[‡uugłœűáàüážÿÿÿÿe~†Uüsáțàáûs c†ssfłœàááàüáàáàáàážÿÿÿÿe}}‡Uę‚üßû‚j‡rqełœùàáàțáßážÿÿÿÿc||‰UünÿÎÍÎÒûo b‰ppcłœààáùàáàȚà·ÿÿÿÿa{y‡Uü‚ęâáû‚m‡ooałœùà ßàßààĘà·ÿÿÿÿ`xx…Wü{üÙû{j…ll`łœàßöàÛß·ÿÿÿÿ ^xx†W{||ÂŚŚțÖÿŚÂę}l†kk_łœßàęßüàßàÚß·ÿÿÿÿ ^wv…XggilÄęÌÏÄlęia…ji^łœûßÿà ßàßàßÙà·ÿÿÿÿ \uu„Xxyyz‚ÔțÛӃü{ n„hh\łœßßàțß àßßààßßÙß·ÿÿÿÿ[ss„XțqÿrÌĐ́ûr i„ggZłœßßàúßàßÚŚß·ÿÿÿÿZrqƒXûl†”†úlfƒfeZČșóÖß·ÿÿÿÿYqjqïœqjfYČșôÖÚß·ÿÿÿÿXülÿkÿjihhțgfęedțaWŽżóćâ·ÿÿÿÿWmkmjihhțgfęeÿdțcac``Wï·Őÿÿÿ UVWVUVVUWVVțUÿVÿU WUWVUVVUńżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿùÿÿŰÿŚŰŚúŰțŚÖÔĐÈæûțđÿùÿŚòïüîïîîïïțîíìèàĐÌÙđÿùÿÖîńéçàÔÇȚÚńÿ觱æäÚÌŚßÙòÿûvwțvwöv wvwwçäȚÍĐßȚÛțôÿìsęęs ßâĘËÌàßĘȚțőÿ onoonnonnonnooûnęnnonnœßÖÇÈâàßÜæțöÿęjțęÿjęțjęțjęjęęÿęj ŁÛÓÁÂćăàßÛîțśÿfggęghgęfęggęfęggęfgęțghg ŰÎŒ»èæăáßÛôțűÿębÿęębębębęcęțbęüb ŸŰÍ»”êéæäáßÚùűÿûbęțbębębęcęțbęüb  ŰÍ»źëêéçäáßŰüùÿ_^_ÿ__^üț_üț^üę_ü^_^_^ĄÙÏœŹîìêêçäâàÖțúÿÿ]\[ÿÿü]ț\ü\\]üę\ü\\]\\ąÜĐż°ńïìêêçćâàÔțûÿÿ[YZY[Zü[Z[[Zû[Z[[ZĄȚÒÀŽôòïíêêèćăàÓțüÿÿYXYXYXïYiĄȚÔĂœöőòđíêêèæăàÓțęÿùÿ ›±­©ŠŁŁ€ŁŁę€Ł€Ł€ĄȚÖĆÇìèćăâăćêéæäȚÒțțÿùÿ ŠÀœœŸŸœŸŸœœțŸțœŸÆߌɰ§ŁĄ Ÿą„«žĆŚăÜŐțÿÿùÿĆéńćăàŰÎÀŽˆ™©Ș­źŻ­ČÈÖÚÿÿùÿÄèäüćäććäûćâàÚ͝ukkj“­ŻŻČł±°źŽŸțÿùÿ Ăçćääćäćääććäćțäćăâɀpligg“­­°°Ž””ŽŽĄțÿùÿÂçőä ćäćäâÈ|tpmmlk›ęșŒœżÁÄźÿÿùÿÁçțäÿăÿäăûä ăäրwvsrpozŻęÏŃÒÎÌÏłÿÿùÿÀçäăääăęäăäțăäâywtru˜œŃĐŐŰŚŚŰŚŐÖŚ”ÿÿùÿżçęățäăäûăčțyz{Ăüă äăăäăâăăżÿÿùÿżæóăȚywxxŒúăäûăŸÿÿùÿœćăâăâțăâęăâă”xwwx™ăâăăâăâüăÿâăœÿÿùÿœćâăâăăââăââăăâá†vvwxÎââăâăăùâăœÿÿùÿŒäüâățâÿăÿâÄüvțxyăâăââăûâŒÿÿùÿ»äûâáûâ–uuûvwőâ»ÿÿùÿșăűâáâáŐùuÿvęâÿáâáțâá»ÿÿùÿșăáââáțâÿá âáá©tuututuutvüáâáâțáâčÿÿùÿșâáâűáĘ}ęsvęwxőáčÿÿùÿčáàüáțàÿášęrŠőáàüážÿÿùÿžâáààúáÒuțrtÒáțàÿáàüáàáàáàážÿÿùÿ·áßàááààáààߓsrsrŸáààáùàáàțáßážÿÿùÿ·âȚûàáٙęrvÔûàáùàáàȚà·ÿÿùÿ·áĘüà”ž{rsqqr±ęàßùà ßàßààĘà·ÿÿùÿ·àÛțàßàțręq”ßààßțàßöàÛß·ÿÿùÿ ·ßÚàßàßàssęr ”ÜßàßßààßàęßüàßàÚß·ÿÿùÿ·ßÚààßßàsțrwȘĘàßßęàûßÿà ßàßàßÙà·ÿÿùÿ ·ßŰàßàßßsr†ȘŃößàțß àßßààßßÙß·ÿÿùÿ·ßŚÚțßàÓĘóßàúßàßÚŚß·ÿÿùÿ·ßßÖß·ÿÿùÿ·ßÛáÖÚß·ÿÿùÿ·ââàćâ·ÿÿúÿȚÛ·ŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿńÿÿèőéæâÚćòüőÿńÿéòőęôőôôőțôóòéŐÒëęöÿńÿèïòúńđęńđëȚÓæëțśÿńÿ æïóńńđńđńđńđńțđíćÔàêîśÿűÿÿèüéúèćáÚćçîđđîëäĐÛíêśÿűÿéòőęôőôôőțôóòéŐÒéïíìçȚËŚîêńűÿűÿèïòúńđęńđëȚÓæèíêăŰĂÒòíêóùÿűÿ æïóńńđńđńđńđńțđíćÔàêêéáŐœÌőïìéśúÿÿèèûéûèćáÚćçîțđîëäĐÛíêéâÔșÆśńîìéïûÿÿéòőęôőôôőțôóòéŐÒéđïíìçȚËŚîêńäÖ»ÄúòńïíìíüÿÿèïòúńđęńđëȚÓæèîíêăŰĂÒòíêóŰœÇüôńńïííÚęÿ ÿæïóńńđńđńđńđńțđíćÔàêêìéáŐœÌőïìéőÁÍÿűőóòđíńÒțÿÿæîòđńđńțđńęđîëäĐÛíêíéâÔșÆśńîìéêŚęśôôóöőòôßÿÿÿćîòśđ!ïíìçȚËŚîêńìäÖ»Äúòńïíìçœč··șżÊÖæóÒÿÿćíòûđïțđ!îíêăŰĂÒòíêóæŰœÇüôńńïííÖȘšŠ©Ș°ŽžÄĘàÿäíńțđțïđïïđîìéáŐœÌőïìéöÛÁÍÿűőóòđíńÌț±ČŽ¶¶Č”Ÿÿăìńüï&đïđđïîíéâÔșÆśńîìéìÇŚęśôôóöőòôŚ””¶žșŒœŸźÿâìńöïîìäÖ»Äúòńïíìè»œč··șżÊÖæóęÌÍÏÎŃÆÿâëńőïìæŰœÇüôńńïí팰ȘšŠ©Ș°ŽžÄĘÚęßÜßÏÿàëńőïíçÛÁÍÿűőóòđíńÍ”ț± ČŽ¶¶Č”ŸììëëêíÚÿàêńęïîúïíçĘÇŚęśôôóöőòô۶””¶žșŒœŸźüíïÛ ÿȚêđîïîïïîîïïîîïîéàÌ»œč··șżÊÖæóÌËțÌÍÏÎŃÆęíìïÛÿĘéđőîíêáÒŸ°ȘšŠ©Ș°ŽžÄĘÙĘęßÜßÏíęìïÛÿĘéïęîíîîíęîíéäŚÉ»”ț±ČŽ¶¶Č”ŸëììëëêíÚüìîÙ ÿÜèđííîîííîíîííîíëćÛÌÁ»¶””¶žșŒœŸźûíïÛëìëììîÙÿÚçïűí îíîìêæßÖŃÍËËțÌÍÏÎŃÆìęí ìïÛìëìëëîÙÿÚçïôíëæàÛĘŚŰÙĘęßÜßÏìíęìïÛüëíŰÿÚçïôíëìëêëțêëììëëêíÚûìîÙüëíŰÿÚçïńíîíîíîûí ïÛìëìëììîÙüëíŰ ÿŰćïìíìííìíìțíìíìțíìíìíìęí ìïÛëìëìëëîÙęëêìŚ ÿÙćîíìííìíìțíìíìțíìęíìíęìïÛûëíŰêëêëêìŚÿŚäîęìëüìëüìëśìîÙûëíŰęëêëŚÿŚäîëìëìëììîÙûëíŰëëêëéëŚ ÿŚäíììëììëëęìëìëțìüëìëìëëîÙüë êìŚêëëêèêŚÿÖăíìçëíŰëêëêëêìŚêêëêæêŚÿÖăíæëíŰüëêëŚęäăéŚÿŐâìæëíŰțëêëéëŚęêëđŰÿŐăæë êìŚëêëëêèêŚûßÓÿŐâêëêëêëêìŚțêëêæêŚûŐÓÿŐâêëëêțëêëêțëêëêëëêùëêëŚüäăéŚúÿÿŐáéęë êëêëêëêëëêêëêëțêțëêëéëŚüêëđŰúÿÿŐâèêêëęêëüêëúêëêëëêèêŚúßÓúÿÿŐâèçêêëüêëüêëùêëêæêŚúŐÓúÿÿŐâçăèäăéŚòÿÿŐăíçêëđŰòÿÿĐÙȚćßÓòÿÿÖÔäŐÓòÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿÿÿŽÙ*țÿÿÿ“Ù5țÿÿÿ“Ù5țÿÿÿ“ö ïț ú5țÿÿÿ“öôü5țÿÿÿ“ű^Dű =bqsgF ț5țÿÿÿ“űTęó­W"û gÄòęÿűÒv 5țÿÿÿ“ùÊęÿVü )Čśÿ·&5țÿÿÿ“ùyęÿÍ%ü)ÇőÿŻ5țÿÿÿ“ú2æțÿûWüŽûÿțúÿe5țÿÿÿ“û€ęÿ«ügüÿĆmQgŒüÿ»4țÿÿÿ“ü Rùțÿí:üĆęÿŹ§ęÿç-0țÿÿÿ“üÉęÿˆû/òțÿă/ AöțÿöB/țÿÿÿ“ü{ęÿÖ&û €Òÿÿę)ćțÿûN-țÿÿÿ“ę4èțÿțcù"Z”5ę/èțÿśF-țÿÿÿ“ț€ęÿ·ęû ęNúțÿí40țÿÿÿ“țTûțÿóDțó˜ęÿÍ2țÿÿÿ“Ëęÿ “{ÓÍĐž-ö HòęÿŽ5țÿÿÿ“zęÿà*»țÿü=ś 0Öęÿï85țÿÿÿ“4èęÿn Çțÿò<ś<Òüÿ€5țÿÿÿ“€ęÿĂ&Űțÿò<ùZèüÿŹ5țÿÿÿ“TúțÿùN 0çțÿò<û …űüÿ­ 5țÿÿÿ“ ËęÿĄBśțÿò<ü $«ûÿ”ț5țÿÿÿ“yęÿá( Nęÿ ò4 0Ćüÿïmę5țÿÿÿ“Šęÿ˜9țF<}ęÿ ô]AH(*ÍüÿÏDü5țÿÿÿ“Łęÿóőęöùęÿțśöúh”üÿ­%ú5țÿÿÿ“ŁîÿusüÿŠ ú5țÿÿÿ“€îÿu"ÖęÿË ù5țÿÿÿ“—ÿśüüÿüęęjVțțÿț`ù5țÿÿÿ“/NùLB…ęÿôcHJ&‰ęÿś`AúHJ95țÿÿÿ“ù cęÿò4ŻęÿțśùűúÒ&1țÿÿÿ“śhęÿò<Éòÿá*1țÿÿÿ“śhęÿò<"ÔòÿĘ)1țÿÿÿ“śhęÿò<%àòÿć)1țÿÿÿ“śmęÿü< ĄËôÆ˘4țÿÿÿ“ś 8ˆ‹ŠŒ|&ô5țÿÿÿ“ś ęęô5țÿÿÿ“Ù5țÿÿÿ“Ù5țÿÿÿ“Ù5țÿÿÿÙ1țÿÿÿœ(Ú54HțÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿêÿ€Ìêÿôÿúűúÿü<‚ùÿśóÿőÿś‘›ęûÿÜ7úûÿú›Áôÿöÿńf (ËûÿŃûÿŹC(őÿśÿèE7Čt(ïțÿśÛ5nçûțÿŃŁ—WôśÿűÿŰ-Qžœș2nŰĄb$ S2ușĘ4fÁżŠ(4èűÿúÿ ęŒdŸŒŸÂęĂ\ü 3čÁŒœČ<"Üùÿûÿ ü“ |À»œŠ”Ăgü/üȘü —Œ€żŒčUùÿüÿ üƒ’ÀŒș`„ș0ę{ÿéę ^ÈoÁ»Ÿl%Óûÿüÿ”,ŠżŒźBț =ż” Êÿÿcț '·ž rœșÁ†iûÿüÿÊ$±Œ”6l3sÇ[>țÿ»‹À7HasŸÀcûÿüÿ$übBżŻRÿŻ€¶%jÄśë·QÇn Ùÿ,WÄ­șûÿûÿ#çrÇr„B=Á‡Mÿé°Ą[y§À??ûûÿúÿŁœż;üsĆL »”~ż6zÉoÛúÿúÿŃ/čĄü€ČęEÇjęF› @ęúÿúÿc[Çrü 8_  )rț©č.ŸúÿęÿśÊŠ ț‚ż<ę{ĂßÖŠLû{ĂUț<šŐțęÿțÿ!ÂD";FGGF_»ąVçÿȚčÆśÿźGż€JțGC6oëțÿÿę”ƒ¶ŸężœčÀsMűâV&7/1˜ÿč ©ŒčœężŸźf?Űÿÿÿ™„ÁŒÀûÁ»)Üè2UŹœș$‡ÿtlÇúÁŸ»Ăƒ"ÚÿŰŒÁ»ŽrWęXYV5_ÿnMÂŒčșÁĄ"ŰÚ !IYüXZ”œčÂW:úg1œșșG%xę€ Éšö.žŸęčÁM‰ț)pÉ~ęZŽŸŒ€ÎUÁ»Š žùÿă °ä*ŻșęčÁdkÿ8cűÿALÁș·&Š)MÀșł SŒÂüÀĐÜŸó,ąœęčÂQƒÿ,rćĆüÀĂĄmÀșŽ"±•ł»œ*!ț !". gÿaZÄșččŸȘ#Îá%""ę !U”șżĘï$bÂșœčČę±ÿČ©8ćȚ%fžÀżŸ+sÿ‚uțČ걎œș»Œ1…ÿÿÒ!yÀŸûœșżŁ^ÿŃB.@8)ÿÉEŸ»»ûœÀžN\śÿÿÿŰ>D€ț§Š„čș:ę jőÿǞ«æÿÁ#țyÁłŁŠț„ą*gőÿÿțÿï{ț`Äoû-˜ÚńëĂfü §Ž74­üțÿęÿ ęìÔ9"ŽĄü E $IüAÁ“†âőüÿúÿ§ ‘À:ü tĆ8kJoÄ9țyÇc)íúÿúÿá`Çoû ?Â}/ÿÔšŁüŠ»-Kùÿûÿü[.ŒąCŠźnMDÄpț*:Až°úÿûÿ · žœ;Nÿ§vÆQúƒÁ: Ńü)yÇsđûÿüÿ$ò8uÂź%Ż`?G‡z-!łąąPÀœE›ûÿüÿÊ(ŠÀŒ{ ț€ž)ˆțÿđQWÇqę-ŁŒÄpûÿüÿ$śh›ÁÁ‘wÉbCțŸ9QéȚ ‘À;G±żży ”ûÿûÿ#ő`‰Áż„>RŸ› €ÿ<‚ÿ;.»Ł3f»ŸœdŁțûÿúÿ ù„vÁœșœ»4țpÿ`Łę.țgÄșœœžO»ùÿùÿę©dœ»Àn%9"ćó‘©ÿŽY€›œŸ°; ŐűÿśÿÀN»§§ÿűXCĐÿûŻ˜ęÿb2ÁŠ("öÿöÿÈ99Uüÿțè;+#oüÿÿè$W7ćöÿőÿÌ'Úęÿë|' :ĄțęÿąUíőÿëÿòÚßúûÿò…öÿțöÿŃÿüÿńđńđńńđđńđđńđńđńïîíéöüțíÿüÿđûòúűśńçćóíÿüÿïđùűóìâöóîÿüÿïúęùűöùśöđçńśòïÿüÿîúüùűùűüùÿűÿśôòçëśśóțńÿüÿîúóùÿűöőïăçśśöóńÿüÿíúôùűśőôńëàâțśőöòÿüÿíúęùűęùűțùÿűôóîèÜĘűțśôűțôÿüÿìúțùÿűęùűțù űśôòëćÙŚùűțśôûțőÿüÿëúęùțűÿùűțùÿś ôòëäŚÒùùűűśśóüőÿüÿìúüùűțùțűùűööńíćŚÍęùűśśòțöÿüÿêúțùűțùűùűțùæÖżœș·ĂĆúęùűśśńțśÿüÿ ëùűùűűùùűùęű ÓÀÀżŸ»ž”ŒûúęùűśśđțűÿüÿêúűûùÿűùűÓțÀ żŸœč¶żüûúúțùűśśïțùÿüÿéùęűüùűâțÀ ÓíöńáĆÆüüûûúțùűśöîțúÿüÿ$éúűűùűűùűùùűËÀÀȚùűöòêßÖńîíńńóőùùűűőíțûÿüÿèúęùÿűùűùőÀÀÈùűűśôìâÏŽź«œÁĂĆËÖȚíűôíțüÿüÿ%èùűűùùűűùűűæÀÀÚùùűűôíæÚœ«©ŸÆÈÈËÌÎÎÓăîïüÿüÿèùùśűțùűùűőïçȚ»§ŠÄÉÉÊËÎÏĐÏÏŐĘüÿüÿçùęűÿùűùùűțùÿűùśőđ錫§ŹÊÊÉÉËÍÏŃÓÔÓÇüÿüÿæùűűùùęűęùűțùÿöńà”­­ÈțÔÓŐŐŚŚÙÛßÖüÿüÿæúțű ùűùűűùűùűűùűùűöă趔ÍáääçæçèéêćäçÚüÿüÿæùűűùùűùùűùùśàŒž”ËëćéçëíîîííììîÜüÿüÿćúűűùűùüűęù űùæżÀÀȚűűùűűùęűùűśśćüÿüÿćùűùűùűùüűÿùÿű ôÄżÀȚűùùűùüűùűùűűćüÿüÿäùüűùűùűűùűùùűȚÀżÓűùùűűùűùțűùűùùűäüÿüÿäùűùôűÓÀÀćűęùțűùțűùűűùäüÿüÿäùùęűÿùțűùęűÏÀÀńùűűùùűùűùűäüÿüÿăûűùûű ùűűÏÀÀôűűùüűÿùüűùăüÿüÿăűùùűùűűùűűùűùùűùűűùțűùűűùùûűùűùăüÿüÿâűűùűùűűùűùęűùțűùűűùâüÿüÿâùűùűűùțűńțÀüűÿùęűțùțűâüÿüÿâśűÿùűùűńțÀùńűáüÿüÿâűùôűńțÀțűùțűùüűùțűâüÿüÿáűűùâűùűáüÿüÿáűśúűùìűùűűśűáüÿüÿáűśáűöűáüÿüÿáűśôűùöűùûűöűáüÿüÿáűőțűùćűőűáüÿüÿáűôáűôűáüÿüÿáùôìűùśűôűáüÿüÿáűóőăűőóűáüÿüÿáűßóűáüÿüÿáűöáóőűáüÿüÿáűűăùűùùűáüÿęÿȚÛáŐęÿęÿÍżŸŸœŒșáżÍęÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿúÿüöûęćÿüÿüÖŰÚÙÙüŰțŚÿŐùçÿęÿüÖòŚÚçÿęÿÚîÿüțúęöÙÚëèÿęÿâûôőśűÜÚÛòțüÿùűüțûúÿęÿáûôôśôÛÛîŚíüÿęÿàûöśśööśśööśööśöśđÛîŚȚüÿțÿęßûőțöőöőțöőüöțđęúőȚüÿÿÿțęȚúùőöțőöőöúőöűőÿöőȚŐüÿÿÿțüȚùńóțôőțôőôőôôőûôőôțő ôőôôőôôőôȚŐüÿÿÿțüȚúȚôȚÓüÿÿÿ țùȚùôóóôôóűôóüôóűôóțôĘÓüÿÿÿ țüĘùóóôóóôęóęôóôóôóôôțóțôóôęóôóĘÓüÿțÿüĘűțóôțóôùóôïóȚŃüÿțÿęȚűòóòòûóÿòüóòóțòóòóòóòòțóÿòóĘŃüÿțÿęßśòóüòÿóÿò óòóòòóòóóòóűòóòòóĘĐüÿțÿțàśòòńńöòńòòńóòÿńĘĐüÿęÿâöțńÿòÿńòńńòòńńòùńòńńòńńòüńĘÏüÿęÿâöęńđńđęńÿđÿńđôńÿđęńĘÎüÿęÿáőńđńđđțńÿđńűđńđńúđńđńđđÜÎüÿțÿțáôęđïúđïńđïüđÜÍüÿęÿàòüîïüîÿïÿîïôîïîïțîÛÌüÿęÿßńíîííîíőîíûîÿíîííüîÛÌüÿęÿßńüíîùíÿîíîíîőíțîÛËüÿęÿßđìûíìûíÿìęíÿìíìțíÿìíìííìíÛËüÿęÿȚïïìíöìíęìÛÊüÿęÿ ßïììëìëììëęìÿëÿìëìëűìëììëììëÛÊüÿęÿßîìęëìțëìüëÿìóëìëìëÛÊüÿęÿȚíëêëëêúëêđëêëëêêÛÉüÿęÿȚìêëüêÿëêëëêêëêëëêëêëêêęëêęëÿêÛÉüÿęÿĘëűêëêêëúêëüêÿëÿêÿëțêÚÈüÿęÿÚîęÖÿŐęÖüŚęŰțÙęÚęÛțÜĘçÚÈüÿțÿđËȚîÓÛÒüÿÿÿđŰÆȚÉÈÍÛüÿÿÿ ìáàÛÆÆĆÄÄÂêÆÂÄÄĆÆÆÛûÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿțÿüöûęáÿÿüÖŰÚÙÙüŰțŚÿŐùăÿÿÚîÿüțúęöÚăÿÿâđôőśűÜëäÿÿáíôôśôÛòțüÿùűüțûöÿÿàîöśśööśśööśööśöśđÛÙÙÚÚûÙęŰÿŚÖÔâűÿțßîőțöőöőțöőüöțđęúŐùùÿțȚîùőöțőöőöúőöűőÿöőŰïùÿęȚîńóțôőțôőôőôôőûôőôțő ôőôôőôôőôŐïùÿęȚïîđńòțóòóüòÿó òóóòóóòóóòòóòțóțòŃíęúÿüĘđèèçüèțéèțéèççééęèçèççèèçțèéÍçúęûțÿ üĘđćäććäćäæțÿöțóęűûśțÿÿęȚđățâțăòțùáűőíÿęßńțàáàáćïöśáűôĐÿțàńûȚïđśöáűÿäÿ ÿâńÛÜÛÛÜĘđôööâśöÔúÿÿâòüÙêîöóáöèȚÿÿÿâòÖÖțŚđńóòáőŚôÿÿ ÿâóÒÓÓŐáîôđóâôìŰțÿ ÿáóÊÌÏŃîđòđáóÛìțÿ țàóĂÆËŐîńîńăòńïÓęÿ ÿàôżÁĆèîđíăńđïàäęÿ ÿßôœœĂđïìîăđìîÒûęÿ ÿßôŒșßđíèíäîìêăĘüÿÿßő»șńïééăíèëÔôüÿÿȚőșÓőìćëäìëććÖûÿÿßőșîńæăăëćçŚìûÿÿßűÈöëĘæäêéàæŃúÿÿȚúöôćÙăêÿăŰáúÿ ÿȚűÿìÙÒáææțçúèńéçÛæÈûúÿÿĘśőéŃăáĘȚÛÖùÿÿÚűíéáÖŐŐęÖüŚęŰțÙęÚęÛțÜĘçÍîùÿÿËߌæêâîÓÌűÿéÚȚÉÒÚßéđûÿáàÛÆÆĆÄÄÂêÆ ÂÄÄĆÆÆÛàÙàęÿûÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿùÿïúęùűöùśöđçńśòòÿùÿîúüùűùűüùÿűÿśôòçëśśóțôÿùÿîúóùÿűöőïăçśśöóôÿùÿíúôùűśőôńëàâțśőöőÿùÿíúęùűęùűțùÿűôóîèÜĘűțśôűțśÿùÿìúțùÿűęùűțù űśôòëćÙŚùűțśôûțűÿùÿëúęùțűÿùűțùÿś ôòëäŚÒùùűűśśóüűÿùÿìúüùűțùțűùűööńíćŚÍęùűśśòțùÿùÿêúțùűțùűùűęùÿűôïæŰËúęùűśśńțúÿùÿ ëùűùűűùùűùęűțùśőïçÚÌûúęùűśśđțûÿùÿêúűûùÿűùűęù űőńèÛĐüûúúțùűśśïțüÿùÿéùęűüùűùűțù űöńëȚŚüüûûúțùűśöîțęÿùÿ éúűűùűűùűùùęűÿùűöòêßĘőóțńóőùùűűőíțțÿùÿèúęùÿűùűûùÿűśôìâÏÇÄțÁ ĂĆËÖȚíűôíțÿÿùÿ'èùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîïÿÿùÿèùùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇÿÿùÿæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖÿÿùÿæúțű"ùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÿÿùÿæùűűùùűùùűùùśśóîèëëćéçëíîîííììîÜÿÿùÿćúűűùűùüűęùűùùűűùțűùűűùęűùűśśćÿÿùÿćùűùűùűùüűÿùęűöțűÿùűùüűùűùűűćÿÿùÿäùüűùűùűűùűùùűűùśűűùùűűùűùțűùűùùűäÿÿÿÿç|ÿűęùțűùțűùűűùäÿÿÿÿ|éđ|Éâűűùùűùűùűäÿÿÿÿ|é­|ÉÓűùüűÿùüűùăÿÿÿÿ|­HGGFEEęDÿCțBAü@ ?­|ÉÓűùűűùùûűùűùăÿÿÿÿ|­\nnmțlkjiihțg feedccM­|ÉÓùűùęűùțűùűűùâÿÿÿÿ |­Xk!jiihggfțedcbbaț`J­|ÉÓțűÿùęűțùțűâÿÿÿÿ |­Tgh!geedcțb a``_^[SPP1­|ÉÓòűáÿÿÿÿ|­Pece!daț`_^^\SKAę="­|ÉÓűùțűùüűùțűâÿÿÿÿ|­L`c!bța]\\VJ?ú="­|ÉÓôűùűáÿÿÿÿ|­H^!``ț!YODś="­|ÉÓśűùűűśűáÿÿÿÿ|­DZțY\XP?ő="­|ÉÓôűöűáÿÿÿÿ|­@WVVPDò="­|ÉÓûűùûűöűáÿÿÿÿ|­25(PbeGá€Țăôűőűáÿÿÿÿłà!kłÄ„k«œĐy9țÿÿàŁȚăôűôűáÿÿÿÿ±Ț#>W§ČÄą0Dk?ȚąȚăűűùśűôűáÿÿÿÿ±Ü#*3,>NEP>țÜĄȚăőűőóűáÿÿÿÿźÛ#47=,!CR[T7Û ÛáóóűáÿÿÿÿźÙ2<=A !FU]d)' "!"##!!ٟÛáôóőűáÿÿÿÿ­éŰŸȚäöùűùùűáÿÿÿÿŹéŚžïáŐÿÿÿçŽïżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿúÿńđńđńńđđńđđńđńđńïîíéöüțïÿúÿđûòúűśńçćóïÿúÿïđùűóìâöóđÿúÿïúęùűöùśöđçńśòńÿúÿîúüùűùűüùÿűÿśôòçëśśóțóÿúÿîúóùÿűöőïăçśśöóóÿúÿíúôùűśőôńëàâțśőöôÿúÿíúęùűęùűțùÿűôóîèÜĘűțśôűțöÿúÿìúțùÿűęùűțù űśôòëćÙŚùűțśôûțśÿúÿëúęùțűÿùűțùÿś ôòëäŚÒùùűűśśóüśÿúÿìúüùűțùțűùűööńíćŚÍęùűśśòțűÿúÿêúțùűțùűùűęùÿűôïæŰËúęùűśśńțùÿúÿ ëùűùűűùùűùęűțùśőïçÚÌûúęùűśśđțúÿúÿêúűûùÿűùűęù űőńèÛĐüûúúțùűśśïțûÿúÿéùęűüùűùűțù űöńëȚŚüüûûúțùűśöîțüÿúÿ éúűűùűűùűùùęűÿùűöòêßĘőóțńóőùùűűőíțęÿúÿèúęùÿűùűûùÿűśôìâÏÇÄțÁ ĂĆËÖȚíűôíțțÿúÿ%èùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîïțÿúÿèùùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘțÿúÿçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇțÿúÿæùűűùùęűęùűțùÿöńêăÜÛŚțÔÓŐŐŚŚÙÛßÖțÿúÿæúțű !=űűùűùűűùűùűöòđëèäáääçæçèéêćäçÚțÿúÿæùűűù`1úùűùùśśóîèëëćéçëíîîííììîÜțÿúÿ ćúűűùa)ÊĘáűęùűùùűűùțűùűűùęűùűśśćțÿúÿćùűùű;E„Ęàűűùùęűöțűÿùűùüűùűùűűćțÿúÿäùțű99)©Ęűùűùùűűùśűűùùűűùűùțűùűùùűäțÿúÿ äùűùű6J-lëśűęùțűùțűùűűùäțÿúÿ äùùűű56E>êüűùűűùűűùùűùűùűäțÿúÿăęű3ț#b9áùűűùüűùüűÿùüűùățÿúÿăűùùű0ț "Fl;Ûśùűűùțűùűűùùûűùűùățÿúÿâęű .5:@t=Űśüűùűùęűùțűùűűùâțÿúÿâęű ,&%48:C`Ràśùûűÿùęűțùțűâțÿúÿâęű*/żI088N8àśűùńűáțÿúÿâűùűű(/ÉɁ.5*A)Őäęűùțűùüűùțűâțÿúÿáűűùű&/ÊÜĐȘ,<‘Ęïòűùűáțÿúÿáűśűű#/ÊĘàíźC`ÜȚśöűùűűśűáțÿúÿáűśűű!/ÊĘàűńƒBIUŐĘîóűöűáțÿúÿáűśűű.ÊĘàűűń$M9xÏĘçúűùûűöűáțÿûÿÄFț.ÊĘàűűï$X%”ÎĘäóűőűáțÿęÿă:#-&.ÊĘàűű­3BOÈÓĘëóűôűáțÿțÿŃ#BțD0(ÊĘàűűFG"ÉÈÛĘőțűùśűôűáțÿÿÿé!üD8 ÊĘàűÀ,&ąÖÍĘäóűőóűáțÿÿÿY2ęDC +ÆÙÛń9 zÙÈŚÚđńóűáțÿÿÿCDD> ŒĆÙڎsÙÔÓÙëńóőűáțÿÿÿ  3ÇËȚĆ wáȚÖȚëòùűùùűáțÿÿÿ:û .°șĆĆP’ÖËÊËÔìáŐÿÿÿÿ Ü ]·țż„¶æżÍÿÿțÿí{#*q·æĘÿŃÿŃÿűÿńđńđńńđđńđđńđńđńïîíéöüțńÿűÿđûòúűśńçćóńÿűÿïđùűóìâöóòÿűÿïúęùűöùśöđçńśòóÿűÿîúüùűùűüùÿűÿśôòçëśśóțőÿűÿîúóùÿűöőïăçśśöóőÿűÿíúôùűśőôńëàâțśőööÿűÿíúęùűęùűțùÿűôóîèÜĘűțśôűțűÿűÿìúțùÿűęùűțù űśôòëćÙŚùűțśôûțùÿűÿëúęùțűÿùűțùÿś ôòëäŚÒùùűűśśóüùÿűÿìúüùűțùțűùűööńíćŚÍęùűśśòțúÿűÿêúțùűțùűùűęùÿűôïæŰËúęùűśśńțûÿűÿ ëùűùűűùùűùęűțùśőïçÚÌûúęùűśśđțüÿűÿêúűûùÿűùűęù űőńèÛĐüûúúțùűśśïțęÿűÿéùęűüùűùűțù űöńëȚŚüüûûúțùűśöîțțÿűÿ éúűűùűűùűùùęűÿùűöòêßĘőóțń óőùùűűőíțÿÿűÿèúęùÿűùűûùÿűśôìâÏÇÄțÁ ĂĆËÖȚíűôíțÿűÿ&èùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîïÿűÿèùùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘÿűÿçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇÿűÿæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖÿűÿÖßöȚÿűùűùűöòđëèäáääçæçèéêćäçÚÿÿę™őśę™ȚùùűùùśśóîèëëćéçëíîîííììîÜÿÿFțjőőțjFȚțùűùùűűùțűùűűùęűùűśśćÿÿDÿÿiSPțQÿPQțPRiÉűDÉçùęűöțűÿùűùüűùűùűűćÿÿCÿÿhőőhÉűCÉÚùùűűùśűűùùűűùűùțűùűùùűäÿÿCțfőôőôőőțôÿőôțfCÉÛùűęùțűùțűùűűùäÿÿAedețôőùôedeAÉÛęűùűűùűűùùűùűùűäÿÿ@ÿÿcóóúô óôôcÉű@ÉÛùűűùüűùüűÿùüűùăÿÿ>ÿÿaôûóôóôóóaÉű>ÉÜùűùűűùțűùűűùùûűùűùăÿÿ=ț_óòòțóòóòțóț_=ÉÛùűùűùęűùțűùűűùâÿÿ<\]]òòțóòóüòÿ]\<ÉÛűűùűùûűÿùęűțùțűâÿÿ:ÿÿZńțòńúòZÉű:ÉÛùűùțűùńűáÿÿ9ÿÿXțńòńòüńòXÉű9ÉÛűűùțűùüűùțűâÿÿ8țWő[țW8ÉÛìűùűáÿÿ7țUőïțU7ÉÛïűùűűśűáÿ ÿ6ÿÿSïïîîïîûïSÉű6ÉÛìűöűáÿÿ5ÿÿQőîQÉű5ÉÛűűùöűùûűöűáÿÿ3NONíîęíîíîțíNON3ÉÛìűőűáÿÿ1țLÿìÿíúìíțL1ÉÛìűôűáÿÿ/ÿÿJęìëìëüìJÉű/ÉÛśűùśűôűáÿ ÿ.ÿÿHêêëëêëêțëÿêHÉű.ÉÛíűőóűáÿÿ-țEőêțE-ÉÙëóűáÿ ÿ+DCCééêéêêęéÿêÿCD+ÉÙìóőűáÿÿ*ÿÿAőDAÉù*ÉÚîùűùùűáÿÿ(ÿÿ?őé?áá(çáŐÿę!őŐț!(çżÍÍżŸŸœŒșóżÍçÿŃÿŃÿűÿńđńđńńđđńđđńđńđńïîíéöüțńÿűÿđûòúűśńçćóńÿűÿïđùűóìâöóòÿńèśòśöđçńśòóÿæëśôòçëśśóțőÿőêüțêîúűêđőïăçśśöóőÿőéüțéúíűéÎńëàâțśőööÿùèüìúűüüèțüűè”îèÜĘűțśôűțűÿùçüùççüțçüśçČëćÙŚùűțśôûțùÿùçùìççüțçüśç ŸÌÇÂÈùùűűśśóüùÿùæüțæüțæüśæ±íćŚÍęùűśśòțúÿùæüțæüțæüśæłïæŰËúęùűśśńțûÿùæüțæÿüÿæüśæ ÎÉĂÂûúęùűśśđțüÿææŽńèÛĐüûúúțùűśśïțęÿêèæ ߎńëȚŚüüûûúțùűśöîțțÿűÿ¶ÁŸ»žô ŸÏÊÄÓòđîńńóőùùűűőíțÿÿűÿÄŃęĐÿÏĐÏûĐÿÏÛôìâÏÇÄțÁ ĂĆËÖȚíűôíțÿűÿ&èùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîïÿűÿèùùűűțĐÏțĐÏțĐțÏőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘÿűÿçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇÿűÿæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖÿűÿæúțű!ùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÿűÿæùűűùóihgfûefügÿìîÜÿűÿćúűűùűùüűęùűùùűűùțűùűűùęűùűśśćÿűÿćùűùűùűùüűÿùęűöțűÿùűùüűùűùűűćÿűÿäùțűóÈÇüÈűùűùțűùűùùűäÿűÿäùűùïűęùțűùțűùűűùäÿűÿäùùęűÿùțűùüűùűűùűűùùűùűùűäÿűÿăęűóĆęűùüűÿùüűùăÿűÿăűùùűùűűùűűùűùùűùűűùțűùűűùùûűùűùăÿűÿâűűùűùűűùűùęűùțűùűűùâÿűÿâùűùűűùțűùűùûűÿùęűțùțűâÿűÿâęűć>ęűáÿűÿâűùíűùțűùüűùțűâÿűÿáűűùâűùűáÿűÿáűśűűìŸûűùűűśűáÿűÿáűśáűöűáÿűÿáűśôűùöűùûűöűáÿűÿáűőűűôT7ńűőűáÿűÿáűôáűôűáÿűÿáùôìűùśűôűáÿűÿáűóőăűőóűáÿűÿáűßóűáÿűÿáűöáóőűáÿűÿáűűăùűùùűáÿùÿȚÛáŐùÿÍżŸŸœŒșáżÍŃÿŃÿŃÿűÿńđńđńńđđńđđńđńđńïîíéöüțńÿűÿđûòúűśńçćóńÿűÿïđùűóìâöóòÿjèh‘śöđçńśòóÿț&ÿ' &''&'&''&'&'&'ę& '&''śôòçëśśóțőÿń$äț$äû$đőïăçśśöóőÿ țțÿ  ă ă Îńëàâțśőööÿûęâ ââââăâû”îèÜĘűțśôűțűÿûâț âââââúČëćÙŚùűțśôûțùÿûûûáțááú ČëäŚÒùùűűśśóüùÿûáááțááú±íćŚÍęùűśśòțúÿûęáÿááááûłïæŰËúęùűśśńțûÿü áü áá á áû ŽïçÚÌûúęùűśśđțüÿÿ ! ÿ ŽńèÛĐüûúúțùűśśïțęÿ. ę  ü  ț ,ŽńëȚŚüüûûúțùűśöîțțÿűÿ ¶ÁŸ»ž””¶”¶¶ę”ÿ¶€„òêßĘőóțń óőùùűűőíțÿÿűÿÄŃęĐÿÏĐÏûĐ’IGÒìâÏÇÄțÁ ĂĆËÖȚíűôíțÿűÿ&èùűűùùűűùűűùùűűùYDN•íæÚÒËÈÆÆÈÈËÌÎÎÓăîïÿűÿèùùśűțùKOozïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘțűÿçùęűÿùűùùűțùűKQ`‰đéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇüűÿæùűűùùęűęù űùWGO­ńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖțűÿæúțű!ùűùűűùűùűűùkBEÛòíçßßÛßßăâăäćæáäçÚÿűÿæùűűùùűùù űŁ@EśóîèëçàćâęçæçééëÜÿűÿćúűűùűùüűęùé@OűôńëíêìëêëííììđìíêÛÿűÿćùűùűùűùüűÿùÿű @DöőòïïìïïíüïÿîíîÜÿűÿäùüűùűùűűùűùùöA@òśôóđíđđïïîîííîîđïÜÿűÿäùűùőűD@iśööôòôóòòóòńđđîììŰÿűÿäùùęűÿùțűùțű TUaAőűööśööęőôóôńđîÚÿűÿăûűùûű ùÎA…ÜA]űśűśśțöÿśöőôóńđÚÿűÿăűùùűùűűùűűùűùù_Ińűy@‘űùűűùűęśțöóòÛÿűÿâűűùűùűèCrțűOAŒűùęűùęűÿöőȚÿűÿâùűùűűùűlDæűùűőR@SîùùòóűűțùÿśöàÿűÿâśűÿùçEeùțűŚ›Nû@FPiÜțűśàÿűÿâűùśűfDçíĄ]B@@BEC@Do›‹sGUùțűâÿűÿáűűùùű ÛBUYAALv§Śțű ¶TABMUNIűűùűáÿűÿáűśúűùçH@Ddźóűű à–^MVÊűűśűáÿűÿáűśûűöƒEB‹ìűöűáÿűÿáűśüűÍHHKUțűùöűùûűöűáÿűÿáűőțűùČ@LnDßëűőűáÿűÿáűôțűĆ@EŽC”êűôűáÿűÿáùôțűF@ČDgôűùśűôűáÿűÿ áűóőűâ@WEdéűőóűáÿűÿáűțóîOT‘æóűáÿűÿáűöáóőűáÿűÿáűűăùűùùűáÿùÿȚÛáŐùÿÍżŸŸœŒșáżÍŃÿŃÿŃÿŃÿûÿńđńđńńđđńđđńđńđńïîíéöüțîÿûÿđûòúűśńçćóîÿûÿïđùűóìâöóïÿûÿïúęùűöùśöđçńśòđÿûÿîúüùűùűüùÿűÿśôòçëśśóțòÿûÿîúóùÿűöőïăçśśöóòÿûÿíúôùűśőôńëàâțśőöóÿûÿíúęùűęùűțùÿűôóîèÜĘűțśôűțőÿûÿìúțùÿűęùűțù űśôòëćÙŚùűțśôûțöÿûÿëúęùțűÿùűțùÿś ôòëäŚÒùùűűśśóüöÿûÿìúüùűțùțűùűööńíćŚÍęùűśśòțśÿûÿêúțùűțùűùűęùÿűôïæŰËúęùűśśńțűÿûÿ ëùűùűűùùűùęűțùśőïçÚÌûúęùűśśđțùÿûÿêúűüùț$*,,+()(+ńèÛĐüûúúțùűśśïțúÿûÿéùęűÿùÿ$*//.+*)*-ńëȚŚüüûûúțùűśöîțûÿûÿ éúűűùűűù$8ńęű ùâ+)òêßĘőóțńóőùùűűőíțüÿûÿèúęùÿű'Gûùń)%ôìâÏÇÄțÁ ĂĆËÖȚíűôíțęÿûÿ%èùűűùùűű,Gűùùűűùò$%ôíßÓÌĆÂÁÁÈÈËÌÎÎÓăîïęÿûÿèùùüű,Fțűțùń$$őïȚŐÎÈÄÂÂÉÊËÎÏĐÏÏŐĘęÿûÿçùęűÿù,Eùűțùűń$$őđȚŚŚŃÌĆÂÈÉËÍÏŃÓÔÓÇęÿûÿ æùűűùùűű+BęùűùűŹŠöńçßÜÛŚĐÍÔÓŐŐŚŚÙÛßÖęÿûÿæúțű ùűù'8òűùűűùűùűöòđëèäáßÛćæçèéêćäçÚęÿûÿ%æùűűùùűù*'=EEBBÌśA9śóäßêéßßĘêíîîííììîÜęÿûÿ ćúűűùűùű&'('ț$ Áö$%űűîíśőțîüűùűśśćęÿûÿćùűùűùűùüűÿùęűöűúúùùúûùęűùűùűűćęÿûÿäùüűùűùűűùűùùűűùśűűùùűűùűùțűùűùùűäęÿûÿäùűùüűSęčö+&űű20ìÏ&%&5ùțűùűűùäęÿûÿäùùęűÿù šőűűæÄęűùűùűäęÿûÿăûűùűțűùűűùüűùțűùùüűùăęÿûÿăűùùűùűűùùűùùűùűűùțűùűűùüűùűùăęÿûÿâùűűùțű ő' űű+)űùűűùțűùűűùâęÿûÿâùűűùțűô űűűűùùűűțùțűâęÿûÿâùű ùùűùűőűùęűùűáęÿûÿâűùûűđęűòűűęęűùțűâęÿûÿáűűùüű Ib`^`Hűűț-+țûűùűáęÿûÿáűśûű ôűùűűśűáęÿûÿáűśáűöűáęÿûÿáűśôűùöűùûűöűáęÿûÿáűőțűùćűőűáęÿûÿáűôáűôűáęÿûÿáùôìűùśűôűáęÿûÿáűóőăűőóűáęÿûÿáűßóűáęÿûÿáűöáóőűáęÿûÿáűűăùűùùűáęÿüÿȚÛáŐțÿüÿÍżŸŸœŒșáżÍțÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿçśöđçńśòòÿçśôòçëśśóțôÿțÿüÿśÿüđőïăçśśöóôÿțÿüÿśÿüÎńëàâțśőöőÿțÿEćÿEțÿ ÿEćÿÿćEÿü”îèÜĘűțśôűțśÿțÿćDćÿÿćDÿćÿüČëćÙŚùűțśôûțűÿțÿDÿÿÿDÿÿÿü ČëäŚÒùùűűśśóüűÿțÿț ÿÿÿÿÿÿü±íćŚÍęùűśśòțùÿțÿț ÿÿÿÿÿÿüłïæŰËúęùűśśńțúÿțÿț ÿÿÿÿÿÿÿüŁÔÒÌÈûúęùűśśđțûÿçŹäÛÌÇüûúúțùűśśïțüÿç °íæÚÔüüûûúțùűśöîțęÿùÿ$čÁÀŸŒž”¶””š§s”ŒŹ±±°íèĘĘôîêíïóőùùűűőíțțÿùÿÄŃęĐÿÏĐŸČZG@FZÊÊŐìćȚÍ°š˜—±čĆËÖȚíűôíțÿÿùÿ'èùűűùùűűçŃU?Jq–`őőòíæȚՄ™Ÿˆ”żËÌÎÎÓăîïÿÿùÿèùùęű ńĘ^?;;TGŽęęúńçßĂ»‰{ˆ…Œ”ÇÎÏĐÏÏŐĘÿÿùÿçùęű!ùàŽ@=89VF8ęęùśëáFEMewu›žÍÏŃÓÔÓÇÿÿùÿ'æùűűùùóŚI?:8N>kŹęęùśìăڔ98Răęțęęúőîçá8HŁȘŻŒ_°ËéêćäçÚÿÿùÿæùűűùùáwBIDiòüüțęúöđçàčP4@ABP~ËèíììîÜÿÿùÿ'ćúűűùűà Vććóöúûüęüúśôńïe05:=AEeÓçùűśśćÿÿùÿćùűùűùàÜ[§ńóőśùțúűőôńœ.26:=@BKÓĘśùűűćÿÿùÿäùęű!áït{đòôöśűùűśóòđŻ/36:>ABBÓŰőùùűäÿÿùÿäùűùűűȚïâ„đńóôőțöôóđïł248ABDÒŰôśùűäÿÿùÿăüűàíțïÿđüńÿïțí䄯ÆgBBQÒÚóśűùăÿÿùÿăűùùűùîáîűïîûíÿì €CBlÓȚôűűùăÿÿùÿâûűÓśîüíìțë œCAšÖäöűűùâÿÿùÿâûűäßííțîúí ìêéèççcBQŃÚîśțűâÿÿùÿâúűÎçùíìëéçćțäçMAĄÓßòśțűáÿÿùÿâűùüűëËèüìëéçćâàßßáćè?oĐŐêőęűâÿÿùÿáűűùüűÛËăéçæäâáàȚÜÚÛàæëȘbÎŃàòśűűùűáÿÿùÿáűśûűśŰÈŚæćâßȚĘÜȚàäéäĐÆÎĐÚđöùűűśűáÿÿùÿáűśúűőŚËËÖàèțç éçĘÒÉÌÎÏÙđőęűöűáÿÿùÿáűśùű śßÎÌÊÉÍĐĐÊËÌÍțÎßôöüűöűáÿÿùÿáűőțűùûűìÚÒĐÏûÎÏÙëôöûűőűáÿÿùÿáűôśűöóëăÜÙÒÒŰÚäîôööúűôűáÿÿùÿáùôőűśôòęńóôțśùűôűáÿÿùÿáűóőńűśűśöűőóűáÿÿùÿáűßóűáÿÿùÿáűöáóőűáÿÿùÿáűűăùűùùűáÿÿúÿȚÛáŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿÿ„ꀌśöđçńśòòÿÿț}ÿ~}~}~~}ț~}~ę}ę~ }śôòçëśśóțôÿÿè{đőđêçśśöóôÿÿțwxțwțxwxțwûxęwÎńìćâțśőöőÿÿętßìߏtßìßttßìߏęt”îéàĘűțśôűțśÿÿęrȚrrŒȚrȚțrȚrȚțrȚęrČëćÜŚùűțśôûțűÿÿonnoëüo ‹ëĘoonŠȚë‹ęo nČëćÜÒùùűűśśóüűÿÿonnoëúoŠȚonno‹Ț‹țon±íæÜÍęùűśśòțùÿÿmmllĘmmˆĘmĘmm‰ĘlĘlmˆĘlmlmłïçĘËúęùűśśńțúÿÿęj‡Ęëʇj‡ëëʇj‡ĘëëüjŽïèßÌûúęùűśśđțûÿÿűiÿjôi jŽńéàĐüûúúțùűśśïțüÿÿ~śhgőh sŽńìâŚüüûûúțùűśöîțęÿùÿ čÁÀŸŒž”¶”¶¶ę”ÿ¶”ŽòëâĘőóțńóőùùűűőíțțÿùÿÄŃęĐÿÏĐÏûĐÿÏÛôìäÏÇÄțÁ ĂĆËÖȚíűôíțÿÿùÿ'èùűűùùűűùűűùùűűùùűűôíŃŠÒËÈÆÆÈÈËÌÎÎÓăîïÿÿùÿèùùśűțùűùűőï±·ŐÍËÈÉÉÊËÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùùűțùÿűùśőê•ÖŚŃÌÊÊÉÉËÍÏŃÓÔÓÇÿÿùÿæùűűùùęűęùűțùÿöÇŠăÜÛŚțÔ ÓŐŐŚŚÙÛßÖÿÿùÿæúțű"ùűùűűùűùòűùűùűöȘËëèßáääçæçèéêćäçÚÿÿùÿæùűűùùűęùæŽÍùűùùśäžèè럹ŰçëíîîííììîÜÿÿùÿćúűűùűùűűìș›ÁóùùűùùÀÀùűűßź›ÀìęűùűśśćÿÿùÿćùűùűùűìÀ›șćűùùțűò ćűűùùűÚ§›Àìűùűùűűćÿÿùÿäùțű"òƛŽæűűùűùùűűÓ­űűùùűűùűÓ§›șæűùùűäÿÿùÿäùűùű§›șśűźÓűűęùțű æĄ›Óùűűùäÿÿùÿ äùùűűìÀ›ĄÍűűùęűć›òűùűűùűűìÀ›șćűùűùűäÿÿùÿăûű óƛĄÓűűùűűÁÀęűùűòÀ›șæùüűùăÿÿùÿăűùùűùűűùòÀ›§æùűóĄćùțűùӛŽæûűùűùăÿÿùÿâűűùìșÓűűÓźęűùűșßțűùțűùűűùâÿÿùÿâùűùűűùțűźÙùûűÿùęűțùțűâÿÿùÿâśűÿùűùßźțűùńűáÿÿùÿâűùőűòúűùțűùüűùțűâÿÿùÿáűűùâűùűáÿÿùÿáűśúűùìűùűűśűáÿÿùÿáűśáűöűáÿÿùÿáűśôűùöűùûűöűáÿÿùÿáűőțűùćűőűáÿÿùÿáűôáűôűáÿÿùÿáùôìűùśűôűáÿÿùÿáűóőăűőóűáÿÿùÿáűßóűáÿÿùÿáűöáóőűáÿÿùÿáűűăùűùùűáÿÿúÿȚÛáŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿÿéźĂśöđçńśòòÿÿțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ Šśôòçëśśóțôÿÿśˆńóˆđőïăçśśöóôÿÿț„…ț„ț…„…ț„û…ę„Ńńëàâțśőöőÿÿűđぁ™ăđđù»îèÜĘűțśôűțśÿÿú ~ïă~ùžëćÙŚùűțśôûțűÿÿś|ï||ââ•ű| žëäŚÒùùűűśśóüűÿÿ{{țzÿ{ÿz{ïț{”ââz{țz{z{·íćŚÍęùűśśòțùÿÿ{{țzÿ{ÿz{ïę{zâz{țz{z{čïæŰËúęùűśśńțúÿÿęxÿyęxáxxïïá’ùxșïçÚÌûúęùűśśđțûÿÿùwîá’ôw xșńèÛĐüûúúțùűśśïțüÿÿŠśvuőv €șńëȚŚüüûûúțùűśöîțęÿùÿ ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțńóőùùűűőíțțÿùÿÇŐęÔÿÓÔÓÔÊŻüȘ°œșžŽ°ź«Ș©«ŻÆÖȚíűôíțÿÿùÿ'èùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîïÿÿùÿèùùúűÌëűțùűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùÀűțùÿűùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇÿÿùÿæùűűùùęűÀțùűțùÿöńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖÿÿùÿæúțűùűùűűÀűùüÀżŸŒč¶”äáŽäçæșèéêćäçÚÿÿùÿæùűűùùűțùÀęùűùùśśóîèëë攎·ŸâîííììîÜÿÿùÿćúűűùűùțűÀűęùűùùűűùțűùÀűùęűùűśśćÿÿùÿ ćùűùűùűùűűÀűűûÀżęÀùűÀüűùűùűűćÿÿùÿäùüűùűùÀűùűùùűűùśűűùùűűÀűùțűùűùùűäÿÿùÿäùűùûűÀöűęùÀűűùțűùűűùäÿÿùÿäùùęűÿùűÀűùöÀùűÀûűùűùűäÿÿùÿăûűùűűÀțűùűűùüűùűűÀűűùùüűùăÿÿùÿăűùùűùűűùűżùűùùűùűűùțűùűűżùûűùűùăÿÿùÿâűűÀűùöÀùűÀűűùțűùűűùâÿÿùÿâùűùÀűùțűùűùûűùÀęűțùțűâÿÿùÿâűűÀùùűùűùțűùüűÀśűáÿÿùÿâűùúűÀőűùűűÀùüűùțűâÿÿùÿáűűùűűôÀżțÀțűÀùűùűáÿÿùÿáűśțűÀțűùöűÀțűÀüűùűűśűáÿÿùÿáűśțűÀòűÀțűÀùűöűáÿÿùÿáűśțűÆëùűùüűÆțűÀűùûűöűáÿÿùÿáűőțűìĆëôűëÆűűÆùűőűáÿÿùÿáűôęűëĆòżÀÆëùűôűáÿÿùÿáùôìűùśűôűáÿÿùÿáűóőăűőóűáÿÿùÿáűßóűáÿÿùÿáűöáóőűáÿÿùÿáűűăùűùùűáÿÿúÿȚÛáŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿÿéźĂśöđçńśòòÿÿțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ Šśôòçëśśóțôÿÿńˆńùˆđőïăçśśöóôÿÿț„…ț„ț…„…ț„…đę…ę„Ńńëàâțśőöőÿÿśțđđù»îèÜĘűțśôűțśÿÿú~ïțîïùžëćÙŚùűțśôûțűÿÿś|ïț|ï|ïù| žëäŚÒùùűűśśóüűÿÿ{{țzÿ{ÿz{ïț{ézïz{țz{z{·íćŚÍęùűśśòțùÿÿ{{țzÿ{ÿz{țïí©zïz{țz{z{čïæŰËúęùűśśńțúÿÿęxÿyęxïxxyyxïùxșïçÚÌûúęùűśśđțûÿÿűwxïôw xșńèÛĐüûúúțùűśśïțüÿÿŠśvuőv €șńëȚŚüüûûúțùűśöîțęÿùÿ ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțńóőùùűűőíțțÿùÿÇŐęÔÿÓÔÓÔÊŻüȘ°œșžŽ°ź«Ș©«ŻÆÖȚíűôíțÿÿùÿ'èùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîïÿÿùÿèùùúűÌëűțùűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùÀűțùÿűùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇÿÿùÿæùűűùùęűÀțùűțùÿöńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖÿÿùÿæúțűùűùűűÀűùüÀżŸŒč¶”äáŽäçæșèéêćäçÚÿÿùÿæùűűùùűțùÀęùűùùśśóîèëë攎·ŸâîííììîÜÿÿùÿćúűűùűùțűÀűęùűùùűűùțűùÀűùęűùűśśćÿÿùÿ ćùűùűùűùűűÀűűûÀżęÀùűÀüűùűùűűćÿÿùÿäùüűùűùÀűùűùùűűùśűűùùűűÀűùțűùűùùűäÿÿùÿäùűùûűÀöűęùÀűűùțűùűűùäÿÿùÿäùùęűÿùűÀűùöÀùűÀûűùűùűäÿÿùÿăûűùűűÀțűùűűùüűùűűÀűűùùüűùăÿÿùÿăűùùűùűűùűżùűùùűùűűùțűùűűżùûűùűùăÿÿùÿâűűÀűùöÀùűÀűűùțűùűűùâÿÿùÿâùűùÀűùțűùűùûűùÀęűțùțűâÿÿùÿâűűÀùùűùűùțűùüűÀśűáÿÿùÿâűùúűÀőűùűűÀùüűùțűâÿÿùÿáűűùűűôÀżțÀțűÀùűùűáÿÿùÿáűśțűÀțűùöűÀțűÀüűùűűśűáÿÿùÿáűśțűÀòűÀțűÀùűöűáÿÿùÿáűśțűÆëùűùüűÆțűÀűùûűöűáÿÿùÿáűőțűìĆëôűëÆűűÆùűőűáÿÿùÿáűôęűëĆòżÀÆëùűôűáÿÿùÿáùôìűùśűôűáÿÿùÿáűóőăűőóűáÿÿùÿáűßóűáÿÿùÿáűöáóőűáÿÿùÿáűűăùűùùűáÿÿúÿȚÛáŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿÿéźĂśöđçńśòòÿÿțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ Šśôòçëśśóțôÿÿèˆđőïăçśśöóôÿÿț„…ț„ț…„…ț„û…ę„Ńńëàâțśőöőÿÿùțęęû»îèÜĘűțśôűțśÿÿú~ęțïï›~›ïûžëćÙŚùűțśôûțűÿÿù|ęț|ę|™ï|ï™û| žëäŚÒùùűűśśóüűÿÿ{{țzÿ{ zę{z{ę{{î˜î{țz{z{·íćŚÍęùűśśòțùÿÿ{{țzÿ{ zÿęęî˜{{—ń—{țz{z{čïæŰËúęùűśśńțúÿÿęxÿyÿxęęxÿyxîùxșïçÚÌûúęùűśśđțûÿÿùwęxxęwî•úw xșńèÛĐüûúúțùűśśïțüÿÿŠśvuőv €șńëȚŚüüûûúțùűśöîțęÿùÿ ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțńóőùùűűőíțțÿùÿÇŐęÔÿÓÔÓÔÊŻüȘ°œșžŽ°ź«Ș©«ŻÆÖȚíűôíțÿÿùÿ'èùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîïÿÿùÿèùùúűÌëűțùűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùÀűțùÿűùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇÿÿùÿæùűűùùęűÀțùűțùÿöńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖÿÿùÿæúțűùűùűűÀűùüÀżŸŒč¶”äáŽäçæșèéêćäçÚÿÿùÿæùűűùùűțùÀęùűùùśśóîèëë攎·ŸâîííììîÜÿÿùÿćúűűùűùțűÀűęùűùùűűùțűùÀűùęűùűśśćÿÿùÿ ćùűùűùűùűűÀűűûÀżęÀùűÀüűùűùűűćÿÿùÿäùüűùűùÀűùűùùűűùśűűùùűűÀűùțűùűùùűäÿÿùÿäùűùûűÀöűęùÀűűùțűùűűùäÿÿùÿäùùęűÿùűÀűùöÀùűÀûűùűùűäÿÿùÿăûűùűűÀțűùűűùüűùűűÀűűùùüűùăÿÿùÿăűùùűùűűùűżùűùùűùűűùțűùűűżùûűùűùăÿÿùÿâűűÀűùöÀùűÀűűùțűùűűùâÿÿùÿâùűùÀűùțűùűùûűùÀęűțùțűâÿÿùÿâűűÀùùűùűùțűùüűÀśűáÿÿùÿâűùúűÀőűùűűÀùüűùțűâÿÿùÿáűűùűűôÀżțÀțűÀùűùűáÿÿùÿáűśțűÀțűùöűÀțűÀüűùűűśűáÿÿùÿáűśțűÀòűÀțűÀùűöűáÿÿùÿáűśțűÆëùűùüűÆțűÀűùûűöűáÿÿùÿáűőțűìĆëôűëÆűűÆùűőűáÿÿùÿáűôęűëĆòżÀÆëùűôűáÿÿùÿáùôìűùśűôűáÿÿùÿáűóőăűőóűáÿÿùÿáűßóűáÿÿùÿáűöáóőűáÿÿùÿáűűăùűùùűáÿÿúÿȚÛáŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿÿéźĂśöđçńśòòÿÿțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ Šśôòçëśśóțôÿÿőˆïőˆđőïăçśśöóôÿÿț„…ț„ț…„…î„„û…ę„Ńńëàâțśőöőÿÿùî™âî™ââšù»îèÜĘűțśôűțśÿÿú ~íá˜íá˜áùžëćÙŚùűțśôûțűÿÿù|í•||íț|ïù| žëäŚÒùùűűśśóüűÿÿ{{țzÿ{ zí{z{í{{zïz{țz{z{·íćŚÍęùűśśòțùÿÿ{{țzÿ{ zí{z{íà”zíz{țz{z{čïæŰËúęùűśśńțúÿÿęxÿyÿxìțxì“àà’ùxșïçÚÌûúęùűśśđțûÿÿűwÿxôw xșńèÛĐüûúúțùűśśïțüÿÿŠśvuőv €șńëȚŚüüûûúțùűśöîțęÿùÿ ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțńóőùùűűőíțțÿùÿÇŐęÔÿÓÔÓÔÊŻüȘ°œșžŽ°ź«Ș©«ŻÆÖȚíűôíțÿÿùÿ'èùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîïÿÿùÿèùùúűÌëűțùűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùÀűțùÿűùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇÿÿùÿæùűűùùęűÀțùűțùÿöńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖÿÿùÿæúțűùűùűűÀűùüÀżŸŒč¶”äáŽäçæșèéêćäçÚÿÿùÿæùűűùùűțùÀęùűùùśśóîèëë攎·ŸâîííììîÜÿÿùÿćúűűùűùțűÀűęùűùùűűùțűùÀűùęűùűśśćÿÿùÿ ćùűùűùűùűűÀűűûÀżęÀùűÀüűùűùűűćÿÿùÿäùüűùűùÀűùűùùűűùśűűùùűűÀűùțűùűùùűäÿÿùÿäùűùûűÀöűęùÀűűùțűùűűùäÿÿùÿäùùęűÿùűÀűùöÀùűÀûűùűùűäÿÿùÿăûűùűűÀțűùűűùüűùűűÀűűùùüűùăÿÿùÿăűùùűùűűùűżùűùùűùűűùțűùűűżùûűùűùăÿÿùÿâűűÀűùöÀùűÀűűùțűùűűùâÿÿùÿâùűùÀűùțűùűùûűùÀęűțùțűâÿÿùÿâűűÀùùűùűùțűùüűÀśűáÿÿùÿâűùúűÀőűùűűÀùüűùțűâÿÿùÿáűűùűűôÀżțÀțűÀùűùűáÿÿùÿáűśțűÀțűùöűÀțűÀüűùűűśűáÿÿùÿáűśțűÀòűÀțűÀùűöűáÿÿùÿáűśțűÆëùűùüűÆțűÀűùûűöűáÿÿùÿáűőțűìĆëôűëÆűűÆùűőűáÿÿùÿáűôęűëĆòżÀÆëùűôűáÿÿùÿáùôìűùśűôűáÿÿùÿáűóőăűőóűáÿÿùÿáűßóűáÿÿùÿáűöáóőűáÿÿùÿáűűăùűùùűáÿÿúÿȚÛáŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿÿéźĂśöđçńśòòÿÿțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ Šśôòçëśśóțôÿÿôˆïöˆđőïăçśśöóôÿÿț„…ț„ț…„…„î„û…ę„Ńńëàâțśőöőÿÿù™âîîțîâ™ú»îèÜĘűțśôűțśÿÿú~á˜țí~áúžëćÙŚùűțśôûțűÿÿù|ÿá•||íț|íú| žëäŚÒùùűűśśóüűÿÿ{{țzÿ{ÿz ”àÖ{í{z{í{țz{z{·íćŚÍęùűśśòțùÿÿ{{țzÿ{ÿz {”à{í{z{í{țz{z{čïæŰËúęùűśśńțúÿÿęxÿyÿxÿìàxxíyxxìúxșïçÚÌûúęùűśśđțûÿÿűwÿxôw xșńèÛĐüûúúțùűśśïțüÿÿŠśvuőv €șńëȚŚüüûûúțùűśöîțęÿùÿ ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțńóőùùűűőíțțÿùÿÇŐęÔÿÓÔÓÔÊŻüȘ°œșžŽ°ź«Ș©«ŻÆÖȚíűôíțÿÿùÿ'èùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîïÿÿùÿèùùúűÌëűțùűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùÀűțùÿűùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇÿÿùÿæùűűùùęűÀțùűțùÿöńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖÿÿùÿæúțűùűùűűÀűùüÀżŸŒč¶”äáŽäçæșèéêćäçÚÿÿùÿæùűűùùűțùÀęùűùùśśóîèëë攎·ŸâîííììîÜÿÿùÿćúűűùűùțűÀűęùűùùűűùțűùÀűùęűùűśśćÿÿùÿ ćùűùűùűùűűÀűűûÀżęÀùűÀüűùűùűűćÿÿùÿäùüűùűùÀűùűùùűűùśűűùùűűÀűùțűùűùùűäÿÿùÿäùűùûűÀöűęùÀűűùțűùűűùäÿÿùÿäùùęűÿùűÀűùöÀùűÀûűùűùűäÿÿùÿăûűùűűÀțűùűűùüűùűűÀűűùùüűùăÿÿùÿăűùùűùűűùűżùűùùűùűűùțűùűűżùûűùűùăÿÿùÿâűűÀűùöÀùűÀűűùțűùűűùâÿÿùÿâùűùÀűùțűùűùûűùÀęűțùțűâÿÿùÿâűűÀùùűùűùțűùüűÀśűáÿÿùÿâűùúűÀőűùűűÀùüűùțűâÿÿùÿáűűùűűôÀżțÀțűÀùűùűáÿÿùÿáűśțűÀțűùöűÀțűÀüűùűűśűáÿÿùÿáűśțűÀòűÀțűÀùűöűáÿÿùÿáűśțűÆëùűùüűÆțűÀűùûűöűáÿÿùÿáűőțűìĆëôűëÆűűÆùűőűáÿÿùÿáűôęűëĆòżÀÆëùűôűáÿÿùÿáùôìűùśűôűáÿÿùÿáűóőăűőóűáÿÿùÿáűßóűáÿÿùÿáűöáóőűáÿÿùÿáűűăùűùùűáÿÿúÿȚÛáŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿÿéźĂśöđçńśòòÿÿțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ Šśôòçëśśóțôÿÿèˆđőïăçśśöóôÿÿț„…ț„ț…„…ț„û…ę„Ńńëàâțśőöőÿÿü‡áûá‡țû‚ûü»îèÜĘűțśôűțśÿÿüá~áțû~ûüžëćÙŚùűțśôûțűÿÿü|ûü|üû|üûț| žëäŚÒùùűűśśóüűÿÿ{{țzû{zz{z{{û{z{z{ûzz{z{·íćŚÍęùűśśòțùÿÿ{{țzà{zzàz{{û{z{z{ûzz{z{čïæŰËúęùűśśńțúÿÿęxyßûß~țxÿyśxșïçÚÌûúęùűśśđțûÿÿűwÿxôw xșńèÛĐüûúúțùűśśïțüÿÿŠśvuőv €șńëȚŚüüûûúțùűśöîțęÿùÿ ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțńóőùùűűőíțțÿùÿÇŐęÔÿÓÔÓÔÊŻüȘ°œșžŽ°ź«Ș©«ŻÆÖȚíűôíțÿÿùÿ'èùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîïÿÿùÿèùùúűÌëűțùűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùÀűțùÿűùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇÿÿùÿæùűűùùęűÀțùűțùÿöńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖÿÿùÿæúțűùűùűűÀűùüÀżŸŒč¶”äáŽäçæșèéêćäçÚÿÿùÿæùűűùùűțùÀęùűùùśśóîèëë攎·ŸâîííììîÜÿÿùÿćúűűùűùțűÀűęùűùùűűùțűùÀűùęűùűśśćÿÿùÿ ćùűùűùűùűűÀűűûÀżęÀùűÀüűùűùűűćÿÿùÿäùüűùűùÀűùűùùűűùśűűùùűűÀűùțűùűùùűäÿÿùÿäùűùûűÀöűęùÀűűùțűùűűùäÿÿùÿäùùęűÿùűÀűùöÀùűÀûűùűùűäÿÿùÿăûűùűűÀțűùűűùüűùűűÀűűùùüűùăÿÿùÿăűùùűùűűùűżùűùùűùűűùțűùűűżùûűùűùăÿÿùÿâűűÀűùöÀùűÀűűùțűùűűùâÿÿùÿâùűùÀűùțűùűùûűùÀęűțùțűâÿÿùÿâűűÀùùűùűùțűùüűÀśűáÿÿùÿâűùúűÀőűùűűÀùüűùțűâÿÿùÿáűűùűűôÀżțÀțűÀùűùűáÿÿùÿáűśțűÀțűùöűÀțűÀüűùűűśűáÿÿùÿáűśțűÀòűÀțűÀùűöűáÿÿùÿáűśțűÆëùűùüűÆțűÀűùûűöűáÿÿùÿáűőțűìĆëôűëÆűűÆùűőűáÿÿùÿáűôęűëĆòżÀÆëùűôűáÿÿùÿáùôìűùśűôűáÿÿùÿáűóőăűőóűáÿÿùÿáűßóűáÿÿùÿáűöáóőűáÿÿùÿáűűăùűùùűáÿÿúÿȚÛáŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿÿéźĂśöđçńśòòÿÿțŠÿ‹Š‹Š‹‹Šț‹Š‹ęŠę‹ ŠśôòçëśśóțôÿÿśˆÀÏôˆđőïăçśśöóôÿÿț„…ț„ț…ÀÏțˆ…„…ú„Ńńëàâțśőöőÿÿüÿæÿæ’œçśÿœÿæÿæ’ꁻîèÜĘűțśôűțśÿÿüÿ»~ÔÌŒî‰Łÿÿ»ÔÌęžëćÙŚùűțśôûțűÿÿü|ÿ|°Ü»Ìÿ|ÿ|°Üę| žëäŚÒùùűűśśóüűÿÿ{{țzÿčzÓÁčË|ÿzÿžzÓÁz{z{·íćŚÍęùűśśòțùÿÿ{{țzÿćÿ䄾Êzÿzÿäÿć„z{z{čïæŰËúęùűśśńțúÿÿęxyÿŠțxțzÿ{xÿŠyyüxșïçÚÌûúęùűśśđțûÿÿüwÿ‰wwțxÿyxwÿ‰ûw xșńèÛĐüûúúțùűśśïțüÿÿŠűvüwűv €șńëȚŚüüûûúțùűśöîțęÿùÿ ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțńóőùùűűőíțțÿùÿÇŐęÔÿÓÔÓÔÊŻüȘ°œșžŽ°ź«Ș©«ŻÆÖȚíűôíțÿÿùÿ'èùűűùùűűùűëÆìűűùùűűôíæÚÒËÈż«ÈÈŻÌÎÎÓăîïÿÿùÿèùùúűÌëűțùűùűőïçȚŐÍËšÀÉÊšÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùÀűțùÿűùśőđéàŚŃÌŁÊÉÉŠÍÏŃÓÔÓÇÿÿùÿæùűűùùęűÀțùűțùÿöńêăÜÛŚȘÔÔÓȘŐŚŚÙÛßÖÿÿùÿæúțűùűùűűÀűùüÀżŸŒč¶”äáŽäçæșèéêćäçÚÿÿùÿæùűűùùűțùÀęùűùùśśóîèëë攎·ŸâîííììîÜÿÿùÿćúűűùűùțűÀűęùűùùűűùțűùÀűùęűùűśśćÿÿùÿ ćùűùűùűùűűÀűűûÀżęÀùűÀüűùűùűűćÿÿùÿäùüűùűùÀűùűùùűűùśűűùùűűÀűùțűùűùùűäÿÿùÿäùűùûűÀöűęùÀűűùțűùűűùäÿÿùÿäùùęűÿùűÀűùöÀùűÀûűùűùűäÿÿùÿăûűùűűÀțűùűűùüűùűűÀűűùùüűùăÿÿùÿăűùùűùűűùűżùűùùűùűűùțűùűűżùûűùűùăÿÿùÿâűűÀűùöÀùűÀűűùțűùűűùâÿÿùÿâùűùÀűùțűùűùûűùÀęűțùțűâÿÿùÿâűűÀùùűùűùțűùüűÀśűáÿÿùÿâűùúűÀőűùűűÀùüűùțűâÿÿùÿáűűùűűôÀżțÀțűÀùűùűáÿÿùÿáűśțűÀțűùöűÀțűÀüűùűűśűáÿÿùÿáűśțűÀòűÀțűÀùűöűáÿÿùÿáűśțűÆëùűùüűÆțűÀűùûűöűáÿÿùÿáűőțűìĆëôűëÆűűÆùűőűáÿÿùÿáűôęűëĆòżÀÆëùűôűáÿÿùÿáùôìűùśűôűáÿÿùÿáűóőăűőóűáÿÿùÿáűßóűáÿÿùÿáűöáóőűáÿÿùÿáűűăùűùùűáÿÿúÿȚÛáŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿÿ„ꀌśöđçńśòòÿÿț}ÿ~}~}~~}ț~}~ę}ę~ }śôòçëśśóțôÿÿï{ïû{đőđêçśśöóôÿÿțwxțwțxwxțwțxïxxęwÎńìćâțśőöőÿÿętàtàtîàîîàtîût”îéàĘűțśôűțśÿÿęrààrîύîràrîûrČëćÜŚùűțśôûțűÿÿonnoo‹ă‹ooíoníoníoíüo nČëćÜÒùùűűśśóüűÿÿonnoo‹í‹ooíoníoníoíüon±íæÜÍęùűśśòțùÿÿmmllˆßŸíˆmímmímlílíțlmlmłïçĘËúęùűśśńțúÿÿęjȚ‡j‡ȚjíjjíkjíjíûjŽïèßÌûúęùűśśđțûÿÿűiÿjôi jŽńéàĐüûúúțùűśśïțüÿÿ~śhgőh sŽńìâŚüüûûúțùűśöîțęÿùÿ čÁÀŸŒž”¶”¶¶ę”ÿ¶”ŽòëâĘőóțńóőùùűűőíțțÿùÿÄŃęĐÿÏĐÏûĐÿÏÛôìäÏÇÄțÁ ĂĆËÖȚíűôíțÿÿùÿ'èùűűùùűűùűűùùűűùùűűôíŃŠÒËÈÆÆÈÈËÌÎÎÓăîïÿÿùÿèùùśűțùűùűőï±·ŐÍËÈÉÉÊËÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùùűțùÿűùśőê•ÖŚŃÌÊÊÉÉËÍÏŃÓÔÓÇÿÿùÿæùűűùùęűęùűțùÿöÇŠăÜÛŚțÔ ÓŐŐŚŚÙÛßÖÿÿùÿæúțű"ùűùűűùűùòűùűùűöȘËëèßáääçæçèéêćäçÚÿÿùÿæùűűùùűęùæŽÍùűùùśäžèè럹ŰçëíîîííììîÜÿÿùÿćúűűùűùűűìș›ÁóùùűùùÀÀùűűßź›ÀìęűùűśśćÿÿùÿćùűùűùűìÀ›șćűùùțűò ćűűùùűÚ§›Àìűùűùűűćÿÿùÿäùțű"òƛŽæűűùűùùűűÓ­űűùùűűùűÓ§›șæűùùűäÿÿùÿäùűùű§›șśűźÓűűęùțű æĄ›Óùűűùäÿÿùÿ äùùűűìÀ›ĄÍűűùęűć›òűùűűùűűìÀ›șćűùűùűäÿÿùÿăûű óƛĄÓűűùűűÁÀęűùűòÀ›șæùüűùăÿÿùÿăűùùűùűűùòÀ›§æùűóĄćùțűùӛŽæûűùűùăÿÿùÿâűűùìșÓűűÓźęűùűșßțűùțűùűűùâÿÿùÿâùűùűűùțűźÙùûűÿùęűțùțűâÿÿùÿâśűÿùűùßźțűùńűáÿÿùÿâűùőűòúűùțűùüűùțűâÿÿùÿáűűùâűùűáÿÿùÿáűśúűùìűùűűśűáÿÿùÿáűśáűöűáÿÿùÿáűśôűùöűùûűöűáÿÿùÿáűőțűùćűőűáÿÿùÿáűôáűôűáÿÿùÿáùôìűùśűôűáÿÿùÿáűóőăűőóűáÿÿùÿáűßóűáÿÿùÿáűöáóőűáÿÿùÿáűűăùűùùűáÿÿúÿȚÛáŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿÿéșËśöđçńśòòÿÿțšÿ›š›š››šț›š›ęšę› šśôòçëśśóțôÿÿö˜ńô˜đőïăçśśöóôÿÿț”•ț”ț•”•ț”û•ę”Ńńëàâțśőöőÿÿû‘ęđ‘đ‘ęđŠú‘»îèÜĘűțśôűțśÿÿú ŽđđđŽđúžëćÙŚùűțśôûțűÿÿùŒïąŒïŒńțŒńúŒ žëäŚÒùùűűśśóüűÿÿ‹‹țŠÿ‹  ï‹Šï‹ï‹Š‹ï‹țŠ‹Š‹·íćŚÍęùűśśòțùÿÿęˆÿ‰ŸïŸˆˆïˆęïŸúˆčïæŰËúęùűśśńțúÿÿû‡ęïˆï‡ïś‡ˆșïçÚÌûúęùűśśđțûÿÿ˜ś†…†îś† ŽșńèÛĐüûúúțùűśśïțüÿÿ˜ś†…ő† ŽșńëȚŚüüûûúțùűśöîțęÿùÿ ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțńóőùùűűőíțțÿùÿÇŐęÔÿÓÔÓûÔÿÓĘôìâÏÇÄțÁ ĂĆËÖȚíűôíțÿÿùÿ'èùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîïÿÿùÿèùùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇÿÿùÿæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖÿÿùÿæúțű"ùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÿÿùÿæùűűùùűùùűùùśśóîèëëćéçëíîîííììîÜÿÿùÿćúűűùűùüűęùűùùűűùțűùűűùęűùűśśćÿÿùÿćùűùűùűùüűÿùęűöțűÿùűùüűùűùűűćÿÿùÿäùüűùűùűűùűùùűűùśűűùùűűùűùțűùűùùűäÿÿțÿÓbí6aÍțűęùțűùțűùűűùäÿÿÿÿÓaëX=ÍűùűűùùűùűùűäÿÿÿÿaéX`Ïäűùüűÿùüűùăÿÿÿÿ4C@FHțFțDÿCțBÿAț@ ?FCC4ÏŰűùűűùùûűùűùăÿÿÿÿ4CQíCQC4ÏŰùűùęűùțűùűűùâÿÿÿÿ2BBJń#$JBB4ÏŰțűÿùęűțùțűâÿÿÿÿ1DDI%ń/)I==2ÏŰòűáÿÿÿÿ0CCI%ü;àțßàû;/I;;0ÏŰűùțűùüűùțűâÿÿÿÿ0BBI%üFüĘûF4I::/ÏŰôűùűáÿÿÿÿ/AAJ%ü8ÿÎÍÎÒû8/J99/ÏŰśűùűűśűáÿÿÿÿ.@@I%üFęàßûF6I88.ÏŰôűöűáÿÿÿÿ->>H&üAŚțÖŚûA5H66-ÏŰûűùûűöűáÿÿÿÿ,>>H&țAČúÔČęA5H66-ÏŰôűőűáÿÿÿÿ +>>H&1148ŒęÌÏŒ8ę4.H55+ÏŰôűôűáÿÿÿÿ)==G&ț>@KÏțÚÍLüA 7G44)ÏŰűűùśűôűáÿÿÿÿ(;;G&ü:QÆÍÆQû:4G22(ÏŰőűőóűáÿÿÿÿ(::F&û6^Š^ú61F11(ÎÖóóűáÿÿÿÿ':Q:ïX:Q1'ÎÖôóőűáÿÿÿÿ'ú6ț5ÿ4ț2ü10ț/'ÏŰöùűùùűáÿÿÿÿ&:6:5544ț2ü1ÿ0ț/.2..&ïáŐÿÿÿű%&%%&%%&ü%&%&&%ïżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿÿéșËśöđçńśòòÿÿțšÿ›š›š››šț›š›ęšę› šśôòçëśśóțôÿÿè˜đőïăçśśöóôÿÿ””đ•ț”ț•”•ț”û•ę”Ńńëàâțśőöőÿÿ‘țđ‘æđđ‘‘đŠæ‘ŠæđŠđ‘ęđ‘»îèÜĘűțśôűțśÿÿđèŽđđć„ćŽđđț „đžëćÙŚùűțśôûțűÿÿŒŒïŒąäńńïŒïąŒŒæțŒńțŒ䌌žëäŚÒùùűűśśóüűÿÿ‹‹ïŠï‹‹Šï‹ïĄ‹‹äŠ‹ï äŠ‹·íćŚÍęùűśśòțùÿÿˆˆïˆä‰Ÿïïˆïˆˆ‰ ăïŸïˆŸăˆŸˆčïæŰËúęùűśśńțúÿ ÿ‡‡ïïžăïžïˆï‡ïü‡ï‡ęïˆșïçÚÌûúęùűśśđțûÿÿˆś†…ț†țîú†șńèÛĐüûúúțùűśśïțüÿÿ˜ś†…ő† ŽșńëȚŚüüûûúțùűśöîțęÿùÿ ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțńóőùùűűőíțțÿùÿÇŐęÔÿÓÔÓûÔÿÓĘôìâÏÇÄțÁ ĂĆËÖȚíűôíțÿÿùÿ'èùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîïÿÿùÿèùùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇÿÿùÿæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖÿÿùÿæúțű"ùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÿÿùÿæùűűùùűùùűùùśśóîèëëćéçëíîîííììîÜÿÿùÿćúűűùűùüűęùűùùűűùțűùűűùęűùűśśćÿÿùÿćùűùűùűùüűÿùęűöțűÿùűùüűùűùűűćÿÿùÿäùüűùűùűűùűùùűűùśűűùùűűùűùțűùűùùűäÿÿțÿÓbí6aÍțűęùțűùțűùűűùäÿÿÿÿÓaëX=ÍűùűűùùűùűùűäÿÿÿÿaéX`Ïäűùüűÿùüűùăÿÿÿÿ4C@FHțFțDÿCțBÿAț@ ?FCC4ÏŰűùűűùùûűùűùăÿÿÿÿ4CQíCQC4ÏŰùűùęűùțűùűűùâÿÿÿÿ2BBJń#$JBB4ÏŰțűÿùęűțùțűâÿÿÿÿ1DDI%ń/)I==2ÏŰòűáÿÿÿÿ0CCI%ü;àțßàû;/I;;0ÏŰűùțűùüűùțűâÿÿÿÿ0BBI%üFüĘûF4I::/ÏŰôűùűáÿÿÿÿ/AAJ%ü8ÿÎÍÎÒû8/J99/ÏŰśűùűűśűáÿÿÿÿ.@@I%üFęàßûF6I88.ÏŰôűöűáÿÿÿÿ->>H&üAŚțÖŚûA5H66-ÏŰûűùûűöűáÿÿÿÿ,>>H&țAČúÔČęA5H66-ÏŰôűőűáÿÿÿÿ +>>H&1148ŒęÌÏŒ8ę4.H55+ÏŰôűôűáÿÿÿÿ)==G&ț>@KÏțÚÍLüA 7G44)ÏŰűűùśűôűáÿÿÿÿ(;;G&ü:QÆÍÆQû:4G22(ÏŰőűőóűáÿÿÿÿ(::F&û6^Š^ú61F11(ÎÖóóűáÿÿÿÿ':Q:ïX:Q1'ÎÖôóőűáÿÿÿÿ'ú6ț5ÿ4ț2ü10ț/'ÏŰöùűùùűáÿÿÿÿ&:6:5544ț2ü1ÿ0ț/.2..&ïáŐÿÿÿű%&%%&%%&ü%&%&&%ïżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿÿéșËśöđçńśòòÿÿțšÿ›š›š››šț›š›ęšę› šśôòçëśśóțôÿÿó˜ńś˜đőïăçśśöóôÿÿ””đ•ț”ț•”•””đû•ę”Ńńëàâțśőöőÿÿ‘țđŠæđđ‘‘đ‘æ‘đ‘æđ‘‘ęđ‘»îèÜĘűțśôűțśÿÿđćŽđđÜ„ì쀏ìț „đžëćÙŚùűțśôûțűÿÿŒŒïŒąäńńïŒïąŒŒïąŒŒïțŒïąŒžëäŚÒùùűűśśóüűÿ ÿ‹‹ïŠä‹‹Šï‹ïț‹ŠïŠŠ ïŠ‹·íćŚÍęùűśśòțùÿÿˆˆïˆä‰ˆăïˆïˆˆ‰ïˆčïæŰËúęùűśśńțúÿÿ‡‡ïïžïïžïˆï‡ï‡đ‡ïęïˆșïçÚÌûúęùűśśđțûÿÿ˜ś†…ő† ŽșńèÛĐüûúúțùűśśïțüÿÿ˜ś†…ő† ŽșńëȚŚüüûûúțùűśöîțęÿùÿ ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțńóőùùűűőíțțÿùÿÇŐęÔÿÓÔÓûÔÿÓĘôìâÏÇÄțÁ ĂĆËÖȚíűôíțÿÿùÿ'èùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîïÿÿùÿèùùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇÿÿùÿæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖÿÿùÿæúțű"ùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÿÿùÿæùűűùùűùùűùùśśóîèëëćéçëíîîííììîÜÿÿùÿćúűűùűùüűęùűùùűűùțűùűűùęűùűśśćÿÿùÿćùűùűùűùüűÿùęűöțűÿùűùüűùűùűűćÿÿùÿäùüűùűùűűùűùùűűùśűűùùűűùűùțűùűùùűäÿÿțÿÓbí6aÍțűęùțűùțűùűűùäÿÿÿÿÓaëX=ÍűùűűùùűùűùűäÿÿÿÿaéX`Ïäűùüűÿùüűùăÿÿÿÿ4C@FHțFțDÿCțBÿAț@ ?FCC4ÏŰűùűűùùûűùűùăÿÿÿÿ4CQíCQC4ÏŰùűùęűùțűùűűùâÿÿÿÿ2BBJń#$JBB4ÏŰțűÿùęűțùțűâÿÿÿÿ1DDI%ń/)I==2ÏŰòűáÿÿÿÿ0CCI%ü;àțßàû;/I;;0ÏŰűùțűùüűùțűâÿÿÿÿ0BBI%üFüĘûF4I::/ÏŰôűùűáÿÿÿÿ/AAJ%ü8ÿÎÍÎÒû8/J99/ÏŰśűùűűśűáÿÿÿÿ.@@I%üFęàßûF6I88.ÏŰôűöűáÿÿÿÿ->>H&üAŚțÖŚûA5H66-ÏŰûűùûűöűáÿÿÿÿ,>>H&țAČúÔČęA5H66-ÏŰôűőűáÿÿÿÿ +>>H&1148ŒęÌÏŒ8ę4.H55+ÏŰôűôűáÿÿÿÿ)==G&ț>@KÏțÚÍLüA 7G44)ÏŰűűùśűôűáÿÿÿÿ(;;G&ü:QÆÍÆQû:4G22(ÏŰőűőóűáÿÿÿÿ(::F&û6^Š^ú61F11(ÎÖóóűáÿÿÿÿ':Q:ïX:Q1'ÎÖôóőűáÿÿÿÿ'ú6ț5ÿ4ț2ü10ț/'ÏŰöùűùùűáÿÿÿÿ&:6:5544ț2ü1ÿ0ț/.2..&ïáŐÿÿÿű%&%%&%%&ü%&%&&%ïżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿÿéșËśöđçńśòòÿÿțšÿ›š›š››šț›š›ęšę› šśôòçëśśóțôÿÿè˜đőïăçśśöóôÿÿț”•ț”ț•”•ț”û•ę”Ńńëàâțśőöőÿÿú‘ đ‘æ‘Šæđđ‘’đ‘đü‘»îèÜĘűțśôűțśÿÿúïć„ćțđŽđđ„üžëćÙŚùűțśôûțűÿÿúŒïąțŒäńńïŒïąûŒ žëäŚÒùùűűśśóüűÿÿ‹‹țŠÿ‹Šäț‹ï‹ï‹țŠ‹Š‹·íćŚÍęùűśśòțùÿÿęˆÿ‰ˆïțˆ㈉ïïˆïúˆčïæŰËúęùűśśńțúÿÿú‡ ˆžăï‡ï‡ïû‡ˆșïçÚÌûúęùűśśđțûÿÿ˜ś†…ő† ŽșńèÛĐüûúúțùűśśïțüÿÿ˜ś†…ő† ŽșńëȚŚüüûûúțùűśöîțęÿùÿ ŸÆĆÄÁŸ»Œ»ŒŒę»ÿŒ»șòêßĘőóțńóőùùűűőíțțÿùÿÇŐęÔÿÓÔÓûÔÿÓĘôìâÏÇÄțÁ ĂĆËÖȚíűôíțÿÿùÿ'èùűűùùűűùűűùùűűùùűűôíæÚÒËÈÆÆÈÈËÌÎÎÓăîïÿÿùÿèùùśűțùűùűőïçȚŐÍËÈÉÉÊËÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùùűțùÿűùśőđéàŚŃÌÊÊÉÉËÍÏŃÓÔÓÇÿÿùÿæùűűùùęűęùűțùÿöńêăÜÛŚțÔ ÓŐŐŚŚÙÛßÖÿÿùÿæúțű"ùűùűűùűùűűùűùűöòđëèäáääçæçèéêćäçÚÿÿùÿæùűűùùűùùűùùśśóîèëëćéçëíîîííììîÜÿÿùÿćúűűùűùüűęùűùùűűùțűùűűùęűùűśśćÿÿùÿćùűùűùűùüűÿùęűöțűÿùűùüűùűùűűćÿÿùÿäùüűùűùűűùűùùűűùśűűùùűűùűùțűùűùùűäÿÿțÿÓbí6aÍțűęùțűùțűùűűùäÿÿÿÿÓaëX=ÍűùűűùùűùűùűäÿÿÿÿaéX`Ïäűùüűÿùüűùăÿÿÿÿ4C@FHțFțDÿCțBÿAț@ ?FCC4ÏŰűùűűùùûűùűùăÿÿÿÿ4CQíCQC4ÏŰùűùęűùțűùűűùâÿÿÿÿ2BBJń#$JBB4ÏŰțűÿùęűțùțűâÿÿÿÿ1DDI%ń/)I==2ÏŰòűáÿÿÿÿ0CCI%ü;àțßàû;/I;;0ÏŰűùțűùüűùțűâÿÿÿÿ0BBI%üFüĘûF4I::/ÏŰôűùűáÿÿÿÿ/AAJ%ü8ÿÎÍÎÒû8/J99/ÏŰśűùűűśűáÿÿÿÿ.@@I%üFęàßûF6I88.ÏŰôűöűáÿÿÿÿ->>H&üAŚțÖŚûA5H66-ÏŰûűùûűöűáÿÿÿÿ,>>H&țAČúÔČęA5H66-ÏŰôűőűáÿÿÿÿ +>>H&1148ŒęÌÏŒ8ę4.H55+ÏŰôűôűáÿÿÿÿ)==G&ț>@KÏțÚÍLüA 7G44)ÏŰűűùśűôűáÿÿÿÿ(;;G&ü:QÆÍÆQû:4G22(ÏŰőűőóűáÿÿÿÿ(::F&û6^Š^ú61F11(ÎÖóóűáÿÿÿÿ':Q:ïX:Q1'ÎÖôóőűáÿÿÿÿ'ú6ț5ÿ4ț2ü10ț/'ÏŰöùűùùűáÿÿÿÿ&:6:5544ț2ü1ÿ0ț/.2..&ïáŐÿÿÿű%&%%&%%&ü%&%&&%ńżÍÿÿÍżŸŸœŒșíżÍîÿŃÿŃÿùÿńđńđńńđđńđđńđńđńïîíéöüțđÿùÿđûòúűśńçćóđÿùÿïđùűóìâöóńÿèh‘śöđçńśòòÿÿ&ÿ' &''&'&''&'&'&'ę& '&''śôòçëśśóțôÿì$üę$đőïăçśśöóôÿ țțÿ   ü Îńëàâțśőöőÿęțûÿûțûțûûûÿę”îèÜĘűțśôűțśÿțûț ûûûûûûüČëćÙŚùűțśôûțűÿęÿû ûûûûțûü ČëäŚÒùùűűśśóüűÿû ûûûûûțûü±íćŚÍęùűśśòțùÿțÿțûûûęûęłïæŰËúęùűśśńțúÿę ÿÿûęûț û ûü ŽïçÚÌûúęùűśśđțûÿ" ŽńèÛĐüûúúțùűśśïțüÿÿ ÿ ę  ü  ț ,ŽńëȚŚüüûûúțùűśöîțęÿùÿ ¶ÁŸ»ž””¶”¶¶ę”ÿ¶”ŽòêßĘőóțńóőùùűűőíțțÿùÿÄŃęĐÿÏĐÏûĐÿÏÛôìâÏÇÄțÁ ĂĆËÖȚíűôíțÿÿùÿ'èùűűùùűűùűűùùűűùùűűôíæÚݚŽźÈÈËÌÎÎÓăîïÿÿùÿèùùśűțùűùűőïá—\RTUžÉÊËÎÏĐÏÏŐĘÿÿùÿçùęűÿùűùùűțùÿűùśőŃXGJMNN›ÉÉËÍÏŃÓÔÓÇÿÿùÿæùűűùùęűęùűțùöÉI@ACFHJŸÔÓŐŐŚŚÙÛßÖÿÿùÿæúțű"ùűùűűùűùűűùűùăN@?@@ADS±çæçèéêćäçÚÿÿùÿæùűűùùűùùűùśh@@??D€ÉéçëíîîííììîÜÿÿùÿćúűűùűùüűęùűŻę@CżűùűűùęűùűśśćÿÿùÿćùűùűùűùüűÿùűđOț@AŽùùűùüűùűùűűćÿÿùÿäùüűùűùűűùűùùȘ@??@yùùűűùűùțűùűùùűäÿÿùÿäùűùöűöZț?@ÖęùțűùțűùűűùäÿÿùÿäùùęűÿùțűùűűÄę?@țBDùűùűùűäÿÿùÿăûűùûűùxù?AęűÿùüűùăÿÿùÿăűùùűùűűùűűùűùäAù?Aűùùûűùűùăÿÿùÿâűűùűùű™ű?AęűùțűùűűùâÿÿùÿâùűùűűùđQę?DęEFùùęűțùțűâÿÿùÿâśűÿù™ę?•űùńűáÿÿùÿâűùűűßEț?Báęűùțűùüűùțűâÿÿùÿáűűùúűövę?ˆđűùűáÿÿùÿáűśúűî>ț?Făóűùűűśűáÿÿùÿáűśüű°‰N>?ț>Șïűöűáÿÿùÿáűśüűÿ?ü>xőűùûűöűáÿÿùÿáűőțűùű??ę>wóîűőűáÿÿùÿáűôüű?ț>Eôíűôűáÿÿùÿáùôüű>?`áöűùśűôűáÿÿùÿáűóőęűăôéűőóűáÿÿùÿáűßóűáÿÿùÿáűöáóőűáÿÿùÿáűűăùűùùűáÿÿúÿȚÛáŐÿúÿÍżŸŸœŒșáżÍÿŃÿŃÿńÿśöśöśśöśööśśöśőóđôśęőÿńÿśúôüúöééűțöÿńÿśùțûúűûúűđéűśöÿńÿöúüțûúûúęûÿúùśóéòúțśÿűÿśöśöśśöśööśśöśőóïóôùûúùśńćîüûśÿűÿśúôüúöééűùűśóíáëüúțűÿűÿśùțûúűûúűđéűöùőđèÛæęúúțùÿűÿöúüțûúûúęûÿú ùśóéòúęőïæÖáÿțúùÿ(ÿśöśöśśöśööśśöśőóïóôùûûúùśńćîüûöđæÔÜÿûûúúúÿÿśúôüúöééűúúűśóíáëüúțòéŐÚÿțûúûûüÿÿśùțûúűûúűđéűöúùőđèÛæęúúțêÖÜÿęûúûîęÿÿöúüțûúûúęûÿú ùśóéòúęűőïæÖáÿțú țÚàÿęęüüûúÿæțÿÿöúüöû úùśńćîüûűöđæÔÜÿûûúúüæÿüûüüțțüÿòÿÿÿőùüśûúűśóíáëüúțűòéŐÚÿțûúûűŐŃÏÏÓŚàéőÿâÿÿőùüûûúęûúûûúùőđèÛæęúúțóêÖÜÿęû úûëÆĂĂĆÇËÏÓĘńïÿôùüęû úûûúûûùűőïæÖáÿțú țëÚàÿęęüüûúÿâțÊËÍÏĐÎÒÚÿőùüțûúțûÿú"ûúűöđæÔÜÿûûúúęȚæÿüûüüțțüÿíÍÌÍÏŃÓÖŚÏ ÿóùüûûúûûúûúțûúűòéŐÚÿțûúûùÔŐŃÏÏÓŚàéőÿȚàßàáâáăá ÿôűûûúûûúûțúțûűóêÖÜÿęûúûìÌÆĂĂĆÇËÏÓĘńìęïëíæÿóùûûÿúüûűôëÚàÿęęüüûúÿăÍțÊËÍÏĐÎÒÚęùűùđÿóùûțúûúûûțúÿûúőíȚæÿüûüüțțüÿîÍÍÌÍÏŃÓÖŚÏúúûúûûòÿòűüțûúûúüûÿúöîàÔŐŃÏÏÓŚàéőÿȚßàßàáâáăáúúûúûüń!ÿòűûúûûúûúúûúúûûúöđćÖÌÆĂĂĆÇËÏÓĘńëíęï ëíæûúúûúüńÿòűüùúțûúûűòçĘÓÍțÊËÍÏĐÎÒÚüùűùđûęúüń ÿńśûúúûûúûûúûûțúśòêߌŃÍÍÌÍÏŃÓÖŚÏûúúûúûûòęúûüńÿńűûúûûțúÿûÿúțûùôîçăßȚßàßàáâáăáûúúûúûüńûúúûúüńÿńśûúûúúû úûúùöîêìæééíęï ëíæúûúúûúüńúțûúûđÿđűûúûûęúęûúûúùùśțűśüùűùđúûęúüńțúûúûđÿđśûûúûûțúûúûțúûúûúțûúûúúûúûûòüúûüńüúüđÿïśûțúûúûțúûúûțúûúûúûúûúúûúûüńúûúúûúüńúúûúúûđÿïśüûțúûüúûüúûúûțúûúúûúüńúúțûúûđüúûđÿïöûțúûüúûüúûûúûęúüńęúûúûđüúûđÿïöüûúûúûúúûúúûúúûúúûúúûûüúûüńûúüđüúûđÿïöûûúûüúûęúûęúûúúûúüńțúûúúûđęúùúđÿïöûüúûüúûüúțûțúțûúûđûúûđęúűúđÿïöüíúûęúûúûđûüúûđüśúđÿîőûûçúüđûúûđțúùúęđÿîőûûúûüúûęúûûúûúúûđüúùúđüóôîÿîőûæúûđüúűúđțïîïïíÿîőûìúûüúûđûśúđúÿÿîőùúúûüúûüúûőúûđęúùúęđúÿÿïöæúùúđûóôîúÿÿîőűùèúűúđęïîïïíúÿÿîőűæśúđòÿÿîöüèúùúęđòÿÿìđćóôîòÿÿțîèïîïïíòÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿÿÿÙ,țÿÿÿ”Ù 6țÿÿÿ”Ù 6țÿÿÿ”ö !ï ț!ú 6țÿÿÿ”ö ô ü 6țÿÿÿ”ű _Fű >dsthH!ț 6țÿÿÿ”ű UțóźY#û !hĆòęÿűÓx! 6țÿÿÿ”ù ËęÿXü !+łśÿž' 6țÿÿÿ”ù zęÿÎ&ü +Èőÿ°6țÿÿÿ”ú 4çțÿüYü ”ûÿțúÿf6țÿÿÿ”û „ęÿŹü hüÿÆnRhŒüÿ»5țÿÿÿ”ü !Túțÿí<ü ÿÆęÿ­šęÿè/1țÿÿÿ”ü Êęÿ‰û 0òțÿä0 !BöțÿöD0țÿÿÿ”ü |ęÿÖ'û !Óÿÿę +ćțÿûO/țÿÿÿ”ę 5éțÿțdù #[–6ę 0éțÿśG/țÿÿÿ”ț „ęÿžęû !ę Oúțÿí51țÿÿÿ”ț UûțÿôFęó ™ęÿÎ 4țÿÿÿ” Ìęÿ ”|ÓÎŃč/ö !Iòęÿ6țÿÿÿ” {ęÿá,»țÿü>ś !1Śęÿï96țÿÿÿ” 5éęÿp!Èțÿó=ś =Óüÿ 6țÿÿÿ”„ęÿÄ'Ùțÿó=ù [éüÿ­ 6țÿÿÿ”UúțÿùO!1èțÿó=û !†űüÿź! 6țÿÿÿ”!Ìęÿą Dśțÿó=ü !&Źûÿ•ț 6țÿÿÿ”zęÿâ) Oęÿ ò5 !1Æüÿïnę 6țÿÿÿ”§ęÿš:țH=~ęÿ ô_BI) ,ÎüÿĐFü 6țÿÿÿ”Łęÿóöțśöùęÿțűśúi”üÿź&ú 6țÿÿÿ”Łîÿvtüÿ§!ú 6țÿÿÿ”„îÿv#ŚęÿÌ !ù 6țÿÿÿ”˜ÿűüęüÿüęțkXțęÿbù 6țÿÿÿ”0OùND†ęÿôdIL'ŠęÿśbBúIL:6țÿÿÿ”ù dęÿò5°ęÿțűűúùúÓ'2țÿÿÿ”ś ięÿó= Éòÿâ,2țÿÿÿ”ś ięÿó= #ÔòÿȚ+2țÿÿÿ”ś ięÿó= &àòÿć+2țÿÿÿ”ś nęÿę= !ąÌôÇ̙5țÿÿÿ”ś 9‰Œ‹}' ò6țÿÿÿ”ś !ęę ô 6țÿÿÿ”Ù 6țÿÿÿ”Ù 6țÿÿÿ”Ù 6țÿÿÿ‘Ù 2țÿÿÿ)Ú65IțÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿŃÿêÿ€Ìêÿôÿúűúÿü<‚ùÿśóÿőÿś‘ęûÿÜ7úûÿúœÁęőÿöÿńiÌûÿŃûÿ­-‘őÿśÿéH ,ïțÿśÛ5nçûțÿÒ ^ôśÿűÿÚ0 tŰĄb$ S2ușß;:èűÿúÿ ęœ ęĂ\ü  $Üùÿûÿü—țț/üȘü ùÿüÿ ü‡ ț{ÿéț  #Ôûÿüÿ¶țÊÿÿcț  fûÿüÿË l3>țÿ»Ha_ûÿüÿ$üj  RÿŻjÄśë· Ùÿ,șûÿûÿ#ç„BMÿé  [x  EûûÿúÿŠ ü !ș”"ÜúÿúÿŃ  ę  țțCęúÿúÿcę   ț Ÿúÿęÿ śÊû }ĂßÖŠNęțBžÖțęÿțÿ!ĂD   VçÿáœÉűÿźț sëțÿÿę—ęÿMűâ[-œÿč ț;ŰÿÿÿœùÜè2 Šÿtû!ÛÿŰ ü ^ÿr țÛÚ û @úl -ûˆ€Êšś)ț ț)pƏ†ę‡‰cÏ»ùÿă °äûsÿ8cűÿJ©/ ZżÄüĂÒÜŸô%ț  ‰ÿ,sæÇÂęĂĆ€ ”— ü / gÿe ț Ńá'" üßï(ûÿćà"wÿ‚üˆÿÿÓù ^ÿÒD ‚ÿÉű`śÿÿÿÙ= țÿ ÿiőÿÉ€ČçÿÁ# țkőÿÿțÿï ț ü2™ÚńëÄi ę    6Żüțÿęÿ ęìÖ;  ę   üˆâöüÿúÿšę kJț*íúÿúÿáę 0ÿÔ ü  Pùÿûÿ"ü` C  oM );łúÿûÿčNÿš û Đü*#đûÿüÿ$ò8&Ż`G‡{,~ą ûÿüÿË!"ț ˆțÿïQpûÿüÿśj ț CțŸ9QéȚ ”ûÿûÿ#öe€ÿ<‚ÿ: Łțûÿúÿ ù… țpÿ`Łę.ț ŒùÿùÿęȘ*9"ćò‘©ÿłY #ŐűÿśÿÁ ©ÿűXCĐÿûŻ˜ęÿh&öÿöÿÈ Züÿțè;+#nüÿÿè%>ćöÿőÿÍ+Ûęÿë|' :ĄûęÿŁYíőÿëÿòÚßúûÿń…öÿțöÿŃüìÿîüëÿęîüêÿűïüéÿđïüèÿßńüçÿÇòüæÿĄóüćÿrôüäÿGőüăÿ"őüâÿ öüáÿśüáÿțűüàÿęùüßÿűûüȚÿđûüĘÿáüüÜÿÊüüÛÿęüÛÿ ęüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüüÛÿüę!Ûÿ*ęę2@AABCEá@2ęŃŃŃŃŃŃŃŃŃŃúöćüóÿț%çęńÿűçęęđÿ‡èęțïÿ`țÿ*őûęțÜÿ™üțțÛÿüÿęÛÿüÿęÛÿüÿęÛÿüÿ ęÛÿüÿÚÿüÿ ęÛÿüÿ ęÛÿüÿ ęÛÿüÿüÛÿüÿûÛÿüțúÛÿüțűÛÿüțÚÿüțÚÿüțśÛÿüțśÛÿüțśÛÿüțśÛÿüțűÛÿüęùÛÿüęűÛÿüęúÛÿüęûÛÿüęüÛÿüęúÛÿüțÛÿžüÿ'eȚÿ܂$üÿ $99:;;=ê9=;;:99$ûŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃțöáóÿț%ăęòÿűățńÿ‡äțđÿ`țÿ*őśțĘÿȚűęÜÿ*ùęÜÿiùęÜÿiúęÜÿkûęÜÿ|ęț ęŐÿțęÔÿüŐÿțûŐÿÌúÖÿț$űÖÿćűÖÿZűŚÿòțśŚÿ”țöŰÿúțśŰÿœęśÙÿęęśÙÿÙüśÚÿțMüűÚÿíûùÚÿ…ûűÛÿùûúÛÿŒúûÜÿțúüÜÿćùúÜÿeùÜÿțűQȚÿÒ0 û$99:;;=ê9 =;;:99$&ęŃŃŃŃŃŃŃŃùìÿńùëÿęńùêÿűòùéÿđòùèÿßôùçÿÇőùæÿĄöùćÿrśùäÿGűùăÿ"űùâÿ ùùáÿúùáÿțûùàÿęüùßÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿ*ÿçÿï@22@AABCEí@2îŃŃűìÿòűëÿęòűêÿűó”áÿđóßÿßőȚÿÇöĘÿĄśÜÿrűÛÿGùÚÿ"ùÙÿ úŰÿûŰÿțüŚÿęęÚŚÿűűȚÿđűĘÿáűÜÿÊűÛÿűÛÿ űÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿù!Ûÿ*ù2@AABCEá@2ŃŃŃùìÿńùëÿęńùêÿűòùéÿđòùèÿßôùçÿÇőùæÿĄöùćÿrśùäÿGűùăÿ"űùâÿ ùùáÿúùáÿțûùàÿęüùßÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿ*ÿçÿï@22@AABCEí@2îŃŃúìÿđúëÿęđúêÿűńúéÿđńúèÿßóúçÿÇôúæÿĄőúćÿröúäÿGśúăÿ"śúâÿ űúáÿùúáÿțúúàÿęûúßÿűęúȚÿđęúĘÿáțúÜÿÊțúÛÿúÛÿ úÛÿțúÛÿțúÛÿțúÛÿțúÛÿțúÛÿțúÛÿțúÛÿțúÛÿțúÛÿțúÛÿțúÛÿțúÛÿțúÛÿțúÛÿțúÛÿțúÛÿțúÛÿțûBÛÿțęÛțÛÿțț3ùÙÿțÿùŰÿțÿžŚÿțÿűŚÿțÿûŚÿțÿÚŚÿ*ÿ'ùûÿę±Hț@^Jæ@2ț’ôüúëšJĘŃŃűìÿòűëÿęòűêÿűóűéÿđóűèÿßőűçÿÇöűæÿĄśűćÿrűűäÿGùűăÿ"ùűâÿ úűáÿûűáÿțüűàÿęęűßÿűűȚÿđűĘÿáűÜÿÊűÛÿűÛÿ űÛÿűÛÿÓÿÓÿÿÖÿÿÖÿÓÿÓÿÿÖÿÿÖÿÓÿÓÿÿÖÿÿÖÿÓÿÓÿÿÖÿÿÖÿÓÿÓÿÿÖÿÿÖÿÓÿÓÿÿÖÿÿÖÿ*íÿç@22@AABCEó@2çŃŃűìÿòűëÿęòűêÿűó”áÿđóßÿßőȚÿÇöĘÿĄśÜÿrűÛÿGùÚÿ"ùÙÿ úŰÿûŰÿțüŚÿęęÚŚÿűűȚÿđűĘÿáűÜÿÊűÛÿűÛÿ űÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿù!Ûÿ*ù2@AABCEá@2ŃŃŃűìÿòűëÿęòűêÿűó±áÿđóßÿßőȚÿÇöĘÿĄśÜÿrűÛÿGùÚÿ"ùÙÿ úŰÿûŰÿțüŚÿęęÚŚÿűűȚÿđűĘÿáűÜÿÊűÛÿűÛÿűÛÿ űÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿűÛÿù!Ûÿ*ù2@AABCEá@2ŃŃŃŃûìÿïûëÿęïûêÿűđûéÿđđûèÿßòûçÿÇóûæÿĄôûćÿrőûäÿGöûăÿ"öûâÿ śûáÿűûáÿțùûàÿęúûßÿűüûȚÿđüûĘÿáęûÜÿÊęûÛÿțûÛÿ țûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęûÛÿęü!Ûÿ*țü2@AABCEá@2țŃŃùìÿńùëÿęńùêÿűòáÿđòàÿßôßÿÇőȚÿĄöĘÿrśÜÿGűÛÿ"űÚÿ ùÙÿúÙÿțûŰÿęüŚÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿú!Ûÿ*ú2@AABCEá@2ŃŃŃùìÿńùëÿęńùêÿűò±ăÿđòáÿßôàÿÇőßÿĄöȚÿrśĘÿGűÜÿ"űÛÿ ùÚÿúÚÿțûÙÿęüÚÙÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿú!Ûÿ*ú2@AABCEá@2ŃŃŃùìÿńùëÿęńùêÿűò±ăÿđòáÿßôàÿÇőßÿĄöȚÿrśĘÿGűÜÿ"űÛÿ ùÚÿúÚÿțûÙÿęüÚÙÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿú!Ûÿ*ú2@AABCEá@2ŃŃŃùìÿńùëÿęńùêÿűò±ăÿđòáÿßôàÿÇőßÿĄöȚÿrśĘÿGűÜÿ"űÛÿ ùÚÿúÚÿțûÙÿęüÚÙÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿú!Ûÿ*ú2@AABCEá@2ŃŃŃùìÿńùëÿęńùêÿűò±ăÿđòáÿßôàÿÇőßÿĄöȚÿrśĘÿGűÜÿ"űÛÿ ùÚÿúÚÿțûÙÿęüÚÙÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿú!Ûÿ*ú2@AABCEá@2ŃŃŃùìÿńùëÿęńùêÿűò±ăÿđòáÿßôàÿÇőßÿĄöȚÿrśĘÿGűÜÿ"űÛÿ ùÚÿúÚÿțûÙÿęüÚÙÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿú!Ûÿ*ú2@AABCEá@2ŃŃŃùìÿńùëÿęńùêÿűò±ăÿđòáÿßôàÿÇőßÿĄöȚÿrśĘÿGűÜÿ"űÛÿ ùÚÿúÚÿțûÙÿęüÚÙÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿú!Ûÿ*ú2@AABCEá@2ŃŃŃùìÿńùëÿęńùêÿűò±ăÿđòáÿßôàÿÇőßÿĄöȚÿrśĘÿGűÜÿ"űÛÿ ùÚÿúÚÿțûÙÿęüÚÙÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿú!Ûÿ*ú2@AABCEá@2ŃŃŃùìÿńùëÿęńùêÿűò±ăÿđòáÿßôàÿÇőßÿĄöȚÿrśĘÿGűÜÿ"űÛÿ ùÚÿúÚÿțûÙÿęüÚÙÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿú!Ûÿ*ú2@AABCEá@2ŃŃŃùìÿńùëÿęńùêÿűò±ăÿđòáÿßôàÿÇőßÿĄöȚÿrśĘÿGűÜÿ"űÛÿ ùÚÿúÚÿțûÙÿęüÚÙÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿú!Ûÿ*ú2@AABCEá@2ŃŃŃùìÿńùëÿęńùêÿűò±ăÿđòáÿßôàÿÇőßÿĄöȚÿrśĘÿGűÜÿ"űÛÿ ùÚÿúÚÿțûÚÚÿęüÚÙÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿț8ÇŰÿÿÿ8ÈŚÿÿÿÇÖÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿ*ÿçÿï@22@AABCEí@2îŃŃùìÿńùëÿęńùêÿűò±ăÿđòáÿßôàÿÇőßÿĄöȚÿrśĘÿGűÜÿ"űÛÿ ùÚÿúÚÿțûúÚÿęüÚÙÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿț8ÇŰÿÿÿ8ÈŚÿÿÿÇÖÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿ*ÿçÿï@22@AABCEí@2îŃŃùìÿńùëÿęńùêÿűò±ăÿđòáÿßôàÿÇőßÿĄöȚÿrśĘÿGűÜÿ"űÛÿ ùÚÿúÚÿțûÚÚÿęüÚÙÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿț8ÇŰÿÿÿ8ÈŚÿÿÿÇÖÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿ*ÿçÿï@22@AABCEí@2îŃŃùìÿńùëÿęńùêÿűò±ăÿđòáÿßôàÿÇőßÿĄöȚÿrśĘÿGűÜÿ"űÛÿ ùÚÿúÚÿțûÚÚÿęüÚÙÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿț8ÇŰÿÿÿ8ÈŚÿÿÿÇÖÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿÿÿŐÿ*ÿçÿÿpń@22@AABCEí@2îŃŃùìÿńùëÿęńùêÿűòáÿđòàÿßôßÿÇőȚÿĄöĘÿrśÜÿGűÛÿ"űÚÿ ùÙÿúÙÿțûŰÿęüŚÿűțùȚÿđțùĘÿáùÜÿÊùÛÿùÛÿ ùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿùÛÿÿú!Ûÿ*ú2@AABCEá@2ŃŃńâńśò9őńêïÿĐöńéîÿÈśńéíÿÄśűâûśțìÿśűêäÿűűéäÿúùűéăÿńúâúśțâÿéûêÙÿêüéŰÿóęéŚÿìțéÖÿćéŐÿàéÔÿÒéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÓÿéÚÿúééÚÿúéÚÿúéÚÿúéâÿùéúéâÿòéâÿòțâÿòŐâéòŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃŃÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțÿÖÿțŃŃŃŃŃŃŃŃŃń$ț"îÿÿÊëőCri,ü6Áÿÿ˜üFóökĄ“Gü4ÇÿÿŁü1u‚Xőö`Çûêœ/ęvúÿÿá`ę'ŽÖèżőś[ŐęÿŹZ1@áęÿŐy;/XšęÿäxśűjàûÿòÖáùÿßŐńûÿò}űúŒűćÿő{ùû0­âÿóùüȘàÿáUûü\ïßÿ™ûü[ößÿ„ûü&Éßÿ„ûû‡àÿüTûûWśáÿă8ûû[ôáÿéIûü˜ßÿŽüę,”üßÿôƒ ęțkÊÛÿŠ1ț!™ŰÿÇQRžÖÿć#ïÓÿŃŃÿŃÿŃÿÒÿńŃÔÿÁV#ćŚÿŽ3ÿQÈÙÿ€&ț3ȘÜÿá{ țę’ȚÿÇRüü!Żàÿè^ûû€àÿÀ!ûû„àÿÆ!ûü­àÿïMûü9ŚßÿûüFȚßÿûü«àÿùfûûAÄáÿ—ûú:łäÿùŠùù!—æÿêsűűŽïÿâéüÿśöś2łęÿȚš§Úùÿœ‹—Țęÿ«öś’ęÿ¶šûûÿí˜țęÿŽöű öûÿüęÿ±űapplication/library/img/src/icons-small copy.pxm000064400000145400147577724760016016 0ustar00PXMT_DOCÊHEADERIN]#¶«m«~METADATAŽ ž€ streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+ _IMAGE_ZOOM_†’„„„NSNumber„„NSValue•„*„„fœ†’„—˜_MASKS_VISIBLE_RECT_†’„—˜{{0, 0}, {0, 0}}†’„—˜_DOCUMENT_SLICES_†’„„„NSMutableArray„„NSArray•–†’„—˜ _PX_VERSION_†’„—˜ 1.6.5†’„—˜_DOCUMENT_WINDOW_RECT_†’„—˜{{712, 4}, {200, 874}}†’„—˜ _PRINT_INFO_†’„„„ NSMutableData„„NSData•–z„[378c] streamtypedè„@„„„ NSPrintInfo„„NSObject…’„„„NSMutableDictionary„„ NSDictionary”„i’„„„NSString”„+NSHorizontallyCentered†’„„„NSNumber„„NSValue”„*„——†’„™™ NSRightMargin†’„›œ„„fH†’„™™ NSLeftMargin†’„›œ H†’„™™NSHorizonalPagination†’„›œ—†’„™™NSVerticalPagination†’„›œ—†’„™™NSVerticallyCentered†’š’„™™ NSTopMargin†’„›œ Z†’„™™NSBottomMargin†’„›œ Z††††’„—˜_LAYERS_VISIBLE_RECT_†’„—˜{{0, 147}, {239, 240}}†’„—˜_DOCUMENT_SLICES_INFO_†’„“–’„—˜PXSlicesPreviewEnabledKey†’„™›„––†’„—˜PXSlicesVisibleKey†’„™›„„cą††’„—˜__OLD_METADATA_FOR_SPOTLIGHT__†’„“–’„—˜ colorMode†’Ż’„—˜ layersNames†’„ –’„—˜Untitled Layer 8†’„—˜Untitled Layer 7†’„—˜Untitled Layer 6†’„—˜blue-document-zipper†’„—˜blue-document-flash†’„—˜blue-document-text-image†’„—˜application-terminal†’„—˜ script-php†’„—˜Untitled Layer 5†’„—˜Untitled Layer 4†’„—˜Untitled Layer 3†’„—˜Untitled Layer 2†’„—˜Untitled Layer†’„—˜ script-code†’„—˜ script-code†’„—˜globe†’„—˜blue-document-office†’„—˜blue-document-pdf†’„—˜film†’„—˜ music-beam-16†’„—˜image†’„—˜blue-document-text†’„—˜ application†’„—˜ blue-document†’„—˜Layer 1†’„—˜dir†’„—˜ dir-opened†’„—˜file_extension_mpeg†’„—˜file_extension_exe†’„—˜ application†’„—˜Layer 0††’„—˜keywords†’„ –†’„—˜ csProfileName†’„—˜sRGB IEC61966-2.1†’„—˜resolutionType†’Ż’„—˜ resolution†’„™›„„dŁƒ€“R@†’„—˜ canvasSize†’„—˜ {16, 1280}††’„—˜PXRulersMetadataKey†’„“–’„—˜PXSlicesPreviewEnabledKey†’Ż’„—˜PXGuidesArrayKey†’„ –’„“–’„—˜PXGuidePositionKey†’„™›°–c†’„—˜PXGuideOrientationKey†’„™›°–†††’„—˜PXRulersVisibleKey†’„™›łą†’±’Ȇ’„—˜_MASKS_SELECTION_†’„š–I„[73c] streamtypedè„@„„„NSMutableIndexSet„„ NSIndexSet„„NSObject…„I††’„—˜_ICC_PROFILE_NAME_†’Û’„—˜_ORIGINAL_EXIF_†’„“–’„—˜{TIFF}†’„“–’„—˜ResolutionUnit†’Ż’„—˜Software†’„—˜Pixelmator 1.6.5†’„—˜ Compression†’„™›°–†’„—˜DateTime†’„„„NSMutableString—˜2011-07-02 16:15:43 +0400†’„—˜ XResolution†’„™››œƒœB†’„—˜ Orientation†’Ż’„—˜ YResolution†’„™››œƒœB††’„—˜{Exif}†’„“–’„—˜ ColorSpace†’Ż’„—˜PixelXDimension†’„™›°–†’„—˜PixelYDimension†’„™›°–††’„—˜*kCGImageDestinationLossyCompressionQuality†’„™››œ†’„—˜ PixelHeight†’„™››œ†’„—˜ PixelWidth†’„™››œ†’„—˜HasAlpha†’í’„—˜{JFIF}†’„“–’„—˜ IsProgressive†’Č’„—˜YDensity†’„™››œƒœB†’„—˜XDensity†’„™››œƒœB†’„—˜ DensityUnit†’Ż†’„—˜{IPTC}†’„“–’„—˜ProgramVersion†’„—˜Pixelmator 1.6.5†’„—˜ImageOrientation†’Ż’„—˜Keywords†’Ù†’„—˜ ProfileName†’Û’„—˜DPIWidth†’„™››œƒœB†’„—˜{PNG}†’„“–’„—˜XPixelsPerMeter†’„™›°– †’„—˜YPixelsPerMeter†’„™›°– ††’„—˜ DPIHeight†’„™››œƒœB†’„—˜ ColorModel†’„—˜RGB†’ÿ’Ż’„—˜Depth†’„™›°–††’„—˜_DOCUMENT_LAST_SLICE_INFO_†’„”–’„—˜PXSliceMatteColorKey†’„„„NSColor•ą„ffff†’„—˜ transparent†’Ż’„—˜PXSliceFormatKey†’„—˜PXSliceFormatPNG24††’„—˜_LAYERGROUPS_EXPANSION_STATES_†’„ –’„“–’„—˜_STATE_†’Č’„—˜_ID_†’„—˜;92352D33-BEFB-4A00-B68D-0F5820D3E342-34139-0000E0B12CF05B8B††’„“–’8’Č’9’„—˜;B5A88CD4-059B-416C-8D3C-29E0248EFCD8-34139-0000E0AF0B615888††’„“–’8’Č’9’„—˜;6F8BFC21-2EB3-48E7-B6E0-94AE9AF57B08-34139-0000E0ACB5DFA933††’„“–’8’Č’9’„—˜;94E65854-C0A3-43CE-B5A9-193CA1076463-34139-0000E0A9F5D631B6††’„“–’8’Č’9’„—˜;B8FDFB16-BEDA-481A-AA0B-EC14C0FC4102-34139-0000E08C1EBDE397††’„“–’8’Č’9’„—˜;1877DB60-E816-4460-B972-EDE51DEEE0B4-34139-0000E0861C377A66††’„“–’8’Č’9’„—˜;FBFD89FC-7050-4E67-8997-4DF17F3B4C29-34139-0000E0600B7D2A44††’„“–’8’Č’9’„—˜;4B50D76C-C380-4B7F-9C44-F1BC0E7CCA19-34139-0000E029DA4EADC1††’„“–’8’Č’9’„—˜;4871A4F3-8357-4229-A29B-A40DEFCF3D65-34139-0000E0149A668852††’„“–’8’Č’9’„—˜;978681AD-3906-421D-A009-EF9632EEAFD4-34139-0000DFFC4D2F017B††’„“–’8’Č’9’„—˜;AEEEE2D6-0935-40B3-80B2-9D5FD83AE151-34139-0000DFF8EFF6C027††’„“–’8’Č’9’„—˜;1C8CFD11-5BC8-4921-A2C9-BFC435022388-34139-0000DFF5ED5BB5E0††’„“–’8’Č’9’„—˜;B5E5BCC3-F31B-4396-81FA-126F4627B037-34139-0000DFF29ABF2DAF††’„“–’8’Č’9’„—˜;D528B246-64CB-48B6-8888-A691D6D873B7-34139-0000DFE82FD68418††’„“–’8’Č’9’„—˜;DCE88FCA-1ADB-4C55-B4A0-146CFB06E63B-34139-0000DFD44D2BE287††’„“–’8’Č’9’„—˜;3ABE6755-1173-49C7-87E7-ADB8EE87D090-34139-0000DF64928BD4D5††’„“–’8’Č’9’„—˜;0B88DA97-EAD9-47D2-B4AB-BACEBD348E6F-34139-0000DF3786A7F25A††’„“–’8’Č’9’„—˜;DD69E198-0D36-4EB6-9C1B-6DA63FDAC3D3-34139-0000DF24AAA0FBA2††’„“–’8’Č’9’„—˜;4287CBB1-6C2B-437F-A970-A3C40E157AEA-34139-0000DF0B7C478B03††’„“–’8’Č’9’„—˜;1FFB0EDF-BEB7-4304-BA21-460EA78D0511-34139-0000DEF3D95AC235††’„“–’8’Č’9’„—˜;D01D764B-05D3-4F17-8BF7-9904CD516B4C-34139-0000DED378FA8684††’„“–’8’Č’9’„—˜;B870949D-8C3A-428F-906A-BCB7830D1D24-34139-0000DEB42B147D41††’„“–’8’Č’9’„—˜;B3C032D4-132E-4F16-A7B7-729D4677FCAD-34139-0000DE9ECE3BBF03††’„“–’8’Č’9’„—˜;DC77C90A-5C7B-471B-AEA5-1238F7E1FB7E-34139-0000DE575AE40F3C††’„“–’8’Č’9’„—˜:B49E082D-A1FB-487E-BE17-E16F73A8F48E-7317-000022DE0376C4C3††’„“–’8’Č’9’„—˜:2FF17678-F87E-4E6E-974D-AEA1452BD260-7317-000022DE0375EFB6††’„“–’8’Č’9’„—˜:E171E19A-6285-43FA-A545-2E08E088286D-7317-000022DE03753825††’„“–’8’Č’9’„—˜:006E318C-BD27-431A-AF83-E3B0BFDF3832-7317-000022DE0364379F††’„“–’8’Č’9’„—˜:942D4059-6B5B-4B16-BBC5-36E294E422BD-7317-000022DE0361715A††’„“–’8’Č’9’„—˜:9D4AFCE3-1E59-42D2-AB1C-D4C2B0A3214B-7317-000022DE03608265††’„“–’8’Č’9’„—˜:C24D76FC-604F-44DD-ABC9-DE5742197FC4-7317-000022DE035EDBD5†††’„—˜_IMAGE_VISIBLE_RECT_†’„—˜{{-61, 0}, {169, 832}}†’„—˜_LAYERS_SELECTION_†’„š–8„[56c] streamtypedè„@„„„ NSIndexSet„„NSObject…„I••††† GUIDES_INFO8c COLORSYNC H HLinomntrRGB XYZ Î 1acspMSFTIEC sRGBöÖÓ-HP ?Ú.ÛJ‰«`ą<_|}ĘcprtP3desc„lwtptđbkptrXYZgXYZ,bXYZ@dmndTpdmddĈvuedL†viewÔ$lumiűmeas $tech0 rTRC< gTRC< bTRC< textCopyright (c) 1998 Hewlett-Packard CompanydescsRGB IEC61966-2.1sRGB IEC61966-2.1XYZ óQÌXYZ XYZ oą8őXYZ b™·…ÚXYZ $ „¶ÏdescIEC http://www.iec.chIEC http://www.iec.chdesc.IEC 61966-2.1 Default RGB colour space - sRGB.IEC 61966-2.1 Default RGB colour space - sRGBdesc,Reference Viewing Condition in IEC61966-2.1,Reference Viewing Condition in IEC61966-2.1view€ț_.ÏíÌ \žXYZ L VPWçmeassig CRT curv #(-27;@EJOTY^chmrw|†‹•šŸ€©źČ·ŒÁÆËĐŐÛàćëđöû %+28>ELRY`gnu|ƒ‹’šĄ©±čÁÉŃÙáéòú &/8AKT]gqz„Ž˜ąŹ¶ÁËŐàëő !-8COZfr~Š–ąźșÇÓàìù -;HUcq~Œšš¶ÄÓáđț +:IXgw†–Š”ĆŐćö'7HYj{ŒŻÀŃăő+=Oat†™ŹżÒćű 2FZn‚–ȘŸÒçû  % : O d y  € ș Ï ć û  ' = T j  ˜ ź Ć Ü ó " 9 Q i € ˜ ° È á ù  * C \ u Ž § À Ù ó & @ Z t Ž © Ă Ț ű.Id›¶Òî %A^z–łÏì &Ca~›čŚő1OmŒȘÉè&Ed„ŁĂă#Ccƒ€Ćć'Ij‹­Îđ4Vx›œà&IlČÖúAe‰źÒś@eŠŻŐú Ek‘·Ę*QwžĆì;cŠČÚ*R{ŁÌőGp™Ăì@j”Ÿé>i”żê  A l ˜ Ä đ!!H!u!Ą!Î!û"'"U"‚"Ż"Ę# #8#f#”#Â#đ$$M$|$«$Ú% %8%h%—%Ç%ś&'&W&‡&·&è''I'z'«'Ü( (?(q(ą(Ô))8)k))Đ**5*h*›*Ï++6+i++Ń,,9,n,ą,Ś- -A-v-«-á..L.‚.·.î/$/Z/‘/Ç/ț050l0€0Û11J1‚1ș1ò2*2c2›2Ô3 3F33ž3ń4+4e4ž4Ű55M5‡5Â5ę676r6ź6é7$7`7œ7Ś88P8Œ8È99B99Œ9ù:6:t:Č:ï;-;k;Ș;è<' >`> >à?!?a?ą?â@#@d@Š@çA)AjAŹAîB0BrB”BśC:C}CÀDDGDŠDÎEEUEšEȚF"FgF«FđG5G{GÀHHKH‘HŚIIcI©IđJ7J}JÄK KSKšKâL*LrLșMMJM“MÜN%NnN·OOIO“OĘP'PqP»QQPQ›QæR1R|RÇSS_SȘSöTBTTÛU(UuUÂVV\V©VśWDW’WàX/X}XËYYiYžZZVZŠZő[E[•[ć\5\†\Ö]']x]É^^l^œ__a_ł``W`Ș`üaOaąaőbIbœbđcCc—cëd@d”dée=e’eçf=f’fèg=g“géh?h–hìiCišińjHjŸjśkOk§kÿlWlŻmm`mčnnknÄooxoŃp+p†pàq:q•qđrKrŠss]sžttptÌu(u…uáv>v›vűwVwłxxnxÌy*y‰yçzFz„{{c{Â|!||á}A}Ą~~b~Â#„ć€G€š kÍ‚0‚’‚ôƒWƒș„„€„ă…G…«††r†Ś‡;‡ŸˆˆiˆÎ‰3‰™‰țŠdŠÊ‹0‹–‹üŒcŒÊ1˜ÿŽfŽÎ6žnÖ‘?‘š’’z’ă“M“¶” ”Š”ô•_•É–4–Ÿ— —u—à˜L˜ž™$™™üšhšŐ›B›Żœœ‰œśdÒž@žźŸŸ‹Ÿú i ŰĄGĄ¶ą&ą–ŁŁvŁæ€V€Ç„8„©ŠŠ‹Šę§n§àšRšÄ©7©©ȘȘ««u«éŹ\ŹĐ­D­žź-źĄŻŻ‹°°u°ê±`±ÖČKČÂł8łźŽ%Žœ””Š¶¶y¶đ·h·àžYžŃčJčÂș;ș”».»§Œ!Œ›œœŸ Ÿ„ŸÿżzżőÀpÀìÁgÁăÂ_ÂÛĂXĂÔÄQÄÎĆKĆÈÆFÆĂÇAÇżÈ=ÈŒÉ:ÉčÊ8Ê·Ë6˶Ì5Ì”Í5Í”Î6ζÏ7ÏžĐ9ĐșŃ<ŃŸÒ?ÒÁÓDÓÆÔIÔËŐNŐŃÖUÖŰŚ\ŚàŰdŰèÙlÙńÚvÚûۀÜ܊ĘʖȚȚąß)߯à6àœáDáÌâSâÛăcăëäsäüć„æ æ–çç©è2èŒéFéĐê[êćëpëûì†ííœî(îŽï@ïÌđXđćńrńÿòŒóó§ô4ôÂőPőȚömöûśŠűűšù8ùÇúWúçûwüü˜ę)ęșțKțÜÿmÿÿLAYERS‡©$D'’*à..1€5J8ć<~@ CMFIÓMPWS•VÓ[^ábŒfhńl+o­ruwŒ{ ~|‚…W‡­J ±Untitled Layer 8d';92352D33-BEFB-4A00-B68D-0F5820D3E342-34139-0000E0B12CF05B8B@üx}’IH[Q†_¶șł `ÁĄ”Š"žqHUŠ(ÒEŠTp@AŒ…bÁ…7.ÜĄ]H6.*ź\WÁl€Ô…űÔ(·ô9Çg&_â@OÏáŠW‹?. ÿś%wpŰSkœE.9ïìi.MÓ:°â3&=%)‡żûo>g~Ÿ í“ușN±ăUòx<äőzĆ>X€­_ă„NzJòź?IMIæë|“ÌœY nÏVŚur»ĘôGŸ ßäę”Nœ—/’sQòɑő5Ü"ó`N8Àûę~Áó“4=6p?Î‚QF”Ô–fwÇ/¶é2  xÓ4ä›üì]F”Ô•œê‰›;2„<öțdmúȚ]F”4”żîM0>\°‡ÆșàqÒ ű]F”4œÏéK\ú)|Ž$ű}°đà<€#j,șŒ(iźÈíO„v)rŒüāóÜ-șŒ(i©Ž»f>zș"’Ć^pÒamșŒ(i­zûę:ŒGŃłŐgx#è2ą€­:o|ì|M8$+ś"żtQÒț!ű&ČO± żßgxcè2ąÄć,űțêbC8$+ś"xcè2ą€«¶đç]Ì 80ۋtà^p·x·‘ĄËˆ’ÆŠŒĄîzÇï‡cłÙ°>tyMûJÂëł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††J ~Untitled Layer 7d';B5A88CD4-059B-416C-8D3C-29E0248EFCD8-34139-0000E0AF0B615888@üx}’IH[Q†_¶șł `ÁĄ”Š"žqHUŠ(ÒEŠTp@AŒ…bÁ…7.ÜĄ]H6.*ź\WÁl€Ô…űÔ(·ô9Çg&_â@OÏáŠW‹?. ÿś%wpŰSkœE.9ïìi.MÓ:°â3&=%)‡żûo>g~Ÿ í“ușN±ăUòx<äőzĆ>X€­_ă„NzJòź?IMIæë|“ÌœY nÏVŚur»ĘôGŸ ßäę”Nœ—/’sQòɑő5Ü"ó`N8Àûę~Áó“4=6p?Î‚QF”Ô–fwÇ/¶é2  xÓ4ä›üì]F”Ô•œê‰›;2„<öțdmúȚ]F”4”żîM0>\°‡ÆșàqÒ ű]F”4œÏéK\ú)|Ž$ű}°đà<€#j,șŒ(iźÈíO„v)rŒüāóÜ-șŒ(i©Ž»f>zș"’Ć^pÒamșŒ(i­zûę:ŒGŃłŐgx#è2ą€­:o|ì|M8$+ś"żtQÒț!ű&ČO± żßgxcè2ąÄć,űțêbC8$+ś"xcè2ą€«¶đç]Ì 80ۋtà^p·x·‘ĄËˆ’ÆŠŒĄîzÇï‡cłÙ°>tyMûJÂëł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††J LUntitled Layer 6d';6F8BFC21-2EB3-48E7-B6E0-94AE9AF57B08-34139-0000E0ACB5DFA933@üx}’IH[Q†_¶șł `ÁĄ”Š"žqHUŠ(ÒEŠTp@AŒ…bÁ…7.ÜĄ]H6.*ź\WÁl€Ô…űÔ(·ô9Çg&_â@OÏáŠW‹?. ÿś%wpŰSkœE.9ïìi.MÓ:°â3&=%)‡żûo>g~Ÿ í“ușN±ăUòx<äőzĆ>X€­_ă„NzJòź?IMIæë|“ÌœY nÏVŚur»ĘôGŸ ßäę”Nœ—/’sQòɑő5Ü"ó`N8Àûę~Áó“4=6p?Î‚QF”Ô–fwÇ/¶é2  xÓ4ä›üì]F”Ô•œê‰›;2„<öțdmúȚ]F”4”żîM0>\°‡ÆșàqÒ ű]F”4œÏéK\ú)|Ž$ű}°đà<€#j,șŒ(iźÈíO„v)rŒüāóÜ-șŒ(i©Ž»f>zș"’Ć^pÒamșŒ(i­zûę:ŒGŃłŐgx#è2ą€­:o|ì|M8$+ś"żtQÒț!ű&ČO± żßgxcè2ąÄć,űțêbC8$+ś"xcè2ą€«¶đç]Ì 80ۋtà^p·x·‘ĄËˆ’ÆŠŒĄîzÇï‡cłÙ°>tyMûJÂëł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††N blue-document-zipperd';94E65854-C0A3-43CE-B5A9-193CA1076463-34139-0000E0A9F5D631B6@üx}’IH[Q†_¶șł `ÁĄ”Š"žqHUŠ(ÒEŠTp@AŒ…bÁ…7.ÜĄ]H6.*ź\WÁl€Ô…űÔ(·ô9Çg&_â@OÏáŠW‹?. ÿś%wpŰSkœE.9ïìi.MÓ:°â3&=%)‡żûo>g~Ÿ í“ușN±ăUòx<äőzĆ>X€­_ă„NzJòź?IMIæë|“ÌœY nÏVŚur»ĘôGŸ ßäę”Nœ—/’sQòɑő5Ü"ó`N8Àûę~Áó“4=6p?Î‚QF”Ô–fwÇ/¶é2  xÓ4ä›üì]F”Ô•œê‰›;2„<öțdmúȚ]F”4”żîM0>\°‡ÆșàqÒ ű]F”4œÏéK\ú)|Ž$ű}°đà<€#j,șŒ(iźÈíO„v)rŒüāóÜ-șŒ(i©Ž»f>zș"’Ć^pÒamșŒ(i­zûę:ŒGŃłŐgx#è2ą€­:o|ì|M8$+ś"żtQÒț!ű&ČO± żßgxcè2ąÄć,űțêbC8$+ś"xcè2ą€«¶đç]Ì 80ۋtà^p·x·‘ĄËˆ’ÆŠŒĄîzÇï‡cłÙ°>tyMûJÂëł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††Æâblue-document-flashd';B8FDFB16-BEDA-481A-AA0B-EC14C0FC4102-34139-0000E08C1EBDE397@ux’_HÓQĆ}Œ†97·é„$ÿmËeÎMM#$  ‚ąÊ|èĄz‰`eIù”ÆL"S‹šFFŽL)Óæ”4•ș-ÿÎčÍ5ŚŹŸś?„tàp/?ÎçÜ{ś&üU‰J^e4ìŹĘÊJÉölŠțS‡‹2êąțY„—>!Ž0ŽuÏ‚.s#ÜΟ`„D”CqAąô:łÂ𩱶ä!( ï ŚśCźłAVЋ à~‡”±đ"ȘŠ3ΊKEč„r±ljÉ(ÒJ'Ą,s"mß8R‹íPèˆéžÇđ|°ÂÖqEđc~;Ą\òÂŚ”A,îÊê)>ÊőoRđm朌ƒíƒĆTș«P.™î%íy‘HŒzh]:›ËtŻ ÍI^''lB㏔e6Ê•ČŚ yaü_Ü&;Ùw‰¶bÍ]x§„öOkög'”KȘ}Èł‹K›üŒlÏlÎŰdM’T­đÍ ì^ŽÈŸH(Wòî{|sî(1=4ïBg·ś»\«Û°#û|sCB»Ûăćč—ć«ïPŽŹiÿc”…ÜÆŚMRĘFbVÖ\ĂBGxy'Ș.Ê”MVcNÊiĄun’›)Ü„ÄÌkä«š?gßc:Â+S8YĄ6§S‡47~fZ™Àú2œż„.Œ!0?ŠÀ·Ą#ìu‚e ‰ÓéÊŒ–hp!/œß-:6ˆgYBâTkÌ·0țûêä–«Ó`YBâToÒ?ęò€u0łłpûż"ÂŒößgl]`YBâtŽ\ÓÜP]Òÿ?fYBH żtœł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††— ‘blue-document-text-imaged';1877DB60-E816-4460-B972-EDE51DEEE0B4-34139-0000E0861C377A66@Ax“[H“qÆww]d–‡$đ"«©bDÄB:CQ°‚(òą ›.ș‰ ˆąÓEG1bČ4ÔVkÈűŰȘ”Ă·ÖÜÉtçyÎmźmZôôŸ4üŁE<<ż?ïéSŚŹiŐl]§ę—ËJWUȘțą}ÛÊÏ.Š"ÈMù‘Ä|܃L̍tTV’șÀ™ČҒ*Š/Sëöòsč™ ’aCVLúÌww0êx·á1~ć&Á蔫KȘ Ž_œțB>B2j_ń s獱Ïhê:ÔÖXўŸÂ'Ó3|0>ÇÒ›ń©đŚÁœp–Aš6\Ê'ż!îÀè  Qï{D„ƒŸ„ž»ÊL9Kˆ Ł;+Ż憑ÿ‚ô˜ŒT܅č˜C™Ś1âêCÈÖ­ì…ł„:Ö\}­AƒȚ„ž±[FĂ+Yyƒëű3Ț-g tŒ„æúń[öžFË +ŽŃ Ž|M(u,Gn:Î"èÄźM7ÒaT\Œ…Ș˜Ѐ“Pÿ Oéćó@dé%Œőàá,!‚NîźœÍ|vƇùișż)/2ecAsq/9șÎ"èԞͶ3x=ûLđŰôöŸƒlŐ!(ś#àì…Ûąßg €ŐÔ=gțûlÙę+ÔÁœđq–AçÛêûfăà7Ű܋bš)ï…wËśń#g tžčöNûA”ćÌYB–H„ú „Äł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††• Sapplication-terminald';FBFD89FC-7050-4E67-8997-4DF17F3B4C29-34139-0000E0600B7D2A44@C@x‘MkQ…Ę)žËFD"Æ?…&ZŁFÍè8ŽÆ?ÆILSÛ’,ș.úZ"H A$YžÒZŽ@, ű_Nßkè¶]îÀÜçœóŸŚh4ÚŚŚŚÓv»]û1æ+u:§ćr‰ŸÏÏX,xx|Ä|>Çt:Ćd2Ád<Æ7Òwú~˜~Əù _>zbŹÍf«ÜßßăîîĂáƒÁę~œ^···žččÁőő5șĘ.źźźĐn·Ńj”pyy NÇș8„Ăá•8ŽC(B0D €ßï‡Śë…Ëć‚ss[N'^omᝌßŰŰ8dÜl6CŁŃ@­VC”ZE„RȘȘP1A@`gy ää#‘'ă©ÿ˔$ cš±^ŻCÓ4 ÈȌhäś]žș$"aH1ùä>xêÇx«ŐzÌúŽF#\\\@ĄŒ}7›M<đî.Äœ=€ążêÁú°™XŚ}ê*‹1(ó@–pœWđŸTD:[ń‹ćÄçó!›Í"•JAEđ”#>-DĄì'P΀q”ËąZ,àT-áì@ƒL]o6›O=‰ÚËæšŻQL%qH™o)ó€TęVÆ9±LYòeŒÉd:w»ĘˆĐßthśźm…ąx5IólȚŽÆ”Ép`˜PAÓigšTÊekI–§ŠlEĂÍŠƒžëVŒŽ¶ąÿZ\öN|{ś čY&€ ëËM$Ëł„BßűŹő,ûöV;†:;šüŸïȘnŚ ÌΌS㱏«^Iû+ûś|r:àyڃ]ś+ÿy‡țÙ *śŁȘRKû.ÓQîóănKüoí6Ÿ"瞀ČÌVUšio6ìu<€»Ç‰Ą{6ÁÊßwZZđ3è„rl:ĘrÚWjՍöŠClß„óèż|ÊïÍ'0<ЋpÈGMpa”–Ӟ§L!o0îšóÜ=n„íđۏÁCË9žßžŠ’Qh4K=Z-=É[† ”ŸágI"@©”œ^XH ‘ˆ”ŸágI"@©›c±yD"ArÎyÄbüÿö ,ÇƑL2H„8d2żI/6“„"•m4¶?y?êÂŰÇŚűúeß'Æ0=5ż ĄŸ •Jr‘dyH[S[«·yœ“‘\.‡B9XÛZeČ%{HšG")Ș*)‘ȚXŹ2™x/Éț"ę„9íł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††?„Untitled Layer 5d';4871A4F3-8357-4229-A29B-A40DEFCF3D65-34139-0000E0149A668852@ńx’ÏKÛ`ÇëÚ2âœi­Èˆî—ÌSwp—ÍûŠ°?Ą‡] ÙaÛA<­ó8ș“â? ôîÁĂN‚"/‚Łž‰S[±ۙźMÓŽ]MóĘó„!Ÿ—àŸđò<ŸOòB⻒ŸȚăêuÛŃ!)€čQ”ÈÄüܧ/ŽÓB«e{6—;Ò_ŸxïìlżOȘ›'cTÛ¶`šșg›MïßœN†ä[H»ÌÈă>”jæ‘?;đ,3̒"dpàŽZ1NpzČëYf˜%EHÿĂnŐŹhĐNś<Ë ł€čw7Lś?Ł;î{–fIą(·U«ZÀïBßÓ[H$Èîžć3ÏxÇ ł€ééiWkV‘űŸˆÇăŰŰXEQÏčć3ÏxÇ ł€‰DnȘzËËKH&Q.ç…òŒwÌ0KŠp8ű†żíńńb±ÖÖVè{Ęò™gŒc†YR„ÈràíĆE ”Z©Ô6ąŃ(ńY·|æï˜a–!ČìŸ6Œs”Jșï9 ƒÿ·?šVË°Ź êu†ÛțKŸš”˃mŁSSϗŸmŻ#Úď-üÚKă(» MËBŚ5z^‘Țo’ßD(ű@šr‡†‡{2™ę’ă8đ*à`öăÌWIș1IȘ›@ ­ż«+űùș•$ÿ+ÒțÇçûțÍ)‡ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††? Untitled Layer 4d';978681AD-3906-421D-A009-EF9632EEAFD4-34139-0000DFFC4D2F017B@ńx’ÏKÛ`ÇëÚ2âœi­Èˆî—ÌSwp—ÍûŠ°?Ą‡] ÙaÛA<­ó8ș“â? ôîÁĂN‚"/‚Łž‰S[±ۙźMÓŽ]MóĘó„!Ÿ—àŸđò<ŸOòB⻒ŸȚăêuÛŃ!)€čQ”ÈÄüܧ/ŽÓB«e{6—;Ò_ŸxïìlżOȘ›'cTÛ¶`šșg›MïßœN†ä[H»ÌÈă>”jæ‘?;đ,3̒"dpàŽZ1NpzČëYf˜%EHÿĂnŐŹhĐNś<Ë ł€čw7Lś?Ł;î{–fIą(·U«ZÀïBßÓ[H$Èîžć3ÏxÇ ł€ééiWkV‘űŸˆÇăŰŰXEQÏčć3ÏxÇ ł€‰DnȘzËËKH&Q.ç…òŒwÌ0KŠp8ű†żíńńb±ÖÖVè{Ęò™gŒc†YR„ÈràíĆE ”Z©Ô6ąŃ(ńY·|æï˜a–!ČìŸ6Œs”Jșï9 ƒÿ·?šVË°Ź êu†ÛțKŸš”˃mŁSSϗŸmŻ#Úď-üÚKă(» MËBŚ5z^‘Țo’ßD(ű@šr‡†‡{2™ę’ă8đ*à`öăÌWIș1IȘ›@ ­ż«+űùș•$ÿ+ÒțÇçûțÍ)‡ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††?îUntitled Layer 3d';AEEEE2D6-0935-40B3-80B2-9D5FD83AE151-34139-0000DFF8EFF6C027@ńx’ÏKÛ`ÇëÚ2âœi­Èˆî—ÌSwp—ÍûŠ°?Ą‡] ÙaÛA<­ó8ș“â? ôîÁĂN‚"/‚Łž‰S[±ۙźMÓŽ]MóĘó„!Ÿ—àŸđò<ŸOòB⻒ŸȚăêuÛŃ!)€čQ”ÈÄüܧ/ŽÓB«e{6—;Ò_ŸxïìlżOȘ›'cTÛ¶`šșg›MïßœN†ä[H»ÌÈă>”jæ‘?;đ,3̒"dpàŽZ1NpzČëYf˜%EHÿĂnŐŹhĐNś<Ë ł€čw7Lś?Ł;î{–fIą(·U«ZÀïBßÓ[H$Èîžć3ÏxÇ ł€ééiWkV‘űŸˆÇăŰŰXEQÏčć3ÏxÇ ł€‰DnȘzËËKH&Q.ç…òŒwÌ0KŠp8ű†żíńńb±ÖÖVè{Ęò™gŒc†YR„ÈràíĆE ”Z©Ô6ąŃ(ńY·|æï˜a–!ČìŸ6Œs”Jșï9 ƒÿ·?šVË°Ź êu†ÛțKŸš”˃mŁSSϗŸmŻ#Úď-üÚKă(» MËBŚ5z^‘Țo’ßD(ű@šr‡†‡{2™ę’ă8đ*à`öăÌWIș1IȘ›@ ­ż«+űùș•$ÿ+ÒțÇçûțÍ)‡ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††?œUntitled Layer 2d';1C8CFD11-5BC8-4921-A2C9-BFC435022388-34139-0000DFF5ED5BB5E0@ńx’ÏKÛ`ÇëÚ2âœi­Èˆî—ÌSwp—ÍûŠ°?Ą‡] ÙaÛA<­ó8ș“â? ôîÁĂN‚"/‚Łž‰S[±ۙźMÓŽ]MóĘó„!Ÿ—àŸđò<ŸOòB⻒ŸȚăêuÛŃ!)€čQ”ÈÄüܧ/ŽÓB«e{6—;Ò_ŸxïìlżOȘ›'cTÛ¶`šșg›MïßœN†ä[H»ÌÈă>”jæ‘?;đ,3̒"dpàŽZ1NpzČëYf˜%EHÿĂnŐŹhĐNś<Ë ł€čw7Lś?Ł;î{–fIą(·U«ZÀïBßÓ[H$Èîžć3ÏxÇ ł€ééiWkV‘űŸˆÇăŰŰXEQÏčć3ÏxÇ ł€‰DnȘzËËKH&Q.ç…òŒwÌ0KŠp8ű†żíńńb±ÖÖVè{Ęò™gŒc†YR„ÈràíĆE ”Z©Ô6ąŃ(ńY·|æï˜a–!ČìŸ6Œs”Jșï9 ƒÿ·?šVË°Ź êu†ÛțKŸš”˃mŁSSϗŸmŻ#Úď-üÚKă(» MËBŚ5z^‘Țo’ßD(ű@šr‡†‡{2™ę’ă8đ*à`öăÌWIș1IȘ›@ ­ż«+űùș•$ÿ+ÒțÇçûțÍ)‡ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††=ŠUntitled Layerd';B5E5BCC3-F31B-4396-81FA-126F4627B037-34139-0000DFF29ABF2DAF@ńx’ÏKÛ`ÇëÚ2âœi­Èˆî—ÌSwp—ÍûŠ°?Ą‡] ÙaÛA<­ó8ș“â? ôîÁĂN‚"/‚Łž‰S[±ۙźMÓŽ]MóĘó„!Ÿ—àŸđò<ŸOòB⻒ŸȚăêuÛŃ!)€čQ”ÈÄüܧ/ŽÓB«e{6—;Ò_ŸxïìlżOȘ›'cTÛ¶`šșg›MïßœN†ä[H»ÌÈă>”jæ‘?;đ,3̒"dpàŽZ1NpzČëYf˜%EHÿĂnŐŹhĐNś<Ë ł€čw7Lś?Ł;î{–fIą(·U«ZÀïBßÓ[H$Èîžć3ÏxÇ ł€ééiWkV‘űŸˆÇăŰŰXEQÏčć3ÏxÇ ł€‰DnȘzËËKH&Q.ç…òŒwÌ0KŠp8ű†żíńńb±ÖÖVè{Ęò™gŒc†YR„ÈràíĆE ”Z©Ô6ąŃ(ńY·|æï˜a–!ČìŸ6Œs”Jșï9 ƒÿ·?šVË°Ź êu†ÛțKŸš”˃mŁSSϗŸmŻ#Úď-üÚKă(» MËBŚ5z^‘Țo’ßD(ű@šr‡†‡{2™ę’ă8đ*à`öăÌWIș1IȘ›@ ­ż«+űùș•$ÿ+ÒțÇçûțÍ)‡ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††:X script-coded';D528B246-64CB-48B6-8888-A691D6D873B7-34139-0000DFE82FD68418@ńx’ÏKÛ`ÇëÚ2âœi­Èˆî—ÌSwp—ÍûŠ°?Ą‡] ÙaÛA<­ó8ș“â? ôîÁĂN‚"/‚Łž‰S[±ۙźMÓŽ]MóĘó„!Ÿ—àŸđò<ŸOòB⻒ŸȚăêuÛŃ!)€čQ”ÈÄüܧ/ŽÓB«e{6—;Ò_ŸxïìlżOȘ›'cTÛ¶`šșg›MïßœN†ä[H»ÌÈă>”jæ‘?;đ,3̒"dpàŽZ1NpzČëYf˜%EHÿĂnŐŹhĐNś<Ë ł€čw7Lś?Ł;î{–fIą(·U«ZÀïBßÓ[H$Èîžć3ÏxÇ ł€ééiWkV‘űŸˆÇăŰŰXEQÏčć3ÏxÇ ł€‰DnȘzËËKH&Q.ç…òŒwÌ0KŠp8ű†żíńńb±ÖÖVè{Ęò™gŒc†YR„ÈràíĆE ”Z©Ô6ąŃ(ńY·|æï˜a–!ČìŸ6Œs”Jșï9 ƒÿ·?šVË°Ź êu†ÛțKŸš”˃mŁSSϗŸmŻ#Úď-üÚKă(» MËBŚ5z^‘Țo’ßD(ű@šr‡†‡{2™ę’ă8đ*à`öăÌWIș1IȘ›@ ­ż«+űùș•$ÿ+ÒțÇçûțÍ)‡ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††:è script-coded';DCE88FCA-1ADB-4C55-B4A0-146CFB06E63B-34139-0000DFD44D2BE287@ńx’ÏKÛ`ÇëÚ2âœi­Èˆî—ÌSwp—ÍûŠ°?Ą‡] ÙaÛA<­ó8ș“â? ôîÁĂN‚"/‚Łž‰S[±ۙźMÓŽ]MóĘó„!Ÿ—àŸđò<ŸOòB⻒ŸȚăêuÛŃ!)€čQ”ÈÄüܧ/ŽÓB«e{6—;Ò_ŸxïìlżOȘ›'cTÛ¶`šșg›MïßœN†ä[H»ÌÈă>”jæ‘?;đ,3̒"dpàŽZ1NpzČëYf˜%EHÿĂnŐŹhĐNś<Ë ł€čw7Lś?Ł;î{–fIą(·U«ZÀïBßÓ[H$Èîžć3ÏxÇ ł€ééiWkV‘űŸˆÇăŰŰXEQÏčć3ÏxÇ ł€‰DnȘzËËKH&Q.ç…òŒwÌ0KŠp8ű†żíńńb±ÖÖVè{Ęò™gŒc†YR„ÈràíĆE ”Z©Ô6ąŃ(ńY·|æï˜a–!ČìŸ6Œs”Jșï9 ƒÿ·?šVË°Ź êu†ÛțKŸš”˃mŁSSϗŸmŻ#Úď-üÚKă(» MËBŚ5z^‘Țo’ßD(ű@šr‡†‡{2™ę’ă8đ*à`öăÌWIș1IȘ›@ ­ż«+űùș•$ÿ+ÒțÇçûțÍ)‡ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††G&globed';3ABE6755-1173-49C7-87E7-ADB8EE87D090-34139-0000DF64928BD4D5@Àxm’yHÓaÇvˆ†GP‰ˆ”XEX X–č–ä…–GÇÄÄFĄ™˜ŽšŒđö—–y4[PyfÎŁĂ"č„n6ÍMÔÊiÓ¶•€NÜ·ś~ááyŸśù|Ț?~ü˜%±\eaćáfëtÜ9œ0rsć#ŸÛKÚéLïéž`ËÆi­„‹ Đù^œà üc}ČvRțdN§j2ÍLvύH…ÚÆTźœî)ÇüGûŐ.áź”ÒòžńéçX0(ĄëŻÆtł“]0ÍĂ47 ecú8ć(Ïü‰ćJ ëKȚ„íâ4_ZYü‡EâOśUAŻcvB†]/L3`úكîڛÊSèÌ'+NA̞ț§±űT—ˆȘ Œ¶dbôu ȘZ,NI §’û*,jš1?ÖöÜÎ~ê Țe—ŚÂFé”eè†ŁO uCŐäœg‰ ùèžs łœśńím †«ăŃÂòtÔ#:Ăs·o©»jTCšËąÈŠâ ô–ă}A ÆÈ;óÉ0ŒșYn$™>„©Gt&ÊĘNÚ(đ1 Oą=ŐÒŹCe†,Û’ rÎä@™CM ĉ{ĄÈ9ŠÖL?őˆÎ„ï¶inM;fl»íÎtOÈ2Çëo”„xB•ï ęăˆöÀXËĂH9ÏH=ą3ŸÛÖ°O.ïŚśOžćEî(ò8èÍ皫;‡ë‹îÔCű\cÍteûë©Gtf‹ƒ%7%hÓ ŠćŽ‹Á»ț*ÁPi>•…cš$Ș"ò-Ò8Xhș`źÜÓ[©Gtfő ÆúŹ»œš!qŸvŒx_žĆűăóĐTÆBSoîtțȞÀ‚D€öì-ć©Gts6ŰŹtMâ8Œx#8 ȘžˆïuW kž]ă s§óHY4:‹Îh“Ž:Ÿ <Ńț‰ƒí*Ś8Żő"QÌv”’ ŐOT& âë&Úé\œMMś”#űČĄÿäȚÖ\Ÿç:ö–Ÿcsvˆ“”v:Ó{ș'ے0Ìoƒ™Ú-ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††żôblue-document-officed';0B88DA97-EAD9-47D2-B4AB-BACEBD348E6F-34139-0000DF3786A7F25A@mx’]HSaÇœÎ;ƒ. ”Ì4‰$Ȓ qF)’°Ÿ„” â…šAx J)Œ)"è‹Â$ą› €C"3Ûün6çtșç>Î>Î>ÎæŹț=Ïk!ęà9pàùꟶ+ç/•„ûê* šw«üŒ=ĆÔúOêO¶Š#«Đ|?ß°"&Ï!ꚁș6-Êțé ž'?/ś”gĐńÍôΞN(ĐÂ2"ò<Œ ŁđÌ!OĂmù€™áüÖŒh8Y۶on ©‰8ß1…‚ c(șb†Ąo[I‰  1żŃ ‹|˜©–șò—€ $‚ĘĄŸXŁ8ÖnăzȚ…ÉFZjDÆÎ:x/§t*ž;n‘Ü}­ĐPMƒôÆ;Ć:vöŸțtQ'©‰0ô:Ä\vëŹĂčȁŻś[ĄĐžç{›Ä^v΃ÏôҙƒwHèˆQ‚F Š<›X”}Ę6úۆÏTY|/W«Š{HÍ UŚPk Bo b>àGÛÛnô»Đ=ęZd!ç„Èà»5T—Ü#-ƒDTŒČÒ$ˆ †]æŠń6’ȘĄ5łÈĐü6\«)í#-ƒD}jgđ:žËź~è–đĂ.‹ÈĐ‹ž~öp?itÄì˜Qț•Š ­NűEmÆ}HĆŒˆ+KôŠŠD†ŠŰqă\ÙcÒČhȘ=ò,]„^zżș3zĂŸïtśsP=łPŚ§EF’|î%%‹æșòì'‚¶]3’Á%p/)YŽ7ÿ3.ƒ3ž6UçvEVâ /#r`+êś’’ĆćêČ'+?ÿOq/)DNÎaCSGł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††ŚÂblue-document-pdfd';DD69E198-0D36-4EB6-9C1B-6DA63FDAC3D3-34139-0000DF24AAA0FBA2@ˆx’[HÓa†œŒÄŽÍm I§ÛÔLsi„R`HF-ąˆ3R /"êą›,KÊnÒPC(*‰J2"3ÏnÊ\sj꜇yÜ暊±·ßś„ôÀ{ś>ïśęŃ*€č9i» ¶J„h»œȘÿä˜&ȘpĂ9Żă<łCX”Âm3Â5i౶ŸëDˆc©.YX&Kë€LÓMé,­R”ҔfH’›płŽSœ`lŹ‚Ï;‡Üôš«‘âÀ8R9ŹŠ@x†™V„ïBXz?dêvò?AŒç-ì}h~~WÈćœ€ZR9ÒÔêÈ3!2Ă Ÿˆ?h€;Ž!4ù#D‰Ż1clâììYò2v—Ê‘€|Š;w!LÓÍQLC\ł@’òâ€w%ŒÀœčYŰ`țÉÌèRR9Ą{!Mm„óôžR2ŒKEftv;‘}ąƒÎ~…UGڅ öNuûcź“Ê'ŸÛН7`l|”őÓűÚéĜc„7zŹšÂòx—°ÁŸË™ò[€rvÆŚó;NNm âÉ(Žç·!FÓQ|B”ŐŰ!ŒćÉaƒ}ÛüŹžÛ€rB”ÏšGQŐț‰Č†RÍÏ V抋jàŽś Ț…aœ;Ź,#Տ ÙȘ‡?]ăđ,˜±:OÿŸĂśì \3pM„ ïąŹKŠ$Tnž'àY€ÿw‹5òY—? r’j˜ÿcÉČćÆÚÒX—?ŠóÔïyì`,ìYxœß±ÎČ2†őćQlșm`]Rü8„Ș(9„ŐÿOX—" à7Òtúł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††H_filmd';4287CBB1-6C2B-437F-A970-A3C40E157AEA-34139-0000DF0B7C478B03@ÀxÒĘnQày‚7ŃKcz«­J "ƒm•ÚX(ƒ@Ą‚ ëA­ÒÒ JűK˜‚„ےh‚I«&ŸĆrïrŽ7zѕ|9™d­3Pćń‘7WÄ]ȚÈűTU}OçÛa)ŠA12S㈘ùúŻƒè!pGtùż°; }nŽùÈ:Y/:ÛÔ6—xżKžËdtg™ÎŠY|A{?ștG'»fj‡Ń'0Ô9$æŻóŸ"ș"Ș”†Fä1ƒP -ăCZC…žso 9śUÂ]&v:|ç~7éE+ŸFŸÛ‡^!ŠO„<êĆÊ êMȚï;gĘ0‘Ù†„-úŸžĂ4ühgŒhd#űhÄ°QŃÒWx@žËdb‡ŁBgĘj”N˜ĆbùBσÿš‹nŒÈèBó8œ†QҍŁđ}˜Á{őwŃó/đû›ÊŹËd’v»ïlOòNłtGÜőă—*ïÛą›$2ĄśŐĐ0Ž/cŹ/aČíŸtšZĄ­ fűžC2‚LŽîŹÒiNô§8Ùt`è_Dß{Ęg·Ńń,àsz';pGtsDÆFß«8‹81Úqsá»±ŽóŠŽ‹VƒTy?"Üe2e›Í¶GçtšpcJïúQÒđó]đÒŻȘŽóÚ.ï§ąËÿđïúûŠžËŠąü/âzCł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††ć - music-beam-16d';1FFB0EDF-BEB7-4304-BA21-460EA78D0511-34139-0000DEF3D95AC235@šxc@żśæüáe”î+ƒíUB9ÙYž€ÂDȚ"w©É­œZțÿęæÔŻ€˜Ò€@€QW†ËȘÀ]șfÖÏĘYÿśô`À~nMùÿtaàÿEćN;٘Av‚ÍJ¶o@2+ű6Śó?HĘò ők—»ŹÿߞáęuQč#Ä, û éÿŰi—WaŚN±o›ŐiőÿálïÿżweÂ汁ÍÚXćAfĆXŠ–}_ˆUŸO°Ä+ÿ©ÏŻüŻEŸxćŃĘg„!ê°żŐőԗ~źțÿ}uÄ 0Nđ”ÛEÿÁfûçï6%ÿÿqŽôÿŚœčÿÏő{Ę ă?çz èßXlđéńąàÿO…țż6ÙęŹœ|P'ű”&Eż‡ź@Á‚ŐOsRԟű‹æ…P€™ȘĂ–Z»S/ęùLƒŸV„ăő:X_lüüéȘŰÿߏ”üÿ°#ëÿV'ŒțC ·Ę›đÿȚÜÀÿGZlț‡ZJáő:pÒà)˜)û©/\ź šÿ}Èèł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††6 üimaged';D01D764B-05D3-4F17-8BF7-9904CD516B4C-34139-0000DED378FA8684@óxÌ]H“qÇńkén]TTdŰ4{ń­Û^n‚È4š@2Ü ±\…Aë©)D«Ôb™PBáR,j­­ÒAITkžÊąŽ±Š–ΔçőÛóÏ«.óÀsœÏÉ7/ČŹ)3ŚÌ&–•šmÌȄ--Éłëș†ty3ҕr€ÖmHŚ*‘źZŒlEöX‘oïGîČŁűšPßöąŸń"Œ°%Ćy5MFö:{7.”P;ÊĂFËÌjCy܌úŸ=ő-Aa‹‹–ÖȘj–ŸóÄ{PŁOQ‡‚Fą†9`žšÚđ ŽD}<†0­έ“ć4ûœԞĘĆ_»ńÿĂÌʏ/F†ÿîúÄ(úŰ7ôŸqôé „vŐÊ%‡%éëŹEXlkÙÛ°…λ-<{ȚĆçpÔÈ;҉O†3Œ°™ PČ#ìŠÂƎߙqvZ–a­È§Êűă8°ő›p9·ănÚM‡ÛFśÍ#űœ„<ŒG#láò…G3ÓIZíëńÔmäÖ±rîȚÿB/Ż"Ò}†‘à%Æ^w’ùۃóŁ%ûFۂ‚ é©Ä?Ț{Ș’GÍ{èwŚ0xŁžĄ;NŸßw‘ \d2ԆôȘa„Í͝{RÊŠ˜šŒÿW„ÖdÊ©ž?oÎčÙÄdÊ©țڅ4ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††~ Èblue-document-textd';B870949D-8C3A-428F-906A-BCB7830D1D24-34139-0000DEB42B147D41@.x“]HSaÇww]d~$7}ŒŠ#șXHBD]X^tŃMĘDĐMA]E‹ą02Ë4Š’vščyæNîĂč™ÇÍččç6ŚÙŽèßóáàË2úĂïĆÿśđßçyÍő›Z,{¶Žę«Ș*7ԘÖѱœŐ—WČ3Đ(Ä}XŠŽ#Q »ő ~î{Ș*+jÉ^Š–}ŐWŽÔ$2ȘéóțAÄąź^ÌÊ=Pză·6ömȚXQGˆ ăæ­ŚŠé 2áŃżö|~ÇšK–Æg„jĘż­œž‚ŁßŠŻ}O᱿†“Îk{pŸ { tâÀöëĆÌæŸő âëGŰc+ËÁ<{ têàŽ%âćĄŒŸ3rŰ?>Ôęź+€źú›Č—AgŐÜ,-~G|JB,8T–Cuś ä|«Ï…œ„:ÛTw«”†2Ü—ôr5‡ŒšĂ7ÒiŒϖœ„:Ś\{™űdx uxĘZ2ö"èüáw—s*<Î7˜öٌ“cĘzEz„çàa/!‚.ižÇ|z։TÄaäÈĆŸ!7çF6:†Ćˆ v„œ„șxtŚĂ•ü Œź.xćNšț>Lžß#zđŽ±—Am–F+ó?(€é€üXJÒ?Hx…Œcì%DĐŐÖĘ~ąà\|œèMy.<[ȚŸùŰKˆ ÓM śÛOšżüO±—52™ț^â!Àł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††n — applicationd';B3C032D4-132E-4F16-A7B7-729D4677FCAD-34139-0000DE9ECE3BBF03@%@xĐÏgĂ`ÇńȚžÒ[.QŐHó_Íź”_fÌŰeçęŃV…R!D$çf™eŽ4łÒS ©HIHEêł|Ù?đôáÍśòâăi”ZJ·ÛœPćŠ'2ÿör<Ż6› ~Śk„aˆĆr‰ àû><σ7Ÿăłî»Ÿț~‚/ ßßVdeYŸu]ŽăÀ¶mX–Ó4afłŠÓ)t]Çd2Áh4‚ŠiPUƒÁFƒ¶\ăÌG¶ŚëʜN'TUĆČőț»Č,q<č"CV’€ûą(ç9WdÈÖűeÒ4ćŠ ÙN§óx8°ßïč"C¶Ęn?%I‚ĘnÇČą(>ÇqŒívËȂ ŒĐž(Šž"C–1Öo6›ŻçÄëÿ§^€ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††đ  blue-documentd';DC77C90A-5C7B-471B-AEA5-1238F7E1FB7E-34139-0000DE575AE40F3C@„x’;H‚a†s3h0È.v‘À„‹T„Ń`HB "ˆ ąÀĄĄ„Ą%‚–ÚŠŠæš$jˆ,MÊL+/™š·Œő{):ă}”=p¶śyùÿïUc…VÓZ„çTR&•` M6[Hx@xč…LđÒ~€|VHz-Ćqïe€q=ÆĄm—Í ‘;ˆ»Ï ê:…Ęëű/Œđd>«q>…PźČ\܀ Ă Șz!uBÜ{țg‡ioí{f4Ê]Tt5†lÌŻ>sÉúúÊąÂ0ÔY»˜ßCÂÉí ŸČš0ŒtŐ-ćĐO>[žôŠ”E…aŹ[Ÿœ{}€dàŠÛA{Ą,* ăꆕ\âRA·ƒvKYT&zWóè§_źčBŰ”E…aČ·i=ŸtC:Œ·Ăé Ą,* S}Š ò3;·CÀĄ,* ÓęÍ[…”2QŒ_NĘeQaĐk”;äżĆÜș1ÊąÂ0Żk9űÈű:hè_ŠƒoJ{ĄĘÒ}Œ§|@YTFՊMĂ°êä?CYT~ }đK1Tł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††u Layer 1d':B49E082D-A1FB-487E-BE17-E16F73A8F48E-7317-000022DE0376C4C3@1x•“Qn‚PEÙK—Đ}ù՘ž•ÆżbùššKèwĘC”+P[%Ä6šéŹ“‰'č<†čś1đ}3™„2 UOŠPĆ:‡Òïߧ^ôÛpÎI§ÓyTû?ž/ÌgŻò†æłj„†ÁàA"I’°G ‘ÌQô.qIŒˆ«•‚À—,Kőì4G·{7ԘÁsÂrKČü0QĂtúRíqžƒç՘†§Œs‰€©3Qvê0ŻÆŒs>ŚWyVŚòÌIŠû!ÀŻ1ƒ6›uŁÖëU%ÀŻ1ƒ¶_Ÿ­ü3šĄ(v­ü3šĄ,ËV~ÔđłßËśŃü3xp<ćph}ÀŻ1ƒçđkÌèőzÏ|SìËlMążWçFu{…đÿáyżTUȘĄł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††{3dird':2FF17678-F87E-4E6E-974D-AEA1452BD260-7317-000022DE0375EFB6@;€xÎ]H“ađ Zfš ȚdwAQÒmt‘PTàE7%Ž ‘"!ši.îĂíu˜:0·lÍ}Xæln*LÔü,»ÉÉhQ79ßg{·ÙŽúw·ĆąÀ^űqțçđŒçyŽȘ:alŹĐ]ż`SŚŚZŐŚj­ùù~ŐŐs–ÊęĆvló-ô"‰·CflˆO[ŸìEjö1ŸűMĐÉ/: KŠdećûŠ*K‹dć„{e\YńžÊĘ»vÊ"> ÜÁNlNt‘n|Ÿxˆôt>?AÈ„ęöèÒaO{:äÔ€V\Úő§vę㠀1áF(ìÔȟS&$’ŁĈD ©€éW€gÍT{ó<ÂÆL~Ì[đÎz—EÜÊűæ€ żđ7Ÿ‰—:H$ák§Ìeò:Ę·ÔÓÄBvel#Űɧ‡4bÈ#dńLü„WÂw§ÆŒX25±°])ŠüzćuˆÓț ÊĂŒæPÏń‘h–€ozn±î61ámClHM4DK4`^Ê\¶Ïśj‘€śŸîŸÉÂ6„( Ș°æyq@EČőÇsáęÖ\é… lÙȘˆ2W ąÎ{€őżŹčZŁóƶlŸ Ź:šłZ¶%Ì}sB ›o‹_í p«vúKźçțì3”"œc‘îÿôŽ9†©ÀŚŒäSț<MFPÀûȚ&vòđAœüìńńË5՞K§ȘĘżŐüsŚ>òŒț̱ŃȘŠ’+żÓÚfœł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††m f dir-openedd':E171E19A-6285-43FA-A545-2E08E088286D-7317-000022DE03753825@&xĐ]HSaÆńcW]»ŹŒ‰ÔF€Š Z˜-*hj7}@lE])‘Û4æúۜlšÚȘ55ŚæŹÍ•-ÜĐ6g›éZQb $*km;›gÍ#æÓ»ŁE%=đăŒŒđż8ŻäTčÊȚ"{jšÛ Č*{żŠÚŠąTFęç><ŃӘ°cá„ /ŒÀ«n$ÇLUŸ•Y"(äW–æeȚ›Ÿ-ä)ËĘZŸvÍêu$ćöȚȘˆ/ŽŽaÎӊ€SDż)W’țNÌúnƒá8sc]ˆMŰœ‘wˆ€ÜȚY䉄K‹°­Ž[&hEÂGZï-0iĂ70ëŃŚńĘ«ClÔéÂæÌ ëłŠvn+ž4Ë㟌RLuÔ Œ‡o`Ÿ›ÀÍä{l ›žvŒk éçßX€I>;ŽtšśRlB#ÂGëe€FuH šÔ.JkțE ‡u_ĂŒ·íg…–ŚÒhđêI|!ÿ"oÀž4„vEŹ»á‡Jälâű›NG1O⟀v4‚~€ú§žCæ±=’cĂäù(_Ł(șyŽ»ûÖ+Gä~ĂČôùO1›Ó&æm9NrjÊĄ‹Íô)1ĘQˆć"ÂæșżúJ„{ê1c”ÀŻ‡HÊ-mZѕAvXđK@^êC^gêčń>äÆz‘íÁÜĘSđŹ “^‚dÈéÆŰY$‡ ȃî€ÎóÏX#m;Á€n·ÀߏŠÈ8ż6z/\â"âžz”óŒ àùń]XûKé;­žqhś3ŠiHôí«±+ˆ»Mˆ» ˜pŐaÂm€Ùˆlċ©@“zÆH›+Q/ű>Šip>őàć…ZșXÿžÂ'iSÁ&Ìś#óȆĆ'v, ŸÇr€ƒț§„49‡„ψôÙdŒNÙ€P( ŁD y0y±ËOtqȚJgÛđöȘo.U#áźÀ€s”ë"æéÿćæ^yíʋ„đÊ[‹ò"œßI(țÍś/Çtg2Ol›ÿ1t Ӂ}`~IBč\‰?‹i(Ÿ ŹžĄUÊ_ÛŁzìSLƒç…‡Gńźł†, Đc¶ÛˆÙ[‚ÚyfxŸ=ö)Š!Ùëń-tï{ d‘Źąl­:sç™á™=ö)ŠÁóŚÍH d•‡śÙcŸbČł Ą˜żßˆśD|4—Żó>{ìSLŁëHM‚Śd:Wj©ŹÛ”šîłÇŸn+ȘÆÿ(öÿĄÓmR€ ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††K –file_extension_exed':942D4059-6B5B-4B16-BBC5-36E294E422BD-7317-000022DE0361715A@üx•’Kh“A…5 Ò&«;śŠàÊnĘuĄ‚ —nÜšm@’Ö€Úâ u“*4‚ÆEC”ë [€æE4ƶI#”€Đ.*ȘՖă9ŁL)1ˆ\îÜŸ“† \l]p;ę yë+Ű—ęQÀ7ç4@Y|f†Ê3źŸÿî3.P4őyű :Ú<©ŚĄsPz‚7ÆÎŻ–fL&‘lg'ŐÁSŽy⌬Áä§R:H‡› {LŚŒ €ë0żÈ ŐĄÓžpls‚1‹òńœ2r=-,/ČWš‘Ž4ae"Žlôó.I&đ=|`Ìąy„GžÙ|O3r—7"ـLŚz”úöâûűM,„ïàGź˅˜yWÆ,Ê/ú‘ïőŁVyĆ[Öł0őÙîMű™żśŚó—rQŒż¶fc W['Ÿ1‹òăïWŒ”“đáúvł.ȚȚeșfĄ”<ùŒY4/Ÿ»ÉènZ|Jöéțę(Ć™źYšË“ϘEóŚ·œ(ÓÓwśĄ;ˆòęĂŠkڗ'Ÿ1‹æÚh7*ń#ŽŁ}yòłèÿûeôȘ©“˜8ŽÙÄŃúâwí˓Ϙe€k+jcaÌżlgĂœêĆÙŐâŹïڗ'Ÿ1Kđ„ś”Ÿč[țYòä;kÙÁÚó%ÿŽó S"ùł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††R— applicationd':9D4AFCE3-1E59-42D2-AB1C-D4C2B0A3214B-7317-000022DE03608265@ ÀxŽœJĂ`Fłiì.E/À«tvđ"ÜÛR.AŠnê$iuo@ÚTŸdjlièćń=uŻŸ9pűȚá9!ÍœćÛûăȘîŽVÿ%ÍĆ~ő•7{>ŚûSÛ<óŽ=mh»‡+ú|čQïdMœÓusămc[ÚNkI“äAÉ斒«m%Ś;łec[ÚNsAeĄ óvIę(Rő5D3eĂhœ‹•ÄÎKçb-B:Lő–œd Žaę·eÊȑ—l6ŹÏÙ%ćùDùxì§máë[*ŠÂK¶@6*v•ƒ¶ÛZŽ«Ž»•G^Ÿ5ęmKCAÍÜ,gPûo ßòł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††#ŒŸ±Layer 0d':C24D76FC-604F-44DD-ABC9-DE5742197FC4-7317-000022DE035EDBD5@"x€oxí}XUÇÚő¶ÜX»±ÇKl‰-šÄ\»1šš‰±‹œś^± ąhbÔŰ{C"*T°‹•HïœĂúŚ»ûÈ!`ùîÿ=ßœ7źçY̞™wÍ̞3ó2{ö8räHœƒĂqŰÙْ6z'%Ž·?Ž={vE*…@ò_‡ˆˆ̜9ó(Íÿ©Wđìé Ÿ=UC‰ ,,ó'.eXRbiŁàùó?üÁ!Áj(q„ćDEEòJŚŽ… çÛRŠ‡Ü§ ,4áaĄˆCC‰ üęęX†…Ÿrż”éqüžN/uÄÆÆ ..V Łcąš–ÂCH{)ÓCÓÇS·zőjž89ĂÉŃŽHJL€™™ìíìM+@ì)ÓCâ‚DÚŠ§§©LKKŐSâ))ÉHHˆ§Uáú4ÚH]źÎ.ÈÌHWÛâæê W898"%9‘V…ë„žœœl•Ùٙdr‘ƒÜÜdeeȘmˆ=ezH\••…U«VᄛÛàL].V±=wvrBFF­ ŚçæäđgáÈaù±§Lù<4˜ššÂĘĘn'NÀĆƕ)ș4Wöƒ±§L™;o±§L%K–œ“4™B{{]Xe쉜bˆúd›· ŰÿÛÀjÙśqź«€«Ùśp]„ŁËȘȚp.Œfœ!öąŁ\q]ʗœšÌ8Šä<ω%“È”(v$ÒŐ2(W\W}Ç8ĐÈhæŒđ‹ü–+8ùM^ҏôeÚcœÙNÊ©ïĆőž@“sÀzï[À5ÀÍ_pÇw{îPCÜ\\ÿžșšÖԛjúÆ:Ż;@À/äfàțVԶۉÆ;Őś·w¶°œ_ięRïÂPĆ]ŠßŁîȚvàÁïXtr3[oDK›j(qÜÿeł BÓKšBòìî üț5űÄŸ]‹FGÌg»3OìŃQțRÿh?óé#ObÛÙ­šŸg9>>°M™`ëYÖû”yśC :Ê_¶ÿ©% ې¶@çTˆș*M ŽĄbžŰąŁ\ŻŸîś\ʇ…W`i|ęVD•N›ÔPâ’/vŃQÎțŚé[șźCś è|r“ž]OoBwO](qÉ;è(W\Mżc ščo.\ˆÆ‡ò0)!)ùb'ćlżnüŒ-DG9ÇÆȚąŁ\1ùŐ9WÎ)g–çŒČçëI;±ß» [ćń'âWȚ–ÍÉżțńćę/›V6Œ{ƒ-›gt >șŽ›Úś…ĄaÍrítŹ·jîÀÏ܏­è…óۍđĐf’ÎŻąZĂKșŸRoaÜ As‘âe†L/$șÏAží<9ŰöțɧYĄ8Êü`«ž·»/źmÿȚ›zàìúźp_Ó NŠé{ży„Țjé78”¶3M;âűŠN°^Ö VK»bᐗŸoWç7ëćŻÖÛ0ÓŽŻƒz4°üąI”„%Šû'“eÌ4 «J>ĂBń"_ÆŚGdEČ(©Ç‹üBaû/æϓ_„|Éz–ó»d[.îáȚbl—uŚç„Œzk~ŹŠ Ëk™Jč–4f©ò­XŸËîcùÇó”oCÛLJ‡àȚžUÊ”€1K…\K™R¶Pź%Y*8VrÜÍ»ăÔș.*ćÚvéËòmi+eJÙBč–4f©šRŸTË„ĘsŽsLćșJùśú0K…%Ëś`™,[%Żíò”O” [“òù ćZÒTHùV,ӎe ć:oùo)KÊ”Č…r-i têĐÁŃhè|ùĆÇ-’'6bËš$}èÁ55U„ìłçdŠ!6>Ÿ›ßÁŰgÀ€(`ZÏN˜ÌpÒs ęÏ(ZŒdiÊőúÌôtd9™Ăđ]śŃë\"FP?<0 х#Éț—“ńÙ4«ë”ëÇONNŽJ >âĐbó#üűèśj8»Ç—j(ńšv=Aن_}#s'?Z­Ÿ.7žÈ‡$ĂouĄÄ{IxWîăŽș.cJÚaooƒSÎÖhjv_˜ßÆWknœdŸxû”·ńő/òYȚHÖFÿSŸĂż€cÆMăÜLÀŐ€\VÔ6$Ó\W~ŒCóëEÒŽ@ˆöuˆzì…?U.ĐJœ‚°ûŽ€Â8ëÂûLć#ɜü D><‹č?Tű‹ÿ”v "ŸDdàiDžQĂÆÇç–FNv*Żtí0\ÍÀjúègçäE^$œęôJșä Ğ2=Țdüç…ŰSŠÇÊ”ÏIš”+ó­0JŸŰ‰œbˆ·őŸbÿ/đŸČ~ŒŒŒÄŹYoż~ŽČ:Ș?{ÎőƊË üŸÜ§@֋ČnÔ(qÁëŚ`¶ÊE”b2n1…{) őĐÖ/Č^”uŁF‰ËZJpĂŚ·}Œùì1ʕ.[ Ÿ őc,™š‡_m\PïJ~đ}ŒJU 篊—5c~ʙŒœŒTL:rŠ?ЍËèÚ7A©R„ŠRȘBÓËș1/““‘•‘Žß·oçšŐ IĄșțpçùŒòe+ąhŃąònCŻ—{Ő(ç=2šMŒĂ7ĘzèÏ>hhȚŽȘV©Lč^/kGr–<·±|țœruaź!̚ƒj?D™RÌÓôÚúQB aJjmàYŠÇÏyęrmGÎCőșđțkăG֎ÙÙHőĄû0Ïg*,ZâÏŸ dgÔż2^«jȘú3üLzDìBÚÉțH?? )ž# $ÛC‰”€É2X?ŽŽDäáæxș·YàÆb8łŠŽȘw^V-cÕ)8qaâz"›ìęh”D[ŰzCǀ•§=eyQVÊpgŸűțV wwVĂĂß+!p[Yl+ƒŻ}Šá]Ÿ©ă,™’ÖfzߊÖvËjgžŻ©‹skkàÌêpbYŒÙœË[K>)vŻ‚ÜW+Rl5J\Òß!țSÖÿWû‡~~ŸjZ;ä~)Óăű‹öGFF"2* ‘ŃŃd"žLJæb!ä~)ÓĂȚAś\Ÿœ„”l$€’)™ˆKLFL ÏńČLYFł<Áq{ú¶V+ùS;g7Ìț©č”*œśšâæÆöxvdŒV·Æ%öÿ­ßț § ĆhęW88»JĘőHËVšsÚcÏŐ_ÁśŚŻUžZÚŽ»—ĂȚùìì”čÉó·v066>KY^ŒíúOìߥšő~äƝ_Ă{o/xmÿÎKŠĂĆžÄ –„ëČÒp3)wÓÊšVĄ˜A_ŽìTÊ,űș%?ćW#âĄbÿŒ‚ŐŁÊ|–ûŠ”ä.·čč<żź2[OŠ’Àć?șpîÎoù”éᳯs92’•ž‰È枟ÀiQxŹ©…Ó?żÜË+Y\ùÀßbs9ÿRŁ‘IJű’ą—óô?+~ƒKBő«ûüŃÙuTÓg$„ =1I:Ê”܇ŒöÁœŸï9Qb€ŸíŠÏ‹|t ™i±H‹DVr ™©»Čeˆ{°#:Ÿś%˜űm‰ĘńÁțÔ>CF|ëșƒȘŐnąJŐ[”ĘUY”Z>Ș„ŽM•ŃJ>ü:¶ čGw¶țšYęN^êÔčÍ6HÚ5őú4ß 4núDßoŽ-ȘG9d}P«Æ ìvŸÏçíșč.ż†Ü€+šU“{ÿ〃î@떷Ô2Nźź·e9žÊÂÿOPłÖ}˜ìâû…@ÓÆwńÀąž]XȘk"ŃžÁ5ôš™‹u‡€/ÚȚĉ•™ț5kĘĂ$sŸăX$ú;Üp€ŚÆšÈJbdû qĂkŽ˜”űČĘMŹUÎśńùŸù™=c?b śQża Fšò] Ę^œúO°…N5uê>PÓÆ­Ú”č.íoSœB‘î2ÜV”Ă “2\Ż•†ÿFÍ? ÄtÖŃ€yŒQű»IAăfÏ0sÛęčNK Jrę¶m{Í[…h¶mäș]»-ț&;ĄčțŚ`˖Ś]]ù‘Â)64-’ÿ:<ț3fÌŰOóż@Ó?ÿ3è/èó )CË ț ’Æő˜  2$_ k¶üÜŒyC-C(2=$.=»ü”ęłü{Êôž †kŸŚQ ö”é!qä;źž…ĂÓ~zcN꩝U^œ€ÿĂô)öùőž_żÈïĐYùCä‹}AúSæ“ùóešA‹kĄŰ€„ßč‚óëé‰üĄ@òĆŸ œśæčz …bŻéżșcŃSìç̙æ$ežđêè’ńjڛrRŚÖ'9ê*:Ÿô?áüȚîĘÛÿNϟÆÆóm(ÓCîS ϛâł4J\àçgűüyÆĂÊÀȞ±@Ț7ˆÏÒ(ń€ÎŻœśŽ ŸIËș_=M«Ö*TĘsÈ3ŠÌĄŒ”ŽèšőÙ3&:‚VÀR374ëaăR‘W/ï^ĆääZ•šę‰źęĄ”1ç°h[M/ï cȜeɎÇÒ_жG”êśČxëuE)ąéćœCaÌàz˜P>ú]~H@ӎ‘šÚ2„ęđČÿäœCALOOenœ<âPŸq8šwŠAčf!(ÙđOœŒwśy™•™ÎynÎDóo‚ŃŹC:ô»':™»BęűŃȚ?h”8SÉll9‡buBP«u¶ïvœ2w^„è3”i†Zmb0aqŒÎî_Œ7ÆB搎CîEŁƒƒ ΝáX+‚òüÌÆÌôÆ„ Ç1oȚLÊòą)śòŠŹ«üáß~ÿìšÎoˆ?`oíżŹ­#9%œWô1áxÛ곀»WбĆ=”WtțĂÁŃÖ`üÉXHûÄoi”xJŠÎęÔ-e”^‰ȚŠ@œű*ńYy‰ÌÌ ïƒŽÍŁiUž^|T~&$ÆrÆâ7óXŽüHWżłkÁzńSù™šJż…xŽȘƒ*EbpĂ8{țXzńSy)gđrr“pŐ'U”h̏&&àà“êĆWi”3xÙ|Öżőc—Xő‰Ă‰š^,”K%à“Jńh^=+_{ąé5ÿ„óY Ț•„ JZŚ‰aꉰ9”mżBŐśś{Šțłš1êˆż’ïȚóŠÌFÇOăQ‘í^œ$™ńÜ<Ïńœ· HńmdîäÇì±iűP‰C¶)ŒÂŐÍ°ÿóŸ?•ówn'Ź1úôéÈïÒÛĂő„.]ò„źe˖œS ĄoËRìßáțíęߋuӛźßBè·Ä>ç”@ΏDÇDóŠíˆŒ€ÿ[űJÿ'»#*2\=»!ž{7ŽŽöj?œœA™Úü'~/.& ™Éq°ßșN;áúÇrží6Ó+ał“ Âœàù/țOŽYI±h”Ț„yăƒĆWPFhì‡ö;`ïșÙzRȘBӋżKLˆćÔO@‰čçaƝÈ):ź Ê.őǃ«žšVæ M/ț.%‰ț.+ „©Ÿő œœBUÎ~”ƒrÆŸyőzhzńyiôyÈIUë7ș‰š»ŸȘ~';ęzhzń{éiôy9˜xì>ïÛ•—ùáĂć~(żÌsÜÂU­FJUhzńÂÜŹLÆűždó|8ï\ȘöœënSîǛć­_ÿÚűÿśrĘöš&đÖeę”Éâ)¶țțËR™;Ż‚ŰœŠyęŸÜ‹F™NNđpŽTí$<áqŠÏ«sœF êc!iòğÉęŒ)ë*șï5Ë”„kü·ù?ń}jŹ­ÿ,Ć+žŠZüë?ńŃ‘șę·@Ÿ<éj…NŒg!ìdțè!cU ù?a4Ÿ5ÓűąZUTjì‹Ș]ąÖ°44IÇ©†ûgš^üŸŹù„ńlonV *6òÆő;ČîŒáÁ{żeàŽû©őâÿ4Ș~0'U;ßƍ»ÔfĆqIĂçÎ=9đ;}'–+—Œ(żF™âM4œű?ȘÌI@­Ą!8êÿx\ć3ïŠL_Ț„@‡/B6+ÉÓș”Ț€éĆÿi””ȓPg1ÛÌg^ćwj—đùsB*źYÎAîć |)ù=ôVÌ5œű?id6Ïę15eMÇő—“úûCæź°šŠß'ë?ÙŽÏI‡r1 ź§ÁäQ:Üö»zŁ‡KŒó[Š©·œÔ1.ż'țO#$•gÜRêօfOs`}ÒŁęæȘmèîlźźÉ^Ƃ}ù}rpöôELșcn.kĐ~gŸBęŸăg,Qj›x(§S \ÉÁ”E&ùżçú¶țï?~Ïíß ÿ­țSâKKĂ꿌­5†iÿíêUXZYášćQÆx~ÁÉEæŽ2Öyęg$Ś©r%53—9†°w?_ >ŻÿŒ‰á™‘T\Ü:VC•–CŠÀv€»ńĆá0„,ŽLź§éĆojŒOHłà˜‘ÂœÂá8œ’:Wâ75&%%!.Ăz„‚‹{©áŁÓ[á:ï#$GâăÎ3«èĆojLĄÿ“UœVżíŰąˆ~ìăăßCÔC/ŰŒÒ„;L-§Ś‹ßԘ–žĄz,čoÁńqÿÀéUmá8­"Ț ~ńyŒô4Æ2šśŠ> o3nˆfËŸfł^ê5ÿ—IßGg_e őŃéhnö‡ŻÄ1M _¶{őCDÄéôÚűŃürIBô!Ô·ű5Ÿ­†Šët”kI MWő2w BńŸăgG»RBĄv˜©ö_~ÿ'ï:<űŽȘ‹±šÌșŠŠŹ#?„^Ń6Ÿyæoż~ûW1yòäĆünê,őoV ćïHKèïïo0Ś BÛ¶m»őîĘÛó“O>Içw*Ć>—D±bĆ`cc#ńŚąqèĐĄ€ žVQ”•+Wæ»'‰żŹÔèŃŁ„^a6™SŸ|ù7Ò·'ÌÍÍÊ)"¶Ù&&&˜:uȘŽ?ËÊÊJÊz%F”Ž[·nȘv;żkzæ̙+nnnśÙ&ŽgĂ”bAà~v(ƒì­[·ÂÓÓóÛ]©U«VŒŒŒì,Xp”yŻDż~ęĐ„Kž1 ËìÙłçśLz+ÔŹY3“}ÏïŻXÍšÂ~(Æϱ(/ß6l€­­ííFö[1‚"/űÿÛ(U€FYŁv{Û[œĘÊf!>Ú;9«űV{•Č%ê0śŐű èGőÖĘ[î‹țO/ä~sÿ>żeŸ[ÿ⌷Źç=ćębŐhU(Jh”}lĐ”čf‘e~üEû˜'P.ïÌ*qr%”~Í·ŃŹP|z`vzŻÀSčʅőž–,{ĘÜ3J Gń+;PÍ{”Mę3hV(jr/ă`ü.ÙsÎśśčÔ§ćdń'°ìé%([ûƒf…ąúțI(sîÖš[Tđ7Żú=`gL”Ks•C_©/1œł™K› Üܖ”‹„W<Ś ÈôúÓŹpÔ*Ûû;†sŸúgčń{öű°‹ÙE*^ëPtې\„vÙȚŽz5ZT›_dEï0Ćf&”ăÓž_< E–Ș4Ż2čo†ÒĆ[)M*Í+ÚôĂEȘńż èČʌ;fï žƒőpwËuwsÄ%ÙŻCщăÇYÜșq WčWpùâ\óśƒÄ%]òÉBQŁF͎ôŸ\śŰćòïTŹT©Êp ù?+rćśGš”:ÒŹPÔźô~›Ëa”Ù,–•d’8ʒ»Ö-œÆ”zœȘÛ2©PTûf⯣·{`à:ÛÔșN3/ÙyŒńû]§šś[s4uÂ.OTï2ڌf…ąí Ì蝙;Í?«žń];·}%œ~5óngàóœ^9:í ໘84ČæùÀm>YgmËȘ”ęJV}ËçÔ'ăÛĂ^©o”ęŸ=ƒŹcč7p Ê']ńțȘÓšnƒ!—’đćî[č4+ŸlòÍí~ŠőÛDĄÒ†ËP~\š†őEąŸW2Zl»öJ}ŁŸh[Ś:,·ÂŸGčćvßÏ­È°¶Uhn·ËYčÍ·\}eû«.rJûôPšxŠ*źŁò†jŰlÿŽ8òŐ8ŠÓŹpTź=@©ÔpČRčÁÄâŐë)q]úGhőïđïđïđùP¶ÉđĆt;TŹË©ÜąęY€îàĆL~#”mlŽšĘlÿŒ źipż›‹čV)ÜŚôÉ.Rë‡Ì~-Š¶ßžÁ5}¶ńûȘæ@ç_ąPôëƒO˜ęZH›íźÊSÏKT3‰ƒ€3û”(ÚáÈóq{“©áûŠ…éd,ŠMBŃÁÌ~-Ê4łČÁŰKYő…âK"Qd| ŠőöÈ.Roˆ1łße_Ìû}*m–öŒčVQțùèB{ł streamtypedè„@„„„NSMutableDictionary„„ NSDictionary„„NSObject…„i’„„„NSString•„+_PARENT_LAYER_ID_†’„—˜;37D52CF9-EE97-4F2B-A549-2ACF3E431B92-34139-0000DE3305D98BCB††MASKSPREVIEWs@_@xíTç”ÍMł$Q±kŹ‰Q“hŒ&¶ÄŻKŒ=ö%±D]#‰‰ąXPìAPD,bG° ÒP@+bäĐ«ìÿĘÇuÆ(ŃüÿșčùïśŹ”3sfȚęÎ73Ç”fgű D-TîŃí“ZăŠSułÒïJéSéțimË\Ă dȚż„ô»‘H‹ż€Ôž0€Ü ŐtùŽ+XSĘŹL})ÿ=ZԞ™ƒ‡Ś‘ë‡{Q>žæ…űsGp+ä0Ž8  óXWŁB™śÄąŁgË:“ł/ăáÍà§öđÙŸô±ÆwkČM,:z”ź;5+)Éq!ÏìÁqđ\X+}Ûԛ‘őđ ńç‹íA?kĆąŁÿgïÌÉÊíĐb{đšČV,:¶}wAvòU€Ü /¶ï kĆącPûśfź!őî…b{đȚČV,:†~ŃÀ:Güiś#Ší‘ù Ź‹Žá.ÏI莮òĘ)Šż#Ź‹ŽQ­Š?=!ȘŰ™òa­XtŒîüÁúÜÔHO”ïo1=űc­XtŒëÖĉțŒ€èb{đ;ÆZ±è˜Ô«ùĄüôx°ĆsŃ$Ś”ś…ś–ߏŒÔ8°V,:ŸißÈnjż–ŸÏ#֊EĄP( …âIłśj”^=yđȚeăûș,ÛÓiɘžN+-ûì^4úë-UÍȚȘ)%ĆČ{ć”ôđƒH pAȘżR}í‘žwŒ6b™eÿ]ÿzé„•{Łt…ŠeßšZțÒËżYșUá­2UKœöjékž[ rDî©5È;œNŽù§Ś"Çß·OlCô›ìXśe9±îËsą]—fÆì±ÉŠq”Éș±ßÇm§DÇșÚ ü6"ĂÛÇV‰V#Ę{2œW"çìä:ÊÒȚD›‘à€GÁ[ć4ÏpÍí—Ô<ߍHśČęŁ<—!ęÈ2€‰Ò=—Ë:Užž%Ç Û0Ęœă—”ÜSëæčiGWšÈ¶H\y‰ž±wæńŐÛ8Ę»ă—äLŻH=Œ ©ÒżPČ~˜KŁä3Ćmą4ٖ!=B7ühžîfœ~È)—ˆ–ŠlDKa8$ëTŃgS„ČA†Œśüú©†X—_’Óö/ÂCśßŒw‘šhéAqĘ(©ágmû"€X‚5“ —œæ'ö,@’«•èççÒĂ=?#EzŻžhžä87)yŚ|$îú©H țTI"ƒÛBÙN4Ä:ÎJNŰ1Tâńk2~ŠôŸ —?!YÆqNŽkçO)đ[xZGM”đ2‘·QK uÊWí§>kT{…e·'ŽmìțÍçĘ«íÓ%unƒÛŽol—OŐȘTnžüR( …BĄPŒłGő±v·{Ú~ț8wûčcÜś-ŸêkÙ·Ó\Ùő\\?¶É€HwäŸÛŽü'àüVdœu†E?ó™-?|·C—6MûujŃžŚ—-śîÒșIÿΟ~ĐçÒ%ß«ÆeŚ_R NÙ!ûÄjd‘gë}ż ËSžŻ}væw€kČŚ”}ÖIÁÎűąn”bՈȚa•š*Ïâ òLl8Ÿ éÁźH=#^É$ÔÉőH;!ùâÄZdúŹCȟ=ætołòĘÊć>üŒŐGí/m·J‰sšƒ«›§!5xE@N3r‚·Ër›äŸ­"ÉA’ƒ(ńç^Ü\ڃ[Vbv.LŽ\n›źż"ËoČ[#Kòˆ&oj„‰l5ć_…\Ÿ5Xó}ïás/‰ûrYr ˜Òeœ8ćHöIđXŒ&őȘ”ö”ÿ0pù8€Ÿ°Ó2Ar…ażő3•rÀé’a\f9)—ŻÄ™%c6Lж%î” Č[2†&źÿQÉ{~ÁmçčűȘEŁĄb/qőÀșä{n‹q{óT$I.HŰ>ï©z Jp™{Nłá»t\ŒX5œ đ߄·yÀ‘ĆÀá"qęˆäSyInì0žCÓébŐèÚìMłú~hŃćSÏ1?9RœŠőțÌwXÇŠî’©«‰UĄP( …Bń(SŠLœš5kȘWŻžĆ‹ˆž"ïggçˆ+Wź :&‘‘‘ GHHàïï??ŠÎÉzXÀYD…Ăiă†zëÔ©céíí ///xzzâđáĂ8pà<<<àîîWWWìÜč...۶m¶lÙŰÛÛC†Ï±ŒĂ_„ȚșuëŽôèòóó_HôĐ+ăÿ.77ÙÙÙ/$zè­U«Ö„ŹŹ,€§§żèĄWźá€ŽŽ4$''żèĄ·FS ^HôĐ[­Z”iIIIžsçÎ ‰z«T©2ăÁƒˆ‹‹{!ŃCŻ™™Ù\ŽçîĘ»/$zè}ęőŚÇ”,Yò·ż"zć;šP( …Bń?‰šÿQ8ÿ#đ˜ÎzoĆEż=’uÓυ”bŃÁ9œÿq;ú$⣎#.òn^ôúĂ8èg­XtpNŸ?ä” ąƒś?‡Ÿ§#ÎüçŽ;áÌŸuÚ5e­XtpNçÜœrw.ŸúĂ8ź‡Fl‡v_X+œÓÁyațź8wfgá8B Ç°śńőàœe­XtpNç*<ž€ûŚęŸ9Ž?›ÿq1ÈŚ"œ#æüAmagviăàw„”bŃÁ9ô'Ț BB\àăqç]pîÆóÌÿˆ8·!{q=Ê—Bèæn°żcŹ‹Îé _ÍÿP( …BĄűïæœúośhȚŹțžż"z›}\ŒŒŠűKĐûqÓw, !gMWäŹí†œő=‘ł©/rÖő}…Ü̓»},r],‘'?ăŸæüón ‡ȚŠœóęŁGčÈu›†\ÙRłyg6"ïđBäyÙźŸÙ€<™a? ŻáѝHyÿ‘ z?jRwb~~6Nï_&ùf/òŁO ÿÒqYÇŁÛeę˜ű"?ҏźűáŃœh<ŒzèmÒžÎäÜÜtŒžß oύÒ?ą°.áȘèŠöč ù6 ’n ÀpÉ ‡Ț?š=%''m5AńŸcűŹîŰșÛ'}\{ń8ă‘~ïČűÄOof2— zè}żQÍiY™ѿǻÔë=Œ’>ÓŸkySͱx~oŰY…ŁĘxìÙò#ŒÜââéÍx} ôĐÛšaé™°ȚČ6OîçĘànŐ^ËGáìï? R~ź-N~Ț+)x+2cö"ï–=8zèmĐ ÚŹôŽ{:żÛ‚Ÿ8ČdNٍCˆĂT\’ù!7,ƃc¶òłqäçÚAœuêTű)';i©w^HôĐkfVjLŐ*eęŃ+ÿ …BĄP(ÿ—äŸÊeŸùźŸíßí_êőWJËæç†Ț©æŐí|~nś`Ç$›ń"œè—y©ńÛ„Ûü`^c„±WŽśw8¶ą·O‰bÈ94··ö†Ó̎…Ç|íeSë5ș]+“țO%ssW°nÇűQ—~†Ű Ę3œf~QŰKÆÿgț”%ÍïŻ[ńőÆŽ«òłÖkIÜüœ»äËÇûŸFÊžșŸœ†¶ź4#ËčśSśÉČm]ìțÔ­ŠĘŸëÔŁŰęOŽŻMĂJNțöePú΁ù9nCć:0_6?“ ›æ:ÿ©…íï>Ü?Ù~ӑq|"ÎŻì+›ŸIÎæ.:ÿŸiMSo9őEŒSDٙcXûÚdó3ÉĘ3PçïÒžÜ[ÆÔO”Ó ŸgóJe“ŽőÍ:œß.èȚ–>ùùŠîPìù=ÉȚiÍïȚȚ= YŸ?Âàù|~ëXìù= Çvms/\ÛÜŸż~Žț­«{~OÒ±á?ŹT3uƀZńæËÿáü …BĄP(țƋ–Šö<§XK‘„łfÍò„Û9ŚuÙeWš«, Úa‹Àí+èbËç>·ąZö0ČŹH{CÄïżÍ~NÔRŃűn”†ï–Ćđ\5—țœ"ÖRFVHÏ}ČÜŽk­ű—ÁOzűn]ŸÍ‹à”n\fÀïßő„Qí ‘Û"ôĘlƒăv?ÁkćxÚ΃·ƒ öËg§C`ÿ]úŠXKY=sæLö<âgoÓÊž—Âç:œtʁc»œ°oĆtìœ5Œț#3 kM†hM‘Žžs]#Śk9‚\–áŒŁ5Žo”Ă —ő8l7 §7ͧÿšˆ””‘őÓ§Oß/Ëc͛7ąjŚź}Q>‡°!òùŽÇZíšČV,:8'„s Œó8Śó%x=8Žk2ărà^ퟰV,:8'„óZ蝦Ôzo(Zč‡j=8ăőàœe­XtpNç:4ë2_žűaÜÍT ž˜šĂôzüÙü‘șSlQæ:ŽÙ}Í7ÔÎ%H~sè靈8ëö§óGž6oăvŒÏăûòçóGwaŸ»Őü…BĄP( țź QŠ†ćò*ŸœE•OƒDÁšòI*7śEć}P©©~šáĄ=»?+C°¶jËpTkêm.ŁZ«HTmqUšû‰ßïŚžĘ™Œ2Í•›’úPńE Fë(™ÛŒß!LÆp›…هÿ9ž‹i†šôńqs Ș~zŸšG "2ă~ˆF„OąB“ƒ0û`w±ąâGGPčÙi9ž/Ÿ›ƒ1Łd@§ȚgćŰn(ŚÈY—CxMM3D…ś‚=úĆŐëÙ۶ă6ü žw?3慠l]Šâ}1Íćßߥńæ­\Űmž‚žƒÎàO=`öŸ3Ê5tÄ[ïźÓrˆ±ï­i†(Śp‹Ô‰m+TC'‘ŁvÜČ 6ăÍwl”bìńd†(Y©ÿòČőŚËq֊ì€~•ÈoÖ[)ZIŽbìńW2ŸĘ=ț,CśüÏ*C( …BĄPüżáïÊ+!èÄțËč‰ÈLŽ—çŒ‹Úł2Ÿ·ùÌÎçțgć+ĄëÔóšŐÓőcőUäe„Ès`œ<ÿ]—gż+Hˆ Ôr‡QŠùĂJ wÇńûđLEÓI—ev:·i&Î-„ăăżĐzÇÁs1ÍV{62M\Àü]‰ò_ ćÄvù/pvF/mÆsĄß4X ƒ_юKośE·qęÚ]ÈÏț$Ê9_\±—èȚšôš]S[΋/tĆ[ő%ÂV›#Üź«Šs¶æˆ^ÓçŹ;â–}/ä•= ô‰œDƒÊŻu]ܧöćhùdÔć =kß±ƒpĆq0b7Dô&čK̑çùœŠUĂ^ŠOì%^ęW‰R#Z”u><łeBœűno;;ÇăîžIžë6E[òsԚowÖ ~+{%°ž>±kTzăćzłÍ+{ŽjŸè:śÏBòáH>òł¶äçŽc°ixÂì.UœX/6•ß|„Țä/*:;û æ⚁†{{ŠćŠZPÀ%?;mĂꬓò§ÂïdóZ„șZ¶«°æŚŻ«]Ùżz —üÌíÜ/e …BĄP(ÿ_đvŠ­ćwÒZ<ŻȚxŁTu±iTŻ^ĄőŠćżàï„}ô(żXĘșu#ńËN-çŒőVéÚbŐhüa‹üü ù»vò»P‹Qnn&NŸ„\Ù2ïŠí1ï7zۂżSőȚĘ+Ɗ5Ź‹ŽśêW”HM‰ÇíűKƊ5Ź‹Žzu+ZđśČȚčSŹXĂZ±èšUłŒŒÿźŒ1¶X±†”bŃQœú›òÿúÜż†đ°@,ZŽŚźFhâ:·qkX+•+—¶ÈÌH’ú(̙3§OCRâ-M\ç6îc kĆąŁB…Ś-Čł Ű»ŚUțÆăfùû‚śtâ6îc kĆąŁ|ùWÇńȚÆĆ]ÁèŃŁqüűQčßIšžÎmÜÇ֊EGÙČŻ|Ÿ——‰ÌÌT„††`đàÁR]ŚčûXĂZ±è([öć))) ò·ïËx’ÂïÛCù[dd€ÊßkLCvv†üȚăńż07oćz.ä$ÂB}ˆË1ažqę’ü­Dù›$‰w€_’?Müč(Wî•ÙbÓoƒ† kŰ^»›\ ?űWœ€̛;íT©Rÿê,VW^y©ž™Ù«‹ŸW„JœÜMl …BĄP(ÿšüĄò3ł3łĆună>Ö°V,:˜)Č%[0c0k0s˜ŠÛž5Ź‹f Ț[f f ffŠëÜÆ}Źa­Xt0S0[0c0k0s0{P\ç6îc kĆąƒ™Bć…BĄP(Š*żšüŒ¬ÂÌÂìBqÛž5Ź‹f’lÉ&Ì(Ì*Ì,Šâ6îc kĆąƒ™„ś–…Y…™…Ù…â:·qkX+Ì$Ì&Ì(Ì*Ì,Ì.ŚčûXĂZ±è`&QùEĄP( …âĆPùAćffffŠëÜÆ}Źa­Xt0dK6`F`V`f0·qkX+ÌŒ·ÌÌ Ì ÌŚčûXĂZ±è`&`6`F`V`f`v žÎmÜÇ֊E3Ê …BĄP(ÿYTțPùƒƒYƒ™ƒÙƒâ:·qkX+Ìْ-˜1˜5˜9LĆmÜÇ֊E3ï-3ł3łĆună>Ö°V,:˜)˜-˜1˜5˜9˜=(źsś±†”bŃÁLĄò‡BĄP( Ć?eʔ©WłfÍAőêŐłxŃSäâììqćÊDÇÄ 22aáá A@@üęęáïç‡@Ń9Y 8‹š`8mÜAo:u,œœœáććOOO>|€‡‡ÜĘĘáêꊝ;wÂĆĆÛ¶m“çà-ppp€œœ=dűËžV­ZĄGšŸúê+tëÖ ]»vE—.]ĐčsgtêÔ íÛ·Gë–-Ѷuk|Ѷ->—%ęuëÖO_pp0lll0uêTLš4 –––3f FŒ>œ{ŁËżÿŻ€Woé= çŚè&=é—ńÇc2~rŽÖÖÖ°°°ÀšQŁ0tèPôúș°¶§Œ„ÿŚ=0€OoŒđ zÊűèŻU«ÖŽśäɓż‹ŽrŒ“ČŸlÙ2ôîÙ=ÌÍŃ·{w ìŐĂûśĂ˜Aa9lšôúZóË5œd.5ęúőĂȑ#”qp<<'ŽőëĐŸ}0JŽ9nèL9?ŒțƒúhËĘąFSŸüòK 6 Dߟ}ŃSŽÛGüƒzśÂˆoúcìàAűnű0LúvŠéă,0TÆB”jŐŠuìŰęûśGočN<öW2ȚĄęúâہ0^Ž9QŽ9eô·˜n13ÄK “ŸôW©ReF‡đ”œŻÏ„ŻÛbÈ`|?b8&ó˜cÇhSęfffsyÿÛËęmŚźŠŻ€G?é1 W/ –s"ŚfšÔÓcToÙ_ČdÉ©ŻżțúYțöWDŻŒAĄP( …âőțCœÿà;Ÿëà;Ÿû žÎmÜÇ֊EßidË» Ÿăໟó0·qkX+|§Á{Ëw|ŚÁw|śAqÛž5Ź‹ŸÓໍÌLőțŁ8©ś …BĄP(ț›ű§æŐȘŽ”ńM”śÂy82o:Œ~™‹“vËä#Ïì…čĂš'óG“š5ș»OŸ”îoó«ü­Œß‹Ÿț<á'jčĂš'ó‡U߯ƒ/8;"jÏNœÿ}nÉíû›§ćŁžÌż[ŒÌžžÛȊ§-]Š|'ă.ÌԓùcŠyÇàÇMß錳kmuKnwž3MËF=™?êV,ßĘnÄÀôŁ?̈́Ś‚YĆώÆ"Đû€–AŒzZțšöÖm‡Ö,jÍèá°ÚvßƒĂœîwRžć ó‡QÙ’?˜7ŠkX+ÌÌÌƉ5Ź‹f •? …BĄP(țłüSóaŠ`¶`Æ(NŹa­Xt0S0[0c'Ö°V,:˜)˜-˜1ŠkX+ÌÌÌƉ5Ź‹f f f Ÿëà;Ÿû žÎmÜÇ֊E3łßqđ]ßy0oP\ç6îc kĆąƒ™"[Čßqđ]ł†©žûXĂZ±è`Šàœć;Ÿëà;æ ŠëÜÆ}Źa­Xt0S0[0cđ]ßyđĘĆună>Ö°V,:˜)TțP( …BĄűÏŃČAćĘ>©5ΚV ȘđςK~ŠȘ›•Ö=ó›ÒęÓږč†ÈŒ éw#±qăFp^—)7CqùŽ+XSĘŹL})ÿ=ZԞ™ƒ‡Ś‘ë§y9„sn…FŰdȚëjT(óžXtôlYgrVâe<ŒŹő ÿêŐ«š?țÜűl_úXă»5Ù&œZŚš•‹äž­ę>ÔüwÂŒŽυ”bŃŃ·MœYŻÀ^ëA?ϝț{Q>{ĐÏZ±èèÿÙ;sČƟr;TëA/óęŒÆ©qa`­Xt lûî‚ìä«Hčźőàńée^cŽű `­Xt jÿȚÂlĂ5€Țœđ‡ŒÆŒ·Ź‹ŽĄ_4°ÎÚę­‡ŃËsáő0öÈ| ֊EÇđŽ —ç€\GڃÈb{đ;ÂZ±èŐ©ŃjúÓąŽFŻń\Œ=2ć;ÂZ±èĘùƒőč©7ž(ßßbzđ;ÆZ±èŚ­‰ęIŃZŁŚx.ÆüŽ±V,:&őj~(?=ìAń\Œ=x_xoùęÈKkĆąă›öìŠökékȘ—^zi)—OŠ”bQ( …BĄű[QùCć>çš>+{đz{đȚČV,:˜)TțPùCĄP( …âyQùCć>çš>+{đz{đȚČV,:˜)TțPùCĄP( …â?…Ê/*żđ9ÙôYÛۃŚĂۃś–”bŃÁLąò‹Ê/ …BĄP(ț·x2C3SÏÊejX.ŻòÉYTù4HŒ*Ÿ rs_TțŰ•šzá§Úłûł2k«¶ G”ÖŃšȚæ2Ș”ŠDŐçQ„čŸűœQĄń~íٝÙÁ(Ó QčÙ)©•9Ÿ2ĂWÔč_Œ¶ŹÜü *6= łĘ”gwöà8x.ŠąÒÇÇéÈÎ.>r\9źWúű$*49łvkÏîÆô›fˆŠAćf§aHy€©cŻóڒÛÍ>tCčFÎÚł»±Ż©i†šđá^­öȚę<í|9fźÓ[ŸŃv”mà =»{đŸ˜fˆòïïĐÆxóVźxÜe}v»ĘÂź=q(ŚĐoœ»N{v7öàœ5Íćn‘:QŁm…jè$rԎ[¶ÁfŒùŽ­öìnìńd†(Y©ÿòČőŚËq֊ì€~•ÈoÖ[)ZIŽgwcçÍO>»{ŒH†xZçÍÏêń"Bóő2ÄłÄZ±(Šż%țˆ…Ùapplication/library/img/ui-icons_ffffff_256x240.png000064400000007257147577724760016105 0ustar00‰PNG  IHDRđŰIJùPLTEÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿî)[VZtRNSÿ3Pż‚™/"Uq@f`2Ì !<BHK Z#'1S,…4‡€ĂjÈÏÆ8EŒžŸ|«”„ŒȘš­Č)ęžQ$ï ąb”J ŻmߜGc?o‘hČ#•- öIDATxÚìÚvĂ8 „aâÓęÏŒœ1ó„È©Šÿ«Ò&0€șŚ0 w ÔÿŒ7w@œ»ĆVTÔŹŸq‚- &ˆj±©Ńb ù[0ő}+Ä„9ƒ©fzÁ‘ò)dęm ^š&»ùő„Š?Șk0§g†anËቼĂÈçčÜä}ę«ušïLlSÜŽőàĘ^Ęu,Ûÿ±±ÿN2ûóĘaę!úŻhܧ{éÁŠŽíél3À_ǀ=ĘÙçèr/tÛvŹ±áĆ8êÇŹ€Œ›A§+äÿ-–Z?ćӛɎćÈs@Æçńÿ«pțț⍩»Vü˜û€ë8ÖeÊz"úț‡a†áŚöÎC»m#ˆąw7cÈA…J„3MJïœ1œśúÿ?ąÆ9XÌń‚fÂж„«z‰:ï @ * ê¶čŻ8ć>툗êá~”…kĐWbô“ŁYŠ~UP©M úŐï{òîĆžŸÂ-`%±_Ś%X Pú«$&d/f›M§^ˆȚ;+t{“ìuQQTEöß f]1`r«-Ú Ôu.pŒ;$ Pœë 4=E°rë2P\€@qpđiłÙL( ŒäŰëH8,‘Òî`7đĂ3r@IòCÂÆsDw8l8xpïĄN?ü°p˜uÿ‚`x$ è0 űˆÎ@Ÿ‘í€i‰D9ećR„(™€éêҏ>š3EĄ™ "‘žqIęŚ{$ÀÈœ FŁŃt4BóùJvgÿŹțs$-ă„—xl‘yȚądEéÜżPæț]Ąb\–Ÿw€ÿ@C„ŠÆXjéŻÆç˜óĆ_"óeI„ÆĘÜž»Sdà~!ŰëÄČPçf‹±Žäs¶ĐŠKàü«Ûm_}ęÉ'_…ÌKQ7Đ(@瑉‚6í“Ÿˆ“ $Œ2=%Ęà’e™ #WźŸ^P)M ­?Đ à“3öLő 0†Æ=@9Ęć)€dB€Rs„0™ŽJ”XTU•°d©_Q.€Œ‚”čÜ^șú#éđ{§đŒșî,ÏaÀ˜‡# džőțG^yeúʂ#­às–Òx{űű€ăŽțŽÀjyÎ\æźaáđđ°@瘟ŸòÁé'Ę|–Ù1`±8;QńyYŽ©¶=€ő/ÛˆP%,æ2Xîs”$€€ƒdۋtxê©Ő§kìPÆĆbÁ‚ìipûgcŠÔêȜLȚiZÔĄM€öGòʞžőič‘(Ï`òÀVŻŽ%l]Q€$ű<(À'6ő»—FąÀȚ)ŹŹˆÄH,ŽéuÀĘĂÁśß$ÚìIá“àÇÿääÀÀÀÀv(ËD~űàÇtuű ~’ń3+~ÖUáQ€GWò€ĐöÀŒ™~j9jm‹ł]6@X üÚđëșż}•RSgî…ì…Œ3‹’fnę»l kòW‚|ęPŻ}pÓü·â7óìŁ ;BÀZż&Ÿț±ŒÚêϔ#hB­ÿ&é·Î ł;@͊:€ő·/„dšŐŸ tZ†BRž"łÙŒšŃœÀIę`őoĄv?Ö!`5|ßđœï€ü lúVÆÓĘàœ—Áx9;šșńo[g íŒIÓęnú»zÆÉMĘ.èòÇ7ßüĄ;ž2ÔxĘ%ŒëȚwHlŸkŚ|ęxĘ%à" ÒxB:C=gßèæ7Á|r1Sțö¶†Z]G^©”+ÀEtăÚvóòÜ i6=@WÁŒ«ì6˜d€±ŹTn†4›n­8ŻˆKÛ˜ś+—t đäǀK{€»ă,0\ Đè ț}$8 Wš~Æ⯚ ŁȘżJüß?ŰŰïR–ü-țK%„1>üÏž±ß•^țȘőBÛ°œkLPm!ĆaQž~°òC{žœuș^P`~Ś9ÒGD­š˜ö3LÏMGŹ|Ähtö6)§žNgŠMż;;@ČhDž%ĘòMùèâÆ~w2Š‘Ô0–*™—.€K;VđÂŃ P„ˆșŠ[>șŹT??UžzűśäĘ?D”©ûőíÊóűśŹuśʊ _Ï`ü°Îꃔ›ș_ß.ŒÿțsHęw~_ùśà{sđźÌt[żÛžŒÓ;}&)uŒZùZüĂŃ­Kżÿ.kæśÓóŽÔ7]Âčÿ‰”ú?ÿü“: -`łÿϐq~—~w;,zæ—/šw~ÀúęĐç €[  ‘šLčŸù‚6wŰ șšŸíMÓ·CëœŻ XÓ!=ÎB ÌŚ`ƒšú5żÏRxWfzf”wòÓÍò ó5ìú4æŚ·ïeŚ2~}»ń<»Ÿ”őëۉ ôĂ[ś{Š3Xă—;ú  uPBśV@ś|@HąÏC cÀpžČŒĐœBœ‰›Ś?ÒœÂHŁÿÀˆLęWĄŹ^ïśf0ȏLĘzQŚ/ïnę#_?Ł«ŃV?™úŻ@dëż*gLęWđ:Àêż'ǀ­ÁšęžË9ÿę“Ííh@IENDźB`‚application/library/img/volume_icon_zip.svg000064400000021372147577724760015250 0ustar00application/library/img/icons-small.png000064400000007132147577724760014253 0ustar00‰PNG  IHDR±+îPLTEI€¶Hm” ]{}HtŁúS4H{°éîî%%$$æçæ@z¶*IKSSSBbdOki5!C…ĂóP;–>\tyšŠ§BY€ùU1GFG<Ÿ)Jš”ŸævÒźŐókkk&ć=EE …Æv™Ó±áU™Đ€Áˆ±èJ­N,•ì,Y’xčBŠÇ~°ć%T–ŁÂæÿŠe\mmRŸäevĄ}§Ț} Ù1GKrźëŒÉÊŹŹŹÿÿÿÏMd Ú#]Š4|Á/”!jČ6”7ĐńęT€è/ą$Yc–7tžƒ©æFp•-mȘ·L ÖTYŁ${ĂhșűX f—ÄŸR…ÔŸżÄy»˜žæG.’áçIđùę Hąmmm!Eyiiił:GvJ0–ìÓLűwOdmą.}1“°ÛæJÿÿÿSSSg†Úš¶ăœQÿÿÿĐćòíóóÖêőÙäćßńúÛíśËáîÜèèçòóžÎćĂÙêĆ;"çJwwwș»»űûûôöő.}2 GĄòùú©íŐȚ܊€ÁÊĐэžôŒŐâXX[.Ž``c"«çőę‘ŒöąŒÉ±ÌŚˆčÿ Éú‰Žò«źźÁÊÏČH ĆćüșŐÀĂÄ y·ž  ™ššôS!‡©ĐLLOŒP „±đ«ÄÖȘÁÍțŠe‡‡‡QRVĂòAŽÍ’ȘʖĂüùĄ„ÿH:M©öˆË‡desP©R'˜ôÍ\Ć3”ŐęlœúÂś€ąĂu””ùżźĂU‘Û„©Ó€Óp‘Ëo«„ѧĄ(cźűfˆÊ›±ÁP|čkœiÓ9Mšù`ŠæUžÛI“ŐűßÔì€VšAûçär±Ț·0’# 2ŠíyŸâöÍÁΫ8…ŽÄÏeA??@ČÂáŒĐ•šËĆćƔڶżŹ+ÔÔÔIq ŸÜ—pŠnKxl-XRéÂE88:à€‘ŐskA‰Exźüț«’Ɛ;©qvïÚ_“t#çŃùšttRNSkÁ†g—ęgtę$fdh'±ŽF…‚<ČŹKûꟊûęę‡qHțúûüûđÎÒcțęRFőèÌźțțéÍĂ©țł±€4űśĘȝ]țĐ?ęúùùÜÍÂż”źpśïÖÔÍččŽ\@*ßÎɎ{a ĘÙŃÄyqÀżˆe–ù §IDATxÚìškHSaÇ_ÍȖiÍA†ÔZ:$X™Zf˜ˆ‘tƒnчˆâŒÍ­æ &,ocèæ,L ‡ŠN]Èi(ži„3ÒRÓ>ÙĆ4!ș|ëyÏyÏńŒ‚‚nïODŸßyÎćĂțŒ<{BHDCA:­V Ôó&HȚhÌÏÏżV†ÖÍŚŁ"BM  ôjbÔ xA /tjbŽŒĐCÄ|–ę|^3+ˆ„ž"‚Ët,zœ.˜ë˜(”ߎl3Ë*A$*.—CŸ­â@‰7àHŒăHFqîrŒƒâ9QÂQž ÿĂŚXđ…ĐQ)Š‹:•±(țȘșïˆÜË@‡»B„;m ^."x1ąPț:ç§E"ŃăNŻgäá•Ô•ž0— ‹’Ë.Tć€ëlŰ1?<Źđ8 Ćûrʕć<îÍ(Ù'/ŸMX ĆúÊë*6#ԕQyY`x=Ń-^ʜæG‰:¶­ŽÌ ­IÛÆÜ}b†Ș‘$jۃû#cÌ°/GKŽíîsƒq1œz^<»ńd‘ÏćӑD;Ă0‹òÆÀ% ZŠŠŠȚŸče€Dqb”™bȚ0 (N|bn=ŒcàuÌh. zš(ʜBsôèŃ_†Ćì+ŒÙŠ1a\œ7Y‘­PšușÄœŹÉJ–WšÊÎΖgA98šËUqŠ*Ïî„VPög f(òÁ+:2šlVƒííJ•òBÇ{“TÍÍÍȘfż7ÇŻ:*0țŸotŹÌÊïś7û›“ŒJžFÂnżżŸEŐÖw–Ì€ŸŸŽŽŽ>e;4a{TiiđŠEZFÆòìY™iPgfA͑”śĐȚŹDĄˆù3_/ÁőV†'”!& Á…kaž@0D NäˆX<+!œ"ˆâÆÂÂÆb^,Ô^Ź ­ŸXšYÈ ó•PsĆ̋<ë%æ’5Š‚bK^ž„žÀÄ lf“ŚK7Štaá…PMš·,bxąÖb1o–”ˆBĄ‰ą‰ąÌyhÄhÄ(4@4@”9MMć[țć»çÓN§33>==> ÂYÜxqőj«”):Úٍ…„șŃj”8ĄlČ8%hMtőEku#ź-kMpۉ[­·Ya±4AËÛ·- ƛ †n(Y!wÂćá° ŠÇÇÇÙ;`œôœ>ÊÏBŚšŻíœ_ˆLQÀ/Ù%<”SÓÄ6j&Líó¶Mj¶4K"Eț Ič,Æż;fź–ăÍż¶™ic‰† ˜±˜Ò(FIŽ,‰ÏŸógî|gŻ-vVMù~wv›ïwŸ{眇Ż©éœŸŁˆÚćŻ+ʱŐçóœ9kUÔ<߆ïR蹶öśż‡«ßWźšæțïüj.WÔXg—%æ”ù͗à0T3ëÚÚښÏŹŠêT*J@EÔôEEŁč iîÄčê&€d$©nŒ7ԍ±‘.CíÜ™`š["ICíܒÜkš["FRíÜFéܱÚčEŒçbe[Ÿ4–AAŒ"SMAï·Ćb±€ 7Æ$ł9‹ŽÆČžÉiŹˆ|_Ÿ«ë ;ŸĘìžûŰŚ—Ïs›”üÀ2> ń%ęc>ü^|›đ±Kč%żrŸ ‡Șk›˜mêxq°ÔÙUÖ̝ŒȚÏXbšæ<.3%+æ06i3Êâț-ÆŹŠ˜yžąpŰH·†ÌW7–ŃzÄL›Oïüéę$-\8ڊn)tŽ>ȚcʇÚ?Ö61ÛÔŃâìË'ˆó[_Ș‘éo}@Šę!‘J± ž”ŒpJ –$Ć&f_œæœŽ ßúˆêYhÖ7­u»Ś‚0tÁ™…·Û„žÜèPEôò8ș˜d84$€Oî)X‘ő\ Npÿ892q ‹+ ֟bœä\ÙĄD”ŽßŽ7sčć n낯í-Ë{zĐnƒEôíΖ z1Śą!Œ^ŸDNŻđ5(D.ŚĂŃősRQˆ*BïŃa\ H„ >ÇÄ œĆ9Ž%LĆè NP#ˆj™íű›üńž „Kôùźx ęIc@QŚą€ ę€+ ! Ƨ —èŸęR°ÿK€`'‘ÂÊ@‚« 5Fq†Ć0Ÿ@ű5‚š–Uś9ïV4­xçń‚žŻ ^.mđxŸ/°;”Z­xžgpÄq/áK<„X,ǃŸ@ „7†Óé‰ÂUN&_,Ă a„Ś€ł>_8 W=Ęáp8ćrčÈfł{Çü7wv€á~Êg{˜N…\$Đł ‹‹sÀŹąű2PłÜ TƒÁ€ŽOèđđí=€ê’D!=À5źii}…àȘ{œžfccăș\.ÇËćÒ«:ŹMèàrç.™Íæ9»Ę^}pџŽ|pkË‰Œ2F…À”K_ș;ÿÿÿ‘ŒöŽčóČŚèĐçüŠ”òàđô {”Űëę}šëACEéôúŐéü‚Źí9;>î€FHKÆééôúü”ÁśaŁÚŒû‡±ïtȚÊäï+-/éééó`JUšŐHĐ›ËűÛÓĆ$&'ĐèńŰïïÏììwĄætž0}ĆŁÔüÖêóD‡ïYAśhRÏÏĐÀŃàûo\/UÆ5€—«X\`‰È<†ÊșÛëÂßìÊm±ÄÓ3]Ô246TVYÂ4çK1o­àJMPò‡(KŽûŐt~ČűWZ]ÛăëŚŃĆpźr§ío’ÒćB&–É5CeËrą*ezŽú|țžŠ‡Ž9©êÿe…§#pœžŻÄŁ§©–œê‘‘áȘHĐä]âûÏQŒßęQsŰÙśJlŃâèĄŃ*ü~kvŽąjlmm…š‚»êbƒÂ€«BV“€Œ2ÆîUț⍊œÁšŃ9ÆđÿĄŽ0‘žSÿóȚUmys•òžÀhêt_ڜ7ƒ<«ŐDё2`‘5±Ïx©]ÖYFIeŽ€©ŠŁ*‘ÉœĘčΗ|{oČ°ŠÏÚfööÊ5—Ń„žà¶âüÙÒÊl›ĘČcŒj2†A”ËÇMstRNSB:-T țqÿ1`ààaCDì›ęÜțčę藙NŽŠőȚÏèč瀀͞ȘŽârÆGű©ë~ŽôÛźŒÇ±òúÔȘœ±ïĘÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿț'û Ï5IDAThȚŽ˜ĘOÙÀí`Ç6ałvR5‘’*i·j€UŽŰ}šVĘȘLp‚ÖÁ#űc!›ŻZ v°S©Q$”Pc„l‚H”Ž‘ŒI„dUÁ‹\ RH*„@H€Q6+uÿŠžsïŒgîx\eú›ϝóóœ3ă9gtș–Z[œ`«”èŠ1ŰâÛB„íęžÍ  ›«âœDZÈíÇ«ÌLܶa(úˆz…9èĆfVÆ·á{$J‰ i„AâÛ°»ÀƒC Ă\”q1"yCiŻtÄćűÇ͉FXˆÆ? 0~t ˆ>à€t;*lÇÉ &è`J„ t;:˜ŽÆMĐAíöœ@Ÿ35šaÉyă”fFO Šą(D±ËT8·błèôńôÜ DôGŽû1ZhŠWâz8„ôܔŽg …)„`"ÂࠗLƒSxšSžMšČàDAni9ŽËZ^Q憌tòzŽŒžEvD°m§sȚ! ôߗčđŠÍ€ÓŚî  …†]©Őë,Æx.–âx’†ŒÙ`ÛÒĐ ‡‡Â^Œ’^܆–à]±àŚÒŸ‰ĂQ„‰AT‡ÂčÜJüŒnCŐ>‚vƒȘ 䎱mČ1DĂ_±i~˜Me¶}Ż äÂąBâe&éŠ#ʆt„Á•ž'FU<őæ ”„ŽŽźÀűŠ8ÆИ+"ž‡&6”,†Č3URòV)3XÌêìÔŒe‡eFƒȚŹ‘ßf‹ȚDĐ[ŽÂp=jŹI‚”Fł>X“țX ì|$i-Ș•ÉXš"»IšŰ}ÉJö$ŹÁ@v3À3@Đś$ˆ­ÊË`ć+6C ɜ *ò~Ù ń„d2|E>"æÊ`h“Șà+bzfC2° #‘Hnƒâ“q€lˆ†ęxGuű° șĆALÉĐf„àăD|€é‡.°>Ôű+ی§9źŸç±— 4#‘|,SőÁËÆ"~?ìví ìàí+ԇ€}ÓOˆÄž€đ›màŃ=!êCÒœ)¶‰ćoâžiIˆÀA˜Ä|ąqŽÛąÁçƒVoâƶBđ‰űcśKM(H„Æ,/ ŸzŽKt_€V_( *ć9.F¶±ËgŹPj"ça†•ûçĆfȚ—©ÁúŒeyąȚ'”`RŹ~wHÈ/!6ì|ÆJëC’ćy>†;Qàév>ŸIŠőĄï>đc7F·òî`ČRȘÖ1 `/űƒxÆ*ŚkĐÄžóWÖkÆ ò4šwűLÒÊևÊdĐÏçĄäV̟É$+‹êƒ5IîWŒm!=5ëC„”Œ•?Ż>=.óF}8z2՞j§€NŚՎ“ÙSÀ“SO€ßx~W\[Č+8żPEE*ő™ĆrôèQłE„P ÁÔöșS©ö“,ŸéB§êÜ@Lîș@ęÇ“òH„ òmJCE¶‚ÁÒ Đ·$ÙÉxêR‹șÀ);Ž^gÉ”“ ìFíÒb'Q©wĄ%/R› ì°ĆÇ ”­Ü;ΰ"[ŽEv"xJƒB§AšŰœ$gȐĘtË# u -57v€Ę-ìž5»ë[ËÀÖún‹–Đž»ŸŒÓì,Żïö.ê<-8”ű~}ùu_Çőőœ^^ÿ„–Fˆ#tʛŰzŰG…Ÿ‡[‰AAKûÀ^Ÿ$ôí €ĐÈÒ>đąO*ê}/@đ°=4.Œ–…Ś(ô’”èçȚƁŃQiˆŃQțÚŰȚ Ș€ęŁ(àGâOș?ô¶3,ț}"Ł‡ëőßӏ©8RM Ż>ŹńÖÏźCśÿí[?kÔkœèGȘńÇȘ>bÔ|K@ăĐaàP‰8QH™Âæó—TœgżičÄ©c Ó%ź^ ·ÀŐ3 cőc Lsőç̌0Š„[hêa Æe@àܘl€0źźiZa üÂ]ÒËB‡‚q‡xȗLڂ„Jèé‘g ĄGE?,*ĄŸ FèŚ€Š5ű‚Ł a‡’ŠŠđ–û©ŒšÈ KSÛ«WŽ>üŃ, ĐŁƒÌ_“ë5š Ńvg@Q~! m2ÜÚ«Śr}š6ĘrY¶>è5Š>˜ÔÂX–­Ȁ·+ÎY¶>˜Š‡ŰUևjQPòn@Q“ƒü‚MŒŸäúp–ŒÄ@ș+9vD]àƀ„ž>˜,zy‘(3”ȘfŠ>0ŐáŒÆW˜ê0Ša(.SQaP%?¶0Èɏ鏅Ą­żŰPä6 ŃŠL{Y臀îó^NûąÜvšÒžÉíLl1«)ÒHEčˆ\“sfíÔćÆĆkrÎŹ™™ÜBsM0ńŠ•€JŚDșnĄ§CyMŰÄĂŽ_èïP^ așGyMŰÌÄäAYéÔ<~RÄzÄJ§!4M+ ™Š ,dŠąÒ”"zMD`ò Ï-Ű&_à!)StÊ ˜Ć?¶#=eVPĘȘkR,šÎèÿ!šP _=æMȘ—C*Œś%–RŻ żt:#.çß7aï‡ä?{:çÓŐŐŚ*{ Û&VWŸ:?€Âàq8ź:èÒÙÙépž`çȘ“ ·oßqĘŸZ ÓéŒzŐ{ożŻ0111⚾V„kŚpïZK ­TžwïȚˆëȚ• \čâ„œś”‚K%Ž*„[·n­ŽŒ<ŸÂ€{oÉ6T(—‰DÖTžér=ŸÌÒŒvđŻƒ]§ë&œÎËÍêűłg gAűšáÄ_Ÿ| †(Ž¶^nF.ӏžĘƒć—ÈòA‚Ü/­­Í2—!țĂ^țppÖLćłp 2nà=Ùy󩱇æńoż»! ĘĘäčˆÂEˆćbsÇűŸż+äÁ†Żß‚°B'9 žĂ.Č|›x¶±±QșK Ę%…e– BwśW,ߌŻ`,aù*ń|çĆÎs©‡_wwĂòvvî'șÿ€+°áyț‚0hŠłé,ț ‰łŠRù.Ł„”`¶üŒêAč°óBƒ …/LȚś\Í»û“’ńû»ÔL>— Ś`75`Ł$“x"3Ü?JÁÍ`3ŚKóžÂ$p&‰ë€q?©đpČEĄ4DűrŠ4_ÒKùùÓÇO‹yüôséÇűôíì‰YÊÛ­­Y‰·ŸJÂŻf‡çËçˑ™™”GdŁ|~xöcI8~ąünWŚ]˜ö–€ò7wș Y>üIá„óô0ÈÒÒpfpóîđ‰ă…æŁá»€ƒWKKžˆÂi‹RÀ.æß,íu휂Ő<Ž†OË·ÜÇĂów»¶`x2ÎüȚź‡?’…Ođ(çĄó7èÚZ[+ÿo»fàÒF–ÇńÄLÌLlđ2É6ÆXO)°Wź…-Û+=8năiQszNJf+H`BˆĐ °šgŻ(.R’Ć@ˆÄœëșÍÆBBqcQä$BëőZiśżžß{óf23™q»ûMŒÏù}ò{ï͛yÎïś^ÚŰ%ÉœĆ fđđ ì‰ÄÎÎnÚűäF@Ę 3xŰ}qg'&ëneŸÿìÙnbwçĆ?vv^,q1é}ÓĆMàFŽƒe–uB§ûș‘ŰE;»;Ï䝀“3/%–‰Ęûè7çè’硕 ą%3ú;A3ŒȚDQ܄L0–6Ê€gZŽ Œ†ő:őŒm0  ƒ±&dp&S>Eüó…|Ÿ“€çՁóW/]U'źȚí{ü§%ï\R. éËіÎK$ű šÇăęRą đ‘_̀öNál+Ń{Žđ)V€qIž°WFQjož?›ÍzČœű՟퇏śPCàÊÿȈƜš/€;ŒŠZ~ßÒr€^_ àk9GR§5ĄôíhÎĂ8J#û{I2W_ìœĘNú’Yi:Wâ#Wöć@2éó{ÔO?êÉćÁb2îïȧęÂ~č”.őúâ3•>2‡č=ójûŁ0T“†ô”ŸìÓŽŽŒùężȚeï‚~aȚĆfˆ—fói4ZÒ aîâŽ`pD#„ùs,űùóçÏ?E󇁐‡0HpOUü3űĆŁGŸȚ&ń…<„EëIÓ§ÈC˜û|_”C˜à—R@%B ~ÀWAőæÓ;ĄŒà0JĄ|wt$8SO`x |ąŻațűäűć#^/ŸĐj!Ìßńò8H«‡0ïă*ŽßŚ aè‹ÇÒ_ÔŸśűö,;"‚韧 ŸL…—fkęOšYą!­,Š PNABșdDs "’êUŒŒhMADśîiMAžĐ'î«JêfąÛ·”Š ˜üș$ ŃíÉï&uZYąIÍ, Ń€vEÖôczšzęúő™3ćëÓÓ+gôúßO?9œòFsœz›Hœ^čòFŻa_Œ,}Ì]À€aߜ[àÖŻŒ1è”ìß.çŻ}}b hMûƒ…ï±?žđCٗÿÏö͟¶Ęú¶t–]Ç\(}\:Ăźłœ-•æ–”íôoKsss‡švéä€ôöB»ŠnęìÂő&ƒbc™Ž‰'ŚÛ ԏzŁQsE˜<·0ïDdH;#R9ëíÌ,HRŽ3•*Ž‘;còȚTŃhÍ[ĆæŠ5™ ÄđșU@MćjtæŁ‚3/ô‹%©öç*VäÀŽXZȚŽ\:€LƆš&_!yw6æm”M4CĘ ‡6ŠȚ4-Îm, ژ;D”źź–óĄ(É.°Œ±żÏż—yÀU*z LWQ6jRŻb_üț>XćUlÜßÄUܕW± ­#ÚÀ€Ÿ°ZŽHȘ۔ Î9“èdąŃ4]— Ću“3óVA»H•Łč M*kAŠPm4óxˆâŠŠ†2yAh4ĄgFvEEœpŃìÍÍÍx…6W”Á˜)G ÍEnZÚ$_œ5š(Ű1C]°Z#‘Vڄ—•łE$…Z‰äĄŹ\Ê1ć3Ї PVțç5č {CŽÚÙĐ`/ÜJ€1 F Đ'”•E"hœäóGöÔdłwČÓl§ĘŠȚ1+[Y+&ÉâZ…”ȘüGèŹ$WÆ°æWŠ•Nćù”°kóccŃv…©±±Àk‘Ÿ-"û€w!àee•ú ;Śo-Țsc˜è”4ŐZ™ç«śOMùùÒX Rk)ÍúűÖÍŻÀkžÀEVta«3 WlbÄ[ĝ“9™_ł @gœŰQât%€JÈeČSŰqÔl°Ł†‡o|ŹL#~xOœČ2<ȚGƧEđgoÿű0ÙN fŒ‰x\ôĐùÍÉÉśŁ­žünaÏh\lƒ=>êáw>ąż0ꏈœ°ü$îJŁ~ÿȘx*6ëŻÓč,[»cì…ô”Ò>”j—ÜmlqIJétźˆÚxÚX:][tH§ÓY¶ró»#Kí)š’MKg+_ÏękżF€êęÄ żŠòŹíæáŃȌ°Ű+‘lúéÓ§él€b§tG vșČZ™fíèàÁ!"J‡GČ«—±X,dżE ~§uŁYqpSëF€qtpç3ćqŒșeB›êúuœìhéȘĄĄę`hę/šśșúQÊfĆČ©>Ö1kkW·9‘0ww”Z-u«é`îæQŃêiw«Őą˜_ÜĘfs(žÜÚȚȚJÆCfs·[:Ő0¶VłÙ‘ÜÎííÍÏïí涓łčUB€Ë óȚh!±~·™+oĂáÜV‹ŚÛȕt»ÌqnÒÆÚ ßs.—Dû‘’æöRÎeeHÜĂÔ^y# ŽJč\ê!ÇWB[»cƶoń¶¶Ą3č­ąĂeEí€Ü\&”·•ÊzœÙ_7 »m]±2ü”Bš§RćXȘŁÙ5đæđŹDáT1ÖьGŹŠdvpŽw.Ș1š±pNű6ÂȘ#‹5‰@ æYŸ\b±ê9»Y(‡«±4wÄȘ©™™0z…Áž@%€0id[OŹȚžá}‚7ĂĐÍ6 application/library/img/volume_icon_onedrive.svg000064400000000771147577724760016261 0ustar00application/library/img/volume_icon_ftp.png000064400000000563147577724760015223 0ustar00‰PNG  IHDRóÿa:IDATxڍÏDÄpđw»vÔ)‡țŽž "t@să‚+@"@€ÀÀ  ŒmXß7“m­Û?ïï{ÏłIč&“ÉfÿI]™Šyíy^âșn3ÎÊûć ŽcͶmŃuœœ“Öä@{0°räŹŒÿçbEé8ŽSÀŒłÚa¶ûęŸ(„ ˜qÖè@âûțŻćr)̚àąÎÿχìéLêJÓŽĆt:MȘpVûXú6 Łđÿ«»•0ălĘ.ąĆ\ÎŒÓÎY¶SYȘŐjĘ`á5çòvæŰʓŠê‚û©“û#eïŒm©­7ő"ś=‹ÒśšÚ…s˜Á3|‚%—›–é]%Ä72ú‚ÜÂ(ìdŸv§p&ó­'yèZÄ7łÌ1@:?=șœ])XVIENDźB`‚application/library/img/volume_icon_dropbox.svg000064400000000470147577724760016117 0ustar00application/library/img/icons-big.png000064400000015340147577724760013704 0ustar00‰PNG  IHDR0MRČûćPLTEJ‹ÈŒžJôD7r€ÔëI%íwSyŒ]•ÎL‹ÉGˆÈașœÂ^ÿZ'Őqq,qœ/Łm!‹S|Ż+ÈDDPŽÊOÊGˆÈG‰ÇNŽË ź.‡É—¶Ù~†?„z~ ùM*(—_HˆÇ!“æIĂH.żR0” sșmmmx‹œˆË2¶ÀR€Àllliii‹Îrrr0ŽĆa$x‹œaaa{ź){­+æJyyyeeehŁSSSŁ>ÈCCy‹ÿÿÿÿîŁGˆÇÁŚí’čȚßđțæJ»œIv§Ö™ÌüŐ»kșàÿźÌèÜèőéӅ–ŒàŠŽÜ!Íăô§ÒùÿW"ÔéúžÖïŠÈææïű.}2›Àâ GĄ ÄäőűüŽÎèÄÛđûÄ”ÆßôÿùßÊź^łŃì~źÜ3·,Č†ÈŻF¶K x‹œ zčęŠf%­țŚÖœQíòöșáŸÀ…Č܂̔I šš”ü€!•òĂÌÔĂUdœÒÀăÏțćáKźOșŃ鋾đÇCC|ź+AÂ.§ùqh.ąl-qœooo"ŒS–ÜtČiiiźĘżíűìèS$ìÁÀű«š§@Ń:œ'vvvaaa8 [[[ęìéŃ_Ë[û¶­|||VVVĘĆuÓéŸùÎÄæôæúçœo«„Œ AŠ|üùőT’ÌGœvŰĈŠŐ°kŠ•€±ÈࠓÄéâË}­ÍxéëïÚçŚÓŰă{ą¶ŽÉ°šÊü”si!ńèĂŐkkìmH{ȕȘžĂۅ…UȉqŸtȘÖȚèÛ­‹žB˗Ëț‚[‚!ĂÛÄÚâ뻙™‘"‘=‡A) ÊłmÏ]]•ŸSőS »»»ŸĘ–⯏đ܎șوêe;†€Ïè±±R§Ì̙ög]Ö<,‘‘"00˜„„ÂVŸű…}ÊLLąąŃ–ĂÄZZ­Ôöà+^­pš|\¶`[™^ᚚâҟÉwE–.mÆ„ł†s&­ƒƒŻ5$i@tRNSÄĆțțÁțÁęțtțțĆțÁÁÁÁÁțđi„łô úüéxtOęs‚âáwo €€â„áââû}{qkăìăăăϧłŸÿĘjIDATxÚìŚAkÓ`Çń 6փH:»Äœ‹^ĂÓ[RèhSJâPÌÉS%C(Œmàk(QqˆȚd/»ùÚCÙ^…Éó›&Á'yț8Úo’>žÏž%ÙÆc…wæ~QW+ÂÎ,żöBšÂ>-ż† ƒŚ{t0†P B @ĐÁWÈ D€ (/nežŸélŠ-ŸÉiŒȚżßŁ~ű Ÿ§€&ŁL“/=›ÏgS9˜Î|“7OālšßKîe.(œ`…M2ÀS“fžg*đ“ïgŠù0ž&óśL*đ§x@d0Ă ƒ)ž$?O§ ÌçóÍę«źpŒæÓög§ìOć €ćMi—rà>Ą3•Eä–r›ÔÒ ȚȚJ[«iD@k8čhh„d—0’lVaŚ2zĐ»QÒ č&í~i đÖ3őúràö©„ śĂQtȚK@OĄŸȚëń '>Ž…Ú?Fë č h Öń_‚3 0WxąőlkgPR‹Ÿi y ž§P,0J@[Đœ¶PK@7]~f/WxŽžć”3— @ ô<ÏęńH?pàŽèq0BŽòș1F qà8#gô-‡Đ `esŽ`[ ƒ.ń°șAșÒ,\qäąȘBQ t„XeŃÿÒR¶UŐ-»H7o„œŐ!ˆ‚ÖpĂiÍąR°–]#(Š„kà,. 0W)ÀÜț)ùä+€_?ûÇX3îąp…PŻEâjÀZ¶›‘îôoˆë69žÉrEëęąȘg9xl Čő‹kŹrDętkZŒo/¶ÂAPwĄ:«1"‚‘†7ÍÚwh…MȚČDg9këÄ«T«-ìK>p±&á E™>pő ŰșČ4n2lđ%(hrđŰžG,:ËA”‰5V9ˆlâ|—­p`„.-§ÿ‹2‡Bƒyȕ\^”ÉA0ńˆŐ–8ˆą±Æ*›8ßa+đMŸE8ĂF kŃČ5Ă"5j]bńCˆ7Z¶ôŠÓWtr+•ÿ;u¶D-aŐ"ĄÙŠ° AĘ‡ ƒ Bp±€ T„ €P*‚XŠŽÜŽš–ÒȘ đóÀ”zń§ïv;&­Ž8úŁűÓ3ȘÆ8G“Șád$À¶|ÖK&9ăx€çđO„U—uűè±!tjșgbtM đÓăŻ~q~ÏÏĂŽ_ Æ5ftŽG~·k•‚GÆ8ĆăíÉ8òűJz9hŚâ·Œ±ê˜Iê@ö-ùÇßF)Otœ“Žćą5LGŸæĐüÛ~§ÿ'ʖVËF °?Ÿ#ł wdKb`™Âșv€5èà„€PtĄ èâą € BP°L èŽÒl-€Yÿ*đ‡‚üĐe‚șe+tù'xcŃïĄg"ò=,ȚĂâ=œȚś°żŰ-iö)ߑZÔć°ż%Ź!uSŰóę}2šïBĐÁ„€P*` AqC*Æ‚Ÿ xš¶>€œ8ŸÒê PŽ^mïȘ€Łžđ G `Kű76^©=„ĘʓxŹÛÔÀöÆÄю`>ÄŃËúŽ `>ńüžĘr€ùèŐKȚQ9À|TOEÀ‚@,– "ÀÛ4€”A]¶¶óœJĐÖéú#đOƒę-iû9đ”Àïê“ąź€Ïo„}€sŠ°w_Ÿ@Áč]:ہP €‹ëJ‚îBĐAL ˆAĐ|eçŽYă8Ž/‡CAŃÒœŽ ą=H, Ž Ú"(ZDĐZEz‡‹S'D9Dp.yÓłœ çțö‡ôèŃçùæYśÜ>œçâs~&„đeżp6Œ9)űêR*ŻŽŃÛ*Y€ò})$DÉPBWp„@€G/ŸÂ5N đ*hDŽŽ)%…=P!í1 ëE;‘Ż|„ì }RÔl'Ąc?šȚ7;ŹX.PÒŻ'ïžNDž±(„E~±”%}ÇńIæLŻY Ł&.H@ I§,À3 À,ŠxúĆ`‘Àé). rJ„lԎ‹j\cÜn\Ö·ï‚à»Âò–xàÏÈđ. €öGî:Čù€Ęą)ű @§_,&|úĆđ?RÆ|ČÿŹP €™ lČ °@ °‹y°€ 3ۂOöïőKOöŽŸ5”G€›¶ŠæDŚpuŻhƃxőÉïĂăČŠó žŐLt /ońîM x—€}èȚiêŽZÓŠ`ș~ț(l+$üÙ\yX+C@§Ș-CB2ëÚZ-8!````aćÁ,ÀI”_g5Œeæț8xg§ŽQĄ Wk9WŰb/±„•śđƒm* O L)€±ò xËÁÚÖ+ìM }°lRäŻęàúdˆ†”2 ”Xq Ń G Ș*€ È{H|)Č*BÌĆ"€TΧbąÔšÜ äv6“s6ŸÄ$r „š­ŰB©łł~PU˜ȘÌ>0AU{~!CÎÉîTIôœÍ”Êœ‘d ŠdčI€H1 šè1€śŹ{é@2ÍÒPűŻȚŰœȚߌ0öqzłqŐ șÁÂAô@  è 0€èìąÏÀż­mpy{8pó8‰n`§•ę€  }à'Â.ZÀš]„ś€˜5;Íràș  ŸÌÇmđ6˜¶ăžBœ€Đx? Ç= JÀșŁ“Ÿ@țH˜^ÆŸ@Æ·crđł!=îÈóńŽ œïĘ|všÄ#—ńʛ}±sÆš ĂP^Û3è<-5k•ąvÉÖÉąPđäűo]BäLÊàÍ'h. Á‡èo=/-ÈvŠPПHű?ÿ’žŁÁ‚śę x\ ˔O-ó©e>”Œùƒò?€Ț”e§—șBŒ;èŹúUì„”-ÓQÍ›KABȚ/ćłĐÓ@éèD§"ă[päS@çjCmkKŃßXëôà,ü?=fâÒÀÙc %ĄŒš“1î˜0 $xČę`‡áëRÀƒš˜ <üˆ(Àgcąj"Nđüęëœ0"Èúx} °.°œp àÄ4Pûžü0óĘ1*\ˆ”Ä[rŐs "ôAƀ‡1`fŐ5€•–wf•Š-źÛ{ïC,šśÄŒ;€*-à#8z… ­·<…ĐíàR€Q4”)J6cőd$&ïVH ©NfńԇÿC‘ ˆcȘ©ćb·äș™ibXN”›”†nŚŰčțđ<»kpHžˆíz·ąÒËwŸŐȘĐùÔ2ś#ËęÈr?ČÿÔ3ç6ÀÛʕÀÇÓu€ŸŻźȘvÎXEBŠąM §śƒf  ™BŸV~@`J‹ù»ęÂ͐•ìÂ$™ivuž·*ź‘`N扟ÌȘÈ„ŒÚA­&ô+“ĆdGÎú8`òŠ\ڕî©N& Ô[-ö’«ˆŸ@š|Ešł­ Ïȅł: ëdĂŹCàŒușPÛäóÈ#ùŠFü(Ÿ‚ęÛÍ9 ű Y_xQvœKrQ €ŰBMcÎŻąĄŚ€Eïô«q4à țG#ƒ‘ÁÈțèȘ`ôC@~^B©—@ț)u4@3ùLOżô¶ä$ÀE©Ì\ڋƒNȘ§n&¶ ’Š* Ű[˜‰ȘëœÍâIàvsłužÔă€Ÿș<ûśtK-č "%íYèąČ:ŚrŸ CŁL$ˆX*Č=Æ™4Đ3ù4»X|{&Q"ZŒ F#ƒ‘ÁÈ`d02Œ F#ƒ‘ÁÈ`d‡ÙP`d02Œ F#ƒ‘ÁÈ`dtŽF#SG[­02Œ F#ƒ‘í}C‘ÁÈ`d02Œ F#ƒ‘ŃŃv Œì‹3Æmąšä›m5ÒJÙKđOF±ĘV[ÓÒÓq !Ch°#9ƒÒűę…Ć Ä«æăŻ=­F†‘adFvő F†‘adF†‘adïldì#cûÈŰGÆ>2Œì)7 ävTŽŃ–ò=9“•5ú1Ÿ<Ły€yTS „tćŹ|(Łt0Ϙ<ńĄ«N · ŸĘVz ‡ŃCŐ>EfȘ̓g¶Š _±Fí€Æ  ¶MAÀî;p·PmŠæg™Ź†€Őg^ÌŸz Ćóűo žašYóKZƒCoŚ? N„Нđ4ëAÀ [|ìEkÏčŚöüPù1șŚŸÁÈȚ㠄 Đ=`dF€‘ad  zžLF†‘`d&@ô02Œ #ĂÈ.|ČsÿźM„aǕŰpD„Ć"*ț Ž/stšÄű#5Ž!(5œÆNŠTH 7…@–d0Œ{BłŰí‘tĐÉ&Cíà“{šäȚrwïû©iÈwhœwÏĘćm—ÜüG6ćsëȘ hŽ”ÜÄÔ;æŰŻÖ;$A(  €‚PP @!>{ XÔ:ÇaïŠN(ÿò9Š—]lï"\€Ï—Ì9ôÙçsč{%O"ŰIB02'p hkË·% vśśś“$Đ}*đíîîæÈ`Žf6ŰÉćđegdîÖĄú" S—™ČNXȆŸ¶¶ ÂZđIà6Łiúș7˜Ž2źe%p™‚ ĐS$ș=st«ë—ú^,B©y;-gĂA>%h2>e>p 3§àÁĂÀ;xș$ĄÇ•—P{‰@(ŒßŁŠŠžș<èâăćAè…Âl©§Ô€­J„2=ęœ0iŠ3Œo^9mJÍy‚đÓJ€­æÔyOș gÆ*ž€Í-xƒPXáo„»A€3Cxf(Ï èČ8ek̀êr“§_Lž~1yúĆ(|áúŰ@4âPÔ„U‡Â^{žăPtˆ3Œd˜ü śy žar&ŚatŻĂLž~q€)Í­«.`łè˜_Ón8?s,Ț\A›1$@A(  š‚PP @!4[·$@ÌÔ>ÿԘƒ|ш7Ór ÓęëZ·„$ 抔-VÌś*»ïkŒ—I˜4Đ1SÄ SÏçŠ7X‡úCò1oƒŚrÂoiHÇòŒm"0 HtmœÌt t]7ăb „A·˜M~Ûșt3Ž(ƅ aè02T€3Tˆ‹ȚżÒ& LșIțö6E·Æ?ß­F“Ć4fŠáhQú"@_f0T°Qæš1aMh8Æ.ŹșuÍd–ûÂ|`Ž}ɀ ,XBA(  €ÚÒÒ+ò ÂpČC!«ö$@öÓ Ì»2î ÔŰŰëÔdn»ęš›ÔȘk[ŹQêUvűȚök6$đșZoWĄ /°œmMmꏱŚu•ŒÀc8?Ź鬒z»e=ś°ÆȘ: €g8`l»jŹœźŻA5OGȚ`k0‚Ü PȚìYïêőv»ȚM ( ‡ô’pHŹCg„‡îtgpZkŹfę,qŽ|kĐoŸQù<ˆ>ąôE€ŸÌ0^Qæ2YaŹJà;żâÖMxæ˜Â(̱3*,€ ûË H  €g(ä/ÄàùÇȚQö€ûX…ŹŰ“ˏ©çy LwYžęóû›ˆ,|ÿùăI71ű8ûgĆÚ †zE]ÀŸśoú űKMĘ«& EŸ|‚}•łTuHê)†žÆ:ŽC „ž„LĆnČô»8˜Héán!àín‘ìMŒ äă\(ąđ&ËźÉÍyì«Ț@S±šßœ­șis›hSą‘ĆÛÒ$ʂET Ż±Șß"HèÇ)!"zžR @Q SHHx[’p—@ź"D“jÜÈZG6Í'‹˜`jŚŽ]č/.ë‚"{ïOS°+–„x•$€,–˜č„ƒĂQ:š‡ïtŸ‡ĐmcF2Ç ”đGegŃZ§>ćàˆu±źËÌ* êDŚ…Ê6Á‹|đ– = „P‚”ĐJđ:@ 6Pm”à%8c€ŚĂsŐ-ƒÖÜł++sW5ÀƚÜ€è;ùˆ”À1+r΄Îțæ;゠…ašŸ(žà Ń/œÏ†èć/eS±4̐œ%ęgt4ÀĂ S>pPl{Űăƒ…ù=ôŠ‹‡)8û·–á– Œ0ü[ĂđtNëżțàęAvüÙÌZ JęČKÇš Ă`Ç{Ž t!xšÉ +iś 4h–0 őĄJŻ“/–ŃӇqZŒ‡üńŠśCƒ°EßżE!uiŸŠ#—k_ìyŠàP”/…șÁg ;łèoÍŒvžÎ)A€á% dïĐÂó ÎI0á“Đ ˜Uá}AžFÀà FpÀDŒIcl4àąS€&Wl \%p•Àí •`šĂȚŻŸűœ€±Œ•`|ƒXÎQ7è–A«çzÚˆŽïoŰoŃá§ì>u=}NG}î°ŸOŸą/ÊàȘśJœú”•/™™Eÿ3Y2‚°’DX Ž°hÁÀRpa“ B†I(p7\ń4ä.D<Ș©cÜ4‚(Œă9E”*ČA‚ YPZ–F©ÒXé„pŠ4;łŁŐŠhJRf«Đ ±{H9Lîáä-ĂÎۗÙÙÇH'ÿ[âûá'lŁAđ…Ö(°‚^Œń'`ëëùń?Óuóuö <°\ ÇŰÇԁćI i7Àó›ÂÆt€aĐYúÌàé ŽÆ`ÒXDžŽˆ‹“R‚4»'`ă­ûNڜÌńĘ€-`=ìŚ]€ t$Đ\kWJÛŽ»sàŠ›Ûź(źùęì/Űì;©ȘN^žȘȘäŰŹgoI-ìȚæ€?G1Ișđú…‚T°E’ ‰dˆ„ X!Y@…ä`•èÒ^5CP )kŃźBÀ Œ  J à^LàE.=Đ€MŰò<śh9.Ÿž$Ö ’žŸ/^ægu’łKÄ8§)$I45  €ȚbgöăĂą8<ž4ćupOHÿÌaR†TāÇ>Śc< YU@đûÀĐțvi…Śkf8Çœßl€bxÂëĂț‚üYYȚŒ_ž*ëTĘšwĘÔÂÎmt̝ĂŸìÂëg#ì˜(8à  PÊ Ł @š¶ €†(Š”0àŒ˜Ž€ÂP˜F (E”(KŹ@À `ïł,{@;|g\Y#ú€hòfÁ‡`„žWY€'ŰuŒ1o?‹/»ŻŹúNú€ ôâÁd»ŹzÁ7e‡ȚY°"@č“ ś”A ә€Á2 9@śąOÚƁíÖôhe oπ˜“L0Æÿœö°mś‘`ÿoƒ)ùëtm›ö¶[FtïÏmŁŠ)żż…ęEú ĐÇKmlșŠIENDźB`‚application/library/img/editor-icons.png000064400000005237147577724760014435 0ustar00‰PNG  IHDRà=żJîPLTE'+òóő@;;SżȚ&«€J[GGG€—3EK AYPr>==€—•Ôé_Ăà€— {œßâè5@GGMV——˜ŽŒÉ@@@&#]‚cab_ÁÜD˜È“’Äo8Qwv===~‹…GW !€—GX€—"+ZȘÍ€—Y‰žROOŒŸ‚°—„–„›•0 \;Bbxy€—æòâ”z†1Nl€—,*+JšŃ'1<ƒŠ‰B„ĄPiXHH?!4*țęęęûùôŒž țțôđȧoțęüüÛÛ±úśòïêêÛÙŰŰÌÈŒ·‹‡€LțțüúšššŽ†…F@IûIDATHÇTͱ 1 ĐŁ1m<@n‚“áJ:„bWv“&‘»”iIČ@ꛂ1X€Ë„âw~–ż'û D˜ÎöŠÏ©ÇxĂHH\:<(N@ l‹û\êöŁă†Ë§ŠokăńŠF–WÏ\æAr}uX€„ ądw%~  11ł;7!hâèȏCTP‰Í·v8ïU€”ŻsóQ‚š„Šœ››Źj¶Ìn߯Ë‹J­őțêÓÈí¶ÚÓôŸŸ23Ńù("™Pç"ŒŸ & "P&”‚éH˜˜$n„|†ŠBT!9›[1}ƒßûÊç‡A ˆÂpC– ž ç ˆÿ +8ftUáMÚCŹȚàj˔–-†qïËńâČLŒUTі ÀŰŠ_LRdÄäĂB”ț„ÒœÀZAĄß€áu Æ8èLżĂ’f˜Í}Ńzo:ĉB\k=—â›^¶ óljŽ;ßw MÍ~aÃ)€©™țçÚ/çdŒŁ0 DŃÙ[€§Ùr‹Pìr $Äè U$7Hű ÖTiMIGč$Š8Dr!ÆN€/‚ç"z/vl9©¶E~Ú”-‚ž<ÄÓ]î‚ŻoûŒČșs­ËԉŽeêC;7—ŻŹ“2][«em*Șj‹čdÉ䣓mQà8úärÏŰȚń8šĂÂvAx/DEˆŒÆc!ÀŁđ1™x-ŹđKțšH6Ÿœ煄źQg+…}ż *|Ś\"MÇ ÿĆò/Č\çô9·2Ê-&©8ŽănŁTŹ‰‚\–N»‘ejjšÚìșj륶Ö}]ÏÆÎÈ&‘làÈ€…ÎâȚń…P%S%,ű3föòœÈfĄ-~у2Ä*~WâÛw6Z-)**zwćĂȚBțßKűVë+?J$GśÏ̔ü†@\)áOé|ôÏă\Í+šúčNOî=WÉĂ[||~ać΃’ł>%òy>~ᝌ ÙÙ>ß*Țù*_aÊFt*›Ç筇 3<Țtæ0ç/%QäAœz ±ÄP—`Đÿ°˜Kç šƒÁ ŃhjkQÍÜKàöÜÜ ÌêëŸLL˜0mmś–Dè{ÈdČ$D}ÄjęnĄ‰'!Î ĐĄNśJĄ©ÍąÓ€èŽĐ;L EHg±F–ÄK…" ł(,Öî˜ű ‘nEÀˆ‹n+ÌĂWw €Ć}KÄj‰„`«N·Äț;4€ Ú Ô"nšœFáL7(Z«ÊeČ5ÔUT$!̶žŰŽŹŒœ &*’à ĂEk(Q…ryù¶MòMhžÂșʑŒIĐIuoCi4Q•+  Æ…\Æć&UÉ"ÁJ‘¶\€Áă'€=>B,Q©?ș‘…✆w‡0šßR`kő»Ł‘u°™  R=ő"†FÏĄ!ńP<±Ù;È€ ž™A»€Ò`5}dÔ1î`҅tŒa˜6I­›lhh(Țăș~žlÀYˆZ =šÇqŒŽt TSȘăłC/fĄ˜ŰŁgŠwïÎG@c덭*•R‰ÁÄrTšÀŽâÜÚȘŠ 0àÂaż?ìVb&Ùl¶Aż[iDJ„Ê?Ô?4ìW©ûí XűmÃ6ń~2‘Ń=dSŽŒű{ĄĘî5w€±čGìncL,Ìz휹ўŰ? ącÁȚ;kŽ{†Í.ŻŚŐźFf{ïŹËkł}‚ŹFj0f—ĘevčÌíêș:€ÆŽcÔ›šP ŽÏžĄ& p0’9„‡•r’ˆ‚č:•t|ùâ SEL*sH’t|ęê€ÂĂXMRFŠ«ˆ’SIà:<ź©É†PÎr‘ƒÈć"u…X1ČâŠÿ/+@ ]ˆ–¶^ž^Û:Li”dìᆀ“säHGÀ€đ`ÄŁˆç €ćIENDźB`‚application/library/img/volume_icon_trash.png000064400000001302147577724760015543 0ustar00‰PNG  IHDRóÿa‰IDATxÚ}’Ì-G†ßÙÁŃ~;”mEuPFUT›Qm[ˆĄ¶Ő¶ccÍ~‹JśI–ó~ϐ!c‹}Ö?pß„™‰ńÇÇÖli;îÒČRi!xÔíȚ‹ÂđçȚ`űI·ŚûáG/úꋈDpúĆW©í¶ŰüžőçN!Áz„BA5;múÂ(DŠńH7-»Őí}[o¶ïűéŚ_ïżá‚ó<brll«ĆÙéKŚ›Ÿ_[*æ(B)—ƒZđüœsH„ÓŽÀ¶ò<ÿênżÿ1€w磒a˜ŚuĄ€€€kl|aÂő<8Ž ÓvàÓeZúœ~1đęe …Ÿú”Z{oĆòÒ^ë-ÌŁXÈCÓ…XTÔëĐluP©7Đlw`XÖ;B©Ïț\vٍËoœçńjŁœWÜëôűrùFșA]*ląÖlĄ7ÔĄ”B<~ÉY'7SAÆôÔ€=>1Ę4ăÚĘ>ș‰ö@ÇĐöŠ< }ŒONÀwiX2cšwÛőâ‡nčÈćòàRŒCĐ3Š\Ćż1šŠ!§<߇ăčÉh ÓBűƒBp°Žú߂ˆÔœùœ‚’2yJ)éT( qΘÆ(»Žäiń€$HŸń%šäë‘„ $PJą@‚ôLHz’<Áÿ B‚sžö,E"ús Ԗ<5ŠĆÙ ê”ÚŚ–evV._–HŠĆ”JŚC ™Š…ƒN»ő22î»óö·€àSà”„ùčő”TJc`J JᚩQź”œçÙG| …Kqű‘ÇlŽùæ›ïșjŐȘÍÈ±Æśf˜æ@ŚG_UËć·^~î©Ï*?ęè!ă7ó#—XÍ-[IENDźB`‚application/library/img/volume_icon_local.svg000064400000037520147577724760015542 0ustar00application/library/img/toolbar.png000064400000016522147577724760013477 0ustar00‰PNG  IHDRߎ)ÛúPLTE 'A ŹÒśKw%±ëńś}·Ù‰ŒŒœœœƒ”Ö jŹêœÁđ]€átșô[\\ »Őí/.,zĄżUŸj­Ô ˆJŸÓp’EbźTwĂë7Ùn”6k*ŒÈh°ĘÓáì CŠ_Ÿnżz$„Ô6?łŚö‡Œƒ.~ÄrĂ KŠyyyj”ëg§q”ĂMĄävČŐJHH=™Ț>hßhžCt|°ÓUąOȚ™:„ÖûÄ _”Żi YąIZ“ÇșËÏq„ïÂk͇ŻŚü7ŁäI’B†ÉuyĂX]Š[\]kžÖ“˜“5€!ێ%šÍđ$€Ć·ŸÁÇÈÉ\ä‹Pô«Sî˜đôś0’Çequt9v˜ÜŒ:‰Ől»\ĂŰëw|{ĂŃŚÎ*Ùßä|Ődíž<0WÈôöùČ>ŒÎ#RŽ„ËĐÓšLšnš‰d {ä±Z ÍîÀ€…;>B”çź;Yb¶ìƒ|x 1¶eŠŠSĆ3r»c“gh_™,àæìVSN~3"Á­™J„Ă.0oŽ[­­­>ƒ)˜˜žW¶7Œ-t›ÄAmÀ€‘o–™„ˆȚêÛŽqîÄSgŒM^“;珞ŻFđ„4±]O7ÎÎÎęęęæóùóśùÔíÿčÙùłßțÚéóÍàìłÒîïïĂŰèæçèÂÄÄ5šè€Æ۞ŸŸœŸŚŒșé?žèŒâęÚÜà”ŃćŃÓŐŽłŽȘ««S}Č«Íßăâß}­âÊÉËűđæÇëț©Èêkki€ˆń΀S•ÔÊő€nJo¶WrÄeÍŁrN»ö…©Á䷏Ƙd•ÒòŒŽZŰ­„Èäü’“”{Œp苖ßęôßőڐ™Ë‡Ïƒ4­ì‡À‚ûèą„Ó˜Ęđٝç›słnu›”KŸr&șûjĐüŽÙŠæȚœțò”śbbD™Ś”ÉÔ”Ïą[ëțxxçŸiáH5ŽžÈŸ ÏhÒƇżăŸ§—{üÍŻš_ږY€Áćę„tRNS/ûțutÎjjČț…țęęțlkęû»Ì[?ËÉüÊŃËÉ€YÌĆqęÊ臂+Ìż\țü,țљ{F깈‚țĂț–HÍ”t3‡ț…SŠęüüĂ.țTPOëæŚŻûÁțęáˋPNę­«©…XúȚțțęèœűőòÔËŽ„üìæžkiüđć­Źđ럔?±WûúöàÍɶ„qjáȚĘ̕ŒƒüĂȚȚ}ó۝ŚîˆűTŒbIDATxÚŹ—_HSQÇŻ—čr©Ő°ÙjÎR*)iÉ°m걉őP‘lӈ"dì%$\E!AЃ/Fô =ž„[n"ŽčMçjH6“fDŸőúęÎ9;ۍą>êÎù~îïìȚû»G™„Ž””Tžqă†Àóèhk鄞K<Äb­·ă xótô6ÍË b“ŁŁ“±‚Ś296íńLÇÀ”BȚô0O{œÓńxìáŠRaSsg<ŸŒF'aèlȚk.Ć9p&>?{öY"Š§ŠŠŠ—RńòćM.nśÄă/^bEÏm&zz&šh^»¶č”ŸaĄîœQqŃržȚ?füjJƒ ś"3ŒF"ĐQÂTĆEŻ„E…_äE$ąQÌ%+zńTP!†ûr€Ó¶—”Ž·Ă ăŽđ?p«‘‘đȚÔ"hÇą EŻ˜àhjTBBHôÜçÔàgz9‰:!1ÈĐï1”S *A@Ë8äŽ9+Ü 4‰"ÎĐÜ·„àžÉt<›Ö ‚)ùƄ~Ôô&iâUÚPŽAÖdČ-imK&­&¶€ CČ­,aÊj•DÈ`2Ș”˜`š`ąËTŃe­0Á]RQqȘ*päWșÏÚ”'œÎ}ûnżăüIà|nzœA0<Ç°"ÆÍ©a˜bÙI& ą| °a 1AO‰h0ŠÀ°„H'/țűțęâĆïßż=!âIò 3I&&ßu]üŃŐőăG2ÍN@pÀ,”ƒ\X™ÂRYiQÈ2yo„ŸH‹ô•{36`(/ÔÈ*!ôôŒ„BĄJ\„ЇžŰ„a ŒŒőöG- Șà°<Ű?>ì?ZEÄŃ`pžżŰë/Fa)†ăęę˜Çq‰bCaa1æâ }Úț7B.7nÜžŃ(—˘ć1„„Piàyș•*ű-ĄčÖĘ 7ê@“Ź<ŚĐFŰoIÍÖ­ đôĂœcaȘó[·4ž-ÂbFÔÖaWđ3™E]dÁ G ’Yu] [!ŠRąVčV©!"5‘ÂÖŐr3až0ë”ZœÎ Ź!͚m2#pńe*ș1,MW'@ՙĄRX@—É„%(Spè.R?ű *|>dÈpÓż8îG€"ą:+-9è‡čű ,!pö1/*ŒT ÆjRqk0XcD Ù{°ę€QP­8űÛ~ű8ün.ü‰Tàțà%’iPü…źé˜ûJĆÖ ëWærĆَëW^œ"5_H?:Ț#ŻP ÀŠőg>|˜‹D"ĄD€đ€ulÿá»F„wLŁdšŠÒë!űÁPáńű€ ÔÀ‰ YA”Gɐ+jIö š„‚E*°F"Żo;€bîÊu" T|Ńq6+æȚ#’Š3ŽąÄ˘;łžŸG c˞ęB†m˶ œÓ«VŻ^qgĆŠĘ«VŁË//ś:ćććùšŒpy.GVŽ8\źü"Ÿ#·ÿyhÉ— rŽđć»Z--9ïá čêlĆ| K8-T€ëđžŽ ù˜žàhÁ\žx gÄ2űZđđсè2ò§ór0‹F‡‡ƒę—ód‚LŸzg5ț‰ŐđÍÁ·ß|{đÍAWêQ1ĄæËŰnđe(ŒDxűžBĄÆl IE-}ŽűŠHVDP ”ìYçŠ<üÏőyFđöCVdl‹xŒ%É2F»°żš1—Đ&‚0Žov}@Vă# Jô4 |Q ‚{jéA<z0‚Ż‹‡àAâIŻąŽCQŚ-.ÂjŐ”Ą‚ 9äXĄ…VD|œüÏŁł»],zđŚMșßo›Î~ÌÁŒ?oű‰ÇójĆ5Ptâę<î;E ÌÈŰЄ±KęZÉf±2—EŹ ­x*ÖŚőô”ËôXčG$}ńúĂCCŽ°/ûëĂŹ[?Ž¶Á"«œÆÏVŽĘZ~R~SF~};ԇ˜™Ÿ'o‘F3;ûa) ŒE};3 †ÎàgrâqÜžd.Ś{ƶŻôærûčÈuŽcێÓè愘h¶šFłÙœ˜íöŽœmB(őÎ-őbú”ÄóR4Ÿ3Q«ŐJLŽŃáw4a.ÎE“ ÄR4€@0„° \ 4À9ÎíEIÜ=’ÆŰ8łFqFźHŽç”0qùŚW$ LX(Ł)ő‡…4J(ŁDۉ2Ÿ EpY‰ŚÈŐ@§›O”ÎÒóQ4b%rŐP"…SkŠ4]7*€šâ˜am¶bÒü6…Èòű_˜Ÿ/s*Oż@.•§ïßĘ.ĄR+O !s ʟp±{6u€!D‚Ą .è*!8oW]ˆń#@9_ˆrà§CÜŸJ(ÿ S3Ց€0UQ(KÓ2U ^JDšFkdùK’Uż}ą5Č8RŃȘŠhû˜č@[ 3†ŒBÿk˘ù.?źí=$…4Śșč šÖHńR@Tż~žaÈ懌ż^Ó€qu‡/ÄȚ].b|‚Œő”Š)ÂóŸ Î]gSĀ˜ș•0łY3aÉ,óƝ‘BaäÎ ÓbĆ©‹© ŽŽÖˆw1„kVĆ&Ä#ÅB‡»biæUJiáéèš[ÀÉUSËTlJĘg.JíJ}^€”ÎçϝŒhi “šœZÒé,9UIdÄÎEÆJń…ƒ•1t‘ :Ä_!a‚8Çä—5GÜŚqŚuê0LtÜ–5ŽÓ1čš»uÏóêuŻ.ÄłB§àq τUHá*žÈș6‘Űn– ÍL͐YA_Ț} Š™©©wS_Š„ `ê#㊚ò›{Äóș±9ôŒÌltÙ țăüۗüRPETÈńPü4DŃoR,æ›ĄÛ—/”,盡Ű=•û§`țvé˜ŰČü%;9†Cn—b?uÌqƀVŒI±‚‹—+€cłw)Űv©íRÀĆJvFé2%°UÊśOŽpĂă#۶«o”€o—Ąÿl<òq_•Ć’ƒ6fƒç9ŽM“gsœł)†Ć—_]ÀÖbGŸ‰ćW»ć ·ÚœÚđŃ}B4[ Ùš1T ŐÄŻ1Đl·šš‘b g ™5g„‘&Q6ż““UÏJšžŁMąűWu5ÿCòȚ” Tˆh“(㜠è‚ß‹‰O­6D]‚»űÄîĂg#'(ŸMN~ ‰ÉWŻ&ŁÂï4Úä9'(OO?‰éŠŁÂï4Ò$Òéüóéç/ x§D:}< ćӏœGcÁ|úÀyΧ¶ΧPsò)ę·ùôÏ săêŸÇdn\ęó˜Ì«ŰSńüYúŁ™łiŁŒăű” „y‘Tș6­àĂÖ@KÓ &Ąà˜2gąò2.$ÀИÈ6—mÊÌæÜtÎm™1ŃÜȘ˜5-ëÆÊF/Lì„š‘ŠYÙXž·Ä?Lüęž{z/ĂéæKâ—ìžû~îyę]ûÜőčvUÇÒUÉąÏUéHIšŁˆúą­%c©©4O•Íf*brLi¶U°,5ńžÚ„>č.狮f&±ùlAb{J=ŹÈڙö4+3<]lOmÍç”ÛŹÌĄÓêÛŻukm”ăŚ* ŽÓï1öȘ„í©”ÓăÓővŹHÌ©·ŐÎÏOŚRđÁ ő”ÚúúúŽ‡àÔ{àTąE@Á{ïœW[àžÓ‚ÎNĐqŹ" 6C·%A™»Đç'rƀ7ž(ÓÍP=Ö@0€êw xiD z|à|Űàőž|™ž˜ŒŸtśΏćàâGŒuő#Ză;Ô«âȎŒ:’{|{gł‡șĄaICƒ”Ă°dyORÏò%†Űń%-˒@-Khž†ćàQË°«e™ ž]H‡}’cY:=ŽH»žĄàZäÉt˜AhE•Î>“ô\Ò3…qô8§«„»±J•à_ôçÂQ /z$OšôŒ‘„fŹ"ƒ„ECæ΅+đJϊdEĘËȘÔ­KbQÙ&ŐÁŠëBqdË.àryƒƒČ˜ŽG|.2y]źtîA߀›w{&=n òáÏëäĘp»'Gó9;dÄí&€Hƒș7áŽGăÁdS7Ä3ćòžHȘŠ­ăjĘZ)j°Z!ź„©)Pÿ­Ì0#W)€#q(ÀÒoŸYȘŠ±1“XӂV%°Ùd ŒŽĂŠ”‚<óă(s#”èkÁKDéŐȘ.Aöæ€ńwwĂ𙊹"„żßáž_îs–öö.ÍQűŽŽ꟏ŒWży>FJ­Vk0›RYź ?[§ËŽ“œ țröH^Őìp4K—ß"ÇÖ±Hdl«Ł(æ#%c ’ˆ@’M%c6‡É䰍ELXjŐÖ4›)ÆlČ„m] Ù–‚IŠ­™œűT+rjî™SÉ@Ks`φ{‡” žčŽŸ?őaeÍK›+ìŒyÜ<>-|?ÈRUU•hŚÁzș– Ǟ€H7??ź« ƒ-+Ë€$ĄÈnX‡‚Jćú7ă‰ĆŁäNă‘&ĆĂFâaƒxä”J‘y8”żȚ «ĂŁKŹŸ†P˜{Š V; ĄĐÙ! ĘűüŒź|ž}x9eeÂ駁°ÛÁȚ­ÿH„ΏŚÈęc—.ożù‘<†›tÉ@Ęæ7»deVlŸ,?nűè脍7eÇśol‚d`MÓć7± ‰lÜ~sHšiűh|hË_g”4ÜäsŁü”’ßxCá7lْ,śïWo©“g/myQŽ[>Qű(V ôÉ|țzIpAɔûŚ=JÿšoD^_òC™ŠżțŐ[o1òüoœ•ù>|œD,óÆ'èÜ^OŠ‹zœ:žsÏó—źÆ ûÜ~ŽŚ€npŻc–žœŰ`Ś&űèżv€në‚Zü(Ÿ@Ąjôj„2…<Ń|A?ó2ÖúęÄß8˜ó`„«™$©ŚúŽZć|űqWŚÇâĘE†ö¶üüóXüÎÈR Óž#]]G čí zxϞĂ2ûÔă­ŚŻ·>ŽzŠ€Çüćúő_~D=.߃bà{P.ÊÀŐ«ż\Œxńû‹\lœz”ő"è«G y…ôÙW$pț<w €ű\ç;û­Ÿ ùőùq PÌP«DđíùWváóęžőÂí8š-Û@ńhÙ¶ëRRÖŰVóëÖ­[č6QŁ_ÇČë`)Ë8̂ Ó €mè]nű @GGÛ6;Ś­t ßàü7<žŽ¶Žq7:üĂ?čÛ۶ȭŁ­mŰӆ ±tŹ\čČÍăiƒ€Ă‚Íî\ òžï$mD҆v6ąG„ ?zzżž›œsgvîĘÜŻöoÉ>żlŻ™]X˜ í^óS››œÎŠÍNÀoŒ€Úìì"Ÿ_BÔÿêÜ\|ÀöÙ&Áł—ąŃ.»œ6_ÏFĂ Ż ÀébĘàC@ àCŃ(‚Œ .8/-Tc„†.çB 8đáWU€cŻ†ąápŻ—U˜k…s©C@ÂKvÔêÆì8Șl! é~ëßUUŃ-Àdą‘Ű«šM ±JMđŽ#błĄwÀ.ÄełB~kZGߎn{+RSMV3j~=Skź(#ŸÓ!,à!M métdìR,ɛAŠˆù'ŠKO“;C:ë‚Mő/zÒ»=žîtϋéæ=k=ž”~~ž›U!Çù‡‡ęWš"% r{”ÚœÜÁBČ\ÈkŒ\.Ăär^đńÍ+o€ŹŒŒƒÜÚÜÜ”ÜÁŒŒ,Ri.Żń;æŚđčÂ4„ćȚƒ<Đà”dćrZ-Ïk”\.”@UjUZż6•ââ ~%9’Ćśëÿśù#5xËüqíÚj ”šêŻ”GځP`ü€j—r˜;êëçë óGGGrțĐí”Íęrőőő3ęŸőÓŽț’ Šè„ —‚^ĐÙ~šJ RéÙłgûúhÊĐöD1J€¶ß§ìe?(ûŃ'6Û·,êGŸRÌbń^X–H)ăeAš Àć"€ŠŒwc)Œs”RVB}bșXɋ€Čță~(ŐO%¶/Ÿ>hûâùÛ_Ž}ńüĐöe€¶/ŸN€fûˆú„ö©€öi€öi€öi€æh$@û#”Oû#”ûû{ÂÀĀ4]à[ÿÌ:'&èüp;pâÄ:HźPprB˜źœy€‘€ ǏO\čr’û#ÂôAÚÉŠ·$ĂĐÉ3ٍ ĄG€†€ĄG ‰`ÿ(P«ł„ÙȘ;čÿH^źP2óÄwŸÊôĘ‹ÿۀ'ŽIoYöŰ1pì{ìœ\p:ï/‚Óߝ[<-Wï©/ڃœČ:zO”·Ÿê•ù,xŸŠê‡W x °Tw}ƒrpwô`»,OŠ2yI2ć°$5[,–€$Ű4'YàÙĆ"{ Ű-Òłłe=ŸZZțXZZ, ìì’oŽ”¶Ž”Z„˖”À“d©P‚ lg±~ă ôi0‰ÁIENDźB`‚application/library/img/volume_icon_network.png000064400000001550147577724760016120 0ustar00‰PNG  IHDRóÿasBIT|dˆ pHYszz2čÈütEXtSoftwarewww.inkscape.org›î<ćIDAT8}’KHTQÇÿçÜsœÎ‹Ê5Ó1LgLƍ-j1FXF/œEąô0saJOŠPÈ '-"„ME«ZŐb(±\ŰB&*§H)(Đ$†čdNóĐ{ϜÓÂÆpŠț«s~ߏï;‚Œœì:ÚVZ¶ȚïÈÉÉMÄFèÍ»±o‘đ…@ ÈdÿJOśÙŸ/_>'„”rvvVöőʓăăe0’<6;;ÏŒÎìa鹣ępCsóțĆĆîì'OÁ9ĂîĘ  ”`ùòDŁq5/Żž&S@ÓĆÚąą}ȚŠ ŽțțûÈÏ/‚Ś»É€‰Hä‚Áq$“€Ș*ôÒĆów›šö.46nËs:sÊ ČČO !˜žŽàÓ§ièșv»ÆÒĘÓÛșuËöÁ]»|«€¶ŽŽŹÙÙĐűŒŁëŰFH„R€ÍŠ!7wìv;l6 YY*(Ą8ŰÚæ)+­:ŹŒÔ}éPۑ B¶"…X,‰x| iY`Lc ùępL…ÊÔ`Ćî’Útó‚@ÂëuCÀ4“P EYĐ?¶¶í•Rœ€”Pç|ń‚s]·AŚł!„„”(  čČrĘSQŃNĂ‘đł©©I$ ˜Š Młar2ØçÀÂÜ##/àr­„eY°, ńxŒ2‡2űl(°Î]ŽĂétæ;N(,̇B†ńàśïDMMőąàĂű˜…B—Iz€sgNù].WÓÜ<_KXU>ÿŠeڜƒôߌ-·ŐoP(•iög4:ÿujêÎŐë7žf~Ź%yxóÊśë§[ŁÿcHæÁ­[}/}ŸșZÂM”“; ˜‡€dÙz>vâÄńê |>ł,ËVPPĐ«ëz"čVŹ€so7ŸO1&fff^†qVUŐäđđ0_"šŻŻ·1»”„1K„㔚TáœSȘSKćLpŐ„Hźió±@`4ż|"›cĆ,IENDźB`‚application/library/img/tui-icon-b.svg000064400000046440147577724760014020 0ustar00 application/library/img/volume_icon_dropbox.png000064400000000635147577724760016107 0ustar00‰PNG  IHDRóÿadIDATxڍS%\fAœ3‹gíŹ›őzš€„“h˜=ÁéFÆ]"ŻĐ 7{»ž›ÍïîçłŸ3łó~ˆ9črWÿ‡­'a{Ùđì‘?9ÿŽn„ŁNź”Zß—ÆčÁÙșI<ˋćŠ2†Í“ŠÄ Njƒ­6MŁÚ…»X†ŒéÒ8—=ó€-z È[űG§v"_ż†dÜčf˜æO0àÎœ„łX œÜ@PsuŹùW0ç}–SćÒtŸŹ}ÁDáDŁFŰŸœ*¶Ú6ïOđjÊa­>›Ìčghè/,/ŠéóAȚBń Mnž‡DCP<ęˆ)ŐÜ<ŸIê7äÍż熙ZńűÁRżäYX^*Í9_çžBÓïóœ!ŠțA0PĐITi4^&r.ŸČ„żS3ê_űAńÀčŃŻ‰ÙZü‰(>čÍŽLóëÔk<8=ÜßèśaŃÔg±čKϧžXaÓÒ)«IENDźB`‚application/library/img/volume_icon_sql.png000064400000001074147577724760015227 0ustar00‰PNG  IHDRóÿaIDATxڍ’ŹAŻ¶ÍžˆTKqm)źmÛ¶mÛx¶m_ÒgÛÓÛßÒ—Ì ł”F©bîÜčS–;ÈTí<`ÚŽiËłłłIII!::šđđœœ|űúՋżƒńóK &&‹ôô ”±«u‚aC‡ž*ì±háR“H“‹íZ·äí›7ÔŚŚcXčškÛț €Ê…Æ‚†MšŠlwìű ˆryyčĆ\àKŠœg,hß«g-" 0QÎÍÍ”˜ îÜčömÛ~(‚Ą:Aż‘Ó‘e™'Ż?#Ê"7Ź‹Č@”Ăc“IMÏ5ȚÁđ9›\GÎ߆)IIIFőăJ‚üO+0ÆôôtBCCyűò.>âÔ”G\đ„Żßđńï<ƒ‚ˆ—e#ACÉBôéÒZ9°‡ÔŁc ‰őj€:©^ƒaî`ĐÚ”kżˆ‹șuë.\`ïȚœìÜ蓃röìY˗š-L™2Ćì'țuőàʏŸ|rțÍ_ücC‰KOFk~ăǏ_Šœ'''~ęúĆă—/čòű·ß>á”Ó'œƒĘ‰”c˜0a ł;ÈËËk,Y îA…ÛÈpD …ź={öÜb~wȚțüÊ{—oü pÆ'֏èôÄX1GÌmŹTśíÛśp]]q’ aÆ"G”j ö?ç|䊃˫7IENDźB`‚application/library/img/quicklook-bg.png000064400000000107147577724760014414 0ustar00‰PNG  IHDR'fînIDATxÚc`8‡$09íxLÙIENDźB`‚application/library/img/volume_icon_zip.png000064400000000733147577724760015233 0ustar00‰PNG  IHDR(-SœPLTEGpLɆŸ̈ș|°uƄ̈‹\”y«r™fŁl•ciF»}`@www»»»ùäöߘüé€òŚțì§đԋîЇûçĄïυ™™™ÿòźô۔ë͂éÊíˁèÇ|ôÚ’ĘŸzęî©ÿńŹÿő±Ç„`śá›őÏvîîîĘĘĘÌÌÌÏ­i±Kœ›WÌȘfęțțóűű.¶ôÛééAÉțæđđÊAtRNS„Ža“œ†żŠ—  zš,ŽœfŠ3QŁÁ<Ò”IDAT€±N…0†żó·Pì ›7ßÿqœÜÜáŠzn B„ÔŚœâçŽïłAțșTŻußj­^AĐyk8­5ï BX:.§ƒ%@Ú  (Í,O˜YW ‚Ț6ț·›ŰČ^ÈźS^œȚùűn‚~–NOšł[àX͒[Ă" žŐ'ÊC ÉÌ&[Ì0K‚€ĆïÒ ăÈK`(áÊûO’Ę:íÀžäv<QOH- w‡IENDźB`‚application/library/img/crop.gif000064400000000503147577724760012751 0ustar00GIF89ađȘȘȘ!ÿ NETSCAPE2.0!ù , „§kÍTLŃYć,!ù , Ą˜jç^[ĐĄÈì„”!ù ,L€`—›êĐbĐŽXi}Ą!ù ,Œ`‘zčÚbhÂX±{š!ù , Œ §kÍTLŃYć,!ù ,D ˜jç^[ĐĄÈì„”!ù ,‚a—›êĐbĐŽXi} !ù ,„ƒazčÚbhÂX±{š;application/library/img/volume_icon_sql.svg000064400000022073147577724760015244 0ustar00application/library/img/arrows-active.png000064400000000230147577724760014610 0ustar00‰PNG  IHDR"üH‘L_IDATxÚćÓ0ŃöAź’+E.ЛOĄ‹ąPŐű6œ šP«] îÊ s‚ÏÉŁòùCÇ]à3 ł€]  9S@MòçńÖźÿš·qŠÎMŸrO;ŽlÔ9yIENDźB`‚application/library/img/volume_icon_googledrive.svg000064400000000337147577724760016752 0ustar00application/library/img/tui-icon-d.svg000064400000046440147577724760014022 0ustar00 application/library/img/progress.gif000064400000001233147577724760013653 0ustar00GIF89aőpÊő(a8–æTSŹśNŹà tç QÂhȚ7•ç3Žè*‚ègĂö3î?™æ5”è3ŒîDžűhȚ`«/ˆÚ…Ëîp°ç;– H©‰ÀínĂű0‰í_„âgœśf«äZ±ű>—öjĆôbșìfÂï)yÜpÊű4Žè‚ŁËjΏŻÎnĐw”ż}Íű]È.†ëÿÿÿ!ÿ NETSCAPE2.0!ù,[ÀÓj%$O©€R)p4NUȘZ€ÈCÀĘ> %ŹP ŠaXߝDzA_„ażŚÛé †‡†ƒ‚Ž-(*‘*”’Ž—šœž›ĄA!ù,P`&VgžŠ'ź@[ ˆâ $8CRtd‡ąÿ»ÀBö˜ú‘vÇÙ?îû0òçNżFvIENDźB`‚application/library/img/quicklook-icons.png000064400000003104147577724760015137 0ustar00‰PNG  IHDR „—7 IDATxÚÔÖ%ЕQ†Ń»$hiHÄ"N†.ЍJ#iDCș} CÆĘá—ë~òáÎ>è:ęiƒ‘gźă&‘e”DŽź“8ŹM2`Ÿ“ Xë<逭8ȘO2`±ÓŸlÚ@ß]]śŽ4Ő͚1҉·ŹwŃϛDĆ.ÏeŒânjć Ă gćőĂ9%za•šŒN5ÙČZQqHGF3ȚČĆ?ŻïYă‚/»eڔ)m­ŚŻ©©Ą§k*>dS@ɏ€;=I*Öč”T,qŠ(đńÄ"Ë~ły6žL”°J-ʘÿ/ŁŒ‰ăæFšY]àșeÚ—à€ùeÎ[[à­eúŽÆÇtŒÌ˜UŚÔrOWŚ}ÓŸìŽĆńž‰ŸwŃúxËHÆs»ąb(gìXèË;kEè)q.täŐŹ -Y'^O]SFÇĄššûywl‰·Léêihjjœ~mSŠL»ćË.X“ߧ,ȏiàHÉŸŰYr.YWr‘ÎX?ÏûÙä€Yû# —mˆ<5«țƒŸ±ìÖĄnÂP…a{LôŰÂ4†’Ô 0HD_ ËTÔ·!'—…–lńg”œ«ÿOĘ^PžQ_‚Ȑ9Ì9Đk9H‚Ip ‰wŐçkœŃ0Âùâ{‰–<‰ |m’8GŽwP«†çŻń5juĐżós|#|;6ÊÏÌùȀV%煍JÎ €őA8ÇÀR&âÀ‰8‘'æk à9|m@òöêt ï"[ƒ>!» ćG97ńńCÔș2 SQ”&œT‚žçȆ î9V2'N$À‰81ŰjÈsԑcà5ŸR=;ŚjWQ@y&ŐZЁœ™s ßN€`@üŽ@`Òœo” âÈçÏŸŽ<‰=|m’žDŽwšś‡àÖź=ÀJpqŻmÛ¶7 k7ȘՖąJQmÛ¶Ő¶ùxȚœęőítČ5bőûn5ÿg9śïóéÌ`–èœÍœ”iMÿ߄§ZæÊęčj!˛oj=[ÒŠ7ę?‰ÎhÚú[Ù-izĐ7^ńČGkk+™œö-xÿj˜ÎLSë™,ćÒè-B ÀšOf 4ÿ`}șˆziÇ{ •Ž–Ò„–Q„.žÙ>–1mxòÖWòžŸ04nšgš4P© uƒkUÓ„á?4 ßĆ@OW„PÄìÇ€ĐSĆŒÂČ”ŃF4Č=Ÿ+ ”2úŽČQPè›LZ ?8Ț5ܙˆ~+ßë ăèè)AúLœçlž |ïFOŻZŚÁȚ û•Q°§-|‰8ÍÜfÌÊ3ŁCĐVêàČPxcZ«üNȚW"š °{Zü?Š őÀAżƒ@…j>7Ł4”8ÎL5[ÿ&>Dß°ˆ îPSâèV"€JŻ4}[ą +TÍ©áv{·Ą«g\=ŒY;:šSËiJ#‰xahDzaNÛ€"d@Š: ;g„–Ê œĆË sˆGìE*肝ŠùćDuyhìËÂIvŽÏ"»7(á~ĂńƒT0{üû€I•B_©ÌČ962żcxq:t?<è`€/†=ôM€{•š$Țƒm=}EȘ(ŹMò©e5bÌ ÖpRÂۗG‰Ă„Ž2čž·\Mž.YË v„@ƒûÒÓč ]e”|ÖfŠŃ‰„[-œÔ»ŃÖĆ(Òg3Tv6mSÊŠu©ùMkč4#.•M]jc#:șà 3§‚Db[ïÒcAÚ*p)Œ`3 ™ șV©«€vu ł°ú†úZè†W•ïiŃșBrˆÛ†eŒ‰ź"–2­ÇL_&ÁĐE–ÖSŒč*­ìÁsRW”m(ê«Âvˆ{ÏùV7­é€Š&Œú6fQÇ{‰u\+\ÓŚ\eKüĘ}iz3ÆĘi>WûHÁ>ő‰ƒ­h.áńßȚàÌÛíèZ·űÖÇò”3leÿŰy6KŁlźbK-(ÿčiaú™Qs2Ă_;țÿűMßÛ5őêIENDźB`‚application/library/img/icons-big.svg000064400000063532147577724760013725 0ustar00application/library/img/volume_icon_network.svg000064400000031444147577724760016140 0ustar00application/library/img/arrows-normal.png000064400000000251147577724760014630 0ustar00‰PNG  IHDR"üH‘LpIDATxÚćÓ!ÄńĘ"t•ź”ô|·ïcŚ ë°ÖN€ù!elÇW/Fńđ@â1"-#Őš V~ÙȚŸhŐk=4ÖZö ô""€D€ÉȏǦŒëÜlŁ—ùŚoÀ6D Țä‘mœ€íSDA LIENDźB`‚application/library/img/resize.png000064400000000123147577724760013324 0ustar00‰PNG  IHDR eÉt”IDATxc ̛3ïÿ̙3`ôˆ‘€tfVéA]KpIENDźB`‚application/library/img/volume_icon_box.svg000064400000001256147577724760015235 0ustar00application/library/img/volume_icon_googledrive.png000064400000001227147577724760016736 0ustar00‰PNG  IHDRóÿa^IDATxÚ­ŽÌQ…ÏŐ>Ô¶mÛ¶­”m”ł¶Ő¶mûîLwkG=ÙoŻżÿQ&G`ÚÆ&GU»žpžúőÄŁ”ź'«íRëh‡ú™ű%żÄéRaìâŚi«?‹:E€rŠJe\êł†ûOiY*ŸÎ’fTH1ęqZÒ@(Rû;[ÊQSûÌśWŻU©yZ«€q vÆƉx?y©Ÿ M`DŻ|óț( šĘH¶JIžhŸS„Č**€†'BÁï7m7Î)Ûè'*šĆ˜Șù)-… €”PŽÁ­7vćăW‘Ì3»`ˆV”3.jX%œù&pzV$€(æ=üŒpêu̶óS&,ș<ĆZzMւˆ@L`Šbs‡äO ëÎ"rŠŒŻUxDŒàœÇŽƒÏ'ŒyŸ„žűÂá(˜…r9“‡t͖E«6„fs"Y‚`JęÀœ žVĄT„|đ›Ó©N§ÍÿÀ čÉF!8Ł)UÛVY§k~sŽSú@BÀ N{łiîysŸ”Ì㠀ÌžÁG-BáBĄąQBò«‹ç=~NÖ,ĐÙÀ@đuqNęȘątRf‚vPJÁƒ°ÄˆșŰ(ÁZ{țٞ>}$ȇï¶DLaÍ)ÔŸ$ ˆá"À.ô Àûbol €>ç‘(š„PÚW KŠ••BJˆo•#–u‰DĘ11f5€….ЈIŸ~¶Ÿ‘2sÓ1ŒRŠo­{sÀ±'òZGìĘęëbolÄÉGłÙJ\™cöIENDźB`‚application/library/img/volume_icon_ftp.svg000064400000026101147577724760015232 0ustar00application/library/img/trashmesh.png000064400000000244147577724760014025 0ustar00‰PNG  IHDRÄRWÓbKGDÿÿÿ œ§“ pHYs  šœDIDATŚuÍK €0CуE?(‹őĄwrIZŹHÈUođf)ĄśÍŰ`ÿ‘9áŒ7[ sG\Nèê› ë”łű8Ç?IENDźB`‚application/library/img/tui-icon-c.svg000064400000046440147577724760014021 0ustar00 application/library/img/spinner-mini.gif000064400000002632147577724760014423 0ustar00GIF89aóXXXzzzŸŸŸœœœ666àààhhhđđ𩩩FFF$$$ŹŹŹÿÿÿ!ÿ NETSCAPE2.0!ù ,@pđɗ(uJ”:ŃS"Š‹Ą$†GÖJÇń…Ї"SÚa0 ‡Ą” %…ą$R ÊÄA œd„ÏCÀœ-ÐŚ“)LÂXwVrP5Ò g„*"A`ęš :1 o!Y3 !ù ,]đÉù’‰Î%™CŒ@–9NŠ"BkJfžPE!ù ,kĐÉé„ Ű„&UÁ‘%§(ŽÂˆÙç1 ”Đˆ aEĆ,’„@!HL€ŁÀ’8”Ä‚`ÔźU X(źŰ Á ą˜C€A6O 0x0&ȘCÒ1ÈfJPh #ilŽ~!ù ,[đÉùÎĄX IÏÜŐxÄJJ2>KƒYÉӁHË-t† Lâ‚Až&‰$š@“ÊLcQ(N@#ŠĘ<1PÁx$n…ÓÀ x\y ÄšHŒ; Ç1(„)!ù ,VĐÉ#…MêZŻ@Ûæ]Èć$§vPN8 HɁ†AńnśŠ˜Ą  @Ì5€ìH+kŹñÛ Ćb:[ű ƒà˜…WÊ Q86 —ÁÚÁȘ4€c!ù ,]đÉùRąXȚwŽv\G„Tâu‰âa›e €L xŽ/ć ( '‡€Čöa0źáÂ`èM…Æa(x„bń 0ÂÓV(ÔzÁ #Ń~>Ç· !ç6J9!ù ,ZĐÉéR’‡ji„ŰZśm™v”ÄN"\TI©2ÜŰìBaü àJœ™„°rŒ& D)aÔŒEĂĄ8ICF,ƒ-LSp˜öF`u,‚5ćFĄE!ù ,XđÉI_ȘxŠSÇÇE†R‰‰đ €ńM‡ZFӉŁgàÇ`ÈűŸDc±U’—Dp> âà# $‚D 7ˆ–7`ą&HŽ€&ŠŒČ!ù ,ZđI1ŽŒű Ăȗ€Ń|Rś†áÉi㕰áY+)ĆČ(žÙá`čĄ„%xpČÀcài( N "0lN°Ód PH–‡N]@<̏F`}qż„/)ĂD;application/library/img/volume_icon_trash.svg000064400000016226147577724760015571 0ustar00application/library/img/volume_icon_box.png000064400000001155147577724760015220 0ustar00‰PNG  IHDRóÿa4IDATxb` eËY?W2ÓR°hîÆő źĘÜ b9ŠÙ·è&fI‚ ïO8Û¶mÛ¶mÛ¶ńlÛ¶mÛÆÚ;ySŽ{ȘˆœVÖ7ÍPD4AąĐ€B©Ń!­BˆW^yXò.‹Ț†wĐžțèsÙÍ[@ŽÿC«Ó‘X;¶žcąÿu0ĘđĆš{ \@ÇqĐđIj­ç>ŰáÄkhű:őSD6áĄK6Œ#Ëđ5 ;~Lj Pk˜V]ÿ‹5ŚőX›ÀE`v@ȘT3-čòËźêQ"Êë…(oˆf•F •––ȁ‚DrÓŒ 0ÿąv=łćK}Șăè;'äV4¶ńŒš„JŠé§cÆÙżXuÛŸbńÄ,łÎéaóKԋdÌŚ"S2ÄrŠ Çbú”Ö ĄTkiê°ËæûĂ92§—j…2Š‘‡~`ă;š"<@(WĄ°Š#ÿďÄ6^šj‘0M:„‡QGț €VˆȚD}ú>©ŒÿŒâ éÏÌËeMbŠś1è»ë+Šœ1Â}Óp\ű鏁û~bŃ5 :%4JäÌËĆ ą6ČÌÀÜKfè”ăúîțŽĘŻ\‘]ÙDljêV)ó1@aœ°hêr•ÍMüŽe* _ćÒcòœe—ŠŒÚ–6Șäi)QÊ«‘‡Ô”Čń›¶)èsĆÍG 8oĘœśe· źžížű7éÂÍâ@‹w2€­âô‡ŸpeđIENDźB`‚application/library/img/logo.png000064400000011435147577724760012773 0ustar00‰PNG  IHDRd`Ü­'p4PLTEGpL#)"&##'!'"*'!"'''%"("!'"!$ " !! ## # %" !!" $"## !&!  %!#  !ÿÿÿ)"îîíççæêêéćććșÓëííìììëïïïèèèđđđ " óóò+$ ńòń"#%¶ÍášĆßËÚä ŽÍáÈÙ搷ÜȘÆàśśśÄÖă$[WU!őőőAHP“čȚtsr'')țțț»șșÎȚé«Èă±ÊàÀÚòÖÖՖ»Ț& 58;^\[ŸžŠÄàúúúÛÛÚčŃ䜟ßURQ­ÉàjhhĆĆĆąÂßÁÀÀÌÌË=DLMWa+,.áááB?=/03ĐĐÏÉÈǞ°ÀŠˆ‡–œăš˜—©š§/)%ČȱHFE5/+Áăpnm842ÄŰ蓒’HPW„ƒ‚>85€ŁąKLN}|6=C'!`t†ąÄ䏎ŸÒâzxxOJGwƒœ»ŚȚȚʔŠ·šżÓÀŐæ··¶°Ìædbah~“ŒĄ”șÒ篟­UfvœÏ܂Ÿș†ŠĆz˜”„łœ} Ž°Ò‰˜€§čÈŸœœMZgW`gŸŚïŽÉÙp‹Šlv€łÂÌ~Š”akrs}‡@JT•ŹÂ–ąŹmz‡er~ÉĐŐ!»„?§&tRNSžófw óUqÒ;Š›űȚȀK)0ń#’ÁèA°_éĘű‰k0bËçrIDAThȚ͚WÛÇ5Æ»Æc‹š "f(ŽäÚŠK$r%ˆĘ`ìšŰb‹“›ȚÛM[ïËœsf@g“gȚ»kœWŒËócÿś9ûìłAAG¶àô“AÿŽ…d ùÇ!g€ÇBNGFFŠÄÿƒìüc'ŽKçMù§ț7㝈M9đìt”FzŸ„„œű/§“°èpÿ‡ç0 Òł:ć}’lÊ=›ú»ŒŹDD…%û=<™AC:xźtïGÉ©öŒæe§„ęV€ÓÄbł>ÍOùÔ„‚ôÊíÙô“XiGeςKudÌÉdLŻÿôŃŹ fOąPÌ ©tDSË%&oV'ŚUòw—MGŐ,,# ß^Ȑ3Ź_$ù ­“čđ“ÇgLÙtrč\Òê‰>ą'!Án~ÚPRRòOÜ[za§cąń< ÈËŁžQ TÊ!du*îhŒSŃXń„Qò±KLęqxVhvb‚!HŃ qJórƒ“s— ä"`șzSä‘)™Hń›GŁ€áž–—ˆ`LVm€Œw`É>Ú2X ąÊŸˆ#%›s bه*šQRR5!KŒFh4„u‹†ˆt•:q“vD.šÎđŠÍqQżDħc*äSɞ5<-ï#±aŐâ…À±%:Š!’G“}RkLżąœÈÆd]ߌn44€ ï3|«źzČg:«‚Î@grÆvk”QżÊ$pZ•——”È·•— ć%:É}ˆr—"7ć‚À‡„+ì=­<ÏO)Y‰XńÌGÈšƒ–)»°á›XìcèĘ!"y»]ŹYâëDôg”3iÔŽ*/Ż*)oű8AufȘńóž`„‡CËŐQ)2L€C€yCVčŒ‘Łžùš“‡e8­JÊ«ȘÊ«žšq8jń ìŁÙ'±IAÎIĘ\NÎÀÈu›özMÖGĂÉ$bçr QRț Łő)zZRł e䘐‚„JMCSŐłĂ6‰Žá„ç…Š kYšńÙțčĄ ZyŐ߀LWœ„‚-îœvd‰ă…äϛ4 혧^ÈÀű^éŽÉ‡%ŹD±áf9Eù@€P“Ë +Ż*Ù„§ Żö ”™û0WRÈ6]œ4ű°àdV‚Źó€|4€!ő]œœÊ (Ÿ +€KΆÓh·z$\ŠIŒźÜŸ€˜dŹű3Të%Qi8\·Á'UU=šPƒG}œü|ĆhœœÁń·"b~–R‚òpeq§őç„ìf‘!­ƒł•țüÒq"Ÿm ęù‚ÏTč_Ț^Œ}łHärÖéú JzĂÓÛU·?#˜X©ìàűA4Š^!R?ë[##‰AqoĂ|EUĐëC=ńhŁêĘ WŒĐąÚ”ˆŰ1Ś§&RJzR`ŸÒ±âżo/n<șB –ùÖ`ń pï›NčvąŐšæbŸĆbÔq,+äYrRcBƒsŽcS™KČ° 1¶ælß `‹0»źWvžâ=ž“€5őĄrżIœC éòìźmŰtüÁÈčő Z0F†ŸxŽž±ł IJ…ƒÜ„ă·ŚNUoÊ MȚWmí@%yÁrR|àu’äâââ;(ŰŸQ‚œ Œ›?–z@ ćąnDÈžšP'‡"‚„h6gÁ]Pölcqc­HÌìæ퍗fő&3ó_ăĘ‘ Đ/rŸt\ï/DƱ@5L6„š 7ć;K0őÄÍÏ]Fâ8NŠ™yÒ(ńgŽ;ę$Ÿ P_€*” Á„w‹Wßuʘ1‚“Ń5bÙȘ1©tđDl†tš—M‘ û4ìí+>$55Ę[3ÿxpuc c †è•]Kő|H,șŐaGA[6ƘąŐ¶ex'ŐW›’˜A9u6: ĂÄ^Ó«^l\ŰűÀŒD&W9ûfôà€rÆÈ x MïM…BI'?“Y…‡Ä% $ź/Ú3±ùćU–`„ËÉaZ]ĘnIÌŰDBïâĐÂ3Ò탏.Œæ„‡° 2±Čv“aë.<ŰŒ˜é†CWöLO.ő ëà›ž1±ĆĄ€˜š”<(§Ț]yÙŹcGdšX=±Vöà*Ó.{à áƒQ[wgdÍĐK;EŸ PƒrA@èTf èź`öÚHÓ#_~pĄì€]đ Š7ô€1Q‡ČÔęæûʇ†f|ÌΰŒt Ą# -tŸœ—vˆ(WžŽèxö¶‹={PĐźź `Êq0"ŠÙ°Čț¶©©éüúq©Î3Ąœ„źȘ”Ÿ-l@Bë7žwš±ëÆbä§C@Á »f‡Łł4ÏĘlz{ÚÛŠCé,Œ±ˆł}ä“ _êwpiÈ°†qtŽIÀߔ•]†Vvő2Ëź­żžQ–7戔ÔęČéŒÏšvÄ8ˆKƒ `š ;†æœ”…«› JaŻ&78=42æ4<@NJ»^FÙćČČ”Ï—˜Öم+•fPšÁnoV>ÛgʏRK+‡łI”"O(Žhö‚ÂćŹÖn-O ™‰ĄA!iűځȱȔm„Á>mĂG€ü›„se Æù·ë=`wwá3BOȚçÓKSĄàG äÛ:ê§'‡2‚RęÚ}ÈžżŁ’&‡ë™ÖÛĘÊ1ê Pk¶ù;Ó@čŃ< Îî¶ dÚ+…b@ś\‘Î6«7Ż_ŸvíÚćČŚĆöąŠÍ &ßRú‚ iúȚL=' ="ÚőMŻ«œÇ0@É΋qíòúœr+ƒSO(À:Žk~OÍ”àŚąšA4ŹńAD ™äÚ”Æő9Â^ÒNÀšźźZčăYižżȚ"Š:,HO2Tsëríț›br\~ÒAđŚ6ŻűĆäsóđpï2BÈàž\ÓLˆ@cr)úzŸ‚ì`$îrÔ2mia“ÏïÂí`źN7O°—ÍD/‡Ăsă#Ępv·űfŚ°W.pț‚ókp(8èTBńÊę‹Đî?3ûÏáRÂíp“» $+(Mϔpf;qÂ!€ŸŰáőd>ß) Ęօ%j„Hă‚â“TsŚ)J㌯o°ìR—ÇÁŠ€æpçć·Œeâ.3˜3©TˆPTh›2yWü”MˆthòrąƒăÀšƒ]2|›vćbăęF–]üăȚł PÉ ^æÒŚe>_šÖ;K«#è f0Šì­Ćj”!…›šă'öòpxŽŰ°sÿ‹ìÆûßaùE ƒĘk(œôő|SÈĂvÌ„.ž/(Z`HĄe/î}"È@Ey©ìšŃü”ń€ÖžCU_€ …ËÒÜ,ŸńlíëÚÊŒyÆw-‰ŽsÁÜ%_ÜMŻžDàÉe”ă0”y'0ćz'UGŠ G%ÜQ–Šš› ™ČčÙœ ï…32ćtöŽÒ1Ń,wS ^ś{g ÆHĂöœÆÆ?ę­ńŽŻ^Q.A Ç6à˜™ń Â͘#°2f”k„őj/€Ț {†rBY§ìđlLŻžÛțzï:Ócgż¶'<Ƒr˜Cő»Æ­”.­¶ejX€`đzÆZ€#”ƒ=ŒWù»E Çl ©­ “J+}Ž}(˜G4ó}|žE=ygB3rŽŁ{Äé@Œă˜úF[[%–L©Ô3Äz[€ÙÉêHÌ+ÀDökPs–nHDGÄl §©ÜÏo”ʂ3KfŸw“^±ÚڞÓG_mtfoE;5Ìò…Ś;–äÍżń©aIˆê=`@±Èh_éi±Àł‡Ț‰/X]"“iÇß7ÔÓrü§]"ĐYyÄșòĆŚÜÒÁ&DńÀx‚ű]ùț–!ż`ïêœJüYÛ¶<ž·]i{ Oq — 2-8žš;+ÚÚ*ŒhR)Ë?΀̷ŒM0<á †ïÂn—{rë €ĐÛaŸ±Ś.bg·èć/&FƝËû“bhžÏđ„Ï.hÏzûöź;€ìa1€E€ .ÿ[WÚț‚]ID €êŻÚ ™Ś(4źÉ°äüŹ€ïĐFځDôÛę€â!IE6ž:+ź\©HDŹ‡ő Ń*4ŁËK»6&äï ăHfêaw3˜XŒXSs„»Hć]†Oúkú·©™EMŽÈ%Țìèæń˜ÁvÔvœ/_ %…zË$V?Ź€”šț'nj`őțš+ĘšpŐœû]N‘ŸL(:8Ő2òŠą }ù±ń‡ß—nĐó~Šò*êÎçàćkŠGŐĘ»J’‚ŽûE‚ŚSkŠÍČÉ ĐImlŰÏnțÀžiÊóŚêb뜊Z"ÊixLÁ‘@ëX^ú‰ Ô$ÍÒ*Ż`RûÓëÀĐLí~Ò_ŹŠâę'W*jžÏ©|ś3č‹ÜƒtóśĐ„ê>2uŠ‰y/l€ŒŐ>ć ßæÊöę}tìpuz:ӓ+|˜/ꎌxÉš7ÀòŚią!«›Ö„ćŃWŽKŽ_éö}ć nÁŻŸS°D°š SĄ °ˆ„Ő]=Bžó&ENRÄŸò…gUdíZ6ț,˜Œ_JÍă.1œŹ@>@ˆ…ș=Ha_^TLHPȆÎóšs(ùš7ćÇÁ$›û „ÿ”:!Æ{ŒÁ@~ôŰšŽ ‚Ú?‘»lŁ‚·'ù›& ǐ]ïûߓXș/ °î# «‹Š ÏBśłÎhǁ+<~ûràęüW7Ù*Ăöœ*Ń·ƒžLIĂ`ČWÒł«{™>Ä'őpmƒiDöo|ä=©Çwț1Ńœ3BˆÍŚ»ÎÒx\šÜłżś ˜c°lŠĐ'B1 “  ČcÈWIÇÎk“Žÿț·JB±4żm!<%96;*蜎~wï&ńôÙŹÿêË8gčÂ='͏ù§żO”™™™ôeÿîpœ(Ą?O%IENDźB`‚application/library/jquery/images/ui-bg_glass_75_dadada_1x400.png000064400000000175147577724760020663 0ustar00‰PNG  IHDRŁ‰DDIDATxÚcxúŸúhą[·˜ ˜ó™ƙM˜ł™˜r˜;˜˜Ú™s˜˜Č™À⿙Ëű™d˜ąQ4Š`Cƒ«m©čNIENDźB`‚application/library/jquery/images/ui-bg_glass_55_fbf9ee_1x400.png000064400000000147147577724760020622 0ustar00‰PNG  IHDRà:Œ.IDATxcüóû<ŠGń(țÿï###’#*͈à3ąȘîxbY@ Eî0IENDźB`‚application/library/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png000064400000000171147577724760020461 0ustar00‰PNG  IHDRŁ‰D@IDAT8Ëcz—ÇÄÀ0ŠF•Ń &F&†ULŒ{™/01~ebüÆÄÈÁÄÈ fčAâ …L ÂŁ!6ŠˆA‚D%`îIENDźB`‚application/library/jquery/images/ui-icons_888888_256x240.png000064400000007257147577724760017471 0ustar00‰PNG  IHDRđŰIJùPLTEˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆ#b|ÆZtRNSÿ3Pż‚™/"Uq@f`2Ì !<BHK Z#'1S,…4‡€ĂjÈÏÆ8EŒžŸ|«”„ŒȘš­Č)ęžQ$ï ąb”J ŻmߜGc?o‘hČ#•- öIDATxÚìÚvĂ8 „aâÓęÏŒœ1ó„È©Šÿ«Ò&0€șŚ0 w ÔÿŒ7w@œ»ĆVTÔŹŸq‚- &ˆj±©Ńb ù[0ő}+Ä„9ƒ©fzÁ‘ò)dęm ^š&»ùő„Š?Șk0§g†anËቼĂÈçčÜä}ę«ušïLlSÜŽőàĘ^Ęu,Ûÿ±±ÿN2ûóĘaę!úŻhܧ{éÁŠŽíél3À_ǀ=ĘÙçèr/tÛvŹ±áĆ8êÇŹ€Œ›A§+äÿ-–Z?ćӛɎćÈs@Æçńÿ«pțț⍩»Vü˜û€ë8ÖeÊz"úț‡a†áŚöÎC»m#ˆąw7cÈA…J„3MJïœ1œśúÿ?ąÆ9XÌń‚fÂж„«z‰:ï @ * ê¶čŻ8ć>툗êá~”…kĐWbô“ŁYŠ~UP©M úŐï{òîĆžŸÂ-`%±_Ś%X Pú«$&d/f›M§^ˆȚ;+t{“ìuQQTEöß f]1`r«-Ú Ôu.pŒ;$ Pœë 4=E°rë2P\€@qpđiłÙL( ŒäŰëH8,‘Òî`7đĂ3r@IòCÂÆsDw8l8xpïĄN?ü°p˜uÿ‚`x$ è0 űˆÎ@Ÿ‘í€i‰D9ećR„(™€éêҏ>š3EĄ™ "‘žqIęŚ{$ÀÈœ FŁŃt4BóùJvgÿŹțs$-ă„—xl‘yȚądEéÜżPæț]Ąb\–Ÿw€ÿ@C„ŠÆXjéŻÆç˜óĆ_"óeI„ÆĘÜž»Sdà~!ŰëÄČPçf‹±Žäs¶ĐŠKàü«Ûm_}ęÉ'_…ÌKQ7Đ(@瑉‚6í“Ÿˆ“ $Œ2=%Ęà’e™ #WźŸ^P)M ­?Đ à“3öLő 0†Æ=@9Ęć)€dB€Rs„0™ŽJ”XTU•°d©_Q.€Œ‚”čÜ^șú#éđ{§đŒșî,ÏaÀ˜‡# džőțG^yeúʂ#­às–Òx{űű€ăŽțŽÀjyÎ\æźaáđđ°@瘟ŸòÁé'Ę|–Ù1`±8;QńyYŽ©¶=€ő/ÛˆP%,æ2Xîs”$€€ƒdۋtxê©Ő§kìPÆĆbÁ‚ìipûgcŠÔêȜLȚiZÔĄM€öGòʞžőič‘(Ï`òÀVŻŽ%l]Q€$ű<(À'6ő»—FąÀȚ)ŹŹˆÄH,ŽéuÀĘĂÁśß$ÚìIá“àÇÿääÀÀÀÀv(ËD~űàÇtuű ~’ń3+~ÖUáQ€GWò€ĐöÀŒ™~j9jm‹ł]6@X üÚđëșż}•RSgî…ì…Œ3‹’fnę»l kòW‚|ęPŻ}pÓü·â7óìŁ ;BÀZż&Ÿț±ŒÚêϔ#hB­ÿ&é·Î ł;@͊:€ő·/„dšŐŸ tZ†BRž"łÙŒšŃœÀIę`őoĄv?Ö!`5|ßđœï€ü lúVÆÓĘàœ—Áx9;šșńo[g íŒIÓęnú»zÆÉMĘ.èòÇ7ßüĄ;ž2ÔxĘ%ŒëȚwHlŸkŚ|ęxĘ%à" ÒxB:C=gßèæ7Á|r1Sțö¶†Z]G^©”+ÀEtăÚvóòÜ i6=@WÁŒ«ì6˜d€±ŹTn†4›n­8ŻˆKÛ˜ś+—t đäǀK{€»ă,0\ Đè ț}$8 Wš~Æ⯚ ŁȘżJüß?ŰŰïR–ü-țK%„1>üÏž±ß•^țȘőBÛ°œkLPm!ĆaQž~°òC{žœuș^P`~Ś9ÒGD­š˜ö3LÏMGŹ|Ähtö6)§žNgŠMż;;@ČhDž%ĘòMùèâÆ~w2Š‘Ô0–*™—.€K;VđÂŃ P„ˆșŠ[>șŹT??UžzűśäĘ?D”©ûőíÊóűśŹuśʊ _Ï`ü°Îꃔ›ș_ß.ŒÿțsHęw~_ùśà{sđźÌt[żÛžŒÓ;}&)uŒZùZüĂŃ­Kżÿ.kæśÓóŽÔ7]Âčÿ‰”ú?ÿü“: -`łÿϐq~—~w;,zæ—/šw~ÀúęĐç €[  ‘šLčŸù‚6wŰ șšŸíMÓ·CëœŻ XÓ!=ÎB ÌŚ`ƒšú5żÏRxWfzf”wòÓÍò ó5ìú4æŚ·ïeŚ2~}»ń<»Ÿ”őëۉ ôĂ[ś{Š3Xă—;ú  uPBśV@ś|@HąÏC cÀpžČŒĐœBœ‰›Ś?ÒœÂHŁÿÀˆLęWĄŹ^ïśf0ȏLĘzQŚ/ïnę#_?Ł«ŃV?™úŻ@dëż*gLęWđ:Àêż'ǀ­ÁšęžË9ÿę“Ííh@IENDźB`‚application/library/jquery/images/ui-icons_454545_256x240.png000064400000007257147577724760017444 0ustar00‰PNG  IHDRđŰIJùPLTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEvÜË\ZtRNSÿ3Pż‚™/"Uq@f`2Ì !<BHK Z#'1S,…4‡€ĂjÈÏÆ8EŒžŸ|«”„ŒȘš­Č)ęžQ$ï ąb”J ŻmߜGc?o‘hČ#•- öIDATxÚìÚvĂ8 „aâÓęÏŒœ1ó„È©Šÿ«Ò&0€șŚ0 w ÔÿŒ7w@œ»ĆVTÔŹŸq‚- &ˆj±©Ńb ù[0ő}+Ä„9ƒ©fzÁ‘ò)dęm ^š&»ùő„Š?Șk0§g†anËቼĂÈçčÜä}ę«ušïLlSÜŽőàĘ^Ęu,Ûÿ±±ÿN2ûóĘaę!úŻhܧ{éÁŠŽíél3À_ǀ=ĘÙçèr/tÛvŹ±áĆ8êÇŹ€Œ›A§+äÿ-–Z?ćӛɎćÈs@Æçńÿ«pțț⍩»Vü˜û€ë8ÖeÊz"úț‡a†áŚöÎC»m#ˆąw7cÈA…J„3MJïœ1œśúÿ?ąÆ9XÌń‚fÂж„«z‰:ï @ * ê¶čŻ8ć>툗êá~”…kĐWbô“ŁYŠ~UP©M úŐï{òîĆžŸÂ-`%±_Ś%X Pú«$&d/f›M§^ˆȚ;+t{“ìuQQTEöß f]1`r«-Ú Ôu.pŒ;$ Pœë 4=E°rë2P\€@qpđiłÙL( ŒäŰëH8,‘Òî`7đĂ3r@IòCÂÆsDw8l8xpïĄN?ü°p˜uÿ‚`x$ è0 űˆÎ@Ÿ‘í€i‰D9ećR„(™€éêҏ>š3EĄ™ "‘žqIęŚ{$ÀÈœ FŁŃt4BóùJvgÿŹțs$-ă„—xl‘yȚądEéÜżPæț]Ąb\–Ÿw€ÿ@C„ŠÆXjéŻÆç˜óĆ_"óeI„ÆĘÜž»Sdà~!ŰëÄČPçf‹±Žäs¶ĐŠKàü«Ûm_}ęÉ'_…ÌKQ7Đ(@瑉‚6í“Ÿˆ“ $Œ2=%Ęà’e™ #WźŸ^P)M ­?Đ à“3öLő 0†Æ=@9Ęć)€dB€Rs„0™ŽJ”XTU•°d©_Q.€Œ‚”čÜ^șú#éđ{§đŒșî,ÏaÀ˜‡# džőțG^yeúʂ#­às–Òx{űű€ăŽțŽÀjyÎ\æźaáđđ°@瘟ŸòÁé'Ę|–Ù1`±8;QńyYŽ©¶=€ő/ÛˆP%,æ2Xîs”$€€ƒdۋtxê©Ő§kìPÆĆbÁ‚ìipûgcŠÔêȜLȚiZÔĄM€öGòʞžőič‘(Ï`òÀVŻŽ%l]Q€$ű<(À'6ő»—FąÀȚ)ŹŹˆÄH,ŽéuÀĘĂÁśß$ÚìIá“àÇÿääÀÀÀÀv(ËD~űàÇtuű ~’ń3+~ÖUáQ€GWò€ĐöÀŒ™~j9jm‹ł]6@X üÚđëșż}•RSgî…ì…Œ3‹’fnę»l kòW‚|ęPŻ}pÓü·â7óìŁ ;BÀZż&Ÿț±ŒÚêϔ#hB­ÿ&é·Î ł;@͊:€ő·/„dšŐŸ tZ†BRž"łÙŒšŃœÀIę`őoĄv?Ö!`5|ßđœï€ü lúVÆÓĘàœ—Áx9;šșńo[g íŒIÓęnú»zÆÉMĘ.èòÇ7ßüĄ;ž2ÔxĘ%ŒëȚwHlŸkŚ|ęxĘ%à" ÒxB:C=gßèæ7Á|r1Sțö¶†Z]G^©”+ÀEtăÚvóòÜ i6=@WÁŒ«ì6˜d€±ŹTn†4›n­8ŻˆKÛ˜ś+—t đäǀK{€»ă,0\ Đè ț}$8 Wš~Æ⯚ ŁȘżJüß?ŰŰïR–ü-țK%„1>üÏž±ß•^țȘőBÛ°œkLPm!ĆaQž~°òC{žœuș^P`~Ś9ÒGD­š˜ö3LÏMGŹ|Ähtö6)§žNgŠMż;;@ČhDž%ĘòMùèâÆ~w2Š‘Ô0–*™—.€K;VđÂŃ P„ˆșŠ[>șŹT??UžzűśäĘ?D”©ûőíÊóűśŹuśʊ _Ï`ü°Îꃔ›ș_ß.ŒÿțsHęw~_ùśà{sđźÌt[żÛžŒÓ;}&)uŒZùZüĂŃ­Kżÿ.kæśÓóŽÔ7]Âčÿ‰”ú?ÿü“: -`łÿϐq~—~w;,zæ—/šw~ÀúęĐç €[  ‘šLčŸù‚6wŰ șšŸíMÓ·CëœŻ XÓ!=ÎB ÌŚ`ƒšú5żÏRxWfzf”wòÓÍò ó5ìú4æŚ·ïeŚ2~}»ń<»Ÿ”őëۉ ôĂ[ś{Š3Xă—;ú  uPBśV@ś|@HąÏC cÀpžČŒĐœBœ‰›Ś?ÒœÂHŁÿÀˆLęWĄŹ^ïśf0ȏLĘzQŚ/ïnę#_?Ł«ŃV?™úŻ@dëż*gLęWđ:Àêż'ǀ­ÁšęžË9ÿę“Ííh@IENDźB`‚application/library/jquery/images/ui-icons_222222_256x240.png000064400000007257147577724760017425 0ustar00‰PNG  IHDRđŰIJùPLTE"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""țččSZtRNSÿ3Pż‚™/"Uq@f`2Ì !<BHK Z#'1S,…4‡€ĂjÈÏÆ8EŒžŸ|«”„ŒȘš­Č)ęžQ$ï ąb”J ŻmߜGc?o‘hČ#•- öIDATxÚìÚvĂ8 „aâÓęÏŒœ1ó„È©Šÿ«Ò&0€șŚ0 w ÔÿŒ7w@œ»ĆVTÔŹŸq‚- &ˆj±©Ńb ù[0ő}+Ä„9ƒ©fzÁ‘ò)dęm ^š&»ùő„Š?Șk0§g†anËቼĂÈçčÜä}ę«ušïLlSÜŽőàĘ^Ęu,Ûÿ±±ÿN2ûóĘaę!úŻhܧ{éÁŠŽíél3À_ǀ=ĘÙçèr/tÛvŹ±áĆ8êÇŹ€Œ›A§+äÿ-–Z?ćӛɎćÈs@Æçńÿ«pțț⍩»Vü˜û€ë8ÖeÊz"úț‡a†áŚöÎC»m#ˆąw7cÈA…J„3MJïœ1œśúÿ?ąÆ9XÌń‚fÂж„«z‰:ï @ * ê¶čŻ8ć>툗êá~”…kĐWbô“ŁYŠ~UP©M úŐï{òîĆžŸÂ-`%±_Ś%X Pú«$&d/f›M§^ˆȚ;+t{“ìuQQTEöß f]1`r«-Ú Ôu.pŒ;$ Pœë 4=E°rë2P\€@qpđiłÙL( ŒäŰëH8,‘Òî`7đĂ3r@IòCÂÆsDw8l8xpïĄN?ü°p˜uÿ‚`x$ è0 űˆÎ@Ÿ‘í€i‰D9ećR„(™€éêҏ>š3EĄ™ "‘žqIęŚ{$ÀÈœ FŁŃt4BóùJvgÿŹțs$-ă„—xl‘yȚądEéÜżPæț]Ąb\–Ÿw€ÿ@C„ŠÆXjéŻÆç˜óĆ_"óeI„ÆĘÜž»Sdà~!ŰëÄČPçf‹±Žäs¶ĐŠKàü«Ûm_}ęÉ'_…ÌKQ7Đ(@瑉‚6í“Ÿˆ“ $Œ2=%Ęà’e™ #WźŸ^P)M ­?Đ à“3öLő 0†Æ=@9Ęć)€dB€Rs„0™ŽJ”XTU•°d©_Q.€Œ‚”čÜ^șú#éđ{§đŒșî,ÏaÀ˜‡# džőțG^yeúʂ#­às–Òx{űű€ăŽțŽÀjyÎ\æźaáđđ°@瘟ŸòÁé'Ę|–Ù1`±8;QńyYŽ©¶=€ő/ÛˆP%,æ2Xîs”$€€ƒdۋtxê©Ő§kìPÆĆbÁ‚ìipûgcŠÔêȜLȚiZÔĄM€öGòʞžőič‘(Ï`òÀVŻŽ%l]Q€$ű<(À'6ő»—FąÀȚ)ŹŹˆÄH,ŽéuÀĘĂÁśß$ÚìIá“àÇÿääÀÀÀÀv(ËD~űàÇtuű ~’ń3+~ÖUáQ€GWò€ĐöÀŒ™~j9jm‹ł]6@X üÚđëșż}•RSgî…ì…Œ3‹’fnę»l kòW‚|ęPŻ}pÓü·â7óìŁ ;BÀZż&Ÿț±ŒÚêϔ#hB­ÿ&é·Î ł;@͊:€ő·/„dšŐŸ tZ†BRž"łÙŒšŃœÀIę`őoĄv?Ö!`5|ßđœï€ü lúVÆÓĘàœ—Áx9;šșńo[g íŒIÓęnú»zÆÉMĘ.èòÇ7ßüĄ;ž2ÔxĘ%ŒëȚwHlŸkŚ|ęxĘ%à" ÒxB:C=gßèæ7Á|r1Sțö¶†Z]G^©”+ÀEtăÚvóòÜ i6=@WÁŒ«ì6˜d€±ŹTn†4›n­8ŻˆKÛ˜ś+—t đäǀK{€»ă,0\ Đè ț}$8 Wš~Æ⯚ ŁȘżJüß?ŰŰïR–ü-țK%„1>üÏž±ß•^țȘőBÛ°œkLPm!ĆaQž~°òC{žœuș^P`~Ś9ÒGD­š˜ö3LÏMGŹ|Ähtö6)§žNgŠMż;;@ČhDž%ĘòMùèâÆ~w2Š‘Ô0–*™—.€K;VđÂŃ P„ˆșŠ[>șŹT??UžzűśäĘ?D”©ûőíÊóűśŹuśʊ _Ï`ü°Îꃔ›ș_ß.ŒÿțsHęw~_ùśà{sđźÌt[żÛžŒÓ;}&)uŒZùZüĂŃ­Kżÿ.kæśÓóŽÔ7]Âčÿ‰”ú?ÿü“: -`łÿϐq~—~w;,zæ—/šw~ÀúęĐç €[  ‘šLčŸù‚6wŰ șšŸíMÓ·CëœŻ XÓ!=ÎB ÌŚ`ƒšú5żÏRxWfzf”wòÓÍò ó5ìú4æŚ·ïeŚ2~}»ń<»Ÿ”őëۉ ôĂ[ś{Š3Xă—;ú  uPBśV@ś|@HąÏC cÀpžČŒĐœBœ‰›Ś?ÒœÂHŁÿÀˆLęWĄŹ^ïśf0ȏLĘzQŚ/ïnę#_?Ł«ŃV?™úŻ@dëż*gLęWđ:Àêż'ǀ­ÁšęžË9ÿę“Ííh@IENDźB`‚application/library/jquery/images/ui-bg_glass_95_fef1ec_1x400.png000064400000000147147577724760020617 0ustar00‰PNG  IHDRà:Œ.IDATxcüÿę <ŠGń(țÿë###„ŠA46\ÍH›Q<Šd VÌ IENDźB`‚application/library/jquery/images/ui-icons_2e83ff_256x240.png000064400000007257147577724760017667 0ustar00‰PNG  IHDRđŰIJùPLTE.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿ.ƒÿŒêoZtRNSÿ3Pż‚™/"Uq@f`2Ì !<BHK Z#'1S,…4‡€ĂjÈÏÆ8EŒžŸ|«”„ŒȘš­Č)ęžQ$ï ąb”J ŻmߜGc?o‘hČ#•- öIDATxÚìÚvĂ8 „aâÓęÏŒœ1ó„È©Šÿ«Ò&0€șŚ0 w ÔÿŒ7w@œ»ĆVTÔŹŸq‚- &ˆj±©Ńb ù[0ő}+Ä„9ƒ©fzÁ‘ò)dęm ^š&»ùő„Š?Șk0§g†anËቼĂÈçčÜä}ę«ušïLlSÜŽőàĘ^Ęu,Ûÿ±±ÿN2ûóĘaę!úŻhܧ{éÁŠŽíél3À_ǀ=ĘÙçèr/tÛvŹ±áĆ8êÇŹ€Œ›A§+äÿ-–Z?ćӛɎćÈs@Æçńÿ«pțț⍩»Vü˜û€ë8ÖeÊz"úț‡a†áŚöÎC»m#ˆąw7cÈA…J„3MJïœ1œśúÿ?ąÆ9XÌń‚fÂж„«z‰:ï @ * ê¶čŻ8ć>툗êá~”…kĐWbô“ŁYŠ~UP©M úŐï{òîĆžŸÂ-`%±_Ś%X Pú«$&d/f›M§^ˆȚ;+t{“ìuQQTEöß f]1`r«-Ú Ôu.pŒ;$ Pœë 4=E°rë2P\€@qpđiłÙL( ŒäŰëH8,‘Òî`7đĂ3r@IòCÂÆsDw8l8xpïĄN?ü°p˜uÿ‚`x$ è0 űˆÎ@Ÿ‘í€i‰D9ećR„(™€éêҏ>š3EĄ™ "‘žqIęŚ{$ÀÈœ FŁŃt4BóùJvgÿŹțs$-ă„—xl‘yȚądEéÜżPæț]Ąb\–Ÿw€ÿ@C„ŠÆXjéŻÆç˜óĆ_"óeI„ÆĘÜž»Sdà~!ŰëÄČPçf‹±Žäs¶ĐŠKàü«Ûm_}ęÉ'_…ÌKQ7Đ(@瑉‚6í“Ÿˆ“ $Œ2=%Ęà’e™ #WźŸ^P)M ­?Đ à“3öLő 0†Æ=@9Ęć)€dB€Rs„0™ŽJ”XTU•°d©_Q.€Œ‚”čÜ^șú#éđ{§đŒșî,ÏaÀ˜‡# džőțG^yeúʂ#­às–Òx{űű€ăŽțŽÀjyÎ\æźaáđđ°@瘟ŸòÁé'Ę|–Ù1`±8;QńyYŽ©¶=€ő/ÛˆP%,æ2Xîs”$€€ƒdۋtxê©Ő§kìPÆĆbÁ‚ìipûgcŠÔêȜLȚiZÔĄM€öGòʞžőič‘(Ï`òÀVŻŽ%l]Q€$ű<(À'6ő»—FąÀȚ)ŹŹˆÄH,ŽéuÀĘĂÁśß$ÚìIá“àÇÿääÀÀÀÀv(ËD~űàÇtuű ~’ń3+~ÖUáQ€GWò€ĐöÀŒ™~j9jm‹ł]6@X üÚđëșż}•RSgî…ì…Œ3‹’fnę»l kòW‚|ęPŻ}pÓü·â7óìŁ ;BÀZż&Ÿț±ŒÚêϔ#hB­ÿ&é·Î ł;@͊:€ő·/„dšŐŸ tZ†BRž"łÙŒšŃœÀIę`őoĄv?Ö!`5|ßđœï€ü lúVÆÓĘàœ—Áx9;šșńo[g íŒIÓęnú»zÆÉMĘ.èòÇ7ßüĄ;ž2ÔxĘ%ŒëȚwHlŸkŚ|ęxĘ%à" ÒxB:C=gßèæ7Á|r1Sțö¶†Z]G^©”+ÀEtăÚvóòÜ i6=@WÁŒ«ì6˜d€±ŹTn†4›n­8ŻˆKÛ˜ś+—t đäǀK{€»ă,0\ Đè ț}$8 Wš~Æ⯚ ŁȘżJüß?ŰŰïR–ü-țK%„1>üÏž±ß•^țȘőBÛ°œkLPm!ĆaQž~°òC{žœuș^P`~Ś9ÒGD­š˜ö3LÏMGŹ|Ähtö6)§žNgŠMż;;@ČhDž%ĘòMùèâÆ~w2Š‘Ô0–*™—.€K;VđÂŃ P„ˆșŠ[>șŹT??UžzűśäĘ?D”©ûőíÊóűśŹuśʊ _Ï`ü°Îꃔ›ș_ß.ŒÿțsHęw~_ùśà{sđźÌt[żÛžŒÓ;}&)uŒZùZüĂŃ­Kżÿ.kæśÓóŽÔ7]Âčÿ‰”ú?ÿü“: -`łÿϐq~—~w;,zæ—/šw~ÀúęĐç €[  ‘šLčŸù‚6wŰ șšŸíMÓ·CëœŻ XÓ!=ÎB ÌŚ`ƒšú5żÏRxWfzf”wòÓÍò ó5ìú4æŚ·ïeŚ2~}»ń<»Ÿ”őëۉ ôĂ[ś{Š3Xă—;ú  uPBśV@ś|@HąÏC cÀpžČŒĐœBœ‰›Ś?ÒœÂHŁÿÀˆLęWĄŹ^ïśf0ȏLĘzQŚ/ïnę#_?Ł«ŃV?™úŻ@dëż*gLęWđ:Àêż'ǀ­ÁšęžË9ÿę“Ííh@IENDźB`‚application/library/jquery/images/ui-icons_cd0a0a_256x240.png000064400000007257147577724760017722 0ustar00‰PNG  IHDRđŰIJùPLTEÍ Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í Í 4ÍvëZtRNSÿ3Pż‚™/"Uq@f`2Ì !<BHK Z#'1S,…4‡€ĂjÈÏÆ8EŒžŸ|«”„ŒȘš­Č)ęžQ$ï ąb”J ŻmߜGc?o‘hČ#•- öIDATxÚìÚvĂ8 „aâÓęÏŒœ1ó„È©Šÿ«Ò&0€șŚ0 w ÔÿŒ7w@œ»ĆVTÔŹŸq‚- &ˆj±©Ńb ù[0ő}+Ä„9ƒ©fzÁ‘ò)dęm ^š&»ùő„Š?Șk0§g†anËቼĂÈçčÜä}ę«ušïLlSÜŽőàĘ^Ęu,Ûÿ±±ÿN2ûóĘaę!úŻhܧ{éÁŠŽíél3À_ǀ=ĘÙçèr/tÛvŹ±áĆ8êÇŹ€Œ›A§+äÿ-–Z?ćӛɎćÈs@Æçńÿ«pțț⍩»Vü˜û€ë8ÖeÊz"úț‡a†áŚöÎC»m#ˆąw7cÈA…J„3MJïœ1œśúÿ?ąÆ9XÌń‚fÂж„«z‰:ï @ * ê¶čŻ8ć>툗êá~”…kĐWbô“ŁYŠ~UP©M úŐï{òîĆžŸÂ-`%±_Ś%X Pú«$&d/f›M§^ˆȚ;+t{“ìuQQTEöß f]1`r«-Ú Ôu.pŒ;$ Pœë 4=E°rë2P\€@qpđiłÙL( ŒäŰëH8,‘Òî`7đĂ3r@IòCÂÆsDw8l8xpïĄN?ü°p˜uÿ‚`x$ è0 űˆÎ@Ÿ‘í€i‰D9ećR„(™€éêҏ>š3EĄ™ "‘žqIęŚ{$ÀÈœ FŁŃt4BóùJvgÿŹțs$-ă„—xl‘yȚądEéÜżPæț]Ąb\–Ÿw€ÿ@C„ŠÆXjéŻÆç˜óĆ_"óeI„ÆĘÜž»Sdà~!ŰëÄČPçf‹±Žäs¶ĐŠKàü«Ûm_}ęÉ'_…ÌKQ7Đ(@瑉‚6í“Ÿˆ“ $Œ2=%Ęà’e™ #WźŸ^P)M ­?Đ à“3öLő 0†Æ=@9Ęć)€dB€Rs„0™ŽJ”XTU•°d©_Q.€Œ‚”čÜ^șú#éđ{§đŒșî,ÏaÀ˜‡# džőțG^yeúʂ#­às–Òx{űű€ăŽțŽÀjyÎ\æźaáđđ°@瘟ŸòÁé'Ę|–Ù1`±8;QńyYŽ©¶=€ő/ÛˆP%,æ2Xîs”$€€ƒdۋtxê©Ő§kìPÆĆbÁ‚ìipûgcŠÔêȜLȚiZÔĄM€öGòʞžőič‘(Ï`òÀVŻŽ%l]Q€$ű<(À'6ő»—FąÀȚ)ŹŹˆÄH,ŽéuÀĘĂÁśß$ÚìIá“àÇÿääÀÀÀÀv(ËD~űàÇtuű ~’ń3+~ÖUáQ€GWò€ĐöÀŒ™~j9jm‹ł]6@X üÚđëșż}•RSgî…ì…Œ3‹’fnę»l kòW‚|ęPŻ}pÓü·â7óìŁ ;BÀZż&Ÿț±ŒÚêϔ#hB­ÿ&é·Î ł;@͊:€ő·/„dšŐŸ tZ†BRž"łÙŒšŃœÀIę`őoĄv?Ö!`5|ßđœï€ü lúVÆÓĘàœ—Áx9;šșńo[g íŒIÓęnú»zÆÉMĘ.èòÇ7ßüĄ;ž2ÔxĘ%ŒëȚwHlŸkŚ|ęxĘ%à" ÒxB:C=gßèæ7Á|r1Sțö¶†Z]G^©”+ÀEtăÚvóòÜ i6=@WÁŒ«ì6˜d€±ŹTn†4›n­8ŻˆKÛ˜ś+—t đäǀK{€»ă,0\ Đè ț}$8 Wš~Æ⯚ ŁȘżJüß?ŰŰïR–ü-țK%„1>üÏž±ß•^țȘőBÛ°œkLPm!ĆaQž~°òC{žœuș^P`~Ś9ÒGD­š˜ö3LÏMGŹ|Ähtö6)§žNgŠMż;;@ČhDž%ĘòMùèâÆ~w2Š‘Ô0–*™—.€K;VđÂŃ P„ˆșŠ[>șŹT??UžzűśäĘ?D”©ûőíÊóűśŹuśʊ _Ï`ü°Îꃔ›ș_ß.ŒÿțsHęw~_ùśà{sđźÌt[żÛžŒÓ;}&)uŒZùZüĂŃ­Kżÿ.kæśÓóŽÔ7]Âčÿ‰”ú?ÿü“: -`łÿϐq~—~w;,zæ—/šw~ÀúęĐç €[  ‘šLčŸù‚6wŰ șšŸíMÓ·CëœŻ XÓ!=ÎB ÌŚ`ƒšú5żÏRxWfzf”wòÓÍò ó5ìú4æŚ·ïeŚ2~}»ń<»Ÿ”őëۉ ôĂ[ś{Š3Xă—;ú  uPBśV@ś|@HąÏC cÀpžČŒĐœBœ‰›Ś?ÒœÂHŁÿÀˆLęWĄŹ^ïśf0ȏLĘzQŚ/ïnę#_?Ł«ŃV?™úŻ@dëż*gLęWđ:Àêż'ǀ­ÁšęžË9ÿę“Ííh@IENDźB`‚application/library/jquery/images/ui-bg_glass_65_ffffff_1x400.png000064400000000111147577724760020675 0ustar00‰PNG  IHDRG#7vIDATxchÀGá(…•hÈ·ĆoÒIENDźB`‚application/library/jquery/images/ui-bg_highlight-soft_75_cccccc_1x100.png000064400000000172147577724760022467 0ustar00‰PNG  IHDRd2ŚÙÿAIDATxcz|‰.èÓ{&{ù_’éÿ'0úÌôÿ4Óż3 òÿ s—‚„ÎIˆJš†4Šÿ=p鏯G&aàĐ!IENDźB`‚application/library/jquery/jquery-ui-1.12.0.js000064400001767642147577724760015120 0ustar00/*! jQuery UI - v1.12.0 - 2016-07-08 * http://jqueryui.com * Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js * Copyright jQuery Foundation and other contributors; Licensed MIT */ (function( factory ) { if ( typeof define === "function" && define.amd ) { // AMD. Register as an anonymous module. define([ "jquery" ], factory ); } else { // Browser globals factory( jQuery ); } }(function( $ ) { $.ui = $.ui || {}; var version = $.ui.version = "1.12.0"; /*! * jQuery UI Widget 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Widget //>>group: Core //>>description: Provides a factory for creating stateful widgets with a common API. //>>docs: http://api.jqueryui.com/jQuery.widget/ //>>demos: http://jqueryui.com/widget/ var widgetUuid = 0; var widgetSlice = Array.prototype.slice; $.cleanData = ( function( orig ) { return function( elems ) { var events, elem, i; for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { try { // Only trigger remove when necessary to save time events = $._data( elem, "events" ); if ( events && events.remove ) { $( elem ).triggerHandler( "remove" ); } // Http://bugs.jquery.com/ticket/8235 } catch ( e ) {} } orig( elems ); }; } )( $.cleanData ); $.widget = function( name, base, prototype ) { var existingConstructor, constructor, basePrototype; // ProxiedPrototype allows the provided prototype to remain unmodified // so that it can be used as a mixin for multiple widgets (#8876) var proxiedPrototype = {}; var namespace = name.split( "." )[ 0 ]; name = name.split( "." )[ 1 ]; var fullName = namespace + "-" + name; if ( !prototype ) { prototype = base; base = $.Widget; } if ( $.isArray( prototype ) ) { prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); } // Create selector for plugin $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { return !!$.data( elem, fullName ); }; $[ namespace ] = $[ namespace ] || {}; existingConstructor = $[ namespace ][ name ]; constructor = $[ namespace ][ name ] = function( options, element ) { // Allow instantiation without "new" keyword if ( !this._createWidget ) { return new constructor( options, element ); } // Allow instantiation without initializing for simple inheritance // must use "new" keyword (the code above always passes args) if ( arguments.length ) { this._createWidget( options, element ); } }; // Extend with the existing constructor to carry over any static properties $.extend( constructor, existingConstructor, { version: prototype.version, // Copy the object used to create the prototype in case we need to // redefine the widget later _proto: $.extend( {}, prototype ), // Track widgets that inherit from this widget in case this widget is // redefined after a widget inherits from it _childConstructors: [] } ); basePrototype = new base(); // We need to make the options hash a property directly on the new instance // otherwise we'll modify the options hash on the prototype that we're // inheriting from basePrototype.options = $.widget.extend( {}, basePrototype.options ); $.each( prototype, function( prop, value ) { if ( !$.isFunction( value ) ) { proxiedPrototype[ prop ] = value; return; } proxiedPrototype[ prop ] = ( function() { function _super() { return base.prototype[ prop ].apply( this, arguments ); } function _superApply( args ) { return base.prototype[ prop ].apply( this, args ); } return function() { var __super = this._super; var __superApply = this._superApply; var returnValue; this._super = _super; this._superApply = _superApply; returnValue = value.apply( this, arguments ); this._super = __super; this._superApply = __superApply; return returnValue; }; } )(); } ); constructor.prototype = $.widget.extend( basePrototype, { // TODO: remove support for widgetEventPrefix // always use the name + a colon as the prefix, e.g., draggable:start // don't prefix for widgets that aren't DOM-based widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name }, proxiedPrototype, { constructor: constructor, namespace: namespace, widgetName: name, widgetFullName: fullName } ); // If this widget is being redefined then we need to find all widgets that // are inheriting from it and redefine all of them so that they inherit from // the new version of this widget. We're essentially trying to replace one // level in the prototype chain. if ( existingConstructor ) { $.each( existingConstructor._childConstructors, function( i, child ) { var childPrototype = child.prototype; // Redefine the child widget using the same prototype that was // originally used, but inherit from the new version of the base $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, child._proto ); } ); // Remove the list of existing child constructors from the old constructor // so the old child constructors can be garbage collected delete existingConstructor._childConstructors; } else { base._childConstructors.push( constructor ); } $.widget.bridge( name, constructor ); return constructor; }; $.widget.extend = function( target ) { var input = widgetSlice.call( arguments, 1 ); var inputIndex = 0; var inputLength = input.length; var key; var value; for ( ; inputIndex < inputLength; inputIndex++ ) { for ( key in input[ inputIndex ] ) { value = input[ inputIndex ][ key ]; if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { // Clone objects if ( $.isPlainObject( value ) ) { target[ key ] = $.isPlainObject( target[ key ] ) ? $.widget.extend( {}, target[ key ], value ) : // Don't extend strings, arrays, etc. with objects $.widget.extend( {}, value ); // Copy everything else by reference } else { target[ key ] = value; } } } } return target; }; $.widget.bridge = function( name, object ) { var fullName = object.prototype.widgetFullName || name; $.fn[ name ] = function( options ) { var isMethodCall = typeof options === "string"; var args = widgetSlice.call( arguments, 1 ); var returnValue = this; if ( isMethodCall ) { this.each( function() { var methodValue; var instance = $.data( this, fullName ); if ( options === "instance" ) { returnValue = instance; return false; } if ( !instance ) { return $.error( "cannot call methods on " + name + " prior to initialization; " + "attempted to call method '" + options + "'" ); } if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) { return $.error( "no such method '" + options + "' for " + name + " widget instance" ); } methodValue = instance[ options ].apply( instance, args ); if ( methodValue !== instance && methodValue !== undefined ) { returnValue = methodValue && methodValue.jquery ? returnValue.pushStack( methodValue.get() ) : methodValue; return false; } } ); } else { // Allow multiple hashes to be passed on init if ( args.length ) { options = $.widget.extend.apply( null, [ options ].concat( args ) ); } this.each( function() { var instance = $.data( this, fullName ); if ( instance ) { instance.option( options || {} ); if ( instance._init ) { instance._init(); } } else { $.data( this, fullName, new object( options, this ) ); } } ); } return returnValue; }; }; $.Widget = function( /* options, element */ ) {}; $.Widget._childConstructors = []; $.Widget.prototype = { widgetName: "widget", widgetEventPrefix: "", defaultElement: "
    ", options: { classes: {}, disabled: false, // Callbacks create: null }, _createWidget: function( options, element ) { element = $( element || this.defaultElement || this )[ 0 ]; this.element = $( element ); this.uuid = widgetUuid++; this.eventNamespace = "." + this.widgetName + this.uuid; this.bindings = $(); this.hoverable = $(); this.focusable = $(); this.classesElementLookup = {}; if ( element !== this ) { $.data( element, this.widgetFullName, this ); this._on( true, this.element, { remove: function( event ) { if ( event.target === element ) { this.destroy(); } } } ); this.document = $( element.style ? // Element within the document element.ownerDocument : // Element is window or document element.document || element ); this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow ); } this.options = $.widget.extend( {}, this.options, this._getCreateOptions(), options ); this._create(); if ( this.options.disabled ) { this._setOptionDisabled( this.options.disabled ); } this._trigger( "create", null, this._getCreateEventData() ); this._init(); }, _getCreateOptions: function() { return {}; }, _getCreateEventData: $.noop, _create: $.noop, _init: $.noop, destroy: function() { var that = this; this._destroy(); $.each( this.classesElementLookup, function( key, value ) { that._removeClass( value, key ); } ); // We can probably remove the unbind calls in 2.0 // all event bindings should go through this._on() this.element .off( this.eventNamespace ) .removeData( this.widgetFullName ); this.widget() .off( this.eventNamespace ) .removeAttr( "aria-disabled" ); // Clean up events and states this.bindings.off( this.eventNamespace ); }, _destroy: $.noop, widget: function() { return this.element; }, option: function( key, value ) { var options = key; var parts; var curOption; var i; if ( arguments.length === 0 ) { // Don't return a reference to the internal hash return $.widget.extend( {}, this.options ); } if ( typeof key === "string" ) { // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } options = {}; parts = key.split( "." ); key = parts.shift(); if ( parts.length ) { curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); for ( i = 0; i < parts.length - 1; i++ ) { curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; curOption = curOption[ parts[ i ] ]; } key = parts.pop(); if ( arguments.length === 1 ) { return curOption[ key ] === undefined ? null : curOption[ key ]; } curOption[ key ] = value; } else { if ( arguments.length === 1 ) { return this.options[ key ] === undefined ? null : this.options[ key ]; } options[ key ] = value; } } this._setOptions( options ); return this; }, _setOptions: function( options ) { var key; for ( key in options ) { this._setOption( key, options[ key ] ); } return this; }, _setOption: function( key, value ) { if ( key === "classes" ) { this._setOptionClasses( value ); } this.options[ key ] = value; if ( key === "disabled" ) { this._setOptionDisabled( value ); } return this; }, _setOptionClasses: function( value ) { var classKey, elements, currentElements; for ( classKey in value ) { currentElements = this.classesElementLookup[ classKey ]; if ( value[ classKey ] === this.options.classes[ classKey ] || !currentElements || !currentElements.length ) { continue; } // We are doing this to create a new jQuery object because the _removeClass() call // on the next line is going to destroy the reference to the current elements being // tracked. We need to save a copy of this collection so that we can add the new classes // below. elements = $( currentElements.get() ); this._removeClass( currentElements, classKey ); // We don't use _addClass() here, because that uses this.options.classes // for generating the string of classes. We want to use the value passed in from // _setOption(), this is the new value of the classes option which was passed to // _setOption(). We pass this value directly to _classes(). elements.addClass( this._classes( { element: elements, keys: classKey, classes: value, add: true } ) ); } }, _setOptionDisabled: function( value ) { this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value ); // If the widget is becoming disabled, then nothing is interactive if ( value ) { this._removeClass( this.hoverable, null, "ui-state-hover" ); this._removeClass( this.focusable, null, "ui-state-focus" ); } }, enable: function() { return this._setOptions( { disabled: false } ); }, disable: function() { return this._setOptions( { disabled: true } ); }, _classes: function( options ) { var full = []; var that = this; options = $.extend( { element: this.element, classes: this.options.classes || {} }, options ); function processClassString( classes, checkOption ) { var current, i; for ( i = 0; i < classes.length; i++ ) { current = that.classesElementLookup[ classes[ i ] ] || $(); if ( options.add ) { current = $( $.unique( current.get().concat( options.element.get() ) ) ); } else { current = $( current.not( options.element ).get() ); } that.classesElementLookup[ classes[ i ] ] = current; full.push( classes[ i ] ); if ( checkOption && options.classes[ classes[ i ] ] ) { full.push( options.classes[ classes[ i ] ] ); } } } if ( options.keys ) { processClassString( options.keys.match( /\S+/g ) || [], true ); } if ( options.extra ) { processClassString( options.extra.match( /\S+/g ) || [] ); } return full.join( " " ); }, _removeClass: function( element, keys, extra ) { return this._toggleClass( element, keys, extra, false ); }, _addClass: function( element, keys, extra ) { return this._toggleClass( element, keys, extra, true ); }, _toggleClass: function( element, keys, extra, add ) { add = ( typeof add === "boolean" ) ? add : extra; var shift = ( typeof element === "string" || element === null ), options = { extra: shift ? keys : extra, keys: shift ? element : keys, element: shift ? this.element : element, add: add }; options.element.toggleClass( this._classes( options ), add ); return this; }, _on: function( suppressDisabledCheck, element, handlers ) { var delegateElement; var instance = this; // No suppressDisabledCheck flag, shuffle arguments if ( typeof suppressDisabledCheck !== "boolean" ) { handlers = element; element = suppressDisabledCheck; suppressDisabledCheck = false; } // No element argument, shuffle and use this.element if ( !handlers ) { handlers = element; element = this.element; delegateElement = this.widget(); } else { element = delegateElement = $( element ); this.bindings = this.bindings.add( element ); } $.each( handlers, function( event, handler ) { function handlerProxy() { // Allow widgets to customize the disabled handling // - disabled as an array instead of boolean // - disabled class as method for disabling individual parts if ( !suppressDisabledCheck && ( instance.options.disabled === true || $( this ).hasClass( "ui-state-disabled" ) ) ) { return; } return ( typeof handler === "string" ? instance[ handler ] : handler ) .apply( instance, arguments ); } // Copy the guid so direct unbinding works if ( typeof handler !== "string" ) { handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $.guid++; } var match = event.match( /^([\w:-]*)\s*(.*)$/ ); var eventName = match[ 1 ] + instance.eventNamespace; var selector = match[ 2 ]; if ( selector ) { delegateElement.on( eventName, selector, handlerProxy ); } else { element.on( eventName, handlerProxy ); } } ); }, _off: function( element, eventName ) { eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) + this.eventNamespace; element.off( eventName ).off( eventName ); // Clear the stack to avoid memory leaks (#10056) this.bindings = $( this.bindings.not( element ).get() ); this.focusable = $( this.focusable.not( element ).get() ); this.hoverable = $( this.hoverable.not( element ).get() ); }, _delay: function( handler, delay ) { function handlerProxy() { return ( typeof handler === "string" ? instance[ handler ] : handler ) .apply( instance, arguments ); } var instance = this; return setTimeout( handlerProxy, delay || 0 ); }, _hoverable: function( element ) { this.hoverable = this.hoverable.add( element ); this._on( element, { mouseenter: function( event ) { this._addClass( $( event.currentTarget ), null, "ui-state-hover" ); }, mouseleave: function( event ) { this._removeClass( $( event.currentTarget ), null, "ui-state-hover" ); } } ); }, _focusable: function( element ) { this.focusable = this.focusable.add( element ); this._on( element, { focusin: function( event ) { this._addClass( $( event.currentTarget ), null, "ui-state-focus" ); }, focusout: function( event ) { this._removeClass( $( event.currentTarget ), null, "ui-state-focus" ); } } ); }, _trigger: function( type, event, data ) { var prop, orig; var callback = this.options[ type ]; data = data || {}; event = $.Event( event ); event.type = ( type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type ).toLowerCase(); // The original event may come from any element // so we need to reset the target on the new event event.target = this.element[ 0 ]; // Copy original event properties over to the new event orig = event.originalEvent; if ( orig ) { for ( prop in orig ) { if ( !( prop in event ) ) { event[ prop ] = orig[ prop ]; } } } this.element.trigger( event, data ); return !( $.isFunction( callback ) && callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false || event.isDefaultPrevented() ); } }; $.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { if ( typeof options === "string" ) { options = { effect: options }; } var hasOptions; var effectName = !options ? method : options === true || typeof options === "number" ? defaultEffect : options.effect || defaultEffect; options = options || {}; if ( typeof options === "number" ) { options = { duration: options }; } hasOptions = !$.isEmptyObject( options ); options.complete = callback; if ( options.delay ) { element.delay( options.delay ); } if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { element[ method ]( options ); } else if ( effectName !== method && element[ effectName ] ) { element[ effectName ]( options.duration, options.easing, callback ); } else { element.queue( function( next ) { $( this )[ method ](); if ( callback ) { callback.call( element[ 0 ] ); } next(); } ); } }; } ); var widget = $.widget; /*! * jQuery UI Position 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * http://api.jqueryui.com/position/ */ //>>label: Position //>>group: Core //>>description: Positions elements relative to other elements. //>>docs: http://api.jqueryui.com/position/ //>>demos: http://jqueryui.com/position/ ( function() { var cachedScrollbarWidth, supportsOffsetFractions, max = Math.max, abs = Math.abs, round = Math.round, rhorizontal = /left|center|right/, rvertical = /top|center|bottom/, roffset = /[\+\-]\d+(\.[\d]+)?%?/, rposition = /^\w+/, rpercent = /%$/, _position = $.fn.position; // Support: IE <=9 only supportsOffsetFractions = function() { var element = $( "
    " ) .css( "position", "absolute" ) .appendTo( "body" ) .offset( { top: 1.5, left: 1.5 } ), support = element.offset().top === 1.5; element.remove(); supportsOffsetFractions = function() { return support; }; return support; }; function getOffsets( offsets, width, height ) { return [ parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) ]; } function parseCss( element, property ) { return parseInt( $.css( element, property ), 10 ) || 0; } function getDimensions( elem ) { var raw = elem[ 0 ]; if ( raw.nodeType === 9 ) { return { width: elem.width(), height: elem.height(), offset: { top: 0, left: 0 } }; } if ( $.isWindow( raw ) ) { return { width: elem.width(), height: elem.height(), offset: { top: elem.scrollTop(), left: elem.scrollLeft() } }; } if ( raw.preventDefault ) { return { width: 0, height: 0, offset: { top: raw.pageY, left: raw.pageX } }; } return { width: elem.outerWidth(), height: elem.outerHeight(), offset: elem.offset() }; } $.position = { scrollbarWidth: function() { if ( cachedScrollbarWidth !== undefined ) { return cachedScrollbarWidth; } var w1, w2, div = $( "
    " + "
    " ), innerDiv = div.children()[ 0 ]; $( "body" ).append( div ); w1 = innerDiv.offsetWidth; div.css( "overflow", "scroll" ); w2 = innerDiv.offsetWidth; if ( w1 === w2 ) { w2 = div[ 0 ].clientWidth; } div.remove(); return ( cachedScrollbarWidth = w1 - w2 ); }, getScrollInfo: function( within ) { var overflowX = within.isWindow || within.isDocument ? "" : within.element.css( "overflow-x" ), overflowY = within.isWindow || within.isDocument ? "" : within.element.css( "overflow-y" ), hasOverflowX = overflowX === "scroll" || ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ), hasOverflowY = overflowY === "scroll" || ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight ); return { width: hasOverflowY ? $.position.scrollbarWidth() : 0, height: hasOverflowX ? $.position.scrollbarWidth() : 0 }; }, getWithinInfo: function( element ) { var withinElement = $( element || window ), isWindow = $.isWindow( withinElement[ 0 ] ), isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, hasOffset = !isWindow && !isDocument; return { element: withinElement, isWindow: isWindow, isDocument: isDocument, offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, scrollLeft: withinElement.scrollLeft(), scrollTop: withinElement.scrollTop(), width: withinElement.outerWidth(), height: withinElement.outerHeight() }; } }; $.fn.position = function( options ) { if ( !options || !options.of ) { return _position.apply( this, arguments ); } // Make a copy, we don't want to modify arguments options = $.extend( {}, options ); var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, target = $( options.of ), within = $.position.getWithinInfo( options.within ), scrollInfo = $.position.getScrollInfo( within ), collision = ( options.collision || "flip" ).split( " " ), offsets = {}; dimensions = getDimensions( target ); if ( target[ 0 ].preventDefault ) { // Force left top to allow flipping options.at = "left top"; } targetWidth = dimensions.width; targetHeight = dimensions.height; targetOffset = dimensions.offset; // Clone to reuse original targetOffset later basePosition = $.extend( {}, targetOffset ); // Force my and at to have valid horizontal and vertical positions // if a value is missing or invalid, it will be converted to center $.each( [ "my", "at" ], function() { var pos = ( options[ this ] || "" ).split( " " ), horizontalOffset, verticalOffset; if ( pos.length === 1 ) { pos = rhorizontal.test( pos[ 0 ] ) ? pos.concat( [ "center" ] ) : rvertical.test( pos[ 0 ] ) ? [ "center" ].concat( pos ) : [ "center", "center" ]; } pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; // Calculate offsets horizontalOffset = roffset.exec( pos[ 0 ] ); verticalOffset = roffset.exec( pos[ 1 ] ); offsets[ this ] = [ horizontalOffset ? horizontalOffset[ 0 ] : 0, verticalOffset ? verticalOffset[ 0 ] : 0 ]; // Reduce to just the positions without the offsets options[ this ] = [ rposition.exec( pos[ 0 ] )[ 0 ], rposition.exec( pos[ 1 ] )[ 0 ] ]; } ); // Normalize collision option if ( collision.length === 1 ) { collision[ 1 ] = collision[ 0 ]; } if ( options.at[ 0 ] === "right" ) { basePosition.left += targetWidth; } else if ( options.at[ 0 ] === "center" ) { basePosition.left += targetWidth / 2; } if ( options.at[ 1 ] === "bottom" ) { basePosition.top += targetHeight; } else if ( options.at[ 1 ] === "center" ) { basePosition.top += targetHeight / 2; } atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); basePosition.left += atOffset[ 0 ]; basePosition.top += atOffset[ 1 ]; return this.each( function() { var collisionPosition, using, elem = $( this ), elemWidth = elem.outerWidth(), elemHeight = elem.outerHeight(), marginLeft = parseCss( this, "marginLeft" ), marginTop = parseCss( this, "marginTop" ), collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + scrollInfo.width, collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + scrollInfo.height, position = $.extend( {}, basePosition ), myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); if ( options.my[ 0 ] === "right" ) { position.left -= elemWidth; } else if ( options.my[ 0 ] === "center" ) { position.left -= elemWidth / 2; } if ( options.my[ 1 ] === "bottom" ) { position.top -= elemHeight; } else if ( options.my[ 1 ] === "center" ) { position.top -= elemHeight / 2; } position.left += myOffset[ 0 ]; position.top += myOffset[ 1 ]; // If the browser doesn't support fractions, then round for consistent results if ( !supportsOffsetFractions() ) { position.left = round( position.left ); position.top = round( position.top ); } collisionPosition = { marginLeft: marginLeft, marginTop: marginTop }; $.each( [ "left", "top" ], function( i, dir ) { if ( $.ui.position[ collision[ i ] ] ) { $.ui.position[ collision[ i ] ][ dir ]( position, { targetWidth: targetWidth, targetHeight: targetHeight, elemWidth: elemWidth, elemHeight: elemHeight, collisionPosition: collisionPosition, collisionWidth: collisionWidth, collisionHeight: collisionHeight, offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], my: options.my, at: options.at, within: within, elem: elem } ); } } ); if ( options.using ) { // Adds feedback as second argument to using callback, if present using = function( props ) { var left = targetOffset.left - position.left, right = left + targetWidth - elemWidth, top = targetOffset.top - position.top, bottom = top + targetHeight - elemHeight, feedback = { target: { element: target, left: targetOffset.left, top: targetOffset.top, width: targetWidth, height: targetHeight }, element: { element: elem, left: position.left, top: position.top, width: elemWidth, height: elemHeight }, horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" }; if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { feedback.horizontal = "center"; } if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { feedback.vertical = "middle"; } if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { feedback.important = "horizontal"; } else { feedback.important = "vertical"; } options.using.call( this, props, feedback ); }; } elem.offset( $.extend( position, { using: using } ) ); } ); }; $.ui.position = { fit: { left: function( position, data ) { var within = data.within, withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, outerWidth = within.width, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = withinOffset - collisionPosLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, newOverRight; // Element is wider than within if ( data.collisionWidth > outerWidth ) { // Element is initially over the left side of within if ( overLeft > 0 && overRight <= 0 ) { newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - withinOffset; position.left += overLeft - newOverRight; // Element is initially over right side of within } else if ( overRight > 0 && overLeft <= 0 ) { position.left = withinOffset; // Element is initially over both left and right sides of within } else { if ( overLeft > overRight ) { position.left = withinOffset + outerWidth - data.collisionWidth; } else { position.left = withinOffset; } } // Too far left -> align with left edge } else if ( overLeft > 0 ) { position.left += overLeft; // Too far right -> align with right edge } else if ( overRight > 0 ) { position.left -= overRight; // Adjust based on position and margin } else { position.left = max( position.left - collisionPosLeft, position.left ); } }, top: function( position, data ) { var within = data.within, withinOffset = within.isWindow ? within.scrollTop : within.offset.top, outerHeight = data.within.height, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = withinOffset - collisionPosTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, newOverBottom; // Element is taller than within if ( data.collisionHeight > outerHeight ) { // Element is initially over the top of within if ( overTop > 0 && overBottom <= 0 ) { newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - withinOffset; position.top += overTop - newOverBottom; // Element is initially over bottom of within } else if ( overBottom > 0 && overTop <= 0 ) { position.top = withinOffset; // Element is initially over both top and bottom of within } else { if ( overTop > overBottom ) { position.top = withinOffset + outerHeight - data.collisionHeight; } else { position.top = withinOffset; } } // Too far up -> align with top } else if ( overTop > 0 ) { position.top += overTop; // Too far down -> align with bottom edge } else if ( overBottom > 0 ) { position.top -= overBottom; // Adjust based on position and margin } else { position.top = max( position.top - collisionPosTop, position.top ); } } }, flip: { left: function( position, data ) { var within = data.within, withinOffset = within.offset.left + within.scrollLeft, outerWidth = within.width, offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, collisionPosLeft = position.left - data.collisionPosition.marginLeft, overLeft = collisionPosLeft - offsetLeft, overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, myOffset = data.my[ 0 ] === "left" ? -data.elemWidth : data.my[ 0 ] === "right" ? data.elemWidth : 0, atOffset = data.at[ 0 ] === "left" ? data.targetWidth : data.at[ 0 ] === "right" ? -data.targetWidth : 0, offset = -2 * data.offset[ 0 ], newOverRight, newOverLeft; if ( overLeft < 0 ) { newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - outerWidth - withinOffset; if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { position.left += myOffset + atOffset + offset; } } else if ( overRight > 0 ) { newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + atOffset + offset - offsetLeft; if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { position.left += myOffset + atOffset + offset; } } }, top: function( position, data ) { var within = data.within, withinOffset = within.offset.top + within.scrollTop, outerHeight = within.height, offsetTop = within.isWindow ? within.scrollTop : within.offset.top, collisionPosTop = position.top - data.collisionPosition.marginTop, overTop = collisionPosTop - offsetTop, overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, top = data.my[ 1 ] === "top", myOffset = top ? -data.elemHeight : data.my[ 1 ] === "bottom" ? data.elemHeight : 0, atOffset = data.at[ 1 ] === "top" ? data.targetHeight : data.at[ 1 ] === "bottom" ? -data.targetHeight : 0, offset = -2 * data.offset[ 1 ], newOverTop, newOverBottom; if ( overTop < 0 ) { newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - outerHeight - withinOffset; if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) { position.top += myOffset + atOffset + offset; } } else if ( overBottom > 0 ) { newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + offset - offsetTop; if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) { position.top += myOffset + atOffset + offset; } } } }, flipfit: { left: function() { $.ui.position.flip.left.apply( this, arguments ); $.ui.position.fit.left.apply( this, arguments ); }, top: function() { $.ui.position.flip.top.apply( this, arguments ); $.ui.position.fit.top.apply( this, arguments ); } } }; } )(); var position = $.ui.position; /*! * jQuery UI :data 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: :data Selector //>>group: Core //>>description: Selects elements which have data stored under the specified key. //>>docs: http://api.jqueryui.com/data-selector/ var data = $.extend( $.expr[ ":" ], { data: $.expr.createPseudo ? $.expr.createPseudo( function( dataName ) { return function( elem ) { return !!$.data( elem, dataName ); }; } ) : // Support: jQuery <1.8 function( elem, i, match ) { return !!$.data( elem, match[ 3 ] ); } } ); /*! * jQuery UI Disable Selection 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: disableSelection //>>group: Core //>>description: Disable selection of text content within the set of matched elements. //>>docs: http://api.jqueryui.com/disableSelection/ // This file is deprecated var disableSelection = $.fn.extend( { disableSelection: ( function() { var eventType = "onselectstart" in document.createElement( "div" ) ? "selectstart" : "mousedown"; return function() { return this.on( eventType + ".ui-disableSelection", function( event ) { event.preventDefault(); } ); }; } )(), enableSelection: function() { return this.off( ".ui-disableSelection" ); } } ); /*! * jQuery UI Effects 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Effects Core //>>group: Effects // jscs:disable maximumLineLength //>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects. // jscs:enable maximumLineLength //>>docs: http://api.jqueryui.com/category/effects-core/ //>>demos: http://jqueryui.com/effect/ var dataSpace = "ui-effects-", dataSpaceStyle = "ui-effects-style", dataSpaceAnimated = "ui-effects-animated", // Create a local jQuery because jQuery Color relies on it and the // global may not exist with AMD and a custom build (#10199) jQuery = $; $.effects = { effect: {} }; /*! * jQuery Color Animations v2.1.2 * https://github.com/jquery/jquery-color * * Copyright 2014 jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * * Date: Wed Jan 16 08:47:09 2013 -0600 */ ( function( jQuery, undefined ) { var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " + "borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", // Plusequals test for += 100 -= 100 rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, // A set of RE's that can match strings and generate color tuples. stringParsers = [ { re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, parse: function( execResult ) { return [ execResult[ 1 ], execResult[ 2 ], execResult[ 3 ], execResult[ 4 ] ]; } }, { re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, parse: function( execResult ) { return [ execResult[ 1 ] * 2.55, execResult[ 2 ] * 2.55, execResult[ 3 ] * 2.55, execResult[ 4 ] ]; } }, { // This regex ignores A-F because it's compared against an already lowercased string re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, parse: function( execResult ) { return [ parseInt( execResult[ 1 ], 16 ), parseInt( execResult[ 2 ], 16 ), parseInt( execResult[ 3 ], 16 ) ]; } }, { // This regex ignores A-F because it's compared against an already lowercased string re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, parse: function( execResult ) { return [ parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) ]; } }, { re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, space: "hsla", parse: function( execResult ) { return [ execResult[ 1 ], execResult[ 2 ] / 100, execResult[ 3 ] / 100, execResult[ 4 ] ]; } } ], // JQuery.Color( ) color = jQuery.Color = function( color, green, blue, alpha ) { return new jQuery.Color.fn.parse( color, green, blue, alpha ); }, spaces = { rgba: { props: { red: { idx: 0, type: "byte" }, green: { idx: 1, type: "byte" }, blue: { idx: 2, type: "byte" } } }, hsla: { props: { hue: { idx: 0, type: "degrees" }, saturation: { idx: 1, type: "percent" }, lightness: { idx: 2, type: "percent" } } } }, propTypes = { "byte": { floor: true, max: 255 }, "percent": { max: 1 }, "degrees": { mod: 360, floor: true } }, support = color.support = {}, // Element for support tests supportElem = jQuery( "

    " )[ 0 ], // Colors = jQuery.Color.names colors, // Local aliases of functions called often each = jQuery.each; // Determine rgba support immediately supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; // Define cache name and alpha properties // for rgba and hsla spaces each( spaces, function( spaceName, space ) { space.cache = "_" + spaceName; space.props.alpha = { idx: 3, type: "percent", def: 1 }; } ); function clamp( value, prop, allowEmpty ) { var type = propTypes[ prop.type ] || {}; if ( value == null ) { return ( allowEmpty || !prop.def ) ? null : prop.def; } // ~~ is an short way of doing floor for positive numbers value = type.floor ? ~~value : parseFloat( value ); // IE will pass in empty strings as value for alpha, // which will hit this case if ( isNaN( value ) ) { return prop.def; } if ( type.mod ) { // We add mod before modding to make sure that negatives values // get converted properly: -10 -> 350 return ( value + type.mod ) % type.mod; } // For now all property types without mod have min and max return 0 > value ? 0 : type.max < value ? type.max : value; } function stringParse( string ) { var inst = color(), rgba = inst._rgba = []; string = string.toLowerCase(); each( stringParsers, function( i, parser ) { var parsed, match = parser.re.exec( string ), values = match && parser.parse( match ), spaceName = parser.space || "rgba"; if ( values ) { parsed = inst[ spaceName ]( values ); // If this was an rgba parse the assignment might happen twice // oh well.... inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; rgba = inst._rgba = parsed._rgba; // Exit each( stringParsers ) here because we matched return false; } } ); // Found a stringParser that handled it if ( rgba.length ) { // If this came from a parsed string, force "transparent" when alpha is 0 // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) if ( rgba.join() === "0,0,0,0" ) { jQuery.extend( rgba, colors.transparent ); } return inst; } // Named colors return colors[ string ]; } color.fn = jQuery.extend( color.prototype, { parse: function( red, green, blue, alpha ) { if ( red === undefined ) { this._rgba = [ null, null, null, null ]; return this; } if ( red.jquery || red.nodeType ) { red = jQuery( red ).css( green ); green = undefined; } var inst = this, type = jQuery.type( red ), rgba = this._rgba = []; // More than 1 argument specified - assume ( red, green, blue, alpha ) if ( green !== undefined ) { red = [ red, green, blue, alpha ]; type = "array"; } if ( type === "string" ) { return this.parse( stringParse( red ) || colors._default ); } if ( type === "array" ) { each( spaces.rgba.props, function( key, prop ) { rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); } ); return this; } if ( type === "object" ) { if ( red instanceof color ) { each( spaces, function( spaceName, space ) { if ( red[ space.cache ] ) { inst[ space.cache ] = red[ space.cache ].slice(); } } ); } else { each( spaces, function( spaceName, space ) { var cache = space.cache; each( space.props, function( key, prop ) { // If the cache doesn't exist, and we know how to convert if ( !inst[ cache ] && space.to ) { // If the value was null, we don't need to copy it // if the key was alpha, we don't need to copy it either if ( key === "alpha" || red[ key ] == null ) { return; } inst[ cache ] = space.to( inst._rgba ); } // This is the only case where we allow nulls for ALL properties. // call clamp with alwaysAllowEmpty inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); } ); // Everything defined but alpha? if ( inst[ cache ] && jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { // Use the default of 1 inst[ cache ][ 3 ] = 1; if ( space.from ) { inst._rgba = space.from( inst[ cache ] ); } } } ); } return this; } }, is: function( compare ) { var is = color( compare ), same = true, inst = this; each( spaces, function( _, space ) { var localCache, isCache = is[ space.cache ]; if ( isCache ) { localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; each( space.props, function( _, prop ) { if ( isCache[ prop.idx ] != null ) { same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); return same; } } ); } return same; } ); return same; }, _space: function() { var used = [], inst = this; each( spaces, function( spaceName, space ) { if ( inst[ space.cache ] ) { used.push( spaceName ); } } ); return used.pop(); }, transition: function( other, distance ) { var end = color( other ), spaceName = end._space(), space = spaces[ spaceName ], startColor = this.alpha() === 0 ? color( "transparent" ) : this, start = startColor[ space.cache ] || space.to( startColor._rgba ), result = start.slice(); end = end[ space.cache ]; each( space.props, function( key, prop ) { var index = prop.idx, startValue = start[ index ], endValue = end[ index ], type = propTypes[ prop.type ] || {}; // If null, don't override start value if ( endValue === null ) { return; } // If null - use end if ( startValue === null ) { result[ index ] = endValue; } else { if ( type.mod ) { if ( endValue - startValue > type.mod / 2 ) { startValue += type.mod; } else if ( startValue - endValue > type.mod / 2 ) { startValue -= type.mod; } } result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); } } ); return this[ spaceName ]( result ); }, blend: function( opaque ) { // If we are already opaque - return ourself if ( this._rgba[ 3 ] === 1 ) { return this; } var rgb = this._rgba.slice(), a = rgb.pop(), blend = color( opaque )._rgba; return color( jQuery.map( rgb, function( v, i ) { return ( 1 - a ) * blend[ i ] + a * v; } ) ); }, toRgbaString: function() { var prefix = "rgba(", rgba = jQuery.map( this._rgba, function( v, i ) { return v == null ? ( i > 2 ? 1 : 0 ) : v; } ); if ( rgba[ 3 ] === 1 ) { rgba.pop(); prefix = "rgb("; } return prefix + rgba.join() + ")"; }, toHslaString: function() { var prefix = "hsla(", hsla = jQuery.map( this.hsla(), function( v, i ) { if ( v == null ) { v = i > 2 ? 1 : 0; } // Catch 1 and 2 if ( i && i < 3 ) { v = Math.round( v * 100 ) + "%"; } return v; } ); if ( hsla[ 3 ] === 1 ) { hsla.pop(); prefix = "hsl("; } return prefix + hsla.join() + ")"; }, toHexString: function( includeAlpha ) { var rgba = this._rgba.slice(), alpha = rgba.pop(); if ( includeAlpha ) { rgba.push( ~~( alpha * 255 ) ); } return "#" + jQuery.map( rgba, function( v ) { // Default to 0 when nulls exist v = ( v || 0 ).toString( 16 ); return v.length === 1 ? "0" + v : v; } ).join( "" ); }, toString: function() { return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); } } ); color.fn.parse.prototype = color.fn; // Hsla conversions adapted from: // https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 function hue2rgb( p, q, h ) { h = ( h + 1 ) % 1; if ( h * 6 < 1 ) { return p + ( q - p ) * h * 6; } if ( h * 2 < 1 ) { return q; } if ( h * 3 < 2 ) { return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6; } return p; } spaces.hsla.to = function( rgba ) { if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { return [ null, null, null, rgba[ 3 ] ]; } var r = rgba[ 0 ] / 255, g = rgba[ 1 ] / 255, b = rgba[ 2 ] / 255, a = rgba[ 3 ], max = Math.max( r, g, b ), min = Math.min( r, g, b ), diff = max - min, add = max + min, l = add * 0.5, h, s; if ( min === max ) { h = 0; } else if ( r === max ) { h = ( 60 * ( g - b ) / diff ) + 360; } else if ( g === max ) { h = ( 60 * ( b - r ) / diff ) + 120; } else { h = ( 60 * ( r - g ) / diff ) + 240; } // Chroma (diff) == 0 means greyscale which, by definition, saturation = 0% // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) if ( diff === 0 ) { s = 0; } else if ( l <= 0.5 ) { s = diff / add; } else { s = diff / ( 2 - add ); } return [ Math.round( h ) % 360, s, l, a == null ? 1 : a ]; }; spaces.hsla.from = function( hsla ) { if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { return [ null, null, null, hsla[ 3 ] ]; } var h = hsla[ 0 ] / 360, s = hsla[ 1 ], l = hsla[ 2 ], a = hsla[ 3 ], q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, p = 2 * l - q; return [ Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), Math.round( hue2rgb( p, q, h ) * 255 ), Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), a ]; }; each( spaces, function( spaceName, space ) { var props = space.props, cache = space.cache, to = space.to, from = space.from; // Makes rgba() and hsla() color.fn[ spaceName ] = function( value ) { // Generate a cache for this space if it doesn't exist if ( to && !this[ cache ] ) { this[ cache ] = to( this._rgba ); } if ( value === undefined ) { return this[ cache ].slice(); } var ret, type = jQuery.type( value ), arr = ( type === "array" || type === "object" ) ? value : arguments, local = this[ cache ].slice(); each( props, function( key, prop ) { var val = arr[ type === "object" ? key : prop.idx ]; if ( val == null ) { val = local[ prop.idx ]; } local[ prop.idx ] = clamp( val, prop ); } ); if ( from ) { ret = color( from( local ) ); ret[ cache ] = local; return ret; } else { return color( local ); } }; // Makes red() green() blue() alpha() hue() saturation() lightness() each( props, function( key, prop ) { // Alpha is included in more than one space if ( color.fn[ key ] ) { return; } color.fn[ key ] = function( value ) { var vtype = jQuery.type( value ), fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), local = this[ fn ](), cur = local[ prop.idx ], match; if ( vtype === "undefined" ) { return cur; } if ( vtype === "function" ) { value = value.call( this, cur ); vtype = jQuery.type( value ); } if ( value == null && prop.empty ) { return this; } if ( vtype === "string" ) { match = rplusequals.exec( value ); if ( match ) { value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); } } local[ prop.idx ] = value; return this[ fn ]( local ); }; } ); } ); // Add cssHook and .fx.step function for each named hook. // accept a space separated string of properties color.hook = function( hook ) { var hooks = hook.split( " " ); each( hooks, function( i, hook ) { jQuery.cssHooks[ hook ] = { set: function( elem, value ) { var parsed, curElem, backgroundColor = ""; if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || ( parsed = stringParse( value ) ) ) ) { value = color( parsed || value ); if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { curElem = hook === "backgroundColor" ? elem.parentNode : elem; while ( ( backgroundColor === "" || backgroundColor === "transparent" ) && curElem && curElem.style ) { try { backgroundColor = jQuery.css( curElem, "backgroundColor" ); curElem = curElem.parentNode; } catch ( e ) { } } value = value.blend( backgroundColor && backgroundColor !== "transparent" ? backgroundColor : "_default" ); } value = value.toRgbaString(); } try { elem.style[ hook ] = value; } catch ( e ) { // Wrapped to prevent IE from throwing errors on "invalid" values like // 'auto' or 'inherit' } } }; jQuery.fx.step[ hook ] = function( fx ) { if ( !fx.colorInit ) { fx.start = color( fx.elem, hook ); fx.end = color( fx.end ); fx.colorInit = true; } jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); }; } ); }; color.hook( stepHooks ); jQuery.cssHooks.borderColor = { expand: function( value ) { var expanded = {}; each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { expanded[ "border" + part + "Color" ] = value; } ); return expanded; } }; // Basic color names only. // Usage of any of the other color names requires adding yourself or including // jquery.color.svg-names.js. colors = jQuery.Color.names = { // 4.1. Basic color keywords aqua: "#00ffff", black: "#000000", blue: "#0000ff", fuchsia: "#ff00ff", gray: "#808080", green: "#008000", lime: "#00ff00", maroon: "#800000", navy: "#000080", olive: "#808000", purple: "#800080", red: "#ff0000", silver: "#c0c0c0", teal: "#008080", white: "#ffffff", yellow: "#ffff00", // 4.2.3. "transparent" color keyword transparent: [ null, null, null, 0 ], _default: "#ffffff" }; } )( jQuery ); /******************************************************************************/ /****************************** CLASS ANIMATIONS ******************************/ /******************************************************************************/ ( function() { var classAnimationActions = [ "add", "remove", "toggle" ], shorthandStyles = { border: 1, borderBottom: 1, borderColor: 1, borderLeft: 1, borderRight: 1, borderTop: 1, borderWidth: 1, margin: 1, padding: 1 }; $.each( [ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], function( _, prop ) { $.fx.step[ prop ] = function( fx ) { if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { jQuery.style( fx.elem, prop, fx.end ); fx.setAttr = true; } }; } ); function getElementStyles( elem ) { var key, len, style = elem.ownerDocument.defaultView ? elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : elem.currentStyle, styles = {}; if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { len = style.length; while ( len-- ) { key = style[ len ]; if ( typeof style[ key ] === "string" ) { styles[ $.camelCase( key ) ] = style[ key ]; } } // Support: Opera, IE <9 } else { for ( key in style ) { if ( typeof style[ key ] === "string" ) { styles[ key ] = style[ key ]; } } } return styles; } function styleDifference( oldStyle, newStyle ) { var diff = {}, name, value; for ( name in newStyle ) { value = newStyle[ name ]; if ( oldStyle[ name ] !== value ) { if ( !shorthandStyles[ name ] ) { if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { diff[ name ] = value; } } } } return diff; } // Support: jQuery <1.8 if ( !$.fn.addBack ) { $.fn.addBack = function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter( selector ) ); }; } $.effects.animateClass = function( value, duration, easing, callback ) { var o = $.speed( duration, easing, callback ); return this.queue( function() { var animated = $( this ), baseClass = animated.attr( "class" ) || "", applyClassChange, allAnimations = o.children ? animated.find( "*" ).addBack() : animated; // Map the animated objects to store the original styles. allAnimations = allAnimations.map( function() { var el = $( this ); return { el: el, start: getElementStyles( this ) }; } ); // Apply class change applyClassChange = function() { $.each( classAnimationActions, function( i, action ) { if ( value[ action ] ) { animated[ action + "Class" ]( value[ action ] ); } } ); }; applyClassChange(); // Map all animated objects again - calculate new styles and diff allAnimations = allAnimations.map( function() { this.end = getElementStyles( this.el[ 0 ] ); this.diff = styleDifference( this.start, this.end ); return this; } ); // Apply original class animated.attr( "class", baseClass ); // Map all animated objects again - this time collecting a promise allAnimations = allAnimations.map( function() { var styleInfo = this, dfd = $.Deferred(), opts = $.extend( {}, o, { queue: false, complete: function() { dfd.resolve( styleInfo ); } } ); this.el.animate( this.diff, opts ); return dfd.promise(); } ); // Once all animations have completed: $.when.apply( $, allAnimations.get() ).done( function() { // Set the final class applyClassChange(); // For each animated element, // clear all css properties that were animated $.each( arguments, function() { var el = this.el; $.each( this.diff, function( key ) { el.css( key, "" ); } ); } ); // This is guarnteed to be there if you use jQuery.speed() // it also handles dequeuing the next anim... o.complete.call( animated[ 0 ] ); } ); } ); }; $.fn.extend( { addClass: ( function( orig ) { return function( classNames, speed, easing, callback ) { return speed ? $.effects.animateClass.call( this, { add: classNames }, speed, easing, callback ) : orig.apply( this, arguments ); }; } )( $.fn.addClass ), removeClass: ( function( orig ) { return function( classNames, speed, easing, callback ) { return arguments.length > 1 ? $.effects.animateClass.call( this, { remove: classNames }, speed, easing, callback ) : orig.apply( this, arguments ); }; } )( $.fn.removeClass ), toggleClass: ( function( orig ) { return function( classNames, force, speed, easing, callback ) { if ( typeof force === "boolean" || force === undefined ) { if ( !speed ) { // Without speed parameter return orig.apply( this, arguments ); } else { return $.effects.animateClass.call( this, ( force ? { add: classNames } : { remove: classNames } ), speed, easing, callback ); } } else { // Without force parameter return $.effects.animateClass.call( this, { toggle: classNames }, force, speed, easing ); } }; } )( $.fn.toggleClass ), switchClass: function( remove, add, speed, easing, callback ) { return $.effects.animateClass.call( this, { add: add, remove: remove }, speed, easing, callback ); } } ); } )(); /******************************************************************************/ /*********************************** EFFECTS **********************************/ /******************************************************************************/ ( function() { if ( $.expr && $.expr.filters && $.expr.filters.animated ) { $.expr.filters.animated = ( function( orig ) { return function( elem ) { return !!$( elem ).data( dataSpaceAnimated ) || orig( elem ); }; } )( $.expr.filters.animated ); } if ( $.uiBackCompat !== false ) { $.extend( $.effects, { // Saves a set of properties in a data storage save: function( element, set ) { var i = 0, length = set.length; for ( ; i < length; i++ ) { if ( set[ i ] !== null ) { element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); } } }, // Restores a set of previously saved properties from a data storage restore: function( element, set ) { var val, i = 0, length = set.length; for ( ; i < length; i++ ) { if ( set[ i ] !== null ) { val = element.data( dataSpace + set[ i ] ); element.css( set[ i ], val ); } } }, setMode: function( el, mode ) { if ( mode === "toggle" ) { mode = el.is( ":hidden" ) ? "show" : "hide"; } return mode; }, // Wraps the element around a wrapper that copies position properties createWrapper: function( element ) { // If the element is already wrapped, return it if ( element.parent().is( ".ui-effects-wrapper" ) ) { return element.parent(); } // Wrap the element var props = { width: element.outerWidth( true ), height: element.outerHeight( true ), "float": element.css( "float" ) }, wrapper = $( "

    " ) .addClass( "ui-effects-wrapper" ) .css( { fontSize: "100%", background: "transparent", border: "none", margin: 0, padding: 0 } ), // Store the size in case width/height are defined in % - Fixes #5245 size = { width: element.width(), height: element.height() }, active = document.activeElement; // Support: Firefox // Firefox incorrectly exposes anonymous content // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 try { active.id; } catch ( e ) { active = document.body; } element.wrap( wrapper ); // Fixes #7595 - Elements lose focus when wrapped. if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { $( active ).trigger( "focus" ); } // Hotfix for jQuery 1.4 since some change in wrap() seems to actually // lose the reference to the wrapped element wrapper = element.parent(); // Transfer positioning properties to the wrapper if ( element.css( "position" ) === "static" ) { wrapper.css( { position: "relative" } ); element.css( { position: "relative" } ); } else { $.extend( props, { position: element.css( "position" ), zIndex: element.css( "z-index" ) } ); $.each( [ "top", "left", "bottom", "right" ], function( i, pos ) { props[ pos ] = element.css( pos ); if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { props[ pos ] = "auto"; } } ); element.css( { position: "relative", top: 0, left: 0, right: "auto", bottom: "auto" } ); } element.css( size ); return wrapper.css( props ).show(); }, removeWrapper: function( element ) { var active = document.activeElement; if ( element.parent().is( ".ui-effects-wrapper" ) ) { element.parent().replaceWith( element ); // Fixes #7595 - Elements lose focus when wrapped. if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { $( active ).trigger( "focus" ); } } return element; } } ); } $.extend( $.effects, { version: "1.12.0", define: function( name, mode, effect ) { if ( !effect ) { effect = mode; mode = "effect"; } $.effects.effect[ name ] = effect; $.effects.effect[ name ].mode = mode; return effect; }, scaledDimensions: function( element, percent, direction ) { if ( percent === 0 ) { return { height: 0, width: 0, outerHeight: 0, outerWidth: 0 }; } var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1, y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1; return { height: element.height() * y, width: element.width() * x, outerHeight: element.outerHeight() * y, outerWidth: element.outerWidth() * x }; }, clipToBox: function( animation ) { return { width: animation.clip.right - animation.clip.left, height: animation.clip.bottom - animation.clip.top, left: animation.clip.left, top: animation.clip.top }; }, // Injects recently queued functions to be first in line (after "inprogress") unshift: function( element, queueLength, count ) { var queue = element.queue(); if ( queueLength > 1 ) { queue.splice.apply( queue, [ 1, 0 ].concat( queue.splice( queueLength, count ) ) ); } element.dequeue(); }, saveStyle: function( element ) { element.data( dataSpaceStyle, element[ 0 ].style.cssText ); }, restoreStyle: function( element ) { element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || ""; element.removeData( dataSpaceStyle ); }, mode: function( element, mode ) { var hidden = element.is( ":hidden" ); if ( mode === "toggle" ) { mode = hidden ? "show" : "hide"; } if ( hidden ? mode === "hide" : mode === "show" ) { mode = "none"; } return mode; }, // Translates a [top,left] array into a baseline value getBaseline: function( origin, original ) { var y, x; switch ( origin[ 0 ] ) { case "top": y = 0; break; case "middle": y = 0.5; break; case "bottom": y = 1; break; default: y = origin[ 0 ] / original.height; } switch ( origin[ 1 ] ) { case "left": x = 0; break; case "center": x = 0.5; break; case "right": x = 1; break; default: x = origin[ 1 ] / original.width; } return { x: x, y: y }; }, // Creates a placeholder element so that the original element can be made absolute createPlaceholder: function( element ) { var placeholder, cssPosition = element.css( "position" ), position = element.position(); // Lock in margins first to account for form elements, which // will change margin if you explicitly set height // see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380 // Support: Safari element.css( { marginTop: element.css( "marginTop" ), marginBottom: element.css( "marginBottom" ), marginLeft: element.css( "marginLeft" ), marginRight: element.css( "marginRight" ) } ) .outerWidth( element.outerWidth() ) .outerHeight( element.outerHeight() ); if ( /^(static|relative)/.test( cssPosition ) ) { cssPosition = "absolute"; placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( { // Convert inline to inline block to account for inline elements // that turn to inline block based on content (like img) display: /^(inline|ruby)/.test( element.css( "display" ) ) ? "inline-block" : "block", visibility: "hidden", // Margins need to be set to account for margin collapse marginTop: element.css( "marginTop" ), marginBottom: element.css( "marginBottom" ), marginLeft: element.css( "marginLeft" ), marginRight: element.css( "marginRight" ), "float": element.css( "float" ) } ) .outerWidth( element.outerWidth() ) .outerHeight( element.outerHeight() ) .addClass( "ui-effects-placeholder" ); element.data( dataSpace + "placeholder", placeholder ); } element.css( { position: cssPosition, left: position.left, top: position.top } ); return placeholder; }, removePlaceholder: function( element ) { var dataKey = dataSpace + "placeholder", placeholder = element.data( dataKey ); if ( placeholder ) { placeholder.remove(); element.removeData( dataKey ); } }, // Removes a placeholder if it exists and restores // properties that were modified during placeholder creation cleanUp: function( element ) { $.effects.restoreStyle( element ); $.effects.removePlaceholder( element ); }, setTransition: function( element, list, factor, value ) { value = value || {}; $.each( list, function( i, x ) { var unit = element.cssUnit( x ); if ( unit[ 0 ] > 0 ) { value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; } } ); return value; } } ); // Return an effect options object for the given parameters: function _normalizeArguments( effect, options, speed, callback ) { // Allow passing all options as the first parameter if ( $.isPlainObject( effect ) ) { options = effect; effect = effect.effect; } // Convert to an object effect = { effect: effect }; // Catch (effect, null, ...) if ( options == null ) { options = {}; } // Catch (effect, callback) if ( $.isFunction( options ) ) { callback = options; speed = null; options = {}; } // Catch (effect, speed, ?) if ( typeof options === "number" || $.fx.speeds[ options ] ) { callback = speed; speed = options; options = {}; } // Catch (effect, options, callback) if ( $.isFunction( speed ) ) { callback = speed; speed = null; } // Add options to effect if ( options ) { $.extend( effect, options ); } speed = speed || options.duration; effect.duration = $.fx.off ? 0 : typeof speed === "number" ? speed : speed in $.fx.speeds ? $.fx.speeds[ speed ] : $.fx.speeds._default; effect.complete = callback || options.complete; return effect; } function standardAnimationOption( option ) { // Valid standard speeds (nothing, number, named speed) if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { return true; } // Invalid strings - treat as "normal" speed if ( typeof option === "string" && !$.effects.effect[ option ] ) { return true; } // Complete callback if ( $.isFunction( option ) ) { return true; } // Options hash (but not naming an effect) if ( typeof option === "object" && !option.effect ) { return true; } // Didn't match any standard API return false; } $.fn.extend( { effect: function( /* effect, options, speed, callback */ ) { var args = _normalizeArguments.apply( this, arguments ), effectMethod = $.effects.effect[ args.effect ], defaultMode = effectMethod.mode, queue = args.queue, queueName = queue || "fx", complete = args.complete, mode = args.mode, modes = [], prefilter = function( next ) { var el = $( this ), normalizedMode = $.effects.mode( el, mode ) || defaultMode; // Sentinel for duck-punching the :animated psuedo-selector el.data( dataSpaceAnimated, true ); // Save effect mode for later use, // we can't just call $.effects.mode again later, // as the .show() below destroys the initial state modes.push( normalizedMode ); // See $.uiBackCompat inside of run() for removal of defaultMode in 1.13 if ( defaultMode && ( normalizedMode === "show" || ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) { el.show(); } if ( !defaultMode || normalizedMode !== "none" ) { $.effects.saveStyle( el ); } if ( $.isFunction( next ) ) { next(); } }; if ( $.fx.off || !effectMethod ) { // Delegate to the original method (e.g., .show()) if possible if ( mode ) { return this[ mode ]( args.duration, complete ); } else { return this.each( function() { if ( complete ) { complete.call( this ); } } ); } } function run( next ) { var elem = $( this ); function cleanup() { elem.removeData( dataSpaceAnimated ); $.effects.cleanUp( elem ); if ( args.mode === "hide" ) { elem.hide(); } done(); } function done() { if ( $.isFunction( complete ) ) { complete.call( elem[ 0 ] ); } if ( $.isFunction( next ) ) { next(); } } // Override mode option on a per element basis, // as toggle can be either show or hide depending on element state args.mode = modes.shift(); if ( $.uiBackCompat !== false && !defaultMode ) { if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { // Call the core method to track "olddisplay" properly elem[ mode ](); done(); } else { effectMethod.call( elem[ 0 ], args, done ); } } else { if ( args.mode === "none" ) { // Call the core method to track "olddisplay" properly elem[ mode ](); done(); } else { effectMethod.call( elem[ 0 ], args, cleanup ); } } } // Run prefilter on all elements first to ensure that // any showing or hiding happens before placeholder creation, // which ensures that any layout changes are correctly captured. return queue === false ? this.each( prefilter ).each( run ) : this.queue( queueName, prefilter ).queue( queueName, run ); }, show: ( function( orig ) { return function( option ) { if ( standardAnimationOption( option ) ) { return orig.apply( this, arguments ); } else { var args = _normalizeArguments.apply( this, arguments ); args.mode = "show"; return this.effect.call( this, args ); } }; } )( $.fn.show ), hide: ( function( orig ) { return function( option ) { if ( standardAnimationOption( option ) ) { return orig.apply( this, arguments ); } else { var args = _normalizeArguments.apply( this, arguments ); args.mode = "hide"; return this.effect.call( this, args ); } }; } )( $.fn.hide ), toggle: ( function( orig ) { return function( option ) { if ( standardAnimationOption( option ) || typeof option === "boolean" ) { return orig.apply( this, arguments ); } else { var args = _normalizeArguments.apply( this, arguments ); args.mode = "toggle"; return this.effect.call( this, args ); } }; } )( $.fn.toggle ), cssUnit: function( key ) { var style = this.css( key ), val = []; $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { if ( style.indexOf( unit ) > 0 ) { val = [ parseFloat( style ), unit ]; } } ); return val; }, cssClip: function( clipObj ) { if ( clipObj ) { return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " + clipObj.bottom + "px " + clipObj.left + "px)" ); } return parseClip( this.css( "clip" ), this ); }, transfer: function( options, done ) { var element = $( this ), target = $( options.to ), targetFixed = target.css( "position" ) === "fixed", body = $( "body" ), fixTop = targetFixed ? body.scrollTop() : 0, fixLeft = targetFixed ? body.scrollLeft() : 0, endPosition = target.offset(), animation = { top: endPosition.top - fixTop, left: endPosition.left - fixLeft, height: target.innerHeight(), width: target.innerWidth() }, startPosition = element.offset(), transfer = $( "
    " ) .appendTo( "body" ) .addClass( options.className ) .css( { top: startPosition.top - fixTop, left: startPosition.left - fixLeft, height: element.innerHeight(), width: element.innerWidth(), position: targetFixed ? "fixed" : "absolute" } ) .animate( animation, options.duration, options.easing, function() { transfer.remove(); if ( $.isFunction( done ) ) { done(); } } ); } } ); function parseClip( str, element ) { var outerWidth = element.outerWidth(), outerHeight = element.outerHeight(), clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/, values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ]; return { top: parseFloat( values[ 1 ] ) || 0, right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ), bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ), left: parseFloat( values[ 4 ] ) || 0 }; } $.fx.step.clip = function( fx ) { if ( !fx.clipInit ) { fx.start = $( fx.elem ).cssClip(); if ( typeof fx.end === "string" ) { fx.end = parseClip( fx.end, fx.elem ); } fx.clipInit = true; } $( fx.elem ).cssClip( { top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top, right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right, bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom, left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left } ); }; } )(); /******************************************************************************/ /*********************************** EASING ***********************************/ /******************************************************************************/ ( function() { // Based on easing equations from Robert Penner (http://www.robertpenner.com/easing) var baseEasings = {}; $.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { baseEasings[ name ] = function( p ) { return Math.pow( p, i + 2 ); }; } ); $.extend( baseEasings, { Sine: function( p ) { return 1 - Math.cos( p * Math.PI / 2 ); }, Circ: function( p ) { return 1 - Math.sqrt( 1 - p * p ); }, Elastic: function( p ) { return p === 0 || p === 1 ? p : -Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 ); }, Back: function( p ) { return p * p * ( 3 * p - 2 ); }, Bounce: function( p ) { var pow2, bounce = 4; while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); } } ); $.each( baseEasings, function( name, easeIn ) { $.easing[ "easeIn" + name ] = easeIn; $.easing[ "easeOut" + name ] = function( p ) { return 1 - easeIn( 1 - p ); }; $.easing[ "easeInOut" + name ] = function( p ) { return p < 0.5 ? easeIn( p * 2 ) / 2 : 1 - easeIn( p * -2 + 2 ) / 2; }; } ); } )(); var effect = $.effects; /*! * jQuery UI Effects Blind 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Blind Effect //>>group: Effects //>>description: Blinds the element. //>>docs: http://api.jqueryui.com/blind-effect/ //>>demos: http://jqueryui.com/effect/ var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) { var map = { up: [ "bottom", "top" ], vertical: [ "bottom", "top" ], down: [ "top", "bottom" ], left: [ "right", "left" ], horizontal: [ "right", "left" ], right: [ "left", "right" ] }, element = $( this ), direction = options.direction || "up", start = element.cssClip(), animate = { clip: $.extend( {}, start ) }, placeholder = $.effects.createPlaceholder( element ); animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ]; if ( options.mode === "show" ) { element.cssClip( animate.clip ); if ( placeholder ) { placeholder.css( $.effects.clipToBox( animate ) ); } animate.clip = start; } if ( placeholder ) { placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing ); } element.animate( animate, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); /*! * jQuery UI Effects Bounce 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Bounce Effect //>>group: Effects //>>description: Bounces an element horizontally or vertically n times. //>>docs: http://api.jqueryui.com/bounce-effect/ //>>demos: http://jqueryui.com/effect/ var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) { var upAnim, downAnim, refValue, element = $( this ), // Defaults: mode = options.mode, hide = mode === "hide", show = mode === "show", direction = options.direction || "up", distance = options.distance, times = options.times || 5, // Number of internal animations anims = times * 2 + ( show || hide ? 1 : 0 ), speed = options.duration / anims, easing = options.easing, // Utility: ref = ( direction === "up" || direction === "down" ) ? "top" : "left", motion = ( direction === "up" || direction === "left" ), i = 0, queuelen = element.queue().length; $.effects.createPlaceholder( element ); refValue = element.css( ref ); // Default distance for the BIGGEST bounce is the outer Distance / 3 if ( !distance ) { distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; } if ( show ) { downAnim = { opacity: 1 }; downAnim[ ref ] = refValue; // If we are showing, force opacity 0 and set the initial position // then do the "first" animation element .css( "opacity", 0 ) .css( ref, motion ? -distance * 2 : distance * 2 ) .animate( downAnim, speed, easing ); } // Start at the smallest distance if we are hiding if ( hide ) { distance = distance / Math.pow( 2, times - 1 ); } downAnim = {}; downAnim[ ref ] = refValue; // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here for ( ; i < times; i++ ) { upAnim = {}; upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; element .animate( upAnim, speed, easing ) .animate( downAnim, speed, easing ); distance = hide ? distance * 2 : distance / 2; } // Last Bounce when Hiding if ( hide ) { upAnim = { opacity: 0 }; upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; element.animate( upAnim, speed, easing ); } element.queue( done ); $.effects.unshift( element, queuelen, anims + 1 ); } ); /*! * jQuery UI Effects Clip 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Clip Effect //>>group: Effects //>>description: Clips the element on and off like an old TV. //>>docs: http://api.jqueryui.com/clip-effect/ //>>demos: http://jqueryui.com/effect/ var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) { var start, animate = {}, element = $( this ), direction = options.direction || "vertical", both = direction === "both", horizontal = both || direction === "horizontal", vertical = both || direction === "vertical"; start = element.cssClip(); animate.clip = { top: vertical ? ( start.bottom - start.top ) / 2 : start.top, right: horizontal ? ( start.right - start.left ) / 2 : start.right, bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom, left: horizontal ? ( start.right - start.left ) / 2 : start.left }; $.effects.createPlaceholder( element ); if ( options.mode === "show" ) { element.cssClip( animate.clip ); animate.clip = start; } element.animate( animate, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); /*! * jQuery UI Effects Drop 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Drop Effect //>>group: Effects //>>description: Moves an element in one direction and hides it at the same time. //>>docs: http://api.jqueryui.com/drop-effect/ //>>demos: http://jqueryui.com/effect/ var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) { var distance, element = $( this ), mode = options.mode, show = mode === "show", direction = options.direction || "left", ref = ( direction === "up" || direction === "down" ) ? "top" : "left", motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=", oppositeMotion = ( motion === "+=" ) ? "-=" : "+=", animation = { opacity: 0 }; $.effects.createPlaceholder( element ); distance = options.distance || element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2; animation[ ref ] = motion + distance; if ( show ) { element.css( animation ); animation[ ref ] = oppositeMotion + distance; animation.opacity = 1; } // Animate element.animate( animation, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); /*! * jQuery UI Effects Explode 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Explode Effect //>>group: Effects // jscs:disable maximumLineLength //>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness. // jscs:enable maximumLineLength //>>docs: http://api.jqueryui.com/explode-effect/ //>>demos: http://jqueryui.com/effect/ var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) { var i, j, left, top, mx, my, rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3, cells = rows, element = $( this ), mode = options.mode, show = mode === "show", // Show and then visibility:hidden the element before calculating offset offset = element.show().css( "visibility", "hidden" ).offset(), // Width and height of a piece width = Math.ceil( element.outerWidth() / cells ), height = Math.ceil( element.outerHeight() / rows ), pieces = []; // Children animate complete: function childComplete() { pieces.push( this ); if ( pieces.length === rows * cells ) { animComplete(); } } // Clone the element for each row and cell. for ( i = 0; i < rows; i++ ) { // ===> top = offset.top + i * height; my = i - ( rows - 1 ) / 2; for ( j = 0; j < cells; j++ ) { // ||| left = offset.left + j * width; mx = j - ( cells - 1 ) / 2; // Create a clone of the now hidden main element that will be absolute positioned // within a wrapper div off the -left and -top equal to size of our pieces element .clone() .appendTo( "body" ) .wrap( "
    " ) .css( { position: "absolute", visibility: "visible", left: -j * width, top: -i * height } ) // Select the wrapper - make it overflow: hidden and absolute positioned based on // where the original was located +left and +top equal to the size of pieces .parent() .addClass( "ui-effects-explode" ) .css( { position: "absolute", overflow: "hidden", width: width, height: height, left: left + ( show ? mx * width : 0 ), top: top + ( show ? my * height : 0 ), opacity: show ? 0 : 1 } ) .animate( { left: left + ( show ? 0 : mx * width ), top: top + ( show ? 0 : my * height ), opacity: show ? 1 : 0 }, options.duration || 500, options.easing, childComplete ); } } function animComplete() { element.css( { visibility: "visible" } ); $( pieces ).remove(); done(); } } ); /*! * jQuery UI Effects Fade 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Fade Effect //>>group: Effects //>>description: Fades the element. //>>docs: http://api.jqueryui.com/fade-effect/ //>>demos: http://jqueryui.com/effect/ var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) { var show = options.mode === "show"; $( this ) .css( "opacity", show ? 0 : 1 ) .animate( { opacity: show ? 1 : 0 }, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); /*! * jQuery UI Effects Fold 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Fold Effect //>>group: Effects //>>description: Folds an element first horizontally and then vertically. //>>docs: http://api.jqueryui.com/fold-effect/ //>>demos: http://jqueryui.com/effect/ var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) { // Create element var element = $( this ), mode = options.mode, show = mode === "show", hide = mode === "hide", size = options.size || 15, percent = /([0-9]+)%/.exec( size ), horizFirst = !!options.horizFirst, ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ], duration = options.duration / 2, placeholder = $.effects.createPlaceholder( element ), start = element.cssClip(), animation1 = { clip: $.extend( {}, start ) }, animation2 = { clip: $.extend( {}, start ) }, distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ], queuelen = element.queue().length; if ( percent ) { size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; } animation1.clip[ ref[ 0 ] ] = size; animation2.clip[ ref[ 0 ] ] = size; animation2.clip[ ref[ 1 ] ] = 0; if ( show ) { element.cssClip( animation2.clip ); if ( placeholder ) { placeholder.css( $.effects.clipToBox( animation2 ) ); } animation2.clip = start; } // Animate element .queue( function( next ) { if ( placeholder ) { placeholder .animate( $.effects.clipToBox( animation1 ), duration, options.easing ) .animate( $.effects.clipToBox( animation2 ), duration, options.easing ); } next(); } ) .animate( animation1, duration, options.easing ) .animate( animation2, duration, options.easing ) .queue( done ); $.effects.unshift( element, queuelen, 4 ); } ); /*! * jQuery UI Effects Highlight 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Highlight Effect //>>group: Effects //>>description: Highlights the background of an element in a defined color for a custom duration. //>>docs: http://api.jqueryui.com/highlight-effect/ //>>demos: http://jqueryui.com/effect/ var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) { var element = $( this ), animation = { backgroundColor: element.css( "backgroundColor" ) }; if ( options.mode === "hide" ) { animation.opacity = 0; } $.effects.saveStyle( element ); element .css( { backgroundImage: "none", backgroundColor: options.color || "#ffff99" } ) .animate( animation, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); /*! * jQuery UI Effects Size 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Size Effect //>>group: Effects //>>description: Resize an element to a specified width and height. //>>docs: http://api.jqueryui.com/size-effect/ //>>demos: http://jqueryui.com/effect/ var effectsEffectSize = $.effects.define( "size", function( options, done ) { // Create element var baseline, factor, temp, element = $( this ), // Copy for children cProps = [ "fontSize" ], vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], // Set options mode = options.mode, restore = mode !== "effect", scale = options.scale || "both", origin = options.origin || [ "middle", "center" ], position = element.css( "position" ), pos = element.position(), original = $.effects.scaledDimensions( element ), from = options.from || original, to = options.to || $.effects.scaledDimensions( element, 0 ); $.effects.createPlaceholder( element ); if ( mode === "show" ) { temp = from; from = to; to = temp; } // Set scaling factor factor = { from: { y: from.height / original.height, x: from.width / original.width }, to: { y: to.height / original.height, x: to.width / original.width } }; // Scale the css box if ( scale === "box" || scale === "both" ) { // Vertical props scaling if ( factor.from.y !== factor.to.y ) { from = $.effects.setTransition( element, vProps, factor.from.y, from ); to = $.effects.setTransition( element, vProps, factor.to.y, to ); } // Horizontal props scaling if ( factor.from.x !== factor.to.x ) { from = $.effects.setTransition( element, hProps, factor.from.x, from ); to = $.effects.setTransition( element, hProps, factor.to.x, to ); } } // Scale the content if ( scale === "content" || scale === "both" ) { // Vertical props scaling if ( factor.from.y !== factor.to.y ) { from = $.effects.setTransition( element, cProps, factor.from.y, from ); to = $.effects.setTransition( element, cProps, factor.to.y, to ); } } // Adjust the position properties based on the provided origin points if ( origin ) { baseline = $.effects.getBaseline( origin, original ); from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top; from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left; to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top; to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left; } element.css( from ); // Animate the children if desired if ( scale === "content" || scale === "both" ) { vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps ); hProps = hProps.concat( [ "marginLeft", "marginRight" ] ); // Only animate children with width attributes specified // TODO: is this right? should we include anything with css width specified as well element.find( "*[width]" ).each( function() { var child = $( this ), childOriginal = $.effects.scaledDimensions( child ), childFrom = { height: childOriginal.height * factor.from.y, width: childOriginal.width * factor.from.x, outerHeight: childOriginal.outerHeight * factor.from.y, outerWidth: childOriginal.outerWidth * factor.from.x }, childTo = { height: childOriginal.height * factor.to.y, width: childOriginal.width * factor.to.x, outerHeight: childOriginal.height * factor.to.y, outerWidth: childOriginal.width * factor.to.x }; // Vertical props scaling if ( factor.from.y !== factor.to.y ) { childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom ); childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo ); } // Horizontal props scaling if ( factor.from.x !== factor.to.x ) { childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom ); childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo ); } if ( restore ) { $.effects.saveStyle( child ); } // Animate children child.css( childFrom ); child.animate( childTo, options.duration, options.easing, function() { // Restore children if ( restore ) { $.effects.restoreStyle( child ); } } ); } ); } // Animate element.animate( to, { queue: false, duration: options.duration, easing: options.easing, complete: function() { var offset = element.offset(); if ( to.opacity === 0 ) { element.css( "opacity", from.opacity ); } if ( !restore ) { element .css( "position", position === "static" ? "relative" : position ) .offset( offset ); // Need to save style here so that automatic style restoration // doesn't restore to the original styles from before the animation. $.effects.saveStyle( element ); } done(); } } ); } ); /*! * jQuery UI Effects Scale 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Scale Effect //>>group: Effects //>>description: Grows or shrinks an element and its content. //>>docs: http://api.jqueryui.com/scale-effect/ //>>demos: http://jqueryui.com/effect/ var effectsEffectScale = $.effects.define( "scale", function( options, done ) { // Create element var el = $( this ), mode = options.mode, percent = parseInt( options.percent, 10 ) || ( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ), newOptions = $.extend( true, { from: $.effects.scaledDimensions( el ), to: $.effects.scaledDimensions( el, percent, options.direction || "both" ), origin: options.origin || [ "middle", "center" ] }, options ); // Fade option to support puff if ( options.fade ) { newOptions.from.opacity = 1; newOptions.to.opacity = 0; } $.effects.effect.size.call( this, newOptions, done ); } ); /*! * jQuery UI Effects Puff 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Puff Effect //>>group: Effects //>>description: Creates a puff effect by scaling the element up and hiding it at the same time. //>>docs: http://api.jqueryui.com/puff-effect/ //>>demos: http://jqueryui.com/effect/ var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) { var newOptions = $.extend( true, {}, options, { fade: true, percent: parseInt( options.percent, 10 ) || 150 } ); $.effects.effect.scale.call( this, newOptions, done ); } ); /*! * jQuery UI Effects Pulsate 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Pulsate Effect //>>group: Effects //>>description: Pulsates an element n times by changing the opacity to zero and back. //>>docs: http://api.jqueryui.com/pulsate-effect/ //>>demos: http://jqueryui.com/effect/ var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) { var element = $( this ), mode = options.mode, show = mode === "show", hide = mode === "hide", showhide = show || hide, // Showing or hiding leaves off the "last" animation anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), duration = options.duration / anims, animateTo = 0, i = 1, queuelen = element.queue().length; if ( show || !element.is( ":visible" ) ) { element.css( "opacity", 0 ).show(); animateTo = 1; } // Anims - 1 opacity "toggles" for ( ; i < anims; i++ ) { element.animate( { opacity: animateTo }, duration, options.easing ); animateTo = 1 - animateTo; } element.animate( { opacity: animateTo }, duration, options.easing ); element.queue( done ); $.effects.unshift( element, queuelen, anims + 1 ); } ); /*! * jQuery UI Effects Shake 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Shake Effect //>>group: Effects //>>description: Shakes an element horizontally or vertically n times. //>>docs: http://api.jqueryui.com/shake-effect/ //>>demos: http://jqueryui.com/effect/ var effectsEffectShake = $.effects.define( "shake", function( options, done ) { var i = 1, element = $( this ), direction = options.direction || "left", distance = options.distance || 20, times = options.times || 3, anims = times * 2 + 1, speed = Math.round( options.duration / anims ), ref = ( direction === "up" || direction === "down" ) ? "top" : "left", positiveMotion = ( direction === "up" || direction === "left" ), animation = {}, animation1 = {}, animation2 = {}, queuelen = element.queue().length; $.effects.createPlaceholder( element ); // Animation animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; // Animate element.animate( animation, speed, options.easing ); // Shakes for ( ; i < times; i++ ) { element .animate( animation1, speed, options.easing ) .animate( animation2, speed, options.easing ); } element .animate( animation1, speed, options.easing ) .animate( animation, speed / 2, options.easing ) .queue( done ); $.effects.unshift( element, queuelen, anims + 1 ); } ); /*! * jQuery UI Effects Slide 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Slide Effect //>>group: Effects //>>description: Slides an element in and out of the viewport. //>>docs: http://api.jqueryui.com/slide-effect/ //>>demos: http://jqueryui.com/effect/ var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) { var startClip, startRef, element = $( this ), map = { up: [ "bottom", "top" ], down: [ "top", "bottom" ], left: [ "right", "left" ], right: [ "left", "right" ] }, mode = options.mode, direction = options.direction || "left", ref = ( direction === "up" || direction === "down" ) ? "top" : "left", positiveMotion = ( direction === "up" || direction === "left" ), distance = options.distance || element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ), animation = {}; $.effects.createPlaceholder( element ); startClip = element.cssClip(); startRef = element.position()[ ref ]; // Define hide animation animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef; animation.clip = element.cssClip(); animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ]; // Reverse the animation if we're showing if ( mode === "show" ) { element.cssClip( animation.clip ); element.css( ref, animation[ ref ] ); animation.clip = startClip; animation[ ref ] = startRef; } // Actually animate element.animate( animation, { queue: false, duration: options.duration, easing: options.easing, complete: done } ); } ); /*! * jQuery UI Effects Transfer 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Transfer Effect //>>group: Effects //>>description: Displays a transfer effect from one element to another. //>>docs: http://api.jqueryui.com/transfer-effect/ //>>demos: http://jqueryui.com/effect/ var effect; if ( $.uiBackCompat !== false ) { effect = $.effects.define( "transfer", function( options, done ) { $( this ).transfer( options, done ); } ); } var effectsEffectTransfer = effect; /*! * jQuery UI Focusable 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: :focusable Selector //>>group: Core //>>description: Selects elements which can be focused. //>>docs: http://api.jqueryui.com/focusable-selector/ // Selectors $.ui.focusable = function( element, hasTabindex ) { var map, mapName, img, focusableIfVisible, fieldset, nodeName = element.nodeName.toLowerCase(); if ( "area" === nodeName ) { map = element.parentNode; mapName = map.name; if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { return false; } img = $( "img[usemap='#" + mapName + "']" ); return img.length > 0 && img.is( ":visible" ); } if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) { focusableIfVisible = !element.disabled; if ( focusableIfVisible ) { // Form controls within a disabled fieldset are disabled. // However, controls within the fieldset's legend do not get disabled. // Since controls generally aren't placed inside legends, we skip // this portion of the check. fieldset = $( element ).closest( "fieldset" )[ 0 ]; if ( fieldset ) { focusableIfVisible = !fieldset.disabled; } } } else if ( "a" === nodeName ) { focusableIfVisible = element.href || hasTabindex; } else { focusableIfVisible = hasTabindex; } return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) ); }; // Support: IE 8 only // IE 8 doesn't resolve inherit to visible/hidden for computed values function visible( element ) { var visibility = element.css( "visibility" ); while ( visibility === "inherit" ) { element = element.parent(); visibility = element.css( "visibility" ); } return visibility !== "hidden"; } $.extend( $.expr[ ":" ], { focusable: function( element ) { return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); } } ); var focusable = $.ui.focusable; // Support: IE8 Only // IE8 does not support the form attribute and when it is supplied. It overwrites the form prop // with a string, so we need to find the proper form. var form = $.fn.form = function() { return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form ); }; /*! * jQuery UI Form Reset Mixin 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Form Reset Mixin //>>group: Core //>>description: Refresh input widgets when their form is reset //>>docs: http://api.jqueryui.com/form-reset-mixin/ var formResetMixin = $.ui.formResetMixin = { _formResetHandler: function() { var form = $( this ); // Wait for the form reset to actually happen before refreshing setTimeout( function() { var instances = form.data( "ui-form-reset-instances" ); $.each( instances, function() { this.refresh(); } ); } ); }, _bindFormResetHandler: function() { this.form = this.element.form(); if ( !this.form.length ) { return; } var instances = this.form.data( "ui-form-reset-instances" ) || []; if ( !instances.length ) { // We don't use _on() here because we use a single event handler per form this.form.on( "reset.ui-form-reset", this._formResetHandler ); } instances.push( this ); this.form.data( "ui-form-reset-instances", instances ); }, _unbindFormResetHandler: function() { if ( !this.form.length ) { return; } var instances = this.form.data( "ui-form-reset-instances" ); instances.splice( $.inArray( this, instances ), 1 ); if ( instances.length ) { this.form.data( "ui-form-reset-instances", instances ); } else { this.form .removeData( "ui-form-reset-instances" ) .off( "reset.ui-form-reset" ); } } }; /*! * jQuery UI Support for jQuery core 1.7.x 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license * */ //>>label: jQuery 1.7 Support //>>group: Core //>>description: Support version 1.7.x of jQuery core // Support: jQuery 1.7 only // Not a great way to check versions, but since we only support 1.7+ and only // need to detect <1.8, this is a simple check that should suffice. Checking // for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0 // and we'll never reach 1.70.0 (if we do, we certainly won't be supporting // 1.7 anymore). See #11197 for why we're not using feature detection. if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) { // Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight() // Unlike jQuery Core 1.8+, these only support numeric values to set the // dimensions in pixels $.each( [ "Width", "Height" ], function( i, name ) { var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], type = name.toLowerCase(), orig = { innerWidth: $.fn.innerWidth, innerHeight: $.fn.innerHeight, outerWidth: $.fn.outerWidth, outerHeight: $.fn.outerHeight }; function reduce( elem, size, border, margin ) { $.each( side, function() { size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; if ( border ) { size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; } if ( margin ) { size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; } } ); return size; } $.fn[ "inner" + name ] = function( size ) { if ( size === undefined ) { return orig[ "inner" + name ].call( this ); } return this.each( function() { $( this ).css( type, reduce( this, size ) + "px" ); } ); }; $.fn[ "outer" + name ] = function( size, margin ) { if ( typeof size !== "number" ) { return orig[ "outer" + name ].call( this, size ); } return this.each( function() { $( this ).css( type, reduce( this, size, true, margin ) + "px" ); } ); }; } ); $.fn.addBack = function( selector ) { return this.add( selector == null ? this.prevObject : this.prevObject.filter( selector ) ); }; } ; /*! * jQuery UI Keycode 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Keycode //>>group: Core //>>description: Provide keycodes as keynames //>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/ var keycode = $.ui.keyCode = { BACKSPACE: 8, COMMA: 188, DELETE: 46, DOWN: 40, END: 35, ENTER: 13, ESCAPE: 27, HOME: 36, LEFT: 37, PAGE_DOWN: 34, PAGE_UP: 33, PERIOD: 190, RIGHT: 39, SPACE: 32, TAB: 9, UP: 38 }; // Internal use only var escapeSelector = $.ui.escapeSelector = ( function() { var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g; return function( selector ) { return selector.replace( selectorEscape, "\\$1" ); }; } )(); /*! * jQuery UI Labels 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: labels //>>group: Core //>>description: Find all the labels associated with a given input //>>docs: http://api.jqueryui.com/labels/ var labels = $.fn.labels = function() { var ancestor, selector, id, labels, ancestors; // Check control.labels first if ( this[ 0 ].labels && this[ 0 ].labels.length ) { return this.pushStack( this[ 0 ].labels ); } // Support: IE <= 11, FF <= 37, Android <= 2.3 only // Above browsers do not support control.labels. Everything below is to support them // as well as document fragments. control.labels does not work on document fragments labels = this.eq( 0 ).parents( "label" ); // Look for the label based on the id id = this.attr( "id" ); if ( id ) { // We don't search against the document in case the element // is disconnected from the DOM ancestor = this.eq( 0 ).parents().last(); // Get a full set of top level ancestors ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() ); // Create a selector for the label based on the id selector = "label[for='" + $.ui.escapeSelector( id ) + "']"; labels = labels.add( ancestors.find( selector ).addBack( selector ) ); } // Return whatever we have found for labels return this.pushStack( labels ); }; /*! * jQuery UI Scroll Parent 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: scrollParent //>>group: Core //>>description: Get the closest ancestor element that is scrollable. //>>docs: http://api.jqueryui.com/scrollParent/ var scrollParent = $.fn.scrollParent = function( includeHidden ) { var position = this.css( "position" ), excludeStaticParent = position === "absolute", overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, scrollParent = this.parents().filter( function() { var parent = $( this ); if ( excludeStaticParent && parent.css( "position" ) === "static" ) { return false; } return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + parent.css( "overflow-x" ) ); } ).eq( 0 ); return position === "fixed" || !scrollParent.length ? $( this[ 0 ].ownerDocument || document ) : scrollParent; }; /*! * jQuery UI Tabbable 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: :tabbable Selector //>>group: Core //>>description: Selects elements which can be tabbed to. //>>docs: http://api.jqueryui.com/tabbable-selector/ var tabbable = $.extend( $.expr[ ":" ], { tabbable: function( element ) { var tabIndex = $.attr( element, "tabindex" ), hasTabindex = tabIndex != null; return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex ); } } ); /*! * jQuery UI Unique ID 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: uniqueId //>>group: Core //>>description: Functions to generate and remove uniqueId's //>>docs: http://api.jqueryui.com/uniqueId/ var uniqueId = $.fn.extend( { uniqueId: ( function() { var uuid = 0; return function() { return this.each( function() { if ( !this.id ) { this.id = "ui-id-" + ( ++uuid ); } } ); }; } )(), removeUniqueId: function() { return this.each( function() { if ( /^ui-id-\d+$/.test( this.id ) ) { $( this ).removeAttr( "id" ); } } ); } } ); /*! * jQuery UI Accordion 1.12.0 * http://jqueryui.com * * Copyright jQuery Foundation and other contributors * Released under the MIT license. * http://jquery.org/license */ //>>label: Accordion //>>group: Widgets // jscs:disable maximumLineLength //>>description: Displays collapsible content panels for presenting information in a limited amount of space. // jscs:enable maximumLineLength //>>docs: http://api.jqueryui.com/accordion/ //>>demos: http://jqueryui.com/accordion/ //>>css.structure: ../../themes/base/core.css //>>css.structure: ../../themes/base/accordion.css //>>css.theme: ../../themes/base/theme.css var widgetsAccordion = $.widget( "ui.accordion", { version: "1.12.0", options: { active: 0, animate: {}, classes: { "ui-accordion-header": "ui-corner-top", "ui-accordion-header-collapsed": "ui-corner-all", "ui-accordion-content": "ui-corner-bottom" }, collapsible: false, event: "click", header: "> li > :first-child, > :not(li):even", heightStyle: "auto", icons: { activeHeader: "ui-icon-triangle-1-s", header: "ui-icon-triangle-1-e" }, // Callbacks activate: null, beforeActivate: null }, hideProps: { borderTopWidth: "hide", borderBottomWidth: "hide", paddingTop: "hide", paddingBottom: "hide", height: "hide" }, showProps: { borderTopWidth: "show", borderBottomWidth: "show", paddingTop: "show", paddingBottom: "show", height: "show" }, _create: function() { var options = this.options; this.prevShow = this.prevHide = $(); this._addClass( "ui-accordion", "ui-widget ui-helper-reset" ); this.element.attr( "role", "tablist" ); // Don't allow collapsible: false and active: false / null if ( !options.collapsible && ( options.active === false || options.active == null ) ) { options.active = 0; } this._processPanels(); // handle negative values if ( options.active < 0 ) { options.active += this.headers.length; } this._refresh(); }, _getCreateEventData: function() { return { header: this.active, panel: !this.active.length ? $() : this.active.next() }; }, _createIcons: function() { var icon, children, icons = this.options.icons; if ( icons ) { icon = $( "" ); this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header ); icon.prependTo( this.headers ); children = this.active.children( ".ui-accordion-header-icon" ); this._removeClass( children, icons.header ) ._addClass( children, null, icons.activeHeader ) ._addClass( this.headers, "ui-accordion-icons" ); } }, _destroyIcons: function() { this._removeClass( this.headers, "ui-accordion-icons" ); this.headers.children( ".ui-accordion-header-icon" ).remove(); }, _destroy: function() { var contents; // Clean up main element this.element.removeAttr( "role" ); // Clean up headers this.headers .removeAttr( "role aria-expanded aria-selected aria-controls tabIndex" ) .removeUniqueId(); this._destroyIcons(); // Clean up content panels contents = this.headers.next() .css( "display", "" ) .removeAttr( "role aria-hidden aria-labelledby" ) .removeUniqueId(); if ( this.options.heightStyle !== "content" ) { contents.css( "height", "" ); } }, _setOption: function( key, value ) { if ( key === "active" ) { // _activate() will handle invalid values and update this.options this._activate( value ); return; } if ( key === "event" ) { if ( this.options.event ) { this._off( this.headers, this.options.event ); } this._setupEvents( value ); } this._super( key, value ); // Setting collapsible: false while collapsed; open first panel if ( key === "collapsible" && !value && this.options.active === false ) { this._activate( 0 ); } if ( key === "icons" ) { this._destroyIcons(); if ( value ) { this._createIcons(); } } }, _setOptionDisabled: function( value ) { this._super( value ); this.element.attr( "aria-disabled", value ); // Support: IE8 Only // #5332 / #6059 - opacity doesn't cascade to positioned elements in IE // so we need to add the disabled class to the headers and panels this._toggleClass( null, "ui-state-disabled", !!value ); this._toggleClass( this.headers.add( this.headers.next() ), null, "ui-state-disabled", !!value ); }, _keydown: function( event ) { if ( event.altKey || event.ctrlKey ) { return; } var keyCode = $.ui.keyCode, length = this.headers.length, currentIndex = this.headers.index( event.target ), toFocus = false; switch ( event.keyCode ) { case keyCode.RIGHT: case keyCode.DOWN: toFocus = this.headers[ ( currentIndex + 1 ) % length ]; break; case keyCode.LEFT: case keyCode.UP: toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; break; case keyCode.SPACE: case keyCode.ENTER: this._eventHandler( event ); break; case keyCode.HOME: toFocus = this.headers[ 0 ]; break; case keyCode.END: toFocus = this.headers[ length - 1 ]; break; } if ( toFocus ) { $( event.target ).attr( "tabIndex", -1 ); $( toFocus ).attr( "tabIndex", 0 ); $( toFocus ).trigger( "focus" ); event.preventDefault(); } }, _panelKeyDown: function( event ) { if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { $( event.currentTarget ).prev().trigger( "focus" ); } }, refresh: function() { var options = this.options; this._processPanels(); // Was collapsed or no panel if ( ( options.active === false && options.collapsible === true ) || !this.headers.length ) { options.active = false; this.active = $(); // active false only when collapsible is true } else if ( options.active === false ) { this._activate( 0 ); // was active, but active panel is gone } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { // all remaining panel are disabled if ( this.headers.length === this.headers.find( ".ui-state-disabled" ).length ) { options.active = false; this.active = $(); // activate previous panel } else { this._activate( Math.max( 0, options.active - 1 ) ); } // was active, active panel still exists } else { // make sure active index is correct options.active = this.headers.index( this.active ); } this._destroyIcons(); this._refresh(); }, _processPanels: function() { var prevHeaders = this.headers, prevPanels = this.panels; this.headers = this.element.find( this.options.header ); this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed", "ui-state-default" ); this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide(); this._addClass( this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content" ); // Avoid memory leaks (#10056) if ( prevPanels ) { this._off( prevHeaders.not( this.headers ) ); this._off( prevPanels.not( this.panels ) ); } }, _refresh: function() { var maxHeight, options = this.options, heightStyle = options.heightStyle, parent = this.element.parent(); this.active = this._findActive( options.active ); this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" ) ._removeClass( this.active, "ui-accordion-header-collapsed" ); this._addClass( this.active.next(), "ui-accordion-content-active" ); this.active.next().show(); this.headers .attr( "role", "tab" ) .each( function() { var header = $( this ), headerId = header.uniqueId().attr( "id" ), panel = header.next(), panelId = panel.uniqueId().attr( "id" ); header.attr( "aria-controls", panelId ); panel.attr( "aria-labelledby", headerId ); } ) .next() .attr( "role", "tabpanel" ); this.headers .not( this.active ) .attr( { "aria-selected": "false", "aria-expanded": "false", tabIndex: -1 } ) .next() .attr( { "aria-hidden": "true" } ) .hide(); // Make sure at least one header is in the tab order if ( !this.active.length ) { this.headers.eq( 0 ).attr( "tabIndex", 0 ); } else { this.active.attr( { "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 } ) .next() .attr( { "aria-hidden": "false" } ); } this._createIcons(); this._setupEvents( options.event ); if ( heightStyle === "fill" ) { maxHeight = parent.height(); this.element.siblings( ":visible" ).each( function() { var elem = $( this ), position = elem.css( "position" ); if ( position === "absolute" || position === "fixed" ) { return; } maxHeight -= elem.outerHeight( true ); } ); this.headers.each( function() { maxHeight -= $( this ).outerHeight( true ); } ); this.headers.next() .each( function() { $( this ).height( Math.max( 0, maxHeight - $( this ).innerHeight() + $( this ).height() ) ); } ) .css( "overflow", "auto" ); } else if ( heightStyle === "auto" ) { maxHeight = 0; this.headers.next() .each( function() { var isVisible = $( this ).is( ":visible" ); if ( !isVisible ) { $( this ).show(); } maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); if ( !isVisible ) { $( this ).hide(); } } ) .height( maxHeight ); } }, _activate: function( index ) { var active = this._findActive( index )[ 0 ]; // Trying to activate the already active panel if ( active === this.active[ 0 ] ) { return; } // Trying to collapse, simulate a click on the currently active header active = active || this.active[ 0 ]; this._eventHandler( { target: active, currentTarget: active, preventDefault: $.noop } ); }, _findActive: function( selector ) { return typeof selector === "number" ? this.headers.eq( selector ) : $(); }, _setupEvents: function( event ) { var events = { keydown: "_keydown" }; if ( event ) { $.each( event.split( " " ), function( index, eventName ) { events[ eventName ] = "_eventHandler"; } ); } this._off( this.headers.add( this.headers.next() ) ); this._on( this.headers, events ); this._on( this.headers.next(), { keydown: "_panelKeyDown" } ); this._hoverable( this.headers ); this._focusable( this.headers ); }, _eventHandler: function( event ) { var activeChildren, clickedChildren, options = this.options, active = this.active, clicked = $( event.currentTarget ), clickedIsActive = clicked[ 0 ] === active[ 0 ], collapsing = clickedIsActive && options.collapsible, toShow = collapsing ? $() : clicked.next(), toHide = active.next(), eventData = { oldHeader: active, oldPanel: toHide, newHeader: collapsing ? $() : clicked, newPanel: toShow }; event.preventDefault(); if ( // click on active header, but not collapsible ( clickedIsActive && !options.collapsible ) || // allow canceling activation ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { return; } options.active = collapsing ? false : this.headers.index( clicked ); // When the call to ._toggle() comes after the class changes // it causes a very odd bug in IE 8 (see #6720) this.active = clickedIsActive ? $() : clicked; this._toggle( eventData ); // Switch classes // corner classes on the previously active header stay after the animation this._removeClass( active, "ui-accordion-header-active", "ui-state-active" ); if ( options.icons ) { activeChildren = active.children( ".ui-accordion-header-icon" ); this._removeClass( activeChildren, null, options.icons.activeHeader ) ._addClass( activeChildren, null, options.icons.header ); } if ( !clickedIsActive ) { this._removeClass( clicked, "ui-accordion-header-collapsed" ) ._addClass( clicked, "ui-accordion-header-active", "ui-state-active" ); if ( options.icons ) { clickedChildren = clicked.children( ".ui-accordion-header-icon" ); this._removeClass( clickedChildren, null, options.icons.header ) ._addClass( clickedChildren, null, options.icons.activeHeader ); } this._addClass( clicked.next(), "ui-accordion-content-active" ); } }, _toggle: function( data ) { var toShow = data.newPanel, toHide = this.prevShow.length ? this.prevShow : data.oldPanel; // Handle activating a panel during the animation for another activation this.prevShow.add( this.prevHide ).stop( true, true ); this.prevShow = toShow; this.prevHide = toHide; if ( this.options.animate ) { this._animate( toShow, toHide, data ); } else { toHide.hide(); toShow.show(); this._toggleComplete( data ); } toHide.attr( { "aria-hidden": "true" } ); toHide.prev().attr( { "aria-selected": "false", "aria-expanded": "false" } ); // if we're switching panels, remove the old header from the tab order // if we're opening from collapsed state, remove the previous header from the tab order // if we're collapsing, then keep the collapsing header in the tab order if ( toShow.length && toHide.length ) { toHide.prev().attr( { "tabIndex": -1, "aria-expanded": "false" } ); } else if ( toShow.length ) { this.headers.filter( function() { return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0; } ) .attr( "tabIndex", -1 ); } toShow .attr( "aria-hidden", "false" ) .prev() .attr( { "aria-selected": "true", "aria-expanded": "true", tabIndex: 0 } ); }, _animate: function( toShow, toHide, data ) { var total, easing, duration, that = this, adjust = 0, boxSizing = toShow.css( "box-sizing" ), down = toShow.length && ( !toHide.length || ( toShow.index() < toHide.index() ) ), animate = this.options.animate || {}, options = down && animate.down || animate, complete = function() { that._toggleComplete( data ); }; if ( typeof options === "number" ) { duration = options; } if ( typeof options === "string" ) { easing = options; } // fall back from options to animation in case of partial down settings easing = easing || options.easing || animate.easing; duration = duration || options.duration || animate.duration; if ( !toHide.length ) { return toShow.animate( this.showProps, duration, easing, complete ); } if ( !toShow.length ) { return toHide.animate( this.hideProps, duration, easing, complete ); } total = toShow.show().outerHeight(); toHide.animate( this.hideProps, { duration: duration, easing: easing, step: function( now, fx ) { fx.now = Math.round( now ); } } ); toShow .hide() .animate( this.showProps, { duration: duration, easing: easing, complete: complete, step: function( now, fx ) { fx.now = Math.round( now ); if ( fx.prop !== "height" ) { if ( boxSizing === "content-box" ) { adjust += fx.now; } } else if ( that.options.heightStyle !== "content" ) { fx.now = Math.round( total - toHide.outerHeight() - adjust ); adjust = 0; } } } ); }, _toggleComplete: function( data ) { var toHide = data.oldPanel, prev = toHide.prev(); this._removeClass( toHide, "ui-accordion-content-active" ); this._removeClass( prev, "ui-accordion-header-active" ) ._addClass( prev, "ui-accordion-header-collapsed" ); // Work around for rendering bug in IE (#5421) if ( toHide.length ) { toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className; } this._trigger( "activate", null, data ); } } ); var safeActiveElement = $.ui.safeActiveElement = function( document ) { var activeElement; // Support: IE 9 only // IE9 throws an "Unspecified error" accessing document.activeElement from an '; } } } link.remove(); $(iframes) .appendTo('body') .ready(function() { setTimeout(function() { $(iframes).each(function() { $('#' + $(this).attr('id')).remove(); }); }, 20000 + (10000 * i)); // give 20 sec + 10 sec for each file to be saved }); fm.trigger('download', {files : files}); dfrd.resolve(); }); fileCnt = files.length; urls = []; for (i = 0; i < files.length; i++) { fm.openUrl(files[i].hash, true, function(v) { v && urls.push(v); if (--fileCnt < 1) { getUrlDfrd.resolve(urls); } }); } return dfrd; } }; }; application/library/js/commands/view.js000064400000005440147577724760014275 0ustar00/** * @class elFinder command "view" * Change current directory view (icons/list) * * @author Dmitry (dio) Levashov **/ elFinder.prototype.commands.view = function() { "use strict"; var self = this, fm = this.fm, subMenuRaw; this.value = fm.viewType; this.alwaysEnabled = true; this.updateOnSelect = false; this.options = { ui : 'viewbutton'}; this.getstate = function() { return 0; }; this.extra = { icon: 'menu', node: $('') .attr({title: fm.i18n('viewtype')}) .on('click touchstart', function(e){ if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) { return; } var node = $(this); e.stopPropagation(); e.preventDefault(); fm.trigger('contextmenu', { raw: getSubMenuRaw(), x: node.offset().left, y: node.offset().top }); }) }; this.exec = function() { var self = this, value = this.value == 'list' ? 'icons' : 'list'; fm.storage('view', value); return fm.lazy(function() { fm.viewchange(); self.update(void(0), value); this.resolve(); }); }; fm.bind('init', function() { subMenuRaw = (function() { var cwd = fm.getUI('cwd'), raws = [], sizeNames = fm.options.uiOptions.cwd.iconsView.sizeNames, max = fm.options.uiOptions.cwd.iconsView.sizeMax, i, size; for (i = 0; i <= max; i++) { raws.push( { label : fm.i18n(sizeNames[i] || ('Size-' + i + ' icons')), icon : 'view', callback : (function(s) { return function() { cwd.trigger('iconpref', {size: s}); fm.storage('iconsize', s); if (self.value === 'list') { self.exec(); } }; })(i) } ); } raws.push('|'); raws.push( { label : fm.i18n('viewlist'), icon : 'view-list', callback : function() { if (self.value !== 'list') { self.exec(); } } } ); return raws; })(); }).bind('contextmenucreate', function() { self.extra = { icon: 'menu', node: $('') .attr({title: fm.i18n('cmdview')}) .on('click touchstart', function(e){ if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) { return; } var node = $(this), raw = subMenuRaw.concat(), idx, i; if (self.value === 'list') { idx = subMenuRaw.length - 1; } else { idx = parseInt(fm.storage('iconsize') || 0); } for (i = 0; i < subMenuRaw.length; i++) { if (subMenuRaw[i] !== '|') { subMenuRaw[i].options = (i === idx? {'className': 'ui-state-active'} : void(0)) ; } } e.stopPropagation(); e.preventDefault(); fm.trigger('contextmenu', { raw: subMenuRaw, x: node.offset().left, y: node.offset().top }); }) }; }); }; application/library/js/commands/mkdir.js000064400000005003147577724760014424 0ustar00/** * @class elFinder command "mkdir" * Create new folder * * @author Dmitry (dio) Levashov **/ elFinder.prototype.commands.mkdir = function() { "use strict"; var fm = this.fm, self = this, curOrg; this.value = ''; this.disableOnSearch = true; this.updateOnSelect = false; this.syncTitleOnChange = true; this.mime = 'directory'; this.prefix = 'untitled folder'; this.exec = function(select, cOpts) { var onCwd; if (select && select.length && cOpts && cOpts._currentType && cOpts._currentType === 'navbar') { this.origin = cOpts._currentType; this.data = { target: select[0] }; } else { onCwd = fm.cwd().hash === select[0]; this.origin = curOrg && !onCwd? curOrg : 'cwd'; delete this.data; } if (! select && ! this.options.intoNewFolderToolbtn) { fm.getUI('cwd').trigger('unselectall'); } //this.move = (!onCwd && curOrg !== 'navbar' && fm.selected().length)? true : false; this.move = this.value === fm.i18n('cmdmkdirin'); return $.proxy(fm.res('mixin', 'make'), self)(); }; this.shortcuts = [{ pattern : 'ctrl+shift+n' }]; this.init = function() { if (this.options.intoNewFolderToolbtn) { this.syncTitleOnChange = true; } }; fm.bind('select contextmenucreate closecontextmenu', function(e) { var sel = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected(); self.className = 'mkdir'; curOrg = e.data && sel.length? (e.data.origin || e.data.type || '') : ''; if (!self.options.intoNewFolderToolbtn && curOrg === '') { curOrg = 'cwd'; } if (sel.length && curOrg !== 'navbar' && curOrg !== 'cwd' && fm.cwd().hash !== sel[0]) { self.title = fm.i18n('cmdmkdirin'); self.className += ' elfinder-button-icon-mkdirin'; } else { self.title = fm.i18n('cmdmkdir'); } if (e.type !== 'closecontextmenu') { self.update(void(0), self.title); } else { requestAnimationFrame(function() { self.update(void(0), self.title); }); } }); this.getstate = function(select) { var cwd = fm.cwd(), sel = (curOrg === 'navbar' || (select && select[0] !== cwd.hash))? this.files(select || fm.selected()) : [], cnt = sel.length, filter = function(files) { var fres = true; return $.grep(files, function(f) { fres = fres && f.read && ! f.locked? true : false; return fres; }); }; if (curOrg === 'navbar') { return cnt && sel[0].write && sel[0].read? 0 : -1; } else { return cwd.write && (!cnt || filter(sel).length == cnt)? 0 : -1; } }; }; application/library/js/commands/up.js000064400000001301147577724760013737 0ustar00/** * @class elFinder command "up" * Go into parent directory * * @author Dmitry (dio) Levashov **/ (elFinder.prototype.commands.up = function() { "use strict"; this.alwaysEnabled = true; this.updateOnSelect = false; this.shortcuts = [{ pattern : 'ctrl+up' }]; this.getstate = function() { return this.fm.cwd().phash ? 0 : -1; }; this.exec = function() { var fm = this.fm, cwdhash = fm.cwd().hash; return this.fm.cwd().phash ? this.fm.exec('open', this.fm.cwd().phash).done(function() { fm.one('opendone', function() { fm.selectfiles({files : [cwdhash]}); }); }) : $.Deferred().reject(); }; }).prototype = { forceLoad : true }; // this is required command application/library/js/commands/rm.js000064400000034512147577724760013743 0ustar00/** * @class elFinder command "rm" * Delete files * * @author Dmitry (dio) Levashov * @author Naoki Sawada **/ elFinder.prototype.commands.rm = function() { "use strict"; var self = this, fm = this.fm, tpl = '
    {title}
    {desc}
    ', confirm = function(dfrd, targets, files, tHash, addTexts) { var cnt = targets.length, cwd = fm.cwd().hash, descs = [], spinner = fm.i18n('calc') + '', dialog, text, tmb, size, f, fname; if (cnt > 1) { size = 0; $.each(files, function(h, f) { if (f.size && f.size != 'unknown' && f.mime !== 'directory') { var s = parseInt(f.size); if (s >= 0 && size >= 0) { size += s; } } else { size = 'unknown'; return false; } }); getSize = (size === 'unknown'); descs.push(fm.i18n('size')+': '+(getSize? spinner : fm.formatSize(size))); text = [$(tpl.replace('{class}', 'elfinder-cwd-icon-group').replace('{title}', '' + fm.i18n('items')+ ': ' + cnt + '').replace('{desc}', descs.join('
    ')))]; } else { f = files[0]; tmb = fm.tmb(f); getSize = (f.mime === 'directory'); descs.push(fm.i18n('size')+': '+(getSize? spinner : fm.formatSize(f.size))); descs.push(fm.i18n('modify')+': '+fm.formatDate(f)); fname = fm.escape(f.i18 || f.name).replace(/([_.])/g, '​$1'); text = [$(tpl.replace('{class}', fm.mime2class(f.mime)).replace('{title}', '' + fname + '').replace('{desc}', descs.join('
    ')))]; } if (addTexts) { text = text.concat(addTexts); } text.push(tHash? 'confirmTrash' : 'confirmRm'); dialog = fm.confirm({ title : self.title, text : text, accept : { label : 'btnRm', callback : function() { if (tHash) { self.toTrash(dfrd, targets, tHash); } else { remove(dfrd, targets); } } }, cancel : { label : 'btnCancel', callback : function() { fm.unlockfiles({files : targets}); if (targets.length === 1 && fm.file(targets[0]).phash !== cwd) { fm.select({selected : targets}); } else { fm.selectfiles({files : targets}); } dfrd.reject(); } } }); // load thumbnail if (tmb) { $('') .on('load', function() { dialog.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')"); }) .attr('src', tmb.url); } if (getSize) { getSize = fm.getSize($.map(files, function(f) { return f.mime === 'directory'? f.hash : null; })).done(function(data) { dialog.find('span.elfinder-spinner').parent().html(fm.i18n('size')+': '+data.formated); }).fail(function() { dialog.find('span.elfinder-spinner').parent().html(fm.i18n('size')+': '+fm.i18n('unknown')); }).always(function() { getSize = false; }); } }, toTrash = function(dfrd, targets, tHash) { var dsts = {}, itemCnt = targets.length, maxCnt = self.options.toTrashMaxItems, checkDirs = [], reqDfd = $.Deferred(), req, dirs, cnt; if (itemCnt > maxCnt) { self.confirm(dfrd, targets, self.files(targets), null, [fm.i18n('tooManyToTrash')]); return; } // Directory preparation preparation and directory enumeration $.each(targets, function(i, h) { var file = fm.file(h), path = fm.path(h).replace(/\\/g, '/'), m = path.match(/^[^\/]+?(\/(?:[^\/]+?\/)*)[^\/]+?$/); if (file) { if (m) { m[1] = m[1].replace(/(^\/.*?)\/?$/, '$1'); if (! dsts[m[1]]) { dsts[m[1]] = []; } dsts[m[1]].push(h); } if (file.mime === 'directory') { checkDirs.push(h); } } }); // Check directory information if (checkDirs.length) { req = fm.request({ data : {cmd : 'size', targets : checkDirs}, notify : {type: 'readdir', cnt: 1, hideCnt: true}, preventDefault : true }).done(function(data) { var cnt = 0; data.fileCnt && (cnt += parseInt(data.fileCnt)); data.dirCnt && (cnt += parseInt(data.dirCnt)); reqDfd[cnt > maxCnt ? 'reject' : 'resolve'](); }).fail(function() { reqDfd.reject(); }); setTimeout(function() { var xhr = (req && req.xhr)? req.xhr : null; if (xhr && xhr.state() == 'pending') { req.syncOnFail(false); req.reject(); reqDfd.reject(); } }, self.options.infoCheckWait * 1000); } else { reqDfd.resolve(); } // Directory creation and paste command execution reqDfd.done(function() { dirs = Object.keys(dsts); cnt = dirs.length; if (cnt) { fm.request({ data : {cmd : 'mkdir', target : tHash, dirs : dirs}, notify : {type : 'chkdir', cnt : cnt}, preventFail : true }) .fail(function(error) { dfrd.reject(error); fm.unlockfiles({files : targets}); }) .done(function(data) { var margeRes = function(data, phash, reqData) { var undo, prevUndo, redo, prevRedo; $.each(data, function(k, v) { if (Array.isArray(v)) { if (res[k]) { res[k] = res[k].concat(v); } else { res[k] = v; } } }); if (data.sync) { res.sync = 1; } if (data.added && data.added.length) { undo = function() { var targets = [], dirs = $.map(data.added, function(f) { return f.mime === 'directory'? f.hash : null; }); $.each(data.added, function(i, f) { if ($.inArray(f.phash, dirs) === -1) { targets.push(f.hash); } }); return fm.exec('restore', targets, {noToast: true}); }; redo = function() { return fm.request({ data : reqData, notify : {type : 'redo', cnt : targets.length} }); }; if (res.undo) { prevUndo = res.undo; res.undo = function() { undo(); prevUndo(); }; } else { res.undo = undo; } if (res.redo) { prevRedo = res.redo; res.redo = function() { redo(); prevRedo(); }; } else { res.redo = redo; } } }, err = ['errTrash'], res = {}, hasNtf = function() { return fm.ui.notify.children('.elfinder-notify-trash').length; }, hashes, tm, prg, prgSt; if (hashes = data.hashes) { prg = 1 / cnt * 100; prgSt = cnt === 1? 100 : 5; tm = setTimeout(function() { fm.notify({type : 'trash', cnt : 1, hideCnt : true, progress : prgSt}); }, fm.notifyDelay); $.each(dsts, function(dir, files) { var phash = fm.file(files[0]).phash, reqData; if (hashes[dir]) { reqData = {cmd : 'paste', dst : hashes[dir], targets : files, cut : 1}; fm.request({ data : reqData, preventDefault : true }) .fail(function(error) { if (error) { err = err.concat(error); } }) .done(function(data) { data = fm.normalize(data); fm.updateCache(data); margeRes(data, phash, reqData); if (data.warning) { err = err.concat(data.warning); delete data.warning; } // fire some event to update cache/ui data.removed && data.removed.length && fm.remove(data); data.added && data.added.length && fm.add(data); data.changed && data.changed.length && fm.change(data); // fire event with command name fm.trigger('paste', data); // fire event with command name + 'done' fm.trigger('pastedone'); // force update content data.sync && fm.sync(); }) .always(function() { var hashes = [], addTexts, end = 2; if (hasNtf()) { fm.notify({type : 'trash', cnt : 0, hideCnt : true, progress : prg}); } else { prgSt+= prg; } if (--cnt < 1) { tm && clearTimeout(tm); hasNtf() && fm.notify({type : 'trash', cnt : -1}); fm.unlockfiles({files : targets}); if (Object.keys(res).length) { if (err.length > 1) { if (res.removed || res.removed.length) { hashes = $.grep(targets, function(h) { return $.inArray(h, res.removed) === -1? true : false; }); } if (hashes.length) { if (err.length > end) { end = (fm.messages[err[end-1]] || '').indexOf('$') === -1? end : end + 1; } dfrd.reject(); fm.exec('rm', hashes, { addTexts: err.slice(0, end), forceRm: true }); } else { fm.error(err); } } res._noSound = true; if (res.undo && res.redo) { res.undo = { cmd : 'trash', callback : res.undo, }; res.redo = { cmd : 'trash', callback : res.redo }; } dfrd.resolve(res); } else { dfrd.reject(err); } } }); } }); } else { dfrd.reject('errFolderNotFound'); fm.unlockfiles({files : targets}); } }); } else { dfrd.reject(['error', 'The folder hierarchy to be deleting can not be determined.']); fm.unlockfiles({files : targets}); } }).fail(function() { self.confirm(dfrd, targets, self.files(targets), null, [fm.i18n('tooManyToTrash')]); }); }, remove = function(dfrd, targets, quiet) { var notify = quiet? {} : {type : 'rm', cnt : targets.length}; fm.request({ data : {cmd : 'rm', targets : targets}, notify : notify, preventFail : true }) .fail(function(error) { dfrd.reject(error); }) .done(function(data) { if (data.error || data.warning) { data.sync = true; } dfrd.resolve(data); }) .always(function() { fm.unlockfiles({files : targets}); }); }, getTHash = function(targets) { var thash = null, root1st; if (targets && targets.length) { if (targets.length > 1 && fm.searchStatus.state === 2) { root1st = fm.file(fm.root(targets[0])).volumeid; if (!$.grep(targets, function(h) { return h.indexOf(root1st) !== 0? true : false ; }).length) { thash = fm.option('trashHash', targets[0]); } } else { thash = fm.option('trashHash', targets[0]); } } return thash; }, getSize = false; // for to be able to overwrite this.confirm = confirm; this.toTrash = toTrash; this.remove = remove; this.syncTitleOnChange = true; this.updateOnSelect = false; this.shortcuts = [{ pattern : 'delete ctrl+backspace shift+delete' }]; this.value = 'rm'; this.init = function() { var update = function(origin) { var targets; delete self.extra; self.title = fm.i18n('cmd' + self.value); self.className = self.value; self.button && self.button.children('span.elfinder-button-icon')[self.value === 'trash'? 'addClass' : 'removeClass']('elfinder-button-icon-trash'); if (origin && origin !== 'cwd' && (self.state > -1 || origin === 'navbar')) { if (self.value === 'trash') { self.extra = { icon: 'rm', node: $('') .attr({title: fm.i18n('cmdrm')}) .on('ready', function(e, data) { targets = data.targets; }) .on('click touchstart', function(e){ if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) { return; } e.stopPropagation(); e.preventDefault(); fm.getUI().trigger('click'); // to close the context menu immediately fm.exec('rm', targets, {_userAction: true, forceRm : true}); }) }; } } }; // re-assign for extended command self = this; fm = this.fm; // bind function of change self.change(function() { update(); }); fm.bind('contextmenucreate', function(e) { update(e.data.type); }); }; this.getstate = function(select) { var sel = this.hashes(select), filter = function(files) { var fres = true; return $.grep(files, function(h) { var f; fres = fres && (f = fm.file(h)) && ! f.locked && ! fm.isRoot(f)? true : false; return fres; }); }; return sel.length && filter(sel).length == sel.length ? 0 : -1; }; this.exec = function(hashes, cOpts) { var opts = cOpts || {}, dfrd = $.Deferred() .always(function() { if (getSize && getSize.state && getSize.state() === 'pending') { getSize.reject(); } }) .fail(function(error) { error && fm.error(error); }).done(function(data) { !opts.quiet && !data._noSound && data.removed && data.removed.length && fm.trigger('playsound', {soundFile : 'rm.wav'}); }), files = self.files(hashes), cnt = files.length, tHash = null, addTexts = opts.addTexts? opts.addTexts : null, forceRm = opts.forceRm, quiet = opts.quiet, targets; if (! cnt) { return dfrd.reject(); } $.each(files, function(i, file) { if (fm.isRoot(file)) { return !dfrd.reject(['errRm', file.name, 'errPerm']); } if (file.locked) { return !dfrd.reject(['errLocked', file.name]); } }); if (dfrd.state() === 'pending') { targets = self.hashes(hashes); cnt = files.length; if (forceRm || (self.event && self.event.originalEvent && self.event.originalEvent.shiftKey)) { tHash = ''; self.title = fm.i18n('cmdrm'); } if (tHash === null) { tHash = getTHash(targets); } fm.lockfiles({files : targets}); if (tHash && self.options.quickTrash) { self.toTrash(dfrd, targets, tHash); } else { if (quiet) { remove(dfrd, targets, quiet); } else { self.confirm(dfrd, targets, files, tHash, addTexts); } } } return dfrd; }; fm.bind('select contextmenucreate closecontextmenu', function(e) { var targets = (e.data? (e.data.selected || e.data.targets) : null) || fm.selected(); if (targets && targets.length) { self.update(void(0), (targets? getTHash(targets) : fm.option('trashHash'))? 'trash' : 'rm'); } }); }; application/library/js/commands/quicklook.plugins.js000064400000164132147577724760017010 0ustar00elFinder.prototype.commands.quicklook.plugins = [ /** * Images preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var mimes = ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'], getDimSize = ql.fm.returnBytes((ql.options.getDimThreshold || 0)), preview = ql.preview, WebP, flipMime; // webp support WebP = new Image(); WebP.onload = WebP.onerror = function() { if (WebP.height == 2) { mimes.push('image/webp'); } }; WebP.src='data:image/webp;base64,UklGRjoAAABXRUJQVlA4IC4AAACyAgCdASoCAAIALmk0mk0iIiIiIgBoSygABc6WWgAA/veff/0PP8bA//LwYAAA'; // what kind of images we can display $.each(navigator.mimeTypes, function(i, o) { var mime = o.type; if (mime.indexOf('image/') === 0 && $.inArray(mime, mimes)) { mimes.push(mime); } }); preview.on(ql.evUpdate, function(e) { var fm = ql.fm, file = e.file, showed = false, dimreq = null, setdim = function(dim) { var rfile = fm.file(file.hash); rfile.width = dim[0]; rfile.height = dim[1]; }, show = function() { var elm, varelm, memSize, width, height, prop; dimreq && dimreq.state && dimreq.state() === 'pending' && dimreq.reject(); if (showed) { return; } showed = true; elm = img.get(0); memSize = file.width && file.height? {w: file.width, h: file.height} : (elm.naturalWidth? null : {w: img.width(), h: img.height()}); memSize && img.removeAttr('width').removeAttr('height'); width = file.width || elm.naturalWidth || elm.width || img.width(); height = file.height || elm.naturalHeight || elm.height || img.height(); if (!file.width || !file.height) { setdim([width, height]); } memSize && img.width(memSize.w).height(memSize.h); prop = (width/height).toFixed(2); preview.on('changesize', function() { var pw = parseInt(preview.width()), ph = parseInt(preview.height()), w, h; if (prop < (pw/ph).toFixed(2)) { h = ph; w = Math.floor(h * prop); } else { w = pw; h = Math.floor(w/prop); } img.width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0); }) .trigger('changesize'); //show image img.fadeIn(100); }, hideInfo = function() { loading.remove(); // hide info/icon ql.hideinfo(); }, url, img, loading, prog, m, opDfd; if (!flipMime) { flipMime = fm.arrayFlip(mimes); } if (flipMime[file.mime] && ql.dispInlineRegex.test(file.mime)) { // this is our file - stop event propagation e.stopImmediatePropagation(); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); img = $('') .hide() .appendTo(preview) .on('load', function() { hideInfo(); show(); }) .on('error', function() { loading.remove(); }); opDfd = fm.openUrl(file.hash, false, function(url) { img.attr('src', url); }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); if (file.width && file.height) { show(); } else if (file.size > getDimSize) { dimreq = fm.request({ data : {cmd : 'dim', target : file.hash}, preventDefault : true }) .done(function(data) { if (data.dim) { var dim = data.dim.split('x'); file.width = dim[0]; file.height = dim[1]; setdim(dim); show(); } }); } } }); }, /** * TIFF image preview * * @param object ql elFinder.commands.quicklook */ function(ql) { "use strict"; var fm = ql.fm, mime = 'image/tiff', preview = ql.preview; if (window.Worker && window.Uint8Array) { preview.on(ql.evUpdate, function(e) { var file = e.file, err = function(e) { wk && wk.terminate(); loading.remove(); fm.debug('error', e); }, setdim = function(dim) { var rfile = fm.file(file.hash); rfile.width = dim[0]; rfile.height = dim[1]; }, loading, prog, url, base, wk, opDfd; if (file.mime === mime) { e.stopImmediatePropagation(); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); // stop loading on change file if not loaded yet preview.one('change', function() { wk && wk.terminate(); loading.remove(); }); opDfd = fm.getContents(file.hash, 'arraybuffer', { progressBar: prog }).done(function(data) { if (data) { base = $('
    ').css({width:'100%',height:'100%'}).hide().appendTo(preview); try { wk = fm.getWorker(); wk.onmessage = function(res) { var data = res.data, cv, co, id, prop; wk && wk.terminate(); cv = document.createElement('canvas'); co = cv.getContext('2d'); cv.width = data.width; cv.height = data.height; id = co.createImageData(data.width, data.height); (id).data.set(new Uint8Array(data.image)); co.putImageData(id, 0, 0); base.append(cv).show(); loading.remove(); prop = (data.width/data.height).toFixed(2); preview.on('changesize', function() { var pw = parseInt(preview.width()), ph = parseInt(preview.height()), w, h; if (prop < (pw/ph).toFixed(2)) { h = ph; w = Math.floor(h * prop); } else { w = pw; h = Math.floor(w/prop); } $(cv).width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0); }).trigger('changesize'); if (!file.width || !file.height) { setdim([data.width, data.height]); } ql.hideinfo(); }; wk.onerror = err; wk.postMessage({ scripts: [fm.options.cdns.tiff, fm.getWorkerUrl('quicklook.tiff.js')], data: { data: data } }); } catch(e) { err(e); } } else { err(); } }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } }); } }, /** * PSD(Adobe Photoshop data) preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mimes = fm.arrayFlip(['image/vnd.adobe.photoshop', 'image/x-photoshop']), preview = ql.preview, load = function(url, img, loading) { try { fm.replaceXhrSend(); PSD.fromURL(url).then(function(psd) { var prop; img.attr('src', psd.image.toBase64()); requestAnimationFrame(function() { prop = (img.width()/img.height()).toFixed(2); preview.on('changesize', function() { var pw = parseInt(preview.width()), ph = parseInt(preview.height()), w, h; if (prop < (pw/ph).toFixed(2)) { h = ph; w = Math.floor(h * prop); } else { w = pw; h = Math.floor(w/prop); } img.width(w).height(h).css('margin-top', h < ph ? Math.floor((ph - h)/2) : 0); }).trigger('changesize'); loading.remove(); // hide info/icon ql.hideinfo(); //show image img.fadeIn(100); }); }, function() { loading.remove(); img.remove(); }); fm.restoreXhrSend(); } catch(e) { fm.restoreXhrSend(); loading.remove(); img.remove(); } }, PSD; preview.on(ql.evUpdate, function(e) { var file = e.file, url, img, loading, prog, m, _define, _require, opDfd; if (mimes[file.mime] && fm.options.cdns.psd && ! fm.UA.ltIE10 && ql.dispInlineRegex.test(file.mime)) { // this is our file - stop event propagation e.stopImmediatePropagation(); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) { if (url) { img = $('').hide().appendTo(preview); if (PSD) { load(url, img, loading); } else { _define = window.define; _require = window.require; window.require = null; window.define = null; fm.loadScript( [ fm.options.cdns.psd ], function() { PSD = require('psd'); _define? (window.define = _define) : (delete window.define); _require? (window.require = _require) : (delete window.require); load(url, img, loading); } ); } } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } }); }, /** * HTML preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mimes = fm.arrayFlip(['text/html', 'application/xhtml+xml']), preview = ql.preview; preview.on(ql.evUpdate, function(e) { var file = e.file, jqxhr, loading, prog; if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax)) { e.stopImmediatePropagation(); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); // stop loading on change file if not loaded yet preview.one('change', function() { jqxhr.state() == 'pending' && jqxhr.reject(); }).addClass('elfinder-overflow-auto'); jqxhr = fm.request({ data : {cmd : 'get', target : file.hash, conv : 1, _t : file.ts}, options : {type: 'get', cache : true}, preventDefault : true, progressBar : prog }) .done(function(data) { ql.hideinfo(); var doc = $('').appendTo(preview)[0].contentWindow.document; doc.open(); doc.write(data.content); doc.close(); }) .always(function() { loading.remove(); }); } }); }, /** * MarkDown preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mimes = fm.arrayFlip(['text/x-markdown']), preview = ql.preview, marked = null, show = function(data, loading) { ql.hideinfo(); var doc = $('').appendTo(preview)[0].contentWindow.document; doc.open(); doc.write((marked.parse || marked)(data.content)); doc.close(); loading.remove(); }, error = function(loading) { marked = false; loading.remove(); }; preview.on(ql.evUpdate, function(e) { var file = e.file, jqxhr, loading, prog; if (mimes[file.mime] && fm.options.cdns.marked && marked !== false && ql.dispInlineRegex.test(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax)) { e.stopImmediatePropagation(); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); // stop loading on change file if not loaded yet preview.one('change', function() { jqxhr.state() == 'pending' && jqxhr.reject(); }).addClass('elfinder-overflow-auto'); jqxhr = fm.request({ data : {cmd : 'get', target : file.hash, conv : 1, _t : file.ts}, options : {type: 'get', cache : true}, preventDefault : true, progressBar : prog }) .done(function(data) { if (marked || window.marked) { if (!marked) { marked = window.marked; } show(data, loading); } else { fm.loadScript([fm.options.cdns.marked], function(res) { marked = res || window.marked || false; delete window.marked; if (marked) { show(data, loading); } else { error(loading); } }, { tryRequire: true, error: function() { error(loading); } } ); } }) .fail(function() { error(loading); }); } }); }, /** * PDF/ODT/ODS/ODP preview with ViewerJS * * @param elFinder.commands.quicklook */ function(ql) { if (ql.options.viewerjs) { var fm = ql.fm, preview = ql.preview, opts = ql.options.viewerjs, mimes = opts.url? fm.arrayFlip(opts.mimes || []) : [], win = ql.window, navi = ql.navbar, setNavi = function() { navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '30px' : ''); }; if (opts.url) { preview.on('update', function(e) { var file = e.file, node, loading, prog, opDfd; if (mimes[file.mime] && (file.mime !== 'application/pdf' || !opts.pdfNative || !ql.flags.pdfNative)) { e.stopImmediatePropagation(); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) { if (url) { node = $('') .css('background-color', 'transparent') .on('load', function() { ql.hideinfo(); loading.remove(); node.css('background-color', '#fff'); }) .on('error', function() { loading.remove(); node.remove(); }) .appendTo(preview) .attr('src', opts.url + '#' + url); win.on('viewchange.viewerjs', setNavi); setNavi(); preview.one('change', function() { win.off('viewchange.viewerjs'); loading.remove(); node.off('load').remove(); }); } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } }); } } }, /** * PDF preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mime = 'application/pdf', preview = ql.preview, active = false, urlhash = '', firefox, toolbar; if ((fm.UA.Safari && fm.OS === 'mac' && !fm.UA.iOS) || fm.UA.IE || fm.UA.Firefox) { active = true; } else { $.each(navigator.plugins, function(i, plugins) { $.each(plugins, function(i, plugin) { if (plugin.type === mime) { return !(active = true); } }); }); } ql.flags.pdfNative = active; if (active) { if (typeof ql.options.pdfToolbar !== 'undefined' && !ql.options.pdfToolbar) { urlhash = '#toolbar=0'; } preview.on(ql.evUpdate, function(e) { var file = e.file, opDfd; if (active && file.mime === mime && ql.dispInlineRegex.test(file.mime)) { e.stopImmediatePropagation(); opDfd = fm.openUrl(file.hash, false, function(url) { if (url) { ql.hideinfo(); ql.cover.addClass('elfinder-quicklook-coverbg'); $('') .on('error', function(e) { active = false; ql.update(void(0), fm.cwd()); ql.update(void(0), file); }) .appendTo(preview); } }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } }); } }, /** * Flash preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mime = 'application/x-shockwave-flash', preview = ql.preview, active = false; $.each(navigator.plugins, function(i, plugins) { $.each(plugins, function(i, plugin) { if (plugin.type === mime) { return !(active = true); } }); }); active && preview.on(ql.evUpdate, function(e) { var file = e.file, node, opDfd; if (file.mime === mime && ql.dispInlineRegex.test(file.mime)) { e.stopImmediatePropagation(); opDfd = fm.openUrl(file.hash, false, function(url) { if (url) { ql.hideinfo(); node = $('') .appendTo(preview); } }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } }); }, /** * HTML5 audio preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, preview = ql.preview, mimes = { 'audio/mpeg' : 'mp3', 'audio/mpeg3' : 'mp3', 'audio/mp3' : 'mp3', 'audio/x-mpeg3' : 'mp3', 'audio/x-mp3' : 'mp3', 'audio/x-wav' : 'wav', 'audio/wav' : 'wav', 'audio/x-m4a' : 'm4a', 'audio/aac' : 'm4a', 'audio/mp4' : 'm4a', 'audio/x-mp4' : 'm4a', 'audio/ogg' : 'ogg', 'audio/webm' : 'webm', 'audio/flac' : 'flac', 'audio/x-flac' : 'flac', 'audio/amr' : 'amr' }, node, curHash, win = ql.window, navi = ql.navbar, AMR, autoplay, controlsList = typeof ql.options.mediaControlsList === 'string' && ql.options.mediaControlsList? ' controlsList="' + fm.escape(ql.options.mediaControlsList) + '"' : '', setNavi = function() { navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : ''); }, getNode = function(src, hash) { return $('') .on('change', function(e) { // Firefox fire change event on seek or volume change e.stopPropagation(); }) .on('error', function(e) { node && node.data('hash') === hash && reset(); }) .data('hash', hash) .appendTo(preview); }, amrToWavUrl = function(hash) { var dfd = $.Deferred(), loader = $.Deferred().done(function() { var opDfd; opDfd = fm.getContents(hash, 'arraybuffer', { progressBar: prog }).done(function(data) { try { var buffer = AMR.toWAV(new Uint8Array(data)); if (buffer) { dfd.resolve(URL.createObjectURL(new Blob([buffer], { type: 'audio/x-wav' }))); } else { dfd.reject(); } } catch(e) { dfd.reject(); } }).fail(function() { dfd.reject(); }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); }).fail(function() { AMR = false; dfd.reject(); }), _AMR; if (window.TextEncoder && window.URL && URL.createObjectURL && typeof AMR === 'undefined') { // previous window.AMR _AMR = window.AMR; delete window.AMR; fm.loadScript( [ fm.options.cdns.amr ], function() { AMR = window.AMR? window.AMR : false; // restore previous window.AMR window.AMR = _AMR; loader[AMR? 'resolve':'reject'](); }, { error: function() { loader.reject(); } } ); } else { loader[AMR? 'resolve':'reject'](); } return dfd; }, play = function(player) { var hash = node.data('hash'), playPromise; autoplay && (playPromise = player.play()); // uses "playPromise['catch']" instead "playPromise.catch" to support Old IE if (playPromise && playPromise['catch']) { playPromise['catch'](function(e) { if (!player.paused) { node && node.data('hash') === hash && reset(); } }); } }, reset = function() { if (node && node.parent().length) { var elm = node[0], url = node.children('source').attr('src'); win.off('viewchange.audio'); try { elm.pause(); node.empty(); if (url.match(/^blob:/)) { URL.revokeObjectURL(url); } elm.src = ''; elm.load(); } catch(e) {} node.remove(); node = null; } }, loading, prog; preview.on(ql.evUpdate, function(e) { var file = e.file, type = mimes[file.mime], html5, opDfd; if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime) && ((html5 = ql.support.audio[type]) || (type === 'amr'))) { autoplay = ql.autoPlay(); curHash = file.hash; if (!html5) { if (fm.options.cdns.amr && type === 'amr' && AMR !== false) { e.stopImmediatePropagation(); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); node = getNode('', curHash); amrToWavUrl(file.hash).done(function(url) { loading.remove(); if (curHash === file.hash) { var elm = node[0]; try { node.children('source').attr('src', url); elm.pause(); elm.load(); play(elm); win.on('viewchange.audio', setNavi); setNavi(); } catch(e) { URL.revokeObjectURL(url); node.remove(); } } else { URL.revokeObjectURL(url); } }).fail(function() { node.remove(); }); } } else { e.stopImmediatePropagation(); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); opDfd = fm.openUrl(curHash, false, function(url) { loading.remove(); if (url) { node = getNode(url, curHash); play(node[0]); win.on('viewchange.audio', setNavi); setNavi(); } else { node.remove(); } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } } }).one('change', reset); }, /** * HTML5 video preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, preview = ql.preview, mimes = { 'video/mp4' : 'mp4', 'video/x-m4v' : 'mp4', 'video/quicktime' : 'mp4', 'video/mpeg' : 'mpeg', 'video/ogg' : 'ogg', 'application/ogg' : 'ogg', 'video/webm' : 'webm', 'video/x-matroska': 'mkv', 'video/3gpp' : '3gp', 'application/vnd.apple.mpegurl' : 'm3u8', 'application/x-mpegurl' : 'm3u8', 'application/dash+xml' : 'mpd', 'video/x-flv' : 'flv', 'video/x-msvideo' : 'avi' }, node, win = ql.window, navi = ql.navbar, cHls, cDash, pDash, cFlv, cVideojs, autoplay, tm, loading, prog, controlsList = typeof ql.options.mediaControlsList === 'string' && ql.options.mediaControlsList? ' controlsList="' + fm.escape(ql.options.mediaControlsList) + '"' : '', setNavi = function() { if (fm.UA.iOS) { if (win.hasClass('elfinder-quicklook-fullscreen')) { preview.css('height', '-webkit-calc(100% - 50px)'); navi._show(); } else { preview.css('height', ''); } } else { navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : ''); } }, render = function(file, opts) { var errTm = function(e) { if (err > 1) { tm && clearTimeout(tm); tm = setTimeout(function() { !canPlay && reset(true); }, 800); } }, err = 0, canPlay; //reset(); pDash = null; opts = opts || {}; ql.hideinfo(); node = $('') .on('change', function(e) { // Firefox fire change event on seek or volume change e.stopPropagation(); }) .on('timeupdate progress', errTm) .on('canplay', function() { canPlay = true; }) .data('hash', file.hash); // can not handling error event with jQuery `on` event handler node[0].addEventListener('error', function(e) { if (opts.src && fm.convAbsUrl(opts.src) === fm.convAbsUrl(e.target.src)) { ++err; errTm(); } }, true); if (opts.src) { node.append(''); } node.appendTo(preview); win.on('viewchange.video', setNavi); setNavi(); }, loadHls = function(file) { var hls, opDfd; opDfd = fm.openUrl(file.hash, false, function(url) { loading.remove(); if (url) { render(file); hls = new cHls(); hls.loadSource(url); hls.attachMedia(node[0]); if (autoplay) { hls.on(cHls.Events.MANIFEST_PARSED, function() { play(node[0]); }); } } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); }, loadDash = function(file) { var opDfd; opDfd = fm.openUrl(file.hash, false, function(url) { var debug; loading.remove(); if (url) { render(file); pDash = window.dashjs.MediaPlayer().create(); debug = pDash.getDebug(); if (debug.setLogLevel) { debug.setLogLevel(dashjs.Debug.LOG_LEVEL_FATAL); } else if (debug.setLogToBrowserConsole) { debug.setLogToBrowserConsole(false); } pDash.initialize(node[0], url, autoplay); pDash.on('error', function(e) { reset(true); }); } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); }, loadFlv = function(file) { var opDfd if (!cFlv.isSupported()) { cFlv = false; return; } opDfd = fm.openUrl(file.hash, false, function(url) { loading.remove(); if (url) { var player = cFlv.createPlayer({ type: 'flv', url: url }); render(file); player.on(cFlv.Events.ERROR, function() { player.destroy(); reset(true); }); player.attachMediaElement(node[0]); player.load(); play(player); } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); }, loadVideojs = function(file) { var opDfd; opDfd = fm.openUrl(file.hash, false, function(url) { loading.remove(); if (url) { render(file); node[0].src = url; cVideojs(node[0], { src: url }); } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); }, play = function(player) { var hash = node.data('hash'), playPromise; autoplay && (playPromise = player.play()); // uses "playPromise['catch']" instead "playPromise.catch" to support Old IE if (playPromise && playPromise['catch']) { playPromise['catch'](function(e) { if (!player.paused) { node && node.data('hash') === hash && reset(true); } }); } }, reset = function(showInfo) { tm && clearTimeout(tm); if (node && node.parent().length) { var elm = node[0]; win.off('viewchange.video'); pDash && pDash.reset(); try { elm.pause(); node.empty(); elm.src = ''; elm.load(); } catch(e) {} node.remove(); node = null; } showInfo && ql.info.show(); }; preview.on(ql.evUpdate, function(e) { var file = e.file, mime = file.mime.toLowerCase(), type = mimes[mime], stock, playPromise, opDfd; if (mimes[mime] && ql.dispInlineRegex.test(file.mime) /*&& (((type === 'm3u8' || (type === 'mpd' && !fm.UA.iOS) || type === 'flv') && !fm.UA.ltIE10) || ql.support.video[type])*/) { autoplay = ql.autoPlay(); loading = $('
    '+fm.i18n('nowLoading')+'
    '); prog = $('
    ').appendTo(loading); if (ql.support.video[type] && (type !== 'm3u8' || fm.UA.Safari)) { e.stopImmediatePropagation(); loading.appendTo(ql.info.find('.elfinder-quicklook-info')); opDfd = fm.openUrl(file.hash, false, function(url) { loading.remove(); if (url) { render(file, { src: url }); play(node[0]); } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } else { if (cHls !== false && fm.options.cdns.hls && type === 'm3u8') { e.stopImmediatePropagation(); loading.appendTo(ql.info.find('.elfinder-quicklook-info')); if (cHls) { loadHls(file); } else { stock = window.Hls; delete window.Hls; fm.loadScript( [ fm.options.cdns.hls ], function(res) { cHls = res || window.Hls || false; window.Hls = stock; cHls && loadHls(file); }, { tryRequire: true, error : function() { cHls = false; } } ); } } else if (cDash !== false && fm.options.cdns.dash && type === 'mpd') { e.stopImmediatePropagation(); loading.appendTo(ql.info.find('.elfinder-quicklook-info')); if (cDash) { loadDash(file); } else { fm.loadScript( [ fm.options.cdns.dash ], function() { // dashjs require window.dashjs in global scope cDash = window.dashjs? true : false; cDash && loadDash(file); }, { tryRequire: true, error : function() { cDash = false; } } ); } } else if (cFlv !== false && fm.options.cdns.flv && type === 'flv') { e.stopImmediatePropagation(); loading.appendTo(ql.info.find('.elfinder-quicklook-info')); if (cFlv) { loadFlv(file); } else { stock = window.flvjs; delete window.flvjs; fm.loadScript( [ fm.options.cdns.flv ], function(res) { cFlv = res || window.flvjs || false; window.flvjs = stock; cFlv && loadFlv(file); }, { tryRequire: true, error : function() { cFlv = false; } } ); } } else if (fm.options.cdns.videojs) { e.stopImmediatePropagation(); loading.appendTo(ql.info.find('.elfinder-quicklook-info')); if (cVideojs) { loadVideojs(file); } else { fm.loadScript( [ fm.options.cdns.videojs + '/video.min.js' ], function(res) { cVideojs = res || window.videojs || false; //window.flvjs = stock; cVideojs && loadVideojs(file); }, { tryRequire: true, error : function() { cVideojs = false; } } ).loadCss([fm.options.cdns.videojs + '/video-js.min.css']); } } } } }).one('change', reset); }, /** * Audio/video preview plugin using browser plugins * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var preview = ql.preview, mimes = [], node, win = ql.window, navi = ql.navbar; $.each(navigator.plugins, function(i, plugins) { $.each(plugins, function(i, plugin) { (plugin.type.indexOf('audio/') === 0 || plugin.type.indexOf('video/') === 0) && mimes.push(plugin.type); }); }); mimes = ql.fm.arrayFlip(mimes); preview.on(ql.evUpdate, function(e) { var file = e.file, mime = file.mime, video, opDfd, loading, prog, setNavi = function() { navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? '50px' : ''); }; if (mimes[file.mime] && ql.dispInlineRegex.test(file.mime)) { e.stopImmediatePropagation(); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); opDfd = ql.fm.openUrl(file.hash, false, function(url) { loading.remove(); if (url) { (video = mime.indexOf('video/') === 0) && ql.hideinfo(); node = $('') .appendTo(preview); win.on('viewchange.embed', setNavi); setNavi(); } }, { progressBar: prog }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } }).one('change', function() { if (node && node.parent().length) { win.off('viewchange.embed'); node.remove(); node= null; } }); }, /** * Archive(zip|gzip|tar|bz2) preview plugin using https://github.com/imaya/zlib.js * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mimes = fm.arrayFlip(['application/zip', 'application/x-gzip', 'application/x-tar', 'application/x-bzip2']), preview = ql.preview, sizeMax = fm.returnBytes(ql.options.unzipMaxSize || 0), Zlib = (fm.options.cdns.zlibUnzip && fm.options.cdns.zlibGunzip)? true : false, bzip2 = fm.options.cdns.bzip2? true : false; if (window.Worker && window.Uint8Array && window.DataView) { preview.on(ql.evUpdate, function(e) { var file = e.file, isTar = (file.mime === 'application/x-tar'), isBzip2 = (file.mime === 'application/x-bzip2'), isZlib = (file.mime === 'application/zip' || file.mime === 'application/x-gzip'); if (mimes[file.mime] && (!sizeMax || file.size <= sizeMax) && ( isTar || (isBzip2 && bzip2) || (isZlib && Zlib) )) { var jqxhr, wk, loading, prog, url, req = function() { jqxhr = fm.getContents(file.hash, 'arraybuffer', { progressBar: prog }) .fail(function() { loading.remove(); }) .done(function(data) { var unzip, filenames, err = function(e) { wk && wk.terminate(); loading.remove(); if (isZlib) { Zlib = false; } else if (isBzip2) { bzip2 = false; } fm.debug('error', e); }; try { wk = fm.getWorker(); wk.onmessage = function(res) { wk && wk.terminate(); loading.remove(); if (!res.data || res.data.error) { new Error(res.data && res.data.error? res.data.error : ''); } else { makeList(res.data.files); } }; wk.onerror = err; if (file.mime === 'application/x-tar') { wk.postMessage({ scripts: [fm.getWorkerUrl('quicklook.unzip.js')], data: { type: 'tar', bin: data } }); } else if (file.mime === 'application/zip') { wk.postMessage({ scripts: [fm.options.cdns.zlibUnzip, fm.getWorkerUrl('quicklook.unzip.js')], data: { type: 'zip', bin: data } }); } else if (file.mime === 'application/x-gzip') { wk.postMessage({ scripts: [fm.options.cdns.zlibGunzip, fm.getWorkerUrl('quicklook.unzip.js')], data: { type: 'gzip', bin: data } }); } else if (file.mime === 'application/x-bzip2') { wk.postMessage({ scripts: [fm.options.cdns.bzip2, fm.getWorkerUrl('quicklook.unzip.js')], data: { type: 'bzip2', bin: data } }); } } catch (e) { err(e); } }); }, makeList = function(filenames) { var header, list, doc, tsize = 0; if (filenames && filenames.length) { filenames = $.map(filenames, function(str) { return fm.decodeRawString(str); }); filenames.sort(); list = fm.escape(filenames.join("\n").replace(/\{formatSize\((\d+)\)\}/g, function(m, s) { tsize += parseInt(s); return fm.formatSize(s); })); header = ''+fm.escape(file.mime)+' ('+fm.formatSize(file.size)+' / '+fm.formatSize(tsize)+')'+'
    '; doc = $('
    '+header+'
    '+list+'
    ') .on('touchstart', function(e) { if ($(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) { e.originalEvent._preventSwipeX = true; } }) .appendTo(preview); ql.hideinfo(); } loading.remove(); }; // this is our file - stop event propagation e.stopImmediatePropagation(); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); // stop loading on change file if not loaded yet preview.one('change', function() { jqxhr.state() === 'pending' && jqxhr.reject(); wk && wk.terminate(); loading.remove(); }); req(); } }); } }, /** * RAR Archive preview plugin using https://github.com/43081j/rar.js * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mimes = fm.arrayFlip(['application/x-rar']), preview = ql.preview, RAR; if (window.DataView) { preview.on(ql.evUpdate, function(e) { var file = e.file; if (mimes[file.mime] && fm.options.cdns.rar && RAR !== false) { var loading, prog, url, archive, abort, getList = function(url) { if (abort) { loading.remove(); return; } try { archive = RAR({ file: url, type: 2, xhrHeaders: fm.customHeaders, xhrFields: fm.xhrFields }, function(err) { loading.remove(); var filenames = [], header, doc; if (abort || err) { // An error occurred (not a rar, read error, etc) err && fm.debug('error', err); return; } $.each(archive.entries, function() { filenames.push(this.path + (this.size? ' (' + fm.formatSize(this.size) + ')' : '')); }); if (filenames.length) { filenames = $.map(filenames, function(str) { return fm.decodeRawString(str); }); filenames.sort(); header = ''+fm.escape(file.mime)+' ('+fm.formatSize(file.size)+')'+'
    '; doc = $('
    '+header+'
    '+fm.escape(filenames.join("\n"))+'
    ') .on('touchstart', function(e) { if ($(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) { e.originalEvent._preventSwipeX = true; } }) .appendTo(preview); ql.hideinfo(); } }); } catch(e) { loading.remove(); } }, error = function() { RAR = false; loading.remove(); }, _RAR, opDfd; // this is our file - stop event propagation e.stopImmediatePropagation(); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); // stop loading on change file if not loaded yet preview.one('change', function() { archive && (archive.abort = true); loading.remove(); abort = true; }); opDfd = fm.openUrl(file.hash, 'sameorigin', function(url) { if (url) { if (RAR) { getList(url); } else { if (window.RarArchive) { _RAR = window.RarArchive; delete window.RarArchive; } fm.loadScript( [ fm.options.cdns.rar ], function() { if (fm.hasRequire) { require(['rar'], function(RarArchive) { RAR = RarArchive; getList(url); }, error); } else { if (RAR = window.RarArchive) { if (_RAR) { window.RarArchive = _RAR; } else { delete window.RarArchive; } getList(url); } else { error(); } } }, { tryRequire: true, error : error } ); } } }, { progressBar: prog, temporary: true }); // stop loading on change file if not loaded yet preview.one('change', function() { opDfd && opDfd.state && opDfd.state() === 'pending' && opDfd.reject(); }); } }); } }, /** * CAD-Files and 3D-Models online viewer on sharecad.org * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mimes = fm.arrayFlip(ql.options.sharecadMimes || []), preview = ql.preview, win = ql.window, node; if (ql.options.sharecadMimes.length) { ql.addIntegration({ title: 'ShareCAD.org CAD and 3D-Models viewer', link: 'https://sharecad.org/DWGOnlinePlugin' }); } preview.on(ql.evUpdate, function(e) { var file = e.file; if (mimes[file.mime.toLowerCase()] && fm.option('onetimeUrl', file.hash)) { var win = ql.window, loading, prog, url; e.stopImmediatePropagation(); if (file.url == '1') { preview.hide(); $('
    ').appendTo(ql.info.find('.elfinder-quicklook-info')) .on('click', function() { var self = $(this); self.html(''); fm.request({ data : {cmd : 'url', target : file.hash}, preventDefault : true, progressBar : prog }) .always(function() { self.html(''); }) .done(function(data) { var rfile = fm.file(file.hash); file.url = rfile.url = data.url || ''; if (file.url) { preview.trigger({ type: ql.evUpdate, file: file, forceUpdate: true }); } }); }); } if (file.url !== '' && file.url != '1') { preview.one('change', function() { loading.remove(); node.off('load').remove(); node = null; }).addClass('elfinder-overflow-auto'); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); url = fm.convAbsUrl(fm.url(file.hash)); node = $('') .css('background-color', 'transparent') .appendTo(preview) .on('load', function() { ql.hideinfo(); loading.remove(); ql.preview.after(ql.info); $(this).css('background-color', '#fff').show(); }) .on('error', function() { loading.remove(); ql.preview.after(ql.info); }) .attr('src', '//sharecad.org/cadframe/load?url=' + encodeURIComponent(url)); ql.info.after(ql.preview); } } }); }, /** * KML preview with GoogleMaps API * * @param elFinder.commands.quicklook */ function(ql) { "use strict"; var fm = ql.fm, mimes = { 'application/vnd.google-earth.kml+xml' : true, 'application/vnd.google-earth.kmz' : true }, preview = ql.preview, gMaps, loadMap, wGmfail, fail, mapScr; if (ql.options.googleMapsApiKey) { ql.addIntegration({ title: 'Google Maps', link: 'https://www.google.com/intl/' + fm.lang.replace('_', '-') + '/help/terms_maps.html' }); gMaps = (window.google && google.maps); // start load maps loadMap = function(file, node, prog) { var mapsOpts = ql.options.googleMapsOpts.maps; fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) { if (url) { try { new gMaps.KmlLayer(url, Object.assign({ map: new gMaps.Map(node.get(0), mapsOpts) }, ql.options.googleMapsOpts.kml)); ql.hideinfo(); } catch(e) { fail(); } } else { fail(); } }); }; // keep stored error handler if exists wGmfail = window.gm_authFailure; // on error function fail = function() { mapScr = null; }; // API script url mapScr = 'https://maps.googleapis.com/maps/api/js?key=' + ql.options.googleMapsApiKey; // error handler window.gm_authFailure = function() { fail(); wGmfail && wGmfail(); }; preview.on(ql.evUpdate, function(e) { var file = e.file; if (mapScr && mimes[file.mime.toLowerCase()]) { var win = ql.window, getLink = (file.url == '1' && !fm.option('onetimeUrl', file.hash)), loading, prog, url, node; e.stopImmediatePropagation(); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); if (getLink) { preview.hide(); $('
    ').appendTo(ql.info.find('.elfinder-quicklook-info')) .on('click', function() { var self = $(this); self.html(''); fm.request({ data : {cmd : 'url', target : file.hash}, preventDefault : true, progressBar : prog }) .always(function() { loading.remove(); self.html(''); }) .done(function(data) { var rfile = fm.file(file.hash); file.url = rfile.url = data.url || ''; if (file.url) { preview.trigger({ type: ql.evUpdate, file: file, forceUpdate: true }); } }); }); } if (file.url !== '' && !getLink) { node = $('
    ').appendTo(preview); preview.one('change', function() { node.remove(); node = null; }); if (!gMaps) { fm.loadScript([mapScr], function() { gMaps = window.google && google.maps; gMaps && loadMap(file, node, prog); }); } else { loadMap(file, node, prog); } } } }); } }, /** * Any supported files preview plugin using (Google docs | MS Office) online viewer * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, mimes = Object.assign(fm.arrayFlip(ql.options.googleDocsMimes || [], 'g'), fm.arrayFlip(ql.options.officeOnlineMimes || [], 'm')), preview = ql.preview, win = ql.window, navi = ql.navbar, urls = { g: 'docs.google.com/gview?embedded=true&url=', m: 'view.officeapps.live.com/op/embed.aspx?wdStartOn=0&src=' }, navBottom = { g: '56px', m: '24px' }, mLimits = { xls : 5242880, // 5MB xlsb : 5242880, xlsx : 5242880, xlsm : 5242880, other: 10485760 // 10MB }, node, enable; if (ql.options.googleDocsMimes.length) { enable = true; ql.addIntegration({ title: 'Google Docs Viewer', link: 'https://docs.google.com/' }); } if (ql.options.officeOnlineMimes.length) { enable = true; ql.addIntegration({ title: 'MS Online Doc Viewer', link: 'https://products.office.com/office-online/view-office-documents-online' }); } if (enable) { preview.on(ql.evUpdate, function(e) { var file = e.file, type, dfd; // 25MB is maximum filesize of Google Docs prevew if (file.size <= 26214400 && (type = mimes[file.mime])) { var win = ql.window, setNavi = function() { navi.css('bottom', win.hasClass('elfinder-quicklook-fullscreen')? navBottom[type] : ''); }, ext = fm.mimeTypes[file.mime], getLink = (file.url == '1' && !fm.option('onetimeUrl', file.hash)), loading, prog, url, tm; if (type === 'm') { if ((mLimits[ext] && file.size > mLimits[ext]) || file.size > mLimits.other) { type = 'g'; } } if (getLink) { preview.hide(); $('
    ').appendTo(ql.info.find('.elfinder-quicklook-info')) .on('click', function() { var self = $(this); self.html(''); fm.request({ data : {cmd : 'url', target : file.hash}, preventDefault : true }) .always(function() { self.html(''); }) .done(function(data) { var rfile = fm.file(file.hash); file.url = rfile.url = data.url || ''; if (file.url) { preview.trigger({ type: ql.evUpdate, file: file, forceUpdate: true }); } }); }); } if (file.url !== '' && !getLink) { e.stopImmediatePropagation(); preview.one('change', function() { dfd && dfd.status && dfd.status() === 'pending' && dfd.reject(); win.off('viewchange.googledocs'); loading.remove(); node.off('load').remove(); node = null; }).addClass('elfinder-overflow-auto'); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); node = $('') .css('background-color', 'transparent') .appendTo(preview); dfd = fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) { var load = function() { try { if (node && (!node.attr('src') || node.get(0).contentWindow.document/*maybe HTTP 204*/)) { node.attr('src', 'https://' + urls[type] + encodeURIComponent(url)); // Retry because Google Docs viewer sometimes returns HTTP 204 tm = setTimeout(load, 2000); } } catch(e) {} }; if (url) { if (file.ts) { url += (url.match(/\?/)? '&' : '?') + '_t=' + file.ts; } node.on('load', function() { tm && clearTimeout(tm); ql.hideinfo(); loading.remove(); ql.preview.after(ql.info); $(this).css('background-color', '#fff').show(); }) .on('error', function() { tm && clearTimeout(tm); loading.remove(); ql.preview.after(ql.info); }); load(); } else { loading.remove(); node.remove(); } }); win.on('viewchange.googledocs', setNavi); setNavi(); ql.info.after(ql.preview); } } }); } }, /** * Texts preview plugin * * @param elFinder.commands.quicklook **/ function(ql) { "use strict"; var fm = ql.fm, preview = ql.preview, textLines = parseInt(ql.options.textInitialLines) || 150, prettifyLines = parseInt(ql.options.prettifyMaxLines) || 500, PR, _PR, error = function() { prettify = function() { return false; }; _PR && (window.PR = _PR); PR = false; }, prettify = function(node) { if (fm.options.cdns.prettify) { prettify = function(node) { setTimeout(function() { PRcheck(node); }, 100); return 'pending'; }; if (window.PR) { _PR = window.PR; } fm.loadScript([fm.options.cdns.prettify + (fm.options.cdns.prettify.match(/\?/)? '&' : '?') + 'autorun=false'], function(wPR) { PR = wPR || window.PR; if (typeof PR === 'object') { prettify = function() { return true; }; if (_PR) { window.PR = _PR; } else { delete window.PR; } exec(node); } else { error(); } }, { tryRequire: true, error : error }); } else { error(); } }, exec = function(node) { if (node && !node.hasClass('prettyprinted')) { node.css('cursor', 'wait'); requestAnimationFrame(function() { PR.prettyPrint && PR.prettyPrint(null, node.get(0)); node.css('cursor', ''); }); } }, PRcheck = function(node) { var status = prettify(node); if (status === true) { exec(node); } }; preview.on(ql.evUpdate, function(e) { var file = e.file, mime = file.mime, jqxhr, loading, prog, encSelect; if (fm.mimeIsText(file.mime) && (!ql.options.getSizeMax || file.size <= ql.options.getSizeMax) && PR !== false) { e.stopImmediatePropagation(); loading = $('
    '+fm.i18n('nowLoading')+'
    ').appendTo(ql.info.find('.elfinder-quicklook-info')); prog = $('
    ').appendTo(loading); // stop loading on change file if not loadin yet preview.one('change', function() { jqxhr.state() == 'pending' && jqxhr.reject(); encSelect && encSelect.remove(); }); jqxhr = fm.request({ data : {cmd : 'get', target : file.hash, conv : (file.encoding || 1), _t : file.ts}, options : {type: 'get', cache : true}, preventDefault : true, progressBar : prog }) .done(function(data) { var reg = new RegExp('^(data:'+file.mime.replace(/([.+])/g, '\\$1')+';base64,)', 'i'), text = data.content, part, more, node, lines, m; if (typeof text !== 'string') { return; } ql.hideinfo(); if (window.atob && (m = text.match(reg))) { text = atob(text.substr(m[1].length)); } lines = text.match(/([^\r\n]{1,100}[\r\n]*)/g); more = lines.length - textLines; if (more > 10) { part = lines.splice(0, textLines).join(''); } else { more = 0; } node = $('
    '); if (more) { node.append($('

    ' + fm.i18n('linesLeft', fm.toLocaleString(more)) + '
    ') .on('click', function() { var top = node.scrollTop(); $(this).remove(); node.children('pre').removeClass('prettyprinted').text(text).scrollTop(top); if (lines.length <= prettifyLines) { PRcheck(node); } }) ); } node.children('pre').text(part || text); node.on('touchstart', function(e) { if ($(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) { e.originalEvent._preventSwipeX = true; } }).appendTo(preview); // make toast message if (data.toasts && Array.isArray(data.toasts)) { $.each(data.toasts, function() { this.msg && fm.toast(this); }); } PRcheck(node); }) .always(function(data) { var cmdEdit, sel, head; if (cmdEdit = fm.getCommand('edit')) { head = []; if (data && data.encoding) { head.push({value: data.encoding}); } head.push({value: 'UTF-8'}); sel = cmdEdit.getEncSelect(head); sel.on('change', function() { file.encoding = sel.val(); fm.cache(file, 'change'); preview.trigger({ type: ql.evUpdate, file: file, forceUpdate: true }); }); encSelect = $('
    ').append(sel); ql.window.append(encSelect); } loading.remove(); }); } }); } ]; application/library/js/commands/resize.js000064400000147017147577724760014633 0ustar00/** * @class elFinder command "resize" * Open dialog to resize image * * @author Dmitry (dio) Levashov * @author Alexey Sukhotin * @author Naoki Sawada * @author Sergio Jovani **/ elFinder.prototype.commands.resize = function() { "use strict"; var fm = this.fm, losslessRotate = 0, getBounceBox = function(w, h, theta) { var srcPts = [ {x: w/2, y: h/2}, {x: -w/2, y: h/2}, {x: -w/2, y: -h/2}, {x: w/2, y: -h/2} ], dstPts = [], min = {x: Number.MAX_VALUE, y: Number.MAX_VALUE}, max = {x: Number.MIN_VALUE, y: Number.MIN_VALUE}; $.each(srcPts, function(i, srcPt){ dstPts.push({ x: srcPt.x * Math.cos(theta) - srcPt.y * Math.sin(theta), y: srcPt.x * Math.sin(theta) + srcPt.y * Math.cos(theta) }); }); $.each(dstPts, function(i, pt) { min.x = Math.min(min.x, pt.x); min.y = Math.min(min.y, pt.y); max.x = Math.max(max.x, pt.x); max.y = Math.max(max.y, pt.y); }); return { width: max.x - min.x, height: max.y - min.y }; }; this.updateOnSelect = false; this.getstate = function() { var sel = fm.selectedFiles(); return sel.length == 1 && sel[0].read && sel[0].write && sel[0].mime.indexOf('image/') !== -1 ? 0 : -1; }; this.resizeRequest = function(data, f, dfrd) { var file = f || fm.file(data.target), tmb = file? file.tmb : null, enabled = fm.isCommandEnabled('resize', data.target); if (enabled && (! file || (file && file.read && file.write && file.mime.indexOf('image/') !== -1 ))) { return fm.request({ data : Object.assign(data, { cmd : 'resize' }), notify : {type : 'resize', cnt : 1} }) .fail(function(error) { if (dfrd) { dfrd.reject(error); } }) .done(function() { if (data.quality) { fm.storage('jpgQuality', data.quality === fm.option('jpgQuality')? null : data.quality); } dfrd && dfrd.resolve(); }); } else { var error; if (file) { if (file.mime.indexOf('image/') === -1) { error = ['errResize', file.name, 'errUsupportType']; } else { error = ['errResize', file.name, 'errPerm']; } } else { error = ['errResize', data.target, 'errPerm']; } if (dfrd) { dfrd.reject(error); } else { fm.error(error); } return $.Deferred().reject(error); } }; this.exec = function(hashes) { var self = this, files = this.files(hashes), dfrd = $.Deferred(), api2 = (fm.api > 1), options = this.options, dialogWidth = 650, fmnode = fm.getUI(), ctrgrup = $().controlgroup? 'controlgroup' : 'buttonset', grid8Def = typeof options.grid8px === 'undefined' || options.grid8px !== 'disable'? true : false, presetSize = Array.isArray(options.presetSize)? options.presetSize : [], clactive = 'elfinder-dialog-active', clsediting = fm.res('class', 'editing'), open = function(file, id, src) { var isJpeg = (file.mime === 'image/jpeg'), dialog = $('
    '), input = '', row = '
    ', label = '
    ', changeTm = null, operate = false, opStart = function() { operate = true; }, opStop = function() { if (operate) { operate = false; control.trigger('change'); } }, control = $('
    ') .on('focus', 'input[type=text],input[type=number]', function() { $(this).trigger('select'); }) .on('change', function() { changeTm && cancelAnimationFrame(changeTm); changeTm = requestAnimationFrame(function() { var panel, quty, canvas, ctx, img, sx, sy, sw, sh, deg, theta, bb; if (sizeImg && ! operate && (canvas = sizeImg.data('canvas'))) { panel = control.children('div.elfinder-resize-control-panel:visible'); quty = panel.find('input.elfinder-resize-quality'); if (quty.is(':visible')) { ctx = sizeImg.data('ctx'); img = sizeImg.get(0); if (panel.hasClass('elfinder-resize-uiresize')) { // resize sw = canvas.width = width.val(); sh = canvas.height = height.val(); ctx.drawImage(img, 0, 0, sw, sh); } else if (panel.hasClass('elfinder-resize-uicrop')) { // crop sx = pointX.val(); sy = pointY.val(); sw = offsetX.val(); sh = offsetY.val(); canvas.width = sw; canvas.height = sh; ctx.drawImage(img, sx, sy, sw, sh, 0, 0, sw, sh); } else { // rotate deg = degree.val(); theta = (degree.val() * Math.PI) / 180; bb = getBounceBox(owidth, oheight, theta); sw = canvas.width = bb.width; sh = canvas.height = bb.height; ctx.save(); if (deg % 90 !== 0) { ctx.fillStyle = bg.val() || '#FFF'; ctx.fillRect(0, 0, sw, sh); } ctx.translate(sw / 2, sh / 2); ctx.rotate(theta); ctx.drawImage(img, -img.width/2, -img.height/2, owidth, oheight); ctx.restore(); } canvas.toBlob(function(blob) { if (blob) { size1 = blob.size; quty.next('span').text(' (' + fm.formatSize(blob.size) + ')'); } }, 'image/jpeg', Math.max(Math.min(quty.val(), 100), 1) / 100); } } }); }) .on('mouseup', 'input', function(e) { $(e.target).trigger('change'); }), preview = $('
    ') .on('touchmove', function(e) { if ($(e.target).hasClass('touch-punch')) { e.stopPropagation(); e.preventDefault(); } }), spinner = $('
    '+fm.i18n('ntfloadimg')+'
    '), rhandle = $('
    '), rhandlec = $('
    '), uiresize = $('
    '), uicrop = $('
    '), uirotate = $('
    '), uideg270 = $('').attr('title',fm.i18n('rotate-cw')).append($('')), uideg90 = $('').attr('title',fm.i18n('rotate-ccw')).append($('')), uiprop = $(''), reset = $('
    ').text(fm.i18n('default')).on('click', function(e) { themeSel.val('default').trigger('change'); }), list = $('
    ').on('click', 'button', function() { var val = $(this).data('themeid'); themeSel.val(val).trigger('change'); }); if (!fm.options.themes.default) { themeSel.append(''); } $.each(fm.options.themes, function(id, val) { var opt = $(''), dsc = $('
    '+fm.i18n(id)+'
    '), tm; themeSel.append(opt); list.append(dsc); tm = setTimeout(function() { dsc.find('span.elfinder-spinner').replaceWith(fm.i18n(['errRead', id])); }, 10000); fm.getTheme(id).always(function() { tm && clearTimeout(tm); }).done(function(data) { var link, val = $(), dl = $('
    '); link = data.link? tpl.link.replace(/\$1/g, data.link).replace(/\$3/g, fm.i18n('website')) : '$2'; if (data.name) { opt.html(fm.i18n(data.name)); } dsc.children('legend').html(link.replace(/\$2/g, fm.i18n(data.name) || id)); $.each(items, function(i, key) { var t = tpl[key] || tpl.data, elm; if (data[key]) { elm = t.replace(/\$0/g, fm.escape(key)).replace(/\$1/g, fm.i18n(key)).replace(/\$2/g, fm.i18n(data[key])); if (key === 'image' && data.link) { elm = $(elm).on('click', function() { themeSel.val(id).trigger('change'); }).attr('title', fm.i18n('select')); } dl.append(elm); } }); val = val.add(dl); val = val.add($('
    ').append($('').data('themeid', id).html(fm.i18n('select')))); dsc.find('span.elfinder-spinner').replaceWith(val); }).fail(function() { dsc.find('span.elfinder-spinner').replaceWith(fm.i18n(['errRead', id])); }); }); return $('
    ').append(themeSel.val(fm.theme && fm.theme.id? fm.theme.id : 'default'), defBtn, list); })()); forms.toolbarPref && (forms.toolbarPref = (function() { var pnls = $.map(fm.options.uiOptions.toolbar, function(v) { return $.isArray(v)? v : null; }), tags = [], hides = fm.storage('toolbarhides') || {}; $.each(pnls, function() { var cmd = this, name = fm.i18n('cmd'+cmd); if (name === 'cmd'+cmd) { name = fm.i18n(cmd); } tags.push(''); }); return $(tags.join(' ')).on('change', 'input', function() { var v = $(this).val(), o = $(this).is(':checked'); if (!o && !hides[v]) { hides[v] = true; } else if (o && hides[v]) { delete hides[v]; } fm.storage('toolbarhides', hides); fm.trigger('toolbarpref'); }); })()); forms.iconSize && (forms.iconSize = (function() { var max = fm.options.uiOptions.cwd.iconsView.sizeMax || 3, size = fm.storage('iconsize') || fm.options.uiOptions.cwd.iconsView.size || 0, sld = $('
    ').slider({ classes: { 'ui-slider-handle': 'elfinder-tabstop', }, value: size, max: max, slide: function(e, ui) { fm.getUI('cwd').trigger('iconpref', {size: ui.value}); }, change: function(e, ui) { fm.storage('iconsize', ui.value); } }); fm.getUI('cwd').on('iconpref', function(e, data) { sld.slider('option', 'value', data.size); }); return sld; })()); forms.columnPref && (forms.columnPref = (function() { var cols = fm.options.uiOptions.cwd.listView.columns, tags = [], hides = fm.storage('columnhides') || {}; $.each(cols, function() { var key = this, name = fm.getColumnName(key); tags.push(''); }); return $(tags.join(' ')).on('change', 'input', function() { var v = $(this).val(), o = $(this).is(':checked'); if (!o && !hides[v]) { hides[v] = true; } else if (o && hides[v]) { delete hides[v]; } fm.storage('columnhides', hides); fm.trigger('columnpref', { repaint: true }); }); })()); forms.selectAction && (forms.selectAction = (function() { var actSel = $('').on('change', function() { var act = $(this).val(); fm.storage('selectAction', act === 'default'? null : act); }), optTags = [], acts = self.options.selectActions, defAct = fm.getCommand('open').options.selectAction || 'open'; if ($.inArray(defAct, acts) === -1) { acts.unshift(defAct); } $.each(acts, function(i, act) { var names = $.map(act.split('/'), function(cmd) { var name = fm.i18n('cmd'+cmd); if (name === 'cmd'+cmd) { name = fm.i18n(cmd); } return name; }); optTags.push(''); }); return actSel.append(optTags.join('')).val(fm.storage('selectAction') || defAct); })()); forms.makefileTypes && (forms.makefileTypes = (function() { var hides = fm.getCommand('edit').getMkfileHides(), getTag = function() { var tags = []; // re-assign hides hides = fm.getCommand('edit').getMkfileHides(); $.each(fm.mimesCanMakeEmpty, function(mime, type) { var name = fm.getCommand('mkfile').getTypeName(mime, type); tags.push(''); }); return tags.join(' '); }, elm = $('
    ').on('change', 'input', function() { var v = $(this).val(), o = $(this).is(':checked'); if (!o && !hides[v]) { hides[v] = true; } else if (o && hides[v]) { delete hides[v]; } fm.storage('mkfileHides', hides); fm.trigger('canMakeEmptyFile'); }).append(getTag()), add = $('
    ').append( $('').on('keydown', function(e) { (e.keyCode === $.ui.keyCode.ENTER) && $(this).next().trigger('click'); }), $('').html(fm.i18n('add')).on('click', function() { var input = $(this).prev(), val = input.val(), uiToast = fm.getUI('toast'), err = function() { uiToast.appendTo(input.closest('.ui-dialog')); fm.toast({ msg: fm.i18n('errUsupportType'), mode: 'warning', onHidden: function() { uiToast.children().length === 1 && uiToast.appendTo(fm.getUI()); } }); input.trigger('focus'); return false; }, tmpMimes; if (!val.match(/\//)) { val = fm.arrayFlip(fm.mimeTypes)[val]; if (!val) { return err(); } input.val(val); } if (!fm.mimeIsText(val) || !fm.mimeTypes[val]) { return err(); } fm.trigger('canMakeEmptyFile', {mimes: [val], unshift: true}); tmpMimes = {}; tmpMimes[val] = fm.mimeTypes[val]; fm.storage('mkfileTextMimes', Object.assign(tmpMimes, fm.storage('mkfileTextMimes') || {})); input.val(''); uiToast.appendTo(input.closest('.ui-dialog')); fm.toast({ msg: fm.i18n(['complete', val + ' (' + tmpMimes[val] + ')']), onHidden: function() { uiToast.children().length === 1 && uiToast.appendTo(fm.getUI()); } }); }), $('').html(fm.i18n('reset')).on('click', function() { fm.one('canMakeEmptyFile', {done: function() { elm.empty().append(getTag()); }}); fm.trigger('canMakeEmptyFile', {resetTexts: true}); }) ), tm; fm.bind('canMakeEmptyFile', {done: function(e) { if (e.data && e.data.mimes && e.data.mimes.length) { elm.empty().append(getTag()); } }}); return $('
    ').append(elm, add); })()); forms.useStoredEditor && (forms.useStoredEditor = $('').prop('checked', (function() { var s = fm.storage('useStoredEditor'); return s? (s > 0) : fm.options.commandsOptions.edit.useStoredEditor; })()).on('change', function(e) { fm.storage('useStoredEditor', $(this).is(':checked')? 1 : -1); })); forms.editorMaximized && (forms.editorMaximized = $('').prop('checked', (function() { var s = fm.storage('editorMaximized'); return s? (s > 0) : fm.options.commandsOptions.edit.editorMaximized; })()).on('change', function(e) { fm.storage('editorMaximized', $(this).is(':checked')? 1 : -1); })); forms.useFullscreen && (forms.useFullscreen = $('').prop('checked', (function() { var s = fm.storage('useFullscreen'); return s? (s > 0) : fm.options.commandsOptions.fullscreen.mode === 'screen'; })()).on('change', function(e) { fm.storage('useFullscreen', $(this).is(':checked')? 1 : -1); })); if (forms.showHidden) { (function() { var setTitle = function() { var s = fm.storage('hide'), t = [], v; if (s && s.items) { $.each(s.items, function(h, n) { t.push(fm.escape(n)); }); } elms.prop('disabled', !t.length)[t.length? 'removeClass' : 'addClass']('ui-state-disabled'); v = t.length? t.join('\n') : ''; forms.showHidden.attr('title',v); useTooltip && forms.showHidden.tooltip('option', 'content', v.replace(/\n/g, '
    ')).tooltip('close'); }, chk = $('').prop('checked', (function() { var s = fm.storage('hide'); return s && s.show; })()).on('change', function(e) { var o = {}; o[$(this).is(':checked')? 'show' : 'hide'] = true; fm.exec('hide', void(0), o); }), btn = $('').append(fm.i18n('reset')).on('click', function() { fm.exec('hide', void(0), {reset: true}); $(this).parent().find('input:first').prop('checked', false); setTitle(); }), elms = $().add(chk).add(btn), useTooltip; forms.showHidden = $('
    ').append(chk, btn); fm.bind('hide', function(e) { var d = e.data; if (!d.opts || (!d.opts.show && !d.opts.hide)) { setTitle(); } }); if (fm.UA.Mobile && $.fn.tooltip) { useTooltip = true; forms.showHidden.tooltip({ classes: { 'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow' }, tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow', track: true }).css('user-select', 'none'); btn.css('user-select', 'none'); } setTitle(); })(); } forms.infoItems && (forms.infoItems = (function() { var items = fm.getCommand('info').items, tags = [], hides = fm.storage('infohides') || fm.arrayFlip(fm.options.commandsOptions.info.hideItems, true); $.each(items, function() { var key = this, name = fm.i18n(key); tags.push(''); }); return $(tags.join(' ')).on('change', 'input', function() { var v = $(this).val(), o = $(this).is(':checked'); if (!o && !hides[v]) { hides[v] = true; } else if (o && hides[v]) { delete hides[v]; } fm.storage('infohides', hides); fm.trigger('infopref', { repaint: true }); }); })()); forms.hashChecker && fm.hashCheckers.length && (forms.hashChecker = (function() { var tags = [], enabled = fm.arrayFlip(fm.storage('hashchekcer') || fm.options.commandsOptions.info.showHashAlgorisms, true); $.each(fm.hashCheckers, function() { var cmd = this, name = fm.i18n(cmd); tags.push(''); }); return $(tags.join(' ')).on('change', 'input', function() { var v = $(this).val(), o = $(this).is(':checked'); if (o) { enabled[v] = true; } else if (enabled[v]) { delete enabled[v]; } fm.storage('hashchekcer', $.grep(fm.hashCheckers, function(v) { return enabled[v]; })); }); })()); forms.autoFocusDialog && (forms.autoFocusDialog = $('').prop('checked', (function() { var s = fm.storage('autoFocusDialog'); return s? (s > 0) : fm.options.uiOptions.dialog.focusOnMouseOver; })()).on('change', function(e) { fm.storage('autoFocusDialog', $(this).is(':checked')? 1 : -1); })); forms.clearBrowserData && (forms.clearBrowserData = $('').text(fm.i18n('reset')).button().on('click', function(e) { e.preventDefault(); fm.storage(); $('#'+fm.id).elfinder('reload'); })); $.each(cats, function(id, prefs) { var dls, found; if (prefs === true) { found = 1; } else if (prefs) { dls = $(); $.each(prefs, function(i, n) { var f, title, chks = '', cbox; if (f = forms[n]) { found = 2; title = fm.i18n(n); cbox = $(f).filter('input[type="checkbox"]'); if (!cbox.length) { cbox = $(f).find('input[type="checkbox"]'); } if (cbox.length === 1) { if (!cbox.attr('id')) { cbox.attr('id', 'elfinder-preference-'+n+'-checkbox'); } title = ''; } else if (cbox.length > 1) { chks = ' elfinder-preference-checkboxes'; } dls = dls.add($('
    '+title+'
    ')).add($('
    ').append(f)); } }); } if (found) { ul.append(tab[r](/\{id\}/g, id)[r](/\{title\}/, fm.i18n(id))[r](/\{class\}/, openTab === id? 'elfinder-focus' : '')); if (found === 2) { tabs.append( $('
    ') .hide() .append($('
    ').append(dls)) ); } } }); ul.on('click', 'a', function(e) { var t = $(e.target), h = t.attr('href'); e.preventDefault(); e.stopPropagation(); ul.children().removeClass(clTabActive); t.removeClass('ui-state-hover').parent().addClass(clTabActive); if (h.match(/all$/)) { tabs.addClass('elfinder-preference-taball').children().show(); } else { tabs.removeClass('elfinder-preference-taball').children().hide(); $(h).show(); } }).on('focus blur', 'a', function(e) { $(this).parent().toggleClass('ui-state-focus', e.type === 'focusin'); }).on('mouseenter mouseleave', 'li', function(e) { $(this).toggleClass('ui-state-hover', e.type === 'mouseenter'); }); tabs.find('a,input,select,button').addClass('elfinder-tabstop'); base.append(ul, tabs); dialog = self.fmDialog(base, { title : self.title, width : self.options.width || 600, height: self.options.height || 400, maxWidth: 'window', maxHeight: 'window', autoOpen : false, destroyOnClose : false, allowMinimize : false, open : function() { openTab && selectTab(openTab); openTab = null; }, resize : function() { tabs.height(dialog.height() - ul.outerHeight(true) - (tabs.outerHeight(true) - tabs.height()) - 5); } }) .on('click', function(e) { e.stopPropagation(); }) .css({ overflow: 'hidden' }); dialog.closest('.ui-dialog') .css({ overflow: 'hidden' }) .addClass('elfinder-bg-translucent'); openTab = 'all'; }, dialog, openTab; this.shortcuts = [{ pattern : 'ctrl+comma', description : this.title }]; this.alwaysEnabled = true; this.getstate = function() { return 0; }; this.exec = function(sel, cOpts) { !dialog && build(); if (cOpts) { if (cOpts.tab) { selectTab(cOpts.tab); } else if (cOpts._currentType === 'cwd') { selectTab('workspace'); } } dialog.elfinderdialog('open'); return $.Deferred().resolve(); }; };application/library/js/commands/search.js000064400000007722147577724760014575 0ustar00/** * @class elFinder command "search" * Find files * * @author Dmitry (dio) Levashov **/ elFinder.prototype.commands.search = function() { "use strict"; this.title = 'Find files'; this.options = {ui : 'searchbutton'}; this.alwaysEnabled = true; this.updateOnSelect = false; /** * Return command status. * Search does not support old api. * * @return Number **/ this.getstate = function() { return 0; }; /** * Send search request to backend. * * @param String search string * @return $.Deferred **/ this.exec = function(q, target, mime, type) { var fm = this.fm, reqDef = [], sType = type || '', onlyMimes = fm.options.onlyMimes, phash, targetVolids = [], setType = function(data) { if (sType && sType !== 'SearchName' && sType !== 'SearchMime') { data.type = sType; } return data; }, rootCnt; if (typeof q == 'string' && q) { if (typeof target == 'object') { mime = target.mime || ''; target = target.target || ''; } target = target? target : ''; if (mime) { mime = $.trim(mime).replace(',', ' ').split(' '); if (onlyMimes.length) { mime = $.map(mime, function(m){ m = $.trim(m); return m && ($.inArray(m, onlyMimes) !== -1 || $.grep(onlyMimes, function(om) { return m.indexOf(om) === 0? true : false; }).length )? m : null; }); } } else { mime = [].concat(onlyMimes); } fm.trigger('searchstart', setType({query : q, target : target, mimes : mime})); if (! onlyMimes.length || mime.length) { if (target === '' && fm.api >= 2.1) { rootCnt = Object.keys(fm.roots).length; $.each(fm.roots, function(id, hash) { reqDef.push(fm.request({ data : setType({cmd : 'search', q : q, target : hash, mimes : mime}), notify : {type : 'search', cnt : 1, hideCnt : (rootCnt > 1? false : true)}, cancel : true, preventDone : true })); }); } else { reqDef.push(fm.request({ data : setType({cmd : 'search', q : q, target : target, mimes : mime}), notify : {type : 'search', cnt : 1, hideCnt : true}, cancel : true, preventDone : true })); if (target !== '' && fm.api >= 2.1 && Object.keys(fm.leafRoots).length) { $.each(fm.leafRoots, function(hash, roots) { phash = hash; while(phash) { if (target === phash) { $.each(roots, function() { var f = fm.file(this); f && f.volumeid && targetVolids.push(f.volumeid); reqDef.push(fm.request({ data : setType({cmd : 'search', q : q, target : this, mimes : mime}), notify : {type : 'search', cnt : 1, hideCnt : false}, cancel : true, preventDone : true })); }); } phash = (fm.file(phash) || {}).phash; } }); } } } else { reqDef = [$.Deferred().resolve({files: []})]; } fm.searchStatus.mixed = (reqDef.length > 1)? targetVolids : false; return $.when.apply($, reqDef).done(function(data) { var argLen = arguments.length, i; data.warning && fm.error(data.warning); if (argLen > 1) { data.files = (data.files || []); for(i = 1; i < argLen; i++) { arguments[i].warning && fm.error(arguments[i].warning); if (arguments[i].files) { data.files.push.apply(data.files, arguments[i].files); } } } // because "preventDone : true" so update files cache data.files && data.files.length && fm.cache(data.files); fm.lazy(function() { fm.trigger('search', data); }).then(function() { // fire event with command name + 'done' return fm.lazy(function() { fm.trigger('searchdone'); }); }).then(function() { // force update content data.sync && fm.sync(); }); }); } fm.getUI('toolbar').find('.'+fm.res('class', 'searchbtn')+' :text').trigger('focus'); return $.Deferred().reject(); }; }; application/library/js/commands/duplicate.js000064400000002540147577724760015273 0ustar00/** * @class elFinder command "duplicate" * Create file/folder copy with suffix "copy Number" * * @type elFinder.command * @author Dmitry (dio) Levashov */ elFinder.prototype.commands.duplicate = function() { "use strict"; var fm = this.fm; this.getstate = function(select) { var sel = this.files(select), cnt = sel.length, filter = function(files) { var fres = true; return $.grep(files, function(f) { fres = fres && f.read && f.phash === fm.cwd().hash && ! fm.isRoot(f)? true : false; return fres; }); }; return cnt && fm.cwd().write && filter(sel).length == cnt ? 0 : -1; }; this.exec = function(hashes) { var fm = this.fm, files = this.files(hashes), cnt = files.length, dfrd = $.Deferred() .fail(function(error) { error && fm.error(error); }), args = []; if (! cnt) { return dfrd.reject(); } $.each(files, function(i, file) { if (!file.read || !fm.file(file.phash).write) { return !dfrd.reject(['errCopy', file.name, 'errPerm']); } }); if (dfrd.state() == 'rejected') { return dfrd; } return fm.request({ data : {cmd : 'duplicate', targets : this.hashes(hashes)}, notify : {type : 'copy', cnt : cnt}, navigate : { toast : { inbuffer : {msg: fm.i18n(['complete', fm.i18n('cmdduplicate')])} } } }); }; }; application/library/js/commands/reload.js000064400000003534147577724760014573 0ustar00/** * @class elFinder command "reload" * Sync files and folders * * @author Dmitry (dio) Levashov **/ (elFinder.prototype.commands.reload = function() { "use strict"; var self = this, search = false; this.alwaysEnabled = true; this.updateOnSelect = true; this.shortcuts = [{ pattern : 'ctrl+shift+r f5' }]; this.getstate = function() { return 0; }; this.init = function() { this.fm.bind('search searchend', function() { search = this.type == 'search'; }); }; this.fm.bind('contextmenu', function(){ var fm = self.fm; if (fm.options.sync >= 1000) { self.extra = { icon: 'accept', node: $('') .attr({title: fm.i18n('autoSync')}) .on('click touchstart', function(e){ if (e.type === 'touchstart' && e.originalEvent.touches.length > 1) { return; } e.stopPropagation(); e.preventDefault(); $(this).parent() .toggleClass('ui-state-disabled', fm.options.syncStart) .parent().removeClass('ui-state-hover'); fm.options.syncStart = !fm.options.syncStart; fm.autoSync(fm.options.syncStart? null : 'stop'); }).on('ready', function(){ $(this).parent().toggleClass('ui-state-disabled', !fm.options.syncStart).css('pointer-events', 'auto'); }) }; } }); this.exec = function() { var fm = this.fm; if (!search) { var dfrd = fm.sync(), timeout = setTimeout(function() { fm.notify({type : 'reload', cnt : 1, hideCnt : true}); dfrd.always(function() { fm.notify({type : 'reload', cnt : -1}); }); }, fm.notifyDelay); return dfrd.always(function() { clearTimeout(timeout); fm.trigger('reload'); }); } else { $('div.elfinder-toolbar > div.'+fm.res('class', 'searchbtn') + ' > span.ui-icon-search').click(); } }; }).prototype = { forceLoad : true }; // this is required command application/library/js/extras/editors.default.js000064400000242351147577724760016130 0ustar00(function(editors, elFinder) { if (typeof define === 'function' && define.amd) { define(['elfinder'], editors); } else if (elFinder) { var optEditors = elFinder.prototype._options.commandsOptions.edit.editors; elFinder.prototype._options.commandsOptions.edit.editors = optEditors.concat(editors(elFinder)); } }(function(elFinder) { "use strict"; var apps = {}, // get query of getfile getfile = window.location.search.match(/getfile=([a-z]+)/), useRequire = elFinder.prototype.hasRequire, ext2mime = { bmp: 'image/x-ms-bmp', dng: 'image/x-adobe-dng', gif: 'image/gif', jpeg: 'image/jpeg', jpg: 'image/jpeg', pdf: 'application/pdf', png: 'image/png', ppm: 'image/x-portable-pixmap', psd: 'image/vnd.adobe.photoshop', pxd: 'image/x-pixlr-data', svg: 'image/svg+xml', tiff: 'image/tiff', webp: 'image/webp', xcf: 'image/x-xcf', sketch: 'application/x-sketch', ico: 'image/x-icon', dds: 'image/vnd-ms.dds', emf: 'application/x-msmetafile' }, mime2ext, getExtention = function(mime, fm, jpeg) { if (!mime2ext) { mime2ext = fm.arrayFlip(ext2mime); } var ext = mime2ext[mime] || fm.mimeTypes[mime]; if (!jpeg) { if (ext === 'jpeg') { ext = 'jpg'; } } else { if (ext === 'jpg') { ext = 'jpeg'; } } return ext; }, changeImageType = function(src, toMime) { var dfd = $.Deferred(); try { var canvas = document.createElement('canvas'), ctx = canvas.getContext('2d'), img = new Image(), conv = function() { var url = canvas.toDataURL(toMime), mime, m; if (m = url.match(/^data:([a-z0-9]+\/[a-z0-9.+-]+)/i)) { mime = m[1]; } else { mime = ''; } if (mime.toLowerCase() === toMime.toLowerCase()) { dfd.resolve(canvas.toDataURL(toMime), canvas); } else { dfd.reject(); } }; img.src = src; $(img).on('load', function() { try { canvas.width = img.width; canvas.height = img.height; ctx.drawImage(img, 0, 0); conv(); } catch(e) { dfd.reject(); } }).on('error', function () { dfd.reject(); }); return dfd; } catch(e) { return dfd.reject(); } }, initImgTag = function(id, file, content, fm) { var node = $(this).children('img:first').data('ext', getExtention(file.mime, fm)), spnr = $('
    ') .html('' + fm.i18n('ntfloadimg') + '') .hide() .appendTo(this), setup = function() { node.attr('id', id+'-img') .attr('src', url || content) .css({'height':'', 'max-width':'100%', 'max-height':'100%', 'cursor':'pointer'}) .data('loading', function(done) { var btns = node.closest('.elfinder-dialog').find('button,.elfinder-titlebar-button'); btns.prop('disabled', !done)[done? 'removeClass' : 'addClass']('ui-state-disabled'); node.css('opacity', done? '' : '0.3'); spnr[done? 'hide' : 'show'](); return node; }); }, url; if (!content.match(/^data:/)) { fm.openUrl(file.hash, false, function(v) { url = v; node.attr('_src', content); setup(); }); } else { setup(); } }, imgBase64 = function(node, mime) { var style = node.attr('style'), img, canvas, ctx, data; try { // reset css for getting image size node.attr('style', ''); // img node img = node.get(0); // New Canvas canvas = document.createElement('canvas'); canvas.width = img.width; canvas.height = img.height; // restore css node.attr('style', style); // Draw Image canvas.getContext('2d').drawImage(img, 0, 0); // To Base64 data = canvas.toDataURL(mime); } catch(e) { data = node.attr('src'); } return data; }, iframeClose = function(ifm) { var $ifm = $(ifm), dfd = $.Deferred().always(function() { $ifm.off('load', load); }), ab = 'about:blank', chk = function() { tm = setTimeout(function() { var src; try { src = base.contentWindow.location.href; } catch(e) { src = null; } if (src === ab) { dfd.resolve(); } else if (--cnt > 0){ chk(); } else { dfd.reject(); } }, 500); }, load = function() { tm && clearTimeout(tm); dfd.resolve(); }, cnt = 20, // 500ms * 20 = 10sec wait tm; $ifm.one('load', load); ifm.src = ab; chk(); return dfd; }; // check getfile callback function if (getfile) { getfile = getfile[1]; if (getfile === 'ckeditor') { elFinder.prototype._options.getFileCallback = function(file, fm) { window.opener.CKEDITOR.tools.callFunction((function() { var reParam = new RegExp('(?:[?&]|&)CKEditorFuncNum=([^&]+)', 'i'), match = window.location.search.match(reParam); return (match && match.length > 1) ? match[1] : ''; })(), fm.convAbsUrl(file.url)); fm.destroy(); window.close(); }; } } // return editors Array return [ { // tui.image-editor - https://github.com/nhnent/tui.image-editor info : { id: 'tuiimgedit', name: 'TUI Image Editor', iconImg: 'img/editor-icons.png 0 -48', dataScheme: true, schemeContent: true, openMaximized: true, canMakeEmpty: false, integrate: { title: 'TOAST UI Image Editor', link: 'http://ui.toast.com/tui-image-editor/' } }, // MIME types to accept mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'], // HTML of this editor html : '
    ', // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE8 || fm.UA.Mobile) { this.disabled = true; } else { this.opts = Object.assign({ version: 'v3.15.3' }, opts.extraOptions.tuiImgEditOpts || {}, { iconsPath : fm.baseUrl + 'img/tui-', theme : {} }); if (!fm.isSameOrigin(this.opts.iconsPath)) { this.disabled = true; fm.debug('warning', 'Setting `commandOptions.edit.extraOptions.tuiImgEditOpts.iconsPath` MUST follow the same origin policy.'); } } }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, content, fm) { this.data('url', content); }, load : function(base) { var self = this, fm = this.fm, dfrd = $.Deferred(), cdns = fm.options.cdns, ver = self.confObj.opts.version, init = function(editor) { var $base = $(base), bParent = $base.parent(), opts = self.confObj.opts, iconsPath = opts.iconsPath, tmpContainer = $('
    ').appendTo(bParent), tmpDiv = [ $('
    ').appendTo(tmpContainer), $('
    ').appendTo(tmpContainer) ], iEditor = new editor(base, { includeUI: { loadImage: { path: $base.data('url'), name: self.file.name }, theme: opts.theme, initMenu: 'filter', menuBarPosition: 'bottom' }, cssMaxWidth: Math.max(300, bParent.width()), cssMaxHeight: Math.max(200, bParent.height() - (tmpDiv[0].height() + tmpDiv[1].height() + 3 /*margin*/)), usageStatistics: false }), canvas = $base.find('canvas:first').get(0), zoom = function(v) { if (typeof v !== 'undefined') { var c = $(canvas), w = parseInt(c.attr('width')), h = parseInt(c.attr('height')), a = w / h, z, mw, mh; if (v === 0) { mw = w; mh = h; } else { mw = parseInt(c.css('max-width')) + Number(v); mh = mw / a; if (mw > w && mh > h) { mw = w; mh = h; } } z = Math.round(mw / w * 100); // Control zoom button of TUI Image Editor if (z < 100) { iEditor.resetZoom(); iEditor.stopDrawingMode(); tuiZoomCtrls.hide(); } else { tuiZoomCtrls.show(); } per.text(z + '%'); iEditor.resizeCanvasDimension({width: mw, height: mh}); // continually change more if (zoomMore) { setTimeout(function() { zoomMore && zoom(v); }, 50); } } }, zup = $('').data('val', 10), zdown = $('').data('val', -10), per = $('').css('width', '4em').text('%').attr('title', '100%').data('val', 0), tuiZoomCtrls, quty, qutyTm, zoomTm, zoomMore; tmpContainer.remove(); $base.removeData('url').data('mime', self.file.mime); // jpeg quality controls if (self.file.mime === 'image/jpeg') { $base.data('quality', fm.storage('jpgQuality') || fm.option('jpgQuality')); quty = $('') .attr('min', '1') .attr('max', '100') .attr('title', '1 - 100') .on('change', function() { var q = quty.val(); $base.data('quality', q); qutyTm && cancelAnimationFrame(qutyTm); qutyTm = requestAnimationFrame(function() { canvas.toBlob(function(blob) { blob && quty.next('span').text(' (' + fm.formatSize(blob.size) + ')'); }, 'image/jpeg', Math.max(Math.min(q, 100), 1) / 100); }); }) .val($base.data('quality')); $('
    ') .append( $('').html(fm.i18n('quality') + ' : '), quty, $('') ) .prependTo($base.parent().next()); } else if (self.file.mime === 'image/svg+xml') { $base.closest('.ui-dialog').trigger('changeType', { extention: 'png', mime : 'image/png', keepEditor: true }); } // zoom scale controls $('
    ') .append( zdown, per, zup ) .attr('title', fm.i18n('scale')) .on('click', 'span,button', function() { zoom($(this).data('val')); }) .on('mousedown mouseup mouseleave', 'span', function(e) { zoomMore = false; zoomTm && clearTimeout(zoomTm); if (e.type === 'mousedown') { zoomTm = setTimeout(function() { zoomMore = true; zoom($(e.target).data('val')); }, 500); } }) .prependTo($base.parent().next()); // wait canvas ready setTimeout(function() { dfrd.resolve(iEditor); if (quty) { quty.trigger('change'); iEditor.on('redoStackChanged undoStackChanged', function() { quty.trigger('change'); }); } // ZOOM controls of TUI Image Editor tuiZoomCtrls = $base.find('.tie-btn-zoomIn,.tie-btn-zoomOut,.tie-btn-hand'); // show initial scale zoom(null); }, 100); // show color slider (maybe TUI-Image-Editor's bug) // see https://github.com/nhn/tui.image-editor/issues/153 $base.find('.tui-colorpicker-palette-container').on('click', '.tui-colorpicker-palette-preview', function() { $(this).closest('.color-picker-control').height('auto').find('.tui-colorpicker-slider-container').toggle(); }); $base.on('click', function() { $base.find('.tui-colorpicker-slider-container').hide(); }); }, loader; if (!self.confObj.editor) { loader = $.Deferred(); fm.loadCss([ cdns.tui + '/tui-color-picker/latest/tui-color-picker.css', cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.css' ]); if (fm.hasRequire) { require.config({ paths : { 'fabric/dist/fabric.require' : cdns.fabric + '/fabric.require.min', // for fabric < 2.0.1 'fabric' : cdns.fabric + '/fabric.min', // for fabric >= 2.0.1 'tui-code-snippet' : cdns.tui + '/tui.code-snippet/latest/tui-code-snippet.min', 'tui-color-picker' : cdns.tui + '/tui-color-picker/latest/tui-color-picker.min', 'tui-image-editor' : cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.min' } }); require(['tui-image-editor'], function(ImageEditor) { loader.resolve(ImageEditor); }); } else { fm.loadScript([ cdns.fabric + '/fabric.min.js', cdns.tui + '/tui.code-snippet/latest/tui-code-snippet.min.js' ], function() { fm.loadScript([ cdns.tui + '/tui-color-picker/latest/tui-color-picker.min.js' ], function() { fm.loadScript([ cdns.tui + '/tui-image-editor/'+ver+'/tui-image-editor.min.js' ], function() { loader.resolve(window.tui.ImageEditor); }, { loadType: 'tag' }); }, { loadType: 'tag' }); }, { loadType: 'tag' }); } loader.done(function(editor) { self.confObj.editor = editor; init(editor); }); } else { init(self.confObj.editor); } return dfrd; }, getContent : function(base) { var editor = this.editor, fm = editor.fm, $base = $(base), quality = $base.data('quality'); if (editor.instance) { if ($base.data('mime') === 'image/jpeg') { quality = quality || fm.storage('jpgQuality') || fm.option('jpgQuality'); quality = Math.max(0.1, Math.min(1, quality / 100)); } return editor.instance.toDataURL({ format: getExtention($base.data('mime'), fm, true), quality: quality }); } }, save : function(base) { var $base = $(base), quality = $base.data('quality'), hash = $base.data('hash'), file; this.instance.deactivateAll(); if (typeof quality !== 'undefined') { this.fm.storage('jpgQuality', quality); } if (hash) { file = this.fm.file(hash); $base.data('mime', file.mime); } } }, { // Photopea advanced image editor info : { id : 'photopea', name : 'Photopea', iconImg : 'img/editor-icons.png 0 -160', single: true, noContent: true, arrayBufferContent: true, openMaximized: true, // Disable file types that cannot be saved on Photopea. canMakeEmpty: ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp', 'image/tiff', /*'image/x-adobe-dng',*/ 'image/webp', /*'image/x-xcf',*/ 'image/vnd.adobe.photoshop', 'application/pdf', 'image/x-portable-pixmap', 'image/x-sketch', 'image/x-icon', 'image/vnd-ms.dds', /*'application/x-msmetafile'*/], integrate: { title: 'Photopea', link: 'https://www.photopea.com/learn/' } }, mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp', 'image/tiff', 'image/x-adobe-dng', 'image/webp', 'image/x-xcf', 'image/vnd.adobe.photoshop', 'application/pdf', 'image/x-portable-pixmap', 'image/x-sketch', 'image/x-icon', 'image/vnd-ms.dds', 'application/x-msmetafile'], html : '', // setup on elFinder bootup setup : function(opts, fm) { if (fm.UA.IE || fm.UA.Mobile) { this.disabled = true; } }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, dum, fm) { var orig = 'https://www.photopea.com', ifm = $(this).hide() //.css('box-sizing', 'border-box') .on('load', function() { //spnr.remove(); ifm.show(); }) .on('error', function() { spnr.remove(); ifm.show(); }), editor = this.editor, confObj = editor.confObj, spnr = $('
    ') .html('' + fm.i18n('nowLoading') + '') .appendTo(ifm.parent()), saveMimes = fm.arrayFlip(confObj.info.canMakeEmpty), getType = function(mime) { var ext = getExtention(mime, fm), extmime = ext2mime[ext]; if (!confObj.mimesFlip[extmime]) { ext = ''; } else if (ext === 'jpeg') { ext = 'jpg'; } if (!ext || !saveMimes[extmime]) { ext = 'psd'; extmime = ext2mime[ext]; ifm.closest('.ui-dialog').trigger('changeType', { extention: ext, mime : extmime, keepEditor: true }); } return ext; }, mime = file.mime, liveMsg, type, quty; if (!confObj.mimesFlip) { confObj.mimesFlip = fm.arrayFlip(confObj.mimes, true); } if (!confObj.liveMsg) { confObj.liveMsg = function(ifm, spnr, file) { var wnd = ifm.get(0).contentWindow, phase = 0, data = null, dfdIni = $.Deferred().done(function() { spnr.remove(); phase = 1; wnd.postMessage(data, orig); }), dfdGet; this.load = function() { return fm.getContents(file.hash, 'arraybuffer').done(function(d) { data = d; }); }; this.receive = function(e) { var ev = e.originalEvent, state; if (ev.origin === orig && ev.source === wnd) { if (ev.data === 'done') { if (phase === 0) { dfdIni.resolve(); } else if (phase === 1) { phase = 2; ifm.trigger('contentsloaded'); } else { if (dfdGet && dfdGet.state() === 'pending') { dfdGet.reject('errDataEmpty'); } } } else if (ev.data === 'Save') { editor.doSave(); } else { if (dfdGet && dfdGet.state() === 'pending') { if (typeof ev.data === 'object') { dfdGet.resolve('data:' + mime + ';base64,' + fm.arrayBufferToBase64(ev.data)); } else { dfdGet.reject('errDataEmpty'); } } } } }; this.getContent = function() { var type, q; if (phase > 1) { dfdGet && dfdGet.state() === 'pending' && dfdGet.reject(); dfdGet = null; dfdGet = $.Deferred(); if (phase === 2) { phase = 3; dfdGet.resolve('data:' + mime + ';base64,' + fm.arrayBufferToBase64(data)); data = null; return dfdGet; } if (ifm.data('mime')) { mime = ifm.data('mime'); type = getType(mime); } if (q = ifm.data('quality')) { type += ':' + (q / 100); } wnd.postMessage('app.activeDocument.saveToOE("' + type + '")', orig); return dfdGet; } }; }; } ifm.parent().css('padding', 0); type = getType(file.mime); liveMsg = editor.liveMsg = new confObj.liveMsg(ifm, spnr, file); $(window).on('message.' + fm.namespace, liveMsg.receive); liveMsg.load().done(function() { var d = JSON.stringify({ files : [], environment : { lang: fm.lang.replace(/_/g, '-'), customIO: {"save": "app.echoToOE(\"Save\");"} } }); ifm.attr('src', orig + '/#' + encodeURI(d)); }).fail(function(err) { err && fm.error(err); editor.initFail = true; }); // jpeg quality controls if (file.mime === 'image/jpeg' || file.mime === 'image/webp') { ifm.data('quality', fm.storage('jpgQuality') || fm.option('jpgQuality')); quty = $('') .attr('min', '1') .attr('max', '100') .attr('title', '1 - 100') .on('change', function() { var q = quty.val(); ifm.data('quality', q); }) .val(ifm.data('quality')); $('
    ') .append( $('').html(fm.i18n('quality') + ' : '), quty, $('') ) .prependTo(ifm.parent().next()); } }, load : function(base) { var dfd = $.Deferred(), self = this, fm = this.fm, $base = $(base); if (self.initFail) { dfd.reject(); } else { $base.on('contentsloaded', function() { dfd.resolve(self.liveMsg); }); } return dfd; }, getContent : function() { return this.editor.liveMsg? this.editor.liveMsg.getContent() : void(0); }, save : function(base, liveMsg) { var $base = $(base), quality = $base.data('quality'), hash = $base.data('hash'), file; if (typeof quality !== 'undefined') { this.fm.storage('jpgQuality', quality); } if (hash) { file = this.fm.file(hash); $base.data('mime', file.mime); } else { $base.removeData('mime'); } }, // On dialog closed close : function(base, liveMsg) { $(base).attr('src', ''); liveMsg && $(window).off('message.' + this.fm.namespace, liveMsg.receive); } }, { // Pixo is cross-platform image editor info : { id : 'pixo', name : 'Pixo Editor', iconImg : 'img/editor-icons.png 0 -208', dataScheme: true, schemeContent: true, single: true, canMakeEmpty: false, integrate: { title: 'Pixo Editor', link: 'https://pixoeditor.com/privacy-policy/' } }, // MIME types to accept mimes : ['image/jpeg', 'image/png', 'image/gif', 'image/svg+xml', 'image/x-ms-bmp'], // HTML of this editor html : '
    ', // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE8 || !opts.extraOptions || !opts.extraOptions.pixo || !opts.extraOptions.pixo.apikey) { this.disabled = true; } else { this.editorOpts = opts.extraOptions.pixo; } }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, content, fm) { initImgTag.call(this, id, file, content, fm); }, // Get data uri scheme (this: this editors HTML node) getContent : function() { return $(this).children('img:first').attr('src'); }, // Launch Pixo editor when dialog open load : function(base) { var self = this, fm = this.fm, $base = $(base), node = $base.children('img:first'), dialog = $base.closest('.ui-dialog'), elfNode = fm.getUI(), dfrd = $.Deferred(), container = $('#elfinder-pixo-container'), init = function(onload) { var opts; if (!container.length) { container = $('
    ').css({ position: 'fixed', top: 0, right: 0, width: '100%', height: $(window).height(), overflow: 'hidden' }).hide().appendTo(elfNode.hasClass('elfinder-fullscreen')? elfNode : 'body'); // bind switch fullscreen event elfNode.on('resize.'+fm.namespace, function(e, data) { e.preventDefault(); e.stopPropagation(); data && data.fullscreen && container.appendTo(data.fullscreen === 'on'? elfNode : 'body'); }); fm.bind('destroy', function() { editor && editor.cancelEditing(); container.remove(); }); } else { // always moves to last container.appendTo(container.parent()); } node.on('click', launch); // Constructor options opts = Object.assign({ type: 'child', parent: container.get(0), output: {format: 'png'}, onSave: function(arg) { // Check current file.hash, all callbacks are called on multiple instances var mime = arg.toBlob().type, ext = getExtention(mime, fm), draw = function(url) { node.one('load error', function() { node.data('loading') && node.data('loading')(true); }) .attr('crossorigin', 'anonymous') .attr('src', url); }, url = arg.toDataURL(); node.data('loading')(); delete base._canvas; if (node.data('ext') !== ext) { changeImageType(url, self.file.mime).done(function(res, cv) { if (cv) { base._canvas = canvas = cv; quty.trigger('change'); qBase && qBase.show(); } draw(res); }).fail(function() { dialog.trigger('changeType', { extention: ext, mime : mime }); draw(url); }); } else { draw(url); } }, onClose: function() { dialog.removeClass(fm.res('class', 'preventback')); fm.toggleMaximize(container, false); container.hide(); fm.toFront(dialog); } }, self.confObj.editorOpts); // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: base, editorObj: Pixo, instance: void(0), opts: opts }); // make editor instance editor = new Pixo.Bridge(opts); dfrd.resolve(editor); $base.on('saveAsFail', launch); if (onload) { onload(); } }, launch = function() { dialog.addClass(fm.res('class', 'preventback')); fm.toggleMaximize(container, true); fm.toFront(container); container.show().data('curhash', self.file.hash); editor.edit(node.get(0)); node.data('loading')(true); }, qBase, quty, qutyTm, canvas, editor; node.data('loading')(); // jpeg quality controls if (self.file.mime === 'image/jpeg') { quty = $('') .attr('min', '1') .attr('max', '100') .attr('title', '1 - 100') .on('change', function() { var q = quty.val(); qutyTm && cancelAnimationFrame(qutyTm); qutyTm = requestAnimationFrame(function() { if (canvas) { canvas.toBlob(function(blob) { blob && quty.next('span').text(' (' + fm.formatSize(blob.size) + ')'); }, 'image/jpeg', Math.max(Math.min(q, 100), 1) / 100); } }); }) .val(fm.storage('jpgQuality') || fm.option('jpgQuality')); qBase = $('
    ') .hide() .append( $('').html(fm.i18n('quality') + ' : '), quty, $('') ) .prependTo($base.parent().next()); $base.data('quty', quty); } // load script then init if (typeof Pixo === 'undefined') { fm.loadScript(['https://pixoeditor.com:8443/editor/scripts/bridge.m.js'], function() { init(launch); }, {loadType: 'tag'}); } else { init(); launch(); } return dfrd; }, // Convert content url to data uri scheme to save content save : function(base) { var self = this, $base = $(base), node = $base.children('img:first'), q; if (base._canvas) { if ($base.data('quty')) { q = $base.data('quty').val(); q && this.fm.storage('jpgQuality', q); } node.attr('src', base._canvas.toDataURL(self.file.mime, q? Math.max(Math.min(q, 100), 1) / 100 : void(0))); } else if (node.attr('src').substr(0, 5) !== 'data:') { node.attr('src', imgBase64(node, this.file.mime)); } }, close : function(base, editor) { editor && editor.destroy(); } }, { // ACE Editor // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE8 || !fm.options.cdns.ace) { this.disabled = true; } }, // `mimes` is not set for support everything kind of text file info : { id : 'aceeditor', name : 'ACE Editor', iconImg : 'img/editor-icons.png 0 -96' }, load : function(textarea) { var self = this, fm = this.fm, dfrd = $.Deferred(), cdn = fm.options.cdns.ace, start = function() { var editor, editorBase, mode, ta = $(textarea), taBase = ta.parent(), dialog = taBase.parent(), id = textarea.id + '_ace', ext = self.file.name.replace(/^.+\.([^.]+)|(.+)$/, '$1$2').toLowerCase(), // MIME/mode map mimeMode = { 'text/x-php' : 'php', 'application/x-php' : 'php', 'text/html' : 'html', 'application/xhtml+xml' : 'html', 'text/javascript' : 'javascript', 'application/javascript' : 'javascript', 'text/css' : 'css', 'text/x-c' : 'c_cpp', 'text/x-csrc' : 'c_cpp', 'text/x-chdr' : 'c_cpp', 'text/x-c++' : 'c_cpp', 'text/x-c++src' : 'c_cpp', 'text/x-c++hdr' : 'c_cpp', 'text/x-shellscript' : 'sh', 'application/x-csh' : 'sh', 'text/x-python' : 'python', 'text/x-java' : 'java', 'text/x-java-source' : 'java', 'text/x-ruby' : 'ruby', 'text/x-perl' : 'perl', 'application/x-perl' : 'perl', 'text/x-sql' : 'sql', 'text/xml' : 'xml', 'application/docbook+xml' : 'xml', 'application/xml' : 'xml' }; // set base height taBase.height(taBase.height()); // set basePath of ace ace.config.set('basePath', cdn); // Base node of Ace editor editorBase = $('
    ').text(ta.val()).insertBefore(ta.hide()); // Editor flag ta.data('ace', true); // Aceeditor instance editor = ace.edit(id); // Ace editor configure editor.$blockScrolling = Infinity; editor.setOptions({ theme: 'ace/theme/monokai', fontSize: '14px', wrap: true, }); ace.config.loadModule('ace/ext/modelist', function() { // detect mode mode = ace.require('ace/ext/modelist').getModeForPath('/' + self.file.name).name; if (mode === 'text') { if (mimeMode[self.file.mime]) { mode = mimeMode[self.file.mime]; } } // show MIME:mode in title bar taBase.prev().children('.elfinder-dialog-title').append(' (' + self.file.mime + ' : ' + mode.split(/[\/\\]/).pop() + ')'); editor.setOptions({ mode: 'ace/mode/' + mode }); if (dfrd.state() === 'resolved') { dialog.trigger('resize'); } }); ace.config.loadModule('ace/ext/language_tools', function() { ace.require('ace/ext/language_tools'); editor.setOptions({ enableBasicAutocompletion: true, enableSnippets: true, enableLiveAutocompletion: false }); }); ace.config.loadModule('ace/ext/settings_menu', function() { ace.require('ace/ext/settings_menu').init(editor); }); // Short cuts editor.commands.addCommand({ name : "saveFile", bindKey: { win : 'Ctrl-s', mac : 'Command-s' }, exec: function(editor) { self.doSave(); } }); editor.commands.addCommand({ name : "closeEditor", bindKey: { win : 'Ctrl-w|Ctrl-q', mac : 'Command-w|Command-q' }, exec: function(editor) { self.doCancel(); } }); editor.resize(); // TextArea button and Setting button $('
    ').css('float', 'left') .append( $('').html(self.fm.i18n('TextArea')) .button() .on('click', function(){ if (ta.data('ace')) { ta.removeData('ace'); editorBase.hide(); ta.val(editor.session.getValue()).show().trigger('focus'); $(this).text('AceEditor'); } else { ta.data('ace', true); editorBase.show(); editor.setValue(ta.hide().val(), -1); editor.focus(); $(this).html(self.fm.i18n('TextArea')); } }) ) .append( $('') .button({ icons: { primary: 'ui-icon-gear', secondary: 'ui-icon-triangle-1-e' }, text: false }) .on('click', function(){ editor.showSettingsMenu(); $('#ace_settingsmenu') .css('font-size', '80%') .find('div[contains="setOptions"]').hide().end() .parent().appendTo($('#elfinder')); }) ) .prependTo(taBase.next()); // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: ace, instance: editor, opts: {} }); //dialog.trigger('resize'); dfrd.resolve(editor); }; // check ace & start if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); self.fm.loadScript([ cdn+'/ace.js' ], function() { self.confObj.loader.resolve(); }, void 0, {obj: window, name: 'ace'}); } self.confObj.loader.done(start); return dfrd; }, close : function(textarea, instance) { instance && instance.destroy(); }, save : function(textarea, instance) { instance && $(textarea).data('ace') && (textarea.value = instance.session.getValue()); }, focus : function(textarea, instance) { instance && $(textarea).data('ace') && instance.focus(); }, resize : function(textarea, instance, e, data) { instance && instance.resize(); } }, { // CodeMirror // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE10 || !fm.options.cdns.codemirror) { this.disabled = true; } }, // `mimes` is not set for support everything kind of text file info : { id : 'codemirror', name : 'CodeMirror', iconImg : 'img/editor-icons.png 0 -176' }, load : function(textarea) { var fm = this.fm, cmUrl = fm.convAbsUrl(fm.options.cdns.codemirror), dfrd = $.Deferred(), self = this, start = function(CodeMirror) { var ta = $(textarea), base = ta.parent(), editor, editorBase, opts; // set base height base.height(base.height()); // CodeMirror configure options opts = { lineNumbers: true, lineWrapping: true, extraKeys : { 'Ctrl-S': function() { self.doSave(); }, 'Ctrl-Q': function() { self.doCancel(); }, 'Ctrl-W': function() { self.doCancel(); } } }; // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: CodeMirror, instance: void(0), opts: opts }); // CodeMirror configure editor = CodeMirror.fromTextArea(textarea, opts); // return editor instance dfrd.resolve(editor); // Auto mode set var info, m, mode, spec; if (! info) { info = CodeMirror.findModeByMIME(self.file.mime); } if (! info && (m = self.file.name.match(/.+\.([^.]+)$/))) { info = CodeMirror.findModeByExtension(m[1]); } if (info) { CodeMirror.modeURL = useRequire? 'codemirror/mode/%N/%N.min' : cmUrl + '/mode/%N/%N.min.js'; mode = info.mode; spec = info.mime; editor.setOption('mode', spec); CodeMirror.autoLoadMode(editor, mode); // show MIME:mode in title bar base.prev().children('.elfinder-dialog-title').append(' (' + spec + (mode != 'null'? ' : ' + mode : '') + ')'); } // editor base node editorBase = $(editor.getWrapperElement()).css({ // fix CSS conflict to SimpleMDE padding: 0, border: 'none' }); ta.data('cm', true); // fit height to base editorBase.height('100%'); // TextArea button and Setting button $('
    ').css('float', 'left') .append( $('').html(self.fm.i18n('TextArea')) .button() .on('click', function(){ if (ta.data('cm')) { ta.removeData('cm'); editorBase.hide(); ta.val(editor.getValue()).show().trigger('focus'); $(this).text('CodeMirror'); } else { ta.data('cm', true); editorBase.show(); editor.setValue(ta.hide().val()); editor.refresh(); editor.focus(); $(this).html(self.fm.i18n('TextArea')); } }) ) .prependTo(base.next()); }; // load script then start if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); if (useRequire) { require.config({ packages: [{ name: 'codemirror', location: cmUrl, main: 'codemirror.min' }], map: { 'codemirror': { 'codemirror/lib/codemirror': 'codemirror' } } }); require([ 'codemirror', 'codemirror/addon/mode/loadmode.min', 'codemirror/mode/meta.min' ], function(CodeMirror) { self.confObj.loader.resolve(CodeMirror); }); } else { self.fm.loadScript([ cmUrl + '/codemirror.min.js' ], function() { self.fm.loadScript([ cmUrl + '/addon/mode/loadmode.min.js', cmUrl + '/mode/meta.min.js' ], function() { self.confObj.loader.resolve(CodeMirror); }); }, {loadType: 'tag'}); } self.fm.loadCss(cmUrl + '/codemirror.css'); } self.confObj.loader.done(start); return dfrd; }, close : function(textarea, instance) { instance && instance.toTextArea(); }, save : function(textarea, instance) { instance && $(textarea).data('cm') && (textarea.value = instance.getValue()); }, focus : function(textarea, instance) { instance && $(textarea).data('cm') && instance.focus(); }, resize : function(textarea, instance, e, data) { instance && instance.refresh(); } }, { // SimpleMDE // called on initialization of elFinder cmd edit (this: this editor's config object) setup : function(opts, fm) { if (fm.UA.ltIE10 || !fm.options.cdns.simplemde) { this.disabled = true; } }, info : { id : 'simplemde', name : 'SimpleMDE', iconImg : 'img/editor-icons.png 0 -80' }, exts : ['md'], load : function(textarea) { var self = this, fm = this.fm, base = $(textarea).parent(), dfrd = $.Deferred(), cdn = fm.options.cdns.simplemde, start = function(SimpleMDE) { var h = base.height(), delta = base.outerHeight(true) - h + 14, editor, editorBase, opts; // fit height function textarea._setHeight = function(height) { var h = height || base.height(), ctrH = 0, areaH; base.children('.editor-toolbar,.editor-statusbar').each(function() { ctrH += $(this).outerHeight(true); }); areaH = h - ctrH - delta; editorBase.height(areaH); editor.codemirror.refresh(); return areaH; }; // set base height base.height(h); opts = { element: textarea, autofocus: true }; // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: SimpleMDE, instance: void(0), opts: opts }); // make editor editor = new SimpleMDE(opts); dfrd.resolve(editor); // editor base node editorBase = $(editor.codemirror.getWrapperElement()); // fit height to base editorBase.css('min-height', '50px') .children('.CodeMirror-scroll').css('min-height', '50px'); textarea._setHeight(h); }; // check SimpleMDE & start if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); self.fm.loadCss(cdn+'/simplemde.min.css'); if (useRequire) { require([ cdn+'/simplemde.min.js' ], function(SimpleMDE) { self.confObj.loader.resolve(SimpleMDE); }); } else { self.fm.loadScript([cdn+'/simplemde.min.js'], function() { self.confObj.loader.resolve(SimpleMDE); }, {loadType: 'tag'}); } } self.confObj.loader.done(start); return dfrd; }, close : function(textarea, instance) { instance && instance.toTextArea(); instance = null; }, save : function(textarea, instance) { instance && (textarea.value = instance.value()); }, focus : function(textarea, instance) { instance && instance.codemirror.focus(); }, resize : function(textarea, instance, e, data) { instance && textarea._setHeight(); } }, { // CKEditor for html file info : { id : 'ckeditor', name : 'CKEditor', iconImg : 'img/editor-icons.png 0 0' }, exts : ['htm', 'html', 'xhtml'], setup : function(opts, fm) { var confObj = this; if (!fm.options.cdns.ckeditor) { confObj.disabled = true; } else { confObj.ckeOpts = {}; if (opts.extraOptions) { confObj.ckeOpts = Object.assign({}, opts.extraOptions.ckeditor || {}); if (opts.extraOptions.managerUrl) { confObj.managerUrl = opts.extraOptions.managerUrl; } } } }, load : function(textarea) { var self = this, fm = this.fm, dfrd = $.Deferred(), init = function() { var base = $(textarea).parent(), dlg = base.closest('.elfinder-dialog'), h = base.height(), reg = /([&?]getfile=)[^&]+/, loc = self.confObj.managerUrl || window.location.href.replace(/#.*$/, ''), name = 'ckeditor', opts; // make manager location if (reg.test(loc)) { loc = loc.replace(reg, '$1' + name); } else { loc += '?getfile=' + name; } // set base height base.height(h); // CKEditor configure options opts = { startupFocus : true, fullPage: true, allowedContent: true, filebrowserBrowseUrl : loc, toolbarCanCollapse: true, toolbarStartupExpanded: !fm.UA.Mobile, removePlugins: 'resize', extraPlugins: 'colorbutton,justify,docprops', on: { 'instanceReady' : function(e) { var editor = e.editor; editor.resize('100%', h); // re-build on dom move dlg.one('beforedommove.'+fm.namespace, function() { editor.destroy(); }).one('dommove.'+fm.namespace, function() { self.load(textarea).done(function(editor) { self.instance = editor; }); }); // return editor instance dfrd.resolve(e.editor); } } }; // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: CKEDITOR, instance: void(0), opts: opts }); // CKEditor configure CKEDITOR.replace(textarea.id, Object.assign(opts, self.confObj.ckeOpts)); CKEDITOR.on('dialogDefinition', function(e) { var dlg = e.data.definition.dialog; dlg.on('show', function(e) { fm.getUI().append($('.cke_dialog_background_cover')).append(this.getElement().$); }); dlg.on('hide', function(e) { $('body:first').append($('.cke_dialog_background_cover')).append(this.getElement().$); }); }); }; if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); window.CKEDITOR_BASEPATH = fm.options.cdns.ckeditor + '/'; $.getScript(fm.options.cdns.ckeditor + '/ckeditor.js', function() { self.confObj.loader.resolve(); }); } self.confObj.loader.done(init); return dfrd; }, close : function(textarea, instance) { instance && instance.destroy(); }, save : function(textarea, instance) { instance && (textarea.value = instance.getData()); }, focus : function(textarea, instance) { instance && instance.focus(); }, resize : function(textarea, instance, e, data) { var self; if (instance) { if (instance.status === 'ready') { instance.resize('100%', $(textarea).parent().height()); } } } }, { // CKEditor5 balloon mode for html file info : { id : 'ckeditor5', name : 'CKEditor5', iconImg : 'img/editor-icons.png 0 -16' }, exts : ['htm', 'html', 'xhtml'], html : '
    ', setup : function(opts, fm) { var confObj = this; // check cdn and ES6 support if (!fm.options.cdns.ckeditor5 || typeof window.Symbol !== 'function' || typeof Symbol() !== 'symbol') { confObj.disabled = true; } else { confObj.ckeOpts = {}; if (opts.extraOptions) { // @deprecated option extraOptions.ckeditor5Mode if (opts.extraOptions.ckeditor5Mode) { confObj.ckeditor5Mode = opts.extraOptions.ckeditor5Mode; } confObj.ckeOpts = Object.assign({}, opts.extraOptions.ckeditor5 || {}); if (confObj.ckeOpts.mode) { confObj.ckeditor5Mode = confObj.ckeOpts.mode; delete confObj.ckeOpts.mode; } if (opts.extraOptions.managerUrl) { confObj.managerUrl = opts.extraOptions.managerUrl; } } } fm.bind('destroy', function() { confObj.editor = null; }); }, // Prepare on before show dialog prepare : function(base, dialogOpts, file) { $(base).height(base.editor.fm.getUI().height() - 100); }, init : function(id, file, data, fm) { var m = data.match(/^([\s\S]*]*>)([\s\S]+)(<\/body>[\s\S]*)$/i), header = '', body = '', footer =''; this.css({ width: '100%', height: '100%', 'box-sizing': 'border-box' }); if (m) { header = m[1]; body = m[2]; footer = m[3]; } else { body = data; } this.data('data', { header: header, body: body, footer: footer }); this._setupSelEncoding(data); }, load : function(editnode) { var self = this, fm = this.fm, dfrd = $.Deferred(), mode = self.confObj.ckeditor5Mode || 'decoupled-document', lang = (function() { var l = fm.lang.toLowerCase().replace('_', '-'); if (l.substr(0, 2) === 'zh' && l !== 'zh-cn') { l = 'zh'; } return l; })(), init = function(cEditor) { var base = $(editnode).parent(), opts; // set base height base.height(fm.getUI().height() - 100); // CKEditor5 configure options opts = Object.assign({ toolbar: ["heading", "|", "fontSize", "fontFamily", "|", "bold", "italic", "underline", "strikethrough", "highlight", "|", "alignment", "|", "numberedList", "bulletedList", "blockQuote", "indent", "outdent", "|", "ckfinder", "link", "imageUpload", "insertTable", "mediaEmbed", "|", "undo", "redo"], language: lang }, self.confObj.ckeOpts); // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: editnode, editorObj: cEditor, instance: void(0), opts: opts }); cEditor .create(editnode, opts) .then(function(editor) { var ckf = editor.commands.get('ckfinder'), fileRepo = editor.plugins.get('FileRepository'), prevVars = {}, isImage, insertImages; if (editor.ui.view.toolbar && (mode === 'classic' || mode === 'decoupled-document')) { $(editnode).closest('.elfinder-dialog').children('.ui-widget-header').append($(editor.ui.view.toolbar.element).css({marginRight:'-1em',marginLeft:'-1em'})); } if (mode === 'classic') { $(editnode).closest('.elfinder-edit-editor').css('overflow', 'auto'); } // Set up this elFinder instead of CKFinder if (ckf) { isImage = function(f) { return f && f.mime.match(/^image\//i); }; insertImages = function(urls) { var imgCmd = editor.commands.get('imageUpload'); if (!imgCmd.isEnabled) { var ntf = editor.plugins.get('Notification'), i18 = editor.locale.t; ntf.showWarning(i18('Could not insert image at the current position.'), { title: i18('Inserting image failed'), namespace: 'ckfinder' }); return; } editor.execute('imageInsert', { source: urls }); }; // Take over ckfinder execute() ckf.execute = function() { var dlg = base.closest('.elfinder-dialog'), gf = fm.getCommand('getfile'), rever = function() { if (prevVars.hasVar) { dlg.off('resize close', rever); gf.callback = prevVars.callback; gf.options.folders = prevVars.folders; gf.options.multiple = prevVars.multi; fm.commandMap.open = prevVars.open; prevVars.hasVar = false; } }; dlg.trigger('togleminimize').one('resize close', rever); prevVars.callback = gf.callback; prevVars.folders = gf.options.folders; prevVars.multi = gf.options.multiple; prevVars.open = fm.commandMap.open; prevVars.hasVar = true; gf.callback = function(files) { var imgs = []; if (files.length === 1 && files[0].mime === 'directory') { fm.one('open', function() { fm.commandMap.open = 'getfile'; }).getCommand('open').exec(files[0].hash); return; } fm.getUI('cwd').trigger('unselectall'); $.each(files, function(i, f) { if (isImage(f)) { imgs.push(fm.convAbsUrl(f.url)); } else { editor.execute('link', fm.convAbsUrl(f.url)); } }); if (imgs.length) { insertImages(imgs); } dlg.trigger('togleminimize'); }; gf.options.folders = true; gf.options.multiple = true; fm.commandMap.open = 'getfile'; fm.toast({ mode: 'info', msg: fm.i18n('dblclickToSelect') }); }; } // Set up image uploader fileRepo.createUploadAdapter = function(loader) { return new uploder(loader); }; editor.setData($(editnode).data('data').body); // move .ck-body to elFinder node for fullscreen mode fm.getUI().append($('body > div.ck-body')); $('div.ck-balloon-panel').css({ 'z-index': fm.getMaximizeCss().zIndex + 1 }); dfrd.resolve(editor); /*fm.log({ defaultConfig: cEditor.defaultConfig, plugins: cEditor.builtinPlugins.map(function(p) { return p.pluginName; }), toolbars: Array.from(editor.ui.componentFactory.names()) });*/ }) ['catch'](function(error) { // ['cache'] instead .cache for fix error on ie8 fm.error(error); }); }, uploder = function(loader) { var upload = function(file, resolve, reject) { fm.exec('upload', {files: [file]}, void(0), fm.cwd().hash) .done(function(data){ if (data.added && data.added.length) { fm.url(data.added[0].hash, { async: true }).done(function(url) { resolve({ 'default': fm.convAbsUrl(url) }); }).fail(function() { reject('errFileNotFound'); }); } else { reject(fm.i18n(data.error? data.error : 'errUpload')); } }) .fail(function(err) { var error = fm.parseError(err); reject(fm.i18n(error? (error === 'userabort'? 'errAbort' : error) : 'errUploadNoFiles')); }) .progress(function(data) { loader.uploadTotal = data.total; loader.uploaded = data.progress; }); }; this.upload = function() { return new Promise(function(resolve, reject) { if (loader.file instanceof Promise || (loader.file && typeof loader.file.then === 'function')) { loader.file.then(function(file) { upload(file, resolve, reject); }); } else { upload(loader.file, resolve, reject); } }); }; this.abort = function() { fm.getUI().trigger('uploadabort'); }; }, loader; if (!self.confObj.editor) { loader = $.Deferred(); self.fm.loadScript([ fm.options.cdns.ckeditor5 + '/' + mode + '/ckeditor.js' ], function(editor) { if (!editor) { editor = window.BalloonEditor || window.InlineEditor || window.ClassicEditor || window.DecoupledEditor; } if (fm.lang !== 'en') { self.fm.loadScript([ fm.options.cdns.ckeditor5 + '/' + mode + '/translations/' + lang + '.js' ], function(obj) { loader.resolve(editor); }, { tryRequire: true, loadType: 'tag', error: function(obj) { lang = 'en'; loader.resolve(editor); } }); } else { loader.resolve(editor); } }, { tryRequire: true, loadType: 'tag' }); loader.done(function(editor) { self.confObj.editor = editor; init(editor); }); } else { init(self.confObj.editor); } return dfrd; }, getContent : function() { var data = $(this).data('data'); return data.header + data.body + data.footer; }, close : function(editnode, instance) { instance && instance.destroy(); }, save : function(editnode, instance) { var elm = $(editnode), data = elm.data('data'); if (instance) { data.body = instance.getData(); elm.data('data', data); } }, focus : function(editnode, instance) { $(editnode).trigger('focus'); } }, { // TinyMCE for html file info : { id : 'tinymce', name : 'TinyMCE', iconImg : 'img/editor-icons.png 0 -64' }, exts : ['htm', 'html', 'xhtml'], setup : function(opts, fm) { var confObj = this; if (!fm.options.cdns.tinymce) { confObj.disabled = true; } else { confObj.mceOpts = {}; if (opts.extraOptions) { confObj.uploadOpts = Object.assign({}, opts.extraOptions.uploadOpts || {}); confObj.mceOpts = Object.assign({}, opts.extraOptions.tinymce || {}); } else { confObj.uploadOpts = {}; } } }, load : function(textarea) { var self = this, fm = this.fm, dfrd = $.Deferred(), init = function() { var base = $(textarea).show().parent(), dlg = base.closest('.elfinder-dialog'), h = base.height(), delta = base.outerHeight(true) - h, // hide MCE dialog and modal block hideMceDlg = function() { var mceW; if (tinymce.activeEditor.windowManager.windows) { mceW = tinymce.activeEditor.windowManager.windows[0]; mceDlg = $(mceW? mceW.getEl() : void(0)).hide(); mceCv = $('#mce-modal-block').hide(); } else { mceDlg = $('.tox-dialog-wrap').hide(); } }, // Show MCE dialog and modal block showMceDlg = function() { mceCv && mceCv.show(); mceDlg && mceDlg.show(); }, tVer = tinymce.majorVersion, opts, mceDlg, mceCv; // set base height base.height(h); // fit height function textarea._setHeight = function(height) { if (tVer < 5) { var base = $(this).parent(), h = height || base.innerHeight(), ctrH = 0, areaH; base.find('.mce-container-body:first').children('.mce-top-part,.mce-statusbar').each(function() { ctrH += $(this).outerHeight(true); }); areaH = h - ctrH - delta; base.find('.mce-edit-area iframe:first').height(areaH); } }; // TinyMCE configure options opts = { selector: '#' + textarea.id, resize: false, plugins: 'print preview fullpage searchreplace autolink directionality visualblocks visualchars fullscreen image link media template codesample table charmap hr pagebreak nonbreaking anchor toc insertdatetime advlist lists wordcount imagetools textpattern help', toolbar: 'formatselect | bold italic strikethrough forecolor backcolor | link image media | alignleft aligncenter alignright alignjustify | numlist bullist outdent indent | removeformat', image_advtab: true, init_instance_callback : function(editor) { // fit height on init textarea._setHeight(h); // re-build on dom move dlg.one('beforedommove.'+fm.namespace, function() { tinymce.execCommand('mceRemoveEditor', false, textarea.id); }).one('dommove.'+fm.namespace, function() { self.load(textarea).done(function(editor) { self.instance = editor; }); }); // return editor instance dfrd.resolve(editor); }, file_picker_callback : function (callback, value, meta) { var gf = fm.getCommand('getfile'), revar = function() { if (prevVars.hasVar) { gf.callback = prevVars.callback; gf.options.folders = prevVars.folders; gf.options.multiple = prevVars.multi; fm.commandMap.open = prevVars.open; prevVars.hasVar = false; } dlg.off('resize close', revar); showMceDlg(); }, prevVars = {}; prevVars.callback = gf.callback; prevVars.folders = gf.options.folders; prevVars.multi = gf.options.multiple; prevVars.open = fm.commandMap.open; prevVars.hasVar = true; gf.callback = function(file) { var url, info; if (file.mime === 'directory') { fm.one('open', function() { fm.commandMap.open = 'getfile'; }).getCommand('open').exec(file.hash); return; } // URL normalization url = fm.convAbsUrl(file.url); // Make file info info = file.name + ' (' + fm.formatSize(file.size) + ')'; // Provide file and text for the link dialog if (meta.filetype == 'file') { callback(url, {text: info, title: info}); } // Provide image and alt text for the image dialog if (meta.filetype == 'image') { callback(url, {alt: info}); } // Provide alternative source and posted for the media dialog if (meta.filetype == 'media') { callback(url); } dlg.trigger('togleminimize'); }; gf.options.folders = true; gf.options.multiple = false; fm.commandMap.open = 'getfile'; hideMceDlg(); dlg.trigger('togleminimize').one('resize close', revar); fm.toast({ mode: 'info', msg: fm.i18n('dblclickToSelect') }); return false; }, images_upload_handler : function (blobInfo, success, failure) { var file = blobInfo.blob(), err = function(e) { var dlg = e.data.dialog || {}; if (dlg.hasClass('elfinder-dialog-error') || dlg.hasClass('elfinder-confirm-upload')) { hideMceDlg(); dlg.trigger('togleminimize').one('resize close', revert); fm.unbind('dialogopened', err); } }, revert = function() { dlg.off('resize close', revert); showMceDlg(); }, clipdata = true; // check file object if (file.name) { // file blob of client side file object clipdata = void(0); } fm.bind('dialogopened', err).exec('upload', Object.assign({ files: [file], clipdata: clipdata // to get unique name on connector }, self.confObj.uploadOpts), void(0), fm.cwd().hash).done(function(data) { if (data.added && data.added.length) { fm.url(data.added[0].hash, { async: true }).done(function(url) { showMceDlg(); success(fm.convAbsUrl(url)); }).fail(function() { failure(fm.i18n('errFileNotFound')); }); } else { failure(fm.i18n(data.error? data.error : 'errUpload')); } }).fail(function(err) { var error = fm.parseError(err); if (error) { if (error === 'errUnknownCmd') { error = 'errPerm'; } else if (error === 'userabort') { error = 'errAbort'; } } failure(fm.i18n(error? error : 'errUploadNoFiles')); }); } }; // TinyMCE 5 supports "height: 100%" if (tVer >= 5) { opts.height = '100%'; } // trigger event 'editEditorPrepare' self.trigger('Prepare', { node: textarea, editorObj: tinymce, instance: void(0), opts: opts }); // TinyMCE configure tinymce.init(Object.assign(opts, self.confObj.mceOpts)); }; if (!self.confObj.loader) { self.confObj.loader = $.Deferred(); self.fm.loadScript([fm.options.cdns.tinymce + (fm.options.cdns.tinymce.match(/\.js/)? '' : '/tinymce.min.js')], function() { self.confObj.loader.resolve(); }, { loadType: 'tag' }); } self.confObj.loader.done(init); return dfrd; }, close : function(textarea, instance) { instance && tinymce.execCommand('mceRemoveEditor', false, textarea.id); }, save : function(textarea, instance) { instance && instance.save(); }, focus : function(textarea, instance) { instance && instance.focus(); }, resize : function(textarea, instance, e, data) { // fit height to base node on dialog resize instance && textarea._setHeight(); } }, { info : { id : 'zohoeditor', name : 'Zoho Editor', iconImg : 'img/editor-icons.png 0 -32', cmdCheck : 'ZohoOffice', preventGet: true, hideButtons: true, syncInterval : 15000, canMakeEmpty: true, integrate: { title: 'Zoho Office API', link: 'https://www.zoho.com/officeapi/' } }, mimes : [ 'application/msword', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', //'application/pdf', 'application/vnd.oasis.opendocument.text', 'application/rtf', 'text/html', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.sun.xml.calc', 'text/csv', 'text/tab-separated-values', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', 'application/vnd.oasis.opendocument.presentation', 'application/vnd.sun.xml.impress' ], html : '', // setup on elFinder bootup setup : function(opts, fm) { if (fm.UA.Mobile || fm.UA.ltIE8) { this.disabled = true; } }, // Prepare on before show dialog prepare : function(base, dialogOpts, file) { var elfNode = base.editor.fm.getUI(); $(base).height(elfNode.height()); dialogOpts.width = Math.max(dialogOpts.width || 0, elfNode.width() * 0.8); }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, dum, fm) { var ta = this, ifm = $(this).hide(), uiToast = fm.getUI('toast'), spnr = $('
    ') .html('' + fm.i18n('nowLoading') + '') .appendTo(ifm.parent()), cdata = function() { var data = ''; $.each(fm.customData, function(key, val) { data += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(val); }); return data; }; $(ta).data('xhr', fm.request({ data: { cmd: 'editor', name: ta.editor.confObj.info.cmdCheck, method: 'init', 'args[target]': file.hash, 'args[lang]' : fm.lang, 'args[cdata]' : cdata() }, preventDefault : true }).done(function(data) { var opts; if (data.zohourl) { opts = { css: { height: '100%' } }; // trigger event 'editEditorPrepare' ta.editor.trigger('Prepare', { node: ta, editorObj: void(0), instance: ifm, opts: opts }); ifm.attr('src', data.zohourl).show().css(opts.css); if (data.warning) { uiToast.appendTo(ta.closest('.ui-dialog')); fm.toast({ msg: fm.i18n(data.warning), mode: 'warning', timeOut: 0, onHidden: function() { uiToast.children().length === 1 && uiToast.appendTo(fm.getUI()); }, button: { text: 'btnYes' } }); } } else { data.error && fm.error(data.error); ta.elfinderdialog('destroy'); } }).fail(function(error) { error && fm.error(error); ta.elfinderdialog('destroy'); }).always(function() { spnr.remove(); })); }, load : function() {}, getContent : function() {}, save : function() {}, // Before dialog close beforeclose : iframeClose, // On dialog closed close : function(ta) { var fm = this.fm, xhr = $(ta).data('xhr'); if (xhr.state() === 'pending') { xhr.reject(); } } }, { // Zip Archive with FlySystem info : { id : 'ziparchive', name : 'btnMount', iconImg : 'img/toolbar.png 0 -416', cmdCheck : 'ZipArchive', edit : function(file, editor) { var fm = this, dfrd = $.Deferred(); fm.request({ data:{ cmd: 'netmount', protocol: 'ziparchive', host: file.hash, path: file.phash }, preventFail: true, notify : {type : 'netmount', cnt : 1, hideCnt : true} }).done(function(data) { var pdir; if (data.added && data.added.length) { if (data.added[0].phash) { if (pdir = fm.file(data.added[0].phash)) { if (! pdir.dirs) { pdir.dirs = 1; fm.change({ changed: [ pdir ] }); } } } fm.one('netmountdone', function() { fm.exec('open', data.added[0].hash); fm.one('opendone', function() { data.toast && fm.toast(data.toast); }); }); } dfrd.resolve(); }) .fail(function(error) { dfrd.reject(error); }); return dfrd; } }, mimes : ['application/zip'], load : function() {}, save : function(){} }, { // Simple Text (basic textarea editor) info : { id : 'textarea', name : 'TextArea', useTextAreaEvent : true }, load : function(textarea) { // trigger event 'editEditorPrepare' this.trigger('Prepare', { node: textarea, editorObj: void(0), instance: void(0), opts: {} }); textarea.setSelectionRange && textarea.setSelectionRange(0, 0); $(textarea).trigger('focus').show(); }, save : function(){} }, { // File converter with online-convert.com info : { id : 'onlineconvert', name : 'Online Convert', iconImg : 'img/editor-icons.png 0 -144', cmdCheck : 'OnlineConvert', preventGet: true, hideButtons: true, single: true, converter: true, canMakeEmpty: false, integrate: { title: 'ONLINE-CONVERT.COM', link: 'https://online-convert.com' } }, mimes : ['*'], html : '
    ', // setup on elFinder bootup setup : function(opts, fm) { var mOpts = opts.extraOptions.onlineConvert || {maxSize:100,showLink:true}; if (mOpts.maxSize) { this.info.maxSize = mOpts.maxSize * 1048576; } this.set = Object.assign({ url : 'https://%s.online-convert.com%s?external_url=', conv : { Archive: {'7Z':{}, 'BZ2':{ext:'bz'}, 'GZ':{}, 'ZIP':{}}, Audio: {'MP3':{}, 'OGG':{ext:'oga'}, 'WAV':{}, 'WMA':{}, 'AAC':{}, 'AIFF':{ext:'aif'}, 'FLAC':{}, 'M4A':{}, 'MMF':{}, 'OPUS':{ext:'oga'}}, Document: {'DOC':{}, 'DOCX':{}, 'HTML':{}, 'ODT':{}, 'PDF':{}, 'PPT':{}, 'PPTX':{}, 'RTF':{}, 'SWF':{}, 'TXT':{}}, eBook: {'AZW3':{ext:'azw'}, 'ePub':{}, 'FB2':{ext:'xml'}, 'LIT':{}, 'LRF':{}, 'MOBI':{}, 'PDB':{}, 'PDF':{},'PDF-eBook':{ext:'pdf'}, 'TCR':{}}, Hash: {'Adler32':{}, 'Apache-htpasswd':{}, 'Blowfish':{}, 'CRC32':{}, 'CRC32B':{}, 'Gost':{}, 'Haval128':{},'MD4':{}, 'MD5':{}, 'RIPEMD128':{}, 'RIPEMD160':{}, 'SHA1':{}, 'SHA256':{}, 'SHA384':{}, 'SHA512':{}, 'Snefru':{}, 'Std-DES':{}, 'Tiger128':{}, 'Tiger128-calculator':{}, 'Tiger128-converter':{}, 'Tiger160':{}, 'Tiger192':{}, 'Whirlpool':{}}, Image: {'BMP':{}, 'EPS':{ext:'ai'}, 'GIF':{}, 'EXR':{}, 'ICO':{}, 'JPG':{}, 'PNG':{}, 'SVG':{}, 'TGA':{}, 'TIFF':{ext:'tif'}, 'WBMP':{}, 'WebP':{}}, Video: {'3G2':{}, '3GP':{}, 'AVI':{}, 'FLV':{}, 'HLS':{ext:'m3u8'}, 'MKV':{}, 'MOV':{}, 'MP4':{}, 'MPEG-1':{ext:'mpeg'}, 'MPEG-2':{ext:'mpeg'}, 'OGG':{ext:'ogv'}, 'OGV':{}, 'WebM':{}, 'WMV':{}, 'Android':{link:'/convert-video-for-%s',ext:'mp4'}, 'Blackberry':{link:'/convert-video-for-%s',ext:'mp4'}, 'DPG':{link:'/convert-video-for-%s',ext:'avi'}, 'iPad':{link:'/convert-video-for-%s',ext:'mp4'}, 'iPhone':{link:'/convert-video-for-%s',ext:'mp4'}, 'iPod':{link:'/convert-video-for-%s',ext:'mp4'}, 'Nintendo-3DS':{link:'/convert-video-for-%s',ext:'avi'}, 'Nintendo-DS':{link:'/convert-video-for-%s',ext:'avi'}, 'PS3':{link:'/convert-video-for-%s',ext:'mp4'}, 'Wii':{link:'/convert-video-for-%s',ext:'avi'}, 'Xbox':{link:'/convert-video-for-%s',ext:'wmv'}} }, catExts : { Hash: 'txt' }, link : '', useTabs : ($.fn.tabs && !fm.UA.iOS)? true : false // Can't work on iOS, I don't know why. }, mOpts); }, // Prepare on before show dialog prepare : function(base, dialogOpts, file) { var elfNode = base.editor.fm.getUI(); $(base).height(elfNode.height()); dialogOpts.width = Math.max(dialogOpts.width || 0, elfNode.width() * 0.8); }, // Initialization of editing node (this: this editors HTML node) init : function(id, file, dum, fm) { var ta = this, confObj = ta.editor.confObj, set = confObj.set, uiToast = fm.getUI('toast'), idxs = {}, allowZip = fm.uploadMimeCheck('application/zip', file.phash), selfUrl = $('base').length? document.location.href.replace(/#.*$/, '') : '', getExt = function(cat, con) { var c; if (set.catExts[cat]) { return set.catExts[cat]; } if (set.conv[cat] && (c = set.conv[cat][con])) { return (c.ext || con).toLowerCase(); } return con.toLowerCase(); }, setOptions = function(cat, done) { var type, dfdInit, dfd; if (typeof confObj.api === 'undefined') { dfdInit = fm.request({ data: { cmd: 'editor', name: 'OnlineConvert', method: 'init' }, preventDefault : true }); } else { dfdInit = $.Deferred().resolve({api: confObj.api}); } cat = cat.toLowerCase(); dfdInit.done(function(data) { confObj.api = data.api; if (confObj.api) { if (cat) { type = '?category=' + cat; } else { type = ''; cat = 'all'; } if (!confObj.conversions) { confObj.conversions = {}; } if (!confObj.conversions[cat]) { dfd = $.getJSON('https://api2.online-convert.com/conversions' + type); } else { dfd = $.Deferred().resolve(confObj.conversions[cat]); } dfd.done(function(d) { confObj.conversions[cat] = d; $.each(d, function(i, o) { btns[set.useTabs? 'children' : 'find']('.onlineconvert-category-' + o.category).children('.onlineconvert-' + o.target).trigger('makeoption', o); }); done && done(); }); } }); }, btns = (function() { var btns = $('
    ').on('click', 'button', function() { var b = $(this), opts = b.data('opts') || null, cat = b.closest('.onlineconvert-category').data('cname'), con = b.data('conv'); if (confObj.api === true) { api({ category: cat, convert: con, options: opts }); } }).on('change', function(e) { var t = $(e.target), p = t.parent(), b = t.closest('.elfinder-edit-onlineconvert-button').children('button:first'), o = b.data('opts') || {}, v = p.data('type') === 'boolean'? t.is(':checked') : t.val(); e.stopPropagation(); if (v) { if (p.data('type') === 'integer') { v = parseInt(v); } if (p.data('pattern')) { var reg = new RegExp(p.data('pattern')); if (!reg.test(v)) { requestAnimationFrame(function() { fm.error('"' + fm.escape(v) + '" is not match to "/' + fm.escape(p.data('pattern')) + '/"'); }); v = null; } } } if (v) { o[t.parent().data('optkey')] = v; } else { delete o[p.data('optkey')]; } b.data('opts', o); }), ul = $('
      '), oform = function(n, o) { var f = $('

      ').data('optkey', n).data('type', o.type), checked = '', disabled = '', nozip = false, opts, btn, elm; if (o.description) { f.attr('title', fm.i18n(o.description)); } if (o.pattern) { f.data('pattern', o.pattern); } f.append($('').text(fm.i18n(n) + ' : ')); if (o.type === 'boolean') { if (o['default'] || (nozip = (n === 'allow_multiple_outputs' && !allowZip))) { checked = ' checked'; if (nozip) { disabled = ' disabled'; } btn = this.children('button:first'); opts = btn.data('opts') || {}; opts[n] = true; btn.data('opts', opts); } f.append($('')); } else if (o['enum']){ elm = $('').append($('').text('Select...')); $.each(o['enum'], function(i, v) { elm.append($('').text(v)); }); f.append(elm); } else { f.append($('')); } return f; }, makeOption = function(o) { var elm = this, b = $('').on('click', function() { f.toggle(); }), f = $('
      ').hide(); if (o.options) { $.each(o.options, function(k, v) { k !== 'download_password' && f.append(oform.call(elm, k, v)); }); } elm.append(b, f); }, ts = (+new Date()), i = 0; if (!confObj.ext2mime) { confObj.ext2mime = Object.assign(fm.arrayFlip(fm.mimeTypes), ext2mime); } $.each(set.conv, function(t, c) { var cname = t.toLowerCase(), id = 'elfinder-edit-onlineconvert-' + cname + ts, type = $('
      ').data('cname', t), cext; $.each(c, function(n, o) { var nl = n.toLowerCase(), ext = getExt(t, n); if (!confObj.ext2mime[ext]) { if (cname === 'audio' || cname === 'image' || cname === 'video') { confObj.ext2mime[ext] = cname + '/x-' + nl; } else { confObj.ext2mime[ext] = 'application/octet-stream'; } } if (fm.uploadMimeCheck(confObj.ext2mime[ext], file.phash)) { type.append($('
      ').on('makeoption', function(e, data) { var elm = $(this); if (!elm.children('.elfinder-button-icon-preference').length) { makeOption.call(elm, data); } }).append($('').text(n).data('conv', n))); } }); if (type.children().length) { ul.append($('
    • ').append($('').attr('href', selfUrl + '#' + id).text(t))); btns.append(type); idxs[cname] = i++; } }); if (set.useTabs) { btns.prepend(ul).tabs({ beforeActivate: function(e, ui) { setOptions(ui.newPanel.data('cname')); } }); } else { $.each(set.conv, function(t) { var tl = t.toLowerCase(); btns.append($('
      ').append($('').text(t)).append(btns.children('.onlineconvert-category-' + tl))); }); } return btns; })(), select = $(this) .append( btns, (set.showLink? $(set.link) : null) ), spnr = $('
      ') .hide() .html('' + fm.i18n('nowLoading') + '') .appendTo(select.parent()), prog = $('
      ').appendTo(spnr), _url = null, url = function() { var onetime; if (_url) { return $.Deferred().resolve(_url); } else { spnr.show(); return fm.forExternalUrl(file.hash, { progressBar: prog }).done(function(url) { _url = url; }).fail(function(error) { error && fm.error(error); ta.elfinderdialog('destroy'); }).always(function() { spnr.hide(); }); } }, api = function(opts) { $(ta).data('dfrd', url().done(function(url) { select.fadeOut(); setStatus({info: 'Start conversion request.'}); fm.request({ data: { cmd: 'editor', name: 'OnlineConvert', method: 'api', 'args[category]' : opts.category.toLowerCase(), 'args[convert]' : opts.convert.toLowerCase(), 'args[options]' : JSON.stringify(opts.options), 'args[source]' : fm.convAbsUrl(url), 'args[filename]' : fm.splitFileExtention(file.name)[0] + '.' + getExt(opts.category, opts.convert), 'args[mime]' : file.mime }, preventDefault : true }).done(function(data) { checkRes(data.apires, opts.category, opts.convert); }).fail(function(error) { error && fm.error(error); ta.elfinderdialog('destroy'); }); })); }, checkRes = function(res, cat, con) { var status, err = []; if (res && res.id) { status = res.status; if (status.code === 'failed') { spnr.hide(); if (res.errors && res.errors.length) { $.each(res.errors, function(i, o) { o.message && err.push(o.message); }); } fm.error(err.length? err : status.info); select.fadeIn(); } else if (status.code === 'completed') { upload(res); } else { setStatus(status); setTimeout(function() { polling(res.id); }, 1000); } } else { uiToast.appendTo(ta.closest('.ui-dialog')); if (res.message) { fm.toast({ msg: fm.i18n(res.message), mode: 'error', timeOut: 5000, onHidden: function() { uiToast.children().length === 1 && uiToast.appendTo(fm.getUI()); } }); } fm.toast({ msg: fm.i18n('editorConvNoApi'), mode: 'error', timeOut: 3000, onHidden: function() { uiToast.children().length === 1 && uiToast.appendTo(fm.getUI()); } }); spnr.hide(); select.show(); } }, setStatus = function(status) { spnr.show().children('.elfinder-spinner-text').text(status.info); }, polling = function(jobid) { fm.request({ data: { cmd: 'editor', name: 'OnlineConvert', method: 'api', 'args[jobid]': jobid }, preventDefault : true }).done(function(data) { checkRes(data.apires); }).fail(function(error) { error && fm.error(error); ta.elfinderdialog('destroy'); }); }, upload = function(res) { var output = res.output, id = res.id, url = ''; spnr.hide(); if (output && output.length) { ta.elfinderdialog('destroy'); $.each(output, function(i, o) { if (o.uri) { url += o.uri + '\n'; } }); fm.upload({ target: file.phash, files: [url], type: 'text', extraData: { contentSaveId: 'OnlineConvert-' + res.id } }); } }, mode = 'document', cl, m; select.parent().css({overflow: 'auto'}).addClass('overflow-scrolling-touch'); if (m = file.mime.match(/^(audio|image|video)/)) { mode = m[1]; } if (set.useTabs) { if (idxs[mode]) { btns.tabs('option', 'active', idxs[mode]); } } else { cl = Object.keys(set.conv).length; $.each(set.conv, function(t) { if (t.toLowerCase() === mode) { setOptions(t, function() { $.each(set.conv, function(t0) { t0.toLowerCase() !== mode && setOptions(t0); }); }); return false; } cl--; }); if (!cl) { $.each(set.conv, function(t) { setOptions(t); }); } select.parent().scrollTop(btns.children('.onlineconvert-fieldset-' + mode).offset().top); } }, load : function() {}, getContent : function() {}, save : function() {}, // On dialog closed close : function(ta) { var fm = this.fm, dfrd = $(ta).data('dfrd'); if (dfrd && dfrd.state() === 'pending') { dfrd.reject(); } } } ]; }, window.elFinder)); application/library/js/extras/quicklook.googledocs.js000064400000004401147577724760017151 0ustar00(function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { "use strict"; try { if (! elFinder.prototype.commands.quicklook.plugins) { elFinder.prototype.commands.quicklook.plugins = []; } elFinder.prototype.commands.quicklook.plugins.push(function(ql) { var fm = ql.fm, preview = ql.preview; preview.on('update', function(e) { var win = ql.window, file = e.file, node, loading; if (file.mime.indexOf('application/vnd.google-apps.') === 0) { if (file.url == '1') { preview.hide(); $('
      ').appendTo(ql.info.find('.elfinder-quicklook-info')) .on('click', function() { $(this).html(''); fm.request({ data : {cmd : 'url', target : file.hash}, preventDefault : true }) .always(function() { preview.show(); $(this).html(''); }) .done(function(data) { var rfile = fm.file(file.hash); ql.value.url = rfile.url = data.url || ''; if (ql.value.url) { preview.trigger($.Event('update', {file : ql.value})); } }); }); } if (file.url !== '' && file.url != '1') { e.stopImmediatePropagation(); loading = $('
      '+fm.i18n('nowLoading')+'
      ').appendTo(ql.info.find('.elfinder-quicklook-info')); node = $('') .css('background-color', 'transparent') .on('load', function() { ql.hideinfo(); loading.remove(); node.css('background-color', '#fff'); }) .on('error', function() { loading.remove(); node.remove(); }) .appendTo(preview) .attr('src', fm.url(file.hash)); preview.one('change', function() { loading.remove(); node.off('load').remove(); }); } } }); }); } catch(e) {} })); application/library/js/i18n/help/en.html.js000064400000001440147577724760014572 0ustar00

      Operation Tips

      Operation on the UI is similar to operating system's standard file manager. However, Drag and Drop is not possible with mobile browsers.

      • Right click or long tap to show the context menu.
      • Drag and drop into the folder tree or the current workspace to move/copy items.
      • Item selection in the workspace can be extended selection with Shift or Alt (Option) key.
      • Drag and Drop to the destination folder or workspace to upload files and folders.
      • The upload dialog can accept paste/drop clipboard data or URL lists and Drag and Drop from other browser or file managers etc.
      • Drag start with pressing Alt(Option) key to drag out to outside browser. It will became download operation with Google Chrome.
      application/library/js/i18n/help/ko.html.js000064400000002034147577724760014601 0ustar00

      ì‚Źìš© 팁

      UI ìĄ°ìž‘ì€ 욎영ìČŽì œì˜ 표쀀 파음 êŽ€ëŠŹìžë„Œ ì‚Źìš©í•˜ëŠ” ë°©ëČ•êłŒ ëč„슷합니닀. 하지만 ëȘšë°”음 람띌우저에서는 ë“œëž˜ê·žì•€ë“œëĄ­ì„ ì‚Źìš©í•  수 없슔니닀.

      • 였넞ìȘœ 큎늭하거나 êžžêȌ 누넎멎 컚텍슀튞 메뉎가 나타납니닀.
      • 읎동/ëł”ì‚Źí•˜ë €ë©Ž 폮더 튾멬 또는 원하는 폮더로 ë“œëž˜ê·žì•€ë“œëĄ­í•˜ì‹­ì‹œì˜€.
      • ìž‘ì—…êł”ê°„ì—ì„œ 항ëȘ©ì„ 선택하렀멎 Shift또는 Alt(Option) 킀넌 ì‚Źìš©í•˜ì—Ź 선택 영역을 넓힐 수 있슔니닀.
      • ì—…ëĄœë“œ 대상 폮더 또는 작업 ì˜ì—­ìœŒëĄœ 파음및 폎더넌 ë“œëž˜ê·žì•€ë“œëĄ­í•˜ì—Ź ì—…ëĄœë“œí•  수 있슔니닀.
      • 닀넞 람띌우저 또는 íŒŒìŒêŽ€ëŠŹìžë“±ì—ì„œ ë“œëž˜ê·žì•€ë“œëĄ­í•˜ê±°ë‚˜, íŽëŠœëłŽë“œë„Œ 톔핎 데읎터또는 URL을 ëł”ì‚Ź/ë¶™ì—Źë„Łì–Ž ì—…ëĄœë“œí•  수 있슔니닀.
      • íŹëĄŹëžŒëŒìš°ì €ì˜ êČœìš°, Alt(Option) 킀넌 누넞 상태에서 람띌우저 ë°–ìœŒëĄœ ë“œëž˜ê·žì•€ë“œëĄ­í•˜ë©Ž ë‹€ìšŽëĄœë“œê°€ 가늄합니닀.
      application/library/js/i18n/help/ru.html.js000064400000003105147577724760014616 0ustar00

      ĐĄĐŸĐČДты ĐżĐŸ Ń€Đ°Đ±ĐŸŃ‚Đ”

      Đ Đ°Đ±ĐŸŃ‚Đ° с ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»ŃŒŃĐșĐžĐŒ ĐžĐœŃ‚Đ”Ń€Ń„Đ”ĐčŃĐŸĐŒ ĐżĐŸŃ…ĐŸĐ¶Đ° ĐœĐ° ŃŃ‚Đ°ĐœĐŽĐ°Ń€Ń‚ĐœŃ‹Đč фаĐčĐ»ĐŸĐČыĐč ĐŒĐ”ĐœĐ”ĐŽĐ¶Đ”Ń€ ĐŸĐżĐ”Ń€Đ°Ń†ĐžĐŸĐœĐœĐŸĐč ŃĐžŃŃ‚Đ”ĐŒŃ‹. ĐžĐŽĐœĐ°ĐșĐŸ пДрДтасĐșĐžĐČĐ°ĐœĐžĐ” ĐČ ĐŒĐŸĐ±ĐžĐ»ŃŒĐœŃ‹Ń… Đ±Ń€Đ°ŃƒĐ·Đ”Ń€Đ°Ń… ĐœĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ.

      • ЩДлĐșĐœĐžŃ‚Đ” праĐČĐŸĐč ĐșĐœĐŸĐżĐșĐŸĐč ĐŒŃ‹ŃˆĐž ОлО ĐžŃĐżĐŸĐ»ŃŒĐ·ŃƒĐčŃ‚Đ” Â«ĐŽĐ»ĐžĐœĐœŃ‹Đč тап», Ń‡Ń‚ĐŸĐ±Ń‹ ĐŸŃ‚ĐŸĐ±Ń€Đ°Đ·ĐžŃ‚ŃŒ ĐșĐŸĐœŃ‚Đ”ĐșŃŃ‚ĐœĐŸĐ” ĐŒĐ”ĐœŃŽ.
      • ĐŸĐ”Ń€Đ”Ń‚Đ°Ń‰ĐžŃ‚Đ” ĐČ ĐŽĐ”Ń€Đ”ĐČĐŸ ĐżĐ°ĐżĐŸĐș ОлО Ń‚Đ”Đșущую Ń€Đ°Đ±ĐŸŃ‡ŃƒŃŽ ĐŸĐ±Đ»Đ°ŃŃ‚ŃŒ ĐŽĐ»Ń ĐżĐ”Ń€Đ”ĐŒĐ”Ń‰Đ”ĐœĐžŃ / ĐșĐŸĐżĐžŃ€ĐŸĐČĐ°ĐœĐžŃ ŃĐ»Đ”ĐŒĐ”ĐœŃ‚ĐŸĐČ.
      • Đ’Ń‹Đ±ĐŸŃ€ ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Đ° ĐČ Ń€Đ°Đ±ĐŸŃ‡Đ”Đč ĐŸĐ±Đ»Đ°ŃŃ‚Đž ĐŒĐŸĐ¶Đ”Ń‚ Đ±Ń‹Ń‚ŃŒ Ń€Đ°ŃŃˆĐžŃ€Đ”Đœ с ĐżĐŸĐŒĐŸŃ‰ŃŒŃŽ ĐșлаĐČОшО Shift ОлО Alt (Option).
      • ĐŸĐ”Ń€Đ”Ń‚Đ°Ń‰ĐžŃ‚Đ” ĐČ ĐżĐ°ĐżĐșу ĐœĐ°Đ·ĐœĐ°Ń‡Đ”ĐœĐžŃ ОлО Ń€Đ°Đ±ĐŸŃ‡ŃƒŃŽ ĐŸĐ±Đ»Đ°ŃŃ‚ŃŒ ĐŽĐ»Ń Đ·Đ°ĐłŃ€ŃƒĐ·ĐșĐž фаĐčĐ»ĐŸĐČ Đž ĐżĐ°ĐżĐŸĐș.
      • В ĐŽĐžĐ°Đ»ĐŸĐłĐŸĐČĐŸĐŒ ĐŸĐșĐœĐ” Đ·Đ°ĐłŃ€ŃƒĐ·ĐșĐž ĐŒĐŸĐ¶ĐœĐŸ ĐžŃĐżĐŸĐ»ŃŒĐ·ĐŸĐČать ĐČстаĐČĐșу ĐŽĐ°ĐœĐœŃ‹Ń… ОлО спОсĐșĐŸĐČ URL-Đ°ĐŽŃ€Đ”ŃĐŸĐČ ĐžĐ· Đ±ŃƒŃ„Đ”Ń€Đ° ĐŸĐ±ĐŒĐ”ĐœĐ°, Đ° таĐșжД пДрДтасĐșĐžĐČать Оз Юругох Đ±Ń€Đ°ŃƒĐ·Đ”Ń€ĐŸĐČ ĐžĐ»Đž фаĐčĐ»ĐŸĐČых ĐŒĐ”ĐœĐ”ĐŽĐ¶Đ”Ń€ĐŸĐČ Đž т.ĐŽ.
      • ĐĐ°Ń‡ĐœĐžŃ‚Đ” пДрДтасĐșĐžĐČĐ°ĐœĐžĐ”, ĐœĐ°Đ¶Đ°ĐČ Alt (Option), Ń‡Ń‚ĐŸĐ±Ń‹ ĐżĐ”Ń€Đ”Ń‚Đ°Ń‰ĐžŃ‚ŃŒ Đ·Đ° прДЎДлы Đ±Ń€Đ°ŃƒĐ·Đ”Ń€Đ°. Đ­Ń‚ĐŸ Đ·Đ°ĐżŃƒŃŃ‚ĐžŃ‚ŃŒ ĐżŃ€ĐŸŃ†Đ”ŃŃ сĐșачоĐČĐ°ĐœĐžŃ ĐČ Google Chrome.
      application/library/js/i18n/help/tr.html.js000064400000001652147577724760014622 0ustar00

      İƟlem Ä°puçları

      Kullanıcı arayĂŒzĂŒndeki iƟlem, iƟletim sisteminin standart dosya yöneticisine benzer. Ancak SĂŒrĂŒkle ve Bırak özelliği mobil tarayıcılarda mĂŒmkĂŒn değildir.

      • Bağlam menĂŒsĂŒnĂŒ göstermek için sağ tıklayın veya uzun dokunun.
      • Öğeleri taĆŸÄ±mak/kopyalamak için klasör ağacına veya geçerli çalÄ±ĆŸma alanına sĂŒrĂŒkleyip bırakın.
      • ÇalÄ±ĆŸma alanındaki Ă¶ÄŸe seçimi Shift veya Alt (Seçenek) tuƟuyla geniƟletilebilir.
      • Dosya ve klasör yĂŒklemek için hedef klasöre veya çalÄ±ĆŸma alanına sĂŒrĂŒkleyip bırakın.
      • YĂŒkleme iletiƟim kutusu, pano verilerini veya URL listelerini yapÄ±ĆŸtırma/bırakma ve diğer tarayıcı veya dosya yöneticilerinden SĂŒrĂŒkle ve Bırak vb.
      • DÄ±ĆŸ tarayıcıya sĂŒrĂŒklemek için Alt (Seçenek) tuƟuna basarak sĂŒrĂŒkleyin. Google Chrome ile indirme iƟlemi olacak.
      application/library/js/i18n/help/es.html.js000064400000002042147577724760014576 0ustar00

      Consejos de operación

      Operar en la Interfaz del Usuario es similar al administrador de archivos estandar del sistema operativo. Sin embargo, Arrastrar y soltar no es posible con los navegadores móviles.

      • Click derecho o un tap largo para mostrar el menú de contexto.
      • Arrastrar y soltar dentro del árbol de carpetas o el espacio de trabajo actual para mover/copiar elementos.
      • La selección de elementos en el espacio de trabajo puede ampliarse con la tecla Shift o Alt (Opción).
      • Arrastrar y soltar a la carpeta de destino o área de trabajo para cargar archivos y carpetas.
      • El cuadro de diálogo de carga puede aceptar pegar/soltar datos del portapapeles o listas de URL y arrastrar y soltar desde otro navegador o administrador de archivos, etc.
      • Iniciar a arrastrar presionando la tecla Alt (Opción) para arrastrar fuera del navegador. Se convertirá en una operación de descarga con Google Chrome.
      application/library/js/i18n/help/cs.html.js000064400000001722147577724760014600 0ustar00

      Tipy na obsluhu

      Obsluha na uĆŸivatelskĂ©m rozhranĂ­ je podobnĂĄ standardnĂ­mu sprĂĄvci souborĆŻ operačnĂ­ho systĂ©mu. Drag and Drop vĆĄak nenĂ­ moĆŸnĂ© pouĆŸĂ­vat s mobilnĂ­mi prohlĂ­ĆŸeči.

      • KliknutĂ­m pravĂœm tlačítkem nebo dlouhĂœm klepnutĂ­m zobrazĂ­te kontextovĂ© menu.
      • PƙetĂĄhněte do stromu sloĆŸek nebo do aktuĂĄlnĂ­ho pracovnĂ­ho prostoru a pƙetĂĄhněte / kopĂ­rujte poloĆŸky.
      • VĂœběr poloĆŸky v pracovnĂ­m prostoru mĆŻĆŸete rozơíƙit pomocĂ­ klĂĄves Shift nebo Alt (MoĆŸnost).
      • PƙemĂ­stěte soubory a sloĆŸky do cĂ­lovĂ© sloĆŸky nebo do pracovnĂ­ho prostoru.
      • Dialog pƙedĂĄvĂĄnĂ­ mĆŻĆŸe pƙijĂ­mat data schrĂĄnky nebo seznamy adres URL a pƙitĂĄhnout a odejĂ­t z jinĂœch prohlĂ­ĆŸečƯ nebo sprĂĄvcĆŻ souborĆŻ.
      • ZataĆŸenĂ­m spusĆ„te stisknutĂ­m klĂĄvesy Alt (MoĆŸnost) pƙetĂĄhněte do vnějĆĄĂ­ho prohlĂ­ĆŸeče. Tato funkce se pƙevezme pomocĂ­ prohlĂ­ĆŸeče Google Chrome.
      application/library/js/i18n/help/pl.html.js000064400000002007147577724760014603 0ustar00

      Wskazówki ObsƂugi

      DziaƂanie w interfejsie uĆŒytkownika jest podobne do standardowego menedĆŒera plikĂłw systemu operacyjnego. Jednak Przeciąganie i Upuszczanie nie jest moĆŒliwe w przeglądarkach mobilnych.

      • Kliknij prawym przyciskiem myszy lub dƂuĆŒej, aby wyƛwietlić menu kontekstowe.
      • Przeciągnij i upuƛć w drzewie folderĂłw lub bieĆŒÄ…cym obszarze roboczym, aby przenieƛć/kopiować elementy.
      • WybĂłr elementu w obszarze roboczym moĆŒna rozszerzyć wybĂłr z klawiszem Shift lub Alt(Opcja).
      • Przeciągnij i Upuƛć do folderu docelowego lub obszaru roboczego, aby przesƂać pliki i foldery.
      • W oknie dialogowym przesyƂania moĆŒna zaakceptować wklejanie/upuszczanie danych schowka lub listy adresĂłw URL, i Przeciągnij i Upuƛć z innych przeglądarek lub menedĆŒerĂłw plikĂłw, itp.
      • Rozpocznij Przeciąganie naciskając Alt (Opcja), aby przeciągnąć na zewnątrz przeglądarki. Stanie się operacją pobierania z Google Chrome.
      application/library/js/i18n/help/de.html.js000064400000004370147577724760014565 0ustar00

      Anwendungstipps

      Die Verwendung dieser Anwendung ist Àhnlich der einer lokalen Dateiverwaltung.
      Hinweis: auf mobilen GerÀten ist das Ziehen und Ablegen (Drag and Drop) von Dateien nicht möglich.

      • Rechtsklick auf ein Element oder lĂ€nger darauf zeigen öffnet das KontextmenĂŒ
      • Um Elemente in andere Ordner oder aktuellen Arbeitsbereich zu kopieren oder verschieben diese Ziehen und Ablegen
      • Elementauswahl im Arbeitsbereich kann mit der Hochstell- oder ALT-TAste erweitert werden
      • Um lokale Ordner und Dateien in den Zielorder oder -arbeitsbereich zu kopieren diese Ziehen und Ablegen
      • Der Uploaddialog erlaubt Daten aus dem Clipboard (Zwischenspeicher), eine URL und Ziehen und Ablegen aus anderen Browsern und DateiverwaltungsoberflĂ€chen
      • Ziehen mit gedrĂŒckter ALT-Taste erlaubt einen einfachen Dateidownload (nur Google Chrome)
      • Ordner und Dateien können ausgeblendet (versteckt) werden. Um sie wieder dauerhaft sichtbar zu machen, ĂŒber die MenĂŒleiste das "Icon Einstellungen" anklicken, dort unter Arbeitsplatz "Zeige versteckte Elemente" den Button "Neustart" anklicken
      • Das KontextmenĂŒ (rechte Maustaste) zeigt je nach ausgewĂ€hlten Element diverse Aktionen an
      • Je nach Art des Elements kann der Inhalt entweder mit dem integrierten Editor bearbeitet werden (z.B. .php, .txt, .ini usw.) oder wenn ein Bild dieses gedreht sowie die GrĂ¶ĂŸe geĂ€ndert werden
      • Zum verbinden externer Speicherorte (FTP, Dropbox, Box, GoogleDrive, OneDrive) sowie Onlineeditor Zoho Office Editor oder Konvertierungsdienst Online-Convert mĂŒssen diese Anwendungen freigeschaltet als auch die entsprechenden API-Daten zum Abrufen je Dienst definiert sein.
        Sollten diese Dienste nicht verfĂŒgbar sein, mĂŒssen diese entweder selbstĂ€ndig dazu programmiert werden, oder einen Entwickler des Vertrauens damit beauftragen (z.B. OSWorX)
      • In den Einstellungen "MenĂŒ Icon Einstellungen" kann der gesamte Arbeitsbereich, die MenĂŒleiste sowie etliche weitere Aktionen definiert werden
      application/library/js/i18n/help/ja.html.js000064400000002402147577724760014561 0ustar00

      æ“äœœăźăƒ’ăƒłăƒˆ

      UIăźæ“äœœăŻă€ă‚ȘăƒšăƒŹăƒŒăƒ†ă‚Łăƒłă‚°ă‚·ă‚čăƒ†ăƒ ăźæš™æș–ăƒ•ă‚Ąă‚€ăƒ«ăƒžăƒăƒŒă‚žăƒŁă«ă»ăŒæș–æ‹ ă—ăŠă„ăŸă™ă€‚ăŸă ă—ă€ăƒąăƒă‚€ăƒ«ăƒ–ăƒ©ă‚Šă‚¶ă§ăŻăƒ‰ăƒ©ăƒƒă‚°ïŒ†ăƒ‰ăƒ­ăƒƒăƒ—ăŻă§ăăŸă›ă‚“ă€‚

      • 揳クăƒȘăƒƒă‚ŻăŸăŸăŻăƒ­ăƒłă‚°ă‚żăƒƒăƒ—ă§ă‚łăƒłăƒ†ă‚­ă‚čăƒˆăƒĄăƒ‹ăƒ„ăƒŒă‚’èĄšç€șă—ăŸă™ă€‚
      • ă‚ąă‚€ăƒ†ăƒ ă‚’ç§»ć‹•/ă‚łăƒ”ăƒŒă™ă‚‹ă«ăŻă€ăƒ•ă‚©ăƒ«ăƒ€ăƒ„ăƒȘăƒŒăŸăŸăŻăƒŻăƒŒă‚Żă‚čăƒšăƒŒă‚čă«ăƒ‰ăƒ©ăƒƒă‚°ïŒ†ăƒ‰ăƒ­ăƒƒăƒ—ă—ăŸă™ă€‚
      • ăƒŻăƒŒă‚Żă‚čăƒšăƒŒă‚čć†…ăźă‚ąă‚€ăƒ†ăƒ ăźéžæŠžăŻă€Shiftă‚­ăƒŒăŸăŸăŻAltă‚­ăƒŒ(Optionă‚­ăƒŒ)ă§éžæŠžçŻ„ć›Čă‚’æ‹ĄćŒ”ă§ăăŸă™ă€‚
      • ă‚łăƒ”ăƒŒć…ˆăźăƒ•ă‚©ăƒ«ăƒ€ăŸăŸăŻăƒŻăƒŒă‚Żă‚čăƒšăƒŒă‚čă«ăƒ‰ăƒ©ăƒƒă‚°ă‚ąăƒłăƒ‰ăƒ‰ăƒ­ăƒƒăƒ—ă—ăŠă€ăƒ•ă‚Ąă‚€ăƒ«ăšăƒ•ă‚©ăƒ«ăƒ€ă‚’ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă—ăŸă™ă€‚
      • ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ăƒ€ă‚€ă‚ąăƒ­ă‚°ă§ăŻă€ă‚ŻăƒȘăƒƒăƒ—ăƒœăƒŒăƒ‰ăźăƒ‡ăƒŒă‚żă‚„URLăƒȘă‚čăƒˆăźăƒšăƒŒă‚čト/ăƒ‰ăƒ­ăƒƒăƒ—ă€ä»–ăźăƒ–ăƒ©ă‚Šă‚¶ă‚„ăƒ•ă‚Ąă‚€ăƒ«ăƒžăƒăƒŒă‚žăƒŁă‹ă‚‰ăźăƒ‰ăƒ©ăƒƒă‚°ïŒ†ăƒ‰ăƒ­ăƒƒăƒ—ăȘă©ă‚’ć—ă‘ć…„ă‚Œă‚‹ă“ăšăŒă§ăăŸă™ă€‚
      • Altă‚­ăƒŒ(Optionă‚­ăƒŒ)ă‚’æŠŒă—ăȘăŒă‚‰ăƒ‰ăƒ©ăƒƒă‚°ă™ă‚‹ăšă€ăƒ–ăƒ©ă‚Šă‚¶ăźć€–ă«ăƒ‰ăƒ©ăƒƒă‚°ă§ăăŸă™ă€‚Google Chromeă§ăƒ€ă‚Šăƒłăƒ­ăƒŒăƒ‰æ“äœœă«ăȘă‚ŠăŸă™ă€‚
      application/library/js/i18n/help/sk.html.js000064400000001745147577724760014615 0ustar00

      Tipy na obsluhu

      Obsluha na pouĆŸĂ­vateÄŸskom rozhranĂ­ je podobnĂĄ ĆĄtandardnĂ©mu sprĂĄvcovi sĂșborov operačnĂ©ho systĂ©mu. Drag and Drop vĆĄak nie je moĆŸnĂ© pouĆŸĂ­vaĆ„ s mobilnĂœmi prehliadačmi.

      • KliknutĂ­m pravĂœm tlačidlom alebo dlhĂœm klepnutĂ­m zobrazĂ­te kontextovĂ© menu.
      • Presuƈte myĆĄou do stromu priečinkov alebo do aktuĂĄlneho pracovnĂ©ho priestoru a presuƈte / kopĂ­rujte poloĆŸky.
      • VĂœber poloĆŸky v pracovnom priestore mĂŽĆŸete rozĆĄĂ­riĆ„ pomocou klĂĄvesov Shift alebo Alt (MoĆŸnosĆ„).
      • Premiestnite sĂșbory a priečinky do cieÄŸovej zloĆŸky alebo do pracovnĂ©ho priestoru.
      • Dialog odovzdĂĄvania mĂŽĆŸe prijĂ­maĆ„ dĂĄta schrĂĄnky alebo zoznamy adries URL a pritiahnuĆ„ a odĂ­sĆ„ z inĂœch prehliadačov alebo sprĂĄvcov sĂșborov.
      • PotiahnutĂ­m spustite stlačenĂ­m klĂĄvesu Alt (MoĆŸnosĆ„) pretiahnite do vonkajĆĄieho prehliadača. TĂĄto funkcia sa prevezme pomocou prehliadača Google Chrome.
      application/library/js/i18n/elfinder.pt_BR.js000064400000103364147577724760015102 0ustar00/** * PortuguĂȘs translation * @author Leandro Carvalho * @author Wesley Osorio * @author Fernando H. Bandeira * @author Gustavo Brito * @version 2019-10-22 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.pt_BR = { translator : 'Leandro Carvalho <contato@leandrowebdev.net>, Wesley Osorio<wesleyfosorio@hotmail.com>, Fernando H. Bandeira <fernando.bandeira94@gmail.com>, Gustavo Brito <britopereiragustavo@gmail.com>', language : 'PortuguĂȘs', direction : 'ltr', dateFormat : 'd M Y H:i', // will show like: 22 Out 2019 11:34 fancyDateFormat : '$1 H:i', // will show like: Hoje 11:34 nonameDateFormat : 'ymd-His', // noname upload will show like: 191022-113433 messages : { /********************************** errors **********************************/ 'error' : 'Erro', 'errUnknown' : 'Erro desconhecido.', 'errUnknownCmd' : 'Comando desconhecido.', 'errJqui' : 'Configuração invĂĄlida do JQuery UI. Verifique se os componentes selectable, draggable e droppable estĂŁo incluĂ­dos.', 'errNode' : 'elFinder requer um elemento DOM para ser criado.', 'errURL' : 'Configuração invĂĄlida do elFinder! VocĂȘ deve setar a opção da URL.', 'errAccess' : 'Acesso negado.', 'errConnect' : 'Incapaz de conectar ao backend.', 'errAbort' : 'ConexĂŁo abortada.', 'errTimeout' : 'Tempo de conexĂŁo excedido', 'errNotFound' : 'Backend nĂŁo encontrado.', 'errResponse' : 'Resposta invĂĄlida do backend.', 'errConf' : 'Configuração invĂĄlida do backend.', 'errJSON' : 'MĂłdulo PHP JSON nĂŁo estĂĄ instalado.', 'errNoVolumes' : 'NĂŁo existe nenhum volume legĂ­vel disponivel.', 'errCmdParams' : 'ParĂąmetro invĂĄlido para o comando "$1".', 'errDataNotJSON' : 'Dados nĂŁo estĂŁo no formato JSON.', 'errDataEmpty' : 'Dados vazios.', 'errCmdReq' : 'Requisição do Backend requer nome de comando.', 'errOpen' : 'Incapaz de abrir "$1".', 'errNotFolder' : 'Objeto nĂŁo Ă© uma pasta.', 'errNotFile' : 'Objeto nĂŁo Ă© um arquivo.', 'errRead' : 'Incapaz de ler "$1".', 'errWrite' : 'Incapaz de escrever em "$1".', 'errPerm' : 'PermissĂŁo negada.', 'errLocked' : '"$1" estĂĄ bloqueado e nĂŁo pode ser renomeado, movido ou removido.', 'errExists' : 'O nome do arquivo "$1" jĂĄ existe neste local.', 'errInvName' : 'Nome do arquivo invĂĄlido.', 'errInvDirname' : 'Nome da pasta invĂĄlida.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Pasta nĂŁo encontrada.', 'errFileNotFound' : 'Arquivo nĂŁo encontrado.', 'errTrgFolderNotFound' : 'Pasta de destino "$1" nĂŁo encontrada.', 'errPopup' : 'O seu navegador estĂĄ bloqueando popup\'s. Para abrir o arquivo, altere esta opção no seu Navegador.', 'errMkdir' : 'Incapaz de criar a pasta "$1".', 'errMkfile' : 'Incapaz de criar o arquivo "$1".', 'errRename' : 'Incapaz de renomear "$1".', 'errCopyFrom' : 'Copia dos arquivos do volume "$1" nĂŁo permitida.', 'errCopyTo' : 'Copia dos arquivos para o volume "$1" nĂŁo permitida.', 'errMkOutLink' : 'Incapaz de criar um link fora da unidade raiz.', // from v2.1 added 03.10.2015 'errUpload' : 'Erro no upload.', // old name - errUploadCommon 'errUploadFile' : 'NĂŁo foi possĂ­vel fazer o upload "$1".', // old name - errUpload 'errUploadNoFiles' : 'NĂŁo foi encontrado nenhum arquivo para upload.', 'errUploadTotalSize' : 'Os dados excedem o tamanho mĂĄximo permitido.', // old name - errMaxSize 'errUploadFileSize' : 'Arquivo excede o tamanho mĂĄximo permitido.', // old name - errFileMaxSize 'errUploadMime' : 'Tipo de arquivo nĂŁo permitido.', 'errUploadTransfer' : '"$1" erro na transferĂȘncia.', 'errUploadTemp' : 'Incapaz de criar um arquivo temporĂĄrio para upload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Objeto "$1" jĂĄ existe neste local e nĂŁo pode ser substituĂ­do por um objeto com outro tipo.', // new 'errReplace' : 'Incapaz de substituir "$1".', 'errSave' : 'Incapaz de salvar "$1".', 'errCopy' : 'Incapaz de copiar "$1".', 'errMove' : 'Incapaz de mover "$1".', 'errCopyInItself' : 'Incapaz de copiar "$1" nele mesmo.', 'errRm' : 'Incapaz de remover "$1".', 'errTrash' : 'Incapaz de deletar.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Incapaz de remover o(s) arquivo(s) fonte.', 'errExtract' : 'Incapaz de extrair os arquivos de "$1".', 'errArchive' : 'Incapaz de criar o arquivo.', 'errArcType' : 'Tipo de arquivo nĂŁo suportado.', 'errNoArchive' : 'Arquivo invĂĄlido ou Ă© de um tipo nĂŁo suportado.', 'errCmdNoSupport' : 'Backend nĂŁo suporta este comando.', 'errReplByChild' : 'A pasta “$1” nĂŁo pode ser substituĂ­da por um item que contĂ©m.', 'errArcSymlinks' : 'Por razĂ”es de segurança, negada a permissĂŁo para descompactar arquivos que contenham links ou arquivos com nomes nĂŁo permitidos.', // edited 24.06.2012 'errArcMaxSize' : 'Arquivo excede o tamanho mĂĄximo permitido.', 'errResize' : 'Incapaz de redimensionar "$1".', 'errResizeDegree' : 'Grau de rotação invĂĄlido.', // added 7.3.2013 'errResizeRotate' : 'Incapaz de rotacionar a imagem.', // added 7.3.2013 'errResizeSize' : 'Tamanho invĂĄlido de imagem.', // added 7.3.2013 'errResizeNoChange' : 'Tamanho da imagem nĂŁo alterado.', // added 7.3.2013 'errUsupportType' : 'Tipo de arquivo nĂŁo suportado.', 'errNotUTF8Content' : 'Arquivo "$1" nĂŁo estĂĄ em UTF-8 e nĂŁo pode ser editado.', // added 9.11.2011 'errNetMount' : 'Incapaz de montar montagem "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protocolo nĂŁo suportado.', // added 17.04.2012 'errNetMountFailed' : 'Montagem falhou.', // added 17.04.2012 'errNetMountHostReq' : 'Servidor requerido.', // added 18.04.2012 'errSessionExpires' : 'Sua sessĂŁo expirou por inatividade.', 'errCreatingTempDir' : 'NĂŁo foi possĂ­vel criar um diretĂłrio temporĂĄrio: "$1"', 'errFtpDownloadFile' : 'NĂŁo foi possĂ­vel fazer o download do arquivo do FTP: "$1"', 'errFtpUploadFile' : 'NĂŁo foi possĂ­vel fazer o upload do arquivo para o FTP: "$1"', 'errFtpMkdir' : 'NĂŁo foi possĂ­vel criar um diretĂłrio remoto no FTP: "$1"', 'errArchiveExec' : 'Erro ao arquivar os arquivos: "$1"', 'errExtractExec' : 'Erro na extração dos arquivos: "$1"', 'errNetUnMount' : 'Incapaz de desmontar', // from v2.1 added 30.04.2012 'errConvUTF8' : 'NĂŁo conversivel para UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Tente utilizar o Google Chrome, se vocĂȘ deseja enviar uma pasta.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Tempo limite atingido para a busca "$1". O resultado da pesquisa Ă© parcial.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Re-autorização Ă© necessĂĄria.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'O nĂșmero mĂĄximo de itens selecionĂĄveis ​​é $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'NĂŁo foi possĂ­vel restaurar a partir do lixo. NĂŁo Ă© possĂ­vel identificar o destino da restauração.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor nĂŁo encontrado para este tipo de arquivo.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Ocorreu um erro no lado do servidor.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'NĂŁo foi possĂ­vel esvaziar a pasta "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Existem mais $1 erros.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'Criar arquivo', 'cmdback' : 'Voltar', 'cmdcopy' : 'Copiar', 'cmdcut' : 'Cortar', 'cmddownload' : 'Baixar', 'cmdduplicate' : 'Duplicar', 'cmdedit' : 'Editar arquivo', 'cmdextract' : 'Extrair arquivo de ficheiros', 'cmdforward' : 'Avançar', 'cmdgetfile' : 'Selecionar arquivos', 'cmdhelp' : 'Sobre este software', 'cmdhome' : 'Home', 'cmdinfo' : 'Propriedades', 'cmdmkdir' : 'Nova pasta', 'cmdmkdirin' : 'Em uma nova pasta', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Novo arquivo', 'cmdopen' : 'Abrir', 'cmdpaste' : 'Colar', 'cmdquicklook' : 'PrĂ©-vizualização', 'cmdreload' : 'Recarregar', 'cmdrename' : 'Renomear', 'cmdrm' : 'Deletar', 'cmdtrash' : 'Mover para a lixeira', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Restaurar', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Achar arquivos', 'cmdup' : 'Ir para o diretĂłrio pai', 'cmdupload' : 'Fazer upload de arquivo', 'cmdview' : 'Vizualizar', 'cmdresize' : 'Redimencionar & Rotacionar', 'cmdsort' : 'Ordenar', 'cmdnetmount' : 'Montar unidade de rede', // added 18.04.2012 'cmdnetunmount': 'Desmontar', // from v2.1 added 30.04.2012 'cmdplaces' : 'Para locais', // added 28.12.2014 'cmdchmod' : 'Alterar permissĂŁo', // from v2.1 added 20.6.2015 'cmdopendir' : 'Abrir pasta', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Redefinir largura da coluna', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Tela cheia', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Mover', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Esvaziar a pasta', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Desfazer', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Refazer', // from v2.1.27 added 31.07.2017 'cmdpreference': 'PreferĂȘncias', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Selecionar tudo', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Selecionar nenhum', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Inverter seleção', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Abrir em nova janela', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Ocultar (preferĂȘncia)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Fechar', 'btnSave' : 'Salvar', 'btnRm' : 'Remover', 'btnApply' : 'Aplicar', 'btnCancel' : 'Cancelar', 'btnNo' : 'NĂŁo', 'btnYes' : 'Sim', 'btnMount' : 'Montar', // added 18.04.2012 'btnApprove': 'VĂĄ para $1 & aprove', // from v2.1 added 26.04.2012 'btnUnmount': 'Desmontar', // from v2.1 added 30.04.2012 'btnConv' : 'Converter', // from v2.1 added 08.04.2014 'btnCwd' : 'Aqui', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'Todos', // from v2.1 added 22.5.2015 'btnMime' : 'Tipo MIME', // from v2.1 added 22.5.2015 'btnFileName':'Nome do arquivo', // from v2.1 added 22.5.2015 'btnSaveClose': 'Salvar & Fechar', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 'btnRename' : 'Renomear', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Renomear (tudo)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Anterior ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'PrĂłximo ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Salvar como', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Abrir pasta', 'ntffile' : 'Abrir arquivo', 'ntfreload' : 'Recarregar conteudo da pasta', 'ntfmkdir' : 'Criar diretĂłrio', 'ntfmkfile' : 'Criar arquivos', 'ntfrm' : 'Deletar arquivos', 'ntfcopy' : 'Copiar arquivos', 'ntfmove' : 'Mover arquivos', 'ntfprepare' : 'Preparando para copiar arquivos', 'ntfrename' : 'Renomear arquivos', 'ntfupload' : 'Subindo os arquivos', 'ntfdownload' : 'Baixando os arquivos', 'ntfsave' : 'Salvando os arquivos', 'ntfarchive' : 'Criando os arquivos', 'ntfextract' : 'Extraindo arquivos compactados', 'ntfsearch' : 'Procurando arquivos', 'ntfresize' : 'Redimensionando imagens', 'ntfsmth' : 'Fazendo alguma coisa', 'ntfloadimg' : 'Carregando Imagem', 'ntfnetmount' : 'Montando unidade de rede', // added 18.04.2012 'ntfnetunmount': 'Desmontando unidade de rede', // from v2.1 added 30.04.2012 'ntfdim' : 'Adquirindo dimensĂŁo da imagem', // added 20.05.2013 'ntfreaddir' : 'Lendo informaçÔes da pasta', // from v2.1 added 01.07.2013 'ntfurl' : 'Recebendo URL do link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Alterando permissĂ”es do arquivo', // from v2.1 added 20.6.2015 'ntfpreupload': 'Verificando o nome do arquivo de upload', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Criando um arquivo para download', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Obtendo informaçÔes do caminho', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Processando o arquivo carregado', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Movendo para a lixeira', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Restaurando da lixeira', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Verificando a pasta de destino', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Desfazendo a operação anterior', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Refazendo o desfazer anterior', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Verificando conteĂșdos', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Lixo', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'Desconhecido', 'Today' : 'Hoje', 'Yesterday' : 'Ontem', 'msJan' : 'Jan', 'msFeb' : 'Fev', 'msMar' : 'Mar', 'msApr' : 'Abr', 'msMay' : 'Mai', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Ago', 'msSep' : 'Set', 'msOct' : 'Out', 'msNov' : 'Nov', 'msDec' : 'Dez', 'January' : 'Janeiro', 'February' : 'Fevereiro', 'March' : 'Março', 'April' : 'Abril', 'May' : 'Maio', 'June' : 'Junho', 'July' : 'Julho', 'August' : 'Agosto', 'September' : 'Setembro', 'October' : 'Outubro', 'November' : 'Novembro', 'December' : 'Dezembro', 'Sunday' : 'Domingo', 'Monday' : 'Segunda-feira', 'Tuesday' : 'Terça-feira', 'Wednesday' : 'Quarta-feira', 'Thursday' : 'Quinta-feira', 'Friday' : 'Sexta-feira', 'Saturday' : 'SĂĄbado', 'Sun' : 'Dom', 'Mon' : 'Seg', 'Tue' : 'Ter', 'Wed' : 'Qua', 'Thu' : 'Qui', 'Fri' : 'Sex', 'Sat' : 'SĂĄb', /******************************** sort variants ********************************/ 'sortname' : 'por nome', 'sortkind' : 'por tipo', 'sortsize' : 'por tam.', 'sortdate' : 'por data', 'sortFoldersFirst' : 'Pastas primeiro', 'sortperm' : 'Com permissĂŁo', // from v2.1.13 added 13.06.2016 'sortmode' : 'Por modo', // from v2.1.13 added 13.06.2016 'sortowner' : 'Por proprietĂĄrio', // from v2.1.13 added 13.06.2016 'sortgroup' : 'Por grupo', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Vizualizar em ĂĄrvore', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NovoArquivo.txt', // added 10.11.2015 'untitled folder' : 'NovaPasta', // added 10.11.2015 'Archive' : 'NovoArquivo', // from v2.1 added 10.11.2015 'untitled file' : 'NovoArquivo.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: Arquivo', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Confirmação requerida', 'confirmRm' : 'VocĂȘ tem certeza que deseja remover os arquivos?
      Isto nĂŁo pode ser desfeito!', 'confirmRepl' : 'Substituir arquivo velho com este novo?', 'confirmRest' : 'Substituir o item existente pelo item na lixeira?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'NĂŁo estĂĄ em UTF-8
      Converter para UTF-8?
      ConteĂșdo se torna UTF-8 apĂłs salvar as conversĂ”es.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'NĂŁo foi possĂ­vel detectar a codificação de caracteres deste arquivo. Ele precisa ser convertido temporariamente em UTF-8 para edição. Por favor, selecione a codificação de caracteres deste arquivo.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Isto foi modificado.
      VocĂȘ vai perder seu trabalho caso nĂŁo salve as mudanças.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Tem certeza de que deseja mover itens para a lixeira?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Tem certeza de que deseja mover itens para "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Aplicar a todos', 'name' : 'Nome', 'size' : 'Tamanho', 'perms' : 'PermissĂ”es', 'modify' : 'Modificado', 'kind' : 'Tipo', 'read' : 'Ler', 'write' : 'Escrever', 'noaccess' : 'InacessĂ­vel', 'and' : 'e', 'unknown' : 'Desconhecido', 'selectall' : 'Selecionar todos arquivos', 'selectfiles' : 'Selecionar arquivo(s)', 'selectffile' : 'Selecionar primeiro arquivo', 'selectlfile' : 'Slecionar Ășltimo arquivo', 'viewlist' : 'Exibir como lista', 'viewicons' : 'Exibir como Ă­cones', 'viewSmall' : 'Ícones pequenos', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Ícones mĂ©dios', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Ícones grandes', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Ícones gigantes', // from v2.1.39 added 22.5.2018 'places' : 'Lugares', 'calc' : 'Calcular', 'path' : 'Caminho', 'aliasfor' : 'Alias para', 'locked' : 'Bloqueado', 'dim' : 'DimesĂ”es', 'files' : 'Arquivos', 'folders' : 'Pastas', 'items' : 'Itens', 'yes' : 'sim', 'no' : 'nĂŁo', 'link' : 'Link', 'searcresult' : 'Resultados da pesquisa', 'selected' : 'itens selecionados', 'about' : 'Sobre', 'shortcuts' : 'Atalhos', 'help' : 'Ajuda', 'webfm' : 'Gerenciador de arquivos web', 'ver' : 'VersĂŁo', 'protocolver' : 'VersĂŁo do protocolo', 'homepage' : 'Home do projeto', 'docs' : 'Documentação', 'github' : 'Fork us on Github', 'twitter' : 'Siga-nos no twitter', 'facebook' : 'Junte-se a nĂłs no Facebook', 'team' : 'Time', 'chiefdev' : 'Desenvolvedor chefe', 'developer' : 'Desenvolvedor', 'contributor' : 'Contribuinte', 'maintainer' : 'Mantenedor', 'translator' : 'Tradutor', 'icons' : 'Ícones', 'dontforget' : 'e nĂŁo se esqueça de levar a sua toalha', 'shortcutsof' : 'Atalhos desabilitados', 'dropFiles' : 'Solte os arquivos aqui', 'or' : 'ou', 'selectForUpload' : 'Selecione arquivos para upload', 'moveFiles' : 'Mover arquivos', 'copyFiles' : 'Copiar arquivos', 'restoreFiles' : 'Restaurar itens', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Remover de Lugares', 'aspectRatio' : 'Manter aspecto', 'scale' : 'Tamanho', 'width' : 'Largura', 'height' : 'Altura', 'resize' : 'Redimencionar', 'crop' : 'Cortar', 'rotate' : 'Rotacionar', 'rotate-cw' : 'Girar 90 graus CW', 'rotate-ccw' : 'Girar 90 graus CCW', 'degree' : '°', 'netMountDialogTitle' : 'Montar Unidade de rede', // added 18.04.2012 'protocol' : 'Protocolo', // added 18.04.2012 'host' : 'Servidor', // added 18.04.2012 'port' : 'Porta', // added 18.04.2012 'user' : 'UsuĂĄrio', // added 18.04.2012 'pass' : 'Senha', // added 18.04.2012 'confirmUnmount' : 'Deseja desmontar $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Soltar ou colar arquivos do navegador', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Solte ou cole arquivos aqui', // from v2.1 added 07.04.2014 'encoding' : 'Codificação', // from v2.1 added 19.12.2014 'locale' : 'Local', // from v2.1 added 19.12.2014 'searchTarget' : 'Alvo: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Perquisar por input MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Dono', // from v2.1 added 20.6.2015 'group' : 'Grupo', // from v2.1 added 20.6.2015 'other' : 'Outro', // from v2.1 added 20.6.2015 'execute' : 'Executar', // from v2.1 added 20.6.2015 'perm' : 'PermissĂŁo', // from v2.1 added 20.6.2015 'mode' : 'Modo', // from v2.1 added 20.6.2015 'emptyFolder' : 'Pasta vazia', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Pasta vazia\\A Arraste itens para os adicionar', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Pasta vazia\\A De um toque longo para adicionar itens', // from v2.1.6 added 30.12.2015 'quality' : 'Qualidade', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto sincronização', // from v2.1.6 added 10.1.2016 'moveUp' : 'Mover para cima', // from v2.1.6 added 18.1.2016 'getLink' : 'Obter link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Itens selecionados ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID da pasta', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Permitir acesso offline', // from v2.1.10 added 3.25.2016 'reAuth' : 'Se autenticar novamente', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Carregando...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Abrir mĂșltiplos arquivos', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'VocĂȘ estĂĄ tentando abrir os arquivos $1. Tem certeza de que deseja abrir no navegador?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Os resultados da pesquisa estĂŁo vazios no destino da pesquisa.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Arquivo sendo editado.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Voce selecionou $1 itens.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'VocĂȘ tem $1 itens na ĂĄrea de transferĂȘncia.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'A pesquisa incremental Ă© apenas da visualização atual.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Restabelecer', // from v2.1.15 added 3.8.2016 'complete' : '$1 completo', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Menu contextual', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Virar pĂĄgina', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'RaĂ­zes de volume', // from v2.1.16 added 16.9.2016 'reset' : 'Resetar', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Cor de fundo', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Seletor de cores', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'Grade 8px', // from v2.1.16 added 4.10.2016 'enabled' : 'Ativado', // from v2.1.16 added 4.10.2016 'disabled' : 'Desativado', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Os resultados da pesquisa estĂŁo vazios na exibição atual.\\APressione [Enter] para expandir o alvo da pesquisa.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Os resultados da pesquisa da primeira letra estĂŁo vazios na exibição atual.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Texto do rĂłtulo', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 minutos restantes', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Reabrir com a codificação selecionada', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Salvar com a codificação selecionada', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Selecione a pasta', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Buscar primeira letra', // from v2.1.23 added 24.3.2017 'presets' : 'PredefiniçÔes', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'SĂŁo muitos itens, portanto nĂŁo podem ser jogados no lixo.', // from v2.1.25 added 9.6.2017 'TextArea' : 'TextArea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Esvaziar a pasta "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'NĂŁo hĂĄ itens em uma pasta "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'PreferĂȘncia', // from v2.1.26 added 28.6.2017 'language' : 'LĂ­ngua', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Inicialize as configuraçÔes salvas neste navegador', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Barra de ferramentas', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 caracteres restantes.', // from v2.1.29 added 30.8.2017 'sum' : 'Somar', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Tamanho aproximado do arquivo', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focar no elemento do diĂĄlogo com o mouse por cima', // from v2.1.30 added 2.11.2017 'select' : 'Selecione', // from v2.1.30 added 23.11.2017 'selectAction' : 'Ação ao selecionar arquivo', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Abrir com o editor usado pela Ășltima vez', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Inverter seleção', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Tem certeza de que deseja renomear $1 itens selecionados como $2?
      Isto nĂŁo poderĂĄ ser desfeito!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Renomear Batch', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ NĂșmero', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Adicionar prefixo', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Adicionar sufixo', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Alterar extensĂŁo', // from v2.1.31 added 8.12.2017 'columnPref' : 'ConfiguraçÔes de colunas (exibição em lista)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Todas as alteraçÔes serĂŁo refletidas imediatamente no arquivo.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Quaisquer alteraçÔes nĂŁo serĂŁo refletidas atĂ© desmontar este volume.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'O(s) seguinte(s) volume(s) montado neste volume tambĂ©m desmontado. VocĂȘ tem certeza que quer desmontĂĄ-lo(s)?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'InformaçÔes da seleção', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algoritmos para mostrar o hash do arquivo', // from v2.1.33 added 10.3.2018 'infoItems' : 'Itens de informação (painel InformaçÔes de seleção)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Pressione novamente para sair.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Barra de ferramentas', // from v2.1.38 added 4.4.2018 'workspace' : 'Área de trabalho', // from v2.1.38 added 4.4.2018 'dialog' : 'DiĂĄlogo', // from v2.1.38 added 4.4.2018 'all' : 'Tudo', // from v2.1.38 added 4.4.2018 'iconSize' : 'Tamanho do Ă­cone (Visualização de Ă­cones)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Abra a janela maximizada do editor', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Como a conversĂŁo por API nĂŁo estĂĄ disponĂ­vel no momento, faça a conversĂŁo no site.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'ApĂłs a conversĂŁo, vocĂȘ deve fazer o upload com o URL do item ou um arquivo baixado para salvar o arquivo convertido.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Converter no site $1', // from v2.1.40 added 10.7.2018 'integrations' : 'IntegraçÔes', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Este elFinder possui os seguintes serviços externos integrados. Por favor, verifique os termos de uso, polĂ­tica de privacidade, etc. antes de usĂĄ-lo.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Mostrar itens ocultos', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Ocultar itens ocultos', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Mostrar/Ocultar itens ocultos', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Tipos de arquivo para ativar com "Novo arquivo"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Tipo do arquivo de texto', // from v2.1.41 added 7.8.2018 'add' : 'Adicionar', // from v2.1.41 added 7.8.2018 'theme' : 'Tema', // from v2.1.43 added 19.10.2018 'default' : 'PadrĂŁo', // from v2.1.43 added 19.10.2018 'description' : 'Descrição', // from v2.1.43 added 19.10.2018 'website' : 'Site da internet', // from v2.1.43 added 19.10.2018 'author' : 'Autor', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'Licença', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Este item nĂŁo pode ser salvo. Para evitar perder as ediçÔes, vocĂȘ precisa exportar para o seu PC.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Clique duas vezes no arquivo para selecionĂĄ-lo.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Usar o modo de tela cheia', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Desconhecio', 'kindRoot' : 'Raiz do volume', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Pasta', 'kindSelects' : 'SeleçÔes', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Alias invĂĄlido', // applications 'kindApp' : 'Aplicação', 'kindPostscript' : 'Documento Postscript', 'kindMsOffice' : 'Documento Microsoft Office', 'kindMsWord' : 'Documento Microsoft Word', 'kindMsExcel' : 'Documento Microsoft Excel', 'kindMsPP' : 'Apresentação Microsoft Powerpoint', 'kindOO' : 'Documento Open Office', 'kindAppFlash' : 'Aplicação Flash', 'kindPDF' : 'Formato de Documento PortĂĄtil (PDF)', 'kindTorrent' : 'Arquivo Bittorrent', 'kind7z' : 'Arquivo 7z', 'kindTAR' : 'Arquivo TAR', 'kindGZIP' : 'Arquivo GZIP', 'kindBZIP' : 'Arquivo BZIP', 'kindXZ' : 'Arquivo XZ', 'kindZIP' : 'Arquivo ZIP', 'kindRAR' : 'Arquivo RAR', 'kindJAR' : 'Arquivo JAR', 'kindTTF' : 'Tipo verdadeiro da fonte', 'kindOTF' : 'Abrir tipo de fonte', 'kindRPM' : 'Pacote RPM', // texts 'kindText' : 'Arquivo de texto', 'kindTextPlain' : 'Texto simples', 'kindPHP' : 'PHP', 'kindCSS' : 'CSS', 'kindHTML' : 'Documento HTML', 'kindJS' : 'Javascript', 'kindRTF' : 'Formato Rich Text', 'kindC' : 'C', 'kindCHeader' : 'C cabeçalho', 'kindCPP' : 'C++', 'kindCPPHeader' : 'C++ cabeçalho', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python', 'kindJava' : 'Java', 'kindRuby' : 'Ruby', 'kindPerl' : 'Perl', 'kindSQL' : 'SQL', 'kindXML' : 'Documento XML', 'kindAWK' : 'AWK', 'kindCSV' : 'Valores separados por vĂ­rgula', 'kindDOCBOOK' : 'Documento Docbook XML', 'kindMarkdown' : 'Texto Markdown', // added 20.7.2015 // images 'kindImage' : 'Imagem', 'kindBMP' : 'Imagem BMP', 'kindJPEG' : 'Imagem JPEG', 'kindGIF' : 'Imagem GIF', 'kindPNG' : 'Imagem PNG', 'kindTIFF' : 'Imagem TIFF', 'kindTGA' : 'Imagem TGA', 'kindPSD' : 'Imagem Adobe Photoshop', 'kindXBITMAP' : 'Imagem X bitmap', 'kindPXM' : 'Imagem Pixelmator', // media 'kindAudio' : 'Arquivo de audio', 'kindAudioMPEG' : 'Audio MPEG', 'kindAudioMPEG4' : 'Audio MPEG-4', 'kindAudioMIDI' : 'Audio MIDI', 'kindAudioOGG' : 'Audio Ogg Vorbis', 'kindAudioWAV' : 'Audio WAV', 'AudioPlaylist' : 'Lista de reprodução MP3 ', 'kindVideo' : 'Arquivo de video', 'kindVideoDV' : 'DV filme', 'kindVideoMPEG' : 'Video MPEG', 'kindVideoMPEG4' : 'Video MPEG-4', 'kindVideoAVI' : 'Video AVI', 'kindVideoMOV' : 'Filme rĂĄpido', 'kindVideoWM' : 'Video Windows Media', 'kindVideoFlash' : 'Video Flash', 'kindVideoMKV' : 'MKV', 'kindVideoOGG' : 'Video Ogg' } }; })); application/library/js/i18n/elfinder.zh_TW.js000064400000077337147577724760015141 0ustar00/** * æ­Łé«”äž­æ–‡ translation * @author Yuwei Chuang * @author Danny Lin * @author TCC * @author Rick Jiang * @version 2023-06-02 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.zh_TW = { translator : 'Yuwei Chuang <ywchuang.tw@gmail.com>, Danny Lin <danny0838@gmail.com>, TCC <john987john987@gmail.com>, Rick Jiang <rick.jiang@aol.com>, Banny Tai <cssf998811@gmail.com>', language : 'æ­Łé«”äž­æ–‡', direction : 'ltr', dateFormat : 'Y/m/d H:i', // will show like: 2023/06/02 09:48 fancyDateFormat : '$1 H:i', // will show like: 今怩 09:48 nonameDateFormat : 'ymd-His', // noname upload will show like: 230602-094822 messages : { /********************************** errors **********************************/ 'error' : '錯èȘ€', 'errUnknown' : 'æœȘçŸ„çš„éŒŻèȘ€.', 'errUnknownCmd' : 'æœȘ矄的指什.', 'errJqui' : 'ç„Ąæ•ˆçš„ jQuery UI èš­ćźš. ćż…é ˆćŒ…ć« Selectable, draggable ä»„ćŠ droppable ć…ƒä»¶.', 'errNode' : 'elFinder 需芁胜ć»ș立 DOM 慃箠.', 'errURL' : 'ç„Ąæ•ˆçš„ elFinder èš­ćźš! 氚æœȘèš­ćźš URL 遾項.', 'errAccess' : 'æ‹’ç”•ć­˜ć–.', 'errConnect' : 'ç„Ąæł•é€Łç·šè‡łćŸŒç«Ż.', 'errAbort' : 'é€Łç·šäž­æ–·.', 'errTimeout' : 'é€Łç·šé€Ÿæ™‚.', 'errNotFound' : 'ćŸŒç«Żäžć­˜ćœš.', 'errResponse' : 'ç„Ąæ•ˆçš„ćŸŒç«Żć›žćŸ©.', 'errConf' : 'ç„Ąæ•ˆçš„ćŸŒç«Żèš­ćźš.', 'errJSON' : 'æœȘćź‰èŁ PHP JSON æšĄç”„.', 'errNoVolumes' : 'ç„ĄćŻèź€ć–çš„ volumes.', 'errCmdParams' : 'ç„Ąæ•ˆçš„ćƒæ•ž, 指什: "$1".', 'errDataNotJSON' : 'èł‡æ–™äžæ˜Ż JSON æ ŒćŒ.', 'errDataEmpty' : 'æČ’æœ‰èł‡æ–™.', 'errCmdReq' : 'ćŸŒç«Żè«‹æ±‚éœ€èŠć‘œä»€ćçš±.', 'errOpen' : 'ç„Ąæł•é–‹ć•Ÿ "$1".', 'errNotFolder' : 'éžèł‡æ–™ć€Ÿ.', 'errNotFile' : '非æȘ”æĄˆ.', 'errRead' : 'ç„Ąæł•èź€ć– "$1".', 'errWrite' : 'ç„Ąæł•ćŻ«ć…„ "$1".', 'errPerm' : 'ç„ĄæŹŠé™.', 'errLocked' : '"$1" èą«éŽ–ćźš,äžèƒœé‡æ–°ć‘œć, ç§»ć‹•æˆ–ćˆ é™€.', 'errExists' : 'æȘ”æĄˆ "$1" ć·Čç¶“ć­˜ćœšäș†.', 'errInvName' : 'ç„Ąæ•ˆçš„æȘ”æĄˆćçš±.', 'errInvDirname' : 'ç„Ąæ•ˆçš„èł‡æ–™ć€Ÿćçš±', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'æœȘæ‰Ÿćˆ°èł‡æ–™ć€Ÿ.', 'errFileNotFound' : 'æœȘæ‰Ÿćˆ°æȘ”æĄˆ.', 'errTrgFolderNotFound' : 'æœȘæ‰Ÿćˆ°ç›źæš™èł‡æ–™ć€Ÿ "$1".', 'errPopup' : 'é€ŁèŠœć™šæ””æˆȘäș†ćœˆè·łèŠ–çȘ—. è«‹ćœšç€èŠœć™šéžé …ć…èš±ćœˆè·łèŠ–çȘ—.', 'errMkdir' : '䞍胜ć»șç«‹èł‡æ–™ć€Ÿ "$1".', 'errMkfile' : '䞍胜ć»ș立æȘ”æĄˆ "$1".', 'errRename' : 'äžèƒœé‡æ–°ć‘œć "$1".', 'errCopyFrom' : 'äžć…èš±ćŸžçŁçąŸ "$1" è€‡èŁœ.', 'errCopyTo' : 'äžć…è€‡èŁœćˆ°çŁçąŸ "$1".', 'errMkOutLink' : 'ç„Ąæł•ć»șç«‹é€Łç”ćˆ°çŁçąŸæ čç›źéŒ„ć€–éą.', // from v2.1 added 03.10.2015 'errUpload' : '侊悳錯èȘ€.', // old name - errUploadCommon 'errUploadFile' : 'ç„Ąæł•äžŠć‚ł "$1".', // old name - errUpload 'errUploadNoFiles' : 'æœȘæ‰Ÿćˆ°èŠäžŠć‚łçš„æȘ”æĄˆ.', 'errUploadTotalSize' : 'èł‡æ–™è¶…éŽäș†æœ€ć€§ć…èš±ć€§ć°.', // old name - errMaxSize 'errUploadFileSize' : 'æȘ”æĄˆè¶…éŽäș†æœ€ć€§ć…èš±ć€§ć°.', // old name - errFileMaxSize 'errUploadMime' : 'äžć…èš±çš„æȘ”æĄˆéĄžćž‹.', 'errUploadTransfer' : '"$1" ć‚łèŒžéŒŻèȘ€.', 'errUploadTemp' : 'ç„Ąæł•ć»șç«‹æš«ć­˜æȘ”ä»„äŸ›äžŠć‚ł.', // from v2.1 added 26.09.2015 'errNotReplace' : '"$1" ć·Čç¶“ć­˜ćœšæ­€äœçœź, äžèƒœèą«ć…¶ä»–çš„æ›żæą.', // new 'errReplace' : 'ç„Ąæł•æ›żæą "$1".', 'errSave' : 'ç„Ąæł•äżć­˜ "$1".', 'errCopy' : 'ç„Ąæł•è€‡èŁœ "$1".', 'errMove' : 'ç„Ąæł•ç§»ć‹• "$1".', 'errCopyInItself' : 'ç„Ąæł•ç§»ć‹• "$1" ćˆ°ćŽŸæœ‰äœçœź.', 'errRm' : 'ç„Ąæł•ćˆ é™€ "$1".', 'errTrash' : 'ç„Ąæł•äžŸć…„ćžƒćœŸæĄ¶', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'ç„Ąæł•ćˆ é™€äŸ†æșæȘ”æĄˆ.', 'errExtract' : 'ç„Ąæł•ćŸž "$1" è§ŁćŁ“çžźæȘ”æĄˆ.', 'errArchive' : 'ç„Ąæł•ć»șç«‹ćŁ“çžźè†œ.', 'errArcType' : 'äžæ”ŻæŽçš„ćŁ“çžźæ ŒćŒ.', 'errNoArchive' : 'æȘ”æĄˆäžæ˜ŻćŁ“çžźæȘ”, æˆ–è€…äžæ”ŻæŽè©ČćŁ“çŒ©æ ŒćŒ.', 'errCmdNoSupport' : 'ćŸŒç«Żäžæ”ŻæŽè©Č指什.', 'errReplByChild' : 'èł‡æ–™ć€Ÿ “$1” äžèƒœèą«ćźƒæ‰€ćŒ…ć«çš„æȘ”æĄˆ(èł‡æ–™ć€Ÿ)æ›żæą.', 'errArcSymlinks' : 'ç”±æ–Œćź‰ć…šè€ƒé‡ïŒŒæ‹’ç”•è§ŁćŁ“çžźçŹŠè™Ÿé€Łç”æˆ–ć«æœ‰äžć…èš±æȘ”ćçš„æȘ”æĄˆ.', // edited 24.06.2012 'errArcMaxSize' : 'ćŸ…ćŁ“çžźæȘ”æĄˆçš„ć€§ć°è¶…ć‡ș侊限.', 'errResize' : 'ç„Ąæł•é‡æ–°èȘżæ•Žć€§ć° "$1".', 'errResizeDegree' : 'ç„Ąæ•ˆçš„æ—‹èœ‰è§’ćșŠ.', // added 7.3.2013 'errResizeRotate' : 'ç„Ąæł•æ—‹èœ‰ćœ–ç‰‡.', // added 7.3.2013 'errResizeSize' : 'ç„Ąæ•ˆçš„ćœ–ç‰‡ć€§ć°.', // added 7.3.2013 'errResizeNoChange' : 'ćœ–ç‰‡ć€§ć°æœȘ曎æ”č.', // added 7.3.2013 'errUsupportType' : 'äžæ”ŻæŽçš„æȘ”æĄˆæ ŒćŒ.', 'errNotUTF8Content' : 'æȘ”æĄˆ "$1" äžæ˜Ż UTF-8 æ ŒćŒ, äžèƒœç·šèŒŻ.', // added 9.11.2011 'errNetMount' : 'ç„Ąæł•æŽ›èŒ‰ "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'äžæ”ŻæŽè©Čé€šèšŠć”è­°.', // added 17.04.2012 'errNetMountFailed' : 'æŽ›èŒ‰ć€±æ•—.', // added 17.04.2012 'errNetMountHostReq' : 'éœ€èŠæŒ‡ćźšäž»æ©Ÿäœçœź.', // added 18.04.2012 'errSessionExpires' : '由斌過äč…ç„ĄæŽ»ć‹•, session ć·Č過期.', 'errCreatingTempDir' : 'ç„Ąæł•ć»șç«‹æš«æ™‚ç›źéŒ„: "$1"', 'errFtpDownloadFile' : 'ç„Ąæł•ćŸž FTP 䞋茉æȘ”æĄˆ: "$1"', 'errFtpUploadFile' : 'ç„Ąæł•äžŠć‚łæȘ”æĄˆćˆ° FTP: "$1"', 'errFtpMkdir' : 'ç„Ąæł•ćœš FTP ć»șç«‹é ç«Żç›źéŒ„: "$1"', 'errArchiveExec' : '棓羼æȘ”æĄˆæ™‚ç™Œç”ŸéŒŻèȘ€: "$1"', 'errExtractExec' : 'è§ŁćŁ“çžźæȘ”æĄˆæ™‚ç™Œç”ŸéŒŻèȘ€: "$1"', 'errNetUnMount' : 'ç„Ąæł•ćžèŒ‰', // from v2.1 added 30.04.2012 'errConvUTF8' : 'ç„Ąæł•èœ‰æ›ç‚ș UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'ćŠ‚èŠäžŠć‚łé€™ć€‹èł‡æ–™ć€Ÿ, è«‹ć˜—è©Š Google Chrome.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'æœć°‹ "$1" 速時. ćȘ戗ć‡șéƒšćˆ†æœć°‹ç”æžœ.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'éœ€èŠé‡æ–°é©—è­‰æŹŠé™.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'æœ€ć€šćŻéžæ“‡ $1 怋物件.', // from v2.1.17 added 17.10.2016 'errRestore' : 'ç„Ąæł•ćŸžćžƒćœŸæĄ¶æąćŸ©ă€‚ ç„Ąæł•è­˜ćˆ„æąćŸ©ç›źçš„ćœ°ă€‚', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'ç·šèŒŻć™šæ‰Ÿäžćˆ°æ­€æ–‡ä»¶éĄžćž‹ă€‚', // from v2.1.25 added 23.5.2017 'errServerError' : 'æœć‹™ć™šç™Œç”ŸéŒŻèȘ€ă€‚', // from v2.1.25 added 16.6.2017 'errEmpty' : 'ç„Ąæł•æž…ç©ș"$1"æ–‡ä»¶ć€Ÿ', // from v2.1.25 added 22.6.2017 'moreErrors' : '癌生 $1 怋錯èȘ€.', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'äž€æŹĄæœ€ć€šćŻä»„ć‰”ć»ș $1 ć€‹æ–‡ä»¶ć€Ÿă€‚', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'ć»ș立棓瞟æȘ”', 'cmdback' : 'ćŸŒé€€', 'cmdcopy' : 'è€‡èŁœ', 'cmdcut' : 'ć‰Ș例', 'cmddownload' : '䞋茉', 'cmdduplicate' : 'ć»șç«‹ć‰ŻæœŹ', 'cmdedit' : 'ç·šèŒŻæȘ”æĄˆ', 'cmdextract' : 'ćŸžćŁ“çžźæȘ”è§ŁćŁ“çžź', 'cmdforward' : '才é€Č', 'cmdgetfile' : '遞擇æȘ”æĄˆ', 'cmdhelp' : 'é—œæ–ŒæœŹè»Ÿé«”', 'cmdhome' : '驖頁', 'cmdinfo' : '柄看關斌', 'cmdmkdir' : 'ć»șç«‹èł‡æ–™ć€Ÿ', 'cmdmkdirin' : 'ç§»ć…„æ–°èł‡æ–™ć€Ÿ', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'ć»ș立文æȘ”', 'cmdopen' : '開敟', 'cmdpaste' : 'èČŒäžŠ', 'cmdquicklook' : '預芜', 'cmdreload' : '曎新', 'cmdrename' : 'é‡æ–°ć‘œć', 'cmdrm' : 'ćˆ é™€', 'cmdtrash' : 'äžŸćˆ°ćžƒćœŸæĄ¶', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'æąćŸ©', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'æœć°‹æȘ”æĄˆ', 'cmdup' : 'ç§»ćˆ°äžŠäž€ć±€èł‡æ–™ć€Ÿ', 'cmdupload' : '侊悳æȘ”æĄˆ', 'cmdview' : 'æȘąèŠ–', 'cmdresize' : 'èȘżæ•Žć€§ć°ćŠæ—‹èœ‰', 'cmdsort' : '排ćș', 'cmdnetmount' : '掛茉ç¶Čè·ŻçŁçąŸ', // added 18.04.2012 'cmdnetunmount': 'ćžèŒ‰', // from v2.1 added 30.04.2012 'cmdplaces' : '抠戰"äœçœź"', // added 28.12.2014 'cmdchmod' : '曎æ”čæŹŠé™', // from v2.1 added 20.6.2015 'cmdopendir' : 'é–‹ć•Ÿèł‡æ–™ć€Ÿ', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'é‡èš­æŹ„ćŻŹ', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'ć…šèžąćč•', // from v2.1.15 added 03.08.2016 'cmdmove' : '移拕', // from v2.1.15 added 21.08.2016 'cmdempty' : 'æž…ç©șèł‡æ–™ć€Ÿ', // from v2.1.25 added 22.06.2017 'cmdundo' : '䞊䞀歄', // from v2.1.27 added 31.07.2017 'cmdredo' : '䞋䞀歄', // from v2.1.27 added 31.07.2017 'cmdpreference': 'ć„Șć…ˆæŹŠ', // from v2.1.27 added 03.08.2017 'cmdselectall' : '慹遾', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'ć–æ¶ˆéžć–', // from v2.1.28 added 15.08.2017 'cmdselectinvert': '揍搑遾揖', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'ćœšæ–°èŠ–çȘ—é–‹ć•Ÿ', // from v2.1.38 added 3.4.2018 'cmdhide' : 'éš±è—ïŒˆćć„œïŒ‰', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : '關閉', 'btnSave' : 'ć„Č歘', 'btnRm' : 'ćˆ é™€', 'btnApply' : 'äœżç”š', 'btnCancel' : 'ć–æ¶ˆ', 'btnNo' : '搊', 'btnYes' : 'æ˜Ż', 'btnMount' : '掛茉', // added 18.04.2012 'btnApprove': '移戰 $1 䞊æ‰č懆', // from v2.1 added 26.04.2012 'btnUnmount': 'ćžèŒ‰', // from v2.1 added 30.04.2012 'btnConv' : '蜉換', // from v2.1 added 08.04.2014 'btnCwd' : 'é€™èŁĄ', // from v2.1 added 22.5.2015 'btnVolume' : '磁籟', // from v2.1 added 22.5.2015 'btnAll' : '慹郹', // from v2.1 added 22.5.2015 'btnMime' : 'MIME 類枋', // from v2.1 added 22.5.2015 'btnFileName':'æȘ”損', // from v2.1 added 22.5.2015 'btnSaveClose': 'ć„Č歘侩關閉', // from v2.1 added 12.6.2015 'btnBackup' : 'ć‚™ä»œ', // fromv2.1 added 28.11.2015 'btnRename' : 'é‡æ–°ć‘œć', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'é‡æ–°ć‘œćć…šéƒš', // from v2.1.24 added 6.4.2017 'btnPrevious' : '侊侀頁 ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : '例侀頁 ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'ćŠć­˜æ–°æȘ”', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'é–‹ć•Ÿèł‡æ–™ć€Ÿ', 'ntffile' : '開敟æȘ”æĄˆ', 'ntfreload' : 'æ›Žæ–°èł‡æ–™ć€Ÿć†…ćźč', 'ntfmkdir' : 'ć»șç«‹èł‡æ–™ć€Ÿ', 'ntfmkfile' : 'ć»ș立æȘ”æĄˆ', 'ntfrm' : 'ćˆ é™€æȘ”æĄˆ', 'ntfcopy' : 'è€‡èŁœæȘ”æĄˆ', 'ntfmove' : '移拕æȘ”æĄˆ', 'ntfprepare' : 'æș–ć‚™è€‡èŁœæȘ”æĄˆ', 'ntfrename' : 'é‡æ–°ć‘œćæȘ”æĄˆ', 'ntfupload' : '侊悳æȘ”æĄˆ', 'ntfdownload' : '䞋茉æȘ”æĄˆ', 'ntfsave' : 'ć„Č歘æȘ”æĄˆ', 'ntfarchive' : 'ć»ș立棓瞟æȘ”', 'ntfextract' : 'ćŸžćŁ“çžźæȘ”è§ŁćŁ“çžź', 'ntfsearch' : 'æœć°‹æȘ”æĄˆ', 'ntfresize' : 'æ­Łćœšæ›Žæ”čćœ–ç‰‡ć€§ć°', 'ntfsmth' : 'æ­Łćœšćż™ >_<', 'ntfloadimg' : 'æ­Łćœšèź€ć–ćœ–ç‰‡', 'ntfnetmount' : 'æ­ŁćœšæŽ›èŒ‰ç¶Čè·ŻçŁçąŸ', // added 18.04.2012 'ntfnetunmount': 'æ­ŁćœšćžèŒ‰ç¶Čè·ŻçŁçąŸ', // from v2.1 added 30.04.2012 'ntfdim' : 'ć–ćŸ—ćœ–ç‰‡ć€§ć°', // added 20.05.2013 'ntfreaddir' : 'æ­Łćœšèź€ć–èł‡æ–™ć€Ÿèł‡èšŠ', // from v2.1 added 01.07.2013 'ntfurl' : 'æ­Łćœšć–ćŸ—é€Łç” URL', // from v2.1 added 11.03.2014 'ntfchmod' : '曎æ”čæȘ”æĄˆæšĄćŒ', // from v2.1 added 20.6.2015 'ntfpreupload': 'æ­Łćœšé©—è­‰äžŠć‚łæȘ”æĄˆćçš±', // from v2.1 added 31.11.2015 'ntfzipdl' : 'æ­Łćœšć»șç«‹çžźæȘ”仄䟛䞋茉', // from v2.1.7 added 23.1.2016 'ntfparents' : 'æ­Łćœšć–ćŸ—è·ŻćŸ‘èł‡èšŠ', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'æ­Łćœšè™•ç†äžŠć‚łçš„æȘ”æĄˆ', // from v2.1.17 added 2.11.2016 'ntftrash' : 'æ­ŁćœšäžŸćˆ°ćžƒćœŸæĄ¶', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'æ­ŁćŸžćžƒćœŸæĄ¶æąćŸ©', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'æ­ŁćœšæȘąæŸ„ç›źæš™èł‡æ–™ć€Ÿ', // from v2.1.24 added 3.5.2017 'ntfundo' : 'æ­Łćœšæ’€éŠ·äžŠäž€æ­„ć‹•äœœ', // from v2.1.27 added 31.07.2017 'ntfredo' : 'æ­Łćœšé‡ćšäžŠäž€æ­„ć‹•äœœ', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'æ­ŁćœšçąșèȘć…§ćźč', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'ćžƒćœŸæĄ¶', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'æœȘ矄', 'Today' : '今怩', 'Yesterday' : 'æ˜šć€©', 'msJan' : '䞀月', 'msFeb' : 'äșŒæœˆ', 'msMar' : '䞉月', 'msApr' : 'ć››æœˆ', 'msMay' : 'äș”月', 'msJun' : 'ć…­æœˆ', 'msJul' : '䞃月', 'msAug' : 'ć…«æœˆ', 'msSep' : 'äčæœˆ', 'msOct' : 'ćæœˆ', 'msNov' : 'ćäž€æœˆ', 'msDec' : '捁äșŒæœˆ', 'January' : '䞀月', 'February' : 'äșŒæœˆ', 'March' : '䞉月', 'April' : 'ć››æœˆ', 'May' : 'äș”月', 'June' : 'ć…­æœˆ', 'July' : '䞃月', 'August' : 'ć…«æœˆ', 'September' : 'äčæœˆ', 'October' : 'ćæœˆ', 'November' : 'ćäž€æœˆ', 'December' : '捁äșŒæœˆ', 'Sunday' : '星期旄', 'Monday' : '星期䞀', 'Tuesday' : '星期äșŒ', 'Wednesday' : '星期䞉', 'Thursday' : 'æ˜ŸæœŸć››', 'Friday' : '星期äș”', 'Saturday' : 'æ˜ŸæœŸć…­', 'Sun' : 'ć‘šæ—„', 'Mon' : '摹侀', 'Tue' : '摹äșŒ', 'Wed' : '摹侉', 'Thu' : '摹曛', 'Fri' : '摹äș”', 'Sat' : '摹慭', /******************************** sort variants ********************************/ 'sortname' : 'æŒ‰ćçš±', 'sortkind' : 'æŒ‰éĄžćž‹', 'sortsize' : 'æŒ‰ć€§ć°', 'sortdate' : '按旄期', 'sortFoldersFirst' : 'èł‡æ–™ć€Ÿçœźć‰', 'sortperm' : 'æŒ‰æŹŠé™', // from v2.1.13 added 13.06.2016 'sortmode' : 'æŒ‰æšĄćŒ', // from v2.1.13 added 13.06.2016 'sortowner' : '按擁有者', // from v2.1.13 added 13.06.2016 'sortgroup' : '按矀甄', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'äčŸć„—甚斌æšč狀朖', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : '新æȘ”æĄˆ.txt', // added 10.11.2015 'untitled folder' : 'æ–°èł‡æ–™ć€Ÿ', // added 10.11.2015 'Archive' : 'æ–°ćŁ“çžźæȘ”', // from v2.1 added 10.11.2015 'untitled file' : '新æȘ”æĄˆ.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: æȘ”æĄˆ', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : '請çąșèȘ', 'confirmRm' : 'çąșćźšèŠćˆ é™€æȘ”æĄˆć—Ž?
      æ­€æ“äœœç„Ąæł•ć›žćŸ©!', 'confirmRepl' : '甚新æȘ”æĄˆć–ä»ŁćŽŸæȘ”æĄˆ?', 'confirmRest' : 'ç”šćžƒćœŸæĄ¶äž­çš„é …ç›źæ›żæ›çŸæœ‰é …ç›źïŒŸ', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'äžæ˜Ż UTF-8 æȘ”æĄˆ
      蜉換ç‚ș UTF-8 旎?
      èœ‰æ›ćŸŒć„Čć­˜æœƒæŠŠć…§ćźčèźŠæˆ UTF-8.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'ç„Ąæł•ć”æžŹæ­€æȘ”æĄˆçš„ć­—ć…ƒç·šçąŒ, 須暫時蜉換ç‚ș UTF-8 ä»„äŸ›ç·šèŒŻ.
      請遞擇歀æȘ”æĄˆçš„ć­—ć…ƒç·šçąŒ.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'æ­€æȘ”æĄˆć·Čäżźæ”č.
      è‹„æœȘć„Č歘氇éșć€±ç›źć‰çš„ć·„äœœ.', // from v2.1 added 15.7.2015 'confirmTrash' : 'çąșćźšèŠć°‡é …ç›źäžŸćˆ°ćžƒćœŸæĄ¶ć—ŽïŒŸ', //from v2.1.24 added 29.4.2017 'confirmMove' : 'çąșćźšèŠć°‡é …ç›źç§»è‡łâ€œ$1â€ć—ŽïŒŸ', //from v2.1.50 added 27.7.2019 'apllyAll' : 'ć…šéƒšć„—ç”š', 'name' : 'ćçš±', 'size' : 'ć€§ć°', 'perms' : 'æŹŠé™', 'modify' : 'äżźæ”čæ–Œ', 'kind' : 'éĄžćˆ„', 'read' : 'èź€ć–', 'write' : '毫慄', 'noaccess' : 'ç„ĄæŹŠé™', 'and' : '撌', 'unknown' : 'æœȘ矄', 'selectall' : '遞擇所有æȘ”æĄˆ', 'selectfiles' : '遞擇æȘ”æĄˆ', 'selectffile' : 'éžæ“‡çŹŹäž€ć€‹æȘ”æĄˆ', 'selectlfile' : 'éžæ“‡æœ€ćŸŒäž€ć€‹æȘ”æĄˆ', 'viewlist' : 'ćˆ—èĄšæȘąèŠ–', 'viewicons' : '朖ç€șæȘąèŠ–', 'viewSmall' : '氏朖ç€ș', // from v2.1.39 added 22.5.2018 'viewMedium' : '侭朖ç€ș', // from v2.1.39 added 22.5.2018 'viewLarge' : 'ć€§ćœ–ç€ș', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'è¶…ć€§ćœ–ç€ș', // from v2.1.39 added 22.5.2018 'places' : 'äœçœź', 'calc' : 'èšˆçź—', 'path' : 'è·ŻćŸ‘', 'aliasfor' : 'ćˆ«ć', 'locked' : '鎖漚', 'dim' : 'ćœ–ç‰‡ć€§ć°', 'files' : 'æȘ”æĄˆ', 'folders' : 'èł‡æ–™ć€Ÿ', 'items' : '項盼', 'yes' : 'æ˜Ż', 'no' : '搊', 'link' : '連甐', 'searcresult' : 'æœć°‹ç»“æžœ', 'selected' : '遾揖的項盼', 'about' : '關斌', 'shortcuts' : 'ćż«æ·é”', 'help' : 'ć”ćŠ©', 'webfm' : 'ç¶Čè·ŻæȘ”æĄˆçžœçźĄ', 'ver' : 'ç‰ˆæœŹ', 'protocolver' : 'ć”ćźšç‰ˆæœŹ', 'homepage' : '驖頁', 'docs' : '文件', 'github' : '朹 Github ć»șç«‹æˆ‘ć€‘çš„ćˆ†æ”Ż', 'twitter' : '朹 Twitter èżœèč€æˆ‘怑', 'facebook' : '朹 Facebook ćŠ ć…„æˆ‘ć€‘', 'team' : '朘隊', 'chiefdev' : '䞻芁開癌者', 'developer' : '開癌者', 'contributor' : 'èČąç»è€…', 'maintainer' : '維護者', 'translator' : 'çż»è­Żè€…', 'icons' : '朖ç€ș', 'dontforget' : '戫濘äș†ćž¶äžŠäœ æ“Šæ±—çš„æŻ›ć·Ÿ', 'shortcutsof' : 'ćż«æ·é”ć·Č恜甹', 'dropFiles' : '把æȘ”æĄˆæ‹–ćˆ°æ­€è™•', 'or' : '或', 'selectForUpload' : 'éžæ“‡èŠäžŠć‚łçš„æȘ”æĄˆ', 'moveFiles' : '移拕æȘ”æĄˆ', 'copyFiles' : 'è€‡èŁœæȘ”æĄˆ', 'restoreFiles' : 'æąćŸ©é …ç›ź', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'ćŸž"äœçœź"äž­ćˆ é™€', 'aspectRatio' : 'äżæŒæŻ”äŸ‹', 'scale' : 'ćŻŹé«˜æŻ”', 'width' : '每', 'height' : '高', 'resize' : '重新èȘżæ•Žć€§ć°', 'crop' : 'èŁćˆ‡', 'rotate' : '旋蜉', 'rotate-cw' : '順時針旋蜉90ćșŠ', 'rotate-ccw' : '逆時針旋蜉90ćșŠ', 'degree' : 'ćșŠ', 'netMountDialogTitle' : '掛茉ç¶Čè·ŻçŁçąŸ', // added 18.04.2012 'protocol' : 'é€šèšŠć”ćźš', // added 18.04.2012 'host' : '䞻機', // added 18.04.2012 'port' : 'é€ŁæŽ„ćŸ ', // added 18.04.2012 'user' : 'äœżç”šè€…', // added 18.04.2012 'pass' : 'ćŻ†çąŒ', // added 18.04.2012 'confirmUnmount' : 'çąșćźšèŠćžèŒ‰ $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'ćŸžç€èŠœć™šæ‹–æ”Ÿæˆ–èČŒäžŠæȘ”æĄˆ', // from v2.1 added 30.05.2012 'dropPasteFiles' : '拖攟æȘ”æĄˆæˆ–ćŸžć‰ȘèČŒç°żèČŒäžŠ URL æˆ–ćœ–ç‰‡è‡łæ­€', // from v2.1 added 07.04.2014 'encoding' : 'ç·šçąŒ', // from v2.1 added 19.12.2014 'locale' : 'èȘžçł»', // from v2.1 added 19.12.2014 'searchTarget' : 'ç›źæš™: $1', // from v2.1 added 22.5.2015 'searchMime' : 'æ čæ“šèŒžć…„çš„ MIME éĄžćž‹æœć°‹', // from v2.1 added 22.5.2015 'owner' : '擁有者', // from v2.1 added 20.6.2015 'group' : '矀甄', // from v2.1 added 20.6.2015 'other' : '慶他', // from v2.1 added 20.6.2015 'execute' : 'ćŸ·èĄŒ', // from v2.1 added 20.6.2015 'perm' : 'æŹŠé™', // from v2.1 added 20.6.2015 'mode' : 'æšĄćŒ', // from v2.1 added 20.6.2015 'emptyFolder' : 'èł‡æ–™ć€Ÿæ˜Żç©ș的', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'èł‡æ–™ć€Ÿæ˜Żç©ș的\\A æ‹–æ›łä»„ćąžćŠ é …ç›ź', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'èł‡æ–™ć€Ÿæ˜Żç©ș的\\A é•·æŒ‰ä»„ćąžćŠ é …ç›ź', // from v2.1.6 added 30.12.2015 'quality' : '擁èłȘ', // from v2.1.6 added 5.1.2016 'autoSync' : 'è‡Șć‹•ćŒæ­„', // from v2.1.6 added 10.1.2016 'moveUp' : '䞊移', // from v2.1.6 added 18.1.2016 'getLink' : 'ć–ćŸ— URL 連甐', // from v2.1.7 added 9.2.2016 'selectedItems' : '遾揖的項盼 ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'èł‡æ–™ć€Ÿ ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'ć…èš±é›ąç·šć­˜ć–', // from v2.1.10 added 3.25.2016 'reAuth' : 'é‡æ–°é©—è­‰æŹŠé™', // from v2.1.10 added 3.25.2016 'nowLoading' : 'æ­ŁćœšèŒ‰ć…„...', // from v2.1.12 added 4.26.2016 'openMulti' : 'é–‹ć•Ÿć€šć€‹æȘ”æĄˆ', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'çąșćźšèŠćœšç€èŠœć™šé–‹ć•Ÿ $1 怋æȘ”æĄˆć—Ž?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'ćœšæœć°‹ç›źæš™äž­çš„æœć°‹ç”æžœæ˜Żç©ș的.', // from v2.1.12 added 5.16.2016 'editingFile' : 'æ­Łćœšç·šèŒŻæȘ”æĄˆ.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'ć·±éžć– $1 怋項盼.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'ć‰ȘèČŒç°żèŁĄæœ‰ $1 怋項盼.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'ćąžé‡æœć°‹ćȘ䟆è‡Șç›źć‰èŠ–ćœ–.', // from v2.1.13 added 6.30.2016 'reinstate' : 'æąćŸ©ćŽŸç‹€', // from v2.1.15 added 3.8.2016 'complete' : '$1ćźŒæˆ', // from v2.1.15 added 21.8.2016 'contextmenu' : 'æƒ…ćąƒéžć–ź', // from v2.1.15 added 9.9.2016 'pageTurning' : 'æ­Łćœšæ›é ', // from v2.1.15 added 10.9.2016 'volumeRoots' : '磁籟æ č盼錄', // from v2.1.16 added 16.9.2016 'reset' : '重蚭', // from v2.1.16 added 1.10.2016 'bgcolor' : 'èƒŒæ™Żé »è‰Č', // from v2.1.16 added 1.10.2016 'colorPicker' : '顏è‰Čéžæ“‡ć™š', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px ç¶Čæ Œ', // from v2.1.16 added 4.10.2016 'enabled' : '敟甹', // from v2.1.16 added 4.10.2016 'disabled' : '恜甹', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'ç›źć‰èŠ–ćœ–çš„æœć°‹ç”æžœæ˜Żç©ș的.\\A按 [Enter] æ“Žć€§æœć°‹ç›źæš™.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'ç›źć‰èŠ–ćœ–äž­çš„çŹŹäž€ć€‹ć­—æŻçš„æœçŽąç”æžœæ˜Żç©ș的。', // from v2.1.23 added 24.3.2017 'textLabel' : 'æ–‡ć­—æš™ç€ș', // from v2.1.17 added 13.10.2016 'minsLeft' : '扩䞋 $1 戆鐘', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'ä»„éžæ“‡çš„ç·šçąŒé‡æ–°é–‹ć•Ÿ', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'ä»„éžæ“‡çš„ç·šçąŒć„Č歘', // from v2.1.19 added 2.12.2016 'selectFolder' : 'éžæ“‡èł‡æ–™ć€Ÿ', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'éŠ–ć­—æŻæœçŽą', // from v2.1.23 added 24.3.2017 'presets' : 'é çœź', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : '有ć€Șć€šé …ç›źïŒŒæ‰€ä»„äžèƒœäžŸć…„ćžƒćœŸæĄ¶ă€‚', // from v2.1.25 added 9.6.2017 'TextArea' : 'æ–‡ć­—ć€ćŸŸ', // from v2.1.25 added 14.6.2017 'folderToEmpty' : '$1" èł‡æ–™ć€Ÿæ˜Żç©ș的', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : '"$1" èł‡æ–™ć€Ÿäž­æČ’æœ‰ä»»äœ•é …ç›ź', // from v2.1.25 added 22.6.2017 'preference' : 'ćć„œ', // from v2.1.26 added 28.6.2017 'language' : 'èȘžèš€èš­çœź', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'ćˆć§‹ćŒ–äżć­˜ćœšæ­€ç€èŠœć™šäž­çš„èš­çœź', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'ć·„ć…·æŹ„èš­çœź', // from v2.1.27 added 2.8.2017 'charsLeft' : '... 扩䞋 $1 怋歗慃', // from v2.1.29 added 30.8.2017 'linesLeft' : '... 扩䞋 $1 èĄŒ', // from v2.1.52 added 16.1.2020 'sum' : '瞜蚈', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'çČ—ç•„çš„æȘ”æĄˆć€§ć°', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'æ»‘éŒ æ‡žćœćœšć°è©±æĄ†ć…§', // from v2.1.30 added 2.11.2017 'select' : '遞擇', // from v2.1.30 added 23.11.2017 'selectAction' : '遞擇æȘ”æĄˆæ™‚çš„ć‹•äœœ', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'äœżç”šäžŠæŹĄçš„ç·šèŒŻć™šé–‹ć•Ÿ', // from v2.1.30 added 23.11.2017 'selectinvert' : 'ćć‘éžæ“‡', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'çąșćźšèŠé‡æ–°ć‘œć $1 ç‚ș $2 ć—ŽïŒŸ
      æ­€ć‹•äœœç„Ąæł•æąćŸ©ïŒ', // from v2.1.31 added 4.12.2017 'batchRename' : 'æ‰čæŹĄé‡æ–°ć‘œć', // from v2.1.31 added 8.12.2017 'plusNumber' : 'ćąžćŠ æ•žé‡', // from v2.1.31 added 8.12.2017 'asPrefix' : 'æ–°ćąžć‰èŒŸ', // from v2.1.31 added 8.12.2017 'asSuffix' : 'æ–°ćąžćŸŒèŒŸ', // from v2.1.31 added 8.12.2017 'changeExtention' : 'èźŠæ›ŽçŻ„ćœ', // from v2.1.31 added 8.12.2017 'columnPref' : ' ćˆ—èš­çœź(ćˆ—èĄšæȘąèŠ–)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'æ‰€æœ‰äżźæ”čć°‡ç«‹ćłć„—ç”šćˆ°æȘ”æĄˆ.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'æ‰€æœ‰äżźæ”čćœšćžèŒ‰äč‹ć‰äžæœƒæœ‰èźŠćŒ–.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'ćź‰èŁćœšè©ČçŁçąŸä»„äž‹çš„çŁçąŸäčŸæœƒćžèŒ‰ïŒŒäœ çąșćźšèŠćžèŒ‰ć—ŽïŒŸ', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'éžæ“‡èł‡èšŠ', // from v2.1.33 added 7.3.2018 'hashChecker' : '饯ç€șæȘ”æĄˆé›œæčŠçź—æł•', // from v2.1.33 added 10.3.2018 'infoItems' : 'æȘ”æĄˆèł‡èšŠïŒˆéžæ“‡èł‡èšŠéąæżïŒ‰', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'ć†æŹĄé»žæ“ŠćŸŒé€€ć‡ș', // from v2.1.38 added 1.4.2018 'toolbar' : 'ć·„ć…·ćˆ—', // from v2.1.38 added 4.4.2018 'workspace' : 'ć·„äœœć€', // from v2.1.38 added 4.4.2018 'dialog' : 'ć°è©±æĄ†', // from v2.1.38 added 4.4.2018 'all' : '慹郹', // from v2.1.38 added 4.4.2018 'iconSize' : '朖ç€șć°ș毞 (朖ç€ș饯ç€ș)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'é–‹ć•Ÿæœ€ć€§ćŒ–ç·šèŒŻèŠ–çȘ—', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'ç”±æ–Œäœżç”š API èœ‰æ›ćŠŸèƒœç›źć‰ç„Ąæł•äœżç”šïŒŒè«‹ćˆ°ç¶Č站䞊蜉換.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'èœ‰æ›ćŸŒïŒŒćż…é ˆäžŠć‚łæȘ”æĄˆç¶Čć€æˆ–äž€ć€‹äž‹èŒ‰çš„æȘ”æĄˆïŒŒä»„äżć­˜èœ‰æ›ćŸŒçš„æȘ”æĄˆ.', //from v2.1.40 added 8.7.2018 'convertOn' : '朹 $1 ç¶Č站䞊蜉換', // from v2.1.40 added 10.7.2018 'integrations' : 'æ•Žćˆ', // from v2.1.40 added 11.7.2018 'integrationWith' : 'elFinder æ•Žćˆä»„äž‹ć€–éƒšæœć‹™ïŒŒäœżç”šć‰è«‹ć…ˆæȘąæŸ„äœżç”šæąæŹŸă€éš±ç§æŹŠæ”żç­–ç­‰.', // from v2.1.40 added 11.7.2018 'showHidden' : '饯ç€șć·Čéš±è—çš„é …ç›ź', // from v2.1.41 added 24.7.2018 'hideHidden' : '隱藏ć·Čéš±è—çš„é …ç›ź', // from v2.1.41 added 24.7.2018 'toggleHidden' : '饯ç€ș/隱藏ć·Čéš±è—çš„é …ç›ź', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'ć…èš±"新æȘ”æĄˆ"äœżç”šçš„æȘ”æĄˆéĄžćž‹', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'æ–‡ć­—æȘ”æĄˆéĄžćž‹', // from v2.1.41 added 7.8.2018 'add' : 'æ–°ćąž', // from v2.1.41 added 7.8.2018 'theme' : 'äž»éĄŒ', // from v2.1.43 added 19.10.2018 'default' : '預蚭', // from v2.1.43 added 19.10.2018 'description' : 'æèż°', // from v2.1.43 added 19.10.2018 'website' : 'ç¶Č站', // from v2.1.43 added 19.10.2018 'author' : '䜜者', // from v2.1.43 added 19.10.2018 'email' : '俥矱', // from v2.1.43 added 19.10.2018 'license' : 'èš±ćŻè­‰', // from v2.1.43 added 19.10.2018 'exportToSave' : 'æȘ”æĄˆç„Ąæł•ć­˜æȘ”ç‚ș避慍éșć€±ç·šèŒŻèł‡æ–™ïŒŒéœ€èŠć°Žć‡șćˆ°äœ çš„é›»è…Š.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': '連çșŒé»žæ“Šä»„遞擇', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'äœżç”šć…šèžąćč•æšĄćŒ', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'æœȘ矄', 'kindRoot' : '磁籟æ č盼錄', // from v2.1.16 added 16.10.2016 'kindFolder' : 'èł‡æ–™ć€Ÿ', 'kindSelects' : '遞擇', // from v2.1.29 added 29.8.2017 'kindAlias' : 'ćˆ«ć', 'kindAliasBroken' : 'æŻ€æçš„ćˆ«ć', // applications 'kindApp' : 'æ‡‰ç”šçš‹ćŒ', 'kindPostscript' : 'Postscript 文件', 'kindMsOffice' : 'Microsoft Office 文件', 'kindMsWord' : 'Microsoft Word 文件', 'kindMsExcel' : 'Microsoft Excel 文件', 'kindMsPP' : 'Microsoft Powerpoint ç°Ąć ±', 'kindOO' : 'Open Office 文件', 'kindAppFlash' : 'Flash æ‡‰ç”šçš‹ćŒ', 'kindPDF' : 'ćŻæ”œćŒæ–‡ä»¶æ ŒćŒ(PDF)', 'kindTorrent' : 'Bittorrent æȘ”æĄˆ', 'kind7z' : '7z 棓羼æȘ”', 'kindTAR' : 'TAR 棓羼æȘ”', 'kindGZIP' : 'GZIP 棓羼æȘ”', 'kindBZIP' : 'BZIP 棓羼æȘ”', 'kindXZ' : 'XZ 棓羼æȘ”', 'kindZIP' : 'ZIP 棓羼æȘ”', 'kindRAR' : 'RAR 棓羼æȘ”', 'kindJAR' : 'Java JAR æȘ”æĄˆ', 'kindTTF' : 'True Type ć­—é«”', 'kindOTF' : 'Open Type ć­—é«”', 'kindRPM' : 'RPM ć°èŁæȘ”', // texts 'kindText' : 'æ–‡ć­—æȘ”æĄˆ', 'kindTextPlain' : 'çŽ”æ–‡ć­—', 'kindPHP' : 'PHP ćŽŸć§‹çąŒ', 'kindCSS' : 'éšŽć±€æšŁćŒèĄš(CSS)', 'kindHTML' : 'HTML 文件', 'kindJS' : 'Javascript ćŽŸć§‹çąŒ', 'kindRTF' : 'ćŻŒæ–‡æœŹ(RTF)', 'kindC' : 'C ćŽŸć§‹çąŒ', 'kindCHeader' : 'C æš™é ­ćŽŸć§‹çąŒ', 'kindCPP' : 'C++ ćŽŸć§‹çąŒ', 'kindCPPHeader' : 'C++ æš™é ­ćŽŸć§‹çąŒ', 'kindShell' : 'Unix Shell è„šæœŹ', 'kindPython' : 'Python ćŽŸć§‹çąŒ', 'kindJava' : 'Java ćŽŸć§‹çąŒ', 'kindRuby' : 'Ruby ćŽŸć§‹çąŒ', 'kindPerl' : 'Perl ćŽŸć§‹çąŒ', 'kindSQL' : 'SQL ćŽŸć§‹çąŒ', 'kindXML' : 'XML 文件', 'kindAWK' : 'AWK ćŽŸć§‹çąŒ', 'kindCSV' : 'é€—è™Ÿćˆ†éš”ć€Œ(CSV)', 'kindDOCBOOK' : 'Docbook XML 文件', 'kindMarkdown' : 'Markdown æ–‡æœŹ', // added 20.7.2015 // images 'kindImage' : '朖片', 'kindBMP' : 'BMP 朖片', 'kindJPEG' : 'JPEG 朖片', 'kindGIF' : 'GIF 朖片', 'kindPNG' : 'PNG 朖片', 'kindTIFF' : 'TIFF 朖片', 'kindTGA' : 'TGA 朖片', 'kindPSD' : 'Adobe Photoshop 朖片', 'kindXBITMAP' : 'X bitmap 朖片', 'kindPXM' : 'Pixelmator 朖片', // media 'kindAudio' : 'éŸłèšŠ', 'kindAudioMPEG' : 'MPEG éŸłèšŠ', 'kindAudioMPEG4' : 'MPEG-4 éŸłèšŠ', 'kindAudioMIDI' : 'MIDI éŸłèšŠ', 'kindAudioOGG' : 'Ogg Vorbis éŸłèšŠ', 'kindAudioWAV' : 'WAV éŸłèšŠ', 'AudioPlaylist' : 'MP3 æ’­æ”Ÿæž…ć–ź', 'kindVideo' : 'ćœ±ç‰‡', 'kindVideoDV' : 'DV ćœ±ç‰‡', 'kindVideoMPEG' : 'MPEG ćœ±ç‰‡', 'kindVideoMPEG4' : 'MPEG-4 ćœ±ç‰‡', 'kindVideoAVI' : 'AVI ćœ±ç‰‡', 'kindVideoMOV' : 'Quick Time ćœ±ç‰‡', 'kindVideoWM' : 'Windows Media ćœ±ç‰‡', 'kindVideoFlash' : 'Flash ćœ±ç‰‡', 'kindVideoMKV' : 'Matroska ćœ±ç‰‡', 'kindVideoOGG' : 'Ogg ćœ±ç‰‡' } }; })); application/library/js/i18n/elfinder.hr.js000064400000050306147577724760014502 0ustar00/** * hr translation * @version 2016-04-18 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.hr = { translator : '', language : 'Croatian', direction : 'ltr', dateFormat : 'd.m.Y. H:i', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM messages : { /********************************** errors **********************************/ 'error' : 'GreĆĄka', 'errUnknown' : 'Nepoznata greĆĄka.', 'errUnknownCmd' : 'Nepoznata naredba.', 'errJqui' : 'Kriva jQuery UI konfiguracija. Selectable, draggable, i droppable komponente moraju biti uključene.', 'errNode' : 'elFinder zahtjeva DOM element da bi bio stvoren.', 'errURL' : 'Krivo konfiguriran elFinder. Opcija URL nije postavljena.', 'errAccess' : 'Zabranjen pristup.', 'errConnect' : 'Nije moguće spajanje na server.', 'errAbort' : 'Prekinuta veza.', 'errTimeout' : 'Veza je istekla.', 'errNotFound' : 'Server nije pronađen.', 'errResponse' : 'Krivi odgovor servera.', 'errConf' : 'Krivo konfiguriran server', 'errJSON' : 'Nije instaliran PHP JSON modul.', 'errNoVolumes' : 'Disk nije dostupan.', 'errCmdParams' : 'Krivi parametri za naredbu "$1".', 'errDataNotJSON' : 'Podaci nisu tipa JSON.', 'errDataEmpty' : 'Nema podataka.', 'errCmdReq' : 'Backend request requires command name.', 'errOpen' : 'Ne mogu otvoriti "$1".', 'errNotFolder' : 'Objekt nije mapa.', 'errNotFile' : 'Objekt nije dokument.', 'errRead' : 'Ne mogu pročitati "$1".', 'errWrite' : 'Ne mogu pisati u "$1".', 'errPerm' : 'Pristup zabranjen', 'errLocked' : '"$1" je zaključan i ne moĆŸe biti preimenovan, premjeĆĄten ili obrisan.', 'errExists' : 'Dokument s imenom "$1" već postoji.', 'errInvName' : 'Krivo ime dokumenta', 'errFolderNotFound' : 'Mapa nije pronađena', 'errFileNotFound' : 'Dokument nije pronađen', 'errTrgFolderNotFound' : 'Mapa "$1" nije pronađena', 'errPopup' : 'Browser prevented opening popup window. To open file enable it in browser options.', 'errMkdir' : 'Ne mogu napraviti mapu "$1".', 'errMkfile' : 'Ne mogu napraviti dokument "$1".', 'errRename' : 'Ne mogu preimenovati "$1".', 'errCopyFrom' : 'Kopiranje s diska "$1" nije dozvoljeno.', 'errCopyTo' : 'Kopiranje na disk "$1" nije dozvoljeno.', 'errMkOutLink' : 'Unable to create a link to outside the volume root.', // from v2.1 added 03.10.2015 'errUpload' : 'GreĆĄka pri prebacivanju dokumenta na server.', // old name - errUploadCommon 'errUploadFile' : 'Ne mogu prebaciti "$1" na server', // old name - errUpload 'errUploadNoFiles' : 'Nema dokumenata za prebacivanje na server', 'errUploadTotalSize' : 'Dokumenti prelaze maksimalnu dopuĆĄtenu veličinu.', // old name - errMaxSize 'errUploadFileSize' : 'Dokument je prevelik.', // old name - errFileMaxSize 'errUploadMime' : 'Ovaj tip dokumenta nije dopuĆĄten.', 'errUploadTransfer' : '"$1" greĆĄka pri prebacivanju', 'errUploadTemp' : 'Ne mogu napraviti privremeni dokument za prijenos na server', // from v2.1 added 26.09.2015 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', // new 'errReplace' : 'Ne mogu zamijeniti "$1".', 'errSave' : 'Ne mogu spremiti "$1".', 'errCopy' : 'Ne mogu kopirati "$1".', 'errMove' : 'Ne mogu premjestiti "$1".', 'errCopyInItself' : 'Ne mogu kopirati "$1" na isto mjesto.', 'errRm' : 'Ne mogu ukloniti "$1".', 'errRmSrc' : 'Ne mogu ukloniti izvorni kod.', 'errExtract' : 'Unable to extract files from "$1".', 'errArchive' : 'Unable to create archive.', 'errArcType' : 'Unsupported archive type.', 'errNoArchive' : 'File is not archive or has unsupported archive type.', 'errCmdNoSupport' : 'Backend does not support this command.', 'errReplByChild' : 'The folder "$1" can\'t be replaced by an item it contains.', 'errArcSymlinks' : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012 'errArcMaxSize' : 'Archive files exceeds maximum allowed size.', 'errResize' : 'Unable to resize "$1".', 'errResizeDegree' : 'Invalid rotate degree.', // added 7.3.2013 'errResizeRotate' : 'Unable to rotate image.', // added 7.3.2013 'errResizeSize' : 'Invalid image size.', // added 7.3.2013 'errResizeNoChange' : 'Image size not changed.', // added 7.3.2013 'errUsupportType' : 'Unsupported file type.', 'errNotUTF8Content' : 'File "$1" is not in UTF-8 and cannot be edited.', // added 9.11.2011 'errNetMount' : 'Unable to mount "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Unsupported protocol.', // added 17.04.2012 'errNetMountFailed' : 'Mount failed.', // added 17.04.2012 'errNetMountHostReq' : 'Host required.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', 'errNetUnMount' : 'Unable to unmount', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Try Google Chrome, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Re-authorization is required.', // from v2.1.10 added 3.24.2016 /******************************* commands names ********************************/ 'cmdarchive' : 'Arhiviraj', 'cmdback' : 'Nazad', 'cmdcopy' : 'Kopiraj', 'cmdcut' : 'IzreĆŸi', 'cmddownload' : 'Preuzmi', 'cmdduplicate' : 'Dupliciraj', 'cmdedit' : 'Uredi dokument', 'cmdextract' : 'Raspakiraj arhivu', 'cmdforward' : 'Naprijed', 'cmdgetfile' : 'Odaberi dokumente', 'cmdhelp' : 'O programu', 'cmdhome' : 'Početak', 'cmdinfo' : 'Info', 'cmdmkdir' : 'Nova mapa', 'cmdmkdirin' : 'U novu mapu', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nova фаĐčĐ»', 'cmdopen' : 'Otvori', 'cmdpaste' : 'Zalijepi', 'cmdquicklook' : 'Pregled', 'cmdreload' : 'Ponovo učitaj', 'cmdrename' : 'Preimenuj', 'cmdrm' : 'ObriĆĄi', 'cmdsearch' : 'Pronađi', 'cmdup' : 'Roditeljska mapa', 'cmdupload' : 'Prebaci dokumente na server', 'cmdview' : 'Pregledaj', 'cmdresize' : 'Promjeni veličinu i rotiraj', 'cmdsort' : 'Sortiraj', 'cmdnetmount' : 'Spoji se na mreĆŸni disk', // added 18.04.2012 'cmdnetunmount': 'Odspoji disk', // from v2.1 added 30.04.2012 'cmdplaces' : 'To Places', // added 28.12.2014 'cmdchmod' : 'Change mode', // from v2.1 added 20.6.2015 'cmdopendir' : 'Otvori mapu', // from v2.1 added 13.1.2016 /*********************************** buttons ***********************************/ 'btnClose' : 'Zatvori', 'btnSave' : 'Spremi', 'btnRm' : 'Ukloni', 'btnApply' : 'Primjeni', 'btnCancel' : 'Odustani', 'btnNo' : 'Ne', 'btnYes' : 'Da', 'btnMount' : 'Mount', // added 18.04.2012 'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012 'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Convert', // from v2.1 added 08.04.2014 'btnCwd' : 'Here', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'All', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Type', // from v2.1 added 22.5.2015 'btnFileName':'Filename', // from v2.1 added 22.5.2015 'btnSaveClose': 'Spremi i zatvori', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 /******************************** notifications ********************************/ 'ntfopen' : 'Otvori mapu', 'ntffile' : 'Otvori dokument', 'ntfreload' : 'Ponovo učitaj sadrĆŸaj mape', 'ntfmkdir' : 'Radim mapu', 'ntfmkfile' : 'Radim dokumente', 'ntfrm' : 'BriĆĄem dokumente', 'ntfcopy' : 'Kopiram dokumente', 'ntfmove' : 'Mičem dokumente', 'ntfprepare' : 'Priprema za kopiranje dokumenata', 'ntfrename' : 'Preimenuj dokumente', 'ntfupload' : 'Pohranjujem dokumente na server', 'ntfdownload' : 'Preuzimam dokumente', 'ntfsave' : 'Spremi dokumente', 'ntfarchive' : 'Radim arhivu', 'ntfextract' : 'Extracting files from archive', 'ntfsearch' : 'TraĆŸim dokumente', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Doing something', 'ntfloadimg' : 'Učitavam sliku', 'ntfnetmount' : 'Mounting network volume', // added 18.04.2012 'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012 'ntfdim' : 'Acquiring image dimension', // added 20.05.2013 'ntfreaddir' : 'Reading folder infomation', // from v2.1 added 01.07.2013 'ntfurl' : 'Getting URL of link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Changing file mode', // from v2.1 added 20.6.2015 'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Creating a file for download', // from v2.1.7 added 23.1.2016 /************************************ dates **********************************/ 'dateUnknown' : 'nepoznato', 'Today' : 'Danas', 'Yesterday' : 'Jučer', 'msJan' : 'Sij', 'msFeb' : 'Vel', 'msMar' : 'OĆŸu', 'msApr' : 'Tra', 'msMay' : 'Svi', 'msJun' : 'Lip', 'msJul' : 'Srp', 'msAug' : 'Kol', 'msSep' : 'Ruj', 'msOct' : 'Lis', 'msNov' : 'Stu', 'msDec' : 'Pro', 'January' : 'Siječanj', 'February' : 'Veljača', 'March' : 'OĆŸujak', 'April' : 'Travanj', 'May' : 'Svibanj', 'June' : 'Lipanj', 'July' : 'Srpanj', 'August' : 'Kolovoz', 'September' : 'Rujan', 'October' : 'Listopad', 'November' : 'Studeni', 'December' : 'Prosinac', 'Sunday' : 'Nedjelja', 'Monday' : 'Ponedjeljak', 'Tuesday' : 'Utorak', 'Wednesday' : 'Srijeda', 'Thursday' : 'Četvrtak', 'Friday' : 'Petak', 'Saturday' : 'Subota', 'Sun' : 'Ned', 'Mon' : 'Pon', 'Tue' : 'Uto', 'Wed' : 'Sri', 'Thu' : 'Čet', 'Fri' : 'Pet', 'Sat' : 'Sub', /******************************** sort variants ********************************/ 'sortname' : 'po imenu', 'sortkind' : 'po tipu', 'sortsize' : 'po veličini', 'sortdate' : 'po datumu', 'sortFoldersFirst' : 'Prvo mape', /********************************** new items **********************************/ 'untitled file.txt' : 'NoviDokument.txt', // added 10.11.2015 'untitled folder' : 'NovaMapa', // added 10.11.2015 'Archive' : 'NovaArhiva', // from v2.1 added 10.11.2015 /********************************** messages **********************************/ 'confirmReq' : 'Potvrda', 'confirmRm' : 'Jeste li sigurni?', 'confirmRepl' : 'Zamijeni stare dokumente novima?', 'confirmConvUTF8' : 'Not in UTF-8
      Convert to UTF-8?
      Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014 'confirmNotSave' : 'It has been modified.
      Losing work if you do not save changes.', // from v2.1 added 15.7.2015 'apllyAll' : 'Primjeni na sve ', 'name' : 'Ime', 'size' : 'Veličina', 'perms' : 'Dozvole', 'modify' : 'Modificiran', 'kind' : 'Tip', 'read' : 'čitanje', 'write' : 'pisanje', 'noaccess' : 'bez pristupa', 'and' : 'i', 'unknown' : 'nepoznato', 'selectall' : 'Odaberi sve', 'selectfiles' : 'Odaberi dokument(e)', 'selectffile' : 'Odaberi prvi dokument', 'selectlfile' : 'Odaberi zadnji dokument', 'viewlist' : 'Lista', 'viewicons' : 'Ikone', 'places' : 'Mjesta', 'calc' : 'Računaj', 'path' : 'Put', 'aliasfor' : 'Drugo ime za', 'locked' : 'Zaključano', 'dim' : 'Dimenzije', 'files' : 'Dokumenti', 'folders' : 'Mape', 'items' : 'Items', 'yes' : 'da', 'no' : 'ne', 'link' : 'poveznica', 'searcresult' : 'Rezultati pretrage', 'selected' : 'selected items', 'about' : 'Info', 'shortcuts' : 'Prečaci', 'help' : 'Pomoć', 'webfm' : 'Web file manager', 'ver' : 'Verzija', 'protocolver' : 'protocol version', 'homepage' : 'Project home', 'docs' : 'Dokumentacija', 'github' : 'Fork us on Github', 'twitter' : 'Follow us on twitter', 'facebook' : 'Join us on facebook', 'team' : 'Tim', 'chiefdev' : 'glavni developer', 'developer' : 'developer', 'contributor' : 'contributor', 'maintainer' : 'maintainer', 'translator' : 'translator', 'icons' : 'Ikone', 'dontforget' : 'and don\'t forget to take your towel', 'shortcutsof' : 'Prečaci isključeni', 'dropFiles' : 'Ovdje ispusti dokumente', 'or' : 'ili', 'selectForUpload' : 'Odaberi dokumente koje prebacujeĆĄ na server', 'moveFiles' : 'Premjesti dokumente', 'copyFiles' : 'Kopiraj dokumente', 'rmFromPlaces' : 'Remove from places', 'aspectRatio' : 'Aspect ratio', 'scale' : 'Skaliraj', 'width' : 'Ć irina', 'height' : 'Visina', 'resize' : 'Resize', 'crop' : 'Crop', 'rotate' : 'Rotate', 'rotate-cw' : 'Rotate 90 degrees CW', 'rotate-ccw' : 'Rotate 90 degrees CCW', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'User', // added 18.04.2012 'pass' : 'Password', // added 18.04.2012 'confirmUnmount' : 'Are you unmount $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Drop or Paste files and URLs here', // from v2.1 added 07.04.2014 'encoding' : 'Encoding', // from v2.1 added 19.12.2014 'locale' : 'Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'Target: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Search by input MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Vlasnik', // from v2.1 added 20.6.2015 'group' : 'Grupa', // from v2.1 added 20.6.2015 'other' : 'Other', // from v2.1 added 20.6.2015 'execute' : 'IzvrĆĄi', // from v2.1 added 20.6.2015 'perm' : 'Dozvole', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'Mapa je prazna', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Mapa je prazna\\A Dovuci dokumente koje ĆŸeliĆĄ dodati', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Mapa je prazna\\A Pritisni dugo za dodavanje dokumenata', // from v2.1.6 added 30.12.2015 'quality' : 'Kvaliteta', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto sync', // from v2.1.6 added 10.1.2016 'moveUp' : 'Gore', // from v2.1.6 added 18.1.2016 'getLink' : 'Get URL link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Selected items ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Folder ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Allow offline access', // from v2.1.10 added 3.25.2016 'reAuth' : 'To re-authenticate', // from v2.1.10 added 3.25.2016 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Unknown', 'kindFolder' : 'Mapa', 'kindAlias' : 'Drugo ime', 'kindAliasBroken' : 'Broken alias', // applications 'kindApp' : 'Aplikacija', 'kindPostscript' : 'Postscript document', 'kindMsOffice' : 'Microsoft Office dokument', 'kindMsWord' : 'Microsoft Word dokument', 'kindMsExcel' : 'Microsoft Excel dokument', 'kindMsPP' : 'Microsoft Powerpoint prezentacija', 'kindOO' : 'Open Office dokument', 'kindAppFlash' : 'Flash aplikacija', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent dokument', 'kind7z' : '7z arhiva', 'kindTAR' : 'TAR arhiva', 'kindGZIP' : 'GZIP arhiva', 'kindBZIP' : 'BZIP arhiva', 'kindXZ' : 'XZ arhiva', 'kindZIP' : 'ZIP arhiva', 'kindRAR' : 'RAR arhiva', 'kindJAR' : 'Java JAR dokument', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM paket', // texts 'kindText' : 'Tekst arhiva', 'kindTextPlain' : 'Obični tekst', 'kindPHP' : 'PHP source', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML document', 'kindJS' : 'Javascript source', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C source', 'kindCHeader' : 'C header source', 'kindCPP' : 'C++ source', 'kindCPPHeader' : 'C++ header source', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python source', 'kindJava' : 'Java source', 'kindRuby' : 'Ruby source', 'kindPerl' : 'Perl skripta', 'kindSQL' : 'SQL source', 'kindXML' : 'XML dokument', 'kindAWK' : 'AWK source', 'kindCSV' : 'vrijednosti razdvojene zarezom', 'kindDOCBOOK' : 'Docbook XML dokument', 'kindMarkdown' : 'Markdown tekst', // added 20.7.2015 // images 'kindImage' : 'slika', 'kindBMP' : 'BMP slika', 'kindJPEG' : 'JPEG slika', 'kindGIF' : 'GIF slika', 'kindPNG' : 'PNG slika', 'kindTIFF' : 'TIFF slika', 'kindTGA' : 'TGA slika', 'kindPSD' : 'Adobe Photoshop slika', 'kindXBITMAP' : 'X bitmap slika', 'kindPXM' : 'Pixelmator slika', // media 'kindAudio' : 'Audio', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 lista', 'kindVideo' : 'Video ', 'kindVideoDV' : 'DV video', 'kindVideoMPEG' : 'MPEG video', 'kindVideoMPEG4' : 'MPEG-4 video', 'kindVideoAVI' : 'AVI video', 'kindVideoMOV' : 'Quick Time video', 'kindVideoWM' : 'Windows Media video', 'kindVideoFlash' : 'Flash video', 'kindVideoMKV' : 'Matroska video', 'kindVideoOGG' : 'Ogg video' } }; })); application/library/js/i18n/elfinder.fo.js000064400000046357147577724760014510 0ustar00/** * Faroese translation * @author Marius Hammer * @version 2015-12-03 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.fo = { translator : 'Marius Hammer <marius@vrg.fo>', language : 'Faroese', direction : 'ltr', dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM messages : { /********************************** errors **********************************/ 'error' : 'Villa Ă­komin', 'errUnknown' : 'Ókend villa.', 'errUnknownCmd' : 'Ókend boĂ°.', 'errJqui' : 'Ógildig jQuery UI konfiguratiĂłn. VĂŠlbĂŠrar, sum kunnu hĂĄlast runt og kunnu sleppast skulu takast viĂ°.', 'errNode' : 'elFinder krevur DOM Element stovna.', 'errURL' : 'Ugyldig elFinder konfiguration! URL stilling er ikki ĂĄsett.', 'errAccess' : 'Atgongd nokta.', 'errConnect' : 'Far ikki samband viĂ° backend.', 'errAbort' : 'Sambandi avbrotiĂ°.', 'errTimeout' : 'Sambandi broti av.', 'errNotFound' : 'Backend ikki funniĂ°.', 'errResponse' : 'Ógildugt backend svar.', 'errConf' : 'Ógildugt backend konfiguratiĂłn.', 'errJSON' : 'PHP JSON moduliĂ° er ikki innstallera.', 'errNoVolumes' : 'Lesiligar mappur er ikki atkomulig.', 'errCmdParams' : 'Ógildigar stillingar fyri kommando "$1".', 'errDataNotJSON' : 'DĂĄta er ikki JSON.', 'errDataEmpty' : 'DĂĄta er tĂžmt.', 'errCmdReq' : 'Backend krevur eitt kommando navn.', 'errOpen' : 'Kundi ikki opna "$1".', 'errNotFolder' : 'Luturin er ikki ein mappa.', 'errNotFile' : 'Luturin er ikki ein fĂ­la.', 'errRead' : 'Kundi ikki lesa til "$1".', 'errWrite' : 'Kundi ikki skriva til "$1".', 'errPerm' : 'Atgongd nokta.', 'errLocked' : '"$1" er lĂžst og kann ikki umdoybast, flytast ella strikast.', 'errExists' : 'TaĂ° finst longu ein fĂ­la viĂ° navn "$1".', 'errInvName' : 'Ógildugt fĂ­la navn.', 'errFolderNotFound' : 'Mappa ikki funnin.', 'errFileNotFound' : 'FĂ­la ikki funnin.', 'errTrgFolderNotFound' : 'Mappan "$1" bleiv ikke funnin.', 'errPopup' : 'Kagin forĂ°aĂ°i Ă­ at opna eitt popup-vindeyga. Fyri at opna fĂ­luna, aktivera popup-vindeygu Ă­ tĂ­num kaga stillingum.', 'errMkdir' : '\'Kundi ikki stovna mappu "$1".', 'errMkfile' : 'Kundi ikki stovna mappu "$1".', 'errRename' : 'Kundi ikki umdoyba "$1".', 'errCopyFrom' : 'Kopiering av fĂ­lum frĂĄ mappuni "$1" er ikke loyvt.', 'errCopyTo' : 'Kopiering av fĂ­lum til mappuna "$1" er ikke loyvt.', 'errMkOutLink' : 'Ikki fĂžrt fyri at stovna leinkju til uttanfyri \'volume\' rĂłt.', // from v2.1 added 03.10.2015 'errUpload' : 'Innlegginar feilur.', // old name - errUploadCommon 'errUploadFile' : 'Kundi ikki leggja "$1" inn.', // old name - errUpload 'errUploadNoFiles' : 'Ongar fĂ­lar funnir at leggja inn.', 'errUploadTotalSize' : 'DĂĄtain er stĂžrri enn mest loyvda stĂžddin.', // old name - errMaxSize 'errUploadFileSize' : 'FĂ­la er stĂžrri enn mest loyvda stĂžddin.', // old name - errFileMaxSize 'errUploadMime' : 'FĂ­lu slag ikki góðkent.', 'errUploadTransfer' : '"$1" innleggingar feilur.', 'errUploadTemp' : 'Ikki fĂžrt fyri at gera fyribils fĂ­lu fyri innlegging.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Lutur "$1" finst longu ĂĄ hesum staĂ° og can ikki skiftast Ășt av lutiĂ° av Þðrum slag.', // new 'errReplace' : 'Ikki fĂžrt fyri at erstattae "$1".', 'errSave' : 'Kundi ikki goyma "$1".', 'errCopy' : 'Kundi ikki kopiera "$1".', 'errMove' : 'Kundi ikki flyta "$1".', 'errCopyInItself' : 'Kundi ikki kopiera "$1" inn Ă­ seg sjĂĄlva.', 'errRm' : 'Kundi ikki strika "$1".', 'errRmSrc' : 'Ikki fĂžrt fyri at strika keldu fĂ­la(r).', 'errExtract' : 'Kundi ikki Ăștpakka fĂ­lar frĂĄ "$1".', 'errArchive' : 'Kundi ikki stovna arkiv.', 'errArcType' : 'Arkiv slagiĂ° er ikki stuĂ°la.', 'errNoArchive' : 'FĂ­lan er ikki eitt arkiv ella er ikki eitt stuĂ°la arkiva slag.', 'errCmdNoSupport' : 'Backend stuĂ°lar ikki hesi boĂ°.', 'errReplByChild' : 'appan "$1" kann ikki erstattast av einari vĂžru, hon inniheldur.', 'errArcSymlinks' : 'Av trygdarĂĄvum grundum, noktaĂ°i skipanin at pakka Ășt arkivir iĂ° innihalda symlinks ella fĂ­lur viĂ° nĂžvn iĂ° ikki eru loyvd.', // edited 24.06.2012 'errArcMaxSize' : 'Arkiv fĂ­lar fylla meir enn mest loyvda stĂžddin.', 'errResize' : 'Kundi ikki broyta stĂžddina ĂĄ "$1".', 'errResizeDegree' : 'Ógildugt roterings stig.', // added 7.3.2013 'errResizeRotate' : 'Ikki fĂžrt fyri at rotera mynd.', // added 7.3.2013 'errResizeSize' : 'Ógildug myndastĂždd.', // added 7.3.2013 'errResizeNoChange' : 'Mynda stĂždd ikki broytt.', // added 7.3.2013 'errUsupportType' : 'Ikki stuĂ°la fĂ­la slag.', 'errNotUTF8Content' : 'FĂ­lan "$1" er ikki Ă­ UTF-8 og kann ikki vera rĂŠttaĂ°.', // added 9.11.2011 'errNetMount' : 'Kundi ikki "mounta" "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Ikki stuĂ°la protokol.', // added 17.04.2012 'errNetMountFailed' : 'Mount miseydnaĂ°ist.', // added 17.04.2012 'errNetMountHostReq' : 'Host kravt.', // added 18.04.2012 'errSessionExpires' : 'TĂ­n seta er Ăștgingin vegna Ăłvirkniy.', 'errCreatingTempDir' : 'Ikki fĂžrt fyri at stovna fyribils fĂ­luskrĂĄ: "$1"', 'errFtpDownloadFile' : 'Ikki fĂžrt fyri at taka fĂ­lu niĂ°ur frĂĄ FTP: "$1"', 'errFtpUploadFile' : 'Ikki fĂžrt fyri at leggja fĂ­lu til FTP: "$1"', 'errFtpMkdir' : 'Ikki fĂžrt fyri at stovna fjar-fĂ­laskrĂĄ ĂĄ FTP: "$1"', 'errArchiveExec' : 'Villa Ă­komin undir arkiveran af fĂ­lar: "$1"', 'errExtractExec' : 'Villa Ă­komin undir Ăștpakking af fĂ­lum: "$1"', 'errNetUnMount' : 'Unable to unmount', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Kann ikki broytast til UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Royn Google Chrome, um tĂș ynskir at leggja mappu innn.', // from v2.1 added 26.6.2015 /******************************* commands names ********************************/ 'cmdarchive' : 'Stovna arkiv', 'cmdback' : 'Aftur\'', 'cmdcopy' : 'Kopier', 'cmdcut' : 'Klipp', 'cmddownload' : 'Tak niĂ°ur', 'cmdduplicate' : 'TvĂ­falda', 'cmdedit' : 'RĂŠtta fĂ­lu', 'cmdextract' : 'Pakka Ășt fĂ­lar Ășr arkiv', 'cmdforward' : 'Fram', 'cmdgetfile' : 'Vel fĂ­lar', 'cmdhelp' : 'Um hesa software', 'cmdhome' : 'Heim', 'cmdinfo' : 'FĂĄ upplĂœsingar', 'cmdmkdir' : 'NĂœggja mappu', 'cmdmkfile' : 'NĂœggja fĂ­lu', 'cmdopen' : 'Opna', 'cmdpaste' : 'Set inn', 'cmdquicklook' : 'ForsĂœning', 'cmdreload' : 'Les inn umaftur', 'cmdrename' : 'Umdoyp', 'cmdrm' : 'Strika', 'cmdsearch' : 'Finn fĂ­lar', 'cmdup' : 'Eitt stig upp', 'cmdupload' : 'Legg fĂ­lar inn', 'cmdview' : 'SĂ­ggj', 'cmdresize' : 'Tillaga stĂždd & Roter', 'cmdsort' : 'RaĂ°a', 'cmdnetmount' : 'Mount network volume', // added 18.04.2012 'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012 'cmdplaces' : 'Til stÞð', // added 28.12.2014 'cmdchmod' : 'Broytir stĂ­l', // from v2.1 added 20.6.2015 /*********************************** buttons ***********************************/ 'btnClose' : 'Lat aftur', 'btnSave' : 'Goym', 'btnRm' : 'Strika', 'btnApply' : 'BrĂșka', 'btnCancel' : 'Angra', 'btnNo' : 'Nei', 'btnYes' : 'Ja', 'btnMount' : 'Mount', // added 18.04.2012 'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012 'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Konverter', // from v2.1 added 08.04.2014 'btnCwd' : 'Her', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'Øll', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Slag', // from v2.1 added 22.5.2015 'btnFileName':'FĂ­lunavn', // from v2.1 added 22.5.2015 'btnSaveClose': 'Goym & Lat aftur', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 /******************************** notifications ********************************/ 'ntfopen' : 'Opna mappu', 'ntffile' : '\'Opna fĂ­lu', 'ntfreload' : 'Les innaftur mappu innihald', 'ntfmkdir' : 'Stovnar mappu', 'ntfmkfile' : 'Stovnar fĂ­lur', 'ntfrm' : 'Strikar fĂ­lur', 'ntfcopy' : 'Kopierar fĂ­lur', 'ntfmove' : 'Flytur fĂ­lar', 'ntfprepare' : 'Ger klĂĄrt at kopiera fĂ­lar', 'ntfrename' : 'Umdoyp fĂ­lar', 'ntfupload' : 'Leggur inn fĂ­lar', 'ntfdownload' : 'Tekur fĂ­lar niĂ°ur', 'ntfsave' : 'Goymir fĂ­lar', 'ntfarchive' : 'Stovnar arkiv', 'ntfextract' : 'Útpakkar fĂ­lar frĂĄ arkiv', 'ntfsearch' : 'Leitar eftir fĂ­lum', 'ntfresize' : 'Broytir stĂždd ĂĄ fĂ­lur', 'ntfsmth' : '\'Ger okkurt >_<', 'ntfloadimg' : 'Lesur mynd inn', 'ntfnetmount' : 'Mounting network volume', // added 18.04.2012 'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012 'ntfdim' : 'Tekur mynda vĂ­dd', // added 20.05.2013 'ntfreaddir' : 'Lesur mappu upplĂœsingar', // from v2.1 added 01.07.2013 'ntfurl' : 'Far URL af leinkju', // from v2.1 added 11.03.2014 'ntfchmod' : 'Broyti fĂ­lu stĂ­l', // from v2.1 added 20.6.2015 'ntfpreupload': 'Kannar fĂ­lunavniĂ° ĂĄ fĂ­lu', // from v2.1 added 31.11.2015 /************************************ dates **********************************/ 'dateUnknown' : 'Ăłkent', 'Today' : 'Í dag', 'Yesterday' : 'Í gjĂĄr', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Mai', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Des', 'January' : 'Januar', 'February' : 'Februar', 'March' : 'Mars', 'April' : 'AprĂ­l', 'May' : 'Mai', 'June' : 'Juni', 'July' : 'Juli', 'August' : 'August', 'September' : 'September', 'October' : 'Oktober', 'November' : 'November', 'December' : 'Desember', 'Sunday' : 'Sunnudag', 'Monday' : 'MĂĄnadag', 'Tuesday' : 'TĂœsdag', 'Wednesday' : 'Mikudag', 'Thursday' : 'HĂłsdag', 'Friday' : 'FrĂ­ggjadag', 'Saturday' : 'Leygardag', 'Sun' : 'Sun', 'Mon' : 'MĂĄn', 'Tue' : 'TĂœs', 'Wed' : 'Mik', 'Thu' : 'HĂłs', 'Fri' : 'FrĂ­', 'Sat' : 'Ley', /******************************** sort variants ********************************/ 'sortname' : 'eftir navn', 'sortkind' : 'eftir slag', 'sortsize' : 'eftir stĂždd', 'sortdate' : 'eftir dato', 'sortFoldersFirst' : 'mappur fyrst', /********************************** new items **********************************/ 'untitled file.txt' : 'NĂœggjaFĂ­lu.txt', // added 10.11.2015 'untitled folder' : 'NĂœggjaMappu', // added 10.11.2015 'Archive' : 'NĂœtArkiv', // from v2.1 added 10.11.2015 /********************************** messages **********************************/ 'confirmReq' : 'VĂĄttan kravd', 'confirmRm' : 'Ert tĂș vĂ­sur Ă­ at tĂș ynskir at strika fĂ­larnar?
      Hetta kann ikki angrast!', 'confirmRepl' : 'Erstatta gomlu fĂ­lu viĂ° nĂœggja?', 'confirmConvUTF8' : 'BrĂșka ĂĄ Ăžll', // from v2.1 added 08.04.2014 'confirmNotSave' : 'Er blivi rĂŠttaĂ°.
      Missir sĂ­nar broytingar um tĂș ikki goymir.', // from v2.1 added 15.7.2015 'apllyAll' : 'BrĂșka til Ăžll', 'name' : 'Navn', 'size' : 'StĂždd', 'perms' : 'RĂŠttindi', 'modify' : 'RĂŠttaĂ°', 'kind' : 'Slag', 'read' : 'sĂ­ggja', 'write' : 'broyta', 'noaccess' : 'onga atgongd', 'and' : 'og', 'unknown' : 'Ăłkent', 'selectall' : 'Vel allar fĂ­lur', 'selectfiles' : 'Vel fĂ­lu(r)', 'selectffile' : 'Vel fyrstu fĂ­lu', 'selectlfile' : 'Vel sĂ­Ă°stu fĂ­lu', 'viewlist' : 'Lista vĂ­sing', 'viewicons' : 'Ikon vĂ­sing', 'places' : 'StÞð', 'calc' : 'Rokna', 'path' : 'Stiga', 'aliasfor' : 'HjĂĄnavn fyri', 'locked' : 'LĂŠst', 'dim' : 'VĂ­dd', 'files' : 'FĂ­lur', 'folders' : 'Mappur', 'items' : 'Myndir', 'yes' : 'ja', 'no' : 'nei', 'link' : 'Leinkja', 'searcresult' : 'Leiti Ășrslit', 'selected' : 'valdar myndir', 'about' : 'Um', 'shortcuts' : 'Snarvegir', 'help' : 'HjĂĄlp', 'webfm' : 'Web fĂ­lu umsitan', 'ver' : 'ÚtgĂĄva', 'protocolver' : 'protokol versiĂłn', 'homepage' : 'VerkĂŠtlan heim', 'docs' : 'Skjalfesting', 'github' : 'Mynda okkum ĂĄ Github', 'twitter' : 'Fylg okkum ĂĄ twitter', 'facebook' : 'Fylg okkum ĂĄ facebook', 'team' : 'LiĂ°', 'chiefdev' : 'forritaleiĂ°ari', 'developer' : 'forritari', 'contributor' : 'stuĂ°ulsveitari', 'maintainer' : 'viĂ°lĂ­kahaldari', 'translator' : 'umsetari', 'icons' : 'Ikonir', 'dontforget' : 'and don\'t forget to take your towel', 'shortcutsof' : 'Snarvegir sligi frĂĄ', 'dropFiles' : 'Slepp fĂ­lur her', 'or' : 'ella', 'selectForUpload' : 'Vel fĂ­lur at leggja inn', 'moveFiles' : 'Flyt fĂ­lur', 'copyFiles' : 'Kopier fĂ­lur', 'rmFromPlaces' : 'Flyt frĂĄ stÞð', 'aspectRatio' : 'Skermformat', 'scale' : 'Skalera', 'width' : 'Longd', 'height' : 'HĂŠdd', 'resize' : 'Tilliga stĂždd', 'crop' : 'Sker til', 'rotate' : 'Rotera', 'rotate-cw' : 'Rotera 90 gradir viĂ° uriĂ°', 'rotate-ccw' : 'otera 90 gradir mĂłti uriĂ°', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protokol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'BrĂșkari', // added 18.04.2012 'pass' : 'LoyniorĂ°', // added 18.04.2012 'confirmUnmount' : 'Are you unmount $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'HĂĄla ella set innn fĂ­lar frĂĄ kaga', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'HĂĄla ella set inn fĂ­lar frĂĄ URls her', // from v2.1 added 07.04.2014 'encoding' : 'Encoding', // from v2.1 added 19.12.2014 'locale' : 'Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'Target: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Leita viĂ° input MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Eigari', // from v2.1 added 20.6.2015 'group' : 'BĂłlkur', // from v2.1 added 20.6.2015 'other' : 'AnnaĂ°', // from v2.1 added 20.6.2015 'execute' : 'ÚtfĂžr', // from v2.1 added 20.6.2015 'perm' : 'RĂŠttindi', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Ókent', 'kindFolder' : 'Mappa', 'kindAlias' : 'HjĂĄnavn', 'kindAliasBroken' : 'Óvirki hjĂĄnavn', // applications 'kindApp' : 'ApplikatiĂłn', 'kindPostscript' : 'Postscript skjal', 'kindMsOffice' : 'Microsoft Office skjal', 'kindMsWord' : 'Microsoft Word skjal', 'kindMsExcel' : 'Microsoft Excel skjal', 'kindMsPP' : 'Microsoft Powerpoint framlĂžga', 'kindOO' : 'Open Office skjal', 'kindAppFlash' : 'Flash applikatiĂłn', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent fĂ­la', 'kind7z' : '7z arkiv', 'kindTAR' : 'TAR arkiv', 'kindGZIP' : 'GZIP arkiv', 'kindBZIP' : 'BZIP arkiv', 'kindXZ' : 'XZ arkiv', 'kindZIP' : 'ZIP arkiv', 'kindRAR' : 'RAR arkiv', 'kindJAR' : 'Java JAR ffĂ­laile', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM pakki', // texts 'kindText' : 'Text skjal', 'kindTextPlain' : 'Reinur tekstur', 'kindPHP' : 'PHP kelda', 'kindCSS' : 'Cascading style sheet (CSS)', 'kindHTML' : 'HTML skjal', 'kindJS' : 'Javascript kelda', 'kindRTF' : 'Rich Text Format (RTF)', 'kindC' : 'C kelda', 'kindCHeader' : 'C header kelda', 'kindCPP' : 'C++ kelda', 'kindCPPHeader' : 'C++ header kelda', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python kelda', 'kindJava' : 'Java kelda', 'kindRuby' : 'Ruby kelda', 'kindPerl' : 'Perl script', 'kindSQL' : 'SQL kelda', 'kindXML' : 'XML skjal', 'kindAWK' : 'AWK kelda', 'kindCSV' : 'Comma separated values (CSV)', 'kindDOCBOOK' : 'Docbook XML skjal', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Mynd', 'kindBMP' : 'BMP mynd', 'kindJPEG' : 'JPEG mynd', 'kindGIF' : 'GIF mynd', 'kindPNG' : 'PNG mynd', 'kindTIFF' : 'TIFF mynd', 'kindTGA' : 'TGA mynd', 'kindPSD' : 'Adobe Photoshop mynd', 'kindXBITMAP' : 'X bitmap mynd', 'kindPXM' : 'Pixelmator mynd', // media 'kindAudio' : 'Audio media', 'kindAudioMPEG' : 'MPEG ljóðfĂ­la', 'kindAudioMPEG4' : 'MPEG-4 ljóðfĂ­la', 'kindAudioMIDI' : 'MIDI ljóðfĂ­la', 'kindAudioOGG' : 'Ogg Vorbis ljóðfĂ­la', 'kindAudioWAV' : 'WAV ljóðfĂ­la', 'AudioPlaylist' : 'MP3 playlisti', 'kindVideo' : 'Video media', 'kindVideoDV' : 'DV filmur', 'kindVideoMPEG' : 'MPEG filmur', 'kindVideoMPEG4' : 'MPEG-4 filmur', 'kindVideoAVI' : 'AVI filmur', 'kindVideoMOV' : 'Quick Time filmur', 'kindVideoWM' : 'Windows Media filmur', 'kindVideoFlash' : 'Flash filmur', 'kindVideoMKV' : 'Matroska filmur', 'kindVideoOGG' : 'Ogg filmur' } }; })); application/library/js/i18n/elfinder.id.js000064400000063753147577724760014477 0ustar00/** * Bahasa Indonesia translation * @author Suyadi <1441177004009@student.unsika.ac.id> * @author Ammar Faizi * @version 2017-05-28 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.id = { translator : 'Suyadi <1441177004009@student.unsika.ac.id>, Ammar Faizi <ammarfaizi2@gmail.com>', language : 'Bahasa Indonesia', direction : 'ltr', dateFormat : 'j F, Y H:i', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM nonameDateFormat : 'd m Y - H : i : s', // to apply if upload file is noname: 120513172700 messages : { /********************************** errors **********************************/ 'error' : 'Kesalahan', 'errUnknown' : 'Kesalahan tak dikenal.', 'errUnknownCmd' : 'Perintah tak dikenal.', 'errJqui' : 'Konfigurasi jQuery UI tidak valid. Komponen pemilih, penyeret dan penaruh harus disertakan.', 'errNode' : 'elFinder membutuhkan pembuatan elemen DOM.', 'errURL' : 'Konfigurasi elFinder tidak valid! opsi URL belum diatur.', 'errAccess' : 'Akses ditolak.', 'errConnect' : 'Tidak dapat tersambung ke backend.', 'errAbort' : 'Koneksi dibatalkan.', 'errTimeout' : 'Waktu koneksi habis.', 'errNotFound' : 'Backend tidak ditemukan.', 'errResponse' : 'Respon backend tidak valid.', 'errConf' : 'Konfigurasi elFinder tidak valid.', 'errJSON' : 'Modul PHP JSON belum terpasang.', 'errNoVolumes' : 'Tidak tersedia ruang kosong.', 'errCmdParams' : 'Parameter perintah "$1" tidak valid.', 'errDataNotJSON' : 'Data bukan merupakan JSON.', 'errDataEmpty' : 'Data masih kosong.', 'errCmdReq' : 'Permintaan ke backend membutuhkan nama perintah.', 'errOpen' : 'Tidak dapat membuka "$1".', 'errNotFolder' : 'Obyek ini bukan folder.', 'errNotFile' : 'Obyek ini bukan berkas.', 'errRead' : 'Tidak dapat membaca "$1".', 'errWrite' : 'Tidak dapat menulis ke "$1".', 'errPerm' : 'Ijin ditolak.', 'errLocked' : '"$1" ini terkunci dan tak dapat dipidahkan, diubah atau dihapus.', 'errExists' : 'Berkas bernama "$1" sudah ada.', 'errInvName' : 'Nama berkas tidak valid.', 'errInvDirname' : 'Nama folder salah.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Folder tidak ditemukan.', 'errFileNotFound' : 'Berkas tidak ditemukan.', 'errTrgFolderNotFound' : 'Folder tujuan "$1" tidak ditemukan.', 'errPopup' : 'Peramban anda mencegah untuk membuka jendela munculan. Untuk dapat membuka berkas ini ubah pengaturan pada peramban anda.', 'errMkdir' : 'Tidak dapat membuat folder "$1".', 'errMkfile' : 'Tidak dapat membuat berkas "$1".', 'errRename' : 'Tidak dapat mengubah nama "$1".', 'errCopyFrom' : 'Tidak diizinkan menyalin berkas dari volume "$1".', 'errCopyTo' : 'tidak diizinkan menyalin berkas ke volume "$1".', 'errMkOutLink' : 'Tidak dapat membuat tautan diluar volume root.', // from v2.1 added 03.10.2015 'errUpload' : 'Kesalahan saat mengunggah.', // old name - errUploadCommon 'errUploadFile' : 'Tidak dapat mengunggah "$1".', // old name - errUpload 'errUploadNoFiles' : 'Tak ada berkas untuk diunggah.', 'errUploadTotalSize' : 'Data melampaui ukuran yang diperbolehkan.', // old name - errMaxSize 'errUploadFileSize' : 'Berkas melampaui ukuran yang diperbolehkan.', // old name - errFileMaxSize 'errUploadMime' : 'Jenis berkas ini tidak diijinkan.', 'errUploadTransfer' : 'Kesalahan transfer "$1".', 'errUploadTemp' : 'Tidak dapat membuat file sementara untuk diupload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Obyek "$1" sudah ada di lokasi ini dan tidak dapat ditimpa oleh obyek jenis lain.', // new 'errReplace' : 'Tidak dapat menimpa "$1".', 'errSave' : 'Tidak dapat menyimpan "$1".', 'errCopy' : 'Tidak dapat menyalin "$1".', 'errMove' : 'Tidak dapat memindahkan "$1".', 'errCopyInItself' : 'Tidak dapat menyalin "$1" ke dirinya sendiri.', 'errRm' : 'Tidak dapat menghapus "$1".', 'errTrash' : 'Tidak dapat masuk ke tempat sampah.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Tidak dapat menghapus sumber berkas.', 'errExtract' : 'Tidak dapat mengekstrak berkas dari "$1".', 'errArchive' : 'Tidak dapat membuat arsip.', 'errArcType' : 'Jenis arsip tidak didukung.', 'errNoArchive' : 'Berkas ini bukan arsip atau arsip jenis ini tidak didukung.', 'errCmdNoSupport' : 'Backend tidak mendukung perintah ini.', 'errReplByChild' : 'Folder “$1” tidak dapat ditimpa dengan berkas didalamnya.', 'errArcSymlinks' : 'Untuk keamanan tak diijinkan mengekstrak arsip berisi symlink atau jenis berkas yang tak diijinkan.', // edited 24.06.2012 'errArcMaxSize' : 'Arsip ini melampaui ukuran yang diijinkan.', 'errResize' : 'Tidak dapat mengubah ukuran "$1".', 'errResizeDegree' : 'Derajat putaran tidak valid.', // added 7.3.2013 'errResizeRotate' : 'Citra tidak diputar.', // added 7.3.2013 'errResizeSize' : 'Ukuran citra tidak valid.', // added 7.3.2013 'errResizeNoChange' : 'Ukuran citra tidak diubah.', // added 7.3.2013 'errUsupportType' : 'Jenis berkas tidak didukung.', 'errNotUTF8Content' : 'Berkas "$1" tidak dalam format UTF-8 dan tidak dapat disunting.', // added 9.11.2011 'errNetMount' : 'Tidak dapat membaca susunan "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protokol tidak didukung.', // added 17.04.2012 'errNetMountFailed' : 'Tidak dapat membaca susunannya.', // added 17.04.2012 'errNetMountHostReq' : 'Host harus ada.', // added 18.04.2012 'errSessionExpires' : 'Sesi anda telah kadaluwarsa karena lama tidak aktif.', 'errCreatingTempDir' : 'Tidak dapat membuat direktori sementara: "$1"', 'errFtpDownloadFile' : 'Tidak dapat mengunduh berkas dari FTP: "$1"', 'errFtpUploadFile' : 'Tidak dapat mengunggah berkas dari FTP: "$1"', 'errFtpMkdir' : 'Tidak dapat membuat remot direktori dari FTP: "$1"', 'errArchiveExec' : 'Kesalahan saat mengarsipkan berkas: "$1"', 'errExtractExec' : 'Kesalahan saat mengekstrak berkas: "$1"', 'errNetUnMount' : 'Tidak dapat melakukan mount.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Tidak cocok untuk konversi ke UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Coba dengan browser yang modern, Jika akan mengupload folder.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Waktu habis selama melakukan pencarian "$1". Hasil sementara.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Re-authorization dibutuhkan.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Berkas maksimal yang dipilih adalah $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Tidak dapat mengembalikan berkas dari tempat sampah. Tujuan tidak ditemukan.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Tidak ditemukan editor untuk file tipe ini.', // from v2.1.25 added 23.5.2017 /******************************* commands names ********************************/ 'cmdarchive' : 'Buat arsip', 'cmdback' : 'Kembali', 'cmdcopy' : 'Salin', 'cmdcut' : 'Potong', 'cmddownload' : 'Unduh', 'cmdduplicate' : 'Gandakan', 'cmdedit' : 'Sunting berkas', 'cmdextract' : 'Ekstrak berkas dari arsip', 'cmdforward' : 'Maju', 'cmdgetfile' : 'Pilih berkas', 'cmdhelp' : 'Tentang software ini', 'cmdhome' : 'Rumah', 'cmdinfo' : 'Dapatkan info', 'cmdmkdir' : 'Buat folder', 'cmdmkdirin' : 'Masuk ke folder baru', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Buat fail', 'cmdopen' : 'Buka', 'cmdpaste' : 'Tempel', 'cmdquicklook' : 'Pratinjau', 'cmdreload' : 'Muat-ulang', 'cmdrename' : 'Ganti nama', 'cmdrm' : 'Hapus', 'cmdtrash' : 'Sampahkan', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Kembalikan', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Cari berkas', 'cmdup' : 'Ke direktori utama', 'cmdupload' : 'Unggah berkas', 'cmdview' : 'Lihat', 'cmdresize' : 'Ubah ukuran & Putar', 'cmdsort' : 'Urutkan', 'cmdnetmount' : 'Baca-susun volume jaringan', // added 18.04.2012 'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012 'cmdplaces' : 'Ke Tempat', // added 28.12.2014 'cmdchmod' : 'Mode mengubah', // from v2.1 added 20.6.2015 'cmdopendir' : 'Membuka folder', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Reset column width', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Layar Penuh', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Pindah', // from v2.1.15 added 21.08.2016 /*********************************** buttons ***********************************/ 'btnClose' : 'Tutup', 'btnSave' : 'Simpan', 'btnRm' : 'Buang', 'btnApply' : 'Terapkan', 'btnCancel' : 'Batal', 'btnNo' : 'Tidak', 'btnYes' : 'Ya', 'btnMount' : 'Baca susunan', // added 18.04.2012 'btnApprove': 'Menuju ke $1 & setujui', // from v2.1 added 26.04.2012 'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Konversi', // from v2.1 added 08.04.2014 'btnCwd' : 'Disini', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'Semua', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Type', // from v2.1 added 22.5.2015 'btnFileName':'Nama file', // from v2.1 added 22.5.2015 'btnSaveClose': 'Simpan & Tutup', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 'btnRename' : 'Ubah nama', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Ubah nama(Semua)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Sebelumnya ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Selanjutnya ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Simpan sebagai', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Buka folder', 'ntffile' : 'Buka berkas', 'ntfreload' : 'Muat-ulang isi folder', 'ntfmkdir' : 'Membuat direktori', 'ntfmkfile' : 'Membuat berkas', 'ntfrm' : 'Menghapus berkas', 'ntfcopy' : 'Salin berkas', 'ntfmove' : 'Pindahkan berkas', 'ntfprepare' : 'Persiapan menyalin berkas', 'ntfrename' : 'Ubah nama berkas', 'ntfupload' : 'Unggah berkas', 'ntfdownload' : 'Mengunduh berkas', 'ntfsave' : 'Simpan berkas', 'ntfarchive' : 'Membuat arsip', 'ntfextract' : 'Mengekstrak berkas dari arsip', 'ntfsearch' : 'Mencari berkas', 'ntfresize' : 'Mengubah ukuran citra', 'ntfsmth' : 'Melakukan sesuatu', 'ntfloadimg' : 'Memuat citra', 'ntfnetmount' : 'Membaca susunan volume jaringan', // added 18.04.2012 'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012 'ntfdim' : 'Mendapatkan dimensi citra', // added 20.05.2013 'ntfreaddir' : 'Membaca informasi folder', // from v2.1 added 01.07.2013 'ntfurl' : 'Mendapatkan URL dari link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Dalam mode mengubah', // from v2.1 added 20.6.2015 'ntfpreupload': 'Sedang memverifikasi nama file yang diupload', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Membuat file untuk didownload', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Mengambil informasi path', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Sedang mengupload file', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Sedang melempar ke tempat sampah', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Sedang mengembalikan dari tempat sampah', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Mengecek folder tujuan', // from v2.1.24 added 3.5.2017 /*********************************** volumes *********************************/ 'volume_Trash' : 'Sampah', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'tak diketahui', 'Today' : 'Hari ini', 'Yesterday' : 'Kemarin', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Mei', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Agt', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nop', 'msDec' : 'Des', 'January' : 'Januari', 'February' : 'Pebruari', 'March' : 'Maret', 'April' : 'April', 'May' : 'Mei', 'June' : 'Juni', 'July' : 'Juli', 'August' : 'Agustus', 'September' : 'September', 'October' : 'Oktober', 'November' : 'Nopember', 'December' : 'Desember', 'Sunday' : 'Minggu', 'Monday' : 'Senin', 'Tuesday' : 'Selasa', 'Wednesday' : 'Rabu', 'Thursday' : 'Kamis', 'Friday' : 'Jum \'at', 'Saturday' : 'Sabtu', 'Sun' : 'Min', 'Mon' : 'Sen', 'Tue' : 'Sel', 'Wed' : 'Rab', 'Thu' : 'Kam', 'Fri' : 'Jum', 'Sat' : 'Sab', /******************************** sort variants ********************************/ 'sortname' : 'menurut nama', 'sortkind' : 'menurut jenis', 'sortsize' : 'menurut ukuran', 'sortdate' : 'menurut tanggal', 'sortFoldersFirst' : 'Utamakan folder', 'sortperm' : 'menurut perizinan', // from v2.1.13 added 13.06.2016 'sortmode' : 'menurut mode', // from v2.1.13 added 13.06.2016 'sortowner' : 'menurut pemilik', // from v2.1.13 added 13.06.2016 'sortgroup' : 'menurut grup', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Also Treeview', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'FileBaru.txt', // added 10.11.2015 'untitled folder' : 'FolderBaru', // added 10.11.2015 'Archive' : 'ArsipBaru', // from v2.1 added 10.11.2015 /********************************** messages **********************************/ 'confirmReq' : 'Diperlukan konfirmasi', 'confirmRm' : 'Anda yakin akan menghapus berkas?
      Ini tidak dapat kembalikan!', 'confirmRepl' : 'Timpa berkas lama dengan yang baru?', 'confirmRest' : 'Timpa berkas yang ada dengan berkas dari sampah?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Bukan UTF-8
      Konversi ke UTF-8?
      Konten akan berubah menjadi UTF-8 ketika disimpan dengan konversi.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.
      Please select character encoding of this file.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Telah terjadi perubahan.
      Kehilangan perkerjaan jika kamu tidak menyimpan.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Anda yakin untuk membuang berkas ke tempat sampah?', //from v2.1.24 added 29.4.2017 'apllyAll' : 'Terapkan ke semua', 'name' : 'Nama', 'size' : 'Ukuran', 'perms' : 'Perijinan', 'modify' : 'Diubah', 'kind' : 'Jenis', 'read' : 'baca', 'write' : 'tulis', 'noaccess' : 'tidak ada akses', 'and' : 'dan', 'unknown' : 'tak diketahui', 'selectall' : 'Pilih semua berkas', 'selectfiles' : 'Pilih berkas', 'selectffile' : 'Pilih berkas pertama', 'selectlfile' : 'Pilih berkas terakhir', 'viewlist' : 'Tampilan daftar', 'viewicons' : 'Tampilan ikon', 'places' : 'Lokasi', 'calc' : 'Hitung', 'path' : 'Alamat', 'aliasfor' : 'Nama lain untuk', 'locked' : 'Dikunci', 'dim' : 'Dimensi', 'files' : 'Berkas', 'folders' : 'Folder', 'items' : 'Pokok', 'yes' : 'ya', 'no' : 'tidak', 'link' : 'Tautan', 'searcresult' : 'Hasil pencarian', 'selected' : 'Pokok terpilih', 'about' : 'Tentang', 'shortcuts' : 'Pintasan', 'help' : 'Bantuan', 'webfm' : 'Pengelola berkas web', 'ver' : 'Versi', 'protocolver' : 'versi protokol', 'homepage' : 'Rumah proyek', 'docs' : 'Dokumentasi', 'github' : 'Ambil kami di Github', 'twitter' : 'Ikuti kami di twitter', 'facebook' : 'Gabung dengan kami di facebook', 'team' : 'Tim', 'chiefdev' : 'kepala pengembang', 'developer' : 'pengembang', 'contributor' : 'kontributor', 'maintainer' : 'pengurus', 'translator' : 'penerjemah', 'icons' : 'Ikon', 'dontforget' : 'dan jangan lupa pakai handukmu', 'shortcutsof' : 'Pintasan dimatikan', 'dropFiles' : 'Seret berkas anda kesini', 'or' : 'atau', 'selectForUpload' : 'Pilih berkas untuk diunggah', 'moveFiles' : 'Pindahkan berkas', 'copyFiles' : 'Salin berkas', 'restoreFiles' : 'Kembalikan berkas', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Hapus dari lokasi', 'aspectRatio' : 'Aspek rasio', 'scale' : 'Skala', 'width' : 'Lebar', 'height' : 'Tinggi', 'resize' : 'Ubah ukuran', 'crop' : 'Potong', 'rotate' : 'Putar', 'rotate-cw' : 'Putar 90 derajat ke kanan', 'rotate-ccw' : 'Putar 90 derajat ke kiri', 'degree' : '°', 'netMountDialogTitle' : 'Baca susunan volume jaringan', // added 18.04.2012 'protocol' : 'Protokol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Pengguna', // added 18.04.2012 'pass' : 'Sandi', // added 18.04.2012 'confirmUnmount' : 'Apakah anda unmount $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Seret atau Tempel file dari browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Seret file, Tempel URL atau gambar dari clipboard', // from v2.1 added 07.04.2014 'encoding' : 'Encoding', // from v2.1 added 19.12.2014 'locale' : 'Lokasi', // from v2.1 added 19.12.2014 'searchTarget' : 'Target: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Mencari berdasarkan inpu MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Pemilik', // from v2.1 added 20.6.2015 'group' : 'Grup', // from v2.1 added 20.6.2015 'other' : 'Lainnya', // from v2.1 added 20.6.2015 'execute' : 'Eksekusi', // from v2.1 added 20.6.2015 'perm' : 'Izin', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'Folder kosong', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Folder kosong\\A Seret untuk tambahkan berkas', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Folder kosong\\A Tekan yang lama untuk tambahkan berkas', // from v2.1.6 added 30.12.2015 'quality' : 'Kualitas', // from v2.1.6 added 5.1.2016 'autoSync' : 'Sinkronasi Otomatis', // from v2.1.6 added 10.1.2016 'moveUp' : 'Pindah ke atas', // from v2.1.6 added 18.1.2016 'getLink' : 'Mendepatkan URL link', // from v2.1.7 added 9.2.2016 'selectedItems' : '($1) berkas dipilih', // from v2.1.7 added 2.19.2016 'folderId' : 'ID Folder', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Izin akses offline', // from v2.1.10 added 3.25.2016 'reAuth' : 'To re-authenticate', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Sedang memuat...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Membuka file bersamaan', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Anda mencoba membuka file $1. Apakah anda ingin membuka di browser?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Hasil pencarian kosong dalam target', // from v2.1.12 added 5.16.2016 'editingFile' : 'Sedang mengedit file', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Anda memilih $1 berkas', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Kamu mempunyai $i berkas di clipboard', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Hanya pencarian bertamah untuk menampilkan tampilan sekarang', // from v2.1.13 added 6.30.2016 'reinstate' : 'Reinstate', // from v2.1.15 added 3.8.2016 'complete' : '$1 selesai', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Context menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Page turning', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume roots', // from v2.1.16 added 16.9.2016 'reset' : 'Reset', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Warna background', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Mengambil warna', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Grid', // from v2.1.16 added 4.10.2016 'enabled' : 'Diaktifkan', // from v2.1.16 added 4.10.2016 'disabled' : 'Nonaktifkan', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Text label', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 mins left', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Select folder', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017 'presets' : 'Presets', // from v2.1.25 added 26.5.2017 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Tak diketahui', 'kindRoot' : 'Volume Root', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Folder', 'kindAlias' : 'Nama lain', 'kindAliasBroken' : 'Nama lain rusak', // applications 'kindApp' : 'Aplikasi', 'kindPostscript' : 'Dokumen postscript', 'kindMsOffice' : 'Dokumen Ms. Office', 'kindMsWord' : 'Dokumen Ms. Word', 'kindMsExcel' : 'Dokumen Ms. Excel', 'kindMsPP' : 'Dokumen Ms. Powerpoint', 'kindOO' : 'Dokumen Open Office', 'kindAppFlash' : 'Aplikasi Flash', 'kindPDF' : 'Portable Dokumen Format (PDF)', 'kindTorrent' : 'Berkas Bittorrent', 'kind7z' : 'Arsip 7z', 'kindTAR' : 'Arsip TAR', 'kindGZIP' : 'Arsip GZIP', 'kindBZIP' : 'Arsip BZIP', 'kindXZ' : 'Arsip XZ', 'kindZIP' : 'Arsip ZIP', 'kindRAR' : 'Arsip RAR', 'kindJAR' : 'Berkas Java JAR', 'kindTTF' : 'Huruf True Type', 'kindOTF' : 'Huruf Open Type', 'kindRPM' : 'Paket RPM', // texts 'kindText' : 'Dokumen teks', 'kindTextPlain' : 'Berkas teks biasa', 'kindPHP' : 'Kode-sumber PHP', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'Dokumen HTML', 'kindJS' : 'Kode-sumber Javascript', 'kindRTF' : 'Berkas Rich Text', 'kindC' : 'Kode-sumber C', 'kindCHeader' : 'Kode-sumber header C', 'kindCPP' : 'Kode-sumber C++', 'kindCPPHeader' : 'Kode-sumber header C++', 'kindShell' : 'Berkas shell Unix', 'kindPython' : 'Kode-sumber Python', 'kindJava' : 'Kode-sumber Java', 'kindRuby' : 'Kode-sumber Ruby', 'kindPerl' : 'Kode-sumber Perl', 'kindSQL' : 'Kode-sumber SQL', 'kindXML' : 'Dokumen XML', 'kindAWK' : 'Kode-sumber AWK', 'kindCSV' : 'Dokumen CSV', 'kindDOCBOOK' : 'Dokumen Docbook XML', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Citra', 'kindBMP' : 'Citra BMP', 'kindJPEG' : 'Citra JPEG', 'kindGIF' : 'Citra GIF', 'kindPNG' : 'Citra PNG', 'kindTIFF' : 'Citra TIFF', 'kindTGA' : 'Citra TGA', 'kindPSD' : 'Citra Adobe Photoshop', 'kindXBITMAP' : 'Citra X bitmap', 'kindPXM' : 'Citra Pixelmator', // media 'kindAudio' : 'Berkas audio', 'kindAudioMPEG' : 'Berkas audio MPEG', 'kindAudioMPEG4' : 'Berkas audio MPEG-4', 'kindAudioMIDI' : 'Berkas audio MIDI', 'kindAudioOGG' : 'Berkas audio Ogg Vorbis', 'kindAudioWAV' : 'Berkas audio WAV', 'AudioPlaylist' : 'Berkas daftar putar MP3', 'kindVideo' : 'Berkas video', 'kindVideoDV' : 'Berkas video DV', 'kindVideoMPEG' : 'Berkas video MPEG', 'kindVideoMPEG4' : 'Berkas video MPEG-4', 'kindVideoAVI' : 'Berkas video AVI', 'kindVideoMOV' : 'Berkas video Quick Time', 'kindVideoWM' : 'Berkas video Windows Media', 'kindVideoFlash' : 'Berkas video Flash', 'kindVideoMKV' : 'Berkas video Matroska', 'kindVideoOGG' : 'Berkas video Ogg' } }; })); application/library/js/i18n/elfinder.ar.js000064400000115441147577724760014475 0ustar00/** * Ű§Ù„ŰȘŰ±ŰŹÙ…Ű© Ű§Ù„ŰčŰ±ŰšÙŠŰ© * @author Khamis Alqutob * @author Tawfek Daghistani * @author Atef Ben Ali * @version 2020-12-03 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.ar = { translator : 'Khamis Alqutob <alqutob@outlook.com>, Tawfek Daghistani <tawfekov@gmail.com>, Atef Ben Ali <atef.bettaib@gmail.com>', language : 'Arabic', direction : 'rtl', dateFormat : 'M d, Y h:i A', // will show like: Aug 24, 2018 04:39 PM fancyDateFormat : '$1 h:i A', // will show like: Today 04:39 PM nonameDateFormat : 'ymd-His', // noname upload will show like: 180824-163916 messages : { /********************************** errors **********************************/ 'error' : '۟۷ۣ', 'errUnknown' : '۟۷ۣ ŰșÙŠŰ± مŰčŰ±ÙˆÙ .', 'errUnknownCmd' : 'ŰŁÙ…Ű± ŰșÙŠŰ± مŰčŰ±ÙˆÙ .', 'errJqui' : 'ŰȘكوين jQuery UI ŰșÙŠŰ± Ű”Ű§Ù„Ű­. ÙŠŰŹŰš ŰȘŰ¶Ù…ÙŠÙ† Ű§Ù„Ù…ÙƒÙˆÙ†Ű§ŰȘ Ű§Ù„Ù‚Ű§ŰšÙ„Ű© للŰȘŰ­ŰŻÙŠŰŻ ÙˆŰ§Ù„Ù‚Ű§ŰšÙ„Ű© Ù„Ù„ŰłŰ­Űš ÙˆŰ§Ù„Ű„ÙÙ„Ű§ŰȘ', 'errNode' : 'يŰȘŰ·Ù„Űš elFinder Ű„Ù†ŰŽŰ§ŰĄ ŰčÙ†Ű”Ű± DOM.', 'errURL' : 'ŰȘكوين elFinder ŰșÙŠŰ± Ű”Ű§Ù„Ű­ ! لم يŰȘم ŰȘŰčيين ŰźÙŠŰ§Ű± ۱ۧۚ۷ URL', 'errAccess' : 'Ű§Ù„ÙˆŰ”ÙˆÙ„ Ù…Ű±ÙÙˆŰ¶ .', 'errConnect' : 'ŰȘŰč۰۱ Ű§Ù„Ű§ŰȘŰ”Ű§Ù„ مŰč ŰźŰ§ŰŻÙ… Ű§Ù„ŰźÙ„ÙÙŠŰ©', 'errAbort' : 'ŰȘم ÙŰ”Ù„ Ű§Ù„Ű„ŰȘŰ”Ű§Ù„', 'errTimeout' : 'Ù†ÙŰ° وقŰȘ Ű§Ù„Ű§ŰȘŰ”Ű§Ù„.', 'errNotFound' : 'Ű§Ù„ŰźŰ§ŰŻÙˆÙ… Ű§Ù„ŰźÙ„ÙÙŠ ŰșÙŠŰ± Ù…ÙˆŰŹÙˆŰŻ .', 'errResponse' : '۱ۯ ŰșÙŠŰ± Ù…Ù‚ŰšÙˆÙ„ من Ű§Ù„ŰźŰ§ŰŻÙˆÙ… Ű§Ù„ŰźÙ„ÙÙŠ', 'errConf' : '۟۷ۣ في Ű§Ù„Ű„ŰčۯۧۯۧŰȘ Ű§Ù„ŰźŰ§Ű”Ű© ŰšŰ§Ù„ŰźŰ§ŰŻÙˆÙ… Ű§Ù„ŰźÙ„ÙÙŠ ', 'errJSON' : 'Ù…ÙˆŰŻÙŠÙˆÙ„ PHP JSON module ŰșÙŠŰ± Ù…Ű«ŰšŰȘ ', 'errNoVolumes' : 'Ű§Ù„ŰŁŰ­ŰŹŰ§Ù… Ű§Ù„Ù…Ù‚Ű±ÙˆŰĄŰ© ŰșÙŠŰ± مŰȘÙˆÙŰ±Ű©', 'errCmdParams' : 'مŰčÙ„Ù…Ű§ŰȘ ŰșÙŠŰ± Ű”Ű§Ù„Ű­Ű© Ù„Ù„ŰŁÙ…Ű± "$1".', 'errDataNotJSON' : 'Ű§Ù„ŰšÙŠŰ§Ù†Ű§ŰȘ Ù„ÙŠŰłŰȘ من نوŰč JSON ', 'errDataEmpty' : 'Ű§Ù„ŰšÙŠŰ§Ù†Ű§ŰȘ ÙŰ§Ű±ŰșŰ©', 'errCmdReq' : 'Ű§Ù„ŰźŰ§ŰŻÙˆÙ… Ű§Ù„ŰźÙ„ÙÙŠ يŰȘŰ·Ù„Űš Ű§ŰłÙ… Ű§Ù„ŰŁÙ…Ű± ', 'errOpen' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى فŰȘŰ­ "$1".', 'errNotFolder' : 'Ű§Ù„ŰčÙ†Ű”Ű± Ù„ÙŠŰł Ù…ŰŹÙ„ŰŻ', 'errNotFile' : 'Ű§Ù„ŰčÙ†Ű”Ű± Ù„ÙŠŰł ملف', 'errRead' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى Ù‚Ű±Ű§ŰĄŰ© "$1".', 'errWrite' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى Ű§Ù„ÙƒŰȘۧۚ۩ في "$1".', 'errPerm' : 'ÙˆŰ”ÙˆÙ„ Ù…Ű±ÙÙˆŰ¶ ', 'errLocked' : '"$1" مقفل ÙˆÙ„Ű§ يمكن Ű„Űčۧۯ۩ ŰȘŰłÙ…ÙŠŰȘه ŰŁÙˆ نقله ŰŁÙˆ Ű„ŰČŰ§Ù„ŰȘه.', 'errExists' : 'Ű§Ù„ŰčÙ†Ű”Ű± Ű§Ù„Ű°ÙŠ ÙŠŰ­Ù…Ù„ Ű§Ù„Ű§ŰłÙ… "$1" Ù…ÙˆŰŹÙˆŰŻ Ù…ŰłŰšÙ‚Ű§Ù‹.', 'errInvName' : 'Ű§ŰłÙ… Ű§Ù„Ù…Ù„Ù ŰșÙŠŰ± Ű”Ű§Ù„Ű­', 'errInvDirname' : 'Ű§ŰłÙ… Ù…ŰŹÙ„ŰŻ ŰșÙŠŰ± Ű”Ű§Ù„Ű­', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Ű§Ù„Ù…ŰŹÙ„ŰŻ ŰșÙŠŰ± Ù…ÙˆŰŹÙˆŰŻ', 'errFileNotFound' : 'Ű§Ù„Ù…Ù„Ù ŰșÙŠŰ± Ù…ÙˆŰŹÙˆŰŻ', 'errTrgFolderNotFound' : 'Ű§Ù„Ù…ŰŹÙ„ŰŻ Ű§Ù„Ù‡ŰŻÙ "$1" ŰșÙŠŰ± Ù…ÙˆŰŹÙˆŰŻ ', 'errPopup' : 'Ű§Ù„Ù…ŰȘŰ”ÙŰ­ منŰč من فŰȘŰ­ Ù†Ű§ÙŰ°Ű© Ù…Ù†ŰšŰ«Ù‚Ű©. لفŰȘŰ­ ملف ی قم ŰšŰȘمكينه في ŰźÙŠŰ§Ű±Ű§ŰȘ Ű§Ù„Ù…ŰȘŰ”ÙŰ­', 'errMkdir' : ' ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى Ű„Ù†ŰŽŰ§ŰĄ Ù…ŰŹÙ„ŰŻ "$1".', 'errMkfile' : ' ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى Ű„Ù†ŰŽŰ§ŰĄ ملف "$1".', 'errRename' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى Ű„Űčۧۯ۩ ŰȘŰłÙ…ÙŠŰ© "$1".', 'errCopyFrom' : 'Ù†ŰłŰź Ű§Ù„Ù…Ù„ÙŰ§ŰȘ من Ű§Ù„ŰŻÙ„ÙŠÙ„ "$1" ŰșÙŠŰ± Ù…ŰłÙ…ÙˆŰ­.', 'errCopyTo' : 'Ù†ŰłŰź Ű§Ù„Ù…Ù„ÙŰ§ŰȘ Ű„Ù„Ù‰ Ű§Ù„ŰŻÙ„ÙŠÙ„ "$1" ŰșÙŠŰ± Ù…ŰłÙ…ÙˆŰ­ .', 'errMkOutLink' : 'ŰȘŰč۰۱ Ű„Ù†ŰŽŰ§ŰĄ ۱ۧۚ۷ Ű„Ù„Ù‰ ۟ۧ۱ۏ ۏ۰۱ Ű§Ù„ŰŻÙ„ÙŠÙ„.', // from v2.1 added 03.10.2015 'errUpload' : '۟۷ۣ في ŰčÙ…Ù„ÙŠŰ© Ű§Ù„Ű±ÙŰč.', // old name - errUploadCommon 'errUploadFile' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى Ű±ÙŰč "$1".', // old name - errUpload 'errUploadNoFiles' : 'لم يŰȘم Ű§Ù„ŰčŰ«ÙˆŰ± Űčلى Ù…Ù„ÙŰ§ŰȘ للŰȘŰ­Ù…ÙŠÙ„ .', 'errUploadTotalSize' : 'Ű§Ù„ŰšÙŠŰ§Ù†Ű§ŰȘ ŰȘŰȘŰŹŰ§ÙˆŰČ Ű§Ù„Ű­ŰŻ Ű§Ù„ŰŁÙ‚Ű”Ù‰ Ù„Ù„Ű­ŰŹÙ… Ű§Ù„Ù…ŰłÙ…ÙˆŰ­ ŰšÙ‡.', // old name - errMaxSize 'errUploadFileSize' : 'ŰȘŰŹŰ§ÙˆŰČ Ű§Ù„Ù…Ù„Ù Ű§Ù„Ű­ŰŻ Ű§Ù„ŰŁÙ‚Ű”Ù‰ Ù„Ù„Ű­ŰŹÙ… Ű§Ù„Ù…ŰłÙ…ÙˆŰ­ ŰšÙ‡.', // old name - errFileMaxSize 'errUploadMime' : 'نوŰč Ű§Ù„Ù…Ù„Ù ŰșÙŠŰ± Ù…ŰłÙ…ÙˆŰ­ ŰšÙ‡.', 'errUploadTransfer' : '"$1" ۟۷ۣ نقل.', 'errUploadTemp' : 'ŰȘŰč۰۱ Ű„Ù†ŰŽŰ§ŰĄ ملف Ù…Ű€Ù‚ŰȘ للŰȘŰ­Ù…ÙŠÙ„ .', // from v2.1 added 26.09.2015 'errNotReplace' : 'Ű§Ù„ÙƒŰ§ŰŠÙ† "$1" Ù…ÙˆŰŹÙˆŰŻ ŰšŰ§Ù„ÙŰčل في Ù‡Ű°Ű§ Ű§Ù„Ù…ÙˆÙ‚Űč ÙˆÙ„Ű§ يمكن ۧ۳ŰȘŰšŰŻŰ§Ù„Ù‡ ŰšÙƒŰ§ŰŠÙ† ŰšÙ†ÙˆŰč ۹۟۱.', // new 'errReplace' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى ۧ۳ŰȘŰšŰŻŰ§Ù„ "$1".', 'errSave' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى Ű­ÙŰž "$1".', 'errCopy' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى Ù†ŰłŰź "$1".', 'errMove' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى نقل "$1".', 'errCopyInItself' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى Ù†ŰłŰź "$1" ŰŻŰ§ŰźÙ„ Ù†ÙŰłÙ‡.', 'errRm' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى Ű„ŰČŰ§Ù„Ű© "$1".', 'errTrash' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± في ŰłÙ„Ű© Ű§Ù„Ù…Ù‡Ù…Ù„Ű§ŰȘ', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'ŰȘŰč۰۱ Ű„ŰČŰ§Ù„Ű© ملف (Ù…Ù„ÙŰ§ŰȘ) Ű§Ù„Ù…Ű”ŰŻŰ±.', 'errExtract' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى ۧ۳ŰȘ۟۱ۧۏ Ű§Ù„Ù…Ù„ÙŰ§ŰȘ من "$1".', 'errArchive' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى Ű„Ù†ŰŽŰ§ŰĄ ملف Ù…Ű¶ŰșÙˆŰ·.', 'errArcType' : 'نوŰč Ű§Ù„Ù…Ù„Ù Ű§Ù„Ù…Ű¶ŰșÙˆŰ· ŰșÙŠŰ± Ù…ŰŻŰčوم.', 'errNoArchive' : 'Ù‡Ű°Ű§ Ű§Ù„Ù…Ù„Ù Ù„ÙŠŰł ملف Ù…Ű¶ŰșÙˆŰ· ŰŁÙˆ Ű°Ùˆ Ű”ÙŠŰșŰ© ŰșÙŠŰ± Ù…ŰŻŰčÙˆÙ…Ű©.', 'errCmdNoSupport' : 'Ű§Ù„ŰźŰ§ŰŻÙˆÙ… Ű§Ù„ŰźÙ„ÙÙŠ Ù„Ű§ ÙŠŰŻŰčم Ù‡Ű°Ű§ Ű§Ù„ŰŁÙ…Ű± ', 'errReplByChild' : 'Ù„Ű§ يمكن ۧ۳ŰȘŰšŰŻŰ§Ù„ Ű§Ù„Ù…ŰŹÙ„ŰŻ "$1" ŰšŰčÙ†Ű”Ű± Ù…Ű­ŰȘوِ فيه.', 'errArcSymlinks' : 'Ù„ŰŁŰłŰšŰ§Űš ŰŁÙ…Ù†ÙŠŰ© ی ŰȘم Ű±ÙŰ¶ فك ۶ŰșŰ· Ű§Ù„ŰŁŰ±ŰŽÙŠÙŰ§ŰȘ Ű§Ù„ŰȘي ŰȘŰ­ŰȘوي Űčلى Ű±ÙˆŰ§ŰšŰ· Ű±Ù…ŰČÙŠŰ© ŰŁÙˆ Ù…Ù„ÙŰ§ŰȘ ŰšŰŁŰłÙ…Ű§ŰĄ ŰșÙŠŰ± Ù…ŰłÙ…ÙˆŰ­ ŰšÙ‡Ű§.', // edited 24.06.2012 'errArcMaxSize' : 'ŰȘŰȘŰŹŰ§ÙˆŰČ Ù…Ù„ÙŰ§ŰȘ Ű§Ù„ŰŁŰ±ŰŽÙŠÙ Ű§Ù„Ű­ŰŹÙ… Ű§Ù„ŰŁÙ‚Ű”Ù‰ Ű§Ù„Ù…ŰłÙ…ÙˆŰ­ ŰšÙ‡.', 'errResize' : 'ŰȘŰč۰۱ ŰȘŰșÙŠÙŠŰ± Ű­ŰŹÙ… "$1".', 'errResizeDegree' : 'ۯ۱ۏ۩ ŰȘŰŻÙˆÙŠŰ± ŰșÙŠŰ± Ű”Ű§Ù„Ű­Ű©.', // added 7.3.2013 'errResizeRotate' : 'ŰȘŰč۰۱ ŰȘŰŻÙˆÙŠŰ± Ű§Ù„Ű”ÙˆŰ±Ű©.', // added 7.3.2013 'errResizeSize' : 'Ű­ŰŹÙ… Ű§Ù„Ű”ÙˆŰ±Ű© ŰșÙŠŰ± Ű”Ű§Ù„Ű­.', // added 7.3.2013 'errResizeNoChange' : 'Ű­ŰŹÙ… Ű§Ù„Ű”ÙˆŰ±Ű© لم يŰȘŰșÙŠŰ±.', // added 7.3.2013 'errUsupportType' : 'نوŰč ملف ŰșÙŠŰ± Ù…ŰŻŰčوم.', 'errNotUTF8Content' : 'Ű§Ù„Ù…Ù„Ù "$1" Ù„ÙŠŰł ŰšŰȘÙ†ŰłÙŠÙ‚ UTF-8 ÙˆÙ„Ű§ يمكن ŰȘŰ­Ű±ÙŠŰ±Ù‡.', // added 9.11.2011 'errNetMount' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى Ű§Ù„ŰȘŰ«ŰšÙŠŰȘ "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'ŰšŰ±ÙˆŰȘوكول ŰșÙŠŰ± Ù…ŰŻŰčوم.', // added 17.04.2012 'errNetMountFailed' : 'ÙŰŽÙ„ Ű§Ù„ŰȘŰ«ŰšÙŠŰȘ.', // added 17.04.2012 'errNetMountHostReq' : 'Ű§Ù„Ù…Ű¶ÙŠÙ Ù…Ű·Ù„ÙˆŰš.', // added 18.04.2012 'errSessionExpires' : 'Ű§Ù†ŰȘهŰȘ ŰŹÙ„ŰłŰ© Ű§Ù„Űčمل Ű§Ù„ŰźŰ§Ű”Ű© ŰšÙƒ ۚ۳ۚۚ ŰčŰŻÙ… Ű§Ù„ÙŰ§ŰčÙ„ÙŠŰ©.', 'errCreatingTempDir' : 'ŰȘŰč۰۱ Ű„Ù†ŰŽŰ§ŰĄ ŰŻÙ„ÙŠÙ„ Ù…Ű€Ù‚ŰȘ: "$1"', 'errFtpDownloadFile' : 'ŰȘŰč۰۱ ŰȘنŰČيل Ű§Ù„Ù…Ù„Ù من FTP: "$1"', 'errFtpUploadFile' : 'ŰȘŰč۰۱ ŰȘŰ­Ù…ÙŠÙ„ Ű§Ù„Ù…Ù„Ù Ű„Ù„Ù‰ FTP: "$1"', 'errFtpMkdir' : 'ŰȘŰč۰۱ Ű„Ù†ŰŽŰ§ŰĄ ŰŻÙ„ÙŠÙ„ Űčن ŰšŰčŰŻ في FTP: "$1"', 'errArchiveExec' : '۟۷ۣ ŰŁŰ«Ù†Ű§ŰĄ ŰŁŰ±ŰŽÙŰ© Ű§Ù„Ù…Ù„ÙŰ§ŰȘ: "$1"', 'errExtractExec' : '۟۷ۣ ŰŁŰ«Ù†Ű§ŰĄ ۧ۳ŰȘ۟۱ۧۏ Ű§Ù„Ù…Ù„ÙŰ§ŰȘ: "$1"', 'errNetUnMount' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى فك Ű§Ù„ŰȘŰ«ŰšÙŠŰȘ.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'ŰșÙŠŰ± Ù‚Ű§ŰšÙ„ للŰȘŰ­ÙˆÙŠÙ„ Ű„Ù„Ù‰ UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'ۏ۱ۚ Ű§Ù„Ù…ŰȘŰ”ÙŰ­ Ű§Ù„Ű­ŰŻÙŠŰ« ی ۄ۰ۧ كنŰȘ ŰȘ۱ŰșŰš في ŰȘŰ­Ù…ÙŠÙ„ Ű§Ù„Ù…ŰŹÙ„ŰŻ.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Ű§Ù†ŰȘهŰȘ Ű§Ù„Ù…Ù‡Ù„Ű© ŰŁŰ«Ù†Ű§ŰĄ Ű§Ù„ŰšŰ­Ű« "$1". نŰȘÙŠŰŹŰ© Ű§Ù„ŰšŰ­Ű« ŰŹŰČŰŠÙŠŰ©.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Ù…Ű·Ù„ÙˆŰš Ű„Űčۧۯ۩ Ű§Ù„ŰȘÙÙˆÙŠŰ¶.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Ű§Ù„Ű­ŰŻ Ű§Ù„ŰŁÙ‚Ű”Ù‰ لŰčŰŻŰŻ Ű§Ù„ŰčÙ†Ű§Ű”Ű± Ű§Ù„Ù‚Ű§ŰšÙ„Ű© للŰȘŰ­ŰŻÙŠŰŻ هو $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'ŰșÙŠŰ± Ù‚Ű§ŰŻŰ± Űčلى Ű§Ù„Ű§ŰłŰȘŰčۧۯ۩ من ŰłÙ„Ű© Ű§Ù„Ù…Ù‡Ù…Ù„Ű§ŰȘ. Ù„Ű§ يمكن ŰȘŰ­ŰŻÙŠŰŻ ÙˆŰŹÙ‡Ű© Ű§Ù„Ű§ŰłŰȘŰčۧۯ۩.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'لم يŰȘم Ű§Ù„ŰčŰ«ÙˆŰ± Űčلى Ű§Ù„Ù…Ű­Ű±Ű± Ù„Ù‡Ű°Ű§ Ű§Ù„Ù†ÙˆŰč من Ű§Ù„Ù…Ù„ÙŰ§ŰȘ.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Ű­ŰŻŰ« ۟۷ۣ من ŰŹŰ§Ù†Űš Ű§Ù„ŰźŰ§ŰŻÙ….', // from v2.1.25 added 16.6.2017 'errEmpty' : 'ŰȘŰč۰۱ Ű„ÙŰ±Ű§Űș Ű§Ù„Ù…ŰŹÙ„ŰŻ "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'ÙŠÙˆŰŹŰŻ $1 ۣ۟۷ۧۥ Ű„Ű¶Ű§ÙÙŠŰ©.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'Ű„Ù†ŰŽŰ§ŰĄ ŰŁŰ±ŰŽÙŠÙ', 'cmdback' : 'Ű§Ù„ŰčÙˆŰŻŰ©', 'cmdcopy' : 'Ù†ŰłŰź', 'cmdcut' : 'Ù‚Ű”', 'cmddownload' : 'ŰȘنŰČيل', 'cmdduplicate' : 'ŰȘÙƒŰ±Ű§Ű±', 'cmdedit' : 'ŰȘŰ­Ű±ÙŠŰ± Ű§Ù„Ù…Ù„Ù', 'cmdextract' : 'Ű„ŰłŰȘ۟۱ۧۏ Ű§Ù„Ù…Ù„ÙŰ§ŰȘ من Ű§Ù„ŰŁŰ±ŰŽÙŠÙ', 'cmdforward' : 'Ű§Ù„ŰŁÙ…Ű§Ù…', 'cmdgetfile' : 'ۧ۟ŰȘÙŠŰ§Ű± Ű§Ù„Ù…Ù„ÙŰ§ŰȘ', 'cmdhelp' : 'Űčن Ù‡Ű°Ù‡ Ű§Ù„ŰšŰ±Ù…ŰŹÙŠŰ©', 'cmdhome' : 'Ű§Ù„ŰŹŰ°Ű±', 'cmdinfo' : 'Ű§Ù„Ű­Ű”ÙˆÙ„ Űčلى Ű§Ù„Ù…ŰčÙ„ÙˆÙ…Ű§ŰȘ ', 'cmdmkdir' : 'Ù…ŰŹÙ„ŰŻ ŰŹŰŻÙŠŰŻ', 'cmdmkdirin' : 'ŰŻŰ§ŰźÙ„ Ù…ŰŹÙ„ŰŻ ŰŹŰŻÙŠŰŻ', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'ملف ŰŹŰŻÙŠŰŻ', 'cmdopen' : 'فŰȘŰ­', 'cmdpaste' : 'Ù„Ű”Ù‚', 'cmdquicklook' : 'مŰčŰ§ÙŠÙ†Ű©', 'cmdreload' : 'Ű„Űčۧۯ۩ ŰȘŰ­Ù…ÙŠÙ„', 'cmdrename' : 'Ű„Űčۧۯ۩ ŰȘŰłÙ…ÙŠŰ©', 'cmdrm' : 'Ű­Ű°Ù', 'cmdtrash' : 'ŰŻŰ§ŰźÙ„ ŰłÙ„Ű© Ű§Ù„Ù…Ù‡Ù…Ù„Ű§ŰȘ', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Ű„ŰłŰȘŰčۧۯ۩', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'ۭۚ۫ Űčن Ù…Ù„ÙŰ§ŰȘ', 'cmdup' : 'Ű§Ù†ŰȘقل Ű„Ù„Ù‰ Ű§Ù„Ù…ŰŹÙ„ŰŻ Ű§Ù„ŰŁŰ”Ù„', 'cmdupload' : 'Ű±ÙŰč Ù…Ù„ÙŰ§ŰȘ', 'cmdview' : 'Űč۱۶', 'cmdresize' : 'ŰȘŰșÙŠÙŠŰ± Ű§Ù„Ű­ŰŹÙ… ÙˆŰ§Ù„ŰȘŰŻÙˆÙŠŰ±', 'cmdsort' : 'ÙŰ±ŰČ', 'cmdnetmount' : 'ŰȘŰ«ŰšÙŠŰȘ Ű­ŰŹÙ… Ű§Ù„ŰŽŰšÙƒŰ©', // added 18.04.2012 'cmdnetunmount': 'Ű„Ù„Űșۧۥ Ű§Ù„ŰȘŰ«ŰšÙŠŰȘ', // from v2.1 added 30.04.2012 'cmdplaces' : 'Ű§Ù„Ù‰ Ű§Ù„Ű§Ù…Ű§ÙƒÙ†', // added 28.12.2014 'cmdchmod' : 'ŰȘŰșÙŠÙŠŰ± Ű§Ù„Ù†Ù…Ű·', // from v2.1 added 20.6.2015 'cmdopendir' : 'فŰȘŰ­ Ù…ŰŹÙ„ŰŻ', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Ű„Űčۧۯ۩ ŰȘŰčيين Űč۱۶ Ű§Ù„ŰčÙ…ÙˆŰŻ', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Ù…Ù„ŰĄ Ű§Ù„ŰŽŰ§ŰŽŰ©', // from v2.1.15 added 03.08.2016 'cmdmove' : 'نقل', // from v2.1.15 added 21.08.2016 'cmdempty' : 'ŰȘÙŰ±ÙŠŰș Ű§Ù„Ù…ŰŹÙ„ŰŻ', // from v2.1.25 added 22.06.2017 'cmdundo' : 'ŰȘ۱ۧۏŰč', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Ű„Űčۧۯ۩', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Ű§Ù„ŰȘÙŰ¶ÙŠÙ„Ű§ŰȘ', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'ŰȘŰ­ŰŻÙŠŰŻ Ű§Ù„ÙƒÙ„', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'ŰȘŰ­ŰŻÙŠŰŻ Ù„Ű§ ŰŽÙŠŰĄ', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'ŰčÙƒŰł Ű§Ù„Ű§ŰźŰȘÙŠŰ§Ű±', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'فŰȘŰ­ في Ù†Ű§ÙŰ°Ű© ŰŹŰŻÙŠŰŻŰ©', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Ű„ŰźÙŰ§ŰĄ (Ű§Ù„ŰŁÙŰ¶Ù„ÙŠŰ©)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Ű„ŰșÙ„Ű§Ù‚', 'btnSave' : 'Ű­ÙŰž', 'btnRm' : 'Ű„ŰČŰ§Ù„Ű©', 'btnApply' : 'ŰȘŰ·ŰšÙŠÙ‚', 'btnCancel' : 'Ű„Ù„Űșۧۥ', 'btnNo' : 'Ù„Ű§', 'btnYes' : 'نŰčم', 'btnMount' : 'ŰȘŰ«ŰšÙŠŰȘ', // added 18.04.2012 'btnApprove': 'Ű§Ù†ŰȘقل Ű„Ù„Ù‰ $1 ÙˆŰ§Ù„Ù…ÙˆŰ§ÙÙ‚Ű©', // from v2.1 added 26.04.2012 'btnUnmount': 'Ű„Ù„Űșۧۥ Ű§Ù„ŰȘŰ«ŰšÙŠŰȘ', // from v2.1 added 30.04.2012 'btnConv' : 'ŰȘŰ­ÙˆÙŠÙ„', // from v2.1 added 08.04.2014 'btnCwd' : 'Ù‡Ù†Ű§', // from v2.1 added 22.5.2015 'btnVolume' : 'Ű§Ù„Ű­ŰŹÙ…', // from v2.1 added 22.5.2015 'btnAll' : 'Ű§Ù„ÙƒÙ„', // from v2.1 added 22.5.2015 'btnMime' : 'نوŰč MIME', // from v2.1 added 22.5.2015 'btnFileName':'Ű„ŰłÙ… Ű§Ù„Ù…Ù„Ù', // from v2.1 added 22.5.2015 'btnSaveClose': 'Ű­ÙŰž ÙˆŰ„ŰșÙ„Ű§Ù‚', // from v2.1 added 12.6.2015 'btnBackup' : 'Ù†ŰłŰź ۭۧŰȘÙŠŰ§Ű·ÙŠ', // fromv2.1 added 28.11.2015 'btnRename' : 'Ű„Űčۧۯ۩ ŰȘŰłÙ…ÙŠŰ©', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Ű„Űčۧۯ۩ ŰȘŰłÙ…ÙŠŰ© (Ű§Ù„ŰŹÙ…ÙŠŰč)', // from v2.1.24 added 6.4.2017 'btnPrevious' : '($1/$2) Ű§Ù„ŰłŰ§ŰšÙ‚', // from v2.1.24 added 11.5.2017 'btnNext' : '($1/$2) Ű§Ù„ŰȘŰ§Ù„ÙŠ', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Ű­ÙŰž كــ', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'فŰȘŰ­ Ù…ŰŹÙ„ŰŻ', 'ntffile' : 'فŰȘŰ­ ملف', 'ntfreload' : 'Ű„Űčۧۯ۩ ŰȘŰ­Ù…ÙŠÙ„ Ù…Ű­ŰȘوى Ű§Ù„Ù…ŰŹÙ„ŰŻ', 'ntfmkdir' : 'Ű„Ù†ŰŽŰ§ŰĄ Ù…ŰŹÙ„ŰŻ', 'ntfmkfile' : 'Ű„Ù†ŰŽŰ§ŰĄ Ù…Ù„ÙŰ§ŰȘ', 'ntfrm' : 'Ű­Ű°Ù Ű§Ù„ŰčÙ†Ű§Ű”Ű±', 'ntfcopy' : 'Ù†ŰłŰź Ű§Ù„ŰčÙ†Ű§Ű”Ű±', 'ntfmove' : 'نقل Ű§Ű§Ù„ŰčÙ†Ű§Ű”Ű±', 'ntfprepare' : 'ÙŰ­Ű” Ű§Ù„ŰčÙ†Ű§Ű”Ű± Ű§Ù„Ù…ÙˆŰŹÙˆŰŻŰ©', 'ntfrename' : 'Ű„Űčۧۯ۩ ŰȘŰłÙ…ÙŠŰ© Ű§Ù„Ù…Ù„ÙŰ§ŰȘ', 'ntfupload' : 'ŰȘŰ­Ù…ÙŠÙ„ Ű§Ù„Ù…Ù„ÙŰ§ŰȘ', 'ntfdownload' : 'ŰȘنŰČيل Ű§Ù„Ù…Ù„ÙŰ§ŰȘ', 'ntfsave' : 'Ű­ÙŰž Ű§Ù„Ù…Ù„ÙŰ§ŰȘ', 'ntfarchive' : 'Ű„Ù†ŰŽŰ§ŰĄ ŰŁŰ±ŰŽÙŠÙ', 'ntfextract' : 'ۧ۳ŰȘ۟۱ۧۏ Ù…Ù„ÙŰ§ŰȘ من Ű§Ù„ŰŁŰ±ŰŽÙŠÙ', 'ntfsearch' : 'Ű§Ù„ŰšŰ­Ű« في Ű§Ù„Ù…Ù„ÙŰ§ŰȘ', 'ntfresize' : 'ŰȘŰșÙŠÙŠŰ± Ű­ŰŹÙ… Ű§Ù„Ű”ÙˆŰ±', 'ntfsmth' : 'Ű§Ù„Ù‚ÙŠŰ§Ù… ŰšŰŽÙŠŰĄ Ù…Ű§', 'ntfloadimg' : 'ŰȘŰ­Ù…ÙŠÙ„ Ű§Ù„Ű”ÙˆŰ±Ű©', 'ntfnetmount' : 'ŰȘŰ«ŰšÙŠŰȘ Ű­ŰŹÙ… Ű§Ù„ŰŽŰšÙƒŰ©', // added 18.04.2012 'ntfnetunmount': 'Ű„Ù„Űșۧۥ ŰȘŰ«ŰšÙŠŰȘ Ű­ŰŹÙ… Ű§Ù„ŰŽŰšÙƒŰ©', // from v2.1 added 30.04.2012 'ntfdim' : 'Ű§ÙƒŰȘ۳ۧۚ ŰŁŰšŰčۧۯ Ű§Ù„Ű”ÙˆŰ±Ű©', // added 20.05.2013 'ntfreaddir' : 'Ù‚Ű±Ű§ŰĄŰ© مŰčÙ„ÙˆÙ…Ű§ŰȘ Ű§Ù„Ù…ŰŹÙ„ŰŻ', // from v2.1 added 01.07.2013 'ntfurl' : 'Ű§Ù„Ű­Ű”ÙˆÙ„ Űčلى URL Ű§Ù„Ű±Ű§ŰšŰ·', // from v2.1 added 11.03.2014 'ntfchmod' : 'ŰȘŰșÙŠÙŠŰ± Ù†Ù…Ű· Ű§Ù„Ù…Ù„Ù', // from v2.1 added 20.6.2015 'ntfpreupload': 'Ű§Ù„ŰȘŰ­Ù‚Ù‚ من Ű§ŰłÙ… ملف Ű§Ù„ŰȘŰ­Ù…ÙŠÙ„', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Ű„Ù†ŰŽŰ§ŰĄ ملف للŰȘنŰČيل', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Ű§Ù„Ű­Ű”ÙˆÙ„ Űčلى مŰčÙ„ÙˆÙ…Ű§ŰȘ Ű§Ù„Ù…ŰłŰ§Ű±', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'مŰčŰ§Ù„ŰŹŰ© Ű§Ù„Ù…Ù„Ù Ű§Ù„Ù…Ű±ÙÙˆŰč', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Ű§Ù„Ù‚ÙŠŰ§Ù… ŰšŰ§Ù„Ű±Ù…ÙŠ في Ű§Ù„Ù‚Ù…Ű§Ù…Ű©', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Ű§Ù„Ù‚ÙŠŰ§Ù… ŰšŰ§Ù„Ű§ŰłŰȘŰčۧۯ۩ من ŰłÙ„Ű© Ű§Ù„Ù…Ù‡Ù…Ù„Ű§ŰȘ', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Ű§Ù„ŰȘŰ­Ù‚Ù‚ من Ù…ŰŹÙ„ŰŻ Ű§Ù„ÙˆŰŹÙ‡Ű©', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Ű§Ù„ŰȘ۱ۧۏŰč Űčن Ű§Ù„ŰčÙ…Ù„ÙŠŰ© Ű§Ù„ŰłŰ§ŰšÙ‚Ű©', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Ű„Űčۧۯ۩ Ű§Ù„ŰȘ۱ۧۏŰč Ű§Ù„ŰłŰ§ŰšÙ‚', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'ÙŰ­Ű” Ű§Ù„Ù…Ű­ŰȘÙˆÙŠŰ§ŰȘ', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'ŰșÙŠŰ± مŰčلوم', 'Today' : 'Ű§Ù„ÙŠÙˆÙ…', 'Yesterday' : 'Ű§Ù„ŰŁÙ…Űł', 'msJan' : 'ÙƒŰ§Ù†ÙˆÙ† Ű§Ù„Ű«Ű§Ù†ÙŠ', 'msFeb' : 'ێۚۧ۷', 'msMar' : '۹۰ۧ۱', 'msApr' : 'Ù†ÙŠŰłŰ§Ù†', 'msMay' : 'ŰŁÙŠŰ§Ű±', 'msJun' : 'Ű­ŰČÙŠŰ±Ű§Ù†', 'msJul' : 'ŰȘموŰČ', 'msAug' : '۹ۚ', 'msSep' : 'ŰŁÙŠÙ„ÙˆÙ„', 'msOct' : 'ŰȘŰŽŰ±ÙŠÙ† Ű§Ù„ŰŁÙˆÙ„', 'msNov' : 'ŰȘŰŽŰ±ÙŠÙ† Ű§Ù„Ű«Ű§Ù†ÙŠ', 'msDec' : 'ÙƒŰ§Ù†ÙˆÙ† Ű§Ù„ŰŁÙˆÙ„ ', 'January' : 'ÙƒŰ§Ù†ÙˆÙ† Ű§Ù„Ű«Ű§Ù†ÙŠ', 'February' : 'ێۚۧ۷', 'March' : '۹۰ۧ۱', 'April' : 'Ù†ÙŠŰłŰ§Ù†', 'May' : 'ŰŁÙŠŰ§Ű±', 'June' : 'Ű­ŰČÙŠŰ±Ű§Ù†', 'July' : 'ŰȘموŰČ', 'August' : '۹ۚ', 'September' : 'ŰŁÙŠÙ„ÙˆÙ„', 'October' : 'ŰȘŰŽŰ±ÙŠÙ† Ű§Ù„ŰŁÙˆÙ„', 'November' : 'ŰȘŰŽŰ±ÙŠÙ† Ű§Ù„Ű«Ű§Ù†ÙŠ', 'December' : 'ÙƒŰ§Ù†ÙˆÙ† Ű§Ù„Ű«Ű§Ù†ÙŠ', 'Sunday' : 'Ű§Ù„ŰŁŰ­ŰŻ', 'Monday' : 'Ű§Ù„Ű§Ű«Ù†ÙŠÙ†', 'Tuesday' : 'Ű§Ù„Ű«Ù„Ű§Ű«Ű§ŰĄ', 'Wednesday' : 'Ű§Ù„Ű„Ű±ŰšŰčۧۥ', 'Thursday' : 'Ű§Ù„ŰźÙ…ÙŠŰł', 'Friday' : 'Ű§Ù„ŰŹÙ…ŰčŰ©', 'Saturday' : 'Ű§Ù„ŰłŰšŰȘ', 'Sun' : 'Ű§Ù„ŰŁŰ­ŰŻ', 'Mon' : 'Ű§Ù„Ű§Ű«Ù†ÙŠÙ†', 'Tue' : 'Ű§Ù„Ű«Ù„Ű§Ű«Ű§ŰĄ', 'Wed' : 'Ű§Ù„Ű„Ű±ŰšŰčۧۥ', 'Thu' : 'Ű§Ù„ŰźÙ…ÙŠŰł', 'Fri' : 'Ű§Ù„ŰŹÙ…ŰčŰ©', 'Sat' : 'Ű§Ù„ŰłŰšŰȘ', /******************************** sort variants ********************************/ 'sortname' : 'ۭ۳ۚ Ű§Ù„Ű§ŰłÙ…', 'sortkind' : 'ۭ۳ۚ Ű§Ù„Ù†ÙˆŰč', 'sortsize' : 'ۭ۳ۚ Ű§Ù„Ű­ŰŹÙ…', 'sortdate' : 'ۭ۳ۚ Ű§Ù„ŰȘŰ§Ű±ÙŠŰź', 'sortFoldersFirst' : 'Ű§Ù„Ù…ŰŹÙ„ŰŻŰ§ŰȘ ŰŁÙˆÙ„Ű§', 'sortperm' : 'ۭ۳ۚ Ű§Ù„Ű”Ù„Ű§Ű­ÙŠŰ©', // from v2.1.13 added 13.06.2016 'sortmode' : 'ۭ۳ۚ Ű§Ù„Ù†Ù…Ű·', // from v2.1.13 added 13.06.2016 'sortowner' : 'ۭ۳ۚ Ű§Ù„Ù…Ű§Ù„Ùƒ', // from v2.1.13 added 13.06.2016 'sortgroup' : 'ۭ۳ۚ Ű§Ù„Ù…ŰŹÙ…ÙˆŰčŰ©', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'ŰŁÙŠŰ¶Ű§ Űč۱۶ Ű§Ù„ŰŽŰŹŰ±Ű©', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'file.txt ŰšŰŻÙˆÙ† ŰčÙ†ÙˆŰ§Ù†' : 'NewFile.txt', // added 10.11.2015 'Ù…ŰŹÙ„ŰŻ ŰšÙ„Ű§ ŰčÙ†ÙˆŰ§Ù†' : 'NewFolder', // added 10.11.2015 'Archive' : 'NewArchive', // from v2.1 added 10.11.2015 'untitled file' : 'NewFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: ملف', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Ű§Ù„ŰȘŰŁÙƒÙŠŰŻ Ù…Ű·Ù„ÙˆŰš', 'confirmRm' : 'هل ŰȘŰ±ÙŠŰŻ ŰšŰ§Ù„ŰȘŰŁÙƒÙŠŰŻ Ű„ŰČŰ§Ù„Ű© Ű§Ù„ŰčÙ†Ű§Ű”Ű± Ù†Ù‡Ű§ŰŠÙŠÙ‹Ű§ŰŸ
      Ù„Ű§ يمكن Ű§Ù„ŰȘ۱ۧۏŰč Űčن Ù‡Ű°Ű§ Ű§Ù„Ű„ŰŹŰ±Ű§ŰĄ! ', 'confirmRepl' : 'ۧ۳ŰȘŰšŰŻŰ§Ù„ Ű§Ù„Ù…Ù„Ù Ű§Ù„Ù‚ŰŻÙŠÙ… ŰšÙ…Ù„Ù ŰŹŰŻÙŠŰŻŰŸ (ۄ۰ۧ ÙƒŰ§Ù† ÙŠŰ­ŰȘوي Űčلى Ù…ŰŹÙ„ŰŻŰ§ŰȘ ی ÙŰłÙŠŰȘم ŰŻÙ…ŰŹÙ‡. Ù„Ù„Ù†ŰłŰź Ű§Ù„Ű§Ű­ŰȘÙŠŰ§Ű·ÙŠ ÙˆŰ§Ù„Ű§ŰłŰȘŰšŰŻŰ§Ù„ ی Ű­ŰŻŰŻ Ű§Ù„Ù†ŰłŰź Ű§Ù„Ű§Ű­ŰȘÙŠŰ§Ű·ÙŠ.)', 'confirmRest' : 'هل ŰȘŰ±ÙŠŰŻ ۧ۳ŰȘŰšŰŻŰ§Ù„ Ű§Ù„ŰčÙ†Ű”Ű± Ű§Ù„Ù…ÙˆŰŹÙˆŰŻ ŰšŰ§Ù„ŰčÙ†Ű”Ű± Ű§Ù„Ù…ÙˆŰŹÙˆŰŻ في Ű§Ù„Ù…Ù‡Ù…Ù„Ű§ŰȘ۟', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Ù„ÙŠŰł ŰšŰ”ÙŠŰșŰ© UTF-8
      Ű§Ù„ŰȘŰ­ÙˆÙŠÙ„ Ű„Ù„Ù‰ UTF-8۟
      ŰȘ۔ۭۚ Ű§Ù„Ù…Ű­ŰȘÙˆÙŠŰ§ŰȘ UTF-8 ŰšŰ§Ù„Ű­ÙŰž ŰšŰčŰŻ Ű§Ù„ŰȘŰ­ÙˆÙŠÙ„.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'ŰȘŰč۰۱ Ű§Ù„ÙƒŰŽÙ Űčن ŰȘŰ±Ù…ÙŠŰČ Ű§Ù„ŰŁŰ­Ű±Ù Ù„Ù‡Ű°Ű§ Ű§Ù„Ù…Ù„Ù. ŰȘŰ­ŰȘۧۏ Ű„Ù„Ù‰ Ű§Ù„ŰȘŰ­ÙˆÙŠÙ„ Ù…Ű€Ù‚ŰȘŰ§Ù‹ Ű„Ù„Ù‰ UTF-8 للŰȘŰ­Ű±ÙŠŰ±.
      Ű§Ù„Ű±ŰŹŰ§ŰĄ ŰȘŰ­ŰŻÙŠŰŻ ŰȘŰ±Ù…ÙŠŰČ Ű§Ù„ŰŁŰ­Ű±Ù Ù„Ù‡Ű°Ű§ Ű§Ù„Ù…Ù„Ù.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Ù„Ù‚ŰŻ ŰȘم ŰȘŰčŰŻÙŠÙ„Ù‡.
      Ù‚ŰŻ ŰȘ۟۳۱ Ű§Ù„Űčمل ۄ۰ۧ لم ŰȘقم ŰšŰ­ÙŰž Ű§Ù„ŰȘŰșÙŠÙŠŰ±Ű§ŰȘ.', // from v2.1 added 15.7.2015 'confirmTrash' : 'هل ŰŁÙ†ŰȘ مŰȘŰŁÙƒŰŻ ŰŁÙ†Ùƒ ŰȘŰ±ÙŠŰŻ نقل Ű§Ù„ŰčÙ†Ű§Ű”Ű± Ű„Ù„Ù‰ ŰłÙ„Ű© Ű§Ù„Ù…Ù‡Ù…Ù„Ű§ŰȘ۟', //from v2.1.24 added 29.4.2017 'confirmMove' : 'هل ŰŁÙ†ŰȘ مŰȘŰŁÙƒŰŻ ŰŁÙ†Ùƒ ŰȘŰ±ÙŠŰŻ نقل Ű§Ù„ŰčÙ†Ű§Ű”Ű± Ű„Ù„Ù‰ "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'ŰȘŰ·ŰšÙŠÙ‚ Űčلى Ű§Ù„ÙƒÙ„', 'name' : 'Ű§Ù„Ű§ŰłÙ…', 'size' : 'Ű§Ù„Ű­ŰŹÙ…', 'perms' : 'Ű§Ù„Ű”Ù„Ű§Ű­ÙŠŰ§ŰȘ', 'modify' : 'Ű§Ù„ŰȘŰčŰŻÙŠÙ„', 'kind' : 'Ű§Ù„Ù†ÙˆŰč', 'read' : 'Ù‚Ű§ŰšÙ„ Ù„Ù„Ù‚Ű±Ű§ŰĄŰ©', 'write' : 'Ù‚Ű§ŰšÙ„ للكŰȘۧۚ۩', 'noaccess' : 'ÙˆŰ”ÙˆÙ„ ممنوŰč', 'and' : 'و', 'unknown' : 'ŰșÙŠŰ± مŰčŰ±ÙˆÙ', 'selectall' : 'ŰȘŰ­ŰŻÙŠŰŻ كل Ű§Ù„ŰčÙ†Ű§Ű”Ű±', 'selectfiles' : 'ŰȘŰ­ŰŻÙŠŰŻ Ű§Ù„ŰčÙ†Ű§Ű”Ű±', 'selectffile' : 'ŰȘŰ­ŰŻÙŠŰŻ Ű§Ù„ŰčÙ†Ű”Ű± Ű§Ù„ŰŁÙˆÙ„', 'selectlfile' : 'ŰȘŰ­ŰŻÙŠŰŻ Ű§Ù„ŰčÙ†Ű”Ű± Ű§Ù„ŰŁŰźÙŠŰ±', 'viewlist' : 'Űč۱۶ Ű§Ù„Ù‚Ű§ŰŠÙ…Ű©', 'viewicons' : 'Űč۱۶ ŰŁÙŠÙ’Ù‚ÙˆÙ†Ű§ŰȘ', 'viewSmall' : 'ŰŁÙŠÙ‚ÙˆÙ†Ű§ŰȘ Ű”ŰșÙŠŰ±Ű©', // from v2.1.39 added 22.5.2018 'viewMedium' : 'ŰŁÙŠÙ‚ÙˆÙ†Ű§ŰȘ مŰȘÙˆŰłŰ·Ű©', // from v2.1.39 added 22.5.2018 'viewLarge' : 'ŰŁÙŠÙ‚ÙˆÙ†Ű§ŰȘ ÙƒŰšÙŠŰ±Ű©', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'ŰŁÙŠÙ‚ÙˆÙ†Ű§ŰȘ ÙƒŰšÙŠŰ±Ű© ŰŹŰŻŰ§Ù‹', // from v2.1.39 added 22.5.2018 'places' : 'Ű§Ù„Ù…ÙˆŰ§Ù‚Űč', 'calc' : 'ۭ۳ۧۚ', 'path' : 'Ű§Ù„Ù…ŰłŰ§Ű±', 'aliasfor' : 'Ű§ŰłÙ… Ù…ŰłŰȘŰčۧ۱ لـ', 'locked' : 'مقفل', 'dim' : 'Ű§Ù„ŰŁŰšŰčۧۯ', 'files' : 'Ù…Ù„ÙŰ§ŰȘ', 'folders' : 'Ù…ŰŹÙ„ŰŻŰ§ŰȘ', 'items' : 'ŰčÙ†Ű§Ű”Ű±', 'yes' : 'نŰčم', 'no' : 'Ù„Ű§', 'link' : 'Ű§Ù„Ű±Ű§ŰšŰ·', 'searcresult' : 'نŰȘۧۊۏ Ű§Ù„ŰšŰ­Ű«', 'selected' : 'Ű§Ù„ŰčÙ†Ű§Ű”Ű± Ű§Ù„Ù…Ű­ŰŻŰŻŰ©', 'about' : 'Ű­ÙˆÙ„', 'shortcuts' : 'Ű§Ù„Ű§ŰźŰȘ۔ۧ۱ۧŰȘ', 'help' : 'Ű§Ù„Ù…ŰłŰ§ŰčŰŻŰ©', 'webfm' : 'Ù…ŰŻÙŠŰ± Ù…Ù„ÙŰ§ŰȘ Ű§Ù„ÙˆÙŠŰš', 'ver' : 'Ű§Ù„Ű„Ű”ŰŻŰ§Ű±', 'protocolver' : 'ۄ۔ۯۧ۱ Ű§Ù„ŰšŰ±ŰȘوكول', 'homepage' : 'Ű±ŰŠÙŠŰłÙŠŰ© Ű§Ù„Ù…ŰŽŰ±ÙˆŰč', 'docs' : 'Ű§Ù„ÙˆŰ«Ű§ŰŠÙ‚', 'github' : 'ŰŽŰ§Ű±ÙƒÙ†Ű§ Űčلى Github', 'twitter' : 'ŰȘۧۚŰčÙ†Ű§ Űčلى ŰȘويŰȘ۱', 'facebook' : 'Ű§Ù†Ű¶Ù… Ű„Ù„ÙŠÙ†Ű§ Űčلى Ű§Ù„ÙÙŠŰł ŰšÙˆÙƒ', 'team' : 'Ű§Ù„ÙŰ±ÙŠÙ‚', 'chiefdev' : 'Ű±ŰŠÙŠŰł Ű§Ù„Ù…ŰšŰ±Ù…ŰŹÙŠÙ†', 'developer' : 'Ù…ŰšŰ±Ù…ŰŹ', 'contributor' : 'Ù…ŰłŰ§Ù‡Ù…', 'maintainer' : 'Ù…ŰŽŰ±Ù', 'translator' : 'مŰȘŰ±ŰŹÙ…', 'icons' : 'ŰŁÙŠÙ‚ÙˆÙ†Ű§ŰȘ', 'dontforget' : 'ÙˆÙ„Ű§ ŰȘÙ†Űł ŰŁÙ† ŰȘۣ۟۰ Ű§Ù„Ù…Ù†ŰŽÙŰ©', 'shortcutsof' : 'Ű§Ù„Ű§ŰźŰȘ۔ۧ۱ۧŰȘ ŰșÙŠŰ± مفŰčÙ„Ű©', 'dropFiles' : 'Ű„ÙÙ„Ű§ŰȘ Ű§Ù„Ù…Ù„ÙŰ§ŰȘ Ù‡Ù†Ű§', 'or' : 'ŰŁÙˆ', 'selectForUpload' : 'ۧ۟ŰȘ۱ Ű§Ù„Ù…Ù„ÙŰ§ŰȘ', 'moveFiles' : 'نقل Ű§Ù„ŰčÙ†Ű§Ű”Ű±', 'copyFiles' : 'Ù†ŰłŰź Ű§Ù„ŰčÙ†Ű§Ű”Ű±', 'restoreFiles' : 'ۧ۳ŰȘŰčۧۯ۩ Ű§Ù„ŰčÙ†Ű§Ű”Ű±', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Ű„ŰČŰ§Ù„Ű© من Ű§Ù„ŰŁÙ…Ű§ÙƒÙ†', 'aspectRatio' : 'ۧۚŰčۧۯ مŰȘŰČÙ†Ű©', 'scale' : 'Ù…Ù‚ÙŠŰ§Űł', 'width' : 'Űč۱۶', 'height' : 'Ű·ÙˆÙ„', 'resize' : 'ŰȘŰșÙŠÙŠŰ± Ű§Ù„Ű­ŰŹÙ…', 'crop' : 'Ù‚Ű”', 'rotate' : 'ŰȘŰŻÙˆÙŠŰ±', 'rotate-cw' : 'ۧ۳ŰȘۯۧ۱۩ 90 ۯ۱ۏ۩ مŰč ŰčÙ‚Ű§Ű±Űš Ű§Ù„ŰłŰ§ŰčŰ©', 'rotate-ccw' : 'ۧ۳ŰȘۯۧ۱۩ 90 ۯ۱ۏ۩ ŰčÙƒŰł ŰčÙ‚Ű§Ű±Űš Ű§Ù„ŰłŰ§ŰčŰ©', 'degree' : '°', 'netMountDialogTitle' : 'ŰȘŰ«ŰšÙŠŰȘ Ű­ŰŹÙ… Ű§Ù„ŰŽŰšÙƒŰ©', // added 18.04.2012 'protocol' : 'Ű§Ù„ŰšŰ±ÙˆŰȘوكول', // added 18.04.2012 'host' : 'Ű§Ù„Ù…Ű¶ÙŠÙ', // added 18.04.2012 'port' : 'Ű§Ù„Ù…Ù†ÙŰ°', // added 18.04.2012 'user' : 'Ű§Ù„Ù…ŰłŰȘŰźŰŻÙ…', // added 18.04.2012 'pass' : 'ÙƒÙ„Ù…Ű© Ű§Ù„Ù…Ű±ÙˆŰ±', // added 18.04.2012 'confirmUnmount' : 'هل ŰŁÙ†ŰȘ مŰȘŰŁÙƒŰŻ من Ű„Ù„Űșۧۥ ŰȘŰ«ŰšÙŠŰȘ $1۟', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'قم ŰšŰ„ŰłÙ‚Ű§Ű· ŰŁÙˆ Ù„Ű”Ù‚ Ű§Ù„Ù…Ù„ÙŰ§ŰȘ من Ű§Ù„Ù…ŰȘŰ”ÙŰ­', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'قم ŰšŰ„ŰłÙ‚Ű§Ű· Ű§Ù„Ù…Ù„ÙŰ§ŰȘ ŰŁÙˆ Ù„Ű”Ù‚ Ű§Ù„Ű±ÙˆŰ§ŰšŰ· ŰŁÙˆ Ű§Ù„Ű”ÙˆŰ± (Ű§Ù„Ű­Ű§ÙŰžŰ©) Ù‡Ù†Ű§', // from v2.1 added 07.04.2014 'encoding' : 'Ű§Ù„ŰȘŰ±Ù…ÙŠŰČ', // from v2.1 added 19.12.2014 'locale' : 'Ű§Ù„Ù„ŰșŰ©', // from v2.1 added 19.12.2014 'searchTarget' : 'Ű§Ù„Ù‡ŰŻÙ: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Ű§Ù„ŰšŰ­Ű« Űčن Ű·Ű±ÙŠÙ‚ Ű„ŰŻŰźŰ§Ù„ نوŰč MIME', // from v2.1 added 22.5.2015 'owner' : 'Ű§Ù„Ù…Ű§Ù„Ùƒ', // from v2.1 added 20.6.2015 'group' : 'Ű§Ù„Ù…ŰŹÙ…ÙˆŰčŰ©', // from v2.1 added 20.6.2015 'other' : 'ŰŁŰźŰ±Ù‰', // from v2.1 added 20.6.2015 'execute' : 'ŰȘÙ†ÙÙŠŰ°', // from v2.1 added 20.6.2015 'perm' : 'Ű§Ù„ŰȘŰ”Ű±ÙŠŰ­', // from v2.1 added 20.6.2015 'mode' : 'Ű§Ù„Ù†Ù…Ű·', // from v2.1 added 20.6.2015 'emptyFolder' : 'Ű§Ù„Ù…ŰŹÙ„ŰŻ ÙŰ§Ű±Űș', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Ű§Ù„Ù…ŰŹÙ„ŰŻ ÙŰ§Ű±Űș\\Ű„ÙÙ„Ű§ŰȘ Ù„Ű„Ű¶Ű§ÙŰ© ŰčÙ†Ű§Ű”Ű±', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Ű§Ù„Ù…ŰŹÙ„ŰŻ ÙŰ§Ű±Űș\\Ù†Ù‚Ű±Ű© Ű·ÙˆÙŠÙ„Ű© Ù„Ű„Ű¶Ű§ÙŰ© Ű§Ù„ŰčÙ†Ű§Ű”Ű±', // from v2.1.6 added 30.12.2015 'quality' : 'Ű§Ù„Ù†ÙˆŰčÙŠŰ©', // from v2.1.6 added 5.1.2016 'autoSync' : 'مŰČŰ§Ù…Ù†Ű© ŰąÙ„ÙŠŰ©', // from v2.1.6 added 10.1.2016 'moveUp' : 'ŰȘŰ­Ű±ÙŠÙƒ Ù„ŰŁŰčلى', // from v2.1.6 added 18.1.2016 'getLink' : 'Ű§Ù„Ű­Ű”ÙˆÙ„ Űčلى ۱ۧۚ۷ URL', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Ű§Ù„ŰčÙ†Ű§Ű”Ű± Ű§Ù„Ù…Ű­ŰŻŰŻŰ© ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'مŰčŰ±Ù Ű§Ù„Ù…ŰŹÙ„ŰŻ', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Ű§Ù„ŰłÙ…Ű§Ű­ ŰšŰ§Ù„ÙˆŰ”ÙˆÙ„ ŰŻÙˆÙ† ۧŰȘŰ”Ű§Ù„', // from v2.1.10 added 3.25.2016 'reAuth' : 'Ù„Ű„Űčۧۯ۩ Ű§Ù„Ù…Ű”Ű§ŰŻÙ‚Ű©', // from v2.1.10 added 3.25.2016 'nowLoading' : 'ŰŹŰ§Ű±ÙŠ Ű§Ù„ŰȘŰ­Ù…ÙŠÙ„ Ű§Ù„ŰąÙ†...', // from v2.1.12 added 4.26.2016 'openMulti' : 'فŰȘŰ­ Ù…Ù„ÙŰ§ŰȘ مŰȘŰčŰŻŰŻŰ©', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'ŰŁÙ†ŰȘ ŰȘŰ­Ű§ÙˆÙ„ فŰȘŰ­ $1 ملف. هل ŰŁÙ†ŰȘ مŰȘŰŁÙƒŰŻ ŰŁÙ†Ùƒ ŰȘŰ±ÙŠŰŻ Ű§Ù„ÙŰȘŰ­ في Ű§Ù„Ù…ŰȘŰ”ÙŰ­ŰŸ', // from v2.1.12 added 5.14.2016 'emptySearch' : 'نŰȘۧۊۏ Ű§Ù„ŰšŰ­Ű« ÙŰ§Ű±ŰșŰ© في Ù‡ŰŻÙ Ű§Ù„ŰšŰ­Ű«.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Ű„Ù†Ù‡Ű§ ŰȘقوم ŰšŰȘŰ­Ű±ÙŠŰ± ملف.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Ù„Ù‚ŰŻ قمŰȘ ŰšŰȘŰ­ŰŻÙŠŰŻ $1 ŰčÙ†Ű§Ű”Ű±.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'ÙŠÙˆŰŹŰŻ Ù„ŰŻÙŠÙƒ $1 ŰčÙ†Ű§Ű”Ű± في Ű§Ù„Ű­Ű§ÙŰžŰ©.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Ű§Ù„ŰšŰ­Ű« Ű§Ù„Ù…ŰȘŰČŰ§ÙŠŰŻ هو ÙÙ‚Ű· من Ű§Ù„Űč۱۶ Ű§Ù„Ű­Ű§Ù„ÙŠ.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Ű„Űčۧۯ۩', // from v2.1.15 added 3.8.2016 'complete' : '$1 Ű„ÙƒŰȘمل', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Ù‚Ű§ŰŠÙ…Ű© Ű§Ù„ŰłÙŠŰ§Ù‚', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Ù‚Ù„Űš Ű§Ù„Ű”ÙŰ­Ű©', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'ŰŹŰ°ÙˆŰ± Ű§Ù„Ű­ŰŹÙ…', // from v2.1.16 added 16.9.2016 'reset' : 'Ű„Űčۧۯ۩ ŰȘŰčيين', // from v2.1.16 added 1.10.2016 'bgcolor' : 'لون Ű§Ù„ŰźÙ„ÙÙŠŰ©', // from v2.1.16 added 1.10.2016 'colorPicker' : 'ۣۯۧ۩ Ű§Ù†ŰȘÙ‚Ű§ŰĄ Ű§Ù„Ù„ÙˆÙ†', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'ŰŽŰšÙƒŰ© 8 ŰšÙƒŰłÙ„', // from v2.1.16 added 4.10.2016 'enabled' : 'مفŰčل', // from v2.1.16 added 4.10.2016 'disabled' : 'مŰčŰ·Ù„', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'نŰȘۧۊۏ Ű§Ù„ŰšŰ­Ű« ÙŰ§Ű±ŰșŰ© في Ű§Ù„Űč۱۶ Ű§Ù„Ű­Ű§Ù„ÙŠ. \\ ۧ۶ŰșŰ· Űčلى [Enter] لŰȘÙˆŰłÙŠŰč Ù‡ŰŻÙ Ű§Ù„ŰšŰ­Ű«.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'نŰȘۧۊۏ Ű§Ù„ŰšŰ­Ű« Ű§Ù„Ű­Ű±Ù Ű§Ù„ŰŁÙˆÙ„ ÙŰ§Ű±ŰșŰ© في Ű§Ù„Űč۱۶ Ű§Ù„Ű­Ű§Ù„ÙŠ.', // from v2.1.23 added 24.3.2017 'textLabel' : 'ŰȘŰłÙ…ÙŠŰ© Ù†Ű”ÙŠŰ©', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 ŰŻÙ‚Ű§ŰŠÙ‚ ŰšŰ§Ù‚ÙŠŰ©', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Ű„Űčۧۯ۩ فŰȘŰ­ مŰč Ű§Ù„ŰȘŰ±Ù…ÙŠŰČ Ű§Ù„Ù…Ű­ŰŻŰŻ', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Ű­ÙŰž مŰč Ű§Ù„ŰȘŰ±Ù…ÙŠŰČ Ű§Ù„Ù…Ű­ŰŻŰŻ', // from v2.1.19 added 2.12.2016 'selectFolder' : 'ŰȘŰ­ŰŻÙŠŰŻ Ù…ŰŹÙ„ŰŻ', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Ű§Ù„ŰšŰ­Ű« ŰšŰ§Ù„Ű­Ű±Ù Ű§Ù„ŰŁÙˆÙ„', // from v2.1.23 added 24.3.2017 'presets' : 'Ű§Ù„Ű„ŰčۯۧۯۧŰȘ Ű§Ù„Ù…ŰłŰšÙ‚Ű©', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Ù‡Ù†Ű§Ùƒ ŰčŰŻŰŻ ÙƒŰšÙŠŰ± ŰŹŰŻŰ§Ù‹ من Ű§Ù„ŰčÙ†Ű§Ű”Ű± Ù„Ű°Ű§ Ù„Ű§ يمكن ÙˆŰ¶ŰčÙ‡Ű§ في ŰłÙ„Ű© Ű§Ù„Ù…Ù‡Ù…Ù„Ű§ŰȘ.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Ù…Ù†Ű·Ù‚Ű© Ű§Ù„Ù†Ű”', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Ű„ÙŰ±Ű§Űș Ű§Ù„Ù…ŰŹÙ„ŰŻ "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Ù„Ű§ ŰȘÙˆŰŹŰŻ ŰčÙ†Ű§Ű”Ű± في Ù…ŰŹÙ„ŰŻ "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Ű§Ù„ŰŁÙŰ¶Ù„ÙŠŰ©', // from v2.1.26 added 28.6.2017 'language' : 'Ű§Ù„Ù„ŰșŰ©', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'ŰȘÙ‡ÙŠŰŠŰ© Ű§Ù„Ű„ŰčۯۧۯۧŰȘ Ű§Ù„Ù…Ű­ÙÙˆŰžŰ© في Ù‡Ű°Ű§ Ű§Ù„Ù…ŰȘŰ”ÙŰ­', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Ű„ŰčۯۧۯۧŰȘ ŰŽŰ±ÙŠŰ· Ű§Ù„ŰŁŰŻÙˆŰ§ŰȘ', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 Ű­Ű±ÙˆÙ مŰȘŰšÙ‚ÙŠŰ©.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 ŰłŰ·ÙˆŰ± مŰȘŰšÙ‚ÙŠŰ©.', // from v2.1.52 added 16.1.2020 'sum' : 'Ű§Ù„Ù…ŰŹÙ…ÙˆŰč', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Ű­ŰŹÙ… ملف ŰȘÙ‚Ű±ÙŠŰšÙŠ', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Ű§Ù„ŰȘŰ±ÙƒÙŠŰČ Űčلى ŰčÙ†Ű”Ű± Ű§Ù„Ű­ÙˆŰ§Ű± مŰč ŰȘÙ…Ű±ÙŠŰ± Ű§Ù„Ù…Ű§ÙˆŰł', // from v2.1.30 added 2.11.2017 'select' : 'Ű­ŰŻŰŻ', // from v2.1.30 added 23.11.2017 'selectAction' : 'Ű§Ù„Ű„ŰŹŰ±Ű§ŰĄ ŰčÙ†ŰŻ ŰȘŰ­ŰŻÙŠŰŻ Ű§Ù„Ù…Ù„Ù', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Ű§Ù„ÙŰȘŰ­ ۚۧ۳ŰȘŰźŰŻŰ§Ù… Ű§Ù„Ù…Ű­Ű±Ű± Ű§Ù„Ù…ŰłŰȘŰźŰŻÙ… ۹۟۱ Ù…Ű±Ű©', // from v2.1.30 added 23.11.2017 'selectinvert' : 'ŰčÙƒŰł Ű§Ù„Ű§ŰźŰȘÙŠŰ§Ű±', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'هل ŰŁÙ†ŰȘ مŰȘŰŁÙƒŰŻ ŰŁÙ†Ùƒ ŰȘŰ±ÙŠŰŻ Ű„Űčۧۯ۩ ŰȘŰłÙ…ÙŠŰ© $1 ŰčÙ†Ű§Ű”Ű± Ù…Ű­ŰŻŰŻŰ© Ù…Ű«Ù„ $2۟
      Ù‡Ű°Ű§ Ù„Ű§ يمكن Ű§Ù„ŰȘ۱ۧۏŰč Űčنه !', // from v2.1.31 added 4.12.2017 'batchRename' : 'Ű„Űčۧۯ۩ ŰȘŰłÙ…ÙŠŰ© Ű§Ù„Ű­ŰČÙ…Ű©', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Ű±Ù‚Ù…', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Ű„Ű¶Ű§ÙŰ© ۚۧۯۊ۩', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Ű„Ű¶Ű§ÙŰ© Ù„Ű§Ű­Ù‚Ű©', // from v2.1.31 added 8.12.2017 'changeExtention' : 'ŰȘŰșÙŠÙŠŰ± Ű§Ù„Ű§Ù…ŰȘۯۧۯ', // from v2.1.31 added 8.12.2017 'columnPref' : 'Ű„ŰčۯۧۯۧŰȘ Ű§Ù„ŰŁŰčÙ…ŰŻŰ© (Űč۱۶ Ű§Ù„Ù‚Ű§ŰŠÙ…Ű©)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'ŰłŰȘنŰčÙƒŰł ŰŹÙ…ÙŠŰč Ű§Ù„ŰȘŰșÙŠÙŠŰ±Ű§ŰȘ Űčلى Ű§Ù„ÙÙˆŰ± Űčلى Ű§Ù„ŰŁŰ±ŰŽÙŠÙ.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'لن ŰȘنŰčÙƒŰł ŰŁÙŠ ŰȘŰșÙŠÙŠŰ±Ű§ŰȘ Ű­ŰȘى يŰȘم فك Ù‡Ű°Ű§ Ű§Ù„Ù…ŰŹÙ„ŰŻ.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Ű§Ù„Ù…ŰŹÙ„ŰŻ (Ű§Ù„Ù…ŰŹÙ„ŰŻŰ§ŰȘ) Ű§Ù„ŰȘŰ§Ù„ÙŠŰ© Ű§Ù„Ù…Ű±ÙƒŰšŰ© Űčلى Ù‡Ű°Ű§ Ű§Ù„Ù…ŰŹÙ„ŰŻ ŰșÙŠŰ± Ù…Ű«ŰšŰȘŰ© ŰŁÙŠŰ¶Ű§Ù‹. هل ŰŁÙ†ŰȘ مŰȘŰŁÙƒŰŻ من Ű„Ù„Űșۧۥ ŰȘŰ­Ù…ÙŠÙ„Ù‡ŰŸ', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'مŰčÙ„ÙˆÙ…Ű§ŰȘ Ű§Ù„ŰȘŰ­ŰŻÙŠŰŻ', // from v2.1.33 added 7.3.2018 'hashChecker' : 'ŰźÙˆŰ§Ű±ŰČÙ…ÙŠŰ§ŰȘ Ù„Ű„ŰžÙ‡Ű§Ű± ŰȘŰŹŰČŰŠŰ© Ű§Ù„Ù…Ù„Ù', // from v2.1.33 added 10.3.2018 'infoItems' : 'ŰčÙ†Ű§Ű”Ű± Ű§Ù„Ù…ŰčÙ„ÙˆÙ…Ű§ŰȘ (Ù„ÙˆŰ­Ű© مŰčÙ„ÙˆÙ…Ű§ŰȘ Ű§Ù„ŰȘŰ­ŰŻÙŠŰŻ)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'ۧ۶ŰșŰ· Ù…Ű±Ű© ŰŁŰźŰ±Ù‰ Ù„Ù„ŰźŰ±ÙˆŰŹ.', // from v2.1.38 added 1.4.2018 'toolbar' : 'ŰŽŰ±ÙŠŰ· Ű§Ù„ŰŁŰŻÙˆŰ§ŰȘ', // from v2.1.38 added 4.4.2018 'workspace' : 'Ù…ŰłŰ§Ű­Ű© Ű§Ù„Űčمل', // from v2.1.38 added 4.4.2018 'dialog' : 'Ű§Ù„Ű­ÙˆŰ§Ű±', // from v2.1.38 added 4.4.2018 'all' : 'Ű§Ù„ÙƒÙ„', // from v2.1.38 added 4.4.2018 'iconSize' : 'Ű­ŰŹÙ… Ű§Ù„ŰŁÙŠÙ‚ÙˆÙ†Ű© (Űč۱۶ Ű§Ù„ŰŁÙŠÙ‚ÙˆÙ†Ű§ŰȘ)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Ű§ÙŰȘŰ­ Ù†Ű§ÙŰ°Ű© Ű§Ù„Ù…Ű­Ű±Ű± Ű§Ù„Ù…ÙƒŰšŰ±Ű©', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Ù†ŰžŰ±Ű§Ù‹ لŰčŰŻÙ… ŰȘÙˆÙŰ± Ű§Ù„ŰȘŰ­ÙˆÙŠÙ„ ŰšÙˆŰ§ŰłŰ·Ű© API Ű­Ű§Ù„ÙŠŰ§Ù‹ ی ÙŠŰ±ŰŹÙ‰ Ű§Ù„ŰȘŰ­ÙˆÙŠÙ„ Űčلى موقŰč Ű§Ù„ÙˆÙŠŰš.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'ŰšŰčŰŻ Ű§Ù„ŰȘŰ­ÙˆÙŠÙ„ ی ÙŠŰŹŰš ŰŁÙ† ŰȘقوم ŰšŰ§Ù„ŰȘŰ­Ù…ÙŠÙ„ مŰč ŰčÙ†ÙˆŰ§Ù† ۱ۧۚ۷ Ű§Ù„ŰčÙ†Ű”Ű± ŰŁÙˆ Ű§Ù„Ù…Ù„Ù Ű§Ù„Ű°ÙŠ ŰȘم ŰȘنŰČيله Ù„Ű­ÙŰž Ű§Ù„Ù…Ù„Ù Ű§Ù„Ù…Ű­ÙˆÙ„.', //from v2.1.40 added 8.7.2018 'convertOn' : 'ŰȘŰ­ÙˆÙŠÙ„ Űčلى موقŰč $1', // from v2.1.40 added 10.7.2018 'integrations' : 'ŰȘÙƒŰ§Ù…Ù„Ű§ŰȘ', // from v2.1.40 added 11.7.2018 'integrationWith' : 'ÙŠŰ­ŰȘوي elFinder Űčلى Ű§Ù„ŰźŰŻÙ…Ű§ŰȘ Ű§Ù„ŰźŰ§Ű±ŰŹÙŠŰ© Ű§Ù„ŰȘŰ§Ù„ÙŠŰ© Ű§Ù„Ù…ŰȘÙƒŰ§Ù…Ù„Ű©. ÙŠŰ±ŰŹÙ‰ Ű§Ù„ŰȘŰ­Ù‚Ù‚ من ŰŽŰ±ÙˆŰ· Ű§Ù„Ű§ŰłŰȘŰźŰŻŰ§Ù… ÙˆŰłÙŠŰ§ŰłŰ© Ű§Ù„ŰźŰ”ÙˆŰ”ÙŠŰ© ÙˆÙ…Ű§ Ű„Ù„Ù‰ Ű°Ù„Ùƒ Ù‚ŰšÙ„ ۧ۳ŰȘŰźŰŻŰ§Ù…Ù‡Ű§.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Ű„ŰžÙ‡Ű§Ű± Ű§Ù„ŰčÙ†Ű§Ű”Ű± Ű§Ù„Ù…ŰźÙÙŠŰ©', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Ű„ŰźÙŰ§ŰĄ Ű§Ù„ŰčÙ†Ű§Ű”Ű± Ű§Ù„Ù…ŰźÙÙŠŰ©', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Ű„ŰžÙ‡Ű§Ű± / Ű„ŰźÙŰ§ŰĄ Ű§Ù„ŰčÙ†Ű§Ű”Ű± Ű§Ù„Ù…ŰźÙÙŠŰ©', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'ŰŁÙ†ÙˆŰ§Űč Ű§Ù„Ù…Ù„ÙŰ§ŰȘ لŰȘفŰčÙŠÙ„Ù‡Ű§ مŰč "ملف ŰŹŰŻÙŠŰŻ"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'نوŰč Ű§Ù„Ù…Ù„Ù Ű§Ù„Ù†Ű”ÙŠ', // from v2.1.41 added 7.8.2018 'add' : 'Ű„Ű¶Ű§ÙŰ©', // from v2.1.41 added 7.8.2018 'theme' : 'Ű§Ù„Ű«ÙŠÙ…', // from v2.1.43 added 19.10.2018 'default' : 'Ű§Ù„Ű§ÙŰȘŰ±Ű§Ű¶ÙŠ', // from v2.1.43 added 19.10.2018 'description' : 'Ű§Ù„ÙˆŰ”Ù', // from v2.1.43 added 19.10.2018 'website' : 'Ű§Ù„Ù…ÙˆÙ‚Űč Ű§Ù„Ű§Ù„ÙƒŰȘŰ±ÙˆÙ†ÙŠ', // from v2.1.43 added 19.10.2018 'author' : 'Ű§Ù„Ù…Ű€Ù„Ù', // from v2.1.43 added 19.10.2018 'email' : 'Ű§Ù„ŰšŰ±ÙŠŰŻ Ű§Ù„Ű§Ù„ÙƒŰȘŰ±ÙˆÙ†ÙŠ', // from v2.1.43 added 19.10.2018 'license' : 'Ű§Ù„Ű±ŰźŰ”Ű©', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Ù„Ű§ يمكن Ű­ÙŰž Ù‡Ű°Ű§ Ű§Ù„ŰčÙ†Ű”Ű±. لŰȘŰŹÙ†Űš ÙÙ‚ŰŻŰ§Ù† Ű§Ù„ŰȘŰ­Ű±ÙŠŰ±Ű§ŰȘ Ű§Ù„ŰȘي ŰȘŰ­ŰȘŰ§ŰŹÙ‡Ű§ للŰȘŰ”ŰŻÙŠŰ± Ű„Ù„Ù‰ ŰŹÙ‡Ű§ŰČ Ű§Ù„ÙƒÙ…ŰšÙŠÙˆŰȘ۱ Ű§Ù„ŰźŰ§Ű” ŰšÙƒ.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Ű§Ù†Ù‚Ű± Ù†Ù‚Ű±Ű§Ù‹ مŰČŰŻÙˆŰŹŰ§Ù‹ فوق Ű§Ù„Ù…Ù„Ù لŰȘŰ­ŰŻÙŠŰŻÙ‡.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'ۧ۳ŰȘŰźŰŻŰ§Ù… ÙˆŰ¶Űč Ù…Ù„ŰĄ Ű§Ù„ŰŽŰ§ŰŽŰ©', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'ŰșÙŠŰ± مŰčŰ±ÙˆÙ', 'kindRoot' : 'ۏ۰۱ Ű§Ù„Ű­ŰŹÙ…', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Ù…ŰŹÙ„ŰŻ', 'kindSelects' : 'Ù…ŰźŰȘۧ۱ۧŰȘ', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Ű§ŰłÙ… Ù…ŰłŰȘŰčۧ۱', 'kindAliasBroken' : 'Ű§ŰłÙ… Ù…ŰłŰȘŰčۧ۱ Ù…ÙƒŰłÙˆŰ±', // applications 'kindApp' : 'Ű§Ù„ŰȘŰ·ŰšÙŠÙ‚', 'kindPostscript' : 'ÙˆŰ«ÙŠÙ‚Ű© Postscript', 'kindMsOffice' : 'ÙˆŰ«ÙŠÙ‚Ű© Microsoft Office', 'kindMsWord' : 'ÙˆŰ«ÙŠÙ‚Ű© Microsoft Word', 'kindMsExcel' : 'ÙˆŰ«ÙŠÙ‚Ű© Microsoft Excel', 'kindMsPP' : 'Űč۱۶ ŰȘÙ‚ŰŻÙŠÙ…ÙŠ Microsoft Powerpoint', 'kindOO' : 'ÙˆŰ«ÙŠÙ‚Ű© Open Office', 'kindAppFlash' : 'ŰȘŰ·ŰšÙŠÙ‚ ÙÙ„Ű§ŰŽ', 'kindPDF' : 'ŰȘÙ†ŰłÙŠÙ‚ Ű§Ù„ÙˆŰ«Ű§ŰŠÙ‚ Ű§Ù„Ù…Ű­Ù…ÙˆÙ„Ű© (PDF)', 'kindTorrent' : 'ملف Bittorrent ', 'kind7z' : 'ŰŁŰ±ŰŽÙŠÙ 7z', 'kindTAR' : 'ŰŁŰ±ŰŽÙŠÙ TAR', 'kindGZIP' : 'ŰŁŰ±ŰŽÙŠÙ GZIP', 'kindBZIP' : 'ŰŁŰ±ŰŽÙŠÙ BZIP', 'kindXZ' : 'ŰŁŰ±ŰŽÙŠÙ XZ', 'kindZIP' : 'ŰŁŰ±ŰŽÙŠÙ ZIP', 'kindRAR' : 'ŰŁŰ±ŰŽÙŠÙ RAR', 'kindJAR' : 'ŰŁŰ±ŰŽÙŠÙ Java JAR', 'kindTTF' : '۟۷ True Type ', 'kindOTF' : '۟۷ Open Type ', 'kindRPM' : 'Ű­ŰČÙ…Ű© RPM', // texts 'kindText' : 'ÙˆŰ«ÙŠÙ‚Ű© Ù†Ű”ÙŠŰ©', 'kindTextPlain' : 'Ù†Ű” ŰčŰ§ŰŻÙŠ', 'kindPHP' : 'Ù…Ű”ŰŻŰ± PHP', 'kindCSS' : 'ÙˆŰ±Ù‚Ű© Ű§Ù„ŰŁÙ†Ù…Ű§Ű· Ű§Ù„Ù…ŰȘŰȘŰ§Ù„ÙŠŰ©', 'kindHTML' : 'ÙˆŰ«ÙŠÙ‚Ű© HTML', 'kindJS' : 'Ù…Ű”ŰŻŰ± Javascript', 'kindRTF' : 'Rich Text Format', 'kindC' : 'Ù…Ű”ŰŻŰ± C', 'kindCHeader' : 'Ù…Ű”ŰŻŰ± C header', 'kindCPP' : 'Ù…Ű”ŰŻŰ± C++', 'kindCPPHeader' : 'Ù…Ű”ŰŻŰ± C++ header', 'kindShell' : 'Ù…Ű”ŰŻŰ± Unix shell', 'kindPython' : 'Ù…Ű”ŰŻŰ± Python', 'kindJava' : 'Ù…Ű”ŰŻŰ± Java', 'kindRuby' : 'Ù…Ű”ŰŻŰ± Ruby', 'kindPerl' : 'Ù…Ű”ŰŻŰ± Perl', 'kindSQL' : 'Ù…Ű”ŰŻŰ± SQL', 'kindXML' : 'ÙˆŰ«ÙŠÙ‚Ű© XML', 'kindAWK' : 'Ù…Ű”ŰŻŰ± AWK', 'kindCSV' : 'ملف CSV', 'kindDOCBOOK' : 'ÙˆŰ«ÙŠÙ‚Ű© Docbook XML', 'kindMarkdown' : 'Ù†Ű” Markdown', // added 20.7.2015 // images 'kindImage' : 'Ű”ÙˆŰ±Ű©', 'kindBMP' : 'Ű”ÙˆŰ±Ű© BMP', 'kindJPEG' : 'Ű”ÙˆŰ±Ű© JPEG', 'kindGIF' : 'Ű”ÙˆŰ±Ű© GIF', 'kindPNG' : 'Ű”ÙˆŰ±Ű© PNG', 'kindTIFF' : 'Ű”ÙˆŰ±Ű© TIFF', 'kindTGA' : 'Ű”ÙˆŰ±Ű© TGA', 'kindPSD' : 'Ű”ÙˆŰ±Ű© Adobe Photoshop', 'kindXBITMAP' : 'Ű”ÙˆŰ±Ű© X bitmap', 'kindPXM' : 'Ű”ÙˆŰ±Ű© Pixelmator', // media 'kindAudio' : 'ÙˆŰłŰ§ŰŠŰ· Ű”ÙˆŰȘ', 'kindAudioMPEG' : 'ملف Ű”ÙˆŰȘي MPEG ', 'kindAudioMPEG4' : 'ملف Ű”ÙˆŰȘي MPEG-4', 'kindAudioMIDI' : 'ملف Ű”ÙˆŰȘي MIDI', 'kindAudioOGG' : 'ملف Ű”ÙˆŰȘي Ogg Vorbis', 'kindAudioWAV' : 'ملف Ű”ÙˆŰȘي WAV', 'AudioPlaylist' : 'Ù‚Ű§ŰŠÙ…Ű© ŰȘŰŽŰșيل MP3', 'kindVideo' : 'ÙˆŰłŰ§ŰŠŰ· ÙÙŠŰŻÙŠÙˆ', 'kindVideoDV' : 'ملف ÙÙŠŰŻÙŠÙˆ DV', 'kindVideoMPEG' : 'ملف ÙÙŠŰŻÙŠÙˆ MPEG', 'kindVideoMPEG4' : 'ملف ÙÙŠŰŻÙŠÙˆ MPEG-4', 'kindVideoAVI' : 'ملف ÙÙŠŰŻÙŠÙˆ AVI', 'kindVideoMOV' : 'ملف ÙÙŠŰŻÙŠÙˆ Quick Time', 'kindVideoWM' : 'ملف ÙÙŠŰŻÙŠÙˆ Windows Media', 'kindVideoFlash' : 'ملف ÙÙŠŰŻÙŠÙˆ Flash', 'kindVideoMKV' : 'ملف ÙÙŠŰŻÙŠÙˆ Matroska', 'kindVideoOGG' : 'ملف ÙÙŠŰŻÙŠÙˆ Ogg' } }; })); application/library/js/i18n/elfinder.hu.js000064400000102371147577724760014505 0ustar00/** * Hungarian translation * @author GĂĄspĂĄr Lajos * @author karrak1 * @version 2020-11-27 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.hu = { translator : 'GĂĄspĂĄr Lajos <info@glsys.eu>, karrak1', language : 'Hungarian', direction : 'ltr', dateFormat : 'Y.F.d H:i:s', // will show like: 2020.November.27 20:52:18 fancyDateFormat : '$1 H:i', // will show like: Ma 20:52 nonameDateFormat : 'ymd-His', // noname upload will show like: 201127-205218 messages : { /********************************** errors **********************************/ 'error' : 'Hiba', 'errUnknown' : 'Ismeretlen hiba.', 'errUnknownCmd' : 'Ismeretlen parancs.', 'errJqui' : 'HibĂĄs jQuery UI konfigurĂĄciĂł. A "selectable", "draggable" Ă©s a "droppable" komponensek szĂŒksĂ©gesek.', 'errNode' : 'Az elFinder "DOM" elem lĂ©trehozĂĄsĂĄt igĂ©nyli.', 'errURL' : 'HibĂĄs elFinder konfigurĂĄciĂł! "URL" paramĂ©ter nincs megadva.', 'errAccess' : 'HozzĂĄfĂ©rĂ©s megtagadva.', 'errConnect' : 'Nem sikerĂŒlt csatlakozni a kiszolgĂĄlĂłhoz.', 'errAbort' : 'Kapcsolat megszakĂ­tva.', 'errTimeout' : 'Kapcsolat idƑtĂșllĂ©pĂ©s.', 'errNotFound' : 'A backend nem elĂ©rhetƑ.', 'errResponse' : 'HibĂĄs backend vĂĄlasz.', 'errConf' : 'HibĂĄs backend konfigurĂĄciĂł.', 'errJSON' : 'PHP JSON modul nincs telepĂ­tve.', 'errNoVolumes' : 'Nem ĂĄllnak rendelkezĂ©sre olvashatĂł kötetek.', 'errCmdParams' : 'Ă©rvĂ©nytelen paramĂ©terek a parancsban. ("$1")', 'errDataNotJSON' : 'A vĂĄlasz nem JSON tĂ­pusĂș adat.', 'errDataEmpty' : 'Nem Ă©rkezett adat.', 'errCmdReq' : 'A backend kĂ©relem parancsnevet igĂ©nyel.', 'errOpen' : '"$1" megnyitĂĄsa nem sikerĂŒlt.', 'errNotFolder' : 'Az objektum nem egy mappa.', 'errNotFile' : 'Az objektum nem egy fĂĄjl.', 'errRead' : '"$1" olvasĂĄsa nem sikerĂŒlt.', 'errWrite' : '"$1" Ă­rĂĄsa nem sikerĂŒlt.', 'errPerm' : 'EngedĂ©ly megtagadva.', 'errLocked' : '"$1" zĂĄrolĂĄs alatt van, Ă©s nem lehet ĂĄtnevezni, mozgatni vagy eltĂĄvolĂ­tani.', 'errExists' : '"$1" nevƱ fĂĄjl mĂĄr lĂ©tezik.', 'errInvName' : 'ÉrvĂ©nytelen fĂĄljnĂ©v.', 'errInvDirname' : 'Invalid folder name.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Mappa nem talĂĄlhatĂł.', 'errFileNotFound' : 'FĂĄjl nem talĂĄlhatĂł.', 'errTrgFolderNotFound' : 'CĂ©l mappa nem talĂĄlhatĂł. ("$1")', 'errPopup' : 'A böngĂ©szƑ megakadĂĄlyozta egy felugrĂł ablak megnyitĂĄsĂĄt. A fĂĄjl megnyitĂĄsĂĄt tegye lehetƑvĂ© a böngĂ©szƑ beĂĄllitĂĄsaiban.', 'errMkdir' : '"$1" mappa lĂ©trehozĂĄsa sikertelen.', 'errMkfile' : '"$1" fĂĄjl lĂ©trehozĂĄsa sikertelen.', 'errRename' : '"$1" ĂĄtnevezĂ©se sikertelen.', 'errCopyFrom' : 'FĂĄjlok mĂĄsolĂĄsa a kötetrƑl nem megengedett. ("$1")', 'errCopyTo' : 'FĂĄjlok mĂĄsolĂĄsa a kötetre nem megengedett. ("$1")', 'errMkOutLink' : 'HivatkozĂĄs lĂ©trehozĂĄsa a root köteten kĂ­vĂŒl nem megengedett.', // from v2.1 added 03.10.2015 'errUpload' : 'FeltöltĂ©si hiba.', // old name - errUploadCommon 'errUploadFile' : 'Nem sikerĂŒlt a fĂĄjlt feltölteni. ($1)', // old name - errUpload 'errUploadNoFiles' : 'Nem talĂĄlhatĂł fĂĄjl feltöltĂ©shez.', 'errUploadTotalSize' : 'Az adat meghaladja a maximĂĄlisan megengedett mĂ©retet.', // old name - errMaxSize 'errUploadFileSize' : 'A fĂĄjl meghaladja a maximĂĄlisan megengedett mĂ©retet.', // old name - errFileMaxSize 'errUploadMime' : 'A fĂĄjltĂ­pus nem engedĂ©lyezett.', 'errUploadTransfer' : '"$1" transzfer hiba.', 'errUploadTemp' : 'Sikertelen az ideiglenes fĂĄjl lĂ©terhezozĂĄsa feltöltĂ©shez.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Az objektum "$1" mĂĄr lĂ©tezik ezen a helyen, Ă©s nem lehet cserĂ©lni mĂĄsik tĂ­pusra', // new 'errReplace' : '"$1" nem cserĂ©lhetƑ.', 'errSave' : '"$1" mentĂ©se nem sikerĂŒlt.', 'errCopy' : '"$1" mĂĄsolĂĄsa nem sikerĂŒlt.', 'errMove' : '"$1" ĂĄthelyezĂ©se nem sikerĂŒlt.', 'errCopyInItself' : '"$1" nem mĂĄsolhatĂł sajĂĄt magĂĄra.', 'errRm' : '"$1" törlĂ©se nem sikerĂŒlt.', 'errTrash' : 'Unable into trash.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'ForrĂĄsfĂĄjl(ok) eltĂĄvolĂ­tĂĄsa sikertelen.', 'errExtract' : 'Nem sikerĂŒlt kikibontani a "$1" fĂĄjlokat.', 'errArchive' : 'Nem sikerĂŒlt lĂ©trehozni az archĂ­vumot.', 'errArcType' : 'Nem tĂĄmogatott archĂ­vum tĂ­pus.', 'errNoArchive' : 'A fĂĄjl nem archĂ­v, vagy nem tĂĄmogatott archĂ­vumtĂ­pust tartalmaz.', 'errCmdNoSupport' : 'A backend nem tĂĄmogatja ezt a parancsot.', 'errReplByChild' : 'Az „$1” mappĂĄt nem lehet helyettesĂ­teni egy abban talĂĄlhatĂł elemmel.', 'errArcSymlinks' : 'BiztonsĂĄgi okokbĂłl az archĂ­vumok kicsomagolĂĄsĂĄnak megtagadĂĄsa szimbolikus linkeket vagy fĂĄjlokat tartalmaz, amelyek nem engedĂ©lyezettek.', // edited 24.06.2012 'errArcMaxSize' : 'Az archĂ­v fĂĄjlok meghaladjĂĄk a megengedett legnagyobb mĂ©retet.', 'errResize' : 'Nem lehet ĂĄtmĂ©retezni a (z) "$1".', 'errResizeDegree' : 'ÉrvĂ©nytelen forgatĂĄsi fok.', // added 7.3.2013 'errResizeRotate' : 'Nem lehet elforgatni a kĂ©pet.', // added 7.3.2013 'errResizeSize' : 'ÉrvĂ©nytelen kĂ©pmĂ©ret.', // added 7.3.2013 'errResizeNoChange' : 'A kĂ©p mĂ©rete nem vĂĄltozott.', // added 7.3.2013 'errUsupportType' : 'Nem tĂĄmogatott fĂĄjl tĂ­pus', 'errNotUTF8Content' : 'Az "$1" fĂĄjl nincs az UTF-8-ban, Ă©s nem szerkeszthetƑ.', // added 9.11.2011 'errNetMount' : 'Nem lehet beilleszteni a(z) "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Nem tĂĄmogatott protokoll.', // added 17.04.2012 'errNetMountFailed' : 'A csatlakozĂĄs nem sikerĂŒlt.', // added 17.04.2012 'errNetMountHostReq' : 'Host szĂŒksĂ©ges.', // added 18.04.2012 'errSessionExpires' : 'A session inaktivitĂĄs miatt lejĂĄrt.', 'errCreatingTempDir' : 'Nem lehet ideiglenes könyvtĂĄrat lĂ©trehozni: "$1"', 'errFtpDownloadFile' : 'Nem lehet letölteni a fĂĄjlt az FTP-rƑl: "$1"', 'errFtpUploadFile' : 'Nem lehet feltölteni a fĂĄjlt az FTP-re: "$1"', 'errFtpMkdir' : 'Nem sikerĂŒlt tĂĄvoli könyvtĂĄrat lĂ©trehozni az FTP-n: "$1"', 'errArchiveExec' : 'Hiba a fĂĄjlok archivĂĄlĂĄsakor: "$1"', 'errExtractExec' : 'Hiba a fĂĄjlok kibontĂĄsakor: "$1"', 'errNetUnMount' : 'Nem lehet levĂĄlasztani', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Nem konvertĂĄlhatĂł UTF-8-ra', // from v2.1 added 08.04.2014 'errFolderUpload' : 'PrĂłbĂĄlja ki a Google Chrome-ot, ha szeretnĂ© feltölteni a mappĂĄt.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'DƑtĂșllĂ©pĂ©s a(z) "$1" keresĂ©se közben. A keresĂ©si eredmĂ©ny rĂ©szleges.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Új engedĂ©lyre van szĂŒksĂ©g.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Max number of selectable items is $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Unable to restore from the trash. Can\'t identify the restore destination.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor not found to this file type.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Error occurred on the server side.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Unable to empty folder "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'There are $1 more errors.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'ArchĂ­vum lĂ©trehozĂĄsa', 'cmdback' : 'Vissza', 'cmdcopy' : 'MĂĄsolĂĄs', 'cmdcut' : 'KivĂĄgĂĄs', 'cmddownload' : 'LetöltĂ©s', 'cmdduplicate' : 'MĂĄsolat kĂ©szĂ­tĂ©s', 'cmdedit' : 'SzerkesztĂ©s', 'cmdextract' : 'KibontĂĄs', 'cmdforward' : 'ElƑre', 'cmdgetfile' : 'FĂĄjlok kijelölĂ©se', 'cmdhelp' : 'ErrƑl a programrĂłl...', 'cmdhome' : 'FƑkönyvtĂĄr', 'cmdinfo' : 'TulajdonsĂĄgok', 'cmdmkdir' : 'Új mappa', 'cmdmkdirin' : 'Új mappĂĄba', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Új fĂĄjl', 'cmdopen' : 'MegnyitĂĄs', 'cmdpaste' : 'BeillesztĂ©s', 'cmdquicklook' : 'ElƑnĂ©zet', 'cmdreload' : 'FrissĂ­tĂ©s', 'cmdrename' : 'ÁtnevezĂ©s', 'cmdrm' : 'TörlĂ©s', 'cmdtrash' : 'Into trash', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Restore', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'KeresĂ©s', 'cmdup' : 'UgrĂĄs a szĂŒlƑmappĂĄba', 'cmdupload' : 'FeltöltĂ©s', 'cmdview' : 'NĂ©zet', 'cmdresize' : 'ÁtmĂ©retezĂ©s Ă©s forgatĂĄs', 'cmdsort' : 'RendezĂ©s', 'cmdnetmount' : 'Csatlakoztassa a hĂĄlĂłzat hangerejĂ©t', // added 18.04.2012 'cmdnetunmount': 'LevĂĄlaszt', // from v2.1 added 30.04.2012 'cmdplaces' : 'Helyekhez', // added 28.12.2014 'cmdchmod' : 'MĂłdvĂĄltĂĄs', // from v2.1 added 20.6.2015 'cmdopendir' : 'Mappa megnyitĂĄsa', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'ÁllĂ­tsa vissza az oszlop szĂ©lessĂ©gĂ©t', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Full Screen', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Move', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Empty the folder', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Undo', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Redo', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Select all', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Select none', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Invert selection', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Open in new window', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Hide (Preference)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'BezĂĄr', 'btnSave' : 'Ment', 'btnRm' : 'Töröl', 'btnApply' : 'Alkalmaz', 'btnCancel' : 'MĂ©gsem', 'btnNo' : 'Nem', 'btnYes' : 'Igen', 'btnMount' : 'Csatlakoztat', // added 18.04.2012 'btnApprove': 'TovĂĄbb $1 Ă©s jĂłvĂĄhagyĂĄs', // from v2.1 added 26.04.2012 'btnUnmount': 'LevĂĄlaszt', // from v2.1 added 30.04.2012 'btnConv' : 'ÁtalakĂ­t', // from v2.1 added 08.04.2014 'btnCwd' : 'Itt', // from v2.1 added 22.5.2015 'btnVolume' : 'HangerƑ', // from v2.1 added 22.5.2015 'btnAll' : 'Összes', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Tipus', // from v2.1 added 22.5.2015 'btnFileName':'FĂĄjl nĂ©v', // from v2.1 added 22.5.2015 'btnSaveClose': 'MentĂ©s Ă©s KilĂ©pĂ©s', // from v2.1 added 12.6.2015 'btnBackup' : 'BiztonsĂĄgi mentĂ©s', // fromv2.1 added 28.11.2015 'btnRename' : 'Rename', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Save As', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Mappa megnyitĂĄs', 'ntffile' : 'FĂĄjl megnyitĂĄs', 'ntfreload' : 'A mappa tartalmĂĄnak ĂșjratöltĂ©se', 'ntfmkdir' : 'Mappa lĂ©trehozĂĄsa', 'ntfmkfile' : 'FĂĄjlok lĂ©trehozĂĄsa', 'ntfrm' : 'FĂĄjlok törĂ©lse', 'ntfcopy' : 'FĂĄjlok mĂĄsolĂĄsa', 'ntfmove' : 'FĂĄjlok ĂĄthelyezĂ©se', 'ntfprepare' : 'Checking existing items', 'ntfrename' : 'FĂĄjlok ĂĄtnevezĂ©se', 'ntfupload' : 'FĂĄjlok feltöltĂ©se', 'ntfdownload' : 'FĂĄjlok letöltĂ©se', 'ntfsave' : 'FĂĄjlok mentĂ©se', 'ntfarchive' : 'ArchĂ­vum lĂ©trehozĂĄsa', 'ntfextract' : 'KibontĂĄs archĂ­vumbĂłl', 'ntfsearch' : 'FĂĄjlok keresĂ©se', 'ntfresize' : 'KĂ©pek ĂĄtmĂ©retezĂ©se', 'ntfsmth' : 'CsinĂĄl valamit >_<', 'ntfloadimg' : 'KĂ©p betöltĂ©se', 'ntfnetmount' : 'HĂĄlĂłzati meghajtĂł hozzĂĄadĂĄsa', // added 18.04.2012 'ntfnetunmount': 'HĂĄlĂłzati meghajtĂł levĂĄlasztĂĄsa', // from v2.1 added 30.04.2012 'ntfdim' : 'KĂ©pmĂ©ret megĂĄllapĂ­tĂĄsa', // added 20.05.2013 'ntfreaddir' : 'A mappa adatainak olvasĂĄsa', // from v2.1 added 01.07.2013 'ntfurl' : 'A link URL-jĂ©nek lekĂ©rdezĂ©se', // from v2.1 added 11.03.2014 'ntfchmod' : 'A fĂĄjlmĂłd megvĂĄltoztatĂĄsa', // from v2.1 added 20.6.2015 'ntfpreupload': 'A feltöltött fĂĄjlnĂ©v ellenƑrzĂ©se', // from v2.1 added 31.11.2015 'ntfzipdl' : 'FĂĄjl lĂ©trehozĂĄsa letöltĂ©sre', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Getting path infomation', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Doing restore from the trash', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Checking destination folder', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Undoing previous operation', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Redoing previous undone', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'Ismeretlen', 'Today' : 'Ma', 'Yesterday' : 'Tegnap', 'msJan' : 'jan', 'msFeb' : 'febr', 'msMar' : 'mĂĄrc', 'msApr' : 'ĂĄpr', 'msMay' : 'mĂĄj', 'msJun' : 'jĂșn', 'msJul' : 'jĂșl', 'msAug' : 'aug', 'msSep' : 'szept', 'msOct' : 'okt', 'msNov' : 'nov', 'msDec' : 'dec', 'January' : 'JanuĂĄr', 'February' : 'FebruĂĄr', 'March' : 'MĂĄrcius', 'April' : 'Április', 'May' : 'MĂĄjus', 'June' : 'JĂșnius', 'July' : 'JĂșlius', 'August' : 'Augusztus', 'September' : 'Szeptember', 'October' : 'OktĂłber', 'November' : 'November', 'December' : 'December', 'Sunday' : 'VasĂĄrnap', 'Monday' : 'HĂ©tfƑ', 'Tuesday' : 'Kedd', 'Wednesday' : 'Szerda', 'Thursday' : 'CsĂŒtörtök', 'Friday' : 'PĂ©ntek', 'Saturday' : 'Szombat', 'Sun' : 'V', 'Mon' : 'H', 'Tue' : 'K', 'Wed' : 'Sz', 'Thu' : 'Cs', 'Fri' : 'P', 'Sat' : 'Szo', /******************************** sort variants ********************************/ 'sortname' : 'nĂ©v szerint', 'sortkind' : 'by kind', 'sortsize' : 'mĂ©ret szerint', 'sortdate' : 'dĂĄtum szerint', 'sortFoldersFirst' : 'ElƑször a mappĂĄk', 'sortperm' : 'engedĂ©ly alapjĂĄn', // from v2.1.13 added 13.06.2016 'sortmode' : 'mĂłd szerint', // from v2.1.13 added 13.06.2016 'sortowner' : 'tulajdonos alapjĂĄn', // from v2.1.13 added 13.06.2016 'sortgroup' : 'csoportok szerint', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Also Treeview', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NewFile.txt', // added 10.11.2015 'untitled folder' : 'NewFolder', // added 10.11.2015 'Archive' : 'NewArchive', // from v2.1 added 10.11.2015 'untitled file' : 'NewFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: File', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'MegerƑsĂ­tĂ©s szĂŒksĂ©ges', 'confirmRm' : 'ValĂłban törölni akarja a kijelölt adatokat?
      Ez kĂ©sƑbb nem fordĂ­thatĂł vissza!', 'confirmRepl' : 'Replace old file with new one? (If it contains folders, it will be merged. To backup and replace, select Backup.)', 'confirmRest' : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Nem UTF-8.
      Átalakítsam UTF-8-ra?
      A tartalom mentés utån UTF-8 lesz..', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.
      Please select character encoding of this file.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'MegvĂĄltozott.
      MĂłdosĂ­tĂĄsok elvesznek, ha nem menti el azokat.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Are you sure you want to move items to "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Mindenre vonatkozik', 'name' : 'NĂ©v', 'size' : 'MĂ©ret', 'perms' : 'Jogok', 'modify' : 'MĂłdosĂ­tva', 'kind' : 'TĂ­pus', 'read' : 'olvasĂĄs', 'write' : 'Ă­rĂĄs', 'noaccess' : '-', 'and' : 'Ă©s', 'unknown' : 'ismeretlen', 'selectall' : 'Összes kijelölĂ©se', 'selectfiles' : 'FĂĄjlok kijelölĂ©se', 'selectffile' : 'ElsƑ fĂĄjl kijelölĂ©se', 'selectlfile' : 'UtolsĂł fĂĄjl kijelölĂ©se', 'viewlist' : 'Lista nĂ©zet', 'viewicons' : 'Ikon nĂ©zet', 'viewSmall' : 'Small icons', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Medium icons', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Large icons', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Extra large icons', // from v2.1.39 added 22.5.2018 'places' : 'Helyek', 'calc' : 'KiszĂĄmĂ­tja', 'path' : 'Útvonal', 'aliasfor' : 'CĂ©l', 'locked' : 'ZĂĄrolt', 'dim' : 'MĂ©retek', 'files' : 'FĂĄjlok', 'folders' : 'MappĂĄk', 'items' : 'Elemek', 'yes' : 'igen', 'no' : 'nem', 'link' : 'Parancsikon', 'searcresult' : 'KeresĂ©s eredmĂ©nye', 'selected' : 'kijelölt elemek', 'about' : 'NĂ©vjegy', 'shortcuts' : 'GyorsbillenytyƱk', 'help' : 'SĂșgĂł', 'webfm' : 'Web file manager', 'ver' : 'VerziĂł', 'protocolver' : 'protokol verziĂł', 'homepage' : 'Projekt honlap', 'docs' : 'DokumentĂĄciĂł', 'github' : 'Hozz lĂ©tre egy Ășj verziĂłt a Github-on', 'twitter' : 'Kövess minket a twitter-en', 'facebook' : 'Csatlakozz hozzĂĄnk a facebook-on', 'team' : 'Csapat', 'chiefdev' : 'vezetƑ fejlesztƑ', 'developer' : 'fejlesztƑ', 'contributor' : 'kĂŒlsƑs hozzĂĄjĂĄrulĂł', 'maintainer' : 'karbantartĂł', 'translator' : 'fordĂ­tĂł', 'icons' : 'Ikonok', 'dontforget' : 'törölközƑt ne felejts el hozni!', 'shortcutsof' : 'Shortcuts disabled', 'dropFiles' : 'FĂĄjlok dobĂĄsa ide', 'or' : 'vagy', 'selectForUpload' : 'fĂĄjlok böngĂ©szĂ©se', 'moveFiles' : 'FĂĄjlok ĂĄthelyezĂ©se', 'copyFiles' : 'FĂĄjlok mĂĄsolĂĄsa', 'restoreFiles' : 'Restore items', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'TĂĄvolĂ­tsa el a helyekrƑl', 'aspectRatio' : 'OldalarĂĄny', 'scale' : 'SkĂĄla', 'width' : 'SzĂ©lessĂ©g', 'height' : 'MagassĂĄg', 'resize' : 'ÁtmĂ©retezĂ©s', 'crop' : 'VĂĄg', 'rotate' : 'Forgat', 'rotate-cw' : 'Forgassa el 90 fokkal', 'rotate-ccw' : 'Forgassa el 90 fokkal CCW irĂĄnyban', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protokoll', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'FelhasznĂĄlĂł', // added 18.04.2012 'pass' : 'JelszĂł', // added 18.04.2012 'confirmUnmount' : 'LevĂĄlasztod $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'FĂĄjlok dobĂĄsa vagy beillesztĂ©se a böngĂ©szƑbƑl', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014 'encoding' : 'KĂłdolĂĄs', // from v2.1 added 19.12.2014 'locale' : 'Nyelv', // from v2.1 added 19.12.2014 'searchTarget' : 'CĂ©l: $1', // from v2.1 added 22.5.2015 'searchMime' : 'KeresĂ©s a MIME tĂ­pus bevitele alapjĂĄn', // from v2.1 added 22.5.2015 'owner' : 'Tulajdonos', // from v2.1 added 20.6.2015 'group' : 'Csoport', // from v2.1 added 20.6.2015 'other' : 'EgyĂ©b', // from v2.1 added 20.6.2015 'execute' : 'VĂ©grehajt', // from v2.1 added 20.6.2015 'perm' : 'EngedĂ©ly', // from v2.1 added 20.6.2015 'mode' : 'MĂłd', // from v2.1 added 20.6.2015 'emptyFolder' : 'A mappa ĂŒres', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'A mappa ĂŒres\\Elem eldobĂĄsa', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'A mappa ĂŒres\\HosszĂș koppintĂĄs elemek hozzĂĄadĂĄsĂĄhoz', // from v2.1.6 added 30.12.2015 'quality' : 'MinƑsĂ©g', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto sync', // from v2.1.6 added 10.1.2016 'moveUp' : 'MozgatĂĄs fel', // from v2.1.6 added 18.1.2016 'getLink' : 'URL-link letöltĂ©se', // from v2.1.7 added 9.2.2016 'selectedItems' : 'KivĂĄlasztott elemek ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Mappa ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Offline hozzĂĄfĂ©rĂ©s engedĂ©lyezĂ©se', // from v2.1.10 added 3.25.2016 'reAuth' : 'ÚjrahitelesĂ­tĂ©shez', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Most betölt...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Több fĂĄjl megnyitĂĄsa', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'MegprĂłbĂĄlja megnyitni a $1 fĂĄjlokat. Biztosan meg akarja nyitni a böngĂ©szƑben?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Search results is empty in search target.', // from v2.1.12 added 5.16.2016 'editingFile' : 'It is editing a file.', // from v2.1.13 added 6.3.2016 'hasSelected' : '$1 elemet vĂĄlasztott ki.', // from v2.1.13 added 6.3.2016 'hasClipboard' : '$1 elem van a vĂĄgĂłlapon.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Reinstate', // from v2.1.15 added 3.8.2016 'complete' : '$1 complete', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Context menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Page turning', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume roots', // from v2.1.16 added 16.9.2016 'reset' : 'Reset', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Background color', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Color picker', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Grid', // from v2.1.16 added 4.10.2016 'enabled' : 'Enabled', // from v2.1.16 added 4.10.2016 'disabled' : 'Disabled', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Text label', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 mins left', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Select folder', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017 'presets' : 'Presets', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017 'TextArea' : 'TextArea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preference', // from v2.1.26 added 28.6.2017 'language' : 'Language', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Toolbar settings', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 chars left.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 lines left.', // from v2.1.52 added 16.1.2020 'sum' : 'Sum', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Rough file size', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focus on the element of dialog with mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Select', // from v2.1.30 added 23.11.2017 'selectAction' : 'Action when select file', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Invert selection', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Are you sure you want to rename $1 selected items like $2?
      This cannot be undone!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch rename', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Number', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Add prefix', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Add suffix', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Change extention', // from v2.1.31 added 8.12.2017 'columnPref' : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Selection Info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Press again to exit.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Toolbar', // from v2.1.38 added 4.4.2018 'workspace' : 'Work Space', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'All', // from v2.1.38 added 4.4.2018 'iconSize' : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrations', // from v2.1.40 added 11.7.2018 'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Show hidden items', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Hide hidden items', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type of the Text file', // from v2.1.41 added 7.8.2018 'add' : 'Add', // from v2.1.41 added 7.8.2018 'theme' : 'Theme', // from v2.1.43 added 19.10.2018 'default' : 'Default', // from v2.1.43 added 19.10.2018 'description' : 'Description', // from v2.1.43 added 19.10.2018 'website' : 'Website', // from v2.1.43 added 19.10.2018 'author' : 'Author', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'License', // from v2.1.43 added 19.10.2018 'exportToSave' : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Ismeretlen', 'kindRoot' : 'Volume Root', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Mappa', 'kindSelects' : 'Selections', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Parancsikon', 'kindAliasBroken' : 'HibĂĄs parancsikon', // applications 'kindApp' : 'AlkalmazĂĄs', 'kindPostscript' : 'Postscript dokumentum', 'kindMsOffice' : 'Microsoft Office dokumentum', 'kindMsWord' : 'Microsoft Word dokumentum', 'kindMsExcel' : 'Microsoft Excel dokumentum', 'kindMsPP' : 'Microsoft Powerpoint bemutatĂł', 'kindOO' : 'Open Office dokumentum', 'kindAppFlash' : 'Flash alkalmazĂĄs', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent fĂĄjl', 'kind7z' : '7z archĂ­vum', 'kindTAR' : 'TAR archĂ­vum', 'kindGZIP' : 'GZIP archĂ­vum', 'kindBZIP' : 'BZIP archĂ­vum', 'kindXZ' : 'XZ archĂ­vum', 'kindZIP' : 'ZIP archĂ­vum', 'kindRAR' : 'RAR archĂ­vum', 'kindJAR' : 'Java JAR fĂĄjl', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM csomag', // texts 'kindText' : 'Szöveges dokumentum', 'kindTextPlain' : 'Plain text', 'kindPHP' : 'PHP forrĂĄskĂłd', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML dokumentum', 'kindJS' : 'Javascript forrĂĄskĂłd', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C forrĂĄskĂłd', 'kindCHeader' : 'C header forrĂĄskĂłd', 'kindCPP' : 'C++ forrĂĄskĂłd', 'kindCPPHeader' : 'C++ header forrĂĄskĂłd', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python forrĂĄskĂłd', 'kindJava' : 'Java forrĂĄskĂłd', 'kindRuby' : 'Ruby forrĂĄskĂłd', 'kindPerl' : 'Perl script', 'kindSQL' : 'SQL forrĂĄskĂłd', 'kindXML' : 'XML dokumentum', 'kindAWK' : 'AWK forrĂĄskĂłd', 'kindCSV' : 'Comma separated values', 'kindDOCBOOK' : 'Docbook XML dokumentum', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'KĂ©p', 'kindBMP' : 'BMP kĂ©p', 'kindJPEG' : 'JPEG kĂ©p', 'kindGIF' : 'GIF kĂ©p', 'kindPNG' : 'PNG kĂ©p', 'kindTIFF' : 'TIFF kĂ©p', 'kindTGA' : 'TGA kĂ©p', 'kindPSD' : 'Adobe Photoshop kĂ©p', 'kindXBITMAP' : 'X bitmap image', 'kindPXM' : 'Pixelmator image', // media 'kindAudio' : 'HangfĂĄjl', 'kindAudioMPEG' : 'MPEG hangfĂĄjl', 'kindAudioMPEG4' : 'MPEG-4 hangfĂĄjl', 'kindAudioMIDI' : 'MIDI hangfĂĄjl', 'kindAudioOGG' : 'Ogg Vorbis hangfĂĄjl', 'kindAudioWAV' : 'WAV hangfĂĄjl', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Film', 'kindVideoDV' : 'DV film', 'kindVideoMPEG' : 'MPEG film', 'kindVideoMPEG4' : 'MPEG-4 film', 'kindVideoAVI' : 'AVI film', 'kindVideoMOV' : 'Quick Time film', 'kindVideoWM' : 'Windows Media film', 'kindVideoFlash' : 'Flash film', 'kindVideoMKV' : 'Matroska film', 'kindVideoOGG' : 'Ogg film' } }; })); application/library/js/i18n/elfinder.he.js000064400000045000147577724760014460 0ustar00/** * ŚąŚ‘ŚšŚ™ŚȘ translation * @author Yaron Shahrabani * @version 2015-11-02 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.he = { translator : 'Yaron Shahrabani ', language : 'ŚąŚ‘ŚšŚ™ŚȘ', direction : 'rtl', dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM messages : { /********************************** errors **********************************/ 'error' : 'Ś©Ś’Ś™ŚŚ”', 'errUnknown' : 'Ś©Ś’Ś™ŚŚ” Ś‘ŚœŚȘŚ™ ŚžŚ•Ś›ŚšŚȘ.', 'errUnknownCmd' : 'Ś€Ś§Ś•Ś“Ś” Ś‘ŚœŚȘŚ™ ŚžŚ•Ś›ŚšŚȘ.', 'errJqui' : 'ŚȘŚŠŚ•ŚšŚȘ Ś”ÖŸjQuery UI Ś©Ś’Ś•Ś™Ś”. Ś™Ś© ŚœŚ›ŚœŚ•Śœ ŚšŚ›Ś™Ś‘Ś™Ś Ś”Ś Ś™ŚȘŚ Ś™Ś ŚœŚ‘Ś—Ś™ŚšŚ”, Ś’ŚšŚ™ŚšŚ” Ś•Ś”Ś©ŚœŚ›Ś”.', 'errNode' : 'elFinder Ś“Ś•ŚšŚ© Ś™ŚŠŚ™ŚšŚ” Ś©Śœ ŚšŚ›Ś™Ś‘ DOM.', 'errURL' : 'Ś”ŚȘŚŠŚ•ŚšŚ” Ś©Śœ elFinder Ś©Ś’Ś•Ś™Ś”! ŚŚ€Ś©ŚšŚ•ŚȘ Ś”Ś›ŚȘŚ•Ś‘ŚȘ (URL) ŚœŚ Ś”Ś•Ś’Ś“ŚšŚ”.', 'errAccess' : 'Ś”Ś’Ś™Ś©Ś” Ś Ś“Ś—Ś™ŚȘ.', 'errConnect' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ”ŚȘŚ—Ś‘Śš ŚœŚžŚ Ś’Ś Ś•ŚŸ.', 'errAbort' : 'Ś”Ś—Ś™Ś‘Ś•Śš Ś‘Ś•Ś˜Śœ.', 'errTimeout' : 'Ś–ŚžŚŸ Ś”Ś—Ś™Ś‘Ś•Śš Ś€Ś’.', 'errNotFound' : 'ŚœŚ Ś ŚžŚŠŚ ŚžŚ Ś’Ś Ś•ŚŸ.', 'errResponse' : 'ŚȘŚ’Ś•Ś‘ŚȘ Ś”ŚžŚ Ś’Ś Ś•ŚŸ Ś©Ś’Ś•Ś™Ś”.', 'errConf' : 'ŚȘŚŠŚ•ŚšŚȘ Ś”ŚžŚ Ś’Ś Ś•ŚŸ Ś©Ś’Ś•Ś™Ś”.', 'errJSON' : 'Ś”ŚžŚ•Ś“Ś•Śœ PHP JSON ŚœŚ ŚžŚ•ŚȘŚ§ŚŸ.', 'errNoVolumes' : 'ŚŚ™ŚŸ Ś›Ś•Ś Ś Ś™Ś Ś–ŚžŚ™Ś Ś™Ś ŚœŚ§ŚšŚ™ŚŚ”.', 'errCmdParams' : 'Ś€ŚšŚžŚ˜ŚšŚ™Ś Ś©Ś’Ś•Ś™Ś™Ś ŚœŚ€Ś§Ś•Ś“Ś” „$1“.', 'errDataNotJSON' : 'Ś”Ś ŚȘŚ•Ś Ś™Ś ŚŚ™Ś Ś JSON.', 'errDataEmpty' : 'Ś”Ś ŚȘŚ•Ś Ś™Ś ŚšŚ™Ś§Ś™Ś.', 'errCmdReq' : 'Ś‘Ś§Ś©Ś” ŚœŚžŚ Ś’Ś Ś•ŚŸ Ś“Ś•ŚšŚ©ŚȘ Ś©Ś Ś€Ś§Ś•Ś“Ś”.', 'errOpen' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ€ŚȘŚ•Ś— ŚŚȘ „$1“.', 'errNotFolder' : 'Ś”Ś€ŚšŚ™Ś˜ ŚŚ™Ś Ś• ŚȘŚ™Ś§Ś™Ś™Ś”.', 'errNotFile' : 'Ś”Ś€ŚšŚ™Ś˜ ŚŚ™Ś Ś• Ś§Ś•Ś‘Ś„.', 'errRead' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ§ŚšŚ•Ś ŚŚȘ „$1“.', 'errWrite' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ›ŚȘŚ•Ś‘ ŚŚœ „$1“.', 'errPerm' : 'Ś”Ś”ŚšŚ©ŚŚ” Ś Ś“Ś—ŚȘŚ”.', 'errLocked' : '„$1“ Ś ŚąŚ•Śœ Ś•ŚŚ™ŚŸ ŚŚ€Ś©ŚšŚ•ŚȘ ŚœŚ©Ś Ś•ŚȘ ŚŚȘ Ś©ŚžŚ•, ŚœŚ”ŚąŚ‘Ś™ŚšŚ• ŚŚ• ŚœŚ”ŚĄŚ™ŚšŚ•.', 'errExists' : 'Ś§Ś•Ś‘Ś„ Ś‘Ś©Ś „$1“ Ś›Ś‘Śš Ś§Ś™Ś™Ś.', 'errInvName' : 'Ś©Ś Ś”Ś§Ś•Ś‘Ś„ Ś©Ś’Ś•Ś™.', 'errFolderNotFound' : 'Ś”ŚȘŚ™Ś§Ś™Ś™Ś” ŚœŚ Ś ŚžŚŠŚŚ”.', 'errFileNotFound' : 'Ś”Ś§Ś•Ś‘Ś„ ŚœŚ Ś ŚžŚŠŚ.', 'errTrgFolderNotFound' : 'ŚȘŚ™Ś§Ś™Ś™ŚȘ Ś”Ś™ŚąŚ“ „$1“ ŚœŚ Ś ŚžŚŠŚŚ”.', 'errPopup' : 'Ś”Ś“Ś€Ś“Ś€ŚŸ ŚžŚ Śą Ś€ŚȘŚ™Ś—ŚȘ Ś—ŚœŚ•ŚŸ Ś§Ś•Ś‘Ś„. Ś›Ś“Ś™ ŚœŚ€ŚȘŚ•Ś— Ś§Ś•Ś‘Ś„ Ś™Ś© ŚœŚŚ€Ś©Śš Ś–ŚŚȘ Ś‘Ś”Ś’Ś“ŚšŚ•ŚȘ Ś”Ś“Ś€Ś“Ś€ŚŸ.', 'errMkdir' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ™ŚŠŚ•Śš ŚŚȘ Ś”ŚȘŚ™Ś§Ś™Ś™Ś” „$1“.', 'errMkfile' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ™ŚŠŚ•Śš ŚŚȘ Ś”Ś§Ś•Ś‘Ś„ „$1“.', 'errRename' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ©Ś Ś•ŚȘ ŚŚȘ Ś”Ś©Ś Ś©Śœ „$1“.', 'errCopyFrom' : 'Ś”ŚąŚȘŚ§ŚȘ Ś§Ś‘ŚŠŚ™Ś ŚžŚ”Ś›Ś•Ś ŚŸ „$1“ ŚŚ™Ś Ś” ŚžŚŚ•Ś€Ś©ŚšŚȘ.', 'errCopyTo' : 'Ś”ŚąŚȘŚ§ŚȘ Ś§Ś‘ŚŠŚ™Ś ŚŚœ Ś”Ś›Ś•Ś ŚŸ „$1“ ŚŚ™Ś Ś” ŚžŚŚ•Ś€Ś©ŚšŚȘ.', 'errUpload' : 'Ś©Ś’Ś™ŚŚȘ Ś”ŚąŚœŚŚ”.', // old name - errUploadCommon 'errUploadFile' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ”ŚąŚœŚ•ŚȘ ŚŚȘ „$1“.', // old name - errUpload 'errUploadNoFiles' : 'ŚœŚ Ś ŚžŚŠŚŚ• Ś§Ś‘ŚŠŚ™Ś ŚœŚ”ŚąŚœŚŚ”.', 'errUploadTotalSize' : 'Ś”Ś ŚȘŚ•Ś Ś™Ś Ś—Ś•ŚšŚ’Ś™Ś ŚžŚ”Ś’Ś•Ś“Śœ Ś”ŚžŚšŚ‘Ś™ Ś”ŚžŚ•ŚȘŚš.', // old name - errMaxSize 'errUploadFileSize' : 'Ś”Ś§Ś•Ś‘Ś„ Ś—Ś•ŚšŚ’ ŚžŚ”Ś’Ś•Ś“Śœ Ś”ŚžŚšŚ‘Ś™ Ś”ŚžŚ•ŚȘŚš.', // old name - errFileMaxSize 'errUploadMime' : 'ŚĄŚ•Ś’ Ś”Ś§Ś•Ś‘Ś„ ŚŚ™Ś Ś• ŚžŚ•ŚšŚ©Ś”.', 'errUploadTransfer' : 'Ś©Ś’Ś™ŚŚȘ Ś”ŚąŚ‘ŚšŚ” „$1“.', 'errNotReplace' : 'Ś”Ś€ŚšŚ™Ś˜ „$1“ Ś›Ś‘Śš Ś§Ś™Ś™Ś Ś‘ŚžŚ™Ś§Ś•Ś Ś–Ś” Ś•ŚŚ™ ŚŚ€Ś©Śš ŚœŚ”Ś—ŚœŚ™Ś€Ś• Ś‘Ś€ŚšŚ™Ś˜ ŚžŚĄŚ•Ś’ ŚŚ—Śš.', // new 'errReplace' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ”Ś—ŚœŚ™ŚŁ ŚŚȘ „$1“.', 'errSave' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ©ŚžŚ•Śš ŚŚȘ „$1“.', 'errCopy' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ”ŚąŚȘŚ™Ś§ ŚŚȘ „$1“.', 'errMove' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ”ŚąŚ‘Ś™Śš ŚŚȘ „$1“.', 'errCopyInItself' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ”ŚąŚȘŚ™Ś§ ŚŚȘ „$1“ ŚœŚȘŚ•Śš ŚąŚŠŚžŚ•.', 'errRm' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ”ŚĄŚ™Śš ŚŚȘ „$1“.', 'errRmSrc' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ”ŚĄŚ™Śš ŚŚȘ Ś§Ś•Ś‘ŚŠŚ™ Ś”ŚžŚ§Ś•Śš.', 'errExtract' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ—ŚœŚ„ Ś§Ś‘ŚŠŚ™Ś ŚžŚ”ŚŚšŚ›Ś™Ś•ŚŸ „$1“.', 'errArchive' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ™ŚŠŚ•Śš ŚŚšŚ›Ś™Ś•ŚŸ.', 'errArcType' : 'ŚĄŚ•Ś’ Ś”ŚŚšŚ›Ś™Ś•ŚŸ ŚŚ™Ś Ś• Ś ŚȘŚžŚš.', 'errNoArchive' : 'Ś”Ś§Ś•Ś‘Ś„ ŚŚ™Ś Ś• ŚŚšŚ›Ś™Ś•ŚŸ ŚŚ• Ś©ŚĄŚ•Ś’ Ś”Ś§Ś•Ś‘Ś„ Ś©ŚœŚ• ŚŚ™Ś Ś• Ś ŚȘŚžŚš.', 'errCmdNoSupport' : 'Ś”ŚžŚ Ś’Ś Ś•ŚŸ ŚŚ™Ś Ś• ŚȘŚ•ŚžŚš Ś‘Ś€Ś§Ś•Ś“Ś” Ś–Ś•.', 'errReplByChild' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ”Ś—ŚœŚ™ŚŁ ŚŚȘ Ś”ŚȘŚ™Ś§Ś™Ś™Ś” „$1“ Ś‘Ś€ŚšŚ™Ś˜ ŚžŚȘŚ•Ś›Ś”.', 'errArcSymlinks' : 'ŚžŚ˜ŚąŚžŚ™ ŚŚ‘Ś˜Ś—Ś” ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ—ŚœŚ„ ŚŚšŚ›Ś™Ś•Ś Ś™Ś Ś©ŚžŚ›Ś™ŚœŚ™Ś Ś§Ś™Ś©Ś•ŚšŚ™Ś ŚĄŚ™ŚžŚ‘Ś•ŚœŚ™Ś™Ś ŚŚ• Ś§Ś‘ŚŠŚ™Ś ŚąŚ Ś©ŚžŚ•ŚȘ Ś‘ŚœŚȘŚ™ ŚžŚ•ŚšŚ©Ś™Ś.', // edited 24.06.2012 'errArcMaxSize' : 'Ś”ŚŚšŚ›Ś™Ś•ŚŸ Ś—Ś•ŚšŚ’ ŚžŚ”Ś’Ś•Ś“Śœ Ś”ŚžŚšŚ‘Ś™ Ś”ŚžŚ•ŚȘŚš.', 'errResize' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ©Ś Ś•ŚȘ ŚŚȘ Ś”Ś’Ś•Ś“Śœ Ś©Śœ „$1“.', 'errResizeDegree' : 'ŚžŚąŚœŚ•ŚȘ Ś”Ś”Ś™Ś€Ś•Śš Ś©Ś’Ś•Ś™Ś•ŚȘ.', // added 7.3.2013 'errResizeRotate' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ”Ś€Ś•Śš ŚŚȘ Ś”ŚȘŚžŚ•Ś Ś”.', // added 7.3.2013 'errResizeSize' : 'Ś’Ś•Ś“Śœ Ś”ŚȘŚžŚ•Ś Ś” Ś©Ś’Ś•Ś™.', // added 7.3.2013 'errResizeNoChange' : 'Ś’Ś•Ś“Śœ Ś”ŚȘŚžŚ•Ś Ś” ŚœŚ Ś”Ś©ŚȘŚ Ś”.', // added 7.3.2013 'errUsupportType' : 'ŚĄŚ•Ś’ Ś”Ś§Ś•Ś‘Ś„ ŚŚ™Ś Ś• Ś ŚȘŚžŚš.', 'errNotUTF8Content' : 'Ś”Ś§Ś•Ś‘Ś„ „$1“ Ś”Ś•Ś ŚœŚ Ś‘ŚȘŚĄŚ“Ś™Śš UTF-8 Ś•ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚąŚšŚ•Śš ŚŚ•ŚȘŚ•.', // added 9.11.2011 'errNetMount' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚąŚ’ŚŸ ŚŚȘ „$1“.', // added 17.04.2012 'errNetMountNoDriver' : 'Ś€ŚšŚ•Ś˜Ś•Ś§Ś•Śœ Ś‘ŚœŚȘŚ™ Ś ŚȘŚžŚš.', // added 17.04.2012 'errNetMountFailed' : 'Ś”ŚąŚ™Ś’Ś•ŚŸ Ś Ś›Ś©Śœ.', // added 17.04.2012 'errNetMountHostReq' : 'Ś Ś“ŚšŚ© ŚžŚŚšŚ—.', // added 18.04.2012 'errSessionExpires' : 'Ś”Ś”Ś€ŚąŚœŚ” Ś©ŚœŚš Ś€Ś’Ś” ŚąŚ§Ś‘ Ś—Ś•ŚĄŚš Ś€ŚąŚ™ŚœŚ•ŚȘ.', 'errCreatingTempDir' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ™ŚŠŚ•Śš ŚȘŚ™Ś§Ś™Ś™Ś” Ś–ŚžŚ Ś™ŚȘ: „$1“', 'errFtpDownloadFile' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ”Ś•ŚšŚ™Ś“ Ś§Ś•Ś‘Ś„ ŚžÖŸ FTP: „$1“', 'errFtpUploadFile' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ”ŚąŚœŚ•ŚȘ Ś§Ś•Ś‘Ś„ ŚœÖŸFTP: „$1“', 'errFtpMkdir' : 'ŚœŚ Ś Ś™ŚȘŚŸ ŚœŚ™ŚŠŚ•Śš ŚȘŚ™Ś§Ś™Ś™Ś” ŚžŚšŚ•Ś—Ś§ŚȘ Ś‘ÖŸFTP: „$1“', 'errArchiveExec' : 'Ś©ŚžŚ™ŚšŚȘ Ś”Ś§Ś‘ŚŠŚ™Ś Ś‘ŚŚšŚ›Ś™Ś•ŚŸ Ś Ś›Ś©ŚœŚ”: „$1“', 'errExtractExec' : 'Ś—Ś™ŚœŚ•Ś„ Ś§Ś‘ŚŠŚ™Ś Ś Ś›Ś©Śœ: „$1“', /******************************* commands names ********************************/ 'cmdarchive' : 'Ś™ŚŠŚ™ŚšŚȘ ŚŚšŚ›Ś™Ś•ŚŸ', 'cmdback' : 'Ś—Ś–ŚšŚ”', 'cmdcopy' : 'Ś”ŚąŚȘŚ§Ś”', 'cmdcut' : 'Ś’Ś–Ś™ŚšŚ”', 'cmddownload' : 'Ś”Ś•ŚšŚ“Ś”', 'cmdduplicate' : 'Ś©Ś›Ś€Ś•Śœ', 'cmdedit' : 'ŚąŚšŚ™Ś›ŚȘ Ś§Ś•Ś‘Ś„', 'cmdextract' : 'Ś—Ś™ŚœŚ•Ś„ Ś§Ś‘ŚŠŚ™Ś ŚžŚŚšŚ›Ś™Ś•ŚŸ', 'cmdforward' : 'Ś”ŚąŚ‘ŚšŚ”', 'cmdgetfile' : 'Ś‘Ś—Ś™ŚšŚȘ Ś§Ś‘ŚŠŚ™Ś', 'cmdhelp' : 'Ś€ŚšŚ˜Ś™Ś ŚąŚœ Ś”ŚȘŚ›Ś Ś™ŚȘ Ś”Ś–Ś•', 'cmdhome' : 'Ś‘Ś™ŚȘ', 'cmdinfo' : 'Ś§Ś‘ŚœŚȘ ŚžŚ™Ś“Śą', 'cmdmkdir' : 'ŚȘŚ™Ś§Ś™Ś™Ś” Ś—Ś“Ś©Ś”', 'cmdmkfile' : 'Ś§Ś•Ś‘Ś„ Ś—Ś“Ś©', 'cmdopen' : 'Ś€ŚȘŚ™Ś—Ś”', 'cmdpaste' : 'Ś”Ś“Ś‘Ś§Ś”', 'cmdquicklook' : 'ŚȘŚŠŚ•Ś’Ś” ŚžŚ§Ś“Ś™ŚžŚ”', 'cmdreload' : 'ŚšŚąŚ Ś•ŚŸ', 'cmdrename' : 'Ś©Ś™Ś Ś•Ś™ Ś©Ś', 'cmdrm' : 'ŚžŚ—Ś™Ś§Ś”', 'cmdsearch' : 'Ś—Ś™Ś€Ś•Ś© Ś§Ś‘ŚŠŚ™Ś', 'cmdup' : 'ŚžŚąŚ‘Śš ŚœŚȘŚ™Ś§Ś™Ś™ŚȘ Ś”Ś”Ś•ŚšŚ”', 'cmdupload' : 'Ś”ŚąŚœŚŚȘ Ś§Ś‘ŚŠŚ™Ś', 'cmdview' : 'ŚȘŚŠŚ•Ś’Ś”', 'cmdresize' : 'Ś©Ś™Ś Ś•Ś™ Ś’Ś•Ś“Śœ Ś•Ś”Ś™Ś€Ś•Śš', 'cmdsort' : 'ŚžŚ™Ś•ŚŸ', 'cmdnetmount' : 'ŚąŚ™Ś’Ś•ŚŸ Ś›Ś•Ś ŚŸ ŚšŚ©ŚȘ', // added 18.04.2012 /*********************************** buttons ***********************************/ 'btnClose' : 'ŚĄŚ’Ś™ŚšŚ”', 'btnSave' : 'Ś©ŚžŚ™ŚšŚ”', 'btnRm' : 'Ś”ŚĄŚšŚ”', 'btnApply' : 'Ś”Ś—ŚœŚ”', 'btnCancel' : 'Ś‘Ś™Ś˜Ś•Śœ', 'btnNo' : 'ŚœŚ', 'btnYes' : 'Ś›ŚŸ', 'btnMount' : 'ŚąŚ™Ś’Ś•ŚŸ', // added 18.04.2012 /******************************** notifications ********************************/ 'ntfopen' : 'Ś€ŚȘŚ™Ś—ŚȘ ŚȘŚ™Ś§Ś™Ś™Ś”', 'ntffile' : 'Ś€ŚȘŚ™Ś—ŚȘ Ś§Ś•Ś‘Ś„', 'ntfreload' : 'ŚšŚąŚ Ś•ŚŸ ŚȘŚ•Ś›ŚŸ Ś”ŚȘŚ™Ś§Ś™Ś™Ś”', 'ntfmkdir' : 'ŚȘŚ™Ś§Ś™Ś™Ś” Ś Ś•ŚŠŚšŚȘ', 'ntfmkfile' : 'Ś§Ś‘ŚŠŚ™Ś Ś Ś•ŚŠŚšŚ™Ś', 'ntfrm' : 'Ś§Ś‘ŚŠŚ™Ś Ś ŚžŚ—Ś§Ś™Ś', 'ntfcopy' : 'Ś§Ś‘ŚŠŚ™Ś ŚžŚ•ŚąŚȘŚ§Ś™Ś', 'ntfmove' : 'Ś§Ś‘ŚŠŚ™Ś ŚžŚ•ŚąŚ‘ŚšŚ™Ś', 'ntfprepare' : 'Ś”ŚąŚȘŚ§ŚȘ Ś§Ś‘ŚŠŚ™Ś Ś‘Ś”Ś›Ś Ś”', 'ntfrename' : 'Ś©ŚžŚ•ŚȘ Ś§Ś‘ŚŠŚ™Ś ŚžŚ©ŚȘŚ Ś™Ś', 'ntfupload' : 'Ś§Ś‘ŚŠŚ™Ś Ś Ś©ŚœŚ—Ś™Ś', 'ntfdownload' : 'Ś§Ś‘ŚŠŚ™Ś ŚžŚȘŚ§Ś‘ŚœŚ™Ś', 'ntfsave' : 'Ś©ŚžŚ™ŚšŚȘ Ś§Ś‘ŚŠŚ™Ś', 'ntfarchive' : 'ŚŚšŚ›Ś™Ś•ŚŸ Ś Ś•ŚŠŚš', 'ntfextract' : 'ŚžŚ—Ś•ŚœŚŠŚ™Ś Ś§Ś‘ŚŠŚ™Ś ŚžŚŚšŚ›Ś™Ś•ŚŸ', 'ntfsearch' : 'Ś§Ś‘ŚŠŚ™Ś Ś‘Ś—Ś™Ś€Ś•Ś©', 'ntfresize' : 'Ś’Ś•Ś“Śœ Ś§Ś‘ŚŠŚ™Ś ŚžŚ©ŚȘŚ Ś”', 'ntfsmth' : 'ŚžŚȘŚ‘ŚŠŚąŚȘ Ś€ŚąŚ•ŚœŚ”', 'ntfloadimg' : 'Ś Ś˜ŚąŚ ŚȘ ŚȘŚžŚ•Ś Ś”', 'ntfnetmount' : 'Ś›Ś•Ś ŚŸ ŚšŚ©ŚȘ ŚžŚąŚ•Ś’ŚŸ', // added 18.04.2012 'ntfdim' : 'ŚžŚžŚ“Ś™ ŚȘŚžŚ•Ś Ś” ŚžŚȘŚ§Ś‘ŚœŚ™Ś', // added 20.05.2013 /************************************ dates **********************************/ 'dateUnknown' : 'ŚœŚ Ś™Ś“Ś•Śą', 'Today' : 'Ś”Ś™Ś•Ś', 'Yesterday' : 'ŚžŚ—Śš', 'msJan' : 'Ś™Ś Ś•Śł', 'msFeb' : 'Ś€Ś‘ŚšŚł', 'msMar' : 'ŚžŚšŚ„', 'msApr' : 'ŚŚ€ŚšŚł', 'msMay' : 'ŚžŚŚ™', 'msJun' : 'Ś™Ś•Ś Śł', 'msJul' : 'Ś™Ś•ŚœŚł', 'msAug' : 'ŚŚ•Ś’Śł', 'msSep' : 'ŚĄŚ€Ś˜Śł', 'msOct' : 'ŚŚ•Ś§Śł', 'msNov' : 'Ś Ś•Ś‘Śł', 'msDec' : 'Ś“ŚŠŚžŚł', 'January' : 'Ś™Ś Ś•ŚŚš', 'February' : 'Ś€Ś‘ŚšŚ•ŚŚš', 'March' : 'ŚžŚšŚ„', 'April' : 'ŚŚ€ŚšŚ™Śœ', 'May' : 'ŚžŚŚ™', 'June' : 'Ś™Ś•Ś Ś™', 'July' : 'Ś™Ś•ŚœŚ™', 'August' : 'ŚŚ•Ś’Ś•ŚĄŚ˜', 'September' : 'ŚĄŚ€Ś˜ŚžŚ‘Śš', 'October' : 'ŚŚ•Ś§Ś˜Ś•Ś‘Śš', 'November' : 'Ś Ś•Ś‘ŚžŚ‘Śš', 'December' : 'Ś“ŚŠŚžŚ‘Śš', 'Sunday' : 'Ś™Ś•Ś ŚšŚŚ©Ś•ŚŸ', 'Monday' : 'Ś™Ś•Ś Ś©Ś Ś™', 'Tuesday' : 'Ś™Ś•Ś Ś©ŚœŚ™Ś©Ś™', 'Wednesday' : 'Ś™Ś•Ś ŚšŚ‘Ś™ŚąŚ™', 'Thursday' : 'Ś™Ś•Ś Ś—ŚžŚ™Ś©Ś™', 'Friday' : 'Ś™Ś•Ś Ś©Ś™Ś©Ś™', 'Saturday' : 'Ś©Ś‘ŚȘ', 'Sun' : 'ŚŚł', 'Mon' : 'Ś‘Śł', 'Tue' : 'Ś’Śł', 'Wed' : 'Ś“Śł', 'Thu' : 'Ś”', 'Fri' : 'Ś•Śł', 'Sat' : 'Ś©Śł', /******************************** sort variants ********************************/ 'sortname' : 'ŚœŚ€Ś™ Ś©Ś', 'sortkind' : 'ŚœŚ€Ś™ ŚĄŚ•Ś’', 'sortsize' : 'ŚœŚ€Ś™ Ś’Ś•Ś“Śœ', 'sortdate' : 'ŚœŚ€Ś™ ŚȘŚŚšŚ™Śš', 'sortFoldersFirst' : 'ŚȘŚ™Ś§Ś™Ś•ŚȘ ŚȘŚ—Ś™ŚœŚ”', /********************************** messages **********************************/ 'confirmReq' : 'Ś Ś“ŚšŚ© ŚŚ™Ś©Ś•Śš', 'confirmRm' : 'ŚœŚ”ŚĄŚ™Śš ŚŚȘ Ś”Ś§Ś‘ŚŠŚ™Ś?
      Ś€ŚąŚ•ŚœŚ” Ś–Ś• Ś‘ŚœŚȘŚ™ Ś”Ś€Ś™Ś›Ś”!', 'confirmRepl' : 'ŚœŚ”Ś—ŚœŚ™ŚŁ Ś§Ś•Ś‘Ś„ Ś™Ś©ŚŸ Ś‘Ś§Ś•Ś‘Ś„ Ś—Ś“Ś©?', 'apllyAll' : 'ŚœŚ”Ś—Ś™Śœ ŚąŚœ Ś”Ś›Ś•Śœ', 'name' : 'Ś©Ś', 'size' : 'Ś’Ś•Ś“Śœ', 'perms' : 'Ś”ŚšŚ©ŚŚ•ŚȘ', 'modify' : 'Ś©Ś™Ś Ś•Ś™', 'kind' : 'ŚĄŚ•Ś’', 'read' : 'Ś§ŚšŚ™ŚŚ”', 'write' : 'Ś›ŚȘŚ™Ś‘Ś”', 'noaccess' : 'ŚŚ™ŚŸ Ś’Ś™Ś©Ś”', 'and' : 'Ś•Ś’Ś', 'unknown' : 'ŚœŚ Ś™Ś“Ś•Śą', 'selectall' : 'Ś‘Ś—Ś™ŚšŚȘ Ś›Śœ Ś”Ś§Ś‘ŚŠŚ™Ś', 'selectfiles' : 'Ś‘Ś—Ś™ŚšŚȘ Ś§Ś•Ś‘Ś„ ŚŚ—Ś“ Ś•ŚžŚąŚœŚ”', 'selectffile' : 'Ś‘Ś—Ś™ŚšŚȘ Ś”Ś§Ś•Ś‘Ś„ Ś”ŚšŚŚ©Ś•ŚŸ', 'selectlfile' : 'Ś‘Ś—Ś™ŚšŚȘ Ś”Ś§Ś•Ś‘Ś„ Ś”ŚŚ—ŚšŚ•ŚŸ', 'viewlist' : 'ŚȘŚŠŚ•Ś’ŚȘ ŚšŚ©Ś™ŚžŚ”', 'viewicons' : 'ŚȘŚŠŚ•Ś’ŚȘ ŚĄŚžŚœŚ™Ś', 'places' : 'ŚžŚ™Ś§Ś•ŚžŚ™Ś', 'calc' : 'Ś—Ś™Ś©Ś•Ś‘', 'path' : 'Ś ŚȘŚ™Ś‘', 'aliasfor' : 'Ś›Ś™Ś Ś•Ś™ ŚąŚ‘Ś•Śš', 'locked' : 'Ś ŚąŚ•Śœ', 'dim' : 'ŚžŚžŚ“Ś™Ś', 'files' : 'Ś§Ś‘ŚŠŚ™Ś', 'folders' : 'ŚȘŚ™Ś§Ś™Ś•ŚȘ', 'items' : 'Ś€ŚšŚ™Ś˜Ś™Ś', 'yes' : 'Ś›ŚŸ', 'no' : 'ŚœŚ', 'link' : 'Ś§Ś™Ś©Ś•Śš', 'searcresult' : 'ŚȘŚ•ŚŠŚŚ•ŚȘ Ś—Ś™Ś€Ś•Ś©', 'selected' : 'Ś§Ś‘ŚŠŚ™Ś Ś Ś‘Ś—ŚšŚ™Ś', 'about' : 'ŚąŚœ ŚŚ•Ś“Ś•ŚȘ', 'shortcuts' : 'Ś§Ś™ŚŠŚ•ŚšŚ™ Ś“ŚšŚš', 'help' : 'ŚąŚ–ŚšŚ”', 'webfm' : 'ŚžŚ Ś”Śœ Ś§Ś‘ŚŠŚ™Ś Ś‘Ś“Ś€Ś“Ś€ŚŸ', 'ver' : 'Ś’ŚšŚĄŚ”', 'protocolver' : 'Ś’ŚšŚĄŚȘ Ś€ŚšŚ•Ś˜Ś•Ś§Ś•Śœ', 'homepage' : 'Ś“ŚŁ Ś”Ś‘Ś™ŚȘ Ś©Śœ Ś”ŚžŚ™Ś–Ś', 'docs' : 'ŚȘŚ™ŚąŚ•Ś“', 'github' : 'Ś€Ś™ŚœŚ•Ś’ ŚąŚ•ŚȘŚ§ Ś‘ÖŸGithub', 'twitter' : 'ŚœŚąŚ§Ś•Ś‘ ŚŚ—ŚšŚ™Ś Ś• Ś‘Ś˜Ś•Ś•Ś™Ś˜Śš', 'facebook' : 'ŚœŚ”ŚŠŚ˜ŚšŚŁ ŚŚœŚ™Ś Ś• Ś‘Ś€Ś™Ś™ŚĄŚ‘Ś•Ś§', 'team' : 'ŚŠŚ•Ś•ŚȘ', 'chiefdev' : 'ŚžŚ€ŚȘŚ— ŚšŚŚ©Ś™', 'developer' : 'ŚžŚȘŚ›Ś ŚȘ', 'contributor' : 'ŚȘŚ•ŚšŚ', 'maintainer' : 'ŚžŚȘŚ—Ś–Ś§', 'translator' : 'ŚžŚȘŚšŚ’Ś', 'icons' : 'ŚĄŚžŚœŚ™Ś', 'dontforget' : 'ŚœŚ ŚœŚ©Ś›Ś•Ś— ŚœŚ§Ś—ŚȘ ŚŚȘ Ś”ŚžŚ’Ś‘ŚȘ Ś©ŚœŚš', 'shortcutsof' : 'Ś§Ś™ŚŠŚ•ŚšŚ™ Ś”Ś“ŚšŚš ŚžŚ Ś•Ś˜ŚšŚœŚ™Ś', 'dropFiles' : 'Ś Ś™ŚȘŚŸ ŚœŚ”Ś©ŚœŚ™Śš ŚŚȘ Ś”Ś§Ś‘ŚŠŚ™Ś ŚœŚ›ŚŚŸ', 'or' : 'ŚŚ•', 'selectForUpload' : 'ŚœŚ‘Ś—Ś•Śš Ś§Ś‘ŚŠŚ™Ś ŚœŚ”ŚąŚœŚŚ”', 'moveFiles' : 'Ś”ŚąŚ‘ŚšŚȘ Ś§Ś‘ŚŠŚ™Ś', 'copyFiles' : 'Ś”ŚąŚȘŚ§ŚȘ Ś§Ś‘ŚŠŚ™Ś', 'rmFromPlaces' : 'Ś”ŚĄŚšŚ” ŚžŚžŚ™Ś§Ś•ŚžŚ™Ś', 'aspectRatio' : 'Ś™Ś—ŚĄ ŚȘŚŠŚ•Ś’Ś”', 'scale' : 'ŚžŚȘŚ™Ś—Ś”', 'width' : 'ŚšŚ•Ś—Ś‘', 'height' : 'Ś’Ś•Ś‘Ś”', 'resize' : 'Ś©Ś™Ś Ś•Ś™ Ś”Ś’Ś•Ś“Śœ', 'crop' : 'Ś—Ś™ŚȘŚ•Śš', 'rotate' : 'Ś”Ś™Ś€Ś•Śš', 'rotate-cw' : 'Ś”Ś™Ś€Ś•Śš Ś‘ÖŸ90 ŚžŚąŚœŚ•ŚȘ Ś Ś’Ś“ Ś”Ś©ŚąŚ•ŚŸ', 'rotate-ccw' : 'Ś”Ś™Ś€Ś•Śš Ś‘ÖŸ90 ŚžŚąŚœŚ•ŚȘ ŚąŚ Ś”Ś©ŚąŚ•ŚŸ CCW', 'degree' : '°', 'netMountDialogTitle' : 'ŚąŚ™Ś’Ś•ŚŸ Ś›Ś•Ś ŚŸ ŚšŚ©ŚȘ', // added 18.04.2012 'protocol' : 'Ś€ŚšŚ•Ś˜Ś•Ś§Ś•Śœ', // added 18.04.2012 'host' : 'ŚžŚŚšŚ—', // added 18.04.2012 'port' : 'Ś€ŚȘŚ—Ś”', // added 18.04.2012 'user' : 'ŚžŚ©ŚȘŚžŚ©', // added 18.04.2012 'pass' : 'ŚĄŚĄŚžŚ”', // added 18.04.2012 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Ś‘ŚœŚȘŚ™ Ś™Ś“Ś•Śą', 'kindFolder' : 'ŚȘŚ™Ś§Ś™Ś™Ś”', 'kindAlias' : 'Ś›Ś™Ś Ś•Ś™', 'kindAliasBroken' : 'Ś›Ś™Ś Ś•Ś™ Ś©Ś‘Ś•Śš', // applications 'kindApp' : 'Ś™Ś™Ś©Ś•Ś', 'kindPostscript' : 'ŚžŚĄŚžŚš Postscript', 'kindMsOffice' : 'ŚžŚĄŚžŚš Microsoft Office', 'kindMsWord' : 'ŚžŚĄŚžŚš Microsoft Word', 'kindMsExcel' : 'ŚžŚĄŚžŚš Microsoft Excel', 'kindMsPP' : 'ŚžŚŠŚ’ŚȘ Microsoft Powerpoint', 'kindOO' : 'ŚžŚĄŚžŚš Open Office', 'kindAppFlash' : 'Ś™Ś™Ś©Ś•Ś Flash', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Ś§Ś•Ś‘Ś„ Bittorrent', 'kind7z' : 'ŚŚšŚ›Ś™Ś•ŚŸ 7z', 'kindTAR' : 'ŚŚšŚ›Ś™Ś•ŚŸ TAR', 'kindGZIP' : 'ŚŚšŚ›Ś™Ś•ŚŸ GZIP', 'kindBZIP' : 'ŚŚšŚ›Ś™Ś•ŚŸ BZIP', 'kindXZ' : 'ŚŚšŚ›Ś™Ś•ŚŸ XZ', 'kindZIP' : 'ŚŚšŚ›Ś™Ś•ŚŸ ZIP', 'kindRAR' : 'ŚŚšŚ›Ś™Ś•ŚŸ RAR', 'kindJAR' : 'Ś§Ś•Ś‘Ś„ JAR Ś©Śœ Java', 'kindTTF' : 'Ś’Ś•Ś€ŚŸ True Type', 'kindOTF' : 'Ś’Ś•Ś€ŚŸ Open Type', 'kindRPM' : 'Ś—Ś‘Ś™ŚœŚȘ RPM', // texts 'kindText' : 'ŚžŚĄŚžŚš Ś˜Ś§ŚĄŚ˜', 'kindTextPlain' : 'Ś˜Ś§ŚĄŚ˜ Ś€Ś©Ś•Ś˜', 'kindPHP' : 'ŚžŚ§Ś•Śš PHP', 'kindCSS' : 'Ś’Ś™ŚœŚ™Ś•ŚŸ ŚĄŚ’Ś Ś•ŚŸ ŚžŚ“Ś•ŚšŚ’', 'kindHTML' : 'ŚžŚĄŚžŚš HTML', 'kindJS' : 'ŚžŚ§Ś•Śš Javascript', 'kindRTF' : 'ŚȘŚ‘Ś Ś™ŚȘ Ś˜Ś§ŚĄŚ˜ ŚąŚ©Ś™Śš', 'kindC' : 'ŚžŚ§Ś•Śš C', 'kindCHeader' : 'ŚžŚ§Ś•Śš Ś›Ś•ŚȘŚšŚȘ C', 'kindCPP' : 'ŚžŚ§Ś•Śš C++', 'kindCPPHeader' : 'ŚžŚ§Ś•Śš Ś›Ś•ŚȘŚšŚȘ C++', 'kindShell' : 'ŚȘŚĄŚšŚ™Ś˜ ŚžŚąŚ˜Ś€ŚȘ Ś™Ś•Ś Ś™Ś§ŚĄ', 'kindPython' : 'ŚžŚ§Ś•Śš Python', 'kindJava' : 'ŚžŚ§Ś•Śš Java', 'kindRuby' : 'ŚžŚ§Ś•Śš Ruby', 'kindPerl' : 'ŚȘŚĄŚšŚ™Ś˜ Perl', 'kindSQL' : 'ŚžŚ§Ś•Śš SQL', 'kindXML' : 'ŚžŚ§Ś•Śš XML', 'kindAWK' : 'ŚžŚ§Ś•Śš AWK', 'kindCSV' : 'ŚąŚšŚ›Ś™Ś ŚžŚ•Ś€ŚšŚ“Ś™Ś Ś‘Ś€ŚĄŚ™Ś§Ś™Ś', 'kindDOCBOOK' : 'ŚžŚĄŚžŚšDocbook XML', // images 'kindImage' : 'ŚȘŚžŚ•Ś Ś”', 'kindBMP' : 'ŚȘŚžŚ•Ś ŚȘ BMP', 'kindJPEG' : 'ŚȘŚžŚ•Ś ŚȘ JPEG', 'kindGIF' : 'ŚȘŚžŚ•Ś ŚȘ GIF', 'kindPNG' : 'ŚȘŚžŚ•Ś ŚȘ PNG', 'kindTIFF' : 'ŚȘŚžŚ•Ś ŚȘ TIFF', 'kindTGA' : 'ŚȘŚžŚ•Ś ŚȘ TGA', 'kindPSD' : 'ŚȘŚžŚ•Ś ŚȘ Adobe Photoshop', 'kindXBITMAP' : 'ŚȘŚžŚ•Ś ŚȘ ŚžŚ€ŚȘ ŚĄŚ™Ś‘Ś™Ś•ŚȘ X', 'kindPXM' : 'ŚȘŚžŚ•Ś ŚȘ Pixelmator', // media 'kindAudio' : 'ŚžŚ“Ś™Ś” ŚžŚĄŚ•Ś’ Ś©ŚžŚą', 'kindAudioMPEG' : 'Ś©ŚžŚą MPEG', 'kindAudioMPEG4' : 'Ś©ŚžŚą MPEG-4', 'kindAudioMIDI' : 'Ś©ŚžŚą MIDI', 'kindAudioOGG' : 'Ś©ŚžŚą Ogg Vorbis', 'kindAudioWAV' : 'Ś©ŚžŚą WAV', 'AudioPlaylist' : 'ŚšŚ©Ś™ŚžŚȘ Ś Ś’Ś™Ś Ś” MP3', 'kindVideo' : 'ŚžŚ“Ś™Ś” ŚžŚĄŚ•Ś’ Ś•Ś™Ś“ŚŚ•', 'kindVideoDV' : 'ŚĄŚšŚ˜Ś•ŚŸ DV', 'kindVideoMPEG' : 'ŚĄŚšŚ˜Ś•ŚŸ MPEG', 'kindVideoMPEG4' : 'ŚĄŚšŚ˜Ś•ŚŸ MPEG-4', 'kindVideoAVI' : 'ŚĄŚšŚ˜Ś•ŚŸ AVI', 'kindVideoMOV' : 'ŚĄŚšŚ˜Ś•ŚŸ Quick Time', 'kindVideoWM' : 'ŚĄŚšŚ˜Ś•ŚŸ Windows Media', 'kindVideoFlash' : 'ŚĄŚšŚ˜Ś•ŚŸ Flash', 'kindVideoMKV' : 'ŚĄŚšŚ˜Ś•ŚŸ Matroska', 'kindVideoOGG' : 'ŚĄŚšŚ˜Ś•ŚŸ Ogg' } }; })); application/library/js/i18n/elfinder.pl.js000064400000103204147577724760014500 0ustar00/** * Polskie tƂumaczenie * @author Marcin MikoƂajczyk * @author BogusƂaw Zięba * @version 2020-03-29 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.pl = { translator : 'Marcin MikoƂajczyk <marcin@pjwstk.edu.pl>, BogusƂaw Zięba <bobi@poczta.fm>, BogusƂaw Zięba <bobi@poczta.fm>', language : 'Polski', direction : 'ltr', dateFormat : 'd.m.Y H:i', // will show like: 29.03.2020 06:58 fancyDateFormat : '$1 H:i', // will show like: Dzisiaj 06:58 nonameDateFormat : 'ymd-His', // noname upload will show like: 200329-065813 messages : { /********************************** errors **********************************/ 'error' : 'BƂąd', 'errUnknown' : 'Nieznany bƂąd.', 'errUnknownCmd' : 'Nieznane polecenie.', 'errJqui' : 'Niepoprawna konfiguracja jQuery UI. Muszą być zawarte komponenty selectable, draggable i droppable.', 'errNode' : 'elFinder wymaga utworzenia obiektu DOM.', 'errURL' : 'Niepoprawna konfiguracja elFinder! Pole URL nie jest ustawione.', 'errAccess' : 'Dostęp zabroniony.', 'errConnect' : 'BƂąd poƂączenia z zapleczem.', 'errAbort' : 'PoƂączenie zostaƂo przerwane.', 'errTimeout' : 'UpƂynąƂ czas oczekiwania na poƂączenie.', 'errNotFound' : 'Zaplecze nie zostaƂo znalezione.', 'errResponse' : 'NieprawidƂowa odpowiedĆș zaplecza.', 'errConf' : 'Niepoprawna konfiguracja zaplecza.', 'errJSON' : 'ModuƂ PHP JSON nie jest zainstalowany.', 'errNoVolumes' : 'Brak moĆŒliwoƛci odczytu katalogĂłw.', 'errCmdParams' : 'NieprawidƂowe parametry dla polecenia "$1".', 'errDataNotJSON' : 'Dane nie są JSON.', 'errDataEmpty' : 'Dane są puste.', 'errCmdReq' : 'Zaplecze wymaga podania nazwy polecenia.', 'errOpen' : 'Nie moĆŒna otworzyć "$1".', 'errNotFolder' : 'Obiekt nie jest katalogiem.', 'errNotFile' : 'Obiekt nie jest plikiem.', 'errRead' : 'Nie moĆŒna odczytać "$1".', 'errWrite' : 'Nie moĆŒna zapisać do "$1".', 'errPerm' : 'Brak uprawnieƄ.', 'errLocked' : '"$1" jest zablokowany i nie moĆŒe zostać zmieniony, przeniesiony lub usunięty.', 'errExists' : 'Plik "$1" juĆŒ istnieje.', 'errInvName' : 'NieprawidƂowa nazwa pliku.', 'errInvDirname' : 'NieprawidƂowa nazwa folderu.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Nie znaleziono folderu.', 'errFileNotFound' : 'Plik nie zostaƂ znaleziony.', 'errTrgFolderNotFound' : 'Katalog docelowy "$1" nie zostaƂ znaleziony.', 'errPopup' : 'Przeglądarka zablokowaƂa otwarcie nowego okna. Aby otworzyć plik, zmieƄ ustawienia przeglądarki.', 'errMkdir' : 'Nie moĆŒna utworzyć katalogu "$1".', 'errMkfile' : 'Nie moĆŒna utworzyć pliku "$1".', 'errRename' : 'Nie moĆŒna zmienić nazwy "$1".', 'errCopyFrom' : 'Kopiowanie z katalogu "$1" nie jest moĆŒliwe.', 'errCopyTo' : 'Kopiowanie do katalogu "$1" nie jest moĆŒliwe.', 'errMkOutLink' : 'Nie moĆŒna utworzyć link do zewnętrznego katalogu gƂównego.', // from v2.1 added 03.10.2015 'errUpload' : 'BƂąd wysyƂania.', // old name - errUploadCommon 'errUploadFile' : 'Nie moĆŒna wysƂać "$1".', // old name - errUpload 'errUploadNoFiles' : 'Nie znaleziono plikĂłw do wysƂania.', 'errUploadTotalSize' : 'Przekroczono dopuszczalny rozmiar wysyƂanych plikĂłw.', // old name - errMaxSize 'errUploadFileSize' : 'Plik przekracza dopuszczalny rozmiar.', // old name - errFileMaxSize 'errUploadMime' : 'Niedozwolony typ pliku.', 'errUploadTransfer' : 'BƂąd przesyƂania "$1".', 'errUploadTemp' : 'Nie moĆŒna wykonać tymczasowego pliku do przesƂania.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Obiekt "$1" istnieje juĆŒ w tej lokalizacji i nie moĆŒe być zastąpiony przez inny typ obiektu.', // new 'errReplace' : 'Nie moĆŒna zastąpić "$1".', 'errSave' : 'Nie moĆŒna zapisać "$1".', 'errCopy' : 'Nie moĆŒna skopiować "$1".', 'errMove' : 'Nie moĆŒna przenieƛć "$1".', 'errCopyInItself' : 'Nie moĆŒna skopiować "$1" w miejsce jego samego.', 'errRm' : 'Nie moĆŒna usunąć "$1".', 'errTrash' : 'Nie moĆŒna do kosza.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Nie naleĆŒy usunąć pliku(s) ĆșrĂłdƂowy.', 'errExtract' : 'Nie moĆŒna wypakować plikĂłw z "$1".', 'errArchive' : 'Nie moĆŒna utworzyć archiwum.', 'errArcType' : 'NieobsƂugiwany typ archiwum.', 'errNoArchive' : 'Plik nie jest prawidƂowym typem archiwum.', 'errCmdNoSupport' : 'Zaplecze nie obsƂuguje tego polecenia.', 'errReplByChild' : 'Nie moĆŒna zastąpić katalogu "$1" elementem w nim zawartym', 'errArcSymlinks' : 'Ze względĂłw bezpieczeƄstwa rozpakowywanie archiwĂłw zawierających dowiązania symboliczne (symlinks) jest niedozwolone.', // edited 24.06.2012 'errArcMaxSize' : 'Archiwum przekracza maksymalny dopuszczalny rozmiar.', 'errResize' : 'Nie moĆŒna zmienić rozmiaru "$1".', 'errResizeDegree' : 'NieprawidƂowy stopieƄ obracania.', // added 7.3.2013 'errResizeRotate' : 'Nie moĆŒna obrĂłcić obrazu.', // added 7.3.2013 'errResizeSize' : 'NieprawidƂowy rozmiar obrazu.', // added 7.3.2013 'errResizeNoChange' : 'Nie zmieniono rozmiaru obrazu.', // added 7.3.2013 'errUsupportType' : 'NieobsƂugiwany typ pliku.', 'errNotUTF8Content' : 'Plik "$1" nie jest UTF-8 i nie moĆŒe być edytowany.', // added 9.11.2011 'errNetMount' : 'Nie moĆŒna zamontować "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'NieobsƂugiwany protokóƂ.', // added 17.04.2012 'errNetMountFailed' : 'Montowanie nie powiodƂo się.', // added 17.04.2012 'errNetMountHostReq' : 'Host wymagany.', // added 18.04.2012 'errSessionExpires' : 'Twoja sesja wygasƂa z powodu nieaktywnoƛci.', 'errCreatingTempDir' : 'Nie moĆŒna utworzyć katalogu tymczasowego: "$1"', 'errFtpDownloadFile' : 'Nie moĆŒna pobrać pliku z FTP: "$1"', 'errFtpUploadFile' : 'Nie moĆŒna przesƂać pliku na serwer FTP: "$1"', 'errFtpMkdir' : 'Nie moĆŒna utworzyć zdalnego katalogu FTP: "$1"', 'errArchiveExec' : 'BƂąd podczas archiwizacji plikĂłw: "$1"', 'errExtractExec' : 'BƂąd podczas wyodrębniania plikĂłw: "$1"', 'errNetUnMount' : 'Nie moĆŒna odmontować', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Nie wymienialne na UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'WyprĂłbuj Google Chrome, jeƛli chcesz przesƂać katalog.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'UpƂynąƂ limit czasu podczas wyszukiwania "$1". Wynik wyszukiwania jest częƛciowy.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Wymagana jest ponowna autoryzacja.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Maks. liczba elementĂłw do wyboru to $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Nie moĆŒna przywrĂłcić z kosza. Nie moĆŒna zidentyfikować przywrĂłcić docelowego.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Nie znaleziono edytora tego typu pliku.', // from v2.1.25 added 23.5.2017 'errServerError' : 'WystąpiƂ bƂąd po stronie serwera .', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Nie moĆŒna do pustego folderu "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Jest jeszcze $1 bƂąd/bƂędy.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'UtwĂłrz archiwum', 'cmdback' : 'Wstecz', 'cmdcopy' : 'Kopiuj', 'cmdcut' : 'Wytnij', 'cmddownload' : 'Pobierz', 'cmdduplicate' : 'Duplikuj', 'cmdedit' : 'Edytuj plik', 'cmdextract' : 'Wypakuj pliki z archiwum', 'cmdforward' : 'Dalej', 'cmdgetfile' : 'Wybierz pliki', 'cmdhelp' : 'Informacje o programie', 'cmdhome' : 'GƂówny', 'cmdinfo' : 'WƂaƛciwoƛci', 'cmdmkdir' : 'Nowy katalog', 'cmdmkdirin' : 'Do nowego katalogu', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nowy plik', 'cmdopen' : 'OtwĂłrz', 'cmdpaste' : 'Wklej', 'cmdquicklook' : 'Podgląd', 'cmdreload' : 'OdƛwieĆŒ', 'cmdrename' : 'ZmieƄ nazwę', 'cmdrm' : 'UsuƄ', 'cmdtrash' : 'Do kosza', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Przywróć', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Wyszukaj pliki', 'cmdup' : 'PrzejdĆș do katalogu nadrzędnego', 'cmdupload' : 'Wyƛlij pliki', 'cmdview' : 'Widok', 'cmdresize' : 'ZmieƄ rozmiar i Obróć', 'cmdsort' : 'Sortuj', 'cmdnetmount' : 'Zamontuj wolumin sieciowy', // added 18.04.2012 'cmdnetunmount': 'Odmontuj', // from v2.1 added 30.04.2012 'cmdplaces' : 'Do Miejsc', // added 28.12.2014 'cmdchmod' : 'Zmiana trybu', // from v2.1 added 20.6.2015 'cmdopendir' : 'OtwĂłrz katalog', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Resetuj szerokoƛć kolumny', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'PeƂny ekran', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Przenieƛ', // from v2.1.15 added 21.08.2016 'cmdempty' : 'OprĂłĆŒnij folder', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Cofnij', // from v2.1.27 added 31.07.2017 'cmdredo' : 'PonĂłw', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferencje', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Zaznacz wszystko', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Odznacz wszystko', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Odwróć wybĂłr', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'OtwĂłrz w nowym oknie', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Ukryj (osobiste)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Zamknij', 'btnSave' : 'Zapisz', 'btnRm' : 'UsuƄ', 'btnApply' : 'Zastosuj', 'btnCancel' : 'Anuluj', 'btnNo' : 'Nie', 'btnYes' : 'Tak', 'btnMount' : 'Montuj', // added 18.04.2012 'btnApprove': 'IdĆș do $1 & zatwierdĆș', // from v2.1 added 26.04.2012 'btnUnmount': 'Odmontuj', // from v2.1 added 30.04.2012 'btnConv' : 'Konwertuj', // from v2.1 added 08.04.2014 'btnCwd' : 'Tutaj', // from v2.1 added 22.5.2015 'btnVolume' : 'Wolumin', // from v2.1 added 22.5.2015 'btnAll' : 'Wszystko', // from v2.1 added 22.5.2015 'btnMime' : 'Typ MIME', // from v2.1 added 22.5.2015 'btnFileName':'Nazwa pliku', // from v2.1 added 22.5.2015 'btnSaveClose': 'Zapisz & Zamknij', // from v2.1 added 12.6.2015 'btnBackup' : 'Kopia zapasowa', // fromv2.1 added 28.11.2015 'btnRename' : 'ZmieƄ nazwę', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'ZmieƄ nazwę(Wszystkie)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Poprz ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Nast ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Zapisz Jako', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Otwieranie katalogu', 'ntffile' : 'OtwĂłrz plik', 'ntfreload' : 'OdƛwieĆŒ zawartoƛć katalogu', 'ntfmkdir' : 'Tworzenie katalogu', 'ntfmkfile' : 'Tworzenie plikĂłw', 'ntfrm' : 'Usuwanie plikĂłw', 'ntfcopy' : 'Kopiowanie plikĂłw', 'ntfmove' : 'Przenoszenie plikĂłw', 'ntfprepare' : 'Przygotowanie do kopiowania plikĂłw', 'ntfrename' : 'Zmiana nazw plikĂłw', 'ntfupload' : 'WysyƂanie plikĂłw', 'ntfdownload' : 'Pobieranie plikĂłw', 'ntfsave' : 'Zapisywanie plikĂłw', 'ntfarchive' : 'Tworzenie archiwum', 'ntfextract' : 'Wypakowywanie plikĂłw z archiwum', 'ntfsearch' : 'Wyszukiwanie plikĂłw', 'ntfresize' : 'Zmiana rozmiaru obrazĂłw', 'ntfsmth' : 'Robienie czegoƛ >_<', 'ntfloadimg' : 'Ɓadowanie obrazu', 'ntfnetmount' : 'MontaĆŒ woluminu sieciowego', // added 18.04.2012 'ntfnetunmount': 'OdƂączanie woluminu sieciowego', // from v2.1 added 30.04.2012 'ntfdim' : 'Pozyskiwanie wymiaru obrazu', // added 20.05.2013 'ntfreaddir' : 'Odczytywanie informacji katalogu', // from v2.1 added 01.07.2013 'ntfurl' : 'Pobieranie URL linku', // from v2.1 added 11.03.2014 'ntfchmod' : 'Zmiana trybu pliku', // from v2.1 added 20.6.2015 'ntfpreupload': 'Weryfikacja nazwy przesƂanego pliku', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Tworzenie pliku do pobrania', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Uzyskiwanie informacji o ƛcieĆŒce', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Przetwarzanie przesƂanego pliku', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Wykonuje wrzucanie do kosza', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Wykonuje przywracanie z kosza', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Sprawdzanie folderu docelowego', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Cofanie poprzedniej operacji', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Ponownie poprzednio cofnięte', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Sprawdzanie zawartoƛci', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'ƚmieci', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'nieznana', 'Today' : 'Dzisiaj', 'Yesterday' : 'Wczoraj', 'msJan' : 'Sty', 'msFeb' : 'Lut', 'msMar' : 'Mar', 'msApr' : 'Kwi', 'msMay' : 'Maj', 'msJun' : 'Cze', 'msJul' : 'Lip', 'msAug' : 'Sie', 'msSep' : 'Wrz', 'msOct' : 'PaĆș', 'msNov' : 'Lis', 'msDec' : 'Gru', 'January' : 'StyczeƄ', 'February' : 'Luty', 'March' : 'Marzec', 'April' : 'KwiecieƄ', 'May' : 'Maj', 'June' : 'Czerwiec', 'July' : 'Lipiec', 'August' : 'SierpieƄ', 'September' : 'WrzesieƄ', 'October' : 'PaĆșdziernik', 'November' : 'Listopad', 'December' : 'GrudzieƄ', 'Sunday' : 'Niedziela', 'Monday' : 'PoniedziaƂek', 'Tuesday' : 'Wtorek', 'Wednesday' : 'ƚroda', 'Thursday' : 'Czwartek', 'Friday' : 'Piątek', 'Saturday' : 'Sobota', 'Sun' : 'Nie', 'Mon' : 'Pon', 'Tue' : 'Wto', 'Wed' : 'ƚro', 'Thu' : 'Czw', 'Fri' : 'Pią', 'Sat' : 'Sob', /******************************** sort variants ********************************/ 'sortname' : 'w/g nazwy', 'sortkind' : 'w/g typu', 'sortsize' : 'w/g rozmiaru', 'sortdate' : 'w/g daty', 'sortFoldersFirst' : 'katalogi pierwsze', 'sortperm' : 'wg/nazwy', // from v2.1.13 added 13.06.2016 'sortmode' : 'wg/trybu', // from v2.1.13 added 13.06.2016 'sortowner' : 'wg/wƂaƛciciela', // from v2.1.13 added 13.06.2016 'sortgroup' : 'wg/grup', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'RĂłwnieĆŒ drzewa katalogĂłw', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NowyPlik.txt', // added 10.11.2015 'untitled folder' : 'NowyFolder', // added 10.11.2015 'Archive' : 'NoweArchiwum', // from v2.1 added 10.11.2015 'untitled file' : 'NowyPlik.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1 Plik', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Wymagane potwierdzenie', 'confirmRm' : 'Czy na pewno chcesz usunąć pliki?
      Tej operacji nie moĆŒna cofnąć!', 'confirmRepl' : 'Zastąpić stary plik nowym?', 'confirmRest' : 'Zamienić istniejący element na pozycję w koszu?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Nie w UTF-8
      Konwertować na UTF-8?
      Zawartoƛć stanie się UTF-8 poprzez zapisanie po konwersji.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Nie moĆŒna wykryć kodowania tego pliku. Musi być tymczasowo przeksztaƂcony do UTF-8.
      Proszę wybrać kodowanie znaków tego pliku.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'ZostaƂ zmodyfikowany.
      Utracisz pracę, jeƛli nie zapiszesz zmian.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Czy na pewno chcesz przenieƛć elementy do kosza?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Czy na pewno chcesz przenieƛć elementy do "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Zastosuj do wszystkich', 'name' : 'Nazwa', 'size' : 'Rozmiar', 'perms' : 'Uprawnienia', 'modify' : 'Zmodyfikowany', 'kind' : 'Typ', 'read' : 'odczyt', 'write' : 'zapis', 'noaccess' : 'brak dostępu', 'and' : 'i', 'unknown' : 'nieznany', 'selectall' : 'Zaznacz wszystkie pliki', 'selectfiles' : 'Zaznacz plik(i)', 'selectffile' : 'Zaznacz pierwszy plik', 'selectlfile' : 'Zaznacz ostatni plik', 'viewlist' : 'Widok listy', 'viewicons' : 'Widok ikon', 'viewSmall' : 'MaƂe ikony', // from v2.1.39 added 22.5.2018 'viewMedium' : 'ƚrednie ikony', // from v2.1.39 added 22.5.2018 'viewLarge' : 'DuĆŒe ikony', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Bardzo duĆŒe ikony', // from v2.1.39 added 22.5.2018 'places' : 'Ulubione', 'calc' : 'Obliczanie', 'path' : 'ƚcieĆŒka', 'aliasfor' : 'Alias do', 'locked' : 'Zablokowany', 'dim' : 'Wymiary', 'files' : 'Plik(Ăłw)', 'folders' : 'Katalogi', 'items' : 'Element(Ăłw)', 'yes' : 'tak', 'no' : 'nie', 'link' : 'Odnoƛnik', 'searcresult' : 'Wyniki wyszukiwania', 'selected' : 'zaznaczonych obiektĂłw', 'about' : 'O programie', 'shortcuts' : 'SkrĂłty klawiaturowe', 'help' : 'Pomoc', 'webfm' : 'MenedĆŒer plikĂłw sieciowych', 'ver' : 'Wersja', 'protocolver' : 'wersja protokoƂu', 'homepage' : 'Strona projektu', 'docs' : 'Dokumentacja', 'github' : 'Obserwuj rozwĂłj projektu na Github', 'twitter' : 'ƚledĆș nas na Twitterze', 'facebook' : 'DoƂącz do nas na Facebooku', 'team' : 'ZespóƂ', 'chiefdev' : 'gƂówny programista', 'developer' : 'programista', 'contributor' : 'wspóƂautor', 'maintainer' : 'koordynator', 'translator' : 'tƂumacz', 'icons' : 'Ikony', 'dontforget' : 'i nie zapomnij zabrać ręcznika', 'shortcutsof' : 'SkrĂłty klawiaturowe są wyƂączone', 'dropFiles' : 'Upuƛć pliki tutaj', 'or' : 'lub', 'selectForUpload' : 'Wybierz pliki', 'moveFiles' : 'Przenieƛ pliki', 'copyFiles' : 'Kopiuj pliki', 'restoreFiles' : 'Przywróć elementy', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'UsuƄ z miejsc', 'aspectRatio' : 'Zachowaj proporcje', 'scale' : 'Skala', 'width' : 'Szerokoƛć', 'height' : 'Wysokoƛć', 'resize' : 'ZmieƄ rozmiar', 'crop' : 'Przytnij', 'rotate' : 'Obróć', 'rotate-cw' : 'Obróć 90° w lewo', 'rotate-ccw' : 'Obróć 90° w prawo', 'degree' : '°', 'netMountDialogTitle' : 'MontaĆŒ woluminu sieciowego', // added 18.04.2012 'protocol' : 'ProtokóƂ', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'UĆŒytkownik', // added 18.04.2012 'pass' : 'HasƂo', // added 18.04.2012 'confirmUnmount' : 'Czy chcesz odmontować $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Upuƛć lub Wklej pliki z przeglądarki', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Upuƛć lub Wklej tutaj pliki i adresy URL', // from v2.1 added 07.04.2014 'encoding' : 'Kodowanie', // from v2.1 added 19.12.2014 'locale' : 'Lokalne', // from v2.1 added 19.12.2014 'searchTarget' : 'Docelowo: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Wyszukiwanie poprzez wpisanie typu MIME', // from v2.1 added 22.5.2015 'owner' : 'WƂaƛciciel', // from v2.1 added 20.6.2015 'group' : 'Grupa', // from v2.1 added 20.6.2015 'other' : 'Inne', // from v2.1 added 20.6.2015 'execute' : 'Wykonaj', // from v2.1 added 20.6.2015 'perm' : 'Uprawnienia', // from v2.1 added 20.6.2015 'mode' : 'Tryb', // from v2.1 added 20.6.2015 'emptyFolder' : 'Katalog jest pusty', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Katalog jest pusty\\AUpuƛć aby dodać pozycje', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Katalog jest pusty\\ADotknij dƂuĆŒej aby dodać pozycje', // from v2.1.6 added 30.12.2015 'quality' : 'Jakoƛć', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto synchronizacja', // from v2.1.6 added 10.1.2016 'moveUp' : 'Przenieƛ w gĂłrę', // from v2.1.6 added 18.1.2016 'getLink' : 'Pobierz URL linku', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Wybrane pozycje ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID Katalogu', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'ZezwĂłl na dostęp offline', // from v2.1.10 added 3.25.2016 'reAuth' : 'Aby ponownie uwierzytelnić', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Teraz Ƃaduję...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Otwieranie wielu plikĂłw', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'PrĂłbujesz otworzyć $1 plikĂłw. Czy na pewno chcesz, aby otworzyć w przeglądarce?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Wynik wyszukiwania jest pusty', // from v2.1.12 added 5.16.2016 'editingFile' : 'Edytujesz plik.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Masz wybranych $1 pozycji.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Masz $1 pozycji w schowku.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Wyszukiwanie przyrostowe jest wyƂącznie z bieĆŒÄ…cego widoku.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Przywracanie', // from v2.1.15 added 3.8.2016 'complete' : '$1 zakoƄczone', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Menu kontekstowe', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Obracanie strony', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Wolumin gƂówny', // from v2.1.16 added 16.9.2016 'reset' : 'Resetuj', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Kolor tƂa', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Wybierania kolorĂłw', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Kratka', // from v2.1.16 added 4.10.2016 'enabled' : 'WƂączone', // from v2.1.16 added 4.10.2016 'disabled' : 'WyƂączone', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Wyniki wyszukiwania są puste w bieĆŒÄ…cym widoku.\\AWciƛnij [Enter] aby poszerzyć zakres wyszukiwania.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Wyszukiwanie pierwszej litery brak wynikĂłw w bieĆŒÄ…cym widoku.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Etykieta tekstowa', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 min pozostaƂo', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'OtwĂłrz ponownie z wybranym kodowaniem', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Zapisz z wybranym kodowaniem', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Wybierz katalog', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Wyszukiwanie pierwszej litery', // from v2.1.23 added 24.3.2017 'presets' : 'Wstępnie ustalone', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'To zbyt wiele rzeczy, więc nie mogą być w koszu.', // from v2.1.25 added 9.6.2017 'TextArea' : 'PoleTekstowe', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'OprĂłĆŒnij folder "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Brak elementĂłw w folderze "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preferencje', // from v2.1.26 added 28.6.2017 'language' : 'Ustawienie języka', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Zainicjuj ustawienia zapisane w tej przeglądarce', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Ustawienia paska narzędzi', // from v2.1.27 added 2.8.2017 'charsLeft' : '... pozostaƂo $1 znak(Ăłw).', // from v2.1.29 added 30.8.2017 'linesLeft' : '... pozostaƂo $1 lini.', // from v2.1.52 added 16.1.2020 'sum' : 'Suma', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'PrzybliĆŒony rozmiar pliku', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Skoncentruj się na elemencie dialogowym po najechaniu myszą', // from v2.1.30 added 2.11.2017 'select' : 'Wybierz', // from v2.1.30 added 23.11.2017 'selectAction' : 'DziaƂanie po wybraniu pliku', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'OtwĂłrz za pomocą ostatnio uĆŒywanego edytora', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Odwróć zaznaczenie', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Czy na pewno chcesz zmienić nazwę $1 wybranych elementĂłw takich jak $2?
      Tego nie da się cofnąć!', // from v2.1.31 added 4.12.2017 'batchRename' : 'ZmieƄ partiami', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Liczba', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Dodaj prefix', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Dodaj suffix', // from v2.1.31 added 8.12.2017 'changeExtention' : 'ZmieƄ rozszerzenie', // from v2.1.31 added 8.12.2017 'columnPref' : 'Ustawienia kolumn (Widok listy)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Wszystkie zmiany widoczne natychmiast w archiwum.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Wszelkie zmiany nie będą widoczne, dopĂłki nie odƂączysz tego woluminu.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Następujący wolumin (y), zamontowany na tym urządzeniu rĂłwnieĆŒ niezamontowany. Czy na pewno chcesz go odmontować?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Informacje Wyboru', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorytmy do pokazywania hash pliku', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info ElementĂłw (WybĂłr Panelu Informacyjnego)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Naciƛnij ponownie, aby wyjƛć.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Pasek narzędziowy', // from v2.1.38 added 4.4.2018 'workspace' : 'Obszar Pracy', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'Wszystko', // from v2.1.38 added 4.4.2018 'iconSize' : 'Rozmiar Ikony (Podgląd ikon)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'OtwĂłrz zmaksymalizowane okno edytora', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'PoniewaĆŒ konwersja przez API nie jest obecnie dostępna, naleĆŒy dokonać konwersji w witrynie.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'Po konwersji musisz przesƂać z adresem URL pozycji lub pobranym plikiem, aby zapisać przekonwertowany plik.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Konwertuj na stronie $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integracje', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Ten elFinder ma zintegrowane następujące usƂugi zewnętrzne. Przed uĆŒyciem ich sprawdĆș warunki uĆŒytkowania, politykę prywatnoƛci itp.', // from v2.1.40 added 11.7.2018 'showHidden' : 'PokaĆŒ ukryte pozycje', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Ukryj ukryte pozycje', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'PokaĆŒ/Ukryj ukryte pozycje', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Typy plikĂłw, ktĂłre moĆŒna wƂączyć za pomocą "Nowy plik"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Typ pliku tekstowego', // from v2.1.41 added 7.8.2018 'add' : 'Dodaj', // from v2.1.41 added 7.8.2018 'theme' : 'Motyw', // from v2.1.43 added 19.10.2018 'default' : 'Domyƛlnie', // from v2.1.43 added 19.10.2018 'description' : 'Opis', // from v2.1.43 added 19.10.2018 'website' : 'Witryna', // from v2.1.43 added 19.10.2018 'author' : 'Autor', // from v2.1.43 added 19.10.2018 'email' : 'E-mail', // from v2.1.43 added 19.10.2018 'license' : 'Licencja', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Tego elementu nie moĆŒna zapisać. Aby uniknąć utraty zmian, musisz wyeksportować go na swĂłj komputer.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Kliknij dwukrotnie plik, aby go wybrać.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'UĆŒyj trybu peƂnoekranowego', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Nieznany', 'kindRoot' : 'GƂówny Wolumin', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Katalog', 'kindSelects' : 'Zaznaczenie', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Utracony alias', // applications 'kindApp' : 'Aplikacja', 'kindPostscript' : 'Dokument Postscript', 'kindMsOffice' : 'Dokument Office', 'kindMsWord' : 'Dokument Word', 'kindMsExcel' : 'Dokument Excel', 'kindMsPP' : 'Prezentacja PowerPoint', 'kindOO' : 'Dokument OpenOffice', 'kindAppFlash' : 'Aplikacja Flash', 'kindPDF' : 'Dokument przenoƛny PDF', 'kindTorrent' : 'Plik BitTorrent', 'kind7z' : 'Archiwum 7z', 'kindTAR' : 'Archiwum TAR', 'kindGZIP' : 'Archiwum GZIP', 'kindBZIP' : 'Archiwum BZIP', 'kindXZ' : 'Archiwum XZ', 'kindZIP' : 'Archiwum ZIP', 'kindRAR' : 'Archiwum RAR', 'kindJAR' : 'Plik Java JAR', 'kindTTF' : 'Czcionka TrueType', 'kindOTF' : 'Czcionka OpenType', 'kindRPM' : 'Pakiet RPM', // texts 'kindText' : 'Dokument tekstowy', 'kindTextPlain' : 'ZwykƂy tekst', 'kindPHP' : 'Kod ĆșrĂłdƂowy PHP', 'kindCSS' : 'Kaskadowe arkusze stylĂłw', 'kindHTML' : 'Dokument HTML', 'kindJS' : 'Kod ĆșrĂłdƂowy Javascript', 'kindRTF' : 'Tekst sformatowany RTF', 'kindC' : 'Kod ĆșrĂłdƂowy C', 'kindCHeader' : 'Plik nagƂówka C', 'kindCPP' : 'Kod ĆșrĂłdƂowy C++', 'kindCPPHeader' : 'Plik nagƂówka C++', 'kindShell' : 'Skrypt powƂoki Unix', 'kindPython' : 'Kod ĆșrĂłdƂowy Python', 'kindJava' : 'Kod ĆșrĂłdƂowy Java', 'kindRuby' : 'Kod ĆșrĂłdƂowy Ruby', 'kindPerl' : 'Skrypt Perl', 'kindSQL' : 'Kod ĆșrĂłdƂowy SQL', 'kindXML' : 'Dokument XML', 'kindAWK' : 'Kod ĆșrĂłdƂowy AWK', 'kindCSV' : 'Tekst rozdzielany przecinkami CSV', 'kindDOCBOOK' : 'Dokument Docbook XML', 'kindMarkdown' : 'Tekst promocyjny', // added 20.7.2015 // images 'kindImage' : 'Obraz', 'kindBMP' : 'Obraz BMP', 'kindJPEG' : 'Obraz JPEG', 'kindGIF' : 'Obraz GIF', 'kindPNG' : 'Obraz PNG', 'kindTIFF' : 'Obraz TIFF', 'kindTGA' : 'Obraz TGA', 'kindPSD' : 'Obraz Adobe Photoshop', 'kindXBITMAP' : 'Obraz X BitMap', 'kindPXM' : 'Obraz Pixelmator', // media 'kindAudio' : 'Plik dĆșwiękowy', 'kindAudioMPEG' : 'Plik dĆșwiękowy MPEG', 'kindAudioMPEG4' : 'Plik dĆșwiękowy MPEG-4', 'kindAudioMIDI' : 'Plik dĆșwiękowy MIDI', 'kindAudioOGG' : 'Plik dĆșwiękowy Ogg Vorbis', 'kindAudioWAV' : 'Plik dĆșwiękowy WAV', 'AudioPlaylist' : 'Lista odtwarzania MP3', 'kindVideo' : 'Plik wideo', 'kindVideoDV' : 'Plik wideo DV', 'kindVideoMPEG' : 'Plik wideo MPEG', 'kindVideoMPEG4' : 'Plik wideo MPEG-4', 'kindVideoAVI' : 'Plik wideo AVI', 'kindVideoMOV' : 'Plik wideo Quick Time', 'kindVideoWM' : 'Plik wideo Windows Media', 'kindVideoFlash' : 'Plik wideo Flash', 'kindVideoMKV' : 'Plik wideo Matroska', 'kindVideoOGG' : 'Plik wideo Ogg' } }; })); application/library/js/i18n/elfinder.uk.js000064400000122531147577724760014510 0ustar00/** * ĐŁĐșŃ€Đ°Ń—ĐœŃŃŒĐșĐ° ĐŒĐŸĐČĐ° translation * @author ITLancer * @author cjayho * @version 2020-02-10 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.uk = { translator : 'ITLancer, cjayho <cj.fooser@gmail.com>', language : 'ĐŁĐșŃ€Đ°Ń—ĐœŃŃŒĐșĐ° ĐŒĐŸĐČĐ°', direction : 'ltr', dateFormat : 'd.m.Y H:i', // will show like: 10.02.2020 16:52 fancyDateFormat : '$1 H:i', // will show like: ŃŃŒĐŸĐłĐŸĐŽĐœŃ– 16:52 nonameDateFormat : 'ymd-His', // noname upload will show like: 200210-165246 messages : { /********************************** errors **********************************/ 'error' : 'ĐŸĐŸĐŒĐžĐ»ĐșĐ°', 'errUnknown' : 'ĐĐ”ĐČŃ–ĐŽĐŸĐŒĐ° ĐżĐŸĐŒĐžĐ»ĐșĐ°.', 'errUnknownCmd' : 'ĐĐ”ĐČŃ–ĐŽĐŸĐŒĐ° ĐșĐŸĐŒĐ°ĐœĐŽĐ°.', 'errJqui' : 'ĐĐ”ĐżŃ€Đ°ĐČĐžĐ»ŃŒĐœĐ” ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ jQuery UI. Đ’Ń–ĐŽŃŃƒŃ‚ĐœŃ– ĐșĐŸĐŒĐżĐŸĐœĐ”ĐœŃ‚Đž: selectable, draggable, droppable.', 'errNode' : 'Đ’Ń–ĐŽŃŃƒŃ‚ĐœŃ–Đč Đ”Đ»Đ”ĐŒĐ”ĐœŃ‚ DOM ĐŽĐ»Ń стĐČĐŸŃ€Đ”ĐœĐœŃ elFinder.', 'errURL' : 'ĐĐ”ĐżŃ€Đ°ĐČĐžĐ»ŃŒĐœĐ” ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ! ĐĐ” ĐČĐșĐ°Đ·Đ°ĐœĐ° ĐŸĐżŃ†Ń–Ń URL.', 'errAccess' : 'Đ”ĐŸŃŃ‚ŃƒĐż Đ·Đ°Đ±ĐŸŃ€ĐŸĐœĐ”ĐœĐŸ.', 'errConnect' : 'ĐĐ” ĐČĐŽĐ°Đ»ĐŸŃŃ Đ·â€™Ń”ĐŽĐœĐ°Ń‚ĐžŃŃ Đ· backend.', 'errAbort' : 'Đ—â€™Ń”ĐŽĐœĐ°ĐœĐœŃ Ń€ĐŸĐ·Ń–Ń€ĐČĐ°ĐœĐ”.', 'errTimeout' : 'йаĐčĐŒ-аут Đ·â€™Ń”ĐŽĐœĐ°ĐœĐœŃ.', 'errNotFound' : 'ĐĐ” Đ·ĐœĐ°ĐčĐŽĐ”ĐœĐŸ backend.', 'errResponse' : 'ĐĐ”ĐżŃ€Đ°ĐČĐžĐ»ŃŒĐœĐ° ĐČŃ–ĐŽĐżĐŸĐČіЮь ĐČіЮ backend.', 'errConf' : 'ĐĐ”ĐżŃ€Đ°ĐČĐžĐ»ŃŒĐœĐ” ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ backend.', 'errJSON' : 'ĐœĐŸĐŽŃƒĐ»ŃŒ PHP JSON ĐœĐ” ĐČŃŃ‚Đ°ĐœĐŸĐČĐ»Đ”ĐœĐŸ.', 'errNoVolumes' : 'ĐĐ”ĐŒĐ°Ń” ĐŽĐŸŃŃ‚ŃƒĐżĐœĐžŃ… ĐŽĐ»Ń Ń‡ĐžŃ‚Đ°ĐœĐœŃ ЎОрДĐșŃ‚ĐŸŃ€Ń–Đč.', 'errCmdParams' : 'ĐĐ”ĐżŃ€Đ°ĐČĐžĐ»ŃŒĐœŃ– ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đž ĐŽĐ»Ń ĐșĐŸĐŒĐ°ĐœĐŽĐž "$1".', 'errDataNotJSON' : 'Đ”Đ°ĐœŃ– ĐœĐ” у Ń„ĐŸŃ€ĐŒĐ°Ń‚Ń– JSON.', 'errDataEmpty' : 'Đ”Đ°ĐœŃ– ĐČŃ–ĐŽŃŃƒŃ‚ĐœŃ–.', 'errCmdReq' : 'Backend ĐČĐžĐŒĐ°ĐłĐ°Ń” ĐœĐ°Đ·ĐČу ĐșĐŸĐŒĐ°ĐœĐŽĐž.', 'errOpen' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐČіЮĐșрото "$1".', 'errNotFolder' : 'Об’єĐșт ĐœĐ” є папĐșĐŸŃŽ.', 'errNotFile' : 'Об’єĐșт ĐœĐ” є фаĐčĐ»ĐŸĐŒ.', 'errRead' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐżŃ€ĐŸŃ‡ĐžŃ‚Đ°Ń‚Đž "$1".', 'errWrite' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ запОсатО ĐČ "$1".', 'errPerm' : 'ĐŸĐŸĐŒĐžĐ»ĐșĐ° ĐŽĐŸŃŃ‚ŃƒĐżŃƒ.', 'errLocked' : 'ЀаĐčĐ» "$1" Đ·Đ°Đ±Đ»ĐŸĐșĐŸĐČĐ°ĐœĐŸ і ĐčĐŸĐłĐŸ ĐœĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐżĐ”Ń€Đ”ĐŒŃ–ŃŃ‚ĐžŃ‚Đž, пДрДĐčĐŒĐ”ĐœŃƒĐČато чо ĐČĐžĐ»ŃƒŃ‡ĐžŃ‚Đž.', 'errExists' : 'ЀаĐčĐ» Đ· ĐœĐ°Đ·ĐČĐŸŃŽ "$1" ĐČжД Ń–ŃĐœŃƒŃ”.', 'errInvName' : 'ĐĐ”ĐŽŃ–ĐčŃĐœĐ° ĐœĐ°Đ·ĐČĐ° фаĐčла.', 'errInvDirname' : 'ĐĐ”ĐŽŃ–ĐčŃĐœĐ° ĐœĐ°Đ·ĐČĐ° Ń‚Đ”ĐșĐž.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'йДĐșу ĐœĐ” Đ·ĐœĐ°ĐčĐŽĐ”ĐœĐŸ.', 'errFileNotFound' : 'ЀаĐčĐ» ĐœĐ” Đ·ĐœĐ°ĐčĐŽĐ”ĐœĐŸ.', 'errTrgFolderNotFound' : 'ĐŠŃ–Đ»ŃŒĐŸĐČу Ń‚Đ”Đșу "$1" ĐœĐ” Đ·ĐœĐ°ĐčĐŽĐ”ĐœĐŸ.', 'errPopup' : 'Đ‘Ń€Đ°ŃƒĐ·Đ”Ń€ Đ·Đ°Đ±ĐŸŃ€ĐŸĐœŃŃ” ĐČіЮĐșроĐČато popup-ĐČіĐșĐœĐŸ. Đ”ĐŸĐ·ĐČĐŸĐ»ŃŒŃ‚Đ” у ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ Đ±Ń€Đ°ŃƒĐ·Đ”Ń€Đ°, Ń‰ĐŸĐ± ĐČіЮĐșрото фаĐčĐ».', 'errMkdir' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ стĐČĐŸŃ€ĐžŃ‚Đž Ń‚Đ”Đșу "$1".', 'errMkfile' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ стĐČĐŸŃ€ĐžŃ‚Đž фаĐčĐ» "$1".', 'errRename' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ пДрДĐčĐŒĐ”ĐœŃƒĐČато фаĐčĐ» "$1".', 'errCopyFrom' : 'ĐšĐŸĐżŃ–ŃŽĐČĐ°ĐœĐœŃ фаĐčліĐČ Đ· Ń‚ĐŸĐŒŃƒ "$1" ĐœĐ” ĐŽĐŸĐ·ĐČĐŸĐ»Đ”ĐœĐŸ.', 'errCopyTo' : 'ĐšĐŸĐżŃ–ŃŽĐČĐ°ĐœĐœŃ фаĐčліĐČ ĐœĐ° Ń‚ĐŸĐŒ "$1" ĐœĐ” ĐŽĐŸĐ·ĐČĐŸĐ»Đ”ĐœĐŸ.', 'errMkOutLink' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ стĐČĐŸŃ€ĐžŃ‚Đž ĐżĐŸŃĐžĐ»Đ°ĐœĐœŃ у ĐŒŃ–ŃŃ†Đ” Đ·Đ° ĐŒĐ”Đ¶Đ°ĐŒĐž ĐșĐŸŃ€Đ”ĐœĐ”ĐČĐŸŃ— Ń‚Đ”ĐșĐž ĐœĐŸŃŃ–Ń.', // from v2.1 added 03.10.2015 'errUpload' : 'ĐŸĐŸĐŒĐžĐ»ĐșĐ° ĐČіЮĐČĐ°ĐœŃ‚Đ°Đ¶Đ”ĐœĐœŃ.', // old name - errUploadCommon 'errUploadFile' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐČіЮĐČĐ°ĐœŃ‚Đ°Đ¶ĐžŃ‚Đž фаĐčĐ» "$1".', // old name - errUpload 'errUploadNoFiles' : 'ĐĐ” Đ·ĐœĐ°ĐčĐŽĐ”ĐœĐŸ фаĐčліĐČ ĐŽĐ»Ń ĐČіЮĐČĐ°ĐœŃ‚Đ°Đ¶Đ”ĐœĐœŃ.', 'errUploadTotalSize' : 'Об\'Ń”ĐŒ ĐŽĐ°ĐœĐžŃ… пДрДĐČощоĐČ ĐČŃŃ‚Đ°ĐœĐŸĐČĐ»Đ”ĐœĐžĐč Đ»Ń–ĐŒŃ–Ń‚.', // old name - errMaxSize 'errUploadFileSize' : 'Об\'Ń”ĐŒ фаĐčла пДрДĐČощоĐČ ĐČŃŃ‚Đ°ĐœĐŸĐČĐ»Đ”ĐœĐžĐč Đ»Ń–ĐŒŃ–Ń‚.', // old name - errFileMaxSize 'errUploadMime' : 'ЀаĐčлО Ń†ŃŒĐŸĐłĐŸ топу Đ·Đ°Đ±ĐŸŃ€ĐŸĐœĐ”ĐœŃ–.', 'errUploadTransfer' : '"$1" : ĐżĐŸĐŒĐžĐ»ĐșĐ° пДрДЎачі.', 'errUploadTemp' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ стĐČĐŸŃ€ĐžŃ‚Đž Ń‚ĐžĐŒŃ‡Đ°ŃĐŸĐČĐžĐč фаĐčĐ» ĐŽĐ»Ń ĐČіЮĐČĐ°ĐœŃ‚Đ°Đ¶Đ”ĐœĐœŃ.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Об\'єĐșт "$1" ĐČжД Ń–ŃĐœŃƒŃ” тут та ĐœĐ” ĐŒĐŸĐ¶Đ” Đ±ŃƒŃ‚Đž Đ·Đ°ĐŒŃ–ĐœĐ”ĐœĐžĐŒ ĐœĐ° ĐŸĐ±\'єĐșт Ń–ĐœŃˆĐŸĐłĐŸ топу.', // new 'errReplace' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ Đ·Đ°ĐŒŃ–ĐœĐžŃ‚Đž "$1".', 'errSave' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ запОсатО "$1".', 'errCopy' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ сĐșĐŸĐżŃ–ŃŽĐČато "$1".', 'errMove' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐżĐ”Ń€Đ”ĐœĐ”ŃŃ‚Đž "$1".', 'errCopyInItself' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ сĐșĐŸĐżŃ–ŃŽĐČато "$1" ŃĐ°ĐŒ у сДбД.', 'errRm' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐČĐžĐ»ŃƒŃ‡ĐžŃ‚Đž "$1".', 'errTrash' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐżĐ”Ń€Đ”ŃŃƒĐœŃƒŃ‚Đž ĐŽĐŸ ŃĐŒŃ–Ń‚ĐœĐžĐșĐ°.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐČОЎалОтО ĐŸŃ€ĐžĐłŃ–ĐœĐ°Đ»ŃŒĐœĐžĐč(і) фаĐčĐ»(Đž).', 'errExtract' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ Ń€ĐŸĐ·ĐżĐ°ĐșуĐČато фаĐčлО Đ· "$1".', 'errArchive' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ стĐČĐŸŃ€ĐžŃ‚Đž архіĐČ.', 'errArcType' : 'йОп архіĐČу ĐœĐ” ĐżŃ–ĐŽŃ‚Ń€ĐžĐŒŃƒŃ”Ń‚ŃŒŃŃ.', 'errNoArchive' : 'ЀаĐčĐ» ĐœĐ” є архіĐČĐŸĐŒ, Đ°Đ±ĐŸ є архіĐČĐŸĐŒ, топ яĐșĐŸĐłĐŸ ĐœĐ” ĐżŃ–ĐŽŃ‚Ń€ĐžĐŒŃƒŃ”Ń‚ŃŒŃŃ.', 'errCmdNoSupport' : 'ХДрĐČĐ”Ń€ĐœĐ° Ń‡Đ°ŃŃ‚ĐžĐœĐ° ĐœĐ” ĐżŃ–ĐŽŃ‚Ń€ĐžĐŒŃƒŃ” цієї ĐșĐŸĐŒĐ°ĐœĐŽĐž.', 'errReplByChild' : 'ПапĐșĐ° “$1” ĐœĐ” ĐŒĐŸĐ¶Đ” Đ±ŃƒŃ‚Đž Đ·Đ°ĐŒŃ–ĐœĐ”ĐœĐ° Đ”Đ»Đ”ĐŒĐ”ĐœŃ‚ĐŸĐŒ, яĐșĐžĐč ĐČĐŸĐœĐ° ĐŒŃ–ŃŃ‚ĐžŃ‚ŃŒ.', 'errArcSymlinks' : 'З ĐŒŃ–Ń€ĐșуĐČĐ°ĐœŃŒ бДзпДĐșĐž Đ·Đ°Đ±ĐŸŃ€ĐŸĐœĐ”ĐœĐŸ Ń€ĐŸĐ·ĐżĐ°ĐșĐŸĐČуĐČато архіĐČĐž Đ· ŃĐžĐŒĐČĐŸĐ»Ń–Ń‡ĐœĐžĐŒĐž ĐżĐŸŃĐžĐ»Đ°ĐœĐœŃĐŒĐž.', // edited 24.06.2012 'errArcMaxSize' : 'Đ ĐŸĐ·ĐŒŃ–Ń€ фаĐčліĐČ Đ°Ń€Ń…Ń–ĐČу пДрДĐČощує ĐŽĐŸĐżŃƒŃŃ‚ĐžĐŒĐ” Đ·ĐœĐ°Ń‡Đ”ĐœĐœŃ.', 'errResize' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐŒĐ°ŃŃˆŃ‚Đ°Đ±ŃƒĐČато "$1".', 'errResizeDegree' : 'ĐĐ”ĐŽŃ–ĐčŃĐœĐžĐč Đșут ĐŸĐ±Đ”Ń€Ń‚Đ°ĐœĐœŃ.', // added 7.3.2013 'errResizeRotate' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐżĐŸĐČĐ”Ń€ĐœŃƒŃ‚Đž сĐČŃ–Ń‚Đ»ĐžĐœŃƒ.', // added 7.3.2013 'errResizeSize' : 'ĐĐ”ĐŽŃ–ĐčŃĐœĐžĐč Ń€ĐŸĐ·ĐŒŃ–Ń€ сĐČŃ–Ń‚Đ»ĐžĐœĐž.', // added 7.3.2013 'errResizeNoChange' : 'Đ ĐŸĐ·ĐŒŃ–Ń€ сĐČŃ–Ń‚Đ»ĐžĐœĐž ĐœĐ” Đ·ĐŒŃ–ĐœĐ”ĐœĐŸ.', // added 7.3.2013 'errUsupportType' : 'ĐĐ”ĐżŃ–ĐŽŃ‚Ń€ĐžĐŒŃƒĐČĐ°ĐœĐžĐč топ фаĐčла.', 'errNotUTF8Content' : 'ЀаĐčĐ» "$1" ĐœĐ” ĐČ UTF-8 і ĐœĐ” ĐŒĐŸĐ¶Đ” Đ±ŃƒŃ‚Đž ĐČŃ–ĐŽŃ€Đ”ĐŽĐ°ĐłĐŸĐČĐ°ĐœĐžĐč.', // added 9.11.2011 'errNetMount' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ Đ·ĐŒĐŸĐœŃ‚ŃƒĐČато "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'ĐĐ”ĐżŃ–ĐŽŃ‚Ń€ĐžĐŒŃƒĐČĐ°ĐœĐžĐč ĐżŃ€ĐŸŃ‚ĐŸĐșĐ».', // added 17.04.2012 'errNetMountFailed' : 'В ĐżŃ€ĐŸŃ†Đ”ŃŃ– ĐŒĐŸĐœŃ‚ŃƒĐČĐ°ĐœĐœŃ ŃŃ‚Đ°Đ»Đ°ŃŃ ĐżĐŸĐŒĐžĐ»ĐșĐ°.', // added 17.04.2012 'errNetMountHostReq' : 'ĐĐ”ĐŸĐ±Ń…Ń–ĐŽĐœĐŸ ĐČĐșĐ°Đ·Đ°Ń‚Đž Ń…ĐŸŃŃ‚.', // added 18.04.2012 'errSessionExpires' : 'Час ŃĐ”Đ°ĐœŃŃƒ ĐŒĐžĐœŃƒĐČ Ń‡Đ”Ń€Đ”Đ· ĐœĐ”Đ°ĐșтоĐČĐœŃ–ŃŃ‚ŃŒ.', 'errCreatingTempDir' : 'ĐĐ•ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ стĐČĐŸŃ€ĐžŃ‚Đž Ń‚ĐžĐŒŃ‡Đ°ŃĐŸĐČу ЎОрДĐșŃ‚ĐŸŃ€Ń–ŃŽ: "$1"', 'errFtpDownloadFile' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ Đ·Đ°ĐČĐ°ĐœŃ‚Đ°Đ¶ĐžŃ‚Đž фаĐčĐ» Đ· FTP: "$1"', 'errFtpUploadFile' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ Đ·Đ°ĐČĐ°ĐœŃ‚Đ°Đ¶ĐžŃ‚Đž фаĐčĐ» ĐœĐ° FTP: "$1"', 'errFtpMkdir' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ стĐČĐŸŃ€ĐžŃ‚Đž ĐČŃ–ĐŽĐŽĐ°Đ»Đ”ĐœĐžĐč ĐșĐ°Ń‚Đ°Đ»ĐŸĐł ĐœĐ° FTP: "$1"', 'errArchiveExec' : 'ĐŸĐŸĐŒĐžĐ»ĐșĐ° про архіĐČації фаĐčліĐČ: "$1"', 'errExtractExec' : 'ĐŸĐŸĐŒĐžĐ»ĐșĐ° про Ń€ĐŸĐ·Đ°Ń€Ń…Ń–ĐČуĐČĐ°ĐœĐœŃ– фаĐčліĐČ: "$1"', 'errNetUnMount' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐŽĐ”ĐŒĐŸĐœŃ‚ŃƒĐČато', // from v2.1 added 30.04.2012 'errConvUTF8' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐșĐŸĐœĐČĐ”Ń€Ń‚ŃƒĐČато ĐČ UTF - 8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'ВоĐșĐŸŃ€ĐžŃŃ‚ĐŸĐČуĐčŃ‚Đ” Google Chrome, яĐșŃ‰ĐŸ ĐČĐž Ń…ĐŸŃ‡Đ”Ń‚Đ” Đ·Đ°ĐČĐ°ĐœŃ‚Đ°Đ¶ĐžŃ‚Đž папĐșу', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Час ĐżĐŸŃˆŃƒĐșу "$1" ĐČĐžĐčŃˆĐŸĐČ. Đ Đ”Đ·ŃƒĐ»ŃŒŃ‚Đ°Ń‚ ĐżĐŸŃˆŃƒĐșу частĐșĐŸĐČĐžĐč', // from v2.1 added 12.1.2016 'errReauthRequire' : 'ĐĐ”ĐŸĐ±Ń…Ń–ĐŽĐœĐ° ĐżĐŸĐČŃ‚ĐŸŃ€ĐœĐ° Đ°ĐČŃ‚ĐŸŃ€ĐžĐ·Đ°Ń†Ń–Ń.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'МаĐșŃĐžĐŒĐ°Đ»ŃŒĐœĐ° ĐșŃ–Đ»ŃŒĐșість ĐŸĐ±\'єĐșтіĐČ Ń‰ĐŸ ĐŒĐŸĐ¶ĐœĐ° ĐŸĐ±Ń€Đ°Ń‚Đž сĐșлаЎає $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐČŃ–ĐŽĐœĐŸĐČото Đ·Ń– ŃĐŒŃ–Ń‚ĐœĐžĐșĐ°: ĐœĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐČĐžĐ·ĐœĐ°Ń‡ĐžŃ‚Đž ĐŒŃ–ŃŃ†Đ” ĐșуЎО ĐČŃ–ĐŽĐœĐŸĐČлюĐČато.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Đ”Đ»Ń Ń†ŃŒĐŸĐłĐŸ топу фаĐčліĐČ ĐœĐ” Đ·ĐœĐ°ĐčĐŽĐ”ĐœĐŸ рДЎаĐșŃ‚ĐŸŃ€Đ°.', // from v2.1.25 added 23.5.2017 'errServerError' : 'ĐŸĐŸĐŒĐžĐ»ĐșĐ° ĐœĐ° Đ±ĐŸŃ†Ń– сДрĐČДра.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'ĐĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ŃĐżĐŸŃ€ĐŸĐ¶ĐœĐžŃ‚Đž Ń‚Đ”Đșу "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Є таĐșĐŸĐ¶ щД $1 ĐżĐŸĐŒĐžĐ»ĐŸĐș.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'АрхіĐČуĐČато', 'cmdback' : 'ĐĐ°Đ·Đ°ĐŽ', 'cmdcopy' : 'ĐšĐŸĐżŃ–ĐČато', 'cmdcut' : 'ВОрізатО', 'cmddownload' : 'ЗаĐČĐ°ĐœŃ‚Đ°Đ¶ĐžŃ‚Đž', 'cmdduplicate' : 'Đ”ŃƒĐ±Đ»ŃŽĐČато', 'cmdedit' : 'РДЎагуĐČато фаĐčĐ»', 'cmdextract' : 'Đ ĐŸĐ·ĐżĐ°ĐșуĐČато фаĐčлО Đ· архіĐČу', 'cmdforward' : 'ВпДрДЎ', 'cmdgetfile' : 'ВОбратО фаĐčлО', 'cmdhelp' : 'ĐŸŃ€ĐŸ ĐżŃ€ĐŸĐłŃ€Đ°ĐŒŃƒ', 'cmdhome' : 'Đ”ĐŸĐŽĐŸĐŒŃƒ', 'cmdinfo' : 'Đ†ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–Ń', 'cmdmkdir' : 'СтĐČĐŸŃ€ĐžŃ‚Đž Ń‚Đ”Đșу', 'cmdmkdirin' : 'Đ”ĐŸ ĐœĐŸĐČĐŸŃ— Ń‚Đ”ĐșĐž', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'СтĐČĐŸŃ€ĐžŃ‚Đž фаĐčĐ»', 'cmdopen' : 'ВіЮĐșрото', 'cmdpaste' : 'ВстаĐČото', 'cmdquicklook' : 'ĐŸĐŸĐżĐ”Ń€Đ”ĐŽĐœŃ–Đč ĐżĐ”Ń€Đ”ĐłĐ»ŃĐŽ', 'cmdreload' : 'ĐŸĐ”Ń€Đ”Ń‡ĐžŃ‚Đ°Ń‚Đž', 'cmdrename' : 'ĐŸĐ”Ń€Đ”ĐčĐŒĐ”ĐœŃƒĐČато', 'cmdrm' : 'Đ’ĐžĐ»ŃƒŃ‡ĐžŃ‚Đž', 'cmdtrash' : 'Đ”ĐŸ ŃĐŒŃ–Ń‚ĐœĐžĐșĐ°', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Đ’Ń–ĐŽĐœĐŸĐČото', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'КуĐșато фаĐčлО', 'cmdup' : 'На 1 ріĐČĐ”ĐœŃŒ ĐČĐłĐŸŃ€Ńƒ', 'cmdupload' : 'ВіЮĐČĐ°ĐœŃ‚Đ°Đ¶ĐžŃ‚Đž фаĐčлО', 'cmdview' : 'ĐŸĐ”Ń€Đ”ĐłĐ»ŃĐŽ', 'cmdresize' : 'ĐœĐ°ŃŃˆŃ‚Đ°Đ±ŃƒĐČато Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ', 'cmdsort' : 'ĐĄĐŸŃ€Ń‚ŃƒĐČĐ°ĐœĐœŃ', 'cmdnetmount' : 'Đ—ĐŒĐŸĐœŃ‚ŃƒĐČато ĐŒĐ”Ń€Đ”Đ¶Đ”ĐČĐžĐč ЎОсĐș', // added 18.04.2012 'cmdnetunmount': 'Đ ĐŸĐ·ĐŒĐŸĐœŃ‚ŃƒĐČато', // from v2.1 added 30.04.2012 'cmdplaces' : 'Đ”ĐŸ Місць', // added 28.12.2014 'cmdchmod' : 'Đ—ĐŒŃ–ĐœĐžŃ‚Đž праĐČĐ°', // from v2.1 added 20.6.2015 'cmdopendir' : 'ВіЮĐșроо ЎОрДĐșŃ‚ĐŸŃ€Ń–ŃŽ', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'ĐĄĐșĐžĐœŃƒŃ‚Đž ŃˆĐžŃ€ĐžĐœŃƒ ŃŃ‚ĐŸĐČпчоĐșĐ°', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'ĐŸĐŸĐČĐœĐžĐč Đ”ĐșŃ€Đ°Đœ', // from v2.1.15 added 03.08.2016 'cmdmove' : 'ĐŸĐ”Ń€Đ”ŃŃƒĐœŃƒŃ‚Đž', // from v2.1.15 added 21.08.2016 'cmdempty' : 'ĐĄĐżĐŸŃ€ĐŸĐ¶ĐœĐžŃ‚Đž Ń‚Đ”Đșу', // from v2.1.25 added 22.06.2017 'cmdundo' : 'ĐĄĐșасуĐČато', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Đ’Ń–ĐŽĐœĐŸĐČото', // from v2.1.27 added 31.07.2017 'cmdpreference': 'ĐĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'ВОбратО усі', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Đ—ĐœŃŃ‚Đž ĐČОбір', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Đ†ĐœĐČĐ”Ń€Ń‚ŃƒĐČато ĐČОбір', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'ВіЮĐșрото у ĐœĐŸĐČĐŸĐŒŃƒ ĐČіĐșĐœŃ–', // from v2.1.38 added 3.4.2018 'cmdhide' : 'ĐĄŃ…ĐŸĐČато (ĐĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'ЗаĐșрото', 'btnSave' : 'ЗбДрДгтО', 'btnRm' : 'Đ’ĐžĐ»ŃƒŃ‡ĐžŃ‚Đž', 'btnApply' : 'Đ—Đ°ŃŃ‚ĐŸŃŃƒĐČато', 'btnCancel' : 'ĐĄĐșасуĐČато', 'btnNo' : 'Ні', 'btnYes' : 'йаĐș', 'btnMount' : 'ПіЮĐșлючОтО', // added 18.04.2012 'btnApprove': 'ĐŸĐ”Ń€Đ”Đčто ĐČ $1 і проĐčĐœŃŃ‚Đž', // from v2.1 added 26.04.2012 'btnUnmount': 'ВіЮĐșлючОтО', // from v2.1 added 30.04.2012 'btnConv' : 'ĐšĐŸĐœĐČĐ”Ń€Ń‚ŃƒĐČато', // from v2.1 added 08.04.2014 'btnCwd' : 'бут', // from v2.1 added 22.5.2015 'btnVolume' : 'Đ ĐŸĐ·ĐŽŃ–Đ»', // from v2.1 added 22.5.2015 'btnAll' : 'Всі', // from v2.1 added 22.5.2015 'btnMime' : 'MIME топ', // from v2.1 added 22.5.2015 'btnFileName':'ĐĐ°Đ·ĐČĐ° фаĐčла', // from v2.1 added 22.5.2015 'btnSaveClose': 'ЗбДрДгтО і ĐČĐžĐčто', // from v2.1 added 12.6.2015 'btnBackup' : 'РДзДрĐČĐœĐ° ĐșĐŸĐżŃ–Ń', // fromv2.1 added 28.11.2015 'btnRename' : 'ĐŸĐ”Ń€Đ”ĐčĐŒĐ”ĐœŃƒĐČато', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'ĐŸĐ”Ń€Đ”ĐčĐŒĐ”ĐœŃƒĐČаті(Усі)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'ĐŸĐŸĐżĐ”Ń€. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Наступ. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'ЗбДрДгтО яĐș', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'ВіЮĐșрото Ń‚Đ”Đșу', 'ntffile' : 'ВіЮĐșрото фаĐčĐ»', 'ntfreload' : 'ĐŸĐ”Ń€Đ”Ń‡ĐžŃ‚Đ°Ń‚Đž ĐČĐŒŃ–ŃŃ‚ Ń‚Đ”ĐșĐž', 'ntfmkdir' : 'СтĐČĐŸŃ€Đ”ĐœĐœŃ Ń‚Đ”ĐșĐž', 'ntfmkfile' : 'СтĐČĐŸŃ€Đ”ĐœĐœŃ фаĐčліĐČ', 'ntfrm' : 'Đ’ĐžĐ»ŃƒŃ‡ĐžŃ‚Đž фаĐčлО', 'ntfcopy' : 'ĐšĐŸĐżŃ–ŃŽĐČато фаĐčлО', 'ntfmove' : 'ĐŸĐ”Ń€Đ”ĐœĐ”ŃŃ‚Đž фаĐčлО', 'ntfprepare' : 'ĐŸŃ–ĐŽĐłĐŸŃ‚ĐŸĐČĐșĐ° ĐŽĐŸ ĐșĐŸĐżŃ–ŃŽĐČĐ°ĐœĐœŃ фаĐčліĐČ', 'ntfrename' : 'ĐŸĐ”Ń€Đ”ĐčĐŒĐ”ĐœŃƒĐČато фаĐčлО', 'ntfupload' : 'ВіЮĐČĐ°ĐœŃ‚Đ°Đ¶ĐžŃ‚Đž фаĐčлО', 'ntfdownload' : 'ЗаĐČĐ°ĐœŃ‚Đ°Đ¶ĐžŃ‚Đž фаĐčлО', 'ntfsave' : 'Запосато фаĐčлО', 'ntfarchive' : 'СтĐČĐŸŃ€Đ”ĐœĐœŃ архіĐČу', 'ntfextract' : 'Đ ĐŸĐ·ĐżĐ°ĐșĐŸĐČуĐČĐ°ĐœĐœŃ архіĐČу', 'ntfsearch' : 'ĐŸĐŸŃˆŃƒĐș фаĐčліĐČ', 'ntfresize' : 'Đ—ĐŒŃ–ĐœĐ° Ń€ĐŸĐ·ĐŒŃ–Ń€Ńƒ сĐČŃ–Ń‚Đ»ĐžĐœĐž', 'ntfsmth' : 'ВоĐșĐŸĐœŃƒŃ”ĐŒĐŸ', 'ntfloadimg' : 'ЗаĐČĐ°ĐœŃ‚Đ°Đ¶Đ”ĐœĐœŃ Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ', 'ntfnetmount' : 'ĐœĐŸĐœŃ‚ŃƒĐČĐ°ĐœĐœŃ ĐŒĐ”Ń€Đ”Đ¶Đ”ĐČĐŸĐłĐŸ ЎОсĐșĐ°', // added 18.04.2012 'ntfnetunmount': 'Đ ĐŸĐ·ĐŒĐŸĐœŃ‚ŃƒĐČĐ°ĐœĐœŃ ĐŒĐ”Ń€Đ”Đ¶Đ”ĐČĐŸĐłĐŸ ЎОсĐșĐ°', // from v2.1 added 30.04.2012 'ntfdim' : 'Đ’ĐžĐ·ĐœĐ°Ń‡Đ”ĐœĐœŃ Ń€ĐŸĐ·ĐŒŃ–Ń€Ńƒ сĐČŃ–Ń‚Đ»ĐžĐœĐž', // added 20.05.2013 'ntfreaddir' : 'Đ§ĐžŃ‚Đ°ĐœĐœŃ Ń–ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–Ń— ЎОрДĐșŃ‚ĐŸŃ€Ń–Ń—', // from v2.1 added 01.07.2013 'ntfurl' : 'ĐŸŃ‚Ń€ĐžĐŒĐ°ĐœĐœŃ URL ĐżĐŸŃĐžĐ»Đ°ĐœĐœŃ', // from v2.1 added 11.03.2014 'ntfchmod' : 'Đ—ĐŒŃ–ĐœĐ° праĐČ Ń„Đ°Đčлу', // from v2.1 added 20.6.2015 'ntfpreupload': 'ĐŸĐ”Ń€Đ”ĐČірĐșĐ° Ń–ĐŒĐ”ĐœŃ– Đ·Đ°ĐČĐ°ĐœŃ‚Đ°Đ¶ŃƒĐČĐ°ĐœĐŸĐłĐŸ фаĐčла', // from v2.1 added 31.11.2015 'ntfzipdl' : 'СтĐČĐŸŃ€Đ”ĐœĐœŃ фаĐčлу ĐŽĐ»Ń Đ·Đ°ĐČĐ°ĐœŃ‚Đ°Đ¶Đ”ĐœĐœŃ', // from v2.1.7 added 23.1.2016 'ntfparents' : 'ĐžŃ‚Ń€ĐžĐŒĐ°ĐœĐœŃ Ń–ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–Ń— ĐżŃ€ĐŸ ŃˆĐ»ŃŃ…', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'ĐžĐ±Ń€ĐŸĐ±ĐșĐ° ĐČĐžĐČĐ°ĐœŃ‚Đ°Đ¶Đ”ĐœĐŸĐłĐŸ фаĐčлу', // from v2.1.17 added 2.11.2016 'ntftrash' : 'ĐŸĐ”Ń€Đ”ĐŒŃ–Ń‰ŃƒŃ”ĐŒĐŸ ĐŽĐŸ ŃĐŒŃ–Ń‚ĐœĐžĐșĐ°', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Đ’Ń–ĐŽĐœĐŸĐČĐ»ŃŽŃ”ĐŒĐŸ Đ·Ń– ŃĐŒŃ–Ń‚ĐœĐžĐșĐ°', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'ĐŸĐ”Ń€Đ”ĐČŃ–Ń€ŃŃ”ĐŒĐŸ Ń‚Đ”Đșу ĐżŃ€ĐžĐ·ĐœĐ°Ń‡Đ”ĐœĐœŃ', // from v2.1.24 added 3.5.2017 'ntfundo' : 'ĐĄĐșасуĐČĐ°ĐœĐœŃ ĐżĐŸĐżĐ”Ń€Đ”ĐŽĐœŃŒĐŸŃ— Юії', // from v2.1.27 added 31.07.2017 'ntfredo' : 'ĐŸĐŸĐČŃ‚ĐŸŃ€Đ”ĐœĐœŃ Ń€Đ°ĐœŃ–ŃˆĐ” сĐșĐ°ŃĐŸĐČĐ°ĐœĐŸŃ— Юії', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'ĐŸĐ”Ń€Đ”ĐČірĐșĐ° ĐČĐŒŃ–ŃŃ‚Ńƒ', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'ĐĄĐŒŃ–Ń‚ĐœĐžĐș', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'ĐœĐ”ĐČŃ–ĐŽĐŸĐŒĐŸ', 'Today' : 'ŃŃŒĐŸĐłĐŸĐŽĐœŃ–', 'Yesterday' : 'ĐČŃ‡ĐŸŃ€Đ°', 'msJan' : 'Січ', 'msFeb' : 'Лют', 'msMar' : 'БДр', 'msApr' : 'КĐČі', 'msMay' : 'бра', 'msJun' : 'ЧДр', 'msJul' : 'Лоп', 'msAug' : 'ХДр', 'msSep' : 'ВДр', 'msOct' : 'Đ–ĐŸĐČ', 'msNov' : 'Лос', 'msDec' : 'Гру', 'January' : 'ŃŃ–Ń‡ĐœŃ', 'February' : 'Đ»ŃŽŃ‚ĐŸĐłĐŸ', 'March' : 'Đ±Đ”Ń€Đ”Đ·ĐœŃ', 'April' : 'ĐșĐČŃ–Ń‚ĐœŃ', 'May' : 'траĐČĐœŃ', 'June' : 'чДрĐČĐœŃ', 'July' : 'Đ»ĐžĐżĐœŃ', 'August' : 'ŃĐ”Ń€ĐżĐœŃ', 'September' : 'ĐČĐ”Ń€Đ”ŃĐœŃ', 'October' : 'Đ¶ĐŸĐČŃ‚ĐœŃ', 'November' : 'Đ»ĐžŃŃ‚ĐŸĐżĐ°ĐŽĐ°', 'December' : 'ĐłŃ€ŃƒĐŽĐœŃ', 'Sunday' : 'ĐĐ”ĐŽŃ–Đ»Ń', 'Monday' : 'ĐŸĐŸĐœĐ”ĐŽŃ–Đ»ĐŸĐș', 'Tuesday' : 'ВіĐČŃ‚ĐŸŃ€ĐŸĐș', 'Wednesday' : 'ХДрДЎа', 'Thursday' : 'ЧДтĐČДр', 'Friday' : 'ĐŸâ€™ŃŃ‚ĐœĐžŃ†Ń', 'Saturday' : 'ĐĄŃƒĐ±ĐŸŃ‚Đ°', 'Sun' : 'НЮ', 'Mon' : 'ĐŸĐœ', 'Tue' : 'Вт', 'Wed' : 'Ср', 'Thu' : 'Чт', 'Fri' : 'Пт', 'Sat' : 'Хб', /******************************** sort variants ********************************/ 'sortname' : 'Đ·Đ° ĐœĐ°Đ·ĐČĐŸŃŽ', 'sortkind' : 'Đ·Đ° Ń‚ĐžĐżĐŸĐŒ', 'sortsize' : 'Đ·Đ° Ń€ĐŸĐ·ĐŒŃ–Ń€ĐŸĐŒ', 'sortdate' : 'Đ·Đ° ĐŽĐ°Ń‚ĐŸŃŽ', 'sortFoldersFirst' : 'ĐĄĐżĐžŃĐŸĐș Ń‚Đ”Đș', 'sortperm' : 'Đ·Đ° ĐŽĐŸĐ·ĐČĐŸĐ»Đ°ĐŒĐž', // from v2.1.13 added 13.06.2016 'sortmode' : 'Đ·Đ° Ń€Đ”Đ¶ĐžĐŒĐŸĐŒ', // from v2.1.13 added 13.06.2016 'sortowner' : 'Đ·Đ° ĐČĐ»Đ°ŃĐœĐžĐșĐŸĐŒ', // from v2.1.13 added 13.06.2016 'sortgroup' : 'Đ·Đ° ĐłŃ€ŃƒĐżĐŸŃŽ', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'йаĐșĐŸĐ¶ ĐČĐžĐłĐ»ŃĐŽ ЎДрДĐČĐ°', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'ĐœĐ”ĐœĐ°Đ·ĐČĐ°ĐœĐžĐč фаĐčĐ».txt', // added 10.11.2015 'untitled folder' : 'ĐœĐ”ĐœĐ°Đ·ĐČĐ°ĐœĐ° Ń‚Đ”ĐșĐ°', // added 10.11.2015 'Archive' : 'ĐĐŸĐČĐžĐčАрхіĐČ', // from v2.1 added 10.11.2015 'untitled file' : 'ĐĐŸĐČĐžĐčЀаĐčĐ».$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: ЀаĐčĐ»', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2 ', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'ĐĐ”ĐŸĐ±Ń…Ń–ĐŽĐœĐ” піЮтĐČĐ”Ń€ĐŽĐ¶Đ”ĐœĐœŃ', 'confirmRm' : 'Во спраĐČЮі Ń…ĐŸŃ‡Đ”Ń‚Đ” ĐČĐžĐ»ŃƒŃ‡ĐžŃ‚Đž фаĐčлО?
      ĐžĐżĐ”Ń€Đ°Ń†Ń–Ń ĐœĐ”Đ·ĐČĐŸŃ€ĐŸŃ‚ĐœŃ!', 'confirmRepl' : 'Đ—Đ°ĐŒŃ–ĐœĐžŃ‚Đž староĐč фаĐčĐ» ĐœĐŸĐČĐžĐŒ? (про ĐœĐ°ŃĐČĐœĐŸŃŃ‚Ń– Ń‚Đ”Đș ĐČĐŸĐœĐž Đ±ŃƒĐŽŃƒŃ‚ŃŒ ĐŸĐ±\'Ń”ĐŽĐœĐ°ĐœŃ–. Đ”Đ»Ń рДзДрĐČĐœĐŸŃ— ĐșĐŸĐżŃ–Ń— та Đ·Đ°ĐŒŃ–ĐœĐž ĐŸĐ±Đ”Ń€Ń–Ń‚ŃŒ РДзДрĐČĐœŃƒ ĐšĐŸĐżŃ–ŃŽ)', 'confirmRest' : 'Đ—Đ°ĐŒŃ–ĐœĐžŃ‚Đž Ń–ŃĐœŃƒŃŽŃ‡ĐžĐč ĐŸĐ±\'єĐșт ĐŸĐ±\'єĐșŃ‚ĐŸĐŒ Đ·Ń– ŃĐŒŃ–Ń‚ĐœĐžĐșĐ°?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'ĐĐ” у UTF-8
      ĐšĐŸĐœĐČĐ”Ń€Ń‚ŃƒĐČато у UTF-8?
      Đ’ĐŒŃ–ŃŃ‚ ŃŃ‚Đ°ĐœĐ” у UTF-8 Đ·Đ±Đ”Ń€Đ”Đ¶Đ”ĐœĐœŃĐŒ ĐżŃ–ŃĐ»Ń ĐșĐŸĐœĐČДртації.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'ĐšĐŸĐŽŃƒĐČĐ°ĐœĐœŃ ŃĐžĐŒĐČĐŸĐ»Ń–ĐČ Ń†ŃŒĐŸĐłĐŸ фаĐčлу ĐœĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ ĐČĐžĐ·ĐœĐ°Ń‡ĐžŃ‚Đž. ĐŸĐŸŃ‚Ń€Ń–Đ±ĐœĐŸ Ń‚ĐžĐŒŃ‡Đ°ŃĐŸĐČĐŸ ĐșĐŸĐœĐČĐ”Ń€Ń‚ŃƒĐČато ĐčĐŸĐłĐŸ у UTF-8 ĐŽĐ»Ń Ń€Đ”ĐŽĐ°ĐłŃƒĐČĐ°ĐœĐœŃ.
      ĐžĐ±Đ”Ń€Ń–Ń‚ŃŒ ĐșĐŸĐŽŃƒĐČĐ°ĐœĐœŃ Ń†ŃŒĐŸĐłĐŸ фаĐčлу.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Đ‘ŃƒĐ»ĐŸ ĐČĐœĐ”ŃĐ”ĐœĐŸ Đ·ĐŒŃ–ĐœĐž.
      ĐŻĐșŃ‰ĐŸ ії ĐœĐ” збДрДгтО, їх буЎД ĐČŃ‚Ń€Đ°Ń‡Đ”ĐœĐŸ.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Во Ń‚ĐŸŃ‡ĐœĐŸ бажаєтД ĐżĐ”Ń€Đ”ĐŒŃ–ŃŃ‚ĐžŃ‚Đž ці ĐŸĐ±\'єĐșто ĐŽĐŸ ŃĐŒŃ–Ń‚ĐœĐžĐșĐ°?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Во Ń‚ĐŸŃ‡ĐœĐŸ бажаєтД ĐżĐ”Ń€Đ”ĐŒŃ–ŃŃ‚ĐžŃ‚Đž ĐŸĐ±\'єĐșто ĐŽĐŸ "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Đ—Đ°ŃŃ‚ĐŸŃŃƒĐČато ĐŽĐŸ ĐČсіх', 'name' : 'ĐĐ°Đ·ĐČĐ°', 'size' : 'Đ ĐŸĐ·ĐŒŃ–Ń€', 'perms' : 'Đ”ĐŸŃŃ‚ŃƒĐżĐž', 'modify' : 'Đ—ĐŒŃ–ĐœĐ”ĐœĐŸ', 'kind' : 'йОп', 'read' : 'Ń‡ĐžŃ‚Đ°ĐœĐœŃ', 'write' : 'запОс', 'noaccess' : 'ĐœĐ”ĐŽĐŸŃŃ‚ŃƒĐżĐœĐŸ', 'and' : 'і', 'unknown' : 'ĐœĐ”ĐČŃ–ĐŽĐŸĐŒĐŸ', 'selectall' : 'ВОбратО ĐČсі фаĐčлО', 'selectfiles' : 'ВОбратО фаĐčĐ»(Đž)', 'selectffile' : 'ВОбратО ĐżĐ”Ń€ŃˆĐžĐč фаĐčĐ»', 'selectlfile' : 'ВОбратО ĐŸŃŃ‚Đ°ĐœĐœŃ–Đč фаĐčĐ»', 'viewlist' : 'ХпОсĐșĐŸĐŒ', 'viewicons' : 'Đ—ĐœĐ°Ń‡ĐșĐ°ĐŒĐž', 'viewSmall' : 'ĐœĐ°Đ»Đ”ĐœŃŒĐșі Đ·ĐœĐ°Ń‡ĐșĐž', // from v2.1.39 added 22.5.2018 'viewMedium' : 'ĐĄĐ”Ń€Đ”ĐŽĐœŃ– Đ·ĐœĐ°Ń‡ĐșĐž', // from v2.1.39 added 22.5.2018 'viewLarge' : 'ВДлОĐșі Đ·ĐœĐ°Ń‡ĐșĐž', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Đ”ŃƒĐ¶Đ” ĐČДлОĐșі Đ·ĐœĐ°Ń‡ĐșĐž', // from v2.1.39 added 22.5.2018 'places' : 'Đ ĐŸĐ·Ń‚Đ°ŃˆŃƒĐČĐ°ĐœĐœŃ', 'calc' : 'ВорахуĐČато', 'path' : 'ĐšĐ»ŃŃ…', 'aliasfor' : 'Аліас ĐŽĐ»Ń', 'locked' : 'Đ—Đ°Đ±Đ»ĐŸĐșĐŸĐČĐ°ĐœĐŸ', 'dim' : 'Đ ĐŸĐ·ĐŒŃ–Ń€Đž', 'files' : 'ЀаĐčлО', 'folders' : 'Ń‚Đ”ĐșĐž', 'items' : 'Đ•Đ»Đ”ĐŒĐ”ĐœŃ‚Đž', 'yes' : 'таĐș', 'no' : 'ĐœŃ–', 'link' : 'ĐŸĐŸŃĐžĐ»Đ°ĐœĐœŃ', 'searcresult' : 'Đ Đ”Đ·ŃƒĐ»ŃŒŃ‚Đ°Ń‚Đž ĐżĐŸŃˆŃƒĐșу', 'selected' : 'Đ’ĐžĐ±Ń€Đ°ĐœŃ– Đ”Đ»Đ”ĐŒĐ”ĐœŃ‚Đž', 'about' : 'ĐŸŃ€ĐŸ', 'shortcuts' : 'ЯрлОĐșĐž', 'help' : 'Đ”ĐŸĐżĐŸĐŒĐŸĐłĐ°', 'webfm' : 'Web-ĐŒĐ”ĐœĐ”ĐŽĐ¶Đ”Ń€ фаĐčліĐČ', 'ver' : 'Đ’Đ”Ń€ŃŃ–Ń', 'protocolver' : 'ĐČĐ”Ń€ŃŃ–Ń ĐżŃ€ĐŸŃ‚ĐŸĐșĐŸĐ»Ńƒ', 'homepage' : 'ĐĄŃ‚ĐŸŃ€Ń–ĐœĐșĐ° ĐżŃ€ĐŸĐ”Đșту', 'docs' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚Đ°Ń†Ń–Ń', 'github' : 'Fork us on Github', 'twitter' : 'ХліЎĐșуĐčŃ‚Đ” у ĐąĐČітДрі', 'facebook' : 'ĐŸŃ€ĐžŃ”ĐŽĐœŃƒĐčŃ‚Đ”ŃŃŒ у Ń„Đ”ĐčŃĐ±ŃƒŃ†Ń–', 'team' : 'АĐČŃ‚ĐŸŃ€Đž', 'chiefdev' : 'ĐłĐŸĐ»ĐŸĐČĐœĐžĐč Ń€ĐŸĐ·Ń€ĐŸĐ±ĐœĐžĐș', 'developer' : 'Ń€ĐŸĐ·Ń€ĐŸĐ±ĐœĐžĐș', 'contributor' : 'ŃƒŃ‡Đ°ŃĐœĐžĐș', 'maintainer' : 'ŃŃƒĐżŃ€ĐŸĐČĐŸĐŽĐ¶ŃƒĐČач', 'translator' : 'пДрДĐșлаЎач', 'icons' : 'Đ—ĐœĐ°Ń‡ĐșĐž', 'dontforget' : 'і ĐœĐ” Đ·Đ°Đ±ŃƒĐŽŃŒŃ‚Đ” Ń€ŃƒŃˆĐœĐžŃ‡ĐŸĐș', 'shortcutsof' : 'СтĐČĐŸŃ€Đ”ĐœĐœŃ ĐżĐŸŃĐžĐ»Đ°ĐœŃŒ ĐČĐžĐŒĐșĐœĐ”ĐœĐŸ', 'dropFiles' : 'КоЮаĐčŃ‚Đ” фаĐčлО сюЮо', 'or' : 'Đ°Đ±ĐŸ', 'selectForUpload' : 'Đ’ĐžĐ±Đ”Ń€Ń–Ń‚ŃŒ фаĐčлО ĐŽĐ»Ń ĐČіЮĐČĐ°ĐœŃ‚Đ°Đ¶Đ”ĐœĐœŃ', 'moveFiles' : 'ĐŸĐ”Ń€Đ”ĐŒŃ–ŃŃ‚ĐžŃ‚Đž фаĐčлО', 'copyFiles' : 'ĐšĐŸĐżŃ–ŃŽĐČато фаĐčлО', 'restoreFiles' : 'Đ’Ń–ĐŽĐœĐŸĐČото ĐŸĐ±\'єĐșто', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Đ’ĐžĐ»ŃƒŃ‡ĐžŃ‚Đž Đ· Ń€ĐŸĐ·Ń‚Đ°ŃˆŃƒĐČĐ°ĐœŃŒ', 'aspectRatio' : 'СпіĐČĐČŃ–ĐŽĐœĐŸŃˆĐ”ĐœĐœŃ', 'scale' : 'ĐœĐ°ŃŃˆŃ‚Đ°Đ±', 'width' : 'ĐšĐžŃ€ĐžĐœĐ°', 'height' : 'Đ’ĐžŃĐŸŃ‚Đ°', 'resize' : 'Đ—ĐŒŃ–ĐœĐžŃ‚Đž Ń€ĐŸĐ·ĐŒŃ–Ń€', 'crop' : 'ОбрізатО', 'rotate' : 'ĐŸĐŸĐČĐ”Ń€ĐœŃƒŃ‚Đž', 'rotate-cw' : 'ĐŸĐŸĐČĐ”Ń€ĐœŃƒŃ‚Đž ĐœĐ° 90 граЮусіĐČ Đ·Đ° ĐłĐŸĐŽ. стр.', 'rotate-ccw' : 'ĐŸĐŸĐČĐ”Ń€ĐœŃƒŃ‚Đž ĐœĐ° 90 граЮусіĐČ ĐżŃ€ĐŸŃ‚Đž ĐłĐŸĐŽ. стр.', 'degree' : 'ГраЮус', 'netMountDialogTitle' : 'Đ—ĐŒĐŸĐœŃ‚ŃƒĐČато ĐœĐŸŃŃ–Đč у ĐŒĐ”Ń€Đ”Đ¶Ń–', // added 18.04.2012 'protocol' : 'ĐČĐ”Ń€ŃŃ–Ń ĐżŃ€ĐŸŃ‚ĐŸĐșĐŸĐ»Ńƒ', // added 18.04.2012 'host' : 'Đ„ĐŸŃŃ‚', // added 18.04.2012 'port' : 'ĐŸĐŸŃ€Ń‚', // added 18.04.2012 'user' : 'Đ›ĐŸĐłŃ–Đœ', // added 18.04.2012 'pass' : 'ĐŸĐ°Ń€ĐŸĐ»ŃŒ', // added 18.04.2012 'confirmUnmount' : 'Во ĐČŃ–ĐŽĐŒĐŸĐœŃ‚ĐŸĐČŃƒŃ”Ń‚Đ” $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'ĐŸĐ”Ń€Đ”Ń‚ŃĐłĐœŃ–Ń‚ŃŒ Đ°Đ±ĐŸ ĐČстаĐČŃ‚Đ” фаĐčлО Đ· ĐŸĐłĐ»ŃĐŽĐ°Ń‡Đ°', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'ĐŸĐ”Ń€Đ”Ń‚ŃĐłĐœŃ–Ń‚ŃŒ фаĐčлО, ВстаĐČŃ‚Đ” URL Đ°Đ±ĐŸ сĐČŃ–Ń‚Đ»ĐžĐœĐž (Đ· Đ±ŃƒŃ„Đ”Ń€Đ° ĐŸĐ±ĐŒŃ–ĐœŃƒ) сюЮо', // from v2.1 added 07.04.2014 'encoding' : 'ĐšĐŸĐŽŃƒĐČĐ°ĐœĐœŃ', // from v2.1 added 19.12.2014 'locale' : 'Đ›ĐŸĐșĐ°Đ»ŃŒ', // from v2.1 added 19.12.2014 'searchTarget' : 'ĐŸŃ€ĐžĐ·ĐœĐ°Ń‡Đ”ĐœĐœŃ: $1', // from v2.1 added 22.5.2015 'searchMime' : 'ĐŸĐŸŃˆŃƒĐș Đ·Đ° ĐČĐČĐ”ĐŽĐ”ĐœĐžĐŒ Ń‚ĐžĐżĐŸĐŒ MIME', // from v2.1 added 22.5.2015 'owner' : 'Đ’Đ»Đ°ŃĐœĐžĐș', // from v2.1 added 20.6.2015 'group' : 'Група', // from v2.1 added 20.6.2015 'other' : 'Đ†ĐœŃˆŃ–', // from v2.1 added 20.6.2015 'execute' : 'ВоĐșĐŸĐœĐ°ĐœĐœŃ', // from v2.1 added 20.6.2015 'perm' : 'Đ”ĐŸĐ·ĐČŃ–Đ»', // from v2.1 added 20.6.2015 'mode' : 'Đ Đ”Đ¶ĐžĐŒ', // from v2.1 added 20.6.2015 'emptyFolder' : 'йДĐșĐ° ĐżĐŸŃ€ĐŸĐ¶ĐœŃ', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'йДĐșĐ° ĐżĐŸŃ€ĐŸĐ¶ĐœŃ\\A ĐŸĐ”Ń€Đ”Ń‚ŃĐłĐœŃ–Ń‚ŃŒ ĐŸĐ±\'єĐșто ĐŽĐ»Ń ĐŽĐŸĐŽĐ°ĐČĐ°ĐœĐœŃ', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'йДĐșĐ° ĐżĐŸŃ€ĐŸĐ¶ĐœŃ\\A Đ”Đ»Ń ĐŽĐŸĐŽĐ°ĐČĐ°ĐœĐœŃ ĐŸĐ±\'єĐșтіĐČ Ń‚ĐŸŃ€ĐșĐœŃ–Ń‚ŃŒ та ŃƒŃ‚Ń€ĐžĐŒŃƒĐčŃ‚Đ”', // from v2.1.6 added 30.12.2015 'quality' : 'ĐŻĐșість', // from v2.1.6 added 5.1.2016 'autoSync' : 'АĐČŃ‚ĐŸ ŃĐžĐœŃ….', // from v2.1.6 added 10.1.2016 'moveUp' : 'ĐŸĐ”Ń€Đ”ŃŃƒĐœŃƒŃ‚Đž ĐČĐłĐŸŃ€Ńƒ', // from v2.1.6 added 18.1.2016 'getLink' : 'ĐžŃ‚Ń€ĐžĐŒĐ°Ń‚Đž URL', // from v2.1.7 added 9.2.2016 'selectedItems' : 'ĐžĐ±Ń€Đ°ĐœŃ– ĐŸĐ±\'єĐșто ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID Ń‚Đ”ĐșĐž', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Đ”ĐŸĐ·ĐČĐŸĐ»ĐžŃ‚Đž ĐŽĐŸŃŃ‚ŃƒĐż ĐŸŃ„Đ»Đ°ĐčĐœ', // from v2.1.10 added 3.25.2016 'reAuth' : 'Đ”Đ»Ń Ń€Đ”Đ°ŃƒŃ‚Đ”ĐœŃ‚ĐžŃ„Ń–Đșації', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Зараз Đ·Đ°ĐČĐ°ĐœŃ‚Đ°Đ¶ŃƒŃ”ĐŒĐŸ...', // from v2.1.12 added 4.26.2016 'openMulti' : 'ВіЮĐșрото ĐŽĐ”ĐșŃ–Đ»ŃŒĐșĐ° фаĐčліĐČ', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Во ĐœĐ°ĐŒĐ°ĐłĐ°Ń”Ń‚Đ”ŃŃŒ ĐČіЮĐșрото $1 фаĐčліĐČ. Во ĐČпДĐČĐœĐ”ĐœŃ– Ń‰ĐŸ Ń…ĐŸŃ‡Đ”Ń‚Đ” ĐČіЮĐșрото ії у ĐŸĐłĐ»ŃĐŽĐ°Ń‡Ń–?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'ĐŸĐŸŃˆŃƒĐș ĐœĐ” ĐŽĐ°ĐČ Ń€Đ”Đ·ŃƒĐ»ŃŒŃ‚Đ°Ń‚Ń–ĐČ Ńƒ ĐŸĐ±Ń€Đ°ĐœĐŸĐŒŃƒ ĐŒŃ–ŃŃ†Ń–.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Đ Đ”ĐŽĐ°ĐłŃƒŃ” фаĐčĐ».', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Во ĐŸĐ±Ń€Đ°Đ»Đž $1 ĐŸĐ±\'єĐșтіĐČ.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'ĐŁ ĐČас є $1 ĐŸĐ±\'єĐșтіĐČ Ńƒ Đ±ŃƒŃ„Đ”Ń€Ń– ĐŸĐ±ĐŒŃ–ĐœŃƒ.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Đ†ĐœĐșŃ€Đ”ĐŒĐ”ĐœŃ‚ĐœĐžĐč ĐżĐŸŃˆŃƒĐș є Ń‚Ń–Đ»ŃŒĐșĐž ĐŽĐ»Ń ĐżĐŸŃ‚ĐŸŃ‡ĐœĐŸĐłĐŸ ĐżĐ”Ń€Đ”ĐłĐ»ŃĐŽŃƒ.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Đ’Ń–ĐŽĐœĐŸĐČото', // from v2.1.15 added 3.8.2016 'complete' : '$1 ĐČĐžĐșĐŸĐœĐ°ĐœĐŸ', // from v2.1.15 added 21.8.2016 'contextmenu' : 'ĐšĐŸĐœŃ‚Đ”ĐșŃŃ‚ĐœĐ” ĐŒĐ”ĐœŃŽ', // from v2.1.15 added 9.9.2016 'pageTurning' : 'ĐžĐ±Đ”Ń€Ń‚Đ°ĐœĐœŃ ŃŃ‚ĐŸŃ€Ń–ĐœĐșĐž', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'ĐšĐŸŃ€Đ”ĐœĐ”ĐČі Ń‚Đ”ĐșĐž ĐœĐŸŃŃ–Ń—ĐČ', // from v2.1.16 added 16.9.2016 'reset' : 'ĐžĐ±ĐœŃƒĐ»ĐžŃ‚Đž', // from v2.1.16 added 1.10.2016 'bgcolor' : 'ĐšĐŸĐ»Ń–Ń€ Ń„ĐŸĐœŃƒ', // from v2.1.16 added 1.10.2016 'colorPicker' : 'ОбратО ĐșĐŸĐ»Ń–Ń€', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'сітĐșĐ° 8px', // from v2.1.16 added 4.10.2016 'enabled' : 'ĐŁĐČŃ–ĐŒĐșĐœĐ”ĐœĐŸ', // from v2.1.16 added 4.10.2016 'disabled' : 'Đ’ĐžĐŒĐșĐœĐ”ĐœĐŸ', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Đ Đ”Đ·ŃƒĐ»ŃŒŃ‚Đ°Ń‚Đž ĐżĐŸŃˆŃƒĐșу у ĐżĐŸŃ‚ĐŸŃ‡ĐœĐŸĐŒŃƒ ĐżĐ”Ń€Đ”ĐłĐ»ŃĐŽŃ– ĐČŃ–ĐŽŃŃƒŃ‚ĐœŃ–.\\AĐĐ°Ń‚ĐžŃĐœŃ–Ń‚ŃŒ [Enter] ĐŽĐ»Ń Ń€ĐŸĐ·ŃˆĐžŃ€Đ”ĐœĐœŃ ĐșрОтДріїĐČ ĐżĐŸŃˆŃƒĐșу.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Đ Đ”Đ·ŃƒĐ»ŃŒŃ‚Đ°Ń‚Đž ĐżĐŸŃˆŃƒĐșу Đ·Đ° ĐżĐ”Ń€ŃˆĐŸŃŽ Đ»Ń–Ń‚Đ”Ń€ĐŸŃŽ ĐČŃ–ĐŽŃŃƒŃ‚ĐœŃ– у ĐżĐŸŃ‚ĐŸŃ‡ĐœĐŸĐŒŃƒ ĐżĐ”Ń€Đ”ĐłĐ»ŃĐŽŃ–.', // from v2.1.23 added 24.3.2017 'textLabel' : 'йДĐșŃŃ‚ĐŸĐČĐ° ĐŒŃ–Ń‚ĐșĐ°', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 хĐČ. Đ·Đ°Đ»ĐžŃˆĐžĐ»ĐŸŃŃŒ', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'ВіЮĐșрото Đ·ĐœĐŸĐČу Đ· ĐŸĐ±Ń€Đ°ĐœĐžĐŒ ĐșĐŸĐŽŃƒĐČĐ°ĐœĐœŃĐŒ', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'ЗбДрДгтО Đ· ĐŸĐ±Ń€Đ°ĐœĐžĐŒ ĐșĐŸĐŽŃƒĐČĐ°ĐœĐœŃĐŒ', // from v2.1.19 added 2.12.2016 'selectFolder' : 'ОбратО Ń‚Đ”Đșу', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'ĐŸĐŸŃˆŃƒĐș Đ·Đ° ĐżĐ”Ń€ŃˆĐŸŃŽ Đ»Ń–Ń‚Đ”Ń€ĐŸŃŽ', // from v2.1.23 added 24.3.2017 'presets' : 'ĐšĐ°Đ±Đ»ĐŸĐœĐž', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Đ”ŃƒĐ¶Đ” Đ±Đ°ĐłĐ°Ń‚ĐŸ ĐŸĐ±\'єĐșтіĐČ ĐŽĐ»Ń ĐżĐ”Ń€Đ”ĐŒŃ–Ń‰Đ”ĐœĐœŃ у ŃĐŒŃ–Ń‚ĐœĐžĐș.', // from v2.1.25 added 9.6.2017 'TextArea' : 'йДĐșŃŃ‚ĐŸĐČĐ”ĐŸĐŸĐ»Đ”', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'ĐĄĐżĐŸŃ€ĐŸĐ¶ĐœĐžŃ‚Đž Ń‚Đ”Đșу "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'йДĐșĐ° "$1" ĐżĐŸŃ€ĐŸĐ¶ĐœŃ.', // from v2.1.25 added 22.6.2017 'preference' : 'ĐĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ', // from v2.1.26 added 28.6.2017 'language' : 'ĐœĐŸĐČĐ°', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Đ†ĐœŃ–Ń†Ń–ŃŽĐČато ĐœĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ Đ·Đ±Đ”Ń€Đ”Đ¶Đ”ĐœŃ– у Ń†ŃŒĐŸĐŒŃƒ ĐŸĐłĐ»ŃĐŽĐ°Ń‡Ń–', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'ĐĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ Đ»ĐŸŃ‚Đșу Ń–ĐœŃŃ‚Ń€ŃƒĐŒĐ”ĐœŃ‚Ń–ĐČ', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 ŃĐžĐŒĐČĐŸĐ»Ń–ĐČ Đ·Đ°Đ»ĐžŃˆĐžĐ»ĐŸŃŃŒ.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 ряЮĐșіĐČ Đ·Đ°Đ»ĐžŃˆĐžĐ»ĐŸŃŃŒ.', // from v2.1.52 added 16.1.2020 'sum' : 'ĐĄŃƒĐŒĐ°', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'ĐŸŃ€ĐžĐ±Đ»ĐžĐ·ĐœĐžĐč Ń€ĐŸĐ·ĐŒŃ–Ń€ фаĐčу', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Đ€ĐŸĐșусуĐČато Đ”Đ»Đ”ĐŒĐ”ĐœŃ‚ ĐŽŃ–Đ°Đ»ĐŸĐłĐ° про ĐœĐ°ĐČĐ”ĐŽĐ”ĐœĐœŃ– ĐșŃƒŃ€ŃĐŸŃ€Đ° ĐŒĐžŃˆŃ–', // from v2.1.30 added 2.11.2017 'select' : 'ОбратО', // from v2.1.30 added 23.11.2017 'selectAction' : 'Дія про ĐČĐžĐ±ĐŸŃ€Ń– фаĐčла', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'ВіЮĐșрото рДЎаĐșŃ‚ĐŸŃ€ĐŸĐŒ, Ń‰ĐŸ ĐČĐžĐșĐŸŃ€ĐžŃŃ‚ĐŸĐČуĐČĐ°ĐČся ĐșраĐčĐœŃ–Đč раз.', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Đ†ĐœĐČĐ”Ń€Ń‚ŃƒĐČато ĐČОбір', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Во Ń‚ĐŸŃ‡ĐœĐŸ Ń…ĐŸŃ‡Đ”Ń‚Đ” пДрДĐčĐŒĐ”ĐœŃƒĐČато $1 ĐŸĐ±Ń€Đ°ĐœĐžŃ… ĐŸĐ±\'єĐșтіĐČ ĐœĐ° ĐșŃˆŃ‚Đ°Đ»Ń‚ $2?
      ĐŠĐ” ĐœĐ”Đ·ĐČĐŸŃ€ĐŸŃ‚ĐœĐ° Юія!', // from v2.1.31 added 4.12.2017 'batchRename' : 'ПаĐșĐ”Ń‚ĐœĐ” пДрДĐčĐŒĐ”ĐœŃƒĐČĐ°ĐœĐœŃ', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Đ§ĐžŃĐ»ĐŸ', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Đ”ĐŸĐŽĐ°Ń‚Đž прДфіĐșс', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Đ”ĐŸĐŽĐ°Ń‚Đž суфіĐșс', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Đ—ĐŒŃ–ĐœĐžŃ‚Đž Ń€ĐŸĐ·ŃˆĐžŃ€Đ”ĐœĐœŃ', // from v2.1.31 added 8.12.2017 'columnPref' : 'ĐĐ°Đ»Đ°ŃˆŃ‚ŃƒĐČĐ°ĐœĐœŃ ŃŃ‚ĐŸĐČпчоĐșіĐČ (ĐČĐžĐłĐ»ŃĐŽ спОсĐșу)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Усі Đ·ĐŒŃ–ĐœĐž Đ±ŃƒĐŽŃƒŃ‚ŃŒ ĐœĐ”ĐłĐ°ĐčĐœĐŸ Đ·Đ°ŃŃ‚ĐŸŃĐŸĐČĐ°ĐœŃ– у архіĐČі.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Đ”Đ”ŃĐșі Đ·ĐŒŃ–ĐœĐž ĐœĐ” буЎД ĐČĐžĐŽĐœĐŸ ĐŽĐŸ Ń€ĐŸĐ·ĐŒĐŸĐœŃ‚ŃƒĐČĐ°ĐœĐœŃ ĐœĐŸŃŃ–Ń.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'ĐĐ°ŃŃ‚ŃƒĐżĐœĐžĐč(і) ĐœĐŸŃŃ–Đč(ї) ĐœĐ° Ń†ŃŒĐŸĐŒŃƒ ĐœĐŸŃŃ–Ń— таĐșĐŸĐ¶ ĐœĐ” Đ·ĐŒĐŸĐœŃ‚ĐŸĐČĐ°ĐœŃ–. Во Ń‚ĐŸŃ‡ĐœĐŸ Ń…ĐŸŃ‡Đ”Ń‚Đ” ĐČŃ–ĐŽĐŒĐŸĐœŃ‚ŃƒĐČато ĐœĐŸŃŃ–Đč?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Đ†ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–Ń ĐżŃ€ĐŸ ĐŸĐ±Ń€Đ°ĐœĐ”', // from v2.1.33 added 7.3.2018 'hashChecker' : 'ĐĐ»ĐłĐŸŃ€ĐžŃ‚ĐŒĐž ĐŽĐ»Ń ĐżĐŸĐșазу Ń…Đ”ŃˆŃƒ фаĐčла', // from v2.1.33 added 10.3.2018 'infoItems' : 'Đ†ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–ĐčĐœŃ– ĐŸĐ±\'єĐșто (ĐŸĐ°ĐœĐ”Đ»ŃŒ Ń–ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†Ń–Ń— ĐżŃ€ĐŸ ĐŸĐ±Ń€Đ°ĐœĐ”)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'ĐĐ°Ń‚ĐžŃĐœŃ–Ń‚ŃŒ Đ·ĐœĐŸĐČу ĐŽĐ»Ń ĐČĐžŃ…ĐŸĐŽŃƒ.', // from v2.1.38 added 1.4.2018 'toolbar' : 'ĐŸĐ°ĐœĐ”Đ»ŃŒ Ń–ĐœŃŃ‚Ń€ŃƒĐŒĐ”ĐœŃ‚Ń–ĐČ', // from v2.1.38 added 4.4.2018 'workspace' : 'Đ ĐŸĐ±ĐŸŃ‡ĐžĐč ĐżŃ€ĐŸŃŃ‚Ń–Ń€', // from v2.1.38 added 4.4.2018 'dialog' : 'Đ”Ń–Đ°Đ»ĐŸĐł', // from v2.1.38 added 4.4.2018 'all' : 'Усі', // from v2.1.38 added 4.4.2018 'iconSize' : 'Đ ĐŸĐ·ĐŒŃ–Ń€ Đ·ĐœĐ°Ń‡ĐșіĐČ (ĐČĐžĐłĐ»ŃĐŽ Đ·ĐœĐ°Ń‡ĐșіĐČ)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'ВіЮĐșрото Ń€ĐŸĐ·ĐłĐŸŃ€ĐœŃƒŃ‚Đ” ĐČіĐșĐœĐŸ рДЎаĐșŃ‚ĐŸŃ€Đ°', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'ЧДрДз ĐœĐ”ĐŒĐŸĐ¶Đ»ĐžĐČість ĐșĐŸĐœĐČĐ”Ń€Ń‚ŃƒĐČĐ°ĐœĐœŃ API, сĐșĐŸĐœĐČĐ”Ń€Ń‚ŃƒĐčŃ‚Đ” ĐœĐ° ĐČДбсаĐčті.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'ĐŸŃ–ŃĐ»Ń ĐșĐŸĐœĐČĐ”Ń€Ń‚ŃƒĐČĐ°ĐœĐœŃ ĐČĐ°ĐŒ трДба Đ·Đ°ĐČĐ°ĐœŃ‚Đ°Đ¶ĐžŃ‚Đž Đ·Đ° ĐŽĐŸĐżĐŸĐŒĐŸĐłĐŸŃŽ URL Đ°Đ±ĐŸ Đ·Đ±Đ”Ń€Đ”Đ¶Đ”ĐœĐŸĐłĐŸ фаĐčу, ĐŽĐ»Ń Đ·Đ±Đ”Ń€Đ”Đ¶Đ”ĐœĐœŃ ĐșĐŸĐœĐČĐ”Ń€Ń‚ĐŸĐČĐ°ĐœĐŸĐłĐŸ фаĐčлу.', //from v2.1.40 added 8.7.2018 'convertOn' : 'ĐšĐŸĐœĐČĐ”Ń€Ń‚ŃƒĐČато саĐčт Đ· $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Đ†ĐœŃ‚Đ”ĐłŃ€Đ°Ń†Ń–Ń—', // from v2.1.40 added 11.7.2018 'integrationWith' : 'ĐŠĐ”Đč elFinder ĐŒĐ°Ń” ĐœĐ°ŃŃ‚ŃƒĐżĐœŃ– Ń–ĐœŃ‚Đ”ĐłŃ€ĐŸĐČĐ°ĐœŃ– сДрĐČісо. ĐŸĐ”Ń€Đ”ĐČіртД ŃƒĐŒĐŸĐČĐž ĐČĐžĐșĐŸŃ€ĐžŃŃ‚Đ°ĐœĐœŃ, ĐżĐŸĐ»Ń–Ń‚ĐžĐșу проĐČĐ°Ń‚ĐœĐŸŃŃ‚Ń– та Ń–ĐœŃˆĐ” пДрДЎ ĐČĐžĐșĐŸŃ€ĐžŃŃ‚Đ°ĐœĐœŃĐŒ.', // from v2.1.40 added 11.7.2018 'showHidden' : 'ĐŸĐŸĐșĐ°Đ·Đ°Ń‚Đž ĐżŃ€ĐžŃ…ĐŸĐČĐ°ĐœŃ– ĐŸĐ±\'єĐșто', // from v2.1.41 added 24.7.2018 'hideHidden' : 'ĐĄŃ…ĐŸĐČато ĐżŃ€ĐžŃ…ĐŸĐČĐ°ĐœŃ– ĐŸĐ±\'єĐșто', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'ĐŸĐŸĐșĐ°Đ·Đ°Ń‚Đž/ĐĄŃ…ĐŸĐČато ĐżŃ€ĐžŃ…ĐŸĐČĐ°ĐœŃ– ĐŸ\'єĐșто', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'йОпО фаĐčліĐČ, яĐșі ĐŒĐŸĐ¶ĐœĐ° стĐČĐŸŃ€ŃŽĐČато', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'йОп Ń‚Đ”ĐșŃŃ‚ĐŸĐČĐŸĐłĐŸ фаĐčлу', // from v2.1.41 added 7.8.2018 'add' : 'Đ”ĐŸĐŽĐ°Ń‚Đž', // from v2.1.41 added 7.8.2018 'theme' : 'ĐąĐ”ĐŒĐ°', // from v2.1.43 added 19.10.2018 'default' : 'ĐŻĐș Đ·Đ°Đ·ĐČочаĐč', // from v2.1.43 added 19.10.2018 'description' : 'Опос', // from v2.1.43 added 19.10.2018 'website' : 'ВДб-саĐčт', // from v2.1.43 added 19.10.2018 'author' : 'АĐČŃ‚ĐŸŃ€', // from v2.1.43 added 19.10.2018 'email' : 'E-mail', // from v2.1.43 added 19.10.2018 'license' : 'Đ›Ń–Ń†Đ”ĐœĐ·Ń–Ń', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Об\'єĐșт ĐœĐ”ĐŒĐŸĐ¶Đ»ĐžĐČĐŸ збДрДгтО. Đ©ĐŸĐ± ŃƒĐœĐžĐșĐœŃƒŃ‚Đž ĐČтрато праĐČĐŸĐș ĐČĐ°ĐŒ трДба Đ”ĐșŃĐżĐŸŃ€Ń‚ŃƒĐČато ії ĐŽĐŸ сДбД у простріĐč.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'ДĐČічі ĐșĐ»Đ°Ń†ĐœŃ–Ń‚ŃŒ фаĐčĐ» ĐŽĐ»Ń ĐČĐžĐ±ĐŸŃ€Ńƒ.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'ВоĐșĐŸŃ€ĐžŃŃ‚ĐŸĐČуĐČато ĐżĐŸĐČĐœĐŸĐ”ĐșŃ€Đ°ĐœĐœĐžĐč Ń€Đ”Đ¶ĐžĐŒ', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'ĐĐ”ĐČŃ–ĐŽĐŸĐŒĐŸ', 'kindRoot' : 'ĐšĐŸŃ€Đ”ĐœĐ”ĐČĐ° Ń‚Đ”ĐșĐ° ĐœĐŸŃŃ–Ń', // from v2.1.16 added 16.10.2016 'kindFolder' : 'ПапĐșĐ°', 'kindSelects' : 'ВОбір', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Аліас', 'kindAliasBroken' : 'ĐŸĐŸŃˆĐșĐŸĐŽĐ¶Đ”ĐœĐžĐč аліас', // applications 'kindApp' : 'ĐŸŃ€ĐŸĐłŃ€Đ°ĐŒĐ°', 'kindPostscript' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ Postscript', 'kindMsOffice' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ Microsoft Office', 'kindMsWord' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ Microsoft Word', 'kindMsExcel' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ Microsoft Excel', 'kindMsPP' : 'ĐŸŃ€Đ”Đ·Đ”ĐœŃ‚Đ°Ń†Ń–Ń Microsoft Powerpoint', 'kindOO' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ Open Office', 'kindAppFlash' : 'Flash-ĐŽĐŸĐŽĐ°Ń‚ĐŸĐș', 'kindPDF' : 'ĐŸĐŸŃ€Ń‚Đ°Ń‚ĐžĐČĐœĐžĐč Ń„ĐŸŃ€ĐŒĐ°Ń‚ ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚Ń–ĐČ (PDF)', 'kindTorrent' : 'ЀаĐčĐ» Bittorrent', 'kind7z' : 'АрхіĐČ 7z', 'kindTAR' : 'АрхіĐČ TAR', 'kindGZIP' : 'АрхіĐČ GZIP', 'kindBZIP' : 'АрхіĐČ BZIP', 'kindXZ' : 'АрхіĐČ XZ', 'kindZIP' : 'АрхіĐČ ZIP', 'kindRAR' : 'АрхіĐČ RAR', 'kindJAR' : 'ЀаĐčĐ» Java JAR', 'kindTTF' : 'йрофт True Type', 'kindOTF' : 'йрофт Open Type', 'kindRPM' : 'ПаĐșŃƒĐœĐŸĐș RPM', // texts 'kindText' : 'йДĐșŃŃ‚ĐŸĐČĐžĐč ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚', 'kindTextPlain' : 'ĐŸŃ€ĐŸŃŃ‚ĐžĐč Ń‚Đ”Đșст', 'kindPHP' : 'ĐšĐŸĐŽ PHP', 'kindCSS' : 'КасĐșĐ°ĐŽĐœĐ° Ń‚Đ°Đ±Đ»ĐžŃ†Ń стОліĐČ (CSS)', 'kindHTML' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ HTML', 'kindJS' : 'ĐšĐŸĐŽ Javascript', 'kindRTF' : 'ЀаĐčĐ» RTF', 'kindC' : 'ĐšĐŸĐŽ C', 'kindCHeader' : 'Đ—Đ°ĐłĐŸĐ»ĐŸĐČĐșĐŸĐČĐžĐč ĐșĐŸĐŽ C', 'kindCPP' : 'ĐšĐŸĐŽ C++', 'kindCPPHeader' : 'Đ—Đ°ĐłĐŸĐ»ĐŸĐČĐșĐŸĐČĐžĐč ĐșĐŸĐŽ C++', 'kindShell' : 'ĐĄĐșропт Unix shell', 'kindPython' : 'ĐšĐŸĐŽ Python', 'kindJava' : 'ĐšĐŸĐŽ Java', 'kindRuby' : 'ĐšĐŸĐŽ Ruby', 'kindPerl' : 'ĐšĐŸĐŽ Perl', 'kindSQL' : 'ĐšĐŸĐŽ SQL', 'kindXML' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ XML', 'kindAWK' : 'ĐšĐŸĐŽ AWK', 'kindCSV' : 'Đ—ĐœĐ°Ń‡Đ”ĐœĐœŃ Ń€ĐŸĐ·ĐŽŃ–Đ»Đ”ĐœŃ– ĐșĐŸĐŒĐŸŃŽ (CSV)', 'kindDOCBOOK' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ Docbook XML', 'kindMarkdown' : 'йДĐșст Markdown', // added 20.7.2015 // images 'kindImage' : 'Đ—ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ', 'kindBMP' : 'Đ—ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ BMP', 'kindJPEG' : 'Đ—ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ JPEG', 'kindGIF' : 'Đ—ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ GIF', 'kindPNG' : 'Đ—ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ PNG', 'kindTIFF' : 'Đ—ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ TIFF', 'kindTGA' : 'Đ—ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ TGA', 'kindPSD' : 'Đ—ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ Adobe Photoshop', 'kindXBITMAP' : 'Đ—ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ X bitmap', 'kindPXM' : 'Đ—ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐœŃ Pixelmator', // media 'kindAudio' : 'ĐŃƒĐŽŃ–ĐŸ', 'kindAudioMPEG' : 'ĐŃƒĐŽŃ–ĐŸ MPEG', 'kindAudioMPEG4' : 'ĐŃƒĐŽŃ–ĐŸ MPEG-4', 'kindAudioMIDI' : 'ĐŃƒĐŽŃ–ĐŸ MIDI', 'kindAudioOGG' : 'ĐŃƒĐŽŃ–ĐŸ Ogg Vorbis', 'kindAudioWAV' : 'ĐŃƒĐŽŃ–ĐŸ WAV', 'AudioPlaylist' : 'ĐĄĐżĐžŃĐŸĐș ĐČіЮтĐČĐŸŃ€Đ”ĐœĐœŃ MP3', 'kindVideo' : 'Đ’Ń–ĐŽĐ”ĐŸ', 'kindVideoDV' : 'Đ’Ń–ĐŽĐ”ĐŸ DV', 'kindVideoMPEG' : 'Đ’Ń–ĐŽĐ”ĐŸ MPEG', 'kindVideoMPEG4' : 'Đ’Ń–ĐŽĐ”ĐŸ MPEG-4', 'kindVideoAVI' : 'Đ’Ń–ĐŽĐ”ĐŸ AVI', 'kindVideoMOV' : 'Đ’Ń–ĐŽĐ”ĐŸ Quick Time', 'kindVideoWM' : 'Đ’Ń–ĐŽĐ”ĐŸ Windows Media', 'kindVideoFlash' : 'Đ’Ń–ĐŽĐ”ĐŸ Flash', 'kindVideoMKV' : 'Đ’Ń–ĐŽĐ”ĐŸ Matroska', 'kindVideoOGG' : 'Đ’Ń–ĐŽĐ”ĐŸ Ogg' } }; })); application/library/js/i18n/elfinder.el.js000064400000052137147577724760014475 0ustar00/** * Greek translation * @author yawd , Romanos * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.el = { translator : 'yawd <ingo@yawd.eu>', language : 'ΕλληΜÎčÎșÎŹ', direction : 'ltr', dateFormat : 'd.m.Y H:i', fancyDateFormat : '$1 H:i', messages : { /********************************** errors **********************************/ 'error' : 'ΠρόÎČληΌα', 'errUnknown' : 'Î†ÎłÎœÏ‰ÏƒÏ„Îż πρόÎČληΌα.', 'errUnknownCmd' : 'Î†ÎłÎœÏ‰ÏƒÏ„Î· Î”ÎœÏ„ÎżÎ»Îź.', 'errJqui' : 'Μη έγÎșυρη ρύΞΌÎčση Ï„ÎżÏ… jQuery UI. ΀α components "selectable", "draggable" ÎșαÎč "droppable" πρέπΔÎč Μα πΔρÎčÎ»Î·Ï†ÎżÏÎœ.', 'errNode' : 'Ï„Îż elFinder χρΔÎčÎŹÎ¶Î”Ï„Î±Îč Μα έχΔÎč ΎηΌÎčÎżÏ…ÏÎłÎ·ÎžÎ”ÎŻ Ï„Îż DOM Element.', 'errURL' : 'Μη έγÎșυρΔς ÏÏ…ÎžÎŒÎŻÏƒÎ”Îčς ÎłÎčα Ï„Îż elFinder! η ΔπÎčλογΟ URL ΎΔΜ έχΔÎč ÎżÏÎčÏƒÏ„Î”ÎŻ.', 'errAccess' : 'Î‘Ï€Î±ÎłÎżÏÎ”ÏÎ”Ï„Î±Îč η πρόσÎČαση.', 'errConnect' : 'ΔΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź η σύΜΎΔση ΌΔ Ï„Îż backend.', 'errAbort' : 'Η σύΜΎΔση ΔγÎșÎ±Ï„Î±Î»Î”ÎŻÏ†ÎžÎ·ÎșΔ.', 'errTimeout' : 'Η σύΜΎΔση έληΟΔ.', 'errNotFound' : 'ΔΔ ÎČρέΞηÎșΔ Ï„Îż backend.', 'errResponse' : 'Μμ έγÎșυρη Î±Ï€ÎŹÎœÏ„Î·ÏƒÎ· από Ï„Îż backend.', 'errConf' : 'Μη έγÎșυρΔς ÏÏ…ÎžÎŒÎŻÏƒÎ”Îčς ÎłÎčα Ï„Îż backend.', 'errJSON' : '΀ο PHP JSON module ΎΔΜ Î”ÎŻÎœÎ±Îč ΔγÎșÎ±Ï„Î”ÏƒÏ„Î·ÎŒÎ­ÎœÎż.', 'errNoVolumes' : 'ΔΔΜ ÎČρέΞηÎșαΜ Î±ÎœÎ±ÎłÎœÏŽÏƒÎčΌα volumes.', 'errCmdParams' : 'Μη έγÎșυρΔς Ï€Î±ÏÎŹÎŒÎ”Ï„ÏÎżÎč ÎłÎčα τηΜ Î”ÎœÏ„ÎżÎ»Îź "$1".', 'errDataNotJSON' : '΀α ÎŽÎ”ÎŽÎżÎŒÎ­ÎœÎ± ΎΔΜ Î”ÎŻÎœÎ±Îč JSON.', 'errDataEmpty' : '΀α ÎŽÎ”ÎŽÎżÎŒÎ­ÎœÎ± Î”ÎŻÎœÎ±Îč ΏΎΔÎčα.', 'errCmdReq' : '΀ο Backend request χρΔÎčÎŹÎ¶Î”Ï„Î±Îč ÏŒÎœÎżÎŒÎ± Î”ÎœÏ„ÎżÎ»ÎźÏ‚.', 'errOpen' : 'ΔΔΜ ÎźÏ„Î±Îœ ΎυΜατό Μα Î±ÎœÎżÎŻÎŸÎ”Îč Ï„Îż "$1".', 'errNotFolder' : '΀ο αΜτÎčÎșÎ”ÎŻÎŒÎ”ÎœÎż ΎΔΜ Î”ÎŻÎœÎ±Îč Ï†ÎŹÎșÎ”Î»ÎżÏ‚.', 'errNotFile' : '΀ο αΜτÎčÎșÎ”ÎŻÎŒÎ”ÎœÎż ΎΔΜ Î”ÎŻÎœÎ±Îč Î±ÏÏ‡Î”ÎŻÎż.', 'errRead' : 'ΔΔΜ ÎźÏ„Î±Îœ ΎυΜατόΜ Μα ÎŽÎčαÎČÎ±ÏƒÏ„Î”ÎŻ Ï„Îż "$1".', 'errWrite' : 'ΔΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź η Î”ÎłÎłÏÎ±Ï†Îź ÏƒÏ„Îż "$1".', 'errPerm' : 'Î‘Ï€Î±ÎłÎżÏÎ”ÏÎ”Ï„Î±Îč η πρόσÎČαση.', 'errLocked' : '"$1" Î”ÎŻÎœÎ±Îč ÎșλΔÎčÎŽÏ‰ÎŒÎ­ÎœÎż ÎșαÎč ΎΔΜ ÎŒÏ€ÎżÏÎ”ÎŻ Μα ÎŒÎ”Ï„ÎżÎœÎżÎŒÎ±ÏƒÏ„Î”ÎŻ, ΌΔταÎșÎčÎœÎ·ÎžÎ”ÎŻ Îź ÎŽÎčÎ±ÎłÏÎ±Ï†Î”ÎŻ.', 'errExists' : '΀ο Î±ÏÏ‡Î”ÎŻÎż ΌΔ ÏŒÎœÎżÎŒÎ± "$1" Ï…Ï€ÎŹÏÏ‡Î”Îč ΟΎη.', 'errInvName' : 'Μη έγÎșÏ…ÏÎż ÏŒÎœÎżÎŒÎ± Î±ÏÏ‡Î”ÎŻÎżÏ….', 'errFolderNotFound' : 'Ο Ï†ÎŹÎșÎ”Î»ÎżÏ‚ ΎΔ ÎČρέΞηÎșΔ.', 'errFileNotFound' : '΀ο Î±ÏÏ‡Î”ÎŻÎż ΎΔ ÎČρέΞηÎșΔ.', 'errTrgFolderNotFound' : 'Ο Ï†ÎŹÎșÎ”Î»ÎżÏ‚ "$1" ΎΔ ÎČρέΞηÎșΔ.', 'errPopup' : '΀ο Ï€ÏÏŒÎłÏÎ±ÎŒÎŒÎ± Ï€Î»ÎźÎłÎ·ÏƒÎ·Ï‚ ΔΌπόΎÎčσΔ Ï„Îż ÎŹÎœÎżÎčÎłÎŒÎ± Î±ÎœÎ±ÎŽÏ…ÏŒÎŒÎ”ÎœÎżÏ… Ï€Î±ÏÎ±ÎžÏÏÎżÏ…. ΓÎčα Î±ÎœÎżÎŻÎŸÎ”Ï„Î” Ï„Îż Î±ÏÏ‡Î”ÎŻÎż Î”ÎœÎ”ÏÎłÎżÏ€ÎżÎčÎźÏƒÏ„Î” Ï„Îż στÎčς ΔπÎčÎ»ÎżÎłÎ­Ï‚ Ï„ÎżÏ… πΔρÎčÎ·ÎłÎ·Ï„Îź.', 'errMkdir' : 'Η ÎŽÏ…ÎŒÎčÎżÏ…ÏÎłÎŻÎ± Ï„ÎżÏ… φαÎșÎ­Î»ÎżÏ… "$1" ΎΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź.', 'errMkfile' : 'Η ΎηΌÎčÎżÏ…ÏÎłÎŻÎ± Ï„ÎżÏ… Î±ÏÏ‡Î”ÎŻÎżÏ… "$1" ΎΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź.', 'errRename' : 'Η ÎŒÎ”Ï„ÎżÎœÎżÎŒÎ±ÏƒÎŻÎ± Ï„ÎżÏ… Î±ÏÏ‡Î”ÎŻÎżÏ… "$1" ΎΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź.', 'errCopyFrom' : 'ΔΔΜ ΔπÎčτρέπΔταÎč η αΜτÎčÎłÏÎ±Ï†Îź Î±ÏÏ‡Î”ÎŻÏ‰Îœ από Ï„Îż volume "$1".', 'errCopyTo' : 'ΔΔΜ ΔπÎčτρέπΔταÎč η αΜτÎčÎłÏÎ±Ï†Îź Î±ÏÏ‡Î”ÎŻÏ‰Îœ ÏƒÏ„Îż volume "$1".', 'errUpload' : 'ΠρόÎČληΌα ÎșÎ±Ï„ÎŹ Ï„Îż upload.', 'errUploadFile' : '΀ο Î±ÏÏ‡Î”ÎŻÎż "$1" ΎΔΜ ΌπόρΔσΔ Μα ÎłÎŻÎœÎ”Îč upload.', 'errUploadNoFiles' : 'ΔΔΜ ÎČρέΞηÎșαΜ Î±ÏÏ‡Î”ÎŻÎ± ÎłÎčα upload.', 'errUploadTotalSize' : '΀α ÎŽÎ”ÎŽÎżÎŒÎ­ÎœÎ± υπΔρÎČÎ±ÎŻÎœÎżÏ…Îœ Ï„Îż ΔπÎčÏ„ÏÎ”Ï€ÏŒÎŒÎ”ÎœÎż ÎŒÎ­ÎłÎčÏƒÏ„Îż ÎŒÎ­ÎłÎ”ÎžÎżÏ‚ ÎŽÎ”ÎŽÎżÎŒÎ­ÎœÏ‰Îœ.', 'errUploadFileSize' : '΀ο Î±ÏÏ‡Î”ÎŻÎż υπΔρÎČÎ±ÎŻÎœÎ”Îč Ï„Îż ΔπÎčÏ„ÏÎ”Ï€ÏŒÎŒÎ”ÎœÎż ÎŒÎ­ÎłÎčÏƒÏ„Îż ÎŒÎ­ÎłÎ”ÎžÎżÏ‚.', 'errUploadMime' : 'Ο Ï„ÏÏ€ÎżÏ‚ Î±ÏÏ‡Î”ÎŻÎżÏ… ΎΔΜ ΔπÎčτρέπΔταÎč.', 'errUploadTransfer' : 'ΠρόÎČληΌα ÎŒÎ”Ï„Î±Ï†ÎżÏÎŹÏ‚ ÎłÎčα Ï„Îż "$1".', 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', 'errReplace' : 'Unable to replace "$1".', 'errSave' : '΀ο "$1" ΎΔΜ ÎźÏ„Î±Îœ ΎυΜατόΜ Μα Î±Ï€ÎżÎžÎ·ÎșÎ”Ï…Ï„Î”ÎŻ.', 'errCopy' : 'ΔΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź η αΜτÎčÎłÏÎ±Ï†Îź Ï„ÎżÏ… "$1".', 'errMove' : 'ΔΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź η ΌΔταÎșÎŻÎœÎ·ÏƒÎ· Ï„ÎżÏ… "$1".', 'errCopyInItself' : 'ΔΔΜ Î”ÎŻÎœÎ±Îč ÎŽÏ…ÎœÎ±Ï„Îź η αΜτÎčÎłÏÎ±Ï†Îź Ï„ÎżÏ… "$1" ÏƒÏ„ÎżÎœ Δαυτό Ï„ÎżÏ….', 'errRm' : 'ΔΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź η Î±Ï†Î±ÎŻÏÎ”ÏƒÎ· Ï„ÎżÏ… "$1".', 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'ΔΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź η Î±ÎœÎŹÎłÎœÏ‰ÏƒÎ· τωΜ Î±ÏÏ‡Î”ÎŻÏ‰Îœ από "$1".', 'errArchive' : 'ΔΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź η ΎηΌÎčÎżÏ…ÏÎłÎŻÎ± Ï„ÎżÏ… Î±ÏÏ‡Î”ÎŻÎżÏ….', 'errArcType' : 'Ο Ï„ÏÏ€ÎżÏ‚ Î±ÏÏ‡Î”ÎŻÎżÏ… ΎΔΜ Ï…Ï€ÎżÏƒÏ„Î·ÏÎŻÎ¶Î”Ï„Î±Îč.', 'errNoArchive' : '΀ο Î±ÏÏ‡Î”ÎŻÎż ΎΔΜ Î”ÎŻÎœÎ±Îč έγÎșÏ…ÏÎż Îź ΎΔΜ Ï…Ï€ÎżÏƒÏ„Î·ÏÎŻÎ¶Î”Ï„Î±Îč Îż Ï„ÏÏ€ÎżÏ‚ Ï„ÎżÏ….', 'errCmdNoSupport' : '΀ο backend ΎΔΜ Ï…Ï€ÎżÏƒÏ„Î·ÏÎŻÎ¶Î”Îč Î±Ï…Ï„Îź τηΜ Î”ÎœÏ„ÎżÎ»Îź.', 'errReplByChild' : 'Ο Ï†ÎŹÎșÎ”Î»ÎżÏ‚ “$1” ΎΔΜ ÎŒÏ€ÎżÏÎ”ÎŻ Μα αΜτÎčÎșÎ±Ï„Î±ÏƒÏ„Î±ÎžÎ”ÎŻ από ÎżÏ€ÎżÎčÎżÎŽÎźÏ€ÎżÏ„Î” Î±ÏÏ‡Î”ÎŻÎż πΔρÎčέχΔταÎč σΔ αυτόΜ.', 'errArcSymlinks' : 'ΓÎčα Î»ÏŒÎłÎżÏ…Ï‚ Î±ÏƒÏ†Î±Î»Î”ÎŻÎ±Ï‚ ΎΔΜ Î”ÎŻÎœÎ±Îč ΎυΜατόΜ Μα ÎŽÎčαÎČÎ±ÏƒÏ„ÎżÏÎœ Î±ÏÏ‡Î”ÎŻÎ± Ï€ÎżÏ… πΔρÎčÎ­Ï‡ÎżÏ…Îœ symlinks orη Î±ÏÏ‡Î”ÎŻÎ± ΌΔ Όη ΔπÎčÏ„ÏÎ”Ï€Ï„ÎŹ ÎżÎœÏŒÎŒÎ±Ï„Î±.', // edited 24.06.2012 'errArcMaxSize' : '΀ο ÎŒÎ­ÎłÎ”ÎžÎżÏ‚ Ï„ÎżÏ… Î±ÏÏ‡Î”ÎŻÎżÏ… υπΔρÎČÎ±ÎŻÎœÎ”Îč Ï„Îż ÎŒÎ­ÎłÎčÏƒÏ„Îż ΔπÎčτρΔπτό όρÎčÎż.', 'errResize' : 'ΔΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź η αλλαγΟ ÎŒÎ”ÎłÎ­ÎžÎżÏ…Ï‚ Ï„ÎżÏ… "$1".', 'errResizeDegree' : 'Invalid rotate degree.', 'errResizeRotate' : 'Unable to rotate image.', 'errResizeSize' : 'Invalid image size.', 'errResizeNoChange' : 'Image size not changed.', 'errUsupportType' : 'Ο Ï„ÏÏ€ÎżÏ‚ Î±ÏÏ‡Î”ÎŻÎżÏ… ΎΔΜ Ï…Ï€ÎżÏƒÏ„Î·ÏÎŻÎ¶Î”Ï„Î±Îč.', 'errNotUTF8Content' : '΀ο Î±ÏÏ‡Î”ÎŻÎż "$1" ΎΔΜ Î”ÎŻÎœÎ±Îč UTF-8 ÎșαÎč ΎΔΜ ÎŒÏ€ÎżÏÎ”ÎŻ Μα Î”Ï€Î”ÎŸÎ”ÏÎłÎ±ÏƒÎžÎ”ÎŻ.', // added 9.11.2011 'errNetMount' : 'ΔΔΜ ÎźÏ„Î±Îœ ÎŽÏ…ÎœÎ±Ï„Îź η φόρτωση Ï„ÎżÏ… "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Μη Ï…Ï€ÎżÏƒÏ„Î·ÏÎčÎ¶ÏŒÎŒÎ”ÎœÎż πρωτόÎșολο.', // added 17.04.2012 'errNetMountFailed' : 'Η φόρτωση απέτυχΔ.', // added 17.04.2012 'errNetMountHostReq' : 'ΑπαÎčÏ„Î”ÎŻÏ„Î±Îč host Î”ÎŸÏ…Ï€Î·ÏÎ”Ï„Î·Ï„ÎźÏ‚.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'ΔηΌÎčÎżÏ…ÏÎłÎŻÎ± archive Î±ÏÏ‡Î”ÎŻÎżÏ…', 'cmdback' : 'Î ÎŻÏƒÏ‰', 'cmdcopy' : 'ΑΜτÎčÎłÏÎ±Ï†Îź', 'cmdcut' : 'Î‘Ï†Î±ÎŻÏÎ”ÏƒÎ·', 'cmddownload' : 'ΜΔταφόρτωση', 'cmdduplicate' : 'Î‘ÎœÏ„ÎŻÎłÏÎ±Ï†Îż', 'cmdedit' : 'Î•Ï€Î”ÎŸÎ”ÏÎłÎ±ÏƒÎŻÎ± Î±ÏÏ‡Î”ÎŻÎżÏ…', 'cmdextract' : 'Î•ÎŸÎ±ÎłÏ‰ÎłÎź Î±ÏÏ‡Î”ÎŻÏ‰Îœ από archive', 'cmdforward' : 'Î ÏÎżÏŽÎžÎ·ÏƒÎ·', 'cmdgetfile' : 'ΕπÎčλέΟτΔ Î±ÏÏ‡Î”ÎŻÎ±', 'cmdhelp' : 'ÎŁÏ‡Î”Ï„ÎčÎșÎŹ ΌΔ αυτό Ï„Îż λογÎčσΌÎčÎșό', 'cmdhome' : 'Home', 'cmdinfo' : 'Î Î»Î·ÏÎżÏ†ÎżÏÎŻÎ”Ï‚', 'cmdmkdir' : 'ÎÎ­ÎżÏ‚ Ï†ÎŹÎșÎ”Î»ÎżÏ‚', 'cmdmkfile' : 'ÎÎ­ÎżÏ‚ Î±ÏÏ‡Î”ÎŻÎż', 'cmdopen' : 'Î†ÎœÎżÎčÎłÎŒÎ±', 'cmdpaste' : 'ΕπÎčÎșόλληση', 'cmdquicklook' : 'Î ÏÎżÎ”Ï€ÎčσÎșόπηση', 'cmdreload' : 'ΑΜαΜέωση', 'cmdrename' : 'ÎœÎ”Ï„ÎżÎœÎżÎŒÎ±ÏƒÎŻÎ±', 'cmdrm' : 'ΔÎčÎ±ÎłÏÎ±Ï†Îź', 'cmdsearch' : 'ΈυρΔση Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'cmdup' : 'ÎœÎ”Ï„ÎŹÎČαση ÏƒÏ„Îż ÎłÎżÎœÎčÎșό Ï†ÎŹÎșΔλο', 'cmdupload' : 'ΑΜέÎČασΌα Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'cmdview' : 'Î ÏÎżÎČολΟ', 'cmdresize' : 'ΑλλαγΟ ÎŒÎ”ÎłÎ­ÎžÎżÏ…Ï‚ ΔÎčÎșόΜας', 'cmdsort' : '΀αΟÎčΜόΌηση', 'cmdnetmount' : 'Mount network volume', /*********************************** buttons ***********************************/ 'btnClose' : 'ÎšÎ»Î”ÎŻÏƒÎčÎŒÎż', 'btnSave' : 'Î‘Ï€ÎżÎžÎźÎșΔυση', 'btnRm' : 'Î‘Ï†Î±ÎŻÏÎ”ÏƒÎ·', 'btnApply' : 'Î•Ï†Î±ÏÎŒÎżÎłÎź', 'btnCancel' : 'ΑÎșύρωση', 'btnNo' : 'ΌχÎč', 'btnYes' : 'ΝαÎč', 'btnMount' : 'Mount', /******************************** notifications ********************************/ 'ntfopen' : 'Î†ÎœÎżÎčÎłÎŒÎ± φαÎșÎ­Î»ÎżÏ…', 'ntffile' : 'Î†ÎœÎżÎčÎłÎŒÎ± Î±ÏÏ‡Î”ÎŻÎżÏ…', 'ntfreload' : 'ΑΜαΜέωση πΔρÎčÎ”Ï‡ÎżÎŒÎ­ÎœÏ‰Îœ φαÎșÎ­Î»ÎżÏ…', 'ntfmkdir' : 'ΔηΌÎčÎżÏ…ÏÎłÎŻÎ± φαÎșÎ­Î»ÎżÏ…', 'ntfmkfile' : 'ΔηΌÎčÎżÏ…ÏÎłÎŻÎ± Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'ntfrm' : 'ΔÎčÎ±ÎłÏÎ±Ï†Îź Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'ntfcopy' : 'ΑΜτÎčÎłÏÎ±Ï†Îź Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'ntfmove' : 'ΜΔταÎșÎŻÎœÎ·ÏƒÎ· Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'ntfprepare' : 'Î ÏÎżÎ”Ï„ÎżÎčÎŒÎ±ÏƒÎŻÎ± αΜτÎčÎłÏÎ±Ï†ÎźÏ‚ Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'ntfrename' : 'ÎœÎ”Ï„ÎżÎœÎżÎŒÎ±ÏƒÎŻÎ± Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'ntfupload' : 'ΑΜέÎČασΌα Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'ntfdownload' : 'ΜΔταφόρτωση Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'ntfsave' : 'Î‘Ï€ÎżÎžÎźÎșΔυση Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'ntfarchive' : 'ΔηΌÎčÎżÏ…ÏÎłÎŻÎ± Î±ÏÏ‡Î”ÎŻÎżÏ…', 'ntfextract' : 'Î•ÎŸÎ±ÎłÏ‰ÎłÎź Î±ÏÏ‡Î”ÎŻÏ‰Îœ από Ï„Îż archive', 'ntfsearch' : 'Î‘ÎœÎ±Î¶ÎźÏ„Î·ÏƒÎ· Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'ÎŁÏÏƒÏ„Î·ÎŒÎ± Î±Ï€Î±ÏƒÏ‡ÎżÎ»Î·ÎŒÎ­ÎœÎż>_<', 'ntfloadimg' : 'Ίόρτωση ΔÎčÎșόΜας', 'ntfnetmount' : 'Ίόρτωση ÎŽÎčÎșτυαÎșÎżÏ ÎŽÎŻÏƒÎșÎżÏ…', // added 18.04.2012 'ntfdim' : 'Acquiring image dimension', /************************************ dates **********************************/ 'dateUnknown' : 'ÎŹÎłÎœÏ‰ÏƒÏ„Îż', 'Today' : 'ÎŁÎźÎŒÎ”ÏÎ±', 'Yesterday' : 'ΧΞές', 'msJan' : 'ΙαΜ', 'msFeb' : 'ΊΔÎČ', 'msMar' : 'Μαρ', 'msApr' : 'Απρ', 'msMay' : 'Μαϊ', 'msJun' : 'Î™ÎżÏ…Îœ', 'msJul' : 'Î™ÎżÏ…Î»', 'msAug' : 'Î‘Ï…Îł', 'msSep' : 'ÎŁÎ”Ï€', 'msOct' : 'ΟÎșτ', 'msNov' : 'ÎÎżÎ”ÎŒ', 'msDec' : 'ΔΔÎș', 'January' : 'Î™Î±ÎœÎżÏ…ÎŹÏÎčÎżÏ‚', 'February' : 'ΊΔÎČÏÎżÏ…ÎŹÏÎčÎżÏ‚', 'March' : 'ÎœÎŹÏÏ„ÎčÎżÏ‚', 'April' : 'Î‘Ï€ÏÎŻÎ»ÎčÎżÏ‚', 'May' : 'ÎœÎŹÏŠÎżÏ‚', 'June' : 'Î™ÎżÏÎœÎčÎżÏ‚', 'July' : 'Î™ÎżÏÎ»ÎčÎżÏ‚', 'August' : 'Î‘ÏÎłÎżÏ…ÏƒÏ„ÎżÏ‚', 'September' : 'ÎŁÎ”Ï€Ï„Î­ÎŒÎČρÎčÎżÏ‚', 'October' : 'ΟÎșτώÎČρÎčÎżÏ‚', 'November' : 'ÎÎżÎ­ÎŒÎČρÎčÎżÏ‚', 'December' : 'ΔΔÎșέΌÎČρÎčÎżÏ‚', 'Sunday' : 'ΚυρÎčαÎșÎź', 'Monday' : 'ΔΔυτέρα', 'Tuesday' : 'Î€ÏÎŻÏ„Î·', 'Wednesday' : 'Î€Î”Ï„ÎŹÏÏ„Î·', 'Thursday' : 'ΠέΌπτη', 'Friday' : 'ΠαρασÎșÎ”Ï…Îź', 'Saturday' : 'ÎŁÎŹÎČÎČÎ±Ï„Îż', 'Sun' : 'Κυρ', 'Mon' : 'ΔΔυ', 'Tue' : '΀ρ', 'Wed' : '΀Δτ', 'Thu' : 'ΠΔΌ', 'Fri' : 'Παρ', 'Sat' : 'ΣαÎČ', /******************************** sort variants ********************************/ 'sortname' : 'ÎșÎ±Ï„ÎŹ ÏŒÎœÎżÎŒÎ±', 'sortkind' : 'ÎșÎ±Ï„ÎŹ Î”ÎŻÎŽÎżÏ‚', 'sortsize' : 'ÎșÎ±Ï„ÎŹ ÎŒÎ­ÎłÎ”ÎžÎżÏ‚', 'sortdate' : 'ÎșÎ±Ï„ÎŹ Î·ÎŒÎ”ÏÎżÎŒÎ·ÎœÎŻÎ±', 'sortFoldersFirst' : 'Πρώτα ÎżÎč Ï†ÎŹÎșΔλοÎč', // added 22.06.2012 /********************************** messages **********************************/ 'confirmReq' : 'ΑπαÎčÏ„Î”ÎŻÏ„Î±Îč ΔπÎčÎČΔÎČÎ±ÎŻÏ‰ÏƒÎ·', 'confirmRm' : 'Î•ÎŻÏƒÏ„Î” ÏƒÎŻÎłÎżÏ…ÏÎżÎč πως ΞέλΔτΔ Μα ÎŽÎčÎ±ÎłÏÎŹÏˆÎ”Ï„Î” τα Î±ÏÏ‡Î”ÎŻÎ±?
      ΟÎč Î±Î»Î»Î±ÎłÎ­Ï‚ Ξα Î”ÎŻÎœÎ±Îč ΌόΜÎčΌΔς!', 'confirmRepl' : 'ΑΜτÎčÎșÎ±Ï„ÎŹÏƒÏ„Î±ÏƒÎ· Ï„ÎżÏ… παλÎčÎżÏ Î±ÏÏ‡Î”ÎŻÎżÏ… ΌΔ Ï„Îż ÎœÎ­Îż?', 'apllyAll' : 'Î•Ï†Î±ÏÎŒÎżÎłÎź σΔ όλα', 'name' : 'ÎŒÎœÎżÎŒÎ±', 'size' : 'ÎœÎ­ÎłÎ”ÎžÎżÏ‚', 'perms' : 'ΔÎčÎșαÎčώΌατα', 'modify' : 'Î€ÏÎżÏ€ÎżÏ€ÎżÎčΟΞηÎșΔ', 'kind' : 'Î•ÎŻÎŽÎżÏ‚', 'read' : 'Î±ÎœÎŹÎłÎœÏ‰ÏƒÎ·', 'write' : 'Î”ÎłÎłÏÎ±Ï†Îź', 'noaccess' : 'ΎΔΜ Ï…Ï€ÎŹÏÏ‡Î”Îč πρόσÎČαση', 'and' : 'ÎșαÎč', 'unknown' : 'ÎŹÎłÎœÏ‰ÏƒÏ„Îż', 'selectall' : 'ΕπÎčλογΟ όλωΜ', 'selectfiles' : 'ΕπÎčλογΟ Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'selectffile' : 'ΕπÎčλογΟ Ï€ÏÏŽÏ„ÎżÏ… Î±ÏÏ‡Î”ÎŻÎżÏ…', 'selectlfile' : 'ΕπÎčλογΟ Ï„Î”Î»Î”Ï…Ï„Î±ÎŻÎżÏ… Î±ÏÏ‡Î”ÎŻÎżÏ…', 'viewlist' : 'Î ÏÎżÎČολΟ Î»ÎŻÏƒÏ„Î±Ï‚', 'viewicons' : 'Î ÏÎżÎČολΟ ΔÎčÎșÎżÎœÎčÎŽÎŻÏ‰Îœ', 'places' : 'Î€ÎżÏ€ÎżÎžÎ”ÏƒÎŻÎ”Ï‚', 'calc' : 'Î„Ï€ÎżÎ»ÎżÎłÎčσΌός', 'path' : 'ΔÎčÎ±ÎŽÏÎżÎŒÎź', 'aliasfor' : 'ÎšÎ”Ï…ÎŽÏŽÎœÏ…ÎŒÎż ÎłÎčα', 'locked' : 'ΚλΔÎčÎŽÏ‰ÎŒÎ­ÎœÎż', 'dim' : 'ΔÎčÎ±ÏƒÏ„ÎŹÏƒÎ”Îčς', 'files' : 'Î‘ÏÏ‡Î”ÎŻÎ±', 'folders' : 'ΊΏÎșΔλοÎč', 'items' : 'ΑΜτÎčÎșÎ”ÎŻÎŒÎ”ÎœÎ±', 'yes' : 'ΜαÎč', 'no' : 'όχÎč', 'link' : 'ÎŁÏÎœÎŽÎ”ÏƒÎŒÎżÏ‚', 'searcresult' : 'Î‘Ï€ÎżÏ„Î”Î»Î­ÏƒÎŒÎ±Ï„Î± Î±ÎœÎ±Î¶ÎźÏ„Î·ÏƒÎ·Ï‚', 'selected' : 'ΔπÎčÎ»Î”ÎłÎŒÎ­ÎœÎ± αΜτÎčÎșÎ”ÎŻÎŒÎ”ÎœÎ±', 'about' : 'ÎŁÏ‡Î”Ï„ÎčÎșÎŹ', 'shortcuts' : 'ÎŁÏ…ÎœÏ„ÎżÎŒÎ”ÏÏƒÎ”Îčς', 'help' : 'ΒοΟΞΔÎčα', 'webfm' : 'Î”ÏÎłÎ±Î»Î”ÎŻÎż ÎŽÎčÎ±Ï‡Î”ÎŻÏÎčσης Î±ÏÏ‡Î”ÎŻÏ‰Îœ από Ï„Îż web', 'ver' : 'ΈÎșÎŽÎżÏƒÎ·', 'protocolver' : 'έÎșÎŽÎżÏƒÎ· Ï€ÏÏ‰Ï„ÎżÎșÏŒÎ»Î»ÎżÏ…', 'homepage' : 'ΣΔλίΎα Ï„ÎżÏ… project', 'docs' : '΀ΔÎșÎŒÎ·ÏÎŻÏ‰ÏƒÎ· (documentation)', 'github' : 'ÎšÎŹÎœÏ„Î” Όας fork ÏƒÏ„Îż Github', 'twitter' : 'ΑÎșÎżÎ»ÎżÏ…ÎžÎźÏƒÏ„Î” Όας ÏƒÏ„Îż twitter', 'facebook' : 'Î’ÏÎ”ÎŻÏ„Î” Όας ÏƒÏ„Îż facebook', 'team' : 'ÎŸÎŒÎŹÎŽÎ±', 'chiefdev' : 'ÎșύρÎčÎżÏ‚ Ï€ÏÎżÎłÏÎ±ÎŒÎŒÎ±Ï„ÎčÏƒÏ„ÎźÏ‚', 'developer' : 'Ï€ÏÎżÎłÏÎ±ÎŒÎŒÎ±Ï„ÎčÏƒÏ„ÎźÏ‚', 'contributor' : 'συΜΔÎčÏƒÏ†ÎżÏÎŹ', 'maintainer' : 'ÏƒÏ…ÎœÏ„Î·ÏÎ·Ï„ÎźÏ‚', 'translator' : 'ÎŒÎ”Ï„Î±Ï†ÏÎ±ÏƒÏ„ÎźÏ‚', 'icons' : 'ΕÎčÎșÎżÎœÎŻÎŽÎčα', 'dontforget' : 'ÎșαÎč ΌηΜ ÎŸÎ”Ï‡ÎŹÏƒÎ”Îčς τηΜ πΔτσέτα ÏƒÎżÏ…!', 'shortcutsof' : 'ΟÎč ÏƒÏ…ÎœÏ„ÎżÎŒÎ”ÏÏƒÎ”Îčς Î”ÎŻÎœÎ±Îč Î±Ï€Î”ÎœÎ”ÏÎłÎżÏ€ÎżÎčηΌέΜΔς', 'dropFiles' : 'ÎšÎŹÎœÏ„Î” drop τα Î±ÏÏ‡Î”ÎŻÎ± ΔΎώ', 'or' : 'Îź', 'selectForUpload' : 'ΕπÎčλογΟ Î±ÏÏ‡Î”ÎŻÏ‰Îœ ÎłÎčα αΜέÎČασΌα', 'moveFiles' : 'ΜΔταÎșÎŻÎœÎ·ÏƒÎ· Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'copyFiles' : 'ΑΜτÎčÎłÏÎ±Ï†Îź Î±ÏÏ‡Î”ÎŻÏ‰Îœ', 'rmFromPlaces' : 'ΑΜτÎčÎłÏÎ±Ï†Îź από Ï„ÎżÏ€ÎżÎžÎ”ÏƒÎŻÎ”Ï‚', 'aspectRatio' : 'Î‘ÎœÎ±Î»ÎżÎłÎŻÎ± ÎŽÎčÎ±ÏƒÏ„ÎŹÏƒÎ”Ï‰Îœ', 'scale' : 'ÎšÎ»ÎŻÎŒÎ±Îșα', 'width' : 'Î Î»ÎŹÏ„ÎżÏ‚', 'height' : 'ÎŽÏˆÎżÏ‚', 'resize' : 'ΑλλαγΟ ÎŒÎ”ÎłÎ­ÎžÎżÏ…Ï‚', 'crop' : 'Crop', 'rotate' : 'ΠΔρÎčÏƒÏ„ÏÎżÏ†Îź', 'rotate-cw' : 'ΠΔρÎčÏƒÏ„ÏÎżÏ†Îź ÎșÎ±Ï„ÎŹ 90 ÎČÎ±ÎžÎŒÎżÏÏ‚ CW', 'rotate-ccw' : 'ΠΔρÎčÏƒÏ„ÏÎżÏ†Îź ÎșÎ±Ï„ÎŹ 90 ÎČÎ±ÎžÎŒÎżÏÏ‚ CCW', 'degree' : 'ΒαΞΌός', 'netMountDialogTitle' : 'ÎŠÎżÏÏ„ÏŽÏƒÏ„Î” ÎŽÎčÎșτυαÎșό ÎŽÎŻÏƒÎșÎż', // added 18.04.2012 'protocol' : 'ΠρωτόÎșολλο', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Î§ÏÎźÏƒÏ„Î·Ï‚', // added 18.04.2012 'pass' : 'ΚωΎÎčÎșός', // added 18.04.2012 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Î†ÎłÎœÏ‰ÏƒÏ„Îż', 'kindFolder' : 'ΊΏÎșÎ”Î»ÎżÏ‚', 'kindAlias' : 'ÎšÎ”Ï…ÎŽÏŽÎœÏ…ÎŒÎż (alias)', 'kindAliasBroken' : 'Μη έγÎșÏ…ÏÎż ÏˆÎ”Ï…ÎŽÏŽÎœÏ…ÎŒÎż', // applications 'kindApp' : 'Î•Ï†Î±ÏÎŒÎżÎłÎź', 'kindPostscript' : 'ÎˆÎłÎłÏÎ±Ï†Îż Postscript', 'kindMsOffice' : 'ÎˆÎłÎłÏÎ±Ï†Îż Microsoft Office', 'kindMsWord' : 'ÎˆÎłÎłÏÎ±Ï†Îż Microsoft Word', 'kindMsExcel' : 'ÎˆÎłÎłÏÎ±Ï†Îż Microsoft Excel', 'kindMsPP' : 'Î Î±ÏÎżÏ…ÏƒÎŻÎ±ÏƒÎ· Microsoft Powerpoint', 'kindOO' : 'ÎˆÎłÎłÏÎ±Ï†Îż Open Office', 'kindAppFlash' : 'Î•Ï†Î±ÏÎŒÎżÎłÎź Flash', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Î‘ÏÏ‡Î”ÎŻÎż Bittorrent', 'kind7z' : 'Î‘ÏÏ‡Î”ÎŻÎż 7z', 'kindTAR' : 'Î‘ÏÏ‡Î”ÎŻÎż TAR', 'kindGZIP' : 'Î‘ÏÏ‡Î”ÎŻÎż GZIP', 'kindBZIP' : 'Î‘ÏÏ‡Î”ÎŻÎż BZIP', 'kindXZ' : 'Î‘ÏÏ‡Î”ÎŻÎż XZ', 'kindZIP' : 'Î‘ÏÏ‡Î”ÎŻÎż ZIP', 'kindRAR' : 'Î‘ÏÏ‡Î”ÎŻÎż RAR', 'kindJAR' : 'Î‘ÏÏ‡Î”ÎŻÎż Java JAR', 'kindTTF' : 'Î“ÏÎ±ÎŒÎŒÎ±Ï„ÎżÏƒÎ”ÎčÏÎŹ True Type', 'kindOTF' : 'Î“ÏÎ±ÎŒÎŒÎ±Ï„ÎżÏƒÎ”ÎčÏÎŹ Open Type', 'kindRPM' : 'ΠαÎșÎ­Ï„Îż RPM', // texts 'kindText' : 'ÎˆÎłÎłÏÎ±Ï†Îż ÎșΔÎčÎŒÎ­ÎœÎżÏ…', 'kindTextPlain' : 'Απλό ÎșÎ”ÎŻÎŒÎ”ÎœÎż', 'kindPHP' : 'ΚώΎÎčÎșας PHP', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'ÎˆÎłÎłÏÎ±Ï†Îż HTML', 'kindJS' : 'ΚώΎÎčÎșας Javascript', 'kindRTF' : 'Rich Text Format', 'kindC' : 'ΚώΎÎčÎșας C', 'kindCHeader' : 'ΚώΎÎčÎșας ÎșÎ”Ï†Î±Î»ÎŻÎŽÎ±Ï‚ C', 'kindCPP' : 'ΚώΎÎčÎșας C++', 'kindCPPHeader' : 'ΚώΎÎčÎșας ÎșÎ”Ï†Î±Î»ÎŻÎŽÎ±Ï‚ C++', 'kindShell' : 'Unix shell script', 'kindPython' : 'ΚώΎÎčÎșας Python', 'kindJava' : 'ΚώΎÎčÎșας Java', 'kindRuby' : 'ΚώΎÎčÎșας Ruby', 'kindPerl' : 'Perl script', 'kindSQL' : 'ΚώΎÎčÎșας SQL', 'kindXML' : 'ÎˆÎłÎłÏÎ±Ï†Îż XML', 'kindAWK' : 'ΚώΎÎčÎșας AWK', 'kindCSV' : '΀ÎčΌές χωρÎčσΌέΜΔς ΌΔ ÎșόΌΌα', 'kindDOCBOOK' : 'ÎˆÎłÎłÏÎ±Ï†Îż Docbook XML', // images 'kindImage' : 'ΕÎčÎșόΜα', 'kindBMP' : 'ΕÎčÎșόΜα BMP', 'kindJPEG' : 'ΕÎčÎșόΜα JPEG', 'kindGIF' : 'ΕÎčÎșόΜα GIF', 'kindPNG' : 'ΕÎčÎșόΜα PNG', 'kindTIFF' : 'ΕÎčÎșόΜα TIFF', 'kindTGA' : 'ΕÎčÎșόΜα TGA', 'kindPSD' : 'ΕÎčÎșόΜα Adobe Photoshop', 'kindXBITMAP' : 'ΕÎčÎșόΜα X bitmap', 'kindPXM' : 'ΕÎčÎșόΜα Pixelmator', // media 'kindAudio' : 'Î‘ÏÏ‡Î”ÎŻÎ± ÎźÏ‡ÎżÏ…', 'kindAudioMPEG' : 'Î‰Ï‡ÎżÏ‚ MPEG', 'kindAudioMPEG4' : 'ΕÎčÎșόΜα MPEG-4', 'kindAudioMIDI' : 'ΕÎčÎșόΜα MIDI', 'kindAudioOGG' : 'ΕÎčÎșόΜα Ogg Vorbis', 'kindAudioWAV' : 'ΕÎčÎșόΜα WAV', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Î‘ÏÏ‡Î”ÎŻÎ± media', 'kindVideoDV' : '΀αÎčÎœÎŻÎ± DV', 'kindVideoMPEG' : '΀αÎčÎœÎŻÎ± MPEG', 'kindVideoMPEG4' : '΀αÎčÎœÎŻÎ± MPEG-4', 'kindVideoAVI' : '΀αÎčÎœÎŻÎ± AVI', 'kindVideoMOV' : '΀αÎčÎœÎŻÎ± Quick Time', 'kindVideoWM' : '΀αÎčÎœÎŻÎ± Windows Media', 'kindVideoFlash' : '΀αÎčÎœÎŻÎ± flash', 'kindVideoMKV' : '΀αÎčÎœÎŻÎ± matroska', 'kindVideoOGG' : '΀αÎčÎœÎŻÎ± ogg' } }; })); application/library/js/i18n/elfinder.tr.js000064400000103200147577724760014506 0ustar00/** * TĂŒrkçe translation * @author I.Taskinoglu & A.Kaya * @author Abdullah ELEN * @author Osman KAYAN * @author Ali KAYAN * @author Cengiz AKCAN cengiz@vobo.company * @version 2022-05-08 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.tr = { translator : 'I.Taskinoglu & A.Kaya <alikaya@armsyazilim.com>, Abdullah ELEN <abdullahelen@msn.com>, Osman KAYAN <osmnkayan@gmail.com>, alikayan95@gmail.com, Cengiz AKCAN cengiz@vobo.company, Ali KAYAN <alikayan95@gmail.com>', language : 'TĂŒrkçe', direction : 'ltr', dateFormat : 'd.m.Y H:i', // will show like: 08.05.2022 21:53 fancyDateFormat : '$1 H:i', // will show like: BugĂŒn 21:53 nonameDateFormat : 'ymd-His', // noname upload will show like: 220508-215305 messages : { /********************************** errors **********************************/ 'error' : 'Hata', 'errUnknown' : 'Bilinmeyen hata.', 'errUnknownCmd' : 'Bilinmeyen komut.', 'errJqui' : 'Geçersiz jQuery UI yapılandırması. Seçilebilir, sĂŒrĂŒkle ve bırak bileƟenlerini içermelidir.', 'errNode' : 'elFinder, DOM Element\'ini oluƟturması gerekir.', 'errURL' : 'Geçersiz elFinder yapılandırması! URL seçeneği ayarlı değil.', 'errAccess' : 'EriƟim engellendi.', 'errConnect' : 'Sunucuya bağlanamıyor.', 'errAbort' : 'Bağlantı durduruldu.', 'errTimeout' : 'Bağlantı zaman aĆŸÄ±mı.', 'errNotFound' : 'Sunucu bulunamadı.', 'errResponse' : 'Geçersiz sunucu yanıtı.', 'errConf' : 'Geçersiz sunucu yapılandırması.', 'errJSON' : 'PHP JSON modĂŒlĂŒ kurulu değil.', 'errNoVolumes' : 'Okunabilir birimler mevcut değil.', 'errCmdParams' : '"$1" komutu için geçersiz parametre.', 'errDataNotJSON' : 'Bu veri JSON formatında değil.', 'errDataEmpty' : 'BoƟ veri.', 'errCmdReq' : 'Sunucu isteği için komut adı gerekli.', 'errOpen' : '"$1" açılamıyor.', 'errNotFolder' : 'Bu nesne bir klasör değil.', 'errNotFile' : 'Bu nesne bir dosya değil.', 'errRead' : '"$1" okunamıyor.', 'errWrite' : '"$1" yazılamıyor.', 'errPerm' : 'Yetki engellendi.', 'errLocked' : '"$1" kilitli. Bu nedenle taĆŸÄ±ma, yeniden adlandırma veya kaldırma yapılamıyor.', 'errExists' : '"$1" adında bir dosya zaten var.', 'errInvName' : 'Geçersiz dosya ismi.', 'errInvDirname' : 'Geçersiz klasör ismi', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Klasör bulunamıyor.', 'errFileNotFound' : 'Dosya bulunamadı.', 'errTrgFolderNotFound' : 'Hedef klasör "$1" bulunamadı.', 'errPopup' : 'Tarayıcı popup penceresi açmayı engelledi. Tarayıcı ayarlarından dosya açmayı aktif hale getirin.', 'errMkdir' : 'Klasör oluƟturulamıyor "$1".', 'errMkfile' : '"$1" dosyası oluƟturulamıyor.', 'errRename' : '"$1" yeniden adlandırma yapılamıyor.', 'errCopyFrom' : '"$1" biriminden dosya kopyalamaya izin verilmedi.', 'errCopyTo' : '"$1" birimine dosya kopyalamaya izin verilmedi.', 'errMkOutLink' : 'Kök birim dÄ±ĆŸÄ±nda bir bağlantı oluƟturulamıyor', // from v2.1 added 03.10.2015 'errUpload' : 'Dosya yĂŒkleme hatası.', // old name - errUploadCommon 'errUploadFile' : '"$1" dosya yĂŒklenemedi.', // old name - errUpload 'errUploadNoFiles' : 'YĂŒklenecek dosya bulunamadı.', 'errUploadTotalSize' : 'Veri izin verilen boyuttan bĂŒyĂŒk.', // old name - errMaxSize 'errUploadFileSize' : 'Dosya izin verilen boyuttan bĂŒyĂŒk.', // old name - errFileMaxSize 'errUploadMime' : 'Dosya tĂŒrĂŒne izin verilmedi.', 'errUploadTransfer' : '"$1" transfer hatası.', 'errUploadTemp' : 'YĂŒkleme için geçici dosya yapılamıyor.', // from v2.1 added 26.09.2015 'errNotReplace' : '"$1" nesnesi bu konumda zaten var ve baƟka tĂŒrde nesne ile değiƟtirilemez.', // new 'errReplace' : 'DeğiƟiklik yapılamıyor "$1".', 'errSave' : '"$1" kaydedilemiyor.', 'errCopy' : '"$1" kopyalanamıyor.', 'errMove' : '"$1" taĆŸÄ±namıyor.', 'errCopyInItself' : '"$1" kendi içine kopyalanamaz.', 'errRm' : '"$1" kaldırılamıyor.', 'errTrash' : 'Çöp kutusuna taĆŸÄ±namıyor.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Kaynak dosya(lar) kaldırılamıyor.', 'errExtract' : '"$1" kaynağından dosyalar çıkartılamıyor.', 'errArchive' : 'ArƟiv oluƟturulamıyor.', 'errArcType' : 'Desteklenmeyen arƟiv tĂŒrĂŒ.', 'errNoArchive' : 'Dosya arƟiv değil veya desteklenmeyen arƟiv tĂŒrĂŒ.', 'errCmdNoSupport' : 'Sunucu bu komutu desteklemiyor.', 'errReplByChild' : '“$1” klasörĂŒ içerdiği bir Ă¶ÄŸe tarafından değiƟtirilemez.', 'errArcSymlinks' : 'Sembolik bağlantıları içeren arƟivlerin açılması gĂŒvenlik nedeniyle reddedildi.', // edited 24.06.2012 'errArcMaxSize' : 'ArƟiv dosyaları izin verilen maksimum boyutu aƟtı.', 'errResize' : '"$1" yeniden boyutlandırılamıyor.', 'errResizeDegree' : 'Geçersiz döndĂŒrme derecesi.', // added 7.3.2013 'errResizeRotate' : 'Resim döndĂŒrĂŒlemiyor.', // added 7.3.2013 'errResizeSize' : 'Geçersiz resim boyutu.', // added 7.3.2013 'errResizeNoChange' : 'Resim boyutu değiƟtirilemez.', // added 7.3.2013 'errUsupportType' : 'Desteklenmeyen dosya tĂŒrĂŒ.', 'errNotUTF8Content' : 'Dosya "$1" UTF-8 olmadığından dĂŒzenlenemez.', // added 9.11.2011 'errNetMount' : '"$1" bağlanamadı.', // added 17.04.2012 'errNetMountNoDriver' : 'Desteklenmeyen protokol.', // added 17.04.2012 'errNetMountFailed' : 'Bağlama hatası.', // added 17.04.2012 'errNetMountHostReq' : 'Sunucu gerekli.', // added 18.04.2012 'errSessionExpires' : 'Uzun sĂŒre iƟlem yapılmadığından oturumunuz sonlandı.', 'errCreatingTempDir' : 'Geçici dizin oluƟturulamıyor: "$1"', 'errFtpDownloadFile' : 'Dosya FTP: "$1" adresinden indirilemiyor.', 'errFtpUploadFile' : 'Dosya FTP: "$1" adresine yĂŒklenemiyor.', 'errFtpMkdir' : 'FTP: "$1" ĂŒzerinde uzak dizin oluƟturulamıyor.', 'errArchiveExec' : '"$1" Dosyalarında arƟivlenirken hata oluƟtu.', 'errExtractExec' : '"$1" Dosyaları arƟivden çıkartılırken hata oluƟtu.', 'errNetUnMount' : 'Bağlantı kaldırılamıyor.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'UTF-8\'e dönĂŒĆŸtĂŒrĂŒlemez.', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Klasör yĂŒkleyebilmek için daha modern bir tarayıcıya ihtiyacınız var.', // from v2.1 added 26.6.2015 'errSearchTimeout' : '"$1" araması zaman aĆŸÄ±mına uğradı. Kısmi arama sonuçları listeleniyor.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Yeniden yetkilendirme gerekiyor.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Maksimum seçilebilir öge sayısı $1 adettir', // from v2.1.17 added 17.10.2016 'errRestore' : 'Çöp kutusundan geri yĂŒklenemiyor. Geri yĂŒkleme notkası belirlenemiyor.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editör bu dosya tĂŒrĂŒnĂŒ bulamıyor.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Sunucu tarafında beklenilmeyen bir hata oluƟtu.', // from v2.1.25 added 16.6.2017 'errEmpty' : '"$1" klasörĂŒ boƟaltılamıyor.', // from v2.1.25 added 22.6.2017 'moreErrors' : '"$1" veya daha fazla hata', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'Tek seferde 1$\'a kadar klasör oluƟturabilirsiniz.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'ArƟiv oluƟtur', 'cmdback' : 'Geri', 'cmdcopy' : 'Kopyala', 'cmdcut' : 'Kes', 'cmddownload' : 'Ä°ndir', 'cmdduplicate' : 'Çoğalt', 'cmdedit' : 'Dosyayı dĂŒzenle', 'cmdextract' : 'ArƟivden dosyaları çıkart', 'cmdforward' : 'Ä°leri', 'cmdgetfile' : 'Dosyaları seç', 'cmdhelp' : 'Bu yazılım hakkında', 'cmdhome' : 'Anasayfa', 'cmdinfo' : 'Bilgi göster', 'cmdmkdir' : 'Yeni klasör', 'cmdmkdirin' : 'Yeni Klasör / aç', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Yeni dosya', 'cmdopen' : 'Aç', 'cmdpaste' : 'YapÄ±ĆŸtır', 'cmdquicklook' : 'Ön izleme', 'cmdreload' : 'Geri YĂŒkle', 'cmdrename' : 'Yeniden Adlandır', 'cmdrm' : 'Sil', 'cmdtrash' : 'Çöpe at', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'geri yĂŒkle', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Dosyaları bul', 'cmdup' : 'Üst dizine çık', 'cmdupload' : 'Dosyaları yĂŒkle', 'cmdview' : 'GörĂŒntĂŒle', 'cmdresize' : 'Resmi yeniden boyutlandır', 'cmdsort' : 'Sırala', 'cmdnetmount' : 'Bağlı ağ birimi', // added 18.04.2012 'cmdnetunmount': 'DevredÄ±ĆŸÄ± bırak', // from v2.1 added 30.04.2012 'cmdplaces' : 'Yerlere', // added 28.12.2014 'cmdchmod' : 'Mod değiƟtir', // from v2.1 added 20.6.2015 'cmdopendir' : 'Klasör aç', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'SĂŒtun geniƟliğini sıfırla', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Tam ekran', // from v2.1.15 added 03.08.2016 'cmdmove' : 'TaĆŸÄ±', // from v2.1.15 added 21.08.2016 'cmdempty' : 'KlasörĂŒ boƟalt', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Geri al', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Yinele', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Tercihler', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'TĂŒmĂŒnĂŒ seç', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Seçimi temizle', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Diğerlerini seç', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Yeni Sekmede aç', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Ögeyi Gizle', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Kapat', 'btnSave' : 'Kaydet', 'btnRm' : 'Kaldır', 'btnApply' : 'Uygula', 'btnCancel' : 'Ä°ptal', 'btnNo' : 'Hayır', 'btnYes' : 'Evet', 'btnMount' : 'Bağla', // added 18.04.2012 'btnApprove': 'Git $1 & onayla', // from v2.1 added 26.04.2012 'btnUnmount': 'Bağlantıyı kes', // from v2.1 added 30.04.2012 'btnConv' : 'DönĂŒĆŸtĂŒr', // from v2.1 added 08.04.2014 'btnCwd' : 'Buraya', // from v2.1 added 22.5.2015 'btnVolume' : 'Birim', // from v2.1 added 22.5.2015 'btnAll' : 'Hepsi', // from v2.1 added 22.5.2015 'btnMime' : 'MIME TĂŒrĂŒ', // from v2.1 added 22.5.2015 'btnFileName':'Dosya adı', // from v2.1 added 22.5.2015 'btnSaveClose': 'Kaydet & Kapat', // from v2.1 added 12.6.2015 'btnBackup' : 'Yedekle', // fromv2.1 added 28.11.2015 'btnRename' : 'Yeniden adlandır', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Yeniden adlandır(TĂŒmĂŒ)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Önceki ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Sonraki ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Farklı Kaydet', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Klasör Aç', 'ntffile' : 'Dosya Aç', 'ntfreload' : 'Klasör içeriğini yeniden yĂŒkle', 'ntfmkdir' : 'Dizin oluƟturuluyor', 'ntfmkfile' : 'Dosyaları oluƟturma', 'ntfrm' : 'Dosyaları sil', 'ntfcopy' : 'Dosyaları kopyala', 'ntfmove' : 'Dosyaları taĆŸÄ±', 'ntfprepare' : 'Dosyaları kopyalamaya hazırla', 'ntfrename' : 'Dosyaları yeniden adlandır', 'ntfupload' : 'Dosyalar yĂŒkleniyor', 'ntfdownload' : 'Dosyalar indiriliyor', 'ntfsave' : 'Dosyalar kaydediliyor', 'ntfarchive' : 'ArƟiv oluƟturuluyor', 'ntfextract' : 'ArƟivden dosyalar çıkartılıyor', 'ntfsearch' : 'Dosyalar aranıyor', 'ntfresize' : 'Resimler boyutlandırılıyor', 'ntfsmth' : 'İƟlem yapılıyor', 'ntfloadimg' : 'Resim yĂŒkleniyor', 'ntfnetmount' : 'Ağ birimine bağlanılıyor', // added 18.04.2012 'ntfnetunmount': 'Ağ birimi bağlantısı kesiliyor', // from v2.1 added 30.04.2012 'ntfdim' : 'Resim boyutu alınıyor', // added 20.05.2013 'ntfreaddir' : 'Klasör bilgisi okunuyor', // from v2.1 added 01.07.2013 'ntfurl' : 'Bağlantının URL\'si alınıyor', // from v2.1 added 11.03.2014 'ntfchmod' : 'Dosya modu değiƟtiriliyor', // from v2.1 added 20.6.2015 'ntfpreupload': 'YĂŒklenen dosya ismi doğrulanıyor', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Ä°ndirilecek dosya oluƟturuluyor', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Dosya yolu bilgileri alınıyor', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'YĂŒklenen dosya iƟleniyor', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Çöp kutusuna atma', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Çöp kutusundan geri yĂŒkle', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Hedef klasör kontrol ediliyor', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Önceki iƟlemi geri alma', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Önceki geri almayı tekrarlama', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'İçeriği kontrol ediniz', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Çöp', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'Bilinmiyor', 'Today' : 'BugĂŒn', 'Yesterday' : 'DĂŒn', 'msJan' : 'Oca', 'msFeb' : 'ƞub', 'msMar' : 'Mar', 'msApr' : 'Nis', 'msMay' : 'May', 'msJun' : 'Haz', 'msJul' : 'Tem', 'msAug' : 'Ağu', 'msSep' : 'Eyl', 'msOct' : 'Ekm', 'msNov' : 'Kas', 'msDec' : 'Ara', 'January' : 'Ocak', 'February' : 'ƞubat', 'March' : 'Mart', 'April' : 'Nisan', 'May' : 'Mayıs', 'June' : 'Haziran', 'July' : 'Temmuz', 'August' : 'Ağustos', 'September' : 'EylĂŒl', 'October' : 'Ekim', 'November' : 'Kasım', 'December' : 'Aralık', 'Sunday' : 'Pazar', 'Monday' : 'Pazartesi', 'Tuesday' : 'Salı', 'Wednesday' : 'ÇarƟamba', 'Thursday' : 'PerƟembe', 'Friday' : 'Cuma', 'Saturday' : 'Cumartesi', 'Sun' : 'Paz', 'Mon' : 'Pzt', 'Tue' : 'Sal', 'Wed' : 'Çar', 'Thu' : 'Per', 'Fri' : 'Cum', 'Sat' : 'Cmt', /******************************** sort variants ********************************/ 'sortname' : 'Ada göre', 'sortkind' : 'TĂŒre göre', 'sortsize' : 'Boyuta göre', 'sortdate' : 'Tarihe göre', 'sortFoldersFirst' : 'Önce klasörler', 'sortperm' : 'izinlere göre', // from v2.1.13 added 13.06.2016 'sortmode' : 'moduna göre', // from v2.1.13 added 13.06.2016 'sortowner' : 'sahibine göre', // from v2.1.13 added 13.06.2016 'sortgroup' : 'grubuna göre', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Ayrıca ağaç görĂŒnĂŒmĂŒ', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'YeniDosya.txt', // added 10.11.2015 'untitled folder' : 'YeniKlasor', // added 10.11.2015 'Archive' : 'YeniArsiv', // from v2.1 added 10.11.2015 'untitled file' : 'YeniDosya.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: Dosya', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Onay gerekli', 'confirmRm' : 'Dosyaları kaldırmak istediğinden emin misin?
      Bu iƟlem geri alınamaz!', 'confirmRepl' : 'Eski dosya yenisi ile değiƟtirilsin mi?', 'confirmRest' : 'Mevcut öge çöp kutusundaki ögeyle değiƟtirilsin mi?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'UTF-8 değil
      UTF-8\'e dönĂŒĆŸtĂŒrĂŒlsĂŒn mĂŒ?
      DönĂŒĆŸtĂŒrme sonrası kaydedebilmek için içeriğin UTF-8 olması gerekir.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Bu dosyanın karakter kodlaması tespit edilemedi. DĂŒzenleme için geçici olarak UTF-8\'e dönĂŒĆŸtĂŒrĂŒlmesi gerekir.
      LĂŒtfen bu dosyanın karakter kodlamasını seçin.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'DĂŒzenlenmiƟ içerik.
      DeğiƟiklikleri kaydetmek istemiyorsanız son yapılanlar kaybolacak.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Öğeleri çöp kutusuna taĆŸÄ±mak istediğinizden emin misiniz?', //from v2.1.24 added 29.4.2017 'confirmMove' : '"$1" değiƟtirmek istediğinizden emin misiniz?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'TĂŒmĂŒne uygula', 'name' : 'Ä°sim', 'size' : 'Boyut', 'perms' : 'Yetkiler', 'modify' : 'DeğiƟtirildi', 'kind' : 'TĂŒr', 'read' : 'oku', 'write' : 'yaz', 'noaccess' : 'eriƟim yok', 'and' : 've', 'unknown' : 'bilinimiyor', 'selectall' : 'TĂŒm dosyaları seç', 'selectfiles' : 'Dosya(lar)ı seç', 'selectffile' : 'Ä°lk dosyayı seç', 'selectlfile' : 'Son dosyayı seç', 'viewlist' : 'Liste görĂŒnĂŒmĂŒ', 'viewicons' : 'Simge görĂŒnĂŒmĂŒ', 'viewSmall' : 'Small iconlar', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Medium iconlar', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Large iconlar', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Extra large iconlar', // from v2.1.39 added 22.5.2018 'places' : 'Yerler', 'calc' : 'Hesapla', 'path' : 'Yol', 'aliasfor' : 'Takma adı:', 'locked' : 'Kilitli', 'dim' : 'ÖlĂ§ĂŒler', 'files' : 'Dosyalar', 'folders' : 'Klasörler', 'items' : 'Nesneler', 'yes' : 'evet', 'no' : 'hayır', 'link' : 'Bağlantı', 'searcresult' : 'Arama sonuçları', 'selected' : 'Seçili Ă¶ÄŸeler', 'about' : 'Hakkında', 'shortcuts' : 'Kısayollar', 'help' : 'Yardım', 'webfm' : 'Web dosyası yöneticisi', 'ver' : 'SĂŒrĂŒm', 'protocolver' : 'protokol sĂŒrĂŒmĂŒ', 'homepage' : 'Proje Anasayfası', 'docs' : 'Belgeler', 'github' : 'Github\'ta bizi takip edin', 'twitter' : 'Twitter\'da bizi takip edin', 'facebook' : 'Facebook\'ta bize katılın', 'team' : 'Takım', 'chiefdev' : 'geliƟtirici Ɵefi', 'developer' : 'geliƟtirici', 'contributor' : 'iƟtirakçi', 'maintainer' : 'bakıcı', 'translator' : 'çeviri', 'icons' : 'Simgeler', 'dontforget' : 've havlunuzu almayı unutmayın', 'shortcutsof' : 'Kısayollar devre dÄ±ĆŸÄ±', 'dropFiles' : 'Dosyaları buraya taĆŸÄ±', 'or' : 'veya', 'selectForUpload' : 'YĂŒklemek için dosyaları seçin', 'moveFiles' : 'Dosyaları taĆŸÄ±', 'copyFiles' : 'Dosyaları kopyala', 'restoreFiles' : 'Öğeleri geri yĂŒkle', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Yerlerinden sil', 'aspectRatio' : 'GörĂŒnĂŒm oranı', 'scale' : 'Ölçeklendir', 'width' : 'GeniƟlik', 'height' : 'YĂŒkseklik', 'resize' : 'Boyutlandır', 'crop' : 'Kırp', 'rotate' : 'DöndĂŒr', 'rotate-cw' : '90 derece sağa döndĂŒr', 'rotate-ccw' : '90 derece sola döndĂŒr', 'degree' : 'Derece', 'netMountDialogTitle' : 'Bağlı (Mount) ağ birimi', // added 18.04.2012 'protocol' : 'Protokol', // added 18.04.2012 'host' : 'Sunucu', // added 18.04.2012 'port' : 'Kapı(Port)', // added 18.04.2012 'user' : 'Kullanıcı', // added 18.04.2012 'pass' : 'ƞifre', // added 18.04.2012 'confirmUnmount' : 'Bağlantı kesilsin mi $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Dosyaları tarayıcıdan yapÄ±ĆŸtır veya bırak', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Dosyaları buraya yapÄ±ĆŸtır veya bırak', // from v2.1 added 07.04.2014 'encoding' : 'Kodlama', // from v2.1 added 19.12.2014 'locale' : 'Yerel', // from v2.1 added 19.12.2014 'searchTarget' : 'Hedef: $1', // from v2.1 added 22.5.2015 'searchMime' : 'GiriƟ MIME TĂŒrĂŒne Göre Arama', // from v2.1 added 22.5.2015 'owner' : 'Sahibi', // from v2.1 added 20.6.2015 'group' : 'Grup', // from v2.1 added 20.6.2015 'other' : 'Diğer', // from v2.1 added 20.6.2015 'execute' : 'ÇalÄ±ĆŸtır', // from v2.1 added 20.6.2015 'perm' : 'Yetki', // from v2.1 added 20.6.2015 'mode' : 'Mod', // from v2.1 added 20.6.2015 'emptyFolder' : 'Klasör boƟ', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Klasör boƟ\\A Eklemek için sĂŒrĂŒkleyin', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Klasör boƟ\\A Eklemek için basılı tutun', // from v2.1.6 added 30.12.2015 'quality' : 'Kalite', // from v2.1.6 added 5.1.2016 'autoSync' : 'Otomatik senkronizasyon', // from v2.1.6 added 10.1.2016 'moveUp' : 'Yukarı taĆŸÄ±', // from v2.1.6 added 18.1.2016 'getLink' : 'URL bağlantısı alın', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Seçili Ă¶ÄŸeler ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Klasör kimliği', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'ÇevrimdÄ±ĆŸÄ± eriƟime izin ver', // from v2.1.10 added 3.25.2016 'reAuth' : 'Yeniden kimlik doğrulaması için', // from v2.1.10 added 3.25.2016 'nowLoading' : 'ƞimdi yĂŒkleniyor...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Çoklu dosya aç', // from v2.1.12 added 5.14.2016 'openMultiConfirm': '$1 dosyalarını açmaya çalÄ±ĆŸÄ±yorsunuz. Tarayıcıda açmak istediğinizden emin misiniz?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Arama hedefinde eƟleƟen sonuç bulunamadı.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Dosya dĂŒzenleniyor.', // from v2.1.13 added 6.3.2016 'hasSelected' : '$1 Ă¶ÄŸe seçtiniz.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Panonuzda $1 Ă¶ÄŸeniz var.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Artan arama yalnızca geçerli görĂŒnĂŒmden yapılır.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Eski durumuna getir', // from v2.1.15 added 3.8.2016 'complete' : '$1 tamamlandı', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Durum menĂŒsĂŒ', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Sayfa çevir', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Disk kök dizini', // from v2.1.16 added 16.9.2016 'reset' : 'Sıfırla', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Arkaplan rengi', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Renk seçici', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Izgara', // from v2.1.16 added 4.10.2016 'enabled' : 'Etkin', // from v2.1.16 added 4.10.2016 'disabled' : 'Engelli', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Geçerli görĂŒnĂŒmde arama sonucu bulunamadı. Arama sonucunu geniƟletmek için \\APress [Enter] yapın', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Geçerli görĂŒnĂŒmde ilk harf arama sonuçları boƟ.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Metin etiketi', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 dakika kaldı', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Seçilen kodlamayla yeniden aç', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Seçilen kodlamayla kaydet', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Klasör seç', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Ä°lk arama sayfası', // from v2.1.23 added 24.3.2017 'presets' : 'Hazır ayarlar', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'çok fazla öge var çöp kutusuna atılamaz.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Metin alanı(TextArea)', // from v2.1.25 added 14.6.2017 'folderToEmpty' : '"$1" klasörĂŒnĂŒ boƟalt.', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : '"$1" klasörĂŒnde öge yok.', // from v2.1.25 added 22.6.2017 'preference' : 'Tercih', // from v2.1.26 added 28.6.2017 'language' : 'Dil ayarları', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Bu tarayıcıda kayıtlı ayarları baƟlat', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Araç çubuğu ayarları', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 karakter kaldı', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 satır kaldı.', // from v2.1.52 added 16.1.2020 'sum' : 'Toplam', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Kaba dosya boyutu', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Fare ile ĂŒzerine gelince diyalog Ă¶ÄŸesi odaklansın', // from v2.1.30 added 2.11.2017 'select' : 'Seç', // from v2.1.30 added 23.11.2017 'selectAction' : 'Dosya seçildiğinde iƟleme al', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Geçen sefer kullanılan editörle aç', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Zıt seçim', // from v2.1.30 added 25.11.2017 'renameMultiple' : '$1 seçilen Ă¶ÄŸeleri $2 gibi yeniden adlandırmak istediğinizden emin misiniz?
      Bu geri alınamaz!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Yığın adını değiƟtir', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Sayı', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Ön ek kele', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Son ek ekle', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Uzantıyı değiƟtir', // from v2.1.31 added 8.12.2017 'columnPref' : 'SĂŒtun ayarları (Liste görĂŒnĂŒmĂŒ)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'TĂŒm değiƟiklikler hemen arƟive yansıtılacaktır.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Herhangi bir değiƟiklik, bu birimi kaldırılıncaya kadar yansıtılmayacaktır.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Bu cihaza monte edilen aƟağıdaki birim (ler) de bağlanmamÄ±ĆŸtır. Çıkardığınızdan emin misiniz?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Seçim Bilgisi', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Dosya imza(hash) algoritmaları', // from v2.1.33 added 10.3.2018 'infoItems' : 'Ă¶ÄŸelerin bilgisi (Seçim Bilgi Paneli)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Çıkmak için tekrar basın.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Araç Çubuğu', // from v2.1.38 added 4.4.2018 'workspace' : 'ÇalÄ±ĆŸma alanı', // from v2.1.38 added 4.4.2018 'dialog' : 'Diyalog', // from v2.1.38 added 4.4.2018 'all' : 'TĂŒmĂŒ', // from v2.1.38 added 4.4.2018 'iconSize' : 'Ä°con Boyutu (Ä°con GörĂŒnĂŒmĂŒ İçin)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Maksimum dĂŒzenleyici penceresini aç', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'API ile dönĂŒĆŸĂŒm Ɵu anda mevcut olmadığından, lĂŒtfen web sitesinde dönĂŒĆŸtĂŒrĂŒn.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'DönĂŒĆŸtĂŒrmeden sonra, dönĂŒĆŸtĂŒrĂŒlen dosyayı kaydetmek için Ă¶ÄŸe URL\'si veya indirilen bir dosya ile karĆŸÄ±ya yĂŒklemeniz gerekir.', //from v2.1.40 added 8.7.2018 'convertOn' : ' $1 site çevrildi', // from v2.1.40 added 10.7.2018 'integrations' : 'Entegrasyonlar', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Bu elFinder aƟağıdaki harici hizmetlere entegre edilmiƟtir. LĂŒtfen kullanmadan önce kullanım koƟullarını, gizlilik politikasını vb. Kontrol edin.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Gizli ögeleri aç.', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Gizli ögeleri kapat.', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Gizli ögeleri aç/kapat', // from v2.1.41 added 24.7.2018 'makefileTypes' : '"Yeni dosya" ile etkinleƟtirilecek dosya tĂŒrleri', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Text dosyası tipi.', // from v2.1.41 added 7.8.2018 'add' : 'Ekle', // from v2.1.41 added 7.8.2018 'theme' : 'Tema', // from v2.1.43 added 19.10.2018 'default' : 'Varsayılan', // from v2.1.43 added 19.10.2018 'description' : 'Açıklama', // from v2.1.43 added 19.10.2018 'website' : 'Websayfası', // from v2.1.43 added 19.10.2018 'author' : 'Yazar', // from v2.1.43 added 19.10.2018 'email' : 'E-mail', // from v2.1.43 added 19.10.2018 'license' : 'Lisans', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Bu Ă¶ÄŸe kaydedilemez. DĂŒzenlemeleri kaybetmemek için PC\'nize aktarmanız gerekir.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Dosyayı seçmek için çift tıklayın.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Tam ekran modunu kullan', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Bilinmiyor', 'kindRoot' : 'SĂŒrĂŒcĂŒ Kök dizini', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Klasör', 'kindSelects' : 'Seçim', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias (Takma ad)', 'kindAliasBroken' : 'Bozuk alias', // applications 'kindApp' : 'Uygulama', 'kindPostscript' : 'Postscript dosyası', 'kindMsOffice' : 'Microsoft Office dosyası', 'kindMsWord' : 'Microsoft Word dosyası', 'kindMsExcel' : 'Microsoft Excel dosyası', 'kindMsPP' : 'Microsoft Powerpoint sunumu', 'kindOO' : 'Open Office dosyası', 'kindAppFlash' : 'Flash uygulaması', 'kindPDF' : 'PDF', 'kindTorrent' : 'Bittorrent dosyası', 'kind7z' : '7z arƟivi', 'kindTAR' : 'TAR arƟivi', 'kindGZIP' : 'GZIP arƟivi', 'kindBZIP' : 'BZIP arƟivi', 'kindXZ' : 'XZ arƟivi', 'kindZIP' : 'ZIP arƟivi', 'kindRAR' : 'RAR arƟivi', 'kindJAR' : 'Java JAR dosyası', 'kindTTF' : 'True Type fontu', 'kindOTF' : 'Open Type fontu', 'kindRPM' : 'RPM paketi', // texts 'kindText' : 'Metin dosyası', 'kindTextPlain' : 'DĂŒz metin', 'kindPHP' : 'PHP kodu', 'kindCSS' : 'CSS dosyası', 'kindHTML' : 'HTML dosyası', 'kindJS' : 'Javascript kodu', 'kindRTF' : 'Zengin Metin Belgesi', 'kindC' : 'C kodu', 'kindCHeader' : 'C baƟlık kodu', 'kindCPP' : 'C++ kodu', 'kindCPPHeader' : 'C++ baƟlık kodu', 'kindShell' : 'Unix shell scripti', 'kindPython' : 'Python kodu', 'kindJava' : 'Java kodu', 'kindRuby' : 'Ruby kodu', 'kindPerl' : 'Perl scripti', 'kindSQL' : 'SQL kodu', 'kindXML' : 'XML dosyası', 'kindAWK' : 'AWK kodu', 'kindCSV' : 'CSV', 'kindDOCBOOK' : 'Docbook XML dosyası', 'kindMarkdown' : 'Markdown dosyası', // added 20.7.2015 // images 'kindImage' : 'Resim', 'kindBMP' : 'BMP dosyası', 'kindJPEG' : 'JPEG dosyası', 'kindGIF' : 'GIF dosyası', 'kindPNG' : 'PNG dosyası', 'kindTIFF' : 'TIFF dosyası', 'kindTGA' : 'TGA dosyası', 'kindPSD' : 'Adobe Photoshop dosyası', 'kindXBITMAP' : 'X bitmap dosyası', 'kindPXM' : 'Pixelmator dosyası', // media 'kindAudio' : 'Ses ortamı', 'kindAudioMPEG' : 'MPEG ses', 'kindAudioMPEG4' : 'MPEG-4 ses', 'kindAudioMIDI' : 'MIDI ses', 'kindAudioOGG' : 'Ogg Vorbis ses', 'kindAudioWAV' : 'WAV ses', 'AudioPlaylist' : 'MP3 listesi', 'kindVideo' : 'Video ortamı', 'kindVideoDV' : 'DV video', 'kindVideoMPEG' : 'MPEG video', 'kindVideoMPEG4' : 'MPEG-4 video', 'kindVideoAVI' : 'AVI video', 'kindVideoMOV' : 'Quick Time video', 'kindVideoWM' : 'Windows Media video', 'kindVideoFlash' : 'Flash video', 'kindVideoMKV' : 'Matroska video', 'kindVideoOGG' : 'Ogg video' } }; })); application/library/js/i18n/elfinder.sk.js000064400000104305147577724760014505 0ustar00/** * Slovak translation * @author RobiNN * @author Jakub ĎuraĆĄ * @version 2021-06-10 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.sk = { translator : 'RobiNN <robo@kelcak.com>, Jakub ĎuraĆĄ <jkblmr@gmail.com>', language : 'Slovenčina', direction : 'ltr', dateFormat : 'd.m.Y H:i', // will show like: 10.06.2021 23:35 fancyDateFormat : '$1 H:i', // will show like: Dnes 23:35 nonameDateFormat : 'ymd-His', // noname upload will show like: 210610-233522 messages : { /********************************** errors **********************************/ 'error' : 'Chyba', 'errUnknown' : 'NeznĂĄma chyba.', 'errUnknownCmd' : 'NeznĂĄmy prĂ­kaz.', 'errJqui' : 'NesprĂĄvna jQuery UI konfigurĂĄcia. Selectable, draggable a droppable musia byĆ„ načítanĂ©.', 'errNode' : 'elFinder vyĆŸaduje vytvorenie DOM elementu.', 'errURL' : 'NesprĂĄvna elFinder konfigurĂĄcia! URL nie je definovanĂĄ.', 'errAccess' : 'PrĂ­stup zamietnutĂœ.', 'errConnect' : 'Nepodarilo sa pripojiĆ„ do backendu.', 'errAbort' : 'Spojenie bolo preruĆĄenĂ©.', 'errTimeout' : 'ČasovĂœ limit vyprĆĄal.', 'errNotFound' : 'Backend nenĂĄjdenĂœ.', 'errResponse' : 'NesprĂĄvna backend odpoveď.', 'errConf' : 'NesprĂĄvna backend konfigurĂĄcia.', 'errJSON' : 'PHP JSON modul nie je nainĆĄtalovanĂœ.', 'errNoVolumes' : 'Nie sĂș dostupnĂ© ĆŸiadne čitateÄŸnĂ© mĂ©dia.', 'errCmdParams' : 'NesprĂĄvne parametre pre prĂ­kaz "$1".', 'errDataNotJSON' : 'DĂĄta nie sĂș formĂĄtu JSON.', 'errDataEmpty' : 'PrĂĄzdne dĂĄta.', 'errCmdReq' : 'Backend poĆŸiadavka poĆŸaduje nĂĄzov prĂ­kazu.', 'errOpen' : 'Nie je moĆŸnĂ© otvoriĆ„ "$1".', 'errNotFolder' : 'Objekt nie je priečinok.', 'errNotFile' : 'Objekt nie je sĂșbor.', 'errRead' : 'Nie je moĆŸnĂ© prečítaĆ„ "$1".', 'errWrite' : 'Nie je moĆŸnĂ© pĂ­saĆ„ do "$1".', 'errPerm' : 'PrĂ­stup zamietnutĂœ.', 'errLocked' : '"$1" je uzamknutĂœ a nemĂŽĆŸe byĆ„ premenovanĂœ, presunutĂœ alebo odstrĂĄnenĂœ.', 'errExists' : 'PoloĆŸka s nĂĄzvom "$1" uĆŸ existuje.', 'errInvName' : 'NeplatnĂœ nĂĄzov sĂșboru.', 'errInvDirname' : 'NeplatnĂœ nĂĄzov priečinka.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Priečinok nebol nĂĄjdenĂœ.', 'errFileNotFound' : 'SĂșbor nenĂĄjdenĂœ.', 'errTrgFolderNotFound' : 'CieÄŸovĂœ priečinok "$1" sa nenaĆĄiel.', 'errPopup' : 'Prehliadač zabrĂĄnil otvoreniu vyskakovacieho okna. Pre otvorenie sĂșboru povoÄŸte vyskakovacie oknĂĄ.', 'errMkdir' : 'Nepodarilo sa vytvoriĆ„ priečinok "$1".', 'errMkfile' : 'Nepodarilo sa vytvoriĆ„ sĂșbor "$1".', 'errRename' : 'Nepodarilo sa premenovaĆ„ "$1".', 'errCopyFrom' : 'KopĂ­rovanie sĂșborov z mĂ©dia "$1" nie je povolenĂ©.', 'errCopyTo' : 'KopĂ­rovanie sĂșborov na mĂ©dium "$1" nie je povolenĂ©.', 'errMkOutLink' : 'Nie je moĆŸnĂ© vytvoriĆ„ odkaz mimo koreƈovĂ©ho zvĂ€zku.', // from v2.1 added 03.10.2015 'errUpload' : 'Chyba pri nahrĂĄvanĂ­.', // old name - errUploadCommon 'errUploadFile' : 'Nepodarilo sa nahraĆ„ "$1".', // old name - errUpload 'errUploadNoFiles' : 'Neboli nĂĄjdenĂ© ĆŸiadne sĂșbory na nahranie.', 'errUploadTotalSize' : 'DĂĄta prekračujĂș maximĂĄlnu povolenĂș veÄŸkosĆ„.', // old name - errMaxSize 'errUploadFileSize' : 'SĂșbor prekračuje maximĂĄlnu povolenĂș veÄŸkosĆ„.', // old name - errFileMaxSize 'errUploadMime' : 'NepovolenĂœ typ sĂșboru.', 'errUploadTransfer' : 'ProblĂ©m s nahrĂĄvanĂ­m "$1".', 'errUploadTemp' : 'Nepodarilo sa vytvoriĆ„ dočasnĂœ sĂșbor na nahranie.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Objekt "$1" na tomto mieste uĆŸ existuje a nemĂŽĆŸe byĆ„ nahradenĂœ objektom inĂ©ho typu.', // new 'errReplace' : 'Nie je moĆŸnĂ© nahradiĆ„ "$1".', 'errSave' : 'Nie je moĆŸnĂ© uloĆŸiĆ„ "$1".', 'errCopy' : 'Nie je moĆŸnĂ© kopĂ­rovaĆ„ "$1".', 'errMove' : 'Nie je moĆŸnĂ© preniesĆ„ "$1".', 'errCopyInItself' : 'Nie je moĆŸnĂ© kopĂ­rovaĆ„ "$1" do seba.', 'errRm' : 'Nie je moĆŸnĂ© vymazaĆ„ "$1".', 'errTrash' : 'Nie je moĆŸnĂ© presunĂșĆ„ do koĆĄa.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Nie je moĆŸnĂ© odstrĂĄniĆ„ zdrojovĂœ/Ă© sĂșbor/y.', 'errExtract' : 'Nie je moĆŸnĂ© extrahovaĆ„ sĂșbory z "$1".', 'errArchive' : 'Nie je moĆŸnĂ© vytvoriĆ„ archĂ­v.', 'errArcType' : 'NepodporovanĂœ typ archĂ­vu.', 'errNoArchive' : 'SĂșbor nie je archĂ­v alebo mĂĄ nepodporovanĂœ typ archĂ­vu.', 'errCmdNoSupport' : 'Backend nepodporuje tento prĂ­kaz.', 'errReplByChild' : 'Priečinok "$1" nemĂŽĆŸe byĆ„ nahradenĂœ poloĆŸkou, ktorĂș uĆŸ obsahuje.', 'errArcSymlinks' : 'Z bezpečnostnĂœch dĂŽvodov bolo zakĂĄzanĂ© extrahovanie archĂ­vov obsahujĂșcich symlinky, alebo sĂșborov s nepovolenĂœmi nĂĄzvami.', // edited 24.06.2012 'errArcMaxSize' : 'SĂșbory archĂ­vu prekračujĂș maximĂĄlnu povolenĂș veÄŸkosĆ„.', 'errResize' : 'Nie je moĆŸnĂ© zmeniĆ„ veÄŸkosĆ„ "$1".', 'errResizeDegree' : 'NeplatnĂœ stupeƈ otočenia.', // added 7.3.2013 'errResizeRotate' : 'Nie je moĆŸnĂ© otočiĆ„ obrĂĄzok.', // added 7.3.2013 'errResizeSize' : 'NeplatnĂĄ veÄŸkosĆ„ obrĂĄzka.', // added 7.3.2013 'errResizeNoChange' : 'VeÄŸkosĆ„ obrĂĄzku sa nezmenila.', // added 7.3.2013 'errUsupportType' : 'NepodporovanĂœ typ sĂșboru.', 'errNotUTF8Content' : 'SĂșbor "$1" nie je v UTF-8 a nemĂŽĆŸe byĆ„ upravenĂœ.', // added 9.11.2011 'errNetMount' : 'Nie je moĆŸnĂ© pripojiĆ„ "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'NepodporovanĂœ protokol.', // added 17.04.2012 'errNetMountFailed' : 'PripĂĄjanie zlyhalo.', // added 17.04.2012 'errNetMountHostReq' : 'HosĆ„ je poĆŸadovanĂœ.', // added 18.04.2012 'errSessionExpires' : 'VaĆĄa relĂĄcia vyprĆĄala kvĂŽli nečinnosti.', 'errCreatingTempDir' : 'Nepodarilo sa vytvoriĆ„ dočasnĂœ adresĂĄr: "$1"', 'errFtpDownloadFile' : 'Nie je moĆŸnĂ© stiahnuĆ„ sĂșbor z FTP: "$1"', 'errFtpUploadFile' : 'Nie je moĆŸnĂ© nahraĆ„ sĂșbor na FTP: "$1"', 'errFtpMkdir' : 'NedĂĄ sa vytvoriĆ„ vzdialenĂœ adresĂĄr na FTP: "$1"', 'errArchiveExec' : 'Chyba pri archivĂĄcii sĂșborov: "$1"', 'errExtractExec' : 'Chyba pri extrahovanĂ­ sĂșborov: "$1"', 'errNetUnMount' : 'Nepodarilo sa odpojiĆ„', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Nie je prevoditeÄŸnĂœ na UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'VyskĂșĆĄajte modernĂœ prehliadač, ak chcete nahraĆ„ priečinok.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'VyprĆĄal časovĂœ limit pri hÄŸadanĂ­ "$1". VĂœsledok vyhÄŸadĂĄvania je čiastočnĂœ.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'OpĂ€tovnĂ© povolenie je potrebnĂ©.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'MaximĂĄlny počet voliteÄŸnĂœch poloĆŸiek je $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Nepodarilo sa obnoviĆ„ z koĆĄa. CieÄŸ obnovenia nie je moĆŸnĂ© identifikovaĆ„.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor tohto typu sĂșboru nebol nĂĄjdenĂœ.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Vyskytla sa chyba na strane servera.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Nepodarilo sa vyprĂĄzdniĆ„ priečinok "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'ExistujĂș eĆĄte ďalĆĄie $1 chyby.', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'MĂŽĆŸete vytvoriĆ„ aĆŸ $1 priečinkov naraz.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'VytvoriĆ„ archĂ­v', 'cmdback' : 'SpÀƄ', 'cmdcopy' : 'KopĂ­rovaĆ„', 'cmdcut' : 'VystrihnĂșĆ„', 'cmddownload' : 'StiahnuĆ„', 'cmdduplicate' : 'DuplikovaĆ„', 'cmdedit' : 'UpraviĆ„ sĂșbor', 'cmdextract' : 'ExtrahovaĆ„ sĂșbory z archĂ­vu', 'cmdforward' : 'Ďalej', 'cmdgetfile' : 'VybraĆ„ sĂșbory', 'cmdhelp' : 'O tomto softvĂ©ri', 'cmdhome' : 'Domov', 'cmdinfo' : 'Info', 'cmdmkdir' : 'NovĂœ priečinok', 'cmdmkdirin' : 'Do novej zloĆŸky', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'NovĂœ sĂșbor', 'cmdopen' : 'OtvoriĆ„', 'cmdpaste' : 'VloĆŸiĆ„', 'cmdquicklook' : 'NĂĄhÄŸad', 'cmdreload' : 'ObnoviĆ„', 'cmdrename' : 'PremenovaĆ„', 'cmdrm' : 'VymazaĆ„', 'cmdtrash' : 'Do koĆĄa', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'ObnoviĆ„', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'NĂĄjsĆ„ sĂșbory', 'cmdup' : 'PrejsĆ„ do nadradenĂ©ho priečinka', 'cmdupload' : 'NahraĆ„ sĂșbory', 'cmdview' : 'PozrieĆ„', 'cmdresize' : 'ZmeniĆ„ veÄŸkosĆ„ obrĂĄzku', 'cmdsort' : 'ZoradiĆ„', 'cmdnetmount' : 'PripojiĆ„ sieĆ„ovĂ© mĂ©dium', // added 18.04.2012 'cmdnetunmount': 'OdpojiĆ„', // from v2.1 added 30.04.2012 'cmdplaces' : 'Do umiestnenĂ­', // added 28.12.2014 'cmdchmod' : 'ZmeniĆ„ reĆŸim', // from v2.1 added 20.6.2015 'cmdopendir' : 'OtvoriĆ„ priečinok', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'ResetovaĆ„ ĆĄĂ­rku stÄșpca', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'CelĂĄ obrazovka', // from v2.1.15 added 03.08.2016 'cmdmove' : 'PosĂșvaĆ„', // from v2.1.15 added 21.08.2016 'cmdempty' : 'VyprĂĄzdniĆ„ priečinok', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Krok spÀƄ', // from v2.1.27 added 31.07.2017 'cmdredo' : 'VykonaĆ„ znova', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferencie', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'VybraĆ„ vĆĄetko', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Nič nevyberaĆ„', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'InvertovaĆ„ vĂœber', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'OtvoriĆ„ v novom okne', // from v2.1.38 added 3.4.2018 'cmdhide' : 'SkryĆ„ (PredvoÄŸba)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'ZavrieĆ„', 'btnSave' : 'UloĆŸiĆ„', 'btnRm' : 'VymazaĆ„', 'btnApply' : 'PouĆŸiĆ„', 'btnCancel' : 'ZruĆĄiĆ„', 'btnNo' : 'Nie', 'btnYes' : 'Áno', 'btnMount' : 'PripojiĆ„', // added 18.04.2012 'btnApprove': 'ÍsĆ„ na $1 & schvĂĄliĆ„', // from v2.1 added 26.04.2012 'btnUnmount': 'OdpojiĆ„', // from v2.1 added 30.04.2012 'btnConv' : 'PreviesĆ„', // from v2.1 added 08.04.2014 'btnCwd' : 'Tu', // from v2.1 added 22.5.2015 'btnVolume' : 'MĂ©dium', // from v2.1 added 22.5.2015 'btnAll' : 'VĆĄetko', // from v2.1 added 22.5.2015 'btnMime' : 'MIME typ', // from v2.1 added 22.5.2015 'btnFileName':'NĂĄzov sĂșboru', // from v2.1 added 22.5.2015 'btnSaveClose': 'UloĆŸiĆ„ & zavrieĆ„', // from v2.1 added 12.6.2015 'btnBackup' : 'ZĂĄlohovaĆ„', // fromv2.1 added 28.11.2015 'btnRename' : 'PremenovaĆ„', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'PremenovaĆ„ vĆĄetko', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'PredchĂĄdzajĂșce ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'ĎalĆĄie ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'UloĆŸiĆ„ ako', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'OtvĂĄranie priečinka', 'ntffile' : 'OtvĂĄranie sĂșboru', 'ntfreload' : 'Znovu-načítanie obsahu priečinka', 'ntfmkdir' : 'VytvĂĄranie priečinka', 'ntfmkfile' : 'VytvĂĄranie sĂșborov', 'ntfrm' : 'Vymazanie poloĆŸiek', 'ntfcopy' : 'KopĂ­rovanie poloĆŸiek', 'ntfmove' : 'Premiestnenie poloĆŸiek', 'ntfprepare' : 'Kontrola existujĂșcich poloĆŸiek', 'ntfrename' : 'Premenovanie sĂșborov', 'ntfupload' : 'NahrĂĄvanie sĂșborov', 'ntfdownload' : 'SĆ„ahovanie sĂșborov', 'ntfsave' : 'UloĆŸenie sĂșborov', 'ntfarchive' : 'VytvĂĄranie archĂ­vu', 'ntfextract' : 'Extrahovanie sĂșborov z archĂ­vu', 'ntfsearch' : 'VyhÄŸadĂĄvanie sĂșborov', 'ntfresize' : 'Zmena veÄŸkosti obrĂĄzkov', 'ntfsmth' : 'Počkajte prosĂ­m...', 'ntfloadimg' : 'Načítavanie obrĂĄzka', 'ntfnetmount' : 'PripĂĄjanie sieĆ„ovĂ©ho mĂ©dia', // added 18.04.2012 'ntfnetunmount': 'OdpĂĄjanie sieĆ„ovĂ©ho mĂ©dia', // from v2.1 added 30.04.2012 'ntfdim' : 'ZĂ­skanie rozmeru obrĂĄzka', // added 20.05.2013 'ntfreaddir' : 'ČítajĂș sa informĂĄcie o priečinku', // from v2.1 added 01.07.2013 'ntfurl' : 'ZĂ­skanie adresy URL odkazu', // from v2.1 added 11.03.2014 'ntfchmod' : 'Zmena sĂșboru', // from v2.1 added 20.6.2015 'ntfpreupload': 'Overenie nĂĄzvu nahravanĂ©ho sĂșboru', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Vytvorenie sĂșboru na stiahnutie', // from v2.1.7 added 23.1.2016 'ntfparents' : 'ZĂ­skanie informĂĄciĂ­ o ceste', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Spracovanie nahranĂ©ho sĂșboru', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Vhadzovanie do koĆĄa', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'VykonĂĄvanie obnovy z koĆĄa', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Kontrola cieÄŸovĂ©ho priečinka', // from v2.1.24 added 3.5.2017 'ntfundo' : 'ZruĆĄiĆ„ predchĂĄdzajĂșcu operĂĄciu', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Obnovenie predchĂĄdzajĂșceho zruĆĄenia', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Kontrola obsahu', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'KĂŽĆĄ', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'neznĂĄmy', 'Today' : 'Dnes', 'Yesterday' : 'Včera', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Maj', 'msJun' : 'Jun', 'msJul' : 'JĂșl', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'JanuĂĄr', 'February' : 'FebruĂĄr', 'March' : 'Marec', 'April' : 'AprĂ­l', 'May' : 'MĂĄj', 'June' : 'JĂșn', 'July' : 'JĂșl', 'August' : 'August', 'September' : 'September', 'October' : 'OktĂłber', 'November' : 'November', 'December' : 'December', 'Sunday' : 'NedeÄŸa', 'Monday' : 'Pondelok', 'Tuesday' : 'Utorok', 'Wednesday' : 'Streda', 'Thursday' : 'Ć tvrtok', 'Friday' : 'Piatok', 'Saturday' : 'Sobota', 'Sun' : 'Ned', 'Mon' : 'Pon', 'Tue' : 'Ut', 'Wed' : 'Str', 'Thu' : 'Ć tv', 'Fri' : 'Pia', 'Sat' : 'Sob', /******************************** sort variants ********************************/ 'sortname' : 'podÄŸa nĂĄzvu', 'sortkind' : 'podÄŸa druhu', 'sortsize' : 'podÄŸa veÄŸkosti', 'sortdate' : 'podÄŸa dĂĄtumu', 'sortFoldersFirst' : 'NajskĂŽr priečinky', 'sortperm' : 'podÄŸa povolenia', // from v2.1.13 added 13.06.2016 'sortmode' : 'podÄŸa mĂłdu', // from v2.1.13 added 13.06.2016 'sortowner' : 'podÄŸa majiteÄŸa', // from v2.1.13 added 13.06.2016 'sortgroup' : 'podÄŸa skupiny', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'TieĆŸ stromovĂ© zobrazenie', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NovĂœ sĂșbor.txt', // added 10.11.2015 'untitled folder' : 'NovĂœ priečinok', // added 10.11.2015 'Archive' : 'NovĂœ archĂ­v', // from v2.1 added 10.11.2015 'untitled file' : 'NovĂœ sĂșbor.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1 sĂșbor', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'PotrebnĂ© potvrdenie', 'confirmRm' : 'Určite chcete vymazaĆ„ sĂșbory?
      Nie je to moĆŸnĂ© vrĂĄtiĆ„ spÀƄ!', 'confirmRepl' : 'NahradiĆ„ starĂœ sĂșbor za novĂœ? (Ak obsahuje priečinky, bude zlĂșčenĂ©. Ak chcete zĂĄlohovaĆ„ a nahradiĆ„, vyberte moĆŸnosĆ„ ZĂĄlohovaĆ„.)', 'confirmRest' : 'NahradiĆ„ existujĂșcu poloĆŸku s poloĆŸkou v koĆĄi?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Nie je v UTF-8
      PreviesƄ na UTF-8?
      Obsah bude v UTF-8 po uloĆŸenĂ­ konverzie.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'KĂłdovanie tohto sĂșboru nemohlo byĆ„ detekovanĂ©. Pre Ășpravu dočasne potrebujete previesĆ„ na UTF-8 .
      ProsĂ­m, vyberte kĂłdovanie znakov tohto sĂșboru.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Bol upravenĂœ.
      Ak zmeny neuloĆŸĂ­te, stratĂ­te vykonanĂș prĂĄcu.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Naozaj chcete presunĂșĆ„ poloĆŸky do koĆĄa?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Naozaj chcete presunĂșĆ„ poloĆŸky do "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'PouĆŸiĆ„ na vĆĄetky', 'name' : 'NĂĄzov', 'size' : 'VeÄŸkosĆ„', 'perms' : 'Povolenia', 'modify' : 'ZmenenĂ©', 'kind' : 'Druh', 'read' : 'čítaĆ„', 'write' : 'zapisovaĆ„', 'noaccess' : 'bez prĂ­stupu', 'and' : 'a', 'unknown' : 'neznĂĄmy', 'selectall' : 'VybraĆ„ vĆĄetky poloĆŸky', 'selectfiles' : 'VybraĆ„ poloĆŸku(y)', 'selectffile' : 'VybraĆ„ prvĂș poloĆŸku', 'selectlfile' : 'VybraĆ„ poslednĂș poloĆŸku', 'viewlist' : 'Zoznam', 'viewicons' : 'Ikony', 'viewSmall' : 'MalĂ© ikony', // from v2.1.39 added 22.5.2018 'viewMedium' : 'StrednĂ© ikony', // from v2.1.39 added 22.5.2018 'viewLarge' : 'VeÄŸkĂ© ikony', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Extra veÄŸkĂ© ikony', // from v2.1.39 added 22.5.2018 'places' : 'Miesta', 'calc' : 'Prepočítavanie', 'path' : 'Cesta', 'aliasfor' : 'Alias pre', 'locked' : 'UzamknutĂ©', 'dim' : 'Rozmery', 'files' : 'SĂșbory', 'folders' : 'Priečinky', 'items' : 'PoloĆŸky', 'yes' : 'ĂĄno', 'no' : 'nie', 'link' : 'Odkaz', 'searcresult' : 'VĂœsledky hÄŸadania', 'selected' : 'zvolenĂ© poloĆŸky', 'about' : 'O aplikĂĄcii', 'shortcuts' : 'Skratky', 'help' : 'Pomoc', 'webfm' : 'WebovĂœ sprĂĄvca sĂșborov', 'ver' : 'Verzia', 'protocolver' : 'verzia protokolu', 'homepage' : 'DomovskĂĄ strĂĄnka', 'docs' : 'DokumentĂĄcia', 'github' : 'Pozri nĂĄs na Githube', 'twitter' : 'Nasleduj nĂĄs na Twitteri', 'facebook' : 'Pripoj sa k nĂĄm na Facebooku', 'team' : 'TĂ­m', 'chiefdev' : 'HlavnĂœ vĂœvojĂĄr', 'developer' : 'VĂœvojĂĄr', 'contributor' : 'PrispievateÄŸ', 'maintainer' : 'SprĂĄvca', 'translator' : 'PrekladateÄŸ', 'icons' : 'Ikony', 'dontforget' : 'a nezabudnite si plavky', 'shortcutsof' : 'Skratky nie sĂș povolenĂ©', 'dropFiles' : 'Sem pretiahnite sĂșbory', 'or' : 'alebo', 'selectForUpload' : 'Vyberte sĂșbory', 'moveFiles' : 'PremiestniĆ„ sĂșbory', 'copyFiles' : 'KopĂ­rovaĆ„ sĂșbory', 'restoreFiles' : 'ObnoviĆ„ poloĆŸky', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'OdstrĂĄniĆ„ z umiestnenĂ­', 'aspectRatio' : 'Pomer zobrazenia', 'scale' : 'Mierka', 'width' : 'Ć Ă­rka', 'height' : 'VĂœĆĄka', 'resize' : 'ZmeniĆ„ veÄŸkosĆ„', 'crop' : 'OrezaĆ„', 'rotate' : 'OtočiĆ„', 'rotate-cw' : 'OtočiĆ„ o 90 stupƈov (v smere h.r.)', 'rotate-ccw' : 'OtočiĆ„ o 90 stupƈov (proti smeru)', 'degree' : '°', 'netMountDialogTitle' : 'PripojiĆ„ sieĆ„ovĂ© mĂ©dium', // added 18.04.2012 'protocol' : 'Protokol', // added 18.04.2012 'host' : 'HosĆ„', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'UĆŸĂ­vateÄŸ', // added 18.04.2012 'pass' : 'Heslo', // added 18.04.2012 'confirmUnmount' : 'Naozaj chcete odpojiĆ„ $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Premiestnite alebo presuƈte sĂșbory z prehliadača', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Tu premiestnite alebo presuƈte sĂșbory a adresy URL', // from v2.1 added 07.04.2014 'encoding' : 'KĂłdovanie', // from v2.1 added 19.12.2014 'locale' : 'LokalizĂĄcia', // from v2.1 added 19.12.2014 'searchTarget' : 'CieÄŸ: $1', // from v2.1 added 22.5.2015 'searchMime' : 'VyhÄŸadĂĄvanie podÄŸa vstupnĂ©ho MIME typu', // from v2.1 added 22.5.2015 'owner' : 'MajiteÄŸ', // from v2.1 added 20.6.2015 'group' : 'Skupina', // from v2.1 added 20.6.2015 'other' : 'OstatnĂ©', // from v2.1 added 20.6.2015 'execute' : 'SpustiĆ„', // from v2.1 added 20.6.2015 'perm' : 'Povolenie', // from v2.1 added 20.6.2015 'mode' : 'ReĆŸim', // from v2.1 added 20.6.2015 'emptyFolder' : 'Priečinok je prĂĄzdny', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Priečinok je prĂĄzdny\\A Premiestnite alebo presuƈte poloĆŸky', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Priečinok je prĂĄzdny\\A DlhĂœm kliknutĂ­m pridĂĄte poloĆŸky', // from v2.1.6 added 30.12.2015 'quality' : 'Kvalita', // from v2.1.6 added 5.1.2016 'autoSync' : 'AutomatickĂĄ synchronizĂĄcia', // from v2.1.6 added 10.1.2016 'moveUp' : 'PosunĂșĆ„ nahor', // from v2.1.6 added 18.1.2016 'getLink' : 'ZĂ­skaĆ„ URL odkaz', // from v2.1.7 added 9.2.2016 'selectedItems' : 'VybratĂ© poloĆŸky ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID priečinka', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'PovoliĆ„ prĂ­stup v offline reĆŸime', // from v2.1.10 added 3.25.2016 'reAuth' : 'Znova overiĆ„', // from v2.1.10 added 3.25.2016 'nowLoading' : 'PrĂĄve načítava...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Otvorenie viacerĂœch sĂșborov', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'PokĂșĆĄate sa otvoriĆ„ sĂșbor $1. Naozaj ho chcete otvoriĆ„ v prehliadači?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'VĂœsledky vyhÄŸadĂĄvania sĂș prĂĄzdne v hÄŸadanom cieli.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Je to Ășprava sĂșboru.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Vybrali ste $1 poloĆŸky.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'MĂĄte $1 poloĆŸky v schrĂĄnke.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'PrĂ­rastkovĂ© hÄŸadanie je iba z aktuĂĄlneho zobrazenia.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Obnovovanie', // from v2.1.15 added 3.8.2016 'complete' : '$1: kompletnĂ©', // from v2.1.15 added 21.8.2016 'contextmenu' : 'KontextovĂ© menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Otáčanie strĂĄnky', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Korene mĂ©dia', // from v2.1.16 added 16.9.2016 'reset' : 'ResetovaĆ„', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Farba pozadia', // from v2.1.16 added 1.10.2016 'colorPicker' : 'VĂœber farby', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px mrieĆŸka', // from v2.1.16 added 4.10.2016 'enabled' : 'PovolenĂ©', // from v2.1.16 added 4.10.2016 'disabled' : 'ZakĂĄzanĂ©', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'VĂœsledky vyhÄŸadĂĄvania sĂș prĂĄzdne v aktuĂĄlnom zobrazenĂ­. StlačenĂ­m tlačidla [Enter] rozĆĄĂ­rite vyhÄŸadĂĄvanie cieÄŸa.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'VĂœsledky vyhÄŸadĂĄvania prvĂ©ho listu sĂș v aktuĂĄlnom zobrazenĂ­ prĂĄzdne.', // from v2.1.23 added 24.3.2017 'textLabel' : 'NĂĄpis textu', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 minĂșt ostĂĄva', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'OtvoriĆ„ s vybratĂœm kĂłdovanĂ­m', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'UloĆŸiĆ„ s vybratĂœm kĂłdovanĂ­m', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Vyberte priečinok', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'HÄŸadanie prvĂ©ho listu', // from v2.1.23 added 24.3.2017 'presets' : 'Presety', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Je to prĂ­liĆĄ veÄŸa poloĆŸiek, takĆŸe sa nemĂŽĆŸe dostaĆ„ do koĆĄa.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Textarea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'VyprĂĄzdniĆ„ priečinok "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'V priečinku "$1" nie sĂș ĆŸiadne poloĆŸky.', // from v2.1.25 added 22.6.2017 'preference' : 'Preferencie', // from v2.1.26 added 28.6.2017 'language' : 'Nastavenie jazyka', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Inicializujte nastavenia uloĆŸenĂ© v tomto prehliadači', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Nastavenie panela s nĂĄstrojmi', // from v2.1.27 added 2.8.2017 'charsLeft' : '...$1 znakov ostĂĄva.', // from v2.1.29 added 30.8.2017 'linesLeft' : '...$1 riadkov ostĂĄva.', // from v2.1.52 added 16.1.2020 'sum' : 'SĂșčet', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'HrubĂĄ veÄŸkosĆ„ sĂșboru', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Zameranie na prvok dialĂłgu s mouseover', // from v2.1.30 added 2.11.2017 'select' : 'VybraĆ„', // from v2.1.30 added 23.11.2017 'selectAction' : 'Akcia pri vybranom sĂșbore', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'OtvoriĆ„ pomocou naposledy pouĆŸitĂ©ho editora', // from v2.1.30 added 23.11.2017 'selectinvert' : 'InvertovaĆ„ vĂœber poloĆŸiek', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Naozaj chcete premenovaĆ„ $1 vybranĂœch poloĆŸiek, ako naprĂ­klad $2
      Nie je to moĆŸnĂ© vrĂĄtiĆ„ spÀƄ!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch premenovanie', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Číslo', // from v2.1.31 added 8.12.2017 'asPrefix' : 'PridaĆ„ predponu', // from v2.1.31 added 8.12.2017 'asSuffix' : 'PridaĆ„ prĂ­ponu', // from v2.1.31 added 8.12.2017 'changeExtention' : 'ZmeniĆ„ prĂ­ponu', // from v2.1.31 added 8.12.2017 'columnPref' : 'Nastavenia stÄșpcov (zoznamovĂ© zobrazenie)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'VĆĄetky zmeny sa okamĆŸite premietnu do archĂ­vu.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'AkĂ©koÄŸvek zmeny sa neodzrkadÄŸujĂș, kĂœm sa toto mĂ©dium neodinĆĄtaluje.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'NasledujĂșce mĂ©dium(a) pripojenĂ© v tomto mĂ©diu je tieĆŸ odpojenĂ©. Určite ho odpojiĆ„?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'InformĂĄcie o vĂœbere', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algoritmy na zobrazenie hashu sĂșborov', // from v2.1.33 added 10.3.2018 'infoItems' : 'InformačnĂ© poloĆŸky (panel s informĂĄciami o vĂœbere)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'OpĂ€tovnĂœm stlačenĂ­m opustĂ­te.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Panel nĂĄstrojov', // from v2.1.38 added 4.4.2018 'workspace' : 'PracovnĂœ priestor', // from v2.1.38 added 4.4.2018 'dialog' : 'DialĂłg', // from v2.1.38 added 4.4.2018 'all' : 'VĆĄetko', // from v2.1.38 added 4.4.2018 'iconSize' : 'VeÄŸkosĆ„ ikony (zobrazenie ikon)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Otvorte maximalizovanĂ© okno editora', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'PretoĆŸe konverzia podÄŸa rozhrania API momentĂĄlne nie je k dispozĂ­cii, skonvertujte na webovej strĂĄnke.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'Po konverzii musĂ­te nahraĆ„ skonvertovanĂœ sĂșbor pomocou URL poloĆŸky alebo stiahnutĂœ sĂșbor na uloĆŸenie skonvertovanĂ©ho sĂșboru.', //from v2.1.40 added 8.7.2018 'convertOn' : 'KonvertovaĆ„ na strĂĄnke $1', // from v2.1.40 added 10.7.2018 'integrations' : 'IntegrĂĄcie', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Tento elFinder mĂĄ integrovanĂ© nasledujĂșce externĂ© sluĆŸby. Pred pouĆŸitĂ­m skontrolujte podmienky pouĆŸĂ­vania, zĂĄsady ochrany osobnĂœch Ășdajov atď.', // from v2.1.40 added 11.7.2018 'showHidden' : 'ZobraziĆ„ skrytĂ© poloĆŸky', // from v2.1.41 added 24.7.2018 'hideHidden' : 'SkryĆ„ skrytĂ© poloĆŸky', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'ZobraziĆ„/skryĆ„ skrytĂ© poloĆŸky', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Typy sĂșborov, ktorĂ© sa majĂș povoliĆ„ pomocou "NovĂœ sĂșbor"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Typ textovĂ©ho sĂșboru', // from v2.1.41 added 7.8.2018 'add' : 'PridaĆ„', // from v2.1.41 added 7.8.2018 'theme' : 'TĂ©ma', // from v2.1.43 added 19.10.2018 'default' : 'PredvolenĂĄ', // from v2.1.43 added 19.10.2018 'description' : 'Popis', // from v2.1.43 added 19.10.2018 'website' : 'StrĂĄnka', // from v2.1.43 added 19.10.2018 'author' : 'Autor', // from v2.1.43 added 19.10.2018 'email' : 'E-mail', // from v2.1.43 added 19.10.2018 'license' : 'Licencia', // from v2.1.43 added 19.10.2018 'exportToSave' : 'TĂșto poloĆŸku nemoĆŸno uloĆŸiĆ„. Ak chcete zabrĂĄniĆ„ strate Ășprav, musĂ­te ju exportovaĆ„ do počítača.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'DvakrĂĄt kliknite na sĂșbor a vyberte ho.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'PouĆŸiĆ„ reĆŸim celej obrazovky', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'NeznĂĄmy', 'kindRoot' : 'Koreƈ mĂ©dia', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Priečinok', 'kindSelects' : 'VĂœbery', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'PoruĆĄenĂœ alias', // applications 'kindApp' : 'AplikĂĄcia', 'kindPostscript' : 'Postscript dokument', 'kindMsOffice' : 'Microsoft Office dokument', 'kindMsWord' : 'Microsoft Word dokument', 'kindMsExcel' : 'Microsoft Excel dokument', 'kindMsPP' : 'Microsoft Powerpoint prezentĂĄcia', 'kindOO' : 'Open Office dokument', 'kindAppFlash' : 'FlashovĂĄ aplikĂĄcia', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent sĂșbor', 'kind7z' : '7z archĂ­v', 'kindTAR' : 'TAR archĂ­v', 'kindGZIP' : 'GZIP archĂ­v', 'kindBZIP' : 'BZIP archĂ­v', 'kindXZ' : 'XZ archĂ­v', 'kindZIP' : 'ZIP archĂ­v', 'kindRAR' : 'RAR archĂ­v', 'kindJAR' : 'Java JAR sĂșbor', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM balĂ­k', // texts 'kindText' : 'TextovĂœ document', 'kindTextPlain' : 'ObyčajnĂœ text', 'kindPHP' : 'PHP zdrojovĂœ kĂłd', 'kindCSS' : 'Cascading style sheet (CSS)', 'kindHTML' : 'HTML dokument', 'kindJS' : 'Javascript zdrojovĂœ kĂłd', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C zdrojovĂœ kĂłd', 'kindCHeader' : 'C header zdrojovĂœ kĂłd', 'kindCPP' : 'C++ zdrojovĂœ kĂłd', 'kindCPPHeader' : 'C++ header zdrojovĂœ kĂłd', 'kindShell' : 'Unix shell skript', 'kindPython' : 'Python zdrojovĂœ kĂłd', 'kindJava' : 'Java zdrojovĂœ kĂłd', 'kindRuby' : 'Ruby zdrojovĂœ kĂłd', 'kindPerl' : 'Perl zdrojovĂœ kĂłd', 'kindSQL' : 'SQL zdrojovĂœ kĂłd', 'kindXML' : 'XML dokument', 'kindAWK' : 'AWK zdrojovĂœ kĂłd', 'kindCSV' : 'Čiarkou oddeÄŸovanĂ© hodnoty', 'kindDOCBOOK' : 'Docbook XML dokument', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'ObrĂĄzok', 'kindBMP' : 'BMP obrĂĄzok', 'kindJPEG' : 'JPEG obrĂĄzok', 'kindGIF' : 'GIF obrĂĄzok', 'kindPNG' : 'PNG obrĂĄzok', 'kindTIFF' : 'TIFF obrĂĄzok', 'kindTGA' : 'TGA obrĂĄzok', 'kindPSD' : 'Adobe Photoshop obrĂĄzok', 'kindXBITMAP' : 'X bitmap obrĂĄzok', 'kindPXM' : 'Pixelmator obrĂĄzok', // media 'kindAudio' : 'ZvukovĂœ sĂșbor', 'kindAudioMPEG' : 'MPEG zvuk', 'kindAudioMPEG4' : 'MPEG-4 zvuk', 'kindAudioMIDI' : 'MIDI zvuk', 'kindAudioOGG' : 'Ogg Vorbis zvuk', 'kindAudioWAV' : 'WAV zvuk', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video sĂșbor', 'kindVideoDV' : 'DV video', 'kindVideoMPEG' : 'MPEG video', 'kindVideoMPEG4' : 'MPEG-4 video', 'kindVideoAVI' : 'AVI video', 'kindVideoMOV' : 'Quick Time video', 'kindVideoWM' : 'Windows Media video', 'kindVideoFlash' : 'Flash video', 'kindVideoMKV' : 'Matroska video', 'kindVideoOGG' : 'Ogg video' } }; })); application/library/js/i18n/elfinder.ca.js000064400000040577147577724760014465 0ustar00/** * Catalan translation * @author Sergio Jovani * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.ca = { translator : 'Sergio Jovani <lesergi@gmail.com>', language : 'CatalĂ ', direction : 'ltr', dateFormat : 'M d, Y h:i A', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM messages : { /********************************** errors **********************************/ 'error' : 'Error', 'errUnknown' : 'Error desconegut.', 'errUnknownCmd' : 'Ordre desconeguda.', 'errJqui' : 'La configuraciĂł de jQuery UI no Ă©s vĂ lida. S\'han d\'incloure els components "selectable", "draggable" i "droppable".', 'errNode' : 'elFinder necessita crear elements DOM.', 'errURL' : 'La configuraciĂł de l\'elFinder no Ă©s vĂ lida! L\'opciĂł URL no estĂ  configurada.', 'errAccess' : 'AccĂ©s denegat.', 'errConnect' : 'No s\'ha pogut connectar amb el rerefons.', 'errAbort' : 'S\'ha interromput la connexiĂł.', 'errTimeout' : 'Temps de connexiĂł excedit.', 'errNotFound' : 'No s\'ha trobat el rerefons.', 'errResponse' : 'La resposta del rerefons no Ă©s vĂ lida.', 'errConf' : 'La configuraciĂł del rerefons no Ă©s vĂ lida.', 'errJSON' : 'No estĂ  instal·lat el mĂČdul JSON del PHP.', 'errNoVolumes' : 'No s\'han trobat volums llegibles.', 'errCmdParams' : 'Els parĂ metres per l\'ordre "$1" no sĂłn vĂ lids.', 'errDataNotJSON' : 'Les dades no sĂłn JSON.', 'errDataEmpty' : 'Les dades estan buides.', 'errCmdReq' : 'La sol·licitud del rerefons necessita el nom de l\'ordre.', 'errOpen' : 'No s\'ha pogut obrir "$1".', 'errNotFolder' : 'L\'objecte no Ă©s una carpeta.', 'errNotFile' : 'L\'objecte no Ă©s un fitxer.', 'errRead' : 'No s\'ha pogut llegir "$1".', 'errWrite' : 'No s\'ha pogut escriure a "$1".', 'errPerm' : 'PermĂ­s denegat.', 'errLocked' : '"$1" estĂ  bloquejat i no podeu canviar-li el nom, moure-lo ni suprimir-lo.', 'errExists' : 'Ja existeix un fitxer anomenat "$1".', 'errInvName' : 'El nom de fitxer no Ă©s vĂ lid.', 'errFolderNotFound' : 'No s\'ha trobat la carpeta.', 'errFileNotFound' : 'No s\'ha trobat el fitxer.', 'errTrgFolderNotFound' : 'No s\'ha trobat la carpeta de destĂ­ "$1".', 'errPopup' : 'El navegador ha evitat obrir una finestra emergent. Autoritzeu-la per obrir el fitxer.', 'errMkdir' : 'No s\'ha pogut crear la carpeta "$1".', 'errMkfile' : 'No s\'ha pogut crear el fitxer "$1".', 'errRename' : 'No s\'ha pogut canviar el nom de "$1".', 'errCopyFrom' : 'No estĂ  permĂšs copiar fitxers des del volum "$1".', 'errCopyTo' : 'No estĂ  permĂšs copiar fitxers al volum "$1".', 'errUpload' : 'S\'ha produĂŻt un error en la cĂ rrega.', 'errUploadFile' : 'No s\'ha pogut carregar "$1".', 'errUploadNoFiles' : 'No s\'han trobat fitxers per carregar.', 'errUploadTotalSize' : 'Les dades excedeixen la mida mĂ xima permesa.', 'errUploadFileSize' : 'El fitxer excedeix la mida mĂ xima permesa.', 'errUploadMime' : 'El tipus de fitxer no estĂ  permĂšs.', 'errUploadTransfer' : 'S\'ha produĂŻt un error en transferir "$1".', 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', 'errReplace' : 'Unable to replace "$1".', 'errSave' : 'No s\'ha pogut desar "$1".', 'errCopy' : 'No s\'ha pogut copiar "$1".', 'errMove' : 'No s\'ha pogut moure "$1".', 'errCopyInItself' : 'No s\'ha pogut copiar "$1" a si mateix.', 'errRm' : 'No s\'ha pogut suprimir "$1".', 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'No s\'han pogut extreure els fitxers de "$1".', 'errArchive' : 'No s\'ha pogut crear l\'arxiu.', 'errArcType' : 'El tipus d\'arxiu no estĂ  suportat.', 'errNoArchive' : 'El fitxer no Ă©s un arxiu o Ă©s un tipus no suportat.', 'errCmdNoSupport' : 'El rerefons no suporta aquesta ordre.', 'errReplByChild' : 'No es pot reemplaçar la carpeta “$1” per un element que contĂ©.', 'errArcSymlinks' : 'Per raons de seguretat, no es permet extreure arxius que contenen enllaços simbĂČlics.', 'errArcMaxSize' : 'Els fitxers de l\'arxiu excedeixen la mida mĂ xima permesa.', 'errResize' : 'No s\'ha pogut redimensionar "$1".', 'errResizeDegree' : 'Invalid rotate degree.', 'errResizeRotate' : 'Unable to rotate image.', 'errResizeSize' : 'Invalid image size.', 'errResizeNoChange' : 'Image size not changed.', 'errUsupportType' : 'El tipus de fitxer no estĂ  suportat.', 'errNotUTF8Content' : 'File "$1" is not in UTF-8 and cannot be edited.', 'errNetMount' : 'Unable to mount "$1".', 'errNetMountNoDriver' : 'Unsupported protocol.', 'errNetMountFailed' : 'Mount failed.', 'errNetMountHostReq' : 'Host required.', 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'Crea arxiu', 'cmdback' : 'Enrere', 'cmdcopy' : 'Copia', 'cmdcut' : 'Retalla', 'cmddownload' : 'Descarrega', 'cmdduplicate' : 'Duplica', 'cmdedit' : 'Edita el fitxer', 'cmdextract' : 'Extreu els fitxers de l\'arxiu', 'cmdforward' : 'Endavant', 'cmdgetfile' : 'Selecciona els fitxers', 'cmdhelp' : 'Quant a aquest programari', 'cmdhome' : 'Inici', 'cmdinfo' : 'ObtĂ© informaciĂł', 'cmdmkdir' : 'Nova carpeta', 'cmdmkfile' : 'Nou fitxer', 'cmdopen' : 'Obre', 'cmdpaste' : 'Enganxa', 'cmdquicklook' : 'Previsualitza', 'cmdreload' : 'Torna a carregar', 'cmdrename' : 'Canvia el nom', 'cmdrm' : 'Suprimeix', 'cmdsearch' : 'Cerca fitxers', 'cmdup' : 'VĂ©s al directori superior', 'cmdupload' : 'Carrega fitxers', 'cmdview' : 'Visualitza', 'cmdresize' : 'Redimensiona la imatge', 'cmdsort' : 'Ordena', 'cmdnetmount' : 'Mount network volume', /*********************************** buttons ***********************************/ 'btnClose' : 'Tanca', 'btnSave' : 'Desa', 'btnRm' : 'Suprimeix', 'btnApply' : 'Aplica', 'btnCancel' : 'Cancel·la', 'btnNo' : 'No', 'btnYes' : 'SĂ­', 'btnMount' : 'Mount', /******************************** notifications ********************************/ 'ntfopen' : 'S\'estĂ  obrint la carpeta', 'ntffile' : 'S\'estĂ  obrint el fitxer', 'ntfreload' : 'S\'estĂ  tornant a carregar el contingut de la carpeta', 'ntfmkdir' : 'S\'estĂ  creant el directori', 'ntfmkfile' : 'S\'estan creant el fitxers', 'ntfrm' : 'S\'estan suprimint els fitxers', 'ntfcopy' : 'S\'estan copiant els fitxers', 'ntfmove' : 'S\'estan movent els fitxers', 'ntfprepare' : 'S\'estĂ  preparant per copiar fitxers', 'ntfrename' : 'S\'estan canviant els noms del fitxers', 'ntfupload' : 'S\'estan carregant els fitxers', 'ntfdownload' : 'S\'estan descarregant els fitxers', 'ntfsave' : 'S\'estan desant els fitxers', 'ntfarchive' : 'S\'estĂ  creant l\'arxiu', 'ntfextract' : 'S\'estan extreient els fitxers de l\'arxiu', 'ntfsearch' : 'S\'estan cercant els fitxers', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'S\'estan realitzant operacions', 'ntfloadimg' : 'S\'estĂ  carregant la imatge', 'ntfnetmount' : 'Mounting network volume', 'ntfdim' : 'Acquiring image dimension', /************************************ dates **********************************/ 'dateUnknown' : 'desconegut', 'Today' : 'Avui', 'Yesterday' : 'Ahir', 'msJan' : 'gen.', 'msFeb' : 'febr.', 'msMar' : 'març', 'msApr' : 'abr.', 'msMay' : 'maig', 'msJun' : 'juny', 'msJul' : 'jul.', 'msAug' : 'ag.', 'msSep' : 'set.', 'msOct' : 'oct.', 'msNov' : 'nov.', 'msDec' : 'des.', 'January' : 'January', 'February' : 'February', 'March' : 'March', 'April' : 'April', 'May' : 'May', 'June' : 'June', 'July' : 'July', 'August' : 'August', 'September' : 'September', 'October' : 'October', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Sunday', 'Monday' : 'Monday', 'Tuesday' : 'Tuesday', 'Wednesday' : 'Wednesday', 'Thursday' : 'Thursday', 'Friday' : 'Friday', 'Saturday' : 'Saturday', 'Sun' : 'Sun', 'Mon' : 'Mon', 'Tue' : 'Tue', 'Wed' : 'Wed', 'Thu' : 'Thu', 'Fri' : 'Fri', 'Sat' : 'Sat', /******************************** sort variants ********************************/ 'sortname' : 'per nom', 'sortkind' : 'per tipus', 'sortsize' : 'per mida', 'sortdate' : 'per data', 'sortFoldersFirst' : 'Folders first', /********************************** messages **********************************/ 'confirmReq' : 'Es necessita confirmaciĂł', 'confirmRm' : 'Voleu suprimir els fitxers?
      L\'acciĂł es podrĂ  desfer!', 'confirmRepl' : 'Voleu reemplaçar el fitxer antic amb el nou?', 'apllyAll' : 'Aplica a tot', 'name' : 'Nom', 'size' : 'Mida', 'perms' : 'Permisos', 'modify' : 'Modificat', 'kind' : 'Tipus', 'read' : 'llegir', 'write' : 'escriure', 'noaccess' : 'sense accĂ©s', 'and' : 'i', 'unknown' : 'desconegut', 'selectall' : 'Selecciona tots els fitxers', 'selectfiles' : 'Selecciona el(s) fitxer(s)', 'selectffile' : 'Selecciona el primer fitxer', 'selectlfile' : 'Selecciona l\'Ășltim fitxer', 'viewlist' : 'Vista en llista', 'viewicons' : 'Vista en icones', 'places' : 'Llocs', 'calc' : 'Calcula', 'path' : 'CamĂ­', 'aliasfor' : 'Àlies per', 'locked' : 'Bloquejat', 'dim' : 'Dimensions', 'files' : 'Fitxers', 'folders' : 'Carpetes', 'items' : 'Elements', 'yes' : 'sĂ­', 'no' : 'no', 'link' : 'Enllaç', 'searcresult' : 'Resultats de la cerca', 'selected' : 'Elements seleccionats', 'about' : 'Quant a', 'shortcuts' : 'Dreceres', 'help' : 'Ajuda', 'webfm' : 'Gestor de fitxers web', 'ver' : 'VersiĂł', 'protocolver' : 'versiĂł de protocol', 'homepage' : 'PĂ gina del projecte', 'docs' : 'DocumentaciĂł', 'github' : 'Bifurca\'ns a GitHub', 'twitter' : 'Segueix-nos a Twitter', 'facebook' : 'Uniu-vos a Facebook', 'team' : 'Equip', 'chiefdev' : 'cap desenvolupador', 'developer' : 'desenvolupador', 'contributor' : 'col·laborador', 'maintainer' : 'mantenidor', 'translator' : 'traductor', 'icons' : 'Icones', 'dontforget' : 'i no oblideu agafar la vostra tovallola', 'shortcutsof' : 'Les dreceres estan inhabilitades', 'dropFiles' : 'Arrossegueu els fitxers aquĂ­', 'or' : 'o', 'selectForUpload' : 'Seleccioneu els fitxer a carregar', 'moveFiles' : 'Mou els fitxers', 'copyFiles' : 'Copia els fitxers', 'rmFromPlaces' : 'Suprimeix dels llocs', 'aspectRatio' : 'RelaciĂł d\'aspecte', 'scale' : 'Escala', 'width' : 'Amplada', 'height' : 'Alçada', 'resize' : 'Redimensiona', 'crop' : 'Retalla', 'rotate' : 'Rotate', 'rotate-cw' : 'Rotate 90 degrees CW', 'rotate-ccw' : 'Rotate 90 degrees CCW', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', 'protocol' : 'Protocol', 'host' : 'Host', 'port' : 'Port', 'user' : 'User', 'pass' : 'Password', /********************************** mimetypes **********************************/ 'kindUnknown' : 'Desconegut', 'kindFolder' : 'Carpeta', 'kindAlias' : 'Àlies', 'kindAliasBroken' : 'Àlies no vĂ lid', // applications 'kindApp' : 'AplicaciĂł', 'kindPostscript' : 'Document Postscript', 'kindMsOffice' : 'Document del Microsoft Office', 'kindMsWord' : 'Document del Microsoft Word', 'kindMsExcel' : 'Document del Microsoft Excel', 'kindMsPP' : 'PresentaciĂł del Microsoft Powerpoint', 'kindOO' : 'Document de l\'Open Office', 'kindAppFlash' : 'AplicaciĂł Flash', 'kindPDF' : 'Document PDF', 'kindTorrent' : 'Fitxer Bittorrent', 'kind7z' : 'Arxiu 7z', 'kindTAR' : 'Arxiu TAR', 'kindGZIP' : 'Arxiu GZIP', 'kindBZIP' : 'Arxiu BZIP', 'kindXZ' : 'Arxiu XZ', 'kindZIP' : 'Arxiu ZIP', 'kindRAR' : 'Arxiu RAR', 'kindJAR' : 'Fitxer JAR de Java', 'kindTTF' : 'Tipus de lletra True Type', 'kindOTF' : 'Tipus de lletra Open Type', 'kindRPM' : 'Paquet RPM', // texts 'kindText' : 'Document de text', 'kindTextPlain' : 'Document de text net', 'kindPHP' : 'Codi PHP', 'kindCSS' : 'Full d\'estils CSS', 'kindHTML' : 'Document HTML', 'kindJS' : 'Codi Javascript', 'kindRTF' : 'Document RTF', 'kindC' : 'Codi C', 'kindCHeader' : 'Codi de caçalera C', 'kindCPP' : 'Codi C++', 'kindCPPHeader' : 'Codi de caçalera C++', 'kindShell' : 'Script Unix', 'kindPython' : 'Codi Python', 'kindJava' : 'Codi Java', 'kindRuby' : 'Codi Ruby', 'kindPerl' : 'Script Perl', 'kindSQL' : 'Codi SQL', 'kindXML' : 'Document XML', 'kindAWK' : 'Codi AWK', 'kindCSV' : 'Document CSV', 'kindDOCBOOK' : 'Document XML de Docbook', // images 'kindImage' : 'Imatge', 'kindBMP' : 'Imatge BMP', 'kindJPEG' : 'Imatge JPEG', 'kindGIF' : 'Imatge GIF', 'kindPNG' : 'Imatge PNG', 'kindTIFF' : 'Imatge TIFF', 'kindTGA' : 'Imatge TGA', 'kindPSD' : 'Imatge Adobe Photoshop', 'kindXBITMAP' : 'Imatge X bitmap', 'kindPXM' : 'Imatge Pixelmator', // media 'kindAudio' : 'Fitxer d\'Ă udio', 'kindAudioMPEG' : 'Fitxer d\'Ă udio MPEG', 'kindAudioMPEG4' : 'Fitxer d\'Ă udio MPEG-4', 'kindAudioMIDI' : 'Fitxer d\'Ă udio MIDI', 'kindAudioOGG' : 'Fitxer d\'Ă udio Ogg Vorbis', 'kindAudioWAV' : 'Fitxer d\'Ă udio WAV', 'AudioPlaylist' : 'Llista de reproducciĂł MP3', 'kindVideo' : 'Fitxer de vĂ­deo', 'kindVideoDV' : 'Fitxer de vĂ­deo DV', 'kindVideoMPEG' : 'Fitxer de vĂ­deo MPEG', 'kindVideoMPEG4' : 'Fitxer de vĂ­deo MPEG-4', 'kindVideoAVI' : 'Fitxer de vĂ­deo AVI', 'kindVideoMOV' : 'Fitxer de vĂ­deo Quick Time', 'kindVideoWM' : 'Fitxer de vĂ­deo Windows Media', 'kindVideoFlash' : 'Fitxer de vĂ­deo Flash', 'kindVideoMKV' : 'Fitxer de vĂ­deo Matroska', 'kindVideoOGG' : 'Fitxer de vĂ­deo Ogg' } }; })); application/library/js/i18n/elfinder.ro.js000064400000047423147577724760014517 0ustar00/** * RomĂąnă translation * @author Cristian Tabacitu * @version 2015-11-13 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.ro = { translator : 'Cristian Tabacitu <hello@tabacitu.ro>', language : 'RomĂąnă', direction : 'ltr', dateFormat : 'd M Y h:i', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM messages : { /********************************** errors **********************************/ 'error' : 'Eroare', 'errUnknown' : 'Eroare necunoscută.', 'errUnknownCmd' : 'Comandă necunoscuta.', 'errJqui' : 'Configurație jQuery UI necunoscută. Componentele selectable, draggable și droppable trebuie să fie incluse.', 'errNode' : 'elFinder necesită ca DOM Element să fie creat.', 'errURL' : 'Configurație elFinder nevalidă! URL option nu este setat.', 'errAccess' : 'Acces interzis.', 'errConnect' : 'Nu ne-am putut conecta la backend.', 'errAbort' : 'Conexiunea a fost oprită.', 'errTimeout' : 'Conexiunea a fost Ăźntreruptă.', 'errNotFound' : 'Nu am gasit backend-ul.', 'errResponse' : 'Răspuns backend greșit.', 'errConf' : 'Configurație backend greșită.', 'errJSON' : 'Modulul PHP JSON nu este instalat.', 'errNoVolumes' : 'Volumele citibile nu sunt disponibile.', 'errCmdParams' : 'Parametri greșiți pentru comanda "$1".', 'errDataNotJSON' : 'Datele nu sunt Ăźn format JSON.', 'errDataEmpty' : 'Datele sunt goale.', 'errCmdReq' : 'Cererea către backend necesită un nume de comandă.', 'errOpen' : 'Nu am putut deschide "$1".', 'errNotFolder' : 'Obiectul nu este un dosar.', 'errNotFile' : 'Obiectul nu este un fișier.', 'errRead' : 'Nu am putut citi "$1".', 'errWrite' : 'Nu am putu scrie Ăźn "$1".', 'errPerm' : 'Nu ai permisiunea necesară.', 'errLocked' : '"$1" este blocat și nu poate fi redenumit, mutat sau șters.', 'errExists' : 'Un fișier cu numele "$1" există deja.', 'errInvName' : 'Numele pentru fișier este greșit.', 'errFolderNotFound' : 'Nu am găsit dosarul.', 'errFileNotFound' : 'Nu am găsit fișierul.', 'errTrgFolderNotFound' : 'Nu am găsit dosarul pentru destinație "$1".', 'errPopup' : 'Browserul tău a prevenit deschiderea ferestrei popup. Pentru a deschide fișierul permite deschidere ferestrei.', 'errMkdir' : 'Nu am putut crea dosarul "$1".', 'errMkfile' : 'Nu am putut crea fișierul "$1".', 'errRename' : 'Nu am putut redenumi "$1".', 'errCopyFrom' : 'Copierea fișierelor de pe volumul "$1" este interzisă.', 'errCopyTo' : 'Copierea fișierelor către volumul "$1" este interzisă.', 'errMkOutLink' : 'Nu am putut crea linkul Ăźn afara volumului rădăcină.', // from v2.1 added 03.10.2015 'errUpload' : 'Eroare de upload.', // old name - errUploadCommon 'errUploadFile' : 'Nu am putut urca "$1".', // old name - errUpload 'errUploadNoFiles' : 'Nu am găsit fișiere pentru a le urca.', 'errUploadTotalSize' : 'Datele depĂąÈ™est limita maximă de mărime.', // old name - errMaxSize 'errUploadFileSize' : 'Fișierul este prea mare.', // old name - errFileMaxSize 'errUploadMime' : 'Acest tip de fișier nu este permis.', 'errUploadTransfer' : 'Eroare la transferarea "$1".', 'errUploadTemp' : 'Nu am putut crea fișierul temporar pentru upload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Obiectul "$1" există deja Ăźn acest loc și nu poate fi Ăźnlocuit de un obiect de alt tip.', // new 'errReplace' : 'Nu am putut Ăźnlocui "$1".', 'errSave' : 'Nu am putut salva "$1".', 'errCopy' : 'Nu am putut copia "$1".', 'errMove' : 'Nu am putut muta "$1".', 'errCopyInItself' : 'Nu am putut copia "$1" Ăźn el Ăźnsuși.', 'errRm' : 'Nu am putut șterge "$1".', 'errRmSrc' : 'Nu am putut șterge fișierul sursă.', 'errExtract' : 'Nu am putut extrage fișierele din "$1".', 'errArchive' : 'Nu am putut crea arhiva.', 'errArcType' : 'Arhiva este de un tip nesuportat.', 'errNoArchive' : 'Fișierul nu este o arhiva sau este o arhivă de un tip necunoscut.', 'errCmdNoSupport' : 'Backend-ul nu suportă această comandă.', 'errReplByChild' : 'Dosarul “$1” nu poate fi Ăźnlocuit de un element pe care el Ăźl conține.', 'errArcSymlinks' : 'Din motive de securitate, arhiva nu are voie să conțină symlinks sau fișiere cu nume interzise.', // edited 24.06.2012 'errArcMaxSize' : 'Fișierul arhivei depășește mărimea maximă permisă.', 'errResize' : 'Nu am putut redimensiona "$1".', 'errResizeDegree' : 'Grad de rotație nevalid.', // added 7.3.2013 'errResizeRotate' : 'Imaginea nu a fost rotită.', // added 7.3.2013 'errResizeSize' : 'Mărimea imaginii este nevalidă.', // added 7.3.2013 'errResizeNoChange' : 'Mărimea imaginii nu a fost schimbată.', // added 7.3.2013 'errUsupportType' : 'Tipul acesta de fișier nu este suportat.', 'errNotUTF8Content' : 'Fișierul "$1" nu folosește UTF-8 și nu poate fi editat.', // added 9.11.2011 'errNetMount' : 'Nu am putut Ăźncărca "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protocol nesuportat.', // added 17.04.2012 'errNetMountFailed' : 'Încărcare eșuată.', // added 17.04.2012 'errNetMountHostReq' : 'Gazda este necesară.', // added 18.04.2012 'errSessionExpires' : 'Sesiunea a expirat datorită lipsei de activitate.', 'errCreatingTempDir' : 'Nu am putut crea fișierul temporar: "$1"', 'errFtpDownloadFile' : 'Nu am putut descarca fișierul de pe FTP: "$1"', 'errFtpUploadFile' : 'Nu am putut Ăźncărca fișierul pe FTP: "$1"', 'errFtpMkdir' : 'Nu am putut crea acest dosar pe FTP: "$1"', 'errArchiveExec' : 'Eroare la arhivarea fișierelor: "$1"', 'errExtractExec' : 'Eroare la dezarhivarea fișierelor: "$1"', 'errNetUnMount' : 'Nu am putut elimina volumul', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Nu poate fi convertit la UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Pentru a urca dosare Ăźncearcă Google Chrome.', // from v2.1 added 26.6.2015 /******************************* commands names ********************************/ 'cmdarchive' : 'Creeaza arhivă', 'cmdback' : 'Înapoi', 'cmdcopy' : 'Copiază', 'cmdcut' : 'Taie', 'cmddownload' : 'Descarcă', 'cmdduplicate' : 'Creează duplicat', 'cmdedit' : 'Modifică fișier', 'cmdextract' : 'Extrage fișierele din arhivă', 'cmdforward' : 'Înainte', 'cmdgetfile' : 'Alege fișiere', 'cmdhelp' : 'Despre acest software', 'cmdhome' : 'Acasă', 'cmdinfo' : 'Informații', 'cmdmkdir' : 'Dosar nou', 'cmdmkfile' : 'Fișier nou', 'cmdopen' : 'Deschide', 'cmdpaste' : 'Lipește', 'cmdquicklook' : 'Previzualizează', 'cmdreload' : 'ReĂźncarcă', 'cmdrename' : 'Redenumește', 'cmdrm' : 'Șterge', 'cmdsearch' : 'Găsește fișiere', 'cmdup' : 'Mergi la dosarul părinte', 'cmdupload' : 'Urcă fișiere', 'cmdview' : 'Vezi', 'cmdresize' : 'Redimensionează & rotește', 'cmdsort' : 'Sortează', 'cmdnetmount' : 'Încarcă volum din rețea', // added 18.04.2012 'cmdnetunmount': 'Elimină volum', // from v2.1 added 30.04.2012 'cmdplaces' : 'La Locuri', // added 28.12.2014 'cmdchmod' : 'Schimbă mod', // from v2.1 added 20.6.2015 /*********************************** buttons ***********************************/ 'btnClose' : 'Închide', 'btnSave' : 'Salvează', 'btnRm' : 'Șterge', 'btnApply' : 'Aplică', 'btnCancel' : 'Anulează', 'btnNo' : 'Nu', 'btnYes' : 'Da', 'btnMount' : 'Încarcă', // added 18.04.2012 'btnApprove': 'Mergi la $1 și aprobă', // from v2.1 added 26.04.2012 'btnUnmount': 'Elimină volum', // from v2.1 added 30.04.2012 'btnConv' : 'Convertește', // from v2.1 added 08.04.2014 'btnCwd' : 'Aici', // from v2.1 added 22.5.2015 'btnVolume' : 'Volum', // from v2.1 added 22.5.2015 'btnAll' : 'Toate', // from v2.1 added 22.5.2015 'btnMime' : 'Tipuri MIME', // from v2.1 added 22.5.2015 'btnFileName':'Nume fișier', // from v2.1 added 22.5.2015 'btnSaveClose': 'Salvează și Ăźnchide', // from v2.1 added 12.6.2015 /******************************** notifications ********************************/ 'ntfopen' : 'Deschide dosar', 'ntffile' : 'Deschide fișier', 'ntfreload' : 'Actualizează conținutul dosarului', 'ntfmkdir' : 'Se creează dosarul', 'ntfmkfile' : 'Se creează fișierele', 'ntfrm' : 'Șterge fișiere', 'ntfcopy' : 'Copiază fișiere', 'ntfmove' : 'Mută fișiere', 'ntfprepare' : 'Pregătește copierea fișierelor', 'ntfrename' : 'Redenumește fișiere', 'ntfupload' : 'Se urcă fișierele', 'ntfdownload' : 'Se descarcă fișierele', 'ntfsave' : 'Salvează fișiere', 'ntfarchive' : 'Se creează arhiva', 'ntfextract' : 'Se extrag fișierele din arhivă', 'ntfsearch' : 'Se caută fișierele', 'ntfresize' : 'Se redimnesionează imaginile', 'ntfsmth' : 'Se Ăźntamplă ceva', 'ntfloadimg' : 'Se Ăźncarcă imaginea', 'ntfnetmount' : 'Se Ăźncarcă volumul din rețea', // added 18.04.2012 'ntfnetunmount': 'Se elimină volumul din rețea', // from v2.1 added 30.04.2012 'ntfdim' : 'Se preiau dimensiunile imaginii', // added 20.05.2013 'ntfreaddir' : 'Se citesc informațiile dosarului', // from v2.1 added 01.07.2013 'ntfurl' : 'Se preia URL-ul din link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Se schimba modul de fișier', // from v2.1 added 20.6.2015 /************************************ dates **********************************/ 'dateUnknown' : 'necunoscută', 'Today' : 'Astăzi', 'Yesterday' : 'Ieri', 'msJan' : 'Ian', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Mai', 'msJun' : 'Iun', 'msJul' : 'Iul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Oct', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'Ianuarie', 'February' : 'Februarie', 'March' : 'Martie', 'April' : 'Aprilie', 'May' : 'Mai', 'June' : 'Iunie', 'July' : 'Iulie', 'August' : 'August', 'September' : 'Septembrie', 'October' : 'Octombrie', 'November' : 'Noiembrie', 'December' : 'Decembrie', 'Sunday' : 'Duminică', 'Monday' : 'Luni', 'Tuesday' : 'Marți', 'Wednesday' : 'Miercuri', 'Thursday' : 'Joi', 'Friday' : 'Vineri', 'Saturday' : 'SĂąmbătă', 'Sun' : 'Du', 'Mon' : 'Lu', 'Tue' : 'Ma', 'Wed' : 'Mi', 'Thu' : 'Jo', 'Fri' : 'Vi', 'Sat' : 'SĂą', /******************************** sort variants ********************************/ 'sortname' : 'după nume', 'sortkind' : 'după tip', 'sortsize' : 'după mărime', 'sortdate' : 'după dată', 'sortFoldersFirst' : 'Dosarele primele', /********************************** new items **********************************/ 'untitled file.txt' : 'FisierNou.txt', // added 10.11.2015 'untitled folder' : 'DosarNou', // added 10.11.2015 'Archive' : 'ArhivaNoua', // from v2.1 added 10.11.2015 /********************************** messages **********************************/ 'confirmReq' : 'Este necesară confirmare', 'confirmRm' : 'Ești sigur că vrei să ștergi fișierele?
      Acțiunea este ireversibilă!', 'confirmRepl' : 'Înlocuiește fișierul vechi cu cel nou?', 'confirmConvUTF8' : 'Nu este Ăźn UTF-8
      Convertim la UTF-8?
      Conținutul devine UTF-8 după salvarea conversiei.', // from v2.1 added 08.04.2014 'confirmNotSave' : 'Au avut loc modificări.
      Dacă nu salvezi se vor pierde modificările.', // from v2.1 added 15.7.2015 'apllyAll' : 'Aplică pentru toate', 'name' : 'Nume', 'size' : 'Mărime', 'perms' : 'Permisiuni', 'modify' : 'Modificat la', 'kind' : 'Tip', 'read' : 'citire', 'write' : 'scriere', 'noaccess' : 'acces interzis', 'and' : 'și', 'unknown' : 'necunoscut', 'selectall' : 'Alege toate fișierele', 'selectfiles' : 'Alege fișier(e)', 'selectffile' : 'Alege primul fișier', 'selectlfile' : 'Alege ultimul fișier', 'viewlist' : 'Vezi ca listă', 'viewicons' : 'Vezi ca icoane', 'places' : 'Locuri', 'calc' : 'Calculează', 'path' : 'Cale', 'aliasfor' : 'Alias pentru', 'locked' : 'Securizat', 'dim' : 'Dimensiuni', 'files' : 'Fișiere', 'folders' : 'Dosare', 'items' : 'Elemente', 'yes' : 'da', 'no' : 'nu', 'link' : 'Link', 'searcresult' : 'Rezultatele căutării', 'selected' : 'elemente alese', 'about' : 'Despre', 'shortcuts' : 'Scurtături', 'help' : 'Ajutor', 'webfm' : 'Manager web pentru fișiere', 'ver' : 'Versiune', 'protocolver' : 'versiune protocol', 'homepage' : 'Pagina proiectului', 'docs' : 'Documentație', 'github' : 'Fork nou pe Github', 'twitter' : 'Urmărește-ne pe twitter', 'facebook' : 'Alătura-te pe facebook', 'team' : 'Echipa', 'chiefdev' : 'chief developer', 'developer' : 'developer', 'contributor' : 'contributor', 'maintainer' : 'maintainer', 'translator' : 'translator', 'icons' : 'Icoane', 'dontforget' : 'și nu uita să-ți iei prosopul', 'shortcutsof' : 'Scurtăturile sunt dezactivate', 'dropFiles' : 'Dă drumul fișierelor aici', 'or' : 'sau', 'selectForUpload' : 'Alege fișiere pentru a le urca', 'moveFiles' : 'Mută fișiere', 'copyFiles' : 'Copiază fișiere', 'rmFromPlaces' : 'Șterge din locuri', 'aspectRatio' : 'Aspect ratio', 'scale' : 'Scală', 'width' : 'Lățime', 'height' : 'Înălțime', 'resize' : 'Redimensionează', 'crop' : 'Decupează', 'rotate' : 'Rotește', 'rotate-cw' : 'Rotește cu 90° Ăźn sensul ceasului', 'rotate-ccw' : 'Rotește cu 90° Ăźn sensul invers ceasului', 'degree' : '°', 'netMountDialogTitle' : 'Încarcă volum din rețea', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Gazdă', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Utilizator', // added 18.04.2012 'pass' : 'Parolă', // added 18.04.2012 'confirmUnmount' : 'Vrei să elimini volumul $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Drag&drop sau lipește din browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Drag&drop sau lipește fișiere aici', // from v2.1 added 07.04.2014 'encoding' : 'Encodare', // from v2.1 added 19.12.2014 'locale' : 'Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'Țintă: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Caută după tipul MIME', // from v2.1 added 22.5.2015 'owner' : 'Owner', // from v2.1 added 20.6.2015 'group' : 'Group', // from v2.1 added 20.6.2015 'other' : 'Other', // from v2.1 added 20.6.2015 'execute' : 'Execute', // from v2.1 added 20.6.2015 'perm' : 'Permission', // from v2.1 added 20.6.2015 'mode' : 'Mod', // from v2.1 added 20.6.2015 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Necunoscut', 'kindFolder' : 'Dosar', 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Alias stricat', // applications 'kindApp' : 'Aplicație', 'kindPostscript' : 'Document Postscript', 'kindMsOffice' : 'Document Microsoft Office', 'kindMsWord' : 'Document Microsoft Word', 'kindMsExcel' : 'Document Microsoft Excel', 'kindMsPP' : 'Prezentare Microsoft Powerpoint', 'kindOO' : 'Document Open Office', 'kindAppFlash' : 'Aplicație Flash', 'kindPDF' : 'Document Portabil (PDF)', 'kindTorrent' : 'Fișier Bittorrent', 'kind7z' : 'Arhivă 7z', 'kindTAR' : 'Arhivă TAR', 'kindGZIP' : 'Arhivă GZIP', 'kindBZIP' : 'Arhivă BZIP', 'kindXZ' : 'Arhivă XZ', 'kindZIP' : 'Arhivă ZIP', 'kindRAR' : 'Arhivă RAR', 'kindJAR' : 'Fișier Java JAR', 'kindTTF' : 'Font True Type', 'kindOTF' : 'Font Open Type', 'kindRPM' : 'Pachet RPM', // texts 'kindText' : 'Document text', 'kindTextPlain' : 'Text simplu', 'kindPHP' : 'Sursă PHP', 'kindCSS' : 'Fișier de stil (CSS)', 'kindHTML' : 'Document HTML', 'kindJS' : 'Sursă Javascript', 'kindRTF' : 'Text formatat (rich text)', 'kindC' : 'Sursă C', 'kindCHeader' : 'Sursă C header', 'kindCPP' : 'Sursă C++', 'kindCPPHeader' : 'Sursă C++ header', 'kindShell' : 'Script terminal Unix', 'kindPython' : 'Sursă Python', 'kindJava' : 'Sursă Java', 'kindRuby' : 'Sursă Ruby', 'kindPerl' : 'Script Perl', 'kindSQL' : 'Sursă SQL', 'kindXML' : 'Document XML', 'kindAWK' : 'Sursă AWK', 'kindCSV' : 'Valori separate de virgulă (CSV)', 'kindDOCBOOK' : 'Document Docbook XML', 'kindMarkdown' : 'Text Markdown', // added 20.7.2015 // images 'kindImage' : 'Imagine', 'kindBMP' : 'Imagine BMP', 'kindJPEG' : 'Imagine JPEG', 'kindGIF' : 'Imagine GIF', 'kindPNG' : 'Imagine PNG', 'kindTIFF' : 'Imagine TIFF', 'kindTGA' : 'Imagine TGA', 'kindPSD' : 'Imagine Adobe Photoshop', 'kindXBITMAP' : 'Imagine X bitmap', 'kindPXM' : 'Imagine Pixelmator', // media 'kindAudio' : 'Audio', 'kindAudioMPEG' : 'Audio MPEG', 'kindAudioMPEG4' : 'Audio MPEG-4', 'kindAudioMIDI' : 'Audio MIDI', 'kindAudioOGG' : 'Audio Ogg Vorbis', 'kindAudioWAV' : 'Audio WAV', 'AudioPlaylist' : 'Playlist MP3', 'kindVideo' : 'Video', 'kindVideoDV' : 'Video DV', 'kindVideoMPEG' : 'Video MPEG', 'kindVideoMPEG4' : 'Video MPEG-4', 'kindVideoAVI' : 'Video AVI', 'kindVideoMOV' : 'Video Quick Time', 'kindVideoWM' : 'Video Windows Media', 'kindVideoFlash' : 'Video Flash', 'kindVideoMKV' : 'Video Matroska', 'kindVideoOGG' : 'Video Ogg' } }; })); application/library/js/i18n/elfinder.ko.js000064400000105673147577724760014512 0ustar00/** * Korea-한ꔭ얎 translation * @author Hwang Ahreum; * @author Park Sungyong; * @author Yeonjeong Woo * @author Kwon Hyungjoo * @version 2020-04-07 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.ko = { translator : 'Hwang Ahreum; <luckmagic@naver.com>, Park Sungyong; <sungyong@gmail.com>, Yeonjeong Woo <eat_sweetly@naver.com>, Kwon Hyungjoo <hyung778@gmail.com>', language : 'Korea-한ꔭ얎', direction : 'ltr', dateFormat : 'Y-m-d H:i', // will show like: 2020-04-07 10:24 fancyDateFormat : '$1 H:i', // will show like: 였늘 10:24 nonameDateFormat : 'ymd-His', // noname upload will show like: 200407-102404 messages : { /********************************** errors **********************************/ 'error' : '였넘', 'errUnknown' : '알 수 없는 였넘.', 'errUnknownCmd' : '알 수 없는 ëȘ…ë čì–Ž.', 'errJqui' : 'jQuery UI 섀정읎 ì˜Źë°”ë„Žì§€ 않슔니닀. Selectable, draggable 및 droppable ê”Źì„± 요소가 íŹí•šë˜ì–Ž 있얎알 합니닀.', 'errNode' : 'elFinderë„Œ 생성하Ʞ 위핎서는 DOM Elementë„Œ ìš”ê”Źí•©ë‹ˆë‹€.', 'errURL' : 'elFinder 환êČœì„€ì •ìŽ ì˜Źë°”ë„Žì§€ 않슔니닀! URL 옔션읎 섀정되지 않았슔니닀.', 'errAccess' : 'ì ‘ê·Œ 제한.', 'errConnect' : 'Backend에 연êȰ할 수 없슔니닀.', 'errAbort' : '연êČ° 싀팚.', 'errTimeout' : '연êČ°ì‹œê°„ ìŽˆêłŒ.', 'errNotFound' : 'Backendë„Œ 찟을 수 없슔니닀.', 'errResponse' : 'Backend가 응닔하지 않슔니닀.', 'errConf' : 'Backend 환êČœì„€ì •ìŽ ì˜Źë°”ë„Žì§€ 않슔니닀.', 'errJSON' : 'PHP JSON ëȘšë“ˆìŽ ì„€ìč˜ë˜ì§€ 않았슔니닀.', 'errNoVolumes' : '읜을 수 있는 ëłŒë„šìŽ 없슔니닀.', 'errCmdParams' : '"$1" ëȘ…ë č에 잘ëȘ»ëœ 맀개 ëł€ìˆ˜ê°€ 있슔니닀.', 'errDataNotJSON' : '데읎터가 JSON읎 아닙니닀.', 'errDataEmpty' : '데읎터가 ëč„얎있슔니닀.', 'errCmdReq' : 'Backend 요ìČ­ì—ëŠ” ëȘ…ë čì–Ž 읎늄읎 필요합니닀.', 'errOpen' : '"$1"을(ë„Œ) ì—Ž 수 없슔니닀.', 'errNotFolder' : '폎더가 아닙니닀.', 'errNotFile' : '파음읎 아닙니닀.', 'errRead' : '"$1"을(ë„Œ) 읜을 수 없슔니닀.', 'errWrite' : '"$1"에 ì“ž 수 없슔니닀.', 'errPerm' : '권한읎 없슔니닀.', 'errLocked' : '"$1"읎(가) 잠êČš 있슔니닀, 읎동, 삭제가 불가늄합니닀', 'errExists' : 'ìŽëŻž "$1"파음읎 ìĄŽìžŹí•©ë‹ˆë‹€.', 'errInvName' : '파음ëȘ…에 ì˜Źë°”ë„Žì§€ 않은 ëŹžìžê°€ íŹí•šë˜ì—ˆìŠ”ë‹ˆë‹€.', 'errInvDirname' : '폮더ëȘ…에 ì˜Źë°”ë„Žì§€ 않은 ëŹžìžê°€ íŹí•šë˜ì—ˆìŠ”ë‹ˆë‹€.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : '폎더넌 찟을 수 없슔니닀.', 'errFileNotFound' : '파음을 찟을 수 없슔니닀.', 'errTrgFolderNotFound' : '"$1" 폎더넌 찟을 수 없슔니닀.', 'errPopup' : '람띌우저에서 팝업을 찚닚하였슔니닀. 팝업을 허용하렀멎 람띌우저 옔션을 변êČœí•˜ì„žìš”.', 'errMkdir' : '"$1" 폎더넌 생성할 수 없슔니닀.', 'errMkfile' : '"$1" 파음을 생성할 수 없슔니닀.', 'errRename' : '"$1"의 읎늄을 변êČœí•  수 없슔니닀.', 'errCopyFrom' : 'ëłŒë„  "$1"윌(로)부터 파음을 ëł”ì‚Źí•  수 없슔니닀.', 'errCopyTo' : 'ëłŒë„  "$1"에 파음을 ëł”ì‚Źí•  수 없슔니닀.', 'errMkOutLink' : 'root ëłŒë„š 왞부에 ë§íŹë„Œ 만듀 수 없슔니닀.', // from v2.1 added 03.10.2015 'errUpload' : 'ì—…ëĄœë“œ 였넘.', // old name - errUploadCommon 'errUploadFile' : '"$1"을(ë„Œ) ì—…ëĄœë“œí•  수 없슔니닀.', // old name - errUpload 'errUploadNoFiles' : 'ì—…ëĄœë“œí•  파음읎 없슔니닀.', 'errUploadTotalSize' : '데읎터가 허용된 ì”œëŒ€íŹêž°ë„Œ ìŽˆêłŒí•˜ì˜€ìŠ”ë‹ˆë‹€.', // old name - errMaxSize 'errUploadFileSize' : '파음읎 허용된 ì”œëŒ€íŹêž°ë„Œ ìŽˆêłŒí•˜ì˜€ìŠ”ë‹ˆë‹€.', // old name - errFileMaxSize 'errUploadMime' : '잘ëȘ»ëœ 파음형식입니닀.', 'errUploadTransfer' : '"$1" ì „ì†Ą 였넘.', 'errUploadTemp' : 'ì—…ëĄœë“œì— 필요한 임시파음 생성을 할 수 없슔니닀.', // from v2.1 added 26.09.2015 'errNotReplace' : '"$1"개ìČŽê°€ í˜„ìžŹ 위ìč˜ì— ìŽëŻž ìĄŽìžŹí•˜ë©° 닀넞 유형의 개ìȮ로 대ìČŽ 할 수 없슔니닀.', // new 'errReplace' : '"$1"을(ë„Œ) 변êČœí•  수 없슔니닀.', 'errSave' : '"$1"을(ë„Œ) 저임할 수 없슔니닀.', 'errCopy' : '"$1"을(ë„Œ) ëł”ì‚Źí•  수 없슔니닀.', 'errMove' : '"$1"을(ë„Œ) 읎동할 수 없슔니닀.', 'errCopyInItself' : '"$1"을(ë„Œ) 자Ʞ 자신에êȌ ëł”ì‚Źí•  수 없슔니닀.', 'errRm' : '"$1"의 읎늄을 변êČœí•  수 없슔니닀.', 'errTrash' : 'íœŽì§€í†”ìœŒëĄœ ëłŽë‚Œ 수 없슔니닀.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'ì›ëłž 파음을 제거할 수 없슔니닀.', 'errExtract' : '"$1"에 압축을 풀 수 없슔니닀.', 'errArchive' : '압축파음을 생성할 수 없슔니닀.', 'errArcType' : '지원하지 않는 압축파음 형식입니닀.', 'errNoArchive' : '압축파음읎 아니거나 지원하지 않는 압축파음 형식입니닀.', 'errCmdNoSupport' : 'Backend에서 읎 ëȘ…ë č을 지원하지 않슔니닀.', 'errReplByChild' : '"$1" 폎더에 ëźì–Žì“žìˆ˜ 없슔니닀.', 'errArcSymlinks' : 'ëłŽì•ˆìƒì˜ ìŽìœ ëĄœ 압축파음읎 ì‹ŹëłŒëŠ­ ë§íŹë„Œ íŹí•ší•˜ê±°ë‚˜ 허용되지 않는 읎늄읎 있을 êČœìš° 압축 핎제가 불가늄합니닀.', // edited 24.06.2012 'errArcMaxSize' : '압축파음읎 허용된 ì”œëŒ€íŹêž°ë„Œ ìŽˆêłŒí•˜ì˜€ìŠ”ë‹ˆë‹€.', 'errResize' : '"$1"의 íŹêž° 변êČœì„ 할 수 없슔니닀.', 'errResizeDegree' : '회전가늄한 각도가 아닙니닀.', // added 7.3.2013 'errResizeRotate' : 'ìŽëŻžì§€ë„Œ 회전할 수 없슔니닀.', // added 7.3.2013 'errResizeSize' : 'ì˜Źë°”ë„Žì§€ 않은 íŹêž°ì˜ ìŽëŻžì§€ìž…ë‹ˆë‹€.', // added 7.3.2013 'errResizeNoChange' : 'ìŽëŻžì§€ íŹêž°ê°€ 변êČœë˜ì§€ 않았슔니닀.', // added 7.3.2013 'errUsupportType' : '지원하지 않는 파음 형식.', 'errNotUTF8Content' : '파음 "$1"은 UTF-8 형식읎 아니얎서 펞집할 수 없슔니닀.', // added 9.11.2011 'errNetMount' : '"$1"을(ë„Œ) 마욎튞할 수 없슔니닀.', // added 17.04.2012 'errNetMountNoDriver' : '지원되지 않는 í”„ëĄœí† ìœœ.', // added 17.04.2012 'errNetMountFailed' : '마욎드 싀팚.', // added 17.04.2012 'errNetMountHostReq' : '혞슀튞가 필요합니닀.', // added 18.04.2012 'errSessionExpires' : '활동읎 없얎 섞션읎 ë§ŒëŁŒë˜ì—ˆìŠ”ë‹ˆë‹€.', 'errCreatingTempDir' : '임시 폮더 생성에 싀팚했슔니닀: "$1"', 'errFtpDownloadFile' : 'FTPë„Œ 톔한 ë‹€ìšŽëĄœë“œì— 싀팚했슔니닀: "$1"', 'errFtpUploadFile' : 'FTP에 ì—…ëĄœë“œ 싀팚했슔니닀: "$1"', 'errFtpMkdir' : 'FTP에서 폮더 생성에 싀팚했슔니닀: "$1"', 'errArchiveExec' : '압축쀑 였넘가 발생했슔니닀: "$1"', 'errExtractExec' : '압축핎제쀑 였넘가 발생했슔니닀: "$1"', 'errNetUnMount' : '마욎튞넌 핎제할 수 없슔니닀.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'UTF-8로 변환할 수 없슔니닀.', // from v2.1 added 08.04.2014 'errFolderUpload' : '폎더넌 ì—…ëĄœë“œ 하렀멎 씜신 람띌우저넌 ì‚Źìš©í•˜ì„žìš”.', // from v2.1 added 26.6.2015 'errSearchTimeout' : '"$1" êČ€ìƒ‰ì€‘ 시간을 ìŽˆêłŒí•˜ì˜€ìŠ”ë‹ˆë‹€. 음부 êČ°êłŒë§Œ 표시됩니닀.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'ìžŹìžìŠìŽ 필요합니닀.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : '선택 가늄한 씜대 개수는 $1개입니닀.', // from v2.1.17 added 17.10.2016 'errRestore' : '휎지톔에서 ëł”ì›í•  수 없슔니닀. ëł”ì›í•  위ìč˜ë„Œ 확읞할 수 없슔니닀.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : '읎 파음 형식을 위한 펞집Ʞ넌 찟지 ëȘ»í–ˆìŠ”니닀.', // from v2.1.25 added 23.5.2017 'errServerError' : '서ëČ„ìžĄì—ì„œ 였넘가 발생했슔니닀.', // from v2.1.25 added 16.6.2017 'errEmpty' : '"$1" 폎더넌 ëč„ìšž 수 없슔니닀.', // from v2.1.25 added 22.6.2017 'moreErrors' : '$1개의 였넘가 더 발생했슔니닀.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : '압축파음생성', 'cmdback' : 'ë’€ëĄœ', 'cmdcopy' : 'ëł”ì‚Ź', 'cmdcut' : '자넎Ʞ', 'cmddownload' : 'ë‹€ìšŽëĄœë“œ', 'cmdduplicate' : 'ì‚Źëłž', 'cmdedit' : '펞집', 'cmdextract' : '압축풀Ʞ', 'cmdforward' : 'ì•žìœŒëĄœ', 'cmdgetfile' : '선택', 'cmdhelp' : '읎 소프튞웚얎는', 'cmdhome' : '홈', 'cmdinfo' : 'íŒŒìŒì •ëłŽ', 'cmdmkdir' : '새 폮더', 'cmdmkdirin' : '새 폮더로', // from v2.1.7 added 19.2.2016 'cmdmkfile' : '새 파음', 'cmdopen' : 'ì—Žêž°', 'cmdpaste' : 'ë¶™ì—Źë„Łêž°', 'cmdquicklook' : 'ëŻžëŠŹëłŽêž°', 'cmdreload' : 'ìƒˆëĄœêł ìčš', 'cmdrename' : '읎늄바꟞Ʞ', 'cmdrm' : '삭제', 'cmdtrash' : 'íœŽì§€í†”ìœŒëĄœ', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'ëł”ì›', //from v2.1.24 added 3.5.2017 'cmdsearch' : '파음찟Ʞ', 'cmdup' : '상위폎더', 'cmdupload' : 'ì—…ëĄœë“œ', 'cmdview' : 'ëłŽêž°', 'cmdresize' : 'ìŽëŻžì§€ íŹêž° 변êČœ & 회전', 'cmdsort' : 'ì •ë Ź', 'cmdnetmount' : 'ë„€íŠžì›ŒíŹ ëłŒë„š 마욎튞', // added 18.04.2012 'cmdnetunmount': '마욎튞 í•Žì œ', // from v2.1 added 30.04.2012 'cmdplaces' : '슐êČšì°Ÿêž°ëĄœ', // added 28.12.2014 'cmdchmod' : 'ëȘšë“œ 변êČœ', // from v2.1 added 20.6.2015 'cmdopendir' : '폮더 ì—Žêž°', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'ì»ŹëŸŒ 넓읎 쎈Ʞ화', // from v2.1.13 added 12.06.2016 'cmdfullscreen': '전ìČŽ 화멎', // from v2.1.15 added 03.08.2016 'cmdmove' : '읎동', // from v2.1.15 added 21.08.2016 'cmdempty' : '폮더 ëč„ìš°êž°', // from v2.1.25 added 22.06.2017 'cmdundo' : '싀행 췚소', // from v2.1.27 added 31.07.2017 'cmdredo' : '닀시 싀행', // from v2.1.27 added 31.07.2017 'cmdpreference': '환êČœì„€ì •', // from v2.1.27 added 03.08.2017 'cmdselectall' : '전ìČŽ 선택', // from v2.1.28 added 15.08.2017 'cmdselectnone': '선택 췚소', // from v2.1.28 added 15.08.2017 'cmdselectinvert': '선택 반전', // from v2.1.28 added 15.08.2017 'cmdopennew' : '새 ì°œìœŒëĄœ ì—Žêž°', // from v2.1.38 added 3.4.2018 'cmdhide' : '숚ꞰꞰ (환êČœì„€ì •)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'ë‹«êž°', 'btnSave' : '저임', 'btnRm' : '삭제', 'btnApply' : '적용', 'btnCancel' : '췚소', 'btnNo' : '아니였', 'btnYes' : '예', 'btnMount' : '마욎튞', // added 18.04.2012 'btnApprove': '$1로 읎동 및 ìŠč읞', // from v2.1 added 26.04.2012 'btnUnmount': '마욎튞 í•Žì œ', // from v2.1 added 30.04.2012 'btnConv' : '변환', // from v2.1 added 08.04.2014 'btnCwd' : 'ì—Źêž°', // from v2.1 added 22.5.2015 'btnVolume' : 'ëłŒë„š', // from v2.1 added 22.5.2015 'btnAll' : '전ìČŽ', // from v2.1 added 22.5.2015 'btnMime' : 'MIME 타입', // from v2.1 added 22.5.2015 'btnFileName':'파음 읎늄', // from v2.1 added 22.5.2015 'btnSaveClose': '저임후 ë‹«êž°', // from v2.1 added 12.6.2015 'btnBackup' : '백업', // fromv2.1 added 28.11.2015 'btnRename' : 'ìŽëŠ„ëł€êČœ', // from v2.1.24 added 6.4.2017 'btnRenameAll' : '전ìČŽìŽëŠ„ 변êČœ', // from v2.1.24 added 6.4.2017 'btnPrevious' : '읎전 ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : '닀음 ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : '닀넞 ìŽëŠ„ìœŒëĄœ 저임하Ʞ', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : '폮더 ì—Žêž°', 'ntffile' : '파음 ì—Žêž°', 'ntfreload' : 'ìƒˆëĄœêł ìčš', 'ntfmkdir' : '폮더 생성', 'ntfmkfile' : '파음 생성', 'ntfrm' : '삭제', 'ntfcopy' : 'ëł”ì‚Ź', 'ntfmove' : '읎동', 'ntfprepare' : 'ëł”ì‚Ź 쀀ëč„', 'ntfrename' : '읎늄바꟞Ʞ', 'ntfupload' : 'ì—…ëĄœë“œ', 'ntfdownload' : 'ë‹€ìšŽëĄœë“œ', 'ntfsave' : '저임하Ʞ', 'ntfarchive' : '압축파음만듀Ʞ', 'ntfextract' : '압축풀Ʞ', 'ntfsearch' : 'êČ€ìƒ‰', 'ntfresize' : 'ìŽëŻžì§€ íŹêž° 변êČœ', 'ntfsmth' : '작업쀑 >_<', 'ntfloadimg' : 'ìŽëŻžì§€ ë¶ˆëŸŹì˜€ëŠ” 쀑', 'ntfnetmount' : 'ë„€íŠžì›ŒíŹ ëłŒë„š 마욎튞 쀑', // added 18.04.2012 'ntfnetunmount': 'ë„€íŠžì›ŒíŹ ëłŒë„š 마욎튞 í•Žì œ 쀑', // from v2.1 added 30.04.2012 'ntfdim' : 'ìŽëŻžì§€ 핎상도 가젞였는 쀑', // added 20.05.2013 'ntfreaddir' : '폮더 ì •ëłŽ 읜는 쀑', // from v2.1 added 01.07.2013 'ntfurl' : '링큏 URL 가젞였는 쀑', // from v2.1 added 11.03.2014 'ntfchmod' : '파음 ëȘšë“œ 변êČœí•˜ëŠ” 쀑', // from v2.1 added 20.6.2015 'ntfpreupload': 'ì—…ëĄœë“œëœ 파음ëȘ… êČ€ìŠ 쀑', // from v2.1 added 31.11.2015 'ntfzipdl' : 'ë‹€ìšŽëĄœë“œí•  파음 생성 쀑', // from v2.1.7 added 23.1.2016 'ntfparents' : 'êČœëĄœ ì •ëłŽ 가젞였는 쀑', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'ì—…ëĄœë“œëœ 파음 ìȘ늏 쀑', // from v2.1.17 added 2.11.2016 'ntftrash' : 'íœŽì§€í†”ìœŒëĄœ 읎동 쀑', // from v2.1.24 added 2.5.2017 'ntfrestore' : '휎지톔에서 ëł”ì› 쀑', // from v2.1.24 added 3.5.2017 'ntfchkdir' : '대상 폮더 점êȀ 쀑', // from v2.1.24 added 3.5.2017 'ntfundo' : '읎전 작업 췚소 쀑', // from v2.1.27 added 31.07.2017 'ntfredo' : '췚소된 작업 닀시 하는 쀑', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'ë‚Žìš© 확읞 쀑', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : '휎지톔', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : '알 수 없음', 'Today' : '였늘', 'Yesterday' : 'ì–Žì œ', 'msJan' : '1월', 'msFeb' : '2월', 'msMar' : '3월', 'msApr' : '4월', 'msMay' : '5월', 'msJun' : '6월', 'msJul' : '7월', 'msAug' : '8월', 'msSep' : '9월', 'msOct' : '10월', 'msNov' : '11월', 'msDec' : '12월', 'January' : '1월', 'February' : '2월', 'March' : '3월', 'April' : '4월', 'May' : '5월', 'June' : '6월', 'July' : '7월', 'August' : '8월', 'September' : '9월', 'October' : '10월', 'November' : '11월', 'December' : '12월', 'Sunday' : '음요음', 'Monday' : '월요음', 'Tuesday' : '화요음', 'Wednesday' : '수요음', 'Thursday' : 'ëȘ©ìš”음', 'Friday' : 'ꞈ요음', 'Saturday' : '토요음', 'Sun' : '음', 'Mon' : '월', 'Tue' : '화', 'Wed' : '수', 'Thu' : 'ëȘ©', 'Fri' : 'ꞈ', 'Sat' : '토', /******************************** sort variants ********************************/ 'sortname' : '읎늄', 'sortkind' : 'ìą…ë„˜', 'sortsize' : 'íŹêž°', 'sortdate' : '날짜', 'sortFoldersFirst' : '폮더 뚌저', 'sortperm' : 'íŒëŻžì…˜ëł„', // from v2.1.13 added 13.06.2016 'sortmode' : 'ëȘšë“œëł„', // from v2.1.13 added 13.06.2016 'sortowner' : 'ì†Œìœ ìžëł„', // from v2.1.13 added 13.06.2016 'sortgroup' : 'ê·žëŁč별', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'íŠžëŠŹë·°ë„ 같읎', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : '새파음.txt', // added 10.11.2015 'untitled folder' : '새폎더', // added 10.11.2015 'Archive' : '새아ìčŽìŽëžŒ', // from v2.1 added 10.11.2015 'untitled file' : '새파음.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: 파음', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : '확읞', 'confirmRm' : '읎 파음을 ì •ë§ëĄœ 삭제 하êČ ìŠ”ë‹ˆêčŒ?
      싀행 후 되돌멮 수 없슔니닀!', 'confirmRepl' : '였래된 파음을 새 íŒŒìŒëĄœ 바꟞시êČ ìŠ”ë‹ˆêčŒ? (폎더가 íŹí•šë˜ì–Ž 있윌멎 ëł‘í•©ë©ë‹ˆë‹€. 백업 및 ꔐìČŽí•˜ë €ë©Ž 백업을 선택하섞요.)', 'confirmRest' : 'ìŽëŻž 있는 파음을 휎지톔에 있는 íŒŒìŒëĄœ ꔐìČŽí•˜ì‹œêČ ìŠ”ë‹ˆêčŒ?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'UTF-8읎 아닙니닀
      UTF-8로 변환할êčŒìš”?
      변환후 저임하멎 UTF-8로 바뀝니닀.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : '읎 파음의 읞윔딩 타입을 알아낎지 ëȘ»í–ˆìŠ”니닀. 펞집하렀멎 ìž„ì‹œëĄœ UTF-8로 ëł€í™˜í•Žì•Œ 합니닀.
      읎 파음의 읞윔딩을 ì„ íƒí•ŽìŁŒì„žìš”.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : '변êČœëœ 부분읎 있슔니닀.
      저임하지 않는닀멎 í˜„ìžŹ 작업쀑읞 낎용을 잃을 수 있슔니닀.', // from v2.1 added 15.7.2015 'confirmTrash' : 'íœŽì§€í†”ìœŒëĄœ 읎동하시êČ ìŠ”ë‹ˆêčŒ?', //from v2.1.24 added 29.4.2017 'confirmMove' : '읎 파음을 정말 "$1"(윌)로 읎동하시êČ ìŠ”ë‹ˆêčŒ?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'ëȘšë‘ 적용', 'name' : '읎늄', 'size' : 'íŹêž°', 'perms' : '권한', 'modify' : '수정된 시간', 'kind' : 'ìą…ë„˜', 'read' : '읜Ʞ', 'write' : 'ì“°êž°', 'noaccess' : 'ì•Ąì„žìŠ€ 불가', 'and' : '와', 'unknown' : '알 수 없음', 'selectall' : 'ëȘšë“  파음 선택', 'selectfiles' : '파음 선택', 'selectffile' : 'ìČ«ëČˆì§ž 파음 선택', 'selectlfile' : '마지막 파음 선택', 'viewlist' : 'ëŠŹìŠ€íŠž ëłŽêž°', 'viewicons' : '아읎윘 ëłŽêž°', 'viewSmall' : '작은 아읎윘', // from v2.1.39 added 22.5.2018 'viewMedium' : '쀑간 아읎윘', // from v2.1.39 added 22.5.2018 'viewLarge' : '큰 아읎윘', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'ì•„ìŁŒ 큰 아읎윘', // from v2.1.39 added 22.5.2018 'places' : '슐êČšì°Ÿêž°', 'calc' : 'êł„ì‚°', 'path' : 'êČœëĄœ', 'aliasfor' : '별ëȘ…', 'locked' : '잠ꞈ', 'dim' : 'íŹêž°', 'files' : '파음', 'folders' : '폮더', 'items' : '아읎템', 'yes' : '예', 'no' : '아니였', 'link' : '링큏', 'searcresult' : 'êČ€ìƒ‰ êČ°êłŒ', 'selected' : '아읎템 선택', 'about' : '읎 í”„ëĄœê·žëžšì€..', 'shortcuts' : '닚축아읎윘', 'help' : '도움말', 'webfm' : 'ì›č 파음맀니저', 'ver' : 'ëČ„ì „', 'protocolver' : 'í”„ëĄœí† ìœœ ëČ„ì „', 'homepage' : '홈페읎지', 'docs' : 'ëŹžì„œ', 'github' : 'Github에서 íŹíŹí•˜êž°', 'twitter' : '튞위터에서 íŒ”ëĄœìš°í•˜êž°', 'facebook' : '페읎슀북에서 가입하Ʞ', 'team' : '팀', 'chiefdev' : '개발팀임', 'developer' : '개발자', 'contributor' : 'êł”í—Œìž', 'maintainer' : 'êŽ€ëŠŹìž', 'translator' : 'ëČˆì—­', 'icons' : '아읎윘', 'dontforget' : 'ê·žëŠŹêł  수걎 가젞가는 êČƒì„ 잊지 마섞요', 'shortcutsof' : '닚축아읎윘 ì‚Źìš©ë¶ˆê°€', 'dropFiles' : 'ì—Źêž°ëĄœ 읎동하Ʞ', 'or' : '또는', 'selectForUpload' : 'ì—…ëĄœë“œ 파음 선택', 'moveFiles' : '파음 읎동', 'copyFiles' : '파음 ëł”ì‚Ź', 'restoreFiles' : 'ëł”ì›í•˜êž°', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'í˜„ìžŹ 폎더에서 삭제하Ʞ', 'aspectRatio' : '화멎ëč„윚', 'scale' : 'íŹêž°', 'width' : 'ê°€ëĄœ', 'height' : 'ì„žëĄœ', 'resize' : 'ì‚ŹìŽìŠˆ 변êČœ', 'crop' : '자넎Ʞ', 'rotate' : '회전', 'rotate-cw' : 'ë°˜ì‹œêł„ë°©í–„ 90도 회전', 'rotate-ccw' : 'ì‹œêł„ë°©í–„ 90도 회전', 'degree' : '도', 'netMountDialogTitle' : 'ë„€íŠžì›ŒíŹ ëłŒë„š 마욎튞', // added 18.04.2012 'protocol' : 'í”„ëĄœí† ìœœ', // added 18.04.2012 'host' : '혞슀튞', // added 18.04.2012 'port' : '포튾', // added 18.04.2012 'user' : 'ì‚Źìš©ìž', // added 18.04.2012 'pass' : 'ëč„ë°€ëȈ혞', // added 18.04.2012 'confirmUnmount' : '$1을(ë„Œ) 마욎튞 핎제하시êČ ìŠ”ë‹ˆêčŒ?', // from v2.1 added 30.04.2012 'dropFilesBrowser': '람띌우저에서 파음을 끌얎였거나 ë¶™ì—Źë„ŁìœŒì„žìš”', // from v2.1 added 30.05.2012 'dropPasteFiles' : '파음을 끌얎였거나, íŽëŠœëłŽë“œì˜ URL읎나 ìŽëŻžì§€ë“€ì„ ë¶™ì—Źë„ŁìœŒì„žìš”', // from v2.1 added 07.04.2014 'encoding' : '읞윔딩', // from v2.1 added 19.12.2014 'locale' : 'ëĄœìŒ€ìŒ', // from v2.1 added 19.12.2014 'searchTarget' : '대상: $1', // from v2.1 added 22.5.2015 'searchMime' : 'ìž…ë „í•œ MIME íƒ€ìž…ìœŒëĄœ êČ€ìƒ‰í•˜êž°', // from v2.1 added 22.5.2015 'owner' : '소유자', // from v2.1 added 20.6.2015 'group' : 'ê·žëŁč', // from v2.1 added 20.6.2015 'other' : '귞왞', // from v2.1 added 20.6.2015 'execute' : '싀행', // from v2.1 added 20.6.2015 'perm' : '권한', // from v2.1 added 20.6.2015 'mode' : 'ëȘšë“œ', // from v2.1 added 20.6.2015 'emptyFolder' : 'ëčˆ íŽë”ìž…ë‹ˆë‹€', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'ëčˆ íŽë”ìž…ë‹ˆë‹€\\A 드래드 ì•€ ë“œëĄ­ìœŒëĄœ 파음을 추가하섞요', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'ëčˆ íŽë”ìž…ë‹ˆë‹€\\A êžžêȌ 눌러 파음을 추가하섞요', // from v2.1.6 added 30.12.2015 'quality' : '품질', // from v2.1.6 added 5.1.2016 'autoSync' : '자동 동Ʞ', // from v2.1.6 added 10.1.2016 'moveUp' : 'ìœ„ëĄœ 읎동', // from v2.1.6 added 18.1.2016 'getLink' : 'URL 링큏 가젞였Ʞ', // from v2.1.7 added 9.2.2016 'selectedItems' : '선택된 항ëȘ© ($1)', // from v2.1.7 added 2.19.2016 'folderId' : '폮더 ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : '였프띌읞 ì ‘ê·Œ 허용', // from v2.1.10 added 3.25.2016 'reAuth' : 'ìžŹìžìŠí•˜êž°', // from v2.1.10 added 3.25.2016 'nowLoading' : 'ëĄœë”©ì€‘...', // from v2.1.12 added 4.26.2016 'openMulti' : 'ì—ŹëŸŹ 파음 ì—Žêž°', // from v2.1.12 added 5.14.2016 'openMultiConfirm': '$1 파음을 ì—Žë €êł  합니닀. 람띌우저에서 ì—ŽêČ ìŠ”ë‹ˆêčŒ?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'êČ€ìƒ‰êČ°êłŒê°€ 없슔니닀.', // from v2.1.12 added 5.16.2016 'editingFile' : '펞집쀑읞 파음입니닀.', // from v2.1.13 added 6.3.2016 'hasSelected' : '$1개넌 선택했슔니닀.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'íŽëŠœëłŽë“œì— $1개가 있슔니닀.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : '슝분 êČ€ìƒ‰ì€ í˜„ìžŹ ëłŽêž°ì—ì„œë§Œ 가늄합니닀.', // from v2.1.13 added 6.30.2016 'reinstate' : 'ëł”ì›', // from v2.1.15 added 3.8.2016 'complete' : '$1 ì™„ëŁŒ', // from v2.1.15 added 21.8.2016 'contextmenu' : '컚텍슀튞 메뉎', // from v2.1.15 added 9.9.2016 'pageTurning' : '페읎지 전환', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'ëłŒë„š 룹튾', // from v2.1.16 added 16.9.2016 'reset' : '쎈Ʞ화', // from v2.1.16 added 1.10.2016 'bgcolor' : 'ë°°êČœìƒ‰', // from v2.1.16 added 1.10.2016 'colorPicker' : '색 선택Ʞ', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px ê·žëŠŹë“œ', // from v2.1.16 added 4.10.2016 'enabled' : '활성', // from v2.1.16 added 4.10.2016 'disabled' : 'ëč„활성', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'í˜„ìžŹ ëłŽêž°ì—ëŠ” êČ€ìƒ‰êČ°êłŒê°€ 없슔니닀.\\A[Enter]ë„Œ 눌러 êČ€ìƒ‰ 대상을 확임하섞요.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'í˜„ìžŹ ëłŽêž°ì—ëŠ” ìČ« Ꞁ자 êČ€ìƒ‰ êČ°êłŒê°€ 없슔니닀.', // from v2.1.23 added 24.3.2017 'textLabel' : '텍슀튞 띌ëČš', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 분 낚았슔니닀', // from v2.1.17 added 13.11.2016 'openAsEncoding' : '선택한 ìžìœ”ë”©ìœŒëĄœ 닀시 ì—Žêž°', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : '선택한 ìžìœ”ë”©ìœŒëĄœ 저임하Ʞ', // from v2.1.19 added 2.12.2016 'selectFolder' : '폮더 선택', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'ìČ« Ꞁ자 êČ€ìƒ‰', // from v2.1.23 added 24.3.2017 'presets' : 'í”„ëŠŹì…‹', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'íœŽì§€í†”ìœŒëĄœ ì˜źêž°êž°ì—” 항ëȘ©ìŽ 너묮 많슔니닀.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Ꞁ자영역', // from v2.1.25 added 14.6.2017 'folderToEmpty' : '"$1" 폎더넌 ëč„ìš°ì„žìš”.', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : '"$1" 폎더에 ì•„ëŹŽêȃ도 없슔니닀.', // from v2.1.25 added 22.6.2017 'preference' : '환êČœì„€ì •', // from v2.1.26 added 28.6.2017 'language' : 'ì–žì–Ž 섀정', // from v2.1.26 added 28.6.2017 'clearBrowserData': '읎 람띌우저에 저임된 섀정값 쎈Ʞ화하Ʞ', // from v2.1.26 added 28.6.2017 'toolbarPref' : '툮바 섀정', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 Ꞁ자 낚았슔니닀.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 쀄 낚았슔니닀.', // from v2.1.52 added 16.1.2020 'sum' : 'í•©êł„', // from v2.1.29 added 28.9.2017 'roughFileSize' : '대랔적읞 파음 íŹêž°', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : '마우슀넌 가젞갈 때 대화찜 요소에 쎈점 맞추Ʞ', // from v2.1.30 added 2.11.2017 'select' : '선택', // from v2.1.30 added 23.11.2017 'selectAction' : '파음 선택시 동작', // from v2.1.30 added 23.11.2017 'useStoredEditor' : '마지막 ì‚Źìš©í•œ íŽžì§‘êž°ëĄœ ì—Žêž°', // from v2.1.30 added 23.11.2017 'selectinvert' : '선택 반전', // from v2.1.30 added 25.11.2017 'renameMultiple' : '선택한 $1을(ë„Œ) $2와 같읎 바꟞êČ ìŠ”ë‹ˆêčŒ?
      읎 작업은 되돌멮 수 없슔니닀!', // from v2.1.31 added 4.12.2017 'batchRename' : '음ꎄ 읎늄 바꟞Ʞ', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ 숫자', // from v2.1.31 added 8.12.2017 'asPrefix' : 'ì ‘ë‘ì‚Ź 추가', // from v2.1.31 added 8.12.2017 'asSuffix' : 'ì ‘ëŻžì‚Ź 추가', // from v2.1.31 added 8.12.2017 'changeExtention' : '확임자 변êČœ', // from v2.1.31 added 8.12.2017 'columnPref' : 'ì‚ŹìŽë“œë°” 섀정 (ëŠŹìŠ€íŠž ëłŽêž°)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'ëȘšë“  변êČœì€ 아ìčŽìŽëžŒì— 슉시 반영됩니닀.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : '읎 ëłŒë„šì˜ 마욎튞넌 핎제할 때êčŒì§€ëŠ” ì–Žë– í•œ 변êČœì‚Źí•­ë„ 반영되지 않슔니닀.', // from v2.1.33 added 2.3.2018 'unmountChildren' : '아래의 ëłŒë„šë“€ë„ 읎 ëłŒë„šêłŒ 핚께 마욎튞가 핎제됩니닀. êł„ì†í•˜ì‹œêČ ìŠ”ë‹ˆêčŒ?', // from v2.1.33 added 5.3.2018 'selectionInfo' : '선택 ì •ëłŽ', // from v2.1.33 added 7.3.2018 'hashChecker' : '파음 í•Žì‰Ź ì•Œêł ëŠŹìŠ˜', // from v2.1.33 added 10.3.2018 'infoItems' : 'ì •ëłŽ (선택 ì •ëłŽ 팹널)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': '나가Ʞ 위핎서 한 ëȈ 더 누넎섞요.', // from v2.1.38 added 1.4.2018 'toolbar' : '툮바', // from v2.1.38 added 4.4.2018 'workspace' : 'ìž‘ì—…êł”ê°„', // from v2.1.38 added 4.4.2018 'dialog' : '대화상자', // from v2.1.38 added 4.4.2018 'all' : '전ìČŽ', // from v2.1.38 added 4.4.2018 'iconSize' : '아읎윘 íŹêž° (아읎윘 ëłŽêž°)', // from v2.1.39 added 7.5.2018 'editorMaximized' : '씜대화된 펞집Ʞ 찜을 엜니닀', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'í˜„ìžŹ APIë„Œ 톔한 ëł€í™˜ìŽ ë¶ˆê°€ëŠ„í•˜ëŻ€ëĄœ ì›č ì‚ŹìŽíŠžì—ì„œ ëł€í™˜í•˜ì‹œêž° 바랍니닀.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : '변환 후 변환된 파음을 저임하Ʞ 위핎서는 파음 URL읎나 ë‹€ìšŽëĄœë“œë°›ì€ 파음을 ì—…ëĄœë“œ í•Žì•Œ 합니닀.', //from v2.1.40 added 8.7.2018 'convertOn' : '$1 ì‚ŹìŽíŠžì—ì„œ ëł€í™˜í•˜ì‹œêž° 바랍니닀.', // from v2.1.40 added 10.7.2018 'integrations' : '톔합', // from v2.1.40 added 11.7.2018 'integrationWith' : 'elFinder에는 ë‹€ìŒêłŒ 같은 왞부 서ëč„슀가 톔합되얎 있슔니닀. 읎용하Ʞ 전에 읎용 앜ꎀ, ê°œìžì •ëłŽ ëłŽí˜žì •ì±… 등을 확읞하시Ʞ 바랍니닀.', // from v2.1.40 added 11.7.2018 'showHidden' : '숚êČšì§„ 파음 표시', // from v2.1.41 added 24.7.2018 'hideHidden' : '숚êČšì§„ 파음 숚ꞰꞰ', // from v2.1.41 added 24.7.2018 'toggleHidden' : '숚êČšì§„ 항ëȘ© 표시/숚ꞰꞰ', // from v2.1.41 added 24.7.2018 'makefileTypes' : '"새 파음"에서 ì‚Źìš©í•  파음 형식', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : '텍슀튞 파음 유형', // from v2.1.41 added 7.8.2018 'add' : '추가', // from v2.1.41 added 7.8.2018 'theme' : '테마', // from v2.1.43 added 19.10.2018 'default' : 'êž°ëłžê°’', // from v2.1.43 added 19.10.2018 'description' : 'ì„€ëȘ…', // from v2.1.43 added 19.10.2018 'website' : 'ì›čì‚ŹìŽíŠž', // from v2.1.43 added 19.10.2018 'author' : '저자', // from v2.1.43 added 19.10.2018 'email' : '읎메음', // from v2.1.43 added 19.10.2018 'license' : '띌읎선슀', // from v2.1.43 added 19.10.2018 'exportToSave' : '읎 파음은 저임될 수 없슔니닀. 펞집한 낎용을 유지하렀멎 PC로 ë‚ŽëłŽë‚Žì‹œêž° 바랍니닀.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': '파음을 두 ëȈ íŽëŠ­í•˜ì—Ź 선택하섞요.', // from v2.1.47 added 22.1.2019 'useFullscreen' : '전ìČŽ 화멎 ëȘšë“œ ì‚Źìš©', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : '알 수 없음', 'kindRoot' : 'Root ëłŒë„š', // from v2.1.16 added 16.10.2016 'kindFolder' : '폮더', 'kindSelects' : '선택', // from v2.1.29 added 29.8.2017 'kindAlias' : '별ìč­', 'kindAliasBroken' : '손상된 별ìč­', // applications 'kindApp' : 'ì‘ìš©í”„ëĄœê·žëžš', 'kindPostscript' : 'Postscript ëŹžì„œ', 'kindMsOffice' : 'Microsoft Office ëŹžì„œ', 'kindMsWord' : 'Microsoft Word ëŹžì„œ', 'kindMsExcel' : 'Microsoft Excel ëŹžì„œ', 'kindMsPP' : 'Microsoft Powerpoint 프레젠테읎션', 'kindOO' : 'Open Office ëŹžì„œ', 'kindAppFlash' : 'í”Œëž˜ì‰Ź 파음', 'kindPDF' : 'PDF ëŹžì„œ', 'kindTorrent' : 'ëč„튞토렌튞 파음', 'kind7z' : '7z 압축파음', 'kindTAR' : 'TAR 압축파음', 'kindGZIP' : 'GZIP 압축파음', 'kindBZIP' : 'BZIP 압축파음', 'kindXZ' : 'XZ 압축파음', 'kindZIP' : 'ZIP 압축파음', 'kindRAR' : 'RAR 압축파음', 'kindJAR' : '자바 JAR 파음', 'kindTTF' : '튾룹 타입 Ꞁꌎ', 'kindOTF' : '였픈 타입 Ꞁꌎ', 'kindRPM' : 'RPM 팚킀지', // texts 'kindText' : '텍슀튞 ëŹžì„œ', 'kindTextPlain' : '음반 텍슀튞', 'kindPHP' : 'PHP 소슀', 'kindCSS' : 'CSS ëŹžì„œ', 'kindHTML' : 'HTML ëŹžì„œ', 'kindJS' : 'ìžë°”ìŠ€íŹëŠœíŠž 소슀', 'kindRTF' : 'RTF 형식', 'kindC' : 'C 소슀', 'kindCHeader' : 'C 헀더 소슀', 'kindCPP' : 'C++ 소슀', 'kindCPPHeader' : 'C++ 헀더 소슀', 'kindShell' : '유닉슀 쉘 ìŠ€íŹëŠœíŠž', 'kindPython' : 'íŒŒìŽìŹ 소슀', 'kindJava' : '자바 소슀', 'kindRuby' : '룚ëč„ ì†ŒìŠ€', 'kindPerl' : '펄 ìŠ€íŹëŠœíŠž', 'kindSQL' : 'SQL 소슀', 'kindXML' : 'XML ëŹžì„œ', 'kindAWK' : 'AWK 소슀', 'kindCSV' : 'CSV 파음', 'kindDOCBOOK' : '닄북 XML ëŹžì„œ', 'kindMarkdown' : 'ë§ˆíŹë‹€ìšŽ ëŹžì„œ', // added 20.7.2015 // images 'kindImage' : 'ìŽëŻžì§€', 'kindBMP' : 'BMP ìŽëŻžì§€', 'kindJPEG' : 'JPEG ìŽëŻžì§€', 'kindGIF' : 'GIF ìŽëŻžì§€', 'kindPNG' : 'PNG ìŽëŻžì§€', 'kindTIFF' : 'TIFF ìŽëŻžì§€', 'kindTGA' : 'TGA ìŽëŻžì§€', 'kindPSD' : 'Adobe Photoshop ìŽëŻžì§€', 'kindXBITMAP' : 'X ëč„튞맔 ìŽëŻžì§€', 'kindPXM' : 'Pixelmator ìŽëŻžì§€', // media 'kindAudio' : '였디였 ëŻžë””ì–Ž', 'kindAudioMPEG' : 'MPEG 였디였', 'kindAudioMPEG4' : 'MPEG-4 였디였', 'kindAudioMIDI' : 'MIDI 였디였', 'kindAudioOGG' : 'Ogg Vorbis 였디였', 'kindAudioWAV' : 'WAV 였디였', 'AudioPlaylist' : 'MP3 플레읎 ëŠŹìŠ€íŠž', 'kindVideo' : '동영상 ëŻžë””ì–Ž', 'kindVideoDV' : 'DV 동영상', 'kindVideoMPEG' : 'MPEG 동영상', 'kindVideoMPEG4' : 'MPEG-4 동영상', 'kindVideoAVI' : 'AVI 동영상', 'kindVideoMOV' : '퀔 타임 동영상', 'kindVideoWM' : '윈도우 ëŻžë””ì–Ž 플레읎얎 동영상', 'kindVideoFlash' : 'í”Œëž˜ì‰Ź 동영상', 'kindVideoMKV' : 'Matroska 동영상', 'kindVideoOGG' : 'Ogg 동영상' } }; })); application/library/js/i18n/elfinder.da.js000064400000100447147577724760014457 0ustar00/** * Danish translation * @author Mark Topper (webman.io) * @author Helmuth Mikkelsen * @version 2020-11-27 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.da = { translator : 'Mark Topper (webman.io), Helmuth Mikkelsen <helmuthm@gmail.com>', language : 'Danish', direction : 'ltr', dateFormat : 'd.m.Y H:i', // will show like: 27.11.2020 11:50 fancyDateFormat : '$1 H:i', // will show like: I dag 11:50 nonameDateFormat : 'Ymd-His', // noname upload will show like: 20201127-115006 messages : { /********************************** errors **********************************/ 'error' : 'Fejl', 'errUnknown' : 'Ukendt fejl.', 'errUnknownCmd' : 'Ukendt kommando.', 'errJqui' : 'Ugyldig jQuery UI-konfiguration. Valgbare, trĂŠkbare og dropbare komponenter skal medtages.', 'errNode' : 'elFinder krĂŠver DOM Element oprettet.', 'errURL' : 'Ugyldig elFinder konfiguration! URL option er ikke sat.', 'errAccess' : 'Adgang nĂŠgtet.', 'errConnect' : 'Kan ikke fĂ„ kontatkt med backend.', 'errAbort' : 'Forbindelse afbrudt.', 'errTimeout' : 'Forbindelse timeout.', 'errNotFound' : 'Backend ikke fundet.', 'errResponse' : 'Ugyldigt backend svar.', 'errConf' : 'Ugyldig backend konfiguration.', 'errJSON' : 'PHP JSON modul ikke installeret.', 'errNoVolumes' : 'LĂŠsbare diskenheder er ikke tilgĂŠngelige.', 'errCmdParams' : 'Ugyldige parametre for kommando "$1".', 'errDataNotJSON' : 'Data er ikke JSON.', 'errDataEmpty' : 'Data er tom.', 'errCmdReq' : 'Backend-anmodning krĂŠver kommandonavn.', 'errOpen' : 'Kunne ikke Ă„bne "$1".', 'errNotFolder' : 'Objektet er ikke en mappe.', 'errNotFile' : 'Objektet er ikke en fil.', 'errRead' : 'Kunne ikke lĂŠse "$1".', 'errWrite' : 'Kunne ikke skrive til "$1".', 'errPerm' : 'Adgang nĂŠgtet.', 'errLocked' : '"$1" er lĂ„st og kan ikke blive omdĂžbt, flyttet eller slettet.', 'errExists' : 'Der findes allerede en fil ved navn "$1".', 'errInvName' : 'Ugyldigt filnavn.', 'errInvDirname' : 'Ugyldigt mappenavn.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Mappe ikke fundet.', 'errFileNotFound' : 'Fil ikke fundet.', 'errTrgFolderNotFound' : 'Mappen "$1" blev ikke fundet.', 'errPopup' : 'Browser forhindrede Ă„bning af pop up-vindue. For at Ă„bne filen skal du aktivere den i browserindstillinger.', 'errMkdir' : 'Kunne ikke oprette mappen "$1".', 'errMkfile' : 'Kunne ikke oprette filen "$1".', 'errRename' : 'Kunne ikke omdĂžbe "$1".', 'errCopyFrom' : 'Kopiering af filer fra diskenhed "$1" er ikke tilladt.', 'errCopyTo' : 'Kopiering af filer til diskenhed "$1" er ikke tilladt.', 'errMkOutLink' : 'Kan ikke oprette et link til uden for diskenhedsroden.', // from v2.1 added 03.10.2015 'errUpload' : 'Upload fejl.', // old name - errUploadCommon 'errUploadFile' : 'Kunne ikke uploade "$1".', // old name - errUpload 'errUploadNoFiles' : 'Ingen filer fundet til upload.', 'errUploadTotalSize' : 'Data overskrider den maksimalt tilladte stĂžrrelse.', // old name - errMaxSize 'errUploadFileSize' : 'Fil overskrider den maksimalt tilladte stĂžrrelse.', // old name - errFileMaxSize 'errUploadMime' : 'Filtype ikke godkendt.', 'errUploadTransfer' : '"$1" overfĂžrselsfejl.', 'errUploadTemp' : 'Kan ikke oprette midlertidig fil til upload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Objekt "$1" findes allerede pĂ„ dette sted og kan ikke erstattes af objekt med en anden type.', // new 'errReplace' : 'Kan ikke erstatte "$1".', 'errSave' : 'Kunne ikke gemme "$1".', 'errCopy' : 'Kunne ikke kopiere "$1".', 'errMove' : 'Kunne ikke flytte "$1".', 'errCopyInItself' : 'Kunne ikke kopiere "$1" til sig selv.', 'errRm' : 'Kunne ikke slette "$1".', 'errTrash' : 'Kan ikke komme i papirkurven.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Kunne ikke fjerne kildefil(er).', 'errExtract' : 'Kunne ikke udpakke filer fra "$1".', 'errArchive' : 'Kunne ikke oprette arkiv.', 'errArcType' : 'Arkivtypen er ikke understĂžttet.', 'errNoArchive' : 'Filen er ikke et arkiv eller har ien kke-understĂžttet arkivtype.', 'errCmdNoSupport' : 'Backend understĂžtter ikke denne kommando.', 'errReplByChild' : 'Mappen "$1" kan ikke erstattes af et element, den indeholder.', 'errArcSymlinks' : 'Af sikkerhedsmĂŠssige Ă„rsager nĂŠgtes at udpakke arkiver der indeholder symlinks eller filer med ikke-tilladte navne.', // edited 24.06.2012 'errArcMaxSize' : 'Arkivfiler overskrider den maksimalt tilladte stĂžrrelse.', 'errResize' : 'Kunne ikke ĂŠndre stĂžrrelsen pĂ„ "$1".', 'errResizeDegree' : 'Ugyldig rotationsgrad.', // added 7.3.2013 'errResizeRotate' : 'Kunne ikke rotere billedet.', // added 7.3.2013 'errResizeSize' : 'Ugyldig billedstĂžrrelse.', // added 7.3.2013 'errResizeNoChange' : 'BilledstĂžrrelse ikke ĂŠndret.', // added 7.3.2013 'errUsupportType' : 'Ikke-understĂžttet filtype.', 'errNotUTF8Content' : 'Filen "$1" er ikke i UTF-8 og kan ikke blive redigeret.', // added 9.11.2011 'errNetMount' : 'Kunne ikke mounte "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Ikke-understĂžttet protokol.', // added 17.04.2012 'errNetMountFailed' : 'Mount mislykkedes.', // added 17.04.2012 'errNetMountHostReq' : 'VĂŠrten krĂŠves.', // added 18.04.2012 'errSessionExpires' : 'Din session er udlĂžbet pĂ„ grund af inaktivitet.', 'errCreatingTempDir' : 'Kunne ikke oprette midlertidig mappe: "$1"', 'errFtpDownloadFile' : 'Kunne ikke downloade filen fra FTP: "$1"', 'errFtpUploadFile' : 'Kunne ikke uploade filen til FTP: "$1"', 'errFtpMkdir' : 'Kunne ikke oprette fjernmappe pĂ„ FTP: "$1"', 'errArchiveExec' : 'Fejl under arkivering af filer: "$1"', 'errExtractExec' : 'Fejl under udpakning af filer: "$1"', 'errNetUnMount' : 'Kan ikke unmounte.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Kan ikke konverteres til UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'PrĂžv den nyeste browser, hvis du vil uploade mappen.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Time out under sĂžgning pĂ„ "$1". SĂžgeresultatet er delvis.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Re-autorisation er pĂ„krĂŠvet.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Maksimalt antal valgbare emner er $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Kan ikke gendannes fra papirkurven. Kan ikke identificere gendannelsesdestinationen.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor blev ikke fundet til denne filtype.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Der opstod en fejl pĂ„ serversiden.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Kunne ikke tĂžmme mappen "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Der er $1 flere fejl.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'Opret arkiv', 'cmdback' : 'Tilbage', 'cmdcopy' : 'Kopier', 'cmdcut' : 'Klip', 'cmddownload' : 'Download', 'cmdduplicate' : 'Dupliker', 'cmdedit' : 'Rediger fil', 'cmdextract' : 'Udpak filer fra arkiv', 'cmdforward' : 'Frem', 'cmdgetfile' : 'VĂŠlg filer', 'cmdhelp' : 'Om denne software', 'cmdhome' : 'Hjem', 'cmdinfo' : 'Information', 'cmdmkdir' : 'Ny mappe', 'cmdmkdirin' : 'I en ny mappe', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Ny fil', 'cmdopen' : 'Åben', 'cmdpaste' : 'IndsĂŠt', 'cmdquicklook' : 'Vis', 'cmdreload' : 'GenindlĂŠs', 'cmdrename' : 'OmdĂžb', 'cmdrm' : 'Slet', 'cmdtrash' : 'I papirkurven', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Gendan', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Find filer', 'cmdup' : 'GĂ„ til overordnet mappe', 'cmdupload' : 'Upload filer', 'cmdview' : 'Vis', 'cmdresize' : 'Tilpas stĂžrrelse & Roter', 'cmdsort' : 'Sorter', 'cmdnetmount' : 'Mount netvĂŠrksdrev', // added 18.04.2012 'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012 'cmdplaces' : 'Til steder', // added 28.12.2014 'cmdchmod' : 'Skift tilstand', // from v2.1 added 20.6.2015 'cmdopendir' : 'Åbn en mappe', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Nulstil sĂžjlebredde', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Fuld skĂŠrm', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Flyt', // from v2.1.15 added 21.08.2016 'cmdempty' : 'TĂžm mappe', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Fortryd', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Gentag igen', // from v2.1.27 added 31.07.2017 'cmdpreference': 'PrĂŠferencer', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'VĂŠlg alle', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'VĂŠlg ingen', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Inverter valg', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Åbn i nyt vindue', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Skjul (prĂŠference)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Luk', 'btnSave' : 'Gem', 'btnRm' : 'Slet', 'btnApply' : 'Anvend', 'btnCancel' : 'Annuler', 'btnNo' : 'Nej', 'btnYes' : 'Ja', 'btnMount' : 'Mount', // added 18.04.2012 'btnApprove': 'GĂ„ til $1 & godkend', // from v2.1 added 26.04.2012 'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Konverter', // from v2.1 added 08.04.2014 'btnCwd' : 'Her', // from v2.1 added 22.5.2015 'btnVolume' : 'Diskenhed', // from v2.1 added 22.5.2015 'btnAll' : 'Alle', // from v2.1 added 22.5.2015 'btnMime' : 'MIME-type', // from v2.1 added 22.5.2015 'btnFileName':'Filnavn', // from v2.1 added 22.5.2015 'btnSaveClose': 'Gem & Luk', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 'btnRename' : 'OmdĂžb', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'OmdĂžb(Alle)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Forrige ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'NĂŠste ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Gem som', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Åben mappe', 'ntffile' : 'Åben fil', 'ntfreload' : 'GenindlĂŠs mappeindhold', 'ntfmkdir' : 'Opretter mappe', 'ntfmkfile' : 'Opretter filer', 'ntfrm' : 'Sletter filer', 'ntfcopy' : 'Kopier filer', 'ntfmove' : 'Flytter filer', 'ntfprepare' : 'Kontrol af eksisterende emner', 'ntfrename' : 'OmdĂžb filer', 'ntfupload' : 'Uploader filer', 'ntfdownload' : 'Downloader filer', 'ntfsave' : 'Gemmer filer', 'ntfarchive' : 'Opretter arkiv', 'ntfextract' : 'Udpakker filer fra arkiv', 'ntfsearch' : 'SĂžger filer', 'ntfresize' : 'Ændring af stĂžrrelsen pĂ„ billeder', 'ntfsmth' : 'GĂžr noget', 'ntfloadimg' : 'Henter billede', 'ntfnetmount' : 'Mounter netvĂŠrksdrev', // added 18.04.2012 'ntfnetunmount': 'Unmounter netvĂŠrksdrev', // from v2.1 added 30.04.2012 'ntfdim' : 'Henter billeddimension', // added 20.05.2013 'ntfreaddir' : 'LĂŠser folderinfomation', // from v2.1 added 01.07.2013 'ntfurl' : 'FĂ„r URL til link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Ændring af filtilstand', // from v2.1 added 20.6.2015 'ntfpreupload': 'BekrĂŠftelse af upload filnavn', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Oprettelse af en fil til download', // from v2.1.7 added 23.1.2016 'ntfparents' : 'FĂ„ stiinformation', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Behandler den uploadede fil', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Smider i papirkurv', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'UdfĂžrer gendannelse fra papirkurven', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Kontrollerer destinationsmappe', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Fortryder tidligere handling', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Gentager tidligere fortryd', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Kontrol af indhold', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Papirkurv', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'ukendt', 'Today' : 'I dag', 'Yesterday' : 'I gĂ„r', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Maj', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'Januar', 'February' : 'Februar', 'March' : 'Marts', 'April' : 'April', 'May' : 'Maj', 'June' : 'Juni', 'July' : 'Juli', 'August' : 'August', 'September' : 'September', 'October' : 'Oktober', 'November' : 'November', 'December' : 'December', 'Sunday' : 'SĂžndag', 'Monday' : 'Mandag', 'Tuesday' : 'Tirsdag', 'Wednesday' : 'Onsdag', 'Thursday' : 'Torsdag', 'Friday' : 'Fredag', 'Saturday' : 'LĂžrdag', 'Sun' : 'SĂžn', 'Mon' : 'Man', 'Tue' : 'Tir', 'Wed' : 'Ons', 'Thu' : 'Tor', 'Fri' : 'Fre', 'Sat' : 'LĂžr', /******************************** sort variants ********************************/ 'sortname' : 'efter navn', 'sortkind' : 'efter type', 'sortsize' : 'efter stĂžrrelse', 'sortdate' : 'efter dato', 'sortFoldersFirst' : 'Mapper fĂžrst', 'sortperm' : 'efter tilladelse', // from v2.1.13 added 13.06.2016 'sortmode' : 'efter mode', // from v2.1.13 added 13.06.2016 'sortowner' : 'efter ejer', // from v2.1.13 added 13.06.2016 'sortgroup' : 'efter gruppe', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'OgsĂ„ Treeview', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NyFil.txt', // added 10.11.2015 'untitled folder' : 'NyFolder', // added 10.11.2015 'Archive' : 'NytArkiv', // from v2.1 added 10.11.2015 'untitled file' : 'NyFil.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: Fil', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'BekrĂŠftelse pĂ„krĂŠvet', 'confirmRm' : 'Er du sikker pĂ„ du vil slette valgte filer?
      Dette kan ikke fortrydes!', 'confirmRepl' : 'Erstat gammel fil med ny fil?', 'confirmRest' : 'Erstat eksisterende element med elementet i papirkurven?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Ikke i UTF-8
      Konverter til UTF-8?
      Indholdet bliver UTF-8 ved at gemme efter konvertering.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Tegnkodning af denne fil kunne ikke registreres. Det er nĂždvendigt at konvertere midlertidigt til UTF-8 til redigering.
      VĂŠlg tegnkodning af denne fil.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Det er blevet ĂŠndret.
      Du mister arbejde, hvis du ikke gemmer ĂŠndringer.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Er du sikker pĂ„, at du vil flytte emner til papirkurven?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Er du sikker pĂ„, at du vil flytte emner til "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Anvend ved alle', 'name' : 'Navn', 'size' : 'StĂžrrelse', 'perms' : 'Rettigheder', 'modify' : 'Ændret', 'kind' : 'Type', 'read' : 'lĂŠse', 'write' : 'skrive', 'noaccess' : 'ingen adgang', 'and' : 'og', 'unknown' : 'ukendt', 'selectall' : 'VĂŠlg alle filer', 'selectfiles' : 'VĂŠlg fil(er)', 'selectffile' : 'VĂŠlg fĂžrste fil', 'selectlfile' : 'VĂŠlg sidste fil', 'viewlist' : 'Listevisning', 'viewicons' : 'Ikonvisning', 'viewSmall' : 'SmĂ„ ikoner', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Medium ikoner', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Store ikoner', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Ekstra store ikoner', // from v2.1.39 added 22.5.2018 'places' : 'Placeringer', 'calc' : 'Beregn', 'path' : 'Sti', 'aliasfor' : 'Alias for', 'locked' : 'LĂ„st', 'dim' : 'StĂžrrelser', 'files' : 'Filer', 'folders' : 'Mapper', 'items' : 'Emner', 'yes' : 'ja', 'no' : 'nej', 'link' : 'Link', 'searcresult' : 'SĂžgeresultater', 'selected' : 'valgte emner', 'about' : 'Om', 'shortcuts' : 'Genveje', 'help' : 'HjĂŠlp', 'webfm' : 'Internet filmanager', 'ver' : 'Version', 'protocolver' : 'protokol version', 'homepage' : 'Projektside', 'docs' : 'Dokumentation', 'github' : 'Fork os pĂ„ Github', 'twitter' : 'FĂžlg os pĂ„ Twitter', 'facebook' : 'FĂžlg os pĂ„ Facebook', 'team' : 'Hold', 'chiefdev' : 'hovedudvikler', 'developer' : 'udvikler', 'contributor' : 'bidragyder', 'maintainer' : 'vedligeholder', 'translator' : 'oversĂŠtter', 'icons' : 'Ikoner', 'dontforget' : 'og glem ikke at tage dit hĂ„ndklĂŠde', 'shortcutsof' : 'Gemveje deaktiveret', 'dropFiles' : 'Drop filer hertil', 'or' : 'eller', 'selectForUpload' : 'VĂŠlg filer', 'moveFiles' : 'Flyt filer', 'copyFiles' : 'Kopier filer', 'restoreFiles' : 'Gendan emner', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Slet fra placering', 'aspectRatio' : 'SkĂŠrmformat', 'scale' : 'Skala', 'width' : 'Bredde', 'height' : 'HĂžjde', 'resize' : 'Tilpas stĂžrrelse', 'crop' : 'BeskĂŠr', 'rotate' : 'Roter', 'rotate-cw' : 'Roter 90 grader med uret', 'rotate-ccw' : 'Roter 90 grader mod uret', 'degree' : 'Grader', 'netMountDialogTitle' : 'Mount netwĂŠrkdrev', // added 18.04.2012 'protocol' : 'Protokol', // added 18.04.2012 'host' : 'VĂŠrt', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Bruger', // added 18.04.2012 'pass' : 'Kodeord', // added 18.04.2012 'confirmUnmount' : 'Unmounter du $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Slip eller indsĂŠt filer fra browseren', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Slip filer, indsĂŠt webadresser eller billeder (udklipsholder) her', // from v2.1 added 07.04.2014 'encoding' : 'Encoding', // from v2.1 added 19.12.2014 'locale' : 'Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'Target: $1', // from v2.1 added 22.5.2015 'searchMime' : 'SĂžg efter input MIME-type', // from v2.1 added 22.5.2015 'owner' : 'Ejer', // from v2.1 added 20.6.2015 'group' : 'Gruppe', // from v2.1 added 20.6.2015 'other' : 'Andet', // from v2.1 added 20.6.2015 'execute' : 'UdfĂžr', // from v2.1 added 20.6.2015 'perm' : 'Tilladelse', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'Mappe er tom', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Mappe er tom\\A Drop for at tilfĂžje enmer', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Mappen er tom\\A Langt tryk for at tilfĂžje emner', // from v2.1.6 added 30.12.2015 'quality' : 'Kvalitet', // from v2.1.6 added 5.1.2016 'autoSync' : 'Autosync', // from v2.1.6 added 10.1.2016 'moveUp' : 'Flyt op', // from v2.1.6 added 18.1.2016 'getLink' : 'Hent URL-link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Valgte emner ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Folder-ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Tillad offline adgang', // from v2.1.10 added 3.25.2016 'reAuth' : 'For at godkende igen', // from v2.1.10 added 3.25.2016 'nowLoading' : 'IndlĂŠser nu...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Åben flere filer', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Du prĂžver at Ă„bne $1-filerne. Er du sikker pĂ„, at du vil Ă„bne i browseren?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'SĂžgeresultaterne er tomme i sĂžgemĂ„let.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Redigerer en fil.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Du har valgt $1 emner.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Du har $1 emner i udklipsholder.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Inkrementel sĂžgning er kun fra den aktuelle visning.', // from v2.1.13 added 6.30.2016 'reinstate' : 'GenindsĂŠt', // from v2.1.15 added 3.8.2016 'complete' : '$1 fĂŠrdig', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Kontekstmenu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Sidevending', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Diskenheds rĂždder', // from v2.1.16 added 16.9.2016 'reset' : 'Nulstil', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Baggrundsfarve', // from v2.1.16 added 1.10.2016 'colorPicker' : 'FarvevĂŠlger', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px grid', // from v2.1.16 added 4.10.2016 'enabled' : 'Aktiveret', // from v2.1.16 added 4.10.2016 'disabled' : 'Deaktiveret', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'SĂžgeresultaterne er tomme i den aktuelle visning.\\ATryk pĂ„ [Enter] for at udvide sĂžgemĂ„let.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'FĂžrstebogstavs sĂžgeresultater er tomme i den aktuelle visning.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Tekstlabel', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 minutter tilbage', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Åbn igen med valgt encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Gem med valgt encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'VĂŠlg mappe', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'FĂžrstebogstavs sĂžgning', // from v2.1.23 added 24.3.2017 'presets' : 'Forudindstillinger', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Det er for mange emner, sĂ„ det kan ikke komme i papirkurven.', // from v2.1.25 added 9.6.2017 'TextArea' : 'TextArea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'TĂžm mappen "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Der er ingen emner i mappen "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'PrĂŠference', // from v2.1.26 added 28.6.2017 'language' : 'Sprog', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialiser de indstillinger, der er gemt i denne browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'VĂŠrktĂžjslinjens indstillinger', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 tegn tilbage.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 linjer tilbage.', // from v2.1.52 added 16.1.2020 'sum' : 'Sum', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Omtrentlig filstĂžrrelse', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Fokuser pĂ„ elementet i dialog med musemarkering', // from v2.1.30 added 2.11.2017 'select' : 'VĂŠlg', // from v2.1.30 added 23.11.2017 'selectAction' : 'Handling, nĂ„r du vĂŠlger fil', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Åbn med den editor, der blev brugt sidst', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Inverter valg', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Er du sikker pĂ„, at du vil omdĂžbe $1 valgte emner som $2?
      Dette kan ikke fortrydes!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch omdĂžbning', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Tal', // from v2.1.31 added 8.12.2017 'asPrefix' : 'TilfĂžj prefix', // from v2.1.31 added 8.12.2017 'asSuffix' : 'TilfĂžj suffix', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Skift filendelse', // from v2.1.31 added 8.12.2017 'columnPref' : 'Kolonneindstillinger (listevisning)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Alle ĂŠndringer pĂ„virker straks arkivet.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Eventuelle ĂŠndringer gennemfĂžres ikke, fĂžr denne enhed fjernes.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'FĂžlgende disk(e) mounted pĂ„ denne enhed unmountes ogsĂ„. Er du sikker pĂ„ at unmounte den?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Valg info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algoritmer, der viser filens hash', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info-emner (panelet til valg af info)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Tryk igen for at afslutte.', // from v2.1.38 added 1.4.2018 'toolbar' : 'VĂŠrktĂžjslinje', // from v2.1.38 added 4.4.2018 'workspace' : 'ArbejdsomrĂ„de', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'Alle', // from v2.1.38 added 4.4.2018 'iconSize' : 'IkonstĂžrrelse (ikonvisning)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Åbn det maksimerede editorvindue', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Da konvertering via API ikke er tilgĂŠngelig i Ăžjeblikket, bedes du konvertere pĂ„ webstedet.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'Efter konvertering skal du uploade med elementets URL eller en downloadet fil for at gemme den konverterede fil.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Konverter pĂ„ stedet pĂ„ $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrationer', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Denne elFinder har fĂžlgende eksterne tjenester integreret. Kontroller venligst vilkĂ„rene for brug, fortrolighedspolitik osv. inden du bruger det.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Vis skjulte emner', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Skjul skjulte emner', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Vis / Skjul skjulte emner', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Filtyper, der skal aktiveres med "Ny fil"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type af tekstfilen', // from v2.1.41 added 7.8.2018 'add' : 'TilfĂžj', // from v2.1.41 added 7.8.2018 'theme' : 'Tema', // from v2.1.43 added 19.10.2018 'default' : 'Standard', // from v2.1.43 added 19.10.2018 'description' : 'Beskrivelse', // from v2.1.43 added 19.10.2018 'website' : 'Hjemmeside', // from v2.1.43 added 19.10.2018 'author' : 'Forfatter', // from v2.1.43 added 19.10.2018 'email' : 'Mail', // from v2.1.43 added 19.10.2018 'license' : 'Licens', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Dette element kan ikke gemmes. For at undgĂ„ at miste redigeringerne skal du eksportere til din pc.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Dobbeltklik pĂ„ filen for at vĂŠlge den.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Brug fuldskĂŠrmstilstand', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Ukendt', 'kindRoot' : 'Diskenheds rod', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Mappe', 'kindSelects' : 'Valg', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Ødelagt alias', // applications 'kindApp' : 'Applikation', 'kindPostscript' : 'Postscript dokument', 'kindMsOffice' : 'Microsoft Office dokument', 'kindMsWord' : 'Microsoft Word dokument', 'kindMsExcel' : 'Microsoft Excel dokument', 'kindMsPP' : 'Microsoft Powerpoint prĂŠsentation', 'kindOO' : 'Open Office dokument', 'kindAppFlash' : 'Flash applikation', 'kindPDF' : 'Flytbart Dokument Format (PDF)', 'kindTorrent' : 'Bittorrent fil', 'kind7z' : '7z arkiv', 'kindTAR' : 'TAR arkiv', 'kindGZIP' : 'GZIP arkiv', 'kindBZIP' : 'BZIP arkiv', 'kindXZ' : 'XZ arkiv', 'kindZIP' : 'ZIP arkiv', 'kindRAR' : 'RAR arkiv', 'kindJAR' : 'Java JAR fil', 'kindTTF' : 'True Type skrift', 'kindOTF' : 'Open Type skrift', 'kindRPM' : 'RPM pakke', // texts 'kindText' : 'Tekstdokument', 'kindTextPlain' : 'Ren tekst', 'kindPHP' : 'PHP-kode', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML-dokument', 'kindJS' : 'Javascript-kode', 'kindRTF' : 'Rich Text Format', 'kindC' : 'Ckkode', 'kindCHeader' : 'C header-kode', 'kindCPP' : 'C++-kode', 'kindCPPHeader' : 'C++ header-kode', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python-kode', 'kindJava' : 'Java-kode', 'kindRuby' : 'Ruby-kode', 'kindPerl' : 'Perlscript', 'kindSQL' : 'SQ- kode', 'kindXML' : 'XML-dokument', 'kindAWK' : 'AWK-kode', 'kindCSV' : 'Komma seperarede vĂŠrdier', 'kindDOCBOOK' : 'Docbook XML-dokument', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Billede', 'kindBMP' : 'BMP-billede', 'kindJPEG' : 'JPEG-billede', 'kindGIF' : 'GIF-billede', 'kindPNG' : 'PNG-billede', 'kindTIFF' : 'TIFF-billede', 'kindTGA' : 'TGA-billede', 'kindPSD' : 'Adobe Photoshop-billede', 'kindXBITMAP' : 'X bitmap-billede', 'kindPXM' : 'Pixelmator-billede', // media 'kindAudio' : 'Lydmedie', 'kindAudioMPEG' : 'MPEG-lyd', 'kindAudioMPEG4' : 'MPEG-4-lyd', 'kindAudioMIDI' : 'MIDI-lyd', 'kindAudioOGG' : 'Ogg Vorbis-lyd', 'kindAudioWAV' : 'WAV-lyd', 'AudioPlaylist' : 'MP3-spilleliste', 'kindVideo' : 'Videomedie', 'kindVideoDV' : 'DV-video', 'kindVideoMPEG' : 'MPEG-video', 'kindVideoMPEG4' : 'MPEG-4-video', 'kindVideoAVI' : 'AVI-video', 'kindVideoMOV' : 'Quick Time-video', 'kindVideoWM' : 'Windows Media-video', 'kindVideoFlash' : 'Flash-video', 'kindVideoMKV' : 'Matroska-video', 'kindVideoOGG' : 'Ogg-video' } }; })); application/library/js/i18n/elfinder.nl.js000064400000105745147577724760014512 0ustar00/** * Dutch translation * @author Barry vd. Heuvel * @author Patrick Tingen * @version 2019-04-17 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.nl = { translator : 'Barry vd. Heuvel <barry@fruitcakestudio.nl>, Patrick Tingen <patrick@tingen.net>', language : 'Nederlands', direction : 'ltr', dateFormat : 'd-m-Y H:i', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM nonameDateFormat : 'ymd-His', // noname upload will show like: 120513-172700 messages : { /********************************** errors **********************************/ 'error' : 'Fout', 'errUnknown' : 'Onbekend fout', 'errUnknownCmd' : 'Onbekend commando', 'errJqui' : 'Ongeldige jQuery UI configuratie. Selectable, draggable en droppable componenten moeten aanwezig zijn', 'errNode' : 'Voor elFinder moet een DOM Element gemaakt worden', 'errURL' : 'Ongeldige elFinder configuratie! URL optie is niet ingesteld', 'errAccess' : 'Toegang geweigerd', 'errConnect' : 'Kan geen verbinding met de backend maken', 'errAbort' : 'Verbinding afgebroken', 'errTimeout' : 'Verbinding time-out', 'errNotFound' : 'Backend niet gevonden', 'errResponse' : 'Ongeldige reactie van de backend', 'errConf' : 'Ongeldige backend configuratie', 'errJSON' : 'PHP JSON module niet geĂŻnstalleerd', 'errNoVolumes' : 'Leesbaar volume is niet beschikbaar', 'errCmdParams' : 'Ongeldige parameters voor commando "$1"', 'errDataNotJSON' : 'Data is niet JSON', 'errDataEmpty' : 'Data is leeg', 'errCmdReq' : 'Backend verzoek heeft een commando naam nodig', 'errOpen' : 'Kan "$1" niet openen', 'errNotFolder' : 'Object is geen map', 'errNotFile' : 'Object is geen bestand', 'errRead' : 'Kan "$1" niet lezen', 'errWrite' : 'Kan niet schrijven in "$1"', 'errPerm' : 'Toegang geweigerd', 'errLocked' : '"$1" is vergrendeld en kan niet hernoemd, verplaats of verwijderd worden', 'errExists' : 'Bestand "$1" bestaat al', 'errInvName' : 'Ongeldige bestandsnaam', 'errFolderNotFound' : 'Map niet gevonden', 'errFileNotFound' : 'Bestand niet gevonden', 'errTrgFolderNotFound' : 'Doelmap "$1" niet gevonden', 'errPopup' : 'De browser heeft voorkomen dat de pop-up is geopend. Pas de browser instellingen aan om de popup te kunnen openen', 'errMkdir' : 'Kan map "$1" niet aanmaken', 'errMkfile' : 'Kan bestand "$1" niet aanmaken', 'errRename' : 'Kan "$1" niet hernoemen', 'errCopyFrom' : 'Bestanden kopiĂ«ren van "$1" is niet toegestaan', 'errCopyTo' : 'Bestanden kopiĂ«ren naar "$1" is niet toegestaan', 'errMkOutLink' : 'Kan geen link maken buiten de hoofdmap', // from v2.1 added 03.10.2015 'errUpload' : 'Upload fout', // old name - errUploadCommon 'errUploadFile' : 'Kan "$1" niet uploaden', // old name - errUpload 'errUploadNoFiles' : 'Geen bestanden gevonden om te uploaden', 'errUploadTotalSize' : 'Data overschrijdt de maximale grootte', // old name - errMaxSize 'errUploadFileSize' : 'Bestand overschrijdt de maximale grootte', // old name - errFileMaxSize 'errUploadMime' : 'Bestandstype niet toegestaan', 'errUploadTransfer' : '"$1" overdrachtsfout', 'errUploadTemp' : 'Kan geen tijdelijk bestand voor de upload maken', // from v2.1 added 26.09.2015 'errNotReplace' : 'Object "$1" bestaat al op deze locatie en kan niet vervangen worden door een ander type object', // new 'errReplace' : 'Kan "$1" niet vervangen', 'errSave' : 'Kan "$1" niet opslaan', 'errCopy' : 'Kan "$1" niet kopiĂ«ren', 'errMove' : 'Kan "$1" niet verplaatsen', 'errCopyInItself' : 'Kan "$1" niet in zichzelf kopiĂ«ren', 'errRm' : 'Kan "$1" niet verwijderen', 'errRmSrc' : 'Kan bronbestanden niet verwijderen', 'errExtract' : 'Kan de bestanden van "$1" niet uitpakken', 'errArchive' : 'Kan het archief niet maken', 'errArcType' : 'Archief type is niet ondersteund', 'errNoArchive' : 'Bestand is geen archief of geen ondersteund archief type', 'errCmdNoSupport' : 'Backend ondersteund dit commando niet', 'errReplByChild' : 'De map "$1" kan niet vervangen worden door een item uit die map', 'errArcSymlinks' : 'Om veiligheidsredenen kan een bestand met symlinks of bestanden met niet toegestane namen niet worden uitgepakt ', // edited 24.06.2012 'errArcMaxSize' : 'Archief overschrijdt de maximale bestandsgrootte', 'errResize' : 'Kan het formaat van "$1" niet wijzigen', 'errResizeDegree' : 'Ongeldig aantal graden om te draaien', // added 7.3.2013 'errResizeRotate' : 'Afbeelding kan niet gedraaid worden', // added 7.3.2013 'errResizeSize' : 'Ongeldig afbeelding formaat', // added 7.3.2013 'errResizeNoChange' : 'Afbeelding formaat is niet veranderd', // added 7.3.2013 'errUsupportType' : 'Bestandstype wordt niet ondersteund', 'errNotUTF8Content' : 'Bestand "$1" is niet in UTF-8 and kan niet aangepast worden', // added 9.11.2011 'errNetMount' : 'Kan "$1" niet mounten', // added 17.04.2012 'errNetMountNoDriver' : 'Niet ondersteund protocol', // added 17.04.2012 'errNetMountFailed' : 'Mount mislukt', // added 17.04.2012 'errNetMountHostReq' : 'Host is verplicht', // added 18.04.2012 'errSessionExpires' : 'Uw sessie is verlopen vanwege inactiviteit', 'errCreatingTempDir' : 'Kan de tijdelijke map niet aanmaken: "$1" ', 'errFtpDownloadFile' : 'Kan het bestand niet downloaden vanaf FTP: "$1"', 'errFtpUploadFile' : 'Kan het bestand niet uploaden naar FTP: "$1"', 'errFtpMkdir' : 'Kan het externe map niet aanmaken op de FTP-server: "$1"', 'errArchiveExec' : 'Er is een fout opgetreden bij het archivering van de bestanden: "$1" ', 'errExtractExec' : 'Er is een fout opgetreden bij het uitpakken van de bestanden: "$1" ', 'errNetUnMount' : 'Kan niet unmounten', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Niet om te zetten naar UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Probeer een moderne browser als je bestanden wil uploaden', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Time-out bij zoeken naar "$1". Zoekresulataat is niet compleet', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Je moet je opnieuw aanmelden', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Max aantal selecteerbare items is $1', // from v2.1.17 added 17.10.2016 'errRestore' : 'Kan niet herstellen uit prullenbak, weet niet waar het heen moet', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Geen editor voor dit type bestand', // from v2.1.25 added 23.5.2017 'errServerError' : 'Fout opgetreden op de server', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Kan folder "$1" niet legen', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Er zijn nog $1 fouten', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'Maak archief', 'cmdback' : 'Vorige', 'cmdcopy' : 'Kopieer', 'cmdcut' : 'Knip', 'cmddownload' : 'Download', 'cmdduplicate' : 'Dupliceer', 'cmdedit' : 'Pas bestand aan', 'cmdextract' : 'Bestanden uit archief uitpakken', 'cmdforward' : 'Volgende', 'cmdgetfile' : 'Kies bestanden', 'cmdhelp' : 'Over deze software', 'cmdhome' : 'Home', 'cmdinfo' : 'Bekijk info', 'cmdmkdir' : 'Nieuwe map', 'cmdmkdirin' : 'In nieuwe map', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nieuw bestand', 'cmdopen' : 'Open', 'cmdpaste' : 'Plak', 'cmdquicklook' : 'Voorbeeld', 'cmdreload' : 'Vernieuwen', 'cmdrename' : 'Naam wijzigen', 'cmdrm' : 'Verwijder', 'cmdtrash' : 'Naar prullenbak', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Herstellen', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Zoek bestanden', 'cmdup' : 'Ga een map hoger', 'cmdupload' : 'Upload bestanden', 'cmdview' : 'Bekijk', 'cmdresize' : 'Formaat wijzigen', 'cmdsort' : 'Sorteren', 'cmdnetmount' : 'Mount netwerk volume', // added 18.04.2012 'cmdnetunmount' : 'Unmount', // from v2.1 added 30.04.2012 'cmdplaces' : 'Naar Plaatsen', // added 28.12.2014 'cmdchmod' : 'Wijzig modus', // from v2.1 added 20.6.2015 'cmdopendir' : 'Open een map', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Herstel kolombreedtes', // from v2.1.13 added 12.06.2016 'cmdfullscreen' : 'Volledig scherm', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Verplaatsen', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Map leegmaken', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Undo', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Redo', // from v2.1.27 added 31.07.2017 'cmdpreference' : 'Voorkeuren', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Selecteer alles', // from v2.1.28 added 15.08.2017 'cmdselectnone' : 'Deselecteer alles', // from v2.1.28 added 15.08.2017 'cmdselectinvert' : 'Selectie omkeren', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Open in nieuw venster', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Verberg (voorkeur)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Sluit', 'btnSave' : 'Opslaan', 'btnRm' : 'Verwijder', 'btnApply' : 'Toepassen', 'btnCancel' : 'Annuleren', 'btnNo' : 'Nee', 'btnYes' : 'Ja', 'btnMount' : 'Mount', // added 18.04.2012 'btnApprove' : 'Ga naar $1 & keur goed', // from v2.1 added 26.04.2012 'btnUnmount' : 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Converteer', // from v2.1 added 08.04.2014 'btnCwd' : 'Hier', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'Alles', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Type', // from v2.1 added 22.5.2015 'btnFileName' : 'Bestandsnaam', // from v2.1 added 22.5.2015 'btnSaveClose' : 'Opslaan & Sluiten', // from v2.1 added 12.6.2015 'btnBackup' : 'Back-up', // fromv2.1 added 28.11.2015 'btnRename' : 'Hernoemen', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Hernoem alles', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Vorige ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Volgende ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Opslaan als', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Bezig met openen van map', 'ntffile' : 'Bezig met openen bestand', 'ntfreload' : 'Herladen map inhoud', 'ntfmkdir' : 'Bezig met map maken', 'ntfmkfile' : 'Bezig met Bestanden maken', 'ntfrm' : 'Verwijderen bestanden', 'ntfcopy' : 'Kopieer bestanden', 'ntfmove' : 'Verplaats bestanden', 'ntfprepare' : 'Voorbereiden kopiĂ«ren', 'ntfrename' : 'Hernoem bestanden', 'ntfupload' : 'Bestanden uploaden actief', 'ntfdownload' : 'Bestanden downloaden actief', 'ntfsave' : 'Bestanden opslaan', 'ntfarchive' : 'Archief aan het maken', 'ntfextract' : 'Bestanden uitpakken actief', 'ntfsearch' : 'Zoeken naar bestanden', 'ntfresize' : 'Formaat wijzigen van afbeeldingen', 'ntfsmth' : 'Iets aan het doen', 'ntfloadimg' : 'Laden van plaatje', 'ntfnetmount' : 'Mounten van netwerk volume', // added 18.04.2012 'ntfnetunmount' : 'Unmounten van netwerk volume', // from v2.1 added 30.04.2012 'ntfdim' : 'Opvragen afbeeldingen dimensies', // added 20.05.2013 'ntfreaddir' : 'Map informatie lezen', // from v2.1 added 01.07.2013 'ntfurl' : 'URL van link ophalen', // from v2.1 added 11.03.2014 'ntfchmod' : 'Bestandsmodus wijzigen', // from v2.1 added 20.6.2015 'ntfpreupload' : 'Upload bestandsnaam verifiĂ«ren', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Zipbestand aan het maken', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Verzamelen padinformatie', // from v2.1.17 added 2.11.2016 'ntfchunkmerge' : 'Aan het verwerken', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Aan het verwijderen', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Aan het herstellen', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Controleren doelmap', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Vorige bewerking ongedaan maken', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Opnieuw doen', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Inhoud controleren', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Prullenbak', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'onbekend', 'Today' : 'Vandaag', 'Yesterday' : 'Gisteren', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Mei', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'Januari', 'February' : 'Februari', 'March' : 'Maart', 'April' : 'April', 'May' : 'Mei', 'June' : 'Juni', 'July' : 'Juli', 'August' : 'Augustus', 'September' : 'September', 'October' : 'Oktober', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Zondag', 'Monday' : 'Maandag', 'Tuesday' : 'Dinsdag', 'Wednesday' : 'Woensdag', 'Thursday' : 'Donderdag', 'Friday' : 'Vrijdag', 'Saturday' : 'Zaterdag', 'Sun' : 'Zo', 'Mon' : 'Ma', 'Tue' : 'Di', 'Wed' : 'Wo', 'Thu' : 'Do', 'Fri' : 'Vr', 'Sat' : 'Za', /******************************** sort variants ********************************/ 'sortname' : 'op naam', 'sortkind' : 'op type', 'sortsize' : 'op grootte', 'sortdate' : 'op datum', 'sortFoldersFirst' : 'Mappen eerst', 'sortperm' : 'op rechten', // from v2.1.13 added 13.06.2016 'sortmode' : 'op mode', // from v2.1.13 added 13.06.2016 'sortowner' : 'op eigenaar', // from v2.1.13 added 13.06.2016 'sortgroup' : 'op groep', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Als boom', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NieuwBestand.txt', // added 10.11.2015 'untitled folder' : 'NieuweMap', // added 10.11.2015 'Archive' : 'NieuwArchief', // from v2.1 added 10.11.2015 'untitled file' : 'NieuwBestand.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: Bestand', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Bevestiging nodig', 'confirmRm' : 'Weet u zeker dat u deze bestanden wil verwijderen?
      Deze actie kan niet ongedaan gemaakt worden!', 'confirmRepl' : 'Oud bestand vervangen door het nieuwe bestand?', 'confirmRest' : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Niet in UTF-8
      Converteren naar UTF-8?
      De inhoud wordt UTF-8 door op te slaan na de conversie', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.
      Please select character encoding of this file.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Het is aangepast.
      Wijzigingen gaan verloren als je niet opslaat', // from v2.1 added 15.7.2015 'confirmTrash' : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017 'apllyAll' : 'Toepassen op alles', 'name' : 'Naam', 'size' : 'Grootte', 'perms' : 'Rechten', 'modify' : 'Aangepast', 'kind' : 'Type', 'read' : 'lees', 'write' : 'schrijf', 'noaccess' : 'geen toegang', 'and' : 'en', 'unknown' : 'onbekend', 'selectall' : 'Selecteer alle bestanden', 'selectfiles' : 'Selecteer bestand(en)', 'selectffile' : 'Selecteer eerste bestand', 'selectlfile' : 'Selecteer laatste bestand', 'viewlist' : 'Lijst weergave', 'viewicons' : 'Icoon weergave', 'viewSmall' : 'Klein', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Middelgroot', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Groot', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Extra groot', // from v2.1.39 added 22.5.2018 'places' : 'Plaatsen', 'calc' : 'Bereken', 'path' : 'Pad', 'aliasfor' : 'Alias voor', 'locked' : 'Vergrendeld', 'dim' : 'Dimensies', 'files' : 'Bestanden', 'folders' : 'Mappen', 'items' : 'Items', 'yes' : 'ja', 'no' : 'nee', 'link' : 'Link', 'searcresult' : 'Zoek resultaten', 'selected' : 'geselecteerde items', 'about' : 'Over', 'shortcuts' : 'Snelkoppelingen', 'help' : 'Help', 'webfm' : 'Web bestandsmanager', 'ver' : 'Versie', 'protocolver' : 'protocol versie', 'homepage' : 'Project home', 'docs' : 'Documentatie', 'github' : 'Fork ons op Github', 'twitter' : 'Volg ons op twitter', 'facebook' : 'Wordt lid op facebook', 'team' : 'Team', 'chiefdev' : 'Hoofd ontwikkelaar', 'developer' : 'ontwikkelaar', 'contributor' : 'bijdrager', 'maintainer' : 'onderhouder', 'translator' : 'vertaler', 'icons' : 'Iconen', 'dontforget' : 'En vergeet je handdoek niet!', 'shortcutsof' : 'Snelkoppelingen uitgeschakeld', 'dropFiles' : 'Sleep hier uw bestanden heen', 'or' : 'of', 'selectForUpload' : 'Selecteer bestanden om te uploaden', 'moveFiles' : 'Verplaats bestanden', 'copyFiles' : 'Kopieer bestanden', 'restoreFiles' : 'Items herstellen', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Verwijder uit Plaatsen', 'aspectRatio' : 'Aspect ratio', 'scale' : 'Schaal', 'width' : 'Breedte', 'height' : 'Hoogte', 'resize' : 'Verkleinen', 'crop' : 'Bijsnijden', 'rotate' : 'Draaien', 'rotate-cw' : 'Draai 90 graden rechtsom', 'rotate-ccw' : 'Draai 90 graden linksom', 'degree' : '°', 'netMountDialogTitle' : 'Mount netwerk volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Poort', // added 18.04.2012 'user' : 'Gebruikersnaams', // added 18.04.2012 'pass' : 'Wachtwoord', // added 18.04.2012 'confirmUnmount' : 'Weet u zeker dat u $1 wil unmounten?', // from v2.1 added 30.04.2012 'dropFilesBrowser' : 'Sleep of plak bestanden vanuit de browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Sleep of plak bestanden hier', // from v2.1 added 07.04.2014 'encoding' : 'Encodering', // from v2.1 added 19.12.2014 'locale' : 'Localisatie', // from v2.1 added 19.12.2014 'searchTarget' : 'Doel: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Zoek op invoer MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Eigenaar', // from v2.1 added 20.6.2015 'group' : 'Groep', // from v2.1 added 20.6.2015 'other' : 'Overig', // from v2.1 added 20.6.2015 'execute' : 'Uitvoeren', // from v2.1 added 20.6.2015 'perm' : 'Rechten', // from v2.1 added 20.6.2015 'mode' : 'Modus', // from v2.1 added 20.6.2015 'emptyFolder' : 'Map is leeg', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Map is leeg\\A Sleep hier naar toe om toe te voegen', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Map is leeg\\A Lang ingedrukt houden om toe te voegen', // from v2.1.6 added 30.12.2015 'quality' : 'Kwaliteit', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto sync', // from v2.1.6 added 10.1.2016 'moveUp' : 'Omhoog', // from v2.1.6 added 18.1.2016 'getLink' : 'Geef link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Geselecteerde items ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Map ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Toestaan offline toegang', // from v2.1.10 added 3.25.2016 'reAuth' : 'Opnieuw autenticeren', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Laden..', // from v2.1.12 added 4.26.2016 'openMulti' : 'Open meerdere bestanden', // from v2.1.12 added 5.14.2016 'openMultiConfirm' : 'Je probeert het $1 bestanden te openen. Weet je zeker dat je dat in je browser wil doen?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Geen zoekresultaten', // from v2.1.12 added 5.16.2016 'editingFile' : 'Bestand wordt bewerkt', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Je hebt $1 items geselecteerd', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Je hebt $1 items op het clipboard', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Verder zoeken kan alleen vanuit huidige view', // from v2.1.13 added 6.30.2016 'reinstate' : 'Herstellen', // from v2.1.15 added 3.8.2016 'complete' : '$1 compleet', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Context menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Pagina omslaan', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume roots', // from v2.1.16 added 16.9.2016 'reset' : 'Reset', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Achtergrondkleur', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Kleurkiezer', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Grid', // from v2.1.16 added 4.10.2016 'enabled' : 'Actief', // from v2.1.16 added 4.10.2016 'disabled' : 'Inactief', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Zoekresultaten zijn leeg in actuele view\\ADruk [Enter] om zoekgebied uit te breiden', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Zoeken op eerste letter is leeg in actuele view', // from v2.1.23 added 24.3.2017 'textLabel' : 'Tekstlabel', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 minuten over', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Opnieuw openen met geselecteerde encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Opslaan met geselecteerde encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Selecteer map', // from v2.1.20 added 13.12.2016 'firstLetterSearch' : 'Zoeken op eerste letter', // from v2.1.23 added 24.3.2017 'presets' : 'Voorkeuren', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Teveel voor in de prullenbak', // from v2.1.25 added 9.6.2017 'TextArea' : 'Tekstgebied', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Map "$1" legen', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Er zijn geen items in map "$1"', // from v2.1.25 added 22.6.2017 'preference' : 'Voorkeur', // from v2.1.26 added 28.6.2017 'language' : 'Taal', // from v2.1.26 added 28.6.2017 'clearBrowserData' : 'Initialiseer instellingen van deze browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Toolbar instellingen', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 tekens over', // from v2.1.29 added 30.8.2017 'sum' : 'Totaal', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Geschatte bestandsgrootte', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focus op het dialoogelement met mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Selecteren', // from v2.1.30 added 23.11.2017 'selectAction' : 'Actie als bestand is geselecteerd', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Open met laatstgebruikte editor', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Selectie omkeren', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Weet je zeker dat je $1 items wil hernoemen naar $2?
      Dit kan niet ongedaan worden gemaakt!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch hernoemen', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Nummer', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Voeg prefix toe', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Voeg suffix toe', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Verander extentie', // from v2.1.31 added 8.12.2017 'columnPref' : 'Kolominstelllingen (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Aanpassingen worden direct toegepast op het archief', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Aanpassingen worden pas toegepast na re-mount van dit volume', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Deze volume(s) worden ook unmounted. Weet je het zeker?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Selectie informatie', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algoritmes voor file hash', // from v2.1.33 added 10.3.2018 'infoItems' : 'Informatie Items (Selectie Info Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit' : 'Druk nogmaals om te eindigen', // from v2.1.38 added 1.4.2018 'toolbar' : 'Toolbar', // from v2.1.38 added 4.4.2018 'workspace' : 'Work Space', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialoog', // from v2.1.38 added 4.4.2018 'all' : 'Alles', // from v2.1.38 added 4.4.2018 'iconSize' : 'Icoongrootte (Icons view)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Open de maximale editor', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Conversie via API is niet beschikbaar, converteer aub op de website', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file', //from v2.1.40 added 8.7.2018 'convertOn' : 'Converteer op de site $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integratie', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Deze elFinder heeft de volgende externe services. Controleer de voorwaarden, privacy policy, etc. voor gebruik', // from v2.1.40 added 11.7.2018 'showHidden' : 'Toon verborgen items', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Verberg verborgen items', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Toon/verberg verborgen items', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'File types die aangemaakt mogen worden', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type voor tekstbestand', // from v2.1.41 added 7.8.2018 'add' : 'Toevoegen', // from v2.1.41 added 7.8.2018 'theme' : 'Thema', // from v2.1.43 added 19.10.2018 'default' : 'Default', // from v2.1.43 added 19.10.2018 'description' : 'Beschrijving', // from v2.1.43 added 19.10.2018 'website' : 'Website', // from v2.1.43 added 19.10.2018 'author' : 'Auteur', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'Licensie', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Dit item kan niet worden opgeslagen, exporteer naar je pc om wijzingen te bewaren', // from v2.1.44 added 1.12.2018 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Onbekend', 'kindRoot' : 'Volume Root', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Map', 'kindSelects' : 'Selecties', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Verbroken alias', /********************************** applications **********************************/ 'kindApp' : 'Applicatie', 'kindPostscript' : 'Postscript document', 'kindMsOffice' : 'Microsoft Office document', 'kindMsWord' : 'Microsoft Word document', 'kindMsExcel' : 'Microsoft Excel document', 'kindMsPP' : 'Microsoft Powerpoint presentation', 'kindOO' : 'Open Office document', 'kindAppFlash' : 'Flash applicatie', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent bestand', 'kind7z' : '7z archief', 'kindTAR' : 'TAR archief', 'kindGZIP' : 'GZIP archief', 'kindBZIP' : 'BZIP archief', 'kindXZ' : 'XZ archief', 'kindZIP' : 'ZIP archief', 'kindRAR' : 'RAR archief', 'kindJAR' : 'Java JAR bestand', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM package', /********************************** texts **********************************/ 'kindText' : 'Tekst bestand', 'kindTextPlain' : 'Tekst', 'kindPHP' : 'PHP bronbestand', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML document', 'kindJS' : 'Javascript bronbestand', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C bronbestand', 'kindCHeader' : 'C header bronbestand', 'kindCPP' : 'C++ bronbestand', 'kindCPPHeader' : 'C++ header bronbestand', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python bronbestand', 'kindJava' : 'Java bronbestand', 'kindRuby' : 'Ruby bronbestand', 'kindPerl' : 'Perl bronbestand', 'kindSQL' : 'SQL bronbestand', 'kindXML' : 'XML document', 'kindAWK' : 'AWK bronbestand', 'kindCSV' : 'Komma gescheiden waardes', 'kindDOCBOOK' : 'Docbook XML document', 'kindMarkdown' : 'Markdown tekst', // added 20.7.2015 /********************************** images **********************************/ // 'kindImage' : 'Afbeelding', 'kindBMP' : 'BMP afbeelding', 'kindJPEG' : 'JPEG afbeelding', 'kindGIF' : 'GIF afbeelding', 'kindPNG' : 'PNG afbeelding', 'kindTIFF' : 'TIFF afbeelding', 'kindTGA' : 'TGA afbeelding', 'kindPSD' : 'Adobe Photoshop afbeelding', 'kindXBITMAP' : 'X bitmap afbeelding', 'kindPXM' : 'Pixelmator afbeelding', /********************************** media **********************************/ 'kindAudio' : 'Audio media', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video media', 'kindVideoDV' : 'DV video', 'kindVideoMPEG' : 'MPEG video', 'kindVideoMPEG4' : 'MPEG-4 video', 'kindVideoAVI' : 'AVI video', 'kindVideoMOV' : 'Quick Time video', 'kindVideoWM' : 'Windows Media video', 'kindVideoFlash' : 'Flash video', 'kindVideoMKV' : 'Matroska video', 'kindVideoOGG' : 'Ogg video' } }; })); application/library/js/i18n/elfinder.sl.js000064400000037447147577724760014522 0ustar00/** * Slovenian translation * @author Damjan Rems * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.sl = { translator : 'Damjan Rems <d_rems at yahoo.com>', language : 'Slovenơčina', direction : 'ltr', dateFormat : 'd.m.Y H:i', fancyDateFormat : '$1 H:i', messages : { /********************************** errors **********************************/ 'error' : 'Napaka', 'errUnknown' : 'Neznana napaka.', 'errUnknownCmd' : 'Neznan ukaz.', 'errJqui' : 'Napačna jQuery UI nastavitev. Selectable, draggable in droppable dodatki morajo biti vključeni.', 'errNode' : 'elFinder potrebuje "DOM Element".', 'errURL' : 'Napačna nastavitev elFinder-ja! Manjka URL nastavitev.', 'errAccess' : 'Dostop zavrnjen.', 'errConnect' : 'Ne morem se priključiti na "backend".', 'errAbort' : 'Povezava prekinjena (aborted).', 'errTimeout' : 'Povezava potekla (timeout).', 'errNotFound' : 'Nisem naĆĄel "backend-a".', 'errResponse' : 'Napačni "backend" odgovor.', 'errConf' : 'Napačna "backend" nastavitev.', 'errJSON' : 'JSON modul ni instaliran.', 'errNoVolumes' : 'Readable volumes not available.', 'errCmdParams' : 'Napačni parametri za ukaz "$1".', 'errDataNotJSON' : 'Podatki niso v JSON obliki.', 'errDataEmpty' : 'Ni podatkov oz. so prazni.', 'errCmdReq' : '"Backend" zahtevek potrebuje ime ukaza.', 'errOpen' : '"$1" ni moĆŸno odpreti.', 'errNotFolder' : 'Objekt ni mapa.', 'errNotFile' : 'Objekt ni datoteka.', 'errRead' : '"$1" ni moĆŸno brati.', 'errWrite' : 'Ne morem pisati v "$1".', 'errPerm' : 'Dostop zavrnjen.', 'errLocked' : '"$1" je zaklenjen(a) in je ni moĆŸno preimenovati, premakniti ali izbrisati.', 'errExists' : 'Datoteka z imenom "$1" ĆŸe obstaja.', 'errInvName' : 'Napačno ime datoteke.', 'errFolderNotFound' : 'Mape nisem naĆĄel.', 'errFileNotFound' : 'Datoteke nisem naĆĄel.', 'errTrgFolderNotFound' : 'Ciljna mapa "$1" ne obstaja.', 'errPopup' : 'Brskalnik je preprečil prikaz (popup) okna. Za vpogled datoteke omogočite nastavitev v vaĆĄem brskalniku.', 'errMkdir' : 'Ni moĆŸno dodati mape "$1".', 'errMkfile' : 'Ni moĆŸno dodati datoteke "$1".', 'errRename' : 'Ni moĆŸno preimenovati "$1".', 'errCopyFrom' : 'Kopiranje datotek iz "$1" ni dovoljeno.', 'errCopyTo' : 'Kopiranje datotek na "$1" ni dovoljeno.', 'errUpload' : 'Napaka pri prenosu.', 'errUploadFile' : '"$1" ni moĆŸno naloĆŸiti (upload).', 'errUploadNoFiles' : 'Ni datotek za nalaganje (upload).', 'errUploadTotalSize' : 'Podatki presegajo največjo dovoljeno velikost.', 'errUploadFileSize' : 'Datoteka presega največjo dovoljeno velikost.', 'errUploadMime' : 'Datoteke s to končnico niso dovoljene.', 'errUploadTransfer' : '"$1" napaka pri prenosu.', 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', 'errReplace' : 'Unable to replace "$1".', 'errSave' : '"$1" ni moĆŸno shraniti.', 'errCopy' : '"$1" ni moĆŸno kopirati.', 'errMove' : '"$1" ni moĆŸno premakniti.', 'errCopyInItself' : '"$1" ni moĆŸno kopirati samo vase.', 'errRm' : '"$1" ni moĆŸno izbrisati.', 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'Datotek iz "$1" ni moĆŸno odpakirati.', 'errArchive' : 'Napaka pri delanju arhiva.', 'errArcType' : 'Nepodprta vrsta arhiva.', 'errNoArchive' : 'Datoteka ni arhiv ali vrsta arhiva ni podprta.', 'errCmdNoSupport' : '"Backend" ne podpira tega ukaza.', 'errReplByChild' : 'Mape “$1” ni moĆŸno zamenjati z vsebino mape.', 'errArcSymlinks' : 'Zaradi varnostnih razlogov arhiva ki vsebuje "symlinks" ni moĆŸno odpakirati.', 'errArcMaxSize' : 'Datoteke v arhivu presegajo največjo dovoljeno velikost.', 'errResize' : '"$1" ni moĆŸno razĆĄiriti.', 'errResizeDegree' : 'Invalid rotate degree.', 'errResizeRotate' : 'Unable to rotate image.', 'errResizeSize' : 'Invalid image size.', 'errResizeNoChange' : 'Image size not changed.', 'errUsupportType' : 'Nepodprta vrsta datoteke.', 'errNotUTF8Content' : 'File "$1" is not in UTF-8 and cannot be edited.', // added 9.11.2011 'errNetMount' : 'Unable to mount "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Unsupported protocol.', // added 17.04.2012 'errNetMountFailed' : 'Mount failed.', // added 17.04.2012 'errNetMountHostReq' : 'Host required.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'Naredi arhiv', 'cmdback' : 'Nazaj', 'cmdcopy' : 'Kopiraj', 'cmdcut' : 'IzreĆŸi', 'cmddownload' : 'Poberi (download)', 'cmdduplicate' : 'Podvoji', 'cmdedit' : 'Uredi datoteko', 'cmdextract' : 'Odpakiraj datoteke iz arhiva', 'cmdforward' : 'Naprej', 'cmdgetfile' : 'Izberi datoteke', 'cmdhelp' : 'Več o', 'cmdhome' : 'Domov', 'cmdinfo' : 'Lastnosti', 'cmdmkdir' : 'Nova mapa', 'cmdmkfile' : 'Nova datoteka', 'cmdopen' : 'Odpri', 'cmdpaste' : 'Prilepi', 'cmdquicklook' : 'Hitri ogled', 'cmdreload' : 'OsveĆŸi', 'cmdrename' : 'Preimenuj', 'cmdrm' : 'IzbriĆĄi', 'cmdsearch' : 'Poiơči datoteke', 'cmdup' : 'Mapa nazaj', 'cmdupload' : 'NaloĆŸi (upload)', 'cmdview' : 'Ogled', 'cmdresize' : 'Povečaj (pomanjĆĄaj) sliko', 'cmdsort' : 'Razvrsti', 'cmdnetmount' : 'Mount network volume', /*********************************** buttons ***********************************/ 'btnClose' : 'Zapri', 'btnSave' : 'Shrani', 'btnRm' : 'IzbriĆĄi', 'btnApply' : 'Uporabi', 'btnCancel' : 'Prekliči', 'btnNo' : 'Ne', 'btnYes' : 'Da', 'btnMount' : 'Mount', /******************************** notifications ********************************/ 'ntfopen' : 'Odpri mapo', 'ntffile' : 'Odpri datoteko', 'ntfreload' : 'OsveĆŸi vsebino mape', 'ntfmkdir' : 'Ustvarjam mapo', 'ntfmkfile' : 'Ustvarjam datoteke', 'ntfrm' : 'BriĆĄem datoteke', 'ntfcopy' : 'Kopiram datoteke', 'ntfmove' : 'Premikam datoteke', 'ntfprepare' : 'Pripravljam se na kopiranje datotek', 'ntfrename' : 'Preimenujem datoteke', 'ntfupload' : 'Nalagam (upload) datoteke', 'ntfdownload' : 'Pobiram (download) datoteke', 'ntfsave' : 'Shranjujem datoteke', 'ntfarchive' : 'Ustvarjam arhiv', 'ntfextract' : 'Razpakiram datoteke iz arhiva', 'ntfsearch' : 'Iơčem datoteke', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Počakaj delam >_<', 'ntfloadimg' : 'Nalagam sliko', 'ntfnetmount' : 'Mounting network volume', // added 18.04.2012 'ntfdim' : 'Acquiring image dimension', // added 20.05.2013 /************************************ dates **********************************/ 'dateUnknown' : 'neznan', 'Today' : 'Danes', 'Yesterday' : 'Včeraj', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Maj', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Avg', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'Januar', 'February' : 'Februar', 'March' : 'Marec', 'April' : 'April', 'May' : 'Maj', 'June' : 'Junij', 'July' : 'Julij', 'August' : 'Avgust', 'September' : 'September', 'October' : 'Oktober', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Nedelja', 'Monday' : 'Ponedeljek', 'Tuesday' : 'Torek', 'Wednesday' : 'Sreda', 'Thursday' : 'Četrtek', 'Friday' : 'Petek', 'Saturday' : 'Sobota', 'Sun' : 'Ned', 'Mon' : 'Pon', 'Tue' : 'Tor', 'Wed' : 'Sre', 'Thu' : 'Čet', 'Fri' : 'Pet', 'Sat' : 'Sob', /******************************** sort variants ********************************/ 'sortname' : 'po imenu', 'sortkind' : 'po vrsti', 'sortsize' : 'po velikosti', 'sortdate' : 'po datumu', 'sortFoldersFirst' : 'Folders first', /********************************** messages **********************************/ 'confirmReq' : 'Zahtevana je potrditev', 'confirmRm' : 'Ste prepričani, da ĆŸelite izbrisati datoteko?
      POZOR! Tega ukaza ni moĆŸno preklicati!', 'confirmRepl' : 'Zamenjam staro datoteko z novo?', 'apllyAll' : 'Uporabi pri vseh', 'name' : 'Ime', 'size' : 'Velikost', 'perms' : 'Dovoljenja', 'modify' : 'Spremenjeno', 'kind' : 'Vrsta', 'read' : 'beri', 'write' : 'piĆĄi', 'noaccess' : 'ni dostopa', 'and' : 'in', 'unknown' : 'neznan', 'selectall' : 'Izberi vse datoteke', 'selectfiles' : 'Izberi datotek(o)e', 'selectffile' : 'Izberi prvo datoteko', 'selectlfile' : 'Izberi zadnjo datoteko', 'viewlist' : 'Seznam', 'viewicons' : 'Ikone', 'places' : 'Mesta (places)', 'calc' : 'Izračun', 'path' : 'Pot do', 'aliasfor' : 'Sopomenka (alias) za', 'locked' : 'Zaklenjeno', 'dim' : 'Dimenzije', 'files' : 'Datoteke', 'folders' : 'Mape', 'items' : 'Predmeti', 'yes' : 'da', 'no' : 'ne', 'link' : 'Povezava', 'searcresult' : 'Rezultati iskanja', 'selected' : 'izbrani predmeti', 'about' : 'Več o', 'shortcuts' : 'BliĆŸnjice', 'help' : 'Pomoč', 'webfm' : 'Spletni upravitelj datotek', 'ver' : 'Verzija', 'protocolver' : 'verzija protokola', 'homepage' : 'Domača stran', 'docs' : 'Dokumentacija', 'github' : 'Fork us on Github', 'twitter' : 'Sledi na twitterju', 'facebook' : 'PridruĆŸi se nam na facebook-u', 'team' : 'Tim', 'chiefdev' : 'Glavni razvijalec', 'developer' : 'razvijalec', 'contributor' : 'contributor', 'maintainer' : 'vzdrĆŸevalec', 'translator' : 'prevajalec', 'icons' : 'Ikone', 'dontforget' : 'In ne pozabi na brisačo', 'shortcutsof' : 'BliĆŸnjica onemogočena', 'dropFiles' : 'Datoteke spusti tukaj', 'or' : 'ali', 'selectForUpload' : 'Izberi datoteke za nalaganje', 'moveFiles' : 'Premakni datoteke', 'copyFiles' : 'Kopiraj datoteke', 'rmFromPlaces' : 'IzbriĆĄi iz mesta (places)', 'aspectRatio' : 'Razmerje slike', 'scale' : 'RazĆĄiri', 'width' : 'Ć irina', 'height' : 'ViĆĄina', 'resize' : 'Povečaj', 'crop' : 'ObreĆŸi', 'rotate' : 'Zavrti', 'rotate-cw' : 'Zavrti 90 st. v smeri ure', 'rotate-ccw' : 'Zavrti 90 st. v obratni smeri ure', 'degree' : 'Stopnja', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'User', // added 18.04.2012 'pass' : 'Password', // added 18.04.2012 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Neznan', 'kindFolder' : 'Mapa', 'kindAlias' : 'Sopomenka (alias)', 'kindAliasBroken' : 'Nedelujoča sopomenka (alias)', // applications 'kindApp' : 'Program', 'kindPostscript' : 'Postscript dokument', 'kindMsOffice' : 'Microsoft Office dokument', 'kindMsWord' : 'Microsoft Word dokument', 'kindMsExcel' : 'Microsoft Excel dokument', 'kindMsPP' : 'Microsoft Powerpoint predstavitev', 'kindOO' : 'Open Office dokument', 'kindAppFlash' : 'Flash program', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent datoteka', 'kind7z' : '7z arhiv', 'kindTAR' : 'TAR arhiv', 'kindGZIP' : 'GZIP arhiv', 'kindBZIP' : 'BZIP arhiv', 'kindXZ' : 'XZ arhiv', 'kindZIP' : 'ZIP arhiv', 'kindRAR' : 'RAR arhiv', 'kindJAR' : 'Java JAR datoteka', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM paket', // texts 'kindText' : 'Tekst dokument', 'kindTextPlain' : 'Samo tekst', 'kindPHP' : 'PHP koda', 'kindCSS' : 'Cascading style sheet (CSS)', 'kindHTML' : 'HTML dokument', 'kindJS' : 'Javascript koda', 'kindRTF' : 'Rich Text Format (RTF)', 'kindC' : 'C koda', 'kindCHeader' : 'C header koda', 'kindCPP' : 'C++ koda', 'kindCPPHeader' : 'C++ header koda', 'kindShell' : 'Unix shell skripta', 'kindPython' : 'Python kdoa', 'kindJava' : 'Java koda', 'kindRuby' : 'Ruby koda', 'kindPerl' : 'Perl skripta', 'kindSQL' : 'SQL koda', 'kindXML' : 'XML dokument', 'kindAWK' : 'AWK koda', 'kindCSV' : 'Besedilo ločeno z vejico (CSV)', 'kindDOCBOOK' : 'Docbook XML dokument', // images 'kindImage' : 'Slika', 'kindBMP' : 'BMP slika', 'kindJPEG' : 'JPEG slika', 'kindGIF' : 'GIF slika', 'kindPNG' : 'PNG slika', 'kindTIFF' : 'TIFF slika', 'kindTGA' : 'TGA slika', 'kindPSD' : 'Adobe Photoshop slika', 'kindXBITMAP' : 'X bitmap slika', 'kindPXM' : 'Pixelmator slika', // media 'kindAudio' : 'Avdio medija', 'kindAudioMPEG' : 'MPEG zvok', 'kindAudioMPEG4' : 'MPEG-4 zvok', 'kindAudioMIDI' : 'MIDI zvok', 'kindAudioOGG' : 'Ogg Vorbis zvok', 'kindAudioWAV' : 'WAV zvok', 'AudioPlaylist' : 'MP3 seznam', 'kindVideo' : 'Video medija', 'kindVideoDV' : 'DV film', 'kindVideoMPEG' : 'MPEG film', 'kindVideoMPEG4' : 'MPEG-4 film', 'kindVideoAVI' : 'AVI film', 'kindVideoMOV' : 'Quick Time film', 'kindVideoWM' : 'Windows Media film', 'kindVideoFlash' : 'Flash film', 'kindVideoMKV' : 'Matroska film', 'kindVideoOGG' : 'Ogg film' } }; })); application/library/js/i18n/elfinder.fr_CA.js000064400000105055147577724760015045 0ustar00/** * Traduction canadienne française (identique Ă  la traduction française) * @author RĂ©gis Guyomarch * @author Benoit Delachaux * @author Jonathan Grunder * @version 2019-10-15 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.fr_CA = { translator : 'RĂ©gis Guyomarch <regisg@gmail.com>, Benoit Delachaux <benorde33@gmail.com>, Jonathan Grunder <jonathan.grunder@gmail.com>', language : 'française', direction : 'ltr', dateFormat : 'd/M/Y H:i', // will show like: 15/Oct/2019 14:47 fancyDateFormat : '$1 H:i', // will show like: Aujourd'hui 14:47 nonameDateFormat : 'ymd-His', // noname upload will show like: 191015-144704 messages : { /********************************** errors **********************************/ 'error' : 'Erreur', 'errUnknown' : 'Erreur inconnue.', 'errUnknownCmd' : 'Commande inconnue.', 'errJqui' : 'Mauvaise configuration de jQuery UI. Les composants Selectable, draggable et droppable doivent ĂȘtre inclus.', 'errNode' : 'elFinder requiert que l\'Ă©lĂ©ment DOM ait Ă©tĂ© crĂ©Ă©.', 'errURL' : 'Mauvaise configuration d\'elFinder ! L\'option URL n\'a pas Ă©tĂ© dĂ©finie.', 'errAccess' : 'AccĂšs refusĂ©.', 'errConnect' : 'Impossible de se connecter au backend.', 'errAbort' : 'Connexion interrompue.', 'errTimeout' : 'DĂ©lai de connexion dĂ©passĂ©.', 'errNotFound' : 'Backend non trouvĂ©.', 'errResponse' : 'Mauvaise rĂ©ponse du backend.', 'errConf' : 'Mauvaise configuration du backend.', 'errJSON' : 'Le module PHP JSON n\'est pas installĂ©.', 'errNoVolumes' : 'Aucun volume lisible.', 'errCmdParams' : 'Mauvais paramĂ©trage de la commande "$1".', 'errDataNotJSON' : 'Les donnĂ©es ne sont pas au format JSON.', 'errDataEmpty' : 'DonnĂ©es inexistantes.', 'errCmdReq' : 'La requĂȘte au Backend doit comporter le nom de la commande.', 'errOpen' : 'Impossible d\'ouvrir "$1".', 'errNotFolder' : 'Cet objet n\'est pas un dossier.', 'errNotFile' : 'Cet objet n\'est pas un fichier.', 'errRead' : 'Impossible de lire "$1".', 'errWrite' : 'Impossible d\'Ă©crire dans "$1".', 'errPerm' : 'Permission refusĂ©e.', 'errLocked' : '"$1" est verrouillĂ© et ne peut ĂȘtre dĂ©placĂ© ou supprimĂ©.', 'errExists' : 'Un Ă©lĂ©ment nommĂ© "$1" existe dĂ©jĂ .', 'errInvName' : 'Nom de fichier incorrect.', 'errInvDirname' : 'Nom de dossier incorrect.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Dossier non trouvĂ©.', 'errFileNotFound' : 'Fichier non trouvĂ©.', 'errTrgFolderNotFound' : 'Dossier destination "$1" non trouvĂ©.', 'errPopup' : 'Le navigateur web a empĂȘchĂ© l\'ouverture d\'une fenĂȘtre "popup". Pour ouvrir le fichier, modifiez les options du navigateur web.', 'errMkdir' : 'Impossible de crĂ©er le dossier "$1".', 'errMkfile' : 'Impossible de crĂ©er le fichier "$1".', 'errRename' : 'Impossible de renommer "$1".', 'errCopyFrom' : 'Interdiction de copier des fichiers depuis le volume "$1".', 'errCopyTo' : 'Interdiction de copier des fichiers vers le volume "$1".', 'errMkOutLink' : 'Impossible de crĂ©er un lien en dehors du volume principal.', // from v2.1 added 03.10.2015 'errUpload' : 'Erreur lors de l\'envoi du fichier.', // old name - errUploadCommon 'errUploadFile' : 'Impossible d\'envoyer "$1".', // old name - errUpload 'errUploadNoFiles' : 'Aucun fichier Ă  envoyer.', 'errUploadTotalSize' : 'Les donnĂ©es dĂ©passent la taille maximale allouĂ©e.', // old name - errMaxSize 'errUploadFileSize' : 'Le fichier dĂ©passe la taille maximale allouĂ©e.', // old name - errFileMaxSize 'errUploadMime' : 'Type de fichier non autorisĂ©.', 'errUploadTransfer' : '"$1" erreur transfert.', 'errUploadTemp' : 'Impossible de crĂ©er un fichier temporaire pour transfĂ©rer les fichiers.', // from v2.1 added 26.09.2015 'errNotReplace' : 'L\'objet "$1" existe dĂ©jĂ  Ă  cet endroit et ne peut ĂȘtre remplacĂ© par un objet d\'un type diffĂ©rent.', // new 'errReplace' : 'Impossible de remplacer "$1".', 'errSave' : 'Impossible de sauvegarder "$1".', 'errCopy' : 'Impossible de copier "$1".', 'errMove' : 'Impossible de dĂ©placer "$1".', 'errCopyInItself' : 'Impossible de copier "$1" sur lui-mĂȘme.', 'errRm' : 'Impossible de supprimer "$1".', 'errTrash' : 'Impossible de dĂ©placer dans la corbeille', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Impossible de supprimer le(s) fichier(s) source(s).', 'errExtract' : 'Imbossible d\'extraire les fichiers Ă  partir de "$1".', 'errArchive' : 'Impossible de crĂ©er l\'archive.', 'errArcType' : 'Type d\'archive non supportĂ©.', 'errNoArchive' : 'Le fichier n\'est pas une archive, ou c\'est un type d\'archive non supportĂ©.', 'errCmdNoSupport' : 'Le Backend ne prend pas en charge cette commande.', 'errReplByChild' : 'Le dossier “$1” ne peut pas ĂȘtre remplacĂ© par un Ă©lĂ©ment qu\'il contient.', 'errArcSymlinks' : 'Par mesure de sĂ©curitĂ©, il est dĂ©fendu d\'extraire une archive contenant des liens symboliques ou des noms de fichier non autorisĂ©s.', // edited 24.06.2012 'errArcMaxSize' : 'Les fichiers de l\'archive excĂšdent la taille maximale autorisĂ©e.', 'errResize' : 'Impossible de redimensionner "$1".', 'errResizeDegree' : 'DegrĂ© de rotation invalide.', // added 7.3.2013 'errResizeRotate' : 'L\'image ne peut pas ĂȘtre tournĂ©e.', // added 7.3.2013 'errResizeSize' : 'Dimension de l\'image non-valide.', // added 7.3.2013 'errResizeNoChange' : 'L\'image n\'est pas redimensionnable.', // added 7.3.2013 'errUsupportType' : 'Type de fichier non supportĂ©.', 'errNotUTF8Content' : 'Le fichier "$1" n\'est pas en UTF-8, il ne peut ĂȘtre Ă©ditĂ©.', // added 9.11.2011 'errNetMount' : 'Impossible de monter "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protocole non supportĂ©.', // added 17.04.2012 'errNetMountFailed' : 'Echec du montage.', // added 17.04.2012 'errNetMountHostReq' : 'HĂŽte requis.', // added 18.04.2012 'errSessionExpires' : 'Votre session a expirĂ© en raison de son inactivitĂ©.', 'errCreatingTempDir' : 'Impossible de crĂ©er le rĂ©pertoire temporaire : "$1"', 'errFtpDownloadFile' : 'Impossible de tĂ©lĂ©charger le file depuis l\'accĂšs FTP : "$1"', 'errFtpUploadFile' : 'Impossible d\'envoyer le fichier vers l\'accĂšs FTP : "$1"', 'errFtpMkdir' : 'Impossible de crĂ©er un rĂ©pertoire distant sur l\'accĂšs FTP :"$1"', 'errArchiveExec' : 'Erreur lors de l\'archivage des fichiers : "$1"', 'errExtractExec' : 'Erreur lors de l\'extraction des fichiers : "$1"', 'errNetUnMount' : 'Impossible de dĂ©monter.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Conversion en UTF-8 impossible', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Essayez Google Chrome, si voulez envoyer le dossier.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'DĂ©lai d’attente dĂ©passĂ© pour la recherche "$1". Le rĂ©sultat de la recherche est partiel.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'RĂ©authorisation requise.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Le nombre maximal d\'Ă©lĂ©ments pouvant ĂȘtre sĂ©lectionnĂ©s est $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Impossible de restaurer la corbeille. La destination de la restauration n\'a pu ĂȘtre identifiĂ©e.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Aucun Ă©diteur n\'a Ă©tĂ© trouvĂ© pour ce type de fichier.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Une erreur est survenue du cĂŽtĂ© serveur.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Impossible de vider le dossier "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'There are $1 more errors.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'CrĂ©er une archive', 'cmdback' : 'PrĂ©cĂ©dent', 'cmdcopy' : 'Copier', 'cmdcut' : 'Couper', 'cmddownload' : 'TĂ©lĂ©charger', 'cmdduplicate' : 'Dupliquer', 'cmdedit' : 'Éditer le fichier', 'cmdextract' : 'Extraire les fichiers de l\'archive', 'cmdforward' : 'Suivant', 'cmdgetfile' : 'SĂ©lectionner les fichiers', 'cmdhelp' : 'À propos de ce logiciel', 'cmdhome' : 'Accueil', 'cmdinfo' : 'Informations', 'cmdmkdir' : 'Nouveau dossier', 'cmdmkdirin' : 'Dans un nouveau dossier', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nouveau fichier', 'cmdopen' : 'Ouvrir', 'cmdpaste' : 'Coller', 'cmdquicklook' : 'PrĂ©visualiser', 'cmdreload' : 'Actualiser', 'cmdrename' : 'Renommer', 'cmdrm' : 'Supprimer', 'cmdtrash' : 'À la corbeille', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Restaurer', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Trouver les fichiers', 'cmdup' : 'Remonter au dossier parent', 'cmdupload' : 'Envoyer les fichiers', 'cmdview' : 'Vue', 'cmdresize' : 'Redimensionner l\'image', 'cmdsort' : 'Trier', 'cmdnetmount' : 'Monter un volume rĂ©seau', // added 18.04.2012 'cmdnetunmount': 'DĂ©monter', // from v2.1 added 30.04.2012 'cmdplaces' : 'Vers Favoris', // added 28.12.2014 'cmdchmod' : 'Changer de mode', // from v2.1 added 20.6.2015 'cmdopendir' : 'Ouvrir un dossier', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'RĂ©initialiser largeur colone', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Plein Ă©cran', // from v2.1.15 added 03.08.2016 'cmdmove' : 'DĂ©placer', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Vider le dossier', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Annuler', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Refaire', // from v2.1.27 added 31.07.2017 'cmdpreference': 'PrĂ©fĂ©rences', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Tout sĂ©lectionner', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Tout dĂ©sĂ©lectionner', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Inverser la sĂ©lection', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Ouvrir dans une nouvelle fenĂȘtre', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Hide (Preference)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Fermer', 'btnSave' : 'Sauvegarder', 'btnRm' : 'Supprimer', 'btnApply' : 'Confirmer', 'btnCancel' : 'Annuler', 'btnNo' : 'Non', 'btnYes' : 'Oui', 'btnMount' : 'Monter', // added 18.04.2012 'btnApprove': 'Aller Ă  $1 & approuver', // from v2.1 added 26.04.2012 'btnUnmount': 'DĂ©monter', // from v2.1 added 30.04.2012 'btnConv' : 'Convertir', // from v2.1 added 08.04.2014 'btnCwd' : 'Ici', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'Tous', // from v2.1 added 22.5.2015 'btnMime' : 'Type MIME', // from v2.1 added 22.5.2015 'btnFileName':'Nom du fichier', // from v2.1 added 22.5.2015 'btnSaveClose': 'Enregistrer & Ferme', // from v2.1 added 12.6.2015 'btnBackup' : 'Sauvegarde', // fromv2.1 added 28.11.2015 'btnRename' : 'Renommer', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Renommer (tous)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'PrĂ©c. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Suiv. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Sauvegarder sous', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Ouvrir le dossier', 'ntffile' : 'Ouvrir le fichier', 'ntfreload' : 'Actualiser le contenu du dossier', 'ntfmkdir' : 'CrĂ©ation du dossier', 'ntfmkfile' : 'CrĂ©ation des fichiers', 'ntfrm' : 'Supprimer les Ă©lĂ©ments', 'ntfcopy' : 'Copier les Ă©lĂ©ments', 'ntfmove' : 'DĂ©placer les Ă©lĂ©ments', 'ntfprepare' : 'PrĂ©paration de la copie des Ă©lĂ©ments', 'ntfrename' : 'Renommer les fichiers', 'ntfupload' : 'Envoi des fichiers', 'ntfdownload' : 'TĂ©lĂ©chargement des fichiers', 'ntfsave' : 'Sauvegarder les fichiers', 'ntfarchive' : 'CrĂ©ation de l\'archive', 'ntfextract' : 'Extraction des fichiers de l\'archive', 'ntfsearch' : 'Recherche des fichiers', 'ntfresize' : 'Redimensionner les images', 'ntfsmth' : 'Fait quelque chose', 'ntfloadimg' : 'Chargement de l\'image', 'ntfnetmount' : 'Monte le volume rĂ©seau', // added 18.04.2012 'ntfnetunmount': 'DĂ©monte le volume rĂ©seau', // from v2.1 added 30.04.2012 'ntfdim' : 'Calcule la dimension de l\'image', // added 20.05.2013 'ntfreaddir' : 'Lecture des informations du dossier', // from v2.1 added 01.07.2013 'ntfurl' : 'RĂ©cupĂ©ration de l’URL du lien', // from v2.1 added 11.03.2014 'ntfchmod' : 'Changement de mode', // from v2.1 added 20.6.2015 'ntfpreupload': 'VĂ©rification du nom du fichier envoyĂ©', // from v2.1 added 31.11.2015 'ntfzipdl' : 'CrĂ©ation d’un fichier pour le tĂ©lĂ©chargement', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Traitement de l\'information du chemin', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Traitement du fichier envoyĂ©', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Mettre Ă  la corbeille', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Restaurer depuis la corbeille', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Validation du dossier de destination', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Annuler l\'opĂ©ration prĂ©cĂ©dente', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Refaire l\'opĂ©ration annulĂ©e', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Corbeille', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'Inconnue', 'Today' : 'Aujourd\'hui', 'Yesterday' : 'Hier', 'msJan' : 'Jan', 'msFeb' : 'FĂ©v', 'msMar' : 'Mar', 'msApr' : 'Avr', 'msMay' : 'Mai', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'AoĂ»', 'msSep' : 'Sep', 'msOct' : 'Oct', 'msNov' : 'Nov', 'msDec' : 'DĂ©c', 'January' : 'Janvier', 'February' : 'FĂ©vrier', 'March' : 'Mars', 'April' : 'Avril', 'May' : 'Mai', 'June' : 'Juin', 'July' : 'Huillet', 'August' : 'AoĂ»t', 'September' : 'Septembre', 'October' : 'Octobre', 'November' : 'Novembre', 'December' : 'DĂ©cembre', 'Sunday' : 'Dimanche', 'Monday' : 'Lundi', 'Tuesday' : 'Mardi', 'Wednesday' : 'Mercredi', 'Thursday' : 'Jeudi', 'Friday' : 'Vendredi', 'Saturday' : 'Samedi', 'Sun' : 'Dim', 'Mon' : 'Lun', 'Tue' : 'Mar', 'Wed' : 'Mer', 'Thu' : 'Jeu', 'Fri' : 'Ven', 'Sat' : 'Sam', /******************************** sort variants ********************************/ 'sortname' : 'par nom', 'sortkind' : 'par type', 'sortsize' : 'par taille', 'sortdate' : 'par date', 'sortFoldersFirst' : 'Dossiers en premier', 'sortperm' : 'par permission', // from v2.1.13 added 13.06.2016 'sortmode' : 'par mode', // from v2.1.13 added 13.06.2016 'sortowner' : 'par propriĂ©taire', // from v2.1.13 added 13.06.2016 'sortgroup' : 'par groupe', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Egalement arborescence', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NouveauFichier.txt', // added 10.11.2015 'untitled folder' : 'NouveauDossier', // added 10.11.2015 'Archive' : 'NouvelleArchive', // from v2.1 added 10.11.2015 'untitled file' : 'NewFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: File', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Confirmation requise', 'confirmRm' : 'Êtes-vous certain de vouloir supprimer les Ă©lĂ©ments ?
      Cela ne peut ĂȘtre annulĂ© !', 'confirmRepl' : 'Supprimer l\'ancien fichier par le nouveau ?', 'confirmRest' : 'Remplacer l\'Ă©lĂ©ment existant par l\'Ă©lĂ©ment de la corbeille ?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'L\'encodage n\'est pas UTf-8
      Convertir en UTF-8 ?
      Les contenus deviendront UTF-8 en sauvegardant aprĂšs la conversion.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Impossible de dĂ©tecter l\'encodage de ce fichier. Pour ĂȘtre modifiĂ©, il doit ĂȘtre temporairement convertit en UTF-8.
      Veuillez s\'il vous plaßt sélectionner un encodage pour ce fichier.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Ce fichier a été modifié.
      Les donnĂ©es seront perdues si les changements ne sont pas sauvegardĂ©s.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Êtes-vous certain de vouloir dĂ©placer les Ă©lĂ©ments vers la corbeille?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Are you sure you want to move items to "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Appliquer Ă  tous', 'name' : 'Nom', 'size' : 'Taille', 'perms' : 'Permissions', 'modify' : 'ModifiĂ©', 'kind' : 'Type', 'read' : 'Lecture', 'write' : 'Écriture', 'noaccess' : 'Pas d\'accĂšs', 'and' : 'et', 'unknown' : 'inconnu', 'selectall' : 'SĂ©lectionner tous les Ă©lĂ©ments', 'selectfiles' : 'SĂ©lectionner le(s) Ă©lĂ©ment(s)', 'selectffile' : 'SĂ©lectionner le premier Ă©lĂ©ment', 'selectlfile' : 'SĂ©lectionner le dernier Ă©lĂ©ment', 'viewlist' : 'Vue par liste', 'viewicons' : 'Vue par icĂŽnes', 'viewSmall' : 'Petites icĂŽnes', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Moyennes icĂŽnes', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Grandes icĂŽnes', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'TrĂšs grandes icĂŽnes', // from v2.1.39 added 22.5.2018 'places' : 'Favoris', 'calc' : 'Calculer', 'path' : 'Chemin', 'aliasfor' : 'Raccourcis pour', 'locked' : 'Verrouiller', 'dim' : 'Dimensions', 'files' : 'Fichiers', 'folders' : 'Dossiers', 'items' : 'ÉlĂ©ments', 'yes' : 'oui', 'no' : 'non', 'link' : 'Lien', 'searcresult' : 'RĂ©sultats de la recherche', 'selected' : 'ÉlĂ©ments sĂ©lectionnĂ©s', 'about' : 'À propos', 'shortcuts' : 'Raccourcis', 'help' : 'Aide', 'webfm' : 'Gestionnaire de fichier Web', 'ver' : 'Version', 'protocolver' : 'Version du protocole', 'homepage' : 'Page du projet', 'docs' : 'Documentation', 'github' : 'Forkez-nous sur Github', 'twitter' : 'Suivez nous sur twitter', 'facebook' : 'Joignez-nous facebook', 'team' : 'Équipe', 'chiefdev' : 'DĂ©veloppeur en chef', 'developer' : 'DĂ©veloppeur', 'contributor' : 'Contributeur', 'maintainer' : 'Mainteneur', 'translator' : 'Traducteur', 'icons' : 'IcĂŽnes', 'dontforget' : 'et n\'oubliez pas votre serviette', 'shortcutsof' : 'Raccourcis dĂ©sactivĂ©s', 'dropFiles' : 'DĂ©posez les fichiers ici', 'or' : 'ou', 'selectForUpload' : 'SĂ©lectionner les fichiers Ă  envoyer', 'moveFiles' : 'DĂ©placer les Ă©lĂ©ments', 'copyFiles' : 'Copier les Ă©lĂ©ments', 'restoreFiles' : 'Restaurer les Ă©lĂ©ments', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Retirer des favoris', 'aspectRatio' : 'Ratio d’affichage', 'scale' : 'Mise Ă  l\'Ă©chelle', 'width' : 'Largeur', 'height' : 'Hauteur', 'resize' : 'Redimensionner', 'crop' : 'Recadrer', 'rotate' : 'Rotation', 'rotate-cw' : 'Rotation de 90 degrĂ©s horaire', 'rotate-ccw' : 'Rotation de 90 degrĂ©s antihoraire', 'degree' : '°', 'netMountDialogTitle' : 'Monter un volume rĂ©seau', // added 18.04.2012 'protocol' : 'Protocole', // added 18.04.2012 'host' : 'HĂŽte', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Utilisateur', // added 18.04.2012 'pass' : 'Mot de passe', // added 18.04.2012 'confirmUnmount' : 'DĂ©monter $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Glissez-dĂ©posez depuis le navigateur de fichier', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Glissez-dĂ©posez les fichiers ici', // from v2.1 added 07.04.2014 'encoding' : 'Encodage', // from v2.1 added 19.12.2014 'locale' : 'Encodage rĂ©gional', // from v2.1 added 19.12.2014 'searchTarget' : 'Destination: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Recherche par type MIME', // from v2.1 added 22.5.2015 'owner' : 'PropriĂ©taire', // from v2.1 added 20.6.2015 'group' : 'Groupe', // from v2.1 added 20.6.2015 'other' : 'Autre', // from v2.1 added 20.6.2015 'execute' : 'ExĂ©cuter', // from v2.1 added 20.6.2015 'perm' : 'Permission', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'Le dossier est vide', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Le dossier est vide.\\ Glissez-dĂ©posez pour ajouter des Ă©lĂ©ments.', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Le dossier est vide.\\ Appuyez longuement pour ajouter des Ă©lĂ©ments.', // from v2.1.6 added 30.12.2015 'quality' : 'QualitĂ©', // from v2.1.6 added 5.1.2016 'autoSync' : 'Synchronisation automatique', // from v2.1.6 added 10.1.2016 'moveUp' : 'DĂ©placer vers le haut', // from v2.1.6 added 18.1.2016 'getLink' : 'Obtenir le lien d’URL', // from v2.1.7 added 9.2.2016 'selectedItems' : 'ÉlĂ©ments sĂ©lectionnĂ©s ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID du dossier', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Permettre l\'accĂšs hors-ligne', // from v2.1.10 added 3.25.2016 'reAuth' : 'Pour se rĂ©authentifier', // from v2.1.10 added 3.25.2016 'nowLoading' : 'En cours de chargement...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Ouvrir multiples fichiers', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Vous allez ouvrir $1 fichiers. Êtes-vous sĂ»r de vouloir les ouvrir dans le navigateur ?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Aucun rĂ©sultat trouvĂ© avec les paramĂštres de recherche.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Modification d\'un fichier.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Vous avez sĂ©lectionnĂ© $1 Ă©lĂ©ments.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Vous avez $1 Ă©lĂ©ments dans le presse-papier.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Recherche incrĂ©mentale disponible uniquement pour la vue active.', // from v2.1.13 added 6.30.2016 'reinstate' : 'RĂ©tablir', // from v2.1.15 added 3.8.2016 'complete' : '$1 complĂ©tĂ©', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Menu contextuel', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Tourner la page', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volumes principaux', // from v2.1.16 added 16.9.2016 'reset' : 'RĂ©initialiser', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Couleur de fond', // from v2.1.16 added 1.10.2016 'colorPicker' : 'SĂ©lecteur de couleur', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'Grille 8px', // from v2.1.16 added 4.10.2016 'enabled' : 'Actif', // from v2.1.16 added 4.10.2016 'disabled' : 'Inactif', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Aucun rĂ©sultat trouvĂ©.\\AAppuyez sur [EntrĂ©e] pour dĂ©velopper la cible de recherche.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Aucun rĂ©sultat trouvĂ© pour la recherche par premiĂšre lettre.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Label texte', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 mins restantes', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'RĂ©ouvrir avec l\'encodage sĂ©lectionnĂ©', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Sauvegarder avec l\'encodage sĂ©lectionnĂ©', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Choisir le dossier', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Recherche par premiĂšre lettre', // from v2.1.23 added 24.3.2017 'presets' : 'PrĂ©sĂ©lections', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Impossible de mettre autant d\'Ă©lĂ©ments Ă  la corbeille.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Zone de texte', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Vider le dossier "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Il n\'y a pas d\'Ă©lĂ©ment dans le dossier "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'PrĂ©fĂ©rence', // from v2.1.26 added 28.6.2017 'language' : 'Configuration de langue', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialisation des configurations sauvegardĂ©es dans ce navigateur', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'ParamĂštres de la barre d\'outils', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 caractĂšres restants.', // from v2.1.29 added 30.8.2017 'sum' : 'Somme', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Taille de fichier brute', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focus on the element of dialog with mouseover', // from v2.1.30 added 2.11.2017 'select' : 'SĂ©lectionner', // from v2.1.30 added 23.11.2017 'selectAction' : 'Action lors de la sĂ©lection d\'un fichier', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Ouvrir avec le dernier Ă©diteur utilisĂ©', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Inverser la sĂ©lection', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Êtes-vous sĂ»r de vouloir renommer les Ă©lĂ©ments sĂ©lectionnĂ©s $1 en $2 ?
      L\'action est dĂ©finitive !', // from v2.1.31 added 4.12.2017 'batchRename' : 'Renommer le Batch', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Nombre', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Ajouter un prĂ©fixe', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Ajouter un suffixe', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Modifier l\'extention', // from v2.1.31 added 8.12.2017 'columnPref' : 'ParamĂštres des colonnes (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Les changements seront immĂ©diatement appliquĂ©s Ă  l\'archive.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Aucun changement ne sera appliquĂ© tant que ce volume n\'a pas Ă©tĂ© dĂ©montĂ©.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Le(s) volume(s) suivant(s) montĂ©s sur ce volume seront Ă©galement dĂ©montĂ©s. Êtes-vous sĂ»r de vouloir le dĂ©monter ?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Informations sur la sĂ©lection', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorithme de hachage de fichier', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Appuyez Ă  nouveau pour quitter.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Barre d\'outils', // from v2.1.38 added 4.4.2018 'workspace' : 'Espace de travail', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialogue', // from v2.1.38 added 4.4.2018 'all' : 'Tout', // from v2.1.38 added 4.4.2018 'iconSize' : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrations', // from v2.1.40 added 11.7.2018 'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Show hidden items', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Hide hidden items', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type of the Text file', // from v2.1.41 added 7.8.2018 'add' : 'Add', // from v2.1.41 added 7.8.2018 'theme' : 'Theme', // from v2.1.43 added 19.10.2018 'default' : 'Default', // from v2.1.43 added 19.10.2018 'description' : 'Description', // from v2.1.43 added 19.10.2018 'website' : 'Website', // from v2.1.43 added 19.10.2018 'author' : 'Author', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'License', // from v2.1.43 added 19.10.2018 'exportToSave' : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Inconnu', 'kindRoot' : 'Volume principal', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Dossier', 'kindSelects' : 'SĂ©lections', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Raccourci', 'kindAliasBroken' : 'Raccourci cassĂ©', // applications 'kindApp' : 'Application', 'kindPostscript' : 'Document Postscript', 'kindMsOffice' : 'Document Microsoft Office', 'kindMsWord' : 'Document Microsoft Word', 'kindMsExcel' : 'Document Microsoft Excel', 'kindMsPP' : 'PrĂ©sentation Microsoft PowerPoint', 'kindOO' : 'Document OpenOffice', 'kindAppFlash' : 'Application Flash', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Fichier BitTorrent', 'kind7z' : 'Archive 7z', 'kindTAR' : 'Archive TAR', 'kindGZIP' : 'Archive GZIP', 'kindBZIP' : 'Archive BZIP', 'kindXZ' : 'Archive XZ', 'kindZIP' : 'Archive ZIP', 'kindRAR' : 'Archive RAR', 'kindJAR' : 'Fichier Java JAR', 'kindTTF' : 'Police True Type', 'kindOTF' : 'Police Open Type', 'kindRPM' : 'Package RPM', // texts 'kindText' : 'Document Text', 'kindTextPlain' : 'Texte non formatĂ©', 'kindPHP' : 'Source PHP', 'kindCSS' : 'Feuille de style en cascade', 'kindHTML' : 'Document HTML', 'kindJS' : 'Source JavaScript', 'kindRTF' : 'Format de texte enrichi (Rich Text Format)', 'kindC' : 'Source C', 'kindCHeader' : 'Source header C', 'kindCPP' : 'Source C++', 'kindCPPHeader' : 'Source header C++', 'kindShell' : 'Shell script Unix', 'kindPython' : 'Source Python', 'kindJava' : 'Source Java', 'kindRuby' : 'Source Ruby', 'kindPerl' : 'Script Perl', 'kindSQL' : 'Source SQL', 'kindXML' : 'Document XML', 'kindAWK' : 'Source AWK', 'kindCSV' : 'CSV', 'kindDOCBOOK' : 'Document Docbook XML', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Image', 'kindBMP' : 'Image BMP', 'kindJPEG' : 'Image JPEG', 'kindGIF' : 'Image GIF', 'kindPNG' : 'Image PNG', 'kindTIFF' : 'Image TIFF', 'kindTGA' : 'Image TGA', 'kindPSD' : 'Image Adobe Photoshop', 'kindXBITMAP' : 'Image X bitmap', 'kindPXM' : 'Image Pixelmator', // media 'kindAudio' : 'Son', 'kindAudioMPEG' : 'Son MPEG', 'kindAudioMPEG4' : 'Son MPEG-4', 'kindAudioMIDI' : 'Son MIDI', 'kindAudioOGG' : 'Son Ogg Vorbis', 'kindAudioWAV' : 'Son WAV', 'AudioPlaylist' : 'Liste de lecture audio', 'kindVideo' : 'VidĂ©o', 'kindVideoDV' : 'VidĂ©o DV', 'kindVideoMPEG' : 'VidĂ©o MPEG', 'kindVideoMPEG4' : 'VidĂ©o MPEG-4', 'kindVideoAVI' : 'VidĂ©o AVI', 'kindVideoMOV' : 'VidĂ©o Quick Time', 'kindVideoWM' : 'VidĂ©o Windows Media', 'kindVideoFlash' : 'VidĂ©o Flash', 'kindVideoMKV' : 'VidĂ©o Matroska', 'kindVideoOGG' : 'VidĂ©o Ogg' } }; })); application/library/js/i18n/elfinder.es.js000064400000076214147577724760014506 0ustar00/** * Español internacional translation * @author JuliĂĄn Torres * @author Luis Faura * @author AdriĂ  Vilanova * @author Wilman MarĂ­n Duran * @version 2018-04-10 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.es = { translator : 'JuliĂĄn Torres <julian.torres@pabernosmatao.com>, Luis Faura <luis@luisfaura.es>, AdriĂ  Vilanova <me@avm99963.tk>, Wilman MarĂ­n Duran <fuclo05@hotmail.com>', language : 'Español internacional', direction : 'ltr', dateFormat : 'M d, Y h:i A', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700 messages : { /********************************** errors **********************************/ 'error' : 'Error', 'errUnknown' : 'Error desconocido.', 'errUnknownCmd' : 'Comando desconocido.', 'errJqui' : 'ConfiguraciĂłn no vĂĄlida de jQuery UI. Deben estar incluidos los componentes selectable, draggable y droppable.', 'errNode' : 'elFinder necesita crear elementos DOM.', 'errURL' : 'ÂĄConfiguraciĂłn no vĂĄlida de elFinder! La opciĂłn URL no estĂĄ configurada.', 'errAccess' : 'Acceso denegado.', 'errConnect' : 'No se ha podido conectar con el backend.', 'errAbort' : 'ConexiĂłn cancelada.', 'errTimeout' : 'ConexiĂłn cancelada por timeout.', 'errNotFound' : 'Backend no encontrado.', 'errResponse' : 'Respuesta no vĂĄlida del backend.', 'errConf' : 'ConfiguraciĂłn no vĂĄlida del backend .', 'errJSON' : 'El mĂłdulo PHP JSON no estĂĄ instalado.', 'errNoVolumes' : 'No hay disponibles volĂșmenes legibles.', 'errCmdParams' : 'ParĂĄmetros no vĂĄlidos para el comando "$1".', 'errDataNotJSON' : 'los datos no estĂĄn en formato JSON.', 'errDataEmpty' : 'No hay datos.', 'errCmdReq' : 'La peticiĂłn del backend necesita un nombre de comando.', 'errOpen' : 'No se puede abrir "$1".', 'errNotFolder' : 'El objeto no es una carpeta.', 'errNotFile' : 'El objeto no es un archivo.', 'errRead' : 'No se puede leer "$1".', 'errWrite' : 'No se puede escribir en "$1".', 'errPerm' : 'Permiso denegado.', 'errLocked' : '"$1" estĂĄ bloqueado y no puede ser renombrado, movido o borrado.', 'errExists' : 'Ya existe un archivo llamado "$1".', 'errInvName' : 'Nombre de archivo no vĂĄlido.', 'errInvDirname' : 'Nombre de carpeta invĂĄlido.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Carpeta no encontrada.', 'errFileNotFound' : 'Archivo no encontrado.', 'errTrgFolderNotFound' : 'Carpeta de destino "$1" no encontrada.', 'errPopup' : 'El navegador impide abrir nuevas ventanas. Puede activarlo en las opciones del navegador.', 'errMkdir' : 'No se puede crear la carpeta "$1".', 'errMkfile' : 'No se puede crear el archivo "$1".', 'errRename' : 'No se puede renombrar "$1".', 'errCopyFrom' : 'No se permite copiar archivos desde el volumen "$1".', 'errCopyTo' : 'No se permite copiar archivos al volumen "$1".', 'errMkOutLink' : 'No se ha podido crear el enlace fuera del volumen raĂ­z.', // from v2.1 added 03.10.2015 'errUpload' : 'Error en el envĂ­o.', // old name - errUploadCommon 'errUploadFile' : 'No se ha podido cargar "$1".', // old name - errUpload 'errUploadNoFiles' : 'No hay archivos para subir.', 'errUploadTotalSize' : 'El tamaño de los datos excede el mĂĄximo permitido.', // old name - errMaxSize 'errUploadFileSize' : 'El tamaño del archivo excede el mĂĄximo permitido.', // old name - errFileMaxSize 'errUploadMime' : 'Tipo de archivo no permitido.', 'errUploadTransfer' : 'Error al transferir "$1".', 'errUploadTemp' : 'No se ha podido crear el archivo temporal para la subida.', // from v2.1 added 26.09.2015 'errNotReplace' : 'El objeto "$1" ya existe y no puede ser reemplazado por otro con otro tipo.', // new 'errReplace' : 'No se puede reemplazar "$1".', 'errSave' : 'No se puede guardar "$1".', 'errCopy' : 'No se puede copiar "$1".', 'errMove' : 'No se puede mover "$1".', 'errCopyInItself' : 'No se puede copiar "$1" en si mismo.', 'errRm' : 'No se puede borrar "$1".', 'errTrash' : 'No se puede enviar a la papelera.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'No se puede(n) borrar los archivo(s).', 'errExtract' : 'No se puede extraer archivos desde "$1".', 'errArchive' : 'No se puede crear el archivo.', 'errArcType' : 'Tipo de archivo no soportado.', 'errNoArchive' : 'El archivo no es de tipo archivo o es de un tipo no soportado.', 'errCmdNoSupport' : 'El backend no soporta este comando.', 'errReplByChild' : 'La carpeta “$1” no puede ser reemplazada por un elemento contenido en ella.', 'errArcSymlinks' : 'Por razones de seguridad no se pueden descomprimir archivos que contengan enlaces simbĂłlicos.', // edited 24.06.2012 'errArcMaxSize' : 'El tamaño del archivo excede el mĂĄximo permitido.', 'errResize' : 'Error al redimensionar "$1".', 'errResizeDegree' : 'Grado de rotaciĂłn invĂĄlido.', // added 7.3.2013 'errResizeRotate' : 'Error al rotar la imagen.', // added 7.3.2013 'errResizeSize' : 'Tamaño de imagen invĂĄlido.', // added 7.3.2013 'errResizeNoChange' : 'No se puede cambiar el tamaño de la imagen.', // added 7.3.2013 'errUsupportType' : 'Tipo de archivo no soportado.', 'errNotUTF8Content' : 'El archivo "$1" no estĂĄ en formato UTF-8 y no puede ser editado.', // added 9.11.2011 'errNetMount' : 'Fallo al montar "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protocolo no soportado.', // added 17.04.2012 'errNetMountFailed' : 'Fallo al montar.', // added 17.04.2012 'errNetMountHostReq' : 'Dominio requerido.', // added 18.04.2012 'errSessionExpires' : 'La sesiĂłn ha expirado por inactividad', 'errCreatingTempDir' : 'No se ha podido crear al directorio temporal: "$1"', 'errFtpDownloadFile' : 'No se ha podido descargar el archivo desde FTP: "$1"', 'errFtpUploadFile' : 'No se ha podido cargar el archivo a FTP: "$1"', 'errFtpMkdir' : 'No se ha podido crear el directorio remoto en FTP: "$1"', 'errArchiveExec' : 'Se ha producido un error durante el archivo: "$1"', 'errExtractExec' : 'Se ha producido un error durante la extracciĂłn de archivos: "$1"', 'errNetUnMount' : 'Imposible montar', // from v2.1 added 30.04.2012 'errConvUTF8' : 'No es convertible a UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Prueba con un navegador moderno, si quieres subir la carpeta completa.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Se agotĂł el tiempo de espera buscando "$1". Los resultados de bĂșsqueda son parciales.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Se requiere autorizar de nuevo.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'NĂșmero mĂĄximo de elementos seleccionables es $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'No se puede restaurar desde la papelera. No se puede identificar el destino de restauraciĂłn.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor no encontrado para este tipo de archivo.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Error ocurrido en el lado del servidor.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'No es posible vaciar la carpeta "$1".', // from v2.1.25 added 22.6.2017 /******************************* commands names ********************************/ 'cmdarchive' : 'Crear archivo', 'cmdback' : 'AtrĂĄs', 'cmdcopy' : 'Copiar', 'cmdcut' : 'Cortar', 'cmddownload' : 'Descargar', 'cmdduplicate' : 'Duplicar', 'cmdedit' : 'Editar archivo', 'cmdextract' : 'Extraer elementos del archivo', 'cmdforward' : 'Adelante', 'cmdgetfile' : 'Seleccionar archivos', 'cmdhelp' : 'Acerca de este software', 'cmdhome' : 'Inicio', 'cmdinfo' : 'Obtener informaciĂłn', 'cmdmkdir' : 'Nueva carpeta', 'cmdmkdirin' : 'En una nueva carpeta', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nueva archivo', 'cmdopen' : 'Abrir', 'cmdpaste' : 'Pegar', 'cmdquicklook' : 'Previsualizar', 'cmdreload' : 'Recargar', 'cmdrename' : 'Cambiar nombre', 'cmdrm' : 'Eliminar', 'cmdtrash' : 'Enviar a la papelera', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Restaurar', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Buscar archivos', 'cmdup' : 'Ir a la carpeta raĂ­z', 'cmdupload' : 'Subir archivos', 'cmdview' : 'Ver', 'cmdresize' : 'Redimensionar y rotar', 'cmdsort' : 'Ordenar', 'cmdnetmount' : 'Montar volumen en red', // added 18.04.2012 'cmdnetunmount': 'Desmontar', // from v2.1 added 30.04.2012 'cmdplaces' : 'A Lugares', // added 28.12.2014 'cmdchmod' : 'Cambiar modo', // from v2.1 added 20.6.2015 'cmdopendir' : 'Abrir una carpeta', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Restablecer ancho de columna', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Pantalla completa', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Mover', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Vaciar la carpeta', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Deshacer', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Rehacer', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferencias', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Seleccionar todo', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Seleccionar ninguno', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Invertir selecciĂłn', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Abrir en nueva ventana', // from v2.1.38 added 3.4.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Cerrar', 'btnSave' : 'Guardar', 'btnRm' : 'Eliminar', 'btnApply' : 'Aplicar', 'btnCancel' : 'Cancelar', 'btnNo' : 'No', 'btnYes' : 'SĂ­', 'btnMount' : 'Montar', // added 18.04.2012 'btnApprove': 'Ir a $1 y aprobar', // from v2.1 added 26.04.2012 'btnUnmount': 'Desmontar', // from v2.1 added 30.04.2012 'btnConv' : 'Convertir', // from v2.1 added 08.04.2014 'btnCwd' : 'AquĂ­', // from v2.1 added 22.5.2015 'btnVolume' : 'Volumen', // from v2.1 added 22.5.2015 'btnAll' : 'Todos', // from v2.1 added 22.5.2015 'btnMime' : 'Tipo MIME', // from v2.1 added 22.5.2015 'btnFileName':'Nombre de archivo', // from v2.1 added 22.5.2015 'btnSaveClose': 'Guardar y cerrar', // from v2.1 added 12.6.2015 'btnBackup' : 'Copia de seguridad', // fromv2.1 added 28.11.2015 'btnRename' : 'Renombrar', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Renombrar(Todo)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Ant ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Sig ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Guardar como', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Abrir carpeta', 'ntffile' : 'Abrir archivo', 'ntfreload' : 'Actualizar contenido de la carpeta', 'ntfmkdir' : 'Creando directorio', 'ntfmkfile' : 'Creando archivos', 'ntfrm' : 'Eliminando archivos', 'ntfcopy' : 'Copiar archivos', 'ntfmove' : 'Mover archivos', 'ntfprepare' : 'Preparar copia de archivos', 'ntfrename' : 'Renombrar archivos', 'ntfupload' : 'Subiendo archivos', 'ntfdownload' : 'Descargando archivos', 'ntfsave' : 'Guardar archivos', 'ntfarchive' : 'Creando archivo', 'ntfextract' : 'Extrayendo elementos del archivo', 'ntfsearch' : 'Buscando archivos', 'ntfresize' : 'Redimensionando imĂĄgenes', 'ntfsmth' : 'Haciendo algo', 'ntfloadimg' : 'Cargando imagen', 'ntfnetmount' : 'Montando volumen en red', // added 18.04.2012 'ntfnetunmount': 'Desmontando volumen en red', // from v2.1 added 30.04.2012 'ntfdim' : 'Adquiriendo tamaño de imagen', // added 20.05.2013 'ntfreaddir' : 'Leyendo informaciĂłn de la carpeta', // from v2.1 added 01.07.2013 'ntfurl' : 'Obteniendo URL del enlace', // from v2.1 added 11.03.2014 'ntfchmod' : 'Cambiando el modo de archivo', // from v2.1 added 20.6.2015 'ntfpreupload': 'Verificando nombre del archivo subido', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Creando un archivo para descargar', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Obteniendo informaciĂłn de la ruta', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Procesando el archivo cargado', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Enviando a la papelera', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Restaurando desde la papelera', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Comprobando carpeta de destino', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Deshaciendo operaciĂłn previa', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Rehaciendo previo deshacer', // from v2.1.27 added 31.07.2017 /*********************************** volumes *********************************/ 'volume_Trash' : 'Papelera', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'desconocida', 'Today' : 'Hoy', 'Yesterday' : 'Ayer', 'msJan' : 'Ene', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Abr', 'msMay' : 'May', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Ago', 'msSep' : 'Sep', 'msOct' : 'Oct', 'msNov' : 'Nov', 'msDec' : 'Dic', 'January' : 'Enero', 'February' : 'Febrero', 'March' : 'Marzo', 'April' : 'Abril', 'May' : 'Mayo', 'June' : 'Junio', 'July' : 'Julio', 'August' : 'Agosto', 'September' : 'Septiembre', 'October' : 'Octubre', 'November' : 'Noviembre', 'December' : 'Diciembre', 'Sunday' : 'Domingo', 'Monday' : 'Lunes', 'Tuesday' : 'Martes', 'Wednesday' : 'MiĂ©rcoles', 'Thursday' : 'Jueves', 'Friday' : 'Viernes', 'Saturday' : 'SĂĄbado', 'Sun' : 'Dom', 'Mon' : 'Lun', 'Tue' : 'Mar', 'Wed' : 'Mie', 'Thu' : 'Jue', 'Fri' : 'Vie', 'Sat' : 'Sab', /******************************** sort variants ********************************/ 'sortname' : 'por nombre', 'sortkind' : 'por tipo', 'sortsize' : 'por tamaño', 'sortdate' : 'por fecha', 'sortFoldersFirst' : 'Las carpetas primero', 'sortperm' : 'por permiso', // from v2.1.13 added 13.06.2016 'sortmode' : 'por modo', // from v2.1.13 added 13.06.2016 'sortowner' : 'por propietario', // from v2.1.13 added 13.06.2016 'sortgroup' : 'por grupo', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'TambiĂ©n ĂĄrbol de directorios', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NuevoArchivo.txt', // added 10.11.2015 'untitled folder' : 'NuevaCarpeta', // added 10.11.2015 'Archive' : 'NuevoArchivo', // from v2.1 added 10.11.2015 /********************************** messages **********************************/ 'confirmReq' : 'Se necesita confirmaciĂłn', 'confirmRm' : 'ÂżEstĂĄ seguro de querer eliminar archivos?
      ÂĄEsto no se puede deshacer!', 'confirmRepl' : 'ÂżReemplazar el antiguo archivo con el nuevo?', 'confirmRest' : 'ÂżReemplazar elemento existente con el elemento en la papelera?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'No estĂĄ en UTF-8
      Convertir a UTF-8?
      Los contenidos se guardarĂĄn en UTF-8 tras la conversiĂłn.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'CodificaciĂłn de caracteres de este archivo no pudo ser detectada. Es necesario convertir temporalmente a UTF-8 para editarlo.
      Por favor, seleccione la codificaciĂłn de caracteres de este archivo.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Ha sido modificado.
      PerderĂĄs los cambios si no los guardas.', // from v2.1 added 15.7.2015 'confirmTrash' : 'ÂżEstĂĄs seguro que quieres mover los elementos a la papelera?', //from v2.1.24 added 29.4.2017 'apllyAll' : 'Aplicar a todo', 'name' : 'Nombre', 'size' : 'Tamaño', 'perms' : 'Permisos', 'modify' : 'Modificado', 'kind' : 'Tipo', 'read' : 'lectura', 'write' : 'escritura', 'noaccess' : 'sin acceso', 'and' : 'y', 'unknown' : 'desconocido', 'selectall' : 'Seleccionar todos los archivos', 'selectfiles' : 'Seleccionar archivo(s)', 'selectffile' : 'Seleccionar primer archivo', 'selectlfile' : 'Seleccionar Ășltimo archivo', 'viewlist' : 'ver como lista', 'viewicons' : 'Ver como iconos', 'places' : 'Lugares', 'calc' : 'Calcular', 'path' : 'Ruta', 'aliasfor' : 'Alias para', 'locked' : 'Bloqueado', 'dim' : 'Dimensiones', 'files' : 'Archivos', 'folders' : 'Carpetas', 'items' : 'Elementos', 'yes' : 'sĂ­', 'no' : 'no', 'link' : 'Enlace', 'searcresult' : 'Resultados de la bĂșsqueda', 'selected' : 'elementos seleccionados', 'about' : 'Acerca', 'shortcuts' : 'Accesos directos', 'help' : 'Ayuda', 'webfm' : 'Administrador de archivos web', 'ver' : 'VersiĂłn', 'protocolver' : 'versiĂłn del protocolo', 'homepage' : 'Inicio', 'docs' : 'DocumentaciĂłn', 'github' : 'BifĂșrcanos en Github', 'twitter' : 'SĂ­guenos en Twitter', 'facebook' : 'Únete a nosotros en Facebook', 'team' : 'Equipo', 'chiefdev' : 'desarrollador jefe', 'developer' : 'desarrollador', 'contributor' : 'contribuyente', 'maintainer' : 'mantenedor', 'translator' : 'traductor', 'icons' : 'Iconos', 'dontforget' : 'y no olvide traer su toalla', 'shortcutsof' : 'Accesos directos desactivados', 'dropFiles' : 'Arrastre archivos aquĂ­', 'or' : 'o', 'selectForUpload' : 'Seleccione archivos para subir', 'moveFiles' : 'Mover archivos', 'copyFiles' : 'Copiar archivos', 'restoreFiles' : 'Restaurar elementos', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Eliminar en sus ubicaciones', 'aspectRatio' : 'RelaciĂłn de aspecto', 'scale' : 'Escala', 'width' : 'Ancho', 'height' : 'Alto', 'resize' : 'Redimensionar', 'crop' : 'Recortar', 'rotate' : 'Rotar', 'rotate-cw' : 'Rotar 90 grados en sentido horario', 'rotate-ccw' : 'Rotar 90 grados en sentido anti-horario', 'degree' : '°', 'netMountDialogTitle' : 'Montar volumen en red', // added 18.04.2012 'protocol' : 'Protocolo', // added 18.04.2012 'host' : 'Dominio', // added 18.04.2012 'port' : 'Puerto', // added 18.04.2012 'user' : 'Usuario', // added 18.04.2012 'pass' : 'Contraseña', // added 18.04.2012 'confirmUnmount' : 'ÂżDesmontar $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Arrastra o pega archivos del navegador', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Arrastra o pega enlaces URL aquĂ­', // from v2.1 added 07.04.2014 'encoding' : 'Codificando', // from v2.1 added 19.12.2014 'locale' : 'Local', // from v2.1 added 19.12.2014 'searchTarget' : 'Destino: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Buscar entrada por tipo MIME', // from v2.1 added 22.5.2015 'owner' : 'Propietario', // from v2.1 added 20.6.2015 'group' : 'Grupo', // from v2.1 added 20.6.2015 'other' : 'Otro', // from v2.1 added 20.6.2015 'execute' : 'Ejecutar', // from v2.1 added 20.6.2015 'perm' : 'Permiso', // from v2.1 added 20.6.2015 'mode' : 'Modo', // from v2.1 added 20.6.2015 'emptyFolder' : 'La carpeta estĂĄ vacĂ­a', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'La carpeta estĂĄ vacĂ­a\\A Arrastrar para añadir elementos', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'La carpeta estĂĄ vacĂ­a\\A Presiona durante un rato para añadir elementos', // from v2.1.6 added 30.12.2015 'quality' : 'Calidad', // from v2.1.6 added 5.1.2016 'autoSync' : 'SincronizaciĂłn automĂĄtica', // from v2.1.6 added 10.1.2016 'moveUp' : 'Mover arriba', // from v2.1.6 added 18.1.2016 'getLink' : 'Obtener enlace', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Elementos seleccionados ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID carpeta', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Permitir acceso sin conexiĂłn', // from v2.1.10 added 3.25.2016 'reAuth' : 'Para volver a autenticarse', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Cargando ahora...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Abrir mĂșltiples archivos', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'EstĂĄs tratando de abrir los $1 archivos. ÂżEstĂĄs seguro que quieres abrir en el navegador?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'No se encontraron resultados en el objetivo de bĂșsqueda.', // from v2.1.12 added 5.16.2016 'editingFile' : 'EstĂĄ editando un archivo.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Has seleccionado $1 elementos.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Posees $1 elementos en el portapapeles.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'La bĂșsqueda incremental solo se realiza desde la vista actual.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Reinstanciar', // from v2.1.15 added 3.8.2016 'complete' : '$1 completo', // from v2.1.15 added 21.8.2016 'contextmenu' : 'MenĂș contextual', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Cambio de pĂĄgina', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'RaĂ­ces del volumen', // from v2.1.16 added 16.9.2016 'reset' : 'Reiniciar', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Color de fondo', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Selector de color', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Cuadricula', // from v2.1.16 added 4.10.2016 'enabled' : 'Habilitado', // from v2.1.16 added 4.10.2016 'disabled' : 'Deshabilitado', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Los resultados de la bĂșsqueda estĂĄn vacĂ­os en la vista actual. \\ APulse [Intro] para expandir el objetivo de bĂșsqueda.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'La primera letra de los resultados de bĂșsqueda estĂĄ vacĂ­a en la vista actual.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Etiqueta de texto', // from v2.1.17 added 13.10.2016 'minsLeft' : 'Falta $1 minuto(s)', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Abrir nuevamente con la codificaciĂłn seleccionada', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Guardar con la codificaciĂłn seleccionada', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Seleccionar carpeta', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Primera letra de bĂșsqueda', // from v2.1.23 added 24.3.2017 'presets' : 'Preestablecidos', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Son demasiados elementos, por lo que no puede enviarse a la papelera.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Área de texto', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Vaciar la carpeta "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'No hay elementos en la carpeta "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preferencia', // from v2.1.26 added 28.6.2017 'language' : 'Lenguaje', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Inicializa la configuraciĂłn guardada en este navegador', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'ConfiguraciĂłn de la barra de herramientas', // from v2.1.27 added 2.8.2017 'charsLeft' : '...falta $1 caracteres.', // from v2.1.29 added 30.8.2017 'sum' : 'Suma', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Tamaño de archivo aproximado', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Centrado en el elemento de diĂĄlogo con \'mouseover\'', // from v2.1.30 added 2.11.2017 'select' : 'Seleccionar', // from v2.1.30 added 23.11.2017 'selectAction' : 'AcciĂłn cuando selecciona un archivo', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Abrir con el editor utilizado la Ășltima vez', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Invertir selecciĂłn', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'ÂżEstĂĄs seguro que quieres renombrar $1 elementos seleccionados como $2?
      ÂĄEsto no puede ser deshecho!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Cambiar el nombre del lote', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ NĂșmero', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Añadir prefijo', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Añadir sufijo', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Cambiar extensiĂłn', // from v2.1.31 added 8.12.2017 'columnPref' : 'ConfiguraciĂłn de columnas (Vista de lista)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Todos los cambios se reflejarĂĄn inmediatamente en el archivo.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Cualquier cambio no se reflejarĂĄ hasta que no se desmonte este volumen.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Los siguientes volĂșmenes montados en este volumen tambiĂ©n se desmontaron. ÂżEstĂĄs seguro de desmontarlo?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'InformaciĂłn de la selecciĂłn', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algoritmos para mostrar el hash de archivos', // from v2.1.33 added 10.3.2018 'infoItems' : 'Elementos de informaciĂłn (Panel de informaciĂłn de selecciĂłn)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Presiona de nuevo para salir.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Barra de herramienta', // from v2.1.38 added 4.4.2018 'workspace' : 'Espacio de trabajo', // from v2.1.38 added 4.4.2018 'dialog' : 'DiĂĄlogo', // from v2.1.38 added 4.4.2018 'all' : 'Todo', // from v2.1.38 added 4.4.2018 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Desconocido', 'kindRoot' : 'RaĂ­ces del volumen', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Carpeta', 'kindSelects' : 'Selecciones', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Alias roto', // applications 'kindApp' : 'AplicaciĂłn', 'kindPostscript' : 'Documento Postscript', 'kindMsOffice' : 'Documento Microsoft Office', 'kindMsWord' : 'Documento Microsoft Word', 'kindMsExcel' : 'Documento Microsoft Excel', 'kindMsPP' : 'PresentaciĂłn Microsoft Powerpoint', 'kindOO' : 'Documento Open Office', 'kindAppFlash' : 'AplicaciĂłn Flash', 'kindPDF' : 'Documento PDF', 'kindTorrent' : 'Archivo Bittorrent', 'kind7z' : 'Archivo 7z', 'kindTAR' : 'Archivo TAR', 'kindGZIP' : 'Archivo GZIP', 'kindBZIP' : 'Archivo BZIP', 'kindXZ' : 'Archivo XZ', 'kindZIP' : 'Archivo ZIP', 'kindRAR' : 'Archivo RAR', 'kindJAR' : 'Archivo Java JAR', 'kindTTF' : 'Fuente True Type', 'kindOTF' : 'Fuente Open Type', 'kindRPM' : 'Paquete RPM', // texts 'kindText' : 'Documento de texto', 'kindTextPlain' : 'Texto plano', 'kindPHP' : 'CĂłdigo PHP', 'kindCSS' : 'Hoja de estilos CSS', 'kindHTML' : 'Documento HTML', 'kindJS' : 'CĂłdigo Javascript', 'kindRTF' : 'Documento RTF', 'kindC' : 'CĂłdigo C', 'kindCHeader' : 'CĂłdigo C cabeceras', 'kindCPP' : 'CĂłdigo C++', 'kindCPPHeader' : 'CĂłdigo C++ cabeceras', 'kindShell' : 'Script de terminal de Unix', 'kindPython' : 'CĂłdigo Python', 'kindJava' : 'CĂłdigo Java', 'kindRuby' : 'CĂłdigo Ruby', 'kindPerl' : 'CĂłdigo Perl', 'kindSQL' : 'CĂłdigo QL', 'kindXML' : 'Documento XML', 'kindAWK' : 'CĂłdigo AWK', 'kindCSV' : 'Documento CSV (valores separados por comas)', 'kindDOCBOOK' : 'Documento Docbook XML', 'kindMarkdown' : 'Texto Markdown', // added 20.7.2015 // images 'kindImage' : 'Imagen', 'kindBMP' : 'Imagen BMP', 'kindJPEG' : 'Imagen JPEG', 'kindGIF' : 'Imagen GIF', 'kindPNG' : 'Imagen PNG', 'kindTIFF' : 'Imagen TIFF', 'kindTGA' : 'Imagen TGA', 'kindPSD' : 'Imagen Adobe Photoshop', 'kindXBITMAP' : 'Imagen X bitmap', 'kindPXM' : 'Imagen Pixelmator', // media 'kindAudio' : 'Archivo de audio', 'kindAudioMPEG' : 'Audio MPEG', 'kindAudioMPEG4' : 'Audio MPEG-4', 'kindAudioMIDI' : 'Audio MIDI', 'kindAudioOGG' : 'Audio Ogg Vorbis', 'kindAudioWAV' : 'Audio WAV', 'AudioPlaylist' : 'Lista de reproducciĂłn MP3', 'kindVideo' : 'Archivo de vĂ­deo', 'kindVideoDV' : 'PelĂ­cula DV', 'kindVideoMPEG' : 'PelĂ­cula MPEG', 'kindVideoMPEG4' : 'PelĂ­cula MPEG-4', 'kindVideoAVI' : 'PelĂ­cula AVI', 'kindVideoMOV' : 'PelĂ­cula Quick Time', 'kindVideoWM' : 'PelĂ­cula Windows Media', 'kindVideoFlash' : 'PelĂ­cula Flash', 'kindVideoMKV' : 'PelĂ­cula Matroska MKV', 'kindVideoOGG' : 'PelĂ­cula Ogg' } }; })); application/library/js/i18n/elfinder.bg.js000064400000117206147577724760014464 0ustar00/** * Bulgarian translation * @author Stamo Petkov * @author Nikolay Petkov * @version 2018-07-28 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.bg = { translator : 'Stamo Petkov <stamo.petkov@gmail.com>, Nikolay Petkov <office@cmstory.com>', language : 'Bulgarian', direction : 'ltr', dateFormat : 'd.m.Y H:i', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM nonameDateFormat : 'Ymd-His', // to apply if upload file is noname: 120513172700 messages : { /********************************** errors **********************************/ 'error' : 'Đ“Ń€Đ”ŃˆĐșĐ°', 'errUnknown' : 'ĐĐ”ĐżĐŸĐ·ĐœĐ°Ń‚Đ° ĐłŃ€Đ”ŃˆĐșĐ°.', 'errUnknownCmd' : 'ĐĐ”ĐżĐŸĐ·ĐœĐ°Ń‚Đ° ĐșĐŸĐŒĐ°ĐœĐŽĐ°.', 'errJqui' : 'Đ“Ń€Đ”ŃˆĐœĐ° ĐșĐŸĐœŃ„ĐžĐłŃƒŃ€Đ°Ń†ĐžŃ ĐœĐ° jQuery UI. ĐšĐŸĐŒĐżĐŸĐœĐ”ĐœŃ‚ĐžŃ‚Đ” selectable, draggable Đž droppable Ń‚Ń€ŃĐ±ĐČĐ° ĐŽĐ° са ĐČĐșĐ»ŃŽŃ‡Đ”ĐœĐž.', 'errNode' : 'elFinder ОзОсĐșĐČĐ° ĐŽĐ° бъЎД ŃŃŠĐ·ĐŽĐ°ĐŽĐ”Đœ DOM Đ”Đ»Đ”ĐŒĐ”ĐœŃ‚.', 'errURL' : 'Đ“Ń€Đ”ŃˆĐșĐ° ĐČ ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșОтД ĐœĐ° elFinder! ĐœĐ” Đ” Đ·Đ°ĐŽĐ°ĐŽĐ”ĐœĐ° ŃŃ‚ĐŸĐčĐœĐŸŃŃ‚ ĐœĐ° URL.', 'errAccess' : 'Đ”ĐŸŃŃ‚ŃŠĐż ĐŸŃ‚ĐșĐ°Đ·Đ°Đœ.', 'errConnect' : 'ĐŃĐŒĐ° ĐČръзĐșĐ° със сърĐČъра.', 'errAbort' : 'ВръзĐșата Đ” прДĐșŃŠŃĐœĐ°Ń‚Đ°.', 'errTimeout' : 'ĐŸŃ€ĐŸŃŃ€ĐŸŃ‡Đ”ĐœĐ° ĐČръзĐșĐ°.', 'errNotFound' : 'СърĐČърът ĐœĐ” Đ” ĐœĐ°ĐŒĐ”Ń€Đ”Đœ.', 'errResponse' : 'Đ“Ń€Đ”ŃˆĐ”Đœ ĐŸŃ‚ĐłĐŸĐČĐŸŃ€ ĐŸŃ‚ сърĐČъра.', 'errConf' : 'Đ“Ń€Đ”ŃˆĐœĐž ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐœĐ° сърĐČъра.', 'errJSON' : 'ĐĐ” Đ” ĐžĐœŃŃ‚Đ°Đ»ĐžŃ€Đ°Đœ ĐŒĐŸĐŽŃƒĐ» ĐœĐ° PHP Đ·Đ° JSON.', 'errNoVolumes' : 'ĐŃĐŒĐ° ĐŽŃĐ»ĐŸĐČĐ” ĐŽĐŸŃŃ‚ŃŠĐżĐœĐž Đ·Đ° Ń‡Đ”Ń‚Đ”ĐœĐ”.', 'errCmdParams' : 'Đ“Ń€Đ”ŃˆĐœĐž ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Đž ĐœĐ° ĐșĐŸĐŒĐ°ĐœĐŽĐ°Ń‚Đ° "$1".', 'errDataNotJSON' : 'Đ”Đ°ĐœĐœĐžŃ‚Đ” ĐœĐ” са JSON.', 'errDataEmpty' : 'ЛопсĐČат ĐŽĐ°ĐœĐœĐž.', 'errCmdReq' : 'ЗапотĐČĐ°ĐœĐ”Ń‚ĐŸ ĐŸŃ‚ сърĐČъра ОзОсĐșĐČĐ° ĐžĐŒĐ” ĐœĐ° ĐșĐŸĐŒĐ°ĐœĐŽĐ°.', 'errOpen' : 'ĐĐ”ŃƒŃĐżĐ”ŃˆĐœĐŸ ĐŸŃ‚ĐČĐ°Ń€ŃĐœĐ” ĐœĐ° "$1".', 'errNotFolder' : 'ОбДĐșтът ĐœĐ” Đ” папĐșĐ°.', 'errNotFile' : 'ОбДĐșтът ĐœĐ” Đ” фаĐčĐ».', 'errRead' : 'ĐĐ”ŃƒŃĐżĐ”ŃˆĐœĐŸ ĐżŃ€ĐŸŃ‡ĐžŃ‚Đ°ĐœĐ” ĐœĐ° "$1".', 'errWrite' : 'ĐĐ”ŃƒŃĐżĐ”ŃˆĐ”Đœ запОс ĐČ "$1".', 'errPerm' : 'Đ Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžĐ” ĐŸŃ‚ĐșĐ°Đ·Đ°ĐœĐŸ.', 'errLocked' : '"$1" Đ” Đ·Đ°ĐșĐ»ŃŽŃ‡Đ”Đœ Đž ĐœĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° бъЎД ĐżŃ€Đ”ĐžĐŒĐ”ĐœŃƒĐČĐ°Đœ, ĐŒĐ”ŃŃ‚Đ”Đœ ОлО ĐżŃ€Đ”ĐŒĐ°Ń…ĐČĐ°Đœ.', 'errExists' : 'ВДчД същДстĐČуĐČĐ° фаĐčĐ» с ĐžĐŒĐ” "$1"', 'errInvName' : 'Đ“Ń€Đ”ŃˆĐœĐŸ ĐžĐŒĐ” ĐœĐ° фаĐčĐ».', 'errInvDirname' : 'ĐĐ”ĐČĐ°Đ»ĐžĐŽĐœĐŸ ĐžĐŒĐ” ĐœĐ° папĐșĐ°.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'ПапĐșата ĐœĐ” Đ” ĐŸŃ‚Đșрота.', 'errFileNotFound' : 'ЀаĐčлът ĐœĐ” Đ” ĐŸŃ‚Đșрот.', 'errTrgFolderNotFound' : 'ЊДлДĐČата папĐșĐ° "$1" ĐœĐ” Đ” ĐœĐ°ĐŒĐ”Ń€Đ”ĐœĐ°.', 'errPopup' : 'Đ‘Ń€Đ°ŃƒĐ·ŃŠŃ€Đ° Đ±Đ»ĐŸĐșора ĐŸŃ‚ĐČĐ°Ń€ŃĐœĐ”Ń‚ĐŸ ĐœĐ° ĐżŃ€ĐŸĐ·ĐŸŃ€Đ”Ń†. За ĐŽĐ° ĐŸŃ‚ĐČĐŸŃ€ĐžŃ‚Đ” фаĐčла, Ń€Đ°Đ·Ń€Đ”ŃˆĐ”Ń‚Đ” ĐŸŃ‚ĐČĐ°Ń€ŃĐœĐ”Ń‚ĐŸ ĐČ ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșОтД ĐœĐ° Đ±Ń€Đ°ŃƒĐ·ŃŠŃ€Đ°.', 'errMkdir' : 'ĐĐ”ŃƒŃĐżĐ”ŃˆĐœĐŸ съзЎаĐČĐ°ĐœĐ” ĐœĐ° папĐșĐ° "$1".', 'errMkfile' : 'ĐĐ”ŃƒŃĐżĐ”ŃˆĐœĐŸ съзЎаĐČĐ°ĐœĐ” ĐœĐ° фаĐčĐ» "$1".', 'errRename' : 'ĐĐ”ŃƒŃĐżĐ”ŃˆĐœĐŸ ĐżŃ€Đ”ĐžĐŒĐ”ĐœŃƒĐČĐ°ĐœĐ” ĐœĐ° "$1".', 'errCopyFrom' : 'ĐšĐŸĐżĐžŃ€Đ°ĐœĐ”Ń‚ĐŸ ĐœĐ° фаĐčĐ»ĐŸĐČĐ” ĐŸŃ‚ Ń‚ĐŸĐŒ "$1" ĐœĐ” Đ” Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐŸ.', 'errCopyTo' : 'ĐšĐŸĐżĐžŃ€Đ°ĐœĐ”Ń‚ĐŸ ĐœĐ° фаĐčĐ»ĐŸĐČĐ” ĐČ Ń‚ĐŸĐŒ "$1" ĐœĐ” Đ” Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐŸ.', 'errMkOutLink' : 'ĐĐ”ŃƒŃĐżĐ”Ń… про съзЎаĐČĐ°ĐœĐ” ĐœĐ° ĐČръзĐșĐ° ОзĐČŃŠĐœ ĐœĐ°Ń‡Đ°Đ»ĐŸŃ‚ĐŸ ĐœĐ° Ń€Đ”ŃŃƒŃ€ŃĐ°.', // from v2.1 added 03.10.2015 'errUpload' : 'Đ“Ń€Đ”ŃˆĐșĐ° про ĐșачĐČĐ°ĐœĐ”.', // old name - errUploadCommon 'errUploadFile' : 'ĐĐ”ŃƒŃĐżĐ”ŃˆĐœĐŸ ĐșачĐČĐ°ĐœĐ” ĐœĐ° "$1".', // old name - errUpload 'errUploadNoFiles' : 'ĐĐ” са ĐœĐ°ĐŒĐ”Ń€Đ”ĐœĐž фаĐčĐ»ĐŸĐČĐ” Đ·Đ° ĐșачĐČĐ°ĐœĐ”.', 'errUploadTotalSize' : 'Đ”Đ°ĐœĐœĐžŃ‚Đ” прДĐČОшаĐČат ĐŒĐ°ĐșŃĐžĐŒĐ°Đ»ĐœĐŸ ĐŽĐŸĐżĐŸŃŃ‚ŃƒĐŒĐžŃ Ń€Đ°Đ·ĐŒĐ”Ń€.', // old name - errMaxSize 'errUploadFileSize' : 'ЀаĐčлът прДĐČОшаĐČĐ° ĐŒĐ°ĐșŃĐžĐŒĐ°Đ»ĐœĐŸ ĐŽĐŸĐżŃƒŃŃ‚ĐžĐŒĐžŃ Ń€Đ°Đ·ĐŒĐ”Ń€.', // old name - errFileMaxSize 'errUploadMime' : 'ĐĐ”ĐżĐŸĐ·ĐČĐŸĐ»Đ”Đœ топ ĐœĐ° фаĐčла.', 'errUploadTransfer' : '"$1" ĐłŃ€Đ”ŃˆĐșĐ° про прДЎаĐČĐ°ĐœĐ”.', 'errUploadTemp' : 'ĐĐ”ŃƒŃĐżĐ”ŃˆĐœĐŸ съзЎаĐČĐ°ĐœĐ” ĐœĐ° ĐČŃ€Đ”ĐŒĐ”ĐœĐ”Đœ фаĐčĐ» Đ·Đ° ĐșачĐČĐ°ĐœĐ”.', // from v2.1 added 26.09.2015 'errNotReplace' : 'ОбДĐșт "$1" ĐČДчД същДстĐČуĐČĐ° ĐœĐ° Ń‚ĐŸĐČĐ° ĐŒŃŃŃ‚ĐŸ Đž ĐœĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° бъЎД Đ·Đ°ĐŒĐ”ĐœĐ”Đœ ĐŸŃ‚ ĐŸĐ±Đ”Đșт ĐŸŃ‚ Юруг топ.', // new 'errReplace' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД Đ·Đ°ĐŒĐ”ĐœĐž "$1".', 'errSave' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД запОшД "$1".', 'errCopy' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД ĐșĐŸĐżĐžŃ€Đ° "$1".', 'errMove' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД ĐżŃ€Đ”ĐŒĐ”ŃŃ‚Đž "$1".', 'errCopyInItself' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД ĐșĐŸĐżĐžŃ€Đ° "$1" ĐČърху ŃĐ°ĐŒĐžŃ ĐœĐ”ĐłĐŸ.', 'errRm' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД ĐżŃ€Đ”ĐŒĐ°Ń…ĐœĐ” "$1".', 'errTrash' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД ĐżŃ€Đ”ĐŒĐ”ŃŃ‚Đž ĐČ ĐșĐŸŃˆŃ‡Đ”Ń‚ĐŸ', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД ĐżŃ€Đ”ĐŒĐ°Ń…ĐœĐ” ĐžĐ·Ń…ĐŸĐŽĐœĐžŃ фаĐčĐ»(ĐŸĐČĐ”).', 'errExtract' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД ОзĐČлДĐșат фаĐčĐ»ĐŸĐČДтД ĐŸŃ‚ "$1".', 'errArchive' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД съзЎаЎД архоĐČ.', 'errArcType' : 'ĐĐ”ĐżĐŸĐŽĐŽŃŠŃ€Đ¶Đ°Đœ топ ĐœĐ° архоĐČĐ°.', 'errNoArchive' : 'ЀаĐčлът ĐœĐ” Đ” архоĐČ ĐžĐ»Đž Đ” ĐŸŃ‚ ĐœĐ”ĐżĐŸĐŽĐŽŃŠŃ€Đ¶Đ°Đœ топ.', 'errCmdNoSupport' : 'СърĐČъра ĐœĐ” ĐżĐŸĐŽĐŽŃŠŃ€Đ¶Đ° Ń‚Đ°Đ·Đž ĐșĐŸĐŒĐ°ĐœĐŽĐ°.', 'errReplByChild' : 'ПапĐșата “$1” ĐœĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° бъЎД Đ·Đ°ĐŒĐ”ĐœĐ”ĐœĐ° ĐŸŃ‚ съЎържащ сД ĐČ ĐœĐ”Ń Đ”Đ»Đ”ĐŒĐ”ĐœŃ‚.', 'errArcSymlinks' : 'От ŃŃŠĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ Đ·Đ° ŃĐžĐłŃƒŃ€ĐœĐŸŃŃ‚ ĐœŃĐŒĐ° ĐŽĐ° бъЎат Ń€Đ°Đ·ĐŸĐżĐ°ĐșĐŸĐČĐ°ĐœĐž архоĐČĐž съЎържащО symlinks.', // edited 24.06.2012 'errArcMaxSize' : 'АрхоĐČĐœĐžŃ‚Đ” фаĐčĐ»ĐŸĐČĐ” прДĐČОшаĐČат ĐŒĐ°ĐșŃĐžĐŒĐ°Đ»ĐœĐŸ ĐŽĐŸĐżŃƒŃŃ‚ĐžĐŒĐžŃ Ń€Đ°Đ·ĐŒĐ”Ń€.', 'errResize' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД ĐżŃ€Đ”ĐŸŃ€Đ°Đ·ĐŒĐ”Ń€Đž "$1".', 'errResizeDegree' : 'ĐĐ”ĐČĐ°Đ»ĐžĐŽĐ”Đœ граЮус Đ·Đ° Ń€ĐŸŃ‚Đ°Ń†ĐžŃ.', // added 7.3.2013 'errResizeRotate' : 'Đ˜Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”Ń‚ĐŸ ĐœĐ” Đ” Ń€ĐŸŃ‚ĐžŃ€Đ°ĐœĐŸ.', // added 7.3.2013 'errResizeSize' : 'ĐĐ”ĐČĐ°Đ»ĐžĐŽĐ”Đœ Ń€Đ°Đ·ĐŒĐ”Ń€ ĐœĐ° ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”.', // added 7.3.2013 'errResizeNoChange' : 'Đ Đ°Đ·ĐŒĐ”Ń€ŃŠŃ‚ ĐœĐ° ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”Ń‚ĐŸ ĐœĐ” Đ” ĐżŃ€ĐŸĐŒĐ”ĐœĐ”Đœ.', // added 7.3.2013 'errUsupportType' : 'ĐĐ”ĐżĐŸĐŽĐŽŃŠŃ€Đ¶Đ°Đœ топ ĐœĐ° фаĐčĐ».', 'errNotUTF8Content' : 'ЀаĐčĐ» "$1" ĐœĐ” Đ” ĐČ UTF-8 Ń„ĐŸŃ€ĐŒĐ°Ń‚ Đž ĐœĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° бъЎД рДЎаĐșŃ‚ĐžŃ€Đ°Đœ.', // added 9.11.2011 'errNetMount' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД ĐŒĐŸĐœŃ‚ĐžŃ€Đ° "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'ĐĐ”ĐżĐŸĐŽĐŽŃŠŃ€Đ¶Đ°Đœ ĐżŃ€ĐŸŃ‚ĐŸĐșĐŸĐ».', // added 17.04.2012 'errNetMountFailed' : 'ĐœĐŸĐœŃ‚ĐžŃ€Đ°ĐœĐ”Ń‚ĐŸ ĐœĐ” Đ” ŃƒŃĐżĐ”ŃˆĐœĐŸ.', // added 17.04.2012 'errNetMountHostReq' : 'Đ„ĐŸŃŃ‚ сД ОзОсĐșĐČĐ°.', // added 18.04.2012 'errSessionExpires' : 'ĐĄĐ”ŃĐžŃŃ‚Đ° ĐČĐž ОзтДчД ĐżĐŸŃ€Đ°ĐŽĐž лОпса ĐœĐ° Đ°ĐșтоĐČĐœĐŸŃŃ‚.', 'errCreatingTempDir' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД съзЎаЎД ĐČŃ€Đ”ĐŒĐ”ĐœĐœĐ° ЎОрДĐșŃ‚ĐŸŃ€ĐžŃ: "$1"', 'errFtpDownloadFile' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД ОзтДглО фаĐčĐ» ĐŸŃ‚ FTP: "$1"', 'errFtpUploadFile' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД Đșачо фаĐčĐ» ĐœĐ° FTP: "$1"', 'errFtpMkdir' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД съзЎаЎД ЎОрДĐșŃ‚ĐŸŃ€ĐžŃ ĐœĐ° FTP: "$1"', 'errArchiveExec' : 'Đ“Ń€Đ”ŃˆĐșĐ° про архоĐČĐžŃ€Đ°ĐœĐ” ĐœĐ° фаĐčĐ»ĐŸĐČĐ”: "$1"', 'errExtractExec' : 'Đ“Ń€Đ”ŃˆĐșĐ° про разархОĐČĐžŃ€Đ°ĐœĐ” ĐœĐ° фаĐčĐ»ĐŸĐČĐ”: "$1"', 'errNetUnMount' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД Ń€Đ°Đ·ĐŒĐŸĐœŃ‚ĐžŃ€Đ°', // from v2.1 added 30.04.2012 'errConvUTF8' : 'ĐĐ” Đ” ĐșĐŸĐœĐČĐ”Ń€Ń‚ĐžŃ€ŃƒĐ”ĐŒ ĐŽĐŸ UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'ОпотаĐčŃ‚Đ” Google Chrome, Đ°ĐșĐŸ ОсĐșĐ°Ń‚Đ” ĐŽĐ° ĐșачОтД папĐșĐ°.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Đ’Ń€Đ”ĐŒĐ”Ń‚ĐŸ ОзтДчД про Ń‚ŃŠŃ€ŃĐ”ĐœĐ”Ń‚ĐŸ ĐœĐ° "$1". Đ Đ”Đ·ŃƒĐ»Ń‚Đ°Ń‚ŃŠŃ‚ ĐŸŃ‚ Ń‚ŃŠŃ€ŃĐ”ĐœĐ”Ń‚ĐŸ Đ” Ń‡Đ°ŃŃ‚ĐžŃ‡Đ”Đœ.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'ĐĐ”ĐŸĐ±Ń…ĐŸĐŽĐžĐŒĐŸ Đ” ĐżĐŸĐČŃ‚ĐŸŃ€ĐœĐŸ ĐŸŃ‚ĐŸŃ€ĐžĐ·ĐžŃ€Đ°ĐœĐ”.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'МаĐșŃĐžĐŒĐ°Đ»ĐœĐžŃŃ‚ Đ±Ń€ĐŸĐč ĐžĐ·Đ±Ń€Đ°ĐœĐž фаĐčĐ»ĐŸĐČĐ” Đ” $ 1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД ĐČŃŠĐ·ŃŃ‚Đ°ĐœĐŸĐČĐž ĐŸŃ‚ ĐșĐŸŃˆŃ‡Đ”Ń‚ĐŸ. ĐĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД ĐŸĐżŃ€Đ”ĐŽĐ”Đ»Đž ĐŒĐ”ŃŃ‚ĐŸĐżĐŸĐ»ĐŸĐ¶Đ”ĐœĐžĐ”Ń‚ĐŸ Đ·Đ° ĐČŃŠĐ·ŃŃ‚Đ°ĐœĐŸĐČяĐČĐ°ĐœĐ”.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'ĐĐ” Đ” ĐœĐ°ĐŒĐ”Ń€Đ”Đœ рДЎаĐșŃ‚ĐŸŃ€ Đ·Đ° Ń‚ĐŸĐ·Đž топ фаĐčĐ».', // from v2.1.25 added 23.5.2017 'errServerError' : 'Đ’ŃŠĐ·ĐœĐžĐșĐœĐ° ĐłŃ€Đ”ŃˆĐșĐ° ĐœĐ° сърĐČъра.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'ПапĐșата "$1" ĐœĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° сД ĐžĐ·ĐżŃ€Đ°Đ·ĐœĐž.', // from v2.1.25 added 22.6.2017 /******************************* commands names ********************************/ 'cmdarchive' : 'ĐĄŃŠĐ·ĐŽĐ°Đč архоĐČ', 'cmdback' : 'ĐĐ°Đ·Đ°ĐŽ', 'cmdcopy' : 'ĐšĐŸĐżĐžŃ€Đ°Đč', 'cmdcut' : 'Đ˜Đ·Ń€Đ”Đ¶Đž', 'cmddownload' : 'ĐĄĐČалО', 'cmdduplicate' : 'Đ”ŃƒĐ±Đ»ĐžŃ€Đ°Đč', 'cmdedit' : 'РДЎаĐșтораĐč фаĐčĐ»', 'cmdextract' : 'ИзĐČлДчО фаĐčĐ»ĐŸĐČДтД ĐŸŃ‚ архоĐČĐ°', 'cmdforward' : 'ĐĐ°ĐżŃ€Đ”ĐŽ', 'cmdgetfile' : 'Đ˜Đ·Đ±Đ”Ń€Đž фаĐčĐ»ĐŸĐČĐ”', 'cmdhelp' : 'За Ń‚Đ°Đ·Đž ĐżŃ€ĐŸĐłŃ€Đ°ĐŒĐ°', 'cmdhome' : 'ĐĐ°Ń‡Đ°Đ»ĐŸ', 'cmdinfo' : 'Đ˜ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ', 'cmdmkdir' : 'ĐĐŸĐČĐ° папĐșĐ°', 'cmdmkdirin' : 'В ĐœĐŸĐČĐ° папĐșĐ°', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'ĐĐŸĐČ Ń„Đ°ĐčĐ»', 'cmdopen' : 'ОтĐČĐŸŃ€Đž', 'cmdpaste' : 'Đ’ĐŒŃŠĐșĐœĐž', 'cmdquicklook' : 'ĐŸŃ€Đ”ĐłĐ»Đ”ĐŽ', 'cmdreload' : 'ĐŸŃ€Đ”Đ·Đ°Ń€Đ”ĐŽĐž', 'cmdrename' : 'ĐŸŃ€Đ”ĐžĐŒĐ”ĐœŃƒĐČĐ°Đč', 'cmdrm' : 'Đ˜Đ·Ń‚Ń€ĐžĐč', 'cmdtrash' : 'В ĐșĐŸŃˆŃ‡Đ”Ń‚ĐŸ', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Đ’ŃŠĐ·ŃŃ‚Đ°ĐœĐŸĐČĐž', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'ĐĐ°ĐŒĐ”Ń€Đž фаĐčĐ»ĐŸĐČĐ”', 'cmdup' : 'Đ•ĐŽĐœĐ° ЎОрДĐșŃ‚ĐŸŃ€ĐžŃ ĐœĐ°ĐłĐŸŃ€Đ”', 'cmdupload' : 'Качо фаĐčĐ»ĐŸĐČĐ”', 'cmdview' : 'ВОж', 'cmdresize' : 'ĐŸŃ€ĐŸĐŒĐ”ĐœĐž ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”', 'cmdsort' : 'ĐŸĐŸĐŽŃ€Đ”ĐŽĐž', 'cmdnetmount' : 'ĐœĐŸĐœŃ‚ĐžŃ€Đ°Đč ĐŒŃ€Đ”Đ¶ĐŸĐČ Ń€Đ”ŃŃƒŃ€Ń', // added 18.04.2012 'cmdnetunmount': 'Đ Đ°Đ·ĐŒĐŸĐœŃ‚ĐžŃ€Đ°Đč', // from v2.1 added 30.04.2012 'cmdplaces' : 'ĐšŃŠĐŒ ĐžĐ·Đ±Ń€Đ°ĐœĐž', // added 28.12.2014 'cmdchmod' : 'ĐŸŃ€ĐŸĐŒŃĐœĐ° ĐœĐ° ĐČОЎ', // from v2.1 added 20.6.2015 'cmdopendir' : 'ОтĐČĐŸŃ€Đž папĐșĐ°', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'ĐŃƒĐ»ĐžŃ€Đ°Đč ŃˆĐžŃ€ĐžĐœĐ°Ń‚Đ° ĐœĐ° ĐșĐŸĐ»ĐŸĐœĐ°Ń‚Đ°', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'ĐŠŃĐ» Đ”ĐșŃ€Đ°Đœ', // from v2.1.15 added 03.08.2016 'cmdmove' : 'ĐŸŃ€Đ”ĐŒĐ”ŃŃ‚Đž', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Đ˜Đ·ĐżŃ€Đ°Đ·ĐœĐž папĐșата', // from v2.1.25 added 22.06.2017 'cmdundo' : 'ĐžŃ‚ĐŒĐ”ĐœĐž', // from v2.1.27 added 31.07.2017 'cmdredo' : 'ĐŸŃ€Đ”ĐżŃ€Đ°ĐČĐž', // from v2.1.27 added 31.07.2017 'cmdpreference': 'ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Đ˜Đ·Đ±Đ”Ń€Đž ĐČсочĐșĐŸ', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Đ˜Đ·Đ±Đ”Ń€Đž ĐœĐžŃ‰ĐŸ', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'ĐžĐ±ŃŠŃ€ĐœĐž сДлДĐșцоята', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'ОтĐČĐŸŃ€Đž ĐČ ĐœĐŸĐČ ĐżŃ€ĐŸĐ·ĐŸŃ€Đ”Ń†', // from v2.1.38 added 3.4.2018 'cmdhide' : 'ĐĄĐșроĐč (Đ»ĐžŃ‡ĐœĐŸ)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'ЗатĐČĐŸŃ€Đž', 'btnSave' : 'Запошо', 'btnRm' : 'ĐŸŃ€Đ”ĐŒĐ°Ń…ĐœĐž', 'btnApply' : 'ĐŸŃ€ĐžĐ»ĐŸĐ¶Đž', 'btnCancel' : 'ОтĐșĐ°Đ·', 'btnNo' : 'ĐĐ”', 'btnYes' : 'Да', 'btnMount' : 'ĐœĐŸĐœŃ‚ĐžŃ€Đ°Đč', // added 18.04.2012 'btnApprove': 'ОтоЮо ĐœĐ° $1 Đž ĐŸĐŽĐŸĐ±Ń€Đž', // from v2.1 added 26.04.2012 'btnUnmount': 'Đ Đ°Đ·ĐŒĐŸĐœŃ‚ĐžŃ€Đ°Đč', // from v2.1 added 30.04.2012 'btnConv' : 'ĐšĐŸĐœĐČДртОраĐč', // from v2.1 added 08.04.2014 'btnCwd' : 'йуĐș', // from v2.1 added 22.5.2015 'btnVolume' : 'Đ Đ”ŃŃƒŃ€Ń', // from v2.1 added 22.5.2015 'btnAll' : 'ВсочĐșĐž', // from v2.1 added 22.5.2015 'btnMime' : 'MIME топ', // from v2.1 added 22.5.2015 'btnFileName':'Đ˜ĐŒĐ”', // from v2.1 added 22.5.2015 'btnSaveClose': 'ЗапазО Đž Đ·Đ°Ń‚ĐČĐŸŃ€Đž', // from v2.1 added 12.6.2015 'btnBackup' : 'АрхоĐČораĐč', // fromv2.1 added 28.11.2015 'btnRename' : 'ĐŸŃ€Đ”ĐžĐŒĐ”ĐœŃƒĐČĐ°Đč', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'ĐŸŃ€Đ”ĐžĐŒĐ”ĐœŃƒĐČĐ°Đč(ВсочĐșĐž)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'ĐŸŃ€Đ”ĐŽ ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'ХлДЎ ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'ЗапазО ĐșĐ°Ń‚ĐŸ', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'ОтĐČĐ°Ń€ŃĐœĐ” ĐœĐ° папĐșĐ°', 'ntffile' : 'ОтĐČĐ°Ń€ŃĐœĐ” ĐœĐ° фаĐčĐ»', 'ntfreload' : 'ĐŸŃ€Đ”Đ·Đ°Ń€Đ”Đ¶ĐŽĐ°ĐœĐ” ŃŃŠĐŽŃŠŃ€Đ¶Đ°ĐœĐžĐ”Ń‚ĐŸ ĐœĐ° папĐșĐ°', 'ntfmkdir' : 'ĐĄŃŠĐ·ĐŽĐ°ĐČĐ° сД ЎОрДĐșŃ‚ĐŸŃ€ĐžŃ', 'ntfmkfile' : 'ĐĄŃŠĐ·ĐŽĐ°ĐČĐ° сД фаĐčĐ»', 'ntfrm' : 'Đ˜Đ·Ń‚Ń€ĐžĐČĐ°ĐœĐ” ĐœĐ° фаĐčĐ»ĐŸĐČĐ”', 'ntfcopy' : 'ĐšĐŸĐżĐžŃ€Đ°ĐœĐ” ĐœĐ° фаĐčĐ»ĐŸĐČĐ”', 'ntfmove' : 'ĐŸŃ€Đ”ĐŒĐ”ŃŃ‚ĐČĐ°ĐœĐ” ĐœĐ° фаĐčĐ»ĐŸĐČĐ”', 'ntfprepare' : 'ĐŸĐŸĐŽĐłĐŸŃ‚ĐŸĐČĐșĐ° Đ·Đ° ĐșĐŸĐżĐžŃ€Đ°ĐœĐ” ĐœĐ° фаĐčĐ»ĐŸĐČĐ”', 'ntfrename' : 'ĐŸŃ€Đ”ĐžĐŒĐ”ĐœŃƒĐČĐ°ĐœĐ” ĐœĐ° фаĐčĐ»ĐŸĐČĐ”', 'ntfupload' : 'КачĐČат сД фаĐčĐ»ĐŸĐČĐ”', 'ntfdownload' : 'ĐĄĐČĐ°Đ»ŃŃ‚ сД фаĐčĐ»ĐŸĐČĐ”', 'ntfsave' : 'Запос ĐœĐ° фаĐčĐ»ĐŸĐČĐ”', 'ntfarchive' : 'ĐĄŃŠĐ·ĐŽĐ°ĐČĐ° сД архоĐČ', 'ntfextract' : 'ИзĐČлОчат сД фаĐčĐ»ĐŸĐČДтД ĐŸŃ‚ архоĐČ', 'ntfsearch' : 'бърсят сД фаĐčĐ»ĐŸĐČĐ”', 'ntfresize' : 'ĐŸŃ€Đ”ĐŸŃ€Đ°Đ·ĐŒĐ”Ń€ŃĐČат сД ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ', 'ntfsmth' : 'ЗаДт ŃŃŠĐŒ >_<', 'ntfloadimg' : 'ЗарДжЎат сД ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ', 'ntfnetmount' : 'ĐœĐŸĐœŃ‚ĐžŃ€Đ° сД ĐŒŃ€Đ”Đ¶ĐŸĐČ Ń€Đ”ŃŃƒŃ€Ń', // added 18.04.2012 'ntfnetunmount': 'Đ Đ°Đ·ĐŒĐŸĐœŃ‚ĐžŃ€Đ° сД ĐŒŃ€Đ”Đ¶ĐŸĐČ Ń€Đ”ŃŃƒŃ€Ń', // from v2.1 added 30.04.2012 'ntfdim' : 'ИзĐČлОчат сД Ń€Đ°Đ·ĐŒĐ”Ń€ĐžŃ‚Đ” ĐœĐ° ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”', // added 20.05.2013 'ntfreaddir' : 'ИзĐČлОча сД ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ Đ·Đ° папĐșĐ°', // from v2.1 added 01.07.2013 'ntfurl' : 'Đ’Đ·ĐžĐŒĐ° сД URL ĐŸŃ‚ ĐČръзĐșĐ°', // from v2.1 added 11.03.2014 'ntfchmod' : 'ĐŸŃ€ĐŸĐŒĐ”ĐœŃ сД ĐČОЎа ĐœĐ° фаĐčĐ»', // from v2.1 added 20.6.2015 'ntfpreupload': 'ĐŸŃ€ĐŸĐČДрĐșĐ° ĐœĐ° ĐžĐŒĐ”Ń‚ĐŸ ĐœĐ° фаĐčла Đ·Đ° ĐșачĐČĐ°ĐœĐ”', // from v2.1 added 31.11.2015 'ntfzipdl' : 'ĐĄŃŠĐ·ĐŽĐ°ĐČĐ°ĐœĐ” ĐœĐ° фаĐčĐ» Đ·Đ° ĐžĐ·Ń‚Đ”ĐłĐ»ŃĐœĐ”', // from v2.1.7 added 23.1.2016 'ntfparents' : 'ĐŸĐŸĐ»ŃƒŃ‡Đ°ĐČĐ° сД ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ Đ·Đ° пътя', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'ĐžĐ±Ń€Đ°Đ±ĐŸŃ‚ĐșĐ° ĐœĐ° ĐșĐ°Ń‡Đ”ĐœĐžŃ фаĐčĐ»', // from v2.1.17 added 2.11.2016 'ntftrash' : 'ĐŸŃ€Đ”Ń…ĐČŃŠŃ€Đ»ŃŃ‚ сД ĐżĐŸĐ·ĐžŃ†ĐžĐž ĐČ ĐșĐŸŃˆŃ‡Đ”Ń‚ĐŸ', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'ИзĐČършĐČĐ° сД ĐČŃŠĐ·ŃŃ‚Đ°ĐœĐŸĐČяĐČĐ°ĐœĐ” ĐŸŃ‚ ĐșĐŸŃˆŃ‡Đ”Ń‚ĐŸ', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'ĐŸŃ€ĐŸĐČДрĐșĐ° ĐœĐ° цДлДĐČата папĐșĐ°', // from v2.1.24 added 3.5.2017 'ntfundo' : 'ĐžŃ‚ĐŒŃĐœĐ° ĐœĐ° ĐżŃ€Đ”ĐŽĐžŃˆĐœĐ°Ń‚Đ° ĐŸĐżĐ”Ń€Đ°Ń†ĐžŃ', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Đ’ŃŠĐ·ŃŃ‚Đ°ĐœĐŸĐČяĐČĐ°ĐœĐ” ĐœĐ° ĐżŃ€Đ”ĐŽŃ…ĐŸĐŽĐœĐžŃ‚Đ” ĐŸŃ‚ĐŒĐ”ĐœĐ”ĐœĐž', // from v2.1.27 added 31.07.2017 /*********************************** volumes *********************************/ 'volume_Trash' : 'ĐšĐŸŃˆŃ‡Đ”', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'ĐœĐ”ĐžĐ·ĐČĐ”ŃŃ‚ĐœĐ°', 'Today' : 'ĐŽĐœĐ”Ń', 'Yesterday' : 'ĐČчДра', 'msJan' : 'ŃĐœŃƒ', 'msFeb' : 'Ń„Đ”ĐČ', 'msMar' : 'ĐŒĐ°Ń€', 'msApr' : 'апр', 'msMay' : 'ĐŒĐ°Đč', 'msJun' : 'ŃŽĐœĐž', 'msJul' : 'юлО', 'msAug' : 'Đ°ĐČĐł', 'msSep' : 'сДп', 'msOct' : 'ĐŸĐșт', 'msNov' : 'ĐœĐŸĐ”', 'msDec' : 'ĐŽĐ”Đș', 'January' : 'ŃĐœŃƒĐ°Ń€Đž', 'February' : 'Ń„Đ”ĐČруаро', 'March' : 'ĐŒĐ°Ń€Ń‚', 'April' : 'апрОл', 'May' : 'ĐŒĐ°Đč', 'June' : 'ŃŽĐœĐž', 'July' : 'юлО', 'August' : 'Đ°ĐČгуст', 'September' : 'ŃĐ”ĐżŃ‚Đ”ĐŒĐČро', 'October' : 'ĐŸĐșŃ‚ĐŸĐŒĐČро', 'November' : 'ĐœĐŸĐ”ĐŒĐČро', 'December' : 'ĐŽĐ”ĐșĐ”ĐŒĐČро', 'Sunday' : 'ĐœĐ”ĐŽĐ”Đ»Ń', 'Monday' : 'ĐżĐŸĐœĐ”ĐŽĐ”Đ»ĐœĐžĐș', 'Tuesday' : 'ĐČŃ‚ĐŸŃ€ĐœĐžĐș', 'Wednesday' : 'сряЮа', 'Thursday' : 'чДтĐČъртъĐș', 'Friday' : 'пДтъĐș', 'Saturday' : 'ŃŃŠĐ±ĐŸŃ‚Đ°', 'Sun' : 'ĐœĐ”ĐŽ', 'Mon' : 'ĐżĐŸĐœ', 'Tue' : 'ĐČŃ‚ĐŸ', 'Wed' : 'сря', 'Thu' : 'чДт', 'Fri' : 'пДт', 'Sat' : 'съб', /******************************** sort variants ********************************/ 'sortname' : 'ĐżĐŸ ĐžĐŒĐ”', 'sortkind' : 'ĐżĐŸ ĐČОЎ', 'sortsize' : 'ĐżĐŸ Ń€Đ°Đ·ĐŒĐ”Ń€', 'sortdate' : 'ĐżĐŸ Юата', 'sortFoldersFirst' : 'ПапĐșОтД пърĐČĐž', 'sortperm' : 'ĐżĐŸ праĐČĐ°', // from v2.1.13 added 13.06.2016 'sortmode' : 'ĐżĐŸ ĐČОЎ', // from v2.1.13 added 13.06.2016 'sortowner' : 'ĐżĐŸ ŃĐŸĐ±ŃŃ‚ĐČĐ”ĐœĐžĐș', // from v2.1.13 added 13.06.2016 'sortgroup' : 'ĐżĐŸ група', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'ĐĄŃŠŃ‰ĐŸ ЮърĐČĐŸĐČĐžĐŽĐ”Đœ ОзглДЎ', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NewFile.txt', // added 10.11.2015 'untitled folder' : 'NewFolder', // added 10.11.2015 'Archive' : 'NewArchive', // from v2.1 added 10.11.2015 /********************************** messages **********************************/ 'confirmReq' : 'ИзОсĐșĐČĐ° сД ĐżĐŸĐŽŃ‚ĐČŃŠŃ€Đ¶ĐŽĐ”ĐœĐžĐ”', 'confirmRm' : 'ĐĄĐžĐłŃƒŃ€ĐœĐž лО стД, чД жДлаДтД ĐŽĐ° ĐżŃ€Đ”ĐŒĐ°Ń…ĐœĐ”Ń‚Đ” фаĐčĐ»ĐŸĐČДтД?
      ĐąĐŸĐČĐ° ĐŽĐ”ĐčстĐČОД Đ” ĐœĐ”ĐŸĐ±Ń€Đ°Ń‚ĐžĐŒĐŸ!', 'confirmRepl' : 'Да Đ·Đ°ĐŒĐ”ĐœŃ лО староя фаĐčĐ» с ĐœĐŸĐČоя?', 'confirmRest' : 'Да сД Đ·Đ°ĐŒĐ”ĐœĐž лО същДстĐČуĐČащата ĐżĐŸĐ·ĐžŃ†ĐžŃ с Ń‚Đ°Đ·Đž ĐČ ĐșĐŸŃˆŃ‡Đ”Ń‚ĐŸ?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'ĐĐ” Đ” ĐČ UTF-8 Ń„ĐŸŃ€ĐŒĐ°Ń‚
      ĐšĐŸĐœĐČĐ”Ń€Ń‚ĐžŃ€Đ°ĐœĐ” ĐŽĐŸ UTF-8?
      ĐĄŃŠĐŽŃŠŃ€Đ¶Đ°ĐœĐžĐ”Ń‚ĐŸ стаĐČĐ° ĐČ UTF-8 Ń„ĐŸŃ€ĐŒĐ°Ń‚ про запазĐČĐ°ĐœĐ” слДЎ ĐșĐŸĐœĐČĐ”Ń€ŃĐžŃŃ‚Đ°.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'ĐšĐŸĐŽĐžŃ€Đ°ĐœĐ”Ń‚ĐŸ ĐœĐ° Ń‚ĐŸĐ·Đž фаĐčĐ» ĐœĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° бъЎД ĐŸŃ‚ĐșŃ€ĐžŃ‚ĐŸ. ĐĐ”ĐŸĐ±Ń…ĐŸĐŽĐžĐŒĐŸ Đ” ĐČŃ€Đ”ĐŒĐ”ĐœĐœĐŸ ĐŽĐ° сД ĐżŃ€Đ”ĐŸĐ±Ń€Đ°Đ·ŃƒĐČĐ° ĐČ UTF-8 Đ·Đ° рДЎаĐșŃ‚ĐžŃ€Đ°ĐœĐ”.
      ĐœĐŸĐ»Ń, ОзбДрДтД ĐșĐŸĐŽĐžŃ€Đ°ĐœĐ” ĐœĐ° Ń‚ĐŸĐ·Đž фаĐčĐ».', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Đ˜ĐŒĐ° ĐœĐ°ĐżŃ€Đ°ĐČĐ”ĐœĐž ĐżŃ€ĐŸĐŒĐ”ĐœĐž.
      йД щД бъЎат Đ·Đ°ĐłŃƒĐ±Đ”ĐœĐž, Đ°ĐșĐŸ ĐœĐ” Đ·Đ°ĐżĐžŃˆĐ”Ń‚Đ” ĐżŃ€ĐŸĐŒĐ”ĐœĐžŃ‚Đ”.', // from v2.1 added 15.7.2015 'confirmTrash' : 'ĐĐ°ĐžŃŃ‚ĐžĐœĐ° лО ОсĐșĐ°Ń‚Đ” ĐŽĐ° ĐżŃ€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚Đ” ĐżĐŸĐ·ĐžŃ†ĐžĐž ĐČ ĐșĐŸŃˆŃ‡Đ”Ń‚ĐŸ Đ·Đ° Đ±ĐŸĐșлуĐș?', //from v2.1.24 added 29.4.2017 'apllyAll' : 'ĐŸŃ€ĐžĐ»ĐŸĐ¶Đž Đ·Đ° ĐČсочĐșĐž', 'name' : 'Đ˜ĐŒĐ”', 'size' : 'Đ Đ°Đ·ĐŒĐ”Ń€', 'perms' : 'ПраĐČĐ°', 'modify' : 'ĐŸŃ€ĐŸĐŒĐ”ĐœĐ”ĐœĐŸ', 'kind' : 'ВоЮ', 'read' : 'Ń‡Đ”Ń‚Đ”ĐœĐ”', 'write' : 'запОс', 'noaccess' : 'бДз ĐŽĐŸŃŃ‚ŃŠĐż', 'and' : 'Đž', 'unknown' : 'ĐœĐ”ĐżĐŸĐ·ĐœĐ°Ń‚', 'selectall' : 'Đ˜Đ·Đ±Đ”Ń€Đž ĐČсочĐșĐž фаĐčĐ»ĐŸĐČĐ”', 'selectfiles' : 'Đ˜Đ·Đ±Đ”Ń€Đž фаĐčĐ»(ĐŸĐČĐ”)', 'selectffile' : 'Đ˜Đ·Đ±Đ”Ń€Đž пърĐČоят фаĐčĐ»', 'selectlfile' : 'Đ˜Đ·Đ±Đ”Ń€Đž ĐżĐŸŃĐ»Đ”ĐŽĐœĐžŃŃ‚ фаĐčĐ»', 'viewlist' : 'ИзглДЎ спосъĐș', 'viewicons' : 'ИзглДЎ ĐžĐșĐŸĐœĐž', 'viewSmall' : 'ĐœĐ°Đ»ĐșĐž ĐžĐșĐŸĐœĐž', // from v2.1.39 added 22.5.2018 'viewMedium' : 'ĐĄŃ€Đ”ĐŽĐœĐž ĐžĐșĐŸĐœĐž', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Đ“ĐŸĐ»Đ”ĐŒĐž ĐžĐșĐŸĐœĐž', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'ĐœĐœĐŸĐłĐŸ ĐłĐŸĐ»Đ”ĐŒĐž ĐžĐșĐŸĐœĐž', // from v2.1.39 added 22.5.2018 'places' : 'Đ˜Đ·Đ±Ń€Đ°ĐœĐž', 'calc' : 'Đ˜Đ·Ń‡ĐžŃĐ»Đž', 'path' : 'Път', 'aliasfor' : 'ВръзĐșĐ° ĐșŃŠĐŒ', 'locked' : 'ЗаĐșĐ»ŃŽŃ‡Đ”Đœ', 'dim' : 'Đ Đ°Đ·ĐŒĐ”Ń€Đž', 'files' : 'ЀаĐčĐ»ĐŸĐČĐ”', 'folders' : 'ПапĐșĐž', 'items' : 'ĐŸĐŸĐ·ĐžŃ†ĐžĐž', 'yes' : 'ĐŽĐ°', 'no' : 'ĐœĐ”', 'link' : 'ВръзĐșĐ°', 'searcresult' : 'Đ Đ”Đ·ŃƒĐ»Ń‚Đ°Ń‚Đž ĐŸŃ‚ Ń‚ŃŠŃ€ŃĐ”ĐœĐ”Ń‚ĐŸ', 'selected' : 'Đ˜Đ·Đ±Ń€Đ°ĐœĐž ĐżĐŸĐ·ĐžŃ†ĐžĐž', 'about' : 'За', 'shortcuts' : 'БързО ĐșлаĐČОшО', 'help' : 'ĐŸĐŸĐŒĐŸŃ‰', 'webfm' : 'ЀаĐčĐ»ĐŸĐČ ĐŒĐ”ĐœĐ°Đ¶Đ”Ń€ Đ·Đ° Đ˜ĐœŃ‚Đ”Ń€ĐœĐ”Ń‚', 'ver' : 'Đ’Đ”Ń€ŃĐžŃ', 'protocolver' : 'ĐČĐ”Ń€ŃĐžŃ ĐœĐ° ĐżŃ€ĐŸŃ‚ĐŸĐșĐŸĐ»Đ°', 'homepage' : 'ĐĐ°Ń‡Đ°Đ»ĐŸ', 'docs' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚Đ°Ń†ĐžŃ', 'github' : 'Đ Đ°Đ·ĐșĐ»ĐŸĐœĐ”ĐœĐžĐ” ĐČ Github', 'twitter' : 'ĐŸĐŸŃĐ»Đ”ĐŽĐČĐ°ĐčŃ‚Đ” ĐœĐž ĐČ Twitter', 'facebook' : 'ĐŸŃ€ĐžŃŃŠĐ”ĐŽĐžĐœĐ”Ń‚Đ” сД ĐșŃŠĐŒ ĐœĐ°Ń ĐČъĐČ Facebook', 'team' : 'ЕĐșОп', 'chiefdev' : 'ГлаĐČĐ”Đœ Ń€Đ°Đ·Ń€Đ°Đ±ĐŸŃ‚Ń‡ĐžĐș', 'developer' : 'Ń€Đ°Đ·Ń€Đ°Đ±ĐŸŃ‚Ń‡ĐžĐș', 'contributor' : 'ŃŃŠŃ‚Ń€ŃƒĐŽĐœĐžĐș', 'maintainer' : 'ĐżĐŸĐŽĐŽŃ€ŃŠĐ¶ĐșĐ°', 'translator' : 'прДĐČĐŸĐŽĐ°Ń‡', 'icons' : 'ИĐșĐŸĐœĐž', 'dontforget' : 'Đž ĐœĐ” забраĐČяĐčŃ‚Đ” ĐŽĐ° сО ĐČĐ·Đ”ĐŒĐ”Ń‚Đ” Đșърпата', 'shortcutsof' : 'ĐŸŃ€Đ”ĐșОтД пътоща са ОзĐșĐ»ŃŽŃ‡Đ”ĐœĐž', 'dropFiles' : 'ĐŸŃƒŃĐœĐ”Ń‚Đ” фаĐčĐ»ĐŸĐČДтД туĐș', 'or' : 'ОлО', 'selectForUpload' : 'Đ˜Đ·Đ±Đ”Ń€Đž фаĐčĐ»ĐŸĐČĐ”', 'moveFiles' : 'ĐŸŃ€Đ”ĐŒĐ”ŃŃ‚Đž фаĐčĐ»ĐŸĐČĐ”', 'copyFiles' : 'ĐšĐŸĐżĐžŃ€Đ°Đč фаĐčĐ»ĐŸĐČĐ”', 'restoreFiles' : 'Đ’ŃŠĐ·ŃŃ‚Đ°ĐœĐŸĐČĐž фаĐčĐ»ĐŸĐČĐ”', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'ĐŸŃ€Đ”ĐŒĐ°Ń…ĐœĐž ĐŸŃ‚ ĐžĐ·Đ±Ń€Đ°ĐœĐž', 'aspectRatio' : 'ĐžŃ‚ĐœĐŸŃˆĐ”ĐœĐžĐ”', 'scale' : 'ĐœĐ°Ń‰Đ°Đ±', 'width' : 'ĐšĐžŃ€ĐžĐœĐ°', 'height' : 'Đ’ĐžŃĐŸŃ‡ĐžĐœĐ°', 'resize' : 'ĐŸŃ€Đ”ĐŸŃ€Đ°Đ·ĐŒĐ”Ń€Đž', 'crop' : 'ОтрДжО', 'rotate' : 'Đ ĐŸŃ‚ĐžŃ€Đ°Đč', 'rotate-cw' : 'Đ ĐŸŃ‚ĐžŃ€Đ°Đč 90 граЮуса CW', 'rotate-ccw' : 'Đ ĐŸŃ‚ĐžŃ€Đ°Đč 90 граЮуса CCW', 'degree' : '°', 'netMountDialogTitle' : 'ĐœĐŸĐœŃ‚ĐžŃ€Đ°ĐœĐ” ĐœĐ° ĐŒŃ€Đ”Đ¶ĐŸĐČ Ń€Đ”ŃŃƒŃ€Ń', // added 18.04.2012 'protocol' : 'ĐŸŃ€ĐŸŃ‚ĐŸĐșĐŸĐ»', // added 18.04.2012 'host' : 'Đ„ĐŸŃŃ‚', // added 18.04.2012 'port' : 'ĐŸĐŸŃ€Ń‚', // added 18.04.2012 'user' : 'ĐŸĐŸŃ‚Ń€Đ”Đ±ĐžŃ‚Đ”Đ»', // added 18.04.2012 'pass' : 'ĐŸĐ°Ń€ĐŸĐ»Đ°', // added 18.04.2012 'confirmUnmount' : 'Đ©Đ” Ń€Đ°Đ·ĐŒĐŸĐœŃ‚ĐžŃ€Đ°Ń‚Đ” $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'ĐŸŃƒŃĐœĐž ОлО ĐČĐŒŃŠĐșĐœĐž фаĐčĐ»ĐŸĐČĐ” ĐŸŃ‚ Đ±Ń€Đ°ŃƒĐ·Đ”Ń€Đ°', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'йуĐș ĐżĐŸŃĐœĐ”Ń‚Đ” фаĐčĐ»ĐŸĐČДтД, URL аЎрДсОтД ОлО ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃŃ‚Đ° ĐŸŃ‚ ĐșĐ»ĐžĐżĐ±ĐŸŃ€ĐŽĐ°', // from v2.1 added 07.04.2014 'encoding' : 'ĐšĐŸĐŽĐžŃ€ĐŸĐČĐșĐ°', // from v2.1 added 19.12.2014 'locale' : 'Đ›ĐŸĐșалО', // from v2.1 added 19.12.2014 'searchTarget' : 'ЊДл: $1', // from v2.1 added 22.5.2015 'searchMime' : 'ĐąŃŠŃ€ŃĐ”ĐœĐ” ĐżĐŸ ĐČъĐČĐ”ĐŽĐ”Đœ MIME топ', // from v2.1 added 22.5.2015 'owner' : 'ĐĄĐŸĐ±ŃŃ‚ĐČĐ”ĐœĐžĐș', // from v2.1 added 20.6.2015 'group' : 'Група', // from v2.1 added 20.6.2015 'other' : 'Друго', // from v2.1 added 20.6.2015 'execute' : 'Đ˜Đ·ĐżŃŠĐ»ĐœŃĐČĐ°', // from v2.1 added 20.6.2015 'perm' : 'Đ Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžĐ”', // from v2.1 added 20.6.2015 'mode' : 'ВоЮ', // from v2.1 added 20.6.2015 'emptyFolder' : 'ПапĐșата Đ” ĐżŃ€Đ°Đ·ĐœĐ°', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'ПапĐșата Đ” ĐżŃ€Đ°Đ·ĐœĐ°\\A ВлачО Đž ĐżŃƒŃĐœĐž Đ·Đ° ĐŽĐ° ĐŽĐŸĐ±Đ°ĐČОтД фаĐčĐ»ĐŸĐČĐ”', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'ПапĐșата Đ” ĐżŃ€Đ°Đ·ĐœĐ°\\A Đ”ĐŸĐșĐŸŃĐœĐ”Ń‚Đ” ĐŽŃŠĐ»ĐłĐŸ Đ·Đ° ĐŽĐ° ĐŽĐŸĐ±Đ°ĐČОтД ĐżĐŸĐ·ĐžŃ†ĐžĐž', // from v2.1.6 added 30.12.2015 'quality' : 'КачДстĐČĐŸ', // from v2.1.6 added 5.1.2016 'autoSync' : 'АĐČŃ‚ĐŸĐŒĐ°Ń‚ĐžŃ‡ĐœĐŸ ŃĐžĐœŃ…Ń€ĐŸĐœĐžĐ·ĐžŃ€Đ°ĐœĐ”', // from v2.1.6 added 10.1.2016 'moveUp' : 'ĐŸŃ€Đ”ĐŒĐ”ŃŃ‚Đž ĐœĐ°ĐłĐŸŃ€Đ”', // from v2.1.6 added 18.1.2016 'getLink' : 'Đ’Đ·Đ”ĐŒĐž URL ĐČръзĐșĐ°', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Đ˜Đ·Đ±Ń€Đ°ĐœĐž ĐżĐŸĐ·ĐžŃ†ĐžĐž ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ПапĐșĐ° ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'ĐŸĐŸĐ·ĐČĐŸĐ»Đž ĐŸŃ„Đ»Đ°ĐčĐœ ĐŽĐŸŃŃ‚ŃŠĐż', // from v2.1.10 added 3.25.2016 'reAuth' : 'За ĐżĐŸĐČŃ‚ĐŸŃ€ĐœĐŸ ŃƒĐŽĐŸŃŃ‚ĐŸĐČĐ”Ń€ŃĐČĐ°ĐœĐ”', // from v2.1.10 added 3.25.2016 'nowLoading' : 'ХДга сД зарДжЎа...', // from v2.1.12 added 4.26.2016 'openMulti' : 'ОтĐČĐ°Ń€ŃĐœĐ” ĐœĐ° ĐœŃĐșĐŸĐ»ĐșĐŸ фаĐčла', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'ОпотĐČĐ°Ń‚Đ” сД ĐŽĐ° ĐŸŃ‚ĐČĐŸŃ€ĐžŃ‚Đ” $1 фаĐčла. ĐĐ°ĐžŃŃ‚ĐžĐœĐ° лО ОсĐșĐ°Ń‚Đ” ĐŽĐ° гО ĐŸŃ‚ĐČĐŸŃ€ĐžŃ‚Đ” ĐČ Đ±Ń€Đ°ŃƒĐ·ŃŠŃ€Đ°?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'ĐŃĐŒĐ° Ń€Đ”Đ·ŃƒĐ»Ń‚Đ°Ń‚ ĐŸŃ‚ Ń‚ŃŠŃ€ŃĐ”ĐœĐ”Ń‚ĐŸ.', // from v2.1.12 added 5.16.2016 'editingFile' : 'РДЎаĐșтора сД фаĐčĐ».', // from v2.1.13 added 6.3.2016 'hasSelected' : 'ВОД стД ОзбралО $1 ĐżĐŸĐ·ĐžŃ†ĐžĐž.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Đ˜ĐŒĐ°Ń‚Đ” $1 ĐżĐŸĐ·ĐžŃ†ĐžĐž ĐČ ĐșĐ»ĐžĐżĐ±ĐŸŃ€ĐŽĐ°.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Đ˜ĐœĐșŃ€Đ”ĐŒĐ”ĐœŃ‚Đ°Đ»ĐœĐŸŃ‚ĐŸ Ń‚ŃŠŃ€ŃĐ”ĐœĐ” Đ” ŃĐ°ĐŒĐŸ ĐŸŃ‚ Ń‚Đ”Đșущоя ОзглДЎ.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Đ’ŃŠĐ·ŃŃ‚Đ°ĐœĐŸĐČяĐČĐ°ĐœĐ”', // from v2.1.15 added 3.8.2016 'complete' : '$1 Đ·Đ°ĐČŃŠŃ€ŃˆĐ”ĐœĐž', // from v2.1.15 added 21.8.2016 'contextmenu' : 'ĐšĐŸĐœŃ‚Đ”ĐșŃŃ‚ĐœĐŸ ĐŒĐ”ĐœŃŽ', // from v2.1.15 added 9.9.2016 'pageTurning' : 'ЗаĐČŃŠŃ€Ń‚Đ°ĐœĐ” ĐœĐ° ŃŃ‚Ń€Đ°ĐœĐžŃ†Đ°Ń‚Đ°', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'ĐĐ°Ń‡Đ°Đ»Đ° ĐœĐ° Ń€Đ”ŃŃƒŃ€ŃĐž', // from v2.1.16 added 16.9.2016 'reset' : 'ĐŃƒĐ»ĐžŃ€Đ°ĐœĐ”', // from v2.1.16 added 1.10.2016 'bgcolor' : 'ĐŠĐČят ĐœĐ° Ń„ĐŸĐœĐ°', // from v2.1.16 added 1.10.2016 'colorPicker' : 'ХрДЎстĐČĐŸ Đ·Đ° ĐžĐ·Đ±ĐžŃ€Đ°ĐœĐ” ĐœĐ° цĐČят', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px ĐŒŃ€Đ”Đ¶Đ°', // from v2.1.16 added 4.10.2016 'enabled' : 'АĐșтоĐČĐœĐŸ', // from v2.1.16 added 4.10.2016 'disabled' : 'ĐĐ”Đ°ĐșтоĐČĐœĐŸ', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'ĐŃĐŒĐ° Ń€Đ”Đ·ŃƒĐ»Ń‚Đ°Ń‚ ĐŸŃ‚ Ń‚ŃŠŃ€ŃĐ”ĐœĐ”Ń‚ĐŸ ĐČ Ń‚Đ”Đșущоя ОзглДЎ.\\AĐĐ°Ń‚ĐžŃĐœĐ”Ń‚Đ” [Enter] Đ·Đ° ĐŽĐ° Ń€Đ°Đ·ŃˆĐžŃ€ĐžŃ‚Đ” цДлта ĐœĐ° Ń‚ŃŠŃ€ŃĐ”ĐœĐ”.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Đ Đ”Đ·ŃƒĐ»Ń‚Đ°Ń‚ĐžŃ‚Đ” ĐŸŃ‚ Ń‚ŃŠŃ€ŃĐ”ĐœĐ”Ń‚ĐŸ ĐœĐ° пърĐČата буĐșĐČĐ° са ĐżŃ€Đ°Đ·ĐœĐž ĐČ Ń‚Đ”Đșущоя ОзглДЎ.', // from v2.1.23 added 24.3.2017 'textLabel' : 'йДĐșŃŃ‚ĐŸĐČ Đ”Ń‚ĐžĐșДт', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 ĐŒĐžĐœ ĐŸŃŃ‚Đ°ĐČат', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'ОтĐČĐ°Ń€ŃĐœĐ” ĐŸŃ‚ĐœĐŸĐČĐŸ с ĐžĐ·Đ±Ń€Đ°ĐœĐŸ ĐșĐŸĐŽĐžŃ€Đ°ĐœĐ”', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'ЗапазДтД с ĐžĐ·Đ±Ń€Đ°ĐœĐŸŃ‚ĐŸ ĐșĐŸĐŽĐžŃ€Đ°ĐœĐ”', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Đ˜Đ·Đ±Đ”Ń€Đž папĐșĐ°', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'ĐąŃŠŃ€ŃĐ”ĐœĐ” ĐżĐŸ пърĐČĐ° буĐșĐČĐ°', // from v2.1.23 added 24.3.2017 'presets' : 'ĐœĐŸŃŃ‚Ń€Đž', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'ĐŸŃ€Đ”ĐșĐ°Đ»Đ”ĐœĐŸ ĐŒĐœĐŸĐłĐŸ ĐżĐŸĐ·ĐžŃ†ĐžĐž, ĐœĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° ĐżŃ€Đ”ĐŒĐ”ŃŃ‚Đž ĐČ ĐșĐŸŃˆŃ‡Đ”Ń‚ĐŸ.', // from v2.1.25 added 9.6.2017 'TextArea' : 'йДĐșŃŃ‚ĐŸĐČĐŸ ĐżĐŸĐ»Đ”', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Đ˜Đ·ĐżŃ€Đ°Đ·ĐœĐ”Ń‚Đ” папĐșĐ° "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'В папĐșĐ° "$1" ĐœŃĐŒĐ° ĐżĐŸĐ·ĐžŃ†ĐžĐž.', // from v2.1.25 added 22.6.2017 'preference' : 'ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž', // from v2.1.26 added 28.6.2017 'language' : 'ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐ° ĐœĐ° ДзОĐșĐ°', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Đ˜ĐœĐžŃ†ĐžĐ°Đ»ĐžĐ·ĐžŃ€Đ°ĐčŃ‚Đ” ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșОтД Đ·Đ°ĐżĐ°ĐŒĐ”Ń‚Đ”ĐœĐž ĐČ Ń‚ĐŸĐ·Đž Đ±Ń€Đ°ŃƒĐ·ŃŠŃ€', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐœĐ° Đ»Đ”ĐœŃ‚Đ°Ń‚Đ° с ĐžĐœŃŃ‚Ń€ŃƒĐŒĐ”ĐœŃ‚Đž', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 ŃĐžĐŒĐČĐŸĐ»Đ° ĐŸŃŃ‚Đ°ĐČат.', // from v2.1.29 added 30.8.2017 'sum' : 'ĐĄŃƒĐŒĐ°Ń€ĐœĐŸ', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Đ“Ń€ŃƒĐ± Ń€Đ°Đ·ĐŒĐ”Ń€ ĐœĐ° фаĐčла', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Đ€ĐŸĐșусораĐčŃ‚Đ” ĐČърху Đ”Đ»Đ”ĐŒĐ”ĐœŃ‚Đ° ĐČ ĐŽĐžĐ°Đ»ĐŸĐłĐŸĐČоя ĐżŃ€ĐŸĐ·ĐŸŃ€Đ”Ń† с ĐŒĐžŃˆĐșата', // from v2.1.30 added 2.11.2017 'select' : 'Đ˜Đ·Đ±Đ”Ń€Đž', // from v2.1.30 added 23.11.2017 'selectAction' : 'ДДĐčстĐČОД про ĐžĐ·Đ±ĐŸŃ€ ĐœĐ° фаĐčĐ»', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'ОтĐČĐŸŃ€Đ”Ń‚Đ” с рДЎаĐșŃ‚ĐŸŃ€Đ°, ĐžĐ·ĐżĐŸĐ»Đ·ĐČĐ°Đœ Đ·Đ° ĐżĐŸŃĐ»Đ”ĐŽĐ”Đœ път', // from v2.1.30 added 23.11.2017 'selectinvert' : 'ĐžĐ±ŃŠŃ€ĐœĐ”Ń‚Đ” сДлДĐșцоята', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'ĐĐ°ĐžŃŃ‚ĐžĐœĐ° лО ОсĐșĐ°Ń‚Đ” ĐŽĐ° ĐżŃ€Đ”ĐžĐŒĐ”ĐœŃƒĐČĐ°Ń‚Đ” $1 ĐžĐ·Đ±Ń€Đ°ĐœĐž ĐżĐŸĐ·ĐžŃ†ĐžĐž ĐșĐ°Ń‚ĐŸ $2?
      ĐąĐŸĐČĐ° ĐœĐ” ĐŒĐŸĐ¶Đ” ĐŽĐ° бъЎД ĐŸŃ‚ĐŒĐ”ĐœĐ”ĐœĐŸ!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Đ“Ń€ŃƒĐżĐŸĐČĐŸ ĐżŃ€Đ”ĐžĐŒĐ”ĐœŃƒĐČĐ°ĐœĐ”', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ ĐĐŸĐŒĐ”Ń€', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Đ”ĐŸĐ±Đ°ĐČĐž прДфОĐșс', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Đ”ĐŸĐ±Đ°ĐČĐž суфоĐșс', // from v2.1.31 added 8.12.2017 'changeExtention' : 'ĐŸŃ€ĐŸĐŒĐ”ĐœĐž Ń€Đ°Đ·ŃˆĐžŃ€Đ”ĐœĐžĐ”', // from v2.1.31 added 8.12.2017 'columnPref' : 'ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž Đ·Đ° ĐșĐŸĐ»ĐŸĐœĐž (ИзглДЎ ĐČ ŃĐżĐžŃŃŠĐș)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'ВсочĐșĐž ĐżŃ€ĐŸĐŒĐ”ĐœĐž щД сД ĐŸŃ‚Ń€Đ°Đ·ŃŃ‚ ĐœĐ”Đ·Đ°Đ±Đ°ĐČĐœĐŸ ĐČ Đ°Ń€Ń…ĐžĐČĐ°.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'ĐŸŃ€ĐŸĐŒĐ”ĐœĐžŃ‚Đ” ĐœŃĐŒĐ° ĐŽĐ° сД ĐŸŃ‚Ń€Đ°Đ·ŃŃ‚, ĐŽĐŸĐșĐ°Ń‚ĐŸ ĐœĐ” Ń€Đ°Đ·ĐŒĐŸĐœŃ‚ĐžŃ€Đ°Ń‚Đ” Ń‚ĐŸĐ·Đž ЎОсĐș.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Đ˜ĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžŃ Đ·Đ° сДлДĐșцоята', // from v2.1.33 added 7.3.2018 'hashChecker' : 'ĐĐ»ĐłĐŸŃ€ĐžŃ‚ĐŒĐž Đ·Đ° ĐżĐŸĐșĐ°Đ·ĐČĐ°ĐœĐ” ĐœĐ° фаĐčĐ»ĐŸĐČоя Ń…Đ”Ńˆ', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'ĐĐ°Ń‚ĐžŃĐœĐ”Ń‚Đ” ĐŸŃ‚ĐœĐŸĐČĐŸ, Đ·Đ° ĐŽĐ° ОзлДзДтД.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Đ›Đ”ĐœŃ‚Đ° с ĐžĐœŃŃ‚Ń€ŃƒĐŒĐ”ĐœŃ‚Đž', // from v2.1.38 added 4.4.2018 'workspace' : 'Đ Đ°Đ±ĐŸŃ‚ĐœĐŸ ĐżŃ€ĐŸŃŃ‚Ń€Đ°ĐœŃŃ‚ĐČĐŸ', // from v2.1.38 added 4.4.2018 'dialog' : 'Đ”ĐžĐ°Đ»ĐŸĐł', // from v2.1.38 added 4.4.2018 'all' : 'ВсочĐșĐž', // from v2.1.38 added 4.4.2018 'iconSize' : 'Đ Đ°Đ·ĐŒĐ”Ń€ ĐœĐ° ĐžĐșĐŸĐœĐžŃ‚Đ” (ОзглДЎ с ĐžĐșĐŸĐœĐž)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'ОтĐČаря ĐŒĐ°ĐșŃĐžĐŒĐžĐ·ĐžŃ€Đ°Đœ ĐżŃ€ĐŸĐ·ĐŸŃ€Đ”Ń† ĐœĐ° рДЎаĐșŃ‚ĐŸŃ€Đ°', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'бъĐč ĐșĐ°Ń‚ĐŸ ĐČ ĐŒĐŸĐŒĐ”ĐœŃ‚Đ° ĐœĐ” Đ” ĐœĐ°Đ»ĐžŃ‡ĐœĐ° API Đ·Đ° ĐșĐŸĐœĐČĐ”Ń€ŃĐžŃŃ‚Đ°, ĐŒĐŸĐ»Ń, ĐșĐŸĐœĐČДртОраĐčŃ‚Đ” ĐČ ŃƒĐ”Đ±ŃĐ°Đčта.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'ХлДЎ ĐșĐŸĐœĐČĐ”Ń€ŃĐžŃŃ‚Đ° Ń‚Ń€ŃĐ±ĐČĐ° ĐŽĐ° ĐłĐŸ ĐșачОтД с URL аЎрДса ОлО ĐžĐ·Ń‚Đ”ĐłĐ»Đ”ĐœĐžŃ фаĐčĐ», Đ·Đ° ĐŽĐ° запазОтД ĐșĐŸĐœĐČĐ”Ń€Ń‚ĐžŃ€Đ°ĐœĐžŃ фаĐčĐ».', //from v2.1.40 added 8.7.2018 'convertOn' : 'ĐšĐŸĐœĐČĐ”Ń€Ń‚ĐžŃ€Đ°ĐœĐ” ĐœĐ° саĐčта ĐŸŃ‚ $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Đ˜ĐœŃ‚Đ”ĐłŃ€Đ°Ń†ĐžĐž', // from v2.1.40 added 11.7.2018 'integrationWith' : 'ĐąĐŸĐ·Đž elFinder ĐžĐŒĐ° ŃĐ»Đ”ĐŽĐœĐžŃ‚Đ” ĐžĐœŃ‚Đ”ĐłŃ€ĐžŃ€Đ°ĐœĐž ĐČŃŠĐœŃˆĐœĐž услугО. ĐœĐŸĐ»Ń, ĐżŃ€ĐŸĐČДрДтД ŃƒŃĐ»ĐŸĐČоята Đ·Đ° ĐżĐŸĐ»Đ·ĐČĐ°ĐœĐ”, ĐŽĐ”ĐșĐ»Đ°Ń€Đ°Ń†ĐžŃŃ‚Đ° Đ·Đ° ĐżĐŸĐČĐ”Ń€ĐžŃ‚Đ”Đ»ĐœĐŸŃŃ‚ Đž т.Đœ., прДЎО ĐŽĐ° гО ĐžĐ·ĐżĐŸĐ»Đ·ĐČĐ°Ń‚Đ”.', // from v2.1.40 added 11.7.2018 'showHidden' : 'ĐŸĐŸĐșажО сĐșрОтОтД Đ”Đ»Đ”ĐŒĐ”ĐœŃ‚Đž', // from v2.1.41 added 24.7.2018 'hideHidden' : 'ĐĄĐșроĐč сĐșрОтОтД Đ”Đ»Đ”ĐŒĐ”ĐœŃ‚Đž', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'ĐŸĐŸĐșажО/сĐșроĐč сĐșрОтОтД Đ”Đ»Đ”ĐŒĐ”ĐœŃ‚Đž', // from v2.1.41 added 24.7.2018 /********************************** mimetypes **********************************/ 'kindUnknown' : 'ĐĐ”ĐżĐŸĐ·ĐœĐ°Ń‚', 'kindRoot' : 'ĐĐ°Ń‡Đ°Đ»ĐŸ ĐœĐ° Ń€Đ”ŃŃƒŃ€Ń', // from v2.1.16 added 16.10.2016 'kindFolder' : 'ПапĐșĐ°', 'kindSelects' : 'ХДлДĐșцоо', // from v2.1.29 added 29.8.2017 'kindAlias' : 'ВръзĐșĐ°', 'kindAliasBroken' : 'ĐĄŃ‡ŃƒĐżĐ”ĐœĐ° ĐČръзĐșĐ°', // applications 'kindApp' : 'ĐŸŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ”', 'kindPostscript' : 'Postscript ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚', 'kindMsOffice' : 'Microsoft Office ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚', 'kindMsWord' : 'Microsoft Word ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚', 'kindMsExcel' : 'Microsoft Excel ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚', 'kindMsPP' : 'Microsoft Powerpoint ĐżŃ€Đ”Đ·Đ”ĐœŃ‚Đ°Ń†ĐžŃ', 'kindOO' : 'Open Office ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚', 'kindAppFlash' : 'Flash ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ”', 'kindPDF' : 'PDF ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚', 'kindTorrent' : 'Bittorrent фаĐčĐ»', 'kind7z' : '7z архоĐČ', 'kindTAR' : 'TAR архоĐČ', 'kindGZIP' : 'GZIP архоĐČ', 'kindBZIP' : 'BZIP архоĐČ', 'kindXZ' : 'XZ архоĐČ', 'kindZIP' : 'ZIP архоĐČ', 'kindRAR' : 'RAR архоĐČ', 'kindJAR' : 'Java JAR фаĐčĐ»', 'kindTTF' : 'True Type шрофт', 'kindOTF' : 'Open Type шрофт', 'kindRPM' : 'RPM паĐșДт', // texts 'kindText' : 'йДĐșŃŃ‚ĐŸĐČ ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚', 'kindTextPlain' : 'Чост Ń‚Đ”Đșст', 'kindPHP' : 'PHP ĐžĐ·Ń…ĐŸĐŽĐ”Đœ ĐșĐŸĐŽ', 'kindCSS' : 'CSS таблОца със ŃŃ‚ĐžĐ»ĐŸĐČĐ”', 'kindHTML' : 'HTML ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚', 'kindJS' : 'Javascript ĐžĐ·Ń…ĐŸĐŽĐ”Đœ ĐșĐŸĐŽ', 'kindRTF' : 'RTF Ń‚Đ”ĐșŃŃ‚ĐŸĐČĐž фаĐčĐ»', 'kindC' : 'C ĐžĐ·Ń…ĐŸĐŽĐ”Đœ ĐșĐŸĐŽ', 'kindCHeader' : 'C header ĐžĐ·Ń…ĐŸĐŽĐ”Đœ ĐșĐŸĐŽ', 'kindCPP' : 'C++ ĐžĐ·Ń…ĐŸĐŽĐ”Đœ ĐșĐŸĐŽ', 'kindCPPHeader' : 'C++ header ĐžĐ·Ń…ĐŸĐŽĐ”Đœ ĐșĐŸĐŽ', 'kindShell' : 'Unix shell ĐžĐ·Ń…ĐŸĐŽĐ”Đœ ĐșĐŸĐŽ', 'kindPython' : 'Python ĐžĐ·Ń…ĐŸĐŽĐ”Đœ ĐșĐŸĐŽ', 'kindJava' : 'Java ĐžĐ·Ń…ĐŸĐŽĐ”Đœ ĐșĐŸĐŽ', 'kindRuby' : 'Ruby ĐžĐ·Ń…ĐŸĐŽĐ”Đœ ĐșĐŸĐŽ', 'kindPerl' : 'Perl ĐžĐ·Ń…ĐŸĐŽĐ”Đœ ĐșĐŸĐŽ', 'kindSQL' : 'SQL ĐžĐ·Ń…ĐŸĐŽĐ”Đœ ĐșĐŸĐŽ', 'kindXML' : 'XML ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚', 'kindAWK' : 'AWK ĐžĐ·Ń…ĐŸĐŽĐ”Đœ ĐșĐŸĐŽ', 'kindCSV' : 'CSV ŃŃ‚ĐŸĐčĐœĐŸŃŃ‚Đž Ń€Đ°Đ·ĐŽĐ”Đ»Đ”ĐœĐž със Đ·Đ°ĐżĐ”Ń‚Đ°Ń', 'kindDOCBOOK' : 'Docbook XML ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚', 'kindMarkdown' : 'Markdown Ń‚Đ”Đșст', // added 20.7.2015 // images 'kindImage' : 'Đ˜Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”', 'kindBMP' : 'BMP ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”', 'kindJPEG' : 'JPEG ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”', 'kindGIF' : 'GIF ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”', 'kindPNG' : 'PNG ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”', 'kindTIFF' : 'TIFF ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”', 'kindTGA' : 'TGA ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”', 'kindPSD' : 'Adobe Photoshop ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”', 'kindXBITMAP' : 'X bitmap ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”', 'kindPXM' : 'Pixelmator ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”', // media 'kindAudio' : 'ĐŃƒĐŽĐžĐŸ ĐŒĐ”ĐŽĐžŃ', 'kindAudioMPEG' : 'MPEG Đ·ĐČуĐș', 'kindAudioMPEG4' : 'MPEG-4 Đ·ĐČуĐș', 'kindAudioMIDI' : 'MIDI Đ·ĐČуĐș', 'kindAudioOGG' : 'Ogg Vorbis Đ·ĐČуĐș', 'kindAudioWAV' : 'WAV Đ·ĐČуĐș', 'AudioPlaylist' : 'MP3 спосъĐș Đ·Đ° ĐžĐ·ĐżŃŠĐ»ĐœĐ”ĐœĐžĐ”', 'kindVideo' : 'Đ’ĐžĐŽĐ”ĐŸ ĐŒĐ”ĐŽĐžŃ', 'kindVideoDV' : 'DV Ń„ĐžĐ»ĐŒ', 'kindVideoMPEG' : 'MPEG Ń„ĐžĐ»ĐŒ', 'kindVideoMPEG4' : 'MPEG-4 Ń„ĐžĐ»ĐŒ', 'kindVideoAVI' : 'AVI Ń„ĐžĐ»ĐŒ', 'kindVideoMOV' : 'Quick Time Ń„ĐžĐ»ĐŒ', 'kindVideoWM' : 'Windows Media Ń„ĐžĐ»ĐŒ', 'kindVideoFlash' : 'Flash Ń„ĐžĐ»ĐŒ', 'kindVideoMKV' : 'Matroska Ń„ĐžĐ»ĐŒ', 'kindVideoOGG' : 'Ogg Ń„ĐžĐ»ĐŒ' } }; })); application/library/js/i18n/elfinder.vi.js000064400000104626147577724760014514 0ustar00/** * NgĂŽn ngữ Việt Nam translation * @author Chung Thủy f * @author Son Nguyen * @author Nguyễn Tráș§n Chung * @version 2019-12-03 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.vi = { translator : 'Chung Thủy f <chungthuyf@gmail.com>, Son Nguyen <son.nguyen@catalyst.net.nz>, Nguyễn Tráș§n Chung <admin@chungnguyen.xyz>', language : 'NgĂŽn ngữ Việt Nam', direction : 'ltr', dateFormat : 'd.m.Y H:i', // will show like: 03.12.2019 17:28 fancyDateFormat : '$1 H:i', // will show like: HĂŽm nay 17:28 nonameDateFormat : 'ymd-His', // noname upload will show like: 191203-172820 messages : { /********************************** errors **********************************/ 'error' : 'Lỗi', 'errUnknown' : 'Lỗi khĂŽng xĂĄc định Ä‘Æ°á»Łc.', 'errUnknownCmd' : 'Lỗi khĂŽng rĂ” lệnh.', 'errJqui' : 'Cáș„u hĂŹnh jQueryUI khĂŽng hợp lệ. CĂĄc thĂ nh pháș§n lá»±a chọn, kĂ©o vĂ  tháșŁ pháșŁi Ä‘Æ°á»Łc bao gồm.', 'errNode' : 'elFinder đĂČi hỏi pháș§n tá»­ DOM pháșŁi Ä‘Æ°á»Łc táșĄo ra.', 'errURL' : 'Cáș„u hĂŹnh elFinder khĂŽng hợp lệ! URL khĂŽng Ä‘Æ°á»Łc thiáșżt láș­p tĂčy chọn.', 'errAccess' : 'Truy cáș­p bị từ chối.', 'errConnect' : 'KhĂŽng thể káșżt nối với backend.', 'errAbort' : 'Káșżt nối bị hủy bỏ.', 'errTimeout' : 'Thời gian chờ káșżt nối đã háșżt.', 'errNotFound' : 'Backend khĂŽng tĂŹm tháș„y.', 'errResponse' : 'PháșŁn hồi backend khĂŽng hợp lệ.', 'errConf' : 'Cáș„u hĂŹnh backend khĂŽng hợp lệ.', 'errJSON' : 'MĂŽ-đun PHP JSON khĂŽng Ä‘Æ°á»Łc cĂ i đáș·t.', 'errNoVolumes' : 'Táș­p cĂł thể đọc khĂŽng cĂł sáș”n.', 'errCmdParams' : 'ThĂŽng số khĂŽng hợp lệ cho lệnh "$1".', 'errDataNotJSON' : 'Dữ liệu khĂŽng pháșŁi lĂ  JSON.', 'errDataEmpty' : 'Dữ liệu trống.', 'errCmdReq' : 'Backend đĂČi hỏi tĂȘn lệnh.', 'errOpen' : 'KhĂŽng thể mở "$1".', 'errNotFolder' : 'Đối tÆ°á»Łng khĂŽng pháșŁi lĂ  một thÆ° mỄc.', 'errNotFile' : 'Đối tÆ°á»Łng khĂŽng pháșŁi lĂ  một táș­p tin.', 'errRead' : 'KhĂŽng thể đọc "$1".', 'errWrite' : 'KhĂŽng thể ghi vĂ o "$1".', 'errPerm' : 'Quyền bị từ chối.', 'errLocked' : '"$1" đã bị khĂła vĂ  khĂŽng thể đổi tĂȘn, di chuyển hoáș·c loáșĄi bỏ.', 'errExists' : 'Táș­p tin cĂł tĂȘn "$1" đã tồn táșĄi.', 'errInvName' : 'TĂȘn táș­p tin khĂŽng hợp lệ.', 'errInvDirname' : 'TĂȘn thÆ° mỄc khĂŽng hợp lệ.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'ThÆ° mỄc khĂŽng tĂŹm tháș„y.', 'errFileNotFound' : 'Táș­p tin khĂŽng tĂŹm tháș„y.', 'errTrgFolderNotFound' : 'ThÆ° mỄc đích "$1" khĂŽng Ä‘Æ°á»Łc tĂŹm tháș„y.', 'errPopup' : 'TrĂŹnh duyệt ngăn cháș·n mở cá»­a sổ popup.', 'errMkdir' : 'KhĂŽng thể táșĄo thÆ° mỄc "$1".', 'errMkfile' : 'KhĂŽng thể táșĄo táș­p tin "$1".', 'errRename' : 'KhĂŽng thể đổi tĂȘn "$1".', 'errCopyFrom' : 'Sao chĂ©p táș­p tin từ táș­p "$1" khĂŽng Ä‘Æ°á»Łc phĂ©p.', 'errCopyTo' : 'Sao chĂ©p táș­p tin tới táș­p "$1" khĂŽng Ä‘Æ°á»Łc phĂ©p.', 'errMkOutLink' : 'KhĂŽng thể táșĄo liĂȘn káșżt ra bĂȘn ngoĂ i volume root.', // from v2.1 added 03.10.2015 'errUpload' : 'TáșŁi lĂȘn bĂĄo lỗi.', // old name - errUploadCommon 'errUploadFile' : 'KhĂŽng thể táșŁi lĂȘn "$1".', // old name - errUpload 'errUploadNoFiles' : 'KhĂŽng tháș„y táș­p tin nĂ o để táșŁi lĂȘn.', 'errUploadTotalSize' : 'Dữ liệu vÆ°á»Łt quĂĄ kĂ­ch thước tối đa cho phĂ©p.', // old name - errMaxSize 'errUploadFileSize' : 'Táș­p tin vÆ°á»Łt quĂĄ kĂ­ch thước tối đa cho phĂ©p.', // old name - errFileMaxSize 'errUploadMime' : 'Kiểu táș­p tin khĂŽng Ä‘Æ°á»Łc phĂ©p.', 'errUploadTransfer' : 'Lỗi khi truyền "$1".', 'errUploadTemp' : 'KhĂŽng thể táșĄo thÆ° mỄc táșĄm để táșŁi lĂȘn.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Đối tÆ°á»Łng "$1" đã tồn táșĄi ở vị trĂ­ nĂ y vĂ  khĂŽng thể thay tháșż báș±ng đối tÆ°á»Łng với loáșĄi khĂĄc.', // new 'errReplace' : 'KhĂŽng thể thay tháșż "$1".', 'errSave' : 'KhĂŽng thể lÆ°u "$1".', 'errCopy' : 'KhĂŽng thể sao chĂ©p "$1".', 'errMove' : 'KhĂŽng thể chuyển "$1".', 'errCopyInItself' : 'KhĂŽng thể sao chĂ©p "$1" vĂ o chĂ­nh nĂł.', 'errRm' : 'KhĂŽng thể xĂła "$1".', 'errTrash' : 'KhĂŽng thể cho vĂ o thĂčng rĂĄc.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'KhĂŽng thể xĂła tệp nguồn.', 'errExtract' : 'KhĂŽng thể giáșŁi nĂ©n cĂĄc táș­p tin từ"$1".', 'errArchive' : 'KhĂŽng thể táșĄo ra lÆ°u trữ.', 'errArcType' : 'LoáșĄi lÆ°u trữ khĂŽng Ä‘Æ°á»Łc hỗ trợ.', 'errNoArchive' : 'Táș­p tin khĂŽng pháșŁi lĂ  lÆ°u trữ hoáș·c cĂł kiểu lÆ°u trữ khĂŽng Ä‘Æ°á»Łc hỗ trợ.', 'errCmdNoSupport' : 'Backend khĂŽng hỗ trợ lệnh nĂ y.', 'errReplByChild' : 'ThÆ° mỄc "$1" khĂŽng thể Ä‘Æ°á»Łc thay tháșż báș±ng một mỄc con mĂ  nĂł chứa.', 'errArcSymlinks' : 'VĂŹ lĂœ do báșŁo máș­t, từ chối giáșŁi nĂ©n táș­p tin lÆ°u trữ cĂł chứa liĂȘn káșżt mềm.', // edited 24.06.2012 'errArcMaxSize' : 'Táș­p tin lÆ°u trữ vÆ°á»Łt quĂĄ kĂ­ch thước tối đa cho phĂ©p.', 'errResize' : 'KhĂŽng thể thay đổi kĂ­ch thước "$1".', 'errResizeDegree' : 'Độ xoay khĂŽng hợp lệ.', // added 7.3.2013 'errResizeRotate' : 'KhĂŽng thể xoay hĂŹnh áșŁnh.', // added 7.3.2013 'errResizeSize' : 'KĂ­ch thước hĂŹnh áșŁnh khĂŽng hợp lệ.', // added 7.3.2013 'errResizeNoChange' : 'KĂ­ch thước hĂŹnh áșŁnh khĂŽng thay đổi.', // added 7.3.2013 'errUsupportType' : 'LoáșĄi táș­p tin khĂŽng Ä‘Æ°á»Łc hỗ trợ.', 'errNotUTF8Content' : 'Tệp "$1" khĂŽng pháșŁi bộ kĂœ tá»± UTF-8 nĂȘn khĂŽng thể chỉnh sá»­a.', // added 9.11.2011 'errNetMount' : 'KhĂŽng thể gáșŻn káșżt "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Giao thức khĂŽng Ä‘Æ°á»Łc hỗ trợ.', // added 17.04.2012 'errNetMountFailed' : 'GáșŻn (káșżt nối) tháș„t báșĄi.', // added 17.04.2012 'errNetMountHostReq' : 'YĂȘu cáș§u mĂĄy chủ.', // added 18.04.2012 'errSessionExpires' : 'PhiĂȘn của báșĄn đã háșżt háșĄn do khĂŽng hoáșĄt động.', 'errCreatingTempDir' : 'KhĂŽng thể táșĄo thÆ° mỄc táșĄm thời: "$1"', 'errFtpDownloadFile' : 'KhĂŽng thể táșŁi xuống tệp từ FTP: "$1"', 'errFtpUploadFile' : 'KhĂŽng thể táșŁi tệp lĂȘn FTP: "$1"', 'errFtpMkdir' : 'KhĂŽng thể táșĄo thÆ° mỄc từ xa trĂȘn FTP: "$1"', 'errArchiveExec' : 'Lỗi trong khi lÆ°u trữ tệp: "$1"', 'errExtractExec' : 'Lỗi trong khi giáșŁi nĂ©n táș­p tin: "$1"', 'errNetUnMount' : 'KhĂŽng thể gụ gáșŻn (liĂȘn káșżt).', // from v2.1 added 30.04.2012 'errConvUTF8' : 'KhĂŽng thể chuyển đổi thĂ nh UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'HĂŁy thá»­ trĂŹnh duyệt mới hÆĄn (vĂŹ trĂŹnh duyệt hiện táșĄi cĂł váș» cĆ© nĂȘn khĂŽng hỗ trợ táșŁi lĂȘn thÆ° mỄc).', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Đã háșżt thời gian trong khi tĂŹm kiáșżm "$1". Káșżt quáșŁ tĂŹm kiáșżm lĂ  một pháș§n.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Cáș§n ủy quyền láșĄi.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Số lÆ°á»Łng tối đa của cĂĄc mỄc cĂł thể chọn lĂ  $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'KhĂŽng thể khĂŽi phỄc từ thĂčng rĂĄc. KhĂŽng thể xĂĄc định đích khĂŽi phỄc.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'KhĂŽng tĂŹm tháș„y trĂŹnh chỉnh sá»­a cho loáșĄi tệp nĂ y.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Lỗi xáșŁy ra ở phĂ­a mĂĄy chủ.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'KhĂŽng thể lĂ m rỗng thÆ° mỄc "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'CĂł thĂȘm $1 lỗi.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'TáșĄo táș­p tin nĂ©n', 'cmdback' : 'Trở láșĄi', 'cmdcopy' : 'Sao chĂ©p', 'cmdcut' : 'CáșŻt', 'cmddownload' : 'TáșŁi về', 'cmdduplicate' : 'BáșŁn sao', 'cmdedit' : 'Sá»­a táș­p tin', 'cmdextract' : 'GiáșŁi nĂ©n táș­p tin', 'cmdforward' : 'Trước', 'cmdgetfile' : 'Chọn táș­p tin', 'cmdhelp' : 'Giới thiệu pháș§n mềm', 'cmdhome' : 'Home', 'cmdinfo' : 'ThĂŽng tin', 'cmdmkdir' : 'ThÆ° mỄc', 'cmdmkdirin' : 'VĂ o thÆ° mỄc mới', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'TáșĄo táș­p tin Text', 'cmdopen' : 'Mở', 'cmdpaste' : 'DĂĄn', 'cmdquicklook' : 'Xem trước', 'cmdreload' : 'NáșĄp láșĄi', 'cmdrename' : 'Đổi tĂȘn', 'cmdrm' : 'XĂła', 'cmdtrash' : 'VĂ o thĂčng rĂĄc', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'KhĂŽi phỄc', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'TĂŹm táș­p tin', 'cmdup' : 'Go to parent directory', 'cmdupload' : 'TáșŁi táș­p tin lĂȘn', 'cmdview' : 'Xem', 'cmdresize' : 'Thay đổi kĂ­ch thước vĂ  xoay', 'cmdsort' : 'SáșŻp xáșżp', 'cmdnetmount' : 'Mount network volume', // added 18.04.2012 'cmdnetunmount': 'Gụ mount', // from v2.1 added 30.04.2012 'cmdplaces' : 'To Places', // added 28.12.2014 'cmdchmod' : 'Thay đổi cháșż độ', // from v2.1 added 20.6.2015 'cmdopendir' : 'Mở một thÆ° mỄc', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Đáș·t láșĄi chiều rộng cột', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'ToĂ n mĂ n hĂŹnh', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Di chuyển', // from v2.1.15 added 21.08.2016 'cmdempty' : 'LĂ m rỗng thÆ° mỄc', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Hủy bỏ (hoĂ n tĂĄc)', // from v2.1.27 added 31.07.2017 'cmdredo' : 'LĂ m láșĄi', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Chọn táș„t cáșŁ', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'KhĂŽng chọn gĂŹ', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Chọn ngÆ°á»Łc láșĄi', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Mở trong cá»­a sổ mới', // from v2.1.38 added 3.4.2018 'cmdhide' : 'áșšn (Preference)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Đóng', 'btnSave' : 'LÆ°u', 'btnRm' : 'Gụ bỏ', 'btnApply' : 'Áp dỄng', 'btnCancel' : 'Hủy bỏ', 'btnNo' : 'KhĂŽng', 'btnYes' : 'Đồng Ăœ', 'btnMount' : 'Mount', // added 18.04.2012 'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012 'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Convert', // from v2.1 added 08.04.2014 'btnCwd' : 'Here', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'All', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Type', // from v2.1 added 22.5.2015 'btnFileName':'Filename', // from v2.1 added 22.5.2015 'btnSaveClose': 'Save & Close', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 'btnRename' : 'Rename', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Save As', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Mở thÆ° mỄc', 'ntffile' : 'Mở táș­p tin', 'ntfreload' : 'NáșĄp láșĄi nội dung thÆ° mỄc', 'ntfmkdir' : 'TáșĄo thÆ° mỄc', 'ntfmkfile' : 'TáșĄo táș­p tin', 'ntfrm' : 'XĂła táș­p tin', 'ntfcopy' : 'Sao chĂ©p táș­p tin', 'ntfmove' : 'Di chuyển táș­p tin', 'ntfprepare' : 'Chuáș©n bị để sao chĂ©p cĂĄc táș­p tin', 'ntfrename' : 'Đổi tĂȘn táș­p tin', 'ntfupload' : 'TáșŁi táș­p tin lĂȘn', 'ntfdownload' : 'TáșŁi táș­p tin', 'ntfsave' : 'LÆ°u táș­p tin', 'ntfarchive' : 'TáșĄo táș­p tin nĂ©n', 'ntfextract' : 'GiáșŁi nĂ©n táș­p tin', 'ntfsearch' : 'TĂŹm kiáșżm táș­p tin', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Doing something >_<', 'ntfloadimg' : 'Đang táșŁi hĂŹnh áșŁnh', 'ntfnetmount' : 'Mounting network volume', // added 18.04.2012 'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012 'ntfdim' : 'Acquiring image dimension', // added 20.05.2013 'ntfreaddir' : 'Reading folder infomation', // from v2.1 added 01.07.2013 'ntfurl' : 'Getting URL of link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Changing file mode', // from v2.1 added 20.6.2015 'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Creating a file for download', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Getting path infomation', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Doing restore from the trash', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Checking destination folder', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Undoing previous operation', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Redoing previous undone', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'ChÆ°a biáșżt', 'Today' : 'HĂŽm nay', 'Yesterday' : 'HĂŽm qua', 'msJan' : 'ThĂĄng 1', 'msFeb' : 'ThĂĄng 2', 'msMar' : 'ThĂĄng 3', 'msApr' : 'ThĂĄng 4', 'msMay' : 'ThĂĄng 5', 'msJun' : 'ThĂĄng 6', 'msJul' : 'ThĂĄng 7', 'msAug' : 'ThĂĄng 8', 'msSep' : 'ThĂĄng 9', 'msOct' : 'ThĂĄng 10', 'msNov' : 'ThĂĄng 11', 'msDec' : 'ThĂĄng 12', 'January' : 'ThĂĄng 1', 'February' : 'ThĂĄng 2', 'March' : 'ThĂĄng 3', 'April' : 'ThĂĄng 4', 'May' : 'ThĂĄng 5', 'June' : 'ThĂĄng 6', 'July' : 'ThĂĄng 7', 'August' : 'ThĂĄng 8', 'September' : 'ThĂĄng 9', 'October' : 'ThĂĄng 10', 'November' : 'ThĂĄng 11', 'December' : 'ThĂĄng 12', 'Sunday' : 'Chủ nháș­t', 'Monday' : 'Thứ 2', 'Tuesday' : 'Thứ 3', 'Wednesday' : 'Thứ 4', 'Thursday' : 'Thứ 5', 'Friday' : 'Thứ 6', 'Saturday' : 'Thứ 7', 'Sun' : 'Chủ nháș­t', 'Mon' : 'Thứ 2', 'Tue' : 'Thứ 3', 'Wed' : 'Thứ 4', 'Thu' : 'Thứ 5', 'Fri' : 'Thứ 6', 'Sat' : 'Thứ 7', /******************************** sort variants ********************************/ 'sortname' : 'theo tĂȘn', 'sortkind' : 'theo loáșĄi', 'sortsize' : 'theo kĂ­ch cụ', 'sortdate' : 'theo ngĂ y', 'sortFoldersFirst' : 'ThÆ° mỄc đáș§u tiĂȘn', 'sortperm' : 'theo quyền háșĄn', // from v2.1.13 added 13.06.2016 'sortmode' : 'theo cháșż độ', // from v2.1.13 added 13.06.2016 'sortowner' : 'theo người táșĄo', // from v2.1.13 added 13.06.2016 'sortgroup' : 'theo nhĂłm', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Also Treeview', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NewFile.txt', // added 10.11.2015 'untitled folder' : 'NewFolder', // added 10.11.2015 'Archive' : 'NewArchive', // from v2.1 added 10.11.2015 'untitled file' : 'NewFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: File', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'YĂȘu cáș§u xĂĄc nháș­n', 'confirmRm' : 'BáșĄn cĂł cháșŻc cháșŻn muốn xĂła vÄ©nh viễn cĂĄc mỄc?
      Điều nĂ y khĂŽng thể Ä‘Æ°á»Łc hoĂ n tĂĄc!', 'confirmRepl' : 'Thay táș­p tin cĆ© báș±ng táș­p tin mới? (Náșżu nĂł chứa cĂĄc thÆ° mỄc, nĂł sáșœ Ä‘Æ°á»Łc hợp nháș„t. Để sao lÆ°u vĂ  thay tháșż, chọn Sao lÆ°u.)', 'confirmRest' : 'Thay tháșż mỄc hiện cĂł báș±ng một mỄc trong thĂčng rĂĄc?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Not in UTF-8
      Convert to UTF-8?
      Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.
      Please select character encoding of this file.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'It has been modified.
      Losing work if you do not save changes.', // from v2.1 added 15.7.2015 'confirmTrash' : 'BáșĄn cĂł cháșŻc cháșŻn muốn chuyển cĂĄc mỄc vĂ o thĂčng rĂĄc?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'BáșĄn cĂł cháșŻc cháșŻn muốn chuyển cĂĄc mỄc vĂ o "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Áp dỄng cho táș„t cáșŁ', 'name' : 'TĂȘn', 'size' : 'KĂ­ch cụ', 'perms' : 'Quyền', 'modify' : 'Sá»­a đổi', 'kind' : 'LoáșĄi', 'read' : 'đọc', 'write' : 'viáșżt', 'noaccess' : 'khĂŽng truy cáș­p', 'and' : 'vĂ ', 'unknown' : 'khĂŽng xĂĄc định', 'selectall' : 'Chọn táș„t cáșŁ cĂĄc mỄc', 'selectfiles' : 'Chọn cĂĄc mỄc', 'selectffile' : 'Chọn mỄc đáș§u tiĂȘn', 'selectlfile' : 'Chọn mỄc cuối cĂčng', 'viewlist' : 'Hiển thị danh sĂĄch', 'viewicons' : 'Hiển thị biểu tÆ°á»Łng', 'viewSmall' : 'Biểu tÆ°á»Łng nhỏ', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Biểu tÆ°á»Łng vừa', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Biểu tÆ°á»Łng lớn', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Biểu tÆ°á»Łng cá»±c lớn', // from v2.1.39 added 22.5.2018 'places' : 'Places', 'calc' : 'TĂ­nh toĂĄn', 'path' : 'Đường dáș«n', 'aliasfor' : 'BĂ­ danh cho', 'locked' : 'Đã khĂła', 'dim' : 'KĂ­ch thước', 'files' : 'Tệp', 'folders' : 'ThÆ° mỄc', 'items' : 'Items', 'yes' : 'yes', 'no' : 'no', 'link' : 'LiĂȘn káșżt', 'searcresult' : 'Káșżt quáșŁ tĂŹm kiáșżm', 'selected' : 'mỄc đã chọn', 'about' : 'Về', 'shortcuts' : 'Lối táșŻt', 'help' : 'GiĂșp đụ', 'webfm' : 'Web file manager', 'ver' : 'PhiĂȘn báșŁn', 'protocolver' : 'phiĂȘn báșŁn protocol', 'homepage' : 'Trang chủ dá»± ĂĄn', 'docs' : 'TĂ i liệu', 'github' : 'Theo dĂ”i chĂșng tĂŽi trĂȘn GitHub', 'twitter' : 'Theo dĂ”i chĂșng tĂŽi trĂȘn Twitter', 'facebook' : 'Theo dĂ”i chĂșng tĂŽi trĂȘn Facebook', 'team' : 'Đội ngĆ©', 'chiefdev' : 'TrĂčm sĂČ', 'developer' : 'người phĂĄt triển', 'contributor' : 'người đóng gĂłp', 'maintainer' : 'người báșŁo trĂŹ', 'translator' : 'người dịch', 'icons' : 'Icons', 'dontforget' : 'and don\'t forget to take your towel', 'shortcutsof' : 'Shortcuts disabled', 'dropFiles' : 'TháșŁ tệp vĂ o đñy', 'or' : 'hoáș·c', 'selectForUpload' : 'Chọn tệp', 'moveFiles' : 'Di chuyển cĂĄc mỄc', 'copyFiles' : 'Sao chĂ©p cĂĄc mỄc', 'restoreFiles' : 'KhĂŽi mỄc cĂĄc mỄc', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Remove from places', 'aspectRatio' : 'Tỉ lệ khung hĂŹnh', 'scale' : 'Tỉ lệ', 'width' : 'Rộng', 'height' : 'Cao', 'resize' : 'Thay đổi kĂ­ch cụ', 'crop' : 'CáșŻt', 'rotate' : 'Xoay', 'rotate-cw' : 'Xoay 90 độ CW', 'rotate-ccw' : 'Xoay 90 độ CCW', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'User', // added 18.04.2012 'pass' : 'Password', // added 18.04.2012 'confirmUnmount' : 'Are you unmount $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014 'encoding' : 'MĂŁ hĂła', // from v2.1 added 19.12.2014 'locale' : 'Địa phÆ°ÆĄng', // from v2.1 added 19.12.2014 'searchTarget' : 'MỄc tiĂȘu: $1', // from v2.1 added 22.5.2015 'searchMime' : 'TĂŹm kiáșżm theo kiểu tệp (MIME)', // from v2.1 added 22.5.2015 'owner' : 'Chủ sở hữu', // from v2.1 added 20.6.2015 'group' : 'NhĂłm', // from v2.1 added 20.6.2015 'other' : 'KhĂĄc', // from v2.1 added 20.6.2015 'execute' : 'Thá»±c thi', // from v2.1 added 20.6.2015 'perm' : 'Quyền', // from v2.1 added 20.6.2015 'mode' : 'Cháșż độ', // from v2.1 added 20.6.2015 'emptyFolder' : 'ThÆ° mỄc trống', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'ThÆ° mỄc trống\\A KĂ©o tháșŁ vĂ o đñy để thĂȘm cĂĄc mỄc', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'ThÆ° mỄc trống\\A Nháș„n giữ để thĂȘm cĂĄc mỄc', // from v2.1.6 added 30.12.2015 'quality' : 'Cháș„t lÆ°á»Łng', // from v2.1.6 added 5.1.2016 'autoSync' : 'Tá»± động động bộ', // from v2.1.6 added 10.1.2016 'moveUp' : 'Di chuyển lĂȘn', // from v2.1.6 added 18.1.2016 'getLink' : 'Láș„y liĂȘn káșżt URL', // from v2.1.7 added 9.2.2016 'selectedItems' : 'CĂĄc mỄc đã chọn ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID thÆ° mỄc', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Cho phĂ©p truy cáș­p ngoáșĄi tuyáșżn', // from v2.1.10 added 3.25.2016 'reAuth' : 'XĂĄc thá»±c láșĄi', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Đang táșŁi...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Mở nhiều táș­p tin', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Káșżt quáșŁ tĂŹm kiáșżm trống trong mỄc tiĂȘu tĂŹm kiáșżm.', // from v2.1.12 added 5.16.2016 'editingFile' : 'NĂł lĂ  một táș­p tin đang chỉnh sá»­a.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'TĂŹm kiáșżm gia tăng chỉ từ hiển thị hiện táșĄi.', // from v2.1.13 added 6.30.2016 'reinstate' : 'PhỄc hồi', // from v2.1.15 added 3.8.2016 'complete' : '$1 hoĂ n thĂ nh', // from v2.1.15 added 21.8.2016 'contextmenu' : 'TrĂŹnh Ä‘ÆĄn ngữ cáșŁnh', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Chuyển trang', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume roots', // from v2.1.16 added 16.9.2016 'reset' : 'Đáș·t láșĄi', // from v2.1.16 added 1.10.2016 'bgcolor' : 'MĂ u nền', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Chọn mĂ u', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Grid', // from v2.1.16 added 4.10.2016 'enabled' : 'Đã báș­t', // from v2.1.16 added 4.10.2016 'disabled' : 'Đã táșŻt', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Káșżt quáșŁ tĂŹm kiáșżm thÆ° đáș§u tiĂȘn lĂ  trống trong cháșż độ xem hiện táșĄi.', // from v2.1.23 added 24.3.2017 'textLabel' : 'NhĂŁn văn báșŁn', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 mins left', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Chọn thÆ° mỄc', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017 'presets' : 'Đáș·t trước', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'CĂł quĂĄ nhiều mỄc vĂŹ váș­y khĂŽng thể cho vĂ o thĂčng rĂĄc.', // from v2.1.25 added 9.6.2017 'TextArea' : 'TextArea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preference', // from v2.1.26 added 28.6.2017 'language' : 'NgĂŽn ngữ', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'CĂ i đáș·t thanh cĂŽng cỄ', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 chars left.', // from v2.1.29 added 30.8.2017 'sum' : 'Sum', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Rough file size', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focus on the element of dialog with mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Select', // from v2.1.30 added 23.11.2017 'selectAction' : 'Action when select file', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Invert selection', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Are you sure you want to rename $1 selected items like $2?
      This cannot be undone!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch rename', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Number', // from v2.1.31 added 8.12.2017 'asPrefix' : 'ThĂȘm tiền tố', // from v2.1.31 added 8.12.2017 'asSuffix' : 'ThĂȘm háș­u tố', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Thay đổi pháș§n mở rộng', // from v2.1.31 added 8.12.2017 'columnPref' : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Selection Info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Nháș„n một láș§n nữa để thoĂĄt.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Toolbar', // from v2.1.38 added 4.4.2018 'workspace' : 'Work Space', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'All', // from v2.1.38 added 4.4.2018 'iconSize' : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrations', // from v2.1.40 added 11.7.2018 'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Show hidden items', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Hide hidden items', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type of the Text file', // from v2.1.41 added 7.8.2018 'add' : 'Add', // from v2.1.41 added 7.8.2018 'theme' : 'Theme', // from v2.1.43 added 19.10.2018 'default' : 'Default', // from v2.1.43 added 19.10.2018 'description' : 'Description', // from v2.1.43 added 19.10.2018 'website' : 'Website', // from v2.1.43 added 19.10.2018 'author' : 'Author', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'License', // from v2.1.43 added 19.10.2018 'exportToSave' : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Unknown', 'kindRoot' : 'Volume Root', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Folder', 'kindSelects' : 'Selections', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Broken alias', // applications 'kindApp' : 'Application', 'kindPostscript' : 'Postscript document', 'kindMsOffice' : 'Microsoft Office document', 'kindMsWord' : 'Microsoft Word document', 'kindMsExcel' : 'Microsoft Excel document', 'kindMsPP' : 'Microsoft Powerpoint presentation', 'kindOO' : 'Open Office document', 'kindAppFlash' : 'Flash application', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent file', 'kind7z' : '7z archive', 'kindTAR' : 'TAR archive', 'kindGZIP' : 'GZIP archive', 'kindBZIP' : 'BZIP archive', 'kindXZ' : 'XZ archive', 'kindZIP' : 'ZIP archive', 'kindRAR' : 'RAR archive', 'kindJAR' : 'Java JAR file', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM package', // texts 'kindText' : 'Text document', 'kindTextPlain' : 'Plain text', 'kindPHP' : 'PHP source', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML document', 'kindJS' : 'Javascript source', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C source', 'kindCHeader' : 'C header source', 'kindCPP' : 'C++ source', 'kindCPPHeader' : 'C++ header source', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python source', 'kindJava' : 'Java source', 'kindRuby' : 'Ruby source', 'kindPerl' : 'Perl script', 'kindSQL' : 'SQL source', 'kindXML' : 'XML document', 'kindAWK' : 'AWK source', 'kindCSV' : 'Comma separated values', 'kindDOCBOOK' : 'Docbook XML document', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Image', 'kindBMP' : 'BMP image', 'kindJPEG' : 'JPEG image', 'kindGIF' : 'GIF Image', 'kindPNG' : 'PNG Image', 'kindTIFF' : 'TIFF image', 'kindTGA' : 'TGA image', 'kindPSD' : 'Adobe Photoshop image', 'kindXBITMAP' : 'X bitmap image', 'kindPXM' : 'Pixelmator image', // media 'kindAudio' : 'Audio media', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video media', 'kindVideoDV' : 'DV movie', 'kindVideoMPEG' : 'MPEG movie', 'kindVideoMPEG4' : 'MPEG-4 movie', 'kindVideoAVI' : 'AVI movie', 'kindVideoMOV' : 'Quick Time movie', 'kindVideoWM' : 'Windows Media movie', 'kindVideoFlash' : 'Flash movie', 'kindVideoMKV' : 'Matroska movie', 'kindVideoOGG' : 'Ogg movie' } }; })); application/library/js/i18n/elfinder.en.js000064400000077325147577724760014505 0ustar00/** * English translation * @author Troex Nevelin * @author Naoki Sawada * @version 2021-06-02 */ // elfinder.en.js is integrated into elfinder.(full|min).js by jake build if (typeof elFinder === 'function' && elFinder.prototype.i18) { elFinder.prototype.i18.en = { translator : 'Troex Nevelin <troex@fury.scancode.ru>, Naoki Sawada <hypweb+elfinder@gmail.com>', language : 'English', direction : 'ltr', dateFormat : 'M d, Y h:i A', // will show like: Aug 24, 2018 04:39 PM fancyDateFormat : '$1 h:i A', // will show like: Today 04:39 PM nonameDateFormat : 'ymd-His', // noname upload will show like: 180824-163916 messages : { /********************************** errors **********************************/ 'error' : 'Error', 'errUnknown' : 'Unknown error.', 'errUnknownCmd' : 'Unknown command.', 'errJqui' : 'Invalid jQuery UI configuration. Selectable, draggable and droppable components must be included.', 'errNode' : 'elFinder requires DOM Element to be created.', 'errURL' : 'Invalid elFinder configuration! URL option is not set.', 'errAccess' : 'Access denied.', 'errConnect' : 'Unable to connect to backend.', 'errAbort' : 'Connection aborted.', 'errTimeout' : 'Connection timeout.', 'errNotFound' : 'Backend not found.', 'errResponse' : 'Invalid backend response.', 'errConf' : 'Invalid backend configuration.', 'errJSON' : 'PHP JSON module not installed.', 'errNoVolumes' : 'Readable volumes not available.', 'errCmdParams' : 'Invalid parameters for command "$1".', 'errDataNotJSON' : 'Data is not JSON.', 'errDataEmpty' : 'Data is empty.', 'errCmdReq' : 'Backend request requires command name.', 'errOpen' : 'Unable to open "$1".', 'errNotFolder' : 'Object is not a folder.', 'errNotFile' : 'Object is not a file.', 'errRead' : 'Unable to read "$1".', 'errWrite' : 'Unable to write into "$1".', 'errPerm' : 'Permission denied.', 'errLocked' : '"$1" is locked and can not be renamed, moved or removed.', 'errExists' : 'Item named "$1" already exists.', 'errInvName' : 'Invalid file name.', 'errInvDirname' : 'Invalid folder name.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Folder not found.', 'errFileNotFound' : 'File not found.', 'errTrgFolderNotFound' : 'Target folder "$1" not found.', 'errPopup' : 'Browser prevented opening popup window. To open file enable it in browser options.', 'errMkdir' : 'Unable to create folder "$1".', 'errMkfile' : 'Unable to create file "$1".', 'errRename' : 'Unable to rename "$1".', 'errCopyFrom' : 'Copying files from volume "$1" not allowed.', 'errCopyTo' : 'Copying files to volume "$1" not allowed.', 'errMkOutLink' : 'Unable to create a link to outside the volume root.', // from v2.1 added 03.10.2015 'errUpload' : 'Upload error.', // old name - errUploadCommon 'errUploadFile' : 'Unable to upload "$1".', // old name - errUpload 'errUploadNoFiles' : 'No files found for upload.', 'errUploadTotalSize' : 'Data exceeds the maximum allowed size.', // old name - errMaxSize 'errUploadFileSize' : 'File exceeds maximum allowed size.', // old name - errFileMaxSize 'errUploadMime' : 'File type not allowed.', 'errUploadTransfer' : '"$1" transfer error.', 'errUploadTemp' : 'Unable to make temporary file for upload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', // new 'errReplace' : 'Unable to replace "$1".', 'errSave' : 'Unable to save "$1".', 'errCopy' : 'Unable to copy "$1".', 'errMove' : 'Unable to move "$1".', 'errCopyInItself' : 'Unable to copy "$1" into itself.', 'errRm' : 'Unable to remove "$1".', 'errTrash' : 'Unable into trash.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'Unable to extract files from "$1".', 'errArchive' : 'Unable to create archive.', 'errArcType' : 'Unsupported archive type.', 'errNoArchive' : 'File is not archive or has unsupported archive type.', 'errCmdNoSupport' : 'Backend does not support this command.', 'errReplByChild' : 'The folder "$1" can\'t be replaced by an item it contains.', 'errArcSymlinks' : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012 'errArcMaxSize' : 'Archive files exceeds maximum allowed size.', 'errResize' : 'Unable to resize "$1".', 'errResizeDegree' : 'Invalid rotate degree.', // added 7.3.2013 'errResizeRotate' : 'Unable to rotate image.', // added 7.3.2013 'errResizeSize' : 'Invalid image size.', // added 7.3.2013 'errResizeNoChange' : 'Image size not changed.', // added 7.3.2013 'errUsupportType' : 'Unsupported file type.', 'errNotUTF8Content' : 'File "$1" is not in UTF-8 and cannot be edited.', // added 9.11.2011 'errNetMount' : 'Unable to mount "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Unsupported protocol.', // added 17.04.2012 'errNetMountFailed' : 'Mount failed.', // added 17.04.2012 'errNetMountHostReq' : 'Host required.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', 'errNetUnMount' : 'Unable to unmount.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Try the modern browser, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Re-authorization is required.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Max number of selectable items is $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Unable to restore from the trash. Can\'t identify the restore destination.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor not found to this file type.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Error occurred on the server side.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Unable to empty folder "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'There are $1 more errors.', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'You can create up to $1 folders at one time.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'Create archive', 'cmdback' : 'Back', 'cmdcopy' : 'Copy', 'cmdcut' : 'Cut', 'cmddownload' : 'Download', 'cmdduplicate' : 'Duplicate', 'cmdedit' : 'Edit file', 'cmdextract' : 'Extract files from archive', 'cmdforward' : 'Forward', 'cmdgetfile' : 'Select files', 'cmdhelp' : 'About this software', 'cmdhome' : 'Root', 'cmdinfo' : 'Get info', 'cmdmkdir' : 'New folder', 'cmdmkdirin' : 'Into New Folder', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'New file', 'cmdopen' : 'Open', 'cmdpaste' : 'Paste', 'cmdquicklook' : 'Preview', 'cmdreload' : 'Reload', 'cmdrename' : 'Rename', 'cmdrm' : 'Delete', 'cmdtrash' : 'Into trash', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Restore', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Find files', 'cmdup' : 'Go to parent folder', 'cmdupload' : 'Upload files', 'cmdview' : 'View', 'cmdresize' : 'Resize & Rotate', 'cmdsort' : 'Sort', 'cmdnetmount' : 'Mount network volume', // added 18.04.2012 'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012 'cmdplaces' : 'To Places', // added 28.12.2014 'cmdchmod' : 'Change mode', // from v2.1 added 20.6.2015 'cmdopendir' : 'Open a folder', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Reset column width', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Full Screen', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Move', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Empty the folder', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Undo', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Redo', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Select all', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Select none', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Invert selection', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Open in new window', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Hide (Preference)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Close', 'btnSave' : 'Save', 'btnRm' : 'Remove', 'btnApply' : 'Apply', 'btnCancel' : 'Cancel', 'btnNo' : 'No', 'btnYes' : 'Yes', 'btnMount' : 'Mount', // added 18.04.2012 'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012 'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Convert', // from v2.1 added 08.04.2014 'btnCwd' : 'Here', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'All', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Type', // from v2.1 added 22.5.2015 'btnFileName':'Filename', // from v2.1 added 22.5.2015 'btnSaveClose': 'Save & Close', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 'btnRename' : 'Rename', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Save As', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Open folder', 'ntffile' : 'Open file', 'ntfreload' : 'Reload folder content', 'ntfmkdir' : 'Creating folder', 'ntfmkfile' : 'Creating files', 'ntfrm' : 'Delete items', 'ntfcopy' : 'Copy items', 'ntfmove' : 'Move items', 'ntfprepare' : 'Checking existing items', 'ntfrename' : 'Rename files', 'ntfupload' : 'Uploading files', 'ntfdownload' : 'Downloading files', 'ntfsave' : 'Save files', 'ntfarchive' : 'Creating archive', 'ntfextract' : 'Extracting files from archive', 'ntfsearch' : 'Searching files', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Doing something', 'ntfloadimg' : 'Loading image', 'ntfnetmount' : 'Mounting network volume', // added 18.04.2012 'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012 'ntfdim' : 'Acquiring image dimension', // added 20.05.2013 'ntfreaddir' : 'Reading folder infomation', // from v2.1 added 01.07.2013 'ntfurl' : 'Getting URL of link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Changing file mode', // from v2.1 added 20.6.2015 'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Creating a file for download', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Getting path infomation', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Doing restore from the trash', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Checking destination folder', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Undoing previous operation', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Redoing previous undone', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'unknown', 'Today' : 'Today', 'Yesterday' : 'Yesterday', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'May', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Oct', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'January', 'February' : 'February', 'March' : 'March', 'April' : 'April', 'May' : 'May', 'June' : 'June', 'July' : 'July', 'August' : 'August', 'September' : 'September', 'October' : 'October', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Sunday', 'Monday' : 'Monday', 'Tuesday' : 'Tuesday', 'Wednesday' : 'Wednesday', 'Thursday' : 'Thursday', 'Friday' : 'Friday', 'Saturday' : 'Saturday', 'Sun' : 'Sun', 'Mon' : 'Mon', 'Tue' : 'Tue', 'Wed' : 'Wed', 'Thu' : 'Thu', 'Fri' : 'Fri', 'Sat' : 'Sat', /******************************** sort variants ********************************/ 'sortname' : 'by name', 'sortkind' : 'by kind', 'sortsize' : 'by size', 'sortdate' : 'by date', 'sortFoldersFirst' : 'Folders first', 'sortperm' : 'by permission', // from v2.1.13 added 13.06.2016 'sortmode' : 'by mode', // from v2.1.13 added 13.06.2016 'sortowner' : 'by owner', // from v2.1.13 added 13.06.2016 'sortgroup' : 'by group', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Also Treeview', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NewFile.txt', // added 10.11.2015 'untitled folder' : 'NewFolder', // added 10.11.2015 'Archive' : 'NewArchive', // from v2.1 added 10.11.2015 'untitled file' : 'NewFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: File', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Confirmation required', 'confirmRm' : 'Are you sure you want to permanently remove items?
      This cannot be undone!', 'confirmRepl' : 'Replace old file with new one? (If it contains folders, it will be merged. To backup and replace, select Backup.)', 'confirmRest' : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Not in UTF-8
      Convert to UTF-8?
      Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.
      Please select character encoding of this file.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'It has been modified.
      Losing work if you do not save changes.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Are you sure you want to move items to "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Apply to all', 'name' : 'Name', 'size' : 'Size', 'perms' : 'Permissions', 'modify' : 'Modified', 'kind' : 'Kind', 'read' : 'read', 'write' : 'write', 'noaccess' : 'no access', 'and' : 'and', 'unknown' : 'unknown', 'selectall' : 'Select all items', 'selectfiles' : 'Select item(s)', 'selectffile' : 'Select first item', 'selectlfile' : 'Select last item', 'viewlist' : 'List view', 'viewicons' : 'Icons view', 'viewSmall' : 'Small icons', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Medium icons', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Large icons', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Extra large icons', // from v2.1.39 added 22.5.2018 'places' : 'Places', 'calc' : 'Calculate', 'path' : 'Path', 'aliasfor' : 'Alias for', 'locked' : 'Locked', 'dim' : 'Dimensions', 'files' : 'Files', 'folders' : 'Folders', 'items' : 'Items', 'yes' : 'yes', 'no' : 'no', 'link' : 'Link', 'searcresult' : 'Search results', 'selected' : 'selected items', 'about' : 'About', 'shortcuts' : 'Shortcuts', 'help' : 'Help', 'webfm' : 'Web file manager', 'ver' : 'Version', 'protocolver' : 'protocol version', 'homepage' : 'Project home', 'docs' : 'Documentation', 'github' : 'Fork us on GitHub', 'twitter' : 'Follow us on Twitter', 'facebook' : 'Join us on Facebook', 'team' : 'Team', 'chiefdev' : 'chief developer', 'developer' : 'developer', 'contributor' : 'contributor', 'maintainer' : 'maintainer', 'translator' : 'translator', 'icons' : 'Icons', 'dontforget' : 'and don\'t forget to take your towel', 'shortcutsof' : 'Shortcuts disabled', 'dropFiles' : 'Drop files here', 'or' : 'or', 'selectForUpload' : 'Select files', 'moveFiles' : 'Move items', 'copyFiles' : 'Copy items', 'restoreFiles' : 'Restore items', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Remove from places', 'aspectRatio' : 'Aspect ratio', 'scale' : 'Scale', 'width' : 'Width', 'height' : 'Height', 'resize' : 'Resize', 'crop' : 'Crop', 'rotate' : 'Rotate', 'rotate-cw' : 'Rotate 90 degrees CW', 'rotate-ccw' : 'Rotate 90 degrees CCW', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'User', // added 18.04.2012 'pass' : 'Password', // added 18.04.2012 'confirmUnmount' : 'Are you sure to unmount $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014 'encoding' : 'Encoding', // from v2.1 added 19.12.2014 'locale' : 'Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'Target: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Search by input MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Owner', // from v2.1 added 20.6.2015 'group' : 'Group', // from v2.1 added 20.6.2015 'other' : 'Other', // from v2.1 added 20.6.2015 'execute' : 'Execute', // from v2.1 added 20.6.2015 'perm' : 'Permission', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'Folder is empty', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Folder is empty\\A Drop to add items', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Folder is empty\\A Long tap to add items', // from v2.1.6 added 30.12.2015 'quality' : 'Quality', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto sync', // from v2.1.6 added 10.1.2016 'moveUp' : 'Move up', // from v2.1.6 added 18.1.2016 'getLink' : 'Get URL link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Selected items ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Folder ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Allow offline access', // from v2.1.10 added 3.25.2016 'reAuth' : 'To re-authenticate', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Now loading...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Open multiple files', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Search results is empty in search target.', // from v2.1.12 added 5.16.2016 'editingFile' : 'It is editing a file.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Reinstate', // from v2.1.15 added 3.8.2016 'complete' : '$1 complete', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Context menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Page turning', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume roots', // from v2.1.16 added 16.9.2016 'reset' : 'Reset', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Background color', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Color picker', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Grid', // from v2.1.16 added 4.10.2016 'enabled' : 'Enabled', // from v2.1.16 added 4.10.2016 'disabled' : 'Disabled', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Search results is empty in current view.\\A Press [Enter] to expand search target.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Text label', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 mins left', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Select folder', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017 'presets' : 'Presets', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017 'TextArea' : 'TextArea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preference', // from v2.1.26 added 28.6.2017 'language' : 'Language', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Toolbar settings', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 chars left.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 lines left.', // from v2.1.52 added 16.1.2020 'sum' : 'Sum', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Rough file size', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focus on the element of dialog with mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Select', // from v2.1.30 added 23.11.2017 'selectAction' : 'Action when select file', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Invert selection', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Are you sure you want to rename $1 selected items like $2?
      This cannot be undone!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch rename', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Number', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Add prefix', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Add suffix', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Change extention', // from v2.1.31 added 8.12.2017 'columnPref' : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Selection Info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Press again to exit.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Toolbar', // from v2.1.38 added 4.4.2018 'workspace' : 'Work Space', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'All', // from v2.1.38 added 4.4.2018 'iconSize' : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrations', // from v2.1.40 added 11.7.2018 'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Show hidden items', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Hide hidden items', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type of the Text file', // from v2.1.41 added 7.8.2018 'add' : 'Add', // from v2.1.41 added 7.8.2018 'theme' : 'Theme', // from v2.1.43 added 19.10.2018 'default' : 'Default', // from v2.1.43 added 19.10.2018 'description' : 'Description', // from v2.1.43 added 19.10.2018 'website' : 'Website', // from v2.1.43 added 19.10.2018 'author' : 'Author', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'License', // from v2.1.43 added 19.10.2018 'exportToSave' : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Unknown', 'kindRoot' : 'Volume Root', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Folder', 'kindSelects' : 'Selections', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Broken alias', // applications 'kindApp' : 'Application', 'kindPostscript' : 'Postscript document', 'kindMsOffice' : 'Microsoft Office document', 'kindMsWord' : 'Microsoft Word document', 'kindMsExcel' : 'Microsoft Excel document', 'kindMsPP' : 'Microsoft Powerpoint presentation', 'kindOO' : 'Open Office document', 'kindAppFlash' : 'Flash application', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent file', 'kind7z' : '7z archive', 'kindTAR' : 'TAR archive', 'kindGZIP' : 'GZIP archive', 'kindBZIP' : 'BZIP archive', 'kindXZ' : 'XZ archive', 'kindZIP' : 'ZIP archive', 'kindRAR' : 'RAR archive', 'kindJAR' : 'Java JAR file', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM package', // texts 'kindText' : 'Text document', 'kindTextPlain' : 'Plain text', 'kindPHP' : 'PHP source', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML document', 'kindJS' : 'Javascript source', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C source', 'kindCHeader' : 'C header source', 'kindCPP' : 'C++ source', 'kindCPPHeader' : 'C++ header source', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python source', 'kindJava' : 'Java source', 'kindRuby' : 'Ruby source', 'kindPerl' : 'Perl script', 'kindSQL' : 'SQL source', 'kindXML' : 'XML document', 'kindAWK' : 'AWK source', 'kindCSV' : 'Comma separated values', 'kindDOCBOOK' : 'Docbook XML document', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Image', 'kindBMP' : 'BMP image', 'kindJPEG' : 'JPEG image', 'kindGIF' : 'GIF Image', 'kindPNG' : 'PNG Image', 'kindTIFF' : 'TIFF image', 'kindTGA' : 'TGA image', 'kindPSD' : 'Adobe Photoshop image', 'kindXBITMAP' : 'X bitmap image', 'kindPXM' : 'Pixelmator image', // media 'kindAudio' : 'Audio media', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video media', 'kindVideoDV' : 'DV movie', 'kindVideoMPEG' : 'MPEG movie', 'kindVideoMPEG4' : 'MPEG-4 movie', 'kindVideoAVI' : 'AVI movie', 'kindVideoMOV' : 'Quick Time movie', 'kindVideoWM' : 'Windows Media movie', 'kindVideoFlash' : 'Flash movie', 'kindVideoMKV' : 'Matroska movie', 'kindVideoOGG' : 'Ogg movie' } }; } application/library/js/i18n/elfinder.cs.js000064400000103007147577724760014473 0ustar00/** * Czech translation * @author RobiNN * @author Jay Gridley * @version 2021-06-10 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.cs = { translator : 'RobiNN <robo@kelcak.com>, Jay Gridley <gridley.jay@hotmail.com>', language : 'ČeĆĄtina', direction : 'ltr', dateFormat : 'd. m. Y H:i', // will show like: 10. 06. 2021 23:37 fancyDateFormat : '$1 H:i', // will show like: Dnes 23:37 nonameDateFormat : 'ymd-His', // noname upload will show like: 210610-233701 messages : { /********************************** errors **********************************/ 'error' : 'Chyba', 'errUnknown' : 'NeznĂĄmĂĄ chyba.', 'errUnknownCmd' : 'NeznĂĄmĂœ pƙíkaz.', 'errJqui' : 'NedostačujĂ­cĂ­ konfigurace jQuery UI. MusĂ­ bĂœt zahrnuty komponenty Selectable, Draggable a Droppable.', 'errNode' : 'elFinder vyĆŸaduje vytvoƙenĂœ DOM Elementu.', 'errURL' : 'ChybnĂĄ konfigurace elFinderu! NenĂ­ nastavena hodnota URL.', 'errAccess' : 'Pƙístup zamĂ­tnut.', 'errConnect' : 'Nepodaƙilo se pƙipojit k backendu.', 'errAbort' : 'PƙipojenĂ­ zruĆĄeno.', 'errTimeout' : 'VypĆĄel limit pro pƙipojenĂ­.', 'errNotFound' : 'Backend nenalezen.', 'errResponse' : 'NesprĂĄvnĂĄ odpověď backendu.', 'errConf' : 'NepsrĂĄvnĂĄ konfigurace backendu.', 'errJSON' : 'PHP modul JSON nenĂ­ nainstalovĂĄn.', 'errNoVolumes' : 'NenĂ­ dostupnĂœ čitelnĂœ oddĂ­l.', 'errCmdParams' : 'NesprĂĄvnĂ© parametry pƙíkazu "$1".', 'errDataNotJSON' : 'Data nejsou ve formĂĄtu JSON.', 'errDataEmpty' : 'Data jsou prĂĄzdnĂĄ.', 'errCmdReq' : 'Dotaz backendu vyĆŸaduje nĂĄzev pƙíkazu.', 'errOpen' : 'Chyba pƙi otevĂ­rĂĄnĂ­ "$1".', 'errNotFolder' : 'Objekt nenĂ­ sloĆŸka.', 'errNotFile' : 'Objekt nenĂ­ soubor.', 'errRead' : 'Chyba pƙi čtenĂ­ "$1".', 'errWrite' : 'Chyba pƙi zĂĄpisu do "$1".', 'errPerm' : 'Pƙístup odepƙen.', 'errLocked' : '"$1" je uzamčenĂœ a nemĆŻĆŸe bĂœt pƙejmenovĂĄn, pƙesunut nebo smazĂĄn.', 'errExists' : 'Soubor s nĂĄzvem "$1" jiĆŸ existuje.', 'errInvName' : 'NesprĂĄvnĂœ nĂĄzev souboru.', 'errInvDirname' : 'NeplatnĂœ nĂĄzev adresáƙe.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'SloĆŸka nenalezena.', 'errFileNotFound' : 'Soubor nenalezen.', 'errTrgFolderNotFound' : 'CĂ­lovĂĄ sloĆŸka "$1" nenalezena.', 'errPopup' : 'ProhlĂ­ĆŸeč zabrĂĄnil otevƙenĂ­ vyskakovacĂ­ho okna. K otevƙenĂ­ souboru, povolte vyskakovacĂ­ okno v prohlĂ­ĆŸeči.', 'errMkdir' : 'Nepodaƙilo se vytvoƙit sloĆŸku "$1".', 'errMkfile' : 'Nepodaƙilo se vytvoƙit soubor "$1".', 'errRename' : 'Nepodaƙilo se pƙejmenovat "$1".', 'errCopyFrom' : 'KopĂ­rovĂĄnĂ­ souborĆŻ z oddĂ­lu "$1" nenĂ­ povoleno.', 'errCopyTo' : 'KopĂ­rovĂĄnĂ­ souborĆŻ do oddĂ­lu "$1" nenĂ­ povoleno.', 'errMkOutLink' : 'Nelze vytvoƙit odkaz mimo koƙenovĂ©ho svazku.', // from v2.1 added 03.10.2015 'errUpload' : 'Chyba nahrĂĄvĂĄnĂ­.', // old name - errUploadCommon 'errUploadFile' : 'Nepodaƙilo se nahrĂĄt "$1".', // old name - errUpload 'errUploadNoFiles' : 'Nejsou vybrĂĄny ĆŸĂĄdnĂ© soubory k nahrĂĄnĂ­.', 'errUploadTotalSize' : 'Pƙekročena maximĂĄlnĂ­ povolenĂĄ velikost dat.', // old name - errMaxSize 'errUploadFileSize' : 'Pƙekročena maximĂĄlnĂ­ povolenĂĄ velikost souboru.', // old name - errFileMaxSize 'errUploadMime' : 'NepovolenĂœ typ souboru.', 'errUploadTransfer' : '"$1" chyba pƙenosu.', 'errUploadTemp' : 'Nelze vytvoƙit dočasnĂœ soubor pro upload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Objekt "$1" v tomto umĂ­stěnĂ­ jiĆŸ existuje a nelze jej nahradit s jinĂœm typem objektu.', // new 'errReplace' : 'Nelze nahradit "$1".', 'errSave' : '"$1" nelze uloĆŸit.', 'errCopy' : '"$1" nelze zkopĂ­rovat.', 'errMove' : '"$1" nelze pƙemĂ­stit.', 'errCopyInItself' : '"$1" nelze zkopĂ­rovat do sebe sama.', 'errRm' : '"$1" nelze odstranit.', 'errTrash' : 'Nelze se dostat do koĆĄe.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Nelze odstranit zdrojovĂœ soubor(y).', 'errExtract' : 'Nelze extrahovat soubory z "$1".', 'errArchive' : 'Nelze vytvoƙit archĂ­v.', 'errArcType' : 'NepodporovanĂœ typ archĂ­vu.', 'errNoArchive' : 'Soubor nenĂ­ archĂ­v nebo mĂĄ nepodporovanĂœ formĂĄt.', 'errCmdNoSupport' : 'Backend tento pƙíkaz nepodporuje.', 'errReplByChild' : 'SloĆŸka "$1" nemĆŻĆŸe bĂœt nahrazena souborem, kterĂœ sama obsahuje.', 'errArcSymlinks' : 'Z bezpečnostnĂ­ch dĆŻvodĆŻ je zakĂĄzĂĄno rozbalit archĂ­vy obsahujĂ­cĂ­ symlinky.', // edited 24.06.2012 'errArcMaxSize' : 'Soubory archĂ­vu pƙekračujĂ­ maximĂĄlnĂ­ povolenou velikost.', 'errResize' : 'Nepodaƙilo se změnit velikost obrĂĄzku "$1".', 'errResizeDegree' : 'NeplatnĂœ stupeƈ rotace.', // added 7.3.2013 'errResizeRotate' : 'Nelze otočit obrĂĄzek.', // added 7.3.2013 'errResizeSize' : 'NeplatnĂĄ velikost obrĂĄzku.', // added 7.3.2013 'errResizeNoChange' : 'Velikost obrazu se nezměnĂ­.', // added 7.3.2013 'errUsupportType' : 'NepodporovanĂœ typ souboru.', 'errNotUTF8Content' : 'Soubor "$1" nemĂĄ ani obsah kĂłdovanĂœ v UTF-8 a nelze změnit.', // added 9.11.2011 'errNetMount' : 'NenĂ­ moĆŸnĂ© se pƙipojit "$ 1".', // added 17.04.2012 'errNetMountNoDriver' : 'NepodporovanĂœ protokol.', // added 17.04.2012 'errNetMountFailed' : 'PƙipojenĂ­ se nezdaƙilo.', // added 17.04.2012 'errNetMountHostReq' : 'Hostitel se vyĆŸaduje.', // added 18.04.2012 'errSessionExpires' : 'Relace byla ukončena z dĆŻvodu nečinnosti.', 'errCreatingTempDir' : 'Nelze vytvoƙit dočasnĂœ adresáƙ: "$1"', 'errFtpDownloadFile' : 'Nelze stĂĄhnout soubor z FTP: "$1"', 'errFtpUploadFile' : 'Nelze nahrĂĄt soubor na FTP: "$1"', 'errFtpMkdir' : 'Nepodaƙilo se vytvoƙit vzdĂĄlenĂœ adresáƙ na FTP: "$1"', 'errArchiveExec' : 'Pƙi archivaci do souboru doĆĄlo k chybě: "$1"', 'errExtractExec' : 'Chyba pƙi extrahovĂĄnĂ­ souboru: "$1"', 'errNetUnMount' : 'Nepodaƙilo se odpojit', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Nelze pƙevĂ©st na UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Chcete-li nahrĂĄt sloĆŸku, zkuste modernĂ­ prohlĂ­ĆŸeč.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'VyprĆĄenĂ­ časovĂ©ho limitu pƙi hledĂĄnĂ­ "$1". Je částečně vĂœsledkem hledĂĄnĂ­.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'OpětovnĂ© povolenĂ­ je nutnĂ©.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'MaximĂĄlnĂ­ počet volitelnĂœch pƙedmětĆŻ je $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Nelze obnovit z koĆĄe. Nelze identifikovat cĂ­l obnovenĂ­.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor tohoto typu souboru nebyl nalezen.', // from v2.1.25 added 23.5.2017 'errServerError' : 'DoĆĄlo k chybě na straně serveru.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Nelze vyprĂĄzdnit sloĆŸku "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'ExistujĂ­ jeĆĄtě dalĆĄĂ­ $1 chyby.', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'MĆŻĆŸete vytvoƙit aĆŸ $1 sloĆŸek najednou.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'Vytvoƙit archĂ­v', 'cmdback' : 'Zpět', 'cmdcopy' : 'KopĂ­rovat', 'cmdcut' : 'Vyjmout', 'cmddownload' : 'StĂĄhnout', 'cmdduplicate' : 'Duplikovat', 'cmdedit' : 'Upravit soubor', 'cmdextract' : 'Rozbalit archĂ­v', 'cmdforward' : 'Vpƙed', 'cmdgetfile' : 'Vybrat soubory', 'cmdhelp' : 'O softwaru', 'cmdhome' : 'DomĆŻ', 'cmdinfo' : 'Zobrazit informace', 'cmdmkdir' : 'NovĂĄ sloĆŸka', 'cmdmkdirin' : 'Do novĂ© sloĆŸky', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'NovĂœ soubor', 'cmdopen' : 'Otevƙít', 'cmdpaste' : 'VloĆŸit', 'cmdquicklook' : 'NĂĄhled', 'cmdreload' : 'Obnovit', 'cmdrename' : 'Pƙejmenovat', 'cmdrm' : 'Smazat', 'cmdtrash' : 'Do koĆĄe', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Obnovit', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'NajĂ­t soubory', 'cmdup' : 'PƙejĂ­t do nadƙazenĂ© sloĆŸky', 'cmdupload' : 'NahrĂĄt soubor(y)', 'cmdview' : 'Zobrazit', 'cmdresize' : 'Změnit velikost', 'cmdsort' : 'Seƙadit', 'cmdnetmount' : 'Pƙipojit sĂ­Ć„ovou jednotku', // added 18.04.2012 'cmdnetunmount': 'Odpojit', // from v2.1 added 30.04.2012 'cmdplaces' : 'UmĂ­stěnĂ­', // added 28.12.2014 'cmdchmod' : 'Změnit reĆŸim', // from v2.1 added 20.6.2015 'cmdopendir' : 'OtevƙenĂ­ sloĆŸky', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'ObnovenĂ­ ơíƙku sloupce', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'CelĂĄ obrazovka', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Posouvat', // from v2.1.15 added 21.08.2016 'cmdempty' : 'VyprĂĄzdnit sloĆŸku', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Krok zpět', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Udělat to znovu', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preference', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Vyberat vĆĄe', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Nic nevyberaĆ„', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Invertovat vĂœběr', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Otevƙi v novĂ©m okně', // from v2.1.38 added 3.4.2018 'cmdhide' : 'SkrĂœt (Pƙedvolba)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Zavƙít', 'btnSave' : 'UloĆŸit', 'btnRm' : 'Odstranit', 'btnApply' : 'PouĆŸĂ­t', 'btnCancel' : 'ZruĆĄit', 'btnNo' : 'Ne', 'btnYes' : 'Ano', 'btnMount' : 'Pƙipojit', // added 18.04.2012 'btnApprove': 'PƙejĂ­t do části 1 $ & schvĂĄlit', // from v2.1 added 26.04.2012 'btnUnmount': 'Odpojit', // from v2.1 added 30.04.2012 'btnConv' : 'PƙevĂ©st', // from v2.1 added 08.04.2014 'btnCwd' : 'Tu', // from v2.1 added 22.5.2015 'btnVolume' : 'MĂ©dium', // from v2.1 added 22.5.2015 'btnAll' : 'VĆĄechno', // from v2.1 added 22.5.2015 'btnMime' : 'MIME typ', // from v2.1 added 22.5.2015 'btnFileName':'NĂĄzev souboru', // from v2.1 added 22.5.2015 'btnSaveClose': 'UloĆŸit & zavƙít', // from v2.1 added 12.6.2015 'btnBackup' : 'ZĂĄlohovat', // fromv2.1 added 28.11.2015 'btnRename' : 'Pƙejmenovat', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Pƙejmenovat vĆĄe', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Pƙedch ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'DalĆĄĂ­ ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'UloĆŸit jako', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'OtevĂ­rĂĄnĂ­ sloĆŸky', 'ntffile' : 'OtevĂ­rĂĄnĂ­ souboru', 'ntfreload' : 'ObnovovĂĄnĂ­ obsahu sloĆŸky', 'ntfmkdir' : 'VytváƙenĂ­ sloĆŸky', 'ntfmkfile' : 'VytváƙenĂ­ souborĆŻ', 'ntfrm' : 'VymazĂĄnĂ­ poloĆŸek', 'ntfcopy' : 'KopĂ­rovĂĄnĂ­ poloĆŸek', 'ntfmove' : 'PƙemĂ­stěnĂ­ poloĆŸek', 'ntfprepare' : 'Kontrola existujĂ­cĂ­ch poloĆŸek', 'ntfrename' : 'PƙejmenovĂĄvĂĄnĂ­ souborĆŻ', 'ntfupload' : 'NahrĂĄvĂĄnĂ­ souborĆŻ', 'ntfdownload' : 'StahovĂĄnĂ­ souborĆŻ', 'ntfsave' : 'UklĂĄdĂĄnĂ­ souborĆŻ', 'ntfarchive' : 'VytváƙenĂ­ archĂ­vu', 'ntfextract' : 'RozbalovĂĄnĂ­ souborĆŻ z archĂ­vu', 'ntfsearch' : 'VyhledĂĄvĂĄnĂ­ souborĆŻ', 'ntfresize' : 'Změna velikosti obrĂĄzkĆŻ', 'ntfsmth' : 'Čekejte prosĂ­m...', 'ntfloadimg' : 'NačítĂĄnĂ­ obrĂĄzkĆŻ', 'ntfnetmount' : 'PƙipojenĂ­ sĂ­Ć„ovĂ©ho mĂ©dia', // added 18.04.2012 'ntfnetunmount': 'OdpojenĂ­ sĂ­Ć„ovĂ©ho mĂ©dia', // from v2.1 added 30.04.2012 'ntfdim' : 'ZĂ­skejte rozměr obrazu', // added 20.05.2013 'ntfreaddir' : 'Pƙečtěte si informace o sloĆŸce', // from v2.1 added 01.07.2013 'ntfurl' : 'ZĂ­skejte adresu URL odkazu', // from v2.1 added 11.03.2014 'ntfchmod' : 'Změna souboru', // from v2.1 added 20.6.2015 'ntfpreupload': 'Zkontrolujte nĂĄzev nahravanĂ©ho souboru', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Vytvoƙit soubor ke staĆŸenĂ­', // from v2.1.7 added 23.1.2016 'ntfparents' : 'ZĂ­skĂĄnĂ­ informacĂ­ o cestě', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'ZpracovĂĄnĂ­ nahranĂ©ho souboru', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Hodit do koĆĄe', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Obnova z koĆĄe', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Kontrola cĂ­lovĂ© sloĆŸky', // from v2.1.24 added 3.5.2017 'ntfundo' : 'ZruĆĄit pƙedchozĂ­ operaci', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Obnovit pƙedchozĂ­ zruĆĄenĂ­', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Kontrola obsahu', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'KoĆĄ', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'neznĂĄmĂœ', 'Today' : 'Dnes', 'Yesterday' : 'Včera', 'msJan' : 'Led', 'msFeb' : 'Úno', 'msMar' : 'Bƙe', 'msApr' : 'Dub', 'msMay' : 'Kvě', 'msJun' : 'Čer', 'msJul' : 'Čec', 'msAug' : 'Srp', 'msSep' : 'Záƙ', 'msOct' : 'Ƙíj', 'msNov' : 'Lis', 'msDec' : 'Pro', 'January' : 'Leden', 'February' : 'Únor', 'March' : 'Bƙezen', 'April' : 'Duben', 'May' : 'Květen', 'June' : 'Červen', 'July' : 'Červenec', 'August' : 'Srpen', 'September' : 'Záƙí', 'October' : 'Ƙíjen', 'November' : 'Listopad', 'December' : 'Prosinec', 'Sunday' : 'Neděle', 'Monday' : 'PondělĂ­', 'Tuesday' : 'ÚterĂœ', 'Wednesday' : 'Stƙeda', 'Thursday' : 'Čtvrtek', 'Friday' : 'PĂĄtek', 'Saturday' : 'Sobota', 'Sun' : 'Ne', 'Mon' : 'Po', 'Tue' : 'Út', 'Wed' : 'St', 'Thu' : 'Čt', 'Fri' : 'PĂĄ', 'Sat' : 'So', /******************************** sort variants ********************************/ 'sortname' : 'dle jmĂ©na', 'sortkind' : 'dle typu', 'sortsize' : 'dle velikosti', 'sortdate' : 'dle data', 'sortFoldersFirst' : 'Napƙed sloĆŸky', 'sortperm' : 'dle povolenĂ­', // from v2.1.13 added 13.06.2016 'sortmode' : 'dle mĂłdu', // from v2.1.13 added 13.06.2016 'sortowner' : 'dle majitele', // from v2.1.13 added 13.06.2016 'sortgroup' : 'dle skupiny', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'TakĂ© stromovĂ© zobrazenĂ­', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NovĂœ soubor.txt', // added 10.11.2015 'untitled folder' : 'NovĂĄ sloĆŸka', // added 10.11.2015 'Archive' : 'NovĂœ archiv', // from v2.1 added 10.11.2015 'untitled file' : 'NovĂœ soubor.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1 soubor', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'PoĆŸadovĂĄno potvrzenĂ­', 'confirmRm' : 'Opravdu chcete odstranit tyto soubory?
      Operace nelze vrĂĄtit!', 'confirmRepl' : 'Nahradit starĂ© soubory novĂœmi?', 'confirmRest' : 'Nahradit stĂĄvajĂ­cĂ­ poloĆŸku poloĆŸkou z koĆĄe?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'NenĂ­ v UTF-8, pƙevĂ©st do UTF-8?
      Obsah po pƙevodu se stĂĄvĂĄ UTF-8.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'KĂłdovĂĄnĂ­ tohoto souboru nemoholo rozpoznĂĄn. Pro Ășpravy je tƙeba dočasně pƙevĂ©st do kĂłdovĂĄnĂ­ UTF-8.
      Prosím, vyberte kódování znakƯ souboru.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Byl změněn.
      Pokud obsahuje neuloĆŸenĂ© změny, dojde ke ztrĂĄtě prĂĄce.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Opravdu chcete poloĆŸky pƙesunout do koĆĄe?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Opravdu chcete poloĆŸky pƙesunout do "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Pro vĆĄechny', 'name' : 'NĂĄzev', 'size' : 'Velikost', 'perms' : 'PrĂĄva', 'modify' : 'UpravenĂœ', 'kind' : 'Typ', 'read' : 'čtenĂ­', 'write' : 'zĂĄpis', 'noaccess' : 'pƙístup odepƙen', 'and' : 'a', 'unknown' : 'neznĂĄmĂœ', 'selectall' : 'Vybrat vĆĄechny poloĆŸky', 'selectfiles' : 'Vybrat poloĆŸku(y)', 'selectffile' : 'Vybrat prvnĂ­ poloĆŸku', 'selectlfile' : 'Vybrat poslednĂ­ poloĆŸku', 'viewlist' : 'Seznam', 'viewicons' : 'Ikony', 'viewSmall' : 'MalĂ© ikony', // from v2.1.39 added 22.5.2018 'viewMedium' : 'StƙednĂ­ ikony', // from v2.1.39 added 22.5.2018 'viewLarge' : 'VelkĂ© ikony', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Extra velkĂ© ikony', // from v2.1.39 added 22.5.2018 'places' : 'MĂ­sta', 'calc' : 'Vypočítat', 'path' : 'Cesta', 'aliasfor' : 'ZĂĄstupce pro', 'locked' : 'UzamčenĂœ', 'dim' : 'Rozměry', 'files' : 'Soubory', 'folders' : 'SloĆŸky', 'items' : 'PoloĆŸky', 'yes' : 'ano', 'no' : 'ne', 'link' : 'Odkaz', 'searcresult' : 'VĂœsledky hledĂĄnĂ­', 'selected' : 'vybranĂ© poloĆŸky', 'about' : 'O softwaru', 'shortcuts' : 'Zkratky', 'help' : 'NĂĄpověda', 'webfm' : 'WebovĂœ sprĂĄvce souborĆŻ', 'ver' : 'Verze', 'protocolver' : 'verze protokolu', 'homepage' : 'DomovskĂĄ strĂĄnka projektu', 'docs' : 'Dokumentace', 'github' : 'Najdete nĂĄs na Gitgube', 'twitter' : 'NĂĄsledujte nĂĄs na Twitteri', 'facebook' : 'Pƙipojte se k nĂĄm na Facebooku', 'team' : 'TĂœm', 'chiefdev' : 'sĂ©f vĂœvojáƙƯ', 'developer' : 'vĂœvojĂĄr', 'contributor' : 'spolupracovnĂ­k', 'maintainer' : 'ĂșdrĆŸba', 'translator' : 'pƙeklad', 'icons' : 'Ikony', 'dontforget' : 'a nezapomeƈte si vzĂ­t plavky', 'shortcutsof' : 'Zkratky nejsou povoleny', 'dropFiles' : 'Sem pƙetĂĄhněte soubory', 'or' : 'nebo', 'selectForUpload' : 'Vyberte soubory', 'moveFiles' : 'Pƙesunout sobory', 'copyFiles' : 'ZkopĂ­rovat soubory', 'restoreFiles' : 'Obnovit poloĆŸky', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Odstranit z mĂ­st', 'aspectRatio' : 'Poměr stran', 'scale' : 'Měƙítko', 'width' : 'Ơíƙka', 'height' : 'VĂœĆĄka', 'resize' : 'Změnit vel.', 'crop' : 'Oƙezat', 'rotate' : 'Otočit', 'rotate-cw' : 'Otočit o +90 stupƈƯ', 'rotate-ccw' : 'Otočit o -90 stupƈƯ', 'degree' : ' stupƈƯ', 'netMountDialogTitle' : 'PƙipojenĂ­ sĂ­Ć„ovĂ©ho mĂ©dia', // added 18.04.2012 'protocol' : 'Protokol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'UĆŸivatel', // added 18.04.2012 'pass' : 'Heslo', // added 18.04.2012 'confirmUnmount' : 'Chcete odpojit $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'PƙemĂ­stěte nebo pƙesuƈte soubory z prohlĂ­ĆŸeče', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Zde pƙemĂ­stěte nebo pƙesuƈte soubory a adresy URL', // from v2.1 added 07.04.2014 'encoding' : 'KĂłdovĂĄnĂ­', // from v2.1 added 19.12.2014 'locale' : 'Lokalizce', // from v2.1 added 19.12.2014 'searchTarget' : 'CĂ­l: $1', // from v2.1 added 22.5.2015 'searchMime' : 'VyhledĂĄvĂĄnĂ­ podle vstupnĂ­ho MIME typu', // from v2.1 added 22.5.2015 'owner' : 'Majitel', // from v2.1 added 20.6.2015 'group' : 'Skupina', // from v2.1 added 20.6.2015 'other' : 'OstatnĂ­', // from v2.1 added 20.6.2015 'execute' : 'Spustit', // from v2.1 added 20.6.2015 'perm' : 'PovolenĂ­', // from v2.1 added 20.6.2015 'mode' : 'ReĆŸim', // from v2.1 added 20.6.2015 'emptyFolder' : 'SloĆŸka je prĂĄzdnĂĄ', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'SloĆŸka je prĂĄzdnĂĄ, pƙesunout nebo zkontrolovat poloĆŸky', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'SloĆŸka je prĂĄzdnĂĄ, dlouhim kliknutĂ­m pƙidĂĄte poloĆŸky', // from v2.1.6 added 30.12.2015 'quality' : 'Kvalita', // from v2.1.6 added 5.1.2016 'autoSync' : 'AutomatickĂĄ synchronizace', // from v2.1.6 added 10.1.2016 'moveUp' : 'Pƙesunout nahoru', // from v2.1.6 added 18.1.2016 'getLink' : 'ZĂ­skat URL odkaz', // from v2.1.7 added 9.2.2016 'selectedItems' : 'VybranĂ© poloĆŸky ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID sloĆŸky', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Povolit pƙístup offline', // from v2.1.10 added 3.25.2016 'reAuth' : 'Znovu ověƙit', // from v2.1.10 added 3.25.2016 'nowLoading' : 'NačítĂĄnĂ­...', // from v2.1.12 added 4.26.2016 'openMulti' : 'OtevƙenĂ­ vĂ­ce souborĆŻ', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'PokouĆĄĂ­te se otevƙít soubor $1. Chcete jej otevƙít v prohlĂ­ĆŸeči?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'VĂœsledky hledĂĄnĂ­ jsou prĂĄzdnĂ©', // from v2.1.12 added 5.16.2016 'editingFile' : 'Upravujete soubor.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Vybrali jste $1 poloĆŸky.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'MĂĄte $1 poloĆŸky v schrĂĄnce.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'InkrementĂĄlnĂ­ hledĂĄnĂ­ je pouze z aktuĂĄlnĂ­ho zobrazenĂ­.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Obnovit', // from v2.1.15 added 3.8.2016 'complete' : '$1 kompletnĂ­', // from v2.1.15 added 21.8.2016 'contextmenu' : 'KontextovĂ© menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'OtáčenĂ­ strĂĄnky', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Koƙeny mĂ©dia', // from v2.1.16 added 16.9.2016 'reset' : 'Obnovit', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Barva pozadĂ­', // from v2.1.16 added 1.10.2016 'colorPicker' : 'VĂœběr barvy', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px mĆ™Ă­ĆŸka', // from v2.1.16 added 4.10.2016 'enabled' : 'Povoleno', // from v2.1.16 added 4.10.2016 'disabled' : 'ZakĂĄzĂĄno', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'VĂœsledky hledĂĄnĂ­ jsou prĂĄzdnĂ© v aktuĂĄlnĂ­m zobrazenĂ­.\\StisknutĂ­m tlačítka [Enter] rozơíƙíte vyhledĂĄvĂĄnĂ­ cĂ­le.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'VĂœsledky vyhledĂĄvĂĄnĂ­ prvnĂ­ho listu jsou v aktuĂĄlnĂ­m zobrazenĂ­ prĂĄzdnĂ©.', // from v2.1.23 added 24.3.2017 'textLabel' : 'NĂĄpis textu', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 minut zĆŻstĂĄvĂĄ', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Otevƙít pomocĂ­ zvolenĂ©ho kĂłdovĂĄnĂ­', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'UloĆŸit s vybranĂœm kĂłdovĂĄnĂ­m', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Vyberte sloĆŸku', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'HledĂĄnĂ­ prvnĂ­ho listu', // from v2.1.23 added 24.3.2017 'presets' : 'Pƙedvolby', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Je to pƙíliĆĄ mnoho poloĆŸek, takĆŸe se nemohou dostat do koĆĄe.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Textarea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'VyprĂĄzdnit sloĆŸku "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Ve sloĆŸce "$1" nejsou ĆŸĂĄdnĂ© poloĆŸky.', // from v2.1.25 added 22.6.2017 'preference' : 'Pƙedvolby', // from v2.1.26 added 28.6.2017 'language' : 'Nastavte jazyk', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Inicializujte nastavenĂ­ uloĆŸenĂĄ v tomto prohlĂ­ĆŸeči', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'NastavenĂ­ panelu nĂĄstrojĆŻ', // from v2.1.27 added 2.8.2017 'charsLeft' : '...$1 znakĆŻ zbĂœvĂĄ.', // from v2.1.29 added 30.8.2017 'linesLeft' : '...$1 ƙádkĆŻ zĆŻstĂĄvĂĄ.', // from v2.1.52 added 16.1.2020 'sum' : 'Součet', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'HrubĂĄ velikost souboru', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'ZaměƙenĂ­ na prvek dialogu s mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Vybrat', // from v2.1.30 added 23.11.2017 'selectAction' : 'Akce pƙi vybranĂ©m souboru', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Otevƙít pomocĂ­ naposledy pouĆŸitĂ©ho editoru', // from v2.1.30 added 23.11.2017 'selectinvert' : 'ObrĂĄtit vĂœběr poloĆŸek', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Opravdu chcete pƙejmenovat $1 vybranĂœch poloĆŸek, jako napƙíklad $2
      NenĂ­ to moĆŸnĂ© vrĂĄtit zpět!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch pƙejmenovĂĄnĂ­', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Číslo', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Pƙidat pƙedponu', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Pƙidat pƙíponu', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Změnit pƙíponu', // from v2.1.31 added 8.12.2017 'columnPref' : 'NastavenĂ­ sloupcĆŻ (ZobrazenĂ­ seznamu)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'VĆĄechny změny se okamĆŸitě projevĂ­ v archivu.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'JakĂ©koliv změny se nebudou odrĂĄĆŸet, dokud nebude tento svazek odpojen.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'NĂĄsledujĂ­cĂ­ svazky namontovanĂ© na tomto svazku jsou takĂ© odpojeny. Opravdu ji odpojĂ­te?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Informace o vĂœběru', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algoritmy pro zobrazenĂ­ hashovĂĄnĂ­ souborĆŻ', // from v2.1.33 added 10.3.2018 'infoItems' : 'InformačnĂ­ poloĆŸky (panel s informacemi o vĂœběru)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'DalĆĄĂ­m stisknutĂ­m opustĂ­te.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Panel nĂĄstrojĆŻ', // from v2.1.38 added 4.4.2018 'workspace' : 'PracovnĂ­ prostor', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'VĆĄechno', // from v2.1.38 added 4.4.2018 'iconSize' : 'Velikost ikony (zobrazenĂ­ ikon)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Otevƙete maximalizovanĂ© okno editora', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'ProtoĆŸe konverze podle API momentĂĄlně nenĂ­ k dispozici, pƙeveďte na webovĂ© strĂĄnce.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'Po konverzi musĂ­te nahrĂĄt pƙeveden soubor pomocĂ­ URL poloĆŸky nebo staĆŸenĂœ soubor k uloĆŸenĂ­ pƙevedenĂ©ho souboru.', //from v2.1.40 added 8.7.2018 'convertOn' : 'PƙevĂ©st na strĂĄnce $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrace', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Tento elFinder mĂĄ integrovanĂ© nĂĄsledujĂ­cĂ­ externĂ­ sluĆŸby. Pƙed pouĆŸitĂ­m zkontrolujte podmĂ­nky pouĆŸĂ­vĂĄnĂ­, zĂĄsady ochrany osobnĂ­ch ĂșdajĆŻ atd.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Zobrazit skrytĂ© poloĆŸky', // from v2.1.41 added 24.7.2018 'hideHidden' : 'SkrĂœt skrytĂ© poloĆŸky', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Zobrazit/skrĂœt skrytĂ© poloĆŸky', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Typy souborĆŻ, jeĆŸ majĂ­ bĂœt povoleny pomocĂ­ "NovĂœ soubor"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Typ textovĂ©ho souboru', // from v2.1.41 added 7.8.2018 'add' : 'Pƙidat', // from v2.1.41 added 7.8.2018 'theme' : 'TĂ©ma', // from v2.1.43 added 19.10.2018 'default' : 'VĂœchozĂ­', // from v2.1.43 added 19.10.2018 'description' : 'Popis', // from v2.1.43 added 19.10.2018 'website' : 'StrĂĄnka', // from v2.1.43 added 19.10.2018 'author' : 'Autor', // from v2.1.43 added 19.10.2018 'email' : 'E-mail', // from v2.1.43 added 19.10.2018 'license' : 'Licence', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Tuto poloĆŸku nelze uloĆŸit. Abyste se vyhnuli ztrĂĄtě Ășprav, musĂ­te je exportovat do počítače.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'PoklepĂĄnĂ­m na soubor jej vyberte.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'PouĆŸĂ­t reĆŸim celĂ© obrazovky', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'NeznĂĄmĂœ', 'kindRoot' : 'Koƙen mĂ©dia', // from v2.1.16 added 16.10.2016 'kindFolder' : 'SloĆŸka', 'kindSelects' : 'VĂœběry', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'ZlomenĂœ alias', // applications 'kindApp' : 'Aplikace', 'kindPostscript' : 'Dokument Postscriptu', 'kindMsOffice' : 'Dokument Microsoft Office', 'kindMsWord' : 'Dokument Microsoft Word', 'kindMsExcel' : 'Dokument Microsoft Excel', 'kindMsPP' : 'Prezentace Microsoft Powerpoint', 'kindOO' : 'Otevƙít dokument Office', 'kindAppFlash' : 'Flash aplikace', 'kindPDF' : 'PDF', 'kindTorrent' : 'Soubor BitTorrent', 'kind7z' : 'ArchĂ­v 7z', 'kindTAR' : 'ArchĂ­v TAR', 'kindGZIP' : 'ArchĂ­v GZIP', 'kindBZIP' : 'ArchĂ­v BZIP', 'kindXZ' : 'ArchĂ­v XZ', 'kindZIP' : 'ArchĂ­v ZIP', 'kindRAR' : 'ArchĂ­v RAR', 'kindJAR' : 'Soubor Java JAR', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM balíček', // texts 'kindText' : 'TextovĂœ dokument', 'kindTextPlain' : 'ČistĂœ text', 'kindPHP' : 'PHP zdrojovĂœ kĂłd', 'kindCSS' : 'KaskĂĄdovĂ© styly', 'kindHTML' : 'HTML dokument', 'kindJS' : 'Javascript zdrojovĂœ kĂłd', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C zdrojovĂœ kĂłd', 'kindCHeader' : 'C hlavička', 'kindCPP' : 'C++ zdrojovĂœ kĂłd', 'kindCPPHeader' : 'C++ hlavička', 'kindShell' : 'Unix shell skript', 'kindPython' : 'Python zdrojovĂœ kĂłd', 'kindJava' : 'Java zdrojovĂœ kĂłd', 'kindRuby' : 'Ruby zdrojovĂœ kĂłd', 'kindPerl' : 'Perl skript', 'kindSQL' : 'SQL zdrojovĂœ kĂłd', 'kindXML' : 'Dokument XML', 'kindAWK' : 'AWK zdrojovĂœ kĂłd', 'kindCSV' : 'CSV', 'kindDOCBOOK' : 'Docbook XML dokument', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'ObrĂĄzek', 'kindBMP' : 'ObrĂĄzek BMP', 'kindJPEG' : 'ObrĂĄzek JPEG', 'kindGIF' : 'ObrĂĄzek GIF', 'kindPNG' : 'ObrĂĄzek PNG', 'kindTIFF' : 'ObrĂĄzek TIFF', 'kindTGA' : 'ObrĂĄzek TGA', 'kindPSD' : 'ObrĂĄzek Adobe Photoshop', 'kindXBITMAP' : 'ObrĂĄzek X bitmapa', 'kindPXM' : 'ObrĂĄzek Pixelmator', // media 'kindAudio' : 'Audio sobory', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video sobory', 'kindVideoDV' : 'DV video', 'kindVideoMPEG' : 'MPEG video', 'kindVideoMPEG4' : 'MPEG-4 video', 'kindVideoAVI' : 'AVI video', 'kindVideoMOV' : 'Quick Time video', 'kindVideoWM' : 'Windows Media video', 'kindVideoFlash' : 'Flash video', 'kindVideoMKV' : 'Matroska video', 'kindVideoOGG' : 'Ogg video' } }; })); application/library/js/i18n/elfinder.sv.js000064400000036611147577724760014524 0ustar00/** * Swedish translation * @author Gabriel Satzger * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.sv = { translator : 'Gabriel Satzger <gabriel.satzger@sbg.se>', language : 'Svenska', direction : 'ltr', dateFormat : 'Y-m-d H:i', fancyDateFormat : '$1 H:i', messages : { /********************************** errors **********************************/ 'error' : 'Error', 'errUnknown' : 'OkĂ€nt error.', 'errUnknownCmd' : 'OkĂ€nt kommando.', 'errJqui' : 'Felaktig jQuery UI konfiguration. Komponenterna selectable, draggable och droppable mĂ„ste vara inkluderade.', 'errNode' : 'elFinder krĂ€ver att DOM Elementen skapats.', 'errURL' : 'Felaktig elFinder konfiguration! URL parametern Ă€r inte satt.', 'errAccess' : 'Åtkomst nekad.', 'errConnect' : 'Kan inte ansluta till backend.', 'errAbort' : 'Anslutningen avbröts.', 'errTimeout' : 'Anslutningen löpte ut.', 'errNotFound' : 'Backend hittades inte.', 'errResponse' : 'Ogiltig backend svar.', 'errConf' : 'Ogiltig backend konfiguration.', 'errJSON' : 'PHP JSON modul Ă€r inte installerad.', 'errNoVolumes' : 'LĂ€sbara volymer Ă€r inte tillgĂ€ngliga.', 'errCmdParams' : 'Ogiltiga parametrar för kommandot "$1".', 'errDataNotJSON' : 'Datan Ă€r inte JSON.', 'errDataEmpty' : 'Datan Ă€r tom.', 'errCmdReq' : 'Backend begĂ€ran krĂ€ver kommandonamn.', 'errOpen' : 'Kan inte öppna "$1".', 'errNotFolder' : 'Objektet Ă€r inte en mapp.', 'errNotFile' : 'Objektet Ă€r inte en fil.', 'errRead' : 'Kan inte lĂ€sa "$1".', 'errWrite' : 'Kan inte skriva till "$1".', 'errPerm' : 'TillstĂ„nd nekat.', 'errLocked' : '"$1" Ă€r lĂ„st och kan inte döpas om, flyttas eller tas bort.', 'errExists' : 'Fil med namn "$1" finns redan.', 'errInvName' : 'Ogiltigt filnamn.', 'errFolderNotFound' : 'Mappen hittades inte.', 'errFileNotFound' : 'Filen hittades inte.', 'errTrgFolderNotFound' : 'MĂ„lmappen "$1" hittades inte.', 'errPopup' : 'WebblĂ€saren hindrade popup-fönstret att öppnas. Ändra i webblĂ€sarens instĂ€llningar för att kunna öppna filen.', 'errMkdir' : 'Kan inte skapa mappen "$1".', 'errMkfile' : 'Kan inte skapa filen "$1".', 'errRename' : 'Kan inte döpa om "$1".', 'errCopyFrom' : 'Kopiera filer frĂ„n volym "$1" tillĂ„ts inte.', 'errCopyTo' : 'Kopiera filer till volym "$1" tillĂ„ts inte.', 'errUpload' : 'Error vid uppladdningen.', 'errUploadFile' : 'Kan inte ladda upp "$1".', 'errUploadNoFiles' : 'Inga filer hittades för uppladdning.', 'errUploadTotalSize' : 'Data överskrider den högsta tillĂ„tna storleken.', 'errUploadFileSize' : 'Filen överskrider den högsta tillĂ„tna storleken.', 'errUploadMime' : 'OtillĂ„ten filtyp.', 'errUploadTransfer' : '"$1" överföringsfel.', 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', 'errReplace' : 'Unable to replace "$1".', 'errSave' : 'Kan inte spara "$1".', 'errCopy' : 'Kan inte kopiera "$1".', 'errMove' : 'Kan inte flytta "$1".', 'errCopyInItself' : 'Kan inte flytta "$1" till sig sjĂ€lv.', 'errRm' : 'Kan inte ta bort "$1".', 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'Kan inte packa upp filen frĂ„n "$1".', 'errArchive' : 'Kan inte skapa arkiv.', 'errArcType' : 'Arkivtypen stöds inte.', 'errNoArchive' : 'Filen Ă€r inte av typen arkiv.', 'errCmdNoSupport' : 'Backend stöder inte detta kommando.', 'errReplByChild' : 'Mappen “$1” kan inte ersĂ€ttas av ett objekt den innehĂ„ller.', 'errArcSymlinks' : 'Av sĂ€kerhetsskĂ€l nekas arkivet att packas upp dĂ„ det innehĂ„ller symboliska lĂ€nkar eller filer med ej tillĂ„tna namn.', // edited 24.06.2012 'errArcMaxSize' : 'Arkivfiler överskrider största tillĂ„tna storlek.', 'errResize' : 'Kan inte Ă€ndra storlek "$1".', 'errResizeDegree' : 'Invalid rotate degree.', 'errResizeRotate' : 'Unable to rotate image.', 'errResizeSize' : 'Invalid image size.', 'errResizeNoChange' : 'Image size not changed.', 'errUsupportType' : 'Filtypen stöds inte.', 'errNotUTF8Content' : 'Filen "$1" Ă€r inte i UTF-8 och kan inte redigeras.', // added 9.11.2011 'errNetMount' : 'Kan inte koppla "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protokollet stöds inte.', // added 17.04.2012 'errNetMountFailed' : 'Kopplingen misslyckades.', // added 17.04.2012 'errNetMountHostReq' : 'Host krĂ€vs.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'Skapa arkiv', 'cmdback' : 'Tillbaka', 'cmdcopy' : 'Kopiera', 'cmdcut' : 'Klipp ut', 'cmddownload' : 'Ladda ned', 'cmdduplicate' : 'Duplicera', 'cmdedit' : 'Redigera fil', 'cmdextract' : 'Extrahera filer frĂ„n arkiv', 'cmdforward' : 'FramĂ„t', 'cmdgetfile' : 'VĂ€lj filer', 'cmdhelp' : 'Om denna programvara', 'cmdhome' : 'Hem', 'cmdinfo' : 'Visa info', 'cmdmkdir' : 'Ny mapp', 'cmdmkfile' : 'Ny fil', 'cmdopen' : 'Öppna', 'cmdpaste' : 'Klistra in', 'cmdquicklook' : 'Förhandsgranska', 'cmdreload' : 'Ladda om', 'cmdrename' : 'Döp om', 'cmdrm' : 'Radera', 'cmdsearch' : 'Hitta filer', 'cmdup' : 'GĂ„ till överordnade katalog', 'cmdupload' : 'Ladda upp filer', 'cmdview' : 'Visa', 'cmdresize' : 'Ändra bildstorlek', 'cmdsort' : 'Sortera', 'cmdnetmount' : 'Mount network volume', /*********************************** buttons ***********************************/ 'btnClose' : 'StĂ€ng', 'btnSave' : 'Spara', 'btnRm' : 'Ta bort', 'btnApply' : 'VerkstĂ€ll', 'btnCancel' : 'Ångra', 'btnNo' : 'Nej', 'btnYes' : 'Ja', 'btnMount' : 'Mount', /******************************** notifications ********************************/ 'ntfopen' : 'Öppnar mapp', 'ntffile' : 'Öppnar fil', 'ntfreload' : 'Laddar om mappinnehĂ„llet', 'ntfmkdir' : 'Skapar katalog', 'ntfmkfile' : 'Skapar fil', 'ntfrm' : 'Tar bort filer', 'ntfcopy' : 'Kopierar filer', 'ntfmove' : 'Flyttar filer', 'ntfprepare' : 'Förbereder att flytta filer', 'ntfrename' : 'Döper om filer', 'ntfupload' : 'Laddar upp filer', 'ntfdownload' : 'Laddar ner filer', 'ntfsave' : 'Sparar filer', 'ntfarchive' : 'Skapar arkiv', 'ntfextract' : 'Extraherar filer frĂ„n arkiv', 'ntfsearch' : 'Söker filer', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Gör nĂ„gonting >_<', 'ntfloadimg' : 'Laddar bild', 'ntfnetmount' : 'kopplar nĂ€tverksvolym', // added 18.04.2012 'ntfdim' : 'Acquiring image dimension', /************************************ dates **********************************/ 'dateUnknown' : 'okĂ€nt', 'Today' : 'Idag', 'Yesterday' : 'IgĂ„r', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Maj', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'Januari', 'February' : 'Februari', 'March' : 'Mars', 'April' : 'April', 'May' : 'Maj', 'June' : 'Juni', 'July' : 'Juli', 'August' : 'Augusti', 'September' : 'September', 'October' : 'Oktober', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Söndag', 'Monday' : 'MĂ„ndag', 'Tuesday' : 'Tisdag', 'Wednesday' : 'Onsdag', 'Thursday' : 'Torsdag', 'Friday' : 'Fredag', 'Saturday' : 'Lördag', 'Sun' : 'Sön', 'Mon' : 'MĂ„n', 'Tue' : 'Tis', 'Wed' : 'Ons', 'Thu' : 'Tor', 'Fri' : 'Fre', 'Sat' : 'Lör', /******************************** sort variants ********************************/ 'sortname' : 'efter namn', 'sortkind' : 'efter sort', 'sortsize' : 'efter storlek', 'sortdate' : 'efter datum', 'sortFoldersFirst' : 'Mappar först', // added 22.06.2012 /********************************** messages **********************************/ 'confirmReq' : 'BekrĂ€ftelse krĂ€vs', 'confirmRm' : 'Är du sĂ€ker pĂ„ att du vill ta bort filer?
      Detta kan inte Ă„ngras!', 'confirmRepl' : 'ErsĂ€tt den gamla filen med en ny?', 'apllyAll' : 'AnvĂ€nd för alla', 'name' : 'Namn', 'size' : 'Storlek', 'perms' : 'RĂ€ttigheter', 'modify' : 'Ändrad', 'kind' : 'Sort', 'read' : 'lĂ€s', 'write' : 'skriv', 'noaccess' : 'ingen Ă„tkomst', 'and' : 'och', 'unknown' : 'okĂ€nd', 'selectall' : 'VĂ€lj alla filer', 'selectfiles' : 'VĂ€lj fil(er)', 'selectffile' : 'VĂ€lj första filen', 'selectlfile' : 'VĂ€lj sista filen', 'viewlist' : 'Listvy', 'viewicons' : 'Ikonvy', 'places' : 'Platser', 'calc' : 'BerĂ€kna', 'path' : 'SökvĂ€g', 'aliasfor' : 'Alias för', 'locked' : 'LĂ„st', 'dim' : 'Dimensioner', 'files' : 'Filer', 'folders' : 'Mappar', 'items' : 'Objekt', 'yes' : 'ja', 'no' : 'nej', 'link' : 'LĂ€nk', 'searcresult' : 'Sökresultat', 'selected' : 'valda objekt', 'about' : 'Om', 'shortcuts' : 'GenvĂ€g', 'help' : 'HjĂ€lp', 'webfm' : 'Webbfilhanterare', 'ver' : 'Version', 'protocolver' : 'protokolversion', 'homepage' : 'Projekt hemsida', 'docs' : 'Dokumentation', 'github' : 'Forka oss pĂ„ Github', 'twitter' : 'Följ oss pĂ„ twitter', 'facebook' : 'Följ oss pĂ„ facebook', 'team' : 'Team', 'chiefdev' : 'senior utvecklare', 'developer' : 'utvecklare', 'contributor' : 'bidragsgivare', 'maintainer' : 'underhĂ„llare', 'translator' : 'översĂ€ttare', 'icons' : 'Ikoner', 'dontforget' : 'och glöm inte att ta med din handduk', 'shortcutsof' : 'GenvĂ€gar avaktiverade', 'dropFiles' : 'SlĂ€pp filerna hĂ€r', 'or' : 'eller', 'selectForUpload' : 'VĂ€lj filer att ladda upp', 'moveFiles' : 'Flytta filer', 'copyFiles' : 'Kopiera filer', 'rmFromPlaces' : 'Ta bort frĂ„n platser', 'aspectRatio' : 'Aspekt ratio', 'scale' : 'Skala', 'width' : 'Bredd', 'height' : 'Höjd', 'resize' : 'Ändra storlek', 'crop' : 'BeskĂ€r', 'rotate' : 'Rotera', 'rotate-cw' : 'Rotera 90 grader medurs', 'rotate-ccw' : 'Rotera 90 grader moturs', 'degree' : 'Grader', 'netMountDialogTitle' : 'Koppla nĂ€tverksvolym', // added 18.04.2012 'protocol' : 'Protokol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'anvĂ€ndare', // added 18.04.2012 'pass' : 'Lösenord', // added 18.04.2012 /********************************** mimetypes **********************************/ 'kindUnknown' : 'OkĂ€nd', 'kindFolder' : 'Mapp', 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Trasigt alias', // applications 'kindApp' : 'Applikation', 'kindPostscript' : 'Postscript', 'kindMsOffice' : 'Microsoft Office', 'kindMsWord' : 'Microsoft Word', 'kindMsExcel' : 'Microsoft Excel', 'kindMsPP' : 'Microsoft Powerpoint', 'kindOO' : 'Open Office', 'kindAppFlash' : 'Flash', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent', 'kind7z' : '7z', 'kindTAR' : 'TAR', 'kindGZIP' : 'GZIP', 'kindBZIP' : 'BZIP', 'kindXZ' : 'XZ', 'kindZIP' : 'ZIP', 'kindRAR' : 'RAR', 'kindJAR' : 'Java JAR', 'kindTTF' : 'True Type', 'kindOTF' : 'Open Type', 'kindRPM' : 'RPM', // texts 'kindText' : 'Text', 'kindTextPlain' : 'Plain', 'kindPHP' : 'PHP', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML', 'kindJS' : 'Javascript', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C', 'kindCHeader' : 'C header', 'kindCPP' : 'C++', 'kindCPPHeader' : 'C++ header', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python', 'kindJava' : 'Java', 'kindRuby' : 'Ruby', 'kindPerl' : 'Perl', 'kindSQL' : 'SQL', 'kindXML' : 'XML', 'kindAWK' : 'AWK', 'kindCSV' : 'CSV', 'kindDOCBOOK' : 'Docbook XML', // images 'kindImage' : 'Bild', 'kindBMP' : 'BMP', 'kindJPEG' : 'JPEG', 'kindGIF' : 'GIF', 'kindPNG' : 'PNG', 'kindTIFF' : 'TIFF', 'kindTGA' : 'TGA', 'kindPSD' : 'Adobe Photoshop', 'kindXBITMAP' : 'X bitmap', 'kindPXM' : 'Pixelmator', // media 'kindAudio' : 'Audio media', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video media', 'kindVideoDV' : 'DV movie', 'kindVideoMPEG' : 'MPEG movie', 'kindVideoMPEG4' : 'MPEG-4 movie', 'kindVideoAVI' : 'AVI movie', 'kindVideoMOV' : 'Quick Time movie', 'kindVideoWM' : 'Windows Media movie', 'kindVideoFlash' : 'Flash movie', 'kindVideoMKV' : 'Matroska movie', 'kindVideoOGG' : 'Ogg movie' } }; })); application/library/js/i18n/elfinder.de.js000064400000103274147577724760014464 0ustar00/** * German Translation / Deutsche Übersetzung * @author JPG & Mace * @author tora60 from pragmaMx.org * @author Timo-Linde * @author OSWorX * @author Maximilian Schwarz * @author SF Webdesign * @version 2019-12-13 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.de = { translator : 'JPG & Mace <dev@flying-datacenter.de>, tora60 from pragmaMx.org, Timo-Linde <info@timo-linde.de>, OSWorX <info@osworx.net>, Maximilian Schwarz <info@deefuse.de>, SF Webdesign <webdesign@stephan-frank.de>', language : 'Deutsch', direction : 'ltr', dateFormat : 'j. F Y H:i', // 3. MĂ€rz 2020 14:58 fancyDateFormat : '$1 H:i', // will produce smth like: Today 12:25 PM nonameDateFormat : 'ymd-His', // to apply if upload file is noname: 120513172700 messages : { /********************************** errors **********************************/ 'error' : 'Fehler', 'errUnknown' : 'Unbekannter Fehler.', 'errUnknownCmd' : 'Unbekannter Befehl.', 'errJqui' : 'UngĂŒltige jQuery UI-Konfiguration. Die Komponenten Selectable, Draggable und Droppable mĂŒssen inkludiert sein.', 'errNode' : 'FĂŒr elFinder muss das DOM-Element erstellt werden.', 'errURL' : 'UngĂŒltige elFinder-Konfiguration! Die URL-Option ist nicht gesetzt.', 'errAccess' : 'Zugriff verweigert.', 'errConnect' : 'Verbindung zum Backend fehlgeschlagen.', 'errAbort' : 'Verbindung abgebrochen.', 'errTimeout' : 'ZeitĂŒberschreitung der Verbindung.', 'errNotFound' : 'Backend nicht gefunden.', 'errResponse' : 'UngĂŒltige Backend-Antwort.', 'errConf' : 'UngĂŒltige Backend-Konfiguration.', 'errJSON' : 'PHP JSON-Modul nicht vorhanden.', 'errNoVolumes' : 'Keine lesbaren Laufwerke vorhanden.', 'errCmdParams' : 'UngĂŒltige Parameter fĂŒr Befehl: "$1".', 'errDataNotJSON' : 'Daten nicht im JSON-Format.', 'errDataEmpty' : 'Daten sind leer.', 'errCmdReq' : 'Backend-Anfrage benötigt Befehl.', 'errOpen' : 'Kann "$1" nicht öffnen.', 'errNotFolder' : 'Objekt ist kein Ordner.', 'errNotFile' : 'Objekt ist keine Datei.', 'errRead' : 'Kann "$1" nicht öffnen.', 'errWrite' : 'Kann nicht in "$1" schreiben.', 'errPerm' : 'Zugriff verweigert.', 'errLocked' : '"$1" ist gesperrt und kann nicht umbenannt, verschoben oder gelöscht werden.', 'errExists' : 'Die Datei "$1" existiert bereits.', 'errInvName' : 'UngĂŒltiger Dateiname.', 'errInvDirname' : 'UngĂŒltiger Ordnername.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Ordner nicht gefunden.', 'errFileNotFound' : 'Datei nicht gefunden.', 'errTrgFolderNotFound' : 'Zielordner "$1" nicht gefunden.', 'errPopup' : 'Der Browser hat das Pop-Up-Fenster unterbunden. Um die Datei zu öffnen, Pop-Ups in den Browsereinstellungen aktivieren.', 'errMkdir' : 'Kann Ordner "$1" nicht erstellen.', 'errMkfile' : 'Kann Datei "$1" nicht erstellen.', 'errRename' : 'Kann "$1" nicht umbenennen.', 'errCopyFrom' : 'Kopieren von Dateien von "$1" nicht erlaubt.', 'errCopyTo' : 'Kopieren von Dateien nach "$1" nicht erlaubt.', 'errMkOutLink' : 'Der Link kann nicht außerhalb der Partition fĂŒhren.', // from v2.1 added 03.10.2015 'errUpload' : 'Upload-Fehler.', // old name - errUploadCommon 'errUploadFile' : 'Kann "$1" nicht hochladen.', // old name - errUpload 'errUploadNoFiles' : 'Keine Dateien zum Hochladen gefunden.', 'errUploadTotalSize' : 'GesamtgrĂ¶ĂŸe ĂŒberschreitet die MaximalgrĂ¶ĂŸe.', // old name - errMaxSize 'errUploadFileSize' : 'Die Datei ĂŒberschreitet die MaximalgrĂ¶ĂŸe.', // old name - errFileMaxSize 'errUploadMime' : 'Dateiart (mime) nicht zulĂ€ssig.', 'errUploadTransfer' : '"$1" Übertragungsfehler.', 'errUploadTemp' : 'Kann temporĂ€re Datei nicht erstellen.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Das Objekt "$1" existiert bereits an dieser Stelle und kann nicht durch ein Objekt eines anderen Typs ersetzt werden.', // new 'errReplace' : 'Kann "$1" nicht ersetzen.', 'errSave' : 'Kann "$1" nicht speichern.', 'errCopy' : 'Kann "$1" nicht kopieren.', 'errMove' : 'Kann "$1" nicht verschieben.', 'errCopyInItself' : '"$1" kann sich nicht in sich selbst kopieren.', 'errRm' : 'Kann "$1" nicht entfernen.', 'errTrash' : 'Kann Objekt nicht in MĂŒlleimer legen.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Kann Quelldatei(en) nicht entfernen.', 'errExtract' : 'Kann "$1" nicht entpacken.', 'errArchive' : 'Archiv konnte nicht erstellt werden.', 'errArcType' : 'Archivtyp nicht untersĂŒtzt.', 'errNoArchive' : 'Bei der Datei handelt es sich nicht um ein Archiv, oder die Archivart wird nicht unterstĂŒtzt.', 'errCmdNoSupport' : 'Das Backend unterstĂŒtzt diesen Befehl nicht.', 'errReplByChild' : 'Der Ordner "$1" kann nicht durch etwas ersetzt werden, das ihn selbst enthĂ€lt.', 'errArcSymlinks' : 'Aus SicherheitsgrĂŒnden ist es verboten, ein Archiv mit symbolischen Links zu extrahieren.', // edited 24.06.2012 'errArcMaxSize' : 'Die Archivdateien ĂŒbersteigen die maximal erlaubte GrĂ¶ĂŸe.', 'errResize' : 'GrĂ¶ĂŸe von "$1" kann nicht geĂ€ndert werden.', 'errResizeDegree' : 'UngĂŒltiger Rotationswert.', // added 7.3.2013 'errResizeRotate' : 'Bild konnte nicht gedreht werden.', // added 7.3.2013 'errResizeSize' : 'UngĂŒltige BildgrĂ¶ĂŸe.', // added 7.3.2013 'errResizeNoChange' : 'Bildmaße nicht geĂ€ndert.', // added 7.3.2013 'errUsupportType' : 'Nicht unterstĂŒtzte Dateiart.', 'errNotUTF8Content' : 'Die Datei "$1" ist nicht im UTF-8-Format und kann nicht bearbeitet werden.', // added 9.11.2011 'errNetMount' : 'Verbindung mit "$1" nicht möglich.', // added 17.04.2012 'errNetMountNoDriver' : 'Nicht unterstĂŒtztes Protokoll.', // added 17.04.2012 'errNetMountFailed' : 'Verbindung fehlgeschlagen.', // added 17.04.2012 'errNetMountHostReq' : 'Host benötigt.', // added 18.04.2012 'errSessionExpires' : 'Diese Sitzung ist aufgrund von InaktivitĂ€t abgelaufen.', 'errCreatingTempDir' : 'Erstellung des temporĂ€ren Ordners nicht möglich: "$1"', 'errFtpDownloadFile' : 'Download der Datei ĂŒber FTP nicht möglich: "$1"', 'errFtpUploadFile' : 'Upload der Datei zu FTP nicht möglich: "$1"', 'errFtpMkdir' : 'Erstellung des Remote-Ordners mit FTP nicht möglich: "$1"', 'errArchiveExec' : 'Fehler beim Archivieren der Dateien: "$1"', 'errExtractExec' : 'Fehler beim Extrahieren der Dateien: "$1"', 'errNetUnMount' : 'Kann nicht ausgehĂ€ngt werden.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Kann nicht zu UTF-8 konvertiert werden.', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Ordner kann nich hochladen werden, eventuell mit Google Chrome versuchen.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'ZeitĂŒberschreitung wĂ€hrend der Suche nach "$1". Suchergebnis ist unvollstĂ€ndig.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Erneutes Anmelden ist erforderlich.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Die maximale Anzahl auswĂ€hlbarer Elemente ist $1', // from v2.1.17 added 17.10.2016 'errRestore' : 'Datei konnte nicht aus MĂŒlleimer wieder hergestellt werden bzw. Ziel fĂŒr Wiederherstellung nicht gefunden.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Kein Editor fĂŒr diesen Dateityp gefunden.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Ein serverseitiger Fehler trat auf.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Konnte Ordner "$1" nicht Leeren.', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Es sind noch $1 weitere Fehler.', // from v2.1.44 added 13.12.2019 /******************************* commands names ********************************/ 'cmdarchive' : 'Archiv erstellen', 'cmdback' : 'ZurĂŒck', 'cmdcopy' : 'Kopieren', 'cmdcut' : 'Ausschneiden', 'cmddownload' : 'Herunterladen', 'cmdduplicate' : 'Duplizieren', 'cmdedit' : 'Datei bearbeiten', 'cmdextract' : 'Archiv entpacken', 'cmdforward' : 'VorwĂ€rts', 'cmdgetfile' : 'Datei auswĂ€hlen', 'cmdhelp' : 'Über diese Software', 'cmdhome' : 'Startordner', 'cmdinfo' : 'Informationen', 'cmdmkdir' : 'Neuer Ordner', 'cmdmkdirin' : 'In neuen Ordner', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Neuer Datei', 'cmdopen' : 'Öffnen', 'cmdpaste' : 'EinfĂŒgen', 'cmdquicklook' : 'Vorschau', 'cmdreload' : 'Aktualisieren', 'cmdrename' : 'Umbenennen', 'cmdrm' : 'Löschen', 'cmdtrash' : 'In den MĂŒlleimer legen', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Wiederherstellen', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Suchen', 'cmdup' : 'In ĂŒbergeordneten Ordner wechseln', 'cmdupload' : 'Datei hochladen', 'cmdview' : 'Ansehen', 'cmdresize' : 'GrĂ¶ĂŸe Ă€ndern & drehen', 'cmdsort' : 'Sortieren', 'cmdnetmount' : 'Verbinde mit Netzwerkspeicher', // added 18.04.2012 'cmdnetunmount': 'AbhĂ€ngen', // from v2.1 added 30.04.2012 'cmdplaces' : 'Favoriten', // added 28.12.2014 'cmdchmod' : 'Berechtigung Ă€ndern', // from v2.1 added 20.6.2015 'cmdopendir' : 'Einen Ordner öffnen', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Spaltenbreite zurĂŒcksetzen', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Vollbild', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Verschieben', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Ordner Leeren', // from v2.1.25 added 22.06.2017 'cmdundo' : 'RĂŒckgĂ€ngig', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Wiederholen', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Einstellungen', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Alle auswĂ€hlen', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Keine auswĂ€hlen', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Auswahl rĂŒckgĂ€ngig machen', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'In neuem Fenster öffnen', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Verstecken', // from v2.1.41 added 13.12.2019 /*********************************** buttons ***********************************/ 'btnClose' : 'Schließen', 'btnSave' : 'Speichern', 'btnRm' : 'Entfernen', 'btnApply' : 'Anwenden', 'btnCancel' : 'Abbrechen', 'btnNo' : 'Nein', 'btnYes' : 'Ja', 'btnMount' : 'Verbinden', // added 18.04.2012 'btnApprove': 'Gehe zu $1 und genehmige', // from v2.1 added 26.04.2012 'btnUnmount': 'Auswerfen', // from v2.1 added 30.04.2012 'btnConv' : 'Konvertieren', // from v2.1 added 08.04.2014 'btnCwd' : 'Arbeitspfad', // from v2.1 added 22.5.2015 'btnVolume' : 'Partition', // from v2.1 added 22.5.2015 'btnAll' : 'Alle', // from v2.1 added 22.5.2015 'btnMime' : 'MIME-Typ', // from v2.1 added 22.5.2015 'btnFileName':'Dateiname', // from v2.1 added 22.5.2015 'btnSaveClose': 'Speichern & Schließen', // from v2.1 added 12.6.2015 'btnBackup' : 'Sicherung', // fromv2.1 added 28.11.2015 'btnRename' : 'Umbenennen', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Alle Umbenennen', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'ZurĂŒck ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Weiter ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Speichern als', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Öffne Ordner', 'ntffile' : 'Öffne Datei', 'ntfreload' : 'Ordnerinhalt neu', 'ntfmkdir' : 'Erstelle Ordner', 'ntfmkfile' : 'Erstelle Dateien', 'ntfrm' : 'Lösche Dateien', 'ntfcopy' : 'Kopiere Dateien', 'ntfmove' : 'Verschiebe Dateien', 'ntfprepare' : 'Kopiervorgang initialisieren', 'ntfrename' : 'Benenne Dateien um', 'ntfupload' : 'Dateien hochladen', 'ntfdownload' : 'Dateien herunterladen', 'ntfsave' : 'Speichere Datei', 'ntfarchive' : 'Erstelle Archiv', 'ntfextract' : 'Entpacke Dateien', 'ntfsearch' : 'Suche', 'ntfresize' : 'BildgrĂ¶ĂŸen Ă€ndern', 'ntfsmth' : 'Bin beschĂ€ftigt ..', 'ntfloadimg' : 'Lade Bild ..', 'ntfnetmount' : 'Mit Netzwerkspeicher verbinden', // added 18.04.2012 'ntfnetunmount': 'Netzwerkspeicher auswerfen', // from v2.1 added 30.04.2012 'ntfdim' : 'BildgrĂ¶ĂŸe erfassen', // added 20.05.2013 'ntfreaddir' : 'Lese Ordnerinformationen', // from v2.1 added 01.07.2013 'ntfurl' : 'Hole URL von Link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Ändere Dateiberechtigungen', // from v2.1 added 20.6.2015 'ntfpreupload': 'Upload-Dateinamen ĂŒberprĂŒfen', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Erstelle Datei zum Download', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Beziehe Pfad Informationen', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Upload lĂ€uft', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Bewege in den MĂŒlleimer', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Wiederherstellung aus MĂŒlleimer', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'PrĂŒfe Zielordner', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Vorherige Operation rĂŒckgĂ€ngig machen', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Wiederherstellen', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'ÜberprĂŒfe Inhalte', // from v2.1.41 added 13.12.2019 /*********************************** volumes *********************************/ 'volume_Trash' : 'MĂŒlleimer', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'unbekannt', 'Today' : 'Heute', 'Yesterday' : 'Gestern', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'MĂ€r', 'msApr' : 'Apr', 'msMay' : 'Mai', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dez', 'January' : 'Januar', 'February' : 'Februar', 'March' : 'MĂ€rz', 'April' : 'April', 'May' : 'Mai', 'June' : 'Juni', 'July' : 'Juli', 'August' : 'August', 'September' : 'September', 'October' : 'Oktober', 'November' : 'November', 'December' : 'Dezember', 'Sunday' : 'Sonntag', 'Monday' : 'Montag', 'Tuesday' : 'Dienstag', 'Wednesday' : 'Mittwoch', 'Thursday' : 'Donnerstag', 'Friday' : 'Freitag', 'Saturday' : 'Samstag', 'Sun' : 'So', 'Mon' : 'Mo', 'Tue' : 'Di', 'Wed' : 'Mi', 'Thu' : 'Do', 'Fri' : 'Fr', 'Sat' : 'Sa', /******************************** sort variants ********************************/ 'sortname' : 'nach Name', 'sortkind' : 'nach Art', 'sortsize' : 'nach GrĂ¶ĂŸe', 'sortdate' : 'nach Datum', 'sortFoldersFirst' : 'Ordner zuerst', 'sortperm' : 'nach Berechtigung', // from v2.1.13 added 13.06.2016 'sortmode' : 'nach Modus', // from v2.1.13 added 13.06.2016 'sortowner' : 'nach Besitzer', // from v2.1.13 added 13.06.2016 'sortgroup' : 'nach Gruppe', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'auch Baumansicht', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'Neues Textdokument (.txt)', // added 10.11.2015 'untitled folder' : 'Neuer Ordner', // added 10.11.2015 'Archive' : 'Neues Archiv', // from v2.1 added 10.11.2015 'untitled file' : 'Neue Datei $1', // from v2.1.41 added 13.12.2019 'extentionfile' : '$1: Datei', // from v2.1.41 added 13.12.2019 'extentiontype' : '$1: $2', // from v2.1.43 added 13.12.2018 /********************************** messages **********************************/ 'confirmReq' : 'BestĂ€tigung benötigt', 'confirmRm' : 'Sollen die Dateien gelöscht werden?
      Vorgang ist endgĂŒltig!', 'confirmRepl' : 'Datei ersetzen?', 'confirmRest' : 'Vorhandenes Element durch das Element aus MĂŒlleimer ersetzen?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Nicht UTF-8 kodiert
      Zu UTF-8 konvertieren?
      Inhalte werden zu UTF-8 konvertiert bei Speicherung.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Die Zeichencodierung dieser Datei konnte nicht erkannt werden. Es muss vorĂŒbergehend in UTF-8 zur Bearbeitung konvertiert werden.
      Bitte eine Zeichenkodierung dieser Datei auswÀhlen.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Die Datei wurde geÀndert.
      Änderungen gehen verloren wenn nicht gespeichert wird.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Sicher diese Elemente in den MĂŒlleimer verschieben?', // from v2.1.24 added 29.4.2017 'confirmMove' : 'Sicher alle Elemente nach "$1" verschieben?', // from v2.1.50 added 13.12.2019 'apllyAll' : 'Alles bestĂ€tigen', 'name' : 'Name', 'size' : 'GrĂ¶ĂŸe', 'perms' : 'Berechtigungen', 'modify' : 'GeĂ€ndert', 'kind' : 'Typ', 'read' : 'Lesen', 'write' : 'Schreiben', 'noaccess' : 'Kein Zugriff', 'and' : 'und', 'unknown' : 'unbekannt', 'selectall' : 'Alle Dateien auswĂ€hlen', 'selectfiles' : 'Dateien auswĂ€hlen', 'selectffile' : 'Erste Datei auswĂ€hlen', 'selectlfile' : 'Letzte Datei auswĂ€hlen', 'viewlist' : 'Spaltenansicht', 'viewicons' : 'Symbolansicht', 'viewSmall' : 'Kleine Icons', // from v2.1.39 added 13.12.2019 'viewMedium' : 'Medium Icons', // from v2.1.39 added 13.12.2019 'viewLarge' : 'Große Icons', // from v2.1.39 added 13.12.2019 'viewExtraLarge' : 'Extragroße Icons', // from v2.1.39 added 13.12.2019 'places' : 'Favoriten', 'calc' : 'Berechne', 'path' : 'Pfad', 'aliasfor' : 'VerknĂŒpfung zu', 'locked' : 'Gesperrt', 'dim' : 'BildgrĂ¶ĂŸe', 'files' : 'Dateien', 'folders' : 'Ordner', 'items' : 'Objekte', 'yes' : 'ja', 'no' : 'nein', 'link' : 'Link', 'searcresult' : 'Suchergebnisse', 'selected' : 'Objekte ausgewĂ€hlt', 'about' : 'Über', 'shortcuts' : 'Tastenkombinationen', 'help' : 'Hilfe', 'webfm' : 'Web-Dateiverwaltung', 'ver' : 'Version', 'protocolver' : 'Protokoll-Version', 'homepage' : 'Projekt-Webseite', 'docs' : 'Dokumentation', 'github' : 'Forke uns auf Github', 'twitter' : 'Folge uns auf twitter', 'facebook' : 'Begleite uns auf facebook', 'team' : 'Team', 'chiefdev' : 'Chefentwickler', 'developer' : 'Entwickler', 'contributor' : 'UnterstĂŒtzer', 'maintainer' : 'Maintainer', 'translator' : 'Übersetzer', 'icons' : 'Icons', 'dontforget' : 'und vergiss nicht .. morgen ist auch noch ein Tag ..', 'shortcutsof' : 'Tastenkombinationen deaktiviert', 'dropFiles' : 'Dateien hier ablegen', 'or' : 'oder', 'selectForUpload' : 'Dateien zum Upload auswĂ€hlen', 'moveFiles' : 'Dateien verschieben', 'copyFiles' : 'Dateien kopieren', 'restoreFiles' : 'Elemente wiederherstellen', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Lösche von Favoriten', 'aspectRatio' : 'SeitenverhĂ€ltnis', 'scale' : 'Maßstab', 'width' : 'Breite', 'height' : 'Höhe', 'resize' : 'GrĂ¶ĂŸe Ă€ndern', 'crop' : 'Zuschneiden', 'rotate' : 'Drehen', 'rotate-cw' : 'Drehe 90° im Uhrzeigersinn', 'rotate-ccw' : 'Drehe 90° gegen Uhrzeigersinn', 'degree' : '°', 'netMountDialogTitle' : 'verbinde Netzwerkspeicher', // added 18.04.2012 'protocol' : 'Protokoll', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Benutzer', // added 18.04.2012 'pass' : 'Passwort', // added 18.04.2012 'confirmUnmount' : 'Soll "$1" ausgehĂ€ngt werden', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Dateien in den Browser ziehen', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Dateien hier loslassen', // from v2.1 added 07.04.2014 'encoding' : 'Kodierung', // from v2.1 added 19.12.2014 'locale' : 'Lokal', // from v2.1 added 19.12.2014 'searchTarget' : 'Ziel: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Suche nach MIME-Typ', // from v2.1 added 22.5.2015 'owner' : 'Besitzer', // from v2.1 added 20.6.2015 'group' : 'Gruppe', // from v2.1 added 20.6.2015 'other' : 'Andere', // from v2.1 added 20.6.2015 'execute' : 'AusfĂŒhren', // from v2.1 added 20.6.2015 'perm' : 'Berechtigung', // from v2.1 added 20.6.2015 'mode' : 'Modus', // from v2.1 added 20.6.2015 'emptyFolder' : 'Der Ordner ist leer', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Der Ordner ist leer\\A Elemente durch Ziehen hinzufĂŒgen', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Der Ordner ist leer\\A Elemente durch langes Tippen hinzufĂŒgen', // from v2.1.6 added 30.12.2015 'quality' : 'QualitĂ€t', // from v2.1.6 added 5.1.2016 'autoSync' : 'Automatische Synchronisation', // from v2.1.6 added 10.1.2016 'moveUp' : 'Nach oben bewegen', // from v2.1.6 added 18.1.2016 'getLink' : 'URL-Link holen', // from v2.1.7 added 9.2.2016 'selectedItems' : 'AusgewĂ€hlte Objekte ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Ordner-ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Offline-Zugriff erlauben', // from v2.1.10 added 3.25.2016 'reAuth' : 'Erneut anmelden', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Wird geladen...', // from v2.1.12 added 4.26.2016 'openMulti' : 'mehrere Dateien öffnen', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Es wird versucht die $1 Dateien zu öffnen .. sicher im Browser öffnen?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Kein Suchergebnis', // from v2.1.12 added 5.16.2016 'editingFile' : 'Datei wird bearbeitet.', // from v2.1.13 added 6.3.2016 'hasSelected' : '$1 Objekt(e) ausgewĂ€hlt.', // from v2.1.13 added 6.3.2016 'hasClipboard' : '$1 Objekte im Clipboard.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Inkrementelle Suche bezieht sich nur auf die aktuelle Ansicht.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Wiederherstellen', // from v2.1.15 added 3.8.2016 'complete' : '$1 abgeschlossen', // from v2.1.15 added 21.8.2016 'contextmenu' : 'KontextmenĂŒ', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Seite umblĂ€ttern', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume-Rootverzeichnisse', // from v2.1.16 added 16.9.2016 'reset' : 'Neustart', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Hintergrund Farbe', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Farbauswahl', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Raster', // from v2.1.16 added 4.10.2016 'enabled' : 'Ein', // from v2.1.16 added 4.10.2016 'disabled' : 'Aus', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Keine Ergebnisse in der aktuellen Anzeige', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Die Ergebnisse der ersten Buchstabensuche sind in der aktuellen Ansicht leer.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Text Bezeichnung', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 Minuten ĂŒbrig', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Wiedereröffnen mit ausgewĂ€hlter Codierung', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Speichern mit der gewĂ€hlten Kodierung', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Verzeichnis auswĂ€hlen', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Erster Buchstabe suche', // from v2.1.23 added 24.3.2017 'presets' : 'Voreinstellungen', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Zu viele Elemente auf einmal fĂŒr den MĂŒlleimer.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Textbereich', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Leere Ordner "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Es befinden sich keine Elemente im Ordner "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Einstellungen', // from v2.1.26 added 28.6.2017 'language' : 'Spracheinstellungen', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialisiere die Einstellungen, welche in diesem Browser gespeichert sind', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Toolbareinstellung', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 Zeichen ĂŒbrig', // from v2.1.29 added 30.8.2017 'sum' : 'Summe', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'UngefĂ€hre DateigrĂ¶ĂŸe', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Fokussierung auf das Element Dialog mit Mouseover', // from v2.1.30 added 2.11.2017 'select' : 'AuswĂ€hlen', // from v2.1.30 added 23.11.2017 'selectAction' : 'Aktion bei der Auswahl der Datei', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Öffnen mit dem zuletzt verwendeten Editor', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Auswahl umkehren', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Sicher $1 ausgewĂ€hlte Elemente in $2 umbenennen?
      RĂŒckgĂ€ngig nicht möglich!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Stapelumbenennung', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Nummer', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Vorzeichen hinzufĂŒgen', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Nachzeichen hinzufĂŒgen', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Erweiterung Ă€ndern', // from v2.1.31 added 8.12.2017 'columnPref' : 'Spalteneinstellungen (Listenansicht)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Alle Änderungen werden sofort im Archiv angewendet.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Alle Änderungen werden nicht angewendet bis dieses Volume entfernt wird.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Die folgenden DatentrĂ€ger, die auf diesem DatentrĂ€ger eingehĂ€ngt sind, werden ebenfalls ausgehĂ€ngt. Sicher dass alle aushĂ€ngt werden sollen?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Auswahl Info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Datei-Hash-Algorithmen', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info-Elemente (Auswahl-Info-Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'DrĂŒcken Sie erneut, um zu beenden.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Symbolleiste', // from v2.1.38 added 4.4.2018 'workspace' : 'Arbeitsplatz', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'Alle', // from v2.1.38 added 4.4.2018 'iconSize' : 'IcongrĂ¶ĂŸe (Symbolansicht)', // form v2.1.39 added 7.5.2018 'editorMaximized' : 'Öffne Editorfenster in voller GrĂ¶ĂŸe', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Aktuell keine API zur Bearbeitung verfĂŒgbar, bitte auf Webseite bearbeiten', //from v2.1.40 added 13.12.2019 'editorConvNeedUpload' : 'Um zu speichern nach der Bearbeitung Element entweder mit URL hochladen oder mit herunter geladener Datei', // from v2.1.40 added 13.12.2019 'convertOn' : 'Bearbeiten auf Seite $1', // from v2.1.40 added 13.12.2019 'integrations' : 'Integrationen', // from v2.1.40 added 13.12.2019 'integrationWith' : 'Diese Software hat folgende externe Dienste integriert. Vor Anwendung bitte die jeweiligen Nutzungsbedingungen usw. beachten', // from v2.1.40 added 13.12.2019 'showHidden' : 'Zeige versteckte Elemente', // from v2.1.41 added 13.12.2019 'hideHidden' : 'Verberge versteckte Elemente', // from v2.1.41 added 13.12.2019 'toggleHidden' : 'Zeige/Verberge versteckte Elemente', // from v2.1.41 added 13.12.2019 'makefileTypes' : 'Dateiarten bei "Neue Datei" aktivieren', // from v2.1.41 added 13.12.2019 'typeOfTextfile' : 'Art der Textdatei', // from v2.1.41 added 13.12.2019 'add' : 'Neu', // from v2.1.41 added 13.12.2019 'theme' : 'Thema', // from v2.1.43 added 13.12.2019 'default' : 'Standard', // from v2.1.43 added 13.12.2019 'description' : 'Beschreibung', // from v2.1.43 added 13.12.2019 'website' : 'Webseite', // from v2.1.43 added 13.12.2019 'author' : 'Autor', // from v2.1.43 added 13.12.2019 'email' : 'Email', // from v2.1.43 added 13.12.2019 'license' : 'Lizenz', // from v2.1.43 added 13.12.2019 'exportToSave' : 'Dieses Element kann nicht gespeichert werden. Um Änderungen nicht zu verlieren, muss es auf den lokalen PC exportiert werden', // from v2.1.44 added 13.12.2019 'dblclickToSelect': 'Doppelt auf Datei klicken um auszuwĂ€hlen', // from v2.1.47 added 13.12.2019 'useFullscreen' : 'Gesamter Bildschirm', // from v2.1.47 added 13.12.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Unbekannt', 'kindRoot' : 'Stammverzeichnis', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Ordner', 'kindSelects' : 'Auswahlkriterien', // from v2.1.29 added 29.8.2017 'kindAlias' : 'VerknĂŒpfung', 'kindAliasBroken' : 'Defekte VerknĂŒpfung', // applications 'kindApp' : 'Programm', 'kindPostscript' : 'Postscript-Dokument', 'kindMsOffice' : 'MS Office-Dokument', 'kindMsWord' : 'MS Word-Dokument', 'kindMsExcel' : 'MS Excel-Dokument', 'kindMsPP' : 'MS Powerpoint-PrĂ€sentation', 'kindOO' : 'Open Office-Dokument', 'kindAppFlash' : 'Flash', 'kindPDF' : 'Portables Dokumentenformat (PDF)', 'kindTorrent' : 'Bittorrent-Datei', 'kind7z' : '7z-Archiv', 'kindTAR' : 'TAR-Archiv', 'kindGZIP' : 'GZIP-Archiv', 'kindBZIP' : 'BZIP-Archiv', 'kindXZ' : 'XZ-Archiv', 'kindZIP' : 'ZIP-Archiv', 'kindRAR' : 'RAR-Archiv', 'kindJAR' : 'Java JAR-Datei', 'kindTTF' : 'True Type-Schrift', 'kindOTF' : 'Open Type-Schrift', 'kindRPM' : 'RPM-Paket', // texts 'kindText' : 'Text-Dokument', 'kindTextPlain' : 'Text-Dokument', 'kindPHP' : 'PHP-Quelltext', 'kindCSS' : 'CSS Stilvorlage', 'kindHTML' : 'HTML-Dokument', 'kindJS' : 'Javascript-Quelltext', 'kindRTF' : 'Formatierte Textdatei', 'kindC' : 'C-Quelltext', 'kindCHeader' : 'C Header-Quelltext', 'kindCPP' : 'C++ Quelltext', 'kindCPPHeader' : 'C++ Header-Quelltext', 'kindShell' : 'Unix-Shell-Skript', 'kindPython' : 'Python-Quelltext', 'kindJava' : 'Java-Quelltext', 'kindRuby' : 'Ruby-Quelltext', 'kindPerl' : 'Perl Script', 'kindSQL' : 'SQL-Quelltext', 'kindXML' : 'XML-Dokument', 'kindAWK' : 'AWK-Quelltext', 'kindCSV' : 'Kommagetrennte Daten', 'kindDOCBOOK' : 'Docbook XML-Dokument', 'kindMarkdown' : 'Markdown-Text', // added 20.7.2015 // images 'kindImage' : 'Bild', 'kindBMP' : 'Bitmap-Bild', 'kindJPEG' : 'JPEG-Bild', 'kindGIF' : 'GIF-Bild', 'kindPNG' : 'PNG-Bild', 'kindTIFF' : 'TIFF-Bild', 'kindTGA' : 'TGA-Bild', 'kindPSD' : 'Adobe Photoshop-Dokument', 'kindXBITMAP' : 'X Bitmap-Bild', 'kindPXM' : 'Pixelmator-Bild', // media 'kindAudio' : 'Audiodatei', 'kindAudioMPEG' : 'MPEG Audio', 'kindAudioMPEG4' : 'MPEG-4 Audio', 'kindAudioMIDI' : 'MIDI Audio', 'kindAudioOGG' : 'Ogg Vorbis Audio', 'kindAudioWAV' : 'WAV Audio', 'AudioPlaylist' : 'MP3-Playlist', 'kindVideo' : 'Videodatei', 'kindVideoDV' : 'DV Film', 'kindVideoMPEG' : 'MPEG Film', 'kindVideoMPEG4' : 'MPEG4 Film', 'kindVideoAVI' : 'AVI Film', 'kindVideoMOV' : 'QuickTime Film', 'kindVideoWM' : 'Windows Media Film', 'kindVideoFlash' : 'Flash Film', 'kindVideoMKV' : 'Matroska Film', 'kindVideoOGG' : 'Ogg Film' } }; })); application/library/js/i18n/elfinder.ug_CN.js000064400000050160147577724760015062 0ustar00/** * Uyghur translation * @author Alim.Boyaq * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.ug_CN = { translator : 'ŰȘÛ•Ű±ŰŹÙ‰Ù…Û• قىلŰșۇچى: ŰŠÛ†ŰȘÙƒÛˆŰ± ŰšÙ‰ŰČ ŰŽÙ‰Ű±ÙƒÙ‰ŰȘى info@otkur.biz', language : 'ŰŠâ€Û‡ÙŠŰșÛ‡Ű±Ú†Û•', direction : 'rtl', dateFormat : 'Y-m-d H:i', fancyDateFormat : '$1 H:i', messages : { /********************************** errors **********************************/ 'error' : '۟ۧŰȘŰ§Ù„Ù‰Ù‚', 'errUnknown' : 'كۈŰȘÛˆÙ„Ù…Ù‰ÚŻÛ•Ù† ۟ۧŰȘŰ§Ù„Ù‰Ù‚ÙƒÛ•Ù†.', 'errUnknownCmd' : 'كۈŰȘÛˆÙ„Ù…Ù‰ÚŻÛ•Ù† ŰšÛ‡ÙŠŰ±Û‡Ù‚ÙƒÛ•Ù†.', 'errJqui' : 'jQuery UI ŰȘÛ•Ú­ŰŽÙ‰ÙƒÙ‰ ŰȘوŰș۱ۧ ŰšÙˆÙ„Ù…Ù‰ŰșŰ§Ù†. چوقۇم Selectableی draggableی droppabl Ù‚Ű§ŰȘŰ§Ű±Ù„Ù‰Ù‚ ŰšÛ†Ù„Û•ÙƒÙ„Û•Ű± ŰšÙˆÙ„Û‡ŰŽÙ‰ ÙƒÛŰ±Û•Ùƒ.', 'errNode' : 'elFinder DOM ŰŠÛÙ„Ù‰Ù…Ù‰Ù†ŰȘÙ„Ù‰Ű±Ù‰Ù†Ù‰ Ù‚Û‡Ű±Ű§Ù„Ù‰ŰŽÙ‰ ÙƒÛŰ±Û•Ùƒ.', 'errURL' : 'elFinder ŰȘÛ•Ú­ŰŽÙ‰ÙƒÙ‰ ŰȘوŰș۱ۧ ŰšÙˆÙ„Ù…Ù‰ŰșŰ§Ù†! URL ŰȘÛ•Ú­ŰŽÙ‰ÙƒÙ‰ يېŰČىلمىŰșŰ§Ù†.', 'errAccess' : 'ŰČÙ‰ÙŠŰ§Ű±Û•ŰȘ Ù‚Ù‰Ù„Ù‰ŰŽ Ú†Û•ÙƒÙ„Û•Ù†ÚŻÛ•Ù†.', 'errConnect' : 'ŰŠŰ§Ű±Ù‚Ű§ ŰłÛ‡ÙŸÙ‰Űșۧ ŰŠÛ‡Ù„Ű§ŰŽ مەŰșÙ„Û‡ÙŸ ŰšÙˆÙ„ŰŻÙ‰..', 'errAbort' : 'ŰŠŰ§Ű±Ù‚Ű§ ŰłÛ‡ÙŸÙ‰Űșۧ ŰȘÙˆŰźŰȘىŰȘÙ‰Ù„ŰŻÙ‰.', 'errTimeout' : 'ŰŠŰ§Ű±Ù‚Ű§ ŰłÛ‡ÙŸÙ‰Űșۧ ŰšÛ•Ù„ÚŻÙ‰Ù„Û•Ù†ÚŻÛ•Ù† Û‹Ű§Ù‚Ù‰ŰȘŰȘۧ ŰŠÛ‡Ù„Ù‰ÙŠŰ§Ù„Ù…Ù‰ŰŻÙ‰.', 'errNotFound' : 'ŰŠŰ§Ű±Ù‚Ű§ ŰłÛ‡ÙŸŰ§ ŰȘÛÙŸÙ‰Ù„Ù…Ù‰ŰŻÙ‰.', 'errResponse' : 'ŰŠŰ§Ű±Ù‚Ű§ ŰłÛ‡ÙŸÙ‰ŰŻÙ‰Ù† ŰȘوŰș۱ۧ ŰšÙˆÙ„Ù…Ù‰ŰșŰ§Ù† ŰŠÙ‰Ù†ÙƒŰ§Űł Ù‚Ű§ÙŠŰȘŰȘى.', 'errConf' : 'ŰŠŰ§Ű±Ù‚Ű§ ŰłÛ‡ÙŸŰ§ ŰȘÛ•Ú­ŰŽÙ‰ÙƒÙ‰ ŰȘوŰș۱ۧ ŰŠÛ•Ù…Û•Űł.', 'errJSON' : 'PHP JSON ŰšÛ†Ù„Ù‰ÙƒÙ‰ Ù‚Ű§Ú†Ù‰Ù„Ű§Ù†Ù…Ù‰ŰșŰ§Ù†.', 'errNoVolumes' : 'ŰŠÙˆÙ‚Û‡ŰŽÙ‚Ű§ ŰšÙˆÙ„Ù‰ŰŻÙ‰ŰșŰ§Ù† ÚŸÛˆŰŹŰŹÛ•ŰȘ ŰźŰ§Ù„ŰȘÙ‰ŰłÙ‰ يوق.', 'errCmdParams' : 'ÙŸŰ§Ű±Ű§Ù…ÛŰȘÙ‰Ű± ۟ۧŰȘۧی ŰšÛ‡ÙŠŰ±Û‡Ù‚: "$1".', 'errDataNotJSON' : 'ŰŠŰ§Ű±Ù‚Ű§ ŰłÛ‡ÙŸŰ§ Ù‚Ű§ÙŠŰȘÛ‡Ű±ŰșŰ§Ù† ŰłŰ§Ù†Ù„Ù‰Ù‚ Ù…Û•Ù„Û‡Ù…Ű§ŰȘ ŰȘوŰș۱ۧ ŰšÙˆÙ„ŰșŰ§Ù† JSON ŰŠÛ•Ù…Û•ŰłÙƒÛ•Ù†.', 'errDataEmpty' : 'ŰŠŰ§Ű±Ù‚Ű§ ŰłÛ‡ÙŸŰ§ Ù‚Ű§ÙŠŰȘÛ‡Ű±ŰșŰ§Ù† ŰłŰ§Ù†Ù„Ù‰Ù‚ Ù…Û•Ù„Û‡Ù…Ű§ŰȘ Ù‚Û‡Ű±Û‡Ù‚ÙƒÛ•Ù†.', 'errCmdReq' : 'ŰŠŰ§Ű±Ù‚Ű§ ŰłÛ‡ÙŸÙ‰ŰŻÙ‰ÙƒÙ‰ ŰšÛ‡ÙŠŰ±Û‡Ù‚Ù†Ù‰Ú­ ŰŠâ€ŰłÙ‰Ù…Ù‰ ŰȘÛ•Ù…Ù‰Ù†Ù„Ù‰Ù†Ù‰ŰŽÙ‰ ÙƒÛŰ±Û•Ùƒ.', 'errOpen' : '"$1"نى ŰŠŰ§Ú†Ű§Ù„Ù…Ù‰ŰŻÙ‰.', 'errNotFolder' : 'ŰŠÙˆŰšÙ‰ÙƒÙ‰ŰȘ Ù…Û‡Ù†ŰŻÛ•Ű±Ù‰ŰŹÛ• ŰŠÛ•Ù…Û•ŰłÙƒÛ•Ù†.', 'errNotFile' : 'ŰŠÙˆŰšÙ‰ÙƒÙ‰ŰȘ ÚŸÛˆŰŹŰŹÛ•ŰȘ ŰŠÛ•Ù…Û•ŰłÙƒÛ•Ù†.', 'errRead' : '"$1"نى ŰŠÙˆÙ‚Û‡ÙŠŰ§Ù„Ù…Ù‰ŰŻÙ‰.', 'errWrite' : '"$1"نى ÙŠŰ§ŰČŰ§Ù„Ù…Ù‰ŰŻÙ‰.', 'errPerm' : 'ڟوقۇق يوق.', 'errLocked' : '"$1" ŰȘŰ§Ù‚Ű§Ù„ŰșŰ§Ù†,ŰŠÛ†ŰČÚŻÛ•Ű±ŰȘÛ•Ù„Ù…Û•ÙŠŰłÙ‰ŰČ.', 'errExists' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘ ŰšŰ§Ű±ÙƒÛ•Ù†.', 'errInvName' : 'ŰȘوŰș۱ۧ ŰšÙˆÙ„Ù…Ù‰ŰșŰ§Ù† ÚŸÛˆŰŹŰŹÛ•ŰȘ Ù‚Ù‰ŰłÙ‚Û‡Ú† ŰŠÙ‰ŰłÙ…Ù‰.', 'errFolderNotFound' : 'ÚŸÛˆŰŹŰŹÛ•ŰȘ Ù‚Ù‰ŰłÙ‚Û‡Ú†Ù†Ù‰ ŰȘŰ§ÙŸŰ§Ù„Ù…Ù‰ŰŻÙ‰.', 'errFileNotFound' : 'ÚŸÛˆŰŹŰŹÛ•ŰȘنى ŰȘŰ§ÙŸŰ§Ù„Ù…Ù‰ŰŻÙ‰.', 'errTrgFolderNotFound' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘ Ù‚Ù‰ŰłÙ‚Û‡Ú†Ù†Ù‰ ŰȘŰ§ÙŸŰ§Ù„Ù…Ù‰ŰŻÙ‰.', 'errPopup' : 'ŰłÛ•ÙƒŰ±Û•ÙŸ Ú†Ù‰Ù‚Ù‚Ű§Ù† يېڭى ŰšÛ•ŰȘنى ŰȘÙˆŰ± ÙƒÛ†Ű±ÚŻÛˆÚ† ÙƒÛ†Ű±ŰłÛ•ŰȘÙ…Ù‰ŰŻÙ‰ŰŒ ŰŠÛˆŰłŰȘÙ‰ŰŻÙ‰ÙƒÙ‰ ŰŠÛ•ŰłÙƒÛ•Ű±ŰȘÙ‰ŰŽŰȘىن ŰȘÙˆŰ± ÙƒÛ†Ű±ÚŻÛˆÚ†Ù†Ù‰ ÙƒÛ†Ű±ŰłÙ‰ŰȘÙ‰ŰŽÙƒÛ• ŰȘÛ•Ú­ŰŽÛ•Ú­.', 'errMkdir' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘ Ù‚Ù‰ŰłÙ‚Û‡Ú†Ù†Ù‰ Ù‚Û‡Ű±Ű§Ù„Ù…Ù‰ŰŻÙ‰.', 'errMkfile' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘنى Ù‚Û‡Ű±Ű§Ù„Ù…Ù‰ŰŻÙ‰.', 'errRename' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘنىڭ ŰŠÙ‰ŰłÙ…Ù‰Ù†Ù‰ ÙŠÛÚ­Ù‰Ù„Ű§ŰŽ مەŰșÙ„Û‡ÙŸ ŰšÙˆÙ„ŰŻÙ‰.', 'errCopyFrom' : ' "$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ŰŠÙˆŰ±Û‡Ù†ŰŻÙ‰Ù† ÚŸÛˆŰŹŰŹÛ•ŰȘ ÙƒÛ†Ú†ÛˆŰ±ÛˆŰŽ Ú†Û•ÙƒÙ„Û•Ù†ÚŻÛ•Ù†.', 'errCopyTo' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ŰŠÙˆŰ±Û‡Ù†Űșۧ ÚŸÛˆŰŹŰŹÛ•ŰȘ ÙƒÛ†Ú†ÛˆŰ±ÛˆŰŽ Ú†Û•ÙƒÙ„Û•Ù†ÚŻÛ•Ù†.', 'errUpload' : 'ÙŠÛˆÙƒÙ„Û•ŰŽŰȘە ۟ۧŰȘŰ§Ù„Ù‰Ù‚ ÙƒÛ†Ű±ÛˆÙ„ŰŻÙ‰.', 'errUploadFile' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘنى ÙŠÛˆÙƒÙ„Û•ŰŽŰȘە ۟ۧŰȘŰ§Ù„Ù‰Ù‚ ÙƒÛ†Ű±ÛˆÙ„ŰŻÙ‰.', 'errUploadNoFiles' : 'يۈكلىمەكچى ŰšÙˆÙ„ŰșŰ§Ù† ÚŸÛˆŰŹŰŹÛ•ŰȘ ŰȘÛÙŸÙ‰Ù„Ù…Ù‰ŰŻÙ‰.', 'errUploadTotalSize' : 'ŰłŰ§Ù†Ù„Ù‰Ù‚ Ù…Û•Ù„Û‡Ù…Ű§ŰȘ چوڭلىقى Ú†Û•ÙƒÙ„Ù‰Ù…Ù‰ŰŻÙ‰Ù† ŰŠÛŰŽÙ‰ÙŸ كەŰȘكەن..', 'errUploadFileSize' : 'ÚŸÛˆŰŹŰŹÛ•ŰȘ چوڭلىقى Ú†Û•ÙƒÙ„Ù‰Ù…Ù‰ŰŻÙ‰Ù† ŰŠÛŰŽÙ‰ÙŸ كەŰȘكەن..', 'errUploadMime' : 'Ú†Û•ÙƒÙ„Û•Ù†ÚŻÛ•Ù† ÚŸÛˆŰŹŰŹÛ•ŰȘ ŰŽÛ•ÙƒÙ„Ù‰.', 'errUploadTransfer' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘنى ÙŠÙˆÙ„Ù„Ű§ŰŽŰȘۧ ۟ۧŰȘŰ§Ù„Ù‰Ù‚ ÙƒÛ†Ű±ÛˆÙ„ŰŻÙ‰.', 'errNotReplace' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘ ŰšŰ§Ű±ÙƒÛ•Ù†ŰŒ ŰŠŰ§Ù„Ù…Ű§ŰŽŰȘÛ‡Ű±Û‡ŰŽÙ‚Ű§ ŰšÙˆÙ„Ù…Ű§ÙŠŰŻÛ‡.', // new 'errReplace' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘنى ŰŠŰ§Ù„Ù…Ű§ŰŽŰȘÛ‡Ű±Û‡ŰŽ مەŰșÙ„Û‡ÙŸ ŰšÙˆÙ„ŰŻÙ‰.', 'errSave' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘنى ŰłŰ§Ù‚Ù„Ű§ŰŽ مەŰșÙ„Û‡ÙŸ ŰšÙˆÙ„ŰŻÙ‰.', 'errCopy' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘنى ÙƒÛ†Ú†ÛˆŰ±ÛˆŰŽ مەŰșÙ„Û‡ÙŸ ŰšÙˆÙ„ŰŻÙ‰.', 'errMove' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘنى يۆŰȘÙƒÛ•ŰŽ مەŰșÙ„Û‡ÙŸ ŰšÙˆÙ„ŰŻÙ‰.', 'errCopyInItself' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘنى ŰŠÛ•ŰłÙ„Ù‰ ŰŠÙˆŰ±Ù†Ù‰Űșۧ يۆŰȘÙƒÛ•ŰŽ مەŰșÙ„Û‡ÙŸ ŰšÙˆÙ„ŰŻÙ‰.', 'errRm' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘنى ŰŠÛ†Ú†ÛˆŰ±ÛˆŰŽ مەŰșÙ„Û‡ÙŸ ŰšÙˆÙ„ŰŻÙ‰.', 'errRmSrc' : 'ŰŠÛ•ŰłÙ„Ù‰ ÚŸÛˆŰŹŰŹÛ•ŰȘنى ŰŠÛ†Ú†ÛˆŰ±ÛˆŰŽ مەŰșÙ„Û‡ÙŸ ŰšÙˆÙ„ŰŻÙ‰.', 'errExtract' : ' "$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ Ù…Û•Ù„Û‡Ù…Ű§ŰȘŰȘىن ÚŸÛˆŰŹŰŹÛ•ŰȘ ŰŠŰ§ÙŠŰ±Ù‰ŰŽ مەŰșÙ„Û‡ÙŸ ŰšÙˆÙ„ŰŻÙ‰..', 'errArchive' : 'ÙŸÙ‰Ű±Ù‰ŰłÙ„Ű§Ù†ŰșŰ§Ù† ÚŸÛˆŰŹŰŹÛ•ŰȘ ÚŸŰ§ŰłÙ‰Ù„Ù„Ű§ŰŽ مەŰșÙ„Û‡ÙŸ ŰšÙˆÙ„ŰŻÙ‰.', 'errArcType' : 'ŰšÛ‡ ŰźÙ‰Ù„ ÙŸÙ‰Ű±Ù‰ŰłÙ„Ű§Ù†ŰșŰ§Ù† ÚŸÛˆŰŹŰŹÛ•ŰȘ ŰŽÛ•ÙƒÙ„Ù‰Ù†Ù‰ ŰłÙ‰ŰłŰȘÛÙ…Ű§ ŰšÙ‰Ű± ŰȘÛ•Ű±Û•ÙŸ Ù‚Ù‰Ù„Ű§Ù„Ù…Ù‰ŰŻÙ‰.', 'errNoArchive' : 'ÚŸÛˆŰŹŰŹÛ•ŰȘ ÙŸÙ‰Ű±Ù‰ŰłÙ„Ű§Ù†ŰșŰ§Ù† ÚŸÛˆŰŹŰŹÛ•ŰȘ ŰŠÛ•Ù…Û•ŰłŰŒ ÙŠŰ§ÙƒÙ‰ ŰȘوŰș۱ۧ ÙŸÙ‰Ű±Ù‰ŰłÙ„Ű§Ù†Ù…Ù‰ŰșŰ§Ù†.', 'errCmdNoSupport' : 'ŰšÛ‡ ŰźÙ‰Ù„ ŰšÛ‡ÙŠŰ±Û‡Ù‚Ù†Ù‰ ŰšÙ‰Ű± ŰȘÛ•Ű±Û•ÙŸ Ù‚Ù‰Ù„Ű§Ù„Ù…Ù‰ŰŻÙ‰.', 'errReplByChild' : '“$1” Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘ Ù‚Ù‰ŰłÙ‚Û‡Ú†Ù†Ù‰ ŰŠŰ§Ù„Ù…Ű§ŰŽÛ‡ŰȘÛ‡Ű±Û‡ŰŽÙ‚Ű§ ŰšÙˆÙ„Ù…Ű§ÙŠŰŻÛ‡.', 'errArcSymlinks' : 'ŰšÙ‰ŰźÛ•ŰȘÛ•Ű±Ù„Ù‰Ùƒ ŰŠÛˆÚ†ÛˆÙ† ŰšÛ‡ Ù…Û•ŰŽŰșÛ‡Ù„Ű§ŰȘ ŰŠÛ•Ù…Û•Ù„ŰŻÙ‰Ù† Ù‚Ű§Ù„ŰŻÛ‡Ű±Û‡Ù„ŰŻÙ‰..', 'errArcMaxSize' : 'ÙŸÙ‰Ű±Ù‰ŰłÙ„Ű§Ù†ŰșŰ§Ù† ÚŸÛˆŰŹŰŹÛ•ŰȘنىڭ چوڭلىقى Ú†Û•ÙƒÙ„Ù‰Ù…Ù‰ŰŻÙ‰Ù† ŰŠÛŰŽÙ‰ÙŸ كەنكەن.', 'errResize' : ' "$1" چوڭلۇقنى ŰȘÛ•Ú­ŰŽÛ•ŰŽÙƒÛ• ŰšÙˆÙ„Ù…Ù‰ŰŻÙ‰.', 'errResizeDegree' : 'ŰȘوŰș۱ۧ ŰšÙˆÙ„Ù…Ù‰ŰșŰ§Ù† ÙŸÙ‰Ù‚Ù‰Ű±Ù‰ŰȘÙ‰ŰŽ ÚŻÙ‰Ű±Ű§ŰŻÛ‡ŰłÙ‰', 'errResizeRotate' : 'Ű±Û•ŰłÙ‰Ù…Ù†Ù‰ ÙŸÙ‰Ù‚Ù‰Ű±Ù‰ŰȘÙ‰ŰŽÙ‚Ű§ ŰšÙˆÙ„Ù…Ù‰ŰŻÙ‰.', 'errResizeSize' : 'ŰȘوŰș۱ۧ ŰšÙˆÙ„Ù…Ù‰ŰșŰ§Ù† Ű±Û•ŰłÙ‰Ù… چوڭلىقى.', 'errResizeNoChange' : 'Ű±Û•ŰłÙ‰Ù… چوڭلىقى ŰŠÛ†ŰČÚŻÛ•Ű±Ù…Ù‰ÚŻÛ•Ù†.', 'errUsupportType' : 'Ù‚ÙˆÙ„Ù„Ù‰Ù…Ű§ÙŠŰŻÙ‰ŰșŰ§Ù† ÚŸÛˆŰŹŰŹÛ•ŰȘ ŰŽÛ•ÙƒÙ„Ù‰.', 'errNotUTF8Content' : '"$1" Ù†Ű§Ù…Ù„Ù‰Ù‚ ÚŸÛˆŰŹŰŹÛ•ŰȘنىڭ ÙƒÙˆŰŻÙ‰ UTF-8ŰŠÛ•Ù…Û•ŰłÙƒÛ•Ù†ŰŒ ŰȘÛ•ÚŸŰ±Ù‰Ű±Ù„Ù‰ÚŻÙ‰Ù„Ù‰ ŰšÙˆÙ„Ù…Ű§ÙŠŰŻÛ‡.', // added 9.11.2011 'errNetMount' : ' "$1" نى ÙŠÛˆÙƒÙ„Û•ŰŽŰȘە ۟ۧŰȘلىق يۈŰČ ŰšÛ•Ű±ŰŻÙ‰..', // added 17.04.2012 'errNetMountNoDriver' : 'ŰšÛ‡ ŰźÙ‰Ù„ ÙŸŰ±ÙˆŰȘوكول Ù‚ÙˆÙ„Ù„Ű§Ù†Ù…Ù‰ŰŻÙ‰..', // added 17.04.2012 'errNetMountFailed' : 'ÙŠÛˆÙƒÙ„Û•ŰŽ مەŰșÙ„Û‡ÙŸ ŰšÙˆÙ„ŰŻÙ‰.', // added 17.04.2012 'errNetMountHostReq' : 'Ù…Û‡Ù„Ű§ŰČىمىŰȘÙ‰Ű±Ù†Ù‰ ÙƒÛ†Ű±ŰłÙ‰ŰȘىٟ ŰšÛŰ±Ù‰Ú­.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'ÙŸÙ‰Ű±Ù‰ŰłÙ„Ű§ŰŽ', 'cmdback' : 'Ù‚Ű§ÙŠŰȘÙ‰ŰŽ', 'cmdcopy' : 'ÙƒÛ†Ú†ÛˆŰ±ÛˆŰŽ', 'cmdcut' : 'ÙƒÛŰłÙ‰ŰŽ', 'cmddownload' : 'Ú†ÛˆŰŽÛˆŰ±ÛˆŰŽ', 'cmdduplicate' : 'Ù†Û‡ŰłŰźÙ‰Ù„Ű§ŰŽ', 'cmdedit' : 'ŰȘÛ•ÚŸŰ±Ù‰Ű±Ù„Û•ŰŽ', 'cmdextract' : 'ÙŸÙ‰Ű±Ù‰ŰłŰȘىن ÚŸÛˆŰŹŰŹÛ•ŰȘ Ú†Ù‰Ù‚Ù‰Ű±Ù‰ŰŽ', 'cmdforward' : 'ŰŠâ€Ű§Ù„ŰŻÙ‰Űșۧ Ù…ÛÚ­Ù‰ŰŽ', 'cmdgetfile' : 'ŰȘŰ§Ù„Ù„Ű§ŰŽ', 'cmdhelp' : 'ŰŠÛ•ÙŸ ÚŸÛ•Ù‚Ù‚Ù‰ŰŻÛ•', 'cmdhome' : 'ۚۧێ ŰšÛ•ŰȘ', 'cmdinfo' : 'ŰŠÛ‡Ú†Û‡Ű±Ù„Ù‰Ű±Ù‰', 'cmdmkdir' : 'يېڭى ÚŸÛˆŰŹŰŹÛ•ŰȘ Ù‚Ù‰ŰłÙ‚Û‡Ú†', 'cmdmkfile' : 'يېڭى ÚŸÛˆŰŹŰŹÛ•ŰȘ', 'cmdopen' : 'ŰŠÛÚ†Ù‰ŰŽ', 'cmdpaste' : 'Ú†Ű§ÙŸÙ„Ű§ŰŽ', 'cmdquicklook' : 'ÙƒÛ†Ű±ÛˆŰŽ', 'cmdreload' : 'ÙŠÛÚ­Ù‰Ù„Ű§ŰŽ', 'cmdrename' : 'Ù†Ű§Ù… ÙŠÛÚ­Ù‰Ù„Ű§ŰŽ', 'cmdrm' : 'ŰŠÛ†Ú†ÛˆŰ±ÛˆŰŽ', 'cmdsearch' : 'ÚŸÛˆŰŹŰŹÛ•ŰȘ ŰŠÙ‰ŰČŰŻÛ•ŰŽ', 'cmdup' : 'ŰŠŰ§Ù„ŰŻÙ‰Ù†Ù‚Ù‰ Ù…Û‡Ù†ŰŻÛ•Ű±Ù‰ŰŹÙ‰ÚŻÛ• ŰšÛŰ±Ù‰ŰŽ', 'cmdupload' : 'ÙŠÛˆÙƒÙ„Û•ŰŽ', 'cmdview' : 'ÙƒÛ†Ű±ÛˆŰŽ', 'cmdresize' : 'چوڭلىقىنى ŰȘÛ•Ú­ŰŽÛ•ŰŽ', 'cmdsort' : 'ŰȘÛ•Ű±ŰȘىٟ', 'cmdnetmount' : 'ŰȘÙˆŰ±ŰŻÙ‰Ù† Ù‚ÙˆŰŽÛ‡ŰŽ', // added 18.04.2012 /*********************************** buttons ***********************************/ 'btnClose' : 'ŰȘŰ§Ù‚Ű§ŰŽ', 'btnSave' : 'ŰłŰ§Ù‚Ù„Ű§ŰŽ', 'btnRm' : 'ŰŠÛ†Ú†ÛˆŰ±ÛˆŰŽ', 'btnApply' : 'ŰŠÙ‰ŰŽÙ„Ù‰ŰȘÙ‰ŰŽ', 'btnCancel' : 'ŰšÛÙƒŰ§Ű±Ù„Ű§ŰŽ', 'btnNo' : 'ÙŠŰ§Ù‚', 'btnYes' : 'ÚŸÛ•ŰŠÛ•', 'btnMount' : 'ÙŠÛˆÙƒÙ„Û•ŰŽ', // added 18.04.2012 /******************************** notifications ********************************/ 'ntfopen' : 'Ù‚Ù‰ŰłÙ‚Û‡Ú†Ù†Ù‰ ŰŠÛÚ†Ù‰ŰŽ', 'ntffile' : 'ÚŸÛˆŰŹŰŹÛ•ŰȘنى ŰŠÛÚ†Ù‰ŰŽ', 'ntfreload' : 'ÙŠÛÚ­Ù‰Ù„Ű§ŰŽ', 'ntfmkdir' : 'Ù‚Ù‰ŰłÙ‚Û‡Ú† Ù‚Û‡Ű±Û‡ŰŽ', 'ntfmkfile' : 'ÚŸÛˆŰŹŰŹÛ•ŰȘ Ù‚Û‡Ű±Û‡ŰŽ', 'ntfrm' : 'ŰŠÛ†Ú†ÛˆŰ±ÛˆŰŽ', 'ntfcopy' : 'ÙƒÛ†Ú†ÛˆŰ±ÛˆŰŽ', 'ntfmove' : 'يۆŰȘÙƒÛ•ŰŽ', 'ntfprepare' : 'ÙƒÛ†Ú†ÛˆŰ±ÛˆŰŽ ŰȘÛ•ÙŠÙŠŰ§Ű±Ù„Ù‰Ù‚Ù‰', 'ntfrename' : 'Ù†Ű§Ù… ÙŠÛÚ­Ù‰Ù„Ű§ŰŽ', 'ntfupload' : 'ÙŠÛˆÙƒÙ„Û•ŰŽ', 'ntfdownload' : 'Ú†ÛˆŰŽÛˆŰ±ÛˆŰŽ', 'ntfsave' : 'ŰłŰ§Ù‚Ù„Ű§ŰŽ', 'ntfarchive' : 'ÙŸÙ‰Ű±Ù‰ŰłÙ„Ű§ŰŽ', 'ntfextract' : 'ÙŸÙ‰Ű±Ù‰ŰłŰȘىن ÙŠÛŰŽÙ‰ŰŽ', 'ntfsearch' : 'ŰŠÙ‰ŰČŰŻÛ•ŰŽ', 'ntfresize' : 'چوڭلىقى ŰŠÛ†ŰČÚŻÛ•Ű±ŰȘÙ‰Ù„Ù‰Û‹Ű§ŰȘÙ‰ŰŻÛ‡', 'ntfsmth' : 'ŰŠŰ§Ù„ŰŻÙ‰Ű±Ű§ŰŽ >_<', 'ntfloadimg' : 'Ű±Û•ŰłÙ‰Ù… ŰŠÛÚ†Ù‰Ù„Ù‰Û‹Ű§ŰȘÙ‰ŰŻÛ‡', 'ntfnetmount' : 'ŰȘÙˆŰ± ÚŸÛˆŰŹŰŹÙ‰ŰȘى ÙŠÛˆÙƒÙ„Ù‰Ù†Ù‰Û‹Ű§ŰȘÙ‰ŰŻÛ‡', // added 18.04.2012 'ntfdim' : 'Acquiring image dimension', /************************************ dates **********************************/ 'dateUnknown' : 'ŰŠÛÙ†Ù‰Ù‚ ŰŠÛ•Ù…Û•Űł', 'Today' : 'ŰšÛˆÚŻÛˆÙ†', 'Yesterday' : 'ŰȘÛ†Ù†ÛˆÚŻÛˆÙ†', 'msJan' : '1-ŰŠŰ§ÙŠ', 'msFeb' : '2-ŰŠŰ§ÙŠ', 'msMar' : '3-ŰŠŰ§ÙŠ', 'msApr' : '4-ŰŠŰ§ÙŠ', 'msMay' : '5-ŰŠŰ§ÙŠ', 'msJun' : '6-ŰŠŰ§ÙŠ', 'msJul' : '7-ŰŠŰ§ÙŠ', 'msAug' : '8-ŰŠŰ§ÙŠ', 'msSep' : '9-ŰŠâ€Ű§ÙŠ', 'msOct' : '10-ŰŠŰ§ÙŠ', 'msNov' : '11-ŰŠŰ§ÙŠ', 'msDec' : '12-ŰŠŰ§ÙŠ', 'January' : '1-ŰŠŰ§ÙŠ', 'February' : '2-ŰŠŰ§ÙŠ', 'March' : '3-ŰŠŰ§ÙŠ', 'April' : '4-ŰŠŰ§ÙŠ', 'May' : '5-ŰŠŰ§ÙŠ', 'June' : '6-ŰŠŰ§ÙŠ', 'July' : '7-ŰŠŰ§ÙŠ', 'August' : '8-ŰŠŰ§ÙŠ', 'September' : '9-ŰŠŰ§ÙŠ', 'October' : '10-ŰŠŰ§ÙŠ', 'November' : '11-ŰŠŰ§ÙŠ', 'December' : '12-ŰŠŰ§ÙŠ', 'Sunday' : 'ÙŠÛ•ÙƒŰŽÛ•Ù†ŰšÛ•', 'Monday' : 'ŰŻÛˆŰŽÛ•Ù†ŰšÛ•', 'Tuesday' : 'ŰłÛ•ÙŠŰŽÛ•Ù†ŰšÛ•', 'Wednesday' : 'Ú†Ű§Ű±ŰŽÛ•Ù†ŰšÛ•', 'Thursday' : 'ÙŸÛ•ÙŠŰŽÛ•Ù†ŰšÛ•', 'Friday' : 'ŰŹÛˆÙ…Û•', 'Saturday' : 'ŰŽÛ•Ù†ŰšÛ•', 'Sun' : 'يە', 'Mon' : 'ŰŻÛˆ', 'Tue' : 'ŰłÛ•', 'Wed' : 'چۧ', 'Thu' : 'ÙŸÛ•', 'Fri' : 'ŰŹÛˆ', 'Sat' : 'ŰŽÛ•', /******************************** sort variants ********************************/ 'sortname' : 'Ù†Ű§Ù…Ù‰ ', 'sortkind' : 'ŰŽÛ•ÙƒÙ„Ù‰ ', 'sortsize' : 'چوڭلىقى', 'sortdate' : 'Û‹Ű§Ù‚ŰȘى', 'sortFoldersFirst' : 'Ù‚Ù‰ŰłÙ‚Û‡Ú†Ù„Ű§Ű± ۚۧێŰȘۧ', /********************************** messages **********************************/ 'confirmReq' : 'Ù…Û‡Ù‚Ù‰Ù…Ù„Ű§ŰŽŰȘÛ‡Ű±Û‡Ú­', 'confirmRm' : '۱ۧ۳ŰȘÙ‰Ù†Ù„Ű§ ŰŠÛ†Ú†ÛˆŰ±Û•Ù…ŰłÙ‰ŰČ?
      ÙƒÛ•ÙŠÙ†Ù‰ÚŻÛ• Ù‚Ű§ÙŠŰȘÛ‡Ű±Űșىلى ŰšÙˆÙ„Ù…Ű§ÙŠŰŻÛ‡!', 'confirmRepl' : 'ÚŸŰ§ŰČÙ‰Ű±Ù‚Ù‰ ÚŸÛˆŰŹŰŹÛ•ŰȘ ŰšÙ‰Ù„Û•Ù† ÙƒÙˆÙ†Ù‰ŰłÙ‰Ù†Ù‰ ŰŠŰ§Ù„Ù…Ű§ŰŽŰȘÛ‡Ű±Ű§Ù…ŰłÙ‰ŰČ?', 'apllyAll' : 'ÚŸÛ•Ù…Ù…Ù‰ŰłÙ‰ÚŻÛ• ŰŠÙ‰ŰŽÙ„Ù‰ŰȘÙ‰ŰŽ', 'name' : 'Ù†Ű§Ù…Ù‰', 'size' : 'چوڭلىقى', 'perms' : 'ڟوقۇق', 'modify' : 'ŰŠÛ†ŰČÚŻÛ•Ű±ÚŻÛ•Ù† Û‹Ű§Ù‚ŰȘى', 'kind' : 'ŰȘÛˆŰ±Ù‰', 'read' : 'ŰŠÙˆÙ‚Û‡ŰŽ', 'write' : 'يېŰČÙ‰ŰŽ', 'noaccess' : 'ڟوقۇق يوق', 'and' : 'ÚŸÛ•Ù…', 'unknown' : 'ŰŠÛÙ†Ù‰Ù‚ ŰŠÛ•Ù…Û•Űł', 'selectall' : 'ڟەممىنى ŰȘŰ§Ù„Ù„Ű§ŰŽ', 'selectfiles' : 'ŰȘŰ§Ù„Ù„Ű§ŰŽ', 'selectffile' : 'ŰšÙ‰Ű±Ù‰Ù†Ú†Ù‰ŰłÙ‰Ù†Ù‰ ŰȘŰ§Ù„Ù„Ű§ŰŽ', 'selectlfile' : 'ŰŠÛ•Ú­ ŰŠŰ§ŰźÙ‰Ű±Ù‚Ù‰ŰłÙ‰Ù†Ù‰ ŰȘŰ§Ù„Ù„Ű§ŰŽ', 'viewlist' : 'ŰŹÛ•ŰŻÛ‹Û•Ù„Ù„Ù‰Ùƒ ÙƒÛ†Ű±Ù‰Ù†Ù‰ŰŽÙ‰', 'viewicons' : 'Ű±Û•ŰłÙ‰Ù…Ù„Ù‰Ùƒ ÙƒÛ†Ű±Ù‰Ù†Ù‰ŰŽÙ‰', 'places' : 'ŰŠÙˆŰ±Ù†Ù‰', 'calc' : 'ÚŸÛŰłŰ§ŰšÙ„Ű§ŰŽ', 'path' : 'ŰŠÙˆŰ±Ù†Ù‰', 'aliasfor' : 'ŰšŰ§ŰŽÙ‚Ű§ Ù†Ű§Ù…Ù‰', 'locked' : 'ŰȘŰ§Ù‚Ű§Ù„ŰșŰ§Ù†', 'dim' : 'چوڭلىقى', 'files' : 'ÚŸÛˆŰŹŰŹÛ•ŰȘ', 'folders' : 'Ù‚Ù‰ŰłÙ‚Û‡Ú†', 'items' : 'ŰȘÛˆŰ±Ù„Û•Ű±', 'yes' : 'ÚŸÛ•ŰŠÛ•', 'no' : 'ÙŠŰ§Ù‚', 'link' : 'ŰŠÛ‡Ù„Ù‰Ù†Ù‰ŰŽ', 'searcresult' : 'ŰŠÙ‰ŰČŰŻÛ•ŰŽ نەŰȘÙ‰ŰŹÙ‰ŰłÙ‰', 'selected' : 'ŰȘŰ§Ù„Ù„Ű§Ù†ŰșŰ§Ù† ŰȘÛˆŰ±Ù„Û•Ű±', 'about' : 'Ú†ÛˆŰŽÛ•Ù†Ú†Û•', 'shortcuts' : 'ŰȘېŰČ ÙƒÙˆÙ†Û‡ÙŸÙƒÙ‰Ù„Ű§Ű±', 'help' : 'ÙŠŰ§Ű±ŰŻÛ•Ù…', 'webfm' : 'ŰȘÙˆŰ± ÚŸÛˆŰŹŰŹÛ•ŰȘÙ„Ù‰Ű±Ù‰Ù†Ù‰ ŰšŰ§ŰŽÙ‚Û‡Ű±Û‡ŰŽ', 'ver' : 'Ù†Û•ŰŽŰ±Ù‰', 'protocolver' : 'ÙŸŰ±ÙˆŰȘوكول Ù†Û•ŰŽŰ±Ù‰', 'homepage' : 'ŰȘÛˆŰ± ۚۧێ ŰšÛŰȘى', 'docs' : 'ÚŸÛˆŰŹŰŹÛ•ŰȘ', 'github' : 'Fork us on Github', 'twitter' : 'Follow us on twitter', 'facebook' : 'Join us on facebook', 'team' : 'ÚŻÛ‡Ű±Û‡ÙŸÙŸŰ§', 'chiefdev' : 'ۚۧێ ÙŸÙ‰Ű±ÙˆÚŻŰ±Ű§Ù…Ù…Ù‰Ű±', 'developer' : 'ÙŸÙ‰Ű±ÙˆÚŻŰ±Ű§Ù…Ù…Ù‰Ű±', 'contributor' : 'ŰȘÛ†ÚŸÙŸÙ‰ÙƒŰ§Ű±', 'maintainer' : 'ŰŠŰ§ŰłŰ±Ù‰Űșۇچى', 'translator' : 'ŰȘÛ•Ű±ŰŹÙ‰Ù…Ű§Ù†', 'icons' : 'ŰłÙ‰Ù†ŰšÛ•Ù„ÚŻÛ•', 'dontforget' : 'ŰȘÛ•Ű±Ù‰Ú­Ù‰ŰČنى ŰłÛˆŰ±ŰȘÙ‰ŰŻÙ‰ŰșŰ§Ù† Ù‚ÙˆÙ„ÙŠŰ§ŰșلىقىڭىŰČنى ŰŠÛ‡Ù†Û‡ŰȘÙ…Ű§Ú­ ŰŹÛ‡Ù…Û‡', 'shortcutsof' : 'ŰȘېŰČ ÙƒÙˆÙ†Û‡ÙŸÙƒÙ‰Ù„Ű§Ű± Ú†Û•ÙƒÙ„Û•Ù†ÚŻÛ•Ù†', 'dropFiles' : 'ÚŸÛˆŰŹŰŹÛ•ŰȘنى Ù…ÙˆŰŽÛ‡ ÙŠÛ•Ű±ÚŻÛ• ŰȘŰ§ŰŽÙ„Ű§Ú­', 'or' : 'ÙŠŰ§ÙƒÙ‰', 'selectForUpload' : 'يۈكلىمەكچى ŰšÙˆÙ„ŰșŰ§Ù† ÚŸÛˆŰŹŰŹÛ•ŰȘنى ŰȘŰ§Ù„Ù„Ű§Ú­', 'moveFiles' : 'يۆŰȘÙƒÛ•ŰŽ', 'copyFiles' : 'ÙƒÛ†Ú†ÛˆŰ±ÛˆŰŽ', 'rmFromPlaces' : 'ÚŸÛˆŰŹŰŹÛ•ŰȘÙ„Û•Ű±Ù†Ù‰ ŰŠÛ†Ú†ÛˆŰ±ÛˆŰŽ', 'aspectRatio' : 'Ù†Ù‰ŰłŰšÙ‰ŰȘىنى ŰłŰ§Ù‚Ù„Ű§ŰŽ', 'scale' : 'Ù†Ù‰ŰłŰšÙ‰ŰȘى', 'width' : 'ŰŠÛ‡ŰČۇنلىقى', 'height' : 'ŰŠÙ‰ÚŻÙ‰ŰČلىكى', 'resize' : 'چوڭلىقىنى ŰȘÛ•Ú­ŰŽÛ•ŰŽ', 'crop' : 'ÙƒÛŰłÙ‰ŰŽ', 'rotate' : 'ÙŸÙ‰Ù‚Ù‰Ű±Ù‰ŰȘÙ‰ŰŽ', 'rotate-cw' : 'ŰłŰ§ŰŠÛ•ŰȘ ŰŠÙ‰ŰłŰȘÙ‰Ű±Ù‰Ù„ÙƒÙ‰ŰłÙ‰ ŰšÙˆÙŠÙ‰Ú†Û• 90 ÚŻÙ‰Ű±Ű§ŰŻÛ‡Űł ÙŸÙ‰Ù‚Ù‰Ű±Ù‰ŰȘÙ‰ŰŽ', 'rotate-ccw' : 'ŰłŰ§ŰŠÛ•ŰȘ ŰŠÙ‰ŰłŰȘÙ‰Ű±Ù‰Ù„ÙƒÙ‰ŰłÙ‰Ù†Ù‰ ŰȘەŰȘÛˆŰ± ÙŠÛ†Ù†Ù‰Ù„Ù‰ŰŽÙ‰ ŰšÙˆÙŠÙ‰Ú†Û• 90ÚŻÙ‰Ű±Ű§ŰŻÛ‡Űł ÙŸÙ‰Ù‚Ù‰Ű±Ù‰ŰȘÙ‰ŰŽ', 'degree' : 'ÚŻÙ‰Ű±Ű§ŰŻÛ‡Űł', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'ÙŸÙ‰Ű±ÙˆŰȘوكڭل', // added 18.04.2012 'host' : 'Ù…Û‡Ù„Ű§ŰČىمىŰȘÙ‰Ű±', // added 18.04.2012 'port' : 'ÙŸÙˆŰ±ŰȘ', // added 18.04.2012 'user' : 'ŰŠÛ•ŰČۧ', // added 18.04.2012 'pass' : 'ŰŠÙ‰Ù…', // added 18.04.2012 /********************************** mimetypes **********************************/ 'kindUnknown' : 'ŰŠÛÙ†Ù‰Ù‚ ŰŠÛ•Ù…Û•Űł', 'kindFolder' : 'ÚŸÛˆŰŹŰŹÛ•ŰȘ Ù‚Ù‰ŰłÙ‚Û‡Ú†', 'kindAlias' : 'ŰšŰ§ŰŽÙ‚Ű§ Ù†Ű§Ù…Ù‰', 'kindAliasBroken' : 'ŰšŰ§ŰŽÙ‚Ű§ Ù†Ű§Ù…Ù‰ ۟ۧŰȘۧ', // applications 'kindApp' : 'ÙƒÙˆŰŻ ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindPostscript' : 'Postscript ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindMsOffice' : 'Microsoft Office ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindMsWord' : 'Microsoft Word ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindMsExcel' : 'Microsoft Excel ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindMsPP' : 'Microsoft Powerpoint ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindOO' : 'Open Office ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindAppFlash' : 'Flash ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kind7z' : '7z ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindTAR' : 'TAR ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindGZIP' : 'GZIP ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindBZIP' : 'BZIP ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindXZ' : 'XZ ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindZIP' : 'ZIP ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindRAR' : 'RAR ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindJAR' : 'Java JAR ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindTTF' : 'True Type فونŰȘ', 'kindOTF' : 'Open Type فونŰȘ', 'kindRPM' : 'RPM', // texts 'kindText' : 'ŰȘÛÙƒÙ‰ŰłŰȘ', 'kindTextPlain' : 'ŰȘÛÙƒÙ‰ŰłŰȘ', 'kindPHP' : 'PHP ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindCSS' : 'CSS ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindHTML' : 'HTML ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindJS' : 'Javascript ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindRTF' : 'RTF ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindC' : 'C ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindCHeader' : 'C ۚۧێ ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindCPP' : 'C++ ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindCPPHeader' : 'C++ ۚۧێ ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindShell' : 'Unix ŰłÙ‰ÙƒÙ‰Ű±Ù‰ÙŸŰȘ ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindPython' : 'Python ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindJava' : 'Java ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindRuby' : 'Ruby ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindPerl' : 'Perl ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindSQL' : 'SQL ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindXML' : 'XML ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindAWK' : 'AWK ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindCSV' : 'CSV ÚŸÛˆŰŹŰŹÙ‰ŰȘى', 'kindDOCBOOK' : 'Docbook XML ÚŸÛˆŰŹŰŹÙ‰ŰȘى', // images 'kindImage' : 'Ű±Û•ŰłÙ‰Ù…', 'kindBMP' : 'BMP Ű±Û•ŰłÙ‰Ù…', 'kindJPEG' : 'JPEG Ű±Û•ŰłÙ‰Ù…', 'kindGIF' : 'GIF Ű±Û•ŰłÙ‰Ù…', 'kindPNG' : 'PNG Ű±Û•ŰłÙ‰Ù…', 'kindTIFF' : 'TIFF Ű±Û•ŰłÙ‰Ù…', 'kindTGA' : 'TGA Ű±Û•ŰłÙ‰Ù…', 'kindPSD' : 'Adobe Photoshop Ű±Û•ŰłÙ‰Ù…', 'kindXBITMAP' : 'X bitmap Ű±Û•ŰłÙ‰Ù…', 'kindPXM' : 'Pixelmator Ű±Û•ŰłÙ‰Ù…', // media 'kindAudio' : 'ŰŠŰ§Û‹Ű§ŰČ', 'kindAudioMPEG' : 'MPEG ŰŠŰ§Û‹Ű§ŰČ', 'kindAudioMPEG4' : 'MPEG-4 ŰŠŰ§Û‹Ű§ŰČ', 'kindAudioMIDI' : 'MIDI ŰŠŰ§Û‹Ű§ŰČ', 'kindAudioOGG' : 'Ogg Vorbis ŰŠŰ§Û‹Ű§ŰČ', 'kindAudioWAV' : 'WAV ŰŠŰ§Û‹Ű§ŰČ', 'AudioPlaylist' : 'MP3 Ù‚ÙˆÙŠÛ‡ŰŽ ŰȘىŰČىملىكى', 'kindVideo' : 'ŰłÙ‰Ù†', 'kindVideoDV' : 'DV ŰłÙ‰Ù†', 'kindVideoMPEG' : 'MPEG ŰłÙ‰Ù†', 'kindVideoMPEG4' : 'MPEG-4 ŰłÙ‰Ù†', 'kindVideoAVI' : 'AVI ŰłÙ‰Ù†', 'kindVideoMOV' : 'Quick Time ŰłÙ‰Ù†', 'kindVideoWM' : 'Windows Media ŰłÙ‰Ù†', 'kindVideoFlash' : 'Flash ŰłÙ‰Ù†', 'kindVideoMKV' : 'Matroska ŰłÙ‰Ù†', 'kindVideoOGG' : 'Ogg ŰłÙ‰Ù†' } }; })); application/library/js/i18n/elfinder.it.js000064400000104123147577724760014502 0ustar00/** * Italiano translation * @author Alberto Tocci (alberto.tocci@gmail.com) * @author Claudio Nicora (coolsoft.ita@gmail.com) * @author Stefano Galeazzi * @author Thomas Camaran * @author Fabio Ferrero * @version 2023-04-21 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.it = { translator : 'Alberto Tocci (alberto.tocci@gmail.com), Claudio Nicora (coolsoft.ita@gmail.com), Stefano Galeazzi <stefano.galeazzi@probanet.it>, Thomas Camaran <camaran@gmail.com>, Fabio Ferrero <fabioferrero@gmail.com>', language : 'Italiano', direction : 'ltr', dateFormat : 'd/m/Y H:i', // will show like: 21/04/2023 16:21 fancyDateFormat : '$1 H:i', // will show like: Oggi 16:21 nonameDateFormat : 'ymd-His', // noname upload will show like: 230421-162111 messages : { /********************************** errors **********************************/ 'error' : 'Errore', 'errUnknown' : 'Errore sconosciuto.', 'errUnknownCmd' : 'Comando sconosciuto.', 'errJqui' : 'Configurazione JQuery UI non valida. Devono essere inclusi i plugin Selectable, Draggable e Droppable.', 'errNode' : 'elFinder necessita dell\'elemento DOM per essere inizializzato.', 'errURL' : 'Configurazione non valida.Il parametro URL non Ăš settato.', 'errAccess' : 'Accesso negato.', 'errConnect' : 'Impossibile collegarsi al backend.', 'errAbort' : 'Connessione annullata.', 'errTimeout' : 'Timeout di connessione.', 'errNotFound' : 'Backend non trovato.', 'errResponse' : 'Risposta non valida dal backend.', 'errConf' : 'Configurazione backend non valida.', 'errJSON' : 'Modulo PHP JSON non installato.', 'errNoVolumes' : 'Non Ăš stato possibile leggere i volumi.', 'errCmdParams' : 'Parametri non validi per il comando "$1".', 'errDataNotJSON' : 'I dati non sono nel formato JSON.', 'errDataEmpty' : 'Stringa vuota.', 'errCmdReq' : 'La richiesta al backend richiede il nome del comando.', 'errOpen' : 'Impossibile aprire "$1".', 'errNotFolder' : 'L\'oggetto non Ăš una cartella..', 'errNotFile' : 'L\'oggetto non Ăš un file.', 'errRead' : 'Impossibile leggere "$1".', 'errWrite' : 'Non Ăš possibile scrivere in "$1".', 'errPerm' : 'Permesso negato.', 'errLocked' : '"$1" Ăš bloccato e non puĂČ essere rinominato, spostato o eliminato.', 'errExists' : 'Il file "$1" Ăš giĂ  esistente.', 'errInvName' : 'Nome file non valido.', 'errInvDirname' : 'Nome cartella non valido.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Cartella non trovata.', 'errFileNotFound' : 'File non trovato.', 'errTrgFolderNotFound' : 'La cartella di destinazione"$1" non Ăš stata trovata.', 'errPopup' : 'Il tuo Browser non consente di aprire finestre di pop-up. Per aprire il file abilita questa opzione nelle impostazioni del tuo Browser.', 'errMkdir' : 'Impossibile creare la cartella "$1".', 'errMkfile' : 'Impossibile creare il file "$1".', 'errRename' : 'Impossibile rinominare "$1".', 'errCopyFrom' : 'Non Ăš possibile copiare file da "$1".', 'errCopyTo' : 'Non Ăš possibile copiare file in "$1".', 'errMkOutLink' : 'Impossibile creare un link all\'esterno della radice del volume.', // from v2.1 added 03.10.2015 'errUpload' : 'Errore di Caricamento.', // old name - errUploadCommon 'errUploadFile' : 'Impossibile Caricare "$1".', // old name - errUpload 'errUploadNoFiles' : 'Non sono stati specificati file da caricare.', 'errUploadTotalSize' : 'La dimensione totale dei file supera il limite massimo consentito.', // old name - errMaxSize 'errUploadFileSize' : 'Le dimensioni del file superano il massimo consentito.', // old name - errFileMaxSize 'errUploadMime' : 'FileType non consentito.', 'errUploadTransfer' : 'Trasferimento errato del file "$1".', 'errUploadTemp' : 'Impossibile creare il file temporaneo per l\'upload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'L\'oggetto "$1" esiste giĂ  in questa cartella e non puĂČ essere sostituito con un oggetto di un tipo differente.', // new 'errReplace' : 'Impossibile sostituire "$1".', 'errSave' : 'Impossibile salvare "$1".', 'errCopy' : 'Impossibile copiare "$1".', 'errMove' : 'Impossibile spostare "$1".', 'errCopyInItself' : 'Sorgente e destinazione risultato essere uguali.', 'errRm' : 'Impossibile rimuovere "$1".', 'errTrash' : 'Impossibile cestinare.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Impossibile eliminare i file origine.', 'errExtract' : 'Impossibile estrarre file da "$1".', 'errArchive' : 'Impossibile creare archivio.', 'errArcType' : 'Tipo di archivio non supportato.', 'errNoArchive' : 'Il file non Ăš un archivio o contiene file non supportati.', 'errCmdNoSupport' : 'Il Backend non supporta questo comando.', 'errReplByChild' : 'La cartella $1 non puĂČ essere sostituita da un oggetto in essa contenuto.', 'errArcSymlinks' : 'Per questioni di sicurezza non Ăš possibile estrarre archivi che contengono collegamenti..', // edited 24.06.2012 'errArcMaxSize' : 'La dimensione dell\'archivio supera le massime dimensioni consentite.', 'errResize' : 'Impossibile ridimensionare "$1".', 'errResizeDegree' : 'Angolo di rotazione non valido.', // added 7.3.2013 'errResizeRotate' : 'Impossibile ruotare l\'immagine.', // added 7.3.2013 'errResizeSize' : 'Dimensione dell\'immagine non valida.', // added 7.3.2013 'errResizeNoChange' : 'Dimensione dell\'immagine non modificata.', // added 7.3.2013 'errUsupportType' : 'Tipo di file non supportato.', 'errNotUTF8Content' : 'Il file "$1" non Ăš nel formato UTF-8 e non puĂČ essere modificato.', // added 9.11.2011 'errNetMount' : 'Impossibile montare "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protocollo non supportato.', // added 17.04.2012 'errNetMountFailed' : 'Mount fallito.', // added 17.04.2012 'errNetMountHostReq' : 'Host richiesto.', // added 18.04.2012 'errSessionExpires' : 'La sessione Ăš scaduta a causa di inattivitĂ .', 'errCreatingTempDir' : 'Impossibile creare la cartella temporanea: "$1"', 'errFtpDownloadFile' : 'Impossibile scaricare il file tramite FTP: "$1"', 'errFtpUploadFile' : 'Impossibile caricare il file tramite FTP: "$1"', 'errFtpMkdir' : 'Impossibile creare la cartella remota tramite FTP: "$1"', 'errArchiveExec' : 'Errore durante l\'archiviazione dei file: "$1"', 'errExtractExec' : 'Errore durante l\'estrazione dei file: "$1"', 'errNetUnMount' : 'Impossibile smontare', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Non convertibile nel formato UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Per uploadare l0intera cartella usare Google Chrome.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Timeout durante la ricerca di "$1". I risultati della ricerca sono parziali.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'E\' necessaria la riautorizzazione.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Il numero massimo di oggetti selezionabili Ăš $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Impossibile ripristinare dal cestino: destinazione di ripristino non trovata.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Impossibile trovare un editor per questo tipo di file.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Si Ăš verificato un errore lato server.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Impossibile svuotare la cartella "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Ci sono $1 ulteriori errori.', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'Puoi creare fino a $1 cartelle alla volta.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'Crea archivio', 'cmdback' : 'Indietro', 'cmdcopy' : 'Copia', 'cmdcut' : 'Taglia', 'cmddownload' : 'Scarica', 'cmdduplicate' : 'Duplica', 'cmdedit' : 'Modifica File', 'cmdextract' : 'Estrai Archivio', 'cmdforward' : 'Avanti', 'cmdgetfile' : 'Seleziona File', 'cmdhelp' : 'Informazioni su...', 'cmdhome' : 'Home', 'cmdinfo' : 'Informazioni', 'cmdmkdir' : 'Nuova cartella', 'cmdmkdirin' : 'In una nuova cartella', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nuovo file', 'cmdopen' : 'Apri', 'cmdpaste' : 'Incolla', 'cmdquicklook' : 'Anteprima', 'cmdreload' : 'Ricarica', 'cmdrename' : 'Rinomina', 'cmdrm' : 'Elimina', 'cmdtrash' : 'Nel cestino', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Ripristina', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Ricerca file', 'cmdup' : 'Vai alla directory padre', 'cmdupload' : 'Carica File', 'cmdview' : 'Visualizza', 'cmdresize' : 'Ridimensiona Immagine', 'cmdsort' : 'Ordina', 'cmdnetmount' : 'Monta disco di rete', // added 18.04.2012 'cmdnetunmount': 'Smonta', // from v2.1 added 30.04.2012 'cmdplaces' : 'Aggiungi ad Accesso rapido', // added 28.12.2014 'cmdchmod' : 'Cambia modalitĂ ', // from v2.1 added 20.6.2015 'cmdopendir' : 'Apri una cartella', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Reimposta dimensione colonne', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Schermo intero', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Sposta', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Svuota la cartella', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Annulla', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Ripeti', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferenze', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Seleziona tutto', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Annulla selezione', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Inverti selezione', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Apri in una nuova finestra', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Nascondi (Preference)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Chiudi', 'btnSave' : 'Salva', 'btnRm' : 'Elimina', 'btnApply' : 'Applica', 'btnCancel' : 'Annulla', 'btnNo' : 'No', 'btnYes' : 'SĂŹ', 'btnMount' : 'Monta', // added 18.04.2012 'btnApprove': 'Vai a $1 & approva', // from v2.1 added 26.04.2012 'btnUnmount': 'Smonta', // from v2.1 added 30.04.2012 'btnConv' : 'Converti', // from v2.1 added 08.04.2014 'btnCwd' : 'Qui', // from v2.1 added 22.5.2015 'btnVolume' : 'Disco', // from v2.1 added 22.5.2015 'btnAll' : 'Tutti', // from v2.1 added 22.5.2015 'btnMime' : 'Tipo MIME', // from v2.1 added 22.5.2015 'btnFileName':'Nome file', // from v2.1 added 22.5.2015 'btnSaveClose': 'Salva & Chiudi', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 'btnRename' : 'Rinomina', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Rinomina (tutto)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Indietro ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Avanti ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Salva come', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Apri cartella', 'ntffile' : 'Apri file', 'ntfreload' : 'Ricarica il contenuto della cartella', 'ntfmkdir' : 'Creazione delle directory in corso', 'ntfmkfile' : 'Creazione dei files in corso', 'ntfrm' : 'Eliminazione dei files in corso', 'ntfcopy' : 'Copia file in corso', 'ntfmove' : 'Spostamento file in corso', 'ntfprepare' : 'Preparazione della copia dei file.', 'ntfrename' : 'Sto rinominando i file', 'ntfupload' : 'Caricamento file in corso', 'ntfdownload' : 'Downloading file in corso', 'ntfsave' : 'Salvataggio file in corso', 'ntfarchive' : 'Creazione archivio in corso', 'ntfextract' : 'Estrazione file dall\'archivio in corso', 'ntfsearch' : 'Ricerca files in corso', 'ntfresize' : 'Ridimensionamento immagini', 'ntfsmth' : 'Operazione in corso. Attendere...', 'ntfloadimg' : 'Caricamento immagine in corso', 'ntfnetmount' : 'Montaggio disco di rete', // added 18.04.2012 'ntfnetunmount': 'Smontaggio disco di rete', // from v2.1 added 30.04.2012 'ntfdim' : 'Lettura dimensioni immagine', // added 20.05.2013 'ntfreaddir' : 'Lettura informazioni cartella', // from v2.1 added 01.07.2013 'ntfurl' : 'Lettura URL del collegamento', // from v2.1 added 11.03.2014 'ntfchmod' : 'Modifica della modalitĂ  del file', // from v2.1 added 20.6.2015 'ntfpreupload': 'Verifica del nome del file caricato', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Creazione del file da scaricare', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Ottenimento informazioni percorso', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Processazione file caricato', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Spostamento nel cestino', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Ripristino dal cestino', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Controllo cartella destinazione', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Annullamento operazione precedente', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Rifacimento precedente annullamento', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Controllo contenuto', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Cestino', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'Sconosciuto', 'Today' : 'Oggi', 'Yesterday' : 'Ieri', 'msJan' : 'Gen', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Mag', 'msJun' : 'Giu', 'msJul' : 'Lug', 'msAug' : 'Ago', 'msSep' : 'Set', 'msOct' : 'Ott', 'msNov' : 'Nov', 'msDec' : 'Dic', 'January' : 'Gennaio', 'February' : 'Febbraio', 'March' : 'Marzo', 'April' : 'Aprile', 'May' : 'Maggio', 'June' : 'Giugno', 'July' : 'Luglio', 'August' : 'Agosto', 'September' : 'Settembre', 'October' : 'Ottobre', 'November' : 'Novembre', 'December' : 'Dicembre', 'Sunday' : 'Domenica', 'Monday' : 'LunedĂŹ', 'Tuesday' : 'MartedĂŹ', 'Wednesday' : 'MercoledĂŹ', 'Thursday' : 'GiovedĂŹ', 'Friday' : 'VenerdĂŹ', 'Saturday' : 'Sabato', 'Sun' : 'Dom', 'Mon' : 'Lun', 'Tue' : 'Mar', 'Wed' : 'Mer', 'Thu' : 'Gio', 'Fri' : 'Ven', 'Sat' : 'Sab', /******************************** sort variants ********************************/ 'sortname' : 'per nome', 'sortkind' : 'per tipo', 'sortsize' : 'per dimensione', 'sortdate' : 'per data', 'sortFoldersFirst' : 'cartelle in testa', 'sortperm' : 'per permessi', // from v2.1.13 added 13.06.2016 'sortmode' : 'per modalitĂ ', // from v2.1.13 added 13.06.2016 'sortowner' : 'per possessore', // from v2.1.13 added 13.06.2016 'sortgroup' : 'per gruppo', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Anche vista ad albero', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NuovoFile.txt', // added 10.11.2015 'untitled folder' : 'NuovaCartella', // added 10.11.2015 'Archive' : 'NuovoArchivio', // from v2.1 added 10.11.2015 'untitled file' : 'NuovoFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: File', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Conferma richiesta', 'confirmRm' : 'Sei sicuro di voler eliminare i file?
      L\'operazione non Ăš reversibile!', 'confirmRepl' : 'Sostituire i file ?', 'confirmRest' : 'Rimpiazza l\'oggetto esistente con quello nel cestino?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Non in formato UTF-8
      Convertire in UTF-8?
      Il contenuto diventerĂ  UTF-8 salvando dopo la conversione.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'La codifica caratteri di questo file non puĂČ essere determinata. SarĂ  temporaneamente convertito in UTF-8 per l\'editting.
      Per cortesia, selezionare la codifica caratteri per il file.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Il contenuto Ăš stato modificato.
      Le modifiche andranno perse se non si salveranno.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Sei sicuro di voler cestinare gli oggetti?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Sei sicuro di voler spostare gli oggetti in "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Applica a tutti', 'name' : 'Nome', 'size' : 'Dimensione', 'perms' : 'Permessi', 'modify' : 'Modificato il', 'kind' : 'Tipo', 'read' : 'lettura', 'write' : 'scrittura', 'noaccess' : 'nessun accesso', 'and' : 'e', 'unknown' : 'sconosciuto', 'selectall' : 'Seleziona tutti i file', 'selectfiles' : 'Seleziona file', 'selectffile' : 'Seleziona il primo file', 'selectlfile' : 'Seleziona l\'ultimo file', 'viewlist' : 'Visualizza Elenco', 'viewicons' : 'Visualizza Icone', 'viewSmall' : 'Icone piccole', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Icone medie', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Icone grandi', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Icone molto grandi', // from v2.1.39 added 22.5.2018 'places' : 'Accesso rapido', 'calc' : 'Calcola', 'path' : 'Percorso', 'aliasfor' : 'Alias per', 'locked' : 'Bloccato', 'dim' : 'Dimensioni', 'files' : 'File', 'folders' : 'Cartelle', 'items' : 'Oggetti', 'yes' : 'sĂŹ', 'no' : 'no', 'link' : 'Collegamento', 'searcresult' : 'Risultati ricerca', 'selected' : 'oggetti selezionati', 'about' : 'Informazioni', 'shortcuts' : 'Scorciatoie', 'help' : 'Aiuto', 'webfm' : 'Gestore file WEB', 'ver' : 'Versione', 'protocolver' : 'versione protocollo', 'homepage' : 'Home del progetto', 'docs' : 'Documentazione', 'github' : 'Seguici su Github', 'twitter' : 'Seguici su Twitter', 'facebook' : 'Seguici su Facebook', 'team' : 'Gruppo', 'chiefdev' : 'sviluppatore capo', 'developer' : 'sviluppatore', 'contributor' : 'collaboratore', 'maintainer' : 'manutentore', 'translator' : 'traduttore', 'icons' : 'Icone', 'dontforget' : 'e non dimenticate di portare l\'asciugamano', 'shortcutsof' : 'Scorciatoie disabilitate', 'dropFiles' : 'Trascina i file qui', 'or' : 'o', 'selectForUpload' : 'Seleziona file da caricare', 'moveFiles' : 'Sposta file', 'copyFiles' : 'Copia file', 'restoreFiles' : 'Ripristina oggetti', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Rimuovi da Accesso rapido', 'aspectRatio' : 'Proporzioni', 'scale' : 'Scala', 'width' : 'Larghezza', 'height' : 'Altezza', 'resize' : 'Ridimensione', 'crop' : 'Ritaglia', 'rotate' : 'Ruota', 'rotate-cw' : 'Ruota di 90° in senso orario', 'rotate-ccw' : 'Ruota di 90° in senso antiorario', 'degree' : 'Gradi', 'netMountDialogTitle' : 'Monta disco di rete', // added 18.04.2012 'protocol' : 'Protocollo', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Porta', // added 18.04.2012 'user' : 'Utente', // added 18.04.2012 'pass' : 'Password', // added 18.04.2012 'confirmUnmount' : 'Vuoi smontare $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Rilascia o incolla dal browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Rilascia o incolla files e indirizzi URL qui', // from v2.1 added 07.04.2014 'encoding' : 'Codifica', // from v2.1 added 19.12.2014 'locale' : 'Lingua', // from v2.1 added 19.12.2014 'searchTarget' : 'Destinazione: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Cerca per MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Possessore', // from v2.1 added 20.6.2015 'group' : 'Gruppo', // from v2.1 added 20.6.2015 'other' : 'Altri', // from v2.1 added 20.6.2015 'execute' : 'Esegui', // from v2.1 added 20.6.2015 'perm' : 'Permessi', // from v2.1 added 20.6.2015 'mode' : 'ModalitĂ ', // from v2.1 added 20.6.2015 'emptyFolder' : 'La cartella Ăš vuota', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'La cartella Ăš vuota\\A Trascina e rilascia per aggiungere elementi', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'La cartella Ăš vuota\\A Premi a lungo per aggiungere elementi', // from v2.1.6 added 30.12.2015 'quality' : 'QualitĂ ', // from v2.1.6 added 5.1.2016 'autoSync' : 'Sincr. automatica', // from v2.1.6 added 10.1.2016 'moveUp' : 'Sposta in alto', // from v2.1.6 added 18.1.2016 'getLink' : 'Mostra URL link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Elementi selezionati ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID cartella', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Permetti accesso non in linea', // from v2.1.10 added 3.25.2016 'reAuth' : 'Per ri-autenticarsi', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Caricamento...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Apri piĂč files', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Stai cercando di aprire $1 files. Sei sicuro di volerli aprire nel browser?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Nessun risultato soddisfa i criteri di ricerca', // from v2.1.12 added 5.16.2016 'editingFile' : 'Il file Ăš in modifica.', // from v2.1.13 added 6.3.2016 'hasSelected' : '$1 elementi sono selezionati.', // from v2.1.13 added 6.3.2016 'hasClipboard' : '$1 elementi negli appunti.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'La ricerca incrementale Ăš solo dalla vista corrente.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Reistanzia', // from v2.1.15 added 3.8.2016 'complete' : '$1 completato', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Menu contestuale', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Orientamento pagina', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Percorsi base del volume', // from v2.1.16 added 16.9.2016 'reset' : 'Resetta', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Colore di sfondo', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Selettore colori', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'Griglia di 8px', // from v2.1.16 added 4.10.2016 'enabled' : 'Abilitato', // from v2.1.16 added 4.10.2016 'disabled' : 'Disabilitato', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Nessun risultato di ricerca nella vista corrente\\APremere [Invio] per espandere l\'oggetto della ricerca.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Nessun risultato di ricerca tramite prima lettera nella vista corrente.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Etichetta di testo', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 minuti rimanenti', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Riapri con la codifica di caratteri selezionata', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Salva con la codifica di caratteri selezionata', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Seleziona cartella', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Cerca tramite la prima lettera', // from v2.1.23 added 24.3.2017 'presets' : 'Opzioni predefinite', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Troppi oggetti da spostare nel cestino', // from v2.1.25 added 9.6.2017 'TextArea' : 'Area di testo', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Svuota la cartella "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Non ci sono oggetti nella cartella "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preferenze', // from v2.1.26 added 28.6.2017 'language' : 'Impostazioni Lingua', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Inizializza le impostazioni salvate nel browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Impostazioni ToolBar', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 caratteri rimanenti.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 linee rimaste.', // from v2.1.52 added 16.1.2020 'sum' : 'Somma', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Dimensione file approssimativa', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Fuoco sull\'elemento sotto al mouse', // from v2.1.30 added 2.11.2017 'select' : 'Seleziona', // from v2.1.30 added 23.11.2017 'selectAction' : 'Azione quando un file Ăš selezionato', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Apri con l\'editor usato l\'ultima volta', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Inverti selezione', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Sei sicuro di voler rinominare $1 selezionati come $2?
      Questo non puĂČ essere annullato!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Rinomina gruppo', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Numero', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Aggiungi prefisso', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Aggiungi sufisso', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Cambia estensione', // from v2.1.31 added 8.12.2017 'columnPref' : 'Impostazioni delle colonne (visualizzazione elenco)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Tutti i cambiamenti saranno immeditamente applicati.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Qualsiasi modifica non sarĂ  visibile fino a quando non si monta questo volume.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'I seguenti volumi montati su questo volume saranno smontati. Sei sicuro di volerlo smontare?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Seleziona Info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algoritmi per visualizzare l\'hash del file', // from v2.1.33 added 10.3.2018 'infoItems' : 'Informazioni (pannello di informazioni sulla selezione)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Premi di nuovo per uscire.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Toolbar', // from v2.1.38 added 4.4.2018 'workspace' : 'Spazio di lavoro', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialogo', // from v2.1.38 added 4.4.2018 'all' : 'Tutti', // from v2.1.38 added 4.4.2018 'iconSize' : 'Dimensione icona (Visualizzazione icone)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Apri la finestra di modifica massimizzata', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Dato che le API di conversione non sono disponibili, effettua la conversione sul sito web.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'Dopo la conversione, devi caricarlo con l\'URL o con il file scaricato per salvare il file convertito.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Converti sul sito di $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrazioni', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Questo elFinder ha i seguenti servizi esterni integrati. Controlla i termini di utilizzo, le politiche sulla privacy, etc, prima di utilizzarli.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Mostra oggetti nascosti', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Nascondi oggetti nascosti', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Visualizza/Nascondi oggetti nascosti', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Tipi di file da abilitare con "Nuovo file"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Tipo del file di testo', // from v2.1.41 added 7.8.2018 'add' : 'Aggiungi', // from v2.1.41 added 7.8.2018 'theme' : 'Tema', // from v2.1.43 added 19.10.2018 'default' : 'Default', // from v2.1.43 added 19.10.2018 'description' : 'Descrizione', // from v2.1.43 added 19.10.2018 'website' : 'Website', // from v2.1.43 added 19.10.2018 'author' : 'Autore', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'Licenza', // from v2.1.43 added 19.10.2018 'exportToSave' : 'L\'oggetto non puĂČ essere salvato. Per non perdere le modifiche, devi esportarlo sul tuo computer.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Doppio click sul file per selezionarlo.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Usa schermo intero', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Sconosciuto', 'kindRoot' : 'Percorso base del volume', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Cartella', 'kindSelects' : 'Selezioni', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Alias guasto', // applications 'kindApp' : 'Applicazione', 'kindPostscript' : 'Documento Postscript', 'kindMsOffice' : 'Documento Microsoft Office', 'kindMsWord' : 'Documento Microsoft Word', 'kindMsExcel' : 'Documento Microsoft Excel', 'kindMsPP' : 'Presentazione Microsoft Powerpoint', 'kindOO' : 'Documento Open Office', 'kindAppFlash' : 'Applicazione Flash', 'kindPDF' : 'Documento PDF', 'kindTorrent' : 'File Bittorrent', 'kind7z' : 'Archivio 7z', 'kindTAR' : 'Archivio TAR', 'kindGZIP' : 'Archivio GZIP', 'kindBZIP' : 'Archivio BZIP', 'kindXZ' : 'Archivio XZ', 'kindZIP' : 'Archivio ZIP', 'kindRAR' : 'Archivio RAR', 'kindJAR' : 'File Java JAR', 'kindTTF' : 'Font True Type', 'kindOTF' : 'Font Open Type', 'kindRPM' : 'Pacchetto RPM', // texts 'kindText' : 'Documento di testo', 'kindTextPlain' : 'Testo Semplice', 'kindPHP' : 'File PHP', 'kindCSS' : 'File CSS (Cascading Style Sheet)', 'kindHTML' : 'Documento HTML', 'kindJS' : 'File Javascript', 'kindRTF' : 'File RTF (Rich Text Format)', 'kindC' : 'File C', 'kindCHeader' : 'File C (header)', 'kindCPP' : 'File C++', 'kindCPPHeader' : 'File C++ (header)', 'kindShell' : 'Script Unix shell', 'kindPython' : 'File Python', 'kindJava' : 'File Java', 'kindRuby' : 'File Ruby', 'kindPerl' : 'File Perl', 'kindSQL' : 'File SQL', 'kindXML' : 'File XML', 'kindAWK' : 'File AWK', 'kindCSV' : 'File CSV (Comma separated values)', 'kindDOCBOOK' : 'File Docbook XML', 'kindMarkdown' : 'Testo markdown', // added 20.7.2015 // images 'kindImage' : 'Immagine', 'kindBMP' : 'Immagine BMP', 'kindJPEG' : 'Immagine JPEG', 'kindGIF' : 'Immagine GIF', 'kindPNG' : 'Immagine PNG', 'kindTIFF' : 'Immagine TIFF', 'kindTGA' : 'Immagine TGA', 'kindPSD' : 'Immagine Adobe Photoshop', 'kindXBITMAP' : 'Immagine X bitmap', 'kindPXM' : 'Immagine Pixelmator', // media 'kindAudio' : 'File Audio', 'kindAudioMPEG' : 'Audio MPEG', 'kindAudioMPEG4' : 'Audio MPEG-4', 'kindAudioMIDI' : 'Audio MIDI', 'kindAudioOGG' : 'Audio Ogg Vorbis', 'kindAudioWAV' : 'Audio WAV', 'AudioPlaylist' : 'Playlist MP3', 'kindVideo' : 'File Video', 'kindVideoDV' : 'Filmato DV', 'kindVideoMPEG' : 'Filmato MPEG', 'kindVideoMPEG4' : 'Filmato MPEG-4', 'kindVideoAVI' : 'Filmato AVI', 'kindVideoMOV' : 'Filmato Quick Time', 'kindVideoWM' : 'Filmato Windows Media', 'kindVideoFlash' : 'Filmato Flash', 'kindVideoMKV' : 'Filmato Matroska', 'kindVideoOGG' : 'Filmato Ogg' } }; })); application/library/js/i18n/elfinder.sr.js000064400000037313147577724760014520 0ustar00 /** * Serbian translation * @author Momčilo m0k1 Mićanović * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.sr = { translator : 'Momčilo m0k1 Mićanović <moki.forum@gmail.com>', language : 'Srpski', direction : 'ltr', dateFormat : 'd.m.Y H:i', fancyDateFormat : '$1 H:i', messages : { /********************************** errors **********************************/ 'error' : 'GreĆĄka', 'errUnknown' : 'Nepoznata greĆĄka.', 'errUnknownCmd' : 'Nepoznata komanda.', 'errJqui' : 'Neispravna konfiguracija jQuery UI. Komponente koje mogu da se odabiru, povlače, izbacuju moraju biti uključene.', 'errNode' : 'elFinder zahteva DOM Element da bude kreiran.', 'errURL' : 'Neispravna elFinder konfiguracija! URL opcija nije postavljena.', 'errAccess' : 'Pristup odbijen.', 'errConnect' : 'Nije moguće povezivanje s skriptom.', 'errAbort' : 'Veza prekinuta.', 'errTimeout' : 'Veza odbačena.', 'errNotFound' : 'Skripta nije pronađena.', 'errResponse' : 'Neispravan odgovor skripte.', 'errConf' : 'Neispravna konfiguracija skripte.', 'errJSON' : 'PHP JSON modul nije instaliran.', 'errNoVolumes' : 'Vidljivi volumeni nisu dostupni.', 'errCmdParams' : 'NevaĆŸeći parametri za komandu "$1".', 'errDataNotJSON' : 'Podaci nisu JSON.', 'errDataEmpty' : 'Podaci nisu prazni.', 'errCmdReq' : 'Skripta zahteva komandu.', 'errOpen' : 'Nemoguće otvoriti "$1".', 'errNotFolder' : 'Objekat nije folder.', 'errNotFile' : 'Objekat nije datoteka.', 'errRead' : 'Nemoguće pročitati "$1".', 'errWrite' : 'Nemoguće pisati u "$1".', 'errPerm' : 'Dozvola je odbijena.', 'errLocked' : '"$1" je zaključan i nemoĆŸe biti preimenovan, premeĆĄten ili obrisan.', 'errExists' : 'Datoteka zvana "$1" već postoji.', 'errInvName' : 'Neispravno ime datoteke.', 'errFolderNotFound' : 'Folder nije pronađen.', 'errFileNotFound' : 'Datoteka nije pronađena.', 'errTrgFolderNotFound' : 'Izabrani folder "$1" nije pronađen.', 'errPopup' : 'PretraĆŸivač sprečava otvaranje iskačućih prozora. Da otvorite datoteku uključite iskačuće prozore u opcijama pretraĆŸivača.', 'errMkdir' : 'Nemoguće kreirati folder "$1".', 'errMkfile' : 'Nemoguće kreirati datoteku "$1".', 'errRename' : 'Nemoguće preimenovati datoteku "$1".', 'errCopyFrom' : 'Kopiranje datoteki sa "$1" nije dozvoljeno.', 'errCopyTo' : 'Kopiranje datoteki na "$1" nije dozvoljeno.', 'errUpload' : 'Greska pri slanju.', 'errUploadFile' : 'Nemoguće poslati "$1".', 'errUploadNoFiles' : 'Nisu pronađene datoteke za slanje.', 'errUploadTotalSize' : 'Podaci premaĆĄuju najveću dopuĆĄtenu veličinu.', 'errUploadFileSize' : 'Datoteka premaĆĄuje najveću dopuĆĄtenu veličinu.', 'errUploadMime' : 'Vrsta datoteke nije dopuĆĄtena.', 'errUploadTransfer' : '"$1" greĆĄka prilikom slanja.', 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', 'errReplace' : 'Unable to replace "$1".', 'errSave' : 'NemoĆŸeĆĄ sačuvati "$1".', 'errCopy' : 'NemoĆŸeĆĄ kopirati "$1".', 'errMove' : 'NemoĆŸeĆĄ premestiti "$1".', 'errCopyInItself' : 'NemoĆŸeĆĄ kopirati "$1" na istu lokaciju.', 'errRm' : 'NemoĆŸeĆĄ obrisati "$1".', 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'Nemoguće izvaditi datoteke iz "$1".', 'errArchive' : 'Nemoguće kreirati arhivu.', 'errArcType' : 'NepodrĆŸani tip arhive.', 'errNoArchive' : 'Datoteka nije arhiva ili je nepodrĆŸani tip arhive.', 'errCmdNoSupport' : 'Skripta nepodrĆŸava ovu komandu.', 'errReplByChild' : 'Folder “$1” ne moĆŸe biti zamenut stavkom koju sadrĆŸi.', 'errArcSymlinks' : 'Zbog bezbednosnih razloga ne moĆŸete raspakovati arhive koje sadrĆŸe simboličke veze ili datoteke sa nedozvoljenim imenima.', 'errArcMaxSize' : 'Arhiva je dostigla maksimalnu veličinu.', 'errResize' : 'Nemoguće promeniti veličinu "$1".', 'errResizeDegree' : 'Invalid rotate degree.', 'errResizeRotate' : 'Unable to rotate image.', 'errResizeSize' : 'Invalid image size.', 'errResizeNoChange' : 'Image size not changed.', 'errUsupportType' : 'nepodrĆŸan tip datoteke.', 'errNotUTF8Content' : 'Datoteka "$1" nije u UTF-8 formati i ne moĆŸe biti izmenjena.', 'errNetMount' : 'Nije moguće montirati "$1".', 'errNetMountNoDriver' : 'NepodrĆŸani protokol.', 'errNetMountFailed' : 'Montiranje neuspelo.', 'errNetMountHostReq' : 'Host je potreban.', 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'Kreiraj arhivu', 'cmdback' : 'Nazad', 'cmdcopy' : 'Kopiraj', 'cmdcut' : 'Iseci', 'cmddownload' : 'Preuzmi', 'cmdduplicate' : 'Dupliraj', 'cmdedit' : 'Izmeni datoteku', 'cmdextract' : 'Raspakuj arhivu', 'cmdforward' : 'Napred', 'cmdgetfile' : 'Izaberi datoteke', 'cmdhelp' : 'O ovom softveru', 'cmdhome' : 'Početna', 'cmdinfo' : 'Proveri informacije', 'cmdmkdir' : 'Novi folder', 'cmdmkfile' : 'Nova datoteka', 'cmdopen' : 'Otvori', 'cmdpaste' : 'Zalepi', 'cmdquicklook' : 'Pregledaj', 'cmdreload' : 'Povno učitaj', 'cmdrename' : 'Preimenuj', 'cmdrm' : 'ObriĆĄi', 'cmdsearch' : 'Pronađi datoteke', 'cmdup' : 'Idi na nadređeni folder', 'cmdupload' : 'PoĆĄalji datoteke', 'cmdview' : 'Pogledaj', 'cmdresize' : 'Promeni veličinu slike', 'cmdsort' : 'Sortiraj', 'cmdnetmount' : 'Mount network volume', /*********************************** buttons ***********************************/ 'btnClose' : 'Zatvori', 'btnSave' : 'Sačuvaj', 'btnRm' : 'ObriĆĄi', 'btnApply' : 'Potvrdi', 'btnCancel' : 'Prekini', 'btnNo' : 'Ne', 'btnYes' : 'Da', 'btnMount' : 'Mount', /******************************** notifications ********************************/ 'ntfopen' : 'Otvaranje foldera', 'ntffile' : 'Otvaranje datoteke', 'ntfreload' : 'Ponovo učitavanje sadrĆŸaja foldera', 'ntfmkdir' : 'Kreiranje foldera', 'ntfmkfile' : 'Kreiranje datoteke', 'ntfrm' : 'Brisanje datoteke', 'ntfcopy' : 'Kopiranje datoteke', 'ntfmove' : 'PremeĆĄtanje datoteke', 'ntfprepare' : 'Priprema za kopiranje dateoteke', 'ntfrename' : 'Primenovanje datoteke', 'ntfupload' : 'Slanje datoteke', 'ntfdownload' : 'Preuzimanje datoteke', 'ntfsave' : 'Čuvanje datoteke', 'ntfarchive' : 'Kreiranje arhive', 'ntfextract' : 'Izdvajanje datoteka iz arhive', 'ntfsearch' : 'Pretraga datoteka', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Radim neĆĄto >_<', 'ntfloadimg' : 'Učitavanje slike', 'ntfnetmount' : 'Montiranje mreĆŸnog volumena', 'ntfdim' : 'Acquiring image dimension', /************************************ dates **********************************/ 'dateUnknown' : 'nepoznat', 'Today' : 'Danas', 'Yesterday' : 'Sutra', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Maj', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Avg', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'Januar', 'February' : 'Februar', 'March' : 'Mart', 'April' : 'April', 'May' : 'Maj', 'June' : 'Jun', 'July' : 'Jul', 'August' : 'Avgust', 'September' : 'Septembar', 'October' : 'Oktobar', 'November' : 'Novembar', 'December' : 'Decembar', 'Sunday' : 'Nedelja', 'Monday' : 'Ponedeljak', 'Tuesday' : 'Utorak', 'Wednesday' : 'Sreda', 'Thursday' : 'Četvrtak', 'Friday' : 'Petak', 'Saturday' : 'Subota', 'Sun' : 'Ned', 'Mon' : 'Pon', 'Tue' : 'Uto', 'Wed' : 'Sre', 'Thu' : 'Čet', 'Fri' : 'Pet', 'Sat' : 'Sub', /******************************** sort variants ********************************/ 'sortname' : 'po imenu', 'sortkind' : 'po vrsti', 'sortsize' : 'po veličini', 'sortdate' : 'po datumu', 'sortFoldersFirst' : 'Prvo folderi', /********************************** messages **********************************/ 'confirmReq' : 'Potrebna potvrda', 'confirmRm' : 'Da li ste sigurni da ĆŸelite da obriĆĄete datoteke?
      Ovo se ne moĆŸe poniĆĄtiti!', 'confirmRepl' : 'Zameniti stare datoteke sa novima?', 'apllyAll' : 'Potvrdi za sve', 'name' : 'Ime', 'size' : 'Veličina', 'perms' : 'Dozvole', 'modify' : 'Izmenjeno', 'kind' : 'Vrsta', 'read' : 'čitanje', 'write' : 'pisanje', 'noaccess' : 'bez pristupa', 'and' : 'i', 'unknown' : 'nepoznato', 'selectall' : 'Izaberi sve datoteke', 'selectfiles' : 'Izaberi datoteku(e)', 'selectffile' : 'Izaberi prvu datoteku', 'selectlfile' : 'Izaberi poslednju datoteku', 'viewlist' : 'Popisni prikaz', 'viewicons' : 'Pregled ikona', 'places' : 'Mesta', 'calc' : 'Izračunaj', 'path' : 'Putanja', 'aliasfor' : 'Nadimak za', 'locked' : 'Zaključano', 'dim' : 'Dimenzije', 'files' : 'Datoteke', 'folders' : 'Folderi', 'items' : 'Stavke', 'yes' : 'da', 'no' : 'ne', 'link' : 'Veza', 'searcresult' : 'Rezultati pretrage', 'selected' : 'odabrane stavke', 'about' : 'O softveru', 'shortcuts' : 'Prečice', 'help' : 'Pomoć', 'webfm' : 'Web menađer datoteka', 'ver' : 'Verzija', 'protocolver' : 'verzija protokla', 'homepage' : 'Adresa projekta', 'docs' : 'Dokumentacija', 'github' : 'Forkuj nas na Github', 'twitter' : 'Prati nas na twitter', 'facebook' : 'PridruĆŸi nam se na facebook', 'team' : 'Tim', 'chiefdev' : 'glavni programer', 'developer' : 'programer', 'contributor' : 'pomoćnik', 'maintainer' : 'odrĆŸavatelj', 'translator' : 'prevodilac', 'icons' : 'Ikone', 'dontforget' : 'i ne zaboravite da ponesete peĆĄkir', 'shortcutsof' : 'Prečice isključene', 'dropFiles' : 'Prevucite datoteke ovde', 'or' : 'ili', 'selectForUpload' : 'Odaberite datoteke za slanje', 'moveFiles' : 'Premesti datoteke', 'copyFiles' : 'Kopiraj datoteke', 'rmFromPlaces' : 'Ukloni iz mesta', 'aspectRatio' : 'Omer ĆĄirine i visine', 'scale' : 'Razmera', 'width' : 'Ć irina', 'height' : 'Visina', 'resize' : 'Promeni veličinu', 'crop' : 'Iseci', 'rotate' : 'Rotiraj', 'rotate-cw' : 'Rotiraj 90 stepeni CW', 'rotate-ccw' : 'Rotiraj 90 stepeni CCW', 'degree' : 'Stepeni', 'netMountDialogTitle' : 'Montiraj mreĆŸni volumen', 'protocol' : 'Protokol', 'host' : 'Host', 'port' : 'Port', 'user' : 'Korisničko Ime', 'pass' : 'Lozinka', /********************************** mimetypes **********************************/ 'kindUnknown' : 'Nepoznat', 'kindFolder' : 'Folder', 'kindAlias' : 'Nadimak', 'kindAliasBroken' : 'Neispravan nadimak', // applications 'kindApp' : 'Aplikacija', 'kindPostscript' : 'Postscript dokument', 'kindMsOffice' : 'Microsoft Office dokument', 'kindMsWord' : 'Microsoft Word dokument', 'kindMsExcel' : 'Microsoft Excel dokument', 'kindMsPP' : 'Microsoft Powerpoint prezentacija', 'kindOO' : 'Open Office dokument', 'kindAppFlash' : 'Flash aplikacija', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent datoteka', 'kind7z' : '7z arhiva', 'kindTAR' : 'TAR arhiva', 'kindGZIP' : 'GZIP arhiva', 'kindBZIP' : 'BZIP arhiva', 'kindXZ' : 'XZ arhiva', 'kindZIP' : 'ZIP arhiva', 'kindRAR' : 'RAR arhiva', 'kindJAR' : 'Java JAR datoteka', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM paket', // texts 'kindText' : 'Teokstualni dokument', 'kindTextPlain' : 'Čist tekst', 'kindPHP' : 'PHP kod', 'kindCSS' : 'CSS kod', 'kindHTML' : 'HTML dokument', 'kindJS' : 'Javascript kod', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C kod', 'kindCHeader' : 'C header kod', 'kindCPP' : 'C++ kod', 'kindCPPHeader' : 'C++ header kod', 'kindShell' : 'Unix shell skripta', 'kindPython' : 'Python kod', 'kindJava' : 'Java kod', 'kindRuby' : 'Ruby kod', 'kindPerl' : 'Perl skripta', 'kindSQL' : 'SQL kod', 'kindXML' : 'XML dokument', 'kindAWK' : 'AWK kod', 'kindCSV' : 'Comma separated values', 'kindDOCBOOK' : 'Docbook XML dokument', // images 'kindImage' : 'Slika', 'kindBMP' : 'BMP slika', 'kindJPEG' : 'JPEG slika', 'kindGIF' : 'GIF slika', 'kindPNG' : 'PNG slika', 'kindTIFF' : 'TIFF slika', 'kindTGA' : 'TGA slika', 'kindPSD' : 'Adobe Photoshop slika', 'kindXBITMAP' : 'X bitmap slika', 'kindPXM' : 'Pixelmator slika', // media 'kindAudio' : 'Zvuk', 'kindAudioMPEG' : 'MPEG zvuk', 'kindAudioMPEG4' : 'MPEG-4 zvuk', 'kindAudioMIDI' : 'MIDI zvuk', 'kindAudioOGG' : 'Ogg Vorbis zvuk', 'kindAudioWAV' : 'WAV zvuk', 'AudioPlaylist' : 'MP3 lista', 'kindVideo' : 'Video', 'kindVideoDV' : 'DV video', 'kindVideoMPEG' : 'MPEG video', 'kindVideoMPEG4' : 'MPEG-4 video', 'kindVideoAVI' : 'AVI video', 'kindVideoMOV' : 'Quick Time video', 'kindVideoWM' : 'Windows Media video', 'kindVideoFlash' : 'Flash video', 'kindVideoMKV' : 'Matroska video', 'kindVideoOGG' : 'Ogg video' } }; })); application/library/js/i18n/elfinder.si.js000064400000126147147577724760014513 0ustar00/** * Sinhala translation * @author CodeLyokoXtEAM * @version 2018-03-26 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.si = { translator : 'CodeLyokoXtEAM <XcodeLyokoTEAM@gmail.com>', language : 'Sinhala', direction : 'ltr', dateFormat : 'Y.m.d h:i A', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM nonameDateFormat : 'Ymd-His', // to apply if upload file is noname: 120513172700 messages : { /********************************** errors **********************************/ 'error' : 'à¶Żà·à·‚à¶șකි.', 'errUnknown' : 'à¶±à·œà¶Żà¶±à·Šà¶±à· à¶Żà·à·‚à¶șකි.', 'errUnknownCmd' : 'à¶±à·œà¶Żà¶±à·Šà¶±à· විධානà¶șකි.', 'errJqui' : 'වගංගු නොවන jQuery UI සැකැස්ඞකි. තේරිà¶ș හැකි, à¶‡à¶Żà¶œà·™à¶± à¶șාඞ සහ à¶‡à¶Ż à¶Żà·à¶žà·’à¶ș හැකි කොටස් ඇතුළත් කළ à¶șුතුà¶ș.', 'errNode' : 'ElFinder විසින් DOM Element නිර්ඞාණà¶ș කිරීඞට අවශ්‍à¶șව අැත.', 'errURL' : 'වගංගු නොවන elFinder සැකැස්ඞකි! URL විකග්ඎà¶ș සැකසා නැත.', 'errAccess' : 'භාවිතà¶ș අත්හිටුවා ඇත.', 'errConnect' : 'ඎසුබිඞ(Backend) වෙත සඞ්බන්ධ වීඞට නොහැකිà¶ș.', 'errAbort' : 'සඞ්බන්ධතාවà¶ș à·€à·ƒà·à¶Żà¶žà· ඇත.', 'errTimeout' : 'සඞ්බන්ධතා කග් ඉකුත්වී ඇත.', 'errNotFound' : 'ඎසුබිඞ(Backend) සොà¶șාගත නොහැකි විà¶ș.', 'errResponse' : 'වගංගු නොවන ඎසුබිඞ(Backend) ඎ්‍රතිචාරà¶ș.', 'errConf' : 'වගංගු නොවන Backend සැකැස්ඞකි.', 'errJSON' : 'PHP JSON ඞොඩිà¶șුගà¶ș à·ƒà·Šà¶źà·à¶Žà¶±à¶ș කර නැත.', 'errNoVolumes' : 'කිà¶șවිà¶ș හැකි එ්කක(volumes) නොඞැත.', 'errCmdParams' : '"$1" නඞ් විධානà¶ș වගංගු නොවන ඎරාඞිතිà¶șකි.', 'errDataNotJSON' : 'JSON à¶Żà¶­à·Šà¶­ නොවේ.', 'errDataEmpty' : 'හිස් à¶Żà¶­à·Šà¶­à¶șකි.', 'errCmdReq' : 'Backend à·ƒà¶łà·„à· ඉග්ගන à¶œà¶Ż විධානà¶șේ නඞ අවශ්‍à¶ș වේ.', 'errOpen' : '"$1" විවෘත කළ නොහැක.', 'errNotFolder' : 'අාà¶șිත්තඞ(object) ෆොග්ඩරà¶șක් නොවේ.', 'errNotFile' : 'අාà¶șිත්තඞ(object) ගොනුවක් නොවේ.', 'errRead' : '"$1" කිà¶șවීඞට නොහැක.', 'errWrite' : '"$1" තුග ගිවීඞට නොහැකිà¶ș.', 'errPerm' : 'අවසරà¶ș නොඞැත.', 'errLocked' : '"$1" අගුළු à¶Żà¶žà· ඇති අතර එà¶ș නැවත නඞ් කිරීඞ, සඞ්ඎූර්ණà¶șෙන් à·€à·’à·ƒà·Šà¶źà·à¶Žà¶±à¶ș කිරීඞ හෝ ඉවත් කිරීඞ කළ නොහැක.', 'errExists' : '"$1" නඞ් ගොනුව à¶Żà·à¶±à¶§à¶žà¶­à·Š ඎවතී.', 'errInvName' : 'ගොනු නඞ වගංගු නොවේ.', 'errInvDirname' : 'ෆෝග්ඩර් නඞ වගංගු නොවේ.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'ෆෝග්ඩරà¶ș හඞු නොවිණි.', 'errFileNotFound' : 'ගොනුව හඞු නොවිණි.', 'errTrgFolderNotFound' : 'ඉගක්කගත ෆෝග්ඩරà¶ș "$1" හඞු නොවිනි.', 'errPopup' : 'බ්‍රවුසරà¶ș උත්ඎතන කවුළුව විවෘත කිරීඞ වළක්වà¶șි. ගොනු විවෘත කිරීඞ à·ƒà¶łà·„à· බ්‍රවුසරà¶șේ විකග්ඎ තුළ එà¶ș සක්රිà¶ș කරන්න.', 'errMkdir' : '"$1" ෆෝග්ඩරà¶ș à·ƒà·‘à¶Żà·“à¶žà¶§ නොහැකිà¶ș.', 'errMkfile' : '"$1" ගොනුව à·ƒà·‘à¶Żà·’à¶ș නොහැක.', 'errRename' : '"$1" නැවත නඞ් කිරීඞට නොහැකි විà¶ș.', 'errCopyFrom' : '"$1" volume à¶șෙන් ගොනු ඎිටඎත් කිරීඞ තහනඞ්à¶ș.', 'errCopyTo' : '"$1" volume à¶șට ගොනු ඎිටඎත් කිරීඞ තහනඞ්à¶ș.', 'errMkOutLink' : 'volume root à¶șෙන් ඎිටතට à·ƒà¶¶à·à¶łà·’à¶ș(link) නිර්ඞාණà¶ș කිරීඞට නොහැකි විà¶ș.', // from v2.1 added 03.10.2015 'errUpload' : 'උඩුගත(upload) කිරීඞේ à¶Żà·à·‚à¶șකි.', // old name - errUploadCommon 'errUploadFile' : '"$1" උඩුගත(upload) කිරීඞට නොහැකි විà¶ș.', // old name - errUpload 'errUploadNoFiles' : 'උඩුගත(upload) කිරීඞ à·ƒà¶łà·„à· ගොනු කිසිවක් සොà¶șාගත නොහැකි විà¶ș.', 'errUploadTotalSize' : 'à¶Żà¶­à·Šà¶­ අවසර à¶Żà·“ අැති උඎරිඞ ඎ්‍රඞාණà¶ș ඉක්ඞවා ඇත.', // old name - errMaxSize 'errUploadFileSize' : 'ගොනු අවසර à¶Żà·“ අැති උඎරිඞ ඎ්‍රඞාණà¶ș ඉක්ඞවා ඇත.', // old name - errFileMaxSize 'errUploadMime' : 'ගොනු වර්ගà¶șට අවසර නැත.', 'errUploadTransfer' : '"$1" ව ඞාරු කිරීඞේ à¶Żà·à·‚à¶șකි.', 'errUploadTemp' : 'upload කිරීඞ à·ƒà¶łà·„à· තාවකාගික ගොනුව à·ƒà·‘à¶Żà·’à¶ș නොහැක.', // from v2.1 added 26.09.2015 'errNotReplace' : '"$1" අාà¶șිත්තඞ(object) à¶Żà·à¶±à¶§à¶žà¶­à·Š ඞෙඞ à·ƒà·Šà¶źà·à¶±à¶șේ ඎවතී, වෙනත් වර්ගà¶șකිනි à¶Žà·Šâ€à¶»à¶­à·’à·ƒà·Šà¶źà·à¶Žà¶±à¶ș කළ නොහැක.', // new 'errReplace' : '"$1" à¶Žà·Šâ€à¶»à¶­à·’à·ƒà·Šà¶źà·à¶Žà¶±à¶ș කළ නොහැක.', 'errSave' : '"$1" සුරැකීඞට නොහැක.', 'errCopy' : '"$1" ඎිටඎත් කිරීඞට නොහැක.', 'errMove' : '"$1" සඞ්ඎූර්ණà¶șෙන් à·€à·’à·ƒà·Šà¶źà·à¶Žà¶±à¶ș කිරීඞට නොහැක.', 'errCopyInItself' : '"$1" තුගට ඎිටඎත් කිරීඞට නොහැක.', 'errRm' : '"$1" ඉවත් කිරීඞට නොහැකි විà¶ș.', 'errTrash' : 'කුණු-කූඩà¶ș තුගට à¶Żà·à¶žà·“à¶žà¶§ නොහැක.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'ඞූගාශ්‍රà¶ș ගොනු(ව) ඉවත් කළ නොහැක.', 'errExtract' : '"$1" වෙතින් ගොනු à¶Żà·’à¶œ හැරීඞට නොහැක.', 'errArchive' : 'සංරක්ෂිතà¶ș à·ƒà·‘à¶Żà·“à¶žà¶§ නොහැකි විà¶ș.', 'errArcType' : 'නොගැගඎෙන සංරක්ෂණ වර්ගà¶șකි.', 'errNoArchive' : 'ගොනුව නොගැගඎෙන සංරක්ෂණ වර්ගà¶șක් හෝ සංරක්ෂිතà¶șක් නොවේ.', 'errCmdNoSupport' : 'ඎසුබිඞ(Backend) ඞෙඞ විධානà¶ș à¶±à·œà¶Żà¶±à·“.', 'errReplByChild' : '"$1" ෆෝග්ඩරà¶ș එහිඞ අඩංගු අà¶șිතඞà¶șක් ඞගින් à¶Žà·Šâ€à¶»à¶­à·’à·ƒà·Šà¶źà·à¶Žà¶±à¶ș කළ නොහැක.', 'errArcSymlinks' : 'ආරක්ෂිත හේතුව නිසා අනුඞත නොකෙරෙන à·ƒà¶¶à·à¶łà·’ à·ƒà¶žà·Šà¶¶à¶±à·Šà¶Żà¶­à· හෝ ගිඎිගොනු නඞ් අඩංගු බැවින් සංරක්ෂිතà¶ș à¶Żà·’à¶œ හැරීඞ කිරීඞට ඉඩ à¶±à·œà¶Żà·™à¶±.', // edited 24.06.2012 'errArcMaxSize' : 'සංරක්ෂිතà¶ș ගිඎිගොනු උඎරිඞ ඎ්‍රඞාණà¶ș ඉක්ඞවා ඇත.', 'errResize' : 'ඎ්‍රතිඎ්‍රඞාණà¶ș කිරීඞට නොහැකි විà¶ș.', 'errResizeDegree' : 'වගංගු නොවන භ්‍රඞණ කෝණà¶șකි.', // added 7.3.2013 'errResizeRotate' : 'රූඎà¶ș භ්‍රඞණà¶ș කිරීඞට නොහැකි විà¶ș.', // added 7.3.2013 'errResizeSize' : 'රූඎà¶șේ ඎ්‍රඞාණà¶ș වගංගු නොවේ.', // added 7.3.2013 'errResizeNoChange' : 'රූඎà¶șේ ඎ්‍රඞාණà¶ș වෙනස් නොවුණි.', // added 7.3.2013 'errUsupportType' : 'නොගැගඎෙන ගොනු වර්ගà¶șකි.', 'errNotUTF8Content' : '"$1" ගොනුව UTF-8 හි නොඞැති අතර සංස්කරණà¶ș කළ නොහැක.', // added 9.11.2011 'errNetMount' : '"$1" සවි(mount) කිරීඞට නොහැක.', // added 17.04.2012 'errNetMountNoDriver' : 'ඎ්‍රොටොකෝගà¶ș(protocol) නොගැගඎේ.', // added 17.04.2012 'errNetMountFailed' : 'සවි කිරීඞ(mount කිරීඞ) à¶…à·ƒà·à¶»à·Šà¶źà¶š විà¶ș.', // added 17.04.2012 'errNetMountHostReq' : 'ධාරකà¶ș(Host) අවශ්‍à¶ș වේ.', // added 18.04.2012 'errSessionExpires' : 'ඔබේ අක්‍රිà¶șතාව හේතුවෙන් සැසිà¶ș(session) කග් ඉකුත් වී ඇත.', 'errCreatingTempDir' : 'තාවකාගික ඩිරෙක්ටරà¶șක්(directory) â€‹â€‹à·ƒà·‘à¶Żà·’à¶ș නොහැක: "$1"', 'errFtpDownloadFile' : 'FTP වගින් ගොනුව බාගත(download) කිරීඞට නොහැකි විà¶ș: "$1"', 'errFtpUploadFile' : 'ගොනුව FTP වෙත උඩුගත(upload) කිරීඞට නොහැකි විà¶ș: "$1"', 'errFtpMkdir' : 'FTP ඞත à¶Żà·”à¶»à·ƒà·Šà¶ź නාඞාවගිà¶șක්(remote directory) නිර්ඞාණà¶ș කිරීඞට නොහැකි විà¶ș: "$1"', 'errArchiveExec' : 'ගොනු සංරක්ෂණà¶ș(archiving) à¶šà·’à¶»à·“à¶žà·šà¶Żà·“ à¶Żà·à·‚à¶șක් ඇතිවිà¶ș: "$1"', 'errExtractExec' : 'ගොනු à¶Żà·’à¶œà·„à·à¶»à·“à¶žà·šà¶Żà·“(extracting) à¶Żà·à·‚à¶șක් ඇතිවිà¶ș: "$1"', 'errNetUnMount' : 'විසන්ධි කිරීඞට(unmount) නොහැක.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'UTF-8 වෙත ඎරිවර්තනà¶ș කළ නොහැක.', // from v2.1 added 08.04.2014 'errFolderUpload' : 'ඔබ ෆෝග්ඩරà¶ș උඩුගත(upload) කිරීඞට කැඞති නඞ් නවීන බ්‍රවුසරà¶șකින් උත්සාහ කරන්න.', // from v2.1 added 26.6.2015 'errSearchTimeout' : '"$1" සෙවීඞ කග් ඉකුත්වී ඇත. සෙවුඞ් ඎ්‍රතිඔග අර්ධ වශà¶șෙන් à¶Żà·’à·ƒà·Šà·€à·™à·Š.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'නැවත බගà¶ș(Re-authorization) ගබා à¶Żà·“à¶ž අවශ්‍à¶ș වේ.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'තෝරා ගත හැකි උඎරිඞ අà¶șිතඞ සංඛ්‍à¶șාව $1 ක් වේ.', // from v2.1.17 added 17.10.2016 'errRestore' : 'කුණු කූඩà¶șෙන් නැවත ගබා ගත නොහැක. à¶șළි ඎිහිටුවීඞේ ගඞනාන්තà¶ș(restore destination) à·„à¶łà·”à¶±à·à¶œà¶­ නොහැක.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'ඞෙඞ ගොනු වර්ගà¶șේ සංස්කාරකà¶ș හඞු නොවිණි.', // from v2.1.25 added 23.5.2017 'errServerError' : 'à·ƒà·šà·€à·à¶Żà·à¶șකà¶șේ ඎැත්තෙන්(server side) à¶Żà·à·à¶șක් ඇතිවිà¶ș.', // from v2.1.25 added 16.6.2017 'errEmpty' : '"$1" ෆෝග්ඩරà¶ș හිස් කිරීඞට නොහැක.', // from v2.1.25 added 22.6.2017 /******************************* commands names ********************************/ 'cmdarchive' : 'සංරක්ෂිතà¶ș(archive) නිර්ඞාණà¶ș කරන්න', 'cmdback' : 'ආඎසු', 'cmdcopy' : 'ඎිටඎත් කරන්න', 'cmdcut' : 'ඞුළුඞනින්ඞ ඎිටඎත් කරන්න(Cut)', 'cmddownload' : 'බාගත කරන්න(Download)', 'cmdduplicate' : 'අනුඎිටඎත් කරන්න(Duplicate)', 'cmdedit' : 'ගොනුව සංස්කරණà¶ș කරන්න', 'cmdextract' : 'සංරක්ෂිතà¶șේ ගොනු à¶Żà·’à¶œà·„à¶»à·’à¶±à·Šà¶±(Extract)', 'cmdforward' : 'à¶‰à¶Żà·’à¶»à·’à¶șට', 'cmdgetfile' : 'ගොනු තෝරන්න', 'cmdhelp' : 'ඞෙඞ à¶žà·˜à¶Żà·”à¶šà·à¶‚à¶œà¶ș à¶Žà·’à·…à·’à¶¶à¶łà·€', 'cmdhome' : 'නිවහන(Home)', 'cmdinfo' : 'තොරතුරු ගබාගන්න', 'cmdmkdir' : 'අළුත් ෆෝග්ඩරà¶șක්', 'cmdmkdirin' : 'අළුත් ෆෝග්ඩරà¶șක් තුළට', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'නව ගොනුවක්', 'cmdopen' : 'විවෘත කරන්න', 'cmdpaste' : 'à¶Żà¶žà¶±à·Šà¶±(Paste)', 'cmdquicklook' : 'ඎූර්ව à¶Żà¶»à·Šà·à¶±à¶șක්(Preview)', 'cmdreload' : 'නැවත අළුත් කරන්න(Reload)', 'cmdrename' : 'නඞ වෙනස් කරන්න', 'cmdrm' : 'ඞකන්න', 'cmdtrash' : 'කුණු කූඩà¶șට à¶Żà¶žà¶±à·Šà¶±', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'à¶șළි ඎිහිටුවන්න(Restore)', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'ගොනු සොà¶șන්න', 'cmdup' : 'ඎ්‍ර්‍රධාන නාඞාවගිà¶ș(parent directory) වෙත à¶șන්න', 'cmdupload' : 'ගොනු උඩුගත(Upload) කරන්න', 'cmdview' : 'à¶Żà¶»à·Šà·à¶±à¶ș(View)', 'cmdresize' : 'à¶Žà·Šâ€à¶»à¶źà·’à¶Žà·Šâ€à¶»à¶žà·à¶«à¶ș සහ භ්‍රඞණà¶ș', 'cmdsort' : 'වර්ගීකරණà¶ș කරන්න', 'cmdnetmount' : 'à¶ąà·à¶œ එ්කකà¶șක් සවි කරන්න(Mount network volume)', // added 18.04.2012 'cmdnetunmount': 'ගගවන්න(Unmount)', // from v2.1 added 30.04.2012 'cmdplaces' : 'ඎහසු à·ƒà·Šà¶źà·à¶±à¶șට(To Places)', // added 28.12.2014 'cmdchmod' : 'ක්‍රඞà¶ș වෙනස් කරන්න', // from v2.1 added 20.6.2015 'cmdopendir' : 'ෆෝග්ඩරà¶ș විවෘත කරන්න', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'නැවත තීරු ඎළග ඎිහිටුවන්න', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'ඎුළුග් තිරà¶ș', // from v2.1.15 added 03.08.2016 'cmdmove' : 'ඞාරු කරන්න(Move)', // from v2.1.15 added 21.08.2016 'cmdempty' : 'ෆෝග්ඩරà¶ș හිස් කරන්න', // from v2.1.25 added 22.06.2017 'cmdundo' : 'නිෂ්ඎ්‍රභ කරන්න', // from v2.1.27 added 31.07.2017 'cmdredo' : 'නැවත කරන්න', // from v2.1.27 added 31.07.2017 'cmdpreference': 'අභිඞතà¶șන් (Preferences)', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'සිà¶șග්ග තෝරන්න', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'කිසිවක් තෝරන්න එඎා', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'à·€à·’à¶»à·”à¶Żà·Šà¶° අාකාරà¶șට තෝරන්න', // from v2.1.28 added 15.08.2017 /*********************************** buttons ***********************************/ 'btnClose' : 'වසන්න', 'btnSave' : 'සුරකින්න', 'btnRm' : 'ඉවත් කරන්න', 'btnApply' : 'à¶șà·™à·à¶Żà¶±à·Šà¶±(Apply)', 'btnCancel' : 'අවගංගු කරන්න', 'btnNo' : 'නැත', 'btnYes' : 'ඔව්', 'btnMount' : 'සවිකිරීඞ(Mount)', // added 18.04.2012 'btnApprove': 'කරුණාකර $1 අනුඞත කරන්න', // from v2.1 added 26.04.2012 'btnUnmount': 'ගගවන්න(Unmount)', // from v2.1 added 30.04.2012 'btnConv' : 'ඎරිවර්තනà¶ș කරන්න', // from v2.1 added 08.04.2014 'btnCwd' : 'ඞෙතන', // from v2.1 added 22.5.2015 'btnVolume' : 'එ්කකà¶ș(Volume)', // from v2.1 added 22.5.2015 'btnAll' : 'සිà¶șග්ග', // from v2.1 added 22.5.2015 'btnMime' : 'MIME වර්ගà¶ș', // from v2.1 added 22.5.2015 'btnFileName':'ගොනුවේ නඞ', // from v2.1 added 22.5.2015 'btnSaveClose': 'සුරකින්න සහ වසන්න', // from v2.1 added 12.6.2015 'btnBackup' : 'à¶‹à¶Žà·ƒà·Šà¶ź(Backup) කරන්න', // fromv2.1 added 28.11.2015 'btnRename' : 'නඞ වෙනස් කරන්න', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'නඞ වෙනස් කරන්න(සිà¶șග්ග)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'ඎෙර ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'ඊළඟ ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'වෙනත් නඞකින් සුරකිඞින්(Save As)', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'ෆෝග්ඩරà¶ș විවෘත කරඞින්', 'ntffile' : 'ගොනුව විවෘත කරඞින්', 'ntfreload' : 'ෆෝග්ඩර් අන්තර්ගතà¶ș නැවත අළුත් කරඞින්(Reloading)', 'ntfmkdir' : 'ෆෝග්ඩරà¶șක් නිර්ඞාණà¶ș කරඞින්', 'ntfmkfile' : 'ගොනුව නිර්ඞාණà¶ș කරඞින්', 'ntfrm' : 'අà¶șිතඞà¶șන් ඞකඞින්', 'ntfcopy' : 'අà¶șිතඞà¶șන් ඎිටඎත් කරඞින්', 'ntfmove' : 'අà¶șිතඞà¶șන් සඞ්ඎූර්ණà¶șෙන් à·€à·’à·ƒà·Šà¶źà·à¶Žà¶±à¶ș කරඞින්', 'ntfprepare' : 'ඎවතින අà¶șිතඞ ඎිරික්සඞින්', 'ntfrename' : 'ගොනු නැවත නඞ් කරඞින්', 'ntfupload' : 'ගොනු උඩුගත(uploading) කරඞින්', 'ntfdownload' : 'ගොනු බාගත(downloading) කරඞින්', 'ntfsave' : 'ගොනු සුරකිඞින්', 'ntfarchive' : 'සංරක්ෂණà¶ș(archive) à·ƒà·à¶Żà¶žà·’à¶±à·Š', 'ntfextract' : 'සංරක්ෂණà¶șෙන්(archive) ගොනු à¶Żà·’à¶œà·„à¶»à·’à¶žà·’à¶±à·Š(Extracting)', 'ntfsearch' : 'ගොනු සොà¶șඞින්', 'ntfresize' : 'රූඎ ඎ්‍රඞාණà¶ș වෙනස් කරඞින්', 'ntfsmth' : 'à¶Żà·™à¶șක් කරඞින්', 'ntfloadimg' : 'ඎින්තූරà¶ș ඎූරණà¶ș කරඞින්(Loading)', 'ntfnetmount' : 'à¶ąà·à¶œ එ්කකà¶șක් සවිකරඞින්(Mounting network volume)', // added 18.04.2012 'ntfnetunmount': 'à¶ąà·à¶œ එ්කකà¶șක් ගගවඞින්(Unmounting network volume)', // from v2.1 added 30.04.2012 'ntfdim' : 'ඎිංතූරà¶șේ ඞානà¶ș(dimension) ගබාගනිඞින්', // added 20.05.2013 'ntfreaddir' : 'ෆෝග්ඩරà¶șේ තොරතුරු කිà¶șවඞින්', // from v2.1 added 01.07.2013 'ntfurl' : 'Getting URL of link', // from v2.1 added 11.03.2014 'ntfchmod' : 'ගොනු ආකරà¶ș වෙනස් කරඞින්', // from v2.1 added 20.6.2015 'ntfpreupload': 'උඩුගත(upload) කරන à¶œà¶Ż ගොනු නාඞà¶ș සත්‍à¶șාඎනà¶ș කරඞින්(Verifying)', // from v2.1 added 31.11.2015 'ntfzipdl' : 'බාගත කරගැනීඞ(download) à·ƒà¶łà·„à· ගොනුවක් නිර්ඞාණà¶ș කරඞින්', // from v2.1.7 added 23.1.2016 'ntfparents' : 'ඞාර්ග(path) තොරතුරු ගබා ගනිඞින්', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'උඩුගත කරන à¶œà¶Ż(uploaded) ගොනුව සකසඞින්', // from v2.1.17 added 2.11.2016 'ntftrash' : 'කුණු කූඩà¶șට à¶Żà¶žà¶žà·’à¶±à·Š', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'කුණු කූඩà¶șට à¶Żà·à¶žà·“à¶ž à¶șළි ඎිහිටුවඞින්(Doing restore)', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'ගඞනාන්ත(destination) ෆෝග්ඩරà¶ș ඎරීක්ෂා කරඞින්', // from v2.1.24 added 3.5.2017 'ntfundo' : 'ඎෙර ඞෙහෙà¶șුඞ(operation) ඉවත් කරඞින්', // from v2.1.27 added 31.07.2017 'ntfredo' : 'ඎෙර ආඎසු හැරවීඞ à¶șළි සැකසඞින්', // from v2.1.27 added 31.07.2017 /*********************************** volumes *********************************/ 'volume_Trash' : 'කුණු කූඩà¶ș', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'à¶±à·™à·à¶Żà¶±à·“', 'Today' : 'à¶…à¶Ż', 'Yesterday' : 'ඊà¶șේ', 'msJan' : 'à¶ąà¶±à·€à·.', 'msFeb' : 'ඎෙබ.', 'msMar' : 'ඞාර්.', 'msApr' : 'අඎ්‍රේ.', 'msMay' : 'ඞැà¶șි', 'msJun' : 'à¶ąà·–à¶±à·’', 'msJul' : 'à¶ąà·”à¶œà·’', 'msAug' : 'අගෝ.', 'msSep' : 'සැඎ්.', 'msOct' : 'ඔක්තෝ.', 'msNov' : 'නොවැ.', 'msDec' : 'à¶Żà·™à·ƒà·.', 'January' : 'à¶ąà¶±à·€à·à¶»à·’', 'February' : 'ඎෙබරවාරි', 'March' : 'ඞාර්තු', 'April' : 'අඎ්‍රේග්', 'May' : 'ඞැà¶șි', 'June' : 'à¶ąà·–à¶±à·’', 'July' : 'à¶ąà·”à¶œà·’', 'August' : 'අගෝස්තු', 'September' : 'සැඎ්තැඞ්බර්', 'October' : 'ඔක්තෝඞ්බර්', 'November' : 'නොවැඞ්බර්', 'December' : 'à¶Żà·™à·ƒà·à¶žà·Šà¶¶à¶»à·Š', 'Sunday' : 'à¶‰à¶»à·’à¶Żà·', 'Monday' : 'à·ƒà¶łà·”à¶Żà·', 'Tuesday' : 'à¶…à¶Ÿà·„à¶»à·”à·€à·à¶Żà·', 'Wednesday' : 'à¶¶à¶Żà·à¶Żà·', 'Thursday' : 'à¶¶à·Šâ€à¶»à·„à·ƒà·Šà¶Žà¶­à·’à¶±à·Šà¶Żà·', 'Friday' : 'à·ƒà·’à¶šà·”à¶»à·à¶Żà·', 'Saturday' : 'à·ƒà·™à¶±à·ƒà·”à¶»à·à¶Żà·', 'Sun' : 'à¶‰à¶»à·’à¶Żà·', 'Mon' : 'à·ƒà¶łà·”.', 'Tue' : 'අඟහ.', 'Wed' : 'à¶¶à¶Żà·à¶Żà·', 'Thu' : 'බ්‍රහස්.', 'Fri' : 'සිකු.', 'Sat' : 'සෙන.', /******************************** sort variants ********************************/ 'sortname' : 'නඞ අනුව', 'sortkind' : 'වර්ගà¶ș අනුව', 'sortsize' : 'ඎ්‍රඞාණà¶ș අනුව', 'sortdate' : 'à¶Żà·’à¶±à¶ș අනුව', 'sortFoldersFirst' : 'ෆෝග්ඩර වගට ඎළඞු තැන', 'sortperm' : 'අවසරà¶ș අනුව', // from v2.1.13 added 13.06.2016 'sortmode' : 'අාකාරà¶ș අනුව', // from v2.1.13 added 13.06.2016 'sortowner' : 'හිඞිකරු අනුව', // from v2.1.13 added 13.06.2016 'sortgroup' : 'කණ්ඩාà¶șඞ අනුව', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'එගෙසටඞ රුක්සටහනත්(Treeview)', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NewFile.txt', // added 10.11.2015 'untitled folder' : 'නව ෆෝග්ඩරà¶șක්', // added 10.11.2015 'Archive' : 'NewArchive', // from v2.1 added 10.11.2015 /********************************** messages **********************************/ 'confirmReq' : 'තහවුරු කිරීඞ අවශ්‍à¶șà¶șි', 'confirmRm' : 'අà¶șිතඞà¶șන් à·ƒà¶Żà·„à¶§à¶ž ඉවත් කිරීඞට අවශ්‍à¶ș බව ඔබට à·€à·’à·à·Šà·€à·à·ƒà¶Ż?
      ඞෙà¶ș අාඎසු හැරවිà¶ș නොහැකිà¶ș!', 'confirmRepl' : 'ඎැරණි අà¶șිතඞà¶ș නව එකක ඞගින් à¶Žà·Šâ€à¶»à¶­à·’à·ƒà·Šà¶źà·à¶Žà¶±à¶ș à¶šà¶»à¶±à·Šà¶±à¶Ż?', 'confirmRest' : 'à¶Żà·à¶±à¶§ ඎවතින අà¶șිතඞà¶ș කුණු කූඩà¶ș තුළ ඎවතින අà¶șිතඞà¶ș ඞගින් à¶Žà·Šâ€à¶»à¶­à·’à·ƒà·Šà¶źà·à¶Žà¶±à¶ș à¶šà¶»à¶±à·Šà¶±à¶Ż?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'UTF-8 හි නොවේ
      UTF-8 වෙත ඎරිවර්තනà¶ș කරන්න à¶Ż?
      සුරැකීඞෙන් ඎසු අන්තර්ගතà¶ș UTF-8 බවට ඎරිවර්තනà¶ș වේ.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'ඞෙඞ ගොනුවෙහි කේතන කේත(Character encoding) à·„à¶łà·”à¶±à·à¶œà¶­ නොහැකි විà¶ș. සංස්කරණ කිරීඞට එà¶ș තාවකාගිකව UTF-8 වෙත ඎරිවර්තනà¶ș කිරීඞ අවශ්‍à¶ș වේ.
      කරුණාකර ඞෙඞ ගොනුවෙහි අක්ෂර කේතන කේත(character encoding) තෝරන්න.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'ඞෙà¶ș වෙනස් කර ඇත.
      ඔබට වෙනස්කඞ් සුරැකීඞට නොහැකි නඞ් à·ƒà·’à¶Żà·” කරනු ගැබූ වෙනස්කඞ් අහිඞි වේ.', // from v2.1 added 15.7.2015 'confirmTrash' : 'කුණු කූඩà¶ș තුගට අà¶șිතඞà¶ș à¶șැවීඞට ඔබට අවශ්‍à¶ș à¶Ż?', //from v2.1.24 added 29.4.2017 'apllyAll' : 'සිà¶șග්ගටඞ à¶șà·œà¶Żà¶±à·Šà¶±', 'name' : 'නඞ', 'size' : 'ඎ්‍රඞාණà¶ș', 'perms' : 'අවසරà¶ș', 'modify' : 'නවීකරණà¶ș කෙරුණ à¶œà¶Żà·Šà¶Żà·™à·Š', 'kind' : 'à¶ąà·à¶­à·’à¶ș', 'read' : 'කිà¶șවන්න', 'write' : 'ගිà¶șන්න', 'noaccess' : 'ඎ්‍රවේශà¶șක් නොඞැත', 'and' : 'සහ', 'unknown' : 'à¶±à·™à·à·„à¶łà·”à¶±à¶șි', 'selectall' : 'සිà¶șගු ගොනු තෝරන්න', 'selectfiles' : 'ගොනු(ව) තෝරන්න', 'selectffile' : 'ඎළඞු ගොනුව තෝරන්න', 'selectlfile' : 'අවසාන ගොනුව තෝරන්න', 'viewlist' : 'ගැà¶șිස්තු අාකාරà¶ș', 'viewicons' : 'අà¶șිකන අාකාරà¶ș', 'places' : 'Places', 'calc' : 'ගණනà¶ș කරන්න', 'path' : 'ඞාර්ගà¶ș', 'aliasfor' : 'Alias for', 'locked' : 'අගුළු à¶Żà¶žà· ඇත', 'dim' : 'ඞාන(Dimensions)', 'files' : 'ගොනු', 'folders' : 'ෆෝග්ඩර', 'items' : 'අà¶șිතඞ(Items)', 'yes' : 'ඔව්', 'no' : 'නැත', 'link' : 'à·ƒà¶¶à·à¶łà·’à¶ș(Link)', 'searcresult' : 'සෙවුඞ් ඎ්‍රතිඔග', 'selected' : 'තෝරාගත් අà¶șිතඞ', 'about' : 'ඞේ ගැන', 'shortcuts' : 'කෙටිඞං', 'help' : 'à¶‹à¶Żà·€à·Š', 'webfm' : 'වෙබ් ගොනු කළඞනාකරු', 'ver' : 'à¶…à¶±à·”à·€à·à¶Żà¶ș(version)', 'protocolver' : 'ඎ්‍රොටොකෝගà¶ș à¶…à¶±à·”à·€à·à¶Żà¶ș(protocol version)', 'homepage' : 'ව්‍à¶șාඎෘතිà¶ș නිවහන', 'docs' : 'ගේඛනගත කිරීඞ', 'github' : 'Github හරහා à·ƒà¶‚à·€à·à¶Żà¶șේ à¶șà·™à¶Żà·™à¶±à·Šà¶±', 'twitter' : 'Twitter හරහා අඎව සඞ්බන්ධ වන්න', 'facebook' : 'Facebook හරහා අඎ සඞඟ එකතු වන්න', 'team' : 'කණ්ඩාà¶șඞ', 'chiefdev' : 'ඎ්‍රධාන සංස්කරු(chief developer)', 'developer' : 'සංස්කරු(developer)', 'contributor' : 'à¶Żà·à¶șකà¶șා(contributor)', 'maintainer' : 'නඩත්තු කරන්නා(maintainer)', 'translator' : 'ඎරිවර්තකà¶șා', 'icons' : 'අà¶șිකන', 'dontforget' : 'and don\'t forget to take your towel', 'shortcutsof' : 'කෙටිඞං අක්‍රීà¶ș කර ඇත', 'dropFiles' : 'ගොනු ඞෙතැනට à¶‡à¶Ż à¶Żà¶žà¶±à·Šà¶±', 'or' : 'හෝ', 'selectForUpload' : 'ගොනු තෝරන්න', 'moveFiles' : 'අාà¶șිත්තඞ සඞ්ඎූර්ණà¶șෙන් à·€à·’à·ƒà·Šà¶źà·à¶Žà¶±à¶ș', 'copyFiles' : 'අà¶șිතඞà¶șන් ඎිටඎත් කරන්න', 'restoreFiles' : 'Restore items', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Remove from places', 'aspectRatio' : 'à¶Żà¶»à·Šà·à¶± අනුඎාතà¶ș(Aspect ratio)', 'scale' : 'ඎරිඞාණà¶ș', 'width' : 'ඎළග', 'height' : 'උස', 'resize' : 'ඎ්‍රතිඎ්‍රඞානණà¶ș', 'crop' : 'Crop', 'rotate' : 'කැරකැවීඞ', 'rotate-cw' : 'අංශක 90කින් කරකවන්න CW', 'rotate-ccw' : 'අංශක 90කින් කරකවන්න CCW', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'ඎරිශීගක', // added 18.04.2012 'pass' : 'à¶žà·”à¶»à¶Žà¶Żà¶ș', // added 18.04.2012 'confirmUnmount' : 'Are you unmount $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014 'encoding' : 'කේතීකරණà¶ș(Encoding)', // from v2.1 added 19.12.2014 'locale' : 'Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'ඉගක්කà¶ș: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Search by input MIME Type', // from v2.1 added 22.5.2015 'owner' : 'හිඞිකරු', // from v2.1 added 20.6.2015 'group' : 'සඞූහà¶ș', // from v2.1 added 20.6.2015 'other' : 'වෙනත්', // from v2.1 added 20.6.2015 'execute' : 'ක්‍රà¶șාත්ඞක කරන්න', // from v2.1 added 20.6.2015 'perm' : 'අවසරà¶ș', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'ෆෝග්ඩරà¶ș හිස්', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'ෆාේග්ඩරà¶ș හිස්\\A අාà¶șිත්තඞ අතහැරීඞෙන් අැතුගු කරන්න', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'ෆාේග්ඩරà¶ș හිස්\\A à¶Żà·’à¶»à·Šà¶ එබීඞෙන් අාà¶șිත්තඞ අැතුගු කරන්න', // from v2.1.6 added 30.12.2015 'quality' : 'ගුණාත්ඞකභාවà¶ș', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto sync', // from v2.1.6 added 10.1.2016 'moveUp' : 'Move up', // from v2.1.6 added 18.1.2016 'getLink' : 'Get URL link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'තෝරාගත් අà¶șිතඞ ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Folder ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Allow offline access', // from v2.1.10 added 3.25.2016 'reAuth' : 'To re-authenticate', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Now loading...', // from v2.1.12 added 4.26.2016 'openMulti' : 'බහු ගොනු විවෘත කරන්න', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'ඔබ $1 ගොනු විවෘත කිරීඞට උත්සාහ කරà¶șි. බ්‍රව්සරà¶șෙන් ඔබට විවෘත කිරීඞට අවශ්‍à¶ș බව ඔබට à·€à·’à·à·Šà·€à·à·ƒà¶Ż?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'සෙවුඞ් ඉගක්කà¶șේ ගවේෂණ ඎ්‍රතිඔග නොඞැත.', // from v2.1.12 added 5.16.2016 'editingFile' : 'එà¶ș ගොනුව සංස්කරණà¶ș කිරීඞකි.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'ඔබ අà¶șිතඞ $1 ඎ්‍රඞාණà¶șක් තෝරාගෙන ඇත.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016 'reinstate' : 'à¶șà¶źà· තත්ත්වà¶șට ඎත් කරන්න', // from v2.1.15 added 3.8.2016 'complete' : '$1 සඞ්ඎූර්ණà¶șි', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Context menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Page turning', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume roots', // from v2.1.16 added 16.9.2016 'reset' : 'à¶șළි ඎිහිටුවන්න(Reset)', // from v2.1.16 added 1.10.2016 'bgcolor' : 'ඎසුබිඞ් වර්ණà¶ș', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Color picker', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'ඎික්සග් 8ක à¶Żà·à¶œ', // from v2.1.16 added 4.10.2016 'enabled' : 'සක්‍රීà¶șà¶șි', // from v2.1.16 added 4.10.2016 'disabled' : 'අක්‍රීà¶șà¶șි', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'වර්තඞාන à¶Żà¶»à·Šà·à¶±à¶ș තුළ සෙවුඞ් ඎ්‍රතිඎග හිස්ව ඇත. \\A සෙවුඞ් ඉගක්කà¶ș ඎුළුග් කිරීඞ à·ƒà¶łà·„à· [Enter] à¶șතුර ඔබන්න.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'වර්තඞාන à¶Żà¶»à·Šà·à¶±à¶șේ ඎළඞු අකුර සෙවුඞ් ඎ්‍රතිඎග හිස්ව ඎවතී.', // from v2.1.23 added 24.3.2017 'textLabel' : 'ගේබග්වග නඞ්', // from v2.1.17 added 13.10.2016 'minsLeft' : 'විනාඩි $1 ක් ගතවේ', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'ෆෝග්ඩරà¶ș තෝරන්න', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'ඎළඞු අකුරෙන් සෙවීඞ', // from v2.1.23 added 24.3.2017 'presets' : 'Presets', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017 'TextArea' : 'TextArea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preference', // from v2.1.26 added 28.6.2017 'language' : 'Language setting', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Toolbar setting', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 ක් අකුරු ඉතිරිව ඎවතී', // from v2.1.29 added 30.8.2017 'sum' : 'එකතුව', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Rough file size', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focus on the element of dialog with mouseover', // from v2.1.30 added 2.11.2017 'select' : 'තෝරන්න', // from v2.1.30 added 23.11.2017 'selectAction' : 'ගොනුවක් තේරූ විට à·ƒà·’à¶Żà·”à¶šà¶œ à¶șුතු à¶Żà·™à·Š', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017 'selectinvert' : 'à¶Žà·Šâ€à¶»à¶­à·’à·€à·’à¶»à·”à¶Żà·Šà¶° අාකාරà¶șට තෝරන්න', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Are you sure you want to rename $1 selected items like $2?
      This cannot be undone!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch rename', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Number', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Add prefix', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Add suffix', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Change extention', // from v2.1.31 added 8.12.2017 'columnPref' : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'තෝරාගැනීඞ්වග තොරතුරු', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018 /********************************** mimetypes **********************************/ 'kindUnknown' : 'à¶±à·œà¶Żà¶±à·Šà¶±à·', 'kindRoot' : 'Volume Root', // from v2.1.16 added 16.10.2016 'kindFolder' : 'ෆෝග්ඩරà¶ș', 'kindSelects' : 'තේරීඞ්', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Broken alias', // applications 'kindApp' : 'Application', 'kindPostscript' : 'Postscript ගේඛනà¶ș', 'kindMsOffice' : 'Microsoft Office ගේඛනà¶ș', 'kindMsWord' : 'Microsoft Word ගේඛනà¶ș', 'kindMsExcel' : 'Microsoft Excel ගේඛනà¶ș', 'kindMsPP' : 'Microsoft Powerpoint presentation', 'kindOO' : 'Open Office ගේඛනà¶ș', 'kindAppFlash' : 'Flash application', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent file', 'kind7z' : '7z archive', 'kindTAR' : 'TAR archive', 'kindGZIP' : 'GZIP archive', 'kindBZIP' : 'BZIP archive', 'kindXZ' : 'XZ archive', 'kindZIP' : 'ZIP archive', 'kindRAR' : 'RAR archive', 'kindJAR' : 'Java JAR file', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM package', // texts 'kindText' : 'Text ගේඛනà¶ș', 'kindTextPlain' : 'Plain text', 'kindPHP' : 'PHP ඞූගාශ්‍රà¶ș', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML ගේඛනà¶ș', 'kindJS' : 'Javascript ඞූගාශ්‍රà¶ș', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C ඞූගාශ්‍රà¶ș', 'kindCHeader' : 'C header ඞූගාශ්‍රà¶ș', 'kindCPP' : 'C++ ඞූගාශ්‍රà¶ș', 'kindCPPHeader' : 'C++ header ඞූගාශ්‍රà¶ș', 'kindShell' : 'Unix shell රචනà¶șකි', 'kindPython' : 'Python ඞූගාශ්‍රà¶ș', 'kindJava' : 'Java ඞූගාශ්‍රà¶ș', 'kindRuby' : 'Ruby ඞූගාශ්‍රà¶ș', 'kindPerl' : 'Perl රචනà¶șකි', 'kindSQL' : 'SQL ඞූගාශ්‍රà¶ș', 'kindXML' : 'XML ගේඛනà¶ș', 'kindAWK' : 'AWK ඞූගාශ්‍රà¶ș', 'kindCSV' : 'කොඞාවන් වෙන් කළ අගà¶șන්', 'kindDOCBOOK' : 'Docbook XML ගේඛනà¶ș', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'ඎින්තූරà¶ș', 'kindBMP' : 'BMP ඎින්තූරà¶ș', 'kindJPEG' : 'JPEG ඎින්තූරà¶ș', 'kindGIF' : 'GIF ඎින්තූරà¶ș', 'kindPNG' : 'PNG ඎින්තූරà¶ș', 'kindTIFF' : 'TIFF ඎින්තූරà¶ș', 'kindTGA' : 'TGA ඎින්තූරà¶ș', 'kindPSD' : 'Adobe Photoshop ඎින්තූරà¶ș', 'kindXBITMAP' : 'X bitmap ඎින්තූරà¶ș', 'kindPXM' : 'Pixelmator ඎින්තූරà¶ș', // media 'kindAudio' : 'ශබ්ධ ඞාධ්‍à¶ș', 'kindAudioMPEG' : 'MPEG ශබ්ධඎටà¶ș', 'kindAudioMPEG4' : 'MPEG-4 ශබ්ධඎටà¶ș', 'kindAudioMIDI' : 'MIDI ශබ්ධඎටà¶ș', 'kindAudioOGG' : 'Ogg Vorbis ශබ්ධඎටà¶ș', 'kindAudioWAV' : 'WAV ශබ්ධඎටà¶ș', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video ඞාධ්‍à¶ș', 'kindVideoDV' : 'DV චිත්‍රඎටà¶ș', 'kindVideoMPEG' : 'MPEG චිත්‍රඎටà¶ș', 'kindVideoMPEG4' : 'MPEG-4 චිත්‍රඎටà¶ș', 'kindVideoAVI' : 'AVI චිත්‍රඎටà¶ș', 'kindVideoMOV' : 'Quick Time චිත්‍රඎටà¶ș', 'kindVideoWM' : 'Windows Media චිත්‍රඎටà¶ș', 'kindVideoFlash' : 'Flash චිත්‍රඎටà¶ș', 'kindVideoMKV' : 'Matroska චිත්‍රඎටà¶ș', 'kindVideoOGG' : 'Ogg චිත්‍රඎටà¶ș' } }; })); application/library/js/i18n/elfinder.ja.js000064400000114315147577724760014464 0ustar00/** * Japanese translation * @author Tomoaki Yoshida * @author Naoki Sawada * @version 2021-06-02 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.ja = { translator : 'Tomoaki Yoshida <info@yoshida-studio.jp>, Naoki Sawada <hypweb+elfinder@gmail.com>', language : 'Japanese', direction : 'ltr', dateFormat : 'Y/m/d h:i A', // will show like: 2018/08/24 04:37 PM fancyDateFormat : '$1 h:i A', // will show like: 今旄 04:37 PM nonameDateFormat : 'ymd-His', // noname upload will show like: 180824-163717 messages : { /********************************** errors **********************************/ 'error' : 'ă‚šăƒ©ăƒŒ', 'errUnknown' : '䞍明ăȘă‚šăƒ©ăƒŒă§ă™ă€‚', 'errUnknownCmd' : '䞍明ăȘコマンドです。', 'errJqui' : '無ćŠčăȘ jQuery UI èš­ćźšă§ă™ă€‚Selectable, Draggable, Droppable ă‚łăƒłăƒăƒŒăƒăƒłăƒˆă‚’ć«ă‚ă‚‹ćż…èŠăŒă‚ă‚ŠăŸă™ă€‚', 'errNode' : 'elFinder は DOM Element ăŒćż…èŠă§ă™ă€‚', 'errURL' : '無ćŠčăȘ elFinder èš­ćźšă§ă™ïŒ URLă‚’èš­ćźšă•ă‚ŒăŠă„ăŸă›ă‚“ă€‚', 'errAccess' : 'ă‚ąă‚Żă‚»ă‚čăŒæ‹’ćŠă•ă‚ŒăŸă—ăŸă€‚', 'errConnect' : 'ăƒăƒƒă‚Żă‚šăƒłăƒ‰ăšăźæŽ„ç¶šăŒă§ăăŸă›ă‚“ă€‚', 'errAbort' : 'æŽ„ç¶šăŒäž­æ–­ă•ă‚ŒăŸă—ăŸă€‚', 'errTimeout' : 'æŽ„ç¶šăŒă‚żă‚€ăƒ ă‚ąă‚Šăƒˆă—ăŸă—ăŸă€‚', 'errNotFound' : 'ăƒăƒƒă‚Żă‚šăƒłăƒ‰ăŒèŠ‹ă€ă‹ă‚ŠăŸă›ă‚“ă€‚', 'errResponse' : '無ćŠčăȘバックスンドレă‚čポンă‚čです。', 'errConf' : 'ăƒăƒƒă‚Żă‚šăƒłăƒ‰ăźèš­ćźšăŒæœ‰ćŠčă§ăŻă‚ă‚ŠăŸă›ă‚“ă€‚', 'errJSON' : 'PHP JSON ăƒąă‚žăƒ„ăƒŒăƒ«ăŒă‚€ăƒłă‚čăƒˆăƒŒăƒ«ă•ă‚ŒăŠă„ăŸă›ă‚“ă€‚', 'errNoVolumes' : 'èȘ­ăżèŸŒăżćŻèƒœăȘボăƒȘăƒ„ăƒŒăƒ ăŒă‚ă‚ŠăŸă›ă‚“ă€‚', 'errCmdParams' : 'コマンド "$1"ăźăƒ‘ăƒ©ăƒĄăƒŒă‚żăƒŒăŒç„ĄćŠčです。', 'errDataNotJSON' : 'JSONăƒ‡ăƒŒă‚żă§ăŻă‚ă‚ŠăŸă›ă‚“ă€‚', 'errDataEmpty' : 'ç©șăźăƒ‡ăƒŒă‚żă§ă™ă€‚', 'errCmdReq' : 'バックスンドăƒȘクスă‚čăƒˆăŻă‚łăƒžăƒłăƒ‰ćăŒćż…èŠă§ă™ă€‚', 'errOpen' : '"$1" ă‚’é–‹ăă“ăšăŒă§ăăŸă›ă‚“ă€‚', 'errNotFolder' : 'ă‚Șăƒ–ă‚žă‚§ă‚ŻăƒˆăŒăƒ•ă‚©ăƒ«ăƒ€ă§ăŻă‚ă‚ŠăŸă›ă‚“ă€‚', 'errNotFile' : 'ă‚Șăƒ–ă‚žă‚§ă‚ŻăƒˆăŒăƒ•ă‚Ąă‚€ăƒ«ă§ăŻă‚ă‚ŠăŸă›ă‚“ă€‚', 'errRead' : '"$1" をèȘ­ăżèŸŒă‚€ă“ăšăŒă§ăăŸă›ă‚“ă€‚', 'errWrite' : '"$1" ă«æ›žăèŸŒă‚€ă“ăšăŒă§ăăŸă›ă‚“ă€‚', 'errPerm' : 'æš©é™ăŒă‚ă‚ŠăŸă›ă‚“ă€‚', 'errLocked' : '"$1" ăŻăƒ­ăƒƒă‚Żă•ă‚ŒăŠă„ă‚‹ăźă§ćć‰ăźć€‰æ›Žă€ç§»ć‹•ă€ć‰Šé™€ăŒă§ăăŸă›ă‚“ă€‚', 'errExists' : '"$1" ăšă„ă†ă‚ąă‚€ăƒ†ăƒ ćăŻă™ă§ă«ć­˜ćœšă—ăŠă„ăŸă™ă€‚', 'errInvName' : '無ćŠčăȘăƒ•ă‚Ąă‚€ăƒ«ćă§ă™ă€‚', 'errInvDirname' : '無ćŠčăȘăƒ•ă‚©ăƒ«ăƒ€ćă§ă™ă€‚', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'ăƒ•ă‚©ăƒ«ăƒ€ăŒèŠ‹ă€ă‹ă‚ŠăŸă›ă‚“ă€‚', 'errFileNotFound' : 'ăƒ•ă‚Ąă‚€ăƒ«ăŒèŠ‹ă€ă‹ă‚ŠăŸă›ă‚“ă€‚', 'errTrgFolderNotFound' : 'ă‚żăƒŒă‚Čăƒƒăƒˆăšă™ă‚‹ăƒ•ă‚©ăƒ«ăƒ€ "$1" ăŒèŠ‹ă€ă‹ă‚ŠăŸă›ă‚“ă€‚', 'errPopup' : 'ăƒăƒƒăƒ—ă‚ąăƒƒăƒ—ă‚Šă‚Łăƒłăƒ‰ă‚ŠăŒé–‹ă‘ăŸă›ă‚“ă€‚ăƒ•ă‚Ąă‚€ăƒ«ă‚’é–‹ăă«ăŻăƒ–ăƒ©ă‚Šă‚¶ăźèš­ćźšă‚’ć€‰æ›Žă—ăŠăă ă•ă„ă€‚', 'errMkdir' : 'ăƒ•ă‚©ăƒ«ăƒ€ "$1" ă‚’äœœæˆă™ă‚‹ă“ăšăŒă§ăăŸă›ă‚“ă€‚', 'errMkfile' : 'ăƒ•ă‚Ąă‚€ăƒ« "$1" ă‚’äœœæˆă™ă‚‹ă“ăšăŒă§ăăŸă›ă‚“ă€‚', 'errRename' : '"$1" ăźćć‰ă‚’ć€‰æ›Žă™ă‚‹ă“ăšăŒă§ăăŸă›ă‚“ă€‚', 'errCopyFrom' : '"$1" ă‹ă‚‰ăźăƒ•ă‚Ąă‚€ăƒ«ă‚łăƒ”ăƒŒăŻèš±ćŻă•ă‚ŒăŠă„ăŸă›ă‚“ă€‚', 'errCopyTo' : '"$1" ăžăźăƒ•ă‚Ąă‚€ăƒ«ă‚łăƒ”ăƒŒăŻèš±ćŻă•ă‚ŒăŠă„ăŸă›ă‚“ă€‚', 'errMkOutLink' : 'ボăƒȘăƒ„ăƒŒăƒ ăƒ«ăƒŒăƒˆć€–ăžăźăƒȘăƒłă‚Żă‚’äœœæˆă™ă‚‹ă“ăšăŻă§ăăŸă›ă‚“ă€‚', // from v2.1 added 03.10.2015 'errUpload' : 'ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă‚šăƒ©ăƒŒ', // old name - errUploadCommon 'errUploadFile' : '"$1" ă‚’ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă™ă‚‹ă“ăšăŒă§ăăŸă›ă‚“ă€‚', // old name - errUpload 'errUploadNoFiles' : 'ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă•ă‚ŒăŸăƒ•ă‚Ąă‚€ăƒ«ăŻă‚ă‚ŠăŸă›ă‚“ă€‚', 'errUploadTotalSize' : 'ăƒ‡ăƒŒă‚żăŒèš±ćźčゔむă‚șă‚’è¶…ăˆăŠă„ăŸă™ă€‚', // old name - errMaxSize 'errUploadFileSize' : 'ăƒ•ă‚Ąă‚€ăƒ«ăŒèš±ćźčゔむă‚șă‚’è¶…ăˆăŠă„ăŸă™ă€‚', // old name - errFileMaxSize 'errUploadMime' : 'èš±ćŻă•ă‚ŒăŠă„ăȘă„ăƒ•ă‚Ąă‚€ăƒ«ćœąćŒă§ă™ă€‚', 'errUploadTransfer' : '"$1" è»ąé€ă‚šăƒ©ăƒŒă§ă™ă€‚', 'errUploadTemp' : 'ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ç”šäž€æ™‚ăƒ•ă‚Ąă‚€ăƒ«ă‚’äœœæˆă§ăăŸă›ă‚“ă€‚', // from v2.1 added 26.09.2015 'errNotReplace' : 'ă‚ąă‚€ăƒ†ăƒ  "$1" ăŻă™ă§ă«ă“ăźć Žæ‰€ă«ă‚ă‚Šă€ă‚ąă‚€ăƒ†ăƒ ăźă‚żă‚€ăƒ—ăŒé•ă†ăźă§çœźăæ›ăˆă‚‹ă“ăšăŻă§ăăŸă›ă‚“ă€‚', // new 'errReplace' : '"$1" ă‚’çœźăæ›ăˆă‚‹ă“ăšăŒă§ăăŸă›ă‚“ă€‚', 'errSave' : '"$1" ă‚’äżć­˜ă™ă‚‹ă“ăšăŒă§ăăŸă›ă‚“ă€‚', 'errCopy' : '"$1" ă‚’ă‚łăƒ”ăƒŒă™ă‚‹ă“ăšăŒă§ăăŸă›ă‚“ă€‚', 'errMove' : '"$1" ă‚’ç§»ć‹•ă™ă‚‹ă“ăšăŒă§ăăŸă›ă‚“ă€‚', 'errCopyInItself' : '"$1" をそれè‡Șèș«ăźäž­ă«ă‚łăƒ”ăƒŒă™ă‚‹ă“ăšăŻă§ăăŸă›ă‚“ă€‚', 'errRm' : '"$1" ă‚’ć‰Šé™€ă™ă‚‹ă“ăšăŒă§ăăŸă›ă‚“ă€‚', 'errTrash' : 'ă”ăżçź±ă«ć…„ă‚Œă‚‹ă“ăšăŒă§ăăŸă›ă‚“ă€‚', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'ć…ƒăƒ•ă‚Ąă‚€ăƒ«ă‚’ć‰Šé™€ă™ă‚‹ă“ăšăŒă§ăăŸă›ă‚“ă€‚', 'errExtract' : '"$1" ă‚’è§Łć‡ă™ă‚‹ă“ăšăŒă§ăăŸă›ă‚“ă€‚', 'errArchive' : 'ă‚ąăƒŒă‚«ă‚€ăƒ–ă‚’äœœæˆă™ă‚‹ă“ăšăŒă§ăăŸă›ă‚“ă€‚', 'errArcType' : 'ă‚”ăƒăƒŒăƒˆć€–ăźă‚ąăƒŒă‚«ă‚€ăƒ–ćœąćŒă§ă™ă€‚', 'errNoArchive' : 'ă‚ąăƒŒă‚«ă‚€ăƒ–ă§ăȘă„ă‹ă‚”ăƒăƒŒăƒˆă•ă‚ŒăŠă„ăȘă„ă‚ąăƒŒă‚«ă‚€ăƒ–ćœąćŒă§ă™ă€‚', 'errCmdNoSupport' : 'ă‚”ăƒăƒŒăƒˆă•ă‚ŒăŠă„ăȘいコマンドです。', 'errReplByChild' : 'ăƒ•ă‚©ăƒ«ăƒ€ "$1" ă«ć«ăŸă‚ŒăŠă‚‹ă‚ąă‚€ăƒ†ăƒ ă‚’çœźăæ›ăˆă‚‹ă“ăšăŻă§ăăŸă›ă‚“ă€‚', 'errArcSymlinks' : 'ă‚·ăƒłăƒœăƒȘックăƒȘăƒłă‚ŻăŸăŸăŻèš±ćźčされăȘă„ăƒ•ă‚Ąă‚€ăƒ«ćă‚’ć«ă‚€ă‚ąăƒŒă‚«ă‚€ăƒ–ăŻă‚»ă‚­ăƒ„ăƒȘăƒ†ă‚ŁäžŠă€è§Łć‡ă§ăăŸă›ă‚“ă€‚', // edited 24.06.2012 'errArcMaxSize' : 'ă‚ąăƒŒă‚«ă‚€ăƒ–ăŒèš±ćźčă•ă‚ŒăŸă‚”ă‚€ă‚șă‚’è¶…ăˆăŠă„ăŸă™ă€‚', 'errResize' : '"$1" たăƒȘゔむă‚șăŸăŸăŻć›žè»ąăŒă§ăăŸă›ă‚“ă€‚', 'errResizeDegree' : 'ă‚€ăƒĄăƒŒă‚žăźć›žè»ąè§’ćșŠăŒäžæ­Łă§ă™ă€‚', // added 7.3.2013 'errResizeRotate' : 'ă‚€ăƒĄăƒŒă‚žă‚’ć›žè»ąă§ăăŸă›ă‚“ă€‚', // added 7.3.2013 'errResizeSize' : 'æŒ‡ćźšă•ă‚ŒăŸă‚€ăƒĄăƒŒă‚žă‚”ă‚€ă‚șăŒäžæ­Łă§ă™ă€‚', // added 7.3.2013 'errResizeNoChange' : 'ă‚€ăƒĄăƒŒă‚žă‚”ă‚€ă‚șăȘă©ăźć€‰æ›Žç‚čăŒă‚ă‚ŠăŸă›ă‚“ă€‚', // added 7.3.2013 'errUsupportType' : 'ă“ăźăƒ•ă‚Ąă‚€ăƒ«ă‚żă‚€ăƒ—ăŻă‚”ăƒăƒŒăƒˆă•ă‚ŒăŠă„ăŸă›ă‚“ă€‚', 'errNotUTF8Content' : 'ăƒ•ă‚Ąă‚€ăƒ« "$1" には UTF-8 ä»„ć€–ăźæ–‡ć­—ăŒć«ăŸă‚ŒăŠă„ă‚‹ăźă§ç·šé›†ă§ăăŸă›ă‚“ă€‚', // added 9.11.2011 'errNetMount' : '"$1" ă‚’ăƒžă‚Šăƒłăƒˆă§ăăŸă›ă‚“ă€‚', // added 17.04.2012 'errNetMountNoDriver' : 'ă‚”ăƒăƒŒăƒˆă•ă‚ŒăŠă„ăȘă„ăƒ—ăƒ­ăƒˆă‚łăƒ«ă§ă™ă€‚', // added 17.04.2012 'errNetMountFailed' : 'ăƒžă‚Šăƒłăƒˆă«ć€±æ•—ă—ăŸă—ăŸă€‚', // added 17.04.2012 'errNetMountHostReq' : 'ホă‚čト損は濅須です。', // added 18.04.2012 'errSessionExpires' : 'ă‚ąă‚Żă‚·ăƒ§ăƒłăŒăȘă‹ăŁăŸăŸă‚ă€ă‚»ăƒƒă‚·ăƒ§ăƒłăŒæœŸé™ćˆ‡ă‚Œă«ăȘă‚ŠăŸă—ăŸă€‚', 'errCreatingTempDir' : 'äž€æ™‚ăƒ‡ă‚ŁăƒŹă‚ŻăƒˆăƒȘă‚’äœœæˆă§ăăŸă›ă‚“ïŒš"$1"', 'errFtpDownloadFile' : 'FTP ă‹ă‚‰ăƒ•ă‚Ąă‚€ăƒ«ă‚’ăƒ€ă‚Šăƒłăƒ­ăƒŒăƒ‰ă§ăăŸă›ă‚“ïŒš"$1"', 'errFtpUploadFile' : 'FTP ăžăƒ•ă‚Ąă‚€ăƒ«ă‚’ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă§ăăŸă›ă‚“ïŒš"$1"', 'errFtpMkdir' : 'FTP にăƒȘăƒąăƒŒăƒˆăƒ‡ă‚ŁăƒŹă‚ŻăƒˆăƒȘă‚’äœœæˆă§ăăŸă›ă‚“ïŒš"$1"', 'errArchiveExec' : 'ăƒ•ă‚Ąă‚€ăƒ«ăźă‚ąăƒŒă‚«ă‚€ăƒ–äž­ă«ă‚šăƒ©ăƒŒăŒç™șç”Ÿă—ăŸă—ăŸïŒš"$1"', 'errExtractExec' : 'ăƒ•ă‚Ąă‚€ăƒ«ăźæŠœć‡șäž­ă«ă‚šăƒ©ăƒŒăŒç™șç”Ÿă—ăŸă—ăŸïŒš"$1"', 'errNetUnMount' : 'ă‚ąăƒłăƒžă‚Šăƒłăƒˆă§ăăŸă›ă‚“ă€‚', // from v2.1 added 30.04.2012 'errConvUTF8' : 'UTF-8 ă«ć€‰æ›ă§ăăŸă›ă‚“ă§ă—ăŸă€‚', // from v2.1 added 08.04.2014 'errFolderUpload' : 'ăƒ•ă‚©ăƒ«ăƒ€ă‚’ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă—ăŸă„ăźă§ă‚ă‚Œă°ă€ăƒąăƒ€ăƒłăƒ–ăƒ©ă‚Šă‚¶ă‚’è©Šă—ăŠăă ă•ă„ă€‚', // from v2.1 added 26.6.2015 'errSearchTimeout' : '"$1" ă‚’æ€œçŽąäž­ă«ă‚żă‚€ăƒ ă‚ąă‚Šăƒˆă—ăŸă—ăŸă€‚æ€œçŽąç”æžœăŻéƒšćˆ†çš„ă§ă™ă€‚', // from v2.1 added 12.1.2016 'errReauthRequire' : '憍èȘćŻăŒćż…èŠă§ă™ă€‚', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'éžæŠžćŻèƒœăȘæœ€ć€§ă‚ąă‚€ăƒ†ăƒ æ•°ăŻ $1 怋です。', // from v2.1.17 added 17.10.2016 'errRestore' : '漛慈ぼç‰č漚ができăȘă„ăŸă‚ă€ă”ăżçź±ă‹ă‚‰æˆ»ă›ăŸă›ă‚“ă€‚', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'ă“ăźăƒ•ă‚Ąă‚€ăƒ«ă‚żă‚€ăƒ—ăźă‚šăƒ‡ă‚Łă‚żăƒŒăŒă‚ă‚ŠăŸă›ă‚“ă€‚', // from v2.1.25 added 23.5.2017 'errServerError' : 'ă‚”ăƒŒăƒăƒŒćŽă§ă‚šăƒ©ăƒŒăŒç™șç”Ÿă—ăŸă—ăŸă€‚', // from v2.1.25 added 16.6.2017 'errEmpty' : 'ăƒ•ă‚©ăƒ«ăƒ€"$1"をç©șă«ă™ă‚‹ă“ăšăŒă§ăăŸă›ă‚“ă€‚', // from v2.1.25 added 22.6.2017 'moreErrors' : 'さらに $1 ä»¶ăźă‚šăƒ©ăƒŒăŒă‚ă‚ŠăŸă™ă€‚', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : '侀ćșŠă«äœœæˆă§ăă‚‹ăƒ•ă‚©ăƒ«ăƒ€ăƒŒăŻ $1 ć€‹ăŸă§ă§ă™ă€‚', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'ă‚ąăƒŒă‚«ă‚€ăƒ–äœœæˆ', 'cmdback' : 'æˆ»ă‚‹', 'cmdcopy' : 'ă‚łăƒ”ăƒŒ', 'cmdcut' : 'ă‚«ăƒƒăƒˆ', 'cmddownload' : 'ăƒ€ă‚Šăƒłăƒ­ăƒŒăƒ‰', 'cmdduplicate' : 'è€‡èŁœ', 'cmdedit' : 'ăƒ•ă‚Ąă‚€ăƒ«ç·šé›†', 'cmdextract' : 'ă‚ąăƒŒă‚«ă‚€ăƒ–ă‚’è§Łć‡', 'cmdforward' : 'é€Čむ', 'cmdgetfile' : 'ăƒ•ă‚Ąă‚€ăƒ«éžæŠž', 'cmdhelp' : 'ă“ăźă‚œăƒ•ăƒˆă‚Šă‚§ă‚ąă«ă€ă„ăŠ', 'cmdhome' : 'ăƒ«ăƒŒăƒˆ', 'cmdinfo' : 'æƒ…ć ±', 'cmdmkdir' : 'æ–°èŠăƒ•ă‚©ăƒ«ăƒ€', 'cmdmkdirin' : 'æ–°èŠăƒ•ă‚©ăƒ«ăƒ€ăž', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'æ–°èŠăƒ•ă‚Ąă‚€ăƒ«', 'cmdopen' : '開く', 'cmdpaste' : 'ăƒšăƒŒă‚čト', 'cmdquicklook' : 'ăƒ—ăƒŹăƒ“ăƒ„ăƒŒ', 'cmdreload' : 'ăƒȘăƒ­ăƒŒăƒ‰', 'cmdrename' : 'ăƒȘăƒăƒŒăƒ ', 'cmdrm' : '扊陀', 'cmdtrash' : 'ごみ矱ぞ', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'ćŸ©ć…ƒ', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'ăƒ•ă‚Ąă‚€ăƒ«ă‚’æŽąă™', 'cmdup' : 'èŠȘăƒ•ă‚©ăƒ«ăƒ€ăžç§»ć‹•', 'cmdupload' : 'ăƒ•ă‚Ąă‚€ăƒ«ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰', 'cmdview' : 'ăƒ“ăƒ„ăƒŒ', 'cmdresize' : 'ăƒȘゔむă‚șăšć›žè»ą', 'cmdsort' : 'ă‚œăƒŒăƒˆ', 'cmdnetmount' : 'ăƒăƒƒăƒˆăƒŻăƒŒă‚ŻăƒœăƒȘăƒ„ăƒŒăƒ ă‚’ăƒžă‚Šăƒłăƒˆ', // added 18.04.2012 'cmdnetunmount': 'ケンマォント', // from v2.1 added 30.04.2012 'cmdplaces' : 'ă‚ˆăäœżă†é …ç›źăž', // added 28.12.2014 'cmdchmod' : 'ć±žæ€§ć€‰æ›Ž', // from v2.1 added 20.6.2015 'cmdopendir' : 'ăƒ•ă‚©ăƒ«ăƒ€ă‚’é–‹ă', // from v2.1 added 13.1.2016 'cmdcolwidth' : '戗ćč…ăƒȘă‚»ăƒƒăƒˆ', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'ăƒ•ăƒ«ă‚čクăƒȘăƒŒăƒł', // from v2.1.15 added 03.08.2016 'cmdmove' : '移拕', // from v2.1.15 added 21.08.2016 'cmdempty' : 'ăƒ•ă‚©ăƒ«ăƒ€ă‚’ç©șに', // from v2.1.25 added 22.06.2017 'cmdundo' : 'ć…ƒă«æˆ»ă™', // from v2.1.27 added 31.07.2017 'cmdredo' : 'やり目し', // from v2.1.27 added 31.07.2017 'cmdpreference': '怋äșșèš­ćźš', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'すăčăŠéžæŠž', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'éžæŠžè§Łé™€', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'éžæŠžă‚’ćè»ą', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'æ–°ă—ă„ă‚Šă‚Łăƒłăƒ‰ă‚Šă§é–‹ă', // from v2.1.38 added 3.4.2018 'cmdhide' : 'éžèĄšç€ș (怋äșșèš­ćźš)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : '閉じる', 'btnSave' : '保歘', 'btnRm' : '扊陀', 'btnApply' : '適甚', 'btnCancel' : 'ă‚­ăƒŁăƒłă‚»ăƒ«', 'btnNo' : 'いいえ', 'btnYes' : 'はい', 'btnMount' : 'マォント', // added 18.04.2012 'btnApprove': '$1ăžèĄŒăèȘćŻă™ă‚‹', // from v2.1 added 26.04.2012 'btnUnmount': 'ケンマォント', // from v2.1 added 30.04.2012 'btnConv' : 'ć€‰æ›', // from v2.1 added 08.04.2014 'btnCwd' : 'ă“ăźć Žæ‰€', // from v2.1 added 22.5.2015 'btnVolume' : 'ボăƒȘăƒ„ăƒŒăƒ ', // from v2.1 added 22.5.2015 'btnAll' : '慹ど', // from v2.1 added 22.5.2015 'btnMime' : 'MIMEă‚żă‚€ăƒ—', // from v2.1 added 22.5.2015 'btnFileName':'ăƒ•ă‚Ąă‚€ăƒ«ć', // from v2.1 added 22.5.2015 'btnSaveClose': '保歘しど閉じる', // from v2.1 added 12.6.2015 'btnBackup' : 'バックケップ', // fromv2.1 added 28.11.2015 'btnRename' : 'ăƒȘăƒăƒŒăƒ ', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'ăƒȘăƒăƒŒăƒ (慹ど)', // from v2.1.24 added 6.4.2017 'btnPrevious' : '才ま ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'æŹĄăž ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'ćˆ„ćäżć­˜', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'ăƒ•ă‚©ăƒ«ăƒ€ă‚’é–‹ă„ăŠă„ăŸă™', 'ntffile' : 'ăƒ•ă‚Ąă‚€ăƒ«ă‚’é–‹ă„ăŠă„ăŸă™', 'ntfreload' : 'ăƒ•ă‚©ăƒ«ăƒ€ă‚’ć†èȘ­èŸŒă—ăŠă„ăŸă™', 'ntfmkdir' : 'ăƒ•ă‚©ăƒ«ăƒ€ă‚’äœœæˆă—ăŠă„ăŸă™', 'ntfmkfile' : 'ăƒ•ă‚Ąă‚€ăƒ«ă‚’äœœæˆă—ăŠă„ăŸă™', 'ntfrm' : 'ă‚ąă‚€ăƒ†ăƒ ă‚’ć‰Šé™€ă—ăŠă„ăŸă™', 'ntfcopy' : 'ă‚ąă‚€ăƒ†ăƒ ă‚’ă‚łăƒ”ăƒŒă—ăŠă„ăŸă™', 'ntfmove' : 'ă‚ąă‚€ăƒ†ăƒ ă‚’ç§»ć‹•ă—ăŠă„ăŸă™', 'ntfprepare' : 'æ—ąć­˜ă‚ąă‚€ăƒ†ăƒ ă‚’çąșèȘă—ăŠă„ăŸă™', 'ntfrename' : 'ăƒ•ă‚Ąă‚€ăƒ«ćă‚’ć€‰æ›Žă—ăŠă„ăŸă™', 'ntfupload' : 'ăƒ•ă‚Ąă‚€ăƒ«ă‚’ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă—ăŠă„ăŸă™', 'ntfdownload' : 'ăƒ•ă‚Ąă‚€ăƒ«ă‚’ăƒ€ă‚Šăƒłăƒ­ăƒŒăƒ‰ă—ăŠă„ăŸă™', 'ntfsave' : 'ăƒ•ă‚Ąă‚€ăƒ«ă‚’äżć­˜ă—ăŠă„ăŸă™', 'ntfarchive' : 'ă‚ąăƒŒă‚«ă‚€ăƒ–äœœæˆă—ăŠă„ăŸă™', 'ntfextract' : 'ă‚ąăƒŒă‚«ă‚€ăƒ–ă‚’è§Łć‡ă—ăŠă„ăŸă™', 'ntfsearch' : 'ăƒ•ă‚Ąă‚€ăƒ«æ€œçŽąäž­', 'ntfresize' : 'ăƒȘゔむă‚șă—ăŠă„ăŸă™', 'ntfsmth' : 'ć‡Šç†ă‚’ă—ăŠă„ăŸă™', 'ntfloadimg' : 'ă‚€ăƒĄăƒŒă‚žă‚’èȘ­ăżèŸŒă‚“ă§ă„ăŸă™', 'ntfnetmount' : 'ネットボăƒȘăƒ„ăƒŒăƒ ă‚’ăƒžă‚Šăƒłăƒˆäž­', // added 18.04.2012 'ntfnetunmount': 'ネットボăƒȘăƒ„ăƒŒăƒ ă‚’ă‚ąăƒłăƒžă‚Šăƒłăƒˆäž­', // from v2.1 added 30.04.2012 'ntfdim' : 'ç”»ćƒă‚”ă‚€ă‚șă‚’ć–ćŸ—ă—ăŠă„ăŸă™', // added 20.05.2013 'ntfreaddir' : 'ăƒ•ă‚©ăƒ«ăƒ€æƒ…ć ±ă‚’èȘ­ăżć–ăŁăŠă„ăŸă™', // from v2.1 added 01.07.2013 'ntfurl' : 'ăƒȘンクURLă‚’ć–ćŸ—ă—ăŠă„ăŸă™', // from v2.1 added 11.03.2014 'ntfchmod' : 'ăƒ•ă‚Ąă‚€ăƒ«ć±žæ€§ă‚’ć€‰æ›Žă—ăŠă„ăŸă™', // from v2.1 added 20.6.2015 'ntfpreupload': 'ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ăƒ•ă‚Ąă‚€ăƒ«ćă‚’æ€œèšŒäž­', // from v2.1 added 31.11.2015 'ntfzipdl' : 'ăƒ€ă‚Šăƒłăƒ­ăƒŒăƒ‰ç”šăƒ•ă‚Ąă‚€ăƒ«ă‚’äœœæˆäž­', // from v2.1.7 added 23.1.2016 'ntfparents' : 'パă‚čæƒ…ć ±ă‚’ć–ćŸ—ă—ăŠă„ăŸă™', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰æžˆăżăƒ•ă‚Ąă‚€ăƒ«ă‚’ć‡Šç†äž­', // from v2.1.17 added 2.11.2016 'ntftrash' : 'ă”ăżçź±ă«ć…„ă‚ŒăŠă„ăŸă™', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'ă”ăżçź±ă‹ă‚‰ć…ƒă«æˆ»ă—ăŠă„ăŸă™', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'ćź›ć…ˆăƒ•ă‚©ăƒ«ăƒ€ă‚’çąșèȘă—ăŠă„ăŸă™', // from v2.1.24 added 3.5.2017 'ntfundo' : 'ć‰ăźæ“äœœă‚’ć–ă‚Šæ¶ˆă—ăŠć…ƒă«æˆ»ă—ăŠă„ăŸă™', // from v2.1.27 added 31.07.2017 'ntfredo' : 'ć…ƒă«æˆ»ă—ăŸæ“äœœă‚’ă‚„ă‚Šç›Žă—ăŠă„ăŸă™', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'ă‚łăƒłăƒ†ăƒłăƒ„ă‚’ăƒă‚§ăƒƒă‚Żă—ăŠă„ăŸă™', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'ごみ矱', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : '䞍明', 'Today' : '今旄', 'Yesterday' : '昚旄', 'msJan' : '1月', 'msFeb' : '2月', 'msMar' : '3月', 'msApr' : '4月', 'msMay' : '5月', 'msJun' : '6月', 'msJul' : '7月', 'msAug' : '8月', 'msSep' : '9月', 'msOct' : '10月', 'msNov' : '11月', 'msDec' : '12月', 'January' : '1月', 'February' : '2月', 'March' : '3月', 'April' : '4月', 'May' : '5月', 'June' : '6月', 'July' : '7月', 'August' : '8月', 'September' : '9月', 'October' : '10月', 'November' : '11月', 'December' : '12月', 'Sunday' : '旄曜旄', 'Monday' : '月曜旄', 'Tuesday' : '火曜旄', 'Wednesday' : '氎曜旄', 'Thursday' : '朚曜旄', 'Friday' : '金曜旄', 'Saturday' : 'ćœŸæ›œæ—„', 'Sun' : '(æ—„)', 'Mon' : '(月)', 'Tue' : '(火)', 'Wed' : '(æ°Ž)', 'Thu' : '(朚)', 'Fri' : '(金)', 'Sat' : '(期)', /******************************** sort variants ********************************/ 'sortname' : '損才順', 'sortkind' : '繼類順', 'sortsize' : 'ゔむă‚ș順', 'sortdate' : '旄付順', 'sortFoldersFirst' : 'ăƒ•ă‚©ăƒ«ăƒ€ć„Ș慈', 'sortperm' : '暩限順', // from v2.1.13 added 13.06.2016 'sortmode' : 'ć±žæ€§é †', // from v2.1.13 added 13.06.2016 'sortowner' : 'ă‚ȘăƒŒăƒŠăƒŒé †', // from v2.1.13 added 13.06.2016 'sortgroup' : 'ă‚°ăƒ«ăƒŒăƒ—é †', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'ツăƒȘăƒŒăƒ“ăƒ„ăƒŒă‚‚', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'æ–°èŠăƒ•ă‚Ąă‚€ăƒ«.txt', // added 10.11.2015 'untitled folder' : 'æ–°èŠăƒ•ă‚©ăƒ«ăƒ€', // added 10.11.2015 'Archive' : 'æ–°èŠă‚ąăƒŒă‚«ă‚€ăƒ–', // from v2.1 added 10.11.2015 'untitled file' : 'æ–°èŠăƒ•ă‚Ąă‚€ăƒ«.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: ăƒ•ă‚Ąă‚€ăƒ«', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'ć‡Šç†ă‚’ćźŸèĄŒă—ăŸă™ă‹ïŒŸ', 'confirmRm' : 'ă‚ąă‚€ăƒ†ăƒ ă‚’ćźŒć…šă«ć‰Šé™€ă—ăŠă‚‚ă‚ˆă‚ă—ă„ă§ă™ă‹ïŒŸ
      ă“ăźæ“äœœăŻć–ă‚Šæ¶ˆă—ă§ăăŸă›ă‚“ïŒ', 'confirmRepl' : 'ć€ă„ăƒ•ă‚Ąă‚€ăƒ«ă‚’æ–°ă—ă„ăƒ•ă‚Ąă‚€ăƒ«ă§äžŠæ›žăă—ăŸă™ă‹ïŒŸ (ăƒ•ă‚©ăƒ«ăƒ€ăŒć«ăŸă‚ŒăŠă„ă‚‹ć ŽćˆăŻç”±ćˆă•ă‚ŒăŸă™ă€‚çœźăæ›ăˆă‚‹ć ŽćˆăŻă€Œăƒăƒƒă‚Żă‚ąăƒƒăƒ—ă€éžæŠžă—ăŠăă ă•ă„ă€‚)', 'confirmRest' : 'æ—ąć­˜ăźă‚ąă‚€ăƒ†ăƒ ă‚’ă”ăżçź±ăźă‚ąă‚€ăƒ†ăƒ ă§äžŠæ›žăă—ăŸă™ă‹ïŒŸ', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'UTF-8 ä»„ć€–ăźæ–‡ć­—ăŒć«ăŸă‚ŒăŠă„ăŸă™ă€‚
      UTF-8 ă«ć€‰æ›ă—ăŸă™ă‹ïŒŸ
      ć€‰æ›ćŸŒăźäżć­˜ă§ă‚łăƒłăƒ†ăƒłăƒ„ăŻ UTF-8 にăȘă‚ŠăŸă™ă€‚', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'ă“ăźăƒ•ă‚Ąă‚€ăƒ«ăźæ–‡ć­—ă‚šăƒłă‚łăƒŒăƒ‡ă‚Łăƒłă‚°ă‚’ćˆ€ćˆ„ă§ăăŸă›ă‚“ă§ă—ăŸă€‚ç·šé›†ă™ă‚‹ă«ăŻäž€æ™‚çš„ă« UTF-8 ă«ć€‰æ›ă™ă‚‹ćż…èŠăŒă‚ă‚ŠăŸă™ă€‚
      æ–‡ć­—ă‚šăƒłă‚łăƒŒăƒ‡ă‚Łăƒłă‚°ă‚’æŒ‡ćźšă—ăŠăă ă•ă„ă€‚', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'ć€‰æ›Žă•ă‚ŒăŠă„ăŸă™ă€‚
      äżć­˜ă›ăšă«é–‰ă˜ă‚‹ăšç·šé›†ć†…ćźčăŒć€±ă‚ă‚ŒăŸă™ă€‚', // from v2.1 added 15.7.2015 'confirmTrash' : 'ă‚ąă‚€ăƒ†ăƒ ă‚’ă”ăżçź±ă«ç§»ć‹•ă—ăŠă‚‚ă‚ˆă‚ă—ă„ă§ă™ă‹ïŒŸ', //from v2.1.24 added 29.4.2017 'confirmMove' : 'ă‚ąă‚€ăƒ†ăƒ ă‚’"$1"ă«ç§»ć‹•ă—ăŠă‚‚ă‚ˆă‚ă—ă„ă§ă™ă‹ïŒŸ', //from v2.1.50 added 27.7.2019 'apllyAll' : 'ć…šăŠă«é©ç”šă—ăŸă™', 'name' : '損才', 'size' : 'ゔむă‚ș', 'perms' : '暩限', 'modify' : '曎新', 'kind' : '繼類', 'read' : 'èȘ­ăżć–ă‚Š', 'write' : 'æ›žăèŸŒăż', 'noaccess' : 'ă‚ąă‚Żă‚»ă‚čçŠæ­ą', 'and' : ',', 'unknown' : '䞍明', 'selectall' : 'すăčăŠăźă‚ąă‚€ăƒ†ăƒ ă‚’éžæŠž', 'selectfiles' : 'ă‚ąă‚€ăƒ†ăƒ éžæŠž', 'selectffile' : 'æœ€ćˆăźă‚ąă‚€ăƒ†ăƒ ă‚’éžæŠž', 'selectlfile' : 'æœ€ćŸŒăźă‚ąă‚€ăƒ†ăƒ ă‚’éžæŠž', 'viewlist' : 'ăƒȘă‚čăƒˆćœąćŒă§èĄšç€ș', 'viewicons' : 'ă‚ąă‚€ă‚łăƒłćœąćŒă§èĄšç€ș', 'viewSmall' : 'ć°ă‚ąă‚€ă‚łăƒł', // from v2.1.39 added 22.5.2018 'viewMedium' : 'äž­ă‚ąă‚€ă‚łăƒł', // from v2.1.39 added 22.5.2018 'viewLarge' : 'ć€§ă‚ąă‚€ă‚łăƒł', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'ç‰čć€§ă‚ąă‚€ă‚łăƒł', // from v2.1.39 added 22.5.2018 'places' : 'ă‚ˆăäœżă†é …ç›ź', 'calc' : 'èšˆçź—äž­', 'path' : 'パă‚č', 'aliasfor' : 'ă‚šă‚€ăƒȘケă‚č', 'locked' : 'ロック', 'dim' : '画玠数', 'files' : 'ăƒ•ă‚Ąă‚€ăƒ«', 'folders' : 'ăƒ•ă‚©ăƒ«ăƒ€', 'items' : 'ă‚ąă‚€ăƒ†ăƒ ', 'yes' : 'はい', 'no' : 'いいえ', 'link' : 'ăƒȘンク', 'searcresult' : 'æ€œçŽąç”æžœ', 'selected' : 'éžæŠžă•ă‚ŒăŸă‚ąă‚€ăƒ†ăƒ ', 'about' : '抂芁', 'shortcuts' : 'ă‚·ăƒ§ăƒŒăƒˆă‚«ăƒƒăƒˆ', 'help' : 'ăƒ˜ăƒ«ăƒ—', 'webfm' : 'ă‚Šă‚§ăƒ–ăƒ•ă‚Ąă‚€ăƒ«ăƒžăƒăƒŒă‚žăƒŁăƒŒ', 'ver' : 'ăƒăƒŒă‚žăƒ§ăƒł', 'protocolver' : 'ăƒ—ăƒ­ăƒˆă‚łăƒ«ăƒăƒŒă‚žăƒ§ăƒł', 'homepage' : 'ăƒ—ăƒ­ă‚žă‚§ă‚Żăƒˆăƒ›ăƒŒăƒ ', 'docs' : 'ăƒ‰ă‚­ăƒ„ăƒĄăƒłăƒ†ăƒŒă‚·ăƒ§ăƒł', 'github' : 'Github ă§ăƒ•ă‚©ăƒŒă‚Ż', 'twitter' : 'Twitter ă§ăƒ•ă‚©ăƒ­ăƒŒ', 'facebook' : 'Facebookă‚°ăƒ«ăƒŒăƒ— ă«ć‚ćŠ ', 'team' : 'ăƒăƒŒăƒ ', 'chiefdev' : 'ăƒăƒŒăƒ•ăƒ‡ăƒ™ăƒ­ăƒƒăƒ‘ăƒŒ', 'developer' : 'ăƒ‡ăƒ™ăƒ­ăƒƒăƒ‘ăƒŒ', 'contributor' : 'コントăƒȘăƒ“ăƒ„ăƒŒă‚ż', 'maintainer' : 'ăƒĄă‚€ăƒłăƒ†ăƒŠăƒŒ', 'translator' : 'çż»èšłè€…', 'icons' : 'ă‚ąă‚€ă‚łăƒł', 'dontforget' : 'タă‚Șăƒ«ćż˜ă‚ŒăĄă‚ƒă ă‚ă‚ˆïœž', 'shortcutsof' : 'ă‚·ăƒ§ăƒŒăƒˆă‚«ăƒƒăƒˆăŻćˆ©ç”šă§ăăŸă›ă‚“', 'dropFiles' : 'ă“ă“ă«ăƒ•ă‚Ąă‚€ăƒ«ă‚’ăƒ‰ăƒ­ăƒƒăƒ—', 'or' : 'ăŸăŸăŻ', 'selectForUpload' : 'ăƒ•ă‚Ąă‚€ăƒ«ă‚’éžæŠž', 'moveFiles' : 'ă‚ąă‚€ăƒ†ăƒ ă‚’ç§»ć‹•', 'copyFiles' : 'ă‚ąă‚€ăƒ†ăƒ ă‚’ă‚łăƒ”ăƒŒ', 'restoreFiles' : 'ă‚ąă‚€ăƒ†ăƒ ă‚’ć…ƒă«æˆ»ă™', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'ここから扊陀', 'aspectRatio' : '瞊æšȘæŻ”ç¶­æŒ', 'scale' : 'èĄšç€șçžźć°ș', 'width' : 'ćč…', 'height' : 'é«˜ă•', 'resize' : 'ăƒȘゔむă‚ș', 'crop' : 'ćˆ‡ă‚ŠæŠœă', 'rotate' : 'ć›žè»ą', 'rotate-cw' : '90ćșŠć·Šć›žè»ą', 'rotate-ccw' : '90ćșŠćłć›žè»ą', 'degree' : 'ćșŠ', 'netMountDialogTitle' : 'ăƒăƒƒăƒˆăƒŻăƒŒă‚ŻăƒœăƒȘăƒ„ăƒŒăƒ ăźăƒžă‚Šăƒłăƒˆ', // added 18.04.2012 'protocol' : 'ăƒ—ăƒ­ăƒˆă‚łăƒ«', // added 18.04.2012 'host' : 'ホă‚čト損', // added 18.04.2012 'port' : 'ăƒăƒŒăƒˆ', // added 18.04.2012 'user' : 'ăƒŠăƒŒă‚¶ăƒŒć', // added 18.04.2012 'pass' : 'パă‚čăƒŻăƒŒăƒ‰', // added 18.04.2012 'confirmUnmount' : '$1ă‚’ă‚ąăƒłăƒžă‚Šăƒłăƒˆă—ăŸă™ă‹?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'ăƒ–ăƒ©ă‚Šă‚¶ă‹ă‚‰ăƒ•ă‚Ąă‚€ăƒ«ă‚’ăƒ‰ăƒ­ăƒƒăƒ—ăŸăŸăŻèČŒă‚Šä»˜ă‘', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'ă“ă“ă«ăƒ•ă‚Ąă‚€ăƒ«ă‚’ăƒ‰ăƒ­ăƒƒăƒ— ăŸăŸăŻ URLăƒȘă‚čト, ç”»ćƒ(クăƒȘăƒƒăƒ—ăƒœăƒŒăƒ‰) をèČŒă‚Šä»˜ă‘', // from v2.1 added 07.04.2014 'encoding' : 'ă‚šăƒłă‚łăƒŒăƒ‡ă‚Łăƒłă‚°', // from v2.1 added 19.12.2014 'locale' : 'ăƒ­ă‚±ăƒŒăƒ«', // from v2.1 added 19.12.2014 'searchTarget' : 'æ€œçŽąçŻ„ć›Č: $1', // from v2.1 added 22.5.2015 'searchMime' : 'æŒ‡ćźšă—ăŸ MIME ă‚żă‚€ăƒ—ă§æ€œçŽą', // from v2.1 added 22.5.2015 'owner' : 'ă‚ȘăƒŒăƒŠăƒŒ', // from v2.1 added 20.6.2015 'group' : 'ă‚°ăƒ«ăƒŒăƒ—', // from v2.1 added 20.6.2015 'other' : 'ăăźä»–', // from v2.1 added 20.6.2015 'execute' : 'ćźŸèĄŒ', // from v2.1 added 20.6.2015 'perm' : 'ăƒ‘ăƒŒăƒŸăƒƒă‚·ăƒ§ăƒł', // from v2.1 added 20.6.2015 'mode' : 'ć±žæ€§', // from v2.1 added 20.6.2015 'emptyFolder' : 'ç©șăźăƒ•ă‚©ăƒ«ăƒ€', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'ç©șăźăƒ•ă‚©ăƒ«ăƒ€\\Aă‚ąă‚€ăƒ†ăƒ ă‚’èżœćŠ ă™ă‚‹ă«ăŻă“ă“ăžăƒ‰ăƒ­ăƒƒăƒ—', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'ç©șăźăƒ•ă‚©ăƒ«ăƒ€\\Aă‚ąă‚€ăƒ†ăƒ ă‚’èżœćŠ ă™ă‚‹ă«ăŻă“ă“ă‚’ăƒ­ăƒłă‚°ă‚żăƒƒăƒ—', // from v2.1.6 added 30.12.2015 'quality' : '擁èłȘ', // from v2.1.6 added 5.1.2016 'autoSync' : 'è‡Șć‹•æ›Žæ–°', // from v2.1.6 added 10.1.2016 'moveUp' : '䞊ぞ移拕', // from v2.1.6 added 18.1.2016 'getLink' : 'ăƒȘンクURLă‚’ć–ćŸ—', // from v2.1.7 added 9.2.2016 'selectedItems' : 'éžæŠžă‚ąă‚€ăƒ†ăƒ  ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ăƒ•ă‚©ăƒ«ăƒ€ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'ă‚Șăƒ•ăƒ©ă‚€ăƒł ă‚ąă‚Żă‚»ă‚čă‚’ćŻèƒœă«ă™ă‚‹', // from v2.1.10 added 3.25.2016 'reAuth' : '憍èȘèšŒă™ă‚‹', // from v2.1.10 added 3.25.2016 'nowLoading' : 'èȘ­ăżèŸŒă‚“ă§ă„ăŸă™...', // from v2.1.12 added 4.26.2016 'openMulti' : 'è€‡æ•°ăƒ•ă‚Ąă‚€ăƒ«ă‚ȘăƒŒăƒ—ăƒł', // from v2.1.12 added 5.14.2016 'openMultiConfirm': '$1 ć€‹ăźăƒ•ă‚Ąă‚€ăƒ«ă‚’é–‹ă“ă†ăšă—ăŠă„ăŸă™ă€‚ă“ăźăŸăŸăƒ–ăƒ©ă‚Šă‚¶ă§é–‹ăăŸă™ă‹ïŒŸ', // from v2.1.12 added 5.14.2016 'emptySearch' : 'æ€œçŽąćŻŸè±Ąă«è©Čćœ“ă™ă‚‹ă‚ąă‚€ăƒ†ăƒ ăŻă‚ă‚ŠăŸă›ă‚“ă€‚', // from v2.1.12 added 5.16.2016 'editingFile' : 'ăƒ•ă‚Ąă‚€ăƒ«ă‚’ç·šé›†äž­ă§ă™ă€‚', // from v2.1.13 added 6.3.2016 'hasSelected' : '$1 ć€‹ăźă‚ąă‚€ăƒ†ăƒ ă‚’éžæŠžäž­ă§ă™ă€‚', // from v2.1.13 added 6.3.2016 'hasClipboard' : '$1 ć€‹ăźă‚ąă‚€ăƒ†ăƒ ăŒă‚ŻăƒȘăƒƒăƒ—ăƒœăƒŒăƒ‰ă«ć…„ăŁăŠă„ăŸă™ă€‚', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'é€æŹĄæ€œçŽąćŻŸè±ĄăŻçŸćœšăźăƒ“ăƒ„ăƒŒăźăżă§ă™ă€‚', // from v2.1.13 added 6.30.2016 'reinstate' : 'ć…ƒă«æˆ»ă™', // from v2.1.15 added 3.8.2016 'complete' : '$1 漌äș†', // from v2.1.15 added 21.8.2016 'contextmenu' : 'コンテキă‚čăƒˆăƒĄăƒ‹ăƒ„ăƒŒ', // from v2.1.15 added 9.9.2016 'pageTurning' : 'ăƒšăƒŒă‚žă‚ăă‚Š', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'ボăƒȘăƒ„ăƒŒăƒ ăƒ«ăƒŒăƒˆ', // from v2.1.16 added 16.9.2016 'reset' : 'ăƒȘă‚»ăƒƒăƒˆ', // from v2.1.16 added 1.10.2016 'bgcolor' : 'èƒŒæ™Żè‰Č', // from v2.1.16 added 1.10.2016 'colorPicker' : 'ă‚«ăƒ©ăƒŒăƒ”ăƒƒă‚«ăƒŒ', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8pxグăƒȘッド', // from v2.1.16 added 4.10.2016 'enabled' : '有ćŠč', // from v2.1.16 added 4.10.2016 'disabled' : '無ćŠč', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'çŸćœšăźăƒ“ăƒ„ăƒŒć†…ă«è©Čćœ“ă™ă‚‹ă‚ąă‚€ăƒ†ăƒ ăŻă‚ă‚ŠăŸă›ă‚“ă€‚\\A[Enter]ă‚­ăƒŒă§æ€œçŽąćŻŸè±Ąă‚’æ‹Ąă’ăŸă™ă€‚', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'çŸćœšăźăƒ“ăƒ„ăƒŒć†…ă«æŒ‡ćźšă•ă‚ŒăŸæ–‡ć­—ă§ć§‹ăŸă‚‹ă‚ąă‚€ăƒ†ăƒ ăŻă‚ă‚ŠăŸă›ă‚“ă€‚', // from v2.1.23 added 24.3.2017 'textLabel' : 'テキă‚čăƒˆăƒ©ăƒ™ăƒ«', // from v2.1.17 added 13.10.2016 'minsLeft' : 'æź‹ă‚Š$1戆', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'éžæŠžă—ăŸă‚šăƒłă‚łăƒŒăƒ‡ă‚Łăƒłă‚°ă§é–‹ăç›Žă™', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'éžæŠžă—ăŸă‚šăƒłă‚łăƒŒăƒ‡ă‚Łăƒłă‚°ă§äżć­˜', // from v2.1.19 added 2.12.2016 'selectFolder' : 'ăƒ•ă‚©ăƒ«ăƒ€ă‚’éžæŠž', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'äž€æ–‡ć­—ç›źă§æ€œçŽą', // from v2.1.23 added 24.3.2017 'presets' : 'プăƒȘă‚»ăƒƒăƒˆ', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'ă‚ąă‚€ăƒ†ăƒ æ•°ăŒć€šă™ăŽă‚‹ăźă§ă”ăżçź±ă«ć…„ă‚Œă‚‰ă‚ŒăŸă›ă‚“ă€‚', // from v2.1.25 added 9.6.2017 'TextArea' : 'テキă‚čトスăƒȘケ', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'ăƒ•ă‚©ăƒ«ăƒ€"$1"をç©șă«ă—ăŸă™ă€‚', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'ăƒ•ă‚©ăƒ«ăƒ€"$1"ă«ă‚ąă‚€ăƒ†ăƒ ăŻă‚ă‚ŠăŸă›ă‚“ă€‚', // from v2.1.25 added 22.6.2017 'preference' : '怋äșșèš­ćźš', // from v2.1.26 added 28.6.2017 'language' : '蚀èȘž', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'ăƒ–ăƒ©ă‚Šă‚¶ă«äżć­˜ă•ă‚ŒăŸèš­ćźšă‚’ćˆæœŸćŒ–ă™ă‚‹', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'ăƒ„ăƒŒăƒ«ăƒăƒŒèš­ćźš', // from v2.1.27 added 2.8.2017 'charsLeft' : '... æź‹ă‚Š $1 æ–‡ć­—', // from v2.1.29 added 30.8.2017 'linesLeft' : '... æź‹ă‚Š $1 èĄŒ', // from v2.1.52 added 16.1.2020 'sum' : 'ćˆèšˆ', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'ć€§ăŸă‹ăȘăƒ•ă‚Ąă‚€ăƒ«ă‚”ă‚€ă‚ș', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'マォă‚čă‚ȘăƒŒăƒăƒŒă§ăƒ€ă‚€ă‚ąăƒ­ă‚°ăźèŠçŽ ă«ăƒ•ă‚©ăƒŒă‚«ă‚čする', // from v2.1.30 added 2.11.2017 'select' : '遞択', // from v2.1.30 added 23.11.2017 'selectAction' : 'ăƒ•ă‚Ąă‚€ăƒ«éžæŠžæ™‚ăźć‹•äœœ', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'ć‰ć›žäœżç”šă—ăŸă‚šăƒ‡ă‚Łă‚żăƒŒă§é–‹ă', // from v2.1.30 added 23.11.2017 'selectinvert' : 'éžæŠžă‚ąă‚€ăƒ†ăƒ ă‚’ćè»ą', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'éžæŠžă—ăŸ $1 ć€‹ăźă‚ąă‚€ăƒ†ăƒ ă‚’ $2 ăźă‚ˆă†ă«ăƒȘăƒăƒŒăƒ ă—ăŸă™ă‹ïŒŸ
      ă“ăźæ“äœœăŻć–ă‚Šæ¶ˆă—ă§ăăŸă›ă‚“ïŒ', // from v2.1.31 added 4.12.2017 'batchRename' : 'äž€æ‹ŹăƒȘăƒăƒŒăƒ ', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ 連ç•Ș', // from v2.1.31 added 8.12.2017 'asPrefix' : 'ć…ˆé ­ă«èżœćŠ ', // from v2.1.31 added 8.12.2017 'asSuffix' : 'æœ«ć°Ÿă«èżœćŠ ', // from v2.1.31 added 8.12.2017 'changeExtention' : 'æ‹ĄćŒ”ć­ć€‰æ›Ž', // from v2.1.31 added 8.12.2017 'columnPref' : 'ćˆ—é …ç›źèš­ćźš(ăƒȘă‚čăƒˆăƒ“ăƒ„ăƒŒ)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'ć…šăŠăźć€‰æ›ŽăŻă€ç›ŽăĄă«ă‚ąăƒŒă‚«ă‚€ăƒ–ă«ćæ˜ ă•ă‚ŒăŸă™ă€‚', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'こぼボăƒȘăƒ„ăƒŒăƒ ă‚’ă‚ąăƒłăƒžă‚Šăƒłăƒˆă™ă‚‹ăŸă§ă€ć€‰æ›ŽăŻćæ˜ ă•ă‚ŒăŸă›ă‚“ă€‚', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'こぼボăƒȘăƒ„ăƒŒăƒ ă«ăƒžă‚Šăƒłăƒˆă•ă‚ŒăŠă„ă‚‹ä»„äž‹ăźăƒœăƒȘăƒ„ăƒŒăƒ ă‚‚ă‚ąăƒłăƒžă‚Šăƒłăƒˆă•ă‚ŒăŸă™ă€‚ă‚ąăƒłăƒžă‚Šăƒłăƒˆă—ăŸă™ă‹ïŒŸ', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'éžæŠžæƒ…ć ±', // from v2.1.33 added 7.3.2018 'hashChecker' : 'ăƒ•ă‚Ąă‚€ăƒ«ăƒăƒƒă‚·ăƒ„ă‚’èĄšç€șă™ă‚‹ă‚ąăƒ«ă‚ŽăƒȘă‚șム', // from v2.1.33 added 10.3.2018 'infoItems' : 'æƒ…ć ±é …ç›ź (éžæŠžæƒ…ć ±ăƒ‘ăƒăƒ«)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'もう侀ćșŠæŠŒă™ăšç”‚äș†ă—ăŸă™ă€‚', // from v2.1.38 added 1.4.2018 'toolbar' : 'ăƒ„ăƒŒăƒ«ăƒăƒŒ', // from v2.1.38 added 4.4.2018 'workspace' : 'ăƒŻăƒŒă‚Żă‚čăƒšăƒŒă‚č', // from v2.1.38 added 4.4.2018 'dialog' : 'ăƒ€ă‚€ă‚ąăƒ­ă‚°', // from v2.1.38 added 4.4.2018 'all' : 'すăčお', // from v2.1.38 added 4.4.2018 'iconSize' : 'ă‚ąă‚€ă‚łăƒłă‚”ă‚€ă‚ș (ă‚ąă‚€ă‚łăƒłăƒ“ăƒ„ăƒŒ)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'ă‚šăƒ‡ă‚Łă‚żăƒŒă‚Šă‚Łăƒłăƒ‰ă‚Šă‚’æœ€ć€§ćŒ–ă—ăŠé–‹ă', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'çŸćœš API ă«ă‚ˆă‚‹ć€‰æ›ăŻćˆ©ç”šă§ăăȘいぼで、Web ă‚”ă‚€ăƒˆă§ć€‰æ›ă‚’èĄŒăŁăŠăă ă•ă„ă€‚', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'ć€‰æ›ćŸŒă«ć€‰æ›ă•ă‚ŒăŸăƒ•ă‚Ąă‚€ăƒ«ă‚’äżć­˜ă™ă‚‹ă«ăŻă€ă‚ąă‚€ăƒ†ăƒ ăź URL ăŸăŸăŻăƒ€ă‚Šăƒłăƒ­ăƒŒăƒ‰ă—ăŸăƒ•ă‚Ąă‚€ăƒ«ă‚’ă‚ąăƒƒăƒ—ăƒ­ăƒŒăƒ‰ă™ă‚‹ćż…èŠăŒă‚ă‚ŠăŸă™ă€‚', //from v2.1.40 added 8.7.2018 'convertOn' : '$1 ăźă‚”ă‚€ăƒˆäžŠă§ć€‰æ›ă™ă‚‹', // from v2.1.40 added 10.7.2018 'integrations' : '由搈', // from v2.1.40 added 11.7.2018 'integrationWith' : 'こぼ elFinder ăŻæŹĄăźć€–éƒšă‚”ăƒŒăƒ“ă‚čăŒç”±ćˆă•ă‚ŒăŠă„ăŸă™ă€‚ăă‚Œă‚‰ăźćˆ©ç”šèŠçŽ„ă€ăƒ—ăƒ©ă‚€ăƒă‚·ăƒŒăƒăƒȘă‚·ăƒŒăȘどをごçąșèȘăźäžŠă€ă”ćˆ©ç”šăă ă•ă„ă€‚', // from v2.1.40 added 11.7.2018 'showHidden' : 'éžèĄšç€șă‚ąă‚€ăƒ†ăƒ ă‚’èĄšç€ș', // from v2.1.41 added 24.7.2018 'hideHidden' : 'éžèĄšç€șă‚ąă‚€ăƒ†ăƒ ă‚’éš ă™', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'éžèĄšç€șă‚ąă‚€ăƒ†ăƒ ăźèĄšç€ș/éžèĄšç€ș', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'ă€Œæ–°ă—ă„ăƒ•ă‚Ąă‚€ăƒ«ă€ă§æœ‰ćŠčă«ă™ă‚‹ăƒ•ă‚Ąă‚€ăƒ«ă‚żă‚€ăƒ—', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'テキă‚čăƒˆăƒ•ă‚Ąă‚€ăƒ«ăźă‚żă‚€ăƒ—', // from v2.1.41 added 7.8.2018 'add' : 'èżœćŠ ', // from v2.1.41 added 7.8.2018 'theme' : 'ăƒ†ăƒŒăƒž', // from v2.1.43 added 19.10.2018 'default' : 'ăƒ‡ăƒ•ă‚©ăƒ«ăƒˆ', // from v2.1.43 added 19.10.2018 'description' : 'èȘŹæ˜Ž', // from v2.1.43 added 19.10.2018 'website' : 'ă‚Šă‚§ăƒ–ă‚”ă‚€ăƒˆ', // from v2.1.43 added 19.10.2018 'author' : '䜜者', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'ăƒ©ă‚€ă‚»ăƒłă‚č', // from v2.1.43 added 19.10.2018 'exportToSave' : 'ă“ăźă‚ąă‚€ăƒ†ăƒ ăŻäżć­˜ă§ăăŸă›ă‚“ă€‚ 線集憅ćźčă‚’ć€±ă‚ăȘă„ă‚ˆă†ă«ă™ă‚‹ă«ăŻă€PCに゚クă‚čăƒăƒŒăƒˆă™ă‚‹ćż…èŠăŒă‚ă‚ŠăŸă™ă€‚', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'ăƒ•ă‚Ąă‚€ăƒ«ă‚’ăƒ€ăƒ–ăƒ«ă‚ŻăƒȘăƒƒă‚Żă—ăŠéžæŠžă—ăŸă™ă€‚', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'ăƒ•ăƒ«ă‚čクăƒȘăƒŒăƒłăƒąăƒŒăƒ‰ăźćˆ©ç”š', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : '䞍明', 'kindRoot' : 'ボăƒȘăƒ„ăƒŒăƒ ăƒ«ăƒŒăƒˆ', // from v2.1.16 added 16.10.2016 'kindFolder' : 'ăƒ•ă‚©ăƒ«ăƒ€', 'kindSelects' : '耇数遞択', // from v2.1.29 added 29.8.2017 'kindAlias' : 'ćˆ„ć', 'kindAliasBroken' : 'ćź›ć…ˆäžæ˜Žăźćˆ„ć', // applications 'kindApp' : 'ケプăƒȘă‚±ăƒŒă‚·ăƒ§ăƒł', 'kindPostscript' : 'Postscript ăƒ‰ă‚­ăƒ„ăƒĄăƒłăƒˆ', 'kindMsOffice' : 'Microsoft Office ăƒ‰ă‚­ăƒ„ăƒĄăƒłăƒˆ', 'kindMsWord' : 'Microsoft Word ăƒ‰ă‚­ăƒ„ăƒĄăƒłăƒˆ', 'kindMsExcel' : 'Microsoft Excel ăƒ‰ă‚­ăƒ„ăƒĄăƒłăƒˆ', 'kindMsPP' : 'Microsoft Powerpoint ăƒ—ăƒŹă‚Œăƒłăƒ†ăƒŒă‚·ăƒ§ăƒł', 'kindOO' : 'Open Office ăƒ‰ă‚­ăƒ„ăƒĄăƒłăƒˆ', 'kindAppFlash' : 'Flash ケプăƒȘă‚±ăƒŒă‚·ăƒ§ăƒł', 'kindPDF' : 'PDF', 'kindTorrent' : 'Bittorrent ăƒ•ă‚Ąă‚€ăƒ«', 'kind7z' : '7z ă‚ąăƒŒă‚«ă‚€ăƒ–', 'kindTAR' : 'TAR ă‚ąăƒŒă‚«ă‚€ăƒ–', 'kindGZIP' : 'GZIP ă‚ąăƒŒă‚«ă‚€ăƒ–', 'kindBZIP' : 'BZIP ă‚ąăƒŒă‚«ă‚€ăƒ–', 'kindXZ' : 'XZ ă‚ąăƒŒă‚«ă‚€ăƒ–', 'kindZIP' : 'ZIP ă‚ąăƒŒă‚«ă‚€ăƒ–', 'kindRAR' : 'RAR ă‚ąăƒŒă‚«ă‚€ăƒ–', 'kindJAR' : 'Java JAR ăƒ•ă‚Ąă‚€ăƒ«', 'kindTTF' : 'True Type ăƒ•ă‚©ăƒłăƒˆ', 'kindOTF' : 'Open Type ăƒ•ă‚©ăƒłăƒˆ', 'kindRPM' : 'RPM ăƒ‘ăƒƒă‚±ăƒŒă‚ž', // texts 'kindText' : 'Text ăƒ‰ă‚­ăƒ„ăƒĄăƒłăƒˆ', 'kindTextPlain' : 'ăƒ—ăƒŹă‚€ăƒłăƒ†ă‚­ă‚čト', 'kindPHP' : 'PHP ă‚œăƒŒă‚č', 'kindCSS' : 'ă‚čă‚żă‚€ăƒ«ă‚·ăƒŒăƒˆ', 'kindHTML' : 'HTML ăƒ‰ă‚­ăƒ„ăƒĄăƒłăƒˆ', 'kindJS' : 'Javascript ă‚œăƒŒă‚č', 'kindRTF' : 'Rich Text ăƒ•ă‚©ăƒŒăƒžăƒƒăƒˆ', 'kindC' : 'C ă‚œăƒŒă‚č', 'kindCHeader' : 'C ăƒ˜ăƒƒăƒ€ăƒŒă‚œăƒŒă‚č', 'kindCPP' : 'C++ ă‚œăƒŒă‚č', 'kindCPPHeader' : 'C++ ăƒ˜ăƒƒăƒ€ăƒŒă‚œăƒŒă‚č', 'kindShell' : 'Unix shell ă‚čクăƒȘプト', 'kindPython' : 'Python ă‚œăƒŒă‚č', 'kindJava' : 'Java ă‚œăƒŒă‚č', 'kindRuby' : 'Ruby ă‚œăƒŒă‚č', 'kindPerl' : 'Perl ă‚čクăƒȘプト', 'kindSQL' : 'SQL ă‚œăƒŒă‚č', 'kindXML' : 'XML ăƒ‰ă‚­ăƒ„ăƒĄăƒłăƒˆ', 'kindAWK' : 'AWK ă‚œăƒŒă‚č', 'kindCSV' : 'CSV', 'kindDOCBOOK' : 'Docbook XML ăƒ‰ă‚­ăƒ„ăƒĄăƒłăƒˆ', 'kindMarkdown' : 'Markdown テキă‚čト', // added 20.7.2015 // images 'kindImage' : 'ă‚€ăƒĄăƒŒă‚ž', 'kindBMP' : 'BMP ă‚€ăƒĄăƒŒă‚ž', 'kindJPEG' : 'JPEG ă‚€ăƒĄăƒŒă‚ž', 'kindGIF' : 'GIF ă‚€ăƒĄăƒŒă‚ž', 'kindPNG' : 'PNG ă‚€ăƒĄăƒŒă‚ž', 'kindTIFF' : 'TIFF ă‚€ăƒĄăƒŒă‚ž', 'kindTGA' : 'TGA ă‚€ăƒĄăƒŒă‚ž', 'kindPSD' : 'Adobe Photoshop ă‚€ăƒĄăƒŒă‚ž', 'kindXBITMAP' : 'X bitmap ă‚€ăƒĄăƒŒă‚ž', 'kindPXM' : 'Pixelmator ă‚€ăƒĄăƒŒă‚ž', // media 'kindAudio' : 'ă‚ȘăƒŒăƒ‡ă‚Łă‚Șメディケ', 'kindAudioMPEG' : 'MPEG ă‚ȘăƒŒăƒ‡ă‚Łă‚Ș', 'kindAudioMPEG4' : 'MPEG-4 ă‚ȘăƒŒăƒ‡ă‚Łă‚Ș', 'kindAudioMIDI' : 'MIDI ă‚ȘăƒŒăƒ‡ă‚Łă‚Ș', 'kindAudioOGG' : 'Ogg Vorbis ă‚ȘăƒŒăƒ‡ă‚Łă‚Ș', 'kindAudioWAV' : 'WAV ă‚ȘăƒŒăƒ‡ă‚Łă‚Ș', 'AudioPlaylist' : 'MP3 ăƒ—ăƒŹă‚€ăƒȘă‚čト', 'kindVideo' : 'ビデă‚Șメディケ', 'kindVideoDV' : 'DV ăƒ ăƒŒăƒ“ăƒŒ', 'kindVideoMPEG' : 'MPEG ăƒ ăƒŒăƒ“ăƒŒ', 'kindVideoMPEG4' : 'MPEG-4 ăƒ ăƒŒăƒ“ăƒŒ', 'kindVideoAVI' : 'AVI ăƒ ăƒŒăƒ“ăƒŒ', 'kindVideoMOV' : 'Quick Time ăƒ ăƒŒăƒ“ăƒŒ', 'kindVideoWM' : 'Windows Media ăƒ ăƒŒăƒ“ăƒŒ', 'kindVideoFlash' : 'Flash ăƒ ăƒŒăƒ“ăƒŒ', 'kindVideoMKV' : 'Matroska ăƒ ăƒŒăƒ“ăƒŒ', 'kindVideoOGG' : 'Ogg ăƒ ăƒŒăƒ“ăƒŒ' } }; })); application/library/js/i18n/elfinder.LANG.js000064400000077754147577724760014632 0ustar00/** * elFinder translation template * use this file to create new translation * submit new translation via https://github.com/Studio-42/elFinder/issues * or make a pull request */ /** * XXXXX translation * @author Translator Name * @version 201x-xx-xx */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.REPLACE_WITH_xx_OR_xx_YY_LANG_CODE = { translator : 'Translator name <translator@email.tld>', language : 'Language of translation in your language', direction : 'ltr', dateFormat : 'M d, Y h:i A', // will show like: Mar 13, 2012 05:27 PM fancyDateFormat : '$1 h:i A', // will show like: Today 12:25 PM nonameDateFormat : 'ymd-His', // noname upload will show like: 120513-172700 messages : { /********************************** errors **********************************/ 'error' : 'Error', 'errUnknown' : 'Unknown error.', 'errUnknownCmd' : 'Unknown command.', 'errJqui' : 'Invalid jQuery UI configuration. Selectable, draggable and droppable components must be included.', 'errNode' : 'elFinder requires DOM Element to be created.', 'errURL' : 'Invalid elFinder configuration! URL option is not set.', 'errAccess' : 'Access denied.', 'errConnect' : 'Unable to connect to backend.', 'errAbort' : 'Connection aborted.', 'errTimeout' : 'Connection timeout.', 'errNotFound' : 'Backend not found.', 'errResponse' : 'Invalid backend response.', 'errConf' : 'Invalid backend configuration.', 'errJSON' : 'PHP JSON module not installed.', 'errNoVolumes' : 'Readable volumes not available.', 'errCmdParams' : 'Invalid parameters for command "$1".', 'errDataNotJSON' : 'Data is not JSON.', 'errDataEmpty' : 'Data is empty.', 'errCmdReq' : 'Backend request requires command name.', 'errOpen' : 'Unable to open "$1".', 'errNotFolder' : 'Object is not a folder.', 'errNotFile' : 'Object is not a file.', 'errRead' : 'Unable to read "$1".', 'errWrite' : 'Unable to write into "$1".', 'errPerm' : 'Permission denied.', 'errLocked' : '"$1" is locked and can not be renamed, moved or removed.', 'errExists' : 'Item named "$1" already exists.', 'errInvName' : 'Invalid file name.', 'errInvDirname' : 'Invalid folder name.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Folder not found.', 'errFileNotFound' : 'File not found.', 'errTrgFolderNotFound' : 'Target folder "$1" not found.', 'errPopup' : 'Browser prevented opening popup window. To open file enable it in browser options.', 'errMkdir' : 'Unable to create folder "$1".', 'errMkfile' : 'Unable to create file "$1".', 'errRename' : 'Unable to rename "$1".', 'errCopyFrom' : 'Copying files from volume "$1" not allowed.', 'errCopyTo' : 'Copying files to volume "$1" not allowed.', 'errMkOutLink' : 'Unable to create a link to outside the volume root.', // from v2.1 added 03.10.2015 'errUpload' : 'Upload error.', // old name - errUploadCommon 'errUploadFile' : 'Unable to upload "$1".', // old name - errUpload 'errUploadNoFiles' : 'No files found for upload.', 'errUploadTotalSize' : 'Data exceeds the maximum allowed size.', // old name - errMaxSize 'errUploadFileSize' : 'File exceeds maximum allowed size.', // old name - errFileMaxSize 'errUploadMime' : 'File type not allowed.', 'errUploadTransfer' : '"$1" transfer error.', 'errUploadTemp' : 'Unable to make temporary file for upload.', // from v2.1 added 26.09.2015 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', // new 'errReplace' : 'Unable to replace "$1".', 'errSave' : 'Unable to save "$1".', 'errCopy' : 'Unable to copy "$1".', 'errMove' : 'Unable to move "$1".', 'errCopyInItself' : 'Unable to copy "$1" into itself.', 'errRm' : 'Unable to remove "$1".', 'errTrash' : 'Unable into trash.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'Unable to extract files from "$1".', 'errArchive' : 'Unable to create archive.', 'errArcType' : 'Unsupported archive type.', 'errNoArchive' : 'File is not archive or has unsupported archive type.', 'errCmdNoSupport' : 'Backend does not support this command.', 'errReplByChild' : 'The folder "$1" can\'t be replaced by an item it contains.', 'errArcSymlinks' : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012 'errArcMaxSize' : 'Archive files exceeds maximum allowed size.', 'errResize' : 'Unable to resize "$1".', 'errResizeDegree' : 'Invalid rotate degree.', // added 7.3.2013 'errResizeRotate' : 'Unable to rotate image.', // added 7.3.2013 'errResizeSize' : 'Invalid image size.', // added 7.3.2013 'errResizeNoChange' : 'Image size not changed.', // added 7.3.2013 'errUsupportType' : 'Unsupported file type.', 'errNotUTF8Content' : 'File "$1" is not in UTF-8 and cannot be edited.', // added 9.11.2011 'errNetMount' : 'Unable to mount "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Unsupported protocol.', // added 17.04.2012 'errNetMountFailed' : 'Mount failed.', // added 17.04.2012 'errNetMountHostReq' : 'Host required.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', 'errNetUnMount' : 'Unable to unmount.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Not convertible to UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Try the modern browser, If you\'d like to upload the folder.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'Timed out while searching "$1". Search result is partial.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'Re-authorization is required.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Max number of selectable items is $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Unable to restore from the trash. Can\'t identify the restore destination.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Editor not found to this file type.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Error occurred on the server side.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Unable to empty folder "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'There are $1 more errors.', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'You can create up to $1 folders at one time.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'Create archive', 'cmdback' : 'Back', 'cmdcopy' : 'Copy', 'cmdcut' : 'Cut', 'cmddownload' : 'Download', 'cmdduplicate' : 'Duplicate', 'cmdedit' : 'Edit file', 'cmdextract' : 'Extract files from archive', 'cmdforward' : 'Forward', 'cmdgetfile' : 'Select files', 'cmdhelp' : 'About this software', 'cmdhome' : 'Root', 'cmdinfo' : 'Get info', 'cmdmkdir' : 'New folder', 'cmdmkdirin' : 'Into New Folder', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'New file', 'cmdopen' : 'Open', 'cmdpaste' : 'Paste', 'cmdquicklook' : 'Preview', 'cmdreload' : 'Reload', 'cmdrename' : 'Rename', 'cmdrm' : 'Delete', 'cmdtrash' : 'Into trash', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Restore', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Find files', 'cmdup' : 'Go to parent folder', 'cmdupload' : 'Upload files', 'cmdview' : 'View', 'cmdresize' : 'Resize & Rotate', 'cmdsort' : 'Sort', 'cmdnetmount' : 'Mount network volume', // added 18.04.2012 'cmdnetunmount': 'Unmount', // from v2.1 added 30.04.2012 'cmdplaces' : 'To Places', // added 28.12.2014 'cmdchmod' : 'Change mode', // from v2.1 added 20.6.2015 'cmdopendir' : 'Open a folder', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'Reset column width', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Full Screen', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Move', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Empty the folder', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Undo', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Redo', // from v2.1.27 added 31.07.2017 'cmdpreference': 'Preferences', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Select all', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Select none', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Invert selection', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Open in new window', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Hide (Preference)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Close', 'btnSave' : 'Save', 'btnRm' : 'Remove', 'btnApply' : 'Apply', 'btnCancel' : 'Cancel', 'btnNo' : 'No', 'btnYes' : 'Yes', 'btnMount' : 'Mount', // added 18.04.2012 'btnApprove': 'Goto $1 & approve', // from v2.1 added 26.04.2012 'btnUnmount': 'Unmount', // from v2.1 added 30.04.2012 'btnConv' : 'Convert', // from v2.1 added 08.04.2014 'btnCwd' : 'Here', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'All', // from v2.1 added 22.5.2015 'btnMime' : 'MIME Type', // from v2.1 added 22.5.2015 'btnFileName':'Filename', // from v2.1 added 22.5.2015 'btnSaveClose': 'Save & Close', // from v2.1 added 12.6.2015 'btnBackup' : 'Backup', // fromv2.1 added 28.11.2015 'btnRename' : 'Rename', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Rename(All)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Prev ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Next ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Save As', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Open folder', 'ntffile' : 'Open file', 'ntfreload' : 'Reload folder content', 'ntfmkdir' : 'Creating folder', 'ntfmkfile' : 'Creating files', 'ntfrm' : 'Delete items', 'ntfcopy' : 'Copy items', 'ntfmove' : 'Move items', 'ntfprepare' : 'Checking existing items', 'ntfrename' : 'Rename files', 'ntfupload' : 'Uploading files', 'ntfdownload' : 'Downloading files', 'ntfsave' : 'Save files', 'ntfarchive' : 'Creating archive', 'ntfextract' : 'Extracting files from archive', 'ntfsearch' : 'Searching files', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'Doing something', 'ntfloadimg' : 'Loading image', 'ntfnetmount' : 'Mounting network volume', // added 18.04.2012 'ntfnetunmount': 'Unmounting network volume', // from v2.1 added 30.04.2012 'ntfdim' : 'Acquiring image dimension', // added 20.05.2013 'ntfreaddir' : 'Reading folder infomation', // from v2.1 added 01.07.2013 'ntfurl' : 'Getting URL of link', // from v2.1 added 11.03.2014 'ntfchmod' : 'Changing file mode', // from v2.1 added 20.6.2015 'ntfpreupload': 'Verifying upload file name', // from v2.1 added 31.11.2015 'ntfzipdl' : 'Creating a file for download', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Getting path infomation', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Processing the uploaded file', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Doing throw in the trash', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Doing restore from the trash', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Checking destination folder', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Undoing previous operation', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Redoing previous undone', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'Checking contents', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Trash', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'unknown', 'Today' : 'Today', 'Yesterday' : 'Yesterday', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'May', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Oct', 'msNov' : 'Nov', 'msDec' : 'Dec', 'January' : 'January', 'February' : 'February', 'March' : 'March', 'April' : 'April', 'May' : 'May', 'June' : 'June', 'July' : 'July', 'August' : 'August', 'September' : 'September', 'October' : 'October', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Sunday', 'Monday' : 'Monday', 'Tuesday' : 'Tuesday', 'Wednesday' : 'Wednesday', 'Thursday' : 'Thursday', 'Friday' : 'Friday', 'Saturday' : 'Saturday', 'Sun' : 'Sun', 'Mon' : 'Mon', 'Tue' : 'Tue', 'Wed' : 'Wed', 'Thu' : 'Thu', 'Fri' : 'Fri', 'Sat' : 'Sat', /******************************** sort variants ********************************/ 'sortname' : 'by name', 'sortkind' : 'by kind', 'sortsize' : 'by size', 'sortdate' : 'by date', 'sortFoldersFirst' : 'Folders first', 'sortperm' : 'by permission', // from v2.1.13 added 13.06.2016 'sortmode' : 'by mode', // from v2.1.13 added 13.06.2016 'sortowner' : 'by owner', // from v2.1.13 added 13.06.2016 'sortgroup' : 'by group', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Also Treeview', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NewFile.txt', // added 10.11.2015 'untitled folder' : 'NewFolder', // added 10.11.2015 'Archive' : 'NewArchive', // from v2.1 added 10.11.2015 'untitled file' : 'NewFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: File', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Confirmation required', 'confirmRm' : 'Are you sure you want to permanently remove items?
      This cannot be undone!', 'confirmRepl' : 'Replace old file with new one? (If it contains folders, it will be merged. To backup and replace, select Backup.)', 'confirmRest' : 'Replace existing item with the item in trash?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'Not in UTF-8
      Convert to UTF-8?
      Contents become UTF-8 by saving after conversion.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Character encoding of this file couldn\'t be detected. It need to temporarily convert to UTF-8 for editting.
      Please select character encoding of this file.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'It has been modified.
      Losing work if you do not save changes.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Are you sure you want to move items to trash bin?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Are you sure you want to move items to "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Apply to all', 'name' : 'Name', 'size' : 'Size', 'perms' : 'Permissions', 'modify' : 'Modified', 'kind' : 'Kind', 'read' : 'read', 'write' : 'write', 'noaccess' : 'no access', 'and' : 'and', 'unknown' : 'unknown', 'selectall' : 'Select all items', 'selectfiles' : 'Select item(s)', 'selectffile' : 'Select first item', 'selectlfile' : 'Select last item', 'viewlist' : 'List view', 'viewicons' : 'Icons view', 'viewSmall' : 'Small icons', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Medium icons', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Large icons', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'Extra large icons', // from v2.1.39 added 22.5.2018 'places' : 'Places', 'calc' : 'Calculate', 'path' : 'Path', 'aliasfor' : 'Alias for', 'locked' : 'Locked', 'dim' : 'Dimensions', 'files' : 'Files', 'folders' : 'Folders', 'items' : 'Items', 'yes' : 'yes', 'no' : 'no', 'link' : 'Link', 'searcresult' : 'Search results', 'selected' : 'selected items', 'about' : 'About', 'shortcuts' : 'Shortcuts', 'help' : 'Help', 'webfm' : 'Web file manager', 'ver' : 'Version', 'protocolver' : 'protocol version', 'homepage' : 'Project home', 'docs' : 'Documentation', 'github' : 'Fork us on GitHub', 'twitter' : 'Follow us on Twitter', 'facebook' : 'Join us on Facebook', 'team' : 'Team', 'chiefdev' : 'chief developer', 'developer' : 'developer', 'contributor' : 'contributor', 'maintainer' : 'maintainer', 'translator' : 'translator', 'icons' : 'Icons', 'dontforget' : 'and don\'t forget to take your towel', 'shortcutsof' : 'Shortcuts disabled', 'dropFiles' : 'Drop files here', 'or' : 'or', 'selectForUpload' : 'Select files', 'moveFiles' : 'Move items', 'copyFiles' : 'Copy items', 'restoreFiles' : 'Restore items', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Remove from places', 'aspectRatio' : 'Aspect ratio', 'scale' : 'Scale', 'width' : 'Width', 'height' : 'Height', 'resize' : 'Resize', 'crop' : 'Crop', 'rotate' : 'Rotate', 'rotate-cw' : 'Rotate 90 degrees CW', 'rotate-ccw' : 'Rotate 90 degrees CCW', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'User', // added 18.04.2012 'pass' : 'Password', // added 18.04.2012 'confirmUnmount' : 'Are you unmount $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Drop or Paste files from browser', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Drop files, Paste URLs or images(clipboard) here', // from v2.1 added 07.04.2014 'encoding' : 'Encoding', // from v2.1 added 19.12.2014 'locale' : 'Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'Target: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Search by input MIME Type', // from v2.1 added 22.5.2015 'owner' : 'Owner', // from v2.1 added 20.6.2015 'group' : 'Group', // from v2.1 added 20.6.2015 'other' : 'Other', // from v2.1 added 20.6.2015 'execute' : 'Execute', // from v2.1 added 20.6.2015 'perm' : 'Permission', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'Folder is empty', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Folder is empty\\A Drop to add items', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Folder is empty\\A Long tap to add items', // from v2.1.6 added 30.12.2015 'quality' : 'Quality', // from v2.1.6 added 5.1.2016 'autoSync' : 'Auto sync', // from v2.1.6 added 10.1.2016 'moveUp' : 'Move up', // from v2.1.6 added 18.1.2016 'getLink' : 'Get URL link', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Selected items ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'Folder ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Allow offline access', // from v2.1.10 added 3.25.2016 'reAuth' : 'To re-authenticate', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Now loading...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Open multiple files', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'You are trying to open the $1 files. Are you sure you want to open in browser?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Search results is empty in search target.', // from v2.1.12 added 5.16.2016 'editingFile' : 'It is editing a file.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'You have selected $1 items.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'You have $1 items in the clipboard.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Incremental search is only from the current view.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Reinstate', // from v2.1.15 added 3.8.2016 'complete' : '$1 complete', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Context menu', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Page turning', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volume roots', // from v2.1.16 added 16.9.2016 'reset' : 'Reset', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Background color', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Color picker', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px Grid', // from v2.1.16 added 4.10.2016 'enabled' : 'Enabled', // from v2.1.16 added 4.10.2016 'disabled' : 'Disabled', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Search results is empty in current view.\\APress [Enter] to expand search target.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'First letter search results is empty in current view.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Text label', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 mins left', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'Reopen with selected encoding', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Save with the selected encoding', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Select folder', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'First letter search', // from v2.1.23 added 24.3.2017 'presets' : 'Presets', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'It\'s too many items so it can\'t into trash.', // from v2.1.25 added 9.6.2017 'TextArea' : 'TextArea', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Empty the folder "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'There are no items in a folder "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'Preference', // from v2.1.26 added 28.6.2017 'language' : 'Language', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialize the settings saved in this browser', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'Toolbar settings', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 chars left.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 lines left.', // from v2.1.52 added 16.1.2020 'sum' : 'Sum', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Rough file size', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Focus on the element of dialog with mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Select', // from v2.1.30 added 23.11.2017 'selectAction' : 'Action when select file', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Open with the editor used last time', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Invert selection', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Are you sure you want to rename $1 selected items like $2?
      This cannot be undone!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Batch rename', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Number', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Add prefix', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Add suffix', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Change extention', // from v2.1.31 added 8.12.2017 'columnPref' : 'Columns settings (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'All changes will reflect immediately to the archive.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Any changes will not reflect until un-mount this volume.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'The following volume(s) mounted on this volume also unmounted. Are you sure to unmount it?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Selection Info', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorithms to show the file hash', // from v2.1.33 added 10.3.2018 'infoItems' : 'Info Items (Selection Info Panel)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Press again to exit.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Toolbar', // from v2.1.38 added 4.4.2018 'workspace' : 'Work Space', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialog', // from v2.1.38 added 4.4.2018 'all' : 'All', // from v2.1.38 added 4.4.2018 'iconSize' : 'Icon Size (Icons view)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Open the maximized editor window', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Because conversion by API is not currently available, please convert on the website.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'After conversion, you must be upload with the item URL or a downloaded file to save the converted file.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Convert on the site of $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Integrations', // from v2.1.40 added 11.7.2018 'integrationWith' : 'This elFinder has the following external services integrated. Please check the terms of use, privacy policy, etc. before using it.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Show hidden items', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Hide hidden items', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Show/Hide hidden items', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type of the Text file', // from v2.1.41 added 7.8.2018 'add' : 'Add', // from v2.1.41 added 7.8.2018 'theme' : 'Theme', // from v2.1.43 added 19.10.2018 'default' : 'Default', // from v2.1.43 added 19.10.2018 'description' : 'Description', // from v2.1.43 added 19.10.2018 'website' : 'Website', // from v2.1.43 added 19.10.2018 'author' : 'Author', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'License', // from v2.1.43 added 19.10.2018 'exportToSave' : 'This item can\'t be saved. To avoid losing the edits you need to export to your PC.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Double click on the file to select it.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Use fullscreen mode', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Unknown', 'kindRoot' : 'Volume Root', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Folder', 'kindSelects' : 'Selections', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Alias', 'kindAliasBroken' : 'Broken alias', // applications 'kindApp' : 'Application', 'kindPostscript' : 'Postscript document', 'kindMsOffice' : 'Microsoft Office document', 'kindMsWord' : 'Microsoft Word document', 'kindMsExcel' : 'Microsoft Excel document', 'kindMsPP' : 'Microsoft Powerpoint presentation', 'kindOO' : 'Open Office document', 'kindAppFlash' : 'Flash application', 'kindPDF' : 'Portable Document Format (PDF)', 'kindTorrent' : 'Bittorrent file', 'kind7z' : '7z archive', 'kindTAR' : 'TAR archive', 'kindGZIP' : 'GZIP archive', 'kindBZIP' : 'BZIP archive', 'kindXZ' : 'XZ archive', 'kindZIP' : 'ZIP archive', 'kindRAR' : 'RAR archive', 'kindJAR' : 'Java JAR file', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM package', // texts 'kindText' : 'Text document', 'kindTextPlain' : 'Plain text', 'kindPHP' : 'PHP source', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML document', 'kindJS' : 'Javascript source', 'kindRTF' : 'Rich Text Format', 'kindC' : 'C source', 'kindCHeader' : 'C header source', 'kindCPP' : 'C++ source', 'kindCPPHeader' : 'C++ header source', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python source', 'kindJava' : 'Java source', 'kindRuby' : 'Ruby source', 'kindPerl' : 'Perl script', 'kindSQL' : 'SQL source', 'kindXML' : 'XML document', 'kindAWK' : 'AWK source', 'kindCSV' : 'Comma separated values', 'kindDOCBOOK' : 'Docbook XML document', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Image', 'kindBMP' : 'BMP image', 'kindJPEG' : 'JPEG image', 'kindGIF' : 'GIF Image', 'kindPNG' : 'PNG Image', 'kindTIFF' : 'TIFF image', 'kindTGA' : 'TGA image', 'kindPSD' : 'Adobe Photoshop image', 'kindXBITMAP' : 'X bitmap image', 'kindPXM' : 'Pixelmator image', // media 'kindAudio' : 'Audio media', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 playlist', 'kindVideo' : 'Video media', 'kindVideoDV' : 'DV movie', 'kindVideoMPEG' : 'MPEG movie', 'kindVideoMPEG4' : 'MPEG-4 movie', 'kindVideoAVI' : 'AVI movie', 'kindVideoMOV' : 'Quick Time movie', 'kindVideoWM' : 'Windows Media movie', 'kindVideoFlash' : 'Flash movie', 'kindVideoMKV' : 'Matroska movie', 'kindVideoOGG' : 'Ogg movie' } }; })); application/library/js/i18n/elfinder.ru.js000064400000123177147577724760014526 0ustar00/** * РуссĐșĐžĐč ŃĐ·Ń‹Đș translation * @author Dmitry "dio" Levashov * @author Andrew Berezovsky * @author Alex Yashkin * @version 2022-01-02 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.ru = { translator : 'Dmitry "dio" Levashov <dio@std42.ru>, Andrew Berezovsky <andrew.berezovsky@gmail.com>, Alex Yashkin <alex@yashkin.by>', language : 'РуссĐșĐžĐč ŃĐ·Ń‹Đș', direction : 'ltr', dateFormat : 'd M Y H:i', // will show like: 02 ĐŻĐœĐČ 2022 19:53 fancyDateFormat : '$1 H:i', // will show like: ĐĄĐ”ĐłĐŸĐŽĐœŃ 19:53 nonameDateFormat : 'ymd-His', // noname upload will show like: 220102-195313 messages : { /********************************** errors **********************************/ 'error' : 'ĐžŃˆĐžĐ±ĐșĐ°', 'errUnknown' : 'ĐĐ”ĐžĐ·ĐČĐ”ŃŃ‚ĐœĐ°Ń ĐŸŃˆĐžĐ±ĐșĐ°.', 'errUnknownCmd' : 'ĐĐ”ĐžĐ·ĐČĐ”ŃŃ‚ĐœĐ°Ń ĐșĐŸĐŒĐ°ĐœĐŽĐ°.', 'errJqui' : 'ОтсутстĐČуют ĐœĐ”ĐŸĐ±Ń…ĐŸĐŽĐžĐŒŃ‹Đ” ĐșĐŸĐŒĐżĐŸĐœĐ”ĐœŃ‚Ń‹ jQuery UI - selectable, draggable Đž droppable.', 'errNode' : 'ОтсутстĐČŃƒĐ”Ń‚ DOM ŃĐ»Đ”ĐŒĐ”ĐœŃ‚ ĐŽĐ»Ń ĐžĐœĐžŃ†ĐžĐ°Đ»ĐžĐ·Đ°Ń†ĐžĐž elFinder.', 'errURL' : 'ĐĐ”ĐČĐ”Ń€ĐœĐ°Ń ĐșĐŸĐœŃ„ĐžĐłŃƒŃ€Đ°Ń†ĐžŃ elFinder! ĐĐ” уĐșĐ°Đ·Đ°Đœ URL.', 'errAccess' : 'Đ”ĐŸŃŃ‚ŃƒĐż Đ·Đ°ĐżŃ€Đ”Ń‰Đ”Đœ.', 'errConnect' : 'ĐĐ” ŃƒĐŽĐ°Đ»ĐŸŃŃŒ ŃĐŸĐ”ĐŽĐžĐœĐžŃ‚ŃŒŃŃ с сДрĐČĐ”Ń€ĐŸĐŒ.', 'errAbort' : 'ĐĄĐŸĐ”ĐŽĐžĐœĐ”ĐœĐžĐ” прДрĐČĐ°ĐœĐŸ.', 'errTimeout' : 'йаĐčĐŒĐ°ŃƒŃ‚ ŃĐŸĐ”ĐŽĐžĐœĐ”ĐœĐžŃ.', 'errNotFound' : 'ХДрĐČДр ĐœĐ” ĐœĐ°ĐčĐŽĐ”Đœ.', 'errResponse' : 'ĐĐ”ĐșĐŸŃ€Ń€Đ”ĐșŃ‚ĐœŃ‹Đč ĐŸŃ‚ĐČДт сДрĐČДра.', 'errConf' : 'ĐĐ”ĐșĐŸŃ€Ń€Đ”ĐșŃ‚ĐœĐ°Ń ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐ° сДрĐČДра.', 'errJSON' : 'ĐœĐŸĐŽŃƒĐ»ŃŒ PHP JSON ĐœĐ” ŃƒŃŃ‚Đ°ĐœĐŸĐČĐ»Đ”Đœ.', 'errNoVolumes' : 'ОтсутстĐČуют ĐșĐŸŃ€ĐœĐ”ĐČŃ‹Đ” ЎОрДĐșŃ‚ĐŸŃ€ĐžĐž ĐŽĐŸŃŃ‚ŃƒĐœŃ‹Đ” ĐŽĐ»Ń Ń‡Ń‚Đ”ĐœĐžŃ.', 'errCmdParams' : 'ĐĐ”ĐșĐŸŃ€Ń€Đ”ĐșŃ‚ĐœŃ‹Đ” ĐżĐ°Ń€Đ°ĐŒĐ”Ń‚Ń€Ń‹ ĐșĐŸĐŒĐ°ĐœĐŽŃ‹ "$1".', 'errDataNotJSON' : 'Đ”Đ°ĐœĐœŃ‹Đ” ĐœĐ” ĐČ Ń„ĐŸŃ€ĐŒĐ°Ń‚Đ” JSON.', 'errDataEmpty' : 'Đ”Đ°ĐœĐœŃ‹Đ” ĐŸŃ‚ŃŃƒŃ‚ŃŃ‚ĐČуют.', 'errCmdReq' : 'Đ”Đ»Ń Đ·Đ°ĐżŃ€ĐŸŃĐ° Đș сДрĐČĐ”Ń€Ńƒ ĐœĐ”ĐŸĐ±Ń…ĐŸĐŽĐžĐŒĐŸ уĐșĐ°Đ·Đ°Ń‚ŃŒ ĐžĐŒŃ ĐșĐŸĐŒĐ°ĐœĐŽŃ‹.', 'errOpen' : 'ĐĐ” ŃƒĐŽĐ°Đ»ĐŸŃŃŒ ĐŸŃ‚Đșрыть "$1".', 'errNotFolder' : 'ОбъДĐșт ĐœĐ” яĐČĐ»ŃĐ”Ń‚ŃŃ папĐșĐŸĐč.', 'errNotFile' : 'ОбъДĐșт ĐœĐ” яĐČĐ»ŃĐ”Ń‚ŃŃ фаĐčĐ»ĐŸĐŒ.', 'errRead' : 'ĐžŃˆĐžĐ±ĐșĐ° Ń‡Ń‚Đ”ĐœĐžŃ "$1".', 'errWrite' : 'ĐžŃˆĐžĐ±ĐșĐ° запОсО ĐČ "$1".', 'errPerm' : 'Đ”ĐŸŃŃ‚ŃƒĐż Đ·Đ°ĐżŃ€Đ”Ń‰Đ”Đœ.', 'errLocked' : '"$1" Đ·Đ°Ń‰ĐžŃ‰Đ”Đœ Đž ĐœĐ” ĐŒĐŸĐ¶Đ”Ń‚ Đ±Ń‹Ń‚ŃŒ ĐżĐ”Ń€Đ”ĐžĐŒĐ”ĐœĐŸĐČĐ°Đœ, ĐżĐ”Ń€Đ”ĐŒĐ”Ń‰Đ”Đœ ОлО ŃƒĐŽĐ°Đ»Đ”Đœ.', 'errExists' : 'В папĐșĐ” ужД ŃŃƒŃ‰Đ”ŃŃ‚ĐČŃƒĐ”Ń‚ фаĐčĐ» с ĐžĐŒĐ”ĐœĐ”ĐŒ "$1".', 'errInvName' : 'ĐĐ”ĐŽĐŸĐżŃƒŃŃ‚ĐžĐŒĐŸĐ” ĐžĐŒŃ фаĐčла.', 'errInvDirname' : 'ĐĐ”ĐŽĐŸĐżŃƒŃŃ‚ĐžĐŒĐŸĐ” ĐžĐŒŃ папĐșĐž.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'ПапĐșĐ° ĐœĐ” ĐœĐ°ĐčĐŽĐ”ĐœĐ°.', 'errFileNotFound' : 'ЀаĐčĐ» ĐœĐ” ĐœĐ°ĐčĐŽĐ”Đœ.', 'errTrgFolderNotFound' : 'ЊДлДĐČая папĐșĐ° "$1" ĐœĐ” ĐœĐ°ĐčĐŽĐ”ĐœĐ°.', 'errPopup' : 'Đ‘Ń€Đ°ŃƒĐ·Đ”Ń€ Đ·Đ°Đ±Đ»ĐŸĐșĐžŃ€ĐŸĐČĐ°Đ» ĐŸŃ‚ĐșрытОД ĐœĐŸĐČĐŸĐłĐŸ ĐŸĐșĐœĐ°. Đ§Ń‚ĐŸĐ±Ń‹ ĐŸŃ‚Đșрыть фаĐčĐ», ĐžĐ·ĐŒĐ”ĐœĐžŃ‚Đ” ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž Đ±Ń€Đ°ŃƒĐ·Đ”Ń€Đ°.', 'errMkdir' : 'ĐžŃˆĐžĐ±ĐșĐ° ŃĐŸĐ·ĐŽĐ°ĐœĐžŃ папĐșĐž "$1".', 'errMkfile' : 'ĐžŃˆĐžĐ±ĐșĐ° ŃĐŸĐ·ĐŽĐ°ĐœĐžŃ фаĐčла "$1".', 'errRename' : 'ĐžŃˆĐžĐ±ĐșĐ° ĐżĐ”Ń€Đ”ĐžĐŒĐ”ĐœĐŸĐČĐ°ĐœĐžŃ "$1".', 'errCopyFrom' : 'ĐšĐŸĐżĐžŃ€ĐŸĐČĐ°ĐœĐžĐ” фаĐčĐ»ĐŸĐČ ĐžĐ· ЎОрДĐșŃ‚ĐŸŃ€ĐžĐž "$1" Đ·Đ°ĐżŃ€Đ”Ń‰Đ”ĐœĐŸ.', 'errCopyTo' : 'ĐšĐŸĐżĐžŃ€ĐŸĐČĐ°ĐœĐžĐ” фаĐčĐ»ĐŸĐČ ĐČ ĐŽĐžŃ€Đ”ĐșŃ‚ĐŸŃ€ĐžŃŽ "$1" Đ·Đ°ĐżŃ€Đ”Ń‰Đ”ĐœĐŸ.', 'errMkOutLink' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ŃĐŸĐ·ĐŽĐ°Ń‚ŃŒ ссылĐșу ĐČĐœĐ” ĐșĐŸŃ€ĐœŃ разЎДла.', // from v2.1 added 03.10.2015 'errUpload' : 'ĐžŃˆĐžĐ±ĐșĐ° Đ·Đ°ĐłŃ€ŃƒĐ·ĐșĐž.', // old name - errUploadCommon 'errUploadFile' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ Đ·Đ°ĐłŃ€ŃƒĐ·ĐžŃ‚ŃŒ "$1".', // old name - errUpload 'errUploadNoFiles' : 'ĐĐ”Ń‚ фаĐčĐ»ĐŸĐČ ĐŽĐ»Ń Đ·Đ°ĐłŃ€ŃƒĐ·ĐșĐž.', 'errUploadTotalSize' : 'ĐŸŃ€Đ”ĐČŃ‹ŃˆĐ”Đœ ĐŽĐŸĐżŃƒŃŃ‚ĐžĐŒŃ‹Đč Ń€Đ°Đ·ĐŒĐ”Ń€ Đ·Đ°ĐłŃ€ŃƒĐ¶Đ°Đ”ĐŒŃ‹Ń… ĐŽĐ°ĐœĐœŃ‹Ń….', // old name - errMaxSize 'errUploadFileSize' : 'Đ Đ°Đ·ĐŒĐ”Ń€ фаĐčла прДĐČŃ‹ŃˆĐ°Đ”Ń‚ ĐŽĐŸĐżŃƒŃŃ‚ĐžĐŒŃ‹Đč.', // old name - errFileMaxSize 'errUploadMime' : 'ĐĐ”ĐŽĐŸĐżŃƒŃŃ‚ĐžĐŒŃ‹Đč топ фаĐčла.', 'errUploadTransfer' : 'ĐžŃˆĐžĐ±ĐșĐ° пДрДЎачО фаĐčла "$1".', 'errUploadTemp' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ŃĐŸĐ·ĐŽĐ°Ń‚ŃŒ ĐČŃ€Đ”ĐŒĐ”ĐœĐœŃ‹Đč фаĐčĐ» ĐŽĐ»Ń Đ·Đ°ĐłŃ€ŃƒĐ·ĐșĐž.', // from v2.1 added 26.09.2015 'errNotReplace' : 'ОбъДĐșт "$1" ĐżĐŸ ŃŃ‚ĐŸĐŒŃƒ Đ°ĐŽŃ€Đ”ŃŃƒ ужД ŃŃƒŃ‰Đ”ŃŃ‚ĐČŃƒĐ”Ń‚ Đž ĐœĐ” ĐŒĐŸĐ¶Đ”Ń‚ Đ±Ń‹Ń‚ŃŒ Đ·Đ°ĐŒĐ”ĐœĐ”Đœ ĐŸĐ±ŃŠĐ”ĐșŃ‚ĐŸĐŒ ĐŽŃ€ŃƒĐłĐŸĐłĐŸ топа.', // new 'errReplace' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ Đ·Đ°ĐŒĐ”ĐœĐžŃ‚ŃŒ "$1".', 'errSave' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ŃĐŸŃ…Ń€Đ°ĐœĐžŃ‚ŃŒ "$1".', 'errCopy' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ сĐșĐŸĐżĐžŃ€ĐŸĐČать "$1".', 'errMove' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ĐżĐ”Ń€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚ŃŒ "$1".', 'errCopyInItself' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ сĐșĐŸĐżĐžŃ€ĐŸĐČать "$1" ĐČ ŃĐ°ĐŒĐŸĐłĐŸ ŃĐ”Đ±Ń.', 'errRm' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ŃƒĐŽĐ°Đ»ĐžŃ‚ŃŒ "$1".', 'errTrash' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ĐżĐ”Ń€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚ŃŒ ĐČ ĐșĐŸŃ€Đ·ĐžĐœŃƒ.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ŃƒĐŽĐ°Đ»ĐžŃ‚ŃŒ фаĐčлы ĐžŃŃ‚ĐŸŃ‡ĐœĐžĐșĐ°.', 'errExtract' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ОзĐČĐ»Đ”Ń‡ŃŒ фалы Оз "$1".', 'errArchive' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ŃĐŸĐ·ĐŽĐ°Ń‚ŃŒ архоĐČ.', 'errArcType' : 'ĐĐ”ĐżĐŸĐŽĐŽĐ”Ń€Đ¶ĐžĐČĐ°Đ”ĐŒŃ‹Đč топ архоĐČĐ°.', 'errNoArchive' : 'ЀаĐčĐ» ĐœĐ” яĐČĐ»ŃĐ”Ń‚ŃŃ архоĐČĐŸĐŒ ОлО ĐœĐ”ĐżĐŸĐŽĐŽĐ”Ń€Đ¶ĐžĐČĐ°Đ”ĐŒŃ‹Đč топ архоĐČĐ°.', 'errCmdNoSupport' : 'ХДрĐČДр ĐœĐ” ĐżĐŸĐŽĐŽĐ”Ń€Đ¶ĐžĐČаДт эту ĐșĐŸĐŒĐ°ĐœĐŽŃƒ.', 'errReplByChild' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ Đ·Đ°ĐŒĐ”ĐœĐžŃ‚ŃŒ папĐșу "$1" ŃĐŸĐŽĐ”Ń€Đ¶Đ°Ń‰ĐžĐŒŃŃ ĐČ ĐœĐ”Đč ĐŸĐ±ŃŠĐ”ĐșŃ‚ĐŸĐŒ.', 'errArcSymlinks' : 'ĐŸĐŸ ŃĐŸĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃĐŒ Đ±Đ”Đ·ĐŸĐżĐ°ŃĐœĐŸŃŃ‚Đž Đ·Đ°ĐżŃ€Đ”Ń‰Đ”ĐœĐ° распаĐșĐŸĐČĐșĐ° архоĐČĐŸĐČ, ŃĐŸĐŽĐ”Ń€Đ¶Đ°Ń‰ĐžŃ… ссылĐșĐž (symlinks) ОлО фаĐčлы с ĐœĐ”ĐŽĐŸĐżŃƒŃŃ‚ĐžĐŒŃ‹ĐŒĐž ĐžĐŒĐ”ĐœĐ°ĐŒĐž.', // edited 24.06.2012 'errArcMaxSize' : 'Đ Đ°Đ·ĐŒĐ”Ń€ фаĐčĐ»ĐŸĐČ ĐČ Đ°Ń€Ń…ĐžĐČĐ” прДĐČŃ‹ŃˆĐ°Đ”Ń‚ ĐŒĐ°ĐșŃĐžĐŒĐ°Đ»ŃŒĐœĐŸ Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐœŃ‹Đč.', 'errResize' : 'ĐĐ” ŃƒĐŽĐ°Đ»ĐŸŃŃŒ ĐžĐ·ĐŒĐ”ĐœĐžŃ‚ŃŒ Ń€Đ°Đ·ĐŒĐ”Ń€ "$1".', 'errResizeDegree' : 'ĐĐ”ĐșĐŸŃ€Ń€Đ”ĐșŃ‚ĐœŃ‹Đč граЮус ĐżĐŸĐČĐŸŃ€ĐŸŃ‚Đ°.', // added 7.3.2013 'errResizeRotate' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ĐżĐŸĐČĐ”Ń€ĐœŃƒŃ‚ŃŒ ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”.', // added 7.3.2013 'errResizeSize' : 'ĐĐ”ĐșĐŸŃ€Ń€Đ”ĐșŃ‚ĐœŃ‹Đč Ń€Đ°Đ·ĐŒĐ”Ń€ ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ.', // added 7.3.2013 'errResizeNoChange' : 'Đ Đ°Đ·ĐŒĐ”Ń€ ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ ĐœĐ” ĐžĐ·ĐŒĐ”ĐœĐžĐ»ŃŃ.', // added 7.3.2013 'errUsupportType' : 'ĐĐ”ĐżĐŸĐŽĐŽĐ”Ń€Đ¶ĐžĐČĐ°Đ”ĐŒŃ‹Đč топ фаĐčла.', 'errNotUTF8Content' : 'ЀаĐčĐ» "$1" ŃĐŸĐŽĐ”Ń€Đ¶ĐžŃ‚ Ń‚Đ”Đșст ĐČ ĐșĐŸĐŽĐžŃ€ĐŸĐČĐșĐ” ĐŸŃ‚Đ»ĐžŃ‡ĐœĐŸĐč ĐŸŃ‚ UTF-8 Đž ĐœĐ” ĐŒĐŸĐ¶Đ”Ń‚ Đ±Ń‹Ń‚ŃŒ ĐŸŃ‚Ń€Đ”ĐŽĐ°ĐșŃ‚ĐžŃ€ĐŸĐČĐ°Đœ.', // added 9.11.2011 'errNetMount' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ĐżĐŸĐŽĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'ĐĐ”ĐżĐŸĐŽĐŽĐ”Ń€Đ¶ĐžĐČĐ°Đ”ĐŒŃ‹Đč ĐżŃ€ĐŸŃ‚ĐŸĐșĐŸĐ».', // added 17.04.2012 'errNetMountFailed' : 'ĐžŃˆĐžĐ±ĐșĐ° ĐŒĐŸĐœŃ‚ĐžŃ€ĐŸĐČĐ°ĐœĐžŃ.', // added 17.04.2012 'errNetMountHostReq' : 'ĐąŃ€Đ”Đ±ŃƒĐ”Ń‚ŃŃ уĐșĐ°Đ·Đ°Ń‚ŃŒ Ń…ĐŸŃŃ‚.', // added 18.04.2012 'errSessionExpires' : 'ĐĄĐ”ŃŃĐžŃ была Đ·Đ°ĐČĐ”Ń€ŃˆĐ”ĐœĐ° таĐș ĐșĐ°Đș прДĐČŃ‹ŃˆĐ”ĐœĐŸ ĐČŃ€Đ”ĐŒŃ ĐŸŃ‚ŃŃƒŃ‚ŃŃ‚ĐČоя Đ°ĐșтоĐČĐœĐŸŃŃ‚Đž.', 'errCreatingTempDir' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ŃĐŸĐ·ĐŽĐ°Ń‚ŃŒ ĐČŃ€Đ”ĐŒĐ”ĐœĐœŃƒŃŽ ЎОрДĐșŃ‚ĐŸŃ€ĐžŃŽ: "$1"', 'errFtpDownloadFile' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ сĐșачать фаĐčĐ» с FTP: "$1"', 'errFtpUploadFile' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ Đ·Đ°ĐłŃ€ŃƒĐ·ĐžŃ‚ŃŒ фаĐčĐ» ĐœĐ° FTP: "$1"', 'errFtpMkdir' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ŃĐŸĐ·ĐŽĐ°Ń‚ŃŒ ЎОрДĐșŃ‚ĐŸŃ€ĐžŃŽ ĐœĐ° FTP: "$1"', 'errArchiveExec' : 'ĐžŃˆĐžĐ±ĐșĐ° про ĐČŃ‹ĐżĐŸĐ»ĐœĐ”ĐœĐžĐž архоĐČацоо: "$1"', 'errExtractExec' : 'ĐžŃˆĐžĐ±ĐșĐ° про ĐČŃ‹ĐżĐŸĐ»ĐœĐ”ĐœĐžĐž распаĐșĐŸĐČĐșĐž: "$1"', 'errNetUnMount' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ĐŸŃ‚ĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ', // from v2.1 added 30.04.2012 'errConvUTF8' : 'ĐĐ” ĐșĐŸĐœĐČĐ”Ń€Ń‚ĐžŃ€ŃƒĐ”Ń‚ŃŃ ĐČ UTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'ЕслО ĐČы Ń…ĐŸŃ‚ĐžŃ‚Đ” Đ·Đ°ĐłŃ€ŃƒĐ¶Đ°Ń‚ŃŒ папĐșĐž, ĐżĐŸĐżŃ€ĐŸĐ±ŃƒĐčŃ‚Đ” Google Chrome.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'ĐŸŃ€Đ”ĐČŃ‹ŃˆĐ”ĐœĐŸ ĐČŃ€Đ”ĐŒŃ ĐŸĐ¶ĐžĐŽĐ°ĐœĐžŃ про ĐżĐŸĐžŃĐșĐ” "$1". Đ Đ”Đ·ŃƒĐ»ŃŒŃ‚Đ°Ń‚Ń‹ ĐżĐŸĐžŃĐșĐ° Ń‡Đ°ŃŃ‚ĐžŃ‡ĐœŃ‹Đ”.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'ĐąŃ€Đ”Đ±ŃƒĐ”Ń‚ŃŃ ĐżĐŸĐČŃ‚ĐŸŃ€ĐœĐ°Ń Đ°ĐČŃ‚ĐŸŃ€ĐžĐ·Đ°Ń†ĐžŃ.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'МаĐșŃĐžĐŒĐ°Đ»ŃŒĐœĐŸĐ” Ń‡ĐžŃĐ»ĐŸ ĐČŃ‹Đ±ĐžŃ€Đ°Đ”ĐŒŃ‹Ń… фаĐčĐ»ĐŸĐČ: $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ĐČĐŸŃŃŃ‚Đ°ĐœĐŸĐČоть Оз ĐșĐŸŃ€Đ·ĐžĐœŃ‹. ĐĐ” ŃƒĐŽĐ°Đ»ĐŸŃŃŒ ĐŸĐżŃ€Đ”ĐŽĐ”Đ»ĐžŃ‚ŃŒ путь ĐŽĐ»Ń ĐČĐŸŃŃŃ‚Đ°ĐœĐŸĐČĐ»Đ”ĐœĐžŃ.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'ĐĐ” ĐœĐ°ĐčĐŽĐ”Đœ рДЎаĐșŃ‚ĐŸŃ€ ĐŽĐ»Ń ŃŃ‚ĐŸĐłĐŸ топа фаĐčĐ»ĐŸĐČ.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Đ’ĐŸĐ·ĐœĐžĐșла ĐŸŃˆĐžĐ±ĐșĐ° ĐœĐ° ŃŃ‚ĐŸŃ€ĐŸĐœĐ” сДрĐČДра.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ĐŸŃ‡ĐžŃŃ‚ĐžŃ‚ŃŒ папĐșу "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'ЕщД ĐŸŃˆĐžĐ±ĐŸĐș: $1', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'Вы ĐŒĐŸĐ¶Đ”Ń‚Đ” ŃĐŸĐ·ĐŽĐ°Ń‚ŃŒ Đ·Đ° ĐŸĐŽĐžĐœ раз ĐżĐ°ĐżĐŸĐș: $1.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'ĐĄĐŸĐ·ĐŽĐ°Ń‚ŃŒ архоĐČ', 'cmdback' : 'ĐĐ°Đ·Đ°ĐŽ', 'cmdcopy' : 'ĐšĐŸĐżĐžŃ€ĐŸĐČать', 'cmdcut' : 'Đ’Ń‹Ń€Đ”Đ·Đ°Ń‚ŃŒ', 'cmddownload' : 'ĐĄĐșачать', 'cmdduplicate' : 'ĐĄĐŽĐ”Đ»Đ°Ń‚ŃŒ ĐșĐŸĐżĐžŃŽ', 'cmdedit' : 'РДЎаĐșŃ‚ĐžŃ€ĐŸĐČать фаĐčĐ»', 'cmdextract' : 'РаспаĐșĐŸĐČать архоĐČ', 'cmdforward' : 'ВпДрДЎ', 'cmdgetfile' : 'Đ’Ń‹Đ±Ń€Đ°Ń‚ŃŒ фаĐčлы', 'cmdhelp' : 'О ĐżŃ€ĐŸĐłŃ€Đ°ĐŒĐŒĐ”', 'cmdhome' : 'Đ”ĐŸĐŒĐŸĐč', 'cmdinfo' : 'ĐĄĐČĐŸĐčстĐČĐ°', 'cmdmkdir' : 'ĐĐŸĐČая папĐșĐ°', 'cmdmkdirin' : 'В ĐœĐŸĐČую папĐșу', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'ĐĐŸĐČыĐč фаĐčĐ»', 'cmdopen' : 'ОтĐșрыть', 'cmdpaste' : 'ВстаĐČоть', 'cmdquicklook' : 'БыстрыĐč ĐżŃ€ĐŸŃĐŒĐŸŃ‚Ń€', 'cmdreload' : 'ĐžĐ±ĐœĐŸĐČоть', 'cmdrename' : 'ĐŸĐ”Ń€Đ”ĐžĐŒĐ”ĐœĐŸĐČать', 'cmdrm' : 'ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ', 'cmdtrash' : 'ĐŸĐ”Ń€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚ŃŒ ĐČ ĐșĐŸŃ€Đ·ĐžĐœŃƒ', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Đ’ĐŸŃŃŃ‚Đ°ĐœĐŸĐČоть', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'ĐŸĐŸĐžŃĐș фаĐčĐ»ĐŸĐČ', 'cmdup' : 'НаĐČДрх', 'cmdupload' : 'Đ—Đ°ĐłŃ€ŃƒĐ·ĐžŃ‚ŃŒ фаĐčлы', 'cmdview' : 'ВоЮ', 'cmdresize' : 'Đ˜Đ·ĐŒĐ”ĐœĐžŃ‚ŃŒ Ń€Đ°Đ·ĐŒĐ”Ń€ Đž ĐżĐŸĐČĐ”Ń€ĐœŃƒŃ‚ŃŒ', 'cmdsort' : 'ĐĄĐŸŃ€Ń‚ĐžŃ€ĐŸĐČать', 'cmdnetmount' : 'ĐŸĐŸĐŽĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ сДтДĐČĐŸĐč разЎДл', // added 18.04.2012 'cmdnetunmount': 'ОтĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ', // from v2.1 added 30.04.2012 'cmdplaces' : 'В ĐžĐ·Đ±Ń€Đ°ĐœĐœĐŸĐ”', // added 28.12.2014 'cmdchmod' : 'Đ˜Đ·ĐŒĐ”ĐœĐžŃ‚ŃŒ праĐČĐ° ĐŽĐŸŃŃ‚ŃƒĐżĐ°', // from v2.1 added 20.6.2015 'cmdopendir' : 'ОтĐșрыть папĐșу', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'ĐĄĐ±Ń€ĐŸŃĐžŃ‚ŃŒ ŃˆĐžŃ€ĐžĐœŃƒ ĐșĐŸĐ»ĐŸĐœĐŸĐș', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'ĐŸĐŸĐ»ĐœŃ‹Đč эĐșŃ€Đ°Đœ', // from v2.1.15 added 03.08.2016 'cmdmove' : 'ĐŸĐ”Ń€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚ŃŒ', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Очостоть папĐșу', // from v2.1.25 added 22.06.2017 'cmdundo' : 'ĐžŃ‚ĐŒĐ”ĐœĐžŃ‚ŃŒ', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Đ’Đ”Ń€ĐœŃƒŃ‚ŃŒ', // from v2.1.27 added 31.07.2017 'cmdpreference': 'ĐŸŃ€Đ”ĐŽĐżĐŸŃ‡Ń‚Đ”ĐœĐžŃ', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Đ’Ń‹Đ±Ń€Đ°Ń‚ŃŒ ĐČсД', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'ĐžŃ‚ĐŒĐ”ĐœĐžŃ‚ŃŒ ĐČŃ‹Đ±ĐŸŃ€', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Đ˜ĐœĐČĐ”Ń€Ń‚ĐžŃ€ĐŸĐČать ĐČŃ‹Đ±ĐŸŃ€', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'ОтĐșрыть ĐČ ĐœĐŸĐČĐŸĐŒ ĐŸĐșĐœĐ”', // from v2.1.38 added 3.4.2018 'cmdhide' : 'ĐĄĐșрыть (ĐżĐ”Ń€ŃĐŸĐœĐ°Đ»ŃŒĐœĐŸ)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'ЗаĐșрыть', 'btnSave' : 'ĐĄĐŸŃ…Ń€Đ°ĐœĐžŃ‚ŃŒ', 'btnRm' : 'ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ', 'btnApply' : 'ĐŸŃ€ĐžĐŒĐ”ĐœĐžŃ‚ŃŒ', 'btnCancel' : 'ĐžŃ‚ĐŒĐ”ĐœĐ°', 'btnNo' : 'ĐĐ”Ń‚', 'btnYes' : 'Да', 'btnMount' : 'ĐŸĐŸĐŽĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ', // added 18.04.2012 'btnApprove': 'ĐŸĐ”Ń€Đ”Đčто ĐČ $1 Đž ĐżŃ€ĐžĐŒĐ”ĐœĐžŃ‚ŃŒ', // from v2.1 added 26.04.2012 'btnUnmount': 'ОтĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ', // from v2.1 added 30.04.2012 'btnConv' : 'ĐšĐŸĐœĐČĐ”Ń€Ń‚ĐžŃ€ĐŸĐČать', // from v2.1 added 08.04.2014 'btnCwd' : 'Đ—ĐŽĐ”ŃŃŒ', // from v2.1 added 22.5.2015 'btnVolume' : 'РазЎДл', // from v2.1 added 22.5.2015 'btnAll' : 'ВсД', // from v2.1 added 22.5.2015 'btnMime' : 'MIME топ', // from v2.1 added 22.5.2015 'btnFileName':'Đ˜ĐŒŃ фаĐčла', // from v2.1 added 22.5.2015 'btnSaveClose': 'ĐĄĐŸŃ…Ń€Đ°ĐœĐžŃ‚ŃŒ Đž Đ·Đ°Đșрыть', // from v2.1 added 12.6.2015 'btnBackup' : 'РДзДрĐČĐœĐ°Ń ĐșĐŸĐżĐžŃ', // fromv2.1 added 28.11.2015 'btnRename' : 'ĐŸĐ”Ń€Đ”ĐžĐŒĐ”ĐœĐŸĐČать', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'ĐŸĐ”Ń€Đ”ĐžĐŒĐ”ĐœĐŸĐČать (ĐČсД)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'ĐŸŃ€Đ”ĐŽ. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'ХлДЎ. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'ĐĄĐŸŃ…Ń€Đ°ĐœĐžŃ‚ŃŒ ĐșĐ°Đș', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'ОтĐșрыть папĐșу', 'ntffile' : 'ОтĐșрыть фаĐčĐ»', 'ntfreload' : 'ĐžĐ±ĐœĐŸĐČоть Ń‚Đ”Đșущую папĐșу', 'ntfmkdir' : 'ĐĄĐŸĐ·ĐŽĐ°ĐœĐžĐ” папĐșĐž', 'ntfmkfile' : 'ĐĄĐŸĐ·ĐŽĐ°ĐœĐžĐ” фаĐčĐ»ĐŸĐČ', 'ntfrm' : 'ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ фаĐčлы', 'ntfcopy' : 'ĐĄĐșĐŸĐżĐžŃ€ĐŸĐČать фаĐčлы', 'ntfmove' : 'ĐŸĐ”Ń€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚ŃŒ фаĐčлы', 'ntfprepare' : 'ĐŸĐŸĐŽĐłĐŸŃ‚ĐŸĐČĐșĐ° Đș ĐșĐŸĐżĐžŃ€ĐŸĐČĐ°ĐœĐžŃŽ фаĐčĐ»ĐŸĐČ', 'ntfrename' : 'ĐŸĐ”Ń€Đ”ĐžĐŒĐ”ĐœĐŸĐČать фаĐčлы', 'ntfupload' : 'Đ—Đ°ĐłŃ€ŃƒĐ·ĐșĐ° фаĐčĐ»ĐŸĐČ', 'ntfdownload' : 'ĐĄĐșачоĐČĐ°ĐœĐžĐ” фаĐčĐ»ĐŸĐČ', 'ntfsave' : 'ĐĄĐŸŃ…Ń€Đ°ĐœĐžŃ‚ŃŒ фаĐčлы', 'ntfarchive' : 'ĐĄĐŸĐ·ĐŽĐ°ĐœĐžĐ” архоĐČĐ°', 'ntfextract' : 'РаспаĐșĐŸĐČĐșĐ° архоĐČĐ°', 'ntfsearch' : 'ĐŸĐŸĐžŃĐș фаĐčĐ»ĐŸĐČ', 'ntfresize' : 'Đ˜Đ·ĐŒĐ”ĐœĐ”ĐœĐžĐ” Ń€Đ°Đ·ĐŒĐ”Ń€ĐŸĐČ ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐč', 'ntfsmth' : 'Đ—Đ°ĐœŃŃ‚ ĐČĐ°Đ¶ĐœŃ‹ĐŒ ĐŽĐ”Đ»ĐŸĐŒ', 'ntfloadimg' : 'Đ—Đ°ĐłŃ€ŃƒĐ·ĐșĐ° ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ', 'ntfnetmount' : 'ĐŸĐŸĐŽĐșĐ»ŃŽŃ‡Đ”ĐœĐžĐ” сДтДĐČĐŸĐłĐŸ ЎОсĐșĐ°', // added 18.04.2012 'ntfnetunmount': 'ОтĐșĐ»ŃŽŃ‡Đ”ĐœĐžĐ” сДтДĐČĐŸĐłĐŸ ЎОсĐșĐ°', // from v2.1 added 30.04.2012 'ntfdim' : 'ĐŸĐŸĐ»ŃƒŃ‡Đ”ĐœĐžĐ” Ń€Đ°Đ·ĐŒĐ”Ń€ĐŸĐČ ĐžĐ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ', // added 20.05.2013 'ntfreaddir' : 'Đ§Ń‚Đ”ĐœĐžĐ” ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžĐž ĐŸ папĐșĐ”', // from v2.1 added 01.07.2013 'ntfurl' : 'ĐŸĐŸĐ»ŃƒŃ‡Đ”ĐœĐžĐ” URL ссылĐșĐž', // from v2.1 added 11.03.2014 'ntfchmod' : 'Đ˜Đ·ĐŒĐ”ĐœĐ”ĐœĐžĐ” праĐČ ĐŽĐŸŃŃ‚ŃƒĐżĐ° Đș фаĐčлу', // from v2.1 added 20.6.2015 'ntfpreupload': 'ĐŸŃ€ĐŸĐČДрĐșĐ° ĐžĐ·ĐŒĐ”ĐœĐž Đ·Đ°ĐłŃ€ŃƒĐ¶Đ”ĐœĐœĐŸĐłĐŸ фаĐčла', // from v2.1 added 31.11.2015 'ntfzipdl' : 'ĐĄĐŸĐ·ĐŽĐ°ĐœĐžĐ” фаĐčла ĐŽĐ»Ń сĐșачĐșĐž', // from v2.1.7 added 23.1.2016 'ntfparents' : 'ĐŸĐŸĐ»ŃƒŃ‡Đ”ĐœĐžĐ” ĐžĐœŃ„ĐŸŃ€ĐŒĐ°Ń†ĐžĐž ĐŸ путо', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'ĐžĐ±Ń€Đ°Đ±ĐŸŃ‚ĐșĐ° Đ·Đ°ĐłŃ€ŃƒĐ¶Đ”ĐœĐœĐŸĐłĐŸ фаĐčла', // from v2.1.17 added 2.11.2016 'ntftrash' : 'ĐŸĐ”Ń€Đ”ĐŒĐ”Ń‰Đ”ĐœĐžĐ” ĐČ ĐșĐŸŃ€Đ·ĐžĐœŃƒ', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Đ’ĐŸŃŃŃ‚Đ°ĐœĐŸĐČĐ»Đ”ĐœĐžĐ” Оз ĐșĐŸŃ€Đ·ĐžĐœŃ‹', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'ĐŸŃ€ĐŸĐČДрĐșĐ° папĐșĐž ĐœĐ°Đ·ĐœĐ°Ń‡Đ”ĐœĐžŃ', // from v2.1.24 added 3.5.2017 'ntfundo' : 'ĐžŃ‚ĐŒĐ”ĐœĐ° ĐżŃ€Đ”ĐŽŃ‹ĐŽŃƒŃ‰Đ”Đč ĐŸĐżĐ”Ń€Đ°Ń†ĐžĐž', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Đ’ĐŸŃŃŃ‚Đ°ĐœĐŸĐČĐ»Đ”ĐœĐžĐ” ĐżŃ€Đ”ĐŽŃ‹ĐŽŃƒŃ‰Đ”Đč ĐŸĐżĐ”Ń€Đ°Ń†ĐžĐž', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'ĐŸŃ€ĐŸĐČДрĐșĐ° ŃĐŸĐŽĐ”Ń€Đ¶ĐžĐŒĐŸĐłĐŸ', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'ĐšĐŸŃ€Đ·ĐžĐœĐ°', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'ĐœĐ”ĐžĐ·ĐČĐ”ŃŃ‚ĐœĐŸ', 'Today' : 'ĐĄĐ”ĐłĐŸĐŽĐœŃ', 'Yesterday' : 'ВчДра', 'msJan' : 'ĐŻĐœĐČ', 'msFeb' : 'ЀДĐČ', 'msMar' : 'Мар', 'msApr' : 'Апр', 'msMay' : 'МаĐč', 'msJun' : 'Đ˜ŃŽĐœ', 'msJul' : 'Đ˜ŃŽĐ»', 'msAug' : 'АĐČĐł', 'msSep' : 'ĐĄĐ”Đœ', 'msOct' : 'ОĐșт', 'msNov' : 'ĐĐŸŃ', 'msDec' : 'ДДĐș', 'January' : 'ĐŻĐœĐČарь', 'February' : 'ЀДĐČŃ€Đ°Đ»ŃŒ', 'March' : 'Март', 'April' : 'ĐĐżŃ€Đ”Đ»ŃŒ', 'May' : 'МаĐč', 'June' : 'Đ˜ŃŽĐœŃŒ', 'July' : 'Đ˜ŃŽĐ»ŃŒ', 'August' : 'АĐČгуст', 'September' : 'ĐĄĐ”ĐœŃ‚ŃĐ±Ń€ŃŒ', 'October' : 'ОĐșŃ‚ŃĐ±Ń€ŃŒ', 'November' : 'ĐĐŸŃĐ±Ń€ŃŒ', 'December' : 'ДДĐșĐ°Đ±Ń€ŃŒ', 'Sunday' : 'Đ’ĐŸŃĐșŃ€Đ”ŃĐ”ĐœŃŒĐ”', 'Monday' : 'ĐŸĐŸĐœĐ”ĐŽĐ”Đ»ŃŒĐœĐžĐș', 'Tuesday' : 'Đ’Ń‚ĐŸŃ€ĐœĐžĐș', 'Wednesday' : 'ХрДЎа', 'Thursday' : 'ЧДтĐČДрг', 'Friday' : 'ĐŸŃŃ‚ĐœĐžŃ†Đ°', 'Saturday' : 'ĐĄŃƒĐ±Đ±ĐŸŃ‚Đ°', 'Sun' : 'ВсĐș', 'Mon' : 'ĐŸĐœĐŽ', 'Tue' : 'Втр', 'Wed' : 'СрЮ', 'Thu' : 'ЧтĐČ', 'Fri' : 'ĐŸŃ‚Đœ', 'Sat' : 'Хбт', /******************************** sort variants ********************************/ 'sortname' : 'ĐżĐŸ ĐžĐŒĐ”ĐœĐž', 'sortkind' : 'ĐżĐŸ топу', 'sortsize' : 'ĐżĐŸ Ń€Đ°Đ·ĐŒĐ”Ń€Ńƒ', 'sortdate' : 'ĐżĐŸ ĐŽĐ°Ń‚Đ”', 'sortFoldersFirst' : 'ПапĐșĐž ĐČ ĐœĐ°Ń‡Đ°Đ»Đ”', 'sortperm' : 'ĐżĐŸ Ń€Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžŃĐŒ', // from v2.1.13 added 13.06.2016 'sortmode' : 'ĐżĐŸ Ń€Đ”Đ¶ĐžĐŒŃƒ', // from v2.1.13 added 13.06.2016 'sortowner' : 'ĐżĐŸ ĐČĐ»Đ°ĐŽĐ”Đ»ŃŒŃ†Ńƒ', // from v2.1.13 added 13.06.2016 'sortgroup' : 'ĐżĐŸ ĐłŃ€ŃƒĐżĐżĐ”', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'йаĐșжД Đž ЎДрДĐČĐŸ ĐșĐ°Ń‚Đ°Đ»ĐŸĐłĐŸĐČ', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'ĐĐŸĐČыĐčЀаĐčĐ».txt', // added 10.11.2015 'untitled folder' : 'ĐĐŸĐČаяПапĐșĐ°', // added 10.11.2015 'Archive' : 'ĐĐŸĐČыĐčАрхоĐČ', // from v2.1 added 10.11.2015 'untitled file' : 'ĐĐŸĐČыĐčЀаĐčĐ».$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1 ЀаĐčĐ»', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'ĐĐ”ĐŸĐ±Ń…ĐŸĐŽĐžĐŒĐŸ ĐżĐŸĐŽŃ‚ĐČĐ”Ń€Đ¶ĐŽĐ”ĐœĐžĐ”', 'confirmRm' : 'Вы уĐČĐ”Ń€Đ”ĐœŃ‹, Ń‡Ń‚ĐŸ Ń…ĐŸŃ‚ĐžŃ‚Đ” ŃƒĐŽĐ°Đ»ĐžŃ‚ŃŒ фаĐčлы?
      ДДĐčстĐČОД ĐœĐ”ĐŸĐ±Ń€Đ°Ń‚ĐžĐŒĐŸ!', 'confirmRepl' : 'Đ—Đ°ĐŒĐ”ĐœĐžŃ‚ŃŒ старыĐč фаĐčĐ» ĐœĐŸĐČŃ‹ĐŒ?', 'confirmRest' : 'Đ—Đ°ĐŒĐ”ĐœĐžŃ‚ŃŒ ŃŃƒŃ‰Đ”ŃŃ‚ĐČующоĐč фаĐčĐ» фаĐčĐ»ĐŸĐŒ Оз ĐșĐŸŃ€Đ·ĐžĐœŃ‹?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'ĐĐ” UTF-8
      ĐĄĐșĐŸĐœĐČĐ”Ń€Ń‚ĐžŃ€ĐŸĐČать ĐČ UTF-8?
      Đ”Đ°ĐœĐœŃ‹Đ” ŃŃ‚Đ°ĐœŃƒŃ‚ UTF-8 про ŃĐŸŃ…Ń€Đ°ĐœĐ”ĐœĐžĐž ĐżĐŸŃĐ»Đ” ĐșĐŸĐœĐČДртацОО.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ĐŸĐżŃ€Đ”ĐŽĐ”Đ»ĐžŃ‚ŃŒ ĐșĐŸĐŽĐžŃ€ĐŸĐČĐșу фаĐčла. ĐĐ”ĐŸĐ±Ń…ĐŸĐŽĐžĐŒĐ° прДЎĐČĐ°Ń€ĐžŃ‚Đ”Đ»ŃŒĐœĐ°Ń ĐșĐŸĐœĐČĐ”Ń€Ń‚Đ°Ń†ĐžŃ фаĐčла ĐČ UTF-8 ĐŽĐ»Ń ĐŽĐ°Đ»ŃŒĐœĐ”ĐčŃˆĐ”ĐłĐŸ рДЎаĐșŃ‚ĐžŃ€ĐŸĐČĐ°ĐœĐžŃ.
      ВыбДрОтД ĐșĐŸĐŽĐžŃ€ĐŸĐČĐșу фаĐčла.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'ĐŸŃ€ĐŸĐžĐ·ĐŸŃˆĐ»Đž ĐžĐ·ĐŒĐ”ĐœĐ”ĐœĐžŃ.
      ЕслО ĐœĐ” ŃĐŸŃ…Ń€Đ°ĐœĐžŃ‚Đ” ĐžĐ·ĐŒĐ”ĐœĐ”ĐœĐžŃ, Ń‚ĐŸ ĐżĐŸŃ‚Đ”Ń€ŃĐ”Ń‚Đ” ох.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Вы уĐČĐ”Ń€Đ”ĐœŃ‹, Ń‡Ń‚ĐŸ Ń…ĐŸŃ‚ĐžŃ‚Đ” ĐżĐ”Ń€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚ŃŒ фаĐčлы ĐČ ĐșĐŸŃ€Đ·ĐžĐœŃƒ?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Вы уĐČĐ”Ń€Đ”ĐœŃ‹, Ń‡Ń‚ĐŸ Ń…ĐŸŃ‚ĐžŃ‚Đ” ĐżĐ”Ń€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚ŃŒ фаĐčлы ĐČ "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'ĐŸŃ€ĐžĐŒĐ”ĐœĐžŃ‚ŃŒ ĐŽĐ»Ń ĐČсДх', 'name' : 'Đ˜ĐŒŃ', 'size' : 'Đ Đ°Đ·ĐŒĐ”Ń€', 'perms' : 'Đ”ĐŸŃŃ‚ŃƒĐż', 'modify' : 'Đ˜Đ·ĐŒĐ”ĐœĐ”Đœ', 'kind' : 'йОп', 'read' : 'Ń‡Ń‚Đ”ĐœĐžĐ”', 'write' : 'Đ·Đ°ĐżĐžŃŃŒ', 'noaccess' : 'ĐœĐ”Ń‚ ĐŽĐŸŃŃ‚ŃƒĐżĐ°', 'and' : 'Đž', 'unknown' : 'ĐœĐ”ĐžĐ·ĐČĐ”ŃŃ‚ĐœĐŸ', 'selectall' : 'Đ’Ń‹Đ±Ń€Đ°Ń‚ŃŒ ĐČсД фаĐčлы', 'selectfiles' : 'Đ’Ń‹Đ±Ń€Đ°Ń‚ŃŒ фаĐčĐ»(ы)', 'selectffile' : 'Đ’Ń‹Đ±Ń€Đ°Ń‚ŃŒ пДрĐČыĐč фаĐčĐ»', 'selectlfile' : 'Đ’Ń‹Đ±Ń€Đ°Ń‚ŃŒ ĐżĐŸŃĐ»Đ”ĐŽĐœĐžĐč фаĐčĐ»', 'viewlist' : 'В ĐČОЎД спОсĐșĐ°', 'viewicons' : 'В ĐČОЎД ĐžĐșĐŸĐœĐŸĐș', 'viewSmall' : 'ĐœĐ°Đ»Đ”ĐœŃŒĐșОД ĐžĐșĐŸĐœĐșĐž', // from v2.1.39 added 22.5.2018 'viewMedium' : 'ĐĄŃ€Đ”ĐŽĐœĐžĐ” ĐžĐșĐŸĐœĐșĐž', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Đ‘ĐŸĐ»ŃŒŃˆĐžĐ” ĐžĐșĐŸĐœĐșĐž', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'ĐžŃ‡Đ”ĐœŃŒ Đ±ĐŸĐ»ŃŒŃˆĐžĐ” ĐžĐșĐŸĐœĐșĐž', // from v2.1.39 added 22.5.2018 'places' : 'Đ˜Đ·Đ±Ń€Đ°ĐœĐœĐŸĐ”', 'calc' : 'Đ’Ń‹Ń‡ĐžŃĐ»ĐžŃ‚ŃŒ', 'path' : 'Путь', 'aliasfor' : 'ĐŁĐșĐ°Đ·Ń‹ĐČаДт ĐœĐ°', 'locked' : 'Защота', 'dim' : 'Đ Đ°Đ·ĐŒĐ”Ń€Ń‹', 'files' : 'ЀаĐčлы', 'folders' : 'ПапĐșĐž', 'items' : 'ОбъДĐșты', 'yes' : 'ĐŽĐ°', 'no' : 'ĐœĐ”Ń‚', 'link' : 'ХсылĐșĐ°', 'searcresult' : 'Đ Đ”Đ·ŃƒĐ»ŃŒŃ‚Đ°Ń‚Ń‹ ĐżĐŸĐžŃĐșĐ°', 'selected' : 'ĐČŃ‹Đ±Ń€Đ°ĐœĐŸ', 'about' : 'О ĐżŃ€ĐŸĐłŃ€Đ°ĐŒĐŒĐ”', 'shortcuts' : 'Đ“ĐŸŃ€ŃŃ‡ĐžĐ” ĐșлаĐČОшО', 'help' : 'ĐŸĐŸĐŒĐŸŃ‰ŃŒ', 'webfm' : 'ЀаĐčĐ»ĐŸĐČыĐč ĐŒĐ”ĐœĐ”ĐŽĐ¶Đ”Ń€ ĐŽĐ»Ń Web', 'ver' : 'Đ’Đ”Ń€ŃĐžŃ', 'protocolver' : 'ĐČĐ”Ń€ŃĐžŃ ĐżŃ€ĐŸŃ‚ĐŸĐșĐŸĐ»Đ°', 'homepage' : 'ĐĄĐ°Đčт ĐżŃ€ĐŸĐ”Đșта', 'docs' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚Đ°Ń†ĐžŃ', 'github' : 'Đ€ĐŸŃ€ĐșĐœĐžŃ‚Đ” ĐœĐ° GitHub', 'twitter' : 'ХлДЎОтД ĐČ Twitter', 'facebook' : 'ĐŸŃ€ĐžŃĐŸĐ”ĐŽĐžĐœŃĐčŃ‚Đ”ŃŃŒ ĐœĐ° Facebook', 'team' : 'ĐšĐŸĐŒĐ°ĐœĐŽĐ°', 'chiefdev' : 'ĐČĐ”ĐŽŃƒŃ‰ĐžĐč Ń€Đ°Đ·Ń€Đ°Đ±ĐŸŃ‚Ń‡ĐžĐș', 'developer' : 'Ń€Đ°Đ·Ń€Đ°Đ±ĐŸŃ‚Ń‡ĐžĐș', 'contributor' : 'ŃƒŃ‡Đ°ŃŃ‚ĐœĐžĐș', 'maintainer' : 'ŃĐŸĐżŃ€ĐŸĐČĐŸĐ¶ĐŽĐ”ĐœĐžĐ” ĐżŃ€ĐŸĐ”Đșта', 'translator' : 'пДрДĐČĐŸĐŽŃ‡ĐžĐș', 'icons' : 'ИĐșĐŸĐœĐșĐž', 'dontforget' : 'Đž ĐœĐ” Đ·Đ°Đ±ŃƒĐŽŃŒŃ‚Đ” ĐČĐ·ŃŃ‚ŃŒ сĐČĐŸŃ‘ ĐżĐŸĐ»ĐŸŃ‚Đ”ĐœŃ†Đ”', 'shortcutsof' : 'Đ“ĐŸŃ€ŃŃ‡ĐžĐ” ĐșлаĐČОшО ĐŸŃ‚ĐșĐ»ŃŽŃ‡Đ”ĐœŃ‹', 'dropFiles' : 'ĐŸĐ”Ń€Đ”Ń‚Đ°Ń‰ĐžŃ‚Đ” фаĐčлы сюЮа', 'or' : 'ОлО', 'selectForUpload' : 'Đ’Ń‹Đ±Ń€Đ°Ń‚ŃŒ фаĐčлы ĐŽĐ»Ń Đ·Đ°ĐłŃ€ŃƒĐ·ĐșĐž', 'moveFiles' : 'ĐŸĐ”Ń€Đ”ĐŒĐ”ŃŃ‚ĐžŃ‚ŃŒ фаĐčлы', 'copyFiles' : 'ĐĄĐșĐŸĐżĐžŃ€ĐŸĐČать фаĐčлы', 'restoreFiles' : 'Đ’ĐŸŃŃŃ‚Đ°ĐœĐŸĐČоть фаĐčлы', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'ĐŁĐŽĐ°Đ»ĐžŃ‚ŃŒ Оз ĐžĐ·Đ±Ń€Đ°ĐœĐœĐŸĐłĐŸ', 'aspectRatio' : 'ĐĄĐŸĐŸŃ‚ĐœĐŸŃˆĐ”ĐœĐžĐ” ŃŃ‚ĐŸŃ€ĐŸĐœ', 'scale' : 'ĐœĐ°ŃŃˆŃ‚Đ°Đ±', 'width' : 'ĐšĐžŃ€ĐžĐœĐ°', 'height' : 'Đ’Ń‹ŃĐŸŃ‚Đ°', 'resize' : 'Đ˜Đ·ĐŒĐ”ĐœĐžŃ‚ŃŒ Ń€Đ°Đ·ĐŒĐ”Ń€', 'crop' : 'ĐžĐ±Ń€Đ”Đ·Đ°Ń‚ŃŒ', 'rotate' : 'ĐŸĐŸĐČĐ”Ń€ĐœŃƒŃ‚ŃŒ', 'rotate-cw' : 'ĐŸĐŸĐČĐ”Ń€ĐœŃƒŃ‚ŃŒ ĐœĐ° 90 ĐłŃ€Đ°ĐŽŃƒŃĐŸĐČ ĐżĐŸ Ń‡Đ°ŃĐŸĐČĐŸĐč стрДлĐșĐ”', 'rotate-ccw' : 'ĐŸĐŸĐČĐ”Ń€ĐœŃƒŃ‚ŃŒ ĐœĐ° 90 ĐłŃ€Đ°ĐŽŃƒŃĐŸĐČ ĐżŃ€ĐŸŃ‚ĐžĐČ Ń‡Đ°ŃĐŸĐČĐŸĐč стрДлĐșĐ”', 'degree' : '°', 'netMountDialogTitle' : 'ĐŸĐŸĐŽĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ сДтДĐČĐŸĐč ЎОсĐș', // added 18.04.2012 'protocol' : 'ĐŸŃ€ĐŸŃ‚ĐŸĐșĐŸĐ»', // added 18.04.2012 'host' : 'Đ„ĐŸŃŃ‚', // added 18.04.2012 'port' : 'ĐŸĐŸŃ€Ń‚', // added 18.04.2012 'user' : 'ĐŸĐŸĐ»ŃŒĐ·ĐŸĐČĐ°Ń‚Đ”Đ»ŃŒ', // added 18.04.2012 'pass' : 'ĐŸĐ°Ń€ĐŸĐ»ŃŒ', // added 18.04.2012 'confirmUnmount' : 'Вы Ń…ĐŸŃ‚ĐžŃ‚Đ” ĐŸŃ‚ĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'ĐŸĐ”Ń€Đ”Ń‚Đ°Ń‰ĐžŃ‚Đ” ОлО ĐČстаĐČŃŒŃ‚Đ” фаĐčлы Оз Đ±Ń€Đ°ŃƒĐ·Đ”Ń€Đ°', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'ĐŸĐ”Ń€Đ”Ń‚Đ°Ń‰ĐžŃ‚Đ” ОлО ĐČстаĐČŃŒŃ‚Đ” фаĐčлы Đž ссылĐșĐž сюЮа', // from v2.1 added 07.04.2014 'encoding' : 'ĐšĐŸĐŽĐžŃ€ĐŸĐČĐșĐ°', // from v2.1 added 19.12.2014 'locale' : 'Đ›ĐŸĐșĐ°Đ»ŃŒ', // from v2.1 added 19.12.2014 'searchTarget' : 'ĐŠĐ”Đ»ŃŒ: $1', // from v2.1 added 22.5.2015 'searchMime' : 'ĐŸĐŸĐžŃĐș ĐżĐŸ ĐČĐČĐ”ĐŽĐ”ĐœĐœĐŸĐŒŃƒ MIME топу', // from v2.1 added 22.5.2015 'owner' : 'ВлаЎДлДц', // from v2.1 added 20.6.2015 'group' : 'Группа', // from v2.1 added 20.6.2015 'other' : 'ĐžŃŃ‚Đ°Đ»ŃŒĐœŃ‹Đ”', // from v2.1 added 20.6.2015 'execute' : 'Đ˜ŃĐżĐŸĐ»ĐœĐžŃ‚ŃŒ', // from v2.1 added 20.6.2015 'perm' : 'Đ Đ°Đ·Ń€Đ”ŃˆĐ”ĐœĐžĐ”', // from v2.1 added 20.6.2015 'mode' : 'Đ Đ”Đ¶ĐžĐŒ', // from v2.1 added 20.6.2015 'emptyFolder' : 'ПапĐșĐ° пуста', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'ПапĐșĐ° пуста\\A ĐŸĐ”Ń€Đ”Ń‚Đ°Ń‰ĐžŃ‚Đ” Ń‡Ń‚ĐŸĐ±Ń‹ ĐŽĐŸĐ±Đ°ĐČоть', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'ПапĐșĐ° пуста\\A Đ”ĐŸĐ»ĐłĐŸĐ” ĐœĐ°Đ¶Đ°Ń‚ĐžĐ” Ń‡Ń‚ĐŸĐ±Ń‹ ĐŽĐŸĐ±Đ°ĐČоть', // from v2.1.6 added 30.12.2015 'quality' : 'КачДстĐČĐŸ', // from v2.1.6 added 5.1.2016 'autoSync' : 'АĐČŃ‚ĐŸ ŃĐžĐœŃ…Ń€ĐŸĐœĐžĐ·Đ°Ń†ĐžŃ', // from v2.1.6 added 10.1.2016 'moveUp' : 'ĐŸĐ”Ń€Đ”ĐŽĐČĐžĐœŃƒŃ‚ŃŒ ĐČĐČДрх', // from v2.1.6 added 18.1.2016 'getLink' : 'ĐŸĐŸĐ»ŃƒŃ‡ĐžŃ‚ŃŒ URL ссылĐșу', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Đ’Ń‹Đ±Ń€Đ°ĐœĐœŃ‹Đ” ĐŸĐ±ŃŠĐ”Đșты ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID папĐșĐž', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'ĐŸĐŸĐ·ĐČĐŸĐ»ĐžŃ‚ŃŒ Đ°ĐČŃ‚ĐŸĐœĐŸĐŒĐœŃ‹Đč ĐŽĐŸŃŃ‚ŃƒĐż', // from v2.1.10 added 3.25.2016 'reAuth' : 'АĐČŃ‚ĐŸŃ€ĐžĐ·ĐŸĐČаться ĐżĐŸĐČŃ‚ĐŸŃ€ĐœĐŸ', // from v2.1.10 added 3.25.2016 'nowLoading' : 'Đ—Đ°ĐłŃ€ŃƒĐ¶Đ°Đ”Ń‚ŃŃ...', // from v2.1.12 added 4.26.2016 'openMulti' : 'ОтĐșрыть ĐœĐ”ŃĐșĐŸĐ»ŃŒĐșĐŸ фаĐčĐ»ĐŸĐČ', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Вы ĐżŃ‹Ń‚Đ°Đ”Ń‚Đ”ŃŃŒ ĐŸŃ‚Đșрыть $1 фаĐčĐ»(Đ°/ĐŸĐČ). Вы уĐČĐ”Ń€Đ”ĐœŃ‹, Ń‡Ń‚ĐŸ Ń…ĐŸŃ‚ĐžŃ‚Đ” ĐŸŃ‚Đșрыть ох ĐČ Đ±Ń€Đ°ŃƒĐ·Đ”Ń€Đ”?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'ĐĐžŃ‡Đ”ĐłĐŸ ĐœĐ” ĐœĐ°ĐčĐŽĐ”ĐœĐŸ', // from v2.1.12 added 5.16.2016 'editingFile' : 'Đ­Ń‚ĐŸ рДЎаĐșŃ‚ĐžŃ€ŃƒĐ”ĐŒŃ‹Đč фаĐčĐ».', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Вы ĐČыбралО $1 фаĐčĐ»(-ĐŸĐČ).', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'ĐŁ ĐČас $1 фаĐčĐ»(-ĐŸĐČ) ĐČ Đ±ŃƒŃ„Đ”Ń€Đ” ĐŸĐ±ĐŒĐ”ĐœĐ°.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Đ˜ĐœĐșŃ€Đ”ĐŒĐ”ĐœŃ‚ĐœŃ‹Đč ĐżĐŸĐžŃĐș ĐČĐŸĐ·ĐŒĐŸĐ¶Đ”Đœ Ń‚ĐŸĐ»ŃŒĐșĐŸ Оз Ń‚Đ”ĐșŃƒŃ‰Đ”ĐłĐŸ ĐČОЎа.', // from v2.1.13 added 6.30.2016 'reinstate' : 'Đ’ĐŸŃŃŃ‚Đ°ĐœĐŸĐČоть', // from v2.1.15 added 3.8.2016 'complete' : '$1 Đ·Đ°ĐČĐ”Ń€ŃˆĐ”Đœ', // from v2.1.15 added 21.8.2016 'contextmenu' : 'ĐšĐŸĐœŃ‚Đ”ĐșŃŃ‚ĐœĐŸĐ” ĐŒĐ”ĐœŃŽ', // from v2.1.15 added 9.9.2016 'pageTurning' : 'ĐŸĐ”Ń€Đ”ĐșĐ»ŃŽŃ‡Đ”ĐœĐžĐ” ŃŃ‚Ń€Đ°ĐœĐžŃ†Ń‹', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'ĐšĐŸŃ€ĐœĐž Ń‚ĐŸĐŒĐŸĐČ', // from v2.1.16 added 16.9.2016 'reset' : 'ĐĄĐ±Ń€ĐŸŃĐžŃ‚ŃŒ', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Đ€ĐŸĐœĐŸĐČыĐč цĐČДт', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Đ’Ń‹Đ±ĐŸŃ€ цĐČДта', // from v2.1.16 added 1.10.2016 '8pxgrid' : '8px сДтĐșĐ°', // from v2.1.16 added 4.10.2016 'enabled' : 'ВĐșĐ»ŃŽŃ‡Đ”ĐœĐŸ', // from v2.1.16 added 4.10.2016 'disabled' : 'ОтĐșĐ»ŃŽŃ‡Đ”ĐœĐŸ', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'ĐĐžŃ‡Đ”ĐłĐŸ ĐœĐ” ĐœĐ°ĐčĐŽĐ”ĐœĐŸ ĐČ Ń‚Đ”ĐșŃƒŃ‰Đ”ĐŒ ĐČОЎД.\\AĐĐ°Đ¶ĐŒĐžŃ‚Đ” [Enter] ĐŽĐ»Ń разĐČДртыĐČĐ°ĐœĐžŃ цДлО ĐżĐŸĐžŃĐșĐ°.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'ĐŸĐŸĐžŃĐș ĐżĐŸ пДрĐČĐŸĐŒŃƒ ŃĐžĐŒĐČĐŸĐ»Ńƒ ĐœĐ” ĐŽĐ°Đ» Ń€Đ”Đ·ŃƒĐ»ŃŒŃ‚Đ°Ń‚ĐŸĐČ ĐČ Ń‚Đ”ĐșŃƒŃ‰Đ”ĐŒ ĐČОЎД.', // from v2.1.23 added 24.3.2017 'textLabel' : 'йДĐșŃŃ‚ĐŸĐČая ĐŒĐ”Ń‚ĐșĐ°', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 ĐŒĐžĐœŃƒŃ‚ ĐŸŃŃ‚Đ°Đ»ĐŸŃŃŒ', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'ĐŸĐ”Ń€Đ”ĐŸŃ‚Đșрыть с ĐČŃ‹Đ±Ń€Đ°ĐœĐœĐŸĐč ĐșĐŸĐŽĐžŃ€ĐŸĐČĐșĐŸĐč', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'ĐĄĐŸŃ…Ń€Đ°ĐœĐžŃ‚ŃŒ с ĐČŃ‹Đ±Ń€Đ°ĐœĐœĐŸĐč ĐșĐŸĐŽĐžŃ€ĐŸĐČĐșĐŸĐč', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Đ’Ń‹Đ±Ń€Đ°Ń‚ŃŒ папĐșу', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'ĐŸĐŸĐžŃĐș ĐżĐŸ пДрĐČĐŸĐŒŃƒ ŃĐžĐŒĐČĐŸĐ»Ńƒ', // from v2.1.23 added 24.3.2017 'presets' : 'ĐŸŃ€Đ”ŃĐ”Ń‚Ń‹', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'ХлОшĐșĐŸĐŒ ĐŒĐœĐŸĐłĐŸ фаĐčĐ»ĐŸĐČ ĐŽĐ»Ń ĐżĐ”Ń€Đ”ĐŒĐ”Ń‰Đ”ĐœĐžŃ ĐČ ĐșĐŸŃ€Đ·ĐžĐœŃƒ.', // from v2.1.25 added 9.6.2017 'TextArea' : 'йДĐșŃŃ‚ĐŸĐČая ĐŸĐ±Đ»Đ°ŃŃ‚ŃŒ', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Очостоть папĐșу "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'ĐĐ”Ń‚ фаĐčĐ»ĐŸĐČ ĐČ ĐżĐ°ĐșĐ” "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž', // from v2.1.26 added 28.6.2017 'language' : 'ĐŻĐ·Ń‹Đș', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'ĐĄĐ±Ń€ĐŸŃĐžŃ‚ŃŒ ĐœĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐŽĐ»Ń ŃŃ‚ĐŸĐłĐŸ Đ±Ń€Đ°ŃƒĐ·Đ”Ń€Đ°', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐżĐ°ĐœĐ”Đ»Đž', // from v2.1.27 added 2.8.2017 'charsLeft' : '... ДщД ŃĐžĐŒĐČĐŸĐ»ĐŸĐČ: $1.', // from v2.1.29 added 30.8.2017 'linesLeft' : '... ДщД ŃŃ‚Ń€ĐŸĐș: $1.', // from v2.1.52 added 16.1.2020 'sum' : 'ОбщОĐč Ń€Đ°Đ·ĐŒĐ”Ń€', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'ĐŸŃ€ĐžĐ±Đ»ĐžĐ·ĐžŃ‚Đ”Đ»ŃŒĐœŃ‹Đč Ń€Đ°Đ·ĐŒĐ”Ń€ фаĐčла', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Đ€ĐŸĐșус ĐœĐ° ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Đ” ĐŽĐžĐ°Đ»ĐŸĐłĐ° про ĐœĐ°ĐČĐ”ĐŽĐ”ĐœĐžĐž ĐŒŃ‹ŃˆĐž', // from v2.1.30 added 2.11.2017 'select' : 'Đ’Ń‹Đ±Ń€Đ°Ń‚ŃŒ', // from v2.1.30 added 23.11.2017 'selectAction' : 'ДДĐčстĐČОД про ĐČŃ‹Đ±ĐŸŃ€Đ” фаĐčла', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'ОтĐșрыĐČать ĐČ Ń€Đ”ĐŽĐ°ĐșŃ‚ĐŸŃ€Đ”, ĐČŃ‹Đ±Ń€Đ°ĐœĐœĐŸĐŒ ĐČ ĐżŃ€ĐŸŃˆĐ»Ń‹Đč раз', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Đ’Ń‹Đ±Ń€Đ°Ń‚ŃŒ ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‹ с ĐžĐœĐČĐ”Ń€Ń‚ĐžŃ€ĐŸĐČĐ°ĐœĐžĐ”ĐŒ', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'ĐŸĐ”Ń€Đ”ĐžĐŒĐ”ĐœĐŸĐČать ĐČŃ‹Đ±Ń€Đ°ĐœĐœŃ‹Đ” ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‹ ($1 шт.) ĐČ $2?
      ДДĐčстĐČОД ĐœĐ”Đ»ŃŒĐ·Ń ĐŸŃ‚ĐŒĐ”ĐœĐžŃ‚ŃŒ!', // from v2.1.31 added 4.12.2017 'batchRename' : 'Đ“Ń€ŃƒĐżĐżĐŸĐČĐŸĐ” ĐżĐ”Ń€Đ”ĐžĐŒĐ”ĐœĐŸĐČĐ°ĐœĐžĐ”', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Đ§ĐžŃĐ»ĐŸ', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Đ”ĐŸĐ±Đ°ĐČоть прДфОĐșс', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Đ”ĐŸĐ±Đ°ĐČоть суффоĐșс', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Đ˜Đ·ĐŒĐ”ĐœĐžŃ‚ŃŒ Ń€Đ°ŃŃˆĐžŃ€Đ”ĐœĐžĐ”', // from v2.1.31 added 8.12.2017 'columnPref' : 'ĐĐ°ŃŃ‚Ń€ĐŸĐčĐșĐž ĐșĐŸĐ»ĐŸĐœĐŸĐș (ĐŽĐ»Ń ĐżŃ€ĐŸŃĐŒĐŸŃ‚Ń€Đ° ĐČ ĐČОЎД спОсĐșĐ°)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'ВсД ĐžĐ·ĐŒĐ”ĐœĐ”ĐœĐžŃ Đ±ŃƒĐŽŃƒŃ‚ ĐœĐ”ĐŒĐ”ĐŽĐ»Đ”ĐœĐœĐŸ ĐŸŃ‚Ń€Đ°Đ¶Đ”ĐœŃ‹ ĐČ Đ°Ń€Ń…ĐžĐČĐ”.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Đ˜Đ·ĐŒĐ”ĐœĐ”ĐœĐžŃ ĐœĐ” ĐČступят ĐČ ŃĐžĐ»Ńƒ ĐŽĐŸ тДх ĐżĐŸŃ€, ĐżĐŸĐșĐ° ĐČы ĐœĐ” Ń€Đ°Đ·ĐŒĐŸĐœŃ‚ĐžŃ€ŃƒĐ”Ń‚Đ” ŃŃ‚ĐŸŃ‚ Ń‚ĐŸĐŒ.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'ĐąĐŸĐŒĐ°, ŃĐŒĐŸĐœŃ‚ĐžŃ€ĐŸĐČĐ°ĐœĐœŃ‹Đ” ĐœĐ° ŃŃ‚ĐŸĐŒ Ń‚ĐŸĐŒĐ”, таĐșжД Đ±ŃƒĐŽŃƒŃ‚ Ń€Đ°Đ·ĐŒĐŸĐœŃ‚ĐžŃ€ĐŸĐČĐ°ĐœŃ‹. Вы Ń…ĐŸŃ‚ĐžŃ‚Đ” ĐŸŃ‚ĐșĐ»ŃŽŃ‡ĐžŃ‚ŃŒ Đ”ĐłĐŸ?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'ĐĄĐČĐŸĐčстĐČĐ°', // from v2.1.33 added 7.3.2018 'hashChecker' : 'ĐĐ»ĐłĐŸŃ€ĐžŃ‚ĐŒŃ‹ ĐŽĐ»Ń ĐŸŃ‚ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžŃ Ń…Đ”Ńˆ-ŃŃƒĐŒĐŒ фаĐčĐ»ĐŸĐČ', // from v2.1.33 added 10.3.2018 'infoItems' : 'Đ­Đ»Đ”ĐŒĐ”ĐœŃ‚Ń‹ ĐČ ĐżĐ°ĐœĐ”Đ»Đž сĐČĐŸĐčстĐČ', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'ĐĐ°Đ¶ĐŒĐžŃ‚Đ” ŃĐœĐŸĐČĐ° ĐŽĐ»Ń ĐČŃ‹Ń…ĐŸĐŽĐ°.', // from v2.1.38 added 1.4.2018 'toolbar' : 'ĐŸĐ°ĐœĐ”Đ»ŃŒ', // from v2.1.38 added 4.4.2018 'workspace' : 'Đ Đ°Đ±ĐŸŃ‡Đ°Ń ĐŸĐ±Đ»Đ°ŃŃ‚ŃŒ', // from v2.1.38 added 4.4.2018 'dialog' : 'Đ”ĐžĐ°Đ»ĐŸĐł', // from v2.1.38 added 4.4.2018 'all' : 'ВсД', // from v2.1.38 added 4.4.2018 'iconSize' : 'Đ Đ°Đ·ĐŒĐ”Ń€ ĐžĐșĐŸĐœĐŸĐș (В ĐČОЎД ĐžĐșĐŸĐœĐŸĐș)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'ОтĐșрыĐČать рДЎаĐșŃ‚ĐŸŃ€ ĐČ Ń€Đ°Đ·ĐČĐ”Ń€ĐœŃƒŃ‚ĐŸĐŒ ĐČОЎД', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'йаĐș ĐșĐ°Đș ĐșĐŸĐœĐČĐ”Ń€Ń‚Đ°Ń†ĐžŃ с ĐżĐŸĐŒĐŸŃ‰ŃŒŃŽ API ĐœĐ”ĐŽĐŸŃŃ‚ŃƒĐżĐœĐŸ, ĐżŃ€ĐŸĐžĐ·ĐČДЎОтД ĐșĐŸĐœĐČДртацОю ĐœĐ° ĐČДб-саĐčŃ‚Đ”.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'ĐŸĐŸŃĐ»Đ” ĐșĐŸĐœĐČДртацОО ĐČы ĐŽĐŸĐ»Đ¶ĐœŃ‹ Đ·Đ°ĐłŃ€ŃƒĐ·ĐžŃ‚ŃŒ сĐșĐ°Ń‡Đ°ĐœĐœŃ‹Đč фаĐčĐ», Ń‡Ń‚ĐŸĐ±Ń‹ ŃĐŸŃ…Ń€Đ°ĐœĐžŃ‚ŃŒ Đ”ĐłĐŸ.', //from v2.1.40 added 8.7.2018 'convertOn' : 'ĐšĐŸĐœĐČĐ”Ń€Ń‚ĐžŃ€ĐŸĐČать ĐœĐ° саĐčŃ‚Đ” $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Đ˜ĐœŃ‚Đ”ĐłŃ€Đ°Ń†ĐžĐž', // from v2.1.40 added 11.7.2018 'integrationWith' : 'ĐœĐ”ĐœĐ”ĐŽĐ¶Đ”Ń€ elFinder ĐžĐœŃ‚Đ”ĐłŃ€ĐžŃ€ĐŸĐČĐ°Đœ ŃĐŸ ŃĐ»Đ”ĐŽŃƒŃŽŃ‰ĐžĐŒĐž ĐČĐœĐ”ŃˆĐœĐžĐŒĐž сДрĐČĐžŃĐ°ĐŒĐž. ĐžĐ·ĐœĐ°ĐșĐŸĐŒŃŒŃ‚Đ”ŃŃŒ с праĐČĐžĐ»Đ°ĐŒĐž ĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°ĐœĐžŃ, ĐżĐŸĐ»ĐžŃ‚ĐžĐșĐ°ĐŒĐž Đ±Đ”Đ·ĐŸĐżĐ°ŃĐœĐŸŃŃ‚Đž Đž Юр. пДрДЎ ох ĐžŃĐżĐŸĐ»ŃŒĐ·ĐŸĐČĐ°ĐœĐžĐ”ĐŒ.', // from v2.1.40 added 11.7.2018 'showHidden' : 'ĐŸĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ сĐșрытыД ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‹', // from v2.1.41 added 24.7.2018 'hideHidden' : 'ĐĄĐșрыть сĐșрытыД ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‹', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'ĐŸĐŸĐșĐ°Đ·Đ°Ń‚ŃŒ/сĐșрыть сĐșрытыД ŃĐ»Đ”ĐŒĐ”ĐœŃ‚Ń‹', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'бопы фаĐčĐ»ĐŸĐČ ĐČ ĐŒĐ”ĐœŃŽ "ĐĐŸĐČыĐč фаĐčĐ»"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'йОп Ń‚Đ”ĐșŃŃ‚ĐŸĐČĐŸĐłĐŸ фаĐčла', // from v2.1.41 added 7.8.2018 'add' : 'Đ”ĐŸĐ±Đ°ĐČоть', // from v2.1.41 added 7.8.2018 'theme' : 'ĐąĐ”ĐŒĐ°', // from v2.1.43 added 19.10.2018 'default' : 'ĐŸĐŸ ŃƒĐŒĐŸĐ»Ń‡Đ°ĐœĐžŃŽ', // from v2.1.43 added 19.10.2018 'description' : 'ĐžĐżĐžŃĐ°ĐœĐžĐ”', // from v2.1.43 added 19.10.2018 'website' : 'ВДб-саĐčт', // from v2.1.43 added 19.10.2018 'author' : 'АĐČŃ‚ĐŸŃ€', // from v2.1.43 added 19.10.2018 'email' : 'Email', // from v2.1.43 added 19.10.2018 'license' : 'Đ›ĐžŃ†Đ”ĐœĐ·ĐžŃ', // from v2.1.43 added 19.10.2018 'exportToSave' : 'ĐĐ”ĐČĐŸĐ·ĐŒĐŸĐ¶ĐœĐŸ ŃĐŸŃ…Ń€Đ°ĐœĐžŃ‚ŃŒ фаĐčĐ». Đ§Ń‚ĐŸĐ±Ń‹ ĐœĐ” ĐżĐŸŃ‚Đ”Ń€ŃŃ‚ŃŒ ĐžĐ·ĐŒĐ”ĐœĐ”ĐœĐžŃ, эĐșŃĐżĐŸŃ€Ń‚ĐžŃ€ŃƒĐčŃ‚Đ” ох ĐœĐ° сĐČĐŸĐč ПК.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'ДĐČĐŸĐčĐœĐŸĐč ĐșлОĐș ĐżĐŸ фаĐčлу ĐŽĐ»Ń Đ”ĐłĐŸ ĐČŃ‹Đ±ĐŸŃ€Đ°.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Đ˜ŃĐżĐŸĐ»ŃŒĐ·ĐŸĐČать ĐżĐŸĐ»ĐœĐŸŃĐșŃ€Đ°ĐœĐœŃ‹Đč Ń€Đ”Đ¶ĐžĐŒ', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'ĐĐ”ĐžĐ·ĐČĐ”ŃŃ‚ĐœŃ‹Đč', 'kindRoot' : 'ĐšĐŸŃ€Đ”ĐœŃŒ Ń‚ĐŸĐŒĐ°', // from v2.1.16 added 16.10.2016 'kindFolder' : 'ПапĐșĐ°', 'kindSelects' : 'Đ’Ń‹Đ±ĐŸŃ€', // from v2.1.29 added 29.8.2017 'kindAlias' : 'ХсылĐșĐ°', 'kindAliasBroken' : 'Ботая ссылĐșĐ°', // applications 'kindApp' : 'ĐŸŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ”', 'kindPostscript' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ Postscript', 'kindMsOffice' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ Microsoft Office', 'kindMsWord' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ Microsoft Word', 'kindMsExcel' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ Microsoft Excel', 'kindMsPP' : 'ĐŸŃ€Đ”Đ·Đ”ĐœŃ‚Đ°Ń†ĐžŃ Microsoft Powerpoint', 'kindOO' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ Open Office', 'kindAppFlash' : 'ĐŸŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” Flash', 'kindPDF' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ PDF', 'kindTorrent' : 'ЀаĐčĐ» Bittorrent', 'kind7z' : 'АрхоĐČ 7z', 'kindTAR' : 'АрхоĐČ TAR', 'kindGZIP' : 'АрхоĐČ GZIP', 'kindBZIP' : 'АрхоĐČ BZIP', 'kindXZ' : 'АрхоĐČ XZ', 'kindZIP' : 'АрхоĐČ ZIP', 'kindRAR' : 'АрхоĐČ RAR', 'kindJAR' : 'ЀаĐčĐ» Java JAR', 'kindTTF' : 'йрофт True Type', 'kindOTF' : 'йрофт Open Type', 'kindRPM' : 'ПаĐșДт RPM', // texts 'kindText' : 'йДĐșŃŃ‚ĐŸĐČыĐč ĐŽĐŸĐșŃƒĐŒĐ”ĐœŃ‚', 'kindTextPlain' : 'ĐŸŃ€ĐŸŃŃ‚ĐŸĐč Ń‚Đ”Đșст', 'kindPHP' : 'Đ˜ŃŃ…ĐŸĐŽĐœĐžĐș PHP', 'kindCSS' : 'йаблОцы стОлДĐč CSS', 'kindHTML' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ HTML', 'kindJS' : 'Đ˜ŃŃ…ĐŸĐŽĐœĐžĐș Javascript', 'kindRTF' : 'Rich Text Format', 'kindC' : 'Đ˜ŃŃ…ĐŸĐŽĐœĐžĐș C', 'kindCHeader' : 'Đ—Đ°ĐłĐŸĐ»ĐŸĐČĐŸŃ‡ĐœŃ‹Đč фаĐčĐ» C', 'kindCPP' : 'Đ˜ŃŃ…ĐŸĐŽĐœĐžĐș C++', 'kindCPPHeader' : 'Đ—Đ°ĐłĐŸĐ»ĐŸĐČĐŸŃ‡ĐœŃ‹Đč фаĐčĐ» C++', 'kindShell' : 'ĐĄĐșропт Unix shell', 'kindPython' : 'Đ˜ŃŃ…ĐŸĐŽĐœĐžĐș Python', 'kindJava' : 'Đ˜ŃŃ…ĐŸĐŽĐœĐžĐș Java', 'kindRuby' : 'Đ˜ŃŃ…ĐŸĐŽĐœĐžĐș Ruby', 'kindPerl' : 'Đ˜ŃŃ…ĐŸĐŽĐœĐžĐș Perl', 'kindSQL' : 'Đ˜ŃŃ…ĐŸĐŽĐœĐžĐș SQL', 'kindXML' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ XML', 'kindAWK' : 'Đ˜ŃŃ…ĐŸĐŽĐœĐžĐș AWK', 'kindCSV' : 'йДĐșст с Ń€Đ°Đ·ĐŽĐ”Đ»ĐžŃ‚Đ”Đ»ŃĐŒĐž', 'kindDOCBOOK' : 'Đ”ĐŸĐșŃƒĐŒĐ”ĐœŃ‚ Docbook XML', 'kindMarkdown' : 'йДĐșст Markdown', // added 20.7.2015 // images 'kindImage' : 'Đ˜Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ”', 'kindBMP' : 'Đ˜Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ” BMP', 'kindJPEG' : 'Đ˜Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ” JPEG', 'kindGIF' : 'Đ˜Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ” GIF', 'kindPNG' : 'Đ˜Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ” PNG', 'kindTIFF' : 'Đ˜Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ” TIFF', 'kindTGA' : 'Đ˜Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ” TGA', 'kindPSD' : 'Đ˜Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ” Adobe Photoshop', 'kindXBITMAP' : 'Đ˜Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ” X bitmap', 'kindPXM' : 'Đ˜Đ·ĐŸĐ±Ń€Đ°Đ¶Đ”ĐœĐžĐ” Pixelmator', // media 'kindAudio' : 'ĐŃƒĐŽĐžĐŸ фаĐčĐ»', 'kindAudioMPEG' : 'ĐŃƒĐŽĐžĐŸ MPEG', 'kindAudioMPEG4' : 'ĐŃƒĐŽĐžĐŸ MPEG-4', 'kindAudioMIDI' : 'ĐŃƒĐŽĐžĐŸ MIDI', 'kindAudioOGG' : 'ĐŃƒĐŽĐžĐŸ Ogg Vorbis', 'kindAudioWAV' : 'ĐŃƒĐŽĐžĐŸ WAV', 'AudioPlaylist' : 'ĐŸĐ»Đ”ĐčлОст MP3', 'kindVideo' : 'Đ’ĐžĐŽĐ”ĐŸ фаĐčĐ»', 'kindVideoDV' : 'Đ’ĐžĐŽĐ”ĐŸ DV', 'kindVideoMPEG' : 'Đ’ĐžĐŽĐ”ĐŸ MPEG', 'kindVideoMPEG4' : 'Đ’ĐžĐŽĐ”ĐŸ MPEG-4', 'kindVideoAVI' : 'Đ’ĐžĐŽĐ”ĐŸ AVI', 'kindVideoMOV' : 'Đ’ĐžĐŽĐ”ĐŸ Quick Time', 'kindVideoWM' : 'Đ’ĐžĐŽĐ”ĐŸ Windows Media', 'kindVideoFlash' : 'Đ’ĐžĐŽĐ”ĐŸ Flash', 'kindVideoMKV' : 'Đ’ĐžĐŽĐ”ĐŸ Matroska', 'kindVideoOGG' : 'Đ’ĐžĐŽĐ”ĐŸ Ogg' } }; })); application/library/js/i18n/elfinder.fa.js000064400000122465147577724760014465 0ustar00/** * ÙŰ§Ű±ŰłÛŒ translation * @author Keyhan Mohammadpour * @author mhs prog * @version 2021-04-14 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.fa = { translator : 'Keyhan Mohammadpour <keyhan_universityworks@yahoo.com>, Farhad Zare <farhad@persianoc.com>', language : 'ÙŰ§Ű±ŰłÛŒ', direction : 'rtl', dateFormat : 'd.m.Y H:i', // will show like: 14.04.2021 19:24 fancyDateFormat : '$1 H:i', // will show like: Ű§Ù…Ű±ÙˆŰČ 19:24 nonameDateFormat : 'ymd-His', // noname upload will show like: 210414-192445 messages : { /********************************** errors **********************************/ 'error' : '۟۷ۧ', 'errUnknown' : 'ŰźŰ·Ű§ÛŒ Ù†Ű§ŰŽÙ†Ű§ŰźŰȘه.', 'errUnknownCmd' : 'ŰŻŰłŰȘÙˆŰ± Ù†Ű§ŰŽÙ†Ű§ŰźŰȘه.', 'errJqui' : 'ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ Ú©ŰȘŰ§ŰšŰźŰ§Ù†Ù‡ JQuery UI ŰŽÙ…Ű§ ŰšÙ‡ ۯ۱۳ŰȘی Ű§Ù†ŰŹŰ§Ù… Ù†ŰŽŰŻÙ‡ ۧ۳ŰȘ. Ű§ÛŒÙ† Ú©ŰȘŰ§ŰšŰźŰ§Ù†Ù‡ ŰšŰ§ÛŒŰłŰȘی ŰŽŰ§Ù…Ù„ Resizable یDraggable و Droppable ۚۧێۯ.', 'errNode' : 'elfinder ŰšÙ‡ ۯ۱۳ŰȘی Ű§ÛŒŰŹŰ§ŰŻ Ù†ŰŽŰŻÙ‡ ۧ۳ŰȘ.', 'errURL' : 'ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ elfinder ŰŽÙ…Ű§ ŰšÙ‡ ۯ۱۳ŰȘی Ű§Ù†ŰŹŰ§Ù… Ù†ŰŽŰŻÙ‡ ۧ۳ŰȘ. ŰȘÙ†ŰžÛŒÙ… Url ۱ۧ Ű§Ű”Ù„Ű§Ű­ Ù†Ù…Ű§ÛŒÛŒŰŻ.', 'errAccess' : 'Ù…Ű­ŰŻÙˆŰŻÛŒŰȘ ۳۷ۭ ŰŻŰłŰȘŰ±ŰłÛŒ', 'errConnect' : 'Ű§Ù…Ú©Ű§Ù† ۧŰȘŰ”Ű§Ù„ ŰšÙ‡ Ù…ŰŻÛŒŰ±ÛŒŰȘ ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errAbort' : 'ۧ۱ŰȘۚۧ۷ Ù‚Ű·Űč ŰŽŰŻÙ‡ ۧ۳ŰȘ.', 'errTimeout' : 'مهلŰȘ ŰČÙ…Ű§Ù†ÛŒ ۧ۱ŰȘۚۧ۷ ŰŽÙ…Ű§ ŰšÙ‡ ۧŰȘÙ…Ű§Ù… Ű±ŰłÛŒŰŻÙ‡ ۧ۳ŰȘ.', 'errNotFound' : 'ŰȘÙ†ŰžÛŒÙ… Ù…ŰŻÛŒŰ±ÛŒŰȘ ÛŒŰ§ÙŰȘ Ù†ŰŽŰŻ.', 'errResponse' : 'ÙŸŰ§ŰłŰź ŰŻŰ±ÛŒŰ§ÙŰȘی ۧŰČ Ù…ŰŻÛŒŰ±ÛŒŰȘ Ű”Ű­ÛŒŰ­ نمی ۚۧێۯ.', 'errConf' : 'ŰȘÙ†Ű·ÛŒÙ…Ű§ŰȘ Ù…ŰŻÛŒŰ±ÛŒŰȘ ŰšÙ‡ ۯ۱۳ŰȘی Ű§Ù†ŰŹŰ§Ù… Ù†ŰŽŰŻÙ‡ ۧ۳ŰȘ.', 'errJSON' : 'Ù…Ű§Ú˜ÙˆÙ„ PHP JSON Ù†Ű”Űš Ù†ÛŒŰłŰȘ.', 'errNoVolumes' : 'ŰŻŰ±Ű§ÛŒÙˆÙ‡Ű§ÛŒ Ù‚Ű§ŰšÙ„ ŰźÙˆŰ§Ù†ŰŻÙ† ÛŒŰ§ÙŰȘ Ù†ŰŽŰŻÙ†ŰŻ.', 'errCmdParams' : 'ÙŸŰ§Ű±Ű§Ù…ŰȘŰ±Ù‡Ű§ÛŒ ŰŻŰłŰȘÙˆŰ± "$1" ŰšÙ‡ Ű”ÙˆŰ±ŰȘ Ű”Ű­ÛŒŰ­ Ű§Ű±ŰłŰ§Ù„ Ù†ŰŽŰŻÙ‡ ۧ۳ŰȘ.', 'errDataNotJSON' : 'ŰŻŰ§ŰŻÙ‡ Ù‡Ű§ ۯ۱ Ù‚Ű§Ù„Űš JSON نمی ŰšŰ§ŰŽÙ†ŰŻ.', 'errDataEmpty' : 'ŰŻŰ§ŰŻÙ‡ ŰŻŰ±ÛŒŰ§ÙŰȘی ŰźŰ§Ù„ÛŒ ۧ۳ŰȘ.', 'errCmdReq' : 'ŰŻŰ±ŰźÙˆŰ§ŰłŰȘ ۧŰČ ŰłÙ…ŰȘ Ù…ŰŻÛŒŰ±ÛŒŰȘ Ù†ÛŒŰ§ŰČÙ…Ù†ŰŻ Ù†Ű§Ù… ŰŻŰłŰȘÙˆŰ± می ۚۧێۯ.', 'errOpen' : 'Ű§Ù…Ú©Ű§Ù† ۚۧŰČ Ù†Ù…ÙˆŰŻÙ† "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errNotFolder' : 'ŰąÛŒŰȘم Ù…ÙˆŰ±ŰŻÙ†ŰžŰ± ÙŸÙˆŰŽÙ‡ Ù†ÛŒŰłŰȘ.', 'errNotFile' : 'ŰąÛŒŰȘم Ù…ÙˆŰ±ŰŻÙ†ŰžŰ± ÙŰ§ÛŒÙ„ Ù†ÛŒŰłŰȘ.', 'errRead' : 'Ű§Ù…Ú©Ű§Ù† ŰźÙˆŰ§Ù†ŰŻÙ† "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errWrite' : 'Ű§Ù…Ú©Ű§Ù† Ù†ÙˆŰŽŰȘن ۯ۱ ŰŻŰ±ÙˆÙ† "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errPerm' : 'ŰŽÙ…Ű§ Ù…ŰŹŰ§ŰČ ŰšÙ‡ Ű§Ù†ŰŹŰ§Ù… Ű§ÛŒÙ† Űčمل نمی ŰšŰ§ŰŽÛŒŰŻ.', 'errLocked' : '"$1" قفل ÚŻŰ±ŰŻÛŒŰŻÙ‡ ۧ۳ŰȘ و ŰŽÙ…Ű§ Ù‚Ű§ŰŻŰ± ŰšÙ‡ ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù… ی Ű­Ű°Ù و ÛŒŰ§ ŰŹŰ§ŰšŰŹŰ§ÛŒÛŒ ŰąÙ† نمی ŰšŰ§ŰŽÛŒŰŻ.', 'errExists' : 'ÙŰ§ÛŒÙ„ÛŒ ۚۧ Ù†Ű§Ù… "$1" هم Ű§Ú©Ù†ÙˆÙ† ÙˆŰŹÙˆŰŻ ۯۧ۱ۯ.', 'errInvName' : 'Ù†Ű§Ù… Ű§Ù†ŰȘŰźŰ§ŰšÛŒ ŰŽÙ…Ű§ Ű”Ű­ÛŒŰ­ نمی ۚۧێۯ.', 'errInvDirname' : 'Ù†Ű§Ù… ÙŸÙˆŰŽÙ‡ ŰșÛŒŰ±Ù…ŰčŰȘۚ۱ می ۚۧێۯ.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'ÙŸÙˆŰŽÙ‡ Ù…ÙˆŰ±ŰŻ Ù†ŰžŰ± ÛŒŰ§ÙŰȘ Ù†ŰŽŰŻ.', 'errFileNotFound' : 'ÙŰ§ÛŒÙ„ Ù…ÙˆŰ±ŰŻ Ù†ŰžŰ± ÛŒŰ§ÙŰȘ Ù†ŰŽŰŻ.', 'errTrgFolderNotFound' : 'ÙŸÙˆŰŽÙ‡ Ù…Ù‚Ű”ŰŻ ۚۧ Ù†Ű§Ù… "$1" ÛŒŰ§ÙŰȘ Ù†ŰŽŰŻ.', 'errPopup' : 'Ù…Ű±ÙˆŰ±ÚŻŰ± ŰŽÙ…Ű§ ۧ۱ ۚۧŰČ ŰŽŰŻÙ† ÙŸÙ†ŰŹŰ±Ù‡ popup ŰŹÙ„ÙˆÚŻÛŒŰ±ÛŒ می Ú©Ù†ŰŻŰŒ Ù„Ű·ÙŰ§ ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ Ù…Ű±ŰšÙˆŰ·Ù‡ ۱ۧ ۯ۱ Ù…Ű±ÙˆŰ±ÚŻŰ± ŰźÙˆŰŻ فŰčŰ§Ù„ Ù†Ù…Ű§ÛŒÛŒŰŻ.', 'errMkdir' : 'Ű§Ù…Ú©Ű§Ù† Ű§ÛŒŰŹŰ§ŰŻ ÙŸÙˆŰŽÙ‡ Ű§ÛŒ ۚۧ Ù†Ű§Ù… "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errMkfile' : 'Ű§Ù…Ú©Ű§Ù† Ű§ÛŒŰŹŰ§ŰŻ ÙŰ§ÛŒÙ„ÛŒ ۚۧ Ù†Ű§Ù… "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errRename' : 'Ű§Ù…Ú©Ű§Ù† ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù… ÙŰ§ÛŒÙ„ "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errCopyFrom' : 'Ú©ÙŸÛŒ Ù†Ù…ÙˆŰŻÙ† ۧŰČ ŰŻŰ±Ű§ÛŒÙˆ ۚۧ Ù†Ű§Ù… "$1" ممکن نمی ۚۧێۯ.', 'errCopyTo' : 'Ú©ÙŸÛŒ Ù†Ù…ÙˆŰŻÙ† ŰšÙ‡ ŰŻŰ±Ű§ÛŒÙˆ ۚۧ Ù†Ű§Ù… "$1" ممکن نمی ۚۧێۯ.', 'errMkOutLink' : 'Ű§Ù…Ú©Ű§Ù† Ű§ÛŒŰŹŰ§ŰŻ لینک ŰšÙ‡ ۟ۧ۱ۏ ۧŰČ Ù…ŰłÛŒŰ± Ű±ÛŒŰŽÙ‡ ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', // from v2.1 added 03.10.2015 'errUpload' : 'ŰźŰ·Ű§ÛŒ ŰąÙŸÙ„ÙˆŰŻ', // old name - errUploadCommon 'errUploadFile' : 'Ű§Ù…Ú©Ű§Ù† ŰąÙŸÙ„ÙˆŰŻ "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', // old name - errUpload 'errUploadNoFiles' : 'ÙŰ§ÛŒÙ„ÛŒ ŰšŰ±Ű§ÛŒ ŰąÙŸÙ„ÙˆŰŻ ÛŒŰ§ÙŰȘ Ù†ŰŽŰŻ.', 'errUploadTotalSize' : 'Ű­ŰŹÙ… ŰŻŰ§ŰŻÙ‡ ŰšÛŒŰŽ ۧŰČ Ű­ŰŻ Ù…ŰŹŰ§ŰČ Ù…ÛŒ ۚۧێۯ.', // old name - errMaxSize 'errUploadFileSize' : 'Ű­ŰŹÙ… ÙŰ§ÛŒÙ„ ŰšÛŒŰŽ ۧŰČ Ű­ŰŻ Ù…ŰŹŰ§ŰČ Ù…ÛŒ ۚۧێۯ.', // old name - errFileMaxSize 'errUploadMime' : 'نوŰč ÙŰ§ÛŒÙ„ Ű§Ù†ŰȘŰźŰ§ŰšÛŒ Ù…ŰŹŰ§ŰČ Ù†Ù…ÛŒ ۚۧێۯ.', 'errUploadTransfer' : 'ۯ۱ Ű§Ù†ŰȘÙ‚Ű§Ù„ "$1" ŰźŰ·Ű§ÛŒÛŒ ۱۟ ŰŻŰ§ŰŻÙ‡ ۧ۳ŰȘ.', 'errUploadTemp' : 'Ű§Ù…Ú©Ű§Ù† Ű§ÛŒŰŹŰ§ŰŻ ÙŰ§ÛŒÙ„ موقŰȘ ŰŹÙ‡ŰȘ ŰąÙŸÙ„ÙˆŰŻ ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', // from v2.1 added 26.09.2015 'errNotReplace' : 'ŰąÛŒŰȘم "$1" ۧŰČ Ù‚ŰšÙ„ ÙˆŰŹÙˆŰŻ ۯۧ۱ۯ و Ű§Ù…Ú©Ű§Ù† ŰŹŰ§ÛŒÚŻŰČینی ŰąÙ† ۚۧ ŰąÛŒŰȘمی ۧŰČ Ù†ÙˆŰč ŰŻÛŒÚŻŰ± ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', // new 'errReplace' : 'Ű§Ù…Ú©Ű§Ù† ŰŹŰ§ÛŒÚŻŰČینی "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errSave' : 'Ű§Ù…Ú©Ű§Ù† Ű°ŰźÛŒŰ±Ù‡ Ú©Ű±ŰŻÙ† "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errCopy' : 'Ű§Ù…Ú©Ű§Ù† Ú©ÙŸÛŒ Ú©Ű±ŰŻÙ† "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errMove' : 'Ű§Ù…Ú©Ű§Ù† ŰŹŰ§ŰšŰŹŰ§ÛŒÛŒ "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errCopyInItself' : 'Ű§Ù…Ú©Ű§Ù† Ú©ÙŸÛŒ Ú©Ű±ŰŻÙ† "$1" ۯ۱ ŰŻŰ±ÙˆÙ† ŰźÙˆŰŻŰŽ ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errRm' : 'Ű§Ù…Ú©Ű§Ù† Ű­Ű°Ù Ú©Ű±ŰŻÙ† "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errTrash' : 'Ű§Ù…Ú©Ű§Ù† Ű­Ű°Ù ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Ű§Ù…Ú©Ű§Ù† Ű­Ű°Ù ÙŰ§ÛŒÙ„(Ù‡Ű§) ۧŰČ Ù…ŰšŰŻŰ§ ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errExtract' : 'Ű§Ù…Ú©Ű§Ù† ۧ۳ŰȘ۟۱ۧۏ ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡ "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errArchive' : 'Ű§Ù…Ú©Ű§Ù† Ű§ÛŒŰŹŰ§ŰŻ ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡ ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errArcType' : 'نوŰč Ù†Ű§ŰŽÙ†Ű§ŰźŰȘه ŰšŰ±Ű§ÛŒ ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡.', 'errNoArchive' : 'Ű§ÛŒÙ† ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡ Ù†ÛŒŰłŰȘ ÛŒŰ§ Ű§ÛŒÙ†Ú©Ù‡ Ű§ÛŒÙ† نوŰč ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡ ÙŸŰŽŰȘÛŒŰšŰ§Ù†ÛŒ نمی ŰŽÙˆŰŻ.', 'errCmdNoSupport' : 'Ù…ŰŻÛŒŰ±ÛŒŰȘ ۧŰČ Ű§ÛŒÙ† ŰŻŰłŰȘÙˆŰ± ÙŸŰŽŰȘÛŒŰšŰ§Ù†ÛŒ نمی Ú©Ù†ŰŻ.', 'errReplByChild' : 'Ű§Ù…Ú©Ű§Ù† ŰŹŰ§ÛŒÚŻŰČینی ÙŸÙˆŰŽÙ‡ "$1" ۚۧ یک ŰąÛŒŰȘم ۧŰČ ŰŻŰ±ÙˆÙ† ŰźÙˆŰŻŰŽ ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errArcSymlinks' : 'ŰšÙ‡ ŰŻÙ„Ű§ÛŒÙ„ Ù…ŰłŰ§ŰŠÙ„ Ű§Ù…Ù†ÛŒŰȘی Ű§Ù…Ú©Ű§Ù† ۚۧŰČ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡ ŰŻŰ§Ű±Ű§ÛŒ symlinks ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', // edited 24.06.2012 'errArcMaxSize' : 'ÙŰ§ÛŒÙ„ Ù‡Ű§ÛŒ ÙŰŽŰ±ŰŻÙ‡ ŰšÙ‡ ۭۯۧک۫۱ Ű§Ù†ŰŻŰ§ŰČه ŰȘŰčیین ŰŽŰŻÙ‡ Ű±ŰłÛŒŰŻÙ‡ Ű§Ù†ŰŻ.', 'errResize' : 'Ű§Ù…Ú©Ű§Ù† ŰȘŰșÛŒÛŒŰ± Ű§Ù†ŰŻŰ§ŰČه "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', 'errResizeDegree' : 'ŰŻŰ±ŰŹÙ‡ چ۱۟ێ Ù†Ű§Ù…ŰčŰȘۚ۱ ۧ۳ŰȘ.', // added 7.3.2013 'errResizeRotate' : 'Ű§Ù…Ú©Ű§Ù† چ۱۟ێ ŰȘŰ”ÙˆÛŒŰ± ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', // added 7.3.2013 'errResizeSize' : 'Ű§Ù†ŰŻŰ§ŰČه ŰȘŰ”ÙˆÛŒŰ± Ù†Ű§Ù…ŰčŰȘۚ۱ ۧ۳ŰȘ.', // added 7.3.2013 'errResizeNoChange' : 'ŰȘŰșÛŒÛŒŰ±ÛŒ ۯ۱ Ű§Ù†ŰŻŰ§ŰČه ŰȘŰ”ÙˆÛŒŰ± Ű§ÛŒŰŹŰ§ŰŻ Ù†ŰŽŰŻÙ‡ ۧ۳ŰȘ.', // added 7.3.2013 'errUsupportType' : 'Ű§ÛŒÙ† نوŰč ÙŰ§ÛŒÙ„ ÙŸŰŽŰȘÛŒŰšŰ§Ù†ÛŒ نمی ŰŽÙˆŰŻ.', 'errNotUTF8Content' : 'ÙŰ§ÛŒÙ„ "$1" ŰšÙ‡ Ű”ÙˆŰ±ŰȘ UTF-8 Ű°ŰźÛŒŰ±Ù‡ Ù†ŰŽŰŻÙ‡ و Ű§Ù…Ú©Ű§Ù† ÙˆÛŒŰ±Ű§ÛŒŰŽ ŰąÙ† ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', // added 9.11.2011 'errNetMount' : 'Ű§Ù…Ú©Ű§Ù† ۧŰȘŰ”Ű§Ù„ "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', // added 17.04.2012 'errNetMountNoDriver' : 'Ű§ÛŒÙ† ÙŸŰ±ÙˆŰȘکل ÙŸŰŽŰȘÛŒŰšŰ§Ù†ÛŒ نمی ŰŽÙˆŰŻ.', // added 17.04.2012 'errNetMountFailed' : 'ۧŰȘŰ”Ű§Ù„ Ù†Ű§Ù…ÙˆÙÙ‚ ŰšÙˆŰŻ.', // added 17.04.2012 'errNetMountHostReq' : 'میŰČŰšŰ§Ù† Ù…ÙˆŰ±ŰŻÙ†ÛŒŰ§ŰČ Ű§ŰłŰȘ.', // added 18.04.2012 'errSessionExpires' : 'ۧŰčŰȘۚۧ۱ ŰŹÙ„ŰłÙ‡ Ú©Ű§Ű±ÛŒ ŰŽÙ…Ű§ ŰšŰŻÙ„ÛŒÙ„ ŰčŰŻÙ… فŰčŰ§Ù„ÛŒŰȘ ŰšŰ±Ű§ÛŒ Ù…ŰŻŰȘ ŰČÙ…Ű§Ù† Ű·ÙˆÙ„Ű§Ù†ÛŒ ŰšÙ‡ ۧŰȘÙ…Ű§Ù… Ű±ŰłÛŒŰŻÙ‡ ۧ۳ŰȘ.', 'errCreatingTempDir' : 'Ű§Ù…Ú©Ű§Ù† Ű§ÛŒŰŹŰ§ŰŻ ŰŻŰ§ÛŒŰ±Ú©ŰȘÙˆŰ±ÛŒ موقŰȘ ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ: "$1"', 'errFtpDownloadFile' : 'Ű§Ù…Ú©Ű§Ù† ŰŻŰ±ÛŒŰ§ÙŰȘ ÙŰ§ÛŒÙ„ ۧŰČ FTP ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ: "$1"', 'errFtpUploadFile' : 'Ű§Ù…Ú©Ű§Ù† ŰąÙŸÙ„ÙˆŰŻ ÙŰ§ÛŒÙ„ ŰšÙ‡ FTP ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ: "$1"', 'errFtpMkdir' : 'Ű§Ù…Ú©Ű§Ù† Ű§ÛŒŰŹŰ§ŰŻ ŰŻŰ§ÛŒŰ±Ú©ŰȘÙˆŰ±ÛŒ ŰšŰ±Ű±ÙˆÛŒ FTP ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ: "$1"', 'errArchiveExec' : '۟۷ۧ ۯ۱ ŰČÙ…Ű§Ù† ÙŰŽŰ±ŰŻÙ‡ ۳ۧŰČی Ű§ÛŒÙ† ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§: "$1"', 'errExtractExec' : '۟۷ۧ ۯ۱ ŰČÙ…Ű§Ù† ۚۧŰČÚŻŰŽŰ§ÛŒÛŒ Ű§ÛŒÙ† ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§: "$1"', 'errNetUnMount' : 'Ű§Ù…Ú©Ű§Ù† Ù‚Ű·Űč ۧŰȘŰ”Ű§Ù„ ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Ű§Ù…Ú©Ű§Ù† ŰȘŰšŰŻÛŒÙ„ ŰšÙ‡ UTF-8 ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ', // from v2.1 added 08.04.2014 'errFolderUpload' : 'ŰŹÙ‡ŰȘ ŰąÙŸÙ„ÙˆŰŻ Ú©Ű±ŰŻÙ† ÙŸÙˆŰŽÙ‡ŰŒ ۧŰČ ÛŒÚ© Ù…Ű±ÙˆŰ±ÚŻŰ± Ù…ŰŻŰ±Ù† ۧ۳ŰȘÙŰ§ŰŻÙ‡ Ù†Ù…Ű§ÛŒÛŒŰŻ.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'ۯ۱ Ù‡Ù†ÚŻŰ§Ù† ŰŹŰłŰȘŰŹÙˆ ŰšŰ±Ű§ÛŒ "$1" ŰźŰ·Ű§ÛŒÛŒ ۱۟ ŰŻŰ§ŰŻÙ‡ ۧ۳ŰȘ. نŰȘÛŒŰŹÙ‡ ŰŹŰłŰȘŰŹÙˆ ŰšÙ‡ Ű”ÙˆŰ±ŰȘ Ù†Ű§ŰȘÙ…Ű§Ù… می ۚۧێۯ.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'ۧŰčŰȘŰšŰ§Ű±ŰłÙ†ŰŹÛŒ Ù…ŰŹŰŻŰŻ Ù…ÙˆŰ±ŰŻÙ†ÛŒŰ§ŰČ Ű§ŰłŰȘ.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'ۭۯۧک۫۱ ŰȘŰčۯۧۯ Ű§Ù†ŰȘ۟ۧۚ Ù‚Ű§ŰšÙ„ Ù‚ŰšÙˆÙ„ $1 Ù…ÛŒâ€ŒŰšŰ§ŰŽŰŻ.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Ű§Ù…Ú©Ű§Ù† ۚۧŰČÛŒŰ§ŰšÛŒ ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ. Ù…Ù‚Ű”ŰŻ ۚۧŰČÛŒŰ§ŰšÛŒ Ù†Ű§Ù…ŰŽŰźŰ” ۧ۳ŰȘ.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'ÙˆÛŒŰ±Ű§ÛŒŰŽÚŻŰ±ÛŒ ŰšŰ±Ű§ÛŒ Ű§ÛŒÙ† نوŰč ÙŰ§ÛŒÙ„ ÛŒŰ§ÙŰȘ Ù†ŰŽŰŻ.', // from v2.1.25 added 23.5.2017 'errServerError' : 'ŰźŰ·Ű§ÛŒÛŒ ۯ۱ ŰłÙ…ŰȘ ŰłŰ±ÙˆŰ± ŰšÙ‡ ÙˆŰŹÙˆŰŻ ŰąÙ…ŰŻÙ‡ ۧ۳ŰȘ.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Ű§Ù…Ú©Ű§Ù† ŰźŰ§Ù„ÛŒ Ú©Ű±ŰŻÙ† ÙŸÙˆŰŽÙ‡ "$1" ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', // from v2.1.25 added 22.6.2017 'moreErrors' : '$1 ŰźŰ·Ű§ÛŒ ŰŻÛŒÚŻŰ± نیŰČ ÙˆŰŹÙˆŰŻ ۯۧ۱ۯ.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : 'Ű§ÛŒŰŹŰ§ŰŻ ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡', 'cmdback' : 'ۚۧŰČÚŻŰŽŰȘ ŰšÙ‡ ŰčÙ‚Űš', 'cmdcopy' : 'Ú©ÙŸÛŒ', 'cmdcut' : 'ŰšŰ±ÛŒŰŻÙ†', 'cmddownload' : 'ŰŻŰ§Ù†Ù„ÙˆŰŻ', 'cmdduplicate' : 'ŰȘÚ©Ű«ÛŒŰ± ÙŰ§ÛŒÙ„', 'cmdedit' : 'ÙˆÛŒŰ±Ű§ÛŒŰŽ Ù…Ű­ŰȘÙˆŰ§ÛŒ ÙŰ§ÛŒÙ„', 'cmdextract' : 'ۚۧŰČÚŻŰŽŰ§ÛŒÛŒ ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡', 'cmdforward' : 'ۭ۱کŰȘ ŰšÙ‡ ŰŹÙ„Ùˆ', 'cmdgetfile' : 'Ű§Ù†ŰȘ۟ۧۚ ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§', 'cmdhelp' : 'ŰŻŰ±ŰšŰ§Ű±Ù‡ Ű§ÛŒÙ† Ù†Ű±Ù…â€ŒŰ§ÙŰČۧ۱', 'cmdhome' : 'Ű±ÛŒŰŽÙ‡', 'cmdinfo' : 'Ù…ŰŽŰ§Ù‡ŰŻÙ‡ Ù…ŰŽŰźŰ”Ű§ŰȘ', 'cmdmkdir' : 'ÙŸÙˆŰŽÙ‡ ŰŹŰŻÛŒŰŻ', 'cmdmkdirin' : 'Ű§Ù†ŰȘÙ‚Ű§Ù„ ŰšÙ‡ ÙŸÙˆŰŽÙ‡ ŰŹŰŻÛŒŰŻ', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'ÙŰ§ÛŒÙ„ ŰŹŰŻÛŒŰŻ', 'cmdopen' : 'ۚۧŰČ Ú©Ű±ŰŻÙ†', 'cmdpaste' : 'Ú†ŰłŰšŰ§Ù†ŰŻÙ†', 'cmdquicklook' : 'ÙŸÛŒŰŽ Ù†Ù…Ű§ÛŒŰŽ', 'cmdreload' : 'ŰšŰ§Ű±ÚŻŰ°Ű§Ű±ÛŒ Ù…ŰŹŰŻŰŻ', 'cmdrename' : 'ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù…', 'cmdrm' : 'Ű­Ű°Ù', 'cmdtrash' : 'Ű§Ù†ŰȘÙ‚Ű§Ù„ ŰšÙ‡ ŰłŰ·Ù„ ۚۧŰČÛŒŰ§ÙŰȘ', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'ۚۧŰČÛŒŰ§ŰšÛŒ', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'ŰŹŰłŰȘŰŹÙˆÛŒ ÙŰ§ÛŒÙ„', 'cmdup' : 'Ű±ÙŰȘن ŰšÙ‡ ۳۷ۭ ŰšŰ§Ù„Ű§ŰȘ۱', 'cmdupload' : 'ŰąÙŸÙ„ÙˆŰŻ ÙŰ§ÛŒÙ„', 'cmdview' : 'Ù…ŰŽŰ§Ù‡ŰŻÙ‡', 'cmdresize' : 'ŰȘŰșÛŒÛŒŰ± Ű§Ù†ŰŻŰ§ŰČه و چ۱۟ێ', 'cmdsort' : 'Ù…Ű±ŰȘŰš ۳ۧŰČی', 'cmdnetmount' : 'ۧŰȘŰ”Ű§Ù„ ŰŻŰ±Ű§ÛŒÙˆ ŰŽŰšÚ©Ù‡', // added 18.04.2012 'cmdnetunmount': 'Ù‚Ű·Űč ۧŰȘŰ”Ű§Ù„', // from v2.1 added 30.04.2012 'cmdplaces' : 'ŰšÙ‡ Ù…ŰłÛŒŰ±Ù‡Ű§ÛŒ', // added 28.12.2014 'cmdchmod' : 'ŰȘŰșÛŒÛŒŰ± Ű­Ű§Ù„ŰȘ', // from v2.1 added 20.6.2015 'cmdopendir' : 'ۚۧŰČÚ©Ű±ŰŻÙ† یک ÙŸÙˆŰŽÙ‡', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'ۚۧŰČÙ†ŰŽŰ§Ù†ÛŒ Űč۱۶ ŰłŰȘون', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Ű­Ű§Ù„ŰȘ Ù†Ù…Ű§ÛŒŰŽ ŰȘÙ…Ű§Ù… Ű”ÙŰ­Ù‡', // from v2.1.15 added 03.08.2016 'cmdmove' : 'Ű§Ù†ŰȘÙ‚Ű§Ù„', // from v2.1.15 added 21.08.2016 'cmdempty' : 'ŰźŰ§Ù„ÛŒ Ú©Ű±ŰŻÙ† ÙŸÙˆŰŽÙ‡', // from v2.1.25 added 22.06.2017 'cmdundo' : 'ŰźÙ†Ű«ÛŒâ€ŒŰłŰ§ŰČی', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Ű§Ù†ŰŹŰ§Ù… Ù…ŰŹŰŻŰŻ', // from v2.1.27 added 31.07.2017 'cmdpreference': 'ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Ű§Ù†ŰȘ۟ۧۚ همه Ù…ÙˆŰ§Ű±ŰŻ', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'لŰșو Ű§Ù†ŰȘ۟ۧۚ', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Ű§Ù†ŰȘ۟ۧۚ مŰčÚ©ÙˆŰł', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'ۚۧŰČ Ú©Ű±ŰŻÙ† ۯ۱ ÙŸÙ†ŰŹŰ±Ù‡ ŰŹŰŻÛŒŰŻ', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Ù…ŰźÙÛŒ (ÙŸÛŒŰŽÙ†Ù‡Ű§ŰŻÛŒ)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'ۚ۳ŰȘن', 'btnSave' : 'Ű°ŰźÛŒŰ±Ù‡', 'btnRm' : 'Ű­Ű°Ù', 'btnApply' : 'ۧŰčÙ…Ű§Ù„', 'btnCancel' : 'Ű§Ù†Ű”Ű±Ű§Ù', 'btnNo' : 'ŰźÛŒŰ±', 'btnYes' : 'ŰšÙ„ÛŒ', 'btnMount' : 'ۧŰȘŰ”Ű§Ù„', // added 18.04.2012 'btnApprove': 'Ű±ÙŰȘن ŰšÙ‡ $1 و ŰȘŰ§ÛŒÛŒŰŻ', // from v2.1 added 26.04.2012 'btnUnmount': 'Ù‚Ű·Űč ۧŰȘŰ”Ű§Ù„', // from v2.1 added 30.04.2012 'btnConv' : 'ŰȘŰšŰŻÛŒÙ„', // from v2.1 added 08.04.2014 'btnCwd' : 'Ű§ÛŒÙ†ŰŹŰ§', // from v2.1 added 22.5.2015 'btnVolume' : 'ŰŻŰ±Ű§ÛŒÙˆ', // from v2.1 added 22.5.2015 'btnAll' : 'همه', // from v2.1 added 22.5.2015 'btnMime' : 'نوŰč ÙŰ§ÛŒÙ„', // from v2.1 added 22.5.2015 'btnFileName':'Ù†Ű§Ù… ÙŰ§ÛŒÙ„', // from v2.1 added 22.5.2015 'btnSaveClose': 'Ű°ŰźÛŒŰ±Ù‡ و ۚ۳ŰȘن', // from v2.1 added 12.6.2015 'btnBackup' : 'ÙŸŰŽŰȘÛŒŰšŰ§Ù†â€ŒÚŻÛŒŰ±ÛŒ', // fromv2.1 added 28.11.2015 'btnRename' : 'ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù…', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù…(همه)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'Ù‚ŰšÙ„ÛŒ ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'ŰšŰčŰŻÛŒ ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Ű°ŰźÛŒŰ±Ù‡ ۚۧ Ù†Ű§Ù… ŰŹŰŻÛŒŰŻ', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'ۯ۱ Ű­Ű§Ù„ ۚۧŰČ Ú©Ű±ŰŻÙ† ÙŸÙˆŰŽÙ‡', 'ntffile' : 'ۯ۱ Ű­Ű§Ù„ ۚۧŰČ Ú©Ű±ŰŻÙ† ÙŰ§ÛŒÙ„', 'ntfreload' : 'ŰšŰ§Ű±ÚŻŰ°Ű§Ű±ÛŒ Ù…ŰŹŰŻŰŻ Ù…Ű­ŰȘÙˆÛŒŰ§ŰȘ ÙŸÙˆŰŽÙ‡', 'ntfmkdir' : 'ۯ۱ Ű­Ű§Ù„ Ű§ÛŒŰŹŰ§ŰŻ ÙŸÙˆŰŽÙ‡', 'ntfmkfile' : 'ۯ۱ Ű­Ű§Ù„ Ű§ÛŒŰŹŰ§ŰŻ ÙŰ§ÛŒÙ„', 'ntfrm' : 'ۯ۱ Ű­Ű§Ù„ Ű­Ű°Ù Ù…ÙˆŰ§Ű±ŰŻ Ù…ÙˆŰ±ŰŻÙ†ŰžŰ±', 'ntfcopy' : 'ۯ۱ Ű­Ű§Ù„ Ú©ÙŸÛŒ Ù…ÙˆŰ§Ű±ŰŻ Ù…ÙˆŰ±ŰŻÙ†ŰžŰ±', 'ntfmove' : 'ۯ۱ Ű­Ű§Ù„ Ű§Ù†ŰȘÙ‚Ű§Ù„ Ù…ÙˆŰ§Ű±ŰŻ Ù…ÙˆŰ±ŰŻÙ†ŰžŰ±', 'ntfprepare' : 'ŰšŰ±Ű±ŰłÛŒ Ù…ÙˆŰ§Ű±ŰŻ Ù…ÙˆŰŹÙˆŰŻ', 'ntfrename' : 'ۯ۱ Ű­Ű§Ù„ ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù… ÙŰ§ÛŒÙ„', 'ntfupload' : 'ۯ۱ Ű­Ű§Ù„ ŰąÙŸÙ„ÙˆŰŻ ÙŰ§ÛŒÙ„', 'ntfdownload' : 'ۯ۱ Ű­Ű§Ù„ ŰŻŰ§Ù†Ù„ÙˆŰŻ ÙŰ§ÛŒÙ„', 'ntfsave' : 'ۯ۱ Ű­Ű§Ù„ Ű°ŰźÛŒŰ±Ù‡ ÙŰ§ÛŒÙ„', 'ntfarchive' : 'ۯ۱ Ű­Ű§Ù„ Ű§ÛŒŰŹŰ§ŰŻ ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡', 'ntfextract' : 'ۯ۱ Ű­Ű§Ù„ ۧ۳ŰȘ۟۱ۧۏ ÙŰ§ÛŒÙ„ Ù‡Ű§ ۧŰČ Ű­Ű§Ù„ŰȘ ÙŰŽŰ±ŰŻÙ‡', 'ntfsearch' : 'ۯ۱ Ű­Ű§Ù„ ŰŹŰłŰȘŰŹÙˆÛŒ ÙŰ§ÛŒÙ„', 'ntfresize' : 'ۯ۱ Ű­Ű§Ù„ ŰȘŰșÛŒÛŒŰ± Ű§Ù†ŰŻŰ§ŰČه ŰȘŰ”Ű§ÙˆÛŒŰ±', 'ntfsmth' : 'ŰŻŰ±Ű­Ű§Ù„ Ű§Ù†ŰŹŰ§Ù… ŰčÙ…Ù„ÛŒŰ§ŰȘ ....', 'ntfloadimg' : 'ۯ۱ Ű­Ű§Ù„ ŰšŰ§Ű±ÚŻŰ°Ű§Ű±ÛŒ ŰȘŰ”ÙˆÛŒŰ±', 'ntfnetmount' : 'ۯ۱ Ű­Ű§Ù„ ۧŰȘŰ”Ű§Ù„ ŰŻŰ±Ű§ÛŒÙˆ ŰŽŰšÚ©Ù‡', // added 18.04.2012 'ntfnetunmount': 'Ù‚Ű·Űč ۧŰȘŰ”Ű§Ù„ ŰŻŰ±Ű§ÛŒÙˆ ŰŽŰšÚ©Ù‡', // from v2.1 added 30.04.2012 'ntfdim' : 'ۯ۱ Ű­Ű§Ù„ Ù…Ű­Ű§ŰłŰšÙ‡ ۧۚŰčۧۯ ŰȘŰ”ÙˆÛŒŰ±', // added 20.05.2013 'ntfreaddir' : 'ۯ۱ Ű­Ű§Ù„ ŰŻŰ±ÛŒŰ§ÙŰȘ Ù…ŰŽŰźŰ”Ű§ŰȘ ÙŸÙˆŰŽÙ‡', // from v2.1 added 01.07.2013 'ntfurl' : 'ۯ۱ Ű­Ű§Ù„ ŰŻŰ±ÛŒŰ§ÙŰȘ URL', // from v2.1 added 11.03.2014 'ntfchmod' : 'ۯ۱ Ű­Ű§Ù„ ŰȘŰșÛŒÛŒŰ± نوŰč ÙŰ§ÛŒÙ„', // from v2.1 added 20.6.2015 'ntfpreupload': 'ۯ۱ Ű­Ű§Ù„ ŰȘŰ§ÛŒÛŒŰŻ Ù†Ű§Ù… ÙŰ§ÛŒÙ„ ŰŹÙ‡ŰȘ ŰąÙŸÙ„ÙˆŰŻ', // from v2.1 added 31.11.2015 'ntfzipdl' : 'ۯ۱ Ű­Ű§Ù„ Ű§ÛŒŰŹŰ§ŰŻ ÙŰ§ÛŒÙ„ ŰŹÙ‡ŰȘ ŰŻŰ§Ù†Ù„ÙˆŰŻ', // from v2.1.7 added 23.1.2016 'ntfparents' : 'ۯ۱ Ű­Ű§Ù„ ŰŻŰ±ÛŒŰ§ÙŰȘ Ű§Ű·Ù„Ű§ŰčۧŰȘ Ù…ŰłÛŒŰ±', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'ۯ۱ Ű­Ű§Ù„ ÙŸŰ±ŰŻŰ§ŰČŰŽ ÙŰ§ÛŒÙ„ ŰąÙŸÙ„ÙˆŰŻ ŰŽŰŻÙ‡', // from v2.1.17 added 2.11.2016 'ntftrash' : 'ۯ۱ Ű­Ű§Ù„ Ű§Ù†ŰȘÙ‚Ű§Ù„ ŰšÙ‡ ŰłŰ·Ù„ ۚۧŰČÛŒŰ§ÙŰȘ', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'ۯ۱ Ű­Ű§Ù„ ۚۧŰČÛŒŰ§ŰšÛŒ ۧŰČ ŰłŰ·Ù„ ۚۧŰČÛŒŰ§ÙŰȘ', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'ŰšŰ±Ű±ŰłÛŒ ÙŸÙˆŰŽÙ‡ Ù…Ù‚Ű”ŰŻ', // from v2.1.24 added 3.5.2017 'ntfundo' : 'ۯ۱ Ű­Ű§Ù„ ŰźÙ†Ű«ÛŒâ€ŒŰłŰ§ŰČی ŰąŰźŰ±ÛŒÙ† ŰčÙ…Ù„ÛŒŰ§ŰȘ', // from v2.1.27 added 31.07.2017 'ntfredo' : 'ۯ۱ Ű­Ű§Ù„ Ű§Ù†ŰŹŰ§Ù… Ù…ŰŹŰŻŰŻ ŰąŰźŰ±ÛŒÙ† ŰčÙ…Ù„ÛŒŰ§ŰȘ', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'ۯ۱ Ű­Ű§Ù„ ŰšŰ±Ű±ŰłÛŒ Ù…Ű·Ű§Ù„Űš', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'ŰłŰ·Ù„ ۚۧŰČÛŒŰ§ÙŰȘ', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'Ù†Ű§Ù…Űčلوم', 'Today' : 'Ű§Ù…Ű±ÙˆŰČ', 'Yesterday' : 'ŰŻÛŒŰ±ÙˆŰČ', 'msJan' : 'Ú˜Ű§Ù†ÙˆÛŒÙ‡', 'msFeb' : 'ÙÙˆŰ±ÛŒÙ‡', 'msMar' : 'Ù…Ű§Ű±Űł', 'msApr' : 'ŰąÙˆŰ±ÛŒÙ„', 'msMay' : 'می', 'msJun' : 'ŰŹÙˆÙ†', 'msJul' : 'ŰŹÙˆÙ„Ű§ÛŒ', 'msAug' : 'ŰąÚŻÙˆŰłŰȘ', 'msSep' : 'ŰłÙŸŰȘŰ§Ù…ŰšŰ±', 'msOct' : 'ۧکŰȘۚ۱', 'msNov' : 'Ù†ÙˆŰ§Ù…ŰšŰ±', 'msDec' : 'ŰŻŰłŰ§Ù…ŰšŰ±', 'January' : 'Ú˜Ű§Ù†ÙˆÛŒÙ‡', 'February' : 'ÙÙˆŰ±ÛŒÙ‡', 'March' : 'Ù…Ű§Ű±Űł', 'April' : 'ŰąÙˆŰ±ÛŒÙ„', 'May' : 'می', 'June' : 'ŰŹÙˆÙ†', 'July' : 'ŰŹÙˆÙ„Ű§ÛŒ', 'August' : 'ŰąÚŻÙˆŰłŰȘ', 'September' : 'ŰłÙŸŰȘŰ§Ù…ŰšŰ±', 'October' : 'ۧکŰȘۚ۱', 'November' : 'Ù†ÙˆŰ§Ù…ŰšŰ±', 'December' : 'ŰŻŰłŰ§Ù…ŰšŰ±', 'Sunday' : 'ÛŒÚ©â€ŒŰŽÙ†ŰšÙ‡', 'Monday' : 'ŰŻÙˆŰŽÙ†ŰšÙ‡', 'Tuesday' : 'ŰłÙ‡â€ŒŰŽÙ†ŰšÙ‡', 'Wednesday' : 'Ú†Ù‡Ű§Ű±ŰŽÙ†ŰšÙ‡', 'Thursday' : 'ÙŸÙ†ŰŹâ€ŒŰŽÙ†ŰšÙ‡', 'Friday' : 'ŰŹÙ…Űčه', 'Saturday' : 'ŰŽÙ†ŰšÙ‡', 'Sun' : 'ÛŒÚ©â€ŒŰŽÙ†ŰšÙ‡', 'Mon' : 'ŰŻÙˆŰŽÙ†ŰšÙ‡', 'Tue' : 'ŰłÙ‡â€ŒŰŽÙ†ŰšÙ‡', 'Wed' : 'Ú†Ù‡Ű§Ű±ŰŽÙ†ŰšÙ‡', 'Thu' : 'ÙŸÙ†ŰŹâ€ŒŰŽÙ†ŰšÙ‡', 'Fri' : 'ŰŹÙ…Űčه', 'Sat' : 'ŰŽÙ†ŰšÙ‡', /******************************** sort variants ********************************/ 'sortname' : 'ۚ۱ ۧ۳ۧ۳ Ù†Ű§Ù…', 'sortkind' : 'ۚ۱ ۧ۳ۧ۳ نوŰč', 'sortsize' : 'ۚ۱ ۧ۳ۧ۳ Ű§Ù†ŰŻŰ§ŰČه', 'sortdate' : 'ۚ۱ ۧ۳ۧ۳ ŰȘŰ§Ű±ÛŒŰź', 'sortFoldersFirst' : 'ÙŸÙˆŰŽÙ‡â€ŒÙ‡Ű§ ۯ۱ ۧۚŰȘŰŻŰ§ÛŒ Ù„ÛŒŰłŰȘ', 'sortperm' : 'ۚ۱ۧ۳ۧ۳ ۳۷ۭ ŰŻŰłŰȘŰ±ŰłÛŒ', // from v2.1.13 added 13.06.2016 'sortmode' : 'ۚ۱ۧ۳ۧ۳ Ù…ŰŻ ŰŻŰłŰȘŰ±ŰłÛŒ', // from v2.1.13 added 13.06.2016 'sortowner' : 'ۚ۱ۧ۳ۧ۳ Ù…Ű§Ù„Ú©', // from v2.1.13 added 13.06.2016 'sortgroup' : 'ۚ۱ۧ۳ۧ۳ ÚŻŰ±ÙˆÙ‡', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'همچنین Ù†Ù…Ű§ÛŒ ۯ۱۟ŰȘی', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'ÙŰ§ÛŒÙ„ .txt ŰŹŰŻÛŒŰŻ', // added 10.11.2015 'untitled folder' : 'ÙŸÙˆŰŽÙ‡ ŰŹŰŻÛŒŰŻ', // added 10.11.2015 'Archive' : 'ŰšŰ§ÛŒÚŻŰ§Ù†ÛŒ ŰŹŰŻÛŒŰŻ', // from v2.1 added 10.11.2015 'untitled file' : '$1 ÙŰ§ÛŒÙ„ ŰŹŰŻÛŒŰŻ', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: ÙŰ§ÛŒÙ„', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'ŰȘŰ§ÛŒÛŒŰŻ Ù†Ù‡Ű§ÛŒÛŒ ŰčÙ…Ù„ÛŒŰ§ŰȘ Ű¶Ű±ÙˆŰ±ÛŒ ۧ۳ŰȘ.', 'confirmRm' : 'ŰąÛŒŰ§ Ù…Ű·Ù…ŰŠÙ†ÛŒŰŻ که Ù…ÙˆŰ§Ű±ŰŻ Ű§Ù†ŰȘŰźŰ§ŰšÛŒ Ű­Ű°Ù ŰŽÙˆÙ†ŰŻŰŸ Ù…ÙˆŰ§Ű±ŰŻ Ű­ŰŻÙ ŰŽŰŻÙ‡ Ù‚Ű§ŰšÙ„ ۚۧŰČÛŒŰ§ŰšÛŒ Ù†ŰźÙˆŰ§Ù‡Ù†ŰŻ ŰšÙˆŰŻ!', 'confirmRepl' : 'Ù…Ű§Ù„ÛŒÙ„ŰŻ ŰŹŰ§ÛŒÚŻŰČینی ÙŰ§ÛŒÙ„ Ù‚ŰŻÛŒÙ…ÛŒ ۚۧ ÙŰ§ÛŒÙ„ ŰŹŰŻÛŒŰŻ Ű§Ù†ŰŹŰ§Ù… ŰŽÙˆŰŻŰŸ (ŰšŰ±Ű§ÛŒ ŰŹŰ§ÛŒÚŻŰČینی ÙŸÙˆŰŽÙ‡ Ù…Ű­ŰȘÙˆŰ§ÛŒ Ù‚ŰŻÛŒÙ…ÛŒ ۚۧ Ù…Ű­ŰȘÙˆŰ§ÛŒ ÙŸÙˆŰŽÙ‡ ŰŹŰŻÛŒŰŻ ۧۯŰșŰ§Ù… ŰźÙˆŰ§Ù‡ŰŻ ŰŽŰŻ. ŰšŰ±Ű§ÛŒ ŰȘهیه ÙŸŰŽŰȘÛŒŰšŰ§Ù†ÛŒ و ŰłÙŸŰł ŰŹŰ§ÛŒÚŻŰČینی ÚŻŰČینه ÙŸŰŽŰȘÛŒŰšŰ§Ù†â€ŒÚŻÛŒŰ±ÛŒ ۱ۧ Ű§Ù†ŰȘ۟ۧۚ Ù†Ù…Ű§ÛŒÛŒŰŻ)', 'confirmRest' : 'ŰąÛŒŰ§ Ù…Ű§ÛŒÙ„ÛŒŰŻ Ù…ÙˆŰ§Ű±ŰŻ Ù…ÙˆŰŹÙˆŰŻ ۚۧ Ù…ÙˆŰ§Ű±ŰŻ ۚۧŰČÛŒŰ§ŰšÛŒ ŰŽŰŻÙ‡ ۧŰČ ŰłŰ·Ù„ ۚۧŰČÛŒŰ§ÙŰȘ ŰŹŰ§ÛŒÚŻŰČین ŰŽÙˆŰŻŰŸ', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'UTF-8 Ù†ÛŒŰłŰȘ
      ŰȘŰšŰŻÛŒÙ„ ŰšÙ‡ UTF-8 Ű§Ù†ŰŹŰ§Ù… ŰŽÙˆŰŻŰŸ
      ÙŸŰł ۧŰČ Ű°ŰźÛŒŰ±Ù‡ ۳ۧŰČی Ù…Ű­ŰȘÙˆŰ§ ŰšÙ‡ Ű”ÙˆŰ±ŰȘ UTF-8 ŰźÙˆŰ§Ù‡ŰŻ ŰšÙˆŰŻ.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'encoding Ű§ÛŒÙ† ÙŰ§ÛŒÙ„ Ù‚Ű§ŰšÙ„ ŰȘŰŽŰźÛŒŰ” Ù†ÛŒŰłŰȘ. ŰŹÙ‡ŰȘ ÙˆÛŒŰ±Ű§ÛŒŰŽ Ù†ÛŒŰ§ŰČ Ű§ŰłŰȘ که ŰšÙ‡ Ű”ÙˆŰ±ŰȘ موقŰȘ ŰšÙ‡ UTF-8 ŰȘŰšŰŻÛŒÙ„ ŰŽÙˆŰŻ.
      Ù„Ű·ÙŰ§ encoding ÙŰ§ÛŒÙ„ ۱ۧ Ű§Ù†ŰȘ۟ۧۚ Ù†Ù…Ű§ÛŒÛŒŰŻ.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'ŰȘŰșÛŒÛŒŰ±Ű§ŰȘی ۧŰčÙ…Ű§Ù„ ŰŽŰŻÙ‡ ۧ۳ŰȘ.
      ۯ۱ Ű”ÙˆŰ±ŰȘ ŰčŰŻÙ… Ű°ŰźÛŒŰ±Ù‡ ŰȘŰșÛŒÛŒŰ±Ű§ŰȘ ۧŰČ ŰšÛŒÙ† ŰźÙˆŰ§Ù‡ŰŻ Ű±ÙŰȘ.', // from v2.1 added 15.7.2015 'confirmTrash' : 'ŰąÛŒŰ§ Ù…Ű·Ù…ŰŠÙ†ÛŒŰŻ که Ű§ÛŒÙ† Ù…ÙˆŰ§Ű±ŰŻ ŰšÙ‡ ŰłŰ·Ù„ ۚۧŰČÛŒŰ§ÙŰȘ منŰȘقل ŰŽÙˆÙ†ŰŻŰŸ', //from v2.1.24 added 29.4.2017 'confirmMove' : 'ŰąÛŒŰ§ Ù…Ű·Ù…ŰŠÙ† Ù‡ŰłŰȘÛŒŰŻ که می ŰźÙˆŰ§Ù‡ÛŒŰŻ Ù…ÙˆŰ§Ű±ŰŻ ۱ۧ ŰšÙ‡ "$1" منŰȘقل Ú©Ù†ÛŒŰŻŰŸ', //from v2.1.50 added 27.7.2019 'apllyAll' : 'ۧŰčÙ…Ű§Ù„ ŰȘŰșÛŒÛŒŰ±Ű§ŰȘ ŰšÙ‡ همه Ù…ÙˆŰ§Ű±ŰŻ', 'name' : 'Ù†Ű§Ù…', 'size' : 'Ű§Ù†ŰŻŰ§ŰČه', 'perms' : '۳۷ۭ ŰŻŰłŰȘŰ±ŰłÛŒ', 'modify' : 'ŰąŰźŰ±ÛŒÙ† ŰȘŰșÛŒÛŒŰ±Ű§ŰȘ', 'kind' : 'نوŰč', 'read' : 'ŰźÙˆŰ§Ù†ŰŻÙ†', 'write' : 'Ù†ÙˆŰŽŰȘن', 'noaccess' : 'ŰŻŰłŰȘŰ±ŰłÛŒ ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ', 'and' : 'و', 'unknown' : 'Ù†Ű§Ù…Űčلوم', 'selectall' : 'Ű§Ù†ŰȘ۟ۧۚ همه Ù…ÙˆŰ§Ű±ŰŻ', 'selectfiles' : 'Ű§Ù†ŰȘ۟ۧۚ یک ÛŒŰ§ Ú†Ù†ŰŻ Ù…ÙˆŰ±ŰŻ', 'selectffile' : 'Ű§Ù†ŰȘ۟ۧۚ Ű§ÙˆÙ„ÛŒÙ† Ù…ÙˆŰ±ŰŻ', 'selectlfile' : 'Ű§Ù†ŰȘ۟ۧۚ ŰąŰźŰ±ÛŒÙ† Ù…ÙˆŰ±ŰŻ', 'viewlist' : 'Ű­Ű§Ù„ŰȘ Ù†Ù…Ű§ÛŒŰŽ Ù„ÛŒŰłŰȘ', 'viewicons' : 'Ù†Ù…Ű§ÛŒŰŽ ۚۧ ŰąÛŒÚ©ÙˆÙ†', 'viewSmall' : 'ŰąÛŒÚ©ÙˆÙ†â€ŒÙ‡Ű§ÛŒ کوچک', // from v2.1.39 added 22.5.2018 'viewMedium' : 'ŰąÛŒÚ©ÙˆÙ†â€ŒÙ‡Ű§ÛŒ مŰȘÙˆŰłŰ·', // from v2.1.39 added 22.5.2018 'viewLarge' : 'ŰąÛŒÚ©ÙˆÙ†â€ŒÙ‡Ű§ÛŒ ŰšŰČ۱گ', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'ŰąÛŒÚ©ÙˆÙ†â€ŒÙ‡Ű§ÛŒ ŰźÛŒÙ„ÛŒ ŰšŰČ۱گ', // from v2.1.39 added 22.5.2018 'places' : 'Ù…ŰłÛŒŰ±Ù‡Ű§', 'calc' : 'Ù…Ű­Ű§ŰłŰšÙ‡', 'path' : 'Ù…ŰłÛŒŰ±', 'aliasfor' : 'Ù†Ű§Ù… Ù…ŰłŰȘŰčۧ۱ ŰšŰ±Ű§ÛŒ', 'locked' : 'قفل ŰŽŰŻÙ‡', 'dim' : 'ۧۚŰčۧۯ', 'files' : 'ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§', 'folders' : 'ÙŸÙˆŰŽÙ‡â€ŒÙ‡Ű§', 'items' : 'ŰąÛŒŰȘÙ…â€ŒÙ‡Ű§', 'yes' : 'ŰšÙ„ÛŒ', 'no' : 'ŰźÛŒŰ±', 'link' : 'لینک', 'searcresult' : 'نŰȘŰ§ÛŒŰŹ ŰŹŰłŰȘŰŹÙˆ', 'selected' : 'Ù…ÙˆŰ§Ű±ŰŻ Ű§Ù†ŰȘ۟ۧۚ ŰŽŰŻÙ‡', 'about' : 'ŰŻŰ±ŰšŰ§Ű±Ù‡', 'shortcuts' : 'Ù…ÛŒŰ§Ù†ŰšŰ±Ù‡Ű§', 'help' : 'Ű±Ű§Ù‡Ù†Ù…Ű§ÛŒÛŒ', 'webfm' : 'Ù…ŰŻÛŒŰ± ÙŰ§ÛŒÙ„ ŰȘŰ­ŰȘ ÙˆŰš', 'ver' : 'Ù†ŰłŰźÙ‡', 'protocolver' : 'Ù†ŰłŰźÙ‡ ÙŸŰ±ÙˆŰȘکل', 'homepage' : 'Ű”ÙŰ­Ù‡ Ű§Ű”Ù„ÛŒ ÙŸŰ±ÙˆÚ˜Ù‡', 'docs' : 'Ù…ŰłŰȘÙ†ŰŻŰ§ŰȘ', 'github' : 'Ű”ÙŰ­Ù‡ ÙŸŰ±ÙˆÚ˜Ù‡ ۱ۧ ۯ۱ Github Ù…ŰŽŰ§Ù‡ŰŻÙ‡ Ú©Ù†ÛŒŰŻ', 'twitter' : 'Ù…Ű§ ۱ۧ ۯ۱ Twitter ŰŻÙ†ŰšŰ§Ù„ Ú©Ù†ÛŒŰŻ', 'facebook' : 'ŰšÙ‡ Ù…Ű§ ۯ۱ facebook Ù…Ù„Ű­Ù‚ ŰŽÙˆÛŒŰŻ', 'team' : 'ŰȘیم', 'chiefdev' : 'ŰȘÙˆŰłŰčه ŰŻÙ‡Ù†ŰŻÙ‡ Ű§Ű”Ù„ÛŒ', 'developer' : 'ŰȘÙˆŰłŰčه ŰŻÙ‡Ù†ŰŻÙ‡', 'contributor' : 'Ù…ŰŽŰ§Ű±Ú©ŰȘ Ú©Ù†Ù†ŰŻÙ‡', 'maintainer' : 'ÙŸŰŽŰȘÛŒŰšŰ§Ù†', 'translator' : 'مŰȘŰ±ŰŹÙ…', 'icons' : 'ŰąÛŒÚ©ÙˆÙ†â€ŒÙ‡Ű§', 'dontforget' : 'and don\'t forget to take your towel', 'shortcutsof' : 'Ù…ÛŒŰ§Ù†ŰšŰ±Ù‡Ű§ ŰșÛŒŰ±ÙŰčŰ§Ù„ ŰŽŰŻÙ‡â€ŒŰ§Ù†ŰŻ.', 'dropFiles' : 'ÙŰ§ÛŒÙ„ Ù‡Ű§ ۯ۱ Ű§ÛŒÙ† ۚ۟ێ Ű±Ù‡Ű§ Ú©Ù†ÛŒŰŻ.', 'or' : 'ÛŒŰ§', 'selectForUpload' : 'Ű§Ù†ŰȘ۟ۧۚ ÙŰ§ÛŒÙ„ ŰŹÙ‡ŰȘ ŰąÙŸÙ„ÙˆŰŻ', 'moveFiles' : 'Ű§Ù†ŰȘÙ‚Ű§Ù„ Ù…ÙˆŰ§Ű±ŰŻ', 'copyFiles' : 'Ú©ÙŸÛŒ Ù…ÙˆŰ§Ű±ŰŻ', 'restoreFiles' : 'ۚۧŰČÛŒŰ§ŰšÛŒ Ù…ÙˆŰ§Ű±ŰŻ', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Ű­Ű°Ù', 'aspectRatio' : 'Ù†ŰłŰšŰȘ ŰȘŰ”ÙˆÛŒŰ±', 'scale' : 'Ù…Ù‚ÛŒŰ§Űł', 'width' : 'Ű·ÙˆÙ„', 'height' : 'ۧ۱ŰȘÙŰ§Űč', 'resize' : 'ŰȘŰșÛŒÛŒŰ± Ű§Ù†ŰŻŰ§ŰČه', 'crop' : 'ŰšŰ±ÛŒŰŻÙ†', 'rotate' : 'Ú†Ű±ŰźŰ§Ù†ŰŻÙ†', 'rotate-cw' : 'Ú†Ű±ŰźŰ§Ù†ŰŻÙ† 90 ŰŻŰ±ŰŹÙ‡ ۯ۱ ŰŹÙ‡ŰȘ ŰčÙ‚Ű±ŰšÙ‡â€ŒÙ‡Ű§ÛŒ ۳ۧŰčŰȘ', 'rotate-ccw' : 'Ú†Ű±ŰźŰ§Ù†ŰŻÙ† 90 ŰŻŰ±ŰŹÙ‡ ۯ۱ ŰŹÙ‡ŰȘ ŰźÙ„Ű§Ù ŰčÙ‚Ű±ŰšÙ‡â€ŒÙ‡Ű§ÛŒ ۳ۧŰčŰȘ', 'degree' : '°', 'netMountDialogTitle' : 'ۧŰȘŰ”Ű§Ù„ ŰŻŰ±Ű§ÛŒÙˆ ŰŽŰšÚ©Ù‡', // added 18.04.2012 'protocol' : 'ÙŸŰ±ÙˆŰȘکل', // added 18.04.2012 'host' : 'میŰČŰšŰ§Ù†', // added 18.04.2012 'port' : 'ÙŸÙˆŰ±ŰȘ', // added 18.04.2012 'user' : 'Ù†Ű§Ù… Ú©Ű§Ű±ŰšŰ±ÛŒ', // added 18.04.2012 'pass' : 'کلمه ŰčŰšÙˆŰ±', // added 18.04.2012 'confirmUnmount' : 'Ù…Ű·Ù…ŰŠÙ† ŰšÙ‡ Ù‚Ű·Űč ۧŰȘŰ”Ű§Ù„ $1 می ۹ۧۮۯ۟', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§ ۱ۧ ŰšÙ‡ ŰŻŰ§ŰźÙ„ Ű§ÛŒÙ† کۧۯ۱ ŰšÛŒÙ†ŰŻŰ§ŰČÛŒŰŻ ÛŒŰ§ ۧŰČ Ű­Ű§ÙŰžÙ‡ paste Ú©Ù†ÛŒŰŻ', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§ ۱ۧ ŰšÙ‡ ŰŻŰ§ŰźÙ„ Ű§ÛŒÙ† کۧۯ۱ ŰšÛŒÙ†ŰŻŰ§ŰČÛŒŰŻ ÛŒŰ§ ۧŰČ ŰŻŰ§ŰźÙ„ Ű­Ű§ÙŰžÙ‡ ۹ۯ۱۳ URL/ŰȘŰ”Ű§ÙˆÛŒŰ± ۱ۧ paste Ú©Ù†ÛŒŰŻ', // from v2.1 added 07.04.2014 'encoding' : 'نوŰč Ú©ŰŻ ÚŻŰ°Ű§Ű±ÛŒ', // from v2.1 added 19.12.2014 'locale' : 'نوŰč Locale', // from v2.1 added 19.12.2014 'searchTarget' : 'Ù…Ù‚Ű”ŰŻ: $1', // from v2.1 added 22.5.2015 'searchMime' : 'ŰŹŰłŰȘŰŹÙˆ ۚ۱ۧ۳ۧ۳ MIME Type ÙˆŰ§Ű±ŰŻ ŰŽŰŻÙ‡', // from v2.1 added 22.5.2015 'owner' : 'Ù…Ű§Ù„Ú©', // from v2.1 added 20.6.2015 'group' : 'ÚŻŰ±ÙˆÙ‡', // from v2.1 added 20.6.2015 'other' : 'ŰłŰ§ÛŒŰ±', // from v2.1 added 20.6.2015 'execute' : 'Ù‚Ű§ŰšÙ„ ۧۏ۱ۧ', // from v2.1 added 20.6.2015 'perm' : '۳۷ۭ ŰŻŰłŰȘŰ±ŰłÛŒ', // from v2.1 added 20.6.2015 'mode' : 'Ù…ŰŻ ŰŻŰłŰȘŰ±ŰłÛŒ', // from v2.1 added 20.6.2015 'emptyFolder' : 'ÙŸÙˆŰŽÙ‡ ŰźŰ§Ù„ÛŒ ۧ۳ŰȘ', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'ÙŸÙˆŰŽÙ‡ ŰźŰ§Ù„ÛŒ ۧ۳ŰȘی ÙŰ§ÛŒÙ„â€ŒÙ‡Ű§ ۱ۧ ŰŹÙ‡ŰȘ Ű§ÙŰČÙˆŰŻÙ† Ú©ŰŽÛŒŰŻÙ‡ و Ű±Ù‡Ű§ Ú©Ù†ÛŒŰŻ', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'ÙŸÙˆŰŽÙ‡ ŰźŰ§Ù„ÛŒ ۧ۳ŰȘی یک Ű§ŰŽŰ§Ű±Ù‡ Ű·ÙˆÙ„Ű§Ù†ÛŒ ŰšŰ±Ű§ÛŒ Ű§ÙŰČÙˆŰŻÙ† ÙŰ§ÛŒÙ„ Ú©Ű§ÙÛŒ ۧ۳ŰȘ', // from v2.1.6 added 30.12.2015 'quality' : 'کیفیŰȘ', // from v2.1.6 added 5.1.2016 'autoSync' : 'Ù‡Ù…ÚŻŰ§Ù…â€ŒŰłŰ§ŰČی ŰźÙˆŰŻÚ©Ű§Ű±', // from v2.1.6 added 10.1.2016 'moveUp' : 'ۭ۱کŰȘ ŰšÙ‡ ŰšŰ§Ù„Ű§', // from v2.1.6 added 18.1.2016 'getLink' : 'ŰŻŰ±ÛŒŰ§ÙŰȘ URL لینک', // from v2.1.7 added 9.2.2016 'selectedItems' : 'Ù…ÙˆŰ§Ű±ŰŻ Ű§Ù†ŰȘ۟ۧۚ ŰŽŰŻÙ‡ ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ŰŽÙ†Ű§ŰłÙ‡ ÙŸÙˆŰŽÙ‡', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'ۧۏۧŰČه ŰŻŰłŰȘŰ±ŰłÛŒ ŰšÙ‡ Ű”ÙˆŰ±ŰȘ ŰąÙÙ„Ű§ÛŒÙ†', // from v2.1.10 added 3.25.2016 'reAuth' : 'ŰŹÙ‡ŰȘ ۧŰčŰȘŰšŰ§Ű±ŰłÙ†ŰŹÛŒ Ù…ŰŹŰŻŰŻ', // from v2.1.10 added 3.25.2016 'nowLoading' : 'ۯ۱ Ű­Ű§Ù„ ۚۧŰČÚŻŰ°Ű§Ű±ÛŒ...', // from v2.1.12 added 4.26.2016 'openMulti' : 'ۚۧŰČÚ©Ű±ŰŻÙ† Ú†Ù†ŰŻÛŒÙ† ÙŰ§ÛŒÙ„', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'ŰŽÙ…Ű§ Ù‚Ű”ŰŻ ۚۧŰČ Ú©Ű±ŰŻÙ† $1 ÙŰ§ÛŒÙ„ ۱ۧ ŰŻŰ§Ű±ÛŒŰŻ. ŰąÛŒŰ§ Ù…Ű§ÛŒÙ„ÛŒŰŻ همه Ù…ÙˆŰ§Ű±ŰŻ ۯ۱ Ù…Ű±ÙˆŰ±ÚŻŰ± ۚۧŰČ ŰŽÙˆŰŻŰŸ', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Ù…ÙˆŰ±ŰŻÛŒ ÛŒŰ§ÙŰȘ Ù†ŰŽŰŻ.', // from v2.1.12 added 5.16.2016 'editingFile' : 'ۯ۱ Ű­Ű§Ù„ ÙˆÛŒŰ±Ű§ÛŒŰŽ یک ÙŰ§ÛŒÙ„.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'ŰŽÙ…Ű§ $1 Ù…ÙˆŰ±ŰŻ ۱ۧ Ű§Ù†ŰȘ۟ۧۚ Ú©Ű±ŰŻÙ‡â€ŒŰ§ÛŒŰŻ.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'ۯ۱ Ű­Ű§ÙŰžÙ‡ $1 Ù…ÙˆŰ±ŰŻ ÙˆŰŹÙˆŰŻ ۯۧ۱ۯ.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'ŰŹŰłŰȘŰŹÙˆÛŒ Ű§ÙŰČŰ§ÛŒŰŽ ÙÙ‚Ű· ۧŰČ Ù†Ù…Ű§ÛŒ فŰčلی.', // from v2.1.13 added 6.30.2016 'reinstate' : 'ۚۧŰČÚŻŰ±ŰŻŰ§Ù†ŰŻÙ†', // from v2.1.15 added 3.8.2016 'complete' : 'ŰčÙ…Ù„ÛŒŰ§ŰȘ $1 Ű§Ù†ŰŹŰ§Ù… ŰŽŰŻ', // from v2.1.15 added 21.8.2016 'contextmenu' : 'منو ۱ۧ۳ŰȘ', // from v2.1.15 added 9.9.2016 'pageTurning' : 'چ۱۟ێ Ű”ÙŰ­Ù‡', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Ű±ÛŒŰŽÙ‡â€ŒÙ‡Ű§ÛŒ ŰŻŰ±Ű§ÛŒÙˆ', // from v2.1.16 added 16.9.2016 'reset' : 'ۚۧŰČÙ†ŰŽŰ§Ù†ÛŒ', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Ű±Ù†ÚŻ ÙŸŰł ŰČمینه', // from v2.1.16 added 1.10.2016 'colorPicker' : 'Ű§Ù†ŰȘ۟ۧۚگ۱ Ű±Ù†ÚŻ', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'ÚŻŰ±ÛŒŰŻ 8px', // from v2.1.16 added 4.10.2016 'enabled' : 'فŰčŰ§Ù„ ŰŽŰŻÙ‡', // from v2.1.16 added 4.10.2016 'disabled' : 'ŰșÛŒŰ±ÙŰčŰ§Ù„ ŰŽŰŻÙ‡', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'ۯ۱ Ù†Ù…Ű§ÛŒ فŰčلی Ù…ÙˆŰ±ŰŻÛŒ ÛŒŰ§ÙŰȘ Ù†ŰŽŰŻ.\\Aۚۧ ÙŰŽŰ±ŰŻÙ† Ú©Ù„ÛŒŰŻ Enter Ù…ŰłÛŒŰ± ŰŹŰłŰȘŰŹÙˆ ۱ۧ ŰȘŰșÛŒÛŒŰ± ŰŻÙ‡ÛŒŰŻ.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'ŰšŰ±Ű§ÛŒ ŰŹŰłŰȘŰŹÙˆÛŒ ŰȘÚ© Ű­Ű±ÙÛŒ ۯ۱ Ù†Ù…Ű§ÛŒŰŽ فŰčلی Ù…ÙˆŰ±ŰŻÛŒ ÛŒŰ§ÙŰȘ Ù†ŰŽŰŻ.', // from v2.1.23 added 24.3.2017 'textLabel' : 'ŰčÙ†ÙˆŰ§Ù† مŰȘنی', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 ŰŻÙ‚ÛŒÙ‚Ù‡ ŰšŰ§Ù‚ÛŒÙ…Ű§Ù†ŰŻÙ‡', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'ۚۧŰČ Ú©Ű±ŰŻÙ† Ù…ŰŹŰŻŰŻ ۚۧ Ú©ŰŻ ÚŻŰ°Ű§Ű±ÛŒ Ű§Ù†ŰȘ۟ۧۚ ŰŽŰŻÙ‡', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Ű°ŰźÛŒŰ±Ù‡ ۚۧ Ú©ŰŻ ÚŻŰ°Ű§Ű±ÛŒ Ű§Ù†ŰȘ۟ۧۚ ŰŽŰŻÙ‡', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Ű§Ù†ŰȘ۟ۧۚ ÙŸÙˆŰŽÙ‡', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'ŰŹŰłŰȘŰŹÙˆÛŒ ŰȘÚ© Ű­Ű±ÙÛŒ', // from v2.1.23 added 24.3.2017 'presets' : 'ۧŰČ ÙŸÛŒŰŽ ŰȘŰčیین ŰŽŰŻÙ‡', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Ù…ÙˆŰ§Ű±ŰŻ ŰČÛŒŰ§ŰŻ ۧ۳ŰȘ و Ű§Ù…Ú©Ű§Ù† Ű§Ù†ŰȘÙ‚Ű§Ù„ ŰšÙ‡ ŰłŰ·Ù„ ۚۧŰČÛŒŰ§ÙŰȘ ÙˆŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ.', // from v2.1.25 added 9.6.2017 'TextArea' : 'ÙˆÛŒŰ±Ű§ÛŒŰŽ Ù…Ű­ŰȘÙˆŰ§', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'ŰźŰ§Ù„ÛŒ Ú©Ű±ŰŻÙ† ÙŸÙˆŰŽÙ‡ "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'ÙŸÙˆŰŽÙ‡ "$1" ‌۰ۧŰȘۧ ŰźŰ§Ù„ÛŒ ۧ۳ŰȘ.', // from v2.1.25 added 22.6.2017 'preference' : 'ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ', // from v2.1.26 added 28.6.2017 'language' : 'ŰČŰšŰ§Ù†', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'ۚۧŰČŰšÛŒÙ†ÛŒ ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ Ű°ŰźÛŒŰ±Ù‡ ŰŽŰŻÙ‡ ۯ۱ Ű§ÛŒÙ† Ù…Ű±ÙˆŰ±ÚŻŰ±', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ Ù†ÙˆŰ§Ű± ۧۚŰČۧ۱', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 کۧ۱ۧکŰȘ۱ ŰšŰ§Ù‚ÛŒÙ…Ű§Ù†ŰŻÙ‡.', // from v2.1.29 added 30.8.2017 'linesLeft' : '$1 ۟۷ Ù…Ű§Ù†ŰŻÙ‡ ۧ۳ŰȘ', // from v2.1.52 added 16.1.2020 'sum' : 'Ù…ŰŹÙ…ÙˆŰč', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Ű§Ù†ŰŻŰ§ŰČه ÙŰ§ÛŒÙ„ Ù†Ű§Ù…ŰȘŰčŰ§Ű±Ù', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Ű§Ù†ŰȘ۟ۧۚ ŰčÙ†Ű§Ű”Ű± ŰŻŰ§ŰźÙ„ ŰŻÛŒŰ§Ù„ÙˆÚŻ ۚۧ mouseover', // from v2.1.30 added 2.11.2017 'select' : 'Ű§Ù†ŰȘ۟ۧۚ', // from v2.1.30 added 23.11.2017 'selectAction' : 'ŰčÙ…Ù„ÛŒŰ§ŰȘ ŰšÙ‡ Ù‡Ù†ÚŻŰ§Ù… Ű§Ù†ŰȘ۟ۧۚ ÙŰ§ÛŒÙ„', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'ۚۧŰČ Ú©Ű±ŰŻÙ† ۚۧ ÙˆÛŒŰ±Ű§ÛŒŰŽÚŻŰ± Ù…ÙˆŰ±ŰŻŰ§ŰłŰȘÙŰ§ŰŻÙ‡ ۯ۱ ŰąŰźŰ±ÛŒÙ† ŰŻÙŰčه', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Ű§Ù†ŰȘ۟ۧۚ مŰčÚ©ÙˆŰł', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'ŰąÛŒŰ§ Ù…Ű§ÛŒÙ„ ŰšÙ‡ ŰȘŰșÛŒÛŒŰ± Ù†Ű§Ù… $1 Ù…ÙˆŰ±ŰŻ Ű§Ù†ŰȘ۟ۧۚ ŰŽŰŻÙ‡ Ù‡Ù…Ű§Ù†Ù†ŰŻ $2 Ù‡ŰłŰȘÛŒŰŻŰŸ
      Ű§Ù…Ú©Ű§Ù† ۚۧŰČÚŻŰ±ŰŻŰ§Ù†ŰŻÙ† Ű§ÛŒÙ† ŰȘŰșÛŒÛŒŰ± ÙŸŰł ۧŰČ Ű§ŰčÙ…Ű§Ù„Ùˆ ŰŹÙˆŰŻ Ù†ŰŻŰ§Ű±ŰŻ!', // from v2.1.31 added 4.12.2017 'batchRename' : 'ŰȘŰșÛŒÛŒŰ±Ù†Ű§Ù… ÚŻŰ±ÙˆÙ‡ÛŒ', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ ŰčŰŻŰŻ', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Ű§ÙŰČÙˆŰŻÙ† ÙŸÛŒŰŽÙˆÙ†ŰŻ', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Ű§ÙŰČÙˆŰŻÙ† ÙŸŰłÙˆÙ†ŰŻ', // from v2.1.31 added 8.12.2017 'changeExtention' : 'ŰȘŰșÛŒÛŒŰ± ÙŸŰłÙˆÙ†ŰŻ ÙŰ§ÛŒÙ„', // from v2.1.31 added 8.12.2017 'columnPref' : 'ŰȘÙ†ŰžÛŒÙ…Ű§ŰȘ ŰłŰȘÙˆÙ†â€ŒÙ‡Ű§ (Ű­Ű§Ù„ŰȘ Ù†Ù…Ű§ÛŒŰŽ Ù„ÛŒŰłŰȘ)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'ŰȘÙ…Ű§Ù…ÛŒ ŰȘŰșÛŒÛŒŰ±Ű§ŰȘ ŰšÙ‡ Ű”ÙˆŰ±ŰȘ ŰąÙ†ÛŒ ŰšŰ±Ű±ÙˆÛŒ ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡ ۧŰčÙ…Ű§Ù„ ŰźÙˆŰ§Ù‡ŰŻ ŰŽŰŻ.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'ŰȘÙ…Ű§Ù…ÛŒ ŰȘŰșÛŒÛŒŰ±Ű§ŰȘ ŰȘۧ ŰČÙ…Ű§Ù†ÛŒ که ۧŰȘŰ”Ű§Ù„ Ű§ÛŒÙ† ŰŻŰ±Ű§ÛŒÙˆ Ù‚Ű·Űč Ù†ŰŽŰŻÙ‡ ۧ۳ŰȘ ۧŰčÙ…Ű§Ù„ Ù†ŰźÙˆŰ§Ù‡Ù†ŰŻ ŰŽŰŻ.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'ۧŰȘŰ”Ű§Ù„ ŰšÙ‡ ŰŻŰ±Ű§ÛŒÙˆÙ‡Ű§ÛŒ ŰČÛŒŰ± Ù‚Ű·Űč ŰźÙˆŰ§Ù‡ŰŻ ŰŽŰŻ. ŰąÛŒŰ§ Ù…Ű·Ù…ŰŠÙ† ŰšÙ‡ Ű§ŰŻŰ§Ù…Ù‡ ŰčÙ…Ù„ÛŒŰ§ŰȘ Ù‡ŰłŰȘÛŒŰŻŰŸ', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Ù…ŰŽŰźŰ”Ű§ŰȘ', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Ű§Ù„ÚŻÙˆŰ±ÛŒŰȘم Ù‡Ű§ÛŒ Ù†Ù…Ű§ÛŒŰŽ hash ÙŰ§ÛŒÙ„', // from v2.1.33 added 10.3.2018 'infoItems' : 'Ù…ÙˆŰ§Ű±ŰŻ Ű§Ű·Ù„Ű§ŰčۧŰȘ', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'ŰŹÙ‡ŰȘ ŰźŰ±ÙˆŰŹ Ù…ŰŹŰŻŰŻ ÙŰŽŰ§Ű± ŰŻÙ‡ÛŒŰŻ.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Ù†ÙˆŰ§Ű± ۧۚŰČۧ۱', // from v2.1.38 added 4.4.2018 'workspace' : 'ÙŰ¶Ű§ÛŒ Ú©Ű§Ű±ÛŒ', // from v2.1.38 added 4.4.2018 'dialog' : 'ÙŸÙ†ŰŹŰ±Ù‡ ŰŻÛŒŰ§Ù„ÙˆÚŻ', // from v2.1.38 added 4.4.2018 'all' : 'همه', // from v2.1.38 added 4.4.2018 'iconSize' : 'Ű§Ù†ŰŻŰ§ŰČه ŰąÛŒÚ©ÙˆÙ†â€ŒÙ‡Ű§ (Ù†Ù…Ű§ÛŒŰŽ ŰšÙ‡ Ű”ÙˆŰ±ŰȘ ŰąÛŒÚ©ÙˆÙ†)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'ۚۧŰČ Ú©Ű±ŰŻÙ† ÙŸÙ†ŰŹŰ±Ù‡ ÙˆÛŒŰ±Ű§ÛŒŰŽÚŻŰ± ŰšÙ‡ Ű”ÙˆŰ±ŰȘ ŰȘÙ…Ű§Ù… Ű”ÙŰ­Ù‡', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'ŰšŰŻÙ„ÛŒÙ„ ۯ۱ ŰŻŰłŰȘŰ±ŰłÛŒ Ù†ŰšÙˆŰŻÙ† ŰȘŰšŰŻÛŒÙ„ ۧŰČ Ű·Ű±ÛŒÙ‚ APIی Ù„Ű·ÙŰ§ ŰšŰ±Ű±ÙˆÛŒ ÙˆŰš ŰłŰ§ÛŒŰȘ ŰȘŰšŰŻÛŒÙ„ ۱ۧ Ű§Ù†ŰŹŰ§Ù… ŰŻÙ‡ÛŒŰŻ.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'ÙŸŰł ۧŰČ ŰȘŰšŰŻÛŒÙ„, ŰŽÙ…Ű§ ŰšŰ§ÛŒŰłŰȘی ۧŰČ Ű·Ű±ÛŒÙ‚ ۹ۯ۱۳ URL ÛŒŰ§ ÙŰ§ÛŒÙ„ ŰŻŰ±ÛŒŰ§ÙŰȘ ŰŽŰŻÙ‡ ŰąÙŸÙ„ÙˆŰŻ ۱ۧ Ű§Ù†ŰŹŰ§ŰŻ ŰŻÙ‡ÛŒŰŻ ŰȘۧ ÙŰ§ÛŒÙ„ ŰȘŰšŰŻÛŒÙ„ ŰŽŰŻÙ‡ Ű°ŰźÛŒŰ±Ù‡ گ۱ۯۯ.', //from v2.1.40 added 8.7.2018 'convertOn' : 'ŰȘŰšŰŻÛŒÙ„ ŰšŰ±Ű±ÙˆÛŒ ŰłŰ§ÛŒŰȘ ۧŰČ $1', // from v2.1.40 added 10.7.2018 'integrations' : 'Ù‡Ù…Ű§Ù‡Ù†ÚŻ ۳ۧŰČÛŒâ€ŒÙ‡Ű§', // from v2.1.40 added 11.7.2018 'integrationWith' : 'elFinder ۚۧ ŰłŰ±ÙˆÛŒŰł Ù‡Ű§ÛŒ ŰČÛŒŰ± Ù‡Ù…Ű§Ù‡Ù†ÚŻ ŰŽŰŻÙ‡ ۧ۳ŰȘ. Ù„Ű·ÙŰ§ ۧۚŰȘۯۧ ŰŽŰ±Ű§ÛŒŰ· ۧ۳ŰȘÙŰ§ŰŻÙ‡ŰŒ Ù…Ù‚Ű±Ű±Ű§ŰȘ Ű­Ű±ÛŒÙ… ŰźŰ”ÙˆŰ”ÛŒ و ŰłŰ§ÛŒŰ± Ù…ÙˆŰ§Ű±ŰŻ ۱ۧ Ù…Ű·Ű§Ù„Űčه ŰšÙŰ±Ù…Ű§ÛŒÛŒŰŻ.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Ù†Ù…Ű§ÛŒŰŽ Ù…ÙˆŰ§Ű±ŰŻ ÙŸÙ†Ù‡Ű§Ù†', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Ù…ÙˆŰ§Ű±ŰŻ Ù…ŰźÙÛŒ ۱ۧ ÙŸÙ†Ù‡Ű§Ù† Ú©Ù†ÛŒŰŻ', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Ù†Ù…Ű§ÛŒŰŽ / ÙŸÙ†Ù‡Ű§Ù† Ú©Ű±ŰŻÙ† Ù…ÙˆŰ§Ű±ŰŻ ÙŸÙ†Ù‡Ű§Ù†', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'File types to enable with "New file"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'نوŰč ÙŰ§ÛŒÙ„ Ù†ÙˆŰŽŰȘŰ§Ű±ÛŒ', // from v2.1.41 added 7.8.2018 'add' : 'Ű§Ű¶Ű§ÙÙ‡ Ú©Ű±ŰŻÙ†', // from v2.1.41 added 7.8.2018 'theme' : 'Theme', // from v2.1.43 added 19.10.2018 'default' : 'ÙŸÛŒŰŽ ÙŰ±Ű¶', // from v2.1.43 added 19.10.2018 'description' : 'ŰȘÙˆŰ¶ÛŒŰ­Ű§ŰȘ', // from v2.1.43 added 19.10.2018 'website' : 'ÙˆŰš ŰłŰ§ÛŒŰȘ', // from v2.1.43 added 19.10.2018 'author' : 'Ù†ÙˆÛŒŰłŰȘŰŻÙ‡', // from v2.1.43 added 19.10.2018 'email' : 'Ű§ÛŒÙ…ÛŒÙ„', // from v2.1.43 added 19.10.2018 'license' : 'Ù„Ű§ÛŒŰłÙ†Űł', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Ű§ÛŒÙ† Ù…ÙˆŰ±ŰŻ Ű°ŰźÛŒŰ±Ù‡ نمی ŰŽÙˆŰŻ ŰšŰ±Ű§ÛŒ ŰŹÙ„ÙˆÚŻÛŒŰ±ÛŒ ۧŰČ ŰŻŰłŰȘ ŰŻŰ§ŰŻÙ† ÙˆÛŒŰ±Ű§ÛŒŰŽ Ù‡Ű§ ی ŰąÙ†Ù‡Ű§ ۱ۧ ŰšÙ‡ Ű±Ű§ÛŒŰ§Ù†Ù‡ ŰźÙˆŰŻ منŰȘقل Ú©Ù†ÛŒŰŻ.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'ŰšŰ±Ű§ÛŒ Ű§Ù†ŰȘ۟ۧۚ ÙŸŰ±ÙˆÙ†ŰŻÙ‡ ی ŰŻÙˆŰšŰ§Ű± کلیک Ú©Ù†ÛŒŰŻ.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'ۧŰČ Ű­Ű§Ù„ŰȘ ŰȘÙ…Ű§Ù… Ű”ÙŰ­Ù‡ ۧ۳ŰȘÙŰ§ŰŻÙ‡ Ú©Ù†ÛŒŰŻ', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Ù†Ű§Ù…Űčلوم', 'kindRoot' : 'Ű±ÛŒŰŽÙ‡ ŰŻŰ±Ű§ÛŒÙˆ', // from v2.1.16 added 16.10.2016 'kindFolder' : 'ÙŸÙˆŰŽÙ‡', 'kindSelects' : 'Ű§Ù†ŰȘ۟ۧۚ ŰŽŰŻÙ‡â€ŒÙ‡Ű§', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Ű§ŰłÙ… Ù…ŰłŰȘŰčۧ۱', 'kindAliasBroken' : 'Ű§ŰłÙ… Ù…ŰłŰȘŰčۧ۱ Ù†Ű§Ù‚Ű”', // applications 'kindApp' : 'ŰšŰ±Ù†Ű§Ù…Ù‡', 'kindPostscript' : 'ŰłÙ†ŰŻ Postscript', 'kindMsOffice' : 'ŰłÙ†ŰŻ Microsoft Office', 'kindMsWord' : 'ŰłÙ†ŰŻ Microsoft Word', 'kindMsExcel' : 'ŰłÙ†ŰŻ Microsoft Excel', 'kindMsPP' : 'ÙŰ§ÛŒÙ„ Ű§Ű±Ű§ÛŒÙ‡ Microsoft Powerpoint', 'kindOO' : 'ŰłÙ†ŰŻ Open Office', 'kindAppFlash' : 'ŰšŰ±Ù†Ű§Ù…Ù‡ ÙÙ„ŰŽ', 'kindPDF' : 'ŰłÙ†ŰŻ Ù‚Ű§ŰšÙ„ Ű­Ù…Ù„ (PDF)', 'kindTorrent' : 'ÙŰ§ÛŒÙ„ ŰȘÙˆŰ±Ù†ŰȘ', 'kind7z' : 'ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡ 7z', 'kindTAR' : 'ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡ TAR', 'kindGZIP' : 'ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡ GZIP', 'kindBZIP' : 'ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡ BZIP', 'kindXZ' : 'ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡ XZ', 'kindZIP' : 'ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡ ZIP', 'kindRAR' : 'ÙŰ§ÛŒÙ„ ÙŰŽŰ±ŰŻÙ‡ RAR', 'kindJAR' : 'ÙŰ§ÛŒÙ„ JAR Ù…Ű±ŰšÙˆŰ· ŰšÙ‡ ŰŹŰ§ÙˆŰ§', 'kindTTF' : 'فونŰȘ True Type', 'kindOTF' : 'فونŰȘ Open Type', 'kindRPM' : 'ۚ۳ŰȘه RPM', // texts 'kindText' : 'ŰłÙ†ŰŻ مŰȘنی', 'kindTextPlain' : 'ŰłÙ†ŰŻ مŰȘنی ŰłŰ§ŰŻÙ‡', 'kindPHP' : 'ŰłÙˆŰ±Űł Ú©ŰŻ PHP', 'kindCSS' : 'ÙŰ§ÛŒÙ„ style sheet', 'kindHTML' : 'ŰłÙ†ŰŻ HTML', 'kindJS' : 'ŰłÙˆŰ±Űł Ú©ŰŻ Javascript', 'kindRTF' : 'ŰłÙ†ŰŻ مŰȘنی Űșنی', 'kindC' : 'ŰłÙˆŰ±Űł Ú©ŰŻ C', 'kindCHeader' : 'ŰłÙˆŰ±Űł Ú©ŰŻ C header', 'kindCPP' : 'ŰłÙˆŰ±Űł Ú©ŰŻ C++', 'kindCPPHeader' : 'ŰłÙˆŰ±Űł Ú©ŰŻ C++ header', 'kindShell' : 'Ű§ŰłÚ©Ű±ÛŒÙŸŰȘ ŰŽÙ„ ÛŒÙˆÙ†ÛŒÚ©Űł', 'kindPython' : 'ŰłÙˆŰ±Űł Ú©ŰŻ Python', 'kindJava' : 'ŰłÙˆŰ±Űł Ú©ŰŻ Java', 'kindRuby' : 'ŰłÙˆŰ±Űł Ú©ŰŻ Ruby', 'kindPerl' : 'Ű§ŰłÚ©Ű±ÛŒÙŸŰȘ Perl', 'kindSQL' : 'ŰłÙˆŰ±Űł Ú©ŰŻ SQL', 'kindXML' : 'ŰłÙ†ŰŻ XML', 'kindAWK' : 'ŰłÙˆŰ±Űł Ú©ŰŻ AWK', 'kindCSV' : 'Ù…Ù‚Ű§ŰŻÛŒŰ± ŰŹŰŻŰ§ŰŽŰŻÙ‡ ۚۧ Ú©Ű§Ù…Ù„', 'kindDOCBOOK' : 'ŰłÙ†ŰŻ Docbook XML', 'kindMarkdown' : 'ŰłÙ†ŰŻ مŰȘنی Markdown', // added 20.7.2015 // images 'kindImage' : 'ŰȘŰ”ÙˆÛŒŰ±', 'kindBMP' : 'ŰȘŰ”ÙˆÛŒŰ± BMP', 'kindJPEG' : 'ŰȘŰ”ÙˆÛŒŰ± JPEG', 'kindGIF' : 'ŰȘŰ”ÙˆÛŒŰ± GIF', 'kindPNG' : 'ŰȘŰ”ÙˆÛŒŰ± PNG', 'kindTIFF' : 'ŰȘŰ”ÙˆÛŒŰ± TIFF', 'kindTGA' : 'ŰȘŰ”ÙˆÛŒŰ± TGA', 'kindPSD' : 'ŰȘŰ”ÙˆÛŒŰ± Adobe Photoshop', 'kindXBITMAP' : 'ŰȘŰ”ÙˆÛŒŰ± X bitmap', 'kindPXM' : 'ŰȘŰ”ÙˆÛŒŰ± Pixelmator', // media 'kindAudio' : 'ÙŰ§ÛŒÙ„ Ű”ÙˆŰȘی', 'kindAudioMPEG' : 'ÙŰ§ÛŒÙ„ Ű”ÙˆŰȘی MPEG', 'kindAudioMPEG4' : 'ÙŰ§ÛŒÙ„ Ű”ÙˆŰȘی MPEG-4', 'kindAudioMIDI' : 'ÙŰ§ÛŒÙ„ Ű”ÙˆŰȘی MIDI', 'kindAudioOGG' : 'ÙŰ§ÛŒÙ„ Ű”ÙˆŰȘی Ogg Vorbis', 'kindAudioWAV' : 'ÙŰ§ÛŒÙ„ Ű”ÙˆŰȘی WAV', 'AudioPlaylist' : 'Ù„ÛŒŰłŰȘ ÙŸŰźŰŽ MP3', 'kindVideo' : 'ÙŰ§ÛŒÙ„ ÙˆÛŒŰŻÛŒÙˆÛŒÛŒ', 'kindVideoDV' : 'ÙŰ§ÛŒÙ„ ÙˆÛŒŰŻÛŒÙˆÛŒÛŒ DV', 'kindVideoMPEG' : 'ÙŰ§ÛŒÙ„ ÙˆÛŒŰŻÛŒÙˆÛŒÛŒ MPEG', 'kindVideoMPEG4' : 'ÙŰ§ÛŒÙ„ ÙˆÛŒŰŻÛŒÙˆÛŒÛŒ MPEG-4', 'kindVideoAVI' : 'ÙŰ§ÛŒÙ„ ÙˆÛŒŰŻÛŒÙˆÛŒÛŒ AVI', 'kindVideoMOV' : 'ÙŰ§ÛŒÙ„ ÙˆÛŒŰŻÛŒÙˆÛŒÛŒ Quick Time', 'kindVideoWM' : 'ÙŰ§ÛŒÙ„ ÙˆÛŒŰŻÛŒÙˆÛŒÛŒ Windows Media', 'kindVideoFlash' : 'ÙŰ§ÛŒÙ„ ÙˆÛŒŰŻÛŒÙˆÛŒÛŒ Flash', 'kindVideoMKV' : 'ÙŰ§ÛŒÙ„ ÙˆÛŒŰŻÛŒÙˆÛŒÛŒ Matroska', 'kindVideoOGG' : 'ÙŰ§ÛŒÙ„ ÙˆÛŒŰŻÛŒÙˆÛŒÛŒ Ogg' } }; })); application/library/js/i18n/elfinder.fallback.js000064400000000353147577724760015625 0ustar00(function(factory) { if (typeof define === 'function' && define.amd) { define(factory); } else if (typeof exports !== 'undefined') { module.exports = factory(); } else { factory(); } }(this, function() { return void 0; })); application/library/js/i18n/elfinder.no.js000064400000037156147577724760014515 0ustar00/** * Norwegian translation * @author Stian Jacobsen * @version 2014-12-19 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.no = { translator : 'Stian Jacobsen <stian@promonorge.no>', language : 'Norwegian BokmĂ„l', dateFormat : 'M d, Y h:i A', // Mar 13, 2012 05:27 PM fancyDateFormat : '$1 h:i A', // will produce smth like: Today 12:25 PM direction : 'ltr', messages : { /********************************** errors **********************************/ 'error' : 'Feil', 'errUnknown' : 'Ukjent feil.', 'errUnknownCmd' : 'Ukjent kommando.', 'errJqui' : 'Ugyldig jQuery UI konfigurasjon. Selectable, draggable og droppable komponentene mĂ„ vĂŠre inkludert.', 'errNode' : 'elFinder pĂ„krever at DOM Elementer kan opprettes.', 'errURL' : 'Ugyldig elFinder konfigurasjon! URL-valget er ikke satt.', 'errAccess' : 'Ingen adgang.', 'errConnect' : 'Kunne ikke koble til.', 'errAbort' : 'Tilkoblingen avbrutt.', 'errTimeout' : 'Tilkoblingen tidsavbrudd.', 'errNotFound' : 'Backend ble ikke funnet', 'errResponse' : 'Ugyldig backend respons.', 'errConf' : 'Ugyldig backend konfigurasjon.', 'errJSON' : 'PHP JSON modul er ikke installert.', 'errNoVolumes' : 'Lesbar volum er ikke tilgjennelig.', 'errCmdParams' : 'Ugyldig parameter for kommando "$1".', 'errDataNotJSON' : 'Innhold er ikke JSON.', 'errDataEmpty' : 'Innholdet er tomt.', 'errCmdReq' : 'Backend spĂžrringen pĂ„krever kommando.', 'errOpen' : 'Kunne ikke Ă„pne "$1".', 'errNotFolder' : 'Objektet er ikke en mappe.', 'errNotFile' : 'Objektet er ikke en fil.', 'errRead' : 'Kunne ikke lese "$1".', 'errWrite' : 'Kunne ikke skrive til "$1".', 'errPerm' : 'Du har ikke rettigheter.', 'errLocked' : '"$1" er lĂ„st og kan ikke flyttes, slettes eller endres', 'errExists' : 'Filen "$1" finnes allerede.', 'errInvName' : 'Ugyldig filnavn.', 'errFolderNotFound' : 'Mappen finnes ikke.', 'errFileNotFound' : 'Filen finnes ikke.', 'errTrgFolderNotFound' : 'MĂ„lmappen "$1" ble ikke funnet.', 'errPopup' : 'Nettleseren din blokkerte et pop-up vindu. For Ă„ Ă„pne filen mĂ„ du aktivere pop-up i din nettlesers innstillinger.', 'errMkdir' : 'Kunne ikke opprette mappen "$1".', 'errMkfile' : 'Kunne ikke opprette filen "$1".', 'errRename' : 'Kunne ikke gi nytt navn til "$1".', 'errCopyFrom' : 'Kopiere filer fra "$1" er ikke tillatt.', 'errCopyTo' : 'Kopiere filer til "$1" er ikke tillatt.', 'errUpload' : 'Feil under opplasting.', 'errUploadFile' : 'Kunne ikke laste opp "$1".', 'errUploadNoFiles' : 'Ingen filer funnet til opplasting.', 'errUploadTotalSize' : 'Innholdet overgĂ„r maksimum tillatt stĂžrrelse.', 'errUploadFileSize' : 'Filen vergĂ„r maksimum tillatt stĂžrrelse.', 'errUploadMime' : 'Filtypen ikke tillatt.', 'errUploadTransfer' : '"$1" overfĂžrings feil.', 'errNotReplace' : 'Object "$1" already exists at this location and can not be replaced by object with another type.', 'errReplace' : 'Unable to replace "$1".', 'errSave' : 'Kunne ikke lagre "$1".', 'errCopy' : 'Kunne ikke kopiere "$1".', 'errMove' : 'Kunne ikke flytte "$1".', 'errCopyInItself' : 'Kunne ikke kopiere "$1" til seg selv.', 'errRm' : 'Kunne ikke slette "$1".', 'errRmSrc' : 'Unable remove source file(s).', 'errExtract' : 'Kunne ikke pakke ut filer fra "$1".', 'errArchive' : 'Kunne ikke opprette arkiv.', 'errArcType' : 'akriv-typen er ikke stĂžttet.', 'errNoArchive' : 'Filen er ikke et arkiv eller et arkiv som ikke er stĂžttet.', 'errCmdNoSupport' : 'Backend stĂžtter ikke denne kommandoen.', 'errReplByChild' : 'The folder “$1” can’t be replaced by an item it contains.', 'errArcSymlinks' : 'For security reason denied to unpack archives contains symlinks or files with not allowed names.', // edited 24.06.2012 'errArcMaxSize' : 'Archive files exceeds maximum allowed size.', 'errResize' : 'Unable to resize "$1".', 'errResizeDegree' : 'Invalid rotate degree.', // added 7.3.2013 'errResizeRotate' : 'Unable to rotate image.', // added 7.3.2013 'errResizeSize' : 'Invalid image size.', // added 7.3.2013 'errResizeNoChange' : 'Image size not changed.', // added 7.3.2013 'errUsupportType' : 'Unsupported file type.', 'errNotUTF8Content' : 'File "$1" is not in UTF-8 and cannot be edited.', // added 9.11.2011 'errNetMount' : 'Unable to mount "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Unsupported protocol.', // added 17.04.2012 'errNetMountFailed' : 'Mount failed.', // added 17.04.2012 'errNetMountHostReq' : 'Host required.', // added 18.04.2012 'errSessionExpires' : 'Your session has expired due to inactivity.', 'errCreatingTempDir' : 'Unable to create temporary directory: "$1"', 'errFtpDownloadFile' : 'Unable to download file from FTP: "$1"', 'errFtpUploadFile' : 'Unable to upload file to FTP: "$1"', 'errFtpMkdir' : 'Unable to create remote directory on FTP: "$1"', 'errArchiveExec' : 'Error while archiving files: "$1"', 'errExtractExec' : 'Error while extracting files: "$1"', /******************************* commands names ********************************/ 'cmdarchive' : 'Opprett arkiv', 'cmdback' : 'Tilbake', 'cmdcopy' : 'Kopier', 'cmdcut' : 'Klipp ut', 'cmddownload' : 'Last ned', 'cmdduplicate' : 'Dupliser', 'cmdedit' : 'Rediger fil', 'cmdextract' : 'Pakk ut filer fra arkiv', 'cmdforward' : 'Frem', 'cmdgetfile' : 'Velg filer', 'cmdhelp' : 'Om', 'cmdhome' : 'Hjem', 'cmdinfo' : 'Vis info', 'cmdmkdir' : 'Ny mappe', 'cmdmkfile' : 'Ny fil', 'cmdopen' : 'Åpne', 'cmdpaste' : 'Lim inn', 'cmdquicklook' : 'ForhĂ„ndsvis', 'cmdreload' : 'Last inn pĂ„ nytt', 'cmdrename' : 'Gi nytt navn', 'cmdrm' : 'Slett', 'cmdsearch' : 'Find filer', 'cmdup' : 'Opp et nivĂ„', 'cmdupload' : 'Last opp filer', 'cmdview' : 'Vis', 'cmdresize' : 'Resize & Rotate', 'cmdsort' : 'Sort', 'cmdnetmount' : 'Mount network volume', /*********************************** buttons ***********************************/ 'btnClose' : 'Lukk', 'btnSave' : 'Lagre', 'btnRm' : 'Slett', 'btnApply' : 'Apply', 'btnCancel' : 'Avbryt', 'btnNo' : 'Nei', 'btnYes' : 'Ja', 'btnMount' : 'Mount', /******************************** notifications ********************************/ 'ntfopen' : 'Åpne mappe', 'ntffile' : 'Åpne fil', 'ntfreload' : 'Last inn mappen pĂ„ nytt', 'ntfmkdir' : 'Oppretter mappe', 'ntfmkfile' : 'Oppretter filer', 'ntfrm' : 'Sletter filer', 'ntfcopy' : 'Kopierer filer', 'ntfmove' : 'Flytter filer', 'ntfprepare' : 'GjĂžr klar til kopiering av filer', 'ntfrename' : 'Gir nytt navn til filer', 'ntfupload' : 'Laster opp filer', 'ntfdownload' : 'Laster ned filer', 'ntfsave' : 'Lagrer filer', 'ntfarchive' : 'Oppretter arkiv', 'ntfextract' : 'Pakker ut filer fra arkiv', 'ntfsearch' : 'SĂžker i filer', 'ntfresize' : 'Resizing images', 'ntfsmth' : 'GjĂžr noe... >_<', 'ntfloadimg' : 'Loading image', 'ntfnetmount' : 'Mounting network volume', // added 18.04.2012 'ntfdim' : 'Acquiring image dimension', // added 20.05.2013 /************************************ dates **********************************/ 'dateUnknown' : 'Ukjent', 'Today' : 'I dag', 'Yesterday' : 'I gĂ„r', 'msJan' : 'Jan', 'msFeb' : 'Feb', 'msMar' : 'Mar', 'msApr' : 'Apr', 'msMay' : 'Mai', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'Aug', 'msSep' : 'Sep', 'msOct' : 'Okt', 'msNov' : 'Nov', 'msDec' : 'Des', 'January' : 'January', 'February' : 'February', 'March' : 'March', 'April' : 'April', 'May' : 'May', 'June' : 'June', 'July' : 'July', 'August' : 'August', 'September' : 'September', 'October' : 'October', 'November' : 'November', 'December' : 'December', 'Sunday' : 'Sunday', 'Monday' : 'Monday', 'Tuesday' : 'Tuesday', 'Wednesday' : 'Wednesday', 'Thursday' : 'Thursday', 'Friday' : 'Friday', 'Saturday' : 'Saturday', 'Sun' : 'Sun', 'Mon' : 'Mon', 'Tue' : 'Tue', 'Wed' : 'Wed', 'Thu' : 'Thu', 'Fri' : 'Fri', 'Sat' : 'Sat', /******************************** sort variants ********************************/ 'sortname' : 'by name', 'sortkind' : 'by kind', 'sortsize' : 'by size', 'sortdate' : 'by date', 'sortFoldersFirst' : 'Folders first', /********************************** messages **********************************/ 'confirmReq' : 'Bekreftelse nĂždvendig', 'confirmRm' : 'Er du sikker pĂ„ at du Ăžnsker Ă„ slette filene?', 'confirmRepl' : 'Erstatt fil?', 'apllyAll' : 'Apply to all', 'name' : 'Navn', 'size' : 'StĂžrrelse', 'perms' : 'Rettigheter', 'modify' : 'Endret', 'kind' : 'Type', 'read' : 'les', 'write' : 'skriv', 'noaccess' : 'ingen adgang', 'and' : 'og', 'unknown' : 'ukjent', 'selectall' : 'Velg alle filene', 'selectfiles' : 'Velg fil(er)', 'selectffile' : 'Velg fĂžrste fil', 'selectlfile' : 'Velg siste fil', 'viewlist' : 'Listevisning', 'viewicons' : 'Ikoner', 'places' : 'OmrĂ„der', 'calc' : 'Beregn', 'path' : 'Bane', 'aliasfor' : 'Alias for', 'locked' : 'LĂ„st', 'dim' : 'StĂžrrelser', 'files' : 'Filer', 'folders' : 'Mapper', 'items' : 'objekter', 'yes' : 'ja', 'no' : 'nei', 'link' : 'Link', 'searcresult' : 'SĂžkeresultater', 'selected' : 'valgte filer', 'about' : 'Om', 'shortcuts' : 'Snarveier', 'help' : 'Hjelp', 'webfm' : 'Web-filbehandler', 'ver' : 'Versjon', 'protocolver' : 'protokol versjon', 'homepage' : 'Project home', 'docs' : 'dokumentasjon', 'github' : 'Fork us on Github', 'twitter' : 'Follow us on twitter', 'facebook' : 'Join us on facebook', 'team' : 'Team', 'chiefdev' : 'chief developer', 'developer' : 'developer', 'contributor' : 'contributor', 'maintainer' : 'maintainer', 'translator' : 'translator', 'icons' : 'Ikoner', 'dontforget' : 'and don\'t forget to bring a towel', 'shortcutsof' : 'Snarveier avslĂ„tt', 'dropFiles' : 'Slipp filer her', 'or' : 'eller', 'selectForUpload' : 'Velg filer til opplasting', 'moveFiles' : 'Flytt filer', 'copyFiles' : 'Kopier filer', 'rmFromPlaces' : 'Remove from places', 'aspectRatio' : 'Aspect ratio', 'scale' : 'Scale', 'width' : 'Width', 'height' : 'Height', 'resize' : 'Resize', 'crop' : 'Crop', 'rotate' : 'Rotate', 'rotate-cw' : 'Rotate 90 degrees CW', 'rotate-ccw' : 'Rotate 90 degrees CCW', 'degree' : '°', 'netMountDialogTitle' : 'Mount network volume', // added 18.04.2012 'protocol' : 'Protocol', // added 18.04.2012 'host' : 'Host', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'User', // added 18.04.2012 'pass' : 'Password', // added 18.04.2012 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Ukjent', 'kindFolder' : 'Mappe', 'kindAlias' : 'Snarvei', 'kindAliasBroken' : 'Ugyldig snarvei', // applications 'kindApp' : 'Programfil', 'kindPostscript' : 'Postscript dokument', 'kindMsOffice' : 'Microsoft Office dokument', 'kindMsWord' : 'Microsoft Word dokument', 'kindMsExcel' : 'Microsoft Excel dokument', 'kindMsPP' : 'Microsoft Powerpoint presentation', 'kindOO' : 'Open Office dokument', 'kindAppFlash' : 'Flash', 'kindPDF' : 'Portabelt dokument (PDF)', 'kindTorrent' : 'Bittorrent file', 'kind7z' : '7z arkiv', 'kindTAR' : 'TAR arkiv', 'kindGZIP' : 'GZIP arkiv', 'kindBZIP' : 'BZIP arkiv', 'kindXZ' : 'XZ arkiv', 'kindZIP' : 'ZIP arkiv', 'kindRAR' : 'RAR ar', 'kindJAR' : 'Java JAR file', 'kindTTF' : 'True Type font', 'kindOTF' : 'Open Type font', 'kindRPM' : 'RPM package', // texts 'kindText' : 'Tekst dokument', 'kindTextPlain' : 'Plain text', 'kindPHP' : 'PHP kilde', 'kindCSS' : 'Cascading style sheet', 'kindHTML' : 'HTML dokument', 'kindJS' : 'Javascript', 'kindRTF' : 'Rikt Tekst Format', 'kindC' : 'C kilde', 'kindCHeader' : 'C header kilde', 'kindCPP' : 'C++ kilde', 'kindCPPHeader' : 'C++ header kilde', 'kindShell' : 'Unix shell script', 'kindPython' : 'Python kilde', 'kindJava' : 'Java kilde', 'kindRuby' : 'Ruby kilde', 'kindPerl' : 'Perl script', 'kindSQL' : 'SQL skilde', 'kindXML' : 'XML dokument', 'kindAWK' : 'AWK kilde', 'kindCSV' : 'Comma separated values', 'kindDOCBOOK' : 'Docbook XML dokument', // Images 'kindImage' : 'Bilde', 'kindBMP' : 'BMP bilde', 'kindJPEG' : 'JPEG bilde', 'kindGIF' : 'GIF bilde', 'kindPNG' : 'PNG bilde', 'kindTIFF' : 'TIFF bilde', 'kindTGA' : 'TGA bilde', 'kindPSD' : 'Adobe Photoshop bilde', 'kindXBITMAP' : 'X bitmap bilde', 'kindPXM' : 'Pixelmator bilde', // media 'kindAudio' : 'Audio media', 'kindAudioMPEG' : 'MPEG audio', 'kindAudioMPEG4' : 'MPEG-4 audio', 'kindAudioMIDI' : 'MIDI audio', 'kindAudioOGG' : 'Ogg Vorbis audio', 'kindAudioWAV' : 'WAV audio', 'AudioPlaylist' : 'MP3 spilleliste', 'kindVideo' : 'Video media', 'kindVideoDV' : 'DV film', 'kindVideoMPEG' : 'MPEG film', 'kindVideoMPEG4' : 'MPEG-4 film', 'kindVideoAVI' : 'AVI film', 'kindVideoMOV' : 'Quick Time film', 'kindVideoWM' : 'Windows Media film', 'kindVideoFlash' : 'Flash film', 'kindVideoMKV' : 'Matroska film', 'kindVideoOGG' : 'Ogg film' } }; })); application/library/js/i18n/elfinder.fr.js000064400000106105147577724760014477 0ustar00/** * française translation * @author RĂ©gis Guyomarch * @author Benoit Delachaux * @author Jonathan Grunder * @version 2023-04-16 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.fr = { translator : 'RĂ©gis Guyomarch <regisg@gmail.com>, Benoit Delachaux <benorde33@gmail.com>, Jonathan Grunder <jonathan.grunder@gmail.com>', language : 'française', direction : 'ltr', dateFormat : 'd/M/Y H:i', // will show like: 16/Avr/2023 12:36 fancyDateFormat : '$1 H:i', // will show like: Aujourd'hui 12:36 nonameDateFormat : 'ymd-His', // noname upload will show like: 230416-123657 messages : { /********************************** errors **********************************/ 'error' : 'Erreur', 'errUnknown' : 'Erreur inconnue.', 'errUnknownCmd' : 'Commande inconnue.', 'errJqui' : 'Mauvaise configuration de jQuery UI. Les composants Selectable, draggable et droppable doivent ĂȘtre inclus.', 'errNode' : 'elFinder requiert que l\'Ă©lĂ©ment DOM ait Ă©tĂ© crĂ©Ă©.', 'errURL' : 'Mauvaise configuration d\'elFinder ! L\'option URL n\'a pas Ă©tĂ© dĂ©finie.', 'errAccess' : 'AccĂšs refusĂ©.', 'errConnect' : 'Impossible de se connecter au backend.', 'errAbort' : 'Connexion interrompue.', 'errTimeout' : 'DĂ©lai de connexion dĂ©passĂ©.', 'errNotFound' : 'Backend non trouvĂ©.', 'errResponse' : 'Mauvaise rĂ©ponse du backend.', 'errConf' : 'Mauvaise configuration du backend.', 'errJSON' : 'Le module PHP JSON n\'est pas installĂ©.', 'errNoVolumes' : 'Aucun volume lisible.', 'errCmdParams' : 'Mauvais paramĂ©trage de la commande "$1".', 'errDataNotJSON' : 'Les donnĂ©es ne sont pas au format JSON.', 'errDataEmpty' : 'DonnĂ©es inexistantes.', 'errCmdReq' : 'La requĂȘte au Backend doit comporter le nom de la commande.', 'errOpen' : 'Impossible d\'ouvrir "$1".', 'errNotFolder' : 'Cet objet n\'est pas un dossier.', 'errNotFile' : 'Cet objet n\'est pas un fichier.', 'errRead' : 'Impossible de lire "$1".', 'errWrite' : 'Impossible d\'Ă©crire dans "$1".', 'errPerm' : 'Permission refusĂ©e.', 'errLocked' : '"$1" est verrouillĂ© et ne peut ĂȘtre dĂ©placĂ© ou supprimĂ©.', 'errExists' : 'Un Ă©lĂ©ment nommĂ© "$1" existe dĂ©jĂ .', 'errInvName' : 'Nom de fichier incorrect.', 'errInvDirname' : 'Nom de dossier incorrect.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : 'Dossier non trouvĂ©.', 'errFileNotFound' : 'Fichier non trouvĂ©.', 'errTrgFolderNotFound' : 'Dossier destination "$1" non trouvĂ©.', 'errPopup' : 'Le navigateur web a empĂȘchĂ© l\'ouverture d\'une fenĂȘtre "popup". Pour ouvrir le fichier, modifiez les options du navigateur web.', 'errMkdir' : 'Impossible de crĂ©er le dossier "$1".', 'errMkfile' : 'Impossible de crĂ©er le fichier "$1".', 'errRename' : 'Impossible de renommer "$1".', 'errCopyFrom' : 'Interdiction de copier des fichiers depuis le volume "$1".', 'errCopyTo' : 'Interdiction de copier des fichiers vers le volume "$1".', 'errMkOutLink' : 'Impossible de crĂ©er un lien en dehors du volume principal.', // from v2.1 added 03.10.2015 'errUpload' : 'Erreur lors de l\'envoi du fichier.', // old name - errUploadCommon 'errUploadFile' : 'Impossible d\'envoyer "$1".', // old name - errUpload 'errUploadNoFiles' : 'Aucun fichier Ă  envoyer.', 'errUploadTotalSize' : 'Les donnĂ©es dĂ©passent la taille maximale allouĂ©e.', // old name - errMaxSize 'errUploadFileSize' : 'Le fichier dĂ©passe la taille maximale allouĂ©e.', // old name - errFileMaxSize 'errUploadMime' : 'Type de fichier non autorisĂ©.', 'errUploadTransfer' : '"$1" erreur de transfert.', 'errUploadTemp' : 'Impossible de crĂ©er un fichier temporaire pour transfĂ©rer les fichiers.', // from v2.1 added 26.09.2015 'errNotReplace' : 'L\'objet "$1" existe dĂ©jĂ  Ă  cet endroit et ne peut ĂȘtre remplacĂ© par un objet d\'un type diffĂ©rent.', // new 'errReplace' : 'Impossible de remplacer "$1".', 'errSave' : 'Impossible de sauvegarder "$1".', 'errCopy' : 'Impossible de copier "$1".', 'errMove' : 'Impossible de dĂ©placer "$1".', 'errCopyInItself' : 'Impossible de copier "$1" sur lui-mĂȘme.', 'errRm' : 'Impossible de supprimer "$1".', 'errTrash' : 'Impossible de dĂ©placer dans la corbeille', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'Impossible de supprimer le(s) fichier(s) source(s).', 'errExtract' : 'Imbossible d\'extraire les fichiers Ă  partir de "$1".', 'errArchive' : 'Impossible de crĂ©er l\'archive.', 'errArcType' : 'Type d\'archive non supportĂ©.', 'errNoArchive' : 'Le fichier n\'est pas une archive, ou c\'est un type d\'archive non supportĂ©.', 'errCmdNoSupport' : 'Le Backend ne prend pas en charge cette commande.', 'errReplByChild' : 'Le dossier “$1” ne peut pas ĂȘtre remplacĂ© par un Ă©lĂ©ment qu\'il contient.', 'errArcSymlinks' : 'Par mesure de sĂ©curitĂ©, il est dĂ©fendu d\'extraire une archive contenant des liens symboliques ou des noms de fichier non autorisĂ©s.', // edited 24.06.2012 'errArcMaxSize' : 'Les fichiers de l\'archive excĂšdent la taille maximale autorisĂ©e.', 'errResize' : 'Impossible de redimensionner "$1".', 'errResizeDegree' : 'DegrĂ© de rotation invalide.', // added 7.3.2013 'errResizeRotate' : 'L\'image ne peut pas ĂȘtre tournĂ©e.', // added 7.3.2013 'errResizeSize' : 'Dimension de l\'image non-valide.', // added 7.3.2013 'errResizeNoChange' : 'L\'image n\'est pas redimensionnable.', // added 7.3.2013 'errUsupportType' : 'Type de fichier non supportĂ©.', 'errNotUTF8Content' : 'Le fichier "$1" n\'est pas en UTF-8, il ne peut ĂȘtre Ă©ditĂ©.', // added 9.11.2011 'errNetMount' : 'Impossible de monter "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'Protocole non supportĂ©.', // added 17.04.2012 'errNetMountFailed' : 'Echec du montage.', // added 17.04.2012 'errNetMountHostReq' : 'HĂŽte requis.', // added 18.04.2012 'errSessionExpires' : 'Votre session a expirĂ© en raison de son inactivitĂ©.', 'errCreatingTempDir' : 'Impossible de crĂ©er le rĂ©pertoire temporaire : "$1"', 'errFtpDownloadFile' : 'Impossible de tĂ©lĂ©charger le file depuis l\'accĂšs FTP : "$1"', 'errFtpUploadFile' : 'Impossible d\'envoyer le fichier vers l\'accĂšs FTP : "$1"', 'errFtpMkdir' : 'Impossible de crĂ©er un rĂ©pertoire distant sur l\'accĂšs FTP :"$1"', 'errArchiveExec' : 'Erreur lors de l\'archivage des fichiers : "$1"', 'errExtractExec' : 'Erreur lors de l\'extraction des fichiers : "$1"', 'errNetUnMount' : 'Impossible de dĂ©monter.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'Conversion en UTF-8 impossible', // from v2.1 added 08.04.2014 'errFolderUpload' : 'Essayez Google Chrome, si voulez envoyer le dossier.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'DĂ©lai d’attente dĂ©passĂ© pour la recherche "$1". Le rĂ©sultat de la recherche est partiel.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'RĂ©authorisation requise.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'Le nombre maximal d\'Ă©lĂ©ments pouvant ĂȘtre sĂ©lectionnĂ©s est $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'Impossible de restaurer la corbeille. La destination de la restauration n\'a pu ĂȘtre identifiĂ©e.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'Aucun Ă©diteur n\'a Ă©tĂ© trouvĂ© pour ce type de fichier.', // from v2.1.25 added 23.5.2017 'errServerError' : 'Une erreur est survenue du cĂŽtĂ© serveur.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'Impossible de vider le dossier "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : 'Il y a encore $1 erreur(s).', // from v2.1.44 added 9.12.2018 'errMaxMkdirs' : 'Vous ne pouvez crĂ©er que $1 dossier au mĂȘme moment.', // from v2.1.58 added 20.6.2021 /******************************* commands names ********************************/ 'cmdarchive' : 'CrĂ©er une archive', 'cmdback' : 'PrĂ©cĂ©dent', 'cmdcopy' : 'Copier', 'cmdcut' : 'Couper', 'cmddownload' : 'TĂ©lĂ©charger', 'cmdduplicate' : 'Dupliquer', 'cmdedit' : 'Éditer le fichier', 'cmdextract' : 'Extraire les fichiers de l\'archive', 'cmdforward' : 'Suivant', 'cmdgetfile' : 'SĂ©lectionner les fichiers', 'cmdhelp' : 'À propos de ce logiciel', 'cmdhome' : 'Accueil', 'cmdinfo' : 'Informations', 'cmdmkdir' : 'Nouveau dossier', 'cmdmkdirin' : 'Dans un nouveau dossier', // from v2.1.7 added 19.2.2016 'cmdmkfile' : 'Nouveau fichier', 'cmdopen' : 'Ouvrir', 'cmdpaste' : 'Coller', 'cmdquicklook' : 'PrĂ©visualiser', 'cmdreload' : 'Actualiser', 'cmdrename' : 'Renommer', 'cmdrm' : 'Supprimer', 'cmdtrash' : 'À la corbeille', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'Restaurer', //from v2.1.24 added 3.5.2017 'cmdsearch' : 'Trouver les fichiers', 'cmdup' : 'Remonter au dossier parent', 'cmdupload' : 'Envoyer les fichiers', 'cmdview' : 'Vue', 'cmdresize' : 'Redimensionner l\'image', 'cmdsort' : 'Trier', 'cmdnetmount' : 'Monter un volume rĂ©seau', // added 18.04.2012 'cmdnetunmount': 'DĂ©monter', // from v2.1 added 30.04.2012 'cmdplaces' : 'Vers Favoris', // added 28.12.2014 'cmdchmod' : 'Changer de mode', // from v2.1 added 20.6.2015 'cmdopendir' : 'Ouvrir un dossier', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'RĂ©initialiser largeur colone', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'Plein Ă©cran', // from v2.1.15 added 03.08.2016 'cmdmove' : 'DĂ©placer', // from v2.1.15 added 21.08.2016 'cmdempty' : 'Vider le dossier', // from v2.1.25 added 22.06.2017 'cmdundo' : 'Annuler', // from v2.1.27 added 31.07.2017 'cmdredo' : 'Refaire', // from v2.1.27 added 31.07.2017 'cmdpreference': 'PrĂ©fĂ©rences', // from v2.1.27 added 03.08.2017 'cmdselectall' : 'Tout sĂ©lectionner', // from v2.1.28 added 15.08.2017 'cmdselectnone': 'Tout dĂ©sĂ©lectionner', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'Inverser la sĂ©lection', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'Ouvrir dans une nouvelle fenĂȘtre', // from v2.1.38 added 3.4.2018 'cmdhide' : 'Cacher (PrĂ©fĂ©rence)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : 'Fermer', 'btnSave' : 'Enregistrer', 'btnRm' : 'Supprimer', 'btnApply' : 'Appliquer', 'btnCancel' : 'Annuler', 'btnNo' : 'Non', 'btnYes' : 'Oui', 'btnMount' : 'Monter', // added 18.04.2012 'btnApprove': 'Aller Ă  $1 & approuver', // from v2.1 added 26.04.2012 'btnUnmount': 'DĂ©monter', // from v2.1 added 30.04.2012 'btnConv' : 'Convertir', // from v2.1 added 08.04.2014 'btnCwd' : 'Ici', // from v2.1 added 22.5.2015 'btnVolume' : 'Volume', // from v2.1 added 22.5.2015 'btnAll' : 'Tous', // from v2.1 added 22.5.2015 'btnMime' : 'Type MIME', // from v2.1 added 22.5.2015 'btnFileName':'Nom du fichier', // from v2.1 added 22.5.2015 'btnSaveClose': 'Sauvegarder & Fermer', // from v2.1 added 12.6.2015 'btnBackup' : 'Sauvegarde', // fromv2.1 added 28.11.2015 'btnRename' : 'Renommer', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'Renommer (tous)', // from v2.1.24 added 6.4.2017 'btnPrevious' : 'PrĂ©c. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : 'Suiv. ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : 'Sauvegarder sous', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'Ouvrir le dossier', 'ntffile' : 'Ouvrir le fichier', 'ntfreload' : 'Actualiser le contenu du dossier', 'ntfmkdir' : 'CrĂ©ation du dossier', 'ntfmkfile' : 'CrĂ©ation des fichiers', 'ntfrm' : 'Supprimer les Ă©lĂ©ments', 'ntfcopy' : 'Copier les Ă©lĂ©ments', 'ntfmove' : 'DĂ©placer les Ă©lĂ©ments', 'ntfprepare' : 'PrĂ©paration de la copie des Ă©lĂ©ments', 'ntfrename' : 'Renommer les fichiers', 'ntfupload' : 'Envoi des fichiers', 'ntfdownload' : 'TĂ©lĂ©chargement des fichiers', 'ntfsave' : 'Sauvegarder les fichiers', 'ntfarchive' : 'CrĂ©ation de l\'archive', 'ntfextract' : 'Extraction des fichiers de l\'archive', 'ntfsearch' : 'Recherche des fichiers', 'ntfresize' : 'Redimensionner les images', 'ntfsmth' : 'Fait quelque chose', 'ntfloadimg' : 'Chargement de l\'image', 'ntfnetmount' : 'Monte le volume rĂ©seau', // added 18.04.2012 'ntfnetunmount': 'DĂ©monte le volume rĂ©seau', // from v2.1 added 30.04.2012 'ntfdim' : 'Calcule la dimension de l\'image', // added 20.05.2013 'ntfreaddir' : 'Lecture des informations du dossier', // from v2.1 added 01.07.2013 'ntfurl' : 'RĂ©cupĂ©ration de l’URL du lien', // from v2.1 added 11.03.2014 'ntfchmod' : 'Changement de mode', // from v2.1 added 20.6.2015 'ntfpreupload': 'VĂ©rification du nom du fichier envoyĂ©', // from v2.1 added 31.11.2015 'ntfzipdl' : 'CrĂ©ation d’un fichier pour le tĂ©lĂ©chargement', // from v2.1.7 added 23.1.2016 'ntfparents' : 'Traitement de l\'information du chemin', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'Traitement du fichier envoyĂ©', // from v2.1.17 added 2.11.2016 'ntftrash' : 'Mettre Ă  la corbeille', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'Restaurer depuis la corbeille', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'Validation du dossier de destination', // from v2.1.24 added 3.5.2017 'ntfundo' : 'Annuler l\'opĂ©ration prĂ©cĂ©dente', // from v2.1.27 added 31.07.2017 'ntfredo' : 'Refaire l\'opĂ©ration annulĂ©e', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'VĂ©rification du contenu', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'Corbeille', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'Inconnue', 'Today' : 'Aujourd\'hui', 'Yesterday' : 'Hier', 'msJan' : 'Jan', 'msFeb' : 'FĂ©v', 'msMar' : 'Mar', 'msApr' : 'Avr', 'msMay' : 'Mai', 'msJun' : 'Jun', 'msJul' : 'Jul', 'msAug' : 'AoĂ»', 'msSep' : 'Sep', 'msOct' : 'Oct', 'msNov' : 'Nov', 'msDec' : 'DĂ©c', 'January' : 'Janvier', 'February' : 'FĂ©vrier', 'March' : 'Mars', 'April' : 'Avril', 'May' : 'Mai', 'June' : 'Juin', 'July' : 'Juillet', 'August' : 'AoĂ»t', 'September' : 'Septembre', 'October' : 'Octobre', 'November' : 'Novembre', 'December' : 'DĂ©cembre', 'Sunday' : 'Dimanche', 'Monday' : 'Lundi', 'Tuesday' : 'Mardi', 'Wednesday' : 'Mercredi', 'Thursday' : 'Jeudi', 'Friday' : 'Vendredi', 'Saturday' : 'Samedi', 'Sun' : 'Dim', 'Mon' : 'Lun', 'Tue' : 'Mar', 'Wed' : 'Mer', 'Thu' : 'Jeu', 'Fri' : 'Ven', 'Sat' : 'Sam', /******************************** sort variants ********************************/ 'sortname' : 'par nom', 'sortkind' : 'par type', 'sortsize' : 'par taille', 'sortdate' : 'par date', 'sortFoldersFirst' : 'Dossiers en premier', 'sortperm' : 'par permission', // from v2.1.13 added 13.06.2016 'sortmode' : 'par mode', // from v2.1.13 added 13.06.2016 'sortowner' : 'par propriĂ©taire', // from v2.1.13 added 13.06.2016 'sortgroup' : 'par groupe', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'Egalement arborescence', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : 'NouveauFichier.txt', // added 10.11.2015 'untitled folder' : 'NouveauDossier', // added 10.11.2015 'Archive' : 'NouvelleArchive', // from v2.1 added 10.11.2015 'untitled file' : 'NewFile.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: Fichier', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'Confirmation requise', 'confirmRm' : 'Êtes-vous certain de vouloir supprimer les Ă©lĂ©ments ?
      Cela ne peut ĂȘtre annulĂ© !', 'confirmRepl' : 'Remplacer l\'ancien fichier par le nouveau ?', 'confirmRest' : 'Remplacer l\'Ă©lĂ©ment existant par l\'Ă©lĂ©ment de la corbeille ?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'L\'encodage n\'est pas UTf-8
      Convertir en UTF-8 ?
      Les contenus deviendront UTF-8 en sauvegardant aprĂšs la conversion.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'Impossible de dĂ©tecter l\'encodage de ce fichier. Pour ĂȘtre modifiĂ©, il doit ĂȘtre temporairement convertit en UTF-8.
      Veuillez s\'il vous plaßt sélectionner un encodage pour ce fichier.', // from v2.1.19 added 28.11.2016 'confirmNotSave' : 'Ce fichier a été modifié.
      Les donnĂ©es seront perdues si les changements ne sont pas sauvegardĂ©s.', // from v2.1 added 15.7.2015 'confirmTrash' : 'Êtes-vous certain de vouloir dĂ©placer les Ă©lĂ©ments vers la corbeille?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'Etes-vous sĂ»r de vouloir dĂ©placer ces Ă©lĂ©ments vers "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : 'Appliquer Ă  tous', 'name' : 'Nom', 'size' : 'Taille', 'perms' : 'Permissions', 'modify' : 'ModifiĂ©', 'kind' : 'Type', 'read' : 'Lecture', 'write' : 'Écriture', 'noaccess' : 'Pas d\'accĂšs', 'and' : 'et', 'unknown' : 'inconnu', 'selectall' : 'SĂ©lectionner tous les Ă©lĂ©ments', 'selectfiles' : 'SĂ©lectionner le(s) Ă©lĂ©ment(s)', 'selectffile' : 'SĂ©lectionner le premier Ă©lĂ©ment', 'selectlfile' : 'SĂ©lectionner le dernier Ă©lĂ©ment', 'viewlist' : 'Vue par liste', 'viewicons' : 'Vue par icĂŽnes', 'viewSmall' : 'Petites icĂŽnes', // from v2.1.39 added 22.5.2018 'viewMedium' : 'Moyennes icĂŽnes', // from v2.1.39 added 22.5.2018 'viewLarge' : 'Grandes icĂŽnes', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'TrĂšs grandes icĂŽnes', // from v2.1.39 added 22.5.2018 'places' : 'Favoris', 'calc' : 'Calculer', 'path' : 'Chemin', 'aliasfor' : 'Raccourcis pour', 'locked' : 'Verrouiller', 'dim' : 'Dimensions', 'files' : 'Fichiers', 'folders' : 'Dossiers', 'items' : 'ÉlĂ©ments', 'yes' : 'oui', 'no' : 'non', 'link' : 'Lien', 'searcresult' : 'RĂ©sultats de la recherche', 'selected' : 'ÉlĂ©ments sĂ©lectionnĂ©s', 'about' : 'À propos', 'shortcuts' : 'Raccourcis', 'help' : 'Aide', 'webfm' : 'Gestionnaire de fichier Web', 'ver' : 'Version', 'protocolver' : 'Version du protocole', 'homepage' : 'Page du projet', 'docs' : 'Documentation', 'github' : 'Forkez-nous sur Github', 'twitter' : 'Suivez nous sur Twitter', 'facebook' : 'Joignez-nous sur Facebook', 'team' : 'Équipe', 'chiefdev' : 'DĂ©veloppeur en chef', 'developer' : 'DĂ©veloppeur', 'contributor' : 'Contributeur', 'maintainer' : 'Mainteneur', 'translator' : 'Traducteur', 'icons' : 'IcĂŽnes', 'dontforget' : 'et n\'oubliez pas votre serviette', 'shortcutsof' : 'Raccourcis dĂ©sactivĂ©s', 'dropFiles' : 'DĂ©posez les fichiers ici', 'or' : 'ou', 'selectForUpload' : 'SĂ©lectionner les fichiers Ă  envoyer', 'moveFiles' : 'DĂ©placer les Ă©lĂ©ments', 'copyFiles' : 'Copier les Ă©lĂ©ments', 'restoreFiles' : 'Restaurer les Ă©lĂ©ments', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'Retirer des favoris', 'aspectRatio' : 'Ratio d’affichage', 'scale' : 'Mise Ă  l\'Ă©chelle', 'width' : 'Largeur', 'height' : 'Hauteur', 'resize' : 'Redimensionner', 'crop' : 'Recadrer', 'rotate' : 'Rotation', 'rotate-cw' : 'Rotation de 90 degrĂ©s horaire', 'rotate-ccw' : 'Rotation de 90 degrĂ©s antihoraire', 'degree' : '°', 'netMountDialogTitle' : 'Monter un volume rĂ©seau', // added 18.04.2012 'protocol' : 'Protocole', // added 18.04.2012 'host' : 'HĂŽte', // added 18.04.2012 'port' : 'Port', // added 18.04.2012 'user' : 'Utilisateur', // added 18.04.2012 'pass' : 'Mot de passe', // added 18.04.2012 'confirmUnmount' : 'DĂ©monter $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'Glissez-dĂ©posez depuis le navigateur de fichier', // from v2.1 added 30.05.2012 'dropPasteFiles' : 'Glissez-dĂ©posez les fichiers ici', // from v2.1 added 07.04.2014 'encoding' : 'Encodage', // from v2.1 added 19.12.2014 'locale' : 'Encodage rĂ©gional', // from v2.1 added 19.12.2014 'searchTarget' : 'Destination: $1', // from v2.1 added 22.5.2015 'searchMime' : 'Recherche par type MIME', // from v2.1 added 22.5.2015 'owner' : 'PropriĂ©taire', // from v2.1 added 20.6.2015 'group' : 'Groupe', // from v2.1 added 20.6.2015 'other' : 'Autre', // from v2.1 added 20.6.2015 'execute' : 'ExĂ©cuter', // from v2.1 added 20.6.2015 'perm' : 'Permission', // from v2.1 added 20.6.2015 'mode' : 'Mode', // from v2.1 added 20.6.2015 'emptyFolder' : 'Le dossier est vide', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : 'Le dossier est vide.\\ Glissez-dĂ©posez pour ajouter des Ă©lĂ©ments.', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : 'Le dossier est vide.\\ Appuyez longuement pour ajouter des Ă©lĂ©ments.', // from v2.1.6 added 30.12.2015 'quality' : 'QualitĂ©', // from v2.1.6 added 5.1.2016 'autoSync' : 'Synchronisation automatique', // from v2.1.6 added 10.1.2016 'moveUp' : 'DĂ©placer vers le haut', // from v2.1.6 added 18.1.2016 'getLink' : 'Obtenir le lien d’URL', // from v2.1.7 added 9.2.2016 'selectedItems' : 'ÉlĂ©ments sĂ©lectionnĂ©s ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ID du dossier', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'Permettre l\'accĂšs hors-ligne', // from v2.1.10 added 3.25.2016 'reAuth' : 'Pour se rĂ©authentifier', // from v2.1.10 added 3.25.2016 'nowLoading' : 'En cours de chargement...', // from v2.1.12 added 4.26.2016 'openMulti' : 'Ouvrir multiples fichiers', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'Vous allez ouvrir $1 fichiers. Êtes-vous sĂ»r de vouloir les ouvrir dans le navigateur ?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'Aucun rĂ©sultat trouvĂ© avec les paramĂštres de recherche.', // from v2.1.12 added 5.16.2016 'editingFile' : 'Modification d\'un fichier.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'Vous avez sĂ©lectionnĂ© $1 Ă©lĂ©ments.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'Vous avez $1 Ă©lĂ©ments dans le presse-papier.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'Recherche incrĂ©mentale disponible uniquement pour la vue active.', // from v2.1.13 added 6.30.2016 'reinstate' : 'RĂ©tablir', // from v2.1.15 added 3.8.2016 'complete' : '$1 complĂ©tĂ©', // from v2.1.15 added 21.8.2016 'contextmenu' : 'Menu contextuel', // from v2.1.15 added 9.9.2016 'pageTurning' : 'Tourner la page', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'Volumes principaux', // from v2.1.16 added 16.9.2016 'reset' : 'RĂ©initialiser', // from v2.1.16 added 1.10.2016 'bgcolor' : 'Couleur de fond', // from v2.1.16 added 1.10.2016 'colorPicker' : 'SĂ©lecteur de couleur', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'Grille 8px', // from v2.1.16 added 4.10.2016 'enabled' : 'Actif', // from v2.1.16 added 4.10.2016 'disabled' : 'Inactif', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'Aucun rĂ©sultat trouvĂ©.\\Appuyez sur [EntrĂ©e] pour dĂ©velopper la cible de recherche.', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'Aucun rĂ©sultat trouvĂ© pour la recherche par premiĂšre lettre.', // from v2.1.23 added 24.3.2017 'textLabel' : 'Label texte', // from v2.1.17 added 13.10.2016 'minsLeft' : '$1 mins restantes', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'RĂ©ouvrir avec l\'encodage sĂ©lectionnĂ©', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'Sauvegarder avec l\'encodage sĂ©lectionnĂ©', // from v2.1.19 added 2.12.2016 'selectFolder' : 'Choisir le dossier', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'Recherche par premiĂšre lettre', // from v2.1.23 added 24.3.2017 'presets' : 'PrĂ©sĂ©lections', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'Impossible de mettre autant d\'Ă©lĂ©ments Ă  la corbeille.', // from v2.1.25 added 9.6.2017 'TextArea' : 'Zone de texte', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'Vider le dossier "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : 'Il n\'y a pas d\'Ă©lĂ©ment dans le dossier "$1".', // from v2.1.25 added 22.6.2017 'preference' : 'PrĂ©fĂ©rences', // from v2.1.26 added 28.6.2017 'language' : 'Configuration de langue', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'Initialisation des configurations sauvegardĂ©es dans ce navigateur', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'ParamĂštres de la barre d\'outils', // from v2.1.27 added 2.8.2017 'charsLeft' : '... $1 caractĂšre(s) restant(s).', // from v2.1.29 added 30.8.2017 'linesLeft' : '... $1 ligne(s) restante(s).', // from v2.1.52 added 16.1.2020 'sum' : 'Somme', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'Taille de fichier brute', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'Concentrez-vous sur l\'Ă©lĂ©ment de dialogue avec le survol de la souris', // from v2.1.30 added 2.11.2017 'select' : 'SĂ©lectionner', // from v2.1.30 added 23.11.2017 'selectAction' : 'Action lors de la sĂ©lection d\'un fichier', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'Ouvrir avec le dernier Ă©diteur utilisĂ©', // from v2.1.30 added 23.11.2017 'selectinvert' : 'Inverser la sĂ©lection', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'Êtes-vous sĂ»r de vouloir renommer les Ă©lĂ©ments sĂ©lectionnĂ©s $1 en $2 ?
      L\'action est dĂ©finitive !', // from v2.1.31 added 4.12.2017 'batchRename' : 'Renommer le Batch', // from v2.1.31 added 8.12.2017 'plusNumber' : '+ Nombre', // from v2.1.31 added 8.12.2017 'asPrefix' : 'Ajouter un prĂ©fixe', // from v2.1.31 added 8.12.2017 'asSuffix' : 'Ajouter un suffixe', // from v2.1.31 added 8.12.2017 'changeExtention' : 'Modifier l\'extention', // from v2.1.31 added 8.12.2017 'columnPref' : 'ParamĂštres des colonnes (List view)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'Les changements seront immĂ©diatement appliquĂ©s Ă  l\'archive.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'Aucun changement ne sera appliquĂ© tant que ce volume n\'a pas Ă©tĂ© dĂ©montĂ©.', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'Le(s) volume(s) suivant(s) montĂ©s sur ce volume seront Ă©galement dĂ©montĂ©s. Êtes-vous sĂ»r de vouloir le dĂ©monter ?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'Informations sur la sĂ©lection', // from v2.1.33 added 7.3.2018 'hashChecker' : 'Algorithme de hachage de fichier', // from v2.1.33 added 10.3.2018 'infoItems' : 'ÉlĂ©ments d\'information (panneau de sĂ©lection d\'informations )', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'Appuyez Ă  nouveau pour quitter.', // from v2.1.38 added 1.4.2018 'toolbar' : 'Barre d\'outils', // from v2.1.38 added 4.4.2018 'workspace' : 'Espace de travail', // from v2.1.38 added 4.4.2018 'dialog' : 'Dialogue', // from v2.1.38 added 4.4.2018 'all' : 'Tout', // from v2.1.38 added 4.4.2018 'iconSize' : 'Dimensions de l\'icĂŽne (Aperçu)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'Ouvrir la fenĂȘtre d\'Ă©dition Ă  la taille maximale', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : 'Étant donnĂ© que la conversion par API n\'est pas disponible actuellement, veuillez effectuer la conversion sur le site Web.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'AprĂšs la conversion, vous devez ajouter l\'URL de l\'Ă©lĂ©ment ou un fichier tĂ©lĂ©chargĂ© pour enregistrer le fichier converti.', //from v2.1.40 added 8.7.2018 'convertOn' : 'Convertir sur le site de $1', // from v2.1.40 added 10.7.2018 'integrations' : 'IntĂ©grations', // from v2.1.40 added 11.7.2018 'integrationWith' : 'Cet elFinder intĂšgre les services externes suivants. Veuillez vĂ©rifier les conditions d\'utilisation, la politique de confidentialitĂ©, etc. avant de l\'utiliser.', // from v2.1.40 added 11.7.2018 'showHidden' : 'Afficher les Ă©lĂ©ment cachĂ©s', // from v2.1.41 added 24.7.2018 'hideHidden' : 'Ne pas afficher les Ă©lĂ©ment cachĂ©s', // from v2.1.41 added 24.7.2018 'toggleHidden' : 'Afficher/Cacher les Ă©lĂ©ments cachĂ©s', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'Type de ficher autorisĂ© avec "Nouveau fichier"', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'Type du fichier de texte', // from v2.1.41 added 7.8.2018 'add' : 'Ajouter', // from v2.1.41 added 7.8.2018 'theme' : 'ThĂšme', // from v2.1.43 added 19.10.2018 'default' : 'Par DĂ©faut', // from v2.1.43 added 19.10.2018 'description' : 'Description', // from v2.1.43 added 19.10.2018 'website' : 'Site Web', // from v2.1.43 added 19.10.2018 'author' : 'Aauteur', // from v2.1.43 added 19.10.2018 'email' : 'E-mail', // from v2.1.43 added 19.10.2018 'license' : 'License', // from v2.1.43 added 19.10.2018 'exportToSave' : 'Cet Ă©lĂ©ment ne peut ĂȘtre enregistrer. Pour Ă©viter de perdre les modifications, vous devez exporter vers votre ordinateur.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'Double-cliquez sur le fichier pour le sĂ©lectionner.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'Utiliser le mode plein Ă©cran', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'Inconnu', 'kindRoot' : 'Volume principal', // from v2.1.16 added 16.10.2016 'kindFolder' : 'Dossier', 'kindSelects' : 'SĂ©lections', // from v2.1.29 added 29.8.2017 'kindAlias' : 'Raccourci', 'kindAliasBroken' : 'Raccourci cassĂ©', // applications 'kindApp' : 'Application', 'kindPostscript' : 'Document Postscript', 'kindMsOffice' : 'Document Microsoft Office', 'kindMsWord' : 'Document Microsoft Word', 'kindMsExcel' : 'Document Microsoft Excel', 'kindMsPP' : 'PrĂ©sentation Microsoft PowerPoint', 'kindOO' : 'Document OpenOffice', 'kindAppFlash' : 'Application Flash', 'kindPDF' : 'Format de document portable (PDF)', 'kindTorrent' : 'Fichier BitTorrent', 'kind7z' : 'Archive 7z', 'kindTAR' : 'Archive TAR', 'kindGZIP' : 'Archive GZIP', 'kindBZIP' : 'Archive BZIP', 'kindXZ' : 'Archive XZ', 'kindZIP' : 'Archive ZIP', 'kindRAR' : 'Archive RAR', 'kindJAR' : 'Fichier Java JAR', 'kindTTF' : 'Police True Type', 'kindOTF' : 'Police Open Type', 'kindRPM' : 'Package RPM', // texts 'kindText' : 'Document Text', 'kindTextPlain' : 'Texte non formatĂ©', 'kindPHP' : 'Source PHP', 'kindCSS' : 'Feuille de style en cascade', 'kindHTML' : 'Document HTML', 'kindJS' : 'Source JavaScript', 'kindRTF' : 'Format de texte enrichi (Rich Text Format)', 'kindC' : 'Source C', 'kindCHeader' : 'Source header C', 'kindCPP' : 'Source C++', 'kindCPPHeader' : 'Source header C++', 'kindShell' : 'Shell script Unix', 'kindPython' : 'Source Python', 'kindJava' : 'Source Java', 'kindRuby' : 'Source Ruby', 'kindPerl' : 'Script Perl', 'kindSQL' : 'Source SQL', 'kindXML' : 'Document XML', 'kindAWK' : 'Source AWK', 'kindCSV' : 'CSV', 'kindDOCBOOK' : 'Document Docbook XML', 'kindMarkdown' : 'Markdown text', // added 20.7.2015 // images 'kindImage' : 'Image', 'kindBMP' : 'Image BMP', 'kindJPEG' : 'Image JPEG', 'kindGIF' : 'Image GIF', 'kindPNG' : 'Image PNG', 'kindTIFF' : 'Image TIFF', 'kindTGA' : 'Image TGA', 'kindPSD' : 'Image Adobe Photoshop', 'kindXBITMAP' : 'Image X bitmap', 'kindPXM' : 'Image Pixelmator', // media 'kindAudio' : 'Son', 'kindAudioMPEG' : 'Son MPEG', 'kindAudioMPEG4' : 'Son MPEG-4', 'kindAudioMIDI' : 'Son MIDI', 'kindAudioOGG' : 'Son Ogg Vorbis', 'kindAudioWAV' : 'Son WAV', 'AudioPlaylist' : 'Liste de lecture audio', 'kindVideo' : 'VidĂ©o', 'kindVideoDV' : 'VidĂ©o DV', 'kindVideoMPEG' : 'VidĂ©o MPEG', 'kindVideoMPEG4' : 'VidĂ©o MPEG-4', 'kindVideoAVI' : 'VidĂ©o AVI', 'kindVideoMOV' : 'VidĂ©o Quick Time', 'kindVideoWM' : 'VidĂ©o Windows Media', 'kindVideoFlash' : 'VidĂ©o Flash', 'kindVideoMKV' : 'VidĂ©o Matroska', 'kindVideoOGG' : 'VidĂ©o Ogg' } }; })); application/library/js/i18n/elfinder.zh_CN.js000064400000077114147577724760015100 0ustar00/** * çź€äœ“äž­æ–‡ translation * @author çż»èŻ‘è€… deerchao * @author Andy Hu * @author Max Wen * @author Kejun Chang * @author LDMING * @author Andy Lee * @author Cololi * @version 2020-04-07 */ (function(root, factory) { if (typeof define === 'function' && define.amd) { define(['elfinder'], factory); } else if (typeof exports !== 'undefined') { module.exports = factory(require('elfinder')); } else { factory(root.elFinder); } }(this, function(elFinder) { elFinder.prototype.i18.zh_CN = { translator : 'çż»èŻ‘è€… deerchao <deerchao@gmail.com>, Andy Hu <andyhu7@yahoo.com.hk>, Max Wen<max.wen@qq.com>, Kejun Chang <changkejun@hotmail.com>, LDMING <china-live@live.cn>, Andy Lee <oraclei@126.com>, Cololi <i@cololi.moe>', language : 'çź€äœ“äž­æ–‡', direction : 'ltr', dateFormat : 'Y-m-d H:i', // will show like: 2020-04-07 14:53 fancyDateFormat : '$1 H:i', // will show like: 今怩 14:53 nonameDateFormat : 'ymd-His', // noname upload will show like: 200407-145300 messages : { /********************************** errors **********************************/ 'error' : 'é”™èŻŻ', 'errUnknown' : 'æœȘçŸ„çš„é”™èŻŻ.', 'errUnknownCmd' : 'æœȘçŸ„çš„ć‘œä»€.', 'errJqui' : '无效的 jQuery UI é…çœź,ćż…éĄ»ćŒ…ć« Selectable、draggable ä»„ćŠ droppable 组件.', 'errNode' : 'elFinder éœ€èŠèƒœćˆ›ć»ș DOM 慃箠.', 'errURL' : '无效的 elFinder é…çœź! URL 选éĄčæœȘé…çœź.', 'errAccess' : 'èźżé—źèą«æ‹’ç».', 'errConnect' : 'äžèƒœèżžæŽ„ćˆ°æœćŠĄć™šç«Ż.', 'errAbort' : 'èżžæŽ„äž­æ­ą.', 'errTimeout' : 'èżžæŽ„è¶…æ—¶.', 'errNotFound' : 'æœȘæ‰Ÿćˆ°æœćŠĄć™šç«Ż.', 'errResponse' : 'æ— æ•ˆçš„æœćŠĄć™šç«Żć“ćș”.', 'errConf' : 'æ— æ•ˆçš„æœćŠĄć™šç«Żé…çœź.', 'errJSON' : 'PHP JSON æšĄć—æœȘćź‰èŁ….', 'errNoVolumes' : 'æ— ćŻèŻ»çš„ć·.', 'errCmdParams' : 'æ— æ•ˆçš„ć‘œä»€ "$1".', 'errDataNotJSON' : 'æœćŠĄć™šèż”ć›žçš„æ•°æźäžçŹŠćˆ JSON æ ŒćŒ.', 'errDataEmpty' : 'æœćŠĄć™šèż”ć›žçš„æ•°æźäžșç©ș.', 'errCmdReq' : 'æœćŠĄć™šç«ŻèŻ·æ±‚éœ€èŠć‘œä»€ćç§°.', 'errOpen' : 'æ— æł•æ‰“ćŒ€ "$1".', 'errNotFolder' : 'ćŻčè±Ąäžæ˜Żæ–‡ä»¶ć€č.', 'errNotFile' : 'ćŻčè±Ąäžæ˜Żæ–‡ä»¶.', 'errRead' : 'æ— æł•èŻ»ć– "$1".', 'errWrite' : 'æ— æł•ć†™ć…„ "$1".', 'errPerm' : 'æČĄæœ‰æƒé™.', 'errLocked' : '"$1" ć·Čèą«é”ćźš,äžèƒœé‡ć‘œć, ç§»ćŠšæˆ–ćˆ é™€.', 'errExists' : '文件 "$1" ć·Čç»ć­˜ćœš.', 'errInvName' : 'æ— æ•ˆçš„æ–‡ä»¶ć.', 'errInvDirname' : '无效的文件ć€č損.', // from v2.1.24 added 12.4.2017 'errFolderNotFound' : '文件ć€č侍歘朹.', 'errFileNotFound' : 'æ–‡ä»¶äžć­˜ćœš.', 'errTrgFolderNotFound' : 'æœȘæ‰Ÿćˆ°ç›źæ ‡æ–‡ä»¶ć€č "$1".', 'errPopup' : 'æ”è§ˆć™šæ‹ŠæˆȘäș†ćŒčć‡șçȘ—揣. èŻ·ćœšé€‰éĄčäž­ć…èźžćŒčć‡șçȘ—揣.', 'errMkdir' : 'äžèƒœćˆ›ć»ș文件ć€č "$1".', 'errMkfile' : 'äžèƒœćˆ›ć»ș文件 "$1".', 'errRename' : 'äžèƒœé‡ć‘œć "$1".', 'errCopyFrom' : 'äžć…èźžä»Žć· "$1" ć€ćˆ¶.', 'errCopyTo' : 'äžć…èźžć‘ć· "$1" ć€ćˆ¶.', 'errMkOutLink' : 'æ— æł•ćˆ›ć»șé“ŸæŽ„ćˆ°ć·æ čä»„ć€–çš„é“ŸæŽ„.', // from v2.1 added 03.10.2015 'errUpload' : '䞊䌠ć‡ș错.', // old name - errUploadCommon 'errUploadFile' : 'æ— æł•äžŠäŒ  "$1".', // old name - errUpload 'errUploadNoFiles' : 'æœȘæ‰Ÿćˆ°èŠäžŠäŒ çš„æ–‡ä»¶.', 'errUploadTotalSize' : 'æ•°æźè¶…èż‡äș†ć…èźžçš„æœ€ć€§ć€§ć°.', // old name - errMaxSize 'errUploadFileSize' : 'æ–‡ä»¶è¶…èż‡äș†ć…èźžçš„æœ€ć€§ć€§ć°.', // old name - errFileMaxSize 'errUploadMime' : 'äžć…èźžçš„æ–‡ä»¶ç±»ćž‹.', 'errUploadTransfer' : '"$1" äŒ èŸ“é”™èŻŻ.', 'errUploadTemp' : 'æ— æł•äžșäžŠäŒ æ–‡ä»¶ćˆ›ć»ș䞎时文件.', // from v2.1 added 26.09.2015 'errNotReplace' : ' "$1" ć·Č歘朹, äžèƒœèą«æ›żæą.', // new 'errReplace' : 'æ— æł•æ›żæą "$1".', 'errSave' : 'æ— æł•äżć­˜ "$1".', 'errCopy' : 'æ— æł•ć€ćˆ¶ "$1".', 'errMove' : 'æ— æł•ç§»ćŠš "$1".', 'errCopyInItself' : 'äžèƒœç§»ćŠš "$1" ćˆ°ćŽŸæœ‰äœçœź.', 'errRm' : 'æ— æł•ćˆ é™€ "$1".', 'errTrash' : 'æ— æł•ç§»ćˆ°ć›žæ”¶ç«™.', // from v2.1.24 added 30.4.2017 'errRmSrc' : 'äžèƒœćˆ é™€æșæ–‡ä»¶.', 'errExtract' : 'æ— æł•ä»Ž "$1" æć–æ–‡ä»¶.', 'errArchive' : 'æ— æł•ćˆ›ć»șćŽ‹çŒ©ćŒ….', 'errArcType' : 'äžæ”ŻæŒçš„ćŽ‹çŒ©æ ŒćŒ.', 'errNoArchive' : 'æ–‡ä»¶äžæ˜ŻćŽ‹çŒ©ćŒ…, æˆ–è€…äžæ”ŻæŒèŻ„ćŽ‹çŒ©æ ŒćŒ.', 'errCmdNoSupport' : 'æœćŠĄć™šç«Żäžæ”ŻæŒèŻ„ć‘œä»€.', 'errReplByChild' : '䞍胜甚文件ć€č “$1” 例的éĄčæ›żæąæ–‡ä»¶ć€č “$1” è‡Șèș«.', 'errArcSymlinks' : 'ć‡șäșŽćź‰ć…šäžŠçš„è€ƒè™‘ïŒŒäžć…èźžè§ŁćŽ‹ćŒ…ć«çŹŠć·é“ŸæŽ„çš„ćŽ‹çŒ©ćŒ….', // edited 24.06.2012 'errArcMaxSize' : 'ćŽ‹çŒ©ćŒ…æ–‡ä»¶è¶…èż‡æœ€ć€§ć…èźžæ–‡ä»¶ć€§ć°èŒƒć›Ž.', 'errResize' : 'æ— æł•ć°†è°ƒæ•Žć€§ć°ćˆ° "$1".', 'errResizeDegree' : 'æ— æ•ˆçš„æ—‹èœŹè§’ćșŠ.', // added 7.3.2013 'errResizeRotate' : 'æ— æł•æ—‹èœŹć›Ÿç‰‡.', // added 7.3.2013 'errResizeSize' : 'æ— æ•ˆçš„ć›Ÿç‰‡ć°ș毞.', // added 7.3.2013 'errResizeNoChange' : 'ć›Ÿç‰‡ć°ș毞æœȘæ”č揘.', // added 7.3.2013 'errUsupportType' : 'äžèą«æ”ŻæŒçš„æ–‡ä»¶æ ŒćŒ.', 'errNotUTF8Content' : '文件 "$1" äžæ˜Ż UTF-8 æ ŒćŒ, 䞍胜猖蟑.', // added 9.11.2011 'errNetMount' : 'æ— æł•èŁ…èœœ "$1".', // added 17.04.2012 'errNetMountNoDriver' : 'äžæ”ŻæŒèŻ„ćèźź.', // added 17.04.2012 'errNetMountFailed' : 'èŁ…èœœć€±èŽ„.', // added 17.04.2012 'errNetMountHostReq' : 'éœ€èŠæŒ‡ćźšäž»æœș.', // added 18.04.2012 'errSessionExpires' : 'æ‚šçš„äŒšèŻç”±äșŽé•żæ—¶é—ŽæœȘæŽ»ćŠšć·Čèż‡æœŸ.', 'errCreatingTempDir' : 'æ— æł•ćˆ›ć»șäžŽæ—¶ç›źćœ• "$1"', 'errFtpDownloadFile' : 'æ— æł•ä»ŽFTP䞋蜜文件 "$1" ', 'errFtpUploadFile' : 'æ— æł•ć°†æ–‡ä»¶ "$1" äžŠäŒ è‡łFTP', 'errFtpMkdir' : 'æ— æł•ćœšFTP侊戛ć»șèżœçš‹ç›źćœ• "$1"', 'errArchiveExec' : 'ćœ’æĄŁæ–‡ä»¶"$1"时ć‡ș错.', 'errExtractExec' : 'è§ŁćŽ‹æ–‡ä»¶"$1"时ć‡ș错.', 'errNetUnMount' : 'æ— æł•ćžèœœ.', // from v2.1 added 30.04.2012 'errConvUTF8' : 'æœȘèœŹæąè‡łUTF-8', // from v2.1 added 08.04.2014 'errFolderUpload' : 'ćŠ‚æžœæ‚šéœ€èŠäžŠäŒ ç›źćœ•, èŻ·ć°èŻ•äœżç”šGoogle Chrome.', // from v2.1 added 26.6.2015 'errSearchTimeout' : 'æœçŽą "$1" 超时,仅星ç€șéƒšćˆ†æœçŽąç»“æžœ.', // from v2.1 added 12.1.2016 'errReauthRequire' : 'ćż…éœ€é‡æ–°æŽˆæƒ.', // from v2.1.10 added 24.3.2016 'errMaxTargets' : 'æœ€ć€§ćŻé€‰æ‹©éĄčç›źæ•°äžș $1.', // from v2.1.17 added 17.10.2016 'errRestore' : 'æ— æł•ä»Žć›žæ”¶ç«™äž­æąć€ïŒŒæ— æł•èŻ†ćˆ«èż˜ćŽŸç›źçš„ćœ°.', // from v2.1.24 added 3.5.2017 'errEditorNotFound' : 'æ‰Ÿäžćˆ°èż™äžȘæ–‡ä»¶çš„çŒ–èŸ‘ć™š.', // from v2.1.25 added 23.5.2017 'errServerError' : 'æœćŠĄç«Żć‘ç”Ÿé”™èŻŻ.', // from v2.1.25 added 16.6.2017 'errEmpty' : 'æ— æł•æž…ç©ș文件ć€č "$1".', // from v2.1.25 added 22.6.2017 'moreErrors' : '歘朹 $1 怚äžȘé”™èŻŻ.', // from v2.1.44 added 9.12.2018 /******************************* commands names ********************************/ 'cmdarchive' : '戛ć»șćŽ‹çŒ©ćŒ…', 'cmdback' : '搎退', 'cmdcopy' : 'ć€ćˆ¶', 'cmdcut' : 'ć‰Ș戇', 'cmddownload' : '䞋蜜', 'cmdduplicate' : '戛ć»șć‰ŻæœŹ', 'cmdedit' : '猖蟑文件', 'cmdextract' : 'ä»ŽćŽ‹çŒ©ćŒ…æć–æ–‡ä»¶', 'cmdforward' : 'ć‰èż›', 'cmdgetfile' : '选择文件', 'cmdhelp' : '慳äșŽ', 'cmdhome' : '銖饔', 'cmdinfo' : 'æŸ„çœ‹èŻŠæƒ…', 'cmdmkdir' : '新ć»ș文件ć€č', 'cmdmkdirin' : 'è‡łæ–°æ–‡ä»¶ć€č', // from v2.1.7 added 19.2.2016 'cmdmkfile' : '新ć»ș文件', 'cmdopen' : 'æ‰“ćŒ€', 'cmdpaste' : 'çČ˜èŽŽ', 'cmdquicklook' : 'éą„è§ˆ', 'cmdreload' : 'ćˆ·æ–°', 'cmdrename' : 'é‡ć‘œć', 'cmdrm' : 'ćˆ é™€', 'cmdtrash' : 'è‡łć›žæ”¶ç«™', //from v2.1.24 added 29.4.2017 'cmdrestore' : 'æąć€', //from v2.1.24 added 3.5.2017 'cmdsearch' : '柄扟文件', 'cmdup' : 'èœŹćˆ°äžŠäž€çș§æ–‡ä»¶ć€č', 'cmdupload' : '䞊䌠文件', 'cmdview' : '柄看', 'cmdresize' : 'è°ƒæ•Žć€§ć°&æ—‹èœŹ', 'cmdsort' : '排ćș', 'cmdnetmount' : 'èŁ…èœœçœ‘ç»œć·', // added 18.04.2012 'cmdnetunmount': 'ćžèœœ', // from v2.1 added 30.04.2012 'cmdplaces' : 'æ·»ćŠ ćˆ°æ”¶è—ć€č', // added 28.12.2014 'cmdchmod' : 'æ”čć˜æšĄćŒ', // from v2.1 added 20.6.2015 'cmdopendir' : 'æ‰“ćŒ€æ–‡ä»¶ć€č', // from v2.1 added 13.1.2016 'cmdcolwidth' : 'èźŸçœźćˆ—ćźœ', // from v2.1.13 added 12.06.2016 'cmdfullscreen': 'ć…šć±æ˜Ÿç€ș', // from v2.1.15 added 03.08.2016 'cmdmove' : '移抚', // from v2.1.15 added 21.08.2016 'cmdempty' : 'æž…ç©ș文件ć€č', // from v2.1.25 added 22.06.2017 'cmdundo' : '撀消', // from v2.1.27 added 31.07.2017 'cmdredo' : '重恚', // from v2.1.27 added 31.07.2017 'cmdpreference': 'ćć„œ', // from v2.1.27 added 03.08.2017 'cmdselectall' : '慹选', // from v2.1.28 added 15.08.2017 'cmdselectnone': '慹侍选', // from v2.1.28 added 15.08.2017 'cmdselectinvert': 'ćć‘é€‰æ‹©', // from v2.1.28 added 15.08.2017 'cmdopennew' : 'ćœšæ–°çȘ—ćŁæ‰“ćŒ€', // from v2.1.38 added 3.4.2018 'cmdhide' : '隐藏 (ćć„œ)', // from v2.1.41 added 24.7.2018 /*********************************** buttons ***********************************/ 'btnClose' : '慳闭', 'btnSave' : '保歘', 'btnRm' : 'ćˆ é™€', 'btnApply' : 'ćș”甚', 'btnCancel' : 'ć–æ¶ˆ', 'btnNo' : '搊', 'btnYes' : 'æ˜Ż', 'btnMount' : 'èŁ…èœœ', // added 18.04.2012 'btnApprove': 'è‡ł $1 ćč¶çĄźèź€', // from v2.1 added 26.04.2012 'btnUnmount': 'ćžèœœ', // from v2.1 added 30.04.2012 'btnConv' : 'èœŹæą', // from v2.1 added 08.04.2014 'btnCwd' : 'èż™é‡Œ', // from v2.1 added 22.5.2015 'btnVolume' : 'ć·', // from v2.1 added 22.5.2015 'btnAll' : '慹郹', // from v2.1 added 22.5.2015 'btnMime' : 'MIME类枋', // from v2.1 added 22.5.2015 'btnFileName':'æ–‡ä»¶ć', // from v2.1 added 22.5.2015 'btnSaveClose': '保歘ćč¶ć…łé—­', // from v2.1 added 12.6.2015 'btnBackup' : 'ć€‡ä»œ', // fromv2.1 added 28.11.2015 'btnRename' : 'é‡ć‘œć', // from v2.1.24 added 6.4.2017 'btnRenameAll' : 'é‡ć‘œć(All)', // from v2.1.24 added 6.4.2017 'btnPrevious' : '搑才 ($1/$2)', // from v2.1.24 added 11.5.2017 'btnNext' : '搑搎 ($1/$2)', // from v2.1.24 added 11.5.2017 'btnSaveAs' : '揩歘äžș', // from v2.1.25 added 24.5.2017 /******************************** notifications ********************************/ 'ntfopen' : 'æ‰“ćŒ€æ–‡ä»¶ć€č', 'ntffile' : 'æ‰“ćŒ€æ–‡ä»¶', 'ntfreload' : 'ćˆ·æ–°æ–‡ä»¶ć€č憅ćźč', 'ntfmkdir' : '戛ć»ș文件ć€č', 'ntfmkfile' : '戛ć»ș文件', 'ntfrm' : 'ćˆ é™€æ–‡ä»¶', 'ntfcopy' : 'ć€ćˆ¶æ–‡ä»¶', 'ntfmove' : 'ç§»ćŠšæ–‡ä»¶', 'ntfprepare' : 'ć‡†ć€‡ć€ćˆ¶æ–‡ä»¶', 'ntfrename' : 'é‡ć‘œćæ–‡ä»¶', 'ntfupload' : '䞊䌠文件', 'ntfdownload' : '䞋蜜文件', 'ntfsave' : 'äżć­˜æ–‡ä»¶', 'ntfarchive' : '戛ć»șćŽ‹çŒ©ćŒ…', 'ntfextract' : 'ä»ŽćŽ‹çŒ©ćŒ…æć–æ–‡ä»¶', 'ntfsearch' : 'æœçŽąæ–‡ä»¶', 'ntfresize' : 'æ­Łćœšæ›Žæ”čć°ș毞', 'ntfsmth' : 'æ­Łćœšćż™ >_<', 'ntfloadimg' : 'æ­ŁćœšćŠ èœœć›Ÿç‰‡', 'ntfnetmount' : 'æ­ŁćœšèŁ…èœœçœ‘ç»œć·', // added 18.04.2012 'ntfnetunmount': 'ćžèœœçœ‘ç»œć·', // from v2.1 added 30.04.2012 'ntfdim' : 'èŽ·ć–ć›Ÿćƒć°ș毞', // added 20.05.2013 'ntfreaddir' : 'æ­ŁćœšèŻ»ć–æ–‡ä»¶ć€čäżĄæŻ', // from v2.1 added 01.07.2013 'ntfurl' : 'æ­ŁćœšèŽ·ć–é“ŸæŽ„ćœ°ć€', // from v2.1 added 11.03.2014 'ntfchmod' : 'æ­Łćœšæ”čć˜æ–‡ä»¶æšĄćŒ', // from v2.1 added 20.6.2015 'ntfpreupload': 'æ­ŁćœšéȘŒèŻäžŠäŒ æ–‡ä»¶ć', // from v2.1 added 31.11.2015 'ntfzipdl' : 'æ­Łćœšćˆ›ć»ș侀äžȘ䞋蜜文件', // from v2.1.7 added 23.1.2016 'ntfparents' : 'æ­Łćœšć–ćŸ—è·ŻćŸ„äżĄæŻ', // from v2.1.17 added 2.11.2016 'ntfchunkmerge': 'æ­Łćœšć€„ç†äžŠäŒ æ–‡ä»¶', // from v2.1.17 added 2.11.2016 'ntftrash' : 'ç§»ćŠšćˆ°ć›žæ”¶ç«™', // from v2.1.24 added 2.5.2017 'ntfrestore' : 'ä»Žć›žæ”¶ç«™æąć€', // from v2.1.24 added 3.5.2017 'ntfchkdir' : 'æŁ€æŸ„ç›źæ ‡æ–‡ä»¶ć€č', // from v2.1.24 added 3.5.2017 'ntfundo' : '撀消䞊䞀äžȘć…šć±€æ“äœœ', // from v2.1.27 added 31.07.2017 'ntfredo' : 'é‡ćšäžŠäž€ć…šć±€æ“äœœ', // from v2.1.27 added 31.07.2017 'ntfchkcontent' : 'æŁ€æŸ„ć†…ćźč', // from v2.1.41 added 3.8.2018 /*********************************** volumes *********************************/ 'volume_Trash' : 'ć›žæ”¶ç«™', //from v2.1.24 added 29.4.2017 /************************************ dates **********************************/ 'dateUnknown' : 'æœȘ矄', 'Today' : '今怩', 'Yesterday' : 'æ˜šć€©', 'msJan' : '䞀月', 'msFeb' : 'äșŒæœˆ', 'msMar' : '䞉月', 'msApr' : 'ć››æœˆ', 'msMay' : 'äș”月', 'msJun' : 'ć…­æœˆ', 'msJul' : '䞃月', 'msAug' : 'ć…«æœˆ', 'msSep' : 'äčæœˆ', 'msOct' : 'ćæœˆ', 'msNov' : 'ćäž€æœˆ', 'msDec' : '捁äșŒæœˆ', 'January' : '䞀月', 'February' : 'äșŒæœˆ', 'March' : '䞉月', 'April' : 'ć››æœˆ', 'May' : 'äș”月', 'June' : 'ć…­æœˆ', 'July' : '䞃月', 'August' : 'ć…«æœˆ', 'September' : 'äčæœˆ', 'October' : 'ćæœˆ', 'November' : 'ćäž€æœˆ', 'December' : '捁äșŒæœˆ', 'Sunday' : '星期旄', 'Monday' : '星期䞀', 'Tuesday' : '星期äșŒ', 'Wednesday' : '星期䞉', 'Thursday' : 'æ˜ŸæœŸć››', 'Friday' : '星期äș”', 'Saturday' : 'æ˜ŸæœŸć…­', 'Sun' : 'ć‘šæ—„', 'Mon' : '摹侀', 'Tue' : '摹äșŒ', 'Wed' : '摹侉', 'Thu' : '摹曛', 'Fri' : '摹äș”', 'Sat' : '摹慭', /******************************** sort variants ********************************/ 'sortname' : 'æŒ‰ćç§°', 'sortkind' : 'æŒ‰ç±»ćž‹', 'sortsize' : 'æŒ‰ć€§ć°', 'sortdate' : '按旄期', 'sortFoldersFirst' : '文件ć€čäŒ˜ć…ˆ', 'sortperm' : '按权限排ćș', // from v2.1.13 added 13.06.2016 'sortmode' : 'æŒ‰ć±žæ€§æŽ’ćș', // from v2.1.13 added 13.06.2016 'sortowner' : '按所有者排ćș', // from v2.1.13 added 13.06.2016 'sortgroup' : '按组排ćș', // from v2.1.13 added 13.06.2016 'sortAlsoTreeview' : 'ćŒæ—¶ćˆ·æ–°æ ‘çŠ¶ç›źćœ•', // from v2.1.15 added 01.08.2016 /********************************** new items **********************************/ 'untitled file.txt' : '新文件.txt', // added 10.11.2015 'untitled folder' : '新文件ć€č', // added 10.11.2015 'Archive' : 'æ–°ćŽ‹çŒ©ćŒ…', // from v2.1 added 10.11.2015 'untitled file' : '新文件.$1', // from v2.1.41 added 6.8.2018 'extentionfile' : '$1: 文件', // from v2.1.41 added 6.8.2018 'extentiontype' : '$1: $2', // from v2.1.43 added 17.10.2018 /********************************** messages **********************************/ 'confirmReq' : 'èŻ·çĄźèź€', 'confirmRm' : 'çĄźćźšèŠćˆ é™€æ–‡ä»¶ć—?
      èŻ„æ“äœœäžćŻæ’€é”€!', 'confirmRepl' : 'ç”šæ–°çš„æ–‡ä»¶æ›żæąćŽŸæœ‰æ–‡ä»¶?', 'confirmRest' : 'ä»Žć›žæ”¶ç«™æ›żæąćœ“ć‰éĄč?', // fromv2.1.24 added 5.5.2017 'confirmConvUTF8' : 'æ–‡ä»¶äžæ˜ŻUTF-8æ ŒćŒ.
      èœŹæąäžșUTF-8ć—ïŒŸ
      é€šèż‡ćœšèœŹæąćŽäżć­˜,憅ćźč揘äžșUTF-8.', // from v2.1 added 08.04.2014 'confirmNonUTF8' : 'æ— æł•æŁ€æ”‹ćˆ°æ­€æ–‡ä»¶çš„ć­—çŹŠçŒ–ç .éœ€èŠæš‚æ—¶èœŹæąæ­€æ–‡ä»¶äžșUTF-8çŒ–ç ä»„èż›èĄŒçŒ–èŸ‘.
      èŻ·é€‰æ‹©æ­€æ–‡ä»¶çš„ć­—çŹŠçŒ–ç .', // from v2.1.19 added 28.11.2016 'confirmNotSave' : '文件ć·Čèą«çŒ–èŸ‘.
      ćŠ‚æžœäžäżć­˜ç›ŽæŽ„ć…łé—­,ć°†äžąć€±çŒ–èŸ‘ć†…ćźč.', // from v2.1 added 15.7.2015 'confirmTrash' : 'çĄźćźšèŠć°†èŻ„éĄčç§»ćŠšćˆ°ć›žæ”¶ç«™äčˆ?', //from v2.1.24 added 29.4.2017 'confirmMove' : 'çĄźćźšèŠç§»ćŠšèŻ„éĄč戰 "$1"?', //from v2.1.50 added 27.7.2019 'apllyAll' : '慹郹ćș”甚', 'name' : '損称', 'size' : 'ć€§ć°', 'perms' : '权限', 'modify' : 'äżźæ”čäșŽ', 'kind' : '类戫', 'read' : 'èŻ»ć–', 'write' : '憙慄', 'noaccess' : '无权限', 'and' : '撌', 'unknown' : 'æœȘ矄', 'selectall' : '选择所有文件', 'selectfiles' : '选择文件', 'selectffile' : 'é€‰æ‹©çŹŹäž€äžȘ文件', 'selectlfile' : 'é€‰æ‹©æœ€ćŽäž€äžȘ文件', 'viewlist' : 'ćˆ—èĄšè§†ć›Ÿ', 'viewicons' : 'ć›Ÿæ ‡è§†ć›Ÿ', 'viewSmall' : 'ć°ć›Ÿæ ‡', // from v2.1.39 added 22.5.2018 'viewMedium' : 'äž­ć›Ÿæ ‡', // from v2.1.39 added 22.5.2018 'viewLarge' : 'ć€§ć›Ÿæ ‡', // from v2.1.39 added 22.5.2018 'viewExtraLarge' : 'è¶…ć€§ć›Ÿæ ‡', // from v2.1.39 added 22.5.2018 'places' : 'äœçœź', 'calc' : 'èźĄçź—', 'path' : 'è·ŻćŸ„', 'aliasfor' : 'ćˆ«ć', 'locked' : '锁漚', 'dim' : 'ć°ș毞', 'files' : '文件', 'folders' : '文件ć€č', 'items' : 'éĄč盼', 'yes' : 'æ˜Ż', 'no' : '搊', 'link' : '铟掄', 'searcresult' : 'æœçŽąç»“æžœ', 'selected' : '选侭的éĄč盼', 'about' : '慳äșŽ', 'shortcuts' : 'ćż«æ·é”ź', 'help' : '枟抩', 'webfm' : 'çœ‘ç»œæ–‡ä»¶çźĄç†ć™š', 'ver' : 'ç‰ˆæœŹ', 'protocolver' : 'ćèźźç‰ˆæœŹ', 'homepage' : 'éĄč盟䞻饔', 'docs' : 'æ–‡æĄŁ', 'github' : 'ć€ćˆ»æˆ‘ä»Źçš„github', 'twitter' : 'ć…łæłšæˆ‘ä»Źçš„twitter', 'facebook' : 'ćŠ ć…„æˆ‘ä»Źçš„facebook', 'team' : '曱队', 'chiefdev' : 'éŠ–ćž­ćŒ€ć‘', 'developer' : 'ćŒ€ć‘', 'contributor' : 'èŽĄçŒź', 'maintainer' : '绎技', 'translator' : 'çż»èŻ‘', 'icons' : 'ć›Ÿæ ‡', 'dontforget' : '戫濘äș†ćžŠäžŠäœ æ“Šæ±—çš„æŻ›ć·Ÿ', 'shortcutsof' : 'ćż«æ·é”źć·Č穁甹', 'dropFiles' : 'æŠŠæ–‡ä»¶æ‹–ćˆ°èż™é‡Œ', 'or' : '或者', 'selectForUpload' : '选择芁䞊䌠的文件', 'moveFiles' : 'ç§»ćŠšæ–‡ä»¶', 'copyFiles' : 'ć€ćˆ¶æ–‡ä»¶', 'restoreFiles' : 'æąć€æ–‡ä»¶', // from v2.1.24 added 5.5.2017 'rmFromPlaces' : 'ä»Žèż™é‡Œäž­ćˆ é™€', 'aspectRatio' : 'äżæŒæŻ”äŸ‹', 'scale' : 'çŒ©æ”ŸæŻ”äŸ‹', 'width' : 'ćźœ', 'height' : '高', 'resize' : 'è°ƒæ•Žć€§ć°', 'crop' : 'èŁćˆ‡', 'rotate' : 'æ—‹èœŹ', 'rotate-cw' : 'éĄșæ—¶é’ˆæ—‹èœŹ90°', 'rotate-ccw' : 'é€†æ—¶é’ˆæ—‹èœŹ90°', 'degree' : '°', 'netMountDialogTitle' : 'èŁ…èœœçœ‘ç»œç›źćœ•', // added 18.04.2012 'protocol' : 'ćèźź', // added 18.04.2012 'host' : 'äž»æœș', // added 18.04.2012 'port' : 'ç«ŻćŁ', // added 18.04.2012 'user' : '甚户', // added 18.04.2012 'pass' : '毆码', // added 18.04.2012 'confirmUnmount' : 'çĄźćźžèŠćžèœœ $1?', // from v2.1 added 30.04.2012 'dropFilesBrowser': 'ä»Žæ”è§ˆć™šäž­æ‹–æ”Ÿæˆ–çČ˜èŽŽæ–‡ä»¶', // from v2.1 added 30.05.2012 'dropPasteFiles' : '拖攟文件çČ˜èŽŽçœ‘ć€æˆ–ć‰ȘèŽŽæżć›Ÿćƒ', // from v2.1 added 07.04.2014 'encoding' : '猖码', // from v2.1 added 19.12.2014 'locale' : 'èŻ­èš€çŽŻćąƒ', // from v2.1 added 19.12.2014 'searchTarget' : 'ç›źæ ‡: $1', // from v2.1 added 22.5.2015 'searchMime' : 'æŒ‰èŸ“ć…„MIMEç±»ćž‹æœçŽą', // from v2.1 added 22.5.2015 'owner' : '所有者', // from v2.1 added 20.6.2015 'group' : '组', // from v2.1 added 20.6.2015 'other' : '慶他', // from v2.1 added 20.6.2015 'execute' : 'æ‰§èĄŒ', // from v2.1 added 20.6.2015 'perm' : 'èźžćŻ', // from v2.1 added 20.6.2015 'mode' : 'ć±žæ€§', // from v2.1 added 20.6.2015 'emptyFolder' : '文件ć€čæ˜Żç©ș的', // from v2.1.6 added 30.12.2015 'emptyFolderDrop' : '文件ć€čæ˜Żç©ș的\\A æ‹–æ”ŸćŻèżœćŠ éĄč盼', // from v2.1.6 added 30.12.2015 'emptyFolderLTap' : '文件ć€čæ˜Żç©ș的\\A é•żæŒ‰ćŻæ·»ćŠ éĄč盼', // from v2.1.6 added 30.12.2015 'quality' : 'ć“èŽš', // from v2.1.6 added 5.1.2016 'autoSync' : 'è‡ȘćŠšćŒæ­„', // from v2.1.6 added 10.1.2016 'moveUp' : '搑䞊移抚', // from v2.1.6 added 18.1.2016 'getLink' : 'èŽ·ć–URL铟掄', // from v2.1.7 added 9.2.2016 'selectedItems' : 'ć·Č选择éĄč盼 ($1)', // from v2.1.7 added 2.19.2016 'folderId' : 'ç›źćœ•ID', // from v2.1.10 added 3.25.2016 'offlineAccess' : 'ć…èźžçŠ»çșżæ“äœœ', // from v2.1.10 added 3.25.2016 'reAuth' : '重新éȘŒèŻ', // from v2.1.10 added 3.25.2016 'nowLoading' : 'æ­ŁćœšćŠ èœœ...', // from v2.1.12 added 4.26.2016 'openMulti' : 'æ‰“ćŒ€ć€šäžȘ文件', // from v2.1.12 added 5.14.2016 'openMultiConfirm': 'æ‚šæ­Łćœšć°èŻ•æ‰“ćŒ€$1文件.æ‚šçĄźćźšèŠćœšæ”è§ˆć™šäž­æ‰“ćŒ€ć—?', // from v2.1.12 added 5.14.2016 'emptySearch' : 'æœçŽąç›źæ ‡äž­æČĄæœ‰ćŒč配结果', // from v2.1.12 added 5.16.2016 'editingFile' : 'æ­ŁćœšçŒ–èŸ‘æ–‡ä»¶.', // from v2.1.13 added 6.3.2016 'hasSelected' : 'ć·Č选择 $1 äžȘéĄč盼.', // from v2.1.13 added 6.3.2016 'hasClipboard' : 'ć‰ȘèŽŽæżé‡Œæœ‰ $1 äžȘéĄč盼.', // from v2.1.13 added 6.3.2016 'incSearchOnly' : 'ćąžé‡æœçŽąä»…æ„è‡Șćœ“ć‰è§†ć›Ÿ.', // from v2.1.13 added 6.30.2016 'reinstate' : 'æąć€', // from v2.1.15 added 3.8.2016 'complete' : '$1 ćźŒæˆ', // from v2.1.15 added 21.8.2016 'contextmenu' : 'äžŠäž‹æ–‡èœć•', // from v2.1.15 added 9.9.2016 'pageTurning' : '翻饔', // from v2.1.15 added 10.9.2016 'volumeRoots' : 'æ čç›źćœ•', // from v2.1.16 added 16.9.2016 'reset' : 'é‡çœź', // from v2.1.16 added 1.10.2016 'bgcolor' : 'èƒŒæ™Żè‰Č', // from v2.1.16 added 1.10.2016 'colorPicker' : '鱜è‰Čé€‰æ‹©ć™š', // from v2.1.16 added 1.10.2016 '8pxgrid' : 'æ­„é•ż(8px)', // from v2.1.16 added 4.10.2016 'enabled' : '搯甹', // from v2.1.16 added 4.10.2016 'disabled' : '慳闭', // from v2.1.16 added 4.10.2016 'emptyIncSearch' : 'ćœ“ć‰è§†ć›Ÿäž‹æČĄæœ‰ćŒč配结果', // from v2.1.16 added 5.10.2016 'emptyLetSearch' : 'ćœ“ć‰è§†ć›Ÿäž­çš„çŹŹäž€äžȘć­—æŻæœçŽąç»“æžœäžșç©ș', // from v2.1.23 added 24.3.2017 'textLabel' : 'æ–‡æœŹæ ‡ç­Ÿ', // from v2.1.17 added 13.10.2016 'minsLeft' : 'ć‰©äœ™ $1 戆钟', // from v2.1.17 added 13.11.2016 'openAsEncoding' : 'äœżç”šæ‰€é€‰çŒ–ç é‡æ–°æ‰“ćŒ€', // from v2.1.19 added 2.12.2016 'saveAsEncoding' : 'äœżç”šæ‰€é€‰çŒ–ç äżć­˜', // from v2.1.19 added 2.12.2016 'selectFolder' : 'é€‰æ‹©ç›źćœ•', // from v2.1.20 added 13.12.2016 'firstLetterSearch': 'éŠ–ć­—æŻæœçŽą', // from v2.1.23 added 24.3.2017 'presets' : 'éą„çœź', // from v2.1.25 added 26.5.2017 'tooManyToTrash' : 'éĄč盼ć€Șć€šïŒŒäžèƒœç§»ćŠšćˆ°ć›žæ”¶ç«™.', // from v2.1.25 added 9.6.2017 'TextArea' : 'æ–‡æœŹćŒș柟', // from v2.1.25 added 14.6.2017 'folderToEmpty' : 'æž…ç©ș文件ć€č "$1".', // from v2.1.25 added 22.6.2017 'filderIsEmpty' : '文件ć€č "$1" äžșç©ș.', // from v2.1.25 added 22.6.2017 'preference' : 'ćć„œ', // from v2.1.26 added 28.6.2017 'language' : 'èŻ­èš€èźŸçœź', // from v2.1.26 added 28.6.2017 'clearBrowserData': 'æž…é™€äżć­˜ćœšæ­€æ”è§ˆć™šäž­çš„ćć„œèźŸçœź', // from v2.1.26 added 28.6.2017 'toolbarPref' : 'ć·„ć…·æ èźŸçœź', // from v2.1.27 added 2.8.2017 'charsLeft' : '... ć‰©äœ™$1歗笩', // from v2.1.29 added 30.8.2017 'linesLeft' : '... ć‰©äœ™$1èĄŒ', // from v2.1.52 added 16.1.2020 'sum' : '总数', // from v2.1.29 added 28.9.2017 'roughFileSize' : 'çČ—ç•„çš„æ–‡ä»¶ć€§ć°', // from v2.1.30 added 2.11.2017 'autoFocusDialog' : 'éŒ æ ‡æ‚ŹćœćœšćŻčèŻæĄ†ć†…ćŻçŒ–èŸ‘ćŒșćŸŸæ—¶è‡ȘćŠšèŽ·ćŸ—ç„Šç‚č', // from v2.1.30 added 2.11.2017 'select' : '选择', // from v2.1.30 added 23.11.2017 'selectAction' : 'ćŒć‡»é€‰æ‹©çš„æ–‡ä»¶æ—¶', // from v2.1.30 added 23.11.2017 'useStoredEditor' : 'ç”šäžŠæŹĄäœżç”šçš„çŒ–èŸ‘ć™šæ‰“ćŒ€', // from v2.1.30 added 23.11.2017 'selectinvert' : 'ćć‘é€‰æ‹©', // from v2.1.30 added 25.11.2017 'renameMultiple' : 'çĄźćźšèŠé‡ć‘œćé€‰ćźšéĄč $1 äžș $2 搗?
      èŻ„æ“äœœäžèƒœæ’€æ¶ˆ!', // from v2.1.31 added 4.12.2017 'batchRename' : 'æ‰čé‡é‡ć‘œć', // from v2.1.31 added 8.12.2017 'plusNumber' : 'ćąžćŠ æ•°é‡', // from v2.1.31 added 8.12.2017 'asPrefix' : 'æ·»ćŠ ć‰çŒ€', // from v2.1.31 added 8.12.2017 'asSuffix' : 'æ·»ćŠ ćŽçŒ€', // from v2.1.31 added 8.12.2017 'changeExtention' : 'ć˜ćŒ–èŒƒć›Ž', // from v2.1.31 added 8.12.2017 'columnPref' : 'ćˆ—èźŸçœź (ćˆ—èĄšè§†ć›Ÿ)', // from v2.1.32 added 6.2.2018 'reflectOnImmediate' : 'æ‰€æœ‰äżźæ”čć°†ç«‹ćłćéŠˆćˆ°æ–‡æĄŁ.', // from v2.1.33 added 2.3.2018 'reflectOnUnmount' : 'æ‰€æœ‰äżźæ”čćœšćžèœœæœŹć·äč‹ć‰äžäŒšćéŠˆ', // from v2.1.33 added 2.3.2018 'unmountChildren' : 'ćź‰èŁ…ćœšæœŹć·äžŠçš„ä»„äž‹ć·äčŸäŒšćžèœœ.äœ çĄźćźšèŠćžèœœć—?', // from v2.1.33 added 5.3.2018 'selectionInfo' : 'é€‰æ‹©äżĄæŻ', // from v2.1.33 added 7.3.2018 'hashChecker' : '星ç€șæ–‡ä»¶æ•Łćˆ—ć€Œçš„çź—æł•', // from v2.1.33 added 10.3.2018 'infoItems' : 'äżĄæŻæĄç›ź (é€‰æ‹©äżĄæŻéąæż)', // from v2.1.38 added 28.3.2018 'pressAgainToExit': 'ć†æŒ‰é€€ć‡ș', // from v2.1.38 added 1.4.2018 'toolbar' : 'ć·„ć…·æĄ', // from v2.1.38 added 4.4.2018 'workspace' : 'ć·„äœœç©ș问', // from v2.1.38 added 4.4.2018 'dialog' : 'ćŻčèŻæĄ†', // from v2.1.38 added 4.4.2018 'all' : '慹郹', // from v2.1.38 added 4.4.2018 'iconSize' : 'ć›Ÿæ ‡ć°ș毞 (ć›Ÿæ ‡è§†ć›Ÿ)', // from v2.1.39 added 7.5.2018 'editorMaximized' : 'æ‰“ćŒ€æœ€ć€§ćŒ–çŒ–èŸ‘ć™šçȘ—揣', // from v2.1.40 added 30.6.2018 'editorConvNoApi' : '由äșŽé€šèż‡ API èœŹæąćŠŸèƒœćœ“ć‰äžćŻç”šïŒŒèŻ·ćˆ°çœ‘ç«™äžŠèœŹæą.', //from v2.1.40 added 8.7.2018 'editorConvNeedUpload' : 'èœŹæąćŽïŒŒćż…éĄ»äžŠäŒ æĄç›źURL或䞀äžȘ䞋蜜的文件,ä»„äżć­˜èœŹæąćŽçš„æ–‡ä»¶.', //from v2.1.40 added 8.7.2018 'convertOn' : '朹 $1 站ç‚čäžŠèœŹæą', // from v2.1.40 added 10.7.2018 'integrations' : '集成', // from v2.1.40 added 11.7.2018 'integrationWith' : 'æœŹ elFinder é›†æˆä»„äž‹ć€–éƒšæœćŠĄ.äœżç”šć‰èŻ·æŁ€æŸ„äœżç”šæĄæŹŸă€éšç§æ”żç­–ç­‰.', // from v2.1.40 added 11.7.2018 'showHidden' : '星ç€șć·Čéšè—çš„æĄç›ź', // from v2.1.41 added 24.7.2018 'hideHidden' : '隐藏ć·Čéšè—çš„æĄç›ź', // from v2.1.41 added 24.7.2018 'toggleHidden' : '星ç€ș/隐藏ć·Čéšè—çš„æĄç›ź', // from v2.1.41 added 24.7.2018 'makefileTypes' : 'ć…èźž"新文件"äœżç”šçš„æ–‡ä»¶ç±»ćž‹', // from v2.1.41 added 7.8.2018 'typeOfTextfile' : 'æ–‡æœŹæ–‡ä»¶ç±»ćž‹', // from v2.1.41 added 7.8.2018 'add' : 'æ·»ćŠ ', // from v2.1.41 added 7.8.2018 'theme' : '䞻鹘', // from v2.1.43 added 19.10.2018 'default' : 'çŒș省', // from v2.1.43 added 19.10.2018 'description' : 'æèż°', // from v2.1.43 added 19.10.2018 'website' : '眑站', // from v2.1.43 added 19.10.2018 'author' : '䜜者', // from v2.1.43 added 19.10.2018 'email' : 'é‚źçź±', // from v2.1.43 added 19.10.2018 'license' : 'èźžćŻèŻ', // from v2.1.43 added 19.10.2018 'exportToSave' : 'æœŹæĄç›źäžèƒœäżć­˜. äžșéżć…äžąć€±çŒ–èŸ‘æ•°æź,éĄ»èŠćŻŒć‡șćˆ°äœ çš„ç””è„‘.', // from v2.1.44 added 1.12.2018 'dblclickToSelect': 'ćœšæ–‡ä»¶äžŠćŒć‡»ä»„é€‰äž­ćźƒ.', // from v2.1.47 added 22.1.2019 'useFullscreen' : 'äœżç”šć…šć±æšĄćŒ', // from v2.1.47 added 19.2.2019 /********************************** mimetypes **********************************/ 'kindUnknown' : 'æœȘ矄', 'kindRoot' : 'æ čç›źćœ•', // from v2.1.16 added 16.10.2016 'kindFolder' : '文件ć€č', 'kindSelects' : '选择', // from v2.1.29 added 29.8.2017 'kindAlias' : 'ćˆ«ć', 'kindAliasBroken' : 'é”™èŻŻçš„ćˆ«ć', // applications 'kindApp' : '繋ćș', 'kindPostscript' : 'Postscript æ–‡æĄŁ', 'kindMsOffice' : 'Microsoft Office æ–‡æĄŁ', 'kindMsWord' : 'Microsoft Word æ–‡æĄŁ', 'kindMsExcel' : 'Microsoft Excel æ–‡æĄŁ', 'kindMsPP' : 'Microsoft Powerpoint 挔ç€ș', 'kindOO' : 'Open Office æ–‡æĄŁ', 'kindAppFlash' : 'Flash 繋ćș', 'kindPDF' : 'PDF æ–‡æĄŁ', 'kindTorrent' : 'Bittorrent 文件', 'kind7z' : '7z ćŽ‹çŒ©ćŒ…', 'kindTAR' : 'TAR ćŽ‹çŒ©ćŒ…', 'kindGZIP' : 'GZIP ćŽ‹çŒ©ćŒ…', 'kindBZIP' : 'BZIP ćŽ‹çŒ©ćŒ…', 'kindXZ' : 'XZ ćŽ‹çŒ©ćŒ…', 'kindZIP' : 'ZIP ćŽ‹çŒ©ćŒ…', 'kindRAR' : 'RAR ćŽ‹çŒ©ćŒ…', 'kindJAR' : 'Java JAR 文件', 'kindTTF' : 'True Type ć­—äœ“', 'kindOTF' : 'Open Type ć­—äœ“', 'kindRPM' : 'RPM 挅', // texts 'kindText' : 'æ–‡æœŹæ–‡ä»¶', 'kindTextPlain' : 'çșŻæ–‡æœŹ', 'kindPHP' : 'PHP æșä»Łç ', 'kindCSS' : 'ć±‚ć æ ·ćŒèĄš(CSS)', 'kindHTML' : 'HTML æ–‡æĄŁ', 'kindJS' : 'Javascript æșä»Łç ', 'kindRTF' : 'ćŻŒæ–‡æœŹæ ŒćŒ(RTF)', 'kindC' : 'C æșä»Łç ', 'kindCHeader' : 'C ć€Žæ–‡ä»¶', 'kindCPP' : 'C++ æșä»Łç ', 'kindCPPHeader' : 'C++ ć€Žæ–‡ä»¶', 'kindShell' : 'Unix ć€–ćŁłè„šæœŹ', 'kindPython' : 'Python æșä»Łç ', 'kindJava' : 'Java æșä»Łç ', 'kindRuby' : 'Ruby æșä»Łç ', 'kindPerl' : 'Perl æșä»Łç ', 'kindSQL' : 'SQL è„šæœŹ', 'kindXML' : 'XML æ–‡æĄŁ', 'kindAWK' : 'AWK æșä»Łç ', 'kindCSV' : 'é€—ć·ćˆ†éš”ć€Œæ–‡ä»¶(CSV)', 'kindDOCBOOK' : 'Docbook XML æ–‡æĄŁ', 'kindMarkdown' : 'Markdown æ–‡æœŹ', // added 20.7.2015 // images 'kindImage' : 'ć›Ÿç‰‡', 'kindBMP' : 'BMP ć›Ÿç‰‡', 'kindJPEG' : 'JPEG ć›Ÿç‰‡', 'kindGIF' : 'GIF ć›Ÿç‰‡', 'kindPNG' : 'PNG ć›Ÿç‰‡', 'kindTIFF' : 'TIFF ć›Ÿç‰‡', 'kindTGA' : 'TGA ć›Ÿç‰‡', 'kindPSD' : 'Adobe Photoshop ć›Ÿç‰‡', 'kindXBITMAP' : 'X bitmap ć›Ÿç‰‡', 'kindPXM' : 'Pixelmator ć›Ÿç‰‡', // media 'kindAudio' : '音鱑', 'kindAudioMPEG' : 'MPEG 音鱑', 'kindAudioMPEG4' : 'MPEG-4 音鱑', 'kindAudioMIDI' : 'MIDI 音鱑', 'kindAudioOGG' : 'Ogg Vorbis 音鱑', 'kindAudioWAV' : 'WAV 音鱑', 'AudioPlaylist' : 'MP3 æ’­æ”Ÿćˆ—èĄš', 'kindVideo' : 'è§†éą‘', 'kindVideoDV' : 'DV è§†éą‘', 'kindVideoMPEG' : 'MPEG è§†éą‘', 'kindVideoMPEG4' : 'MPEG-4 è§†éą‘', 'kindVideoAVI' : 'AVI è§†éą‘', 'kindVideoMOV' : 'Quick Time è§†éą‘', 'kindVideoWM' : 'Windows Media è§†éą‘', 'kindVideoFlash' : 'Flash è§†éą‘', 'kindVideoMKV' : 'Matroska è§†éą‘', 'kindVideoOGG' : 'Ogg è§†éą‘' } }; })); application/library/js/proxy/elFinderSupportVer1.js000064400000023554147577724760016574 0ustar00/** * elFinder transport to support old protocol. * * @example * $('selector').elfinder({ * .... * transport : new elFinderSupportVer1() * }) * * @author Dmitry (dio) Levashov **/ window.elFinderSupportVer1 = function(upload) { "use strict"; var self = this, dateObj, today, yesterday, getDateString = function(date) { return date.replace('Today', today).replace('Yesterday', yesterday); }; dateObj = new Date(); today = dateObj.getFullYear() + '/' + (dateObj.getMonth() + 1) + '/' + dateObj.getDate(); dateObj = new Date(Date.now() - 86400000); yesterday = dateObj.getFullYear() + '/' + (dateObj.getMonth() + 1) + '/' + dateObj.getDate(); this.upload = upload || 'auto'; this.init = function(fm) { this.fm = fm; this.fm.parseUploadData = function(text) { var data; if (!$.trim(text)) { return {error : ['errResponse', 'errDataEmpty']}; } try { data = JSON.parse(text); } catch (e) { return {error : ['errResponse', 'errDataNotJSON']}; } return self.normalize('upload', data); }; }; this.send = function(opts) { var self = this, fm = this.fm, dfrd = $.Deferred(), cmd = opts.data.cmd, args = [], _opts = {}, data, xhr; dfrd.abort = function() { if (xhr.state() == 'pending') { xhr.quiet = true; xhr.abort(); } }; switch (cmd) { case 'open': opts.data.tree = 1; break; case 'parents': case 'tree': return dfrd.resolve({tree : []}); case 'get': opts.data.cmd = 'read'; opts.data.current = fm.file(opts.data.target).phash; break; case 'put': opts.data.cmd = 'edit'; opts.data.current = fm.file(opts.data.target).phash; break; case 'archive': case 'rm': opts.data.current = fm.file(opts.data.targets[0]).phash; break; case 'extract': case 'rename': case 'resize': opts.data.current = fm.file(opts.data.target).phash; break; case 'duplicate': _opts = $.extend(true, {}, opts); $.each(opts.data.targets, function(i, hash) { $.ajax(Object.assign(_opts, {data : {cmd : 'duplicate', target : hash, current : fm.file(hash).phash}})) .fail(function(error) { fm.error(fm.res('error', 'connect')); }) .done(function(data) { data = self.normalize('duplicate', data); if (data.error) { fm.error(data.error); } else if (data.added) { fm.trigger('add', {added : data.added}); } }); }); return dfrd.resolve({}); case 'mkdir': case 'mkfile': opts.data.current = opts.data.target; break; case 'paste': opts.data.current = opts.data.dst; if (! opts.data.tree) { $.each(opts.data.targets, function(i, h) { if (fm.file(h) && fm.file(h).mime === 'directory') { opts.data.tree = '1'; return false; } }); } break; case 'size': return dfrd.resolve({error : fm.res('error', 'cmdsupport')}); case 'search': return dfrd.resolve({error : fm.res('error', 'cmdsupport')}); case 'file': opts.data.cmd = 'open'; opts.data.current = fm.file(opts.data.target).phash; break; } // cmd = opts.data.cmd xhr = $.ajax(opts) .fail(function(error) { dfrd.reject(error); }) .done(function(raw) { data = self.normalize(cmd, raw); dfrd.resolve(data); }); return dfrd; }; // fix old connectors errors messages as possible // this.errors = { // 'Unknown command' : 'Unknown command.', // 'Invalid backend configuration' : 'Invalid backend configuration.', // 'Access denied' : 'Access denied.', // 'PHP JSON module not installed' : 'PHP JSON module not installed.', // 'File not found' : 'File not found.', // 'Invalid name' : 'Invalid file name.', // 'File or folder with the same name already exists' : 'File named "$1" already exists in this location.', // 'Not allowed file type' : 'Not allowed file type.', // 'File exceeds the maximum allowed filesize' : 'File exceeds maximum allowed size.', // 'Unable to copy into itself' : 'Unable to copy "$1" into itself.', // 'Unable to create archive' : 'Unable to create archive.', // 'Unable to extract files from archive' : 'Unable to extract files from "$1".' // } this.normalize = function(cmd, data) { var self = this, fm = this.fm, files = {}, filter = function(file) { return file && file.hash && file.name && file.mime ? file : null; }, getDirs = function(items) { return $.grep(items, function(i) { return i && i.mime && i.mime === 'directory'? true : false; }); }, getTreeDiff = function(files) { var dirs = getDirs(files); treeDiff = fm.diff(dirs, null, ['date', 'ts']); if (treeDiff.added.length) { treeDiff.added = getDirs(treeDiff.added); } if (treeDiff.changed.length) { treeDiff.changed = getDirs(treeDiff.changed); } if (treeDiff.removed.length) { var removed = []; $.each(treeDiff.removed, function(i, h) { var item; if ((item = fm.file(h)) && item.mime === 'directory') { removed.push(h); } }); treeDiff.removed = removed; } return treeDiff; }, phash, diff, isCwd, treeDiff; if ((cmd == 'tmb' || cmd == 'get')) { return data; } // if (data.error) { // $.each(data.error, function(i, msg) { // if (self.errors[msg]) { // data.error[i] = self.errors[msg]; // } // }); // } if (cmd == 'upload' && data.error && data.cwd) { data.warning = Object.assign({}, data.error); data.error = false; } if (data.error) { return data; } if (cmd == 'put') { phash = fm.file(data.target.hash).phash; return {changed : [this.normalizeFile(data.target, phash)]}; } phash = data.cwd.hash; isCwd = (phash == fm.cwd().hash); if (data.tree) { $.each(this.normalizeTree(data.tree), function(i, file) { files[file.hash] = file; }); } $.each(data.cdc||[], function(i, file) { var hash = file.hash, mcts; if (files[hash]) { if (file.date) { mcts = Date.parse(getDateString(file.date)); if (mcts && !isNaN(mcts)) { files[hash].ts = Math.floor(mcts / 1000); } else { files[hash].date = file.date || fm.formatDate(file); } } files[hash].locked = file.hash == phash ? true : file.rm === void(0) ? false : !file.rm; } else { files[hash] = self.normalizeFile(file, phash, data.tmb); } }); if (!data.tree) { $.each(fm.files(), function(hash, file) { if (!files[hash] && file.phash != phash && file.mime == 'directory') { files[hash] = file; } }); } if (cmd == 'open') { return { cwd : files[phash] || this.normalizeFile(data.cwd), files : $.map(files, function(f) { return f; }), options : self.normalizeOptions(data), init : !!data.params, debug : data.debug }; } if (isCwd) { diff = fm.diff($.map(files, filter)); } else { if (data.tree && cmd !== 'paste') { diff = getTreeDiff(files); } else { diff = { added : [], removed : [], changed : [] }; if (cmd === 'paste') { diff.sync = true; } } } return Object.assign({ current : data.cwd.hash, error : data.error, warning : data.warning, options : {tmb : !!data.tmb} }, diff); }; /** * Convert old api tree into plain array of dirs * * @param Object root dir * @return Array */ this.normalizeTree = function(root) { var self = this, result = [], traverse = function(dirs, phash) { var i, dir; for (i = 0; i < dirs.length; i++) { dir = dirs[i]; result.push(self.normalizeFile(dir, phash)); dir.dirs.length && traverse(dir.dirs, dir.hash); } }; traverse([root]); return result; }; /** * Convert file info from old api format into new one * * @param Object file * @param String parent dir hash * @return Object */ this.normalizeFile = function(file, phash, tmb) { var mime = file.mime || 'directory', size = mime == 'directory' && !file.linkTo ? 0 : file.size, mcts = file.date? Date.parse(getDateString(file.date)) : void 0, info = { url : file.url, hash : file.hash, phash : phash, name : file.name, mime : mime, ts : file.ts, size : size, read : file.read, write : file.write, locked : !phash ? true : file.rm === void(0) ? false : !file.rm }; if (! info.ts) { if (mcts && !isNaN(mcts)) { info.ts = Math.floor(mcts / 1000); } else { info.date = file.date || this.fm.formatDate(file); } } if (file.mime == 'application/x-empty' || file.mime == 'inode/x-empty') { info.mime = 'text/plain'; } if (file.linkTo) { info.alias = file.linkTo; } if (file.linkTo) { info.linkTo = file.linkTo; } if (file.tmb) { info.tmb = file.tmb; } else if (info.mime.indexOf('image/') === 0 && tmb) { info.tmb = 1; } if (file.dirs && file.dirs.length) { info.dirs = true; } if (file.dim) { info.dim = file.dim; } if (file.resize) { info.resize = file.resize; } return info; }; this.normalizeOptions = function(data) { var opts = { path : data.cwd.rel, disabled : $.merge((data.disabled || []), [ 'search', 'netmount', 'zipdl' ]), tmb : !!data.tmb, copyOverwrite : true }; if (data.params) { opts.api = 1; opts.url = data.params.url; opts.archivers = { create : data.params.archives || [], extract : data.params.extract || [] }; } if (opts.path.indexOf('/') !== -1) { opts.separator = '/'; } else if (opts.path.indexOf('\\') !== -1) { opts.separator = '\\'; } return opts; }; }; application/library/js/ui/uploadButton.js000064400000002027147577724760014615 0ustar00/** * @class elFinder toolbar's button tor upload file * * @author Dmitry (dio) Levashov **/ $.fn.elfinderuploadbutton = function(cmd) { "use strict"; return this.each(function() { var fm = cmd.fm, button = $(this).elfinderbutton(cmd) .off('click'), form = $('
      ').appendTo(button), input = $('') .on('change', function() { var _input = $(this); if (_input.val()) { fm.exec('upload', {input : _input.remove()[0]}, void(0), fm.cwd().hash); input.clone(true).appendTo(form); } }) .on('dragover', function(e) { e.originalEvent.dataTransfer.dropEffect = 'copy'; }), tm; form.append(input.clone(true)); cmd.change(function() { tm && cancelAnimationFrame(tm); tm = requestAnimationFrame(function() { var toShow = cmd.disabled(); if (form.is('visible')) { !toShow && form.hide(); } else { toShow && form.show(); } }); }) .change(); }); }; application/library/js/ui/viewbutton.js000064400000001370147577724760014343 0ustar00/** * @class elFinder toolbar button to switch current directory view. * * @author Dmitry (dio) Levashov **/ $.fn.elfinderviewbutton = function(cmd) { "use strict"; return this.each(function() { var button = $(this).elfinderbutton(cmd), icon = button.children('.elfinder-button-icon'), text = button.children('.elfinder-button-text'), tm; cmd.change(function() { tm && cancelAnimationFrame(tm); tm = requestAnimationFrame(function() { var icons = cmd.value == 'icons'; icon.toggleClass('elfinder-button-icon-view-list', icons); cmd.className = icons? 'view-list' : ''; cmd.title = cmd.fm.i18n(icons ? 'viewlist' : 'viewicons'); button.attr('title', cmd.title); text.html(cmd.title); }); }); }); }; application/library/js/ui/navdock.js000064400000010530147577724760013560 0ustar00/** * @class elfindernavdock - elFinder container for preview etc at below the navbar * * @author Naoki Sawada **/ $.fn.elfindernavdock = function(fm, opts) { "use strict"; this.not('.elfinder-navdock').each(function() { var self = $(this).hide().addClass('ui-state-default elfinder-navdock touch-punch'), node = self.parent(), wz = node.children('.elfinder-workzone').append(self), resize = function(to, h) { var curH = h || self.height(), diff = to - curH, len = Object.keys(sizeSyncs).length, calc = len? diff / len : 0, ovf; if (diff) { ovf = self.css('overflow'); self.css('overflow', 'hidden'); self.height(to); $.each(sizeSyncs, function(id, n) { n.height(n.height() + calc).trigger('resize.' + fm.namespace); }); fm.trigger('wzresize'); self.css('overflow', ovf); } }, handle = $('
      ').appendTo(self), sizeSyncs = {}, resizeFn = [], initMaxHeight = (parseInt(opts.initMaxHeight) || 50) / 100, maxHeight = (parseInt(opts.maxHeight) || 90) / 100, basicHeight, hasNode; self.data('addNode', function(cNode, opts) { var wzH = fm.getUI('workzone').height(), imaxH = wzH * initMaxHeight, curH, tH, mH; opts = Object.assign({ first: false, sizeSync: true, init: false }, opts); if (!cNode.attr('id')) { cNode.attr('id', fm.namespace+'-navdock-' + (+new Date())); } opts.sizeSync && (sizeSyncs[cNode.attr('id')] = cNode); curH = self.height(); tH = curH + cNode.outerHeight(true); if (opts.first) { handle.after(cNode); } else { self.append(cNode); } hasNode = true; self.resizable('enable').height(tH).show(); fm.trigger('wzresize'); if (opts.init) { mH = fm.storage('navdockHeight'); if (mH) { tH = mH; } else { tH = tH > imaxH? imaxH : tH; } basicHeight = tH; } resize(Math.min(tH, wzH * maxHeight)); return self; }).data('removeNode', function(nodeId, appendTo) { var cNode = $('#'+nodeId); delete sizeSyncs[nodeId]; self.height(self.height() - $('#'+nodeId).outerHeight(true)); if (appendTo) { if (appendTo === 'detach') { cNode = cNode.detach(); } else { appendTo.append(cNode); } } else { cNode.remove(); } if (self.children().length <= 1) { hasNode = false; self.resizable('disable').height(0).hide(); } fm.trigger('wzresize'); return cNode; }); if (! opts.disabled) { fm.one('init', function() { var ovf; if (fm.getUI('navbar').children().not('.ui-resizable-handle').length) { self.data('dockEnabled', true); self.resizable({ maxHeight: fm.getUI('workzone').height() * maxHeight, handles: { n: handle }, start: function(e, ui) { ovf = self.css('overflow'); self.css('overflow', 'hidden'); fm.trigger('navdockresizestart', {event: e, ui: ui}, true); }, resize: function(e, ui) { self.css('top', ''); fm.trigger('wzresize', { inNavdockResize : true }); }, stop: function(e, ui) { fm.trigger('navdockresizestop', {event: e, ui: ui}, true); self.css('top', ''); basicHeight = ui.size.height; fm.storage('navdockHeight', basicHeight); resize(basicHeight, ui.originalSize.height); self.css('overflow', ovf); } }); fm.bind('wzresize', function(e) { var minH, maxH, h; if (self.is(':visible')) { maxH = fm.getUI('workzone').height() * maxHeight; if (! e.data || ! e.data.inNavdockResize) { h = self.height(); if (maxH < basicHeight) { if (Math.abs(h - maxH) > 1) { resize(maxH); } } else { if (Math.abs(h - basicHeight) > 1) { resize(basicHeight); } } } self.resizable('option', 'maxHeight', maxH); } }).bind('themechange', function() { var oldH = Math.round(self.height()); requestAnimationFrame(function() { var curH = Math.round(self.height()), diff = oldH - curH; if (diff !== 0) { resize(self.height(), curH - diff); } }); }); } fm.bind('navbarshow navbarhide', function(e) { self[hasNode && e.type === 'navbarshow'? 'show' : 'hide'](); }); }); } }); return this; };application/library/js/ui/button.js000064400000010101147577724760013440 0ustar00/** * @class elFinder toolbar button widget. * If command has variants - create menu * * @author Dmitry (dio) Levashov **/ $.fn.elfinderbutton = function(cmd) { "use strict"; return this.each(function() { var c = 'class', fm = cmd.fm, disabled = fm.res(c, 'disabled'), active = fm.res(c, 'active'), hover = fm.res(c, 'hover'), item = 'elfinder-button-menu-item', selected = 'elfinder-button-menu-item-selected', menu, text = $(''+cmd.title+''), prvCname = cmd.className? cmd.className : cmd.name, button = $(this).addClass('ui-state-default elfinder-button') .attr('title', cmd.title) .append('', text) .on('mouseenter mouseleave', function(e) { !button.hasClass(disabled) && button[e.type == 'mouseleave' ? 'removeClass' : 'addClass'](hover);}) .on('click', function(e) { if (!button.hasClass(disabled)) { if (menu && cmd.variants.length >= 1) { // close other menus menu.is(':hidden') && fm.getUI().click(); e.stopPropagation(); menu.css(getMenuOffset()).slideToggle({ duration: 100, done: function(e) { fm[menu.is(':visible')? 'toFront' : 'toHide'](menu); } }); } else { fm.exec(cmd.name, getSelected(), {_userAction: true, _currentType: 'toolbar', _currentNode: button }); } } }), hideMenu = function() { fm.toHide(menu); }, getMenuOffset = function() { var fmNode = fm.getUI(), baseOffset = fmNode.offset(), buttonOffset = button.offset(); return { top : buttonOffset.top - baseOffset.top, left : buttonOffset.left - baseOffset.left, maxHeight : fmNode.height() - 40 }; }, getSelected = function() { var sel = fm.selected(), cwd; if (!sel.length) { if (cwd = fm.cwd()) { sel = [ fm.cwd().hash ]; } else { sel = void(0); } } return sel; }, tm; text.hide(); // set self button object to cmd object cmd.button = button; // if command has variants create menu if (Array.isArray(cmd.variants)) { button.addClass('elfinder-menubutton'); menu = $('
      ') .hide() .appendTo(fm.getUI()) .on('mouseenter mouseleave', '.'+item, function() { $(this).toggleClass(hover); }) .on('click', '.'+item, function(e) { var opts = $(this).data('value'); e.preventDefault(); e.stopPropagation(); button.removeClass(hover); fm.toHide(menu); if (typeof opts === 'undefined') { opts = {}; } if (typeof opts === 'object') { opts._userAction = true; } fm.exec(cmd.name, getSelected(), opts); }) .on('close', hideMenu); fm.bind('disable select', hideMenu).getUI().on('click', hideMenu); cmd.change(function() { menu.html(''); $.each(cmd.variants, function(i, variant) { menu.append($('
      '+variant[1]+'
      ').data('value', variant[0]).addClass(variant[0] == cmd.value ? selected : '')); }); }); } cmd.change(function() { var cName; tm && cancelAnimationFrame(tm); tm = requestAnimationFrame(function() { if (cmd.disabled()) { button.removeClass(active+' '+hover).addClass(disabled); } else { button.removeClass(disabled); button[cmd.active() ? 'addClass' : 'removeClass'](active); } if (cmd.syncTitleOnChange) { cName = cmd.className? cmd.className : cmd.name; if (prvCname !== cName) { button.children('.elfinder-button-icon').removeClass('elfinder-button-icon-' + prvCname).addClass('elfinder-button-icon-' + cName); if (menu) { menu.removeClass('elfinder-button-' + prvCname + '-menu').addClass('elfinder-button-' + cName + '-menu'); } prvCname = cName; } text.html(cmd.title); button.attr('title', cmd.title); } }); }) .change(); }); }; application/library/js/ui/overlay.js000064400000001677147577724760013630 0ustar00 $.fn.elfinderoverlay = function(opts) { "use strict"; var fm = this.parent().elfinder('instance'), o, cnt, show, hide; this.filter(':not(.elfinder-overlay)').each(function() { opts = Object.assign({}, opts); $(this).addClass('ui-front ui-widget-overlay elfinder-overlay') .hide() .on('mousedown', function(e) { e.preventDefault(); e.stopPropagation(); }) .data({ cnt : 0, show : typeof(opts.show) == 'function' ? opts.show : function() { }, hide : typeof(opts.hide) == 'function' ? opts.hide : function() { } }); }); if (opts == 'show') { o = this.eq(0); cnt = o.data('cnt') + 1; show = o.data('show'); fm.toFront(o); o.data('cnt', cnt); if (o.is(':hidden')) { o.show(); show(); } } if (opts == 'hide') { o = this.eq(0); cnt = o.data('cnt') - 1; hide = o.data('hide'); o.data('cnt', cnt); if (cnt <= 0) { o.hide(); hide(); } } return this; }; application/library/js/ui/panel.js000064400000001045147577724760013233 0ustar00$.fn.elfinderpanel = function(fm) { "use strict"; return this.each(function() { var panel = $(this).addClass('elfinder-panel ui-state-default ui-corner-all'), margin = 'margin-'+(fm.direction == 'ltr' ? 'left' : 'right'); fm.one('load', function(e) { var navbar = fm.getUI('navbar'); panel.css(margin, parseInt(navbar.outerWidth(true))); navbar.on('resize', function(e) { e.preventDefault(); e.stopPropagation(); panel.is(':visible') && panel.css(margin, parseInt(navbar.outerWidth(true))); }); }); }); }; application/library/js/ui/searchbutton.js000064400000023624147577724760014644 0ustar00/** * @class elFinder toolbar search button widget. * * @author Dmitry (dio) Levashov **/ $.fn.elfindersearchbutton = function(cmd) { "use strict"; return this.each(function() { var result = false, fm = cmd.fm, disabled = fm.res('class', 'disabled'), isopts = cmd.options.incsearch || { enable: false }, sTypes = cmd.options.searchTypes, id = function(name){return fm.namespace + fm.escape(name);}, toolbar= fm.getUI('toolbar'), btnCls = fm.res('class', 'searchbtn'), button = $(this) .hide() .addClass('ui-widget-content elfinder-button '+btnCls) .on('click', function(e) { e.stopPropagation(); }), getMenuOffset = function() { var fmNode = fm.getUI(), baseOffset = fmNode.offset(), buttonOffset = button.offset(); return { top : buttonOffset.top - baseOffset.top, maxHeight : fmNode.height() - 40 }; }, search = function() { input.data('inctm') && clearTimeout(input.data('inctm')); var val = $.trim(input.val()), from = !$('#' + id('SearchFromAll')).prop('checked'), mime = $('#' + id('SearchMime')).prop('checked'), type = ''; if (from) { if ($('#' + id('SearchFromVol')).prop('checked')) { from = fm.root(fm.cwd().hash); } else { from = fm.cwd().hash; } } if (mime) { mime = val; val = '.'; } if (typeSet) { type = typeSet.children('input:checked').val(); } if (val) { input.trigger('focus'); cmd.exec(val, from, mime, type).done(function() { result = true; }).fail(function() { abort(); }); } else { fm.trigger('searchend'); } }, abort = function() { input.data('inctm') && clearTimeout(input.data('inctm')); input.val('').trigger('blur'); if (result || incVal) { result = false; incVal = ''; fm.lazy(function() { fm.trigger('searchend'); }); } }, incVal = '', input = $('') .on('focus', function() { // close other menus !button.hasClass('ui-state-active') && fm.getUI().click(); inFocus = true; incVal = ''; button.addClass('ui-state-active'); fm.trigger('uiresize'); opts && opts.css(getMenuOffset()).slideDown(function() { // Care for on browser window re-active button.addClass('ui-state-active'); fm.toFront(opts); }); }) .on('blur', function() { inFocus = false; if (opts) { if (!opts.data('infocus')) { opts.slideUp(function() { button.removeClass('ui-state-active'); fm.trigger('uiresize'); fm.toHide(opts); }); } else { opts.data('infocus', false); } } else { button.removeClass('ui-state-active'); } }) .appendTo(button) // to avoid fm shortcuts on arrows .on('keypress', function(e) { e.stopPropagation(); }) .on('keydown', function(e) { e.stopPropagation(); if (e.keyCode === $.ui.keyCode.ENTER) { search(); } else if (e.keyCode === $.ui.keyCode.ESCAPE) { e.preventDefault(); abort(); } }), opts, typeSet, cwdReady, inFocus; if (isopts.enable) { isopts.minlen = isopts.minlen || 2; isopts.wait = isopts.wait || 500; input .attr('title', fm.i18n('incSearchOnly')) .on('compositionstart', function() { input.data('composing', true); }) .on('compositionend', function() { input.removeData('composing'); input.trigger('input'); // for IE, edge }) .on('input', function() { if (! input.data('composing')) { input.data('inctm') && clearTimeout(input.data('inctm')); input.data('inctm', setTimeout(function() { var val = input.val(); if (val.length === 0 || val.length >= isopts.minlen) { (incVal !== val) && fm.trigger('incsearchstart', { query: val, type: typeSet? typeSet.children('input:checked').val() : 'searchName' }); incVal = val; if (val === '' && fm.searchStatus.state > 1 && fm.searchStatus.query) { input.val(fm.searchStatus.query).trigger('select'); } } }, isopts.wait)); } }); if (fm.UA.ltIE8) { input.on('keydown', function(e) { if (e.keyCode === 229) { input.data('imetm') && clearTimeout(input.data('imetm')); input.data('composing', true); input.data('imetm', setTimeout(function() { input.removeData('composing'); }, 100)); } }) .on('keyup', function(e) { input.data('imetm') && clearTimeout(input.data('imetm')); if (input.data('composing')) { e.keyCode === $.ui.keyCode.ENTER && input.trigger('compositionend'); } else { input.trigger('input'); } }); } } $('') .appendTo(button) .on('mousedown', function(e) { e.stopPropagation(); e.preventDefault(); if (button.hasClass('ui-state-active')) { search(); } else { input.trigger('focus'); } }); $('') .appendTo(button) .on('mousedown', function(e) { e.stopPropagation(); e.preventDefault(); if (input.val() === '' && !button.hasClass('ui-state-active')) { input.trigger('focus'); } else { abort(); } }); // wait when button will be added to DOM fm.bind('toolbarload', function(){ var parent = button.parent(); if (parent.length) { toolbar.prepend(button.show()); parent.remove(); // position icons for ie7 if (fm.UA.ltIE7) { var icon = button.children(fm.direction == 'ltr' ? '.ui-icon-close' : '.ui-icon-search'); icon.css({ right : '', left : parseInt(button.width())-icon.outerWidth(true) }); } } }); fm .one('init', function() { fm.getUI('cwd').on('touchstart click', function() { inFocus && input.trigger('blur'); }); }) .one('open', function() { opts = (fm.api < 2.1)? null : $('
      ') .append( $('
      ') .append( $(''), $(''), $('') ), $('
      ') .append( $('') ) ) .hide() .appendTo(fm.getUI()); if (opts) { if (sTypes) { typeSet = opts.find('.elfinder-search-type'); $.each(cmd.options.searchTypes, function(i, v) { typeSet.append($('')); }); } opts.find('div.buttonset').buttonset(); $('#'+id('SearchFromAll')).next('label').attr('title', fm.i18n('searchTarget', fm.i18n('btnAll'))); if (sTypes) { $.each(sTypes, function(i, v) { if (v.title) { $('#'+id(i)).next('label').attr('title', fm.i18n(v.title)); } }); } opts.on('mousedown', 'div.buttonset', function(e){ e.stopPropagation(); opts.data('infocus', true); }) .on('click', 'input', function(e) { e.stopPropagation(); $.trim(input.val())? search() : input.trigger('focus'); }) .on('close', function() { input.trigger('blur'); }); } }) .bind('searchend', function() { input.val(''); }) .bind('open parents', function() { var dirs = [], volroot = fm.file(fm.root(fm.cwd().hash)); if (volroot) { $.each(fm.parents(fm.cwd().hash), function(i, hash) { dirs.push(fm.file(hash).name); }); $('#'+id('SearchFromCwd')).next('label').attr('title', fm.i18n('searchTarget', dirs.join(fm.option('separator')))); $('#'+id('SearchFromVol')).next('label').attr('title', fm.i18n('searchTarget', volroot.name)); } }) .bind('open', function() { incVal && abort(); }) .bind('cwdinit', function() { cwdReady = false; }) .bind('cwdrender',function() { cwdReady = true; }) .bind('keydownEsc', function() { if (incVal && incVal.substr(0, 1) === '/') { incVal = ''; input.val(''); fm.trigger('searchend'); } }) .shortcut({ pattern : 'ctrl+f f3', description : cmd.title, callback : function() { input.trigger('select').trigger('focus'); } }) .shortcut({ pattern : 'a b c d e f g h i j k l m n o p q r s t u v w x y z dig0 dig1 dig2 dig3 dig4 dig5 dig6 dig7 dig8 dig9 num0 num1 num2 num3 num4 num5 num6 num7 num8 num9', description : fm.i18n('firstLetterSearch'), callback : function(e) { if (! cwdReady) { return; } var code = e.originalEvent.keyCode, next = function() { var sel = fm.selected(), key = $.ui.keyCode[(!sel.length || fm.cwdHash2Elm(sel[0]).next('[id]').length)? 'RIGHT' : 'HOME']; $(document).trigger($.Event('keydown', { keyCode: key, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false })); }, val; if (code >= 96 && code <= 105) { code -= 48; } val = '/' + String.fromCharCode(code); if (incVal !== val) { input.val(val); incVal = val; fm .trigger('incsearchstart', { query: val }) .one('cwdrender', next); } else{ next(); } } }); }); }; application/library/js/ui/toast.js000064400000005136147577724760013273 0ustar00/** * @class elFinder toast * * This was created inspired by the toastr. Thanks to developers of toastr. * CodeSeven/toastr: http://johnpapa.net * * @author Naoki Sawada **/ $.fn.elfindertoast = function(opts, fm) { "use strict"; var defOpts = Object.assign({ mode: 'success', // or 'info', 'warning' and 'error' msg: '', showMethod: 'fadeIn', //fadeIn, slideDown, and show are built into jQuery showDuration: 300, showEasing: 'swing', //swing and linear are built into jQuery onShown: undefined, hideMethod: 'fadeOut', hideDuration: 1500, hideEasing: 'swing', onHidden: undefined, timeOut: 3000, extNode: undefined, button: undefined, width: undefined }, $.isPlainObject(fm.options.uiOptions.toast.defaults)? fm.options.uiOptions.toast.defaults : {}); return this.each(function() { opts = Object.assign({}, defOpts, opts || {}); var self = $(this), show = function(notm) { self.stop(); fm.toFront(self); self[opts.showMethod]({ duration: opts.showDuration, easing: opts.showEasing, complete: function() { opts.onShown && opts.onShown(); if (!notm && opts.timeOut) { rmTm = setTimeout(rm, opts.timeOut); } } }); }, rm = function() { self[opts.hideMethod]({ duration: opts.hideDuration, easing: opts.hideEasing, complete: function() { opts.onHidden && opts.onHidden(); self.remove(); } }); }, rmTm; self.on('click', function(e) { e.stopPropagation(); e.preventDefault(); rmTm && clearTimeout(rmTm); opts.onHidden && opts.onHidden(); self.stop().remove(); }).on('mouseenter mouseleave', function(e) { if (opts.timeOut) { rmTm && clearTimeout(rmTm); rmTm = null; if (e.type === 'mouseenter') { show(true); } else { rmTm = setTimeout(rm, opts.timeOut); } } }).hide().addClass('toast-' + opts.mode).append($('
      ').html(opts.msg.replace(/%([a-zA-Z0-9]+)%/g, function(m, m1) { return fm.i18n(m1); }))); if (opts.extNode) { self.append(opts.extNode); } if (opts.button) { self.append( $('') .append($('').text(fm.i18n(opts.button.text))) .on('mouseenter mouseleave', function(e) { $(this).toggleClass('ui-state-hover', e.type == 'mouseenter'); }) .on('click', opts.button.click || function(){}) ); } if (opts.width) { self.css('max-width', opts.width); } show(); }); };application/library/js/ui/path.js000064400000012225147577724760013072 0ustar00/** * @class elFinder ui * Display current folder path in statusbar. * Click on folder name in path - open folder * * @author Dmitry (dio) Levashov **/ $.fn.elfinderpath = function(fm, options) { "use strict"; return this.each(function() { var query = '', target = '', mimes = [], place = 'statusbar', clHover= fm.res('class', 'hover'), prefix = 'path' + (elFinder.prototype.uniqueid? elFinder.prototype.uniqueid : '') + '-', wzbase = $('
      '), path = $(this).addClass('elfinder-path').html(' ') .on('mousedown', 'span.elfinder-path-dir', function(e) { var hash = $(this).attr('id').substr(prefix.length); e.preventDefault(); if (hash != fm.cwd().hash) { $(this).addClass(clHover); if (query) { fm.exec('search', query, { target: hash, mime: mimes.join(' ') }); } else { fm.trigger('select', {selected : [hash]}).exec('open', hash); } } }) .prependTo(fm.getUI('statusbar').show()), roots = $('
      ').on('click', function(e) { e.stopPropagation(); e.preventDefault(); var roots = $.map(fm.roots, function(h) { return fm.file(h); }), raw = []; $.each(roots, function(i, f) { if (! f.phash && fm.root(fm.cwd().hash, true) !== f.hash) { raw.push({ label : fm.escape(f.i18 || f.name), icon : 'home', callback : function() { fm.exec('open', f.hash); }, options : { iconClass : f.csscls || '', iconImg : f.icon || '' } }); } }); fm.trigger('contextmenu', { raw: raw, x: e.pageX, y: e.pageY }); }).append('').appendTo(wzbase), render = function(cwd) { var dirs = [], names = []; $.each(fm.parents(cwd), function(i, hash) { var c = (cwd === hash)? 'elfinder-path-dir elfinder-path-cwd' : 'elfinder-path-dir', f = fm.file(hash), name = fm.escape(f.i18 || f.name); names.push(name); dirs.push(''+name+''); }); return dirs.join(''+fm.option('separator')+''); }, toWorkzone = function() { var prev; path.children('span.elfinder-path-dir').attr('style', ''); prev = fm.direction === 'ltr'? $('#'+prefix + fm.cwd().hash).prevAll('span.elfinder-path-dir:first') : $(); path.scrollLeft(prev.length? prev.position().left : 0); }, fit = function() { if (fm.UA.CSS.flex) { return; } var dirs = path.children('span.elfinder-path-dir'), cnt = dirs.length, m, bg = 0, ids; if (place === 'workzone' || cnt < 2) { dirs.attr('style', ''); return; } path.width(path.css('max-width')); dirs.css({maxWidth: (100/cnt)+'%', display: 'inline-block'}); m = path.width() - 9; path.children('span.elfinder-path-other').each(function() { m -= $(this).width(); }); ids = []; dirs.each(function(i) { var dir = $(this), w = dir.width(); m -= w; if (w < this.scrollWidth) { ids.push(i); } }); path.width(''); if (ids.length) { if (m > 0) { m = m / ids.length; $.each(ids, function(i, k) { var d = $(dirs[k]); d.css('max-width', d.width() + m); }); } dirs.last().attr('style', ''); } else { dirs.attr('style', ''); } }, hasUiTree, hasUiStat; fm.one('init', function() { hasUiTree = fm.getUI('tree').length; hasUiStat = fm.getUI('stat').length; if (! hasUiTree && options.toWorkzoneWithoutNavbar) { wzbase.append(path).insertBefore(fm.getUI('workzone')); place = 'workzone'; fm.bind('open', toWorkzone) .one('opendone', function() { fm.getUI().trigger('resize'); }); } }) .bind('open searchend parents', function() { var dirs = []; query = ''; target = ''; mimes = []; path.html(render(fm.cwd().hash)); if (Object.keys(fm.roots).length > 1) { path.css('margin', ''); roots.show(); } else { path.css('margin', 0); roots.hide(); } !hasUiStat && fit(); }) .bind('searchstart', function(e) { if (e.data) { query = e.data.query || ''; target = e.data.target || ''; mimes = e.data.mimes || []; } }) .bind('search', function(e) { var dirs = [], html = ''; if (target) { html = render(target); } else { html = fm.i18n('btnAll'); } path.html(''+fm.i18n('searcresult') + ': ' + html); fit(); }) // on swipe to navbar show/hide .bind('navbarshow navbarhide', function() { var wz = fm.getUI('workzone'); if (this.type === 'navbarshow') { fm.unbind('open', toWorkzone); path.prependTo(fm.getUI('statusbar')); wzbase.detach(); place = 'statusbar'; } else { wzbase.append(path).insertBefore(wz); place = 'workzone'; toWorkzone(); fm.bind('open', toWorkzone); } fm.trigger('uiresize'); }) .bind('resize uistatchange', fit); }); }; application/library/js/ui/dialog.js000064400000065054147577724760013405 0ustar00/** * @class elFinder dialog * * @author Dmitry (dio) Levashov **/ $.fn.elfinderdialog = function(opts, fm) { "use strict"; var platformWin = (window.navigator.platform.indexOf('Win') != -1), delta = {}, syncSize = { enabled: false, width: false, height: false, defaultSize: null }, fitSize = function(dialog) { var opts, node; if (syncSize.enabled) { node = fm.options.dialogContained? elfNode : $(window); opts = { maxWidth : syncSize.width? node.width() - delta.width : null, maxHeight: syncSize.height? node.height() - delta.height : null }; Object.assign(restoreStyle, opts); dialog.css(opts).trigger('resize'); if (dialog.data('hasResizable') && (dialog.resizable('option', 'maxWidth') < opts.maxWidth || dialog.resizable('option', 'maxHeight') < opts.maxHeight)) { dialog.resizable('option', opts); } } }, syncFunc = function(e) { var dialog = e.data; syncTm && cancelAnimationFrame(syncTm); syncTm = requestAnimationFrame(function() { var opts, offset; if (syncSize.enabled) { fitSize(dialog); } }); }, checkEditing = function() { var cldialog = 'elfinder-dialog', dialogs = elfNode.children('.' + cldialog + '.' + fm.res('class', 'editing') + ':visible'); fm[dialogs.length? 'disable' : 'enable'](); }, propagationEvents = {}, syncTm, dialog, elfNode, restoreStyle; if (fm && fm.ui) { elfNode = fm.getUI(); } else { elfNode = this.closest('.elfinder'); if (! fm) { fm = elfNode.elfinder('instance'); } } if (typeof opts === 'string') { if ((dialog = this.closest('.ui-dialog')).length) { if (opts === 'open') { if (dialog.css('display') === 'none') { // Need dialog.show() and hide() to detect elements size in open() callbacks dialog.trigger('posinit').show().trigger('open').hide(); dialog.fadeIn(120, function() { fm.trigger('dialogopened', {dialog: dialog}); }); } } else if (opts === 'close' || opts === 'destroy') { dialog.stop(true); if (dialog.is(':visible') || elfNode.is(':hidden')) { dialog.trigger('close'); fm.trigger('dialogclosed', {dialog: dialog}); } if (opts === 'destroy') { dialog.remove(); fm.trigger('dialogremoved', {dialog: dialog}); } else if (dialog.data('minimized')) { dialog.data('minimized').close(); } } else if (opts === 'toTop') { dialog.trigger('totop'); fm.trigger('dialogtotoped', {dialog: dialog}); } else if (opts === 'posInit') { dialog.trigger('posinit'); fm.trigger('dialogposinited', {dialog: dialog}); } else if (opts === 'tabstopsInit') { dialog.trigger('tabstopsInit'); fm.trigger('dialogtabstopsinited', {dialog: dialog}); } else if (opts === 'checkEditing') { checkEditing(); } } return this; } opts = Object.assign({}, $.fn.elfinderdialog.defaults, opts); if (opts.allowMinimize && opts.allowMinimize === 'auto') { opts.allowMinimize = this.find('textarea,input').length? true : false; } opts.openMaximized = opts.allowMinimize && opts.openMaximized; if (opts.headerBtnPos && opts.headerBtnPos === 'auto') { opts.headerBtnPos = platformWin? 'right' : 'left'; } if (opts.headerBtnOrder && opts.headerBtnOrder === 'auto') { opts.headerBtnOrder = platformWin? 'close:maximize:minimize' : 'close:minimize:maximize'; } if (opts.modal && opts.allowMinimize) { opts.allowMinimize = false; } if (fm.options.dialogContained) { syncSize.width = syncSize.height = syncSize.enabled = true; } else { syncSize.width = (opts.maxWidth === 'window'); syncSize.height = (opts.maxHeight === 'window'); if (syncSize.width || syncSize.height) { syncSize.enabled = true; } } propagationEvents = fm.arrayFlip(opts.propagationEvents, true); this.filter(':not(.ui-dialog-content)').each(function() { var self = $(this).addClass('ui-dialog-content ui-widget-content'), clactive = 'elfinder-dialog-active', cldialog = 'elfinder-dialog', clnotify = 'elfinder-dialog-notify', clhover = 'ui-state-hover', cltabstop = 'elfinder-tabstop', cl1stfocus = 'elfinder-focus', clmodal = 'elfinder-dialog-modal', id = parseInt(Math.random()*1000000), titlebar = $('
      '+opts.title+'
      '), buttonset = $('
      '), buttonpane = $('
      ') .append(buttonset), btnWidth = 0, btnCnt = 0, tabstops = $(), evCover = $('
      ').hide(), numberToTel = function() { if (opts.optimizeNumber) { dialog.find('input[type=number]').each(function() { $(this).attr('inputmode', 'numeric'); $(this).attr('pattern', '[0-9]*'); }); } }, tabstopsInit = function() { tabstops = dialog.find('.'+cltabstop); if (tabstops.length) { tabstops.attr('tabindex', '-1'); if (! tabstops.filter('.'+cl1stfocus).length) { buttonset.children('.'+cltabstop+':'+(platformWin? 'first' : 'last')).addClass(cl1stfocus); } } }, tabstopNext = function(cur) { var elms = tabstops.filter(':visible:enabled'), node = cur? null : elms.filter('.'+cl1stfocus+':first'); if (! node || ! node.length) { node = elms.first(); } if (cur) { $.each(elms, function(i, elm) { if (elm === cur && elms[i+1]) { node = elms.eq(i+1); return false; } }); } return node; }, tabstopPrev = function(cur) { var elms = tabstops.filter(':visible:enabled'), node = elms.last(); $.each(elms, function(i, elm) { if (elm === cur && elms[i-1]) { node = elms.eq(i-1); return false; } }); return node; }, makeHeaderBtn = function() { $.each(opts.headerBtnOrder.split(':').reverse(), function(i, v) { headerBtns[v] && headerBtns[v](); }); if (platformWin) { titlebar.children('.elfinder-titlebar-button').addClass('elfinder-titlebar-button-right'); } }, headerBtns = { close: function() { titlebar.prepend($('') .on('mousedown touchstart', function(e) { e.preventDefault(); e.stopPropagation(); self.elfinderdialog('close'); }) ); }, maximize: function() { if (opts.allowMaximize) { dialog.on('resize', function(e, data) { var full, elm; e.preventDefault(); e.stopPropagation(); if (data && data.maximize) { elm = titlebar.find('.elfinder-titlebar-full'); full = (data.maximize === 'on'); elm.children('span.ui-icon') .toggleClass('ui-icon-plusthick', ! full) .toggleClass('ui-icon-arrowreturnthick-1-s', full); if (full) { try { dialog.hasClass('ui-draggable') && dialog.draggable('disable'); dialog.hasClass('ui-resizable') && dialog.resizable('disable'); } catch(e) {} self.css('width', '100%').css('height', dialog.height() - dialog.children('.ui-dialog-titlebar').outerHeight(true) - buttonpane.outerHeight(true)); } else { self.attr('style', elm.data('style')); elm.removeData('style'); posCheck(); try { dialog.hasClass('ui-draggable') && dialog.draggable('enable'); dialog.hasClass('ui-resizable') && dialog.resizable('enable'); } catch(e) {} } dialog.trigger('resize', {init: true}); } }); titlebar.prepend($('') .on('mousedown touchstart', function(e) { var elm = $(this); e.preventDefault(); e.stopPropagation(); if (!dialog.hasClass('elfinder-maximized') && typeof elm.data('style') === 'undefined') { self.height(self.height()); elm.data('style', self.attr('style') || ''); } fm.toggleMaximize(dialog); typeof(opts.maximize) === 'function' && opts.maximize.call(self[0]); }) ); } }, minimize: function() { var btn, mnode, doffset; if (opts.allowMinimize) { btn = $('') .on('mousedown touchstart', function(e) { var $this = $(this), tray = fm.getUI('bottomtray'), dumStyle = { width: 70, height: 24 }, dum = $('
      ').css(dumStyle).addClass(dialog.get(0).className + ' elfinder-dialog-minimized'), close = function() { mnode.remove(); dialog.removeData('minimized').show(); self.elfinderdialog('close'); }, pos = {}; e.preventDefault(); e.stopPropagation(); if (!dialog.data('minimized')) { // minimize doffset = dialog.data('minimized', { dialog : function() { return mnode; }, show : function() { mnode.show(); }, hide : function() { mnode.hide(); }, close : close, title : function(v) { mnode.children('.ui-dialog-titlebar').children('.elfinder-dialog-title').text(v); } }).position(); mnode = dialog.clone().on('mousedown', function() { $this.trigger('mousedown'); }).removeClass('ui-draggable ui-resizable elfinder-frontmost'); tray.append(dum); Object.assign(pos, dum.offset(), dumStyle); dum.remove(); mnode.height(dialog.height()).children('.ui-dialog-content:first').empty(); fm.toHide(dialog.before(mnode)); mnode.children('.ui-dialog-content:first,.ui-dialog-buttonpane,.ui-resizable-handle').remove(); mnode.find('.elfinder-titlebar-minimize,.elfinder-titlebar-full').remove(); mnode.find('.ui-dialog-titlebar-close').on('mousedown', function(e) { e.stopPropagation(); e.preventDefault(); close(); }); mnode.animate(pos, function() { mnode.attr('style', '') .css({ maxWidth: dialog.width() }) .addClass('elfinder-dialog-minimized') .appendTo(tray); checkEditing(); typeof(opts.minimize) === 'function' && opts.minimize.call(self[0]); }); } else { //restore dialog.removeData('minimized').before(mnode.css(Object.assign({'position': 'absolute'}, mnode.offset()))); fm.toFront(mnode); mnode.animate(Object.assign({ width: dialog.width(), height: dialog.height() }, doffset), function() { dialog.show(); fm.toFront(dialog); mnode.remove(); posCheck(); checkEditing(); dialog.trigger('resize', {init: true}); typeof(opts.minimize) === 'function' && opts.minimize.call(self[0]); }); } }); titlebar.on('dblclick', function(e) { $(this).children('.elfinder-titlebar-minimize').trigger('mousedown'); }).prepend(btn); dialog.on('togleminimize', function() { btn.trigger('mousedown'); }); } } }, dialog = $('
      ') .hide() .append(self) .appendTo(elfNode) .draggable({ containment : fm.options.dialogContained? elfNode : null, handle : '.ui-dialog-titlebar', start : function() { evCover.show(); }, drag : function(e, ui) { var top = ui.offset.top, left = ui.offset.left; if (top < 0) { ui.position.top = ui.position.top - top; } if (left < 0) { ui.position.left = ui.position.left - left; } if (fm.options.dialogContained) { ui.position.top < 0 && (ui.position.top = 0); ui.position.left < 0 && (ui.position.left = 0); } }, stop : function(e, ui) { evCover.hide(); dialog.css({height : opts.height}); self.data('draged', true); } }) .css({ width : opts.width, height : opts.height, minWidth : opts.minWidth, minHeight : opts.minHeight, maxWidth : opts.maxWidth, maxHeight : opts.maxHeight }) .on('touchstart touchmove touchend click dblclick mouseup mouseenter mouseleave mouseout mouseover mousemove', function(e) { // stopPropagation of user action events !propagationEvents[e.type] && e.stopPropagation(); }) .on('mousedown', function(e) { !propagationEvents[e.type] && e.stopPropagation(); requestAnimationFrame(function() { if (dialog.is(':visible') && !dialog.hasClass('elfinder-frontmost')) { toFocusNode = $(':focus'); if (!toFocusNode.length) { toFocusNode = void(0); } dialog.trigger('totop'); } }); }) .on('open', function() { dialog.data('margin-y', self.outerHeight(true) - self.height()); if (syncSize.enabled) { if (opts.height && opts.height !== 'auto') { dialog.trigger('resize', {init: true}); } if (!syncSize.defaultSize) { syncSize.defaultSize = { width: self.width(), height: self.height() }; } fitSize(dialog); dialog.trigger('resize').trigger('posinit'); elfNode.on('resize.'+fm.namespace, dialog, syncFunc); } if (!dialog.hasClass(clnotify)) { elfNode.children('.'+cldialog+':visible:not(.'+clnotify+')').each(function() { var d = $(this), top = parseInt(d.css('top')), left = parseInt(d.css('left')), _top = parseInt(dialog.css('top')), _left = parseInt(dialog.css('left')), ct = Math.abs(top - _top) < 10, cl = Math.abs(left - _left) < 10; if (d[0] != dialog[0] && (ct || cl)) { dialog.css({ top : ct ? (top + 10) : _top, left : cl ? (left + 10) : _left }); } }); } if (dialog.data('modal')) { dialog.addClass(clmodal); fm.getUI('overlay').elfinderoverlay('show'); } dialog.trigger('totop'); opts.openMaximized && fm.toggleMaximize(dialog); fm.trigger('dialogopen', {dialog: dialog}); typeof(opts.open) == 'function' && $.proxy(opts.open, self[0])(); if (opts.closeOnEscape) { $(document).on('keydown.'+id, function(e) { if (e.keyCode == $.ui.keyCode.ESCAPE && dialog.hasClass('elfinder-frontmost')) { self.elfinderdialog('close'); } }); } dialog.hasClass(fm.res('class', 'editing')) && checkEditing(); }) .on('close', function(e) { var dialogs, dfd; if (opts.beforeclose && typeof opts.beforeclose === 'function') { dfd = opts.beforeclose(); if (!dfd || !dfd.promise) { dfd = !dfd? $.Deferred().reject() : $.Deferred().resolve(); } } else { dfd = $.Deferred().resolve(); } dfd.done(function() { syncSize.enabled && elfNode.off('resize.'+fm.namespace, syncFunc); if (opts.closeOnEscape) { $(document).off('keyup.'+id); } if (opts.allowMaximize) { fm.toggleMaximize(dialog, false); } fm.toHide(dialog); dialog.data('modal') && fm.getUI('overlay').elfinderoverlay('hide'); if (typeof(opts.close) == 'function') { $.proxy(opts.close, self[0])(); } if (opts.destroyOnClose && dialog.parent().length) { dialog.hide().remove(); } // get focus to next dialog dialogs = elfNode.children('.'+cldialog+':visible'); dialog.hasClass(fm.res('class', 'editing')) && checkEditing(); }); }) .on('totop frontmost', function() { var s = fm.storage('autoFocusDialog'); dialog.data('focusOnMouseOver', s? (s > 0) : fm.options.uiOptions.dialog.focusOnMouseOver); if (dialog.data('minimized')) { titlebar.children('.elfinder-titlebar-minimize').trigger('mousedown'); } if (!dialog.data('modal') && fm.getUI('overlay').is(':visible')) { fm.getUI('overlay').before(dialog); } else { fm.toFront(dialog); } elfNode.children('.'+cldialog+':not(.'+clmodal+')').removeClass(clactive); dialog.addClass(clactive); ! fm.UA.Mobile && (toFocusNode || tabstopNext()).trigger('focus'); toFocusNode = void(0); }) .on('posinit', function() { var css = opts.position, nodeOffset, minTop, minLeft, outerSize, win, winSize, nodeFull; if (dialog.hasClass('elfinder-maximized')) { return; } if (! css && ! dialog.data('resizing')) { nodeFull = elfNode.hasClass('elfinder-fullscreen') || fm.options.enableAlways; dialog.css(nodeFull? { maxWidth : '100%', maxHeight : '100%', overflow : 'auto' } : restoreStyle); if (fm.UA.Mobile && !nodeFull && dialog.data('rotated') === fm.UA.Rotated) { return; } dialog.data('rotated', fm.UA.Rotated); win = $(window); nodeOffset = elfNode.offset(); outerSize = { width : dialog.outerWidth(true), height: dialog.outerHeight(true) }; outerSize.right = nodeOffset.left + outerSize.width; outerSize.bottom = nodeOffset.top + outerSize.height; winSize = { scrLeft: win.scrollLeft(), scrTop : win.scrollTop(), width : win.width(), height : win.height() }; winSize.right = winSize.scrLeft + winSize.width; winSize.bottom = winSize.scrTop + winSize.height; if (fm.options.dialogContained || nodeFull) { minTop = 0; minLeft = 0; } else { minTop = nodeOffset.top * -1 + winSize.scrTop; minLeft = nodeOffset.left * -1 + winSize.scrLeft; } css = { top : outerSize.height >= winSize.height? minTop : Math.max(minTop, parseInt((elfNode.height() - outerSize.height)/2 - 42)), left : outerSize.width >= winSize.width ? minLeft : Math.max(minLeft, parseInt((elfNode.width() - outerSize.width)/2)) }; if (outerSize.right + css.left > winSize.right) { css.left = Math.max(minLeft, winSize.right - outerSize.right); } if (outerSize.bottom + css.top > winSize.bottom) { css.top = Math.max(minTop, winSize.bottom - outerSize.bottom); } } if (opts.absolute) { css.position = 'absolute'; } css && dialog.css(css); }) .on('resize', function(e, data) { var oh = 0, init = data && data.init, h, minH, maxH, autoH; if ((data && (data.minimize || data.maxmize)) || dialog.data('minimized')) { return; } e.stopPropagation(); e.preventDefault(); dialog.children('.ui-widget-header,.ui-dialog-buttonpane').each(function() { oh += $(this).outerHeight(true); }); autoH = (opts.height === 'auto')? true : false; if (autoH) { self.css({'max-height': '', 'height': 'auto'}); } if (!init && syncSize.enabled && !e.originalEvent && !dialog.hasClass('elfinder-maximized')) { h = dialog.height(); minH = dialog.css('min-height') || h; maxH = dialog.css('max-height') || h; if (minH.match(/%/)) { minH = Math.floor((parseInt(minH) / 100) * dialog.parent().height()); } else { minH = parseInt(minH); } if (maxH.match(/%/)) { maxH = Math.floor((parseInt(maxH) / 100) * dialog.parent().height()); } else { maxH = parseInt(maxH); } h = Math.min((autoH? dialog.height() : syncSize.defaultSize.height), Math.max(maxH, minH) - oh - dialog.data('margin-y')); } else { h = dialog.height() - oh - dialog.data('margin-y'); } self.css(autoH? 'max-height' : 'height', h); if (init) { return; } posCheck(); minH = self.height(); minH = (h < minH)? (minH + oh + dialog.data('margin-y')) : opts.minHeight; dialog.css('min-height', minH); dialog.data('hasResizable') && dialog.resizable('option', { minHeight: minH }); if (typeof(opts.resize) === 'function') { $.proxy(opts.resize, self[0])(e, data); } }) .on('tabstopsInit', tabstopsInit) .on('focus', '.'+cltabstop, function() { $(this).addClass(clhover).parent('label').addClass(clhover); this.id && $(this).parent().find('label[for='+this.id+']').addClass(clhover); }) .on('click', 'select.'+cltabstop, function() { var node = $(this); node.data('keepFocus')? node.removeData('keepFocus') : node.data('keepFocus', true); }) .on('blur', '.'+cltabstop, function() { $(this).removeClass(clhover).removeData('keepFocus').parent('label').removeClass(clhover); this.id && $(this).parent().find('label[for='+this.id+']').removeClass(clhover); }) .on('mouseenter mouseleave', '.'+cltabstop+',label', function(e) { var $this = $(this), labelfor; if (this.nodeName === 'LABEL') { if (!$this.children('.'+cltabstop).length && (!(labelfor = $this.attr('for')) || !$('#'+labelfor).hasClass(cltabstop))) { return; } } if (opts.btnHoverFocus && dialog.data('focusOnMouseOver')) { if (e.type === 'mouseenter' && ! $(':focus').data('keepFocus')) { $this.trigger('focus'); } } else { $this.toggleClass(clhover, e.type == 'mouseenter'); } }) .on('keydown', '.'+cltabstop, function(e) { var $this = $(this), esc, move, moveTo; if ($this.is(':focus')) { esc = e.keyCode === $.ui.keyCode.ESCAPE; if (e.keyCode === $.ui.keyCode.ENTER) { e.preventDefault(); $this.trigger('click'); } else if (((e.keyCode === $.ui.keyCode.TAB) && e.shiftKey) || e.keyCode === $.ui.keyCode.LEFT || e.keyCode == $.ui.keyCode.UP) { move = 'prev'; } else if (e.keyCode === $.ui.keyCode.TAB || e.keyCode == $.ui.keyCode.RIGHT || e.keyCode == $.ui.keyCode.DOWN) { move = 'next'; } if (move && ( ($this.is('textarea') && !(e.ctrlKey || e.metaKey)) || ($this.is('select,span.ui-slider-handle') && e.keyCode !== $.ui.keyCode.TAB) || ($this.is('input:not(:checkbox,:radio)') && (!(e.ctrlKey || e.metaKey) && e.keyCode === $.ui.keyCode[move === 'prev'? 'LEFT':'RIGHT'])) ) ) { e.stopPropagation(); return; } if (!esc) { e.stopPropagation(); } else if ($this.is('input:not(:checkbox,:radio),textarea')) { if ($this.val() !== '') { $this.val(''); e.stopPropagation(); } } if (move) { e.preventDefault(); (move === 'prev'? tabstopPrev : tabstopNext)(this).trigger('focus'); } } }) .data({modal: opts.modal}), posCheck = function() { var node = fm.getUI(), pos; if (node.hasClass('elfinder-fullscreen')) { pos = dialog.position(); dialog.css('top', Math.max(Math.min(Math.max(pos.top, 0), node.height() - 100), 0)); dialog.css('left', Math.max(Math.min(Math.max(pos.left, 0), node.width() - 200), 0)); } }, maxSize, toFocusNode; dialog.prepend(titlebar); makeHeaderBtn(); $.each(opts.buttons, function(name, cb) { var button = $('') .on('click', $.proxy(cb, self[0])); if (cb._cssClass) { button.addClass(cb._cssClass); } if (platformWin) { buttonset.append(button); } else { buttonset.prepend(button); } }); if (buttonset.children().length) { dialog.append(buttonpane); dialog.show(); buttonpane.find('button').each(function(i, btn) { btnWidth += $(btn).outerWidth(true); }); dialog.hide(); btnWidth += 20; if (dialog.width() < btnWidth) { dialog.width(btnWidth); } } dialog.append(evCover); if (syncSize.enabled) { delta.width = dialog.outerWidth(true) - dialog.width() + ((dialog.outerWidth() - dialog.width()) / 2); delta.height = dialog.outerHeight(true) - dialog.height() + ((dialog.outerHeight() - dialog.height()) / 2); } if (fm.options.dialogContained) { maxSize = { maxWidth: elfNode.width() - delta.width, maxHeight: elfNode.height() - delta.height }; opts.maxWidth = opts.maxWidth? Math.min(maxSize.maxWidth, opts.maxWidth) : maxSize.maxWidth; opts.maxHeight = opts.maxHeight? Math.min(maxSize.maxHeight, opts.maxHeight) : maxSize.maxHeight; dialog.css(maxSize); } restoreStyle = { maxWidth : dialog.css('max-width'), maxHeight : dialog.css('max-height'), overflow : dialog.css('overflow') }; if (opts.resizable) { dialog.resizable({ minWidth : opts.minWidth, minHeight : opts.minHeight, maxWidth : opts.maxWidth, maxHeight : opts.maxHeight, start : function() { evCover.show(); if (dialog.data('resizing') !== true && dialog.data('resizing')) { clearTimeout(dialog.data('resizing')); } dialog.data('resizing', true); }, stop : function(e, ui) { evCover.hide(); dialog.data('resizing', setTimeout(function() { dialog.data('resizing', false); }, 200)); if (syncSize.enabled) { syncSize.defaultSize = { width: self.width(), height: self.height() }; } } }).data('hasResizable', true); } numberToTel(); tabstopsInit(); typeof(opts.create) == 'function' && $.proxy(opts.create, this)(); if (opts.autoOpen) { if (opts.open) { requestAnimationFrame(function() { self.elfinderdialog('open'); }); } else { self.elfinderdialog('open'); } } if (opts.resize) { fm.bind('themechange', function() { setTimeout(function() { dialog.data('margin-y', self.outerHeight(true) - self.height()); dialog.trigger('resize', {init: true}); }, 300); }); } }); return this; }; $.fn.elfinderdialog.defaults = { cssClass : '', title : '', modal : false, resizable : true, autoOpen : true, closeOnEscape : true, destroyOnClose : false, buttons : {}, btnHoverFocus : true, position : null, absolute : false, width : 320, height : 'auto', minWidth : 200, minHeight : 70, maxWidth : null, maxHeight : null, allowMinimize : 'auto', allowMaximize : false, openMaximized : false, headerBtnPos : 'auto', headerBtnOrder : 'auto', optimizeNumber : true, propagationEvents : ['mousemove', 'mouseup'] }; application/library/js/ui/navbar.js000064400000012274147577724760013413 0ustar00/** * @class elfindernav - elFinder container for diretories tree and places * * @author Dmitry (dio) Levashov **/ $.fn.elfindernavbar = function(fm, opts) { "use strict"; this.not('.elfinder-navbar').each(function() { var nav = $(this).hide().addClass('ui-state-default elfinder-navbar'), parent = nav.css('overflow', 'hidden').parent(), wz = parent.children('.elfinder-workzone').append(nav), ltr = fm.direction == 'ltr', delta, deltaW, handle, swipeHandle, autoHide, setWidth, navdock, setWzRect = function() { var cwd = fm.getUI('cwd'), wz = fm.getUI('workzone'), wzRect = wz.data('rectangle'), cwdOffset = cwd.offset(); wz.data('rectangle', Object.assign(wzRect, { cwdEdge: (fm.direction === 'ltr')? cwdOffset.left : cwdOffset.left + cwd.width() })); }, setDelta = function() { nav.css('overflow', 'hidden'); delta = Math.round(nav.outerHeight() - nav.height()); deltaW = Math.round(navdock.outerWidth() - navdock.innerWidth()); nav.css('overflow', 'auto'); }; fm.one('init', function() { navdock = fm.getUI('navdock'); var set = function() { setDelta(); fm.bind('wzresize', function() { var navdockH = 0; navdock.width(nav.outerWidth() - deltaW); if (navdock.children().length > 1) { navdockH = navdock.outerHeight(true); } nav.height(wz.height() - navdockH - delta); }).trigger('wzresize'); }; if (fm.cssloaded) { set(); } else { fm.one('cssloaded', set); } }) .one('opendone',function() { handle && handle.trigger('resize'); nav.css('overflow', 'auto'); }).bind('themechange', setDelta); if (fm.UA.Touch) { autoHide = fm.storage('autoHide') || {}; if (typeof autoHide.navbar === 'undefined') { autoHide.navbar = (opts.autoHideUA && opts.autoHideUA.length > 0 && $.grep(opts.autoHideUA, function(v){ return fm.UA[v]? true : false; }).length); fm.storage('autoHide', autoHide); } if (autoHide.navbar) { fm.one('init', function() { if (nav.children().length) { fm.uiAutoHide.push(function(){ nav.stop(true, true).trigger('navhide', { duration: 'slow', init: true }); }); } }); } fm.bind('load', function() { if (nav.children().length) { swipeHandle = $('
      ').hide().appendTo(wz); if (swipeHandle.css('pointer-events') !== 'none') { swipeHandle.remove(); swipeHandle = null; } } }); nav.on('navshow navhide', function(e, data) { var mode = (e.type === 'navshow')? 'show' : 'hide', duration = (data && data.duration)? data.duration : 'fast', handleW = (data && data.handleW)? data.handleW : Math.max(50, fm.getUI().width() / 10); nav.stop(true, true)[mode]({ duration: duration, step : function() { fm.trigger('wzresize'); }, complete: function() { if (swipeHandle) { if (mode === 'show') { swipeHandle.stop(true, true).hide(); } else { swipeHandle.width(handleW? handleW : ''); fm.resources.blink(swipeHandle, 'slowonce'); } } fm.trigger('navbar'+ mode); data.init && fm.trigger('uiautohide'); setWzRect(); } }); autoHide.navbar = (mode !== 'show'); fm.storage('autoHide', Object.assign(fm.storage('autoHide'), {navbar: autoHide.navbar})); }).on('touchstart', function(e) { if ($(this)['scroll' + (fm.direction === 'ltr'? 'Right' : 'Left')]() > 5) { e.originalEvent._preventSwipeX = true; } }); } if (! fm.UA.Mobile) { handle = nav.resizable({ handles : ltr ? 'e' : 'w', minWidth : opts.minWidth || 150, maxWidth : opts.maxWidth || 500, resize : function() { fm.trigger('wzresize'); }, stop : function(e, ui) { fm.storage('navbarWidth', ui.size.width); setWzRect(); } }) .on('resize scroll', function(e) { var $this = $(this), tm = $this.data('posinit'); e.preventDefault(); e.stopPropagation(); if (! ltr && e.type === 'resize') { nav.css('left', 0); } tm && cancelAnimationFrame(tm); $this.data('posinit', requestAnimationFrame(function() { var offset = (fm.UA.Opera && nav.scrollLeft())? 20 : 2; handle.css('top', 0).css({ top : parseInt(nav.scrollTop())+'px', left : ltr ? 'auto' : parseInt(nav.scrollRight() - offset) * -1, right: ltr ? parseInt(nav.scrollLeft() - offset) * -1 : 'auto' }); if (e.type === 'resize') { fm.getUI('cwd').trigger('resize'); } })); }) .children('.ui-resizable-handle').addClass('ui-front'); } if (setWidth = fm.storage('navbarWidth')) { nav.width(setWidth); } else { if (fm.UA.Mobile) { fm.one(fm.cssloaded? 'init' : 'cssloaded', function() { var set = function() { setWidth = nav.parent().width() / 2; if (nav.data('defWidth') > setWidth) { nav.width(setWidth); } else { nav.width(nav.data('defWidth')); } nav.data('width', nav.width()); fm.trigger('wzresize'); }; nav.data('defWidth', nav.width()); $(window).on('resize.' + fm.namespace, set); set(); }); } } }); return this; }; application/library/js/ui/fullscreenbutton.js000064400000001160147577724760015530 0ustar00/** * @class elFinder toolbar button to switch full scrren mode. * * @author Naoki Sawada **/ $.fn.elfinderfullscreenbutton = function(cmd) { "use strict"; return this.each(function() { var button = $(this).elfinderbutton(cmd), icon = button.children('.elfinder-button-icon'), tm; cmd.change(function() { tm && cancelAnimationFrame(tm); tm = requestAnimationFrame(function() { var fullscreen = cmd.value; icon.addClass('elfinder-button-icon-fullscreen').toggleClass('elfinder-button-icon-unfullscreen', fullscreen); cmd.className = fullscreen? 'unfullscreen' : ''; }); }); }); }; application/library/js/ui/contextmenu.js000064400000052361147577724760014514 0ustar00/** * @class elFinder contextmenu * * @author Dmitry (dio) Levashov **/ $.fn.elfindercontextmenu = function(fm) { "use strict"; return this.each(function() { var self = $(this), cmItem = 'elfinder-contextmenu-item', smItem = 'elfinder-contextsubmenu-item', exIcon = 'elfinder-contextmenu-extra-icon', cHover = fm.res('class', 'hover'), dragOpt = { distance: 8, start: function() { menu.data('drag', true).data('touching') && menu.find('.'+cHover).removeClass(cHover); }, stop: function() { menu.data('draged', true).removeData('drag'); } }, menu = $(this).addClass('touch-punch ui-helper-reset ui-front ui-widget ui-state-default ui-corner-all elfinder-contextmenu elfinder-contextmenu-'+fm.direction) .hide() .on('touchstart', function(e) { menu.data('touching', true).children().removeClass(cHover); }) .on('touchend', function(e) { menu.removeData('touching'); }) .on('mouseenter mouseleave', '.'+cmItem, function(e) { $(this).toggleClass(cHover, (e.type === 'mouseenter' || (! menu.data('draged') && menu.data('submenuKeep'))? true : false)); if (menu.data('draged') && menu.data('submenuKeep')) { menu.find('.elfinder-contextmenu-sub:visible').parent().addClass(cHover); } }) .on('mouseenter mouseleave', '.'+exIcon, function(e) { $(this).parent().toggleClass(cHover, e.type === 'mouseleave'); }) .on('mouseenter mouseleave', '.'+cmItem+',.'+smItem, function(e) { var setIndex = function(target, sub) { $.each(sub? subnodes : nodes, function(i, n) { if (target[0] === n) { (sub? subnodes : nodes)._cur = i; if (sub) { subselected = target; } else { selected = target; } return false; } }); }; if (e.originalEvent) { var target = $(this), unHover = function() { if (selected && !selected.children('div.elfinder-contextmenu-sub:visible').length) { selected.removeClass(cHover); } }; if (e.type === 'mouseenter') { // mouseenter if (target.hasClass(smItem)) { // submenu if (subselected) { subselected.removeClass(cHover); } if (selected) { subnodes = selected.find('div.'+smItem); } setIndex(target, true); } else { // menu unHover(); setIndex(target); } } else { // mouseleave if (target.hasClass(smItem)) { //submenu subselected = null; subnodes = null; } else { // menu unHover(); (function(sel) { setTimeout(function() { if (sel === selected) { selected = null; } }, 250); })(selected); } } } }) .on('contextmenu', function(){return false;}) .on('mouseup', function() { setTimeout(function() { menu.removeData('draged'); }, 100); }) .draggable(dragOpt), ltr = fm.direction === 'ltr', subpos = ltr? 'left' : 'right', types = Object.assign({}, fm.options.contextmenu), tpl = '
      {label}
      ', item = function(label, icon, callback, opts) { var className = '', style = '', iconClass = '', v, pos; if (opts) { if (opts.className) { className = ' ' + opts.className; } if (opts.iconClass) { iconClass = opts.iconClass; icon = ''; } if (opts.iconImg) { v = opts.iconImg.split(/ +/); pos = v[1] && v[2]? fm.escape(v[1] + 'px ' + v[2] + 'px') : ''; style = ' style="background:url(\''+fm.escape(v[0])+'\') '+(pos? pos : '0 0')+' no-repeat;'+(pos? '' : 'posbackground-size:contain;')+'"'; } } return $(tpl.replace('{icon}', icon ? 'elfinder-button-icon-'+icon : (iconClass? iconClass : '')) .replace('{label}', label) .replace('{style}', style) .replace('{className}', className)) .on('click', function(e) { e.stopPropagation(); e.preventDefault(); callback(); }); }, urlIcon = function(iconUrl) { var v = iconUrl.split(/ +/), pos = v[1] && v[2]? (v[1] + 'px ' + v[2] + 'px') : ''; return { backgroundImage: 'url("'+v[0]+'")', backgroundRepeat: 'no-repeat', backgroundPosition: pos? pos : '', backgroundSize: pos? '' : 'contain' }; }, base, cwd, nodes, selected, subnodes, subselected, autoSyncStop, subHoverTm, autoToggle = function() { var evTouchStart = 'touchstart.contextmenuAutoToggle'; menu.data('hideTm') && clearTimeout(menu.data('hideTm')); if (menu.is(':visible')) { menu.on('touchstart', function(e) { if (e.originalEvent.touches.length > 1) { return; } menu.stop(); fm.toFront(menu); menu.data('hideTm') && clearTimeout(menu.data('hideTm')); }) .data('hideTm', setTimeout(function() { if (menu.is(':visible')) { cwd.find('.elfinder-cwd-file').off(evTouchStart); cwd.find('.elfinder-cwd-file.ui-selected') .one(evTouchStart, function(e) { if (e.originalEvent.touches.length > 1) { return; } var tgt = $(e.target); if (menu.first().length && !tgt.is('input:checkbox') && !tgt.hasClass('elfinder-cwd-select')) { e.stopPropagation(); //e.preventDefault(); open(e.originalEvent.touches[0].pageX, e.originalEvent.touches[0].pageY); cwd.data('longtap', true) tgt.one('touchend', function() { setTimeout(function() { cwd.removeData('longtap'); }, 80); }); return; } cwd.find('.elfinder-cwd-file').off(evTouchStart); }) .one('unselect.'+fm.namespace, function() { cwd.find('.elfinder-cwd-file').off(evTouchStart); }); menu.fadeOut({ duration: 300, fail: function() { menu.css('opacity', '1').show(); }, done: function() { fm.toHide(menu); } }); } }, 4500)); } }, keyEvts = function(e) { var code = e.keyCode, ESC = $.ui.keyCode.ESCAPE, ENT = $.ui.keyCode.ENTER, LEFT = $.ui.keyCode.LEFT, RIGHT = $.ui.keyCode.RIGHT, UP = $.ui.keyCode.UP, DOWN = $.ui.keyCode.DOWN, subent = fm.direction === 'ltr'? RIGHT : LEFT, sublev = subent === RIGHT? LEFT : RIGHT; if ($.inArray(code, [ESC, ENT, LEFT, RIGHT, UP, DOWN]) !== -1) { e.preventDefault(); e.stopPropagation(); e.stopImmediatePropagation(); if (code == ESC || code === sublev) { if (selected && subnodes && subselected) { subselected.trigger('mouseleave').trigger('submenuclose'); selected.addClass(cHover); subnodes = null; subselected = null; } else { code == ESC && close(); } } else if (code == UP || code == DOWN) { if (subnodes) { if (subselected) { subselected.trigger('mouseleave'); } if (code == DOWN && (! subselected || subnodes.length <= ++subnodes._cur)) { subnodes._cur = 0; } else if (code == UP && (! subselected || --subnodes._cur < 0)) { subnodes._cur = subnodes.length - 1; } subselected = subnodes.eq(subnodes._cur).trigger('mouseenter'); } else { subnodes = null; if (selected) { selected.trigger('mouseleave'); } if (code == DOWN && (! selected || nodes.length <= ++nodes._cur)) { nodes._cur = 0; } else if (code == UP && (! selected || --nodes._cur < 0)) { nodes._cur = nodes.length - 1; } selected = nodes.eq(nodes._cur).addClass(cHover); } } else if (selected && (code == ENT || code === subent)) { if (selected.hasClass('elfinder-contextmenu-group')) { if (subselected) { code == ENT && subselected.click(); } else { selected.trigger('mouseenter'); subnodes = selected.find('div.'+smItem); subnodes._cur = 0; subselected = subnodes.first().addClass(cHover); } } else { code == ENT && selected.click(); } } } }, open = function(x, y, css) { var width = menu.outerWidth(), height = menu.outerHeight(), bstyle = base.attr('style'), bpos = base.offset(), bwidth = base.width(), bheight = base.height(), mw = fm.UA.Mobile? 40 : 2, mh = fm.UA.Mobile? 20 : 2, x = x - (bpos? bpos.left : 0), y = y - (bpos? bpos.top : 0), css = Object.assign(css || {}, { top : Math.max(0, y + mh + height < bheight ? y + mh : y - (y + height - bheight)), left : Math.max(0, (x < width + mw || x + mw + width < bwidth)? x + mw : x - mw - width), opacity : '1' }), evts; autoSyncStop = true; fm.autoSync('stop'); base.width(bwidth); menu.stop().removeAttr('style').css(css); fm.toFront(menu); menu.show(); base.attr('style', bstyle); css[subpos] = parseInt(menu.width()); menu.find('.elfinder-contextmenu-sub').css(css); if (fm.UA.iOS) { $('div.elfinder div.overflow-scrolling-touch').css('-webkit-overflow-scrolling', 'auto'); } selected = null; subnodes = null; subselected = null; $(document).on('keydown.' + fm.namespace, keyEvts); evts = $._data(document).events; if (evts && evts.keydown) { evts.keydown.unshift(evts.keydown.pop()); } fm.UA.Mobile && autoToggle(); requestAnimationFrame(function() { fm.getUI().one('click.' + fm.namespace, close); }); }, close = function() { fm.getUI().off('click.' + fm.namespace, close); $(document).off('keydown.' + fm.namespace, keyEvts); currentType = currentTargets = null; if (menu.is(':visible') || menu.children().length) { fm.toHide(menu.removeAttr('style').empty().removeData('submenuKeep')); try { if (! menu.draggable('instance')) { menu.draggable(dragOpt); } } catch(e) { if (! menu.hasClass('ui-draggable')) { menu.draggable(dragOpt); } } if (menu.data('prevNode')) { menu.data('prevNode').after(menu); menu.removeData('prevNode'); } fm.trigger('closecontextmenu'); if (fm.UA.iOS) { $('div.elfinder div.overflow-scrolling-touch').css('-webkit-overflow-scrolling', 'touch'); } } autoSyncStop && fm.searchStatus.state < 1 && ! fm.searchStatus.ininc && fm.autoSync(); autoSyncStop = false; }, create = function(type, targets) { var sep = false, insSep = false, disabled = [], isCwd = type === 'cwd', selcnt = 0, cmdMap; currentType = type; currentTargets = targets; // get current uiCmdMap option if (!(cmdMap = fm.option('uiCmdMap', isCwd? void(0) : targets[0]))) { cmdMap = {}; } if (!isCwd) { disabled = fm.getDisabledCmds(targets); } selcnt = fm.selected().length; if (selcnt > 1) { menu.append('
      ' + fm.i18n('selectedItems', ''+selcnt) + '
      '); } nodes = $(); $.each(types[type]||[], function(i, name) { var cmd, cmdName, useMap, node, submenu, hover; if (name === '|') { if (sep) { insSep = true; } return; } if (cmdMap[name]) { cmdName = cmdMap[name]; useMap = true; } else { cmdName = name; } cmd = fm.getCommand(cmdName); if (cmd && !isCwd && (!fm.searchStatus.state || !cmd.disableOnSearch)) { cmd.__disabled = cmd._disabled; cmd._disabled = !(cmd.alwaysEnabled || (fm._commands[cmdName] ? $.inArray(name, disabled) === -1 && (!useMap || !disabled[cmdName]) : false)); $.each(cmd.linkedCmds, function(i, n) { var c; if (c = fm.getCommand(n)) { c.__disabled = c._disabled; c._disabled = !(c.alwaysEnabled || (fm._commands[n] ? !disabled[n] : false)); } }); } if (cmd && !cmd._disabled && cmd.getstate(targets) != -1) { if (cmd.variants) { if (!cmd.variants.length) { return; } node = item(cmd.title, cmd.className? cmd.className : cmd.name, function(){}, cmd.contextmenuOpts); submenu = $('
      ') .hide() .css('max-height', fm.getUI().height() - 30) .appendTo(node.append('')); hover = function(show){ if (! show) { submenu.hide(); } else { var bstyle = base.attr('style'); base.width(base.width()); // top: '-1000px' to prevent visible scrollbar of window with the elFinder option `height: '100%'` submenu.css({ top: '-1000px', left: 'auto', right: 'auto' }); var nodeOffset = node.offset(), nodeleft = nodeOffset.left, nodetop = nodeOffset.top, nodewidth = node.outerWidth(), width = submenu.outerWidth(true), height = submenu.outerHeight(true), baseOffset = base.offset(), wwidth = baseOffset.left + base.width(), wheight = baseOffset.top + base.height(), cltr = ltr, x = nodewidth, y, over; if (ltr) { over = (nodeleft + nodewidth + width) - wwidth; if (over > 10) { if (nodeleft > width - 5) { x = x - 5; cltr = false; } else { if (!fm.UA.Mobile) { x = nodewidth - over; } } } } else { over = width - nodeleft; if (over > 0) { if ((nodeleft + nodewidth + width - 15) < wwidth) { x = x - 5; cltr = true; } else { if (!fm.UA.Mobile) { x = nodewidth - over; } } } } over = (nodetop + 5 + height) - wheight; y = (over > 0 && nodetop < wheight)? 5 - over : (over > 0? 30 - height : 5); menu.find('.elfinder-contextmenu-sub:visible').hide(); submenu.css({ top : y, left : cltr? x : 'auto', right: cltr? 'auto' : x, overflowY: 'auto' }).show(); base.attr('style', bstyle); } }; node.addClass('elfinder-contextmenu-group') .on('mouseleave', '.elfinder-contextmenu-sub', function(e) { if (! menu.data('draged')) { menu.removeData('submenuKeep'); } }) .on('submenuclose', '.elfinder-contextmenu-sub', function(e) { hover(false); }) .on('click', '.'+smItem, function(e){ var opts, $this; e.stopPropagation(); if (! menu.data('draged')) { $this = $(this); if (!cmd.keepContextmenu) { menu.hide(); } else { $this.removeClass(cHover); node.addClass(cHover); } opts = $this.data('exec'); if (typeof opts === 'undefined') { opts = {}; } if (typeof opts === 'object') { opts._userAction = true; opts._currentType = type; opts._currentNode = $this; } !cmd.keepContextmenu && close(); fm.exec(cmd.name, targets, opts); } }) .on('touchend', function(e) { if (! menu.data('drag')) { hover(true); menu.data('submenuKeep', true); } }) .on('mouseenter mouseleave', function(e){ if (! menu.data('touching')) { if (node.data('timer')) { clearTimeout(node.data('timer')); node.removeData('timer'); } if (!$(e.target).closest('.elfinder-contextmenu-sub', menu).length) { if (e.type === 'mouseleave') { if (! menu.data('submenuKeep')) { node.data('timer', setTimeout(function() { node.removeData('timer'); hover(false); }, 250)); } } else { node.data('timer', setTimeout(function() { node.removeData('timer'); hover(true); }, nodes.find('div.elfinder-contextmenu-sub:visible').length? 250 : 0)); } } } }); $.each(cmd.variants, function(i, variant) { var item = variant === '|' ? '
      ' : $('
      '+variant[1]+'
      ').data('exec', variant[0]), iconClass, icon; if (typeof variant[2] !== 'undefined') { icon = $('').addClass('elfinder-button-icon elfinder-contextmenu-icon'); if (! /\//.test(variant[2])) { icon.addClass('elfinder-button-icon-'+variant[2]); } else { icon.css(urlIcon(variant[2])); } item.prepend(icon).addClass(smItem+'-icon'); } submenu.append(item); }); } else { node = item(cmd.title, cmd.className? cmd.className : cmd.name, function() { if (! menu.data('draged')) { !cmd.keepContextmenu && close(); fm.exec(cmd.name, targets, {_userAction: true, _currentType: type, _currentNode: node}); } }, cmd.contextmenuOpts); if (cmd.extra && cmd.extra.node) { $('') .append(cmd.extra.node).appendTo(node); $(cmd.extra.node).trigger('ready', {targets: targets}); } else { node.remove('.'+exIcon); } } if (cmd.extendsCmd) { node.children('span.elfinder-button-icon').addClass('elfinder-button-icon-' + cmd.extendsCmd); } if (insSep) { menu.append('
      '); } menu.append(node); sep = true; insSep = false; } if (cmd && typeof cmd.__disabled !== 'undefined') { cmd._disabled = cmd.__disabled; delete cmd.__disabled; $.each(cmd.linkedCmds, function(i, n) { var c; if (c = fm.getCommand(n)) { c._disabled = c.__disabled; delete c.__disabled; } }); } }); nodes = menu.children('div.'+cmItem); }, createFromRaw = function(raw) { currentType = 'raw'; $.each(raw, function(i, data) { var node; if (data === '|') { menu.append('
      '); } else if (data.label && typeof data.callback == 'function') { node = item(data.label, data.icon, function() { if (! menu.data('draged')) { !data.remain && close(); data.callback(); } }, data.options || null); menu.append(node); } }); nodes = menu.children('div.'+cmItem); }, currentType = null, currentTargets = null; fm.one('load', function() { base = fm.getUI(); cwd = fm.getUI('cwd'); fm.bind('contextmenu', function(e) { var data = e.data, css = {}, prevNode; if (data.type && data.type !== 'files') { cwd.trigger('unselectall'); } close(); if (data.type && data.targets) { fm.trigger('contextmenucreate', data); create(data.type, data.targets); fm.trigger('contextmenucreatedone', data); } else if (data.raw) { createFromRaw(data.raw); } if (menu.children().length) { prevNode = data.prevNode || null; if (prevNode) { menu.data('prevNode', menu.prev()); prevNode.after(menu); } if (data.fitHeight) { css = {maxHeight: Math.min(fm.getUI().height(), $(window).height()), overflowY: 'auto'}; menu.draggable('destroy').removeClass('ui-draggable'); } open(data.x, data.y, css); // call opened callback function if (data.opened && typeof data.opened === 'function') { data.opened.call(menu); } } }) .one('destroy', function() { menu.remove(); }) .bind('disable', close) .bind('select', function(e){ (currentType === 'files' && (!e.data || e.data.selected.toString() !== currentTargets.toString())) && close(); }); }) .shortcut({ pattern : fm.OS === 'mac' ? 'ctrl+m' : 'contextmenu shift+f10', description : 'contextmenu', callback : function(e) { e.stopPropagation(); e.preventDefault(); $(document).one('contextmenu.' + fm.namespace, function(e) { e.preventDefault(); e.stopPropagation(); }); var sel = fm.selected(), type, targets, pos, elm; if (sel.length) { type = 'files'; targets = sel; elm = fm.cwdHash2Elm(sel[0]); } else { type = 'cwd'; targets = [ fm.cwd().hash ]; pos = fm.getUI('workzone').offset(); } if (! elm || ! elm.length) { elm = fm.getUI('workzone'); } pos = elm.offset(); pos.top += (elm.height() / 2); pos.left += (elm.width() / 2); fm.trigger('contextmenu', { 'type' : type, 'targets' : targets, 'x' : pos.left, 'y' : pos.top }); } }); }); }; application/library/js/ui/stat.js000064400000006551147577724760013116 0ustar00/** * @class elFinder ui * Display number of files/selected files and its size in statusbar * * @author Dmitry (dio) Levashov **/ $.fn.elfinderstat = function(fm) { "use strict"; return this.each(function() { var size = $(this).addClass('elfinder-stat-size'), sel = $('
      ') .on('click', 'a', function(e) { var hash = $(this).data('hash'); e.preventDefault(); fm.exec('opendir', [ hash ]); }), titleitems = fm.i18n('items'), titlesel = fm.i18n('selected'), titlesize = fm.i18n('size'), setstat = function(files) { var c = 0, s = 0, cwd = fm.cwd(), calc = true, hasSize = true; if (cwd.sizeInfo || cwd.size) { s = cwd.size; calc = false; } $.each(files, function(i, file) { c++; if (calc) { s += parseInt(file.size) || 0; if (hasSize === true && file.mime === 'directory' && !file.sizeInfo) { hasSize = false; } } }); size.html(titleitems+': '+c+', '+fm.i18n(hasSize? 'sum' : 'size')+': '+fm.formatSize(s)+'') .attr('title', size.text()); fm.trigger('uistatchange'); }, setIncsearchStat = function(data) { size.find('span.elfinder-stat-incsearch').html(data? data.hashes.length + ' / ' : ''); size.attr('title', size.text()); fm.trigger('uistatchange'); }, setSelect = function(files) { var s = 0, c = 0, dirs = [], path, file; if (files.length === 1) { file = files[0]; s = file.size; if (fm.searchStatus.state === 2) { path = fm.escape(file.path? file.path.replace(/\/[^\/]*$/, '') : '..'); dirs.push(''+path+''); } dirs.push(fm.escape(file.i18 || file.name)); sel.html(dirs.join('/') + (s > 0 ? ', '+fm.formatSize(s) : '')); } else if (files.length) { $.each(files, function(i, file) { c++; s += parseInt(file.size)||0; }); sel.html(c ? titlesel+': '+c+', '+titlesize+': '+fm.formatSize(s) : ' '); } else { sel.html(''); } sel.attr('title', sel.text()); fm.trigger('uistatchange'); }; fm.getUI('statusbar').prepend(size).append(sel).show(); if (fm.UA.Mobile && $.fn.tooltip) { fm.getUI('statusbar').tooltip({ classes: { 'ui-tooltip': 'elfinder-ui-tooltip ui-widget-shadow' }, tooltipClass: 'elfinder-ui-tooltip ui-widget-shadow', track: true }); } fm .bind('cwdhasheschange', function(e) { setstat($.map(e.data, function(h) { return fm.file(h); })); }) .change(function(e) { var files = e.data.changed || [], cwdHash = fm.cwd().hash; $.each(files, function() { if (this.hash === cwdHash) { if (this.size) { size.children('.elfinder-stat-size').addClass('elfinder-stat-size-recursive').html(fm.i18n('sum')+': '+fm.formatSize(this.size)); size.attr('title', size.text()); } return false; } }); }) .select(function() { setSelect(fm.selectedFiles()); }) .bind('open', function() { setSelect([]); }) .bind('incsearch', function(e) { setIncsearchStat(e.data); }) .bind('incsearchend', function() { setIncsearchStat(); }) ; }); }; application/library/js/ui/workzone.js000064400000002640147577724760014014 0ustar00/** * @class elfinderworkzone - elFinder container for nav and current directory * @author Dmitry (dio) Levashov **/ $.fn.elfinderworkzone = function(fm) { "use strict"; var cl = 'elfinder-workzone'; this.not('.'+cl).each(function() { var wz = $(this).addClass(cl), prevH = Math.round(wz.height()), parent = wz.parent(), setDelta = function() { wdelta = wz.outerHeight(true) - wz.height(); }, fitsize = function(e) { var height = parent.height() - wdelta, style = parent.attr('style'), curH = Math.round(wz.height()); if (e) { e.preventDefault(); e.stopPropagation(); } parent.css('overflow', 'hidden') .children(':visible:not(.'+cl+')').each(function() { var ch = $(this); if (ch.css('position') != 'absolute' && ch.css('position') != 'fixed') { height -= ch.outerHeight(true); } }); parent.attr('style', style || ''); height = Math.max(0, Math.round(height)); if (prevH !== height || curH !== height) { prevH = Math.round(wz.height()); wz.height(height); fm.trigger('wzresize'); } }, cssloaded = function() { wdelta = wz.outerHeight(true) - wz.height(); fitsize(); }, wdelta; setDelta(); parent.on('resize.' + fm.namespace, fitsize); fm.one('cssloaded', cssloaded) .bind('uiresize', fitsize) .bind('themechange', setDelta); }); return this; }; application/library/js/ui/toolbar.js000064400000023372147577724760013605 0ustar00/** * @class elFinder toolbar * * @author Dmitry (dio) Levashov **/ $.fn.elfindertoolbar = function(fm, opts) { "use strict"; this.not('.elfinder-toolbar').each(function() { var commands = fm._commands, self = $(this).addClass('ui-helper-clearfix ui-widget-header elfinder-toolbar'), options = { // default options displayTextLabel: false, labelExcludeUA: ['Mobile'], autoHideUA: ['Mobile'], showPreferenceButton: 'none' }, filter = function(opts) { return $.grep(opts, function(v) { if ($.isPlainObject(v)) { options = Object.assign(options, v); return false; } return true; }); }, render = function(disabled){ var name,cmdPref; $.each(buttons, function(i, b) { b.detach(); }); self.empty(); l = panels.length; while (l--) { if (panels[l]) { panel = $('
      '); i = panels[l].length; while (i--) { name = panels[l][i]; if ((!disabled || !disabled[name]) && (cmd = commands[name])) { button = 'elfinder'+cmd.options.ui; if (! buttons[name] && $.fn[button]) { buttons[name] = $('
      ')[button](cmd); } if (buttons[name]) { buttons[name].children('.elfinder-button-text')[textLabel? 'show' : 'hide'](); panel.prepend(buttons[name]); } } } panel.children().length && self.prepend(panel); panel.children(':gt(0)').before(''); } } if (cmdPref = commands['preference']) { //cmdPref.state = !self.children().length? 0 : -1; if (options.showPreferenceButton === 'always' || (!self.children().length && options.showPreferenceButton === 'auto')) { //cmdPref.state = 0; panel = $('
      '); name = 'preference'; button = 'elfinder'+cmd.options.ui; buttons[name] = $('
      ')[button](cmdPref); buttons[name].children('.elfinder-button-text')[textLabel? 'show' : 'hide'](); panel.prepend(buttons[name]); self.append(panel); } } (! self.data('swipeClose') && self.children().length)? self.show() : self.hide(); prevHeight = self[0].clientHeight; fm.trigger('toolbarload').trigger('uiresize'); }, buttons = {}, panels = filter(opts || []), dispre = null, uiCmdMapPrev = '', prevHeight = 0, contextRaw = [], l, i, cmd, panel, button, swipeHandle, autoHide, textLabel, resizeTm; // normalize options options.showPreferenceButton = options.showPreferenceButton.toLowerCase(); if (options.displayTextLabel !== 'none') { // correction of options.displayTextLabel textLabel = fm.storage('toolbarTextLabel'); if (textLabel === null) { textLabel = (options.displayTextLabel && (! options.labelExcludeUA || ! options.labelExcludeUA.length || ! $.grep(options.labelExcludeUA, function(v){ return fm.UA[v]? true : false; }).length)); } else { textLabel = (textLabel == 1); } contextRaw.push({ label : fm.i18n('textLabel'), icon : 'text', callback : function() { textLabel = ! textLabel; self.css('height', '').find('.elfinder-button-text')[textLabel? 'show':'hide'](); fm.trigger('uiresize').storage('toolbarTextLabel', textLabel? '1' : '0'); }, }); } if (options.preferenceInContextmenu && commands['preference']) { contextRaw.push({ label : fm.i18n('toolbarPref'), icon : 'preference', callback : function() { fm.exec('preference', void(0), {tab: 'toolbar'}); } }); } // add contextmenu if (contextRaw.length) { self.on('contextmenu', function(e) { e.stopPropagation(); e.preventDefault(); fm.trigger('contextmenu', { raw: contextRaw, x: e.pageX, y: e.pageY }); }).on('touchstart', function(e) { if (e.originalEvent.touches.length > 1) { return; } self.data('tmlongtap') && clearTimeout(self.data('tmlongtap')); self.removeData('longtap') .data('longtap', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY}) .data('tmlongtap', setTimeout(function() { self.removeData('longtapTm') .trigger({ type: 'contextmenu', pageX: self.data('longtap').x, pageY: self.data('longtap').y }) .data('longtap', {longtap: true}); }, 500)); }).on('touchmove touchend', function(e) { if (self.data('tmlongtap')) { if (e.type === 'touchend' || ( Math.abs(self.data('longtap').x - e.originalEvent.touches[0].pageX) + Math.abs(self.data('longtap').y - e.originalEvent.touches[0].pageY)) > 4) clearTimeout(self.data('tmlongtap')); self.removeData('longtapTm'); } }).on('click', function(e) { if (self.data('longtap') && self.data('longtap').longtap) { e.stopImmediatePropagation(); e.preventDefault(); } }).on('touchend click', '.elfinder-button', function(e) { if (self.data('longtap') && self.data('longtap').longtap) { e.stopImmediatePropagation(); e.preventDefault(); } } ); } self.prev().length && self.parent().prepend(this); render(); fm.bind('open sync select toolbarpref', function() { var disabled = Object.assign({}, fm.option('disabledFlip')), userHides = fm.storage('toolbarhides'), doRender, sel, disabledKeys; if (! userHides && Array.isArray(options.defaultHides)) { userHides = {}; $.each(options.defaultHides, function() { userHides[this] = true; }); fm.storage('toolbarhides', userHides); } if (this.type === 'select') { if (fm.searchStatus.state < 2) { return; } sel = fm.selected(); if (sel.length) { disabled = fm.getDisabledCmds(sel, true); } } $.each(userHides, function(n) { if (!disabled[n]) { disabled[n] = true; } }); if (Object.keys(fm.commandMap).length) { $.each(fm.commandMap, function(from, to){ if (to === 'hidden') { disabled[from] = true; } }); } disabledKeys = Object.keys(disabled); if (!dispre || dispre.toString() !== disabledKeys.sort().toString()) { render(disabledKeys.length? disabled : null); doRender = true; } dispre = disabledKeys.sort(); if (doRender || uiCmdMapPrev !== JSON.stringify(fm.commandMap)) { uiCmdMapPrev = JSON.stringify(fm.commandMap); if (! doRender) { // reset toolbar $.each($('div.elfinder-button'), function(){ var origin = $(this).data('origin'); if (origin) { $(this).after(origin).detach(); } }); } if (Object.keys(fm.commandMap).length) { $.each(fm.commandMap, function(from, to){ var cmd = fm._commands[to], button = cmd? 'elfinder'+cmd.options.ui : null, btn; if (button && $.fn[button]) { btn = buttons[from]; if (btn) { if (! buttons[to] && $.fn[button]) { buttons[to] = $('
      ')[button](cmd); if (buttons[to]) { buttons[to].children('.elfinder-button-text')[textLabel? 'show' : 'hide'](); if (cmd.extendsCmd) { buttons[to].children('span.elfinder-button-icon').addClass('elfinder-button-icon-' + cmd.extendsCmd); } } } if (buttons[to]) { btn.after(buttons[to]); buttons[to].data('origin', btn.detach()); } } } }); } } }).bind('resize', function(e) { resizeTm && cancelAnimationFrame(resizeTm); resizeTm = requestAnimationFrame(function() { var h = self[0].clientHeight; if (prevHeight !== h) { prevHeight = h; fm.trigger('uiresize'); } }); }); if (fm.UA.Touch) { autoHide = fm.storage('autoHide') || {}; if (typeof autoHide.toolbar === 'undefined') { autoHide.toolbar = (options.autoHideUA && options.autoHideUA.length > 0 && $.grep(options.autoHideUA, function(v){ return fm.UA[v]? true : false; }).length); fm.storage('autoHide', autoHide); } if (autoHide.toolbar) { fm.one('init', function() { fm.uiAutoHide.push(function(){ self.stop(true, true).trigger('toggle', { duration: 500, init: true }); }); }); } fm.bind('load', function() { swipeHandle = $('
      ').hide().appendTo(fm.getUI()); if (swipeHandle.css('pointer-events') !== 'none') { swipeHandle.remove(); swipeHandle = null; } }); self.on('toggle', function(e, data) { var wz = fm.getUI('workzone'), toshow= self.is(':hidden'), wzh = wz.height(), h = self.height(), tbh = self.outerHeight(true), delta = tbh - h, opt = Object.assign({ step: function(now) { wz.height(wzh + (toshow? (now + delta) * -1 : h - now)); fm.trigger('resize'); }, always: function() { requestAnimationFrame(function() { self.css('height', ''); fm.trigger('uiresize'); if (swipeHandle) { if (toshow) { swipeHandle.stop(true, true).hide(); } else { swipeHandle.height(data.handleH? data.handleH : ''); fm.resources.blink(swipeHandle, 'slowonce'); } } toshow && self.scrollTop('0px'); data.init && fm.trigger('uiautohide'); }); } }, data); self.data('swipeClose', ! toshow).stop(true, true).animate({height : 'toggle'}, opt); autoHide.toolbar = !toshow; fm.storage('autoHide', Object.assign(fm.storage('autoHide'), {toolbar: autoHide.toolbar})); }).on('touchstart', function(e) { if (self.scrollBottom() > 5) { e.originalEvent._preventSwipeY = true; } }); } }); return this; }; application/library/js/ui/tree.js000064400000120357147577724760013103 0ustar00/** * @class elFinder folders tree * * @author Dmitry (dio) Levashov **/ $.fn.elfindertree = function(fm, opts) { "use strict"; var treeclass = fm.res('class', 'tree'); this.not('.'+treeclass).each(function() { var c = 'class', mobile = fm.UA.Mobile, /** * Root directory class name * * @type String */ root = fm.res(c, 'treeroot'), /** * Open root dir if not opened yet * * @type Boolean */ openRoot = opts.openRootOnLoad, /** * Open current work dir if not opened yet * * @type Boolean */ openCwd = opts.openCwdOnOpen, /** * Auto loading current directory parents and do expand their node * * @type Boolean */ syncTree = openCwd || opts.syncTree, /** * Subtree class name * * @type String */ subtree = fm.res(c, 'navsubtree'), /** * Directory class name * * @type String */ navdir = fm.res(c, 'treedir'), /** * Directory CSS selector * * @type String */ selNavdir = 'span.' + navdir, /** * Collapsed arrow class name * * @type String */ collapsed = fm.res(c, 'navcollapse'), /** * Expanded arrow class name * * @type String */ expanded = fm.res(c, 'navexpand'), /** * Class name to mark arrow for directory with already loaded children * * @type String */ loaded = 'elfinder-subtree-loaded', /** * Class name to mark need subdirs request * * @type String */ chksubdir = 'elfinder-subtree-chksubdir', /** * Arraw class name * * @type String */ arrow = fm.res(c, 'navarrow'), /** * Current directory class name * * @type String */ active = fm.res(c, 'active'), /** * Droppable dirs dropover class * * @type String */ dropover = fm.res(c, 'adroppable'), /** * Hover class name * * @type String */ hover = fm.res(c, 'hover'), /** * Disabled dir class name * * @type String */ disabled = fm.res(c, 'disabled'), /** * Draggable dir class name * * @type String */ draggable = fm.res(c, 'draggable'), /** * Droppable dir class name * * @type String */ droppable = fm.res(c, 'droppable'), /** * root wrapper class * * @type String */ wrapperRoot = 'elfinder-navbar-wrapper-root', /** * Un-disabled cmd `paste` volume's root wrapper class * * @type String */ pastable = 'elfinder-navbar-wrapper-pastable', /** * Un-disabled cmd `upload` volume's root wrapper class * * @type String */ uploadable = 'elfinder-navbar-wrapper-uploadable', /** * Is position x inside Navbar * * @param x Numbar * * @return */ insideNavbar = function(x) { var left = navbar.offset().left; return left <= x && x <= left + navbar.width(); }, /** * To call subdirs elements queue * * @type Object */ subdirsQue = {}, /** * To exec subdirs elements ids * */ subdirsExecQue = [], /** * Request subdirs to backend * * @param id String * * @return Deferred */ subdirs = function(ids) { var targets = []; $.each(ids, function(i, id) { subdirsQue[id] && targets.push(fm.navId2Hash(id)); delete subdirsQue[id]; }); if (targets.length) { return fm.request({ data: { cmd: 'subdirs', targets: targets, preventDefault : true } }).done(function(res) { if (res && res.subdirs) { $.each(res.subdirs, function(hash, subdirs) { var elm = fm.navHash2Elm(hash); elm.removeClass(chksubdir); elm[subdirs? 'addClass' : 'removeClass'](collapsed); }); } }); } }, subdirsJobRes = null, /** * To check target element is in window of subdirs * * @return void */ checkSubdirs = function() { var ids = Object.keys(subdirsQue); if (ids.length) { subdirsJobRes && subdirsJobRes._abort(); execSubdirsTm && clearTimeout(execSubdirsTm); subdirsExecQue = []; subdirsJobRes = fm.asyncJob(function(id) { return fm.isInWindow($('#'+id))? id : null; }, ids, { numPerOnce: 200 }) .done(function(arr) { if (arr.length) { subdirsExecQue = arr; execSubdirs(); } }); } }, subdirsPending = 0, execSubdirsTm, /** * Exec subdirs as batch request * * @return void */ execSubdirs = function() { var cnt = opts.subdirsMaxConn - subdirsPending, atOnce = fm.maxTargets? Math.min(fm.maxTargets, opts.subdirsAtOnce) : opts.subdirsAtOnce, i, ids; execSubdirsTm && cancelAnimationFrame(execSubdirsTm); if (subdirsExecQue.length) { if (cnt > 0) { for (i = 0; i < cnt; i++) { if (subdirsExecQue.length) { subdirsPending++; subdirs(subdirsExecQue.splice(0, atOnce)).always(function() { subdirsPending--; execSubdirs(); }); } } } else { execSubdirsTm = requestAnimationFrame(function() { subdirsExecQue.length && execSubdirs(); }); } } }, drop = fm.droppable.drop, /** * Droppable options * * @type Object */ droppableopts = $.extend(true, {}, fm.droppable, { // show subfolders on dropover over : function(e, ui) { var dst = $(this), helper = ui.helper, cl = hover+' '+dropover, hash, status; e.stopPropagation(); helper.data('dropover', helper.data('dropover') + 1); dst.data('dropover', true); if (ui.helper.data('namespace') !== fm.namespace || ! fm.insideWorkzone(e.pageX, e.pageY)) { dst.removeClass(cl); helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus'); return; } if (! insideNavbar(e.clientX)) { dst.removeClass(cl); return; } helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus'); dst.addClass(hover); if (dst.is('.'+collapsed+':not(.'+expanded+')')) { dst.data('expandTimer', setTimeout(function() { dst.is('.'+collapsed+'.'+hover) && dst.children('.'+arrow).trigger('click'); }, 500)); } if (dst.is('.elfinder-ro,.elfinder-na')) { dst.removeClass(dropover); //helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus'); return; } hash = fm.navId2Hash(dst.attr('id')); dst.data('dropover', hash); $.each(ui.helper.data('files'), function(i, h) { if (h === hash || (fm.file(h).phash === hash && !ui.helper.hasClass('elfinder-drag-helper-plus'))) { dst.removeClass(cl); return false; // break $.each } }); if (helper.data('locked')) { status = 'elfinder-drag-helper-plus'; } else { status = 'elfinder-drag-helper-move'; if (fm._commands.copy && (e.shiftKey || e.ctrlKey || e.metaKey)) { status += ' elfinder-drag-helper-plus'; } } dst.hasClass(dropover) && helper.addClass(status); requestAnimationFrame(function(){ dst.hasClass(dropover) && helper.addClass(status); }); }, out : function(e, ui) { var dst = $(this), helper = ui.helper; e.stopPropagation(); if (insideNavbar(e.clientX)) { helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus'); } helper.data('dropover', Math.max(helper.data('dropover') - 1, 0)); dst.data('expandTimer') && clearTimeout(dst.data('expandTimer')); dst.removeData('dropover') .removeClass(hover+' '+dropover); }, deactivate : function() { $(this).removeData('dropover') .removeClass(hover+' '+dropover); }, drop : function(e, ui) { insideNavbar(e.clientX) && drop.call(this, e, ui); } }), spinner = $(fm.res('tpl', 'navspinner')), /** * Directory html template * * @type String */ tpl = fm.res('tpl', 'navdir'), /** * Permissions marker html template * * @type String */ ptpl = fm.res('tpl', 'perms'), /** * Lock marker html template * * @type String */ ltpl = fm.res('tpl', 'lock'), /** * Symlink marker html template * * @type String */ stpl = fm.res('tpl', 'symlink'), /** * Directory hashes that has more pages * * @type Object */ hasMoreDirs = {}, /** * Html template replacement methods * * @type Object */ replace = { id : function(dir) { return fm.navHash2Id(dir.hash); }, name : function(dir) { return fm.escape(dir.i18 || dir.name); }, cssclass : function(dir) { var cname = (dir.phash && ! dir.isroot ? '' : root)+' '+navdir+' '+fm.perms2class(dir); dir.dirs && !dir.link && (cname += ' ' + collapsed) && dir.dirs == -1 && (cname += ' ' + chksubdir); opts.getClass && (cname += ' ' + opts.getClass(dir)); dir.csscls && (cname += ' ' + fm.escape(dir.csscls)); return cname; }, title : function(dir) { return opts.attrTitle? (' title="' + fm.escape(fm.path(dir.hash, true) || dir.i18 || dir.name) + '"') : ''; }, root : function(dir) { var cls = ''; if (!dir.phash || dir.isroot) { cls += ' '+wrapperRoot; if (!dir.disabled || dir.disabled.length < 1) { cls += ' '+pastable+' '+uploadable; } else { if ($.inArray('paste', dir.disabled) === -1) { cls += ' '+pastable; } if ($.inArray('upload', dir.disabled) === -1) { cls += ' '+uploadable; } } return cls; } else { return ''; } }, permissions : function(dir) { return !dir.read || !dir.write ? ptpl : ''; }, symlink : function(dir) { return dir.alias ? stpl : ''; }, style : function(dir) { return dir.icon ? fm.getIconStyle(dir) : ''; } }, /** * Return html for given dir * * @param Object directory * @return String */ itemhtml = function(dir) { return tpl.replace(/(?:\{([a-z]+)\})/ig, function(m, key) { var res = replace[key] ? replace[key](dir) : (dir[key] || ''); if (key === 'id' && dir.dirs == -1) { subdirsQue[res] = res; } return res; }); }, /** * Return only dirs from files list * * @param Array files list * @param Boolean do check exists * @return Array */ filter = function(files, checkExists) { return $.map(files || [], function(f) { return (f.mime === 'directory' && (!checkExists || fm.navHash2Elm(f.hash).length)) ? f : null; }); }, /** * Find parent subtree for required directory * * @param String dir hash * @return jQuery */ findSubtree = function(hash) { return hash ? fm.navHash2Elm(hash).next('.'+subtree) : tree; }, /** * Find directory (wrapper) in required node * before which we can insert new directory * * @param jQuery parent directory * @param Object new directory * @return jQuery */ findSibling = function(subtree, dir) { var node = subtree.children(':first'), info; while (node.length) { info = fm.file(fm.navId2Hash(node.children('[id]').attr('id'))); if ((info = fm.file(fm.navId2Hash(node.children('[id]').attr('id')))) && compare(dir, info) < 0) { return node; } node = node.next(); } return subtree.children('button.elfinder-navbar-pager-next'); }, /** * Add new dirs in tree * * @param Array dirs list * @return void */ updateTree = function(dirs) { var length = dirs.length, orphans = [], i = length, tgts = $(), done = {}, cwd = fm.cwd(), append = function(parent, dirs, start, direction) { var hashes = {}, curStart = 0, max = fm.newAPI? Math.min(10000, Math.max(10, opts.subTreeMax)) : 10000, setHashes = function() { hashes = {}; $.each(dirs, function(i, d) { hashes[d.hash] = i; }); }, change = function(mode) { if (mode === 'prepare') { $.each(dirs, function(i, d) { d.node && parent.append(d.node.hide()); }); } else if (mode === 'done') { $.each(dirs, function(i, d) { d.node && d.node.detach().show(); }); } }, update = function(e, data) { var i, changed; e.stopPropagation(); if (data.select) { render(getStart(data.select)); return; } if (data.change) { change(data.change); return; } if (data.removed && data.removed.length) { dirs = $.grep(dirs, function(d) { if (data.removed.indexOf(d.hash) === -1) { return true; } else { !changed && (changed = true); return false; } }); } if (data.added && data.added.length) { dirs = dirs.concat($.grep(data.added, function(d) { if (hashes[d.hash] === void(0)) { !changed && (changed = true); return true; } else { return false; } })); } if (changed) { dirs.sort(compare); setHashes(); render(curStart); } }, getStart = function(target) { if (hashes[target] !== void(0)) { return Math.floor(hashes[target] / max) * max; } return void(0); }, target = fm.navId2Hash(parent.prev('[id]').attr('id')), render = function(start, direction) { var html = [], nodes = {}, total, page, s, parts, prev, next, prevBtn, nextBtn; delete hasMoreDirs[target]; curStart = start; parent.off('update.'+fm.namespace, update); if (dirs.length > max) { parent.on('update.'+fm.namespace, update); if (start === void(0)) { s = 0; setHashes(); start = getStart(cwd.hash); if (start === void(0)) { start = 0; } } parts = dirs.slice(start, start + max); hasMoreDirs[target] = parent; prev = start? Math.max(-1, start - max) : -1; next = (start + max >= dirs.length)? 0 : start + max; total = Math.ceil(dirs.length/max); page = Math.ceil(start/max); } $.each(parts || dirs, function(i, d) { html.push(itemhtml(d)); if (d.node) { nodes[d.hash] = d.node; } }); if (prev > -1) { prevBtn = $('') .text(fm.i18n('btnPrevious', page, total)) .button({ icons: { primary: "ui-icon-caret-1-n" } }) .on('click', function(e) { e.preventDefault(); e.stopPropagation(); render(prev, 'up'); }); } else { prevBtn = $(); } if (next) { nextBtn = $('') .text(fm.i18n('btnNext', page + 2, total)) .button({ icons: { primary: "ui-icon-caret-1-s" } }) .on('click', function(e) { e.preventDefault(); e.stopPropagation(); render(next, 'down'); }); } else { nextBtn = $(); } detach(); parent.empty()[parts? 'addClass' : 'removeClass']('elfinder-navbar-hasmore').append(prevBtn, html.join(''), nextBtn); $.each(nodes, function(h, n) { fm.navHash2Elm(h).parent().replaceWith(n); }); if (direction) { autoScroll(fm.navHash2Id(parts[direction === 'up'? parts.length - 1 : 0].hash)); } ! mobile && fm.lazy(function() { updateDroppable(null, parent); }); }, detach = function() { $.each(parent.children('.elfinder-navbar-wrapper'), function(i, elm) { var n = $(elm), ch = n.children('[id]:first'), h, c; if (ch.hasClass(loaded)) { h = fm.navId2Hash(ch.attr('id')); if (h && (c = hashes[h]) !== void(0)) { dirs[c].node = n.detach(); } } }); }; render(); }, dir, html, parent, sibling, init, atonce = {}, updates = [], base, node, lastKey, lastNodes = {}; while (i--) { dir = dirs[i]; if (done[dir.hash] || fm.navHash2Elm(dir.hash).length) { continue; } done[dir.hash] = true; if ((parent = findSubtree(dir.phash)).length) { lastKey = dir.phash || 'treeroot'; if (typeof lastNodes[lastKey] === 'undefined') { lastNodes[lastKey] = parent.children(':last'); } init = !lastNodes[lastKey].length; if (dir.phash && (init || parent.hasClass('elfinder-navbar-hasmore') || (sibling = findSibling(parent, dir)).length)) { if (init) { if (!atonce[dir.phash]) { atonce[dir.phash] = []; } atonce[dir.phash].push(dir); } else { if (sibling) { node = itemhtml(dir); sibling.before(node); ! mobile && (tgts = tgts.add(node)); } else { updates.push(dir); } } } else { node = itemhtml(dir); if (init) { parent.prepend(node); } else { lastNodes[lastKey].after(node); } if (!dir.phash || dir.isroot) { base = fm.navHash2Elm(dir.hash).parent(); } ! mobile && updateDroppable(null, base); } } else { orphans.push(dir); } } // When init, html append at once if (Object.keys(atonce).length){ $.each(atonce, function(p, dirs){ var parent = findSubtree(p), html = []; dirs.sort(compare); append(parent, dirs); }); } if (updates.length) { parent.trigger('update.' + fm.namespace, { added : updates }); } if (orphans.length && orphans.length < length) { updateTree(orphans); return; } ! mobile && tgts.length && fm.lazy(function() { updateDroppable(tgts); }); }, /** * sort function by dir.name * */ compare = function(dir1, dir2) { if (! fm.sortAlsoTreeview) { return fm.sortRules.name(dir1, dir2); } else { var asc = fm.sortOrder == 'asc', type = fm.sortType, rules = fm.sortRules, res; res = asc? rules[fm.sortType](dir1, dir2) : rules[fm.sortType](dir2, dir1); return type !== 'name' && res === 0 ? res = asc ? rules.name(dir1, dir2) : rules.name(dir2, dir1) : res; } }, /** * Timer ID of autoScroll * * @type Integer */ autoScrTm, /** * Auto scroll to cwd * * @return Object jQuery Deferred */ autoScroll = function(target) { var dfrd = $.Deferred(), current, parent, top, treeH, bottom, tgtTop; autoScrTm && clearTimeout(autoScrTm); autoScrTm = setTimeout(function() { current = $(document.getElementById((target || fm.navHash2Id(fm.cwd().hash)))); if (current.length) { // expand parents directory (openCwd? current : current.parent()).parents('.elfinder-navbar-wrapper').children('.'+loaded).addClass(expanded).next('.'+subtree).show(); parent = tree.parent().stop(false, true); top = parent.offset().top; treeH = parent.height(); bottom = top + treeH - current.outerHeight(); tgtTop = current.offset().top; if (tgtTop < top || tgtTop > bottom) { parent.animate({ scrollTop : parent.scrollTop() + tgtTop - top - treeH / 3 }, { duration : opts.durations.autoScroll, complete : function() { dfrd.resolve(); } }); } else { dfrd.resolve(); } } else { dfrd.reject(); } }, 100); return dfrd; }, /** * Get hashes array of items of the bottom of the leaf root back from the target * * @param Object elFinder item(directory) object * @return Array hashes */ getEnds = function(d) { var cur = d || fm.cwd(), res = cur.hash? [ cur.hash ] : [], phash, root, dir; root = fm.root(cur.hash); dir = fm.file(root); while (dir && (phash = dir.phash)) { res.unshift(phash); root = fm.root(phash); dir = fm.file(root); if (fm.navHash2Elm(dir.hash).hasClass(loaded)) { break; } } return res; }, /** * Select pages back in order to display the target * * @param Object elFinder item(directory) object * @return Object jQuery node object of target node */ selectPages = function(current) { var cur = current || fm.cwd(), curHash = cur.hash, node = fm.navHash2Elm(curHash); if (!node.length) { while(cur && cur.phash) { if (hasMoreDirs[cur.phash] && !fm.navHash2Elm(cur.hash).length) { hasMoreDirs[cur.phash].trigger('update.'+fm.namespace, { select : cur.hash }); } cur = fm.file(cur.phash); } node = fm.navHash2Elm(curHash); } return node; }, /** * Flag indicating that synchronization is currently in progress * * @type Boolean */ syncing, /** * Mark current directory as active * If current directory is not in tree - load it and its parents * * @param Array directory objects of cwd * @param Boolean do auto scroll * @return Object jQuery Deferred */ sync = function(cwdDirs, aScr) { var cwd = fm.cwd(), cwdhash = cwd.hash, autoScr = aScr === void(0)? syncTree : aScr, loadParents = function(dir) { var dfd = $.Deferred(), reqs = [], ends = getEnds(dir), makeReq = function(cmd, h, until) { var data = { cmd : cmd, target : h }; if (until) { data.until = until; } return fm.request({ data : data, preventFail : true }); }, baseHash, baseId; reqs = $.map(ends, function(h) { var d = fm.file(h), isRoot = d? fm.isRoot(d) : false, node = fm.navHash2Elm(h), getPhash = function(h, dep) { var d, ph, depth = dep || 1; ph = (d = fm.file(h))? d.phash : false; if (ph && depth > 1) { return getPhash(ph, --depth); } return ph; }, until, closest = (function() { var phash = getPhash(h); until = phash; while (phash) { if (fm.navHash2Elm(phash).hasClass(loaded)) { break; } until = phash; phash = getPhash(phash); } if (!phash) { until = void(0); phash = fm.root(h); } return phash; })(), cmd; if (!node.hasClass(loaded) && (isRoot || !d || !fm.navHash2Elm(d.phash).hasClass(loaded))) { if (isRoot || closest === getPhash(h) || closest === getPhash(h, 2)) { until = void(0); cmd = 'tree'; if (!isRoot) { h = getPhash(h); } } else { cmd = 'parents'; } if (!baseHash) { baseHash = (cmd === 'tree')? h : closest; } return makeReq(cmd, h, until); } return null; }); if (reqs.length) { selectPages(fm.file(baseHash)); baseId = fm.navHash2Id(baseHash); autoScr && autoScroll(baseId); baseNode = $('#'+baseId); spinner = $(fm.res('tpl', 'navspinner')).insertBefore(baseNode.children('.'+arrow)); baseNode.removeClass(collapsed); $.when.apply($, reqs) .done(function() { var res = {},data, treeDirs, dirs, argLen, i; argLen = arguments.length; if (argLen > 0) { for (i = 0; i < argLen; i++) { data = arguments[i].tree || []; res[ends[i]] = Object.assign([], filter(data)); } } dfd.resolve(res); }) .fail(function() { dfd.reject(); }); return dfd; } else { return dfd.resolve(); } }, done= function(res, dfrd) { var open = function() { if (openRoot && baseNode) { findSubtree(baseNode.hash).show().prev(selNavdir).addClass(expanded); openRoot = false; } if (autoScr) { autoScroll().done(checkSubdirs); } else { checkSubdirs(); } }, current; if (res) { $.each(res, function(endHash, dirs) { dirs && updateTree(dirs); selectPages(fm.file(endHash)); dirs && updateArrows(dirs, loaded); }); } if (cwdDirs) { (fm.api < 2.1) && cwdDirs.push(cwd); updateTree(cwdDirs); } // set current node current = selectPages(); if (!current.hasClass(active)) { tree.find(selNavdir+'.'+active).removeClass(active); current.addClass(active); } // mark as loaded to cwd parents current.parents('.elfinder-navbar-wrapper').children('.'+navdir).addClass(loaded); if (res) { fm.lazy(open).done(function() { dfrd.resolve(); }); } else { open(); dfrd.resolve(); } }, rmSpinner = function(fail) { if (baseNode) { spinner.remove(); baseNode.addClass(collapsed + (fail? '' : (' ' + loaded))); } }, dfrd = $.Deferred(), baseNode, spinner; if (!fm.navHash2Elm(cwdhash).length) { syncing = true; loadParents() .done(function(res) { done(res, dfrd); rmSpinner(); }) .fail(function() { rmSpinner(true); dfrd.reject(); }) .always(function() { syncing = false; }); } else { done(void(0), dfrd); } // trigger 'treesync' with my $.Deferred fm.trigger('treesync', dfrd); return dfrd; }, /** * Make writable and not root dirs droppable * * @return void */ updateDroppable = function(target, node) { var limit = 100, next; if (!target) { if (!node || node.closest('div.'+wrapperRoot).hasClass(uploadable)) { (node || tree.find('div.'+uploadable)).find(selNavdir+':not(.elfinder-ro,.elfinder-na)').addClass('native-droppable'); } if (!node || node.closest('div.'+wrapperRoot).hasClass(pastable)) { target = (node || tree.find('div.'+pastable)).find(selNavdir+':not(.'+droppable+')'); } else { target = $(); } if (node) { // check leaf roots node.children('div.'+wrapperRoot).each(function() { updateDroppable(null, $(this)); }); } } // make droppable on async if (target.length) { fm.asyncJob(function(elm) { $(elm).droppable(droppableopts); }, $.makeArray(target), { interval : 20, numPerOnce : 100 }); } }, /** * Check required folders for subfolders and update arrow classes * * @param Array folders to check * @param String css class * @return void */ updateArrows = function(dirs, cls) { var sel = cls == loaded ? '.'+collapsed+':not(.'+loaded+')' : ':not(.'+collapsed+')'; $.each(dirs, function(i, dir) { fm.navHash2Elm(dir.phash).filter(sel) .filter(function() { return $.grep($(this).next('.'+subtree).children(), function(n) { return ($(n).children().hasClass(root))? false : true; }).length > 0; }) .addClass(cls); }); }, /** * Navigation tree * * @type JQuery */ tree = $(this).addClass(treeclass) // make dirs draggable and toggle hover class .on('mouseenter mouseleave', selNavdir, function(e) { var enter = (e.type === 'mouseenter'); if (enter && scrolling) { return; } var link = $(this), hash, dir; if (!link.hasClass(dropover+' '+disabled)) { if (!mobile && enter && !link.data('dragRegisted') && !link.hasClass(root+' '+draggable+' elfinder-na elfinder-wo')) { link.data('dragRegisted', true); if (fm.isCommandEnabled('copy', (hash = fm.navId2Hash(link.attr('id'))))) { link.draggable(fm.draggable); } } link.toggleClass(hover, enter); } // update title attr if necessary if (enter && opts.attrTitle) { dir = fm.file(hash || fm.navId2Hash(link.attr('id'))); if (!dir.isroot && link.attr('title') === (dir.i18 || dir.name)) { link.attr('title', fm.path(hash, true)); } } }) // native drag enter .on('dragenter', selNavdir, function(e) { if (e.originalEvent.dataTransfer) { var dst = $(this); dst.addClass(hover); if (dst.is('.'+collapsed+':not(.'+expanded+')')) { dst.data('expandTimer', setTimeout(function() { dst.is('.'+collapsed+'.'+hover) && dst.children('.'+arrow).trigger('click'); }, 500)); } } }) // native drag leave .on('dragleave', selNavdir, function(e) { if (e.originalEvent.dataTransfer) { var dst = $(this); dst.data('expandTimer') && clearTimeout(dst.data('expandTimer')); dst.removeClass(hover); } }) // open dir or open subfolders in tree .on('click', selNavdir, function(e) { var link = $(this), hash = fm.navId2Hash(link.attr('id')), file = fm.file(hash); if (link.data('longtap')) { link.removeData('longtap'); e.stopPropagation(); return; } if (!link.hasClass(active)) { tree.find(selNavdir+'.'+active).removeClass(active); link.addClass(active); } if (hash != fm.cwd().hash && !link.hasClass(disabled)) { fm.exec('open', hash).done(function() { fm.one('opendone', function() { fm.select({selected: [hash], origin: 'navbar'}); }); }); } else { if (link.hasClass(collapsed)) { link.children('.'+arrow).trigger('click'); } fm.select({selected: [hash], origin: 'navbar'}); } }) // for touch device .on('touchstart', selNavdir, function(e) { if (e.originalEvent.touches.length > 1) { return; } var evt = e.originalEvent, p; if (e.target.nodeName === 'INPUT') { e.stopPropagation(); return; } p = $(this).addClass(hover) .removeData('longtap') .data('tmlongtap', setTimeout(function(e){ // long tap p.data('longtap', true); fm.trigger('contextmenu', { 'type' : 'navbar', 'targets' : [fm.navId2Hash(p.attr('id'))], 'x' : evt.touches[0].pageX, 'y' : evt.touches[0].pageY }); }, 500)); }) .on('touchmove touchend', selNavdir, function(e) { if (e.target.nodeName === 'INPUT') { e.stopPropagation(); return; } clearTimeout($(this).data('tmlongtap')); $(this).removeData('tmlongtap'); if (e.type == 'touchmove') { $(this).removeClass(hover); } }) // toggle subfolders in tree .on('click', selNavdir+'.'+collapsed+' .'+arrow, function(e) { var arrow = $(this), link = arrow.parent(selNavdir), stree = link.next('.'+subtree), dfrd = $.Deferred(), slideTH = 30, cnt; e.stopPropagation(); if (link.hasClass(loaded)) { link.toggleClass(expanded); fm.lazy(function() { cnt = link.hasClass(expanded)? stree.children().length + stree.find('div.elfinder-navbar-subtree[style*=block]').children().length : stree.find('div:visible').length; if (cnt > slideTH) { stree.toggle(); fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1); checkSubdirs(); } else { stree.stop(true, true)[link.hasClass(expanded)? 'slideDown' : 'slideUp'](opts.durations.slideUpDown, function(){ fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1); checkSubdirs(); }); } }).always(function() { dfrd.resolve(); }); } else { spinner.insertBefore(arrow); link.removeClass(collapsed); fm.request({cmd : 'tree', target : fm.navId2Hash(link.attr('id'))}) .done(function(data) { updateTree(Object.assign([], filter(data.tree))); if (stree.children().length) { link.addClass(collapsed+' '+expanded); if (stree.children().length > slideTH) { stree.show(); fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1); checkSubdirs(); } else { stree.stop(true, true).slideDown(opts.durations.slideUpDown, function(){ fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1); checkSubdirs(); }); } } }) .always(function(data) { spinner.remove(); link.addClass(loaded); fm.one('treedone', function() { dfrd.resolve(); }); }); } arrow.data('dfrd', dfrd); }) .on('contextmenu', selNavdir, function(e) { e.stopPropagation(); var self = $(this); // now dirname editing if (self.find('input:text').length) { return; } e.preventDefault(); if (!self.data('tmlongtap')) { fm.trigger('contextmenu', { 'type' : 'navbar', 'targets' : [fm.navId2Hash($(this).attr('id'))], 'x' : e.pageX, 'y' : e.pageY }); } self.addClass('ui-state-hover'); fm.getUI('contextmenu').children().on('mouseenter', function() { self.addClass('ui-state-hover'); }); fm.bind('closecontextmenu', function() { self.removeClass('ui-state-hover'); }); }) .on('scrolltoview', selNavdir, function(e, data) { var self = $(this); autoScroll(self.attr('id')).done(function() { if (!data || data.blink === 'undefined' || data.blink) { fm.resources.blink(self, 'lookme'); } }); }) // prepend fake dir .on('create.'+fm.namespace, function(e, item) { var pdir = findSubtree(item.phash), lock = item.move || false, dir = $(itemhtml(item)).addClass('elfinder-navbar-wrapper-tmp'), selected = fm.selected(); lock && selected.length && fm.trigger('lockfiles', {files: selected}); pdir.prepend(dir); }), scrolling = false, navbarScrTm, // move tree into navbar navbar = fm.getUI('navbar').append(tree).show().on('scroll', function() { scrolling = true; navbarScrTm && cancelAnimationFrame(navbarScrTm); navbarScrTm = requestAnimationFrame(function() { scrolling = false; checkSubdirs(); }); }), prevSortTreeview = fm.sortAlsoTreeview; fm.open(function(e) { var data = e.data, dirs = filter(data.files), contextmenu = fm.getUI('contextmenu'); data.init && tree.empty(); if (fm.UA.iOS) { navbar.removeClass('overflow-scrolling-touch').addClass('overflow-scrolling-touch'); } if (dirs.length) { fm.lazy(function() { if (!contextmenu.data('cmdMaps')) { contextmenu.data('cmdMaps', {}); } updateTree(dirs); updateArrows(dirs, loaded); sync(dirs); }); } else { sync(); } }) // add new dirs .add(function(e) { var dirs = filter(e.data.added); if (dirs.length) { updateTree(dirs); updateArrows(dirs, collapsed); } }) // update changed dirs .change(function(e) { // do ot perfome while syncing if (syncing) { return; } var dirs = filter(e.data.changed, true), length = dirs.length, l = length, tgts = $(), changed = {}, dir, phash, node, tmp, realParent, reqParent, realSibling, reqSibling, isExpanded, isLoaded, parent, subdirs; $.each(hasMoreDirs, function(h, node) { node.trigger('update.'+fm.namespace, { change: 'prepare' }); }); while (l--) { dir = dirs[l]; phash = dir.phash; if ((node = fm.navHash2Elm(dir.hash)).length) { parent = node.parent(); if (phash) { realParent = node.closest('.'+subtree); reqParent = findSubtree(phash); realSibling = node.parent().next(); reqSibling = findSibling(reqParent, dir); if (!reqParent.length) { continue; } if (reqParent[0] !== realParent[0] || realSibling.get(0) !== reqSibling.get(0)) { reqSibling.length ? reqSibling.before(parent) : reqParent.append(parent); } } isExpanded = node.hasClass(expanded); isLoaded = node.hasClass(loaded); tmp = $(itemhtml(dir)); node.replaceWith(tmp.children(selNavdir)); ! mobile && updateDroppable(null, parent); if (dir.dirs && (isExpanded || isLoaded) && (node = fm.navHash2Elm(dir.hash)) && node.next('.'+subtree).children().length) { isExpanded && node.addClass(expanded); isLoaded && node.addClass(loaded); } subdirs |= dir.dirs == -1; } } // to check subdirs if (subdirs) { checkSubdirs(); } $.each(hasMoreDirs, function(h, node) { node.trigger('update.'+fm.namespace, { change: 'done' }); }); length && sync(void(0), false); }) // remove dirs .remove(function(e) { var dirs = e.data.removed, l = dirs.length, node, stree, removed; $.each(hasMoreDirs, function(h, node) { node.trigger('update.'+fm.namespace, { removed : dirs }); node.trigger('update.'+fm.namespace, { change: 'prepare' }); }); while (l--) { if ((node = fm.navHash2Elm(dirs[l])).length) { removed = true; stree = node.closest('.'+subtree); node.parent().detach(); if (!stree.children().length) { stree.hide().prev(selNavdir).removeClass(collapsed+' '+expanded+' '+loaded); } } } removed && fm.getUI('navbar').children('.ui-resizable-handle').trigger('resize'); $.each(hasMoreDirs, function(h, node) { node.trigger('update.'+fm.namespace, { change: 'done' }); }); }) // lock/unlock dirs while moving .bind('lockfiles unlockfiles', function(e) { var lock = e.type == 'lockfiles', helperLocked = e.data.helper? e.data.helper.data('locked') : false, act = (lock && !helperLocked) ? 'disable' : 'enable', dirs = $.grep(e.data.files||[], function(h) { var dir = fm.file(h); return dir && dir.mime == 'directory' ? true : false; }); $.each(dirs, function(i, hash) { var dir = fm.navHash2Elm(hash); if (dir.length && !helperLocked) { dir.hasClass(draggable) && dir.draggable(act); dir.hasClass(droppable) && dir.droppable(act); dir[lock ? 'addClass' : 'removeClass'](disabled); } }); }) .bind('sortchange', function() { if (fm.sortAlsoTreeview || prevSortTreeview !== fm.sortAlsoTreeview) { var dirs, ends = [], endsMap = {}, endsVid = {}, topVid = '', single = false, current; fm.lazy(function() { dirs = filter(fm.files()); prevSortTreeview = fm.sortAlsoTreeview; tree.empty(); // append volume roots at first updateTree($.map(fm.roots, function(h) { var dir = fm.file(h); return dir && !dir.phash? dir : null; })); if (!Object.keys(hasMoreDirs).length) { updateTree(dirs); current = selectPages(); updateArrows(dirs, loaded); } else { ends = getEnds(); if (ends.length > 1) { $.each(ends, function(i, end) { var vid = fm.file(fm.root(end)).volumeid; if (i === 0) { topVid = vid; } endsVid[vid] = end; endsMap[end] = []; }); $.each(dirs, function(i, d) { if (!d.volumeid) { single = true; return false; } endsMap[endsVid[d.volumeid] || endsVid[topVid]].push(d); }); } else { single = true; } if (single) { $.each(ends, function(i, endHash) { updateTree(dirs); current = selectPages(fm.file(endHash)); updateArrows(dirs, loaded); }); } else { $.each(endsMap, function(endHash, dirs) { updateTree(dirs); current = selectPages(fm.file(endHash)); updateArrows(dirs, loaded); }); } } sync(); }, 100); } }); }); return this; }; application/library/js/ui/sortbutton.js000064400000007164147577724760014367 0ustar00/** * @class elFinder toolbar button menu with sort variants. * * @author Dmitry (dio) Levashov **/ $.fn.elfindersortbutton = function(cmd) { "use strict"; return this.each(function() { var fm = cmd.fm, name = cmd.name, c = 'class', disabled = fm.res(c, 'disabled'), hover = fm.res(c, 'hover'), item = 'elfinder-button-menu-item', selected = item+'-selected', asc = selected+'-asc', desc = selected+'-desc', text = $(''+cmd.title+''), button = $(this).addClass('ui-state-default elfinder-button elfinder-menubutton elfiner-button-'+name) .attr('title', cmd.title) .append('', text) .on('mouseenter mouseleave', function(e) { !button.hasClass(disabled) && button.toggleClass(hover, e.type === 'mouseenter'); }) .on('click', function(e) { if (!button.hasClass(disabled)) { e.stopPropagation(); menu.is(':hidden') && fm.getUI().click(); menu.css(getMenuOffset()).slideToggle({ duration: 100, done: function(e) { fm[menu.is(':visible')? 'toFront' : 'toHide'](menu); } }); } }), hide = function() { fm.toHide(menu); }, menu = $('
      ') .hide() .appendTo(fm.getUI()) .on('mouseenter mouseleave', '.'+item, function(e) { $(this).toggleClass(hover, e.type === 'mouseenter'); }) .on('click', function(e) { e.preventDefault(); e.stopPropagation(); }) .on('close', hide), update = function() { menu.children('[rel]').removeClass(selected+' '+asc+' '+desc) .filter('[rel="'+fm.sortType+'"]') .addClass(selected+' '+(fm.sortOrder == 'asc' ? asc : desc)); menu.children('.elfinder-sort-stick').toggleClass(selected, fm.sortStickFolders); menu.children('.elfinder-sort-tree').toggleClass(selected, fm.sortAlsoTreeview); }, getMenuOffset = function() { var baseOffset = fm.getUI().offset(), buttonOffset = button.offset(); return { top : buttonOffset.top - baseOffset.top, left : buttonOffset.left - baseOffset.left }; }, tm; text.hide(); $.each(fm.sortRules, function(name, value) { menu.append($('
      '+fm.i18n('sort'+name)+'
      ').data('type', name)); }); menu.children().on('click', function(e) { cmd.exec([], $(this).removeClass(hover).attr('rel')); }); $('
      '+fm.i18n('sortFoldersFirst')+'
      ') .appendTo(menu) .on('click', function() { cmd.exec([], 'stick'); }); fm.one('init', function() { if (fm.ui.tree && fm.options.sortAlsoTreeview !== null) { $('
      '+fm.i18n('sortAlsoTreeview')+'
      ') .appendTo(menu) .on('click', function() { cmd.exec([], 'tree'); }); } }) .bind('disable select', hide) .bind('sortchange', update).getUI().on('click', hide); if (menu.children().length > 1) { cmd.change(function() { tm && cancelAnimationFrame(tm); tm = requestAnimationFrame(function() { button.toggleClass(disabled, cmd.disabled()); update(); }); }) .change(); } else { button.addClass(disabled); } }); }; application/library/js/ui/places.js000064400000040002147577724760013377 0ustar00/** * @class elFinder places/favorites ui * * @author Dmitry (dio) Levashov * @author Naoki Sawada **/ $.fn.elfinderplaces = function(fm, opts) { "use strict"; return this.each(function() { var dirs = {}, c = 'class', navdir = fm.res(c, 'navdir'), collapsed = fm.res(c, 'navcollapse'), expanded = fm.res(c, 'navexpand'), hover = fm.res(c, 'hover'), clroot = fm.res(c, 'treeroot'), dropover = fm.res(c, 'adroppable'), tpl = fm.res('tpl', 'placedir'), ptpl = fm.res('tpl', 'perms'), spinner = $(fm.res('tpl', 'navspinner')), suffix = opts.suffix? opts.suffix : '', key = 'places' + suffix, menuTimer = null, /** * Convert places dir node into dir hash * * @param String directory id * @return String **/ id2hash = function(id) { return id.substr(6); }, /** * Convert places dir hash into dir node id * * @param String directory id * @return String **/ hash2id = function(hash) { return 'place-'+hash; }, /** * Convert places dir hash into dir node elment (jQuery object) * * @param String directory id * @return Object **/ hash2elm = function(hash) { return $(document.getElementById(hash2id(hash))); }, /** * Save current places state * * @return void **/ save = function() { var hashes = [], data = {}; hashes = $.map(subtree.children().find('[id]'), function(n) { return id2hash(n.id); }); if (hashes.length) { $.each(hashes.reverse(), function(i, h) { data[h] = dirs[h]; }); } else { data = null; } fm.storage(key, data); }, /** * Init dir at places * * @return void **/ init = function() { var dat, hashes; key = 'places'+(opts.suffix? opts.suffix : ''), dirs = {}; dat = fm.storage(key); if (typeof dat === 'string') { // old data type elFinder <= 2.1.12 dat = $.grep(dat.split(','), function(hash) { return hash? true : false;}); $.each(dat, function(i, d) { var dir = d.split('#'); dirs[dir[0]] = dir[1]? dir[1] : dir[0]; }); } else if ($.isPlainObject(dat)) { dirs = dat; } // allow modify `dirs` /** * example for preset places * * elfinderInstance.bind('placesload', function(e, fm) { * //if (fm.storage(e.data.storageKey) === null) { // for first time only * if (!fm.storage(e.data.storageKey)) { // for empty places * e.data.dirs[targetHash] = fallbackName; // preset folder * } * } **/ fm.trigger('placesload', {dirs: dirs, storageKey: key}, true); hashes = Object.keys(dirs); if (hashes.length) { root.prepend(spinner); fm.request({ data : {cmd : 'info', targets : hashes}, preventDefault : true }) .done(function(data) { var exists = {}; data.files && data.files.length && fm.cache(data.files); $.each(data.files, function(i, f) { var hash = f.hash; exists[hash] = f; }); $.each(dirs, function(h, f) { add(exists[h] || Object.assign({notfound: true}, f)); }); if (fm.storage('placesState') > 0) { root.trigger('click'); } }) .always(function() { spinner.remove(); }); } }, /** * Return node for given dir object * * @param Object directory object * @return jQuery **/ create = function(dir, hash) { return $(tpl.replace(/\{id\}/, hash2id(dir? dir.hash : hash)) .replace(/\{name\}/, fm.escape(dir? dir.i18 || dir.name : hash)) .replace(/\{cssclass\}/, dir? (fm.perms2class(dir) + (dir.notfound? ' elfinder-na' : '') + (dir.csscls? ' '+dir.csscls : '')) : '') .replace(/\{permissions\}/, (dir && (!dir.read || !dir.write || dir.notfound))? ptpl : '') .replace(/\{title\}/, dir? (' title="' + fm.escape(fm.path(dir.hash, true) || dir.i18 || dir.name) + '"') : '') .replace(/\{symlink\}/, '') .replace(/\{style\}/, (dir && dir.icon)? fm.getIconStyle(dir) : '')); }, /** * Add new node into places * * @param Object directory object * @return void **/ add = function(dir) { var node, hash; if (dir.mime !== 'directory') { return false; } hash = dir.hash; if (!fm.files().hasOwnProperty(hash)) { // update cache fm.trigger('tree', {tree: [dir]}); } node = create(dir, hash); dirs[hash] = dir; subtree.prepend(node); root.addClass(collapsed); sortBtn.toggle(subtree.children().length > 1); return true; }, /** * Remove dir from places * * @param String directory hash * @return String removed name **/ remove = function(hash) { var name = null, tgt, cnt; if (dirs[hash]) { delete dirs[hash]; tgt = hash2elm(hash); if (tgt.length) { name = tgt.text(); tgt.parent().remove(); cnt = subtree.children().length; sortBtn.toggle(cnt > 1); if (! cnt) { root.removeClass(collapsed); places.removeClass(expanded); subtree.slideToggle(false); } } } return name; }, /** * Move up dir on places * * @param String directory hash * @return void **/ moveup = function(hash) { var self = hash2elm(hash), tgt = self.parent(), prev = tgt.prev('div'), cls = 'ui-state-hover', ctm = fm.getUI('contextmenu'); menuTimer && clearTimeout(menuTimer); if (prev.length) { ctm.find(':first').data('placesHash', hash); self.addClass(cls); tgt.insertBefore(prev); prev = tgt.prev('div'); menuTimer = setTimeout(function() { self.removeClass(cls); if (ctm.find(':first').data('placesHash') === hash) { ctm.hide().empty(); } }, 1500); } if(!prev.length) { self.removeClass(cls); ctm.hide().empty(); } }, /** * Update dir at places * * @param Object directory * @param String previous hash * @return Boolean **/ update = function(dir, preHash) { var hash = dir.hash, tgt = hash2elm(preHash || hash), node = create(dir, hash); if (tgt.length > 0) { tgt.parent().replaceWith(node); dirs[hash] = dir; return true; } else { return false; } }, /** * Remove all dir from places * * @return void **/ clear = function() { subtree.empty(); root.removeClass(collapsed); places.removeClass(expanded); subtree.slideToggle(false); }, /** * Sort places dirs A-Z * * @return void **/ sort = function() { $.each(dirs, function(h, f) { var dir = fm.file(h) || f, node = create(dir, h), ret = null; if (!dir) { node.hide(); } if (subtree.children().length) { $.each(subtree.children(), function() { var current = $(this); if ((dir.i18 || dir.name).localeCompare(current.children('.'+navdir).text()) < 0) { ret = !node.insertBefore(current); return ret; } }); if (ret !== null) { return true; } } !hash2elm(h).length && subtree.append(node); }); save(); }, // sort button sortBtn = $('') .hide() .on('click', function(e) { e.stopPropagation(); subtree.empty(); sort(); } ), /** * Node - wrapper for places root * * @type jQuery **/ wrapper = create({ hash : 'root-'+fm.namespace, name : fm.i18n(opts.name, 'places'), read : true, write : true }), /** * Places root node * * @type jQuery **/ root = wrapper.children('.'+navdir) .addClass(clroot) .on('click', function(e) { e.stopPropagation(); if (root.hasClass(collapsed)) { places.toggleClass(expanded); subtree.slideToggle(); fm.storage('placesState', places.hasClass(expanded)? 1 : 0); } }) .append(sortBtn), /** * Container for dirs * * @type jQuery **/ subtree = wrapper.children('.'+fm.res(c, 'navsubtree')), /** * Main places container * * @type jQuery **/ places = $(this).addClass(fm.res(c, 'tree')+' elfinder-places ui-corner-all') .hide() .append(wrapper) .appendTo(fm.getUI('navbar')) .on('mouseenter mouseleave', '.'+navdir, function(e) { $(this).toggleClass('ui-state-hover', (e.type == 'mouseenter')); }) .on('click', '.'+navdir, function(e) { var p = $(this); if (p.data('longtap')) { e.stopPropagation(); return; } ! p.hasClass('elfinder-na') && fm.exec('open', p.attr('id').substr(6)); }) .on('contextmenu', '.'+navdir+':not(.'+clroot+')', function(e) { var self = $(this), hash = self.attr('id').substr(6); e.preventDefault(); fm.trigger('contextmenu', { raw : [{ label : fm.i18n('moveUp'), icon : 'up', remain : true, callback : function() { moveup(hash); save(); } },'|',{ label : fm.i18n('rmFromPlaces'), icon : 'rm', callback : function() { remove(hash); save(); } }], 'x' : e.pageX, 'y' : e.pageY }); self.addClass('ui-state-hover'); fm.getUI('contextmenu').children().on('mouseenter', function() { self.addClass('ui-state-hover'); }); fm.bind('closecontextmenu', function() { self.removeClass('ui-state-hover'); }); }) .droppable({ tolerance : 'pointer', accept : '.elfinder-cwd-file-wrapper,.elfinder-tree-dir,.elfinder-cwd-file', hoverClass : fm.res('class', 'adroppable'), classes : { // Deprecated hoverClass jQueryUI>=1.12.0 'ui-droppable-hover': fm.res('class', 'adroppable') }, over : function(e, ui) { var helper = ui.helper, dir = $.grep(helper.data('files'), function(h) { return (fm.file(h).mime === 'directory' && !dirs[h])? true : false; }); e.stopPropagation(); helper.data('dropover', helper.data('dropover') + 1); if (fm.insideWorkzone(e.pageX, e.pageY)) { if (dir.length > 0) { helper.addClass('elfinder-drag-helper-plus'); fm.trigger('unlockfiles', {files : helper.data('files'), helper: helper}); } else { $(this).removeClass(dropover); } } }, out : function(e, ui) { var helper = ui.helper; e.stopPropagation(); helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus').data('dropover', Math.max(helper.data('dropover') - 1, 0)); $(this).removeData('dropover') .removeClass(dropover); }, drop : function(e, ui) { var helper = ui.helper, resolve = true; $.each(helper.data('files'), function(i, hash) { var dir = fm.file(hash); if (dir && dir.mime == 'directory' && !dirs[dir.hash]) { add(dir); } else { resolve = false; } }); save(); resolve && helper.hide(); } }) // for touch device .on('touchstart', '.'+navdir+':not(.'+clroot+')', function(e) { if (e.originalEvent.touches.length > 1) { return; } var hash = $(this).attr('id').substr(6), p = $(this) .addClass(hover) .data('longtap', null) .data('tmlongtap', setTimeout(function(){ // long tap p.data('longtap', true); fm.trigger('contextmenu', { raw : [{ label : fm.i18n('rmFromPlaces'), icon : 'rm', callback : function() { remove(hash); save(); } }], 'x' : e.originalEvent.touches[0].pageX, 'y' : e.originalEvent.touches[0].pageY }); }, 500)); }) .on('touchmove touchend', '.'+navdir+':not(.'+clroot+')', function(e) { clearTimeout($(this).data('tmlongtap')); if (e.type == 'touchmove') { $(this).removeClass(hover); } }); if ($.fn.sortable) { subtree.addClass('touch-punch') .sortable({ appendTo : fm.getUI(), revert : false, helper : function(e) { var dir = $(e.target).parent(); dir.children().removeClass('ui-state-hover'); return $('
      ') .append($('
      ').show().append(dir.clone())); }, stop : function(e, ui) { var target = $(ui.item[0]), top = places.offset().top, left = places.offset().left, width = places.width(), height = places.height(), x = e.pageX, y = e.pageY; if (!(x > left && x < left+width && y > top && y < y+height)) { remove(id2hash(target.children(':first').attr('id'))); save(); } }, update : function(e, ui) { save(); } }); } // "on regist" for command exec $(this).on('regist', function(e, files){ var added = false; $.each(files, function(i, dir) { if (dir && dir.mime == 'directory' && !dirs[dir.hash]) { if (add(dir)) { added = true; } } }); added && save(); }); // on fm load - show places and load files from backend fm.one('load', function() { var dat, hashes; if (fm.oldAPI) { return; } places.show().parent().show(); init(); fm.change(function(e) { var changed = false; $.each(e.data.changed, function(i, file) { if (dirs[file.hash]) { if (file.mime !== 'directory') { if (remove(file.hash)) { changed = true; } } else { if (update(file)) { changed = true; } } } }); changed && save(); }) .bind('rename', function(e) { var changed = false; if (e.data.removed) { $.each(e.data.removed, function(i, hash) { if (e.data.added[i]) { if (update(e.data.added[i], hash)) { changed = true; } } }); } changed && save(); }) .bind('rm paste', function(e) { var names = [], changed = false; if (e.data.removed) { $.each(e.data.removed, function(i, hash) { var name = remove(hash); name && names.push(name); }); } if (names.length) { changed = true; } if (e.data.added && names.length) { $.each(e.data.added, function(i, file) { if ($.inArray(file.name, names) !== 1) { file.mime == 'directory' && add(file); } }); } changed && save(); }) .bind('sync netmount', function() { var ev = this, opSuffix = opts.suffix? opts.suffix : '', hashes; if (ev.type === 'sync') { // check is change of opts.suffix if (suffix !== opSuffix) { suffix = opSuffix; clear(); init(); return; } } hashes = Object.keys(dirs); if (hashes.length) { root.prepend(spinner); fm.request({ data : {cmd : 'info', targets : hashes}, preventDefault : true }) .done(function(data) { var exists = {}, updated = false, cwd = fm.cwd().hash; $.each(data.files || [], function(i, file) { var hash = file.hash; exists[hash] = file; if (!fm.files().hasOwnProperty(file.hash)) { // update cache fm.updateCache({tree: [file]}); } }); $.each(dirs, function(h, f) { if (Boolean(f.notfound) === Boolean(exists[h])) { if ((f.phash === cwd && ev.type !== 'netmount') || (exists[h] && exists[h].mime !== 'directory')) { if (remove(h)) { updated = true; } } else { if (update(exists[h] || Object.assign({notfound: true}, f))) { updated = true; } } } else if (exists[h] && exists[h].phash != cwd) { // update permission of except cwd update(exists[h]); } }); updated && save(); }) .always(function() { spinner.remove(); }); } }); }); }); }; application/library/js/ui/cwd.js000064400000255673147577724760012733 0ustar00/** * elFinder current working directory ui. * * @author Dmitry (dio) Levashov **/ $.fn.elfindercwd = function(fm, options) { "use strict"; this.not('.elfinder-cwd').each(function() { // fm.time('cwdLoad'); var mobile = fm.UA.Mobile, list = fm.viewType == 'list', undef = 'undefined', /** * Select event full name * * @type String **/ evtSelect = 'select.'+fm.namespace, /** * Unselect event full name * * @type String **/ evtUnselect = 'unselect.'+fm.namespace, /** * Disable event full name * * @type String **/ evtDisable = 'disable.'+fm.namespace, /** * Disable event full name * * @type String **/ evtEnable = 'enable.'+fm.namespace, c = 'class', /** * File css class * * @type String **/ clFile = fm.res(c, 'cwdfile'), /** * Selected css class * * @type String **/ fileSelector = '.'+clFile, /** * Selected css class * * @type String **/ clSelected = 'ui-selected', /** * Disabled css class * * @type String **/ clDisabled = fm.res(c, 'disabled'), /** * Draggable css class * * @type String **/ clDraggable = fm.res(c, 'draggable'), /** * Droppable css class * * @type String **/ clDroppable = fm.res(c, 'droppable'), /** * Hover css class * * @type String **/ clHover = fm.res(c, 'hover'), /** * Active css class * * @type String **/ clActive = fm.res(c, 'active'), /** * Hover css class * * @type String **/ clDropActive = fm.res(c, 'adroppable'), /** * Css class for temporary nodes (for mkdir/mkfile) commands * * @type String **/ clTmp = clFile+'-tmp', /** * Select checkbox css class * * @type String */ clSelChk = 'elfinder-cwd-selectchk', /** * Number of thumbnails to load in one request (new api only) * * @type Number **/ tmbNum = fm.options.loadTmbs > 0 ? fm.options.loadTmbs : 5, /** * Current search query. * * @type String */ query = '', /** * Currect clipboard(cut) hashes as object key * * @type Object */ clipCuts = {}, /** * Parents hashes of cwd * * @type Array */ cwdParents = [], /** * cwd current hashes * * @type Array */ cwdHashes = [], /** * incsearch current hashes * * @type Array */ incHashes = void 0, /** * Custom columns name and order * * @type Array */ customCols = [], /** * Current clicked element id of first time for dblclick * * @type String */ curClickId = '', /** * Custom columns builder * * @type Function */ customColsBuild = function() { var cols = ''; for (var i = 0; i < customCols.length; i++) { cols += '{' + customCols[i] + '}'; } return cols; }, /** * Make template.row from customCols * * @type Function */ makeTemplateRow = function() { return '
      {marker}{name}
      '+selectCheckbox+''+customColsBuild()+''; }, selectCheckbox = ($.map(options.showSelectCheckboxUA, function(t) {return (fm.UA[t] || t.match(/^all$/i))? true : null;}).length)? '
      ' : '', colResizing = false, colWidth = null, /** * Table header height */ thHeight, /** * File templates * * @type Object **/ templates = { icon : '
      {marker}
      {name}
      '+selectCheckbox+'
      ', row : '' }, permsTpl = fm.res('tpl', 'perms'), lockTpl = fm.res('tpl', 'lock'), symlinkTpl = fm.res('tpl', 'symlink'), /** * Template placeholders replacement rules * * @type Object **/ replacement = { id : function(f) { return fm.cwdHash2Id(f.hash); }, name : function(f) { var name = fm.escape(f.i18 || f.name); !list && (name = name.replace(/([_.])/g, '​$1')); return name; }, nametitle : function(f) { return fm.escape(f.i18 || f.name); }, permsclass : function(f) { return fm.perms2class(f); }, perm : function(f) { return fm.formatPermissions(f); }, dirclass : function(f) { var cName = f.mime == 'directory' ? 'directory' : ''; f.isroot && (cName += ' isroot'); f.csscls && (cName += ' ' + fm.escape(f.csscls)); options.getClass && (cName += ' ' + options.getClass(f)); return cName; }, style : function(f) { return f.icon? fm.getIconStyle(f) : ''; }, mime : function(f) { var cName = fm.mime2class(f.mime); f.icon && (cName += ' elfinder-cwd-bgurl'); return cName; }, size : function(f) { return (f.mime === 'directory' && !f.size)? '-' : fm.formatSize(f.size); }, date : function(f) { return fm.formatDate(f); }, kind : function(f) { return fm.mime2kind(f); }, mode : function(f) { return f.perm? fm.formatFileMode(f.perm) : ''; }, modestr : function(f) { return f.perm? fm.formatFileMode(f.perm, 'string') : ''; }, modeoct : function(f) { return f.perm? fm.formatFileMode(f.perm, 'octal') : ''; }, modeboth : function(f) { return f.perm? fm.formatFileMode(f.perm, 'both') : ''; }, marker : function(f) { return (f.alias || f.mime == 'symlink-broken' ? symlinkTpl : '')+(!f.read || !f.write ? permsTpl : '')+(f.locked ? lockTpl : ''); }, tooltip : function(f) { var title = fm.formatDate(f) + (f.size > 0 ? ' ('+fm.formatSize(f.size)+')' : ''), info = ''; if (query && f.path) { info = fm.escape(f.path.replace(/\/[^\/]*$/, '')); } else { info = f.tooltip? fm.escape(f.tooltip).replace(/\r/g, ' ') : ''; } if (list) { info += (info? ' ' : '') + fm.escape(f.i18 || f.name); } return info? info + ' ' + title : title; } }, /** * Type badge CSS added flag * * @type Object */ addedBadges = {}, /** * Type badge style sheet element * * @type Object */ addBadgeStyleSheet, /** * Add type badge CSS into 'head' * * @type Fundtion */ addBadgeStyle = function(mime, name) { var sel, ext, type; if (mime && ! addedBadges[mime]) { if (typeof addBadgeStyleSheet === 'undefined') { if ($('#elfinderAddBadgeStyle'+fm.namespace).length) { $('#elfinderAddBadgeStyle'+fm.namespace).remove(); } addBadgeStyleSheet = $('').insertBefore($('head').children(':first')).get(0).sheet || null; } if (addBadgeStyleSheet) { mime = mime.toLowerCase(); type = mime.split('/'); ext = fm.escape(fm.mimeTypes[mime] || (name.replace(/.bac?k$/i, '').match(/\.([^.]+)$/) || ['',''])[1]); if (ext) { sel = '.elfinder-cwd-icon-' + type[0].replace(/(\.|\+)/g, '-'); if (typeof type[1] !== 'undefined') { sel += '.elfinder-cwd-icon-' + type[1].replace(/(\.|\+)/g, '-'); } try { addBadgeStyleSheet.insertRule(sel + ':before{content:"' + ext.toLowerCase() + '"}', 0); } catch(e) {} } addedBadges[mime] = true; } } }, /** * Return file html * * @param Object file info * @return String **/ itemhtml = function(f) { f.mime && f.mime !== 'directory' && !addedBadges[f.mime] && addBadgeStyle(f.mime, f.name); return templates[list ? 'row' : 'icon'] .replace(/\{([a-z0-9_]+)\}/g, function(s, e) { return replacement[e] ? replacement[e](f, fm) : (f[e] ? f[e] : ''); }); }, /** * jQueery node that will be selected next * * @type Object jQuery node */ selectedNext = $(), /** * Flag. Required for msie to avoid unselect files on dragstart * * @type Boolean **/ selectLock = false, /** * Move selection to prev/next file * * @param String move direction * @param Boolean append to current selection * @return void * @rise select */ select = function(keyCode, append) { var code = $.ui.keyCode, prev = keyCode == code.LEFT || keyCode == code.UP, sel = cwd.find('[id].'+clSelected), selector = prev ? 'first:' : 'last', s, n, sib, top, left; function sibling(n, direction) { return n[direction+'All']('[id]:not(.'+clDisabled+'):not(.elfinder-cwd-parent):first'); } if (sel.length) { s = sel.filter(prev ? ':first' : ':last'); sib = sibling(s, prev ? 'prev' : 'next'); if (!sib.length) { // there is no sibling on required side - do not move selection n = s; } else if (list || keyCode == code.LEFT || keyCode == code.RIGHT) { // find real prevoius file n = sib; } else { // find up/down side file in icons view top = s.position().top; left = s.position().left; n = s; if (prev) { do { n = n.prev('[id]'); } while (n.length && !(n.position().top < top && n.position().left <= left)); if (n.hasClass(clDisabled)) { n = sibling(n, 'next'); } } else { do { n = n.next('[id]'); } while (n.length && !(n.position().top > top && n.position().left >= left)); if (n.hasClass(clDisabled)) { n = sibling(n, 'prev'); } // there is row before last one - select last file if (!n.length) { sib = cwd.find('[id]:not(.'+clDisabled+'):last'); if (sib.position().top > top) { n = sib; } } } } // !append && unselectAll(); } else { if (selectedNext.length) { n = prev? selectedNext.prev() : selectedNext; } else { // there are no selected file - select first/last one n = cwd.find('[id]:not(.'+clDisabled+'):not(.elfinder-cwd-parent):'+(prev ? 'last' : 'first')); } } if (n && n.length && !n.hasClass('elfinder-cwd-parent')) { if (s && append) { // append new files to selected n = s.add(s[prev ? 'prevUntil' : 'nextUntil']('#'+n.attr('id'))).add(n); } else { // unselect selected files sel.trigger(evtUnselect); } // select file(s) n.trigger(evtSelect); // set its visible scrollToView(n.filter(prev ? ':first' : ':last')); // update cache/view trigger(); } }, selectedFiles = {}, selectFile = function(hash) { fm.cwdHash2Elm(hash).trigger(evtSelect); }, allSelected = false, selectAll = function() { var phash = fm.cwd().hash; selectCheckbox && selectAllCheckbox.find('input').prop('checked', true); fm.lazy(function() { var files; if (fm.maxTargets && (incHashes || cwdHashes).length > fm.maxTargets) { unselectAll({ notrigger: true }); files = $.map(incHashes || cwdHashes, function(hash) { return fm.file(hash) || null; }); files = files.slice(0, fm.maxTargets); selectedFiles = {}; $.each(files, function(i, v) { selectedFiles[v.hash] = true; fm.cwdHash2Elm(v.hash).trigger(evtSelect); }); fm.toast({mode: 'warning', msg: fm.i18n(['errMaxTargets', fm.maxTargets])}); } else { cwd.find('[id]:not(.'+clSelected+'):not(.elfinder-cwd-parent)').trigger(evtSelect); selectedFiles = fm.arrayFlip(incHashes || cwdHashes, true); } trigger(); selectCheckbox && selectAllCheckbox.data('pending', false); }, 0, {repaint: true}); }, /** * Unselect all files * * @param Object options * @return void */ unselectAll = function(opts) { var o = opts || {}; selectCheckbox && selectAllCheckbox.find('input').prop('checked', false); if (Object.keys(selectedFiles).length) { selectLock = false; selectedFiles = {}; cwd.find('[id].'+clSelected).trigger(evtUnselect); selectCheckbox && cwd.find('input:checkbox.'+clSelChk).prop('checked', false); } !o.notrigger && trigger(); selectCheckbox && selectAllCheckbox.data('pending', false); cwd.removeClass('elfinder-cwd-allselected'); }, selectInvert = function() { var invHashes = {}; if (allSelected) { unselectAll(); } else if (! Object.keys(selectedFiles).length) { selectAll(); } else { $.each((incHashes || cwdHashes), function(i, h) { var itemNode = fm.cwdHash2Elm(h); if (! selectedFiles[h]) { invHashes[h] = true; itemNode.length && itemNode.trigger(evtSelect); } else { itemNode.length && itemNode.trigger(evtUnselect); } }); selectedFiles = invHashes; trigger(); } }, /** * Return selected files hashes list * * @return Array */ selected = function() { return Object.keys(selectedFiles); }, /** * Last selected node id * * @type String|Void */ lastSelect = void 0, /** * Fire elfinder "select" event and pass selected files to it * * @return void */ trigger = function() { var selected = Object.keys(selectedFiles), opts = { selected : selected, origin : 'cwd' }; if (oldSchoolItem && (selected.length > 1 || selected[0] !== fm.cwdId2Hash( oldSchoolItem.attr('id'))) && oldSchoolItem.hasClass(clSelected)) { oldSchoolItem.trigger(evtUnselect); } allSelected = selected.length && (selected.length === (incHashes || cwdHashes).length) && (!fm.maxTargets || selected.length <= fm.maxTargets); if (selectCheckbox) { selectAllCheckbox.find('input').prop('checked', allSelected); cwd[allSelected? 'addClass' : 'removeClass']('elfinder-cwd-allselected'); } if (allSelected) { opts.selectall = true; } else if (! selected.length) { opts.unselectall = true; } fm.trigger('select', opts); }, /** * Scroll file to set it visible * * @param DOMElement file/dir node * @return void */ scrollToView = function(o, blink) { if (! o.length) { return; } var ftop = o.position().top, fheight = o.outerHeight(true), wtop = wrapper.scrollTop(), wheight = wrapper.get(0).clientHeight, thheight = tableHeader? tableHeader.outerHeight(true) : 0; if (ftop + thheight + fheight > wtop + wheight) { wrapper.scrollTop(parseInt(ftop + thheight + fheight - wheight)); } else if (ftop < wtop) { wrapper.scrollTop(ftop); } list && wrapper.scrollLeft(0); !!blink && fm.resources.blink(o, 'lookme'); }, /** * Files we get from server but not show yet * * @type Array **/ buffer = [], /** * Extra data of buffer * * @type Object **/ bufferExt = {}, /** * Return index of elements with required hash in buffer * * @param String file hash * @return Number */ index = function(hash) { var l = buffer.length; while (l--) { if (buffer[l].hash == hash) { return l; } } return -1; }, /** * Scroll start event name * * @type String **/ scrollStartEvent = 'elfscrstart', /** * Scroll stop event name * * @type String **/ scrollEvent = 'elfscrstop', scrolling = false, /** * jQuery UI selectable option * * @type Object */ selectableOption = { disabled : true, filter : '[id]:first', stop : trigger, delay : 250, appendTo : 'body', autoRefresh: false, selected : function(e, ui) { $(ui.selected).trigger(evtSelect); }, unselected : function(e, ui) { $(ui.unselected).trigger(evtUnselect); } }, /** * hashes of items displayed in current view * * @type Object ItemHash => DomId */ inViewHashes = {}, /** * Processing when the current view is changed (On open, search, scroll, resize etc.) * * @return void */ wrapperRepaint = function(init, recnt) { if (!bufferExt.renderd) { return; } var firstNode = (list? cwd.find('tbody:first') : cwd).children('[id]'+(options.oldSchool? ':not(.elfinder-cwd-parent)' : '')+':first'); if (!firstNode.length) { return; } var selectable = cwd.data('selectable'), rec = (function() { var wos = wrapper.offset(), ww = wrapper.width(), w = $(window), x = firstNode.width() / 2, l = Math.min(wos.left - w.scrollLeft() + (fm.direction === 'ltr'? x : ww - x), wos.left + ww - 10), t = wos.top - w.scrollTop() + 10 + (list? thHeight : 0); return {left: Math.max(0, Math.round(l)), top: Math.max(0, Math.round(t))}; })(), tgt = init? firstNode : $(document.elementFromPoint(rec.left , rec.top)), ids = {}, tmbs = {}, multi = 5, cnt = Math.ceil((bufferExt.hpi? Math.ceil((wz.data('rectangle').height / bufferExt.hpi) * 1.5) : showFiles) / multi), chk = function() { var id, hash, file, i; for (i = 0; i < multi; i++) { id = tgt.attr('id'); if (id) { bufferExt.getTmbs = []; hash = fm.cwdId2Hash(id); inViewHashes[hash] = id; // for tmbs if (bufferExt.attachTmbs[hash]) { tmbs[hash] = bufferExt.attachTmbs[hash]; } // for selectable selectable && (ids[id] = true); } // next node tgt = tgt.next(); if (!tgt.length) { break; } } }, done = function() { var idsArr; if (cwd.data('selectable')) { Object.assign(ids, selectedFiles); idsArr = Object.keys(ids); if (idsArr.length) { selectableOption.filter = '#'+idsArr.join(', #'); cwd.selectable('enable').selectable('option', {filter : selectableOption.filter}).selectable('refresh'); } } if (Object.keys(tmbs).length) { bufferExt.getTmbs = []; attachThumbnails(tmbs); } }, setTarget = function() { if (!tgt.hasClass(clFile)) { tgt = tgt.closest(fileSelector); } }, arr, widget; inViewHashes = {}; selectable && cwd.selectable('option', 'disabled'); if (tgt.length) { if (!tgt.hasClass(clFile) && !tgt.closest(fileSelector).length) { // dialog, serach button etc. widget = fm.getUI().find('.ui-dialog:visible,.ui-widget:visible'); if (widget.length) { widget.hide(); tgt = $(document.elementFromPoint(rec.left , rec.top)); widget.show(); } else { widget = null; } } setTarget(); if (!tgt.length) { // try search 5px down widget && widget.hide(); tgt = $(document.elementFromPoint(rec.left , rec.top + 5)); widget && widget.show(); setTarget(); } } if (tgt.length) { if (tgt.attr('id')) { if (init) { for (var i = 0; i < cnt; i++) { chk(); if (! tgt.length) { break; } } done(); } else { bufferExt.repaintJob && bufferExt.repaintJob.state() === 'pending' && bufferExt.repaintJob.reject(); arr = new Array(cnt); bufferExt.repaintJob = fm.asyncJob(function() { chk(); if (! tgt.length) { done(); bufferExt.repaintJob && bufferExt.repaintJob.state() === 'pending' && bufferExt.repaintJob.reject(); } }, arr).done(done); } } } else if (init && bufferExt.renderd) { // In initial request, cwd DOM not renderd so doing lazy check recnt = recnt || 0; if (recnt < 10) { // Prevent infinite loop requestAnimationFrame(function() { wrapperRepaint(init, ++recnt); }); } } }, /** * Item node of oldScholl ".." */ oldSchoolItem = null, /** * display parent folder with ".." name * * @param String phash * @return void */ oldSchool = function(p) { var phash = fm.cwd().phash, pdir = fm.file(phash) || null, set = function(pdir) { if (pdir) { oldSchoolItem = $(itemhtml($.extend(true, {}, pdir, {name : '..', i18 : '..', mime : 'directory'}))) .addClass('elfinder-cwd-parent') .on('dblclick', function() { fm.trigger('select', {selected : [phash]}).exec('open', phash); }); (list ? oldSchoolItem.children('td:first') : oldSchoolItem).children('.elfinder-cwd-select').remove(); if (fm.cwdHash2Elm(phash).length) { fm.cwdHash2Elm(phash).replaceWith(oldSchoolItem); } else { (list ? cwd.find('tbody') : cwd).prepend(oldSchoolItem); } fm.draggingUiHelper && fm.draggingUiHelper.data('refreshPositions', 1); } }; if (pdir) { set(pdir); } else { set({hash: phash, read: true, write: true}); if (fm.getUI('tree').length) { fm.one('parents', function() { set(fm.file(phash) || null); wrapper.trigger(scrollEvent); }); } else { fm.request({ data : {cmd : 'parents', target : fm.cwd().hash}, preventFail : true }) .done(function(data) { set(fm.file(phash) || null); wrapper.trigger(scrollEvent); }); } } }, showFiles = fm.options.showFiles, /** * Cwd scroll event handler. * Lazy load - append to cwd not shown files * * @return void */ render = function() { if (bufferExt.rendering || (bufferExt.renderd && ! buffer.length)) { return; } var place = (list ? cwd.children('table').children('tbody') : cwd), phash, chk, // created document fragment for jQuery >= 1.12, 2.2, 3.0 // see Studio-42/elFinder#1544 @ github docFlag = $.htmlPrefilter? true : false, tempDom = docFlag? $(document.createDocumentFragment()) : $('
      '), go = function(o){ var over = o || null, html = [], dirs = false, atmb = {}, stmb = (fm.option('tmbUrl') === 'self'), init = bufferExt.renderd? false : true, files, locks, selected; files = buffer.splice(0, showFiles + (over || 0) / (bufferExt.hpi || 1)); bufferExt.renderd += files.length; if (! buffer.length) { bottomMarker.hide(); wrapper.off(scrollEvent, render); } locks = []; html = $.map(files, function(f) { if (f.hash && f.name) { if (f.mime == 'directory') { dirs = true; } if ((f.tmb && (f.tmb != 1 || f.size > 0)) || (stmb && f.mime.indexOf('image/') === 0)) { atmb[f.hash] = f.tmb || 'self'; } clipCuts[f.hash] && locks.push(f.hash); return itemhtml(f); } return null; }); // html into temp node tempDom.empty().append(html.join('')); // make directory droppable dirs && !mobile && makeDroppable(tempDom); // check selected items selected = []; if (Object.keys(selectedFiles).length) { tempDom.find('[id]:not(.'+clSelected+'):not(.elfinder-cwd-parent)').each(function() { selectedFiles[fm.cwdId2Hash(this.id)] && selected.push($(this)); }); } // append to cwd place.append(docFlag? tempDom : tempDom.children()); // trigger select if (selected.length) { $.each(selected, function(i, n) { n.trigger(evtSelect); }); trigger(); } locks.length && fm.trigger('lockfiles', {files: locks}); !bufferExt.hpi && bottomMarkerShow(place, files.length); if (list) { // show thead cwd.find('thead').show(); // fixed table header fixTableHeader({fitWidth: ! colWidth}); } if (Object.keys(atmb).length) { Object.assign(bufferExt.attachTmbs, atmb); } if (init) { if (! mobile && ! cwd.data('selectable')) { // make files selectable cwd.selectable(selectableOption).data('selectable', true); } } ! scrolling && wrapper.trigger(scrollEvent); }; if (! bufferExt.renderd) { // first time to go() bufferExt.rendering = true; // scroll top on dir load to avoid scroll after page reload wrapper.scrollTop(0); phash = fm.cwd().phash; go(); if (options.oldSchool) { if (phash && !query) { oldSchool(phash); } else { oldSchoolItem = $(); } } if (list) { colWidth && setColwidth(); fixTableHeader({fitWidth: true}); } bufferExt.itemH = (list? place.find('tr:first') : place.find('[id]:first')).outerHeight(true); fm.trigger('cwdrender'); bufferExt.rendering = false; wrapperRepaint(true); } if (! bufferExt.rendering && buffer.length) { // next go() if ((chk = (wrapper.height() + wrapper.scrollTop() + fm.options.showThreshold + bufferExt.row) - (bufferExt.renderd * bufferExt.hpi)) > 0) { bufferExt.rendering = true; fm.lazy(function() { go(chk); bufferExt.rendering = false; }); } else { !fm.enabled() && resize(); } } else { resize(); } }, // fixed table header jQuery object tableHeader = null, // Is UA support CSS sticky cssSticky = fm.UA.CSS.positionSticky && fm.UA.CSS.widthMaxContent, // To fixed table header colmun fixTableHeader = function(optsArg) { thHeight = 0; if (! options.listView.fixedHeader) { return; } var setPos = function() { var val, pos; pos = (fm.direction === 'ltr')? 'left' : 'right'; val = ((fm.direction === 'ltr')? wrapper.scrollLeft() : table.outerWidth(true) - wrapper.width() - wrapper.scrollLeft()) * -1; if (base.css(pos) !== val) { base.css(pos, val); } }, opts = optsArg || {}, cnt, base, table, htable, thead, tbody, hheight, htr, btr, htd, btd, htw, btw, init; tbody = cwd.find('tbody'); btr = tbody.children('tr:first'); if (btr.length && btr.is(':visible')) { table = tbody.parent(); if (! tableHeader) { init = true; tbody.addClass('elfinder-cwd-fixheader'); thead = cwd.find('thead').attr('id', fm.namespace+'-cwd-thead'); htr = thead.children('tr:first'); hheight = htr.outerHeight(true); cwd.css('margin-top', hheight - parseInt(table.css('padding-top'))); if (cssSticky) { tableHeader = $('
      ').addClass(cwd.attr('class')).append($('
      ').append(thead)); cwd.after(tableHeader); wrapper.on('resize.fixheader', function(e) { e.stopPropagation(); fixTableHeader({fitWidth: true}); }); } else { base = $('
      ').addClass(cwd.attr('class')).append($('
      ').append(thead)); tableHeader = $('
      ').addClass(wrapper.attr('class') + ' elfinder-cwd-fixheader') .removeClass('ui-droppable native-droppable') .css(wrapper.position()) .css({ height: hheight, width: cwd.outerWidth() }) .append(base); if (fm.direction === 'rtl') { tableHeader.css('left', (wrapper.data('width') - wrapper.width()) + 'px'); } setPos(); wrapper.after(tableHeader) .on('scroll.fixheader resize.fixheader', function(e) { setPos(); if (e.type === 'resize') { e.stopPropagation(); tableHeader.css(wrapper.position()); wrapper.data('width', wrapper.css('overflow', 'hidden').width()); wrapper.css('overflow', 'auto'); fixTableHeader(); } }); } } else { thead = $('#'+fm.namespace+'-cwd-thead'); htr = thead.children('tr:first'); } if (init || opts.fitWidth || Math.abs(btr.outerWidth() - htr.outerWidth()) > 2) { cnt = customCols.length + 1; for (var i = 0; i < cnt; i++) { htd = htr.children('td:eq('+i+')'); btd = btr.children('td:eq('+i+')'); htw = htd.width(); btw = btd.width(); if (typeof htd.data('delta') === 'undefined') { htd.data('delta', (htd.outerWidth() - htw) - (btd.outerWidth() - btw)); } btw -= htd.data('delta'); if (! init && ! opts.fitWidth && htw === btw) { break; } htd.css('width', btw + 'px'); } } if (!cssSticky) { tableHeader.data('widthTimer') && cancelAnimationFrame(tableHeader.data('widthTimer')); tableHeader.data('widthTimer', requestAnimationFrame(function() { if (tableHeader) { tableHeader.css('width', mBoard.width() + 'px'); if (fm.direction === 'rtl') { tableHeader.css('left', (wrapper.data('width') - wrapper.width()) + 'px'); } } })); } thHeight = thead.height(); } }, // Set colmun width setColwidth = function() { if (list && colWidth) { var cl = 'elfinder-cwd-colwidth', first = cwd.find('tr[id]:first'), former; if (! first.hasClass(cl)) { former = cwd.find('tr.'+cl); former.removeClass(cl).find('td').css('width', ''); first.addClass(cl); cwd.find('table:first').css('table-layout', 'fixed'); $.each($.merge(['name'], customCols), function(i, k) { var w = colWidth[k] || first.find('td.elfinder-col-'+k).width(); first.find('td.elfinder-col-'+k).width(w); }); } } }, /** * Droppable options for cwd. * Drop target is `wrapper` * Do not add class on childs file over * * @type Object */ droppable = Object.assign({}, fm.droppable, { over : function(e, ui) { var dst = $(this), helper = ui.helper, ctr = fm._commands.copy && (e.shiftKey || e.ctrlKey || e.metaKey), hash, status, inParent; e.stopPropagation(); helper.data('dropover', helper.data('dropover') + 1); dst.data('dropover', true); helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus'); if (helper.data('namespace') !== fm.namespace || ! fm.insideWorkzone(e.pageX, e.pageY)) { dst.removeClass(clDropActive); //helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus'); return; } if (dst.hasClass(fm.res(c, 'cwdfile'))) { hash = fm.cwdId2Hash(dst.attr('id')); dst.data('dropover', hash); } else { hash = fm.cwd().hash; fm.cwd().write && dst.data('dropover', hash); } inParent = (fm.file(helper.data('files')[0]).phash === hash); if (dst.data('dropover') === hash) { $.each(helper.data('files'), function(i, h) { if (h === hash || (inParent && !ctr && !helper.hasClass('elfinder-drag-helper-plus'))) { dst.removeClass(clDropActive); return false; // break $.each } }); } else { dst.removeClass(clDropActive); } if (helper.data('locked') || inParent) { status = 'elfinder-drag-helper-plus'; } else { status = 'elfinder-drag-helper-move'; if (ctr) { status += ' elfinder-drag-helper-plus'; } } dst.hasClass(clDropActive) && helper.addClass(status); requestAnimationFrame(function(){ dst.hasClass(clDropActive) && helper.addClass(status); }); }, out : function(e, ui) { var helper = ui.helper; e.stopPropagation(); helper.removeClass('elfinder-drag-helper-move elfinder-drag-helper-plus').data('dropover', Math.max(helper.data('dropover') - 1, 0)); $(this).removeData('dropover') .removeClass(clDropActive); }, deactivate : function() { $(this).removeData('dropover') .removeClass(clDropActive); }, drop : function(e, ui) { unselectAll({ notrigger: true }); fm.droppable.drop.call(this, e, ui); } }), /** * Make directory droppable * * @return void */ makeDroppable = function(place) { place = place? place : (list ? cwd.find('tbody') : cwd); var targets = place.children('.directory:not(.'+clDroppable+',.elfinder-na,.elfinder-ro)'); if (fm.isCommandEnabled('paste')) { targets.droppable(droppable); } if (fm.isCommandEnabled('upload')) { targets.addClass('native-droppable'); } place.children('.isroot').each(function(i, n) { var $n = $(n), hash = fm.cwdId2Hash(n.id); if (fm.isCommandEnabled('paste', hash)) { if (! $n.hasClass(clDroppable+',elfinder-na,elfinder-ro')) { $n.droppable(droppable); } } else { if ($n.hasClass(clDroppable)) { $n.droppable('destroy'); } } if (fm.isCommandEnabled('upload', hash)) { if (! $n.hasClass('native-droppable,elfinder-na,elfinder-ro')) { $n.addClass('native-droppable'); } } else { if ($n.hasClass('native-droppable')) { $n.removeClass('native-droppable'); } } }); }, /** * Preload required thumbnails and on load add css to files. * Return false if required file is not visible yet (in buffer) - * required for old api to stop loading thumbnails. * * @param Object file hash -> thumbnail map * @param Bool reload * @return void */ attachThumbnails = function(tmbs, reload) { var attach = function(node, tmb) { $('') .on('load', function() { node.find('.elfinder-cwd-icon').addClass(tmb.className).css('background-image', "url('"+tmb.url+"')"); }) .attr('src', tmb.url); }, chk = function(hash, tmb) { var node = fm.cwdHash2Elm(hash), file, tmbObj, reloads = []; if (node.length) { if (tmb != '1') { file = fm.file(hash); if (file.tmb !== tmb) { file.tmb = tmb; } tmbObj = fm.tmb(file); if (reload) { node.find('.elfinder-cwd-icon').addClass(tmbObj.className).css('background-image', "url('"+tmbObj.url+"')"); } else { attach(node, tmbObj); } delete bufferExt.attachTmbs[hash]; } else { if (reload) { loadThumbnails([hash]); } else if (! bufferExt.tmbLoading[hash]) { bufferExt.getTmbs.push(hash); } } } }; if ($.isPlainObject(tmbs) && Object.keys(tmbs).length) { Object.assign(bufferExt.attachTmbs, tmbs); $.each(tmbs, chk); if (! reload && bufferExt.getTmbs.length && ! Object.keys(bufferExt.tmbLoading).length) { loadThumbnails(); } } }, /** * Load thumbnails from backend. * * @param Array|void reloads hashes list for reload thumbnail items * @return void */ loadThumbnails = function(reloads) { var tmbs = [], reload = false; if (fm.oldAPI) { fm.request({ data : {cmd : 'tmb', current : fm.cwd().hash}, preventFail : true }) .done(function(data) { if (data.images && Object.keys(data.images).length) { attachThumbnails(data.images); } if (data.tmb) { loadThumbnails(); } }); return; } if (reloads) { reload = true; tmbs = reloads.splice(0, tmbNum); } else { tmbs = bufferExt.getTmbs.splice(0, tmbNum); } if (tmbs.length) { if (reload || inViewHashes[tmbs[0]] || inViewHashes[tmbs[tmbs.length-1]]) { $.each(tmbs, function(i, h) { bufferExt.tmbLoading[h] = true; }); fm.request({ data : {cmd : 'tmb', targets : tmbs}, preventFail : true }) .done(function(data) { var errs = [], resLen; if (data.images) { if (resLen = Object.keys(data.images).length) { if (resLen < tmbs.length) { $.each(tmbs, function(i, h) { if (! data.images[h]) { errs.push(h); } }); } attachThumbnails(data.images, reload); } else { errs = tmbs; } // unset error items from bufferExt.attachTmbs if (errs.length) { $.each(errs, function(i, h) { delete bufferExt.attachTmbs[h]; }); } } if (reload) { if (reloads.length) { loadThumbnails(reloads); } } }) .always(function() { bufferExt.tmbLoading = {}; if (! reload && bufferExt.getTmbs.length) { loadThumbnails(); } }); } } }, /** * Add new files to cwd/buffer * * @param Array new files * @return void */ add = function(files, mode) { var place = list ? cwd.find('tbody') : cwd, l = files.length, atmb = {}, findNode = function(file) { var pointer = cwd.find('[id]:first'), file2; while (pointer.length) { file2 = fm.file(fm.cwdId2Hash(pointer.attr('id'))); if (!pointer.hasClass('elfinder-cwd-parent') && file2 && fm.compare(file, file2) < 0) { return pointer; } pointer = pointer.next('[id]'); } }, findIndex = function(file) { var l = buffer.length, i; for (i =0; i < l; i++) { if (fm.compare(file, buffer[i]) < 0) { return i; } } return l || -1; }, // created document fragment for jQuery >= 1.12, 2.2, 3.0 // see Studio-42/elFinder#1544 @ github docFlag = $.htmlPrefilter? true : false, tempDom = docFlag? $(document.createDocumentFragment()) : $('
      '), file, hash, node, nodes, ndx, stmb; if (l > showFiles) { // re-render for performance tune content(); selectedFiles = fm.arrayFlip($.map(files, function(f) { return f.hash; }), true); trigger(); } else { // add the item immediately l && wz.removeClass('elfinder-cwd-wrapper-empty'); // Self thumbnail stmb = (fm.option('tmbUrl') === 'self'); while (l--) { file = files[l]; hash = file.hash; if (fm.cwdHash2Elm(hash).length) { continue; } if ((node = findNode(file)) && ! node.length) { node = null; } if (! node && (ndx = findIndex(file)) >= 0) { buffer.splice(ndx, 0, file); } else { tempDom.empty().append(itemhtml(file)); (file.mime === 'directory') && !mobile && makeDroppable(tempDom); nodes = docFlag? tempDom : tempDom.children(); if (node) { node.before(nodes); } else { place.append(nodes); } ++bufferExt.renderd; } if (fm.cwdHash2Elm(hash).length) { if ((file.tmb && (file.tmb != 1 || file.size > 0)) || (stmb && file.mime.indexOf('image/') === 0)) { atmb[hash] = file.tmb || 'self'; } } } if (list) { setColwidth(); fixTableHeader({fitWidth: ! colWidth}); } bottomMarkerShow(place); if (Object.keys(atmb).length) { Object.assign(bufferExt.attachTmbs, atmb); if (buffer.length < 1) { loadThumbnails(); } } } }, /** * Remove files from cwd/buffer * * @param Array files hashes * @return void */ remove = function(files) { var l = files.length, inSearch = fm.searchStatus.state > 1, curCmd = fm.getCommand(fm.currentReqCmd) || {}, hash, n, ndx, found; // removed cwd if (!fm.cwd().hash && !curCmd.noChangeDirOnRemovedCwd) { $.each(cwdParents.reverse(), function(i, h) { if (fm.file(h)) { found = true; fm.one(fm.currentReqCmd + 'done', function() { !fm.cwd().hash && fm.exec('open', h); }); return false; } }); // fallback to fm.roots[0] !found && !fm.cwd().hash && fm.exec('open', fm.roots[Object.keys(fm.roots)[0]]); return; } while (l--) { hash = files[l]; if ((n = fm.cwdHash2Elm(hash)).length) { try { n.remove(); --bufferExt.renderd; } catch(e) { fm.debug('error', e); } } else if ((ndx = index(hash)) !== -1) { buffer.splice(ndx, 1); } selectedFiles[hash] && delete selectedFiles[hash]; if (inSearch) { if ((ndx = $.inArray(hash, cwdHashes)) !== -1) { cwdHashes.splice(ndx, 1); } } } inSearch && fm.trigger('cwdhasheschange', cwdHashes); if (list) { setColwidth(); fixTableHeader({fitWidth: ! colWidth}); } }, customColsNameBuild = function() { var name = '', customColsName = ''; for (var i = 0; i < customCols.length; i++) { name = fm.getColumnName(customCols[i]); customColsName +=''+name+''; } return customColsName; }, setItemBoxSize = function(boxSize) { var place, elm; if (!boxSize.height) { place = (list ? cwd.find('tbody') : cwd); elm = place.find(list? 'tr:first' : '[id]:first'); boxSize.height = elm.outerHeight(true); if (!list) { boxSize.width = elm.outerWidth(true); } } }, bottomMarkerShow = function(cur, cnt) { var place = cur || (list ? cwd.find('tbody') : cwd), boxSize = itemBoxSize[fm.viewType], col = 1, row; if (buffer.length > 0) { if (!bufferExt.hpi) { setItemBoxSize(boxSize); if (! list) { col = Math.floor(place.width() / boxSize.width); bufferExt.row = boxSize.height; bufferExt.hpi = bufferExt.row / col; } else { bufferExt.row = bufferExt.hpi = boxSize.height; } } else if (!list) { col = Math.floor(place.width() / boxSize.width); } row = Math.ceil((buffer.length + (cnt || 0)) / col); if (list && tableHeader) { ++row; } bottomMarker.css({top: (bufferExt.row * row) + 'px'}).show(); } }, wrapperContextMenu = { contextmenu : function(e) { e.preventDefault(); if (cwd.data('longtap') !== void(0)) { e.stopPropagation(); return; } fm.trigger('contextmenu', { 'type' : 'cwd', 'targets' : [fm.cwd().hash], 'x' : e.pageX, 'y' : e.pageY }); }, touchstart : function(e) { if (e.originalEvent.touches.length > 1) { return; } if (cwd.data('longtap') !== false) { wrapper.data('touching', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY}); cwd.data('tmlongtap', setTimeout(function(){ // long tap cwd.data('longtap', true); fm.trigger('contextmenu', { 'type' : 'cwd', 'targets' : [fm.cwd().hash], 'x' : wrapper.data('touching').x, 'y' : wrapper.data('touching').y }); }, 500)); } cwd.data('longtap', null); }, touchend : function(e) { if (e.type === 'touchmove') { if (! wrapper.data('touching') || ( Math.abs(wrapper.data('touching').x - e.originalEvent.touches[0].pageX) + Math.abs(wrapper.data('touching').y - e.originalEvent.touches[0].pageY)) > 4) { wrapper.data('touching', null); } } else { setTimeout(function() { cwd.removeData('longtap'); }, 80); } clearTimeout(cwd.data('tmlongtap')); }, click : function(e) { if (cwd.data('longtap')) { e.preventDefault(); e.stopPropagation(); } } }, /** * Update directory content * * @return void */ content = function() { fm.lazy(function() { var phash, emptyMethod, thtr; wz.append(selectAllCheckbox).removeClass('elfinder-cwd-wrapper-empty elfinder-search-result elfinder-incsearch-result elfinder-letsearch-result'); if (fm.searchStatus.state > 1 || fm.searchStatus.ininc) { wz.addClass('elfinder-search-result' + (fm.searchStatus.ininc? ' elfinder-'+(query.substr(0,1) === '/' ? 'let':'inc')+'search-result' : '')); } // abort attachThumbJob bufferExt.attachThumbJob && bufferExt.attachThumbJob._abort(); // destroy selectable for GC cwd.data('selectable') && cwd.selectable('disable').selectable('destroy').removeData('selectable'); // notify cwd init fm.trigger('cwdinit'); selectedNext = $(); try { // to avoid problem with draggable cwd.empty(); } catch (e) { cwd.html(''); } if (tableHeader) { wrapper.off('scroll.fixheader resize.fixheader'); tableHeader.remove(); tableHeader = null; } cwd.removeClass('elfinder-cwd-view-icons elfinder-cwd-view-list') .addClass('elfinder-cwd-view-'+(list ? 'list' :'icons')) .attr('style', '') .css('height', 'auto'); bottomMarker.hide(); wrapper[list ? 'addClass' : 'removeClass']('elfinder-cwd-wrapper-list')._padding = parseInt(wrapper.css('padding-top')) + parseInt(wrapper.css('padding-bottom')); if (fm.UA.iOS) { wrapper.removeClass('overflow-scrolling-touch').addClass('overflow-scrolling-touch'); } if (list) { cwd.html('
      '); thtr = $(''+fm.getColumnName('name')+''+customColsNameBuild()+''); cwd.find('thead').hide().append(thtr).find('td:first').append(selectAllCheckbox); if ($.fn.sortable) { thtr.addClass('touch-punch touch-punch-keep-default') .sortable({ axis: 'x', distance: 8, items: '> .sortable-item', start: function(e, ui) { $(ui.item[0]).data('dragging', true); ui.placeholder .width(ui.helper.removeClass('ui-state-hover').width()) .removeClass('ui-state-active') .addClass('ui-state-hover') .css('visibility', 'visible'); }, update: function(e, ui){ var target = $(ui.item[0]).attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', ''), prev, done; customCols = $.map($(this).children(), function(n) { var name = $(n).attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', ''); if (! done) { if (target === name) { done = true; } else { prev = name; } } return (name === 'name')? null : name; }); templates.row = makeTemplateRow(); fm.storage('cwdCols', customCols); prev = '.elfinder-col-'+prev+':first'; target = '.elfinder-col-'+target+':first'; fm.lazy(function() { cwd.find('tbody tr').each(function() { var $this = $(this); $this.children(prev).after($this.children(target)); }); }); }, stop: function(e, ui) { setTimeout(function() { $(ui.item[0]).removeData('dragging'); }, 100); } }); } thtr.find('td').addClass('touch-punch').resizable({ handles: fm.direction === 'ltr'? 'e' : 'w', start: function(e, ui) { var target = cwd.find('td.elfinder-col-' + ui.element.attr('class').split(' ')[0].replace('elfinder-cwd-view-th-', '') + ':first'); ui.element .data('dragging', true) .data('resizeTarget', target) .data('targetWidth', target.width()); colResizing = true; if (cwd.find('table').css('table-layout') !== 'fixed') { cwd.find('tbody tr:first td').each(function() { $(this).width($(this).width()); }); cwd.find('table').css('table-layout', 'fixed'); } }, resize: function(e, ui) { ui.element.data('resizeTarget').width(ui.element.data('targetWidth') - (ui.originalSize.width - ui.size.width)); }, stop : function(e, ui) { colResizing = false; fixTableHeader({fitWidth: true}); colWidth = {}; cwd.find('tbody tr:first td').each(function() { var name = $(this).attr('class').split(' ')[0].replace('elfinder-col-', ''); colWidth[name] = $(this).width(); }); fm.storage('cwdColWidth', colWidth); setTimeout(function() { ui.element.removeData('dragging'); }, 100); } }) .find('.ui-resizable-handle').addClass('ui-icon ui-icon-grip-dotted-vertical'); } buffer = $.map(incHashes || cwdHashes, function(hash) { return fm.file(hash) || null; }); buffer = fm.sortFiles(buffer); if (incHashes) { incHashes = $.map(buffer, function(f) { return f.hash; }); } else { cwdHashes = $.map(buffer, function(f) { return f.hash; }); } bufferExt = { renderd: 0, attachTmbs: {}, getTmbs: [], tmbLoading: {}, lazyOpts: { tm : 0 } }; wz[(buffer.length < 1) ? 'addClass' : 'removeClass']('elfinder-cwd-wrapper-empty'); wrapper.off(scrollEvent, render).on(scrollEvent, render).trigger(scrollEvent); // set droppable if (!fm.cwd().write) { wrapper.removeClass('native-droppable') .droppable('disable') .removeClass('ui-state-disabled'); // for old jQueryUI see https://bugs.jqueryui.com/ticket/5974 } else { wrapper[fm.isCommandEnabled('upload')? 'addClass' : 'removeClass']('native-droppable'); wrapper.droppable(fm.isCommandEnabled('paste')? 'enable' : 'disable'); } }); }, /** * CWD node itself * * @type JQuery **/ cwd = $(this) .addClass('ui-helper-clearfix elfinder-cwd') .attr('unselectable', 'on') // fix ui.selectable bugs and add shift+click support .on('click.'+fm.namespace, fileSelector, function(e) { var p = this.id ? $(this) : $(this).parents('[id]:first'), tgt = $(e.target), prev, next, pl, nl, sib; if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) { e.stopPropagation(); e.preventDefault(); p.trigger(p.hasClass(clSelected) ? evtUnselect : evtSelect); trigger(); requestAnimationFrame(function() { tgt.prop('checked', p.hasClass(clSelected)); }); return; } if (cwd.data('longtap') || tgt.hasClass('elfinder-cwd-nonselect')) { e.stopPropagation(); return; } if (!curClickId) { curClickId = p.attr('id'); setTimeout(function() { curClickId = ''; }, 500); } if (e.shiftKey) { prev = p.prevAll(lastSelect || '.'+clSelected+':first'); next = p.nextAll(lastSelect || '.'+clSelected+':first'); pl = prev.length; nl = next.length; } if (e.shiftKey && (pl || nl)) { sib = pl ? p.prevUntil('#'+prev.attr('id')) : p.nextUntil('#'+next.attr('id')); sib = sib.add(p); if (!pl) { sib = $(sib.get().reverse()); } sib.trigger(evtSelect); } else if (e.ctrlKey || e.metaKey) { p.trigger(p.hasClass(clSelected) ? evtUnselect : evtSelect); } else { if (wrapper.data('touching') && p.hasClass(clSelected)) { wrapper.data('touching', null); fm.dblclick({file : fm.cwdId2Hash(this.id)}); return; } else { unselectAll({ notrigger: true }); p.trigger(evtSelect); } } trigger(); }) // call fm.open() .on('dblclick.'+fm.namespace, fileSelector, function(e) { if (curClickId) { var hash = fm.cwdId2Hash(curClickId); e.stopPropagation(); if (this.id !== curClickId) { $(this).trigger(evtUnselect); $('#'+curClickId).trigger(evtSelect); trigger(); } fm.dblclick({file : hash}); } }) // for touch device .on('touchstart.'+fm.namespace, fileSelector, function(e) { if (e.originalEvent.touches.length > 1) { return; } var p = this.id ? $(this) : $(this).parents('[id]:first'), tgt = $(e.target), nodeName = e.target.nodeName, sel; if ((nodeName === 'INPUT' && e.target.type === 'text') || nodeName === 'TEXTAREA' || tgt.hasClass('elfinder-cwd-nonselect')) { e.stopPropagation(); return; } // now name editing if (p.find('input:text,textarea').length) { e.stopPropagation(); e.preventDefault(); return; } wrapper.data('touching', {x: e.originalEvent.touches[0].pageX, y: e.originalEvent.touches[0].pageY}); if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) { return; } sel = p.prevAll('.'+clSelected+':first').length + p.nextAll('.'+clSelected+':first').length; cwd.data('longtap', null); if (Object.keys(selectedFiles).length || (list && e.target.nodeName !== 'TD') || (!list && this !== e.target) ) { cwd.data('longtap', false); p.addClass(clHover); p.data('tmlongtap', setTimeout(function(){ // long tap cwd.data('longtap', true); p.trigger(evtSelect); trigger(); fm.trigger('contextmenu', { 'type' : 'files', 'targets' : fm.selected(), 'x' : e.originalEvent.touches[0].pageX, 'y' : e.originalEvent.touches[0].pageY }); }, 500)); } }) .on('touchmove.'+fm.namespace+' touchend.'+fm.namespace, fileSelector, function(e) { var tgt = $(e.target), p; if (selectCheckbox && (tgt.is('input:checkbox.'+clSelChk) || tgt.hasClass('elfinder-cwd-select'))) { return; } if (e.target.nodeName == 'INPUT' || e.target.nodeName == 'TEXTAREA') { e.stopPropagation(); return; } p = this.id ? $(this) : $(this).parents('[id]:first'); clearTimeout(p.data('tmlongtap')); if (e.type === 'touchmove') { wrapper.data('touching', null); p.removeClass(clHover); } else { if (wrapper.data('touching') && !cwd.data('longtap') && p.hasClass(clSelected)) { e.preventDefault(); wrapper.data('touching', null); fm.dblclick({file : fm.cwdId2Hash(this.id)}); } setTimeout(function() { cwd.removeData('longtap'); }, 80); } }) // attach draggable .on('mouseenter.'+fm.namespace, fileSelector, function(e) { if (scrolling) { return; } var $this = $(this), helper = null; if (!mobile && !$this.data('dragRegisted') && !$this.hasClass(clTmp) && !$this.hasClass(clDraggable) && !$this.hasClass(clDisabled)) { $this.data('dragRegisted', true); if (!fm.isCommandEnabled('copy', fm.searchStatus.state > 1 || $this.hasClass('isroot')? fm.cwdId2Hash($this.attr('id')) : void 0) && !fm.isCommandEnabled('cut', fm.searchStatus.state > 1 || $this.hasClass('isroot')? fm.cwdId2Hash($this.attr('id')) : void 0)) { return; } $this.on('mousedown', function(e) { // shiftKey or altKey + drag start for HTML5 native drag function // Note: can no use shiftKey with the Google Chrome var metaKey = options.metakeyDragout && !fm.UA.IE && (e.shiftKey || e.altKey), disable = false; if (metaKey && cwd.data('selectable')) { // destroy jQuery-ui selectable while trigger native drag cwd.selectable('disable').selectable('destroy').removeData('selectable'); requestAnimationFrame(function(){ cwd.selectable(selectableOption).selectable('option', {disabled: false}).selectable('refresh').data('selectable', true); }); } $this.removeClass('ui-state-disabled'); if (metaKey) { $this.draggable('option', 'disabled', true).attr('draggable', 'true'); } else { if (!$this.hasClass(clSelected)) { if (list) { disable = $(e.target).closest('span,tr').is('tr'); } else { disable = $(e.target).hasClass('elfinder-cwd-file'); } } if (disable) { // removeClass('ui-state-disabled') for old version of jQueryUI $this.draggable('option', 'disabled', true).removeClass('ui-state-disabled'); } else { $this.draggable('option', 'disabled', false) .removeAttr('draggable') .draggable('option', 'cursorAt', {left: 50 - parseInt($(e.currentTarget).css('margin-left')), top: 47}); } } }) .on('dragstart', function(e) { var dt = e.dataTransfer || e.originalEvent.dataTransfer || null; helper = null; if (dt && !fm.UA.IE) { var p = this.id ? $(this) : $(this).parents('[id]:first'), elm = $(''), url = '', durl = null, murl = null, files = [], icon = function(f) { var mime = f.mime, i, tmb = fm.tmb(f); i = '
      '; if (tmb) { i = $(i).addClass(tmb.className).css('background-image', "url('"+tmb.url+"')").get(0).outerHTML; } return i; }, l, geturl = []; p.trigger(evtSelect); trigger(); $.each(selectedFiles, function(v){ var file = fm.file(v), furl = file.url; if (file && file.mime !== 'directory') { if (!furl) { furl = fm.url(file.hash); } else if (furl == '1') { geturl.push(v); return true; } if (furl) { furl = fm.convAbsUrl(furl); files.push(v); $('').attr('href', furl).text(furl).appendTo(elm); url += furl + "\n"; if (!durl) { durl = file.mime + ':' + file.name + ':' + furl; } if (!murl) { murl = furl + "\n" + file.name; } } } }); if (geturl.length) { $.each(geturl, function(i, v){ var rfile = fm.file(v); rfile.url = ''; fm.request({ data : {cmd : 'url', target : v}, notify : {type : 'url', cnt : 1}, preventDefault : true }) .always(function(data) { rfile.url = data.url? data.url : '1'; }); }); return false; } else if (url) { if (dt.setDragImage) { helper = $('
      ').append(icon(fm.file(files[0]))).appendTo($(document.body)); if ((l = files.length) > 1) { helper.append(icon(fm.file(files[l-1])) + ''+l+''); } dt.setDragImage(helper.get(0), 50, 47); } dt.effectAllowed = 'copyLink'; dt.setData('DownloadURL', durl); dt.setData('text/x-moz-url', murl); dt.setData('text/uri-list', url); dt.setData('text/plain', url); dt.setData('text/html', elm.html()); dt.setData('elfinderfrom', window.location.href + fm.cwd().hash); dt.setData('elfinderfrom:' + dt.getData('elfinderfrom'), ''); } else { return false; } } }) .on('dragend', function(e){ unselectAll({ notrigger: true }); helper && helper.remove(); }) .draggable(fm.draggable); } }) // add hover class to selected file .on(evtSelect, fileSelector, function(e) { var $this = $(this), id = fm.cwdId2Hash($this.attr('id')); if (!selectLock && !$this.hasClass(clDisabled)) { lastSelect = '#'+ this.id; $this.addClass(clSelected).children().addClass(clHover).find('input:checkbox.'+clSelChk).prop('checked', true); if (! selectedFiles[id]) { selectedFiles[id] = true; } // will be selected next selectedNext = cwd.find('[id].'+clSelected+':last').next(); } }) // remove hover class from unselected file .on(evtUnselect, fileSelector, function(e) { var $this = $(this), id = fm.cwdId2Hash($this.attr('id')); if (!selectLock) { $this.removeClass(clSelected).children().removeClass(clHover).find('input:checkbox.'+clSelChk).prop('checked', false); if (cwd.hasClass('elfinder-cwd-allselected')) { selectCheckbox && selectAllCheckbox.children('input').prop('checked', false); cwd.removeClass('elfinder-cwd-allselected'); } selectedFiles[id] && delete selectedFiles[id]; } }) // disable files wich removing or moving .on(evtDisable, fileSelector, function() { var $this = $(this).removeClass(clHover+' '+clSelected).addClass(clDisabled), child = $this.children(), target = (list ? $this : child.find('div.elfinder-cwd-file-wrapper,div.elfinder-cwd-filename')); child.removeClass(clHover+' '+clSelected); $this.hasClass(clDroppable) && $this.droppable('disable'); target.hasClass(clDraggable) && target.draggable('disable'); }) // if any files was not removed/moved - unlock its .on(evtEnable, fileSelector, function() { var $this = $(this).removeClass(clDisabled), target = list ? $this : $this.children('div.elfinder-cwd-file-wrapper,div.elfinder-cwd-filename'); $this.hasClass(clDroppable) && $this.droppable('enable'); target.hasClass(clDraggable) && target.draggable('enable'); }) .on('scrolltoview', fileSelector, function(e, data) { scrollToView($(this), (data && typeof data.blink !== 'undefined')? data.blink : true); }) .on('mouseenter.'+fm.namespace+' mouseleave.'+fm.namespace, fileSelector, function(e) { var enter = (e.type === 'mouseenter'); if (enter && (scrolling || fm.UA.Mobile)) { return; } fm.trigger('hover', {hash : fm.cwdId2Hash($(this).attr('id')), type : e.type}); $(this).toggleClass(clHover, (e.type == 'mouseenter')); }) // for file contextmenu .on('mouseenter.'+fm.namespace+' mouseleave.'+fm.namespace, '.elfinder-cwd-file-wrapper,.elfinder-cwd-filename', function(e) { var enter = (e.type === 'mouseenter'); if (enter && scrolling) { return; } $(this).closest(fileSelector).children('.elfinder-cwd-file-wrapper,.elfinder-cwd-filename').toggleClass(clActive, (e.type == 'mouseenter')); }) .on('contextmenu.'+fm.namespace, function(e) { var file = $(e.target).closest(fileSelector); if (file.get(0) === e.target && !selectedFiles[fm.cwdId2Hash(file.get(0).id)]) { return; } // now filename editing if (file.find('input:text,textarea').length) { e.stopPropagation(); return; } if (file.length && (e.target.nodeName != 'TD' || selectedFiles[fm.cwdId2Hash(file.get(0).id)])) { e.stopPropagation(); e.preventDefault(); if (!file.hasClass(clDisabled) && !wrapper.data('touching')) { if (!file.hasClass(clSelected)) { unselectAll({ notrigger: true }); file.trigger(evtSelect); trigger(); } fm.trigger('contextmenu', { 'type' : 'files', 'targets' : fm.selected(), 'x' : e.pageX, 'y' : e.pageY }); } } }) // unselect all on cwd click .on('click.'+fm.namespace, function(e) { if (e.target === this && ! cwd.data('longtap')) { !e.shiftKey && !e.ctrlKey && !e.metaKey && unselectAll(); } }) // prepend fake file/dir .on('create.'+fm.namespace, function(e, f) { var parent = list ? cwd.find('tbody') : cwd, p = parent.find('.elfinder-cwd-parent'), lock = f.move || false, file = $(itemhtml(f)).addClass(clTmp), selected = fm.selected(); if (selected.length) { lock && fm.trigger('lockfiles', {files: selected}); } else { unselectAll(); } if (p.length) { p.after(file); } else { parent.prepend(file); } setColwidth(); wrapper.scrollTop(0).scrollLeft(0); }) // unselect all selected files .on('unselectall', unselectAll) .on('selectfile', function(e, id) { fm.cwdHash2Elm(id).trigger(evtSelect); trigger(); }) .on('colwidth', function() { if (list) { cwd.find('table').css('table-layout', '') .find('td').css('width', ''); fixTableHeader({fitWidth: true}); fm.storage('cwdColWidth', colWidth = null); } }) .on('iconpref', function(e, data) { cwd.removeClass(function(i, cName) { return (cName.match(/\belfinder-cwd-size\S+/g) || []).join(' '); }); iconSize = data? (parseInt(data.size) || 0) : 0; if (!list) { if (iconSize > 0) { cwd.addClass('elfinder-cwd-size' + iconSize); } if (bufferExt.renderd) { requestAnimationFrame(function() { itemBoxSize.icons = {}; bufferExt.hpi = null; bottomMarkerShow(cwd, bufferExt.renderd); wrapperRepaint(); }); } } }) // Change icon size with mouse wheel event .on('onwheel' in document ? 'wheel' : 'mousewheel', function(e) { var tm, size, delta; if (!list && ((e.ctrlKey && !e.metaKey) || (!e.ctrlKey && e.metaKey))) { e.stopPropagation(); e.preventDefault(); tm = cwd.data('wheelTm'); if (typeof tm !== 'undefined') { clearTimeout(tm); cwd.data('wheelTm', setTimeout(function() { cwd.removeData('wheelTm'); }, 200)); } else { cwd.data('wheelTm', false); size = iconSize || 0; delta = e.originalEvent.deltaY ? e.originalEvent.deltaY : -(e.originalEvent.wheelDelta); if (delta > 0) { if (iconSize > 0) { size = iconSize - 1; } } else { if (iconSize < options.iconsView.sizeMax) { size = iconSize + 1; } } if (size !== iconSize) { fm.storage('iconsize', size); cwd.trigger('iconpref', {size: size}); } } } }), wrapper = $('
      ') // make cwd itself droppable for folders from nav panel .droppable(Object.assign({}, droppable, {autoDisable: false})) .on('contextmenu.'+fm.namespace, wrapperContextMenu.contextmenu) .on('touchstart.'+fm.namespace, wrapperContextMenu.touchstart) .on('touchmove.'+fm.namespace+' touchend.'+fm.namespace, wrapperContextMenu.touchend) .on('click.'+fm.namespace, wrapperContextMenu.click) .on('scroll.'+fm.namespace, function() { if (! scrolling) { cwd.data('selectable') && cwd.selectable('disable'); wrapper.trigger(scrollStartEvent); } scrolling = true; bufferExt.scrtm && cancelAnimationFrame(bufferExt.scrtm); if (bufferExt.scrtm && Math.abs((bufferExt.scrolltop || 0) - (bufferExt.scrolltop = (this.scrollTop || $(this).scrollTop()))) < 5) { bufferExt.scrtm = 0; wrapper.trigger(scrollEvent); } bufferExt.scrtm = requestAnimationFrame(function() { bufferExt.scrtm = 0; wrapper.trigger(scrollEvent); }); }) .on(scrollEvent, function() { scrolling = false; wrapperRepaint(); }), bottomMarker = $('
       
      ') .css({position: 'absolute', width: '1px', height: '1px'}) .hide(), selectAllCheckbox = selectCheckbox? $('
      ') .attr('title', fm.i18n('selectall')) .on('click', function(e) { e.stopPropagation(); e.preventDefault(); if ($(this).data('pending')) { return false; } selectAllCheckbox.data('pending', true); if (cwd.hasClass('elfinder-cwd-allselected')) { selectAllCheckbox.find('input').prop('checked', false); requestAnimationFrame(function() { unselectAll(); }); } else { selectAll(); } }) : $(), restm = null, resize = function(init) { var initHeight = function() { if (typeof bufferExt.renderd !== 'undefined') { var h = 0; wrapper.siblings('div.elfinder-panel:visible').each(function() { h += $(this).outerHeight(true); }); wrapper.height(wz.height() - h - wrapper._padding); } }; init && initHeight(); restm && cancelAnimationFrame(restm); restm = requestAnimationFrame(function(){ !init && initHeight(); var wph, cwdoh; // fix cwd height if it less then wrapper cwd.css('height', 'auto'); wph = wrapper[0].clientHeight - parseInt(wrapper.css('padding-top')) - parseInt(wrapper.css('padding-bottom')) - parseInt(cwd.css('margin-top')), cwdoh = cwd.outerHeight(true); if (cwdoh < wph) { cwd.height(wph); } }); list && ! colResizing && (init? wrapper.trigger('resize.fixheader') : fixTableHeader()); wrapperRepaint(); }, // elfinder node parent = $(this).parent().on('resize', resize), // workzone node wz = parent.children('.elfinder-workzone').append(wrapper.append(this).append(bottomMarker)), // message board mBoard = $('
      ').insertAfter(cwd), // Volume expires vExpires = $('
      '), vExpiresTm, showVolumeExpires = function() { var remain, sec, int; vExpiresTm && clearTimeout(vExpiresTm); if (curVolId && fm.volumeExpires[curVolId]) { sec = fm.volumeExpires[curVolId] - ((+new Date()) / 1000); int = (sec % 60) + 0.1; remain = Math.floor(sec / 60); vExpires.html(fm.i18n(['minsLeft', remain])).show(); if (remain) { vExpiresTm = setTimeout(showVolumeExpires, int * 1000); } } }, // each item box size itemBoxSize = { icons : {}, list : {} }, // has UI tree hasUiTree, // Icon size of icons view iconSize, // Current volume id curVolId, winScrTm; // IE < 11 not support CSS `pointer-events: none` if (!fm.UA.ltIE10) { mBoard.append($('
      ').html(fm.i18n('volume_Trash'))) .append(vExpires); } // setup by options replacement = Object.assign(replacement, options.replacement || {}); try { colWidth = fm.storage('cwdColWidth')? fm.storage('cwdColWidth') : null; } catch(e) { colWidth = null; } // setup costomCols fm.bind('columnpref', function(e) { var opts = e.data || {}; if (customCols = fm.storage('cwdCols')) { customCols = $.grep(customCols, function(n) { return (options.listView.columns.indexOf(n) !== -1)? true : false; }); if (options.listView.columns.length > customCols.length) { $.each(options.listView.columns, function(i, n) { if (customCols.indexOf(n) === -1) { customCols.push(n); } }); } } else { customCols = options.listView.columns; } // column names array that hidden var columnhides = fm.storage('columnhides') || null; if (columnhides && Object.keys(columnhides).length) customCols = $.grep(customCols, function(n) { return columnhides[n]? false : true; }); // make template with customCols templates.row = makeTemplateRow(); // repaint if need it list && opts.repaint && content(); }).trigger('columnpref'); if (mobile) { // for iOS5 bug $('body').on('touchstart touchmove touchend', function(e){}); } selectCheckbox && cwd.addClass('elfinder-has-checkbox'); $(window).on('scroll.'+fm.namespace, function() { winScrTm && cancelAnimationFrame(winScrTm); winScrTm = requestAnimationFrame(function() { wrapper.trigger(scrollEvent); }); }); $(document).on('keydown.'+fm.namespace, function(e) { if (e.keyCode == $.ui.keyCode.ESCAPE) { if (! fm.getUI().find('.ui-widget:visible').length) { unselectAll(); } } }); fm .one('init', function(){ var style = document.createElement('style'), sheet, node, base, resizeTm, iconSize, i = 0; if (document.head) { document.head.appendChild(style); sheet = style.sheet; sheet.insertRule('.elfinder-cwd-wrapper-empty .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder')+'" }', i++); sheet.insertRule('.elfinder-cwd-wrapper-empty .native-droppable .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder'+(mobile? 'LTap' : 'Drop'))+'" }', i++); sheet.insertRule('.elfinder-cwd-wrapper-empty .ui-droppable-disabled .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyFolder')+'" }', i++); sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptySearch')+'" }', i++); sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result.elfinder-incsearch-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyIncSearch')+'" }', i++); sheet.insertRule('.elfinder-cwd-wrapper-empty.elfinder-search-result.elfinder-letsearch-result .elfinder-cwd:not(.elfinder-table-header-sticky):after{ content:"'+fm.i18n('emptyLetSearch')+'" }', i++); } if (iconSize = (fm.storage('iconsize') || options.iconsView.size || 0)) { iconSize = Math.min(iconSize, options.iconsView.sizeMax); cwd.trigger('iconpref', {size: iconSize}); } if (! mobile) { fm.one('open', function() { sheet && fm.zIndex && sheet.insertRule('.ui-selectable-helper{z-index:'+fm.zIndex+';}', i++); }); base = $('
      '); node = fm.getUI(); node.on('resize', function(e, data) { var offset; e.preventDefault(); e.stopPropagation(); if (data && data.fullscreen) { offset = node.offset(); if (data.fullscreen === 'on') { base.css({top:offset.top * -1 , left:offset.left * -1 }).appendTo(node); selectableOption.appendTo = base; } else { base.detach(); selectableOption.appendTo = 'body'; } cwd.data('selectable') && cwd.selectable('option', {appendTo : selectableOption.appendTo}); } }); } hasUiTree = fm.getUI('tree').length; }) .bind('enable', function() { resize(); }) .bind('request.open', function() { bufferExt.getTmbs = []; }) .one('open', function() { if (fm.maxTargets) { tmbNum = Math.min(fm.maxTargets, tmbNum); } }) .bind('open add remove searchend', function() { var phash = fm.cwd().hash, type = this.type; if (type === 'open' || type === 'searchend' || fm.searchStatus.state < 2) { cwdHashes = $.map(fm.files(phash), function(f) { return f.hash; }); fm.trigger('cwdhasheschange', cwdHashes); } if (type === 'open') { var inTrash = function() { var isIn = false; $.each(cwdParents, function(i, h) { if (fm.trashes[h]) { isIn = true; return false; } }); return isIn; }, req = phash? (! fm.file(phash) || hasUiTree? (! hasUiTree? fm.request({ data: { cmd : 'parents', target : fm.cwd().hash }, preventFail : true }) : (function() { var dfd = $.Deferred(); fm.one('treesync', function(e) { e.data.always(function() { dfd.resolve(); }); }); return dfd; })() ) : null ) : null, cwdObj = fm.cwd(); // add/remove volume id class if (cwdObj.volumeid !== curVolId) { vExpires.empty().hide(); if (curVolId) { wrapper.removeClass('elfinder-cwd-wrapper-' + curVolId); } curVolId = cwdObj.volumeid; showVolumeExpires(); wrapper.addClass('elfinder-cwd-wrapper-' + curVolId); } // add/remove trash class $.when(req).done(function() { cwdParents = fm.parents(cwdObj.hash); wrapper[inTrash()? 'addClass':'removeClass']('elfinder-cwd-wrapper-trash'); }); incHashes = void 0; unselectAll({ notrigger: true }); content(); } }) .bind('search', function(e) { cwdHashes = $.map(e.data.files, function(f) { return f.hash; }); fm.trigger('cwdhasheschange', cwdHashes); incHashes = void 0; fm.searchStatus.ininc = false; content(); fm.autoSync('stop'); }) .bind('searchend', function(e) { if (query || incHashes) { query = ''; if (incHashes) { fm.trigger('incsearchend', e.data); } else { if (!e.data || !e.data.noupdate) { content(); } } } fm.autoSync(); }) .bind('searchstart', function(e) { unselectAll(); query = e.data.query; }) .bind('incsearchstart', function(e) { var q = e.data.query || '', type = e.data.type || 'SearchName', searchTypes = fm.options.commandsOptions.search.searchTypes || {}; if ((searchTypes[type] && searchTypes[type].incsearch) || type === 'SearchName') { selectedFiles = {}; fm.lazy(function() { // incremental search var regex, incSearch, fst = ''; query = q; if (q) { if (q.substr(0,1) === '/') { q = q.substr(1); fst = '^'; } regex = new RegExp(fst + q.replace(/([\\*\;\.\?\[\]\{\}\(\)\^\$\-\|])/g, '\\$1'), 'i'); if (type === 'SearchName') { incHashes = $.grep(cwdHashes, function(hash) { var file = fm.file(hash); return (file && (file.name.match(regex) || (file.i18 && file.i18.match(regex))))? true : false; }); } else { incSearch = searchTypes[type].incsearch; if (typeof incSearch === 'string') { incHashes = $.grep(cwdHashes, function(hash) { var file = fm.file(hash); return (file && file[incSearch] && (file[incSearch] + '').match(regex))? true : false; }); } else if (typeof incSearch === 'function') { try { incHashes = $.grep(incSearch({val: q, regex: regex}, cwdHashes, fm), function(hash) { return fm.file(hash)? true : false; }); } catch(e) { incHashes = []; } } } fm.trigger('incsearch', { hashes: incHashes, query: q }) .searchStatus.ininc = true; content(); fm.autoSync('stop'); } else { fm.trigger('incsearchend'); } }); } }) .bind('incsearchend', function(e) { query = ''; fm.searchStatus.ininc = false; incHashes = void 0; if (!e.data || !e.data.noupdate) { content(); } fm.autoSync(); }) .bind('sortchange', function() { var lastScrollLeft = wrapper.scrollLeft(), allsel = cwd.hasClass('elfinder-cwd-allselected'); content(); fm.one('cwdrender', function() { wrapper.scrollLeft(lastScrollLeft); if (allsel) { selectedFiles = fm.arrayFlip(incHashes || cwdHashes, true); } (allsel || Object.keys(selectedFiles).length) && trigger(); }); }) .bind('viewchange', function() { var l = fm.viewType != 'list', allsel = cwd.hasClass('elfinder-cwd-allselected'); if (l != list) { list = l; fm.viewType = list? 'list' : 'icons'; if (iconSize) { fm.one('cwdinit', function() { cwd.trigger('iconpref', {size: iconSize}); }); } content(); resize(); if (allsel) { cwd.addClass('elfinder-cwd-allselected'); selectAllCheckbox.find('input').prop('checked', true); } Object.keys(selectedFiles).length && trigger(); } }) .bind('wzresize', function() { var place = list ? cwd.find('tbody') : cwd, cwdOffset; resize(true); if (bufferExt.hpi) { bottomMarkerShow(place, place.find('[id]').length); } cwdOffset = cwd.offset(); wz.data('rectangle', Object.assign( { width: wz.width(), height: wz.height(), cwdEdge: (fm.direction === 'ltr')? cwdOffset.left : cwdOffset.left + cwd.width() }, wz.offset()) ); bufferExt.itemH = (list? place.find('tr:first') : place.find('[id]:first')).outerHeight(true); }) .bind('changeclipboard', function(e) { clipCuts = {}; if (e.data && e.data.clipboard && e.data.clipboard.length) { $.each(e.data.clipboard, function(i, f) { if (f.cut) { clipCuts[f.hash] = true; } }); } }) .bind('resMixinMake', function() { setColwidth(); }) .bind('tmbreload', function(e) { var imgs = {}, files = (e.data && e.data.files)? e.data.files : null; $.each(files, function(i, f) { if (f.tmb && f.tmb != '1') { imgs[f.hash] = f.tmb; } }); if (Object.keys(imgs).length) { attachThumbnails(imgs, true); } }) .add(function(e) { var regex = query? new RegExp(query.replace(/([\\*\;\.\?\[\]\{\}\(\)\^\$\-\|])/g, '\\$1'), 'i') : null, mime = fm.searchStatus.mime, inSearch = fm.searchStatus.state > 1, phash = inSearch && fm.searchStatus.target? fm.searchStatus.target : fm.cwd().hash, curPath = fm.path(phash), inTarget = function(f) { var res, parents, path; res = (f.phash === phash); if (!res && inSearch) { path = f.path || fm.path(f.hash); res = (curPath && path.indexOf(curPath) === 0); if (! res && fm.searchStatus.mixed) { res = $.grep(fm.searchStatus.mixed, function(vid) { return f.hash.indexOf(vid) === 0? true : false; }).length? true : false; } } if (res && inSearch) { if (mime) { res = (f.mime.indexOf(mime) === 0); } else { res = (f.name.match(regex) || (f.i18 && f.i18.match(regex)))? true : false; } } return res; }, files = $.grep(e.data.added || [], function(f) { return inTarget(f)? true : false ;}); add(files); if (fm.searchStatus.state === 2) { $.each(files, function(i, f) { if ($.inArray(f.hash, cwdHashes) === -1) { cwdHashes.push(f.hash); } }); fm.trigger('cwdhasheschange', cwdHashes); } list && resize(); wrapper.trigger(scrollEvent); }) .change(function(e) { var phash = fm.cwd().hash, sel = fm.selected(), files, added; if (query) { $.each(e.data.changed || [], function(i, file) { if (fm.cwdHash2Elm(file.hash).length) { remove([file.hash]); add([file], 'change'); $.inArray(file.hash, sel) !== -1 && selectFile(file.hash); added = true; } }); } else { $.each($.grep(e.data.changed || [], function(f) { return f.phash == phash ? true : false; }), function(i, file) { if (fm.cwdHash2Elm(file.hash).length) { remove([file.hash]); add([file], 'change'); $.inArray(file.hash, sel) !== -1 && selectFile(file.hash); added = true; } }); } if (added) { fm.trigger('cwdhasheschange', cwdHashes); list && resize(); wrapper.trigger(scrollEvent); } trigger(); }) .remove(function(e) { var place = list ? cwd.find('tbody') : cwd; remove(e.data.removed || []); trigger(); if (buffer.length < 1 && place.children(fileSelector + (options.oldSchool? ':not(.elfinder-cwd-parent)' : '')).length < 1) { wz.addClass('elfinder-cwd-wrapper-empty'); selectCheckbox && selectAllCheckbox.find('input').prop('checked', false); bottomMarker.hide(); wrapper.off(scrollEvent, render); resize(); } else { bottomMarkerShow(place); wrapper.trigger(scrollEvent); } }) // select dragged file if no selected, disable selectable .dragstart(function(e) { var target = $(e.data.target), oe = e.data.originalEvent; if (target.hasClass(clFile)) { if (!target.hasClass(clSelected)) { !(oe.ctrlKey || oe.metaKey || oe.shiftKey) && unselectAll({ notrigger: true }); target.trigger(evtSelect); trigger(); } } cwd.removeClass(clDisabled).data('selectable') && cwd.selectable('disable'); selectLock = true; }) // enable selectable .dragstop(function() { cwd.data('selectable') && cwd.selectable('enable'); selectLock = false; }) .bind('lockfiles unlockfiles selectfiles unselectfiles', function(e) { var events = { lockfiles : evtDisable , unlockfiles : evtEnable , selectfiles : evtSelect, unselectfiles : evtUnselect }, event = events[e.type], files = e.data.files || [], l = files.length, helper = e.data.helper || $(), parents, ctr, add; if (l > 0) { parents = fm.parents(files[0]); } if (event === evtSelect || event === evtUnselect) { add = (event === evtSelect), $.each(files, function(i, hash) { var all = cwd.hasClass('elfinder-cwd-allselected'); if (! selectedFiles[hash]) { add && (selectedFiles[hash] = true); } else { if (all) { selectCheckbox && selectAllCheckbox.children('input').prop('checked', false); cwd.removeClass('elfinder-cwd-allselected'); all = false; } ! add && delete selectedFiles[hash]; } }); } if (!helper.data('locked')) { while (l--) { try { fm.cwdHash2Elm(files[l]).trigger(event); } catch(e) {} } ! e.data.inselect && trigger(); } if (wrapper.data('dropover') && parents.indexOf(wrapper.data('dropover')) !== -1) { ctr = e.type !== 'lockfiles'; helper.toggleClass('elfinder-drag-helper-plus', ctr); wrapper.toggleClass(clDropActive, ctr); } }) // select new files after some actions .bind('mkdir mkfile duplicate upload rename archive extract paste multiupload', function(e) { if (e.type == 'upload' && e.data._multiupload) return; var phash = fm.cwd().hash, files; unselectAll({ notrigger: true }); $.each((e.data.added || []).concat(e.data.changed || []), function(i, file) { file && file.phash == phash && selectFile(file.hash); }); trigger(); }) .shortcut({ pattern :'ctrl+a', description : 'selectall', callback : selectAll }) .shortcut({ pattern :'ctrl+shift+i', description : 'selectinvert', callback : selectInvert }) .shortcut({ pattern : 'left right up down shift+left shift+right shift+up shift+down', description : 'selectfiles', type : 'keydown' , //fm.UA.Firefox || fm.UA.Opera ? 'keypress' : 'keydown', callback : function(e) { select(e.keyCode, e.shiftKey); } }) .shortcut({ pattern : 'home', description : 'selectffile', callback : function(e) { unselectAll({ notrigger: true }); scrollToView(cwd.find('[id]:first').trigger(evtSelect)); trigger(); } }) .shortcut({ pattern : 'end', description : 'selectlfile', callback : function(e) { unselectAll({ notrigger: true }); scrollToView(cwd.find('[id]:last').trigger(evtSelect)) ; trigger(); } }) .shortcut({ pattern : 'page_up', description : 'pageTurning', callback : function(e) { if (bufferExt.itemH) { wrapper.scrollTop( Math.round( wrapper.scrollTop() - (Math.floor((wrapper.height() + (list? bufferExt.itemH * -1 : 16)) / bufferExt.itemH)) * bufferExt.itemH ) ); } } }).shortcut({ pattern : 'page_down', description : 'pageTurning', callback : function(e) { if (bufferExt.itemH) { wrapper.scrollTop( Math.round( wrapper.scrollTop() + (Math.floor((wrapper.height() + (list? bufferExt.itemH * -1 : 16)) / bufferExt.itemH)) * bufferExt.itemH ) ); } } }); }); // fm.timeEnd('cwdLoad') return this; }; application/library/js/worker/calcfilehash.js000064400000001024147577724760015433 0ustar00var type = self.data.type, bin = self.data.bin, hashOpts = self.data.hashOpts; self.res = {}; if (type === 'md5') { let sp = new self.SparkMD5.ArrayBuffer(); sp.append(bin); self.res.hash = sp.end(); } else { let sha = new jsSHA('SHA' + (type.length === 5? type : ('-' + type)).toUpperCase(), 'ARRAYBUFFER'), opts = {}; if (type === 'ke128') { opts.shakeLen = hashOpts.shake128len; } else if (type === 'ke256') { opts.shakeLen = hashOpts.shake256len; } sha.update(bin); self.res.hash = sha.getHash('HEX', opts); } application/library/js/worker/quicklook.tiff.js000064400000000362147577724760015761 0ustar00var data = self.data; if (data.memory) { Tiff.initialize({ TOTAL_MEMORY: data.memory }); } var tiff = new Tiff({buffer: data.data}); var image = tiff.readRGBAImage(); self.res = { image: image, width: tiff.width(), height: tiff.height() }; application/library/js/worker/quicklook.unzip.js000064400000003464147577724760016204 0ustar00var type = self.data.type, bin = self.data.bin, unzipFiles = function() { /** @type {Array.} */ var filenameList = []; /** @type {number} */ var i; /** @type {number} */ var il; /** @type {Array.} */ var fileHeaderList; // need check this.Y when update cdns.zlibUnzip this.Y(); fileHeaderList = this.i; for (i = 0, il = fileHeaderList.length; i < il; ++i) { // need check fileHeaderList[i].J when update cdns.zlibUnzip filenameList[i] = fileHeaderList[i].filename + (fileHeaderList[i].J? ' ({formatSize(' + fileHeaderList[i].J + ')})' : ''); } return filenameList; }, tarFiles = function(tar) { var filenames = [], tarlen = tar.length, offset = 0, toStr = function(arr) { return String.fromCharCode.apply(null, arr).replace(/\0+$/, ''); }, h, name, prefix, size, dbs; while (offset < tarlen && tar[offset] !== 0) { h = tar.subarray(offset, offset + 512); name = toStr(h.subarray(0, 100)); if (prefix = toStr(h.subarray(345, 500))) { name = prefix + name; } size = parseInt(toStr(h.subarray(124, 136)), 8); dbs = Math.ceil(size / 512) * 512; if (name === '././@LongLink') { name = toStr(tar.subarray(offset + 512, offset + 512 + dbs)); } (name !== 'pax_global_header') && filenames.push(name + (size? ' ({formatSize(' + size + ')})': '')); offset = offset + 512 + dbs; } return filenames; }; self.res = {}; if (type === 'tar') { self.res.files = tarFiles(new Uint8Array(bin)); } else if (type === 'zip') { self.res.files = unzipFiles.call(new Zlib.Unzip(new Uint8Array(bin))); } else if (type === 'gzip') { self.res.files = tarFiles((new Zlib.Gunzip(new Uint8Array(bin))).decompress()); } else if (type === 'bzip2') { self.res.files = tarFiles(self.bzip2.simple(self.bzip2.array(new Uint8Array(bin)))); } application/library/js/elFinder.mimetypes.js000064400000065756147577724760015305 0ustar00elFinder.prototype.mimeTypes = {"application\/x-executable":"exe","application\/x-jar":"jar","application\/x-gzip":"gz","application\/x-bzip2":"tbz","application\/x-rar":"rar","text\/x-php":"php","text\/javascript":"js","application\/rtfd":"rtfd","text\/x-python":"py","text\/x-ruby":"rb","text\/x-shellscript":"sh","text\/x-perl":"pl","text\/xml":"xml","text\/x-csrc":"c","text\/x-chdr":"h","text\/x-c++src":"cpp","text\/x-c++hdr":"hh","text\/x-markdown":"md","text\/x-yaml":"yml","image\/x-ms-bmp":"bmp","image\/x-targa":"tga","image\/xbm":"xbm","image\/pxm":"pxm","audio\/wav":"wav","video\/x-dv":"dv","video\/x-ms-wmv":"wm","video\/ogg":"ogm","video\/MP2T":"m2ts","application\/x-mpegURL":"m3u8","application\/dash+xml":"mpd","application\/andrew-inset":"ez","application\/applixware":"aw","application\/atom+xml":"atom","application\/atomcat+xml":"atomcat","application\/atomsvc+xml":"atomsvc","application\/ccxml+xml":"ccxml","application\/cdmi-capability":"cdmia","application\/cdmi-container":"cdmic","application\/cdmi-domain":"cdmid","application\/cdmi-object":"cdmio","application\/cdmi-queue":"cdmiq","application\/cu-seeme":"cu","application\/davmount+xml":"davmount","application\/docbook+xml":"dbk","application\/dssc+der":"dssc","application\/dssc+xml":"xdssc","application\/ecmascript":"ecma","application\/emma+xml":"emma","application\/epub+zip":"epub","application\/exi":"exi","application\/font-tdpfr":"pfr","application\/gml+xml":"gml","application\/gpx+xml":"gpx","application\/gxf":"gxf","application\/hyperstudio":"stk","application\/inkml+xml":"ink","application\/ipfix":"ipfix","application\/java-serialized-object":"ser","application\/java-vm":"class","application\/json":"json","application\/jsonml+json":"jsonml","application\/lost+xml":"lostxml","application\/mac-binhex40":"hqx","application\/mac-compactpro":"cpt","application\/mads+xml":"mads","application\/marc":"mrc","application\/marcxml+xml":"mrcx","application\/mathematica":"ma","application\/mathml+xml":"mathml","application\/mbox":"mbox","application\/mediaservercontrol+xml":"mscml","application\/metalink+xml":"metalink","application\/metalink4+xml":"meta4","application\/mets+xml":"mets","application\/mods+xml":"mods","application\/mp21":"m21","application\/mp4":"mp4s","application\/msword":"doc","application\/mxf":"mxf","application\/octet-stream":"bin","application\/oda":"oda","application\/oebps-package+xml":"opf","application\/ogg":"ogx","application\/omdoc+xml":"omdoc","application\/onenote":"onetoc","application\/oxps":"oxps","application\/patch-ops-error+xml":"xer","application\/pdf":"pdf","application\/pgp-encrypted":"pgp","application\/pgp-signature":"asc","application\/pics-rules":"prf","application\/pkcs10":"p10","application\/pkcs7-mime":"p7m","application\/pkcs7-signature":"p7s","application\/pkcs8":"p8","application\/pkix-attr-cert":"ac","application\/pkix-cert":"cer","application\/pkix-crl":"crl","application\/pkix-pkipath":"pkipath","application\/pkixcmp":"pki","application\/pls+xml":"pls","application\/postscript":"ai","application\/prs.cww":"cww","application\/pskc+xml":"pskcxml","application\/rdf+xml":"rdf","application\/reginfo+xml":"rif","application\/relax-ng-compact-syntax":"rnc","application\/resource-lists+xml":"rl","application\/resource-lists-diff+xml":"rld","application\/rls-services+xml":"rs","application\/rpki-ghostbusters":"gbr","application\/rpki-manifest":"mft","application\/rpki-roa":"roa","application\/rsd+xml":"rsd","application\/rss+xml":"rss","application\/rtf":"rtf","application\/sbml+xml":"sbml","application\/scvp-cv-request":"scq","application\/scvp-cv-response":"scs","application\/scvp-vp-request":"spq","application\/scvp-vp-response":"spp","application\/sdp":"sdp","application\/set-payment-initiation":"setpay","application\/set-registration-initiation":"setreg","application\/shf+xml":"shf","application\/smil+xml":"smi","application\/sparql-query":"rq","application\/sparql-results+xml":"srx","application\/srgs":"gram","application\/srgs+xml":"grxml","application\/sru+xml":"sru","application\/ssdl+xml":"ssdl","application\/ssml+xml":"ssml","application\/tei+xml":"tei","application\/thraud+xml":"tfi","application\/timestamped-data":"tsd","application\/vnd.3gpp.pic-bw-large":"plb","application\/vnd.3gpp.pic-bw-small":"psb","application\/vnd.3gpp.pic-bw-var":"pvb","application\/vnd.3gpp2.tcap":"tcap","application\/vnd.3m.post-it-notes":"pwn","application\/vnd.accpac.simply.aso":"aso","application\/vnd.accpac.simply.imp":"imp","application\/vnd.acucobol":"acu","application\/vnd.acucorp":"atc","application\/vnd.adobe.air-application-installer-package+zip":"air","application\/vnd.adobe.formscentral.fcdt":"fcdt","application\/vnd.adobe.fxp":"fxp","application\/vnd.adobe.xdp+xml":"xdp","application\/vnd.adobe.xfdf":"xfdf","application\/vnd.ahead.space":"ahead","application\/vnd.airzip.filesecure.azf":"azf","application\/vnd.airzip.filesecure.azs":"azs","application\/vnd.amazon.ebook":"azw","application\/vnd.americandynamics.acc":"acc","application\/vnd.amiga.ami":"ami","application\/vnd.android.package-archive":"apk","application\/vnd.anser-web-certificate-issue-initiation":"cii","application\/vnd.anser-web-funds-transfer-initiation":"fti","application\/vnd.antix.game-component":"atx","application\/vnd.apple.installer+xml":"mpkg","application\/vnd.aristanetworks.swi":"swi","application\/vnd.astraea-software.iota":"iota","application\/vnd.audiograph":"aep","application\/vnd.blueice.multipass":"mpm","application\/vnd.bmi":"bmi","application\/vnd.businessobjects":"rep","application\/vnd.chemdraw+xml":"cdxml","application\/vnd.chipnuts.karaoke-mmd":"mmd","application\/vnd.cinderella":"cdy","application\/vnd.claymore":"cla","application\/vnd.cloanto.rp9":"rp9","application\/vnd.clonk.c4group":"c4g","application\/vnd.cluetrust.cartomobile-config":"c11amc","application\/vnd.cluetrust.cartomobile-config-pkg":"c11amz","application\/vnd.commonspace":"csp","application\/vnd.contact.cmsg":"cdbcmsg","application\/vnd.cosmocaller":"cmc","application\/vnd.crick.clicker":"clkx","application\/vnd.crick.clicker.keyboard":"clkk","application\/vnd.crick.clicker.palette":"clkp","application\/vnd.crick.clicker.template":"clkt","application\/vnd.crick.clicker.wordbank":"clkw","application\/vnd.criticaltools.wbs+xml":"wbs","application\/vnd.ctc-posml":"pml","application\/vnd.cups-ppd":"ppd","application\/vnd.curl.car":"car","application\/vnd.curl.pcurl":"pcurl","application\/vnd.dart":"dart","application\/vnd.data-vision.rdz":"rdz","application\/vnd.dece.data":"uvf","application\/vnd.dece.ttml+xml":"uvt","application\/vnd.dece.unspecified":"uvx","application\/vnd.dece.zip":"uvz","application\/vnd.denovo.fcselayout-link":"fe_launch","application\/vnd.dna":"dna","application\/vnd.dolby.mlp":"mlp","application\/vnd.dpgraph":"dpg","application\/vnd.dreamfactory":"dfac","application\/vnd.ds-keypoint":"kpxx","application\/vnd.dvb.ait":"ait","application\/vnd.dvb.service":"svc","application\/vnd.dynageo":"geo","application\/vnd.ecowin.chart":"mag","application\/vnd.enliven":"nml","application\/vnd.epson.esf":"esf","application\/vnd.epson.msf":"msf","application\/vnd.epson.quickanime":"qam","application\/vnd.epson.salt":"slt","application\/vnd.epson.ssf":"ssf","application\/vnd.eszigno3+xml":"es3","application\/vnd.ezpix-album":"ez2","application\/vnd.ezpix-package":"ez3","application\/vnd.fdf":"fdf","application\/vnd.fdsn.mseed":"mseed","application\/vnd.fdsn.seed":"seed","application\/vnd.flographit":"gph","application\/vnd.fluxtime.clip":"ftc","application\/vnd.framemaker":"fm","application\/vnd.frogans.fnc":"fnc","application\/vnd.frogans.ltf":"ltf","application\/vnd.fsc.weblaunch":"fsc","application\/vnd.fujitsu.oasys":"oas","application\/vnd.fujitsu.oasys2":"oa2","application\/vnd.fujitsu.oasys3":"oa3","application\/vnd.fujitsu.oasysgp":"fg5","application\/vnd.fujitsu.oasysprs":"bh2","application\/vnd.fujixerox.ddd":"ddd","application\/vnd.fujixerox.docuworks":"xdw","application\/vnd.fujixerox.docuworks.binder":"xbd","application\/vnd.fuzzysheet":"fzs","application\/vnd.genomatix.tuxedo":"txd","application\/vnd.geogebra.file":"ggb","application\/vnd.geogebra.tool":"ggt","application\/vnd.geometry-explorer":"gex","application\/vnd.geonext":"gxt","application\/vnd.geoplan":"g2w","application\/vnd.geospace":"g3w","application\/vnd.gmx":"gmx","application\/vnd.google-earth.kml+xml":"kml","application\/vnd.google-earth.kmz":"kmz","application\/vnd.grafeq":"gqf","application\/vnd.groove-account":"gac","application\/vnd.groove-help":"ghf","application\/vnd.groove-identity-message":"gim","application\/vnd.groove-injector":"grv","application\/vnd.groove-tool-message":"gtm","application\/vnd.groove-tool-template":"tpl","application\/vnd.groove-vcard":"vcg","application\/vnd.hal+xml":"hal","application\/vnd.handheld-entertainment+xml":"zmm","application\/vnd.hbci":"hbci","application\/vnd.hhe.lesson-player":"les","application\/vnd.hp-hpgl":"hpgl","application\/vnd.hp-hpid":"hpid","application\/vnd.hp-hps":"hps","application\/vnd.hp-jlyt":"jlt","application\/vnd.hp-pcl":"pcl","application\/vnd.hp-pclxl":"pclxl","application\/vnd.hydrostatix.sof-data":"sfd-hdstx","application\/vnd.ibm.minipay":"mpy","application\/vnd.ibm.modcap":"afp","application\/vnd.ibm.rights-management":"irm","application\/vnd.ibm.secure-container":"sc","application\/vnd.iccprofile":"icc","application\/vnd.igloader":"igl","application\/vnd.immervision-ivp":"ivp","application\/vnd.immervision-ivu":"ivu","application\/vnd.insors.igm":"igm","application\/vnd.intercon.formnet":"xpw","application\/vnd.intergeo":"i2g","application\/vnd.intu.qbo":"qbo","application\/vnd.intu.qfx":"qfx","application\/vnd.ipunplugged.rcprofile":"rcprofile","application\/vnd.irepository.package+xml":"irp","application\/vnd.is-xpr":"xpr","application\/vnd.isac.fcs":"fcs","application\/vnd.jam":"jam","application\/vnd.jcp.javame.midlet-rms":"rms","application\/vnd.jisp":"jisp","application\/vnd.joost.joda-archive":"joda","application\/vnd.kahootz":"ktz","application\/vnd.kde.karbon":"karbon","application\/vnd.kde.kchart":"chrt","application\/vnd.kde.kformula":"kfo","application\/vnd.kde.kivio":"flw","application\/vnd.kde.kontour":"kon","application\/vnd.kde.kpresenter":"kpr","application\/vnd.kde.kspread":"ksp","application\/vnd.kde.kword":"kwd","application\/vnd.kenameaapp":"htke","application\/vnd.kidspiration":"kia","application\/vnd.kinar":"kne","application\/vnd.koan":"skp","application\/vnd.kodak-descriptor":"sse","application\/vnd.las.las+xml":"lasxml","application\/vnd.llamagraphics.life-balance.desktop":"lbd","application\/vnd.llamagraphics.life-balance.exchange+xml":"lbe","application\/vnd.lotus-1-2-3":123,"application\/vnd.lotus-approach":"apr","application\/vnd.lotus-freelance":"pre","application\/vnd.lotus-notes":"nsf","application\/vnd.lotus-organizer":"org","application\/vnd.lotus-screencam":"scm","application\/vnd.lotus-wordpro":"lwp","application\/vnd.macports.portpkg":"portpkg","application\/vnd.mcd":"mcd","application\/vnd.medcalcdata":"mc1","application\/vnd.mediastation.cdkey":"cdkey","application\/vnd.mfer":"mwf","application\/vnd.mfmp":"mfm","application\/vnd.micrografx.flo":"flo","application\/vnd.micrografx.igx":"igx","application\/vnd.mif":"mif","application\/vnd.mobius.daf":"daf","application\/vnd.mobius.dis":"dis","application\/vnd.mobius.mbk":"mbk","application\/vnd.mobius.mqy":"mqy","application\/vnd.mobius.msl":"msl","application\/vnd.mobius.plc":"plc","application\/vnd.mobius.txf":"txf","application\/vnd.mophun.application":"mpn","application\/vnd.mophun.certificate":"mpc","application\/vnd.mozilla.xul+xml":"xul","application\/vnd.ms-artgalry":"cil","application\/vnd.ms-cab-compressed":"cab","application\/vnd.ms-excel":"xls","application\/vnd.ms-excel.addin.macroenabled.12":"xlam","application\/vnd.ms-excel.sheet.binary.macroenabled.12":"xlsb","application\/vnd.ms-excel.sheet.macroenabled.12":"xlsm","application\/vnd.ms-excel.template.macroenabled.12":"xltm","application\/vnd.ms-fontobject":"eot","application\/vnd.ms-htmlhelp":"chm","application\/vnd.ms-ims":"ims","application\/vnd.ms-lrm":"lrm","application\/vnd.ms-officetheme":"thmx","application\/vnd.ms-outlook":"msg","application\/vnd.ms-pki.seccat":"cat","application\/vnd.ms-pki.stl":"stl","application\/vnd.ms-powerpoint":"ppt","application\/vnd.ms-powerpoint.addin.macroenabled.12":"ppam","application\/vnd.ms-powerpoint.presentation.macroenabled.12":"pptm","application\/vnd.ms-powerpoint.slide.macroenabled.12":"sldm","application\/vnd.ms-powerpoint.slideshow.macroenabled.12":"ppsm","application\/vnd.ms-powerpoint.template.macroenabled.12":"potm","application\/vnd.ms-project":"mpp","application\/vnd.ms-word.document.macroenabled.12":"docm","application\/vnd.ms-word.template.macroenabled.12":"dotm","application\/vnd.ms-works":"wps","application\/vnd.ms-wpl":"wpl","application\/vnd.ms-xpsdocument":"xps","application\/vnd.mseq":"mseq","application\/vnd.musician":"mus","application\/vnd.muvee.style":"msty","application\/vnd.mynfc":"taglet","application\/vnd.neurolanguage.nlu":"nlu","application\/vnd.nitf":"ntf","application\/vnd.noblenet-directory":"nnd","application\/vnd.noblenet-sealer":"nns","application\/vnd.noblenet-web":"nnw","application\/vnd.nokia.n-gage.data":"ngdat","application\/vnd.nokia.n-gage.symbian.install":"n-gage","application\/vnd.nokia.radio-preset":"rpst","application\/vnd.nokia.radio-presets":"rpss","application\/vnd.novadigm.edm":"edm","application\/vnd.novadigm.edx":"edx","application\/vnd.novadigm.ext":"ext","application\/vnd.oasis.opendocument.chart":"odc","application\/vnd.oasis.opendocument.chart-template":"otc","application\/vnd.oasis.opendocument.database":"odb","application\/vnd.oasis.opendocument.formula":"odf","application\/vnd.oasis.opendocument.formula-template":"odft","application\/vnd.oasis.opendocument.graphics":"odg","application\/vnd.oasis.opendocument.graphics-template":"otg","application\/vnd.oasis.opendocument.image":"odi","application\/vnd.oasis.opendocument.image-template":"oti","application\/vnd.oasis.opendocument.presentation":"odp","application\/vnd.oasis.opendocument.presentation-template":"otp","application\/vnd.oasis.opendocument.spreadsheet":"ods","application\/vnd.oasis.opendocument.spreadsheet-template":"ots","application\/vnd.oasis.opendocument.text":"odt","application\/vnd.oasis.opendocument.text-master":"odm","application\/vnd.oasis.opendocument.text-template":"ott","application\/vnd.oasis.opendocument.text-web":"oth","application\/vnd.olpc-sugar":"xo","application\/vnd.oma.dd2+xml":"dd2","application\/vnd.openofficeorg.extension":"oxt","application\/vnd.openxmlformats-officedocument.presentationml.presentation":"pptx","application\/vnd.openxmlformats-officedocument.presentationml.slide":"sldx","application\/vnd.openxmlformats-officedocument.presentationml.slideshow":"ppsx","application\/vnd.openxmlformats-officedocument.presentationml.template":"potx","application\/vnd.openxmlformats-officedocument.spreadsheetml.sheet":"xlsx","application\/vnd.openxmlformats-officedocument.spreadsheetml.template":"xltx","application\/vnd.openxmlformats-officedocument.wordprocessingml.document":"docx","application\/vnd.openxmlformats-officedocument.wordprocessingml.template":"dotx","application\/vnd.osgeo.mapguide.package":"mgp","application\/vnd.osgi.dp":"dp","application\/vnd.osgi.subsystem":"esa","application\/vnd.palm":"pdb","application\/vnd.pawaafile":"paw","application\/vnd.pg.format":"str","application\/vnd.pg.osasli":"ei6","application\/vnd.picsel":"efif","application\/vnd.pmi.widget":"wg","application\/vnd.pocketlearn":"plf","application\/vnd.powerbuilder6":"pbd","application\/vnd.previewsystems.box":"box","application\/vnd.proteus.magazine":"mgz","application\/vnd.publishare-delta-tree":"qps","application\/vnd.pvi.ptid1":"ptid","application\/vnd.quark.quarkxpress":"qxd","application\/vnd.realvnc.bed":"bed","application\/vnd.recordare.musicxml":"mxl","application\/vnd.recordare.musicxml+xml":"musicxml","application\/vnd.rig.cryptonote":"cryptonote","application\/vnd.rim.cod":"cod","application\/vnd.rn-realmedia":"rm","application\/vnd.rn-realmedia-vbr":"rmvb","application\/vnd.route66.link66+xml":"link66","application\/vnd.sailingtracker.track":"st","application\/vnd.seemail":"see","application\/vnd.sema":"sema","application\/vnd.semd":"semd","application\/vnd.semf":"semf","application\/vnd.shana.informed.formdata":"ifm","application\/vnd.shana.informed.formtemplate":"itp","application\/vnd.shana.informed.interchange":"iif","application\/vnd.shana.informed.package":"ipk","application\/vnd.simtech-mindmapper":"twd","application\/vnd.smaf":"mmf","application\/vnd.smart.teacher":"teacher","application\/vnd.solent.sdkm+xml":"sdkm","application\/vnd.spotfire.dxp":"dxp","application\/vnd.spotfire.sfs":"sfs","application\/vnd.stardivision.calc":"sdc","application\/vnd.stardivision.draw":"sda","application\/vnd.stardivision.impress":"sdd","application\/vnd.stardivision.math":"smf","application\/vnd.stardivision.writer":"sdw","application\/vnd.stardivision.writer-global":"sgl","application\/vnd.stepmania.package":"smzip","application\/vnd.stepmania.stepchart":"sm","application\/vnd.sun.xml.calc":"sxc","application\/vnd.sun.xml.calc.template":"stc","application\/vnd.sun.xml.draw":"sxd","application\/vnd.sun.xml.draw.template":"std","application\/vnd.sun.xml.impress":"sxi","application\/vnd.sun.xml.impress.template":"sti","application\/vnd.sun.xml.math":"sxm","application\/vnd.sun.xml.writer":"sxw","application\/vnd.sun.xml.writer.global":"sxg","application\/vnd.sun.xml.writer.template":"stw","application\/vnd.sus-calendar":"sus","application\/vnd.svd":"svd","application\/vnd.symbian.install":"sis","application\/vnd.syncml+xml":"xsm","application\/vnd.syncml.dm+wbxml":"bdm","application\/vnd.syncml.dm+xml":"xdm","application\/vnd.tao.intent-module-archive":"tao","application\/vnd.tcpdump.pcap":"pcap","application\/vnd.tmobile-livetv":"tmo","application\/vnd.trid.tpt":"tpt","application\/vnd.triscape.mxs":"mxs","application\/vnd.trueapp":"tra","application\/vnd.ufdl":"ufd","application\/vnd.uiq.theme":"utz","application\/vnd.umajin":"umj","application\/vnd.unity":"unityweb","application\/vnd.uoml+xml":"uoml","application\/vnd.vcx":"vcx","application\/vnd.visio":"vsd","application\/vnd.visionary":"vis","application\/vnd.vsf":"vsf","application\/vnd.wap.wbxml":"wbxml","application\/vnd.wap.wmlc":"wmlc","application\/vnd.wap.wmlscriptc":"wmlsc","application\/vnd.webturbo":"wtb","application\/vnd.wolfram.player":"nbp","application\/vnd.wordperfect":"wpd","application\/vnd.wqd":"wqd","application\/vnd.wt.stf":"stf","application\/vnd.xara":"xar","application\/vnd.xfdl":"xfdl","application\/vnd.yamaha.hv-dic":"hvd","application\/vnd.yamaha.hv-script":"hvs","application\/vnd.yamaha.hv-voice":"hvp","application\/vnd.yamaha.openscoreformat":"osf","application\/vnd.yamaha.openscoreformat.osfpvg+xml":"osfpvg","application\/vnd.yamaha.smaf-audio":"saf","application\/vnd.yamaha.smaf-phrase":"spf","application\/vnd.yellowriver-custom-menu":"cmp","application\/vnd.zul":"zir","application\/vnd.zzazz.deck+xml":"zaz","application\/voicexml+xml":"vxml","application\/widget":"wgt","application\/winhlp":"hlp","application\/wsdl+xml":"wsdl","application\/wspolicy+xml":"wspolicy","application\/x-7z-compressed":"7z","application\/x-abiword":"abw","application\/x-ace-compressed":"ace","application\/x-apple-diskimage":"dmg","application\/x-authorware-bin":"aab","application\/x-authorware-map":"aam","application\/x-authorware-seg":"aas","application\/x-bcpio":"bcpio","application\/x-bittorrent":"torrent","application\/x-blorb":"blb","application\/x-bzip":"bz","application\/x-cbr":"cbr","application\/x-cdlink":"vcd","application\/x-cfs-compressed":"cfs","application\/x-chat":"chat","application\/x-chess-pgn":"pgn","application\/x-conference":"nsc","application\/x-cpio":"cpio","application\/x-csh":"csh","application\/x-debian-package":"deb","application\/x-dgc-compressed":"dgc","application\/x-director":"dir","application\/x-doom":"wad","application\/x-dtbncx+xml":"ncx","application\/x-dtbook+xml":"dtb","application\/x-dtbresource+xml":"res","application\/x-dvi":"dvi","application\/x-envoy":"evy","application\/x-eva":"eva","application\/x-font-bdf":"bdf","application\/x-font-ghostscript":"gsf","application\/x-font-linux-psf":"psf","application\/x-font-pcf":"pcf","application\/x-font-snf":"snf","application\/x-font-type1":"pfa","application\/x-freearc":"arc","application\/x-futuresplash":"spl","application\/x-gca-compressed":"gca","application\/x-glulx":"ulx","application\/x-gnumeric":"gnumeric","application\/x-gramps-xml":"gramps","application\/x-gtar":"gtar","application\/x-hdf":"hdf","application\/x-install-instructions":"install","application\/x-iso9660-image":"iso","application\/x-java-jnlp-file":"jnlp","application\/x-latex":"latex","application\/x-lzh-compressed":"lzh","application\/x-mie":"mie","application\/x-mobipocket-ebook":"prc","application\/x-ms-application":"application","application\/x-ms-shortcut":"lnk","application\/x-ms-wmd":"wmd","application\/x-ms-wmz":"wmz","application\/x-ms-xbap":"xbap","application\/x-msaccess":"mdb","application\/x-msbinder":"obd","application\/x-mscardfile":"crd","application\/x-msclip":"clp","application\/x-msdownload":"dll","application\/x-msmediaview":"mvb","application\/x-msmetafile":"wmf","application\/x-msmoney":"mny","application\/x-mspublisher":"pub","application\/x-msschedule":"scd","application\/x-msterminal":"trm","application\/x-mswrite":"wri","application\/x-netcdf":"nc","application\/x-nzb":"nzb","application\/x-pkcs12":"p12","application\/x-pkcs7-certificates":"p7b","application\/x-pkcs7-certreqresp":"p7r","application\/x-research-info-systems":"ris","application\/x-shar":"shar","application\/x-shockwave-flash":"swf","application\/x-silverlight-app":"xap","application\/x-sql":"sql","application\/x-stuffit":"sit","application\/x-stuffitx":"sitx","application\/x-subrip":"srt","application\/x-sv4cpio":"sv4cpio","application\/x-sv4crc":"sv4crc","application\/x-t3vm-image":"t3","application\/x-tads":"gam","application\/x-tar":"tar","application\/x-tcl":"tcl","application\/x-tex":"tex","application\/x-tex-tfm":"tfm","application\/x-texinfo":"texinfo","application\/x-tgif":"obj","application\/x-ustar":"ustar","application\/x-wais-source":"src","application\/x-x509-ca-cert":"der","application\/x-xfig":"fig","application\/x-xliff+xml":"xlf","application\/x-xpinstall":"xpi","application\/x-xz":"xz","application\/x-zmachine":"z1","application\/xaml+xml":"xaml","application\/xcap-diff+xml":"xdf","application\/xenc+xml":"xenc","application\/xhtml+xml":"xhtml","application\/xml":"xsl","application\/xml-dtd":"dtd","application\/xop+xml":"xop","application\/xproc+xml":"xpl","application\/xslt+xml":"xslt","application\/xspf+xml":"xspf","application\/xv+xml":"mxml","application\/yang":"yang","application\/yin+xml":"yin","application\/zip":"zip","audio\/adpcm":"adp","audio\/basic":"au","audio\/midi":"mid","audio\/mp4":"m4a","audio\/mpeg":"mpga","audio\/ogg":"oga","audio\/s3m":"s3m","audio\/silk":"sil","audio\/vnd.dece.audio":"uva","audio\/vnd.digital-winds":"eol","audio\/vnd.dra":"dra","audio\/vnd.dts":"dts","audio\/vnd.dts.hd":"dtshd","audio\/vnd.lucent.voice":"lvp","audio\/vnd.ms-playready.media.pya":"pya","audio\/vnd.nuera.ecelp4800":"ecelp4800","audio\/vnd.nuera.ecelp7470":"ecelp7470","audio\/vnd.nuera.ecelp9600":"ecelp9600","audio\/vnd.rip":"rip","audio\/webm":"weba","audio\/x-aac":"aac","audio\/x-aiff":"aif","audio\/x-caf":"caf","audio\/x-flac":"flac","audio\/x-matroska":"mka","audio\/x-mpegurl":"m3u","audio\/x-ms-wax":"wax","audio\/x-ms-wma":"wma","audio\/x-pn-realaudio":"ram","audio\/x-pn-realaudio-plugin":"rmp","audio\/xm":"xm","chemical\/x-cdx":"cdx","chemical\/x-cif":"cif","chemical\/x-cmdf":"cmdf","chemical\/x-cml":"cml","chemical\/x-csml":"csml","chemical\/x-xyz":"xyz","font\/collection":"ttc","font\/otf":"otf","font\/ttf":"ttf","font\/woff":"woff","font\/woff2":"woff2","image\/cgm":"cgm","image\/g3fax":"g3","image\/gif":"gif","image\/ief":"ief","image\/jpeg":"jpeg","image\/ktx":"ktx","image\/png":"png","image\/prs.btif":"btif","image\/sgi":"sgi","image\/svg+xml":"svg","image\/tiff":"tiff","image\/vnd.adobe.photoshop":"psd","image\/vnd.dece.graphic":"uvi","image\/vnd.djvu":"djvu","image\/vnd.dvb.subtitle":"sub","image\/vnd.dwg":"dwg","image\/vnd.dxf":"dxf","image\/vnd.fastbidsheet":"fbs","image\/vnd.fpx":"fpx","image\/vnd.fst":"fst","image\/vnd.fujixerox.edmics-mmr":"mmr","image\/vnd.fujixerox.edmics-rlc":"rlc","image\/vnd.ms-modi":"mdi","image\/vnd.ms-photo":"wdp","image\/vnd.net-fpx":"npx","image\/vnd.wap.wbmp":"wbmp","image\/vnd.xiff":"xif","image\/webp":"webp","image\/x-3ds":"3ds","image\/x-cmu-raster":"ras","image\/x-cmx":"cmx","image\/x-freehand":"fh","image\/x-icon":"ico","image\/x-mrsid-image":"sid","image\/x-pcx":"pcx","image\/x-pict":"pic","image\/x-portable-anymap":"pnm","image\/x-portable-bitmap":"pbm","image\/x-portable-graymap":"pgm","image\/x-portable-pixmap":"ppm","image\/x-rgb":"rgb","image\/x-xpixmap":"xpm","image\/x-xwindowdump":"xwd","message\/rfc822":"eml","model\/iges":"igs","model\/mesh":"msh","model\/vnd.collada+xml":"dae","model\/vnd.dwf":"dwf","model\/vnd.gdl":"gdl","model\/vnd.gtw":"gtw","model\/vnd.vtu":"vtu","model\/vrml":"wrl","model\/x3d+binary":"x3db","model\/x3d+vrml":"x3dv","model\/x3d+xml":"x3d","text\/cache-manifest":"appcache","text\/calendar":"ics","text\/css":"css","text\/csv":"csv","text\/html":"html","text\/n3":"n3","text\/plain":"txt","text\/prs.lines.tag":"dsc","text\/richtext":"rtx","text\/sgml":"sgml","text\/tab-separated-values":"tsv","text\/troff":"t","text\/turtle":"ttl","text\/uri-list":"uri","text\/vcard":"vcard","text\/vnd.curl":"curl","text\/vnd.curl.dcurl":"dcurl","text\/vnd.curl.mcurl":"mcurl","text\/vnd.curl.scurl":"scurl","text\/vnd.fly":"fly","text\/vnd.fmi.flexstor":"flx","text\/vnd.graphviz":"gv","text\/vnd.in3d.3dml":"3dml","text\/vnd.in3d.spot":"spot","text\/vnd.sun.j2me.app-descriptor":"jad","text\/vnd.wap.wml":"wml","text\/vnd.wap.wmlscript":"wmls","text\/x-asm":"s","text\/x-c":"cc","text\/x-fortran":"f","text\/x-java-source":"java","text\/x-nfo":"nfo","text\/x-opml":"opml","text\/x-pascal":"p","text\/x-setext":"etx","text\/x-sfv":"sfv","text\/x-uuencode":"uu","text\/x-vcalendar":"vcs","text\/x-vcard":"vcf","video\/3gpp":"3gp","video\/3gpp2":"3g2","video\/h261":"h261","video\/h263":"h263","video\/h264":"h264","video\/jpeg":"jpgv","video\/jpm":"jpm","video\/mj2":"mj2","video\/mp4":"mp4","video\/mpeg":"mpeg","video\/quicktime":"qt","video\/vnd.dece.hd":"uvh","video\/vnd.dece.mobile":"uvm","video\/vnd.dece.pd":"uvp","video\/vnd.dece.sd":"uvs","video\/vnd.dece.video":"uvv","video\/vnd.dvb.file":"dvb","video\/vnd.fvt":"fvt","video\/vnd.mpegurl":"mxu","video\/vnd.ms-playready.media.pyv":"pyv","video\/vnd.uvvu.mp4":"uvu","video\/vnd.vivo":"viv","video\/webm":"webm","video\/x-f4v":"f4v","video\/x-fli":"fli","video\/x-flv":"flv","video\/x-m4v":"m4v","video\/x-matroska":"mkv","video\/x-mng":"mng","video\/x-ms-asf":"asf","video\/x-ms-vob":"vob","video\/x-ms-wmx":"wmx","video\/x-ms-wvx":"wvx","video\/x-msvideo":"avi","video\/x-sgi-movie":"movie","video\/x-smv":"smv","x-conference\/x-cooltalk":"ice","text\/x-sql":"sql","image\/x-pixlr-data":"pxd","image\/x-adobe-dng":"dng","image\/x-sketch":"sketch","image\/x-xcf":"xcf","audio\/amr":"amr","image\/vnd-ms.dds":"dds","application\/plt":"plt","application\/sat":"sat","application\/step":"step","text\/x-httpd-cgi":"cgi","text\/x-asap":"asp","text\/x-jsp":"jsp"};application/library/js/elfinder_script.js000064400000005112147577724760014672 0ustar00jQuery(document).ready(function() { var fmakey = afm_object.nonce; var fma_locale = afm_object.locale; var fma_cm_theme = afm_object.cm_theme; jQuery('#file_manager_advanced').elfinder( // 1st Arg - options { cssAutoLoad : false, // Disable CSS auto loading url : afm_object.ajaxurl, // connector URL (REQUIRED) customData : {action: 'fma_load_fma_ui',_fmakey: fmakey}, defaultView : 'list', height: 500, lang : fma_locale, ui: afm_object.ui, commandsOptions: { edit : { mimes : [], editors : [{ mimes : ['text/plain', 'text/html', 'text/javascript', 'text/css', 'text/x-php', 'application/x-php'], load : function(textarea) { var mimeType = this.file.mime; var filename = this.file.name; editor = CodeMirror.fromTextArea(textarea, { mode: mimeType, indentUnit: 4, lineNumbers: true, lineWrapping: true, lint: true, theme: fma_cm_theme }); return editor; }, close : function(textarea, instance) { this.myCodeMirror = null; }, save: function(textarea, editor) { jQuery(textarea).val(editor.getValue()); } } ] }, } } ); });application/library/js/elFinder.options.netmount.js000064400000003016147577724760016611 0ustar00/** * Default elFinder config of commandsOptions.netmount * * @type Object */ elFinder.prototype._options.commandsOptions.netmount = { ftp: { name : 'FTP', inputs: { host : $(''), port : $(''), path : $(''), user : $(''), pass : $(''), FTPS : $(''), encoding : $(''), locale : $('') } }, dropbox2: elFinder.prototype.makeNetmountOptionOauth('dropbox2', 'Dropbox', 'Dropbox', {noOffline : true, root : '/', pathI18n : 'path', integrate : { title: 'Dropbox.com', link: 'https://www.dropbox.com' } }), googledrive: elFinder.prototype.makeNetmountOptionOauth('googledrive', 'Google Drive', 'Google', { integrate : { title: 'Google Drive', link: 'https://www.google.com/drive/' } }), onedrive: elFinder.prototype.makeNetmountOptionOauth('onedrive', 'One Drive', 'OneDrive', { integrate : { title: 'Microsoft OneDrive', link: 'https://onedrive.live.com' } }), box: elFinder.prototype.makeNetmountOptionOauth('box', 'Box', 'Box', { noOffline : true, integrate : { title: 'Box.com', link: 'https://www.box.com' } }) }; application/library/js/jquery.dialogelfinder.js000064400000006133147577724760016010 0ustar00/** * @class dialogelfinder - open elFinder in dialog window * * @param Object elFinder options with dialog options * @example * $(selector).dialogelfinder({ * // some elfinder options * title : 'My files', // dialog title, default = "Files" * width : 850, // dialog width, default 840 * autoOpen : false, // if false - dialog will not be opened after init, default = true * destroyOnClose : true // destroy elFinder on close dialog, default = false * }) * @author Dmitry (dio) Levashov **/ $.fn.dialogelfinder = function(opts, opts2) { var position = 'elfinderPosition', destroy = 'elfinderDestroyOnClose', node, pos; if ($.isPlainObject(opts)) { this.not('.elfinder').each(function() { opts.handlers = opts.handlers || {}; var node = $(this), doc = $(document), toolbar = $('
      '+(opts.title || 'Files')+'
      '), button = $('
      ') .appendTo(toolbar) .on('click', function(e) { e.preventDefault(); node.dialogelfinder('close'); }), init = opts.handlers.init, elfinder; opts.handlers.init = function(e, fm) { node.prepend(toolbar); init && init(e, fm); }; elfinder = node.addClass('elfinder dialogelfinder touch-punch') .css('position', 'absolute') .hide() .appendTo('body') .draggable({ handle : '.dialogelfinder-drag', containment : 'window', stop : function() { node.trigger('resize'); elfinder.trigger('resize'); } }) .elfinder(opts, opts2) .elfinder('instance'); elfinder.reloadCallback = function(o, o2) { elfinder.destroy(); o.handlers.init = init; node.dialogelfinder(o, o2).dialogelfinder('open'); }; node.width(parseInt(node.width()) || 840) // fix width if set to "auto" .data(destroy, !!opts.destroyOnClose) .find('.elfinder-toolbar').removeClass('ui-corner-top'); opts.position && node.data(position, opts.position); opts.autoOpen !== false && $(this).dialogelfinder('open'); }); } else { if (opts === 'open') { node = $(this); pos = node.data(position) || { top : parseInt($(document).scrollTop() + ($(window).height() < node.height() ? 2 : ($(window).height() - node.height())/2)), left : parseInt($(document).scrollLeft() + ($(window).width() < node.width() ? 2 : ($(window).width() - node.width())/2)) }; if (node.is(':hidden')) { node.addClass('ui-front').css(pos).show().trigger('resize'); setTimeout(function() { // fix resize icon position and make elfinder active node.trigger('resize').trigger('mousedown'); }, 200); } } else if (opts === 'close') { node = $(this).removeClass('ui-front'); if (node.is(':visible')) { !!node.data(destroy) ? node.elfinder('destroy').remove() : node.elfinder('close'); } } else if (opts === 'instance') { return $(this).getElFinder(); } } return this; }; application/library/js/elFinder.options.js000064400000115742147577724760014753 0ustar00/** * Default elFinder config * * @type Object * @autor Dmitry (dio) Levashov */ elFinder.prototype._options = { /** * URLs of 3rd party libraries CDN * * @type Object */ cdns : { // for editor etc. ace : 'https://cdnjs.cloudflare.com/ajax/libs/ace/1.22.0', codemirror : 'https://cdnjs.cloudflare.com/ajax/libs/codemirror/6.65.7', ckeditor : 'https://cdnjs.cloudflare.com/ajax/libs/ckeditor/4.21.0', ckeditor5 : 'https://cdn.ckeditor.com/ckeditor5/38.0.1', tinymce : 'https://cdnjs.cloudflare.com/ajax/libs/tinymce/6.4.2', simplemde : 'https://cdnjs.cloudflare.com/ajax/libs/simplemde/1.11.2', fabric : 'https://cdnjs.cloudflare.com/ajax/libs/fabric.js/5.3.1', fabric16 : 'https://cdnjs.cloudflare.com/ajax/libs/fabric.js/1.6.7', tui : 'https://uicdn.toast.com', // for quicklook etc. hls : 'https://cdnjs.cloudflare.com/ajax/libs/hls.js/1.4.4/hls.min.js', dash : 'https://cdnjs.cloudflare.com/ajax/libs/dashjs/4.7.0/dash.all.min.js', flv : 'https://cdnjs.cloudflare.com/ajax/libs/flv.js/1.6.2/flv.min.js', videojs : 'https://cdnjs.cloudflare.com/ajax/libs/video.js/8.3.0', prettify : 'https://cdn.jsdelivr.net/gh/google/code-prettify@e006587b4a893f0281e9dc9a53001c7ed584d4e7/loader/run_prettify.js', psd : 'https://cdnjs.cloudflare.com/ajax/libs/psd.js/3.4.0/psd.min.js', rar : 'https://cdn.jsdelivr.net/gh/nao-pon/rar.js@6cef13ec66dd67992fc7f3ea22f132d770ebaf8b/rar.min.js', zlibUnzip : 'https://cdn.jsdelivr.net/gh/imaya/zlib.js@0.3.1/bin/unzip.min.js', // need check unzipFiles() in quicklook.plugins.js when update zlibGunzip : 'https://cdn.jsdelivr.net/gh/imaya/zlib.js@0.3.1/bin/gunzip.min.js', bzip2 : 'https://cdn.jsdelivr.net/gh/nao-pon/bzip2.js@0.8.0/bzip2.js', marked : 'https://cdnjs.cloudflare.com/ajax/libs/marked/5.0.4/marked.min.js', sparkmd5 : 'https://cdnjs.cloudflare.com/ajax/libs/spark-md5/3.0.2/spark-md5.min.js', jssha : 'https://cdnjs.cloudflare.com/ajax/libs/jsSHA/3.3.0/sha.min.js', amr : 'https://cdn.jsdelivr.net/gh/yxl/opencore-amr-js@dcf3d2b5f384a1d9ded2a54e4c137a81747b222b/js/amrnb.js', tiff : 'https://cdn.jsdelivr.net/gh/seikichi/tiff.js@545ede3ee46b5a5bc5f06d65954e775aa2a64017/tiff.min.js' }, /** * Connector url. Required! * * @type String */ url : '', /** * Ajax request type. * * @type String * @default "get" */ requestType : 'get', /** * Use CORS to connector url * * @type Boolean|null true|false|null(Auto detect) */ cors : null, /** * Array of header names to return parrot out in HTTP headers received from the server * * @type Array */ parrotHeaders : [], /** * Maximum number of concurrent connections on request * * @type Number * @default 3 */ requestMaxConn : 3, /** * Transport to send request to backend. * Required for future extensions using websockets/webdav etc. * Must be an object with "send" method. * transport.send must return $.Deferred() object * * @type Object * @default null * @example * transport : { * init : function(elfinderInstance) { }, * send : function(options) { * var dfrd = $.Deferred(); * // connect to backend ... * return dfrd; * }, * upload : function(data) { * var dfrd = $.Deferred(); * // upload ... * return dfrd; * } * * } **/ transport : {}, /** * URL to upload file to. * If not set - connector URL will be used * * @type String * @default '' */ urlUpload : '', /** * Allow to drag and drop to upload files * * @type Boolean|String * @default 'auto' */ dragUploadAllow : 'auto', /** * Confirmation dialog displayed at the time of overwriting upload * * @type Boolean * @default true */ overwriteUploadConfirm : true, /** * Max size of chunked data of file upload * * @type Number * @default 10485760(10MB) */ uploadMaxChunkSize : 10485760, /** * Regular expression of file name to exclude when uploading folder * * @type Object * @default { win: /^(?:desktop\.ini|thumbs\.db)$/i, mac: /^\.ds_store$/i } */ folderUploadExclude : { win: /^(?:desktop\.ini|thumbs\.db)$/i, mac: /^\.ds_store$/i }, /** * Timeout for upload using iframe * * @type Number * @default 0 - no timeout */ iframeTimeout : 0, /** * Data to append to all requests and to upload files * * @type Object * @default {} */ customData : {}, /** * Event listeners to bind on elFinder init * * @type Object * @default {} */ handlers : {}, /** * Any custom headers to send across every ajax request * * @type Object * @default {} */ customHeaders : {}, /** * Any custom xhrFields to send across every ajax request * * @type Object * @default {} */ xhrFields : {}, /** * Interface language * * @type String * @default "en" */ lang : 'en', /** * Base URL of elfFinder library starting from Manager HTML * Auto detect when empty value * * @type String * @default "" */ baseUrl : '', /** * Base URL of i18n js files * baseUrl + "js/i18n/" when empty value * * @type String * @default "" */ i18nBaseUrl : '', /** * Base URL of worker js files * baseUrl + "js/worker/" when empty value * * @type String * @default "" */ workerBaseUrl : '', /** * Auto load required CSS * `false` to disable this function or * CSS URL Array to load additional CSS files * * @type Boolean|Array * @default true */ cssAutoLoad : true, /** * Theme to load * {"themeid" : "Theme CSS URL"} or * {"themeid" : "Theme manifesto.json URL"} or * Theme manifesto.json Object * { * "themeid" : { * "name":"Theme Name", * "cssurls":"Theme CSS URL", * "author":"Author Name", * "email":"Author Email", * "license":"License", * "link":"Web Site URL", * "image":"Screen Shot URL", * "description":"Description" * } * } * * @type Object */ themes : {}, /** * Theme id to initial theme * * @type String|Null */ theme : null, /** * Maximum value of error dialog open at the same time * * @type Number */ maxErrorDialogs : 5, /** * Additional css class for filemanager node. * * @type String */ cssClass : '', /** * Active commands list. '*' means all of the commands that have been load. * If some required commands will be missed here, elFinder will add its * * @type Array */ commands : ['*'], // Available commands list //commands : [ // 'archive', 'back', 'chmod', 'colwidth', 'copy', 'cut', 'download', 'duplicate', 'edit', 'extract', // 'forward', 'fullscreen', 'getfile', 'help', 'home', 'info', 'mkdir', 'mkfile', 'netmount', 'netunmount', // 'open', 'opendir', 'paste', 'places', 'quicklook', 'reload', 'rename', 'resize', 'restore', 'rm', // 'search', 'sort', 'up', 'upload', 'view', 'zipdl' //], /** * Commands options. * * @type Object **/ commandsOptions : { // // configure shortcuts of any command // // add `shortcuts` property into each command // any_command_name : { // shortcuts : [] // for disable this command's shortcuts // }, // any_command_name : { // shortcuts : function(fm, shortcuts) { // // for add `CTRL + E` for this command action // shortcuts[0]['pattern'] += ' ctrl+e'; // return shortcuts; // } // }, // any_command_name : { // shortcuts : function(fm, shortcuts) { // // for full customize of this command's shortcuts // return [ { pattern: 'ctrl+e ctrl+down numpad_enter' + (fm.OS != 'mac' && ' enter') } ]; // } // }, // "getfile" command options. getfile : { onlyURL : false, // allow to return multiple files info multiple : false, // allow to return filers info folders : false, // action after callback (""/"close"/"destroy") oncomplete : '', // action when callback is fail (""/"close"/"destroy") onerror : '', // get path before callback call getPath : true, // get image sizes before callback call getImgSize : false }, open : { // HTTP method that request to the connector when item URL is not valid URL. // If you set to "get" will be displayed request parameter in the browser's location field // so if you want to conceal its parameters should be given "post". // Nevertheless, please specify "get" if you want to enable the partial request by HTTP Range header. method : 'post', // Where to open into : 'window'(default), 'tab' or 'tabs' // 'tabs' opens in each tabs into : 'window', // Default command list of action when select file // String value that is 'Command Name' or 'Command Name1/CommandName2...' selectAction : 'open' }, opennew : { // URL of to open elFinder manager // Default '' : Origin URL url : '', // Use search query of origin URL useOriginQuery : true }, // "upload" command options. upload : { // Open elFinder upload dialog: 'button' OR Open system OS upload dialog: 'uploadbutton' ui : 'button' }, // "download" command options. download : { // max request to download files when zipdl disabled maxRequests : 10, // minimum count of files to use zipdl minFilesZipdl : 2 }, // "quicklook" command options. quicklook : { autoplay : true, width : 450, height : 300, // ControlsList of HTML5 audio/video preview // see https://googlechrome.github.io/samples/media/controlslist.html mediaControlsList : '', // e.g. 'nodownload nofullscreen noremoteplayback' // Show toolbar of PDF preview (with tag) pdfToolbar : true, // Maximum lines to preview at initial textInitialLines : 100, // Maximum lines to preview by prettify prettifyMaxLines : 300, // quicklook window must be contained in elFinder node on window open (true|false) contain : false, // preview window into NavDock (0 : undocked | 1 : docked(show) | 2 : docked(hide)) docked : 0, // Docked preview height ('auto' or Number of pixel) 'auto' is setted to the Navbar width dockHeight : 'auto', // media auto play when docked dockAutoplay : false, // Google Maps API key (Require Maps JavaScript API) googleMapsApiKey : '', // Google Maps API Options googleMapsOpts : { maps : {}, kml : { suppressInfoWindows : false, preserveViewport : false } }, // ViewerJS (https://viewerjs.org/) Options // To enable this you need to place ViewerJS on the same server as elFinder and specify that URL in `url`. viewerjs : { url: '', // Example '/ViewerJS/index.html' mimes: ['application/pdf', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.presentation'], pdfNative: true // Use Native PDF Viewer first }, // MIME types to CAD-Files and 3D-Models online viewer on sharecad.org // Example ['image/vnd.dwg', 'image/vnd.dxf', 'model/vnd.dwf', 'application/vnd.hp-hpgl', 'application/plt', 'application/step', 'model/iges', 'application/vnd.ms-pki.stl', 'application/sat', 'image/cgm', 'application/x-msmetafile'] sharecadMimes : [], // MIME types to use Google Docs online viewer // Example ['application/pdf', 'image/tiff', 'application/vnd.ms-office', 'application/msword', 'application/vnd.ms-word', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/postscript', 'application/rtf'] googleDocsMimes : [], // MIME types to use Microsoft Office Online viewer // Example ['application/msword', 'application/vnd.ms-word', 'application/vnd.ms-excel', 'application/vnd.ms-powerpoint', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/vnd.oasis.opendocument.text', 'application/vnd.oasis.opendocument.spreadsheet', 'application/vnd.oasis.opendocument.presentation'] // These MIME types override "googleDocsMimes" officeOnlineMimes : [], // File size threshold when using the dim command for obtain the image size necessary to image preview getDimThreshold : '200K', // Max filesize to show filenames of the zip/tar/gzip/bzip file unzipMaxSize : '50M', // MIME-Type regular expression that does not check empty files mimeRegexNotEmptyCheck : /^application\/vnd\.google-apps\./ }, // "edit" command options. edit : { // dialog width, integer(px) or integer+'%' (example: 650, '80%' ...) dialogWidth : void(0), // dialog height, integer(px) or integer+'%' (example: 650, '80%' ...) dialogHeight : void(0), // list of allowed mimetypes to edit of text files // if empty - any text files can be edited mimes : [], // MIME-types to unselected as default of "File types to enable with "New file"" in preferences mkfileHideMimes : [], // MIME-types of text file to make empty file makeTextMimes : ['text/plain', 'text/css', 'text/html'], // Use the editor stored in the browser // This value allowd overwrite with user preferences useStoredEditor : false, // Open the maximized editor window // This value allowd overwrite with user preferences editorMaximized : false, // edit files in wysisyg's editors : [ // { // /** // * editor info // * @type Object // */ // info : { name: 'Editor Name' }, // /** // * files mimetypes allowed to edit in current wysisyg // * @type Array // */ // mimes : ['text/html'], // /** // * HTML element for editing area (optional for text editor) // * @type String // */ // html : '', // /** // * Initialize editing area node (optional for text editor) // * // * @param String dialog DOM id // * @param Object target file object // * @param String target file content (text or Data URI Scheme(binary file)) // * @param Object elFinder instance // * @type Function // */ // init : function(id, file, content, fm) { // $(this).attr('id', id + '-text').val(content); // }, // /** // * Get edited contents (optional for text editor) // * @type Function // */ // getContent : function() { // return $(this).val(); // }, // /** // * Called when "edit" dialog loaded. // * Place to init wysisyg. // * Can return wysisyg instance // * // * @param DOMElement textarea node // * @return Object editor instance|jQuery.Deferred(return instance on resolve()) // */ // load : function(textarea) { }, // /** // * Called before "edit" dialog closed. // * Place to destroy wysisyg instance. // * // * @param DOMElement textarea node // * @param Object wysisyg instance (if was returned by "load" callback) // * @return void // */ // close : function(textarea, instance) { }, // /** // * Called before file content send to backend. // * Place to update textarea content if needed. // * // * @param DOMElement textarea node // * @param Object wysisyg instance (if was returned by "load" callback) // * @return void // */ // save : function(textarea, instance) {}, // /** // * Called after load() or save(). // * Set focus to wysisyg editor. // * // * @param DOMElement textarea node // * @param Object wysisyg instance (if was returned by "load" callback) // * @return void // */ // focus : function(textarea, instance) {} // /** // * Called after dialog resized.. // * // * @param DOMElement textarea node // * @param Object wysisyg instance (if was returned by "load" callback) // * @param Object resize event object // * @param Object data object // * @return void // */ // resize : function(textarea, instance, event, data) {} // // } ], // Character encodings of select box encodings : ['Big5', 'Big5-HKSCS', 'Cp437', 'Cp737', 'Cp775', 'Cp850', 'Cp852', 'Cp855', 'Cp857', 'Cp858', 'Cp862', 'Cp866', 'Cp874', 'EUC-CN', 'EUC-JP', 'EUC-KR', 'GB18030', 'ISO-2022-CN', 'ISO-2022-JP', 'ISO-2022-KR', 'ISO-8859-1', 'ISO-8859-2', 'ISO-8859-3', 'ISO-8859-4', 'ISO-8859-5', 'ISO-8859-6', 'ISO-8859-7', 'ISO-8859-8', 'ISO-8859-9', 'ISO-8859-13', 'ISO-8859-15', 'KOI8-R', 'KOI8-U', 'Shift-JIS', 'Windows-1250', 'Windows-1251', 'Windows-1252', 'Windows-1253', 'Windows-1254', 'Windows-1257'], // options for extra editors extraOptions : { // upload command options uploadOpts : {}, // TUI Image Editor's options tuiImgEditOpts : { // Path prefix of icon-a.svg, icon-b.svg, icon-c.svg and icon-d.svg in the Theme. // `iconsPath` MUST follow the same origin policy. iconsPath : void(0), // default is "./img/tui-" // Theme object theme : {} }, // Pixo image editor constructor options - https://pixoeditor.com/ // Require 'apikey' to enable it pixo: { apikey: '' }, // Browsing manager URL for CKEditor, TinyMCE // Uses self location with the empty value or not defined. //managerUrl : 'elfinder.html' managerUrl : null, // CKEditor editor options ckeditor: {}, // CKEditor 5 editor options ckeditor5: { // builds mode - 'classic', 'inline', 'balloon', 'balloon-block' or 'decoupled-document' mode: 'decoupled-document' }, // TinyMCE editor options tinymce : {}, // Setting for Online-Convert.com onlineConvert : { maxSize : 100, // (MB) Max 100MB on free account showLink : true // It must be enabled with free account } } }, fullscreen : { // fullscreen mode 'screen'(When the browser supports it) or 'window' mode: 'screen' // 'screen' or 'window' }, search : { // Incremental search from the current view incsearch : { enable : true, // is enable true or false minlen : 1, // minimum number of characters wait : 500 // wait milliseconds }, // Additional search types searchTypes : { // "SearchMime" is implemented in default SearchMime : { // The key is search type that send to the connector name : 'btnMime', // Button text to be processed in i18n() title : 'searchMime',// Button title to be processed in i18n() incsearch : 'mime' // Incremental search target filed name of the file object // Or Callable function /* incsearch function example function(queryObject, cwdHashes, elFinderInstance) { var q = queryObject.val; var regex = queryObject.regex; var matchedHashes = $.grep(cwdHashes, function(hash) { var file = elFinderInstance.file(hash); return (file && file.mime && file.mime.match(regex))? true : false; }); return matchedHashes; } */ } } }, // "info" command options. info : { // If the URL of the Directory is null, // it is assumed that the link destination is a URL to open the folder in elFinder nullUrlDirLinkSelf : true, // Information items to be hidden by default // These name are 'size', 'aliasfor', 'path', 'link', 'dim', 'modify', 'perms', 'locked', 'owner', 'group', 'perm' and your custom info items label hideItems : [], // Maximum file size (byte) to get file contents hash (md5, sha256 ...) showHashMaxsize : 104857600, // 100 MB // Array of hash algorisms to show on info dialog // These name are 'md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512', 'shake128' and 'shake256' showHashAlgorisms : ['md5', 'sha256'], // Options for fm.getContentsHashes() showHashOpts : { shake128len : 256, shake256len : 512 }, custom : { // /** // * Example of custom info `desc` // */ // desc : { // /** // * Lable (require) // * It is filtered by the `fm.i18n()` // * // * @type String // */ // label : 'Description', // // /** // * Template (require) // * `{id}` is replaced in dialog.id // * // * @type String // */ // tpl : '
      ', // // /** // * Restricts to mimetypes (optional) // * Exact match or category match // * // * @type Array // */ // mimes : ['text', 'image/jpeg', 'directory'], // // /** // * Restricts to file.hash (optional) // * // * @ type Regex // */ // hashRegex : /^l\d+_/, // // /** // * Request that asks for the description and sets the field (optional) // * // * @type Function // */ // action : function(file, fm, dialog) { // fm.request({ // data : { cmd : 'desc', target: file.hash }, // preventDefault: true, // }) // .fail(function() { // dialog.find('div.elfinder-info-desc').html(fm.i18n('unknown')); // }) // .done(function(data) { // dialog.find('div.elfinder-info-desc').html(data.desc); // }); // } // } } }, mkdir: { // Enable automatic switching function ["New Folder" / "Into New Folder"] of toolbar buttton intoNewFolderToolbtn: false }, resize: { // defalt status of snap to 8px grid of the jpeg image ("enable" or "disable") grid8px : 'disable', // Preset size array [width, height] presetSize : [[320, 240], [400, 400], [640, 480], [800,600]], // File size (bytes) threshold when using the `dim` command for obtain the image size necessary to start editing getDimThreshold : 204800, // File size (bytes) to request to get substitute image (400px) with the `dim` command dimSubImgSize : 307200 }, rm: { // If trash is valid, items moves immediately to the trash holder without confirm. quickTrash : true, // Maximum wait seconds when checking the number of items to into the trash infoCheckWait : 10, // Maximum number of items that can be placed into the Trash at one time toTrashMaxItems : 1000 }, paste : { moveConfirm : false // Display confirmation dialog when moving items }, help : { // Tabs to show view : ['about', 'shortcuts', 'help', 'integrations', 'debug'], // HTML source URL of the heip tab helpSource : '' }, preference : { // dialog width width: 600, // dialog height height: 400, // tabs setting see preference.js : build() categories: null, // preference setting see preference.js : build() prefs: null, // language setting see preference.js : build() langs: null, // Command list of action when select file // Array value are 'Command Name' or 'Command Name1/CommandName2...' selectActions : ['open', 'edit/download', 'resize/edit/download', 'download', 'quicklook'] } }, /** * Disabled commands relationship * * @type Object */ disabledCmdsRels : { 'get' : ['edit'], 'rm' : ['cut', 'empty'], 'file&url=' : ['download', 'zipdl'] // file command and volume options url is empty }, /** * Callback for prepare boot up * * - The this object in the function is an elFinder node * - The first parameter is elFinder Instance * - The second parameter is an object of other parameters * For now it can use `dfrdsBeforeBootup` Array * * @type Function * @default null * @return void */ bootCallback : null, /** * Callback for "getfile" commands. * Required to use elFinder with WYSIWYG editors etc.. * * @type Function * @default null (command not active) */ getFileCallback : null, /** * Default directory view. icons/list * * @type String * @default "icons" */ defaultView : 'icons', /** * Hash of default directory path to open * * NOTE: This setting will be disabled if the target folder is specified in location.hash. * * If you want to find the hash in Javascript * can be obtained with the following code. (In the case of a standard hashing method) * * var volumeId = 'l1_'; // volume id * var path = 'path/to/target'; // without root path * //var path = 'path\\to\\target'; // use \ on windows server * var hash = volumeId + btoa(path).replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '.').replace(/\.+$/, ''); * * @type String * @default "" */ startPathHash : '', /** * Emit a sound when a file is deleted * Sounds are in sounds/ folder * * @type Boolean * @default true */ sound : true, /** * UI plugins to load. * Current dir ui and dialogs loads always. * Here set not required plugins as folders tree/toolbar/statusbar etc. * * @type Array * @default ['toolbar', 'places', 'tree', 'path', 'stat'] * @full ['toolbar', 'places', 'tree', 'path', 'stat'] */ ui : ['toolbar', 'places', 'tree', 'path', 'stat'], /** * Some UI plugins options. * @type Object */ uiOptions : { // toolbar configuration toolbar : [ ['home', 'back', 'forward', 'up', 'reload'], ['netmount'], ['mkdir', 'mkfile', 'upload'], ['open', 'download', 'getfile'], ['undo', 'redo'], ['copy', 'cut', 'paste', 'rm', 'empty', 'hide'], ['duplicate', 'rename', 'edit', 'resize', 'chmod'], ['selectall', 'selectnone', 'selectinvert'], ['quicklook', 'info'], ['extract', 'archive'], ['search'], ['view', 'sort'], ['preference', 'help'], ['fullscreen'] ], // toolbar extra options toolbarExtra : { // also displays the text label on the button (true / false / 'none') displayTextLabel: false, // Exclude `displayTextLabel` setting UA type labelExcludeUA: ['Mobile'], // auto hide on initial open autoHideUA: ['Mobile'], // Initial setting value of hide button in toolbar setting defaultHides: ['home', 'reload'], // show Preference button ('none', 'auto', 'always') // If you do not include 'preference' in the context menu you should specify 'auto' or 'always' showPreferenceButton: 'none', // show Preference button into contextmenu of the toolbar (true / false) preferenceInContextmenu: true }, // directories tree options tree : { // set path info to attr title attrTitle : true, // expand current root on init openRootOnLoad : true, // expand current work directory on open openCwdOnOpen : true, // auto loading current directory parents and do expand their node. syncTree : true, // Maximum number of display of each child trees // The tree of directories with children exceeding this number will be split subTreeMax : 100, // Numbar of max connctions of subdirs request subdirsMaxConn : 2, // Number of max simultaneous processing directory of subdirs subdirsAtOnce : 5, // Durations of each animations durations : { slideUpDown : 'fast', autoScroll : 'fast' } // , // /** // * Add CSS class name to navbar directories (optional) // * see: https://github.com/Studio-42/elFinder/pull/1061, // * https://github.com/Studio-42/elFinder/issues/1231 // * // * @type Function // */ // getClass: function(dir) { // // e.g. This adds the directory's name (lowercase) with prefix as a CSS class // return 'elfinder-tree-' + dir.name.replace(/[ "]/g, '').toLowerCase(); // } }, // navbar options navbar : { minWidth : 150, maxWidth : 500, // auto hide on initial open autoHideUA: [] // e.g. ['Mobile'] }, navdock : { // disabled navdock ui disabled : false, // percentage of initial maximum height to work zone initMaxHeight : '50%', // percentage of maximum height to work zone by user resize action maxHeight : '90%' }, cwd : { // display parent folder with ".." name :) oldSchool : false, // fm.UA types array to show item select checkboxes e.g. ['All'] or ['Mobile'] etc. default: ['Touch'] showSelectCheckboxUA : ['Touch'], // Enable dragout by dragstart with Alt key or Shift key metakeyDragout : true, // file info columns displayed listView : { // name is always displayed, cols are ordered // e.g. ['perm', 'date', 'size', 'kind', 'owner', 'group', 'mode'] // mode: 'mode'(by `fileModeStyle` setting), 'modestr'(rwxr-xr-x) , 'modeoct'(755), 'modeboth'(rwxr-xr-x (755)) // 'owner', 'group' and 'mode', It's necessary set volume driver option "statOwner" to `true` // for custom, characters that can be used in the name is `a-z0-9_` columns : ['perm', 'date', 'size', 'kind'], // override this if you want custom columns name // example // columnsCustomName : { // date : 'Last modification', // kind : 'Mime type' // } columnsCustomName : {}, // fixed list header colmun fixedHeader : true }, // icons view setting iconsView : { // default icon size (0-3 in default CSS (cwd.css - elfinder-cwd-size[number])) size: 0, // number of maximum size (3 in default CSS (cwd.css - elfinder-cwd-size[number])) // uses in preference.js sizeMax: 3, // Name of each size sizeNames: { 0: 'viewSmall', 1: 'viewMedium', 2: 'viewLarge', 3: 'viewExtraLarge' } }, // /** // * Add CSS class name to cwd directories (optional) // * see: https://github.com/Studio-42/elFinder/pull/1061, // * https://github.com/Studio-42/elFinder/issues/1231 // * // * @type Function // */ // , // getClass: function(file) { // // e.g. This adds the directory's name (lowercase) with prefix as a CSS class // return 'elfinder-cwd-' + file.name.replace(/[ "]/g, '').toLowerCase(); //} //, //// Template placeholders replacement rules for overwrite. see ui/cwd.js replacement //replacement : { // tooltip : function(f, fm) { // var list = fm.viewType == 'list', // current view type // query = fm.searchStatus.state == 2, // is in search results // title = fm.formatDate(f) + (f.size > 0 ? ' ('+fm.formatSize(f.size)+')' : ''), // info = ''; // if (query && f.path) { // info = fm.escape(f.path.replace(/\/[^\/]*$/, '')); // } else { // info = f.tooltip? fm.escape(f.tooltip).replace(/\r/g, ' ') : ''; // } // if (list) { // info += (info? ' ' : '') + fm.escape(f.name); // } // return info? info + ' ' + title : title; // } //} }, path : { // Move to head of work zone without UI navbar toWorkzoneWithoutNavbar : true }, dialog : { // Enable to auto focusing on mouse over in the target form element focusOnMouseOver : true }, toast : { animate : { // to show showMethod: 'fadeIn', // fadeIn, slideDown, and show are built into jQuery showDuration: 300, // milliseconds showEasing: 'swing', // swing and linear are built into jQuery // timeout to hide timeOut: 3000, // to hide hideMethod: 'fadeOut', hideDuration: 1500, hideEasing: 'swing' } } }, /** * MIME regex of send HTTP header "Content-Disposition: inline" or allow preview in quicklook * This option will overwrite by connector configuration * * @type String * @default '^(?:(?:image|video|audio)|text/plain|application/pdf$)' * @example * dispInlineRegex : '.', // is allow inline of all of MIME types * dispInlineRegex : '$^', // is not allow inline of all of MIME types */ dispInlineRegex : '^(?:(?:image|video|audio)|application/(?:x-mpegURL|dash\+xml)|(?:text/plain|application/pdf)$)', /** * Display only required files by types * * @type Array * @default [] * @example * onlyMimes : ["image"] - display all images * onlyMimes : ["image/png", "application/x-shockwave-flash"] - display png and flash */ onlyMimes : [], /** * Custom files sort rules. * All default rules (name/size/kind/date/perm/mode/owner/group) set in elFinder._sortRules * * @type {Object} * @example * sortRules : { * name : function(file1, file2) { return file1.name.toLowerCase().localeCompare(file2.name.toLowerCase()); } * } */ sortRules : {}, /** * Default sort type. * * @type {String} */ sortType : 'name', /** * Default sort order. * * @type {String} * @default "asc" */ sortOrder : 'asc', /** * Display folders first? * * @type {Boolean} * @default true */ sortStickFolders : true, /** * Sort also applies to the treeview (null: disable this feature) * * @type Boolean|null * @default false */ sortAlsoTreeview : false, /** * If true - elFinder will formating dates itself, * otherwise - backend date will be used. * * @type Boolean */ clientFormatDate : true, /** * Show UTC dates. * Required set clientFormatDate to true * * @type Boolean */ UTCDate : false, /** * File modification datetime format. * Value from selected language data is used by default. * Set format here to overwrite it. * * @type String * @default "" */ dateFormat : '', /** * File modification datetime format in form "Yesterday 12:23:01". * Value from selected language data is used by default. * Set format here to overwrite it. * Use $1 for "Today"/"Yesterday" placeholder * * @type String * @default "" * @example "$1 H:m:i" */ fancyDateFormat : '', /** * Style of file mode at cwd-list, info dialog * 'string' (ex. rwxr-xr-x) or 'octal' (ex. 755) or 'both' (ex. rwxr-xr-x (755)) * * @type {String} * @default 'both' */ fileModeStyle : 'both', /** * elFinder width * * @type String|Number * @default "auto" */ width : 'auto', /** * elFinder node height * Number: pixcel or String: Number + "%" * * @type Number | String * @default 400 */ height : 400, /** * Do not resize the elFinder node itself on resize parent node * Specify `true` when controlling with CSS such as Flexbox * * @type Boolean * @default false */ noResizeBySelf : false, /** * Base node object or selector * Element which is the reference of the height percentage * * @type Object|String * @default null | $(window) (if height is percentage) **/ heightBase : null, /** * Make elFinder resizable if jquery ui resizable available * * @type Boolean * @default true */ resizable : true, /** * Timeout before open notifications dialogs * * @type Number * @default 500 (.5 sec) */ notifyDelay : 500, /** * Position CSS, Width of notifications dialogs * * @type Object * @default {position: {}, width : null} - Apply CSS definition * position: CSS object | null (null: position center & middle) */ notifyDialog : {position : {}, width : null, canClose : false, hiddens : ['open']}, /** * Dialog contained in the elFinder node * * @type Boolean * @default false */ dialogContained : false, /** * Allow shortcuts * * @type Boolean * @default true */ allowShortcuts : true, /** * Remeber last opened dir to open it after reload or in next session * * @type Boolean * @default true */ rememberLastDir : true, /** * Clear historys(elFinder) on reload(not browser) function * Historys was cleared on Reload function on elFinder 2.0 (value is true) * * @type Boolean * @default false */ reloadClearHistory : false, /** * Use browser native history with supported browsers * * @type Boolean * @default true */ useBrowserHistory : true, /** * Lazy load config. * How many files display at once? * * @type Number * @default 50 */ showFiles : 50, /** * Lazy load config. * Distance in px to cwd bottom edge to start display files * * @type Number * @default 50 */ showThreshold : 50, /** * Additional rule to valid new file name. * By default not allowed empty names or '..' * This setting does not have a sense of security. * * @type false|RegExp|function * @default false * @example * disable names with spaces: * validName : /^[^\s]+$/, */ validName : false, /** * Additional rule to filtering for browsing. * This setting does not have a sense of security. * * The object `this` is elFinder instance object in this function * * @type false|RegExp|function * @default false * @example * show only png and jpg files: * fileFilter : /.*\.(png|jpg)$/i, * * show only image type files: * fileFilter : function(file) { return file.mime && file.mime.match(/^image\//i); }, */ fileFilter : false, /** * Backup name suffix. * * @type String * @default "~" */ backupSuffix : '~', /** * Sync content interval * * @type Number * @default 0 (do not sync) */ sync : 0, /** * Sync start on load if sync value >= 1000 * * @type Bool * @default true */ syncStart : true, /** * How many thumbnails create in one request * * @type Number * @default 5 */ loadTmbs : 5, /** * Cookie option for browsersdoes not suppot localStorage * * @type Object */ cookie : { expires : 30, domain : '', path : '/', secure : false, samesite : 'lax' }, /** * Contextmenu config * * @type Object */ contextmenu : { // navbarfolder menu navbar : ['open', 'opennew', 'download', '|', 'upload', 'mkdir', '|', 'copy', 'cut', 'paste', 'duplicate', '|', 'rm', 'empty', 'hide', '|', 'rename', '|', 'archive', '|', 'places', 'info', 'chmod', 'netunmount'], // current directory menu cwd : ['undo', 'redo', '|', 'back', 'up', 'reload', '|', 'upload', 'mkdir', 'mkfile', 'paste', '|', 'empty', 'hide', '|', 'view', 'sort', 'selectall', 'colwidth', '|', 'places', 'info', 'chmod', 'netunmount', '|', 'fullscreen', '|', 'preference'], // current directory file menu files : ['getfile', '|' ,'open', 'opennew', 'download', 'opendir', 'quicklook', '|', 'upload', 'mkdir', '|', 'copy', 'cut', 'paste', 'duplicate', '|', 'rm', 'empty', 'hide', '|', 'rename', 'edit', 'resize', '|', 'archive', 'extract', '|', 'selectall', 'selectinvert', '|', 'places', 'info', 'chmod', 'netunmount'] }, /** * elFinder node enable always * This value will set to `true` if has elFinder node only * * @type Bool * @default false */ enableAlways : false, /** * elFinder node enable by mouse over * * @type Bool * @default true */ enableByMouseOver : true, /** * Show window close confirm dialog * Value is which state to show * 'hasNotifyDialog', 'editingFile', 'hasSelectedItem' and 'hasClipboardData' * * @type Array * @default ['hasNotifyDialog', 'editingFile'] */ windowCloseConfirm : ['hasNotifyDialog', 'editingFile'], /** * Function decoding 'raw' string converted to unicode * It is used instead of fm.decodeRawString(str) * * @type Null|Function */ rawStringDecoder : typeof Encoding === 'object' && $.isFunction(Encoding.convert)? function(str) { return Encoding.convert(str, { to: 'UNICODE', type: 'string' }); } : null, /** * Debug config * * @type Array|String('auto')|Boolean(true|false) */ debug : ['error', 'warning', 'event-destroy'], /** * Show toast messeges of backend warning (if found data `debug.backendErrors` in backend results) * * @type Boolean|Object (toast options) */ toastBackendWarn : true }; application/library/js/elFinder.history.js000064400000004562147577724760014756 0ustar00/** * @class elFinder.history * Store visited folders * and provide "back" and "forward" methods * * @author Dmitry (dio) Levashov */ elFinder.prototype.history = function(fm) { "use strict"; var self = this, /** * Update history on "open" event? * * @type Boolean */ update = true, /** * Directories hashes storage * * @type Array */ history = [], /** * Current directory index in history * * @type Number */ current, /** * Clear history * * @return void */ reset = function() { history = [fm.cwd().hash]; current = 0; update = true; }, /** * Browser native history object */ nativeHistory = (fm.options.useBrowserHistory && window.history && window.history.pushState)? window.history : null, /** * Open prev/next folder * * @Boolen open next folder? * @return jQuery.Deferred */ go = function(fwd) { if ((fwd && self.canForward()) || (!fwd && self.canBack())) { update = false; return fm.exec('open', history[fwd ? ++current : --current]).fail(reset); } return $.Deferred().reject(); }, /** * Sets the native history. * * @param String thash target hash */ setNativeHistory = function(thash) { if (nativeHistory && (! nativeHistory.state || nativeHistory.state.thash !== thash)) { nativeHistory.pushState({thash: thash}, null, location.pathname + location.search + (thash? '#elf_' + thash : '')); } }; /** * Return true if there is previous visited directories * * @return Boolen */ this.canBack = function() { return current > 0; }; /** * Return true if can go forward * * @return Boolen */ this.canForward = function() { return current < history.length - 1; }; /** * Go back * * @return void */ this.back = go; /** * Go forward * * @return void */ this.forward = function() { return go(true); }; // bind to elfinder events fm.bind('init', function() { if (nativeHistory && !nativeHistory.state) { setNativeHistory(fm.startDir()); } }) .open(function() { var l = history.length, cwd = fm.cwd().hash; if (update) { current >= 0 && l > current + 1 && history.splice(current+1); history[history.length-1] != cwd && history.push(cwd); current = history.length - 1; } update = true; setNativeHistory(cwd); }) .reload(fm.options.reloadClearHistory && reset); }; application/library/js/elFinder.command.js000064400000020036147577724760014665 0ustar00/** * elFinder command prototype * * @type elFinder.command * @author Dmitry (dio) Levashov */ elFinder.prototype.command = function(fm) { "use strict"; /** * elFinder instance * * @type elFinder */ this.fm = fm; /** * Command name, same as class name * * @type String */ this.name = ''; /** * Dialog class name * * @type String */ this.dialogClass = ''; /** * Command icon class name with out 'elfinder-button-icon-' * Use this.name if it is empty * * @type String */ this.className = ''; /** * Short command description * * @type String */ this.title = ''; /** * Linked(Child) commands name * They are loaded together when tthis command is loaded. * * @type Array */ this.linkedCmds = []; /** * Current command state * * @example * this.state = -1; // command disabled * this.state = 0; // command enabled * this.state = 1; // command active (for example "fullscreen" command while elfinder in fullscreen mode) * @default -1 * @type Number */ this.state = -1; /** * If true, command can not be disabled by connector. * @see this.update() * * @type Boolen */ this.alwaysEnabled = false; /** * Do not change dirctory on removed current work directory * * @type Boolen */ this.noChangeDirOnRemovedCwd = false; /** * If true, this means command was disabled by connector. * @see this.update() * * @type Boolen */ this._disabled = false; /** * If true, this command is disabled on serach results * * @type Boolean */ this.disableOnSearch = false; /** * Call update() when event select fired * * @type Boolean */ this.updateOnSelect = true; /** * Sync toolbar button title on change * * @type Boolean */ this.syncTitleOnChange = false; /** * Keep display of the context menu when command execution * * @type Boolean */ this.keepContextmenu = false; /** * elFinder events defaults handlers. * Inside handlers "this" is current command object * * @type Object */ this._handlers = { enable : function() { this.update(void(0), this.value); }, disable : function() { this.update(-1, this.value); }, 'open reload load sync' : function() { this._disabled = !(this.alwaysEnabled || this.fm.isCommandEnabled(this.name)); this.update(void(0), this.value); this.change(); } }; /** * elFinder events handlers. * Inside handlers "this" is current command object * * @type Object */ this.handlers = {}; /** * Shortcuts * * @type Array */ this.shortcuts = []; /** * Command options * * @type Object */ this.options = {ui : 'button'}; /** * Callback functions on `change` event * * @type Array */ this.listeners = []; /** * Prepare object - * bind events and shortcuts * * @return void */ this.setup = function(name, opts) { var self = this, fm = this.fm, setCallback = function(s) { var cb = s.callback || function(e) { fm.exec(self.name, void(0), { _userAction: true, _currentType: 'shortcut' }); }; s.callback = function(e) { var enabled, checks = {}; if (self.enabled()) { if (fm.searchStatus.state < 2) { enabled = fm.isCommandEnabled(self.name); } else { $.each(fm.selected(), function(i, h) { if (fm.optionsByHashes[h]) { checks[h] = true; } else { $.each(fm.volOptions, function(id) { if (!checks[id] && h.indexOf(id) === 0) { checks[id] = true; return false; } }); } }); $.each(checks, function(h) { enabled = fm.isCommandEnabled(self.name, h); if (! enabled) { return false; } }); } if (enabled) { self.event = e; cb.call(self); delete self.event; } } }; }, i, s, sc; this.name = name; this.title = fm.messages['cmd'+name] ? fm.i18n('cmd'+name) : ((this.extendsCmd && fm.messages['cmd'+this.extendsCmd]) ? fm.i18n('cmd'+this.extendsCmd) : name); this.options = Object.assign({}, this.options, opts); this.listeners = []; this.dialogClass = 'elfinder-dialog-' + name; if (opts.shortcuts) { if (typeof opts.shortcuts === 'function') { sc = opts.shortcuts(this.fm, this.shortcuts); } else if (Array.isArray(opts.shortcuts)) { sc = opts.shortcuts; } this.shortcuts = sc || []; } if (this.updateOnSelect) { this._handlers.select = function() { this.update(void(0), this.value); }; } $.each(Object.assign({}, self._handlers, self.handlers), function(cmd, handler) { fm.bind(cmd, $.proxy(handler, self)); }); for (i = 0; i < this.shortcuts.length; i++) { s = this.shortcuts[i]; setCallback(s); !s.description && (s.description = this.title); fm.shortcut(s); } if (this.disableOnSearch) { fm.bind('search searchend', function() { self._disabled = this.type === 'search'? true : ! (this.alwaysEnabled || fm.isCommandEnabled(name)); self.update(void(0), self.value); }); } this.init(); }; /** * Command specific init stuffs * * @return void */ this.init = function() {}; /** * Exec command * * @param Array target files hashes * @param Array|Object command value * @return $.Deferred */ this.exec = function(files, opts) { return $.Deferred().reject(); }; this.getUndo = function(opts, resData) { return false; }; /** * Return true if command disabled. * * @return Boolen */ this.disabled = function() { return this.state < 0; }; /** * Return true if command enabled. * * @return Boolen */ this.enabled = function() { return this.state > -1; }; /** * Return true if command active. * * @return Boolen */ this.active = function() { return this.state > 0; }; /** * Return current command state. * Must be overloaded in most commands * * @return Number */ this.getstate = function() { return -1; }; /** * Update command state/value * and rize 'change' event if smth changed * * @param Number new state or undefined to auto update state * @param mixed new value * @return void */ this.update = function(s, v) { var state = this.state, value = this.value; if (this._disabled && this.fm.searchStatus === 0) { this.state = -1; } else { this.state = s !== void(0) ? s : this.getstate(); } this.value = v; if (state != this.state || value != this.value) { this.change(); } }; /** * Bind handler / fire 'change' event. * * @param Function|undefined event callback * @return void */ this.change = function(c) { var cmd, i; if (typeof(c) === 'function') { this.listeners.push(c); } else { for (i = 0; i < this.listeners.length; i++) { cmd = this.listeners[i]; try { cmd(this.state, this.value); } catch (e) { this.fm.debug('error', e); } } } return this; }; /** * With argument check given files hashes and return list of existed files hashes. * Without argument return selected files hashes. * * @param Array|String|void hashes * @return Array */ this.hashes = function(hashes) { return hashes ? $.grep(Array.isArray(hashes) ? hashes : [hashes], function(hash) { return fm.file(hash) ? true : false; }) : fm.selected(); }; /** * Return only existed files from given fils hashes | selected files * * @param Array|String|void hashes * @return Array */ this.files = function(hashes) { var fm = this.fm; return hashes ? $.map(Array.isArray(hashes) ? hashes : [hashes], function(hash) { return fm.file(hash) || null; }) : fm.selectedFiles(); }; /** * Wrapper to fm.dialog() * * @param String|DOMElement content * @param Object options * @return Object jQuery element object */ this.fmDialog = function(content, options) { if (options.cssClass) { options.cssClass += ' ' + this.dialogClass; } else { options.cssClass = this.dialogClass; } return this.fm.dialog(content, options); }; }; application/library/js/elFinder.js000064400001063313147577724760013256 0ustar00/** * @class elFinder - file manager for web * * @author Dmitry (dio) Levashov **/ var elFinder = function(elm, opts, bootCallback) { "use strict"; //this.time('load'); var self = this, /** * Objects array of jQuery.Deferred that calls before elFinder boot up * * @type Array */ dfrdsBeforeBootup = [], /** * Plugin name to check for conflicts with bootstrap etc * * @type Array **/ conflictChecks = ['button', 'tooltip'], /** * Node on which elfinder creating * * @type jQuery **/ node = $(elm), /** * Object of events originally registered in this node * * @type Object */ prevEvents = $.extend(true, {}, $._data(node.get(0), 'events')), /** * Store node contents. * * @see this.destroy * @type jQuery **/ prevContent = $('
      ').append(node.contents()).attr('class', node.attr('class') || '').attr('style', node.attr('style') || ''), /** * Instance ID. Required to get/set cookie * * @type String **/ id = node.attr('id') || node.attr('id', 'elfauto' + $('.elfinder').length).attr('id'), /** * Events namespace * * @type String **/ namespace = 'elfinder-' + id, /** * Mousedown event * * @type String **/ mousedown = 'mousedown.'+namespace, /** * Keydown event * * @type String **/ keydown = 'keydown.'+namespace, /** * Keypress event * * @type String **/ keypress = 'keypress.'+namespace, /** * Keypup event * * @type String **/ keyup = 'keyup.'+namespace, /** * Is shortcuts/commands enabled * * @type Boolean **/ enabled = false, /** * Store enabled value before ajax request * * @type Boolean **/ prevEnabled = false, /** * List of build-in events which mapped into methods with same names * * @type Array **/ events = ['enable', 'disable', 'load', 'open', 'reload', 'select', 'add', 'remove', 'change', 'dblclick', 'getfile', 'lockfiles', 'unlockfiles', 'selectfiles', 'unselectfiles', 'dragstart', 'dragstop', 'search', 'searchend', 'viewchange'], /** * Rules to validate data from backend * * @type Object **/ rules = {}, /** * Current working directory hash * * @type String **/ cwd = '', /** * Current working directory options default * * @type Object **/ cwdOptionsDefault = { path : '', url : '', tmbUrl : '', disabled : [], separator : '/', archives : [], extract : [], copyOverwrite : true, uploadOverwrite : true, uploadMaxSize : 0, jpgQuality : 100, tmbCrop : false, tmbReqCustomData : false, tmb : false // old API }, /** * Current working directory options * * @type Object **/ cwdOptions = {}, /** * Files/dirs cache * * @type Object **/ files = {}, /** * Hidden Files/dirs cache * * @type Object **/ hiddenFiles = {}, /** * Files/dirs hash cache of each dirs * * @type Object **/ ownFiles = {}, /** * Selected files hashes * * @type Array **/ selected = [], /** * Events listeners * * @type Object **/ listeners = {}, /** * Shortcuts * * @type Object **/ shortcuts = {}, /** * Buffer for copied files * * @type Array **/ clipboard = [], /** * Copied/cuted files hashes * Prevent from remove its from cache. * Required for dispaly correct files names in error messages * * @type Object **/ remember = {}, /** * Queue for 'open' requests * * @type Array **/ queue = [], /** * Queue for only cwd requests e.g. `tmb` * * @type Array **/ cwdQueue = [], /** * Commands prototype * * @type Object **/ base = new self.command(self), /** * elFinder node width * * @type String * @default "auto" **/ width = 'auto', /** * elFinder node height * Number: pixcel or String: Number + "%" * * @type Number | String * @default 400 **/ height = 400, /** * Base node object or selector * Element which is the reference of the height percentage * * @type Object|String * @default null | $(window) (if height is percentage) **/ heightBase = null, /** * MIME type list(Associative array) handled as a text file * * @type Object|null */ textMimes = null, /** * elfinder path for sound played on remove * @type String * @default ./sounds/ **/ soundPath = 'sounds/', /** * JSON.stringify of previous fm.sorters * @type String */ prevSorterStr = '', /** * Map table of file extention to MIME-Type * @type Object */ extToMimeTable, /** * Disabled page unload function * @type Boolean */ diableUnloadCheck = false, beeper = $(document.createElement('audio')).hide().appendTo('body')[0], syncInterval, autoSyncStop = 0, uiCmdMapPrev = '', gcJobRes = null, open = function(data) { // NOTES: Do not touch data object var volumeid, contextmenu, emptyDirs = {}, stayDirs = {}, rmClass, hashes, calc, gc, collapsed, prevcwd, sorterStr, diff; if (self.api >= 2.1) { // support volume driver option `uiCmdMap` self.commandMap = (data.options.uiCmdMap && Object.keys(data.options.uiCmdMap).length)? data.options.uiCmdMap : {}; if (uiCmdMapPrev !== JSON.stringify(self.commandMap)) { uiCmdMapPrev = JSON.stringify(self.commandMap); } } else { self.options.sync = 0; } if (data.init) { // init - reset cache files = {}; ownFiles = {}; } else { // remove only files from prev cwd // and collapsed directory (included 100+ directories) to empty for perfomance tune in DnD prevcwd = cwd; rmClass = 'elfinder-subtree-loaded ' + self.res('class', 'navexpand'); collapsed = self.res('class', 'navcollapse'); hashes = Object.keys(files); calc = function(i) { if (!files[i]) { return true; } var isDir = (files[i].mime === 'directory'), phash = files[i].phash, pnav; if ( (!isDir || emptyDirs[phash] || (!stayDirs[phash] && self.navHash2Elm(files[i].hash).is(':hidden') && self.navHash2Elm(phash).next('.elfinder-navbar-subtree').children().length > 100 ) ) && (isDir || phash !== cwd) && ! remember[i] ) { if (isDir && !emptyDirs[phash]) { emptyDirs[phash] = true; self.navHash2Elm(phash) .removeClass(rmClass) .next('.elfinder-navbar-subtree').empty(); } deleteCache(files[i]); } else if (isDir) { stayDirs[phash] = true; } }; gc = function() { if (hashes.length) { gcJobRes && gcJobRes._abort(); gcJobRes = self.asyncJob(calc, hashes, { interval : 20, numPerOnce : 100 }).done(function() { var hd = self.storage('hide') || {items: {}}; if (Object.keys(hiddenFiles).length) { $.each(hiddenFiles, function(h) { if (!hd.items[h]) { delete hiddenFiles[h]; } }); } }); } }; self.trigger('filesgc').one('filesgc', function() { hashes = []; }); self.one('opendone', function() { if (prevcwd !== cwd) { if (! node.data('lazycnt')) { gc(); } else { self.one('lazydone', gc); } } }); } self.sorters = {}; cwd = data.cwd.hash; cache(data.files); if (!files[cwd]) { cache([data.cwd]); } else { diff = self.diff([data.cwd], true); if (diff.changed.length) { cache(diff.changed, 'change'); self.change({changed: diff.changed}); } } data.changed && data.changed.length && cache(data.changed, 'change'); // trigger event 'sorterupdate' sorterStr = JSON.stringify(self.sorters); if (prevSorterStr !== sorterStr) { self.trigger('sorterupdate'); prevSorterStr = sorterStr; } self.lastDir(cwd); self.autoSync(); }, /** * Store info about files/dirs in "files" object. * * @param Array files * @param String data type * @return void **/ cache = function(data, type) { var type = type || 'files', keeps = ['sizeInfo', 'encoding'], defsorter = { name: true, perm: true, date: true, size: true, kind: true }, sorterChk = !self.sorters._checked && (type === 'files'), l = data.length, setSorter = function(file) { var f = file || {}, sorters = []; $.each(self.sortRules, function(key) { if (defsorter[key] || typeof f[key] !== 'undefined' || (key === 'mode' && typeof f.perm !== 'undefined')) { sorters.push(key); } }); self.sorters = self.arrayFlip(sorters, true); self.sorters._checked = true; }, changedParents = {}, hideData = self.storage('hide') || {}, hides = hideData.items || {}, f, i, i1, keepProp, parents, hidden; for (i = 0; i < l; i++) { f = Object.assign({}, data[i]); hidden = (!hideData.show && hides[f.hash])? true : false; if (f.name && f.hash && f.mime) { if (!hidden) { if (sorterChk && f.phash === cwd) { setSorter(f); sorterChk = false; } if (f.phash && (type === 'add' || (type === 'change' && (!files[f.hash] || f.size !== files[f.hash])))) { if (parents = self.parents(f.phash)) { $.each(parents, function() { changedParents[this] = true; }); } } } if (files[f.hash]) { for (i1 =0; i1 < keeps.length; i1++) { if(files[f.hash][keeps[i1]] && ! f[keeps[i1]]) { f[keeps[i1]] = files[f.hash][keeps[i1]]; } } if (f.sizeInfo && !f.size) { f.size = f.sizeInfo.size; } deleteCache(files[f.hash], true); } if (hides[f.hash]) { hiddenFiles[f.hash] = f; } if (hidden) { l--; data.splice(i--, 1); } else { files[f.hash] = f; if (f.mime === 'directory' && !ownFiles[f.hash]) { ownFiles[f.hash] = {}; } if (f.phash) { if (!ownFiles[f.phash]) { ownFiles[f.phash] = {}; } ownFiles[f.phash][f.hash] = true; } } } } // delete sizeInfo cache $.each(Object.keys(changedParents), function() { var target = files[this]; if (target && target.sizeInfo) { delete target.sizeInfo; } }); // for empty folder sorterChk && setSorter(); }, /** * Delete file object from files caches * * @param Array removed hashes * @return void */ remove = function(removed) { var l = removed.length, roots = {}, rm = function(hash) { var file = files[hash], i; if (file) { if (file.mime === 'directory') { if (roots[hash]) { delete self.roots[roots[hash]]; } // restore stats of deleted root parent directory $.each(self.leafRoots, function(phash, roots) { var idx, pdir; if ((idx = $.inArray(hash, roots))!== -1) { if (roots.length === 1) { if ((pdir = Object.assign({}, files[phash])) && pdir._realStats) { $.each(pdir._realStats, function(k, v) { pdir[k] = v; }); remove(files[phash]._realStats); self.change({ changed: [pdir] }); } delete self.leafRoots[phash]; } else { self.leafRoots[phash].splice(idx, 1); } } }); if (self.searchStatus.state < 2) { $.each(files, function(h, f) { f.phash == hash && rm(h); }); } } if (file.phash) { if (parents = self.parents(file.phash)) { $.each(parents, function() { changedParents[this] = true; }); } } deleteCache(files[hash]); } }, changedParents = {}, parents; $.each(self.roots, function(k, v) { roots[v] = k; }); while (l--) { rm(removed[l]); } // delete sizeInfo cache $.each(Object.keys(changedParents), function() { var target = files[this]; if (target && target.sizeInfo) { delete target.sizeInfo; } }); }, /** * Update file object in files caches * * @param Array changed file objects * @return void * @deprecated should be use `cache(updatesArrayData, 'change');` */ change = function(changed) { $.each(changed, function(i, file) { var hash = file.hash; if (files[hash]) { $.each(Object.keys(files[hash]), function(i, v){ if (typeof file[v] === 'undefined') { delete files[hash][v]; } }); } files[hash] = files[hash] ? Object.assign(files[hash], file) : file; }); }, /** * Delete cache data of files, ownFiles and self.optionsByHashes * * @param Object file * @param Boolean update * @return void */ deleteCache = function(file, update) { var hash = file.hash, phash = file.phash; if (phash && ownFiles[phash]) { delete ownFiles[phash][hash]; } if (!update) { ownFiles[hash] && delete ownFiles[hash]; self.optionsByHashes[hash] && delete self.optionsByHashes[hash]; } delete files[hash]; }, /** * Maximum number of concurrent connections on request * * @type Number */ requestMaxConn, /** * Current number of connections * * @type Number */ requestCnt = 0, /** * Queue waiting for connection * * @type Array */ requestQueue = [], /** * Current open command instance * * @type Object */ currentOpenCmd = null, /** * Exec shortcut * * @param jQuery.Event keydown/keypress event * @return void */ execShortcut = function(e) { var code = e.keyCode, ctrlKey = !!(e.ctrlKey || e.metaKey), isMousedown = e.type === 'mousedown', ddm; !isMousedown && (self.keyState.keyCode = code); self.keyState.ctrlKey = ctrlKey; self.keyState.shiftKey = e.shiftKey; self.keyState.metaKey = e.metaKey; self.keyState.altKey = e.altKey; if (isMousedown) { return; } else if (e.type === 'keyup') { self.keyState.keyCode = null; return; } if (enabled) { $.each(shortcuts, function(i, shortcut) { if (shortcut.type == e.type && shortcut.keyCode == code && shortcut.shiftKey == e.shiftKey && shortcut.ctrlKey == ctrlKey && shortcut.altKey == e.altKey) { e.preventDefault(); e.stopPropagation(); shortcut.callback(e, self); self.debug('shortcut-exec', i+' : '+shortcut.description); } }); // prevent tab out of elfinder if (code == $.ui.keyCode.TAB && !$(e.target).is(':input')) { e.preventDefault(); } // cancel any actions by [Esc] key if (e.type === 'keydown' && code == $.ui.keyCode.ESCAPE) { // copy or cut if (! node.find('.ui-widget:visible').length) { self.clipboard().length && self.clipboard([]); } // dragging if ($.ui.ddmanager) { ddm = $.ui.ddmanager.current; ddm && ddm.helper && ddm.cancel(); } // button menus self.toHide(node.find('.ui-widget.elfinder-button-menu.elfinder-frontmost:visible')); // trigger keydownEsc self.trigger('keydownEsc', e); } } }, date = new Date(), utc, i18n, inFrame = (window.parent !== window), parentIframe = (function() { var pifm, ifms; if (inFrame) { try { ifms = $('iframe', window.parent.document); if (ifms.length) { $.each(ifms, function(i, ifm) { if (ifm.contentWindow === window) { pifm = $(ifm); return false; } }); } } catch(e) {} } return pifm; })(), /** * elFinder boot up function * * @type Function */ bootUp, /** * Original function of XMLHttpRequest.prototype.send * * @type Function */ savedXhrSend; // opts must be an object if (!opts) { opts = {}; } // set UA.Angle, UA.Rotated for mobile devices if (self.UA.Mobile) { $(window).on('orientationchange.'+namespace, function() { var a = ((screen && screen.orientation && screen.orientation.angle) || window.orientation || 0) + 0; if (a === -90) { a = 270; } self.UA.Angle = a; self.UA.Rotated = a % 180 === 0? false : true; }).trigger('orientationchange.'+namespace); } // check opt.bootCallback if (opts.bootCallback && typeof opts.bootCallback === 'function') { (function() { var func = bootCallback, opFunc = opts.bootCallback; bootCallback = function(fm, extraObj) { func && typeof func === 'function' && func.call(this, fm, extraObj); opFunc.call(this, fm, extraObj); }; })(); } delete opts.bootCallback; /** * Protocol version * * @type String **/ this.api = null; /** * elFinder use new api * * @type Boolean **/ this.newAPI = false; /** * elFinder use old api * * @type Boolean **/ this.oldAPI = false; /** * Net drivers names * * @type Array **/ this.netDrivers = []; /** * Base URL of elfFinder library starting from Manager HTML * * @type String */ this.baseUrl = ''; /** * Base URL of i18n js files * baseUrl + "js/i18n/" when empty value * * @type String */ this.i18nBaseUrl = ''; /** * Base URL of worker js files * baseUrl + "js/worker/" when empty value * * @type String */ this.workerBaseUrl = ''; /** * Is elFinder CSS loaded * * @type Boolean */ this.cssloaded = false; /** * Current theme object * * @type Object|Null */ this.theme = null; this.mimesCanMakeEmpty = {}; /** * Callback function at boot up that option specified at elFinder starting * * @type Function */ this.bootCallback; /** * Callback function at reload(restart) elFinder * * @type Function */ this.reloadCallback; /** * ID. Required to create unique cookie name * * @type String **/ this.id = id; /** * Method to store/fetch data * * @type Function **/ this.storage = (function() { try { if ('localStorage' in window && window.localStorage !== null) { if (self.UA.Safari) { // check for Mac/iOS safari private browsing mode window.localStorage.setItem('elfstoragecheck', 1); window.localStorage.removeItem('elfstoragecheck'); } return self.localStorage; } else { return self.cookie; } } catch (e) { return self.cookie; } })(); /** * Set pause page unload check function or Get state * * @param Boolean state To set state * @param Boolean keep Keep disabled * @return Boolean|void */ this.pauseUnloadCheck = function(state, keep) { if (typeof state === 'undefined') { return diableUnloadCheck; } else { diableUnloadCheck = !!state; if (state && !keep) { requestAnimationFrame(function() { diableUnloadCheck = false; }); } } }; /** * Configuration options * * @type Object **/ //this.options = $.extend(true, {}, this._options, opts); this.options = Object.assign({}, this._options); // for old type configuration if (opts.uiOptions) { if (opts.uiOptions.toolbar && Array.isArray(opts.uiOptions.toolbar)) { if ($.isPlainObject(opts.uiOptions.toolbar[opts.uiOptions.toolbar.length - 1])) { self.options.uiOptions.toolbarExtra = Object.assign(self.options.uiOptions.toolbarExtra || {}, opts.uiOptions.toolbar.pop()); } } } // Overwrite if opts value is an array (function() { var arrOv = function(obj, base) { if ($.isPlainObject(obj)) { $.each(obj, function(k, v) { if ($.isPlainObject(v)) { if (!base[k]) { base[k] = {}; } arrOv(v, base[k]); } else { base[k] = v; } }); } }; arrOv(opts, self.options); })(); // join toolbarExtra to toolbar this.options.uiOptions.toolbar.push(this.options.uiOptions.toolbarExtra); delete this.options.uiOptions.toolbarExtra; /** * Arrays that has to unbind events * * @type Object */ this.toUnbindEvents = {}; /** * Attach listener to events * To bind to multiply events at once, separate events names by space * * @param String event(s) name(s) * @param Object event handler or {done: handler} * @param Boolean priority first * @return elFinder */ this.bind = function(event, callback, priorityFirst) { var i, len; if (callback && (typeof callback === 'function' || typeof callback.done === 'function')) { event = ('' + event).toLowerCase().replace(/^\s+|\s+$/g, '').split(/\s+/); len = event.length; for (i = 0; i < len; i++) { if (listeners[event[i]] === void(0)) { listeners[event[i]] = []; } listeners[event[i]][priorityFirst? 'unshift' : 'push'](callback); } } return this; }; /** * Remove event listener if exists * To un-bind to multiply events at once, separate events names by space * * @param String event(s) name(s) * @param Function callback * @return elFinder */ this.unbind = function(event, callback) { var i, len, l, ci; event = ('' + event).toLowerCase().split(/\s+/); len = event.length; for (i = 0; i < len; i++) { if (l = listeners[event[i]]) { ci = $.inArray(callback, l); ci > -1 && l.splice(ci, 1); } } callback = null; return this; }; /** * Fire event - send notification to all event listeners * In the callback `this` becames an event object * * @param String event type * @param Object data to send across event * @param Boolean allow modify data (call by reference of data) default: true * @return elFinder */ this.trigger = function(evType, data, allowModify) { var type = evType.toLowerCase(), isopen = (type === 'open'), dataIsObj = (typeof data === 'object'), handlers = listeners[type] || [], dones = [], i, l, jst, event; this.debug('event-'+type, data); if (! dataIsObj || typeof allowModify === 'undefined') { allowModify = true; } if (l = handlers.length) { event = $.Event(type); if (data) { data._getEvent = function() { return event; }; } if (allowModify) { event.data = data; } for (i = 0; i < l; i++) { if (! handlers[i]) { // probably un-binded this handler continue; } // handler is $.Deferred(), call all functions upon completion if (handlers[i].done) { dones.push(handlers[i].done); continue; } // set `event.data` only callback has argument if (handlers[i].length) { if (!allowModify) { // to avoid data modifications. remember about "sharing" passing arguments in js :) if (typeof jst === 'undefined') { try { jst = JSON.stringify(data); } catch(e) { jst = false; } } event.data = jst? JSON.parse(jst) : data; } } try { if (handlers[i].call(event, event, this) === false || event.isDefaultPrevented()) { this.debug('event-stoped', event.type); break; } } catch (ex) { window.console && window.console.log && window.console.log(ex); } } // call done functions if (l = dones.length) { for (i = 0; i < l; i++) { try { if (dones[i].call(event, event, this) === false || event.isDefaultPrevented()) { this.debug('event-stoped', event.type + '(done)'); break; } } catch (ex) { window.console && window.console.log && window.console.log(ex); } } } if (this.toUnbindEvents[type] && this.toUnbindEvents[type].length) { $.each(this.toUnbindEvents[type], function(i, v) { self.unbind(v.type, v.callback); }); delete this.toUnbindEvents[type]; } } return this; }; /** * Get event listeners * * @param String event type * @return Array listed event functions */ this.getListeners = function(event) { return event? listeners[event.toLowerCase()] : listeners; }; // set fm.baseUrl this.baseUrl = (function() { var myTag, base, baseUrl; if (self.options.baseUrl) { return self.options.baseUrl; } else { baseUrl = ''; myTag = null; $('head > script').each(function() { if (this.src && this.src.match(/js\/elfinder(?:-[a-z0-9_-]+)?\.(?:min|full)\.js(?:$|\?)/i)) { myTag = $(this); return false; } }); if (myTag) { baseUrl = myTag.attr('src').replace(/js\/[^\/]+$/, ''); if (! baseUrl.match(/^(https?\/\/|\/)/)) { // check tag if (base = $('head > base[href]').attr('href')) { baseUrl = base.replace(/\/$/, '') + '/' + baseUrl; } } } if (baseUrl !== '') { self.options.baseUrl = baseUrl; } else { if (! self.options.baseUrl) { self.options.baseUrl = './'; } baseUrl = self.options.baseUrl; } return baseUrl; } })(); this.i18nBaseUrl = (this.options.i18nBaseUrl || this.baseUrl + 'js/i18n').replace(/\/$/, '') + '/'; this.workerBaseUrl = (this.options.workerBaseUrl || this.baseUrl + 'js/worker').replace(/\/$/, '') + '/'; this.options.maxErrorDialogs = Math.max(1, parseInt(this.options.maxErrorDialogs || 5)); // set dispInlineRegex cwdOptionsDefault.dispInlineRegex = this.options.dispInlineRegex; // auto load required CSS if (this.options.cssAutoLoad) { (function() { var baseUrl = self.baseUrl, myCss = $('head > link[href$="css/elfinder.min.css"],link[href$="css/elfinder.full.css"]:first').length, rmTag = function() { if (node.data('cssautoloadHide')) { node.data('cssautoloadHide').remove(); node.removeData('cssautoloadHide'); } }, loaded = function() { if (!self.cssloaded) { rmTag(); self.cssloaded = true; self.trigger('cssloaded'); } }; if (! myCss) { // to request CSS auto loading self.cssloaded = null; } // additional CSS files if (Array.isArray(self.options.cssAutoLoad)) { if (!self.options.themes.default) { // set as default theme self.options.themes = Object.assign({ 'default' : { 'name': 'default', 'cssurls': self.options.cssAutoLoad } }, self.options.themes); if (!self.options.theme) { self.options.theme = 'default'; } } else { if (self.cssloaded === true) { self.loadCss(self.options.cssAutoLoad); } else { self.bind('cssloaded', function() { self.loadCss(self.options.cssAutoLoad); }); } } } // try to load main css if (self.cssloaded === null) { // hide elFinder node while css loading node.addClass('elfinder') .data('cssautoloadHide', $('')); $('head').append(node.data('cssautoloadHide')); // set default theme if (!self.options.themes.default) { self.options.themes = Object.assign({ 'default' : { 'name': 'default', 'cssurls': 'css/theme.css', 'author': 'elFinder Project', 'license': '3-clauses BSD' } }, self.options.themes); if (!self.options.theme) { self.options.theme = 'default'; } } // Delay 'visibility' check it required for browsers such as Safari requestAnimationFrame(function() { if (node.css('visibility') === 'hidden') { // load CSS self.loadCss([baseUrl+'css/elfinder.min.css'], { dfd: $.Deferred().done(function() { loaded(); }).fail(function() { rmTag(); if (!self.cssloaded) { self.cssloaded = false; self.bind('init', function() { if (!self.cssloaded) { self.error(['errRead', 'CSS (elfinder.min)']); } }); } }) }); } else { loaded(); } }); } })(); } // load theme if exists (function() { var theme, themes = self.options.themes, ids = Object.keys(themes || {}); if (ids.length) { theme = self.storage('theme') || self.options.theme; if (!themes[theme]) { theme = ids[0]; } if (self.cssloaded) { self.changeTheme(theme); } else { self.bind('cssloaded', function() { self.changeTheme(theme); }); } } })(); /** * Volume option to set the properties of the root Stat * * @type Object */ this.optionProperties = { icon: void(0), csscls: void(0), tmbUrl: void(0), uiCmdMap: {}, netkey: void(0), disabled: [] }; if (! inFrame && ! this.options.enableAlways && $('body').children().length === 2) { // only node and beeper this.options.enableAlways = true; } // make options.debug if (this.options.debug === true) { this.options.debug = 'all'; } else if (Array.isArray(this.options.debug)) { (function() { var d = {}; $.each(self.options.debug, function() { d[this] = true; }); self.options.debug = d; })(); } else { this.options.debug = false; } /** * Original functions evacuated by conflict check * * @type Object */ this.noConflicts = {}; /** * Check and save conflicts with bootstrap etc * * @type Function */ this.noConflict = function() { $.each(conflictChecks, function(i, p) { if ($.fn[p] && typeof $.fn[p].noConflict === 'function') { self.noConflicts[p] = $.fn[p].noConflict(); } }); }; // do check conflict this.noConflict(); /** * Is elFinder over CORS * * @type Boolean **/ this.isCORS = false; // configure for CORS (function(){ if (typeof self.options.cors !== 'undefined' && self.options.cors !== null) { self.isCORS = self.options.cors? true : false; } else { var parseUrl = document.createElement('a'), parseUploadUrl, selfProtocol = window.location.protocol, portReg = function(protocol) { protocol = (!protocol || protocol === ':')? selfProtocol : protocol; return protocol === 'https:'? /\:443$/ : /\:80$/; }, selfHost = window.location.host.replace(portReg(selfProtocol), ''); parseUrl.href = opts.url; if (opts.urlUpload && (opts.urlUpload !== opts.url)) { parseUploadUrl = document.createElement('a'); parseUploadUrl.href = opts.urlUpload; } if (selfHost !== parseUrl.host.replace(portReg(parseUrl.protocol), '') || (parseUrl.protocol !== ':'&& parseUrl.protocol !== '' && (selfProtocol !== parseUrl.protocol)) || (parseUploadUrl && (selfHost !== parseUploadUrl.host.replace(portReg(parseUploadUrl.protocol), '') || (parseUploadUrl.protocol !== ':' && parseUploadUrl.protocol !== '' && (selfProtocol !== parseUploadUrl.protocol)) ) ) ) { self.isCORS = true; } } if (self.isCORS) { if (!$.isPlainObject(self.options.customHeaders)) { self.options.customHeaders = {}; } if (!$.isPlainObject(self.options.xhrFields)) { self.options.xhrFields = {}; } self.options.requestType = 'post'; self.options.customHeaders['X-Requested-With'] = 'XMLHttpRequest'; self.options.xhrFields['withCredentials'] = true; } })(); /** * Ajax request type * * @type String * @default "get" **/ this.requestType = /^(get|post)$/i.test(this.options.requestType) ? this.options.requestType.toLowerCase() : 'get'; // set `requestMaxConn` by option requestMaxConn = Math.max(parseInt(this.options.requestMaxConn), 1); /** * Custom data that given as options * * @type Object * @default {} */ this.optsCustomData = $.isPlainObject(this.options.customData) ? this.options.customData : {}; /** * Any data to send across every ajax request * * @type Object * @default {} **/ this.customData = Object.assign({}, this.optsCustomData); /** * Previous custom data from connector * * @type Object|null */ this.prevCustomData = null; /** * Any custom headers to send across every ajax request * * @type Object * @default {} */ this.customHeaders = $.isPlainObject(this.options.customHeaders) ? this.options.customHeaders : {}; /** * Any custom xhrFields to send across every ajax request * * @type Object * @default {} */ this.xhrFields = $.isPlainObject(this.options.xhrFields) ? this.options.xhrFields : {}; /** * Replace XMLHttpRequest.prototype.send to extended function for 3rd party libs XHR request etc. * * @type Function */ this.replaceXhrSend = function() { if (! savedXhrSend) { savedXhrSend = XMLHttpRequest.prototype.send; } XMLHttpRequest.prototype.send = function() { var xhr = this; // set request headers if (self.customHeaders) { $.each(self.customHeaders, function(key) { xhr.setRequestHeader(key, this); }); } // set xhrFields if (self.xhrFields) { $.each(self.xhrFields, function(key) { if (key in xhr) { xhr[key] = this; } }); } return savedXhrSend.apply(this, arguments); }; }; /** * Restore saved original XMLHttpRequest.prototype.send * * @type Function */ this.restoreXhrSend = function() { savedXhrSend && (XMLHttpRequest.prototype.send = savedXhrSend); }; /** * command names for into queue for only cwd requests * these commands aborts before `open` request * * @type Array * @default ['tmb', 'parents'] */ this.abortCmdsOnOpen = this.options.abortCmdsOnOpen || ['tmb', 'parents']; /** * ui.nav id prefix * * @type String */ this.navPrefix = 'nav' + (elFinder.prototype.uniqueid? elFinder.prototype.uniqueid : '') + '-'; /** * ui.cwd id prefix * * @type String */ this.cwdPrefix = elFinder.prototype.uniqueid? ('cwd' + elFinder.prototype.uniqueid + '-') : ''; // Increment elFinder.prototype.uniqueid ++elFinder.prototype.uniqueid; /** * URL to upload files * * @type String **/ this.uploadURL = opts.urlUpload || opts.url; /** * Events namespace * * @type String **/ this.namespace = namespace; /** * Today timestamp * * @type Number **/ this.today = (new Date(date.getFullYear(), date.getMonth(), date.getDate())).getTime()/1000; /** * Yesterday timestamp * * @type Number **/ this.yesterday = this.today - 86400; utc = this.options.UTCDate ? 'UTC' : ''; this.getHours = 'get'+utc+'Hours'; this.getMinutes = 'get'+utc+'Minutes'; this.getSeconds = 'get'+utc+'Seconds'; this.getDate = 'get'+utc+'Date'; this.getDay = 'get'+utc+'Day'; this.getMonth = 'get'+utc+'Month'; this.getFullYear = 'get'+utc+'FullYear'; /** * elFinder node z-index (auto detect on elFinder load) * * @type null | Number **/ this.zIndex; /** * Current search status * * @type Object */ this.searchStatus = { state : 0, // 0: search ended, 1: search started, 2: in search result query : '', target : '', mime : '', mixed : false, // in multi volumes search: false or Array that target volume ids ininc : false // in incremental search }; /** * Interface language * * @type String * @default "en" **/ this.lang = this.storage('lang') || this.options.lang; if (this.lang === 'jp') { this.lang = this.options.lang = 'ja'; } this.viewType = this.storage('view') || this.options.defaultView || 'icons'; this.sortType = this.storage('sortType') || this.options.sortType || 'name'; this.sortOrder = this.storage('sortOrder') || this.options.sortOrder || 'asc'; this.sortStickFolders = this.storage('sortStickFolders'); if (this.sortStickFolders === null) { this.sortStickFolders = !!this.options.sortStickFolders; } else { this.sortStickFolders = !!this.sortStickFolders; } this.sortAlsoTreeview = this.storage('sortAlsoTreeview'); if (this.sortAlsoTreeview === null || this.options.sortAlsoTreeview === null) { this.sortAlsoTreeview = !!this.options.sortAlsoTreeview; } else { this.sortAlsoTreeview = !!this.sortAlsoTreeview; } this.sortRules = $.extend(true, {}, this._sortRules, this.options.sortRules); $.each(this.sortRules, function(name, method) { if (typeof method != 'function') { delete self.sortRules[name]; } }); this.compare = $.proxy(this.compare, this); /** * Delay in ms before open notification dialog * * @type Number * @default 500 **/ this.notifyDelay = this.options.notifyDelay > 0 ? parseInt(this.options.notifyDelay) : 500; /** * Dragging UI Helper object * * @type jQuery | null **/ this.draggingUiHelper = null; /** * Base droppable options * * @type Object **/ this.droppable = { greedy : true, tolerance : 'pointer', accept : '.elfinder-cwd-file-wrapper,.elfinder-navbar-dir,.elfinder-cwd-file,.elfinder-cwd-filename', hoverClass : this.res('class', 'adroppable'), classes : { // Deprecated hoverClass jQueryUI>=1.12.0 'ui-droppable-hover': this.res('class', 'adroppable') }, autoDisable: true, // elFinder original, see jquery.elfinder.js drop : function(e, ui) { var dst = $(this), targets = $.grep(ui.helper.data('files')||[], function(h) { return h? true : false; }), result = [], dups = [], faults = [], isCopy = ui.helper.hasClass('elfinder-drag-helper-plus'), c = 'class', cnt, hash, i, h; if (typeof e.button === 'undefined' || ui.helper.data('namespace') !== namespace || ! self.insideWorkzone(e.pageX, e.pageY)) { return false; } if (dst.hasClass(self.res(c, 'cwdfile'))) { hash = self.cwdId2Hash(dst.attr('id')); } else if (dst.hasClass(self.res(c, 'navdir'))) { hash = self.navId2Hash(dst.attr('id')); } else { hash = cwd; } cnt = targets.length; while (cnt--) { h = targets[cnt]; // ignore drop into itself or in own location if (h != hash && files[h].phash != hash) { result.push(h); } else { ((isCopy && h !== hash && files[hash].write)? dups : faults).push(h); } } if (faults.length) { return false; } ui.helper.data('droped', true); if (dups.length) { ui.helper.hide(); self.exec('duplicate', dups, {_userAction: true}); } if (result.length) { ui.helper.hide(); self.clipboard(result, !isCopy); self.exec('paste', hash, {_userAction: true}, hash).always(function(){ self.clipboard([]); self.trigger('unlockfiles', {files : targets}); }); self.trigger('drop', {files : targets}); } } }; /** * Return true if filemanager is active * * @return Boolean **/ this.enabled = function() { return enabled && this.visible(); }; /** * Return true if filemanager is visible * * @return Boolean **/ this.visible = function() { return node[0].elfinder && node.is(':visible'); }; /** * Return file is root? * * @param Object target file object * @return Boolean */ this.isRoot = function(file) { return (file.isroot || ! file.phash)? true : false; }; /** * Return root dir hash for current working directory * * @param String target hash * @param Boolean include fake parent (optional) * @return String */ this.root = function(hash, fake) { hash = hash || cwd; var dir, i; if (! fake) { $.each(self.roots, function(id, rhash) { if (hash.indexOf(id) === 0) { dir = rhash; return false; } }); if (dir) { return dir; } } dir = files[hash]; while (dir && dir.phash && (fake || ! dir.isroot)) { dir = files[dir.phash]; } if (dir) { return dir.hash; } while (i in files && files.hasOwnProperty(i)) { dir = files[i]; if (dir.mime === 'directory' && !dir.phash && dir.read) { return dir.hash; } } return ''; }; /** * Return current working directory info * * @return Object */ this.cwd = function() { return files[cwd] || {}; }; /** * Return required cwd option * * @param String option name * @param String target hash (optional) * @return mixed */ this.option = function(name, target) { var res, item; target = target || cwd; if (self.optionsByHashes[target] && typeof self.optionsByHashes[target][name] !== 'undefined') { return self.optionsByHashes[target][name]; } if (self.hasVolOptions && cwd !== target && (!(item = self.file(target)) || item.phash !== cwd)) { res = ''; $.each(self.volOptions, function(id, opt) { if (target.indexOf(id) === 0) { res = opt[name] || ''; return false; } }); return res; } else { return cwdOptions[name] || ''; } }; /** * Return disabled commands by each folder * * @param Array target hashes * @return Array */ this.getDisabledCmds = function(targets, flip) { var disabled = {'hidden': true}; if (! Array.isArray(targets)) { targets = [ targets ]; } $.each(targets, function(i, h) { var disCmds = self.option('disabledFlip', h); if (disCmds) { Object.assign(disabled, disCmds); } }); return flip? disabled : Object.keys(disabled); }; /** * Return file data from current dir or tree by it's hash * * @param String file hash * @return Object */ this.file = function(hash, alsoHidden) { return hash? (files[hash] || (alsoHidden? hiddenFiles[hash] : void(0))) : void(0); }; /** * Return all cached files * * @param String parent hash * @return Object */ this.files = function(phash) { var items = {}; if (phash) { if (!ownFiles[phash]) { return {}; } $.each(ownFiles[phash], function(h) { if (files[h]) { items[h] = files[h]; } else { delete ownFiles[phash][h]; } }); return Object.assign({}, items); } return Object.assign({}, files); }; /** * Return list of file parents hashes include file hash * * @param String file hash * @return Array */ this.parents = function(hash) { var parents = [], dir; while (hash && (dir = this.file(hash))) { parents.unshift(dir.hash); hash = dir.phash; } return parents; }; this.path2array = function(hash, i18) { var file, path = []; while (hash) { if ((file = files[hash]) && file.hash) { path.unshift(i18 && file.i18 ? file.i18 : file.name); hash = file.isroot? null : file.phash; } else { path = []; break; } } return path; }; /** * Return file path or Get path async with jQuery.Deferred * * @param Object file * @param Boolean i18 * @param Object asyncOpt * @return String|jQuery.Deferred */ this.path = function(hash, i18, asyncOpt) { var path = files[hash] && files[hash].path ? files[hash].path : this.path2array(hash, i18).join(cwdOptions.separator); if (! asyncOpt || ! files[hash]) { return path; } else { asyncOpt = Object.assign({notify: {type : 'parents', cnt : 1, hideCnt : true}}, asyncOpt); var dfd = $.Deferred(), notify = asyncOpt.notify, noreq = false, req = function() { self.request({ data : {cmd : 'parents', target : files[hash].phash}, notify : notify, preventFail : true }) .done(done) .fail(function() { dfd.reject(); }); }, done = function() { self.one('parentsdone', function() { path = self.path(hash, i18); if (path === '' && noreq) { //retry with request noreq = false; req(); } else { if (notify) { clearTimeout(ntftm); notify.cnt = -(parseInt(notify.cnt || 0)); self.notify(notify); } dfd.resolve(path); } }); }, ntftm; if (path) { return dfd.resolve(path); } else { if (self.ui['tree']) { // try as no request if (notify) { ntftm = setTimeout(function() { self.notify(notify); }, self.notifyDelay); } noreq = true; done(true); } else { req(); } return dfd; } } }; /** * Return file url if set * * @param String file hash * @param Object Options * @return String|Object of jQuery Deferred */ this.url = function(hash, o) { var file = files[hash], opts = o || {}, async = opts.async || false, temp = opts.temporary || false, onetm = (opts.onetime && self.option('onetimeUrl', hash)) || false, absurl = opts.absurl || false, dfrd = (async || onetm)? $.Deferred() : null, filter = function(url) { if (url && absurl) { url = self.convAbsUrl(url); } return url; }, getUrl = function(url) { if (url) { return filter(url); } if (file.url) { return filter(file.url); } if (typeof baseUrl === 'undefined') { baseUrl = getBaseUrl(); } if (baseUrl) { return filter(baseUrl + $.map(self.path2array(hash), function(n) { return encodeURIComponent(n); }).slice(1).join('/')); } var params = Object.assign({}, self.customData, { cmd: 'file', target: file.hash }); if (self.oldAPI) { params.cmd = 'open'; params.current = file.phash; } return filter(self.options.url + (self.options.url.indexOf('?') === -1 ? '?' : '&') + $.param(params, true)); }, getBaseUrl = function() { return self.option('url', (!self.isRoot(file) && file.phash) || file.hash); }, baseUrl, res; if (!file || !file.read) { return async? dfrd.resolve('') : ''; } if (onetm && (!file.url || file.url == '1') && !(baseUrl = getBaseUrl())) { async = true; this.request({ data : { cmd : 'url', target : hash, options : { onetime: 1 } }, preventDefault : true, options: {async: async}, notify: {type : 'file', cnt : 1, hideCnt : true}, progressBar: opts.progressBar }).done(function(data) { dfrd.resolve(filter(data.url || '')); }).fail(function() { dfrd.resolve(''); }); } else { if (file.url == '1' || (temp && !file.url && !(baseUrl = getBaseUrl()))) { this.request({ data : { cmd : 'url', target : hash, options : { temporary: temp? 1 : 0 } }, preventDefault : true, options: {async: async}, notify: async? {type : temp? 'file' : 'url', cnt : 1, hideCnt : true} : {}, progressBar: opts.progressBar }) .done(function(data) { file.url = data.url || ''; }) .fail(function() { file.url = ''; }) .always(function() { var url; if (file.url && temp) { url = file.url; file.url = '1'; // restore } if (async) { dfrd.resolve(getUrl(url)); } else { return getUrl(url); } }); } else { if (async) { dfrd.resolve(getUrl()); } else { return getUrl(); } } } if (async) { return dfrd; } }; /** * Return file url for the extarnal service * * @param String hash The hash * @param Object options The options * @return Object jQuery Deferred */ this.forExternalUrl = function(hash, options) { var onetime = self.option('onetimeUrl', hash), opts = { async: true, absurl: true }; opts[onetime? 'onetime' : 'temporary'] = true; return self.url(hash, Object.assign({}, options, opts)); }; /** * Return file url for open in elFinder * * @param String file hash * @param Boolean for download link * @param Object requestOpts The request options * @return String */ this.openUrl = function(hash, download, callback, requestOpts) { var file = files[hash], url = '', onetimeSize = (requestOpts || {}).onetimeSize || (5 * 1024 * 1024); if (!file || !file.read) { return ''; } if (!download || download === 'sameorigin') { if (file.url) { if (file.url != 1) { url = file.url; } } else if (cwdOptions.url && file.hash.indexOf(self.cwd().volumeid) === 0) { url = cwdOptions.url + $.map(this.path2array(hash), function(n) { return encodeURIComponent(n); }).slice(1).join('/'); } if (!download || this.isSameOrigin(url)) { if (url) { url += (url.match(/\?/)? '&' : '?') + '_'.repeat((url.match(/[\?&](_+)t=/g) || ['&t=']).sort().shift().match(/[\?&](_*)t=/)[1].length + 1) + 't=' + (file.ts || parseInt(+new Date()/1000)); if (callback) { callback(url); return; } else { return url; } } } } if (callback && this.hasParrotHeaders()) { if (!requestOpts) { requestOpts = {}; } else { delete requestOpts.onetimeSize; } if (!requestOpts.onetime && !requestOpts.temporary && file.size > onetimeSize) { if (file.mime.match(/^video|audio/)) { requestOpts.temporary = true; } else { requestOpts.onetime = true; } } if (requestOpts.onetime || requestOpts.temporary) { return this.url(file.hash, Object.assign({ async: true }, requestOpts)).done(function(url) { callback(url); }).fail(function() { callback(''); }); } else { return this.getContents(hash, 'blob', requestOpts).done(function(blob){ url = (window.URL || window.webkitURL).createObjectURL(blob); callback(url); }).fail(function() { callback(''); }); } } else { url = this.options.url; url = url + (url.indexOf('?') === -1 ? '?' : '&') + (this.oldAPI ? 'cmd=open¤t='+file.phash : 'cmd=file') + '&target=' + file.hash + '&_t=' + (file.ts || parseInt(+new Date()/1000)); if (download === true) { url += '&download=1'; } $.each(this.customData, function(key, val) { url += '&' + encodeURIComponent(key) + '=' + encodeURIComponent(val); }); if (callback) { callback(url); return; } else { return url; } } }; /** * Return thumbnail url * * @param Object file object * @return String */ this.tmb = function(file) { var tmbUrl, tmbCrop, cls = 'elfinder-cwd-bgurl', url = '', cData = {}, n = 0; if ($.isPlainObject(file)) { if (self.searchStatus.state && file.hash.indexOf(self.cwd().volumeid) !== 0) { tmbUrl = self.option('tmbUrl', file.hash); tmbCrop = self.option('tmbCrop', file.hash); } else { tmbUrl = cwdOptions.tmbUrl; tmbCrop = cwdOptions.tmbCrop; } if (tmbCrop) { cls += ' elfinder-cwd-bgurl-crop'; } if (tmbUrl === 'self' && file.mime.indexOf('image/') === 0) { url = self.openUrl(file.hash); cls += ' elfinder-cwd-bgself'; } else if ((self.oldAPI || tmbUrl) && file && file.tmb && file.tmb != 1) { url = tmbUrl + file.tmb; } else if (self.newAPI && file && file.tmb && file.tmb != 1) { url = file.tmb; } if (url) { if (tmbUrl !== 'self') { if (file.ts) { cData._t = file.ts; } if (cwdOptions.tmbReqCustomData && Object.keys(this.customData).length) { cData = Object.assign(cData, this.customData); } if (Object.keys(cData).length) { url += (url.match(/\?/) ? '&' : '?'); $.each(cData, function (key, val) { url += ((n++ === 0)? '' : '&') + encodeURIComponent(key) + '=' + encodeURIComponent(val); }); } } return { url: url, className: cls }; } } return false; }; /** * Return selected files hashes * * @return Array **/ this.selected = function() { return selected.slice(0); }; /** * Return selected files info * * @return Array */ this.selectedFiles = function() { return $.map(selected, function(hash) { return files[hash] ? Object.assign({}, files[hash]) : null; }); }; /** * Return true if file with required name existsin required folder * * @param String file name * @param String parent folder hash * @return Boolean */ this.fileByName = function(name, phash) { var hash; for (hash in files) { if (files.hasOwnProperty(hash) && files[hash].phash == phash && files[hash].name == name) { return files[hash]; } } }; /** * Valid data for required command based on rules * * @param String command name * @param Object cammand's data * @return Boolean */ this.validResponse = function(cmd, data) { return data.error || this.rules[this.rules[cmd] ? cmd : 'defaults'](data); }; /** * Return bytes from ini formated size * * @param String ini formated size * @return Integer */ this.returnBytes = function(val) { var last; if (isNaN(val)) { if (! val) { val = ''; } // for ex. 1mb, 1KB val = val.replace(/b$/i, ''); last = val.charAt(val.length - 1).toLowerCase(); val = val.replace(/[tgmk]$/i, ''); if (last == 't') { val = val * 1024 * 1024 * 1024 * 1024; } else if (last == 'g') { val = val * 1024 * 1024 * 1024; } else if (last == 'm') { val = val * 1024 * 1024; } else if (last == 'k') { val = val * 1024; } val = isNaN(val)? 0 : parseInt(val); } else { val = parseInt(val); if (val < 1) val = 0; } return val; }; /** * Process ajax request. * Fired events : * @todo * @example * @todo * @return $.Deferred */ this.request = function(opts) { var self = this, o = this.options, dfrd = $.Deferred(), // request ID reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16), // request data data = Object.assign({}, self.customData, {mimes : o.onlyMimes}, opts.data || opts), // command name cmd = data.cmd, // request type is binary isBinary = (opts.options || {}).dataType === 'binary', // current cmd is "open" isOpen = (!opts.asNotOpen && cmd === 'open'), // call default fail callback (display error dialog) ? deffail = !(isBinary || opts.preventDefault || opts.preventFail), // call default success callback ? defdone = !(isBinary || opts.preventDefault || opts.preventDone), // current progress of receive data prog = opts.progressVal || 20, // timer of fake progress progTm = null, // whether the notification dialog is currently displayed hasNotify= false, // options for notify dialog notify = !opts.progressBar? (opts.notify? Object.assign({progress: prog * opts.notify.cnt}, opts.notify) : {}) : {}, // make cancel button cancel = !!opts.cancel, // do not normalize data - return as is raw = isBinary || !!opts.raw, // sync files on request fail syncOnFail = opts.syncOnFail, // use lazy() lazy = !!opts.lazy, // prepare function before done() prepare = opts.prepare, // navigate option object when cmd done navigate = opts.navigate, // open notify dialog timeout timeout, // use browser cache useCache = (opts.options || {}).cache, // request options options = Object.assign({ url : o.url, async : true, type : this.requestType, dataType : 'json', cache : (self.api >= 2.1029), // api >= 2.1029 has unique request ID data : data, headers : this.customHeaders, xhrFields: this.xhrFields, progress : function(e) { var p = e.loaded / e.total * 100; progTm && clearTimeout(progTm); if (opts.progressBar) { try { opts.progressBar.width(p + '%'); } catch(e) {} } else { if (hasNotify && notify.type) { p = p * notify.cnt; if (prog < p) { self.notify({ type: notify.type, progress: p - prog, cnt: 0, hideCnt: notify.hideCnt }); prog = p; } } } if (opts.progress) { try { opts.progress(e); } catch(e) {} } } }, opts.options || {}), /** * Default success handler. * Call default data handlers and fire event with command name. * * @param Object normalized response data * @return void **/ done = function(data) { data.warning && self.error(data.warning); if (isOpen) { open(data); } else { self.updateCache(data); } self.lazy(function() { // fire some event to update cache/ui data.removed && data.removed.length && self.remove(data); data.added && data.added.length && self.add(data); data.changed && data.changed.length && self.change(data); }).then(function() { // fire event with command name return self.lazy(function() { self.trigger(cmd, data, false); }); }).then(function() { // fire event with command name + 'done' return self.lazy(function() { self.trigger(cmd + 'done'); }); }).then(function() { // make toast message if (data.toasts && Array.isArray(data.toasts)) { $.each(data.toasts, function() { this.msg && self.toast(this); }); } // force update content data.sync && self.sync(); }); }, /** * Request error handler. Reject dfrd with correct error message. * * @param jqxhr request object * @param String request status * @return void **/ error = function(xhr, status) { var error, data, d = self.options.debug; switch (status) { case 'abort': error = xhr.quiet ? '' : ['errConnect', 'errAbort']; break; case 'timeout': error = ['errConnect', 'errTimeout']; break; case 'parsererror': error = ['errResponse', 'errDataNotJSON']; if (xhr.responseText) { if (! cwd || (d && (d === 'all' || d['backend-error']))) { error.push(xhr.responseText); } } break; default: if (xhr.responseText) { // check responseText, Is that JSON? try { data = JSON.parse(xhr.responseText); if (data && data.error) { error = data.error; } } catch(e) {} } if (! error) { if (xhr.status == 403) { error = ['errConnect', 'errAccess', 'HTTP error ' + xhr.status]; } else if (xhr.status == 404) { error = ['errConnect', 'errNotFound', 'HTTP error ' + xhr.status]; } else if (xhr.status >= 500) { error = ['errResponse', 'errServerError', 'HTTP error ' + xhr.status]; } else { if (xhr.status == 414 && options.type === 'get') { // retry by POST method options.type = 'post'; self.abortXHR(xhr); dfrd.xhr = xhr = self.transport.send(options).fail(error).done(success); return; } error = xhr.quiet ? '' : ['errConnect', 'HTTP error ' + xhr.status]; } } } self.trigger(cmd + 'done'); dfrd.reject({error: error}, xhr, status); }, /** * Request success handler. Valid response data and reject/resolve dfrd. * * @param Object response data * @param String request status * @return void **/ success = function(response) { // Set currrent request command name self.currentReqCmd = cmd; response.debug && self.responseDebug(response); self.setCustomHeaderByXhr(xhr); if (raw) { self.abortXHR(xhr); response && response.debug && self.debug('backend-debug', response); return dfrd.resolve(response); } if (!response) { return dfrd.reject({error :['errResponse', 'errDataEmpty']}, xhr, response); } else if (!$.isPlainObject(response)) { return dfrd.reject({error :['errResponse', 'errDataNotJSON']}, xhr, response); } else if (response.error) { if (isOpen) { // check leafRoots $.each(self.leafRoots, function(phash, roots) { self.leafRoots[phash] = $.grep(roots, function(h) { return h !== data.target; }); }); } return dfrd.reject({error :response.error}, xhr, response); } var resolve = function() { var pushLeafRoots = function(name) { if (self.leafRoots[data.target] && response[name]) { $.each(self.leafRoots[data.target], function(i, h) { var root; if (root = self.file(h)) { response[name].push(root); } }); } }, setTextMimes = function() { self.textMimes = {}; $.each(self.res('mimes', 'text'), function() { self.textMimes[this.toLowerCase()] = true; }); }, actionTarget; if (isOpen) { pushLeafRoots('files'); } else if (cmd === 'tree') { pushLeafRoots('tree'); } response = self.normalize(response); if (!self.validResponse(cmd, response)) { return dfrd.reject({error :(response.norError || 'errResponse')}, xhr, response); } if (isOpen) { if (!self.api) { self.api = response.api || 1; if (self.api == '2.0' && typeof response.options.uploadMaxSize !== 'undefined') { self.api = '2.1'; } self.newAPI = self.api >= 2; self.oldAPI = !self.newAPI; } if (response.textMimes && Array.isArray(response.textMimes)) { self.resources.mimes.text = response.textMimes; setTextMimes(); } !self.textMimes && setTextMimes(); if (response.options) { cwdOptions = Object.assign({}, cwdOptionsDefault, response.options); } if (response.netDrivers) { self.netDrivers = response.netDrivers; } if (response.maxTargets) { self.maxTargets = response.maxTargets; } if (!!data.init) { self.uplMaxSize = self.returnBytes(response.uplMaxSize); self.uplMaxFile = !!response.uplMaxFile? Math.min(parseInt(response.uplMaxFile), 50) : 20; } } if (typeof prepare === 'function') { prepare(response); } if (navigate) { actionTarget = navigate.target || 'added'; if (response[actionTarget] && response[actionTarget].length) { self.one(cmd + 'done', function() { var targets = response[actionTarget], newItems = self.findCwdNodes(targets), inCwdHashes = function() { var cwdHash = self.cwd().hash; return $.map(targets, function(f) { return (f.phash && cwdHash === f.phash)? f.hash : null; }); }, hashes = inCwdHashes(), makeToast = function(t) { var node = void(0), data = t.action? t.action.data : void(0), cmd, msg, done; if ((data || hashes.length) && t.action && (msg = t.action.msg) && (cmd = t.action.cmd) && (!t.action.cwdNot || t.action.cwdNot !== self.cwd().hash)) { done = t.action.done; data = t.action.data; node = $('
      ') .append( $('') .on('mouseenter mouseleave', function(e) { $(this).toggleClass('ui-state-hover', e.type == 'mouseenter'); }) .on('click', function() { self.exec(cmd, data || hashes, {_userAction: true, _currentType: 'toast', _currentNode: $(this) }); if (done) { self.one(cmd+'done', function() { if (typeof done === 'function') { done(); } else if (done === 'select') { self.trigger('selectfiles', {files : inCwdHashes()}); } }); } }) ); } delete t.action; t.extNode = node; return t; }; if (! navigate.toast) { navigate.toast = {}; } !navigate.noselect && self.trigger('selectfiles', {files : self.searchStatus.state > 1 ? $.map(targets, function(f) { return f.hash; }) : hashes}); if (newItems.length) { if (!navigate.noscroll) { newItems.first().trigger('scrolltoview', {blink : false}); self.resources.blink(newItems, 'lookme'); } if ($.isPlainObject(navigate.toast.incwd)) { self.toast(makeToast(navigate.toast.incwd)); } } else { if ($.isPlainObject(navigate.toast.inbuffer)) { self.toast(makeToast(navigate.toast.inbuffer)); } } }); } } dfrd.resolve(response); response.debug && self.debug('backend-debug', response); }; self.abortXHR(xhr); lazy? self.lazy(resolve) : resolve(); }, xhr, _xhr, xhrAbort = function(e) { if (xhr && xhr.state() === 'pending') { self.abortXHR(xhr, { quiet: true , abort: true }); if (!e || (e.type !== 'unload' && e.type !== 'destroy')) { self.autoSync(); } } }, abort = function(e){ self.trigger(cmd + 'done'); if (e.type == 'autosync') { if (e.data.action != 'stop') return; } else if (e.type != 'unload' && e.type != 'destroy' && e.type != 'openxhrabort') { if (!e.data.added || !e.data.added.length) { return; } } xhrAbort(e); }, request = function(mode) { var queueAbort = function() { syncOnFail = false; dfrd.reject(); }; if (mode) { if (mode === 'cmd') { return cmd; } } if (isOpen) { if (currentOpenCmd && currentOpenCmd.state() === 'pending') { if (currentOpenCmd._target === data.target) { return dfrd.reject('openabort'); } else { if (currentOpenCmd.xhr) { currentOpenCmd.xhr.queueAbort(); } else { currentOpenCmd.reject('openabort'); } } } currentOpenCmd = dfrd; currentOpenCmd._target = data.target; } dfrd.always(function() { delete options.headers['X-elFinderReqid']; if (isOpen) { currentOpenCmd = null; } }).fail(function(error, xhr, response) { var errData, errMsg; if (isOpen && error === 'openabort') { error = ''; syncOnFail = false; } errData = { cmd: cmd, err: error, xhr: xhr, rc: response }; // unset this cmd queue when user canceling // see notify : function - `cancel.reject(0);` if (error === 0) { if (requestQueue.length) { requestQueue = $.grep(requestQueue, function(req) { return (req('cmd') === cmd) ? false : true; }); } } // trigger "requestError" event self.trigger('requestError', errData); if (errData._getEvent && errData._getEvent().isDefaultPrevented()) { deffail = false; syncOnFail = false; if (error) { error.error = ''; } } // abort xhr xhrAbort(); if (isOpen) { openDir = self.file(data.target); openDir && openDir.volumeid && self.isRoot(openDir) && delete self.volumeExpires[openDir.volumeid]; } self.trigger(cmd + 'fail', response); errMsg = (typeof error === 'object')? error.error : error; if (errMsg) { deffail ? self.error(errMsg) : self.debug('error', self.i18n(errMsg)); } syncOnFail && self.sync(); }); if (!cmd) { syncOnFail = false; return dfrd.reject({error :'errCmdReq'}); } if (self.maxTargets && data.targets && data.targets.length > self.maxTargets) { syncOnFail = false; return dfrd.reject({error :['errMaxTargets', self.maxTargets]}); } defdone && dfrd.done(done); // quiet abort not completed "open" requests if (isOpen) { while ((_xhr = queue.pop())) { _xhr.queueAbort(); } if (cwd !== data.target) { while ((_xhr = cwdQueue.pop())) { _xhr.queueAbort(); } } } // trigger abort autoSync for commands to add the item if ($.inArray(cmd, (self.cmdsToAdd + ' autosync').split(' ')) !== -1) { if (cmd !== 'autosync') { self.autoSync('stop'); dfrd.always(function() { self.autoSync(); }); } self.trigger('openxhrabort'); } delete options.preventFail; if (self.api >= 2.1029) { if (useCache) { options.headers['X-elFinderReqid'] = reqId; } else { Object.assign(options.data, { reqid : reqId }); } } // function for set value of this syncOnFail dfrd.syncOnFail = function(state) { syncOnFail = !!state; }; requestCnt++; dfrd.xhr = xhr = self.transport.send(options).always(function() { // set responseURL from native xhr object if (options._xhr && typeof options._xhr.responseURL !== 'undefined') { xhr.responseURL = options._xhr.responseURL || ''; } --requestCnt; if (requestQueue.length) { requestQueue.shift()(); } }).fail(error).done(success); if (self.api >= 2.1029) { xhr._requestId = reqId; } if (isOpen || (data.compare && cmd === 'info')) { // regist function queueAbort xhr.queueAbort = queueAbort; // add autoSync xhr into queue queue.unshift(xhr); // bind abort() data.compare && self.bind(self.cmdsToAdd + ' autosync openxhrabort', abort); dfrd.always(function() { var ndx = $.inArray(xhr, queue); data.compare && self.unbind(self.cmdsToAdd + ' autosync openxhrabort', abort); ndx !== -1 && queue.splice(ndx, 1); }); } else if ($.inArray(cmd, self.abortCmdsOnOpen) !== -1) { // regist function queueAbort xhr.queueAbort = queueAbort; // add "open" xhr, only cwd xhr into queue cwdQueue.unshift(xhr); dfrd.always(function() { var ndx = $.inArray(xhr, cwdQueue); ndx !== -1 && cwdQueue.splice(ndx, 1); }); } // abort pending xhr on window unload or elFinder destroy self.bind('unload destroy', abort); dfrd.always(function() { self.unbind('unload destroy', abort); }); return dfrd; }, queueingRequest = function() { // show notify if (notify.type && notify.cnt) { if (cancel) { notify.cancel = dfrd; opts.eachCancel && (notify.id = +new Date()); } timeout = setTimeout(function() { // start fake count up progTm = setTimeout(progFakeUp, 1000); self.notify(notify); hasNotify = true; dfrd.always(function() { notify.cnt = -(parseInt(notify.cnt)||0); self.notify(notify); hasNotify = false; }); }, self.notifyDelay); dfrd.always(function() { clearTimeout(timeout); }); } // queueing if (requestCnt < requestMaxConn) { // do request return request(); } else { if (isOpen) { requestQueue.unshift(request); } else { requestQueue.push(request); } return dfrd; } }, progFakeUp = function() { var add; if (hasNotify && progTm) { add = 1 * notify.cnt; progTm = null; self.notify({ type: notify.type, progress: add, cnt: 0, hideCnt: notify.hideCnt }); prog += add; if ((prog / notify.cnt) < 80) { progTm = setTimeout(progFakeUp, 500); } } }, bindData = {opts: opts, result: true}, openDir; // prevent request initial request is completed if (!self.api && !data.init) { syncOnFail = false; return dfrd.reject(); } // trigger "request.cmd" that callback be able to cancel request by substituting "false" for "event.data.result" self.trigger('request.' + cmd, bindData, true); if (! bindData.result) { self.trigger(cmd + 'done'); return dfrd.reject(); } else if (typeof bindData.result === 'object' && bindData.result.promise) { bindData.result .done(queueingRequest) .fail(function() { self.trigger(cmd + 'done'); dfrd.reject(); }); return dfrd; } return queueingRequest(); }; /** * Call cache() * Store info about files/dirs in "files" object. * * @param Array files * @param String type * @return void */ this.cache = function(dataArray, type) { if (! Array.isArray(dataArray)) { dataArray = [ dataArray ]; } cache(dataArray, type); }; /** * Update file object caches by respose data object * * @param Object respose data object * @return void */ this.updateCache = function(data) { if ($.isPlainObject(data)) { data.files && data.files.length && cache(data.files, 'files'); data.tree && data.tree.length && cache(data.tree, 'tree'); data.removed && data.removed.length && remove(data.removed); data.added && data.added.length && cache(data.added, 'add'); data.changed && data.changed.length && cache(data.changed, 'change'); } }; /** * Compare current files cache with new files and return diff * * @param Array new files * @param String target folder hash * @param Array exclude properties to compare * @return Object */ this.diff = function(incoming, onlydir, excludeProps) { var raw = {}, added = [], removed = [], changed = [], excludes = null, isChanged = function(hash) { var l = changed.length; while (l--) { if (changed[l].hash == hash) { return true; } } }; $.each(incoming, function(i, f) { raw[f.hash] = f; }); // make excludes object if (excludeProps && excludeProps.length) { excludes = {}; $.each(excludeProps, function() { excludes[this] = true; }); } // find removed $.each(files, function(hash, f) { if (! raw[hash] && (! onlydir || f.phash === onlydir)) { removed.push(hash); } }); // compare files $.each(raw, function(hash, file) { var origin = files[hash], orgKeys = {}, chkKeyLen; if (!origin) { added.push(file); } else { // make orgKeys object $.each(Object.keys(origin), function() { orgKeys[this] = true; }); $.each(file, function(prop) { delete orgKeys[prop]; if (! excludes || ! excludes[prop]) { if (file[prop] !== origin[prop]) { changed.push(file); orgKeys = {}; return false; } } }); chkKeyLen = Object.keys(orgKeys).length; if (chkKeyLen !== 0) { if (excludes) { $.each(orgKeys, function(prop) { if (excludes[prop]) { --chkKeyLen; } }); } (chkKeyLen !== 0) && changed.push(file); } } }); // parents of removed dirs mark as changed (required for tree correct work) $.each(removed, function(i, hash) { var file = files[hash], phash = file.phash; if (phash && file.mime == 'directory' && $.inArray(phash, removed) === -1 && raw[phash] && !isChanged(phash)) { changed.push(raw[phash]); } }); return { added : added, removed : removed, changed : changed }; }; /** * Sync Stopper * * @type Boolean */ this.syncStopper = false; /** * Sync content * * @return jQuery.Deferred */ this.sync = function(onlydir, polling) { if (this.syncStopper) { return $.Deferred().reject(); } this.syncStopper = true; this.autoSync('stop'); var self = this, compare = function(){ var c = '', cnt = 0, mtime = 0; if (onlydir && polling) { $.each(files, function(h, f) { if (f.phash && f.phash === onlydir) { ++cnt; mtime = Math.max(mtime, f.ts); } c = cnt+':'+mtime; }); } return c; }, comp = compare(), dfrd = $.Deferred().always(function() { !reqFail && self.trigger('sync'); }), opts = [this.request({ data : {cmd : 'open', reload : 1, target : cwd, tree : (! onlydir && this.ui.tree) ? 1 : 0, compare : comp}, preventDefault : true })], exParents = function() { var parents = [], curRoot = self.file(self.root(cwd)), curId = curRoot? curRoot.volumeid : null, phash = self.cwd().phash, isroot,pdir; while(phash) { if (pdir = self.file(phash)) { if (phash.indexOf(curId) !== 0) { parents.push( {target: phash, cmd: 'tree'} ); if (! self.isRoot(pdir)) { parents.push( {target: phash, cmd: 'parents'} ); } curRoot = self.file(self.root(phash)); curId = curRoot? curRoot.volumeid : null; } phash = pdir.phash; } else { phash = null; } } return parents; }, reqFail; if (! onlydir && self.api >= 2) { (cwd !== this.root()) && opts.push(this.request({ data : {cmd : 'parents', target : cwd}, preventDefault : true })); $.each(exParents(), function(i, data) { opts.push(self.request({ data : {cmd : data.cmd, target : data.target}, preventDefault : true })); }); } $.when.apply($, opts) .fail(function(error, xhr) { reqFail = (xhr && xhr.status != 200); if (! polling || $.inArray('errOpen', error) !== -1) { dfrd.reject(error); self.parseError(error) && self.request({ data : {cmd : 'open', target : (self.lastDir('') || self.root()), tree : 1, init : 1}, notify : {type : 'open', cnt : 1, hideCnt : true} }); } else { dfrd.reject((error && xhr.status != 0)? error : void 0); } }) .done(function(odata) { var pdata, argLen, i; if (odata.cwd.compare) { if (comp === odata.cwd.compare) { return dfrd.reject(); } } // for 2nd and more requests pdata = {tree : []}; // results marge of 2nd and more requests argLen = arguments.length; if (argLen > 1) { for(i = 1; i < argLen; i++) { if (arguments[i].tree && arguments[i].tree.length) { pdata.tree.push.apply(pdata.tree, arguments[i].tree); } } } if (self.api < 2.1) { if (! pdata.tree) { pdata.tree = []; } pdata.tree.push(odata.cwd); } // data normalize odata = self.normalize(odata); if (!self.validResponse('open', odata)) { return dfrd.reject((odata.norError || 'errResponse')); } pdata = self.normalize(pdata); if (!self.validResponse('tree', pdata)) { return dfrd.reject((pdata.norError || 'errResponse')); } var diff = self.diff(odata.files.concat(pdata && pdata.tree ? pdata.tree : []), onlydir); diff.added.push(odata.cwd); self.updateCache(diff); // trigger events diff.removed.length && self.remove(diff); diff.added.length && self.add(diff); diff.changed.length && self.change(diff); return dfrd.resolve(diff); }) .always(function() { self.syncStopper = false; self.autoSync(); }); return dfrd; }; this.upload = function(files) { return this.transport.upload(files, this); }; /** * Bind keybord shortcut to keydown event * * @example * elfinder.shortcut({ * pattern : 'ctrl+a', * description : 'Select all files', * callback : function(e) { ... }, * keypress : true|false (bind to keypress instead of keydown) * }) * * @param Object shortcut config * @return elFinder */ this.shortcut = function(s) { var patterns, pattern, code, i, parts; if (this.options.allowShortcuts && s.pattern && $.isFunction(s.callback)) { patterns = s.pattern.toUpperCase().split(/\s+/); for (i= 0; i < patterns.length; i++) { pattern = patterns[i]; parts = pattern.split('+'); code = (code = parts.pop()).length == 1 ? (code > 0 ? code : code.charCodeAt(0)) : (code > 0 ? code : $.ui.keyCode[code]); if (code && !shortcuts[pattern]) { shortcuts[pattern] = { keyCode : code, altKey : $.inArray('ALT', parts) != -1, ctrlKey : $.inArray('CTRL', parts) != -1, shiftKey : $.inArray('SHIFT', parts) != -1, type : s.type || 'keydown', callback : s.callback, description : s.description, pattern : pattern }; } } } return this; }; /** * Registered shortcuts * * @type Object **/ this.shortcuts = function() { var ret = []; $.each(shortcuts, function(i, s) { ret.push([s.pattern, self.i18n(s.description)]); }); return ret; }; /** * Get/set clipboard content. * Return new clipboard content. * * @example * this.clipboard([]) - clean clipboard * this.clipboard([{...}, {...}], true) - put 2 files in clipboard and mark it as cutted * * @param Array new files hashes * @param Boolean cut files? * @return Array */ this.clipboard = function(hashes, cut) { var map = function() { return $.map(clipboard, function(f) { return f.hash; }); }; if (hashes !== void(0)) { clipboard.length && this.trigger('unlockfiles', {files : map()}); remember = {}; clipboard = $.map(hashes||[], function(hash) { var file = files[hash]; if (file) { remember[hash] = true; return { hash : hash, phash : file.phash, name : file.name, mime : file.mime, read : file.read, locked : file.locked, cut : !!cut }; } return null; }); this.trigger('changeclipboard', {clipboard : clipboard.slice(0, clipboard.length)}); cut && this.trigger('lockfiles', {files : map()}); } // return copy of clipboard instead of refrence return clipboard.slice(0, clipboard.length); }; /** * Return true if command enabled * * @param String command name * @param String|void hash for check of own volume's disabled cmds * @return Boolean */ this.isCommandEnabled = function(name, dstHash) { var disabled, cmd, cvid = self.cwd().volumeid || ''; // In serach results use selected item hash to check if (!dstHash && self.searchStatus.state > 1 && self.selected().length) { dstHash = self.selected()[0]; } if (dstHash && (! cvid || dstHash.indexOf(cvid) !== 0)) { disabled = self.option('disabledFlip', dstHash); //if (! disabled) { // disabled = {}; //} } else { disabled = cwdOptions.disabledFlip/* || {}*/; } cmd = this._commands[name]; return cmd ? (cmd.alwaysEnabled || !disabled[name]) : false; }; /** * Exec command and return result; * * @param String command name * @param String|Array usualy files hashes * @param String|Array command options * @param String|void hash for enabled check of own volume's disabled cmds * @return $.Deferred */ this.exec = function(cmd, files, opts, dstHash) { var dfrd, resType; // apply commandMap for keyboard shortcut if (!dstHash && this.commandMap[cmd] && this.commandMap[cmd] !== 'hidden') { cmd = this.commandMap[cmd]; } if (cmd === 'open') { if (this.searchStatus.state || this.searchStatus.ininc) { this.trigger('searchend', { noupdate: true }); } this.autoSync('stop'); } if (!dstHash && files) { if ($.isArray(files)) { if (files.length) { dstHash = files[0]; } } else { dstHash = files; } } dfrd = this._commands[cmd] && this.isCommandEnabled(cmd, dstHash) ? this._commands[cmd].exec(files, opts) : $.Deferred().reject('errUnknownCmd'); resType = typeof dfrd; if (!(resType === 'object' && dfrd.promise)) { self.debug('warning', '"cmd.exec()" should be returned "$.Deferred" but cmd "' + cmd + '" returned "' + resType + '"'); dfrd = $.Deferred().resolve(); } this.trigger('exec', { dfrd : dfrd, cmd : cmd, files : files, opts : opts, dstHash : dstHash }); return dfrd; }; /** * Create and return dialog. * * @param String|DOMElement dialog content * @param Object dialog options * @return jQuery */ this.dialog = function(content, options) { var dialog = $('
      ').append(content).appendTo(node).elfinderdialog(options, self), dnode = dialog.closest('.ui-dialog'), resize = function(){ ! dialog.data('draged') && dialog.is(':visible') && dialog.elfinderdialog('posInit'); }; if (dnode.length) { self.bind('resize', resize); dnode.on('remove', function() { self.unbind('resize', resize); }); } return dialog; }; /** * Create and return toast. * * @param Object toast options - see ui/toast.js * @return jQuery */ this.toast = function(options) { return $('
      ').appendTo(this.ui.toast).elfindertoast(options || {}, this); }; /** * Return UI widget or node * * @param String ui name * @return jQuery */ this.getUI = function(ui) { return ui? (this.ui[ui] || $()) : node; }; /** * Return elFinder.command instance or instances array * * @param String command name * @return Object | Array */ this.getCommand = function(name) { return name === void(0) ? this._commands : this._commands[name]; }; /** * Resize elfinder node * * @param String|Number width * @param String|Number height * @return void */ this.resize = function(w, h) { var getMargin = function() { var m = node.outerHeight(true) - node.innerHeight(), p = node; while(p.get(0) !== heightBase.get(0)) { p = p.parent(); m += p.outerHeight(true) - p.innerHeight(); if (! p.parent().length) { // reached the document break; } } return m; }, fit = ! node.hasClass('ui-resizable'), prv = node.data('resizeSize') || {w: 0, h: 0}, mt, size = {}; if (heightBase && heightBase.data('resizeTm')) { clearTimeout(heightBase.data('resizeTm')); } if (! self.options.noResizeBySelf) { if (typeof h === 'string') { if (mt = h.match(/^([0-9.]+)%$/)) { // setup heightBase if (! heightBase || ! heightBase.length) { heightBase = $(window); } if (! heightBase.data('marginToMyNode')) { heightBase.data('marginToMyNode', getMargin()); } if (! heightBase.data('fitToBaseFunc')) { heightBase.data('fitToBaseFunc', function(e) { var tm = heightBase.data('resizeTm'); e.preventDefault(); e.stopPropagation(); tm && cancelAnimationFrame(tm); if (! node.hasClass('elfinder-fullscreen') && (!self.UA.Mobile || heightBase.data('rotated') !== self.UA.Rotated)) { heightBase.data('rotated', self.UA.Rotated); heightBase.data('resizeTm', requestAnimationFrame(function() { self.restoreSize(); })); } }); } if (typeof heightBase.data('rotated') === 'undefined') { heightBase.data('rotated', self.UA.Rotated); } h = heightBase.height() * (mt[1] / 100) - heightBase.data('marginToMyNode'); heightBase.off('resize.' + self.namespace, heightBase.data('fitToBaseFunc')); fit && heightBase.on('resize.' + self.namespace, heightBase.data('fitToBaseFunc')); } } node.css({ width : w, height : parseInt(h) }); } size.w = Math.round(node.width()); size.h = Math.round(node.height()); node.data('resizeSize', size); if (size.w !== prv.w || size.h !== prv.h) { node.trigger('resize'); this.trigger('resize', {width : size.w, height : size.h}); } }; /** * Restore elfinder node size * * @return elFinder */ this.restoreSize = function() { this.resize(width, height); }; this.show = function() { node.show(); this.enable().trigger('show'); }; this.hide = function() { if (this.options.enableAlways) { prevEnabled = enabled; enabled = false; } this.disable(); this.trigger('hide'); node.hide(); }; /** * Lazy execution function * * @param Object function * @param Number delay * @param Object options * @return Object jQuery.Deferred */ this.lazy = function(func, delay, opts) { var busy = function(state) { var cnt = node.data('lazycnt'), repaint; if (state) { repaint = node.data('lazyrepaint')? false : opts.repaint; if (! cnt) { node.data('lazycnt', 1) .addClass('elfinder-processing'); } else { node.data('lazycnt', ++cnt); } if (repaint) { node.data('lazyrepaint', true).css('display'); // force repaint } } else { if (cnt && cnt > 1) { node.data('lazycnt', --cnt); } else { repaint = node.data('lazyrepaint'); node.data('lazycnt', 0) .removeData('lazyrepaint') .removeClass('elfinder-processing'); repaint && node.css('display'); // force repaint; self.trigger('lazydone'); } } }, dfd = $.Deferred(), callFunc = function() { dfd.resolve(func.call(dfd)); busy(false); }; delay = delay || 0; opts = opts || {}; busy(true); if (delay) { setTimeout(callFunc, delay); } else { requestAnimationFrame(callFunc); } return dfd; }; /** * Destroy this elFinder instance * * @return void **/ this.destroy = function() { if (node && node[0].elfinder) { node.hasClass('elfinder-fullscreen') && self.toggleFullscreen(node); this.options.syncStart = false; this.autoSync('forcestop'); this.trigger('destroy').disable(); clipboard = []; selected = []; listeners = {}; shortcuts = {}; $(window).off('.' + namespace); $(document).off('.' + namespace); self.trigger = function(){}; $(beeper).remove(); node.off() .removeData() .empty() .append(prevContent.contents()) .attr('class', prevContent.attr('class')) .attr('style', prevContent.attr('style')); delete node[0].elfinder; // restore kept events $.each(prevEvents, function(n, arr) { $.each(arr, function(i, o) { node.on(o.type + (o.namespace? '.'+o.namespace : ''), o.selector, o.handler); }); }); } }; /** * Start or stop auto sync * * @param String|Bool stop * @return void */ this.autoSync = function(mode) { var sync; if (self.options.sync >= 1000) { if (syncInterval) { clearTimeout(syncInterval); syncInterval = null; self.trigger('autosync', {action : 'stop'}); } if (mode === 'stop') { ++autoSyncStop; } else { autoSyncStop = Math.max(0, --autoSyncStop); } if (autoSyncStop || mode === 'forcestop' || ! self.options.syncStart) { return; } // run interval sync sync = function(start){ var timeout; if (cwdOptions.syncMinMs && (start || syncInterval)) { start && self.trigger('autosync', {action : 'start'}); timeout = Math.max(self.options.sync, cwdOptions.syncMinMs); syncInterval && clearTimeout(syncInterval); syncInterval = setTimeout(function() { var dosync = true, hash = cwd, cts; if (cwdOptions.syncChkAsTs && files[hash] && (cts = files[hash].ts)) { self.request({ data : {cmd : 'info', targets : [hash], compare : cts, reload : 1}, preventDefault : true }) .done(function(data){ var ts; dosync = true; if (data.compare) { ts = data.compare; if (ts == cts) { dosync = false; } } if (dosync) { self.sync(hash).always(function(){ if (ts) { // update ts for cache clear etc. files[hash].ts = ts; } sync(); }); } else { sync(); } }) .fail(function(error, xhr){ var err = self.parseError(error); if (err && xhr.status != 0) { self.error(err); if (Array.isArray(err) && $.inArray('errOpen', err) !== -1) { self.request({ data : {cmd : 'open', target : (self.lastDir('') || self.root()), tree : 1, init : 1}, notify : {type : 'open', cnt : 1, hideCnt : true} }); } } else { syncInterval = setTimeout(function() { sync(); }, timeout); } }); } else { self.sync(cwd, true).always(function(){ sync(); }); } }, timeout); } }; sync(true); } }; /** * Return bool is inside work zone of specific point * * @param Number event.pageX * @param Number event.pageY * @return Bool */ this.insideWorkzone = function(x, y, margin) { var rectangle = this.getUI('workzone').data('rectangle'); margin = margin || 1; if (x < rectangle.left + margin || x > rectangle.left + rectangle.width + margin || y < rectangle.top + margin || y > rectangle.top + rectangle.height + margin) { return false; } return true; }; /** * Target ui node move to last of children of elFinder node fot to show front * * @param Object target Target jQuery node object */ this.toFront = function(target) { var nodes = node.children('.ui-front').removeClass('elfinder-frontmost'), lastnode = nodes.last(); nodes.css('z-index', ''); $(target).addClass('ui-front elfinder-frontmost').css('z-index', lastnode.css('z-index') + 1); }; /** * Remove class 'elfinder-frontmost' and hide() to target ui node * * @param Object target Target jQuery node object * @param Boolean nohide Do not hide */ this.toHide =function(target, nohide) { var tgt = $(target), last; !nohide && tgt.hide(); if (tgt.hasClass('elfinder-frontmost')) { tgt.removeClass('elfinder-frontmost'); last = node.children('.ui-front:visible:not(.elfinder-frontmost)').last(); if (last.length) { requestAnimationFrame(function() { if (!node.children('.elfinder-frontmost:visible').length) { self.toFront(last); last.trigger('frontmost'); } }); } } }; /** * Return css object for maximize * * @return Object */ this.getMaximizeCss = function() { return { width : '100%', height : '100%', margin : 0, top : 0, left : 0, display : 'block', position: 'fixed', zIndex : Math.max(self.zIndex? (self.zIndex + 1) : 0 , 1000), maxWidth : '', maxHeight: '' }; }; // Closure for togglefullscreen (function() { // check is in iframe if (inFrame && self.UA.Fullscreen) { self.UA.Fullscreen = false; if (parentIframe && typeof parentIframe.attr('allowfullscreen') !== 'undefined') { self.UA.Fullscreen = true; } } var orgStyle, bodyOvf, resizeTm, fullElm, exitFull, toFull, funcObj, cls = 'elfinder-fullscreen', clsN = 'elfinder-fullscreen-native', checkDialog = function() { var t = 0, l = 0; $.each(node.children('.ui-dialog,.ui-draggable'), function(i, d) { var $d = $(d), pos = $d.position(); if (pos.top < 0) { $d.css('top', t); t += 20; } if (pos.left < 0) { $d.css('left', l); l += 20; } }); }, setFuncObj = function() { var useFullscreen = self.storage('useFullscreen'); funcObj = self.UA.Fullscreen && (useFullscreen? useFullscreen > 0 : self.options.commandsOptions.fullscreen.mode === 'screen') ? { // native full screen mode fullElm: function() { return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement || null; }, exitFull: function() { if (document.exitFullscreen) { return document.exitFullscreen(); } else if (document.webkitExitFullscreen) { return document.webkitExitFullscreen(); } else if (document.mozCancelFullScreen) { return document.mozCancelFullScreen(); } else if (document.msExitFullscreen) { return document.msExitFullscreen(); } }, toFull: function(elem) { if (elem.requestFullscreen) { return elem.requestFullscreen(); } else if (elem.webkitRequestFullscreen) { return elem.webkitRequestFullscreen(); } else if (elem.mozRequestFullScreen) { return elem.mozRequestFullScreen(); } else if (elem.msRequestFullscreen) { return elem.msRequestFullscreen(); } return false; } } : { // node element maximize mode fullElm: function() { var full; if (node.hasClass(cls)) { return node.get(0); } else { full = node.find('.' + cls); if (full.length) { return full.get(0); } } return null; }, exitFull: function() { var elm; $(window).off('resize.' + namespace, resize); if (bodyOvf !== void(0)) { $('body').css('overflow', bodyOvf); } bodyOvf = void(0); if (orgStyle) { elm = orgStyle.elm; restoreStyle(elm); $(elm).trigger('resize', {fullscreen: 'off'}); } $(window).trigger('resize'); }, toFull: function(elem) { bodyOvf = $('body').css('overflow') || ''; $('body').css('overflow', 'hidden'); $(elem).css(self.getMaximizeCss()) .addClass(cls) .trigger('resize', {fullscreen: 'on'}); checkDialog(); $(window).on('resize.' + namespace, resize).trigger('resize'); return true; } }; }, restoreStyle = function(elem) { if (orgStyle && orgStyle.elm == elem) { $(elem).removeClass(cls + ' ' + clsN).attr('style', orgStyle.style); orgStyle = null; } }, resize = function(e) { var elm; if (e.target === window) { resizeTm && cancelAnimationFrame(resizeTm); resizeTm = requestAnimationFrame(function() { if (elm = funcObj.fullElm()) { $(elm).trigger('resize', {fullscreen: 'on'}); } }); } }; setFuncObj(); $(document).on('fullscreenchange.' + namespace + ' webkitfullscreenchange.' + namespace + ' mozfullscreenchange.' + namespace + ' MSFullscreenChange.' + namespace, function(e){ if (self.UA.Fullscreen) { var elm = funcObj.fullElm(), win = $(window); resizeTm && cancelAnimationFrame(resizeTm); if (elm === null) { win.off('resize.' + namespace, resize); if (orgStyle) { elm = orgStyle.elm; restoreStyle(elm); $(elm).trigger('resize', {fullscreen: 'off'}); } } else { $(elm).addClass(cls + ' ' + clsN) .attr('style', 'width:100%; height:100%; margin:0; padding:0;') .trigger('resize', {fullscreen: 'on'}); win.on('resize.' + namespace, resize); checkDialog(); } win.trigger('resize'); } }); /** * Toggle Full Scrren Mode * * @param Object target * @param Bool full * @return Object | Null DOM node object of current full scrren */ self.toggleFullscreen = function(target, full) { var elm = $(target).get(0), curElm = null; curElm = funcObj.fullElm(); if (curElm) { if (curElm == elm) { if (full === true) { return curElm; } } else { if (full === false) { return curElm; } } funcObj.exitFull(); return null; } else { if (full === false) { return null; } } setFuncObj(); orgStyle = {elm: elm, style: $(elm).attr('style')}; if (funcObj.toFull(elm) !== false) { return elm; } else { orgStyle = null; return null; } }; })(); // Closure for toggleMaximize (function(){ var cls = 'elfinder-maximized', resizeTm, resize = function(e) { if (e.target === window && e.data && e.data.elm) { var elm = e.data.elm; resizeTm && cancelAnimationFrame(resizeTm); resizeTm = requestAnimationFrame(function() { elm.trigger('resize', {maximize: 'on'}); }); } }, exitMax = function(elm) { $(window).off('resize.' + namespace, resize); $('body').css('overflow', elm.data('bodyOvf')); elm.removeClass(cls) .attr('style', elm.data('orgStyle')) .removeData('bodyOvf') .removeData('orgStyle'); elm.trigger('resize', {maximize: 'off'}); }, toMax = function(elm) { elm.data('bodyOvf', $('body').css('overflow') || '') .data('orgStyle', elm.attr('style')) .addClass(cls) .css(self.getMaximizeCss()); $('body').css('overflow', 'hidden'); $(window).on('resize.' + namespace, {elm: elm}, resize); elm.trigger('resize', {maximize: 'on'}); }; /** * Toggle Maximize target node * * @param Object target * @param Bool max * @return void */ self.toggleMaximize = function(target, max) { var elm = $(target), maximized = elm.hasClass(cls); if (maximized) { if (max === true) { return; } exitMax(elm); } else { if (max === false) { return; } toMax(elm); } }; })(); /************* init stuffs ****************/ Object.assign($.ui.keyCode, { 'F1' : 112, 'F2' : 113, 'F3' : 114, 'F4' : 115, 'F5' : 116, 'F6' : 117, 'F7' : 118, 'F8' : 119, 'F9' : 120, 'F10' : 121, 'F11' : 122, 'F12' : 123, 'DIG0' : 48, 'DIG1' : 49, 'DIG2' : 50, 'DIG3' : 51, 'DIG4' : 52, 'DIG5' : 53, 'DIG6' : 54, 'DIG7' : 55, 'DIG8' : 56, 'DIG9' : 57, 'NUM0' : 96, 'NUM1' : 97, 'NUM2' : 98, 'NUM3' : 99, 'NUM4' : 100, 'NUM5' : 101, 'NUM6' : 102, 'NUM7' : 103, 'NUM8' : 104, 'NUM9' : 105, 'CONTEXTMENU' : 93, 'DOT' : 190 }); this.dragUpload = false; this.xhrUpload = (typeof XMLHttpRequestUpload != 'undefined' || typeof XMLHttpRequestEventTarget != 'undefined') && typeof File != 'undefined' && typeof FormData != 'undefined'; // configure transport object this.transport = {}; if (typeof(this.options.transport) == 'object') { this.transport = this.options.transport; if (typeof(this.transport.init) == 'function') { this.transport.init(this); } } if (typeof(this.transport.send) != 'function') { this.transport.send = function(opts) { if (!self.UA.IE) { // keep native xhr object for handling property responseURL opts._xhr = new XMLHttpRequest(); opts.xhr = function() { if (opts.progress) { opts._xhr.addEventListener('progress', opts.progress); } return opts._xhr; }; } return $.ajax(opts); }; } if (this.transport.upload == 'iframe') { this.transport.upload = $.proxy(this.uploads.iframe, this); } else if (typeof(this.transport.upload) == 'function') { this.dragUpload = !!this.options.dragUploadAllow; } else if (this.xhrUpload && !!this.options.dragUploadAllow) { this.transport.upload = $.proxy(this.uploads.xhr, this); this.dragUpload = true; } else { this.transport.upload = $.proxy(this.uploads.iframe, this); } /** * Decoding 'raw' string converted to unicode * * @param String str * @return String */ this.decodeRawString = function(str) { var charCodes = function(str) { var i, len, arr; for (i=0,len=str.length,arr=[]; i= 0xd800 && c <= 0xdbff) { scalars.push((c & 1023) + 64 << 10 | arr[++i] & 1023); } else { scalars.push(c); } } return scalars; }, decodeUTF8 = function(arr) { var i, len, c, str, char = String.fromCharCode; for (i=0,len=arr.length,str=""; c=arr[i],i= 0xc2) { str += char((c&31)<<6 | arr[++i]&63); } else if (c <= 0xef && c >= 0xe0) { str += char((c&15)<<12 | (arr[++i]&63)<<6 | arr[++i]&63); } else if (c <= 0xf7 && c >= 0xf0) { str += char( 0xd800 | ((c&7)<<8 | (arr[++i]&63)<<2 | arr[++i]>>>4&3) - 64, 0xdc00 | (arr[i++]&15)<<6 | arr[i]&63 ); } else { str += char(0xfffd); } } return str; }; return decodeUTF8(scalarValues(str)); }; /** * Gets target file contents by file.hash * * @param String hash The hash * @param String responseType 'blob' or 'arraybuffer' (default) * @param Object requestOpts The request options * @return arraybuffer|blob The contents. */ this.getContents = function(hash, responseType, requestOpts) { var self = this, dfd = $.Deferred(), type = responseType || 'arraybuffer', url, req; dfd.fail(function() { req && req.state() === 'pending' && req.reject(); }); url = self.openUrl(hash); if (!self.isSameOrigin(url)) { url = self.openUrl(hash, true); } req = self.request(Object.assign({ data : {cmd : 'get'}, options : { url: url, type: 'get', cache : true, dataType : 'binary', responseType : type, processData: false }, notify : { type: 'file', cnt: 1, hideCnt: true }, cancel : true }, requestOpts || {})) .fail(function() { dfd.reject(); }) .done(function(data) { dfd.resolve(data); }); return dfd; }; /** * Gets the binary by url. * * @param {Object} opts The options * @param {Function} callback The callback * @param {Object} requestOpts The request options * @return arraybuffer|blob The contents. */ this.getBinaryByUrl = function(opts, callback, requestOpts) { var self = this, dfd = $.Deferred(), url, req; dfd.fail(function() { req && req.state() === 'pending' && req.reject(); }); req = self.request(Object.assign({ data : {cmd : 'get'}, options : Object.assign({ type: 'get', cache : true, dataType : 'binary', responseType : 'blob', processData: false }, opts) }, requestOpts || {})) .fail(function() { dfd.reject(); }) .done(function(data) { callback && callback(data); dfd.resolve(data); }); return dfd; }; /** * Gets the mimetype. * * @param {string} name The name * @param {string} orgMime The organization mime * @return {string} The mimetype. */ this.getMimetype = function(name, orgMime) { var mime = orgMime, ext, m; m = (name + '').match(/\.([^.]+)$/); if (m && (ext = m[1])) { if (!extToMimeTable) { extToMimeTable = self.arrayFlip(self.mimeTypes); } if (!(mime = extToMimeTable[ext.toLowerCase()])) { mime = orgMime; } } return mime; }; /** * Supported check hash algorisms * * @type Array */ self.hashCheckers = []; /** * Closure of getContentsHashes() */ (function(self) { var hashLibs = {}; if (window.Worker && window.ArrayBuffer) { // make fm.hashCheckers if (self.options.cdns.sparkmd5) { hashLibs.SparkMD5 = true; self.hashCheckers.push('md5'); } if (self.options.cdns.jssha) { hashLibs.jsSHA = true; self.hashCheckers = self.hashCheckers.concat(['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'sha3-224', 'sha3-256', 'sha3-384', 'sha3-512', 'shake128', 'shake256']); } } /** * Gets the contents hashes. * * @param String target target file.hash * @param Object needHashes need hash lib names * @param Object requestOpts The request options * @return Object hashes with lib name as key */ self.getContentsHashes = function(target, needHashes, hashOpts, requestOpts) { var dfd = $.Deferred(), needs = self.arrayFlip(needHashes || ['md5'], true), libs = [], jobs = [], res = {}, opts = hashOpts? hashOpts : { shake128len : 256, shake256len : 512 }, req; dfd.fail(function() { req && req.reject(); }); if (Object.keys(hashLibs).length) { req = self.getContents(target, 'arraybuffer', requestOpts).done(function(arrayBuffer) { if (needs.md5 && hashLibs.SparkMD5) { jobs.push((function() { var job = $.Deferred(); try { var wk = self.getWorker(); job.fail(function() { wk && wk.terminate(); }); wk.onmessage = function(ans) { wk && wk.terminate(); if (ans.data.hash) { var f; res.md5 = ans.data.hash; if (f = self.file(target)) { f.md5 = res.md5; } } else if (ans.data.error) { res.md5 = ans.data.error; } dfd.notify(res); job.resolve(); }; wk.onerror = function(e) { job.reject(); }; wk.postMessage({ scripts: [self.options.cdns.sparkmd5, self.getWorkerUrl('calcfilehash.js')], data: { type: 'md5', bin: arrayBuffer } }); dfd.fail(function() { job.reject(); }); } catch(e) { job.reject(); delete hashLibs.SparkMD5; } return job; })()); } if (hashLibs.jsSHA) { $.each(['1', '224', '256', '384', '512', '3-224', '3-256', '3-384', '3-512', 'ke128', 'ke256'], function(i, v) { if (needs['sha' + v]) { jobs.push((function() { var job = $.Deferred(); try { var wk = self.getWorker(); job.fail(function() { wk && wk.terminate(); }); wk.onmessage = function(ans) { wk && wk.terminate(); if (ans.data.hash) { var f; res['sha' + v] = ans.data.hash; if (f = self.file(target)) { f['sha' + v] = res['sha' + v]; } } else if (ans.data.error) { res['sha' + v] = ans.data.error; } dfd.notify(res); job.resolve(); }; wk.onerror = function(e) { job.reject(); }; wk.postMessage({ scripts: [self.options.cdns.jssha, self.getWorkerUrl('calcfilehash.js')], data: { type: v, bin: arrayBuffer, hashOpts: opts } }); dfd.fail(function() { job.reject(); }); } catch(e) { job.reject(); delete hashLibs.jsSHA; } return job; })()); } }); } if (jobs.length) { $.when.apply(null, jobs).always(function() { dfd.resolve(res); }); } else { dfd.reject(); } }).fail(function() { dfd.reject(); }); } else { dfd.reject(); } return dfd; }; })(this); /** * Parse error value to display * * @param Mixed error * @return Mixed parsed error */ this.parseError = function(error) { var arg = error; if ($.isPlainObject(arg)) { arg = arg.error; } return arg; }; /** * Alias for this.trigger('error', {error : 'message'}) * * @param String error message * @return elFinder **/ this.error = function() { var arg = arguments[0], opts = arguments[1] || null, err; if (arguments.length == 1 && typeof(arg) === 'function') { return self.bind('error', arg); } else { err = this.parseError(arg); return (err === true || !err)? this : self.trigger('error', {error: err, opts : opts}); } }; // create bind/trigger aliases for build-in events $.each(events, function(i, name) { self[name] = function() { var arg = arguments[0]; return arguments.length == 1 && typeof(arg) == 'function' ? self.bind(name, arg) : self.trigger(name, $.isPlainObject(arg) ? arg : {}); }; }); // bind core event handlers this .enable(function() { if (!enabled && self.api && self.visible() && self.ui.overlay.is(':hidden') && ! node.children('.elfinder-dialog.' + self.res('class', 'editing') + ':visible').length) { enabled = true; document.activeElement && document.activeElement.blur(); node.removeClass('elfinder-disabled'); } }) .disable(function() { prevEnabled = enabled; enabled = false; node.addClass('elfinder-disabled'); }) .open(function() { selected = []; }) .select(function(e) { var cnt = 0, unselects = []; selected = $.grep(e.data.selected || e.data.value|| [], function(hash) { if (unselects.length || (self.maxTargets && ++cnt > self.maxTargets)) { unselects.push(hash); return false; } else { return files[hash] ? true : false; } }); if (unselects.length) { self.trigger('unselectfiles', {files: unselects, inselect: true}); self.toast({mode: 'warning', msg: self.i18n(['errMaxTargets', self.maxTargets])}); } }) .error(function(e) { var opts = { cssClass : 'elfinder-dialog-error', title : self.i18n('error'), resizable : false, destroyOnClose : true, buttons : {} }, node = self.getUI(), cnt = node.children('.elfinder-dialog-error').length, last, counter; if (cnt < self.options.maxErrorDialogs) { opts.buttons[self.i18n(self.i18n('btnClose'))] = function() { $(this).elfinderdialog('close'); }; if (e.data.opts && $.isPlainObject(e.data.opts)) { Object.assign(opts, e.data.opts); } self.dialog(''+self.i18n(e.data.error), opts); } else { last = node.children('.elfinder-dialog-error:last').children('.ui-dialog-content:first'); counter = last.children('.elfinder-error-counter'); if (counter.length) { counter.data('cnt', parseInt(counter.data('cnt')) + 1).html(self.i18n(['moreErrors', counter.data('cnt')])); } else { counter = $(''+ self.i18n(['moreErrors', 1]) +'').data('cnt', 1); last.append('
      ', counter); } } }) .bind('tmb', function(e) { $.each(e.data.images||[], function(hash, tmb) { if (files[hash]) { files[hash].tmb = tmb; } }); }) .bind('searchstart', function(e) { Object.assign(self.searchStatus, e.data); self.searchStatus.state = 1; }) .bind('search', function(e) { self.searchStatus.state = 2; }) .bind('searchend', function() { self.searchStatus.state = 0; self.searchStatus.ininc = false; self.searchStatus.mixed = false; }) .bind('canMakeEmptyFile', function(e) { var data = e.data, obj = {}; if (data && Array.isArray(data.mimes)) { if (!data.unshift) { obj = self.mimesCanMakeEmpty; } $.each(data.mimes, function() { if (!obj[this]) { obj[this] = self.mimeTypes[this]; } }); if (data.unshift) { self.mimesCanMakeEmpty = Object.assign(obj, self.mimesCanMakeEmpty); } } }) .bind('themechange', function() { requestAnimationFrame(function() { self.trigger('uiresize'); }); }) ; // We listen and emit a sound on delete according to option if (true === this.options.sound) { this.bind('playsound', function(e) { var play = beeper.canPlayType && beeper.canPlayType('audio/wav; codecs="1"'), file = e.data && e.data.soundFile; play && file && play != '' && play != 'no' && $(beeper).html('')[0].play(); }); } // bind external event handlers $.each(this.options.handlers, function(event, callback) { self.bind(event, callback); }); /** * History object. Store visited folders * * @type Object **/ this.history = new this.history(this); /** * Root hashed * * @type Object */ this.roots = {}; /** * leaf roots * * @type Object */ this.leafRoots = {}; this.volumeExpires = {}; /** * Loaded commands * * @type Object **/ this._commands = {}; if (!Array.isArray(this.options.commands)) { this.options.commands = []; } if ($.inArray('*', this.options.commands) !== -1) { this.options.commands = Object.keys(this.commands); } /** * UI command map of cwd volume ( That volume driver option `uiCmdMap` ) * * @type Object **/ this.commandMap = {}; /** * cwd options of each volume * key: volumeid * val: options object * * @type Object */ this.volOptions = {}; /** * Has volOptions data * * @type Boolean */ this.hasVolOptions = false; /** * Hash of trash holders * key: trash folder hash * val: source volume hash * * @type Object */ this.trashes = {}; /** * cwd options of each folder/file * key: hash * val: options object * * @type Object */ this.optionsByHashes = {}; /** * UI Auto Hide Functions * Each auto hide function mast be call to `fm.trigger('uiautohide')` at end of process * * @type Array **/ this.uiAutoHide = []; // trigger `uiautohide` this.one('open', function() { if (self.uiAutoHide.length) { setTimeout(function() { self.trigger('uiautohide'); }, 500); } }); // Auto Hide Functions sequential processing start this.bind('uiautohide', function() { if (self.uiAutoHide.length) { self.uiAutoHide.shift()(); } }); if (this.options.width) { width = this.options.width; } if (this.options.height) { height = this.options.height; } if (this.options.heightBase) { heightBase = $(this.options.heightBase); } if (this.options.soundPath) { soundPath = this.options.soundPath.replace(/\/+$/, '') + '/'; } else { soundPath = this.baseUrl + soundPath; } if (this.options.parrotHeaders && Array.isArray(this.options.parrotHeaders) && this.options.parrotHeaders.length) { this.parrotHeaders = this.options.parrotHeaders; // check sessionStorage $.each(this.parrotHeaders, function(i, h) { var v = self.sessionStorage('core-ph:' + h); if (v) { self.customHeaders[h] = v; } }); } else { this.parrotHeaders = []; } self.one('opendone', function() { var tm; // attach events to document $(document) // disable elfinder on click outside elfinder .on('click.'+namespace, function(e) { enabled && ! self.options.enableAlways && !$(e.target).closest(node).length && self.disable(); }) // exec shortcuts .on(keydown+' '+keypress+' '+keyup+' '+mousedown, execShortcut); // attach events to window self.options.useBrowserHistory && $(window) .on('popstate.' + namespace, function(ev) { var state = ev.originalEvent.state || {}, hasThash = state.thash? true : false, dialog = node.find('.elfinder-frontmost:visible'), input = node.find('.elfinder-navbar-dir,.elfinder-cwd-filename').find('input,textarea'), onOpen, toast; if (!hasThash) { state = { thash: self.cwd().hash }; // scroll to elFinder node $('html,body').animate({ scrollTop: node.offset().top }); } if (dialog.length || input.length) { history.pushState(state, null, location.pathname + location.search + '#elf_' + state.thash); if (dialog.length) { if (!dialog.hasClass(self.res('class', 'preventback'))) { if (dialog.hasClass('elfinder-contextmenu')) { $(document).trigger($.Event('keydown', { keyCode: $.ui.keyCode.ESCAPE, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false })); } else if (dialog.hasClass('elfinder-dialog')) { dialog.elfinderdialog('close'); } else { dialog.trigger('close'); } } } else { input.trigger($.Event('keydown', { keyCode: $.ui.keyCode.ESCAPE, ctrlKey : false, shiftKey : false, altKey : false, metaKey : false })); } } else { if (hasThash) { !$.isEmptyObject(self.files()) && self.request({ data : {cmd : 'open', target : state.thash, onhistory : 1}, notify : {type : 'open', cnt : 1, hideCnt : true}, syncOnFail : true }); } else { onOpen = function() { toast.trigger('click'); }; self.one('open', onOpen, true); toast = self.toast({ msg: self.i18n('pressAgainToExit'), onHidden: function() { self.unbind('open', onOpen); history.pushState(state, null, location.pathname + location.search + '#elf_' + state.thash); } }); } } }); $(window).on('resize.' + namespace, function(e){ if (e.target === this) { tm && cancelAnimationFrame(tm); tm = requestAnimationFrame(function() { var prv = node.data('resizeSize') || {w: 0, h: 0}, size = {w: Math.round(node.width()), h: Math.round(node.height())}; node.data('resizeSize', size); if (size.w !== prv.w || size.h !== prv.h) { node.trigger('resize'); self.trigger('resize', {width : size.w, height : size.h}); } }); } }) .on('beforeunload.' + namespace,function(e){ var msg, cnt; if (!self.pauseUnloadCheck()) { if (node.is(':visible')) { if (self.ui.notify.children().length && $.inArray('hasNotifyDialog', self.options.windowCloseConfirm) !== -1) { msg = self.i18n('ntfsmth'); } else if (node.find('.'+self.res('class', 'editing')).length && $.inArray('editingFile', self.options.windowCloseConfirm) !== -1) { msg = self.i18n('editingFile'); } else if ((cnt = Object.keys(self.selected()).length) && $.inArray('hasSelectedItem', self.options.windowCloseConfirm) !== -1) { msg = self.i18n('hasSelected', ''+cnt); } else if ((cnt = Object.keys(self.clipboard()).length) && $.inArray('hasClipboardData', self.options.windowCloseConfirm) !== -1) { msg = self.i18n('hasClipboard', ''+cnt); } if (msg) { e.returnValue = msg; return msg; } } self.trigger('unload'); } }); // bind window onmessage for CORS $(window).on('message.' + namespace, function(e){ var res = e.originalEvent || null, obj, data; if (res && (self.convAbsUrl(self.options.url).indexOf(res.origin) === 0 || self.convAbsUrl(self.uploadURL).indexOf(res.origin) === 0)) { try { obj = JSON.parse(res.data); data = obj.data || null; if (data) { if (data.error) { if (obj.bind) { self.trigger(obj.bind+'fail', data); } self.error(data.error); } else { data.warning && self.error(data.warning); self.updateCache(data); data.removed && data.removed.length && self.remove(data); data.added && data.added.length && self.add(data); data.changed && data.changed.length && self.change(data); if (obj.bind) { self.trigger(obj.bind, data); self.trigger(obj.bind+'done'); } data.sync && self.sync(); } } } catch (e) { self.sync(); } } }); // elFinder enable always if (self.options.enableAlways) { $(window).on('focus.' + namespace, function(e){ (e.target === this) && self.enable(); }); if (inFrame) { $(window.top).on('focus.' + namespace, function() { if (self.enable() && (! parentIframe || parentIframe.is(':visible'))) { requestAnimationFrame(function() { $(window).trigger('focus'); }); } }); } } else if (inFrame) { $(window).on('blur.' + namespace, function(e){ enabled && e.target === this && self.disable(); }); } // return focus to the window on click (elFInder in the frame) if (inFrame) { node.on('click', function(e) { $(window).trigger('focus'); }); } // elFinder to enable by mouse over if (self.options.enableByMouseOver) { node.on('mouseenter touchstart', function(e) { (inFrame) && $(window).trigger('focus'); ! self.enabled() && self.enable(); }); } // When the browser tab turn to foreground/background $(window).on('visibilitychange.' + namespace, function(e) { var background = document.hidden || document.webkitHidden || document.msHidden; // AutoSync turn On/Off if (self.options.syncStart) { self.autoSync(background? 'stop' : void(0)); } }); }); // store instance in node node[0].elfinder = this; // auto load language file dfrdsBeforeBootup.push((function() { var lang = self.lang, langJs = self.i18nBaseUrl + 'elfinder.' + lang + '.js', dfd = $.Deferred().done(function() { if (self.i18[lang]) { self.lang = lang; } self.trigger('i18load'); i18n = self.lang === 'en' ? self.i18['en'] : $.extend(true, {}, self.i18['en'], self.i18[self.lang]); }); if (!self.i18[lang]) { self.lang = 'en'; if (self.hasRequire) { require([langJs], function() { dfd.resolve(); }, function() { dfd.resolve(); }); } else { self.loadScript([langJs], function() { dfd.resolve(); }, { loadType: 'tag', error : function() { dfd.resolve(); } }); } } else { dfd.resolve(); } return dfd; })()); // elFinder boot up function bootUp = function() { var columnNames; /** * i18 messages * * @type Object **/ self.messages = i18n.messages; // check jquery ui if (!($.fn.selectable && $.fn.draggable && $.fn.droppable && $.fn.resizable && $.fn.button && $.fn.slider)) { return alert(self.i18n('errJqui')); } // check node if (!node.length) { return alert(self.i18n('errNode')); } // check connector url if (!self.options.url) { return alert(self.i18n('errURL')); } // column key/name map for fm.getColumnName() columnNames = Object.assign({ name : self.i18n('name'), perm : self.i18n('perms'), date : self.i18n('modify'), size : self.i18n('size'), kind : self.i18n('kind'), modestr : self.i18n('mode'), modeoct : self.i18n('mode'), modeboth : self.i18n('mode') }, self.options.uiOptions.cwd.listView.columnsCustomName); /** * Gets the column name of cwd list view * * @param String key The key * @return String The column name. */ self.getColumnName = function(key) { var res = columnNames[key] || self.i18n(key); return typeof res === 'function'? res() : res; }; /** * Interface direction * * @type String * @default "ltr" **/ self.direction = i18n.direction; /** * Date/time format * * @type String * @default "m.d.Y" **/ self.dateFormat = self.options.dateFormat || i18n.dateFormat; /** * Date format like "Yesterday 10:20:12" * * @type String * @default "{day} {time}" **/ self.fancyFormat = self.options.fancyDateFormat || i18n.fancyDateFormat; /** * Date format for if upload file has not original unique name * e.g. Clipboard image data, Image data taken with iOS * * @type String * @default "ymd-His" **/ self.nonameDateFormat = (self.options.nonameDateFormat || i18n.nonameDateFormat).replace(/[\/\\]/g, '_'); /** * Css classes * * @type String **/ self.cssClass = 'ui-helper-reset ui-helper-clearfix ui-widget ui-widget-content ui-corner-all elfinder elfinder-' +(self.direction == 'rtl' ? 'rtl' : 'ltr') +(self.UA.Touch? (' elfinder-touch' + (self.options.resizable ? ' touch-punch' : '')) : '') +(self.UA.Mobile? ' elfinder-mobile' : '') +(self.UA.iOS? ' elfinder-ios' : '') +' '+self.options.cssClass; // prepare node node.addClass(self.cssClass) .on(mousedown, function() { !enabled && self.enable(); }); // draggable closure (function() { var ltr, wzRect, wzBottom, wzBottom2, nodeStyle, keyEvt = keydown + 'draggable' + ' keyup.' + namespace + 'draggable'; /** * Base draggable options * * @type Object **/ self.draggable = { appendTo : node, addClasses : false, distance : 4, revert : true, refreshPositions : false, cursor : 'crosshair', cursorAt : {left : 50, top : 47}, scroll : false, start : function(e, ui) { var helper = ui.helper, targets = $.grep(helper.data('files')||[], function(h) { if (h) { remember[h] = true; return true; } return false; }), locked = false, cnt, h; // fix node size nodeStyle = node.attr('style'); node.width(node.width()).height(node.height()); // set var for drag() ltr = (self.direction === 'ltr'); wzRect = self.getUI('workzone').data('rectangle'); wzBottom = wzRect.top + wzRect.height; wzBottom2 = wzBottom - self.getUI('navdock').outerHeight(true); self.draggingUiHelper = helper; cnt = targets.length; while (cnt--) { h = targets[cnt]; if (files[h].locked) { locked = true; helper.data('locked', true); break; } } !locked && self.trigger('lockfiles', {files : targets}); helper.data('autoScrTm', setInterval(function() { if (helper.data('autoScr')) { self.autoScroll[helper.data('autoScr')](helper.data('autoScrVal')); } }, 50)); }, drag : function(e, ui) { var helper = ui.helper, autoScr, autoUp, bottom; if ((autoUp = wzRect.top > e.pageY) || wzBottom2 < e.pageY) { if (wzRect.cwdEdge > e.pageX) { autoScr = (ltr? 'navbar' : 'cwd') + (autoUp? 'Up' : 'Down'); } else { autoScr = (ltr? 'cwd' : 'navbar') + (autoUp? 'Up' : 'Down'); } if (!autoUp) { if (autoScr.substr(0, 3) === 'cwd') { if (wzBottom < e.pageY) { bottom = wzBottom; } else { autoScr = null; } } else { bottom = wzBottom2; } } if (autoScr) { helper.data('autoScr', autoScr); helper.data('autoScrVal', Math.pow((autoUp? wzRect.top - e.pageY : e.pageY - bottom), 1.3)); } } if (! autoScr) { if (helper.data('autoScr')) { helper.data('refreshPositions', 1).data('autoScr', null); } } if (helper.data('refreshPositions') && $(this).elfUiWidgetInstance('draggable')) { if (helper.data('refreshPositions') > 0) { $(this).draggable('option', { refreshPositions : true, elfRefresh : true }); helper.data('refreshPositions', -1); } else { $(this).draggable('option', { refreshPositions : false, elfRefresh : false }); helper.data('refreshPositions', null); } } }, stop : function(e, ui) { var helper = ui.helper, files; $(document).off(keyEvt); $(this).elfUiWidgetInstance('draggable') && $(this).draggable('option', { refreshPositions : false }); self.draggingUiHelper = null; self.trigger('focus').trigger('dragstop'); if (! helper.data('droped')) { files = $.grep(helper.data('files')||[], function(h) { return h? true : false ;}); self.trigger('unlockfiles', {files : files}); self.trigger('selectfiles', {files : self.selected()}); } self.enable(); // restore node style node.attr('style', nodeStyle); helper.data('autoScrTm') && clearInterval(helper.data('autoScrTm')); }, helper : function(e, ui) { var element = this.id ? $(this) : $(this).parents('[id]:first'), helper = $('
      '), icon = function(f) { var mime = f.mime, i, tmb = self.tmb(f); i = '
      '; if (tmb) { i = $(i).addClass(tmb.className).css('background-image', "url('"+tmb.url+"')").get(0).outerHTML; } else if (f.icon) { i = $(i).css(self.getIconStyle(f, true)).get(0).outerHTML; } if (f.csscls) { i = '
      ' + i + '
      '; } return i; }, hashes, l, ctr; self.draggingUiHelper && self.draggingUiHelper.stop(true, true); self.trigger('dragstart', {target : element[0], originalEvent : e}, true); hashes = element.hasClass(self.res('class', 'cwdfile')) ? self.selected() : [self.navId2Hash(element.attr('id'))]; helper.append(icon(files[hashes[0]])).data('files', hashes).data('locked', false).data('droped', false).data('namespace', namespace).data('dropover', 0); if ((l = hashes.length) > 1) { helper.append(icon(files[hashes[l-1]]) + ''+l+''); } $(document).on(keyEvt, function(e){ if (self._commands.copy) { var chk = (e.shiftKey||e.ctrlKey||e.metaKey); if (ctr !== chk) { ctr = chk; if (helper.is(':visible') && helper.data('dropover') && ! helper.data('droped')) { helper.toggleClass('elfinder-drag-helper-plus', helper.data('locked')? true : ctr); self.trigger(ctr? 'unlockfiles' : 'lockfiles', {files : hashes, helper: helper}); } } } }); return helper; } }; })(); // in getFileCallback set - change default actions on double click/enter/ctrl+enter if (self.commands.getfile) { if (typeof(self.options.getFileCallback) == 'function') { self.bind('dblclick', function(e) { e.preventDefault(); self.exec('getfile').fail(function() { self.exec('open', e.data && e.data.file? [ e.data.file ]: void(0)); }); }); self.shortcut({ pattern : 'enter', description : self.i18n('cmdgetfile'), callback : function() { self.exec('getfile').fail(function() { self.exec(self.OS == 'mac' ? 'rename' : 'open'); }); } }) .shortcut({ pattern : 'ctrl+enter', description : self.i18n(self.OS == 'mac' ? 'cmdrename' : 'cmdopen'), callback : function() { self.exec(self.OS == 'mac' ? 'rename' : 'open'); } }); } else { self.options.getFileCallback = null; } } // load commands $.each(self.commands, function(name, cmd) { var proto = Object.assign({}, cmd.prototype), extendsCmd, opts; if ($.isFunction(cmd) && !self._commands[name] && (cmd.prototype.forceLoad || $.inArray(name, self.options.commands) !== -1)) { extendsCmd = cmd.prototype.extendsCmd || ''; if (extendsCmd) { if ($.isFunction(self.commands[extendsCmd])) { cmd.prototype = Object.assign({}, base, new self.commands[extendsCmd](), cmd.prototype); } else { return true; } } else { cmd.prototype = Object.assign({}, base, cmd.prototype); } self._commands[name] = new cmd(); cmd.prototype = proto; opts = self.options.commandsOptions[name] || {}; if (extendsCmd && self.options.commandsOptions[extendsCmd]) { opts = $.extend(true, {}, self.options.commandsOptions[extendsCmd], opts); } self._commands[name].setup(name, opts); // setup linked commands if (self._commands[name].linkedCmds.length) { $.each(self._commands[name].linkedCmds, function(i, n) { var lcmd = self.commands[n]; if ($.isFunction(lcmd) && !self._commands[n]) { lcmd.prototype = base; self._commands[n] = new lcmd(); self._commands[n].setup(n, self.options.commandsOptions[n]||{}); } }); } } }); /** * UI nodes * * @type Object **/ self.ui = { // container for nav panel and current folder container workzone : $('
      ').appendTo(node).elfinderworkzone(self), // contaainer for folders tree / places navbar : $('
      ').appendTo(node).elfindernavbar(self, self.options.uiOptions.navbar || {}), // container for for preview etc at below the navbar navdock : $('
      ').appendTo(node).elfindernavdock(self, self.options.uiOptions.navdock || {}), // contextmenu contextmenu : $('
      ').appendTo(node).elfindercontextmenu(self), // overlay overlay : $('
      ').appendTo(node).elfinderoverlay({ show : function() { self.disable(); }, hide : function() { prevEnabled && self.enable(); } }), // current folder container cwd : $('
      ').appendTo(node).elfindercwd(self, self.options.uiOptions.cwd || {}), // notification dialog window notify : self.dialog('', { cssClass : 'elfinder-dialog-notify' + (self.options.notifyDialog.canClose? '' : ' elfinder-titlebar-button-hide'), position : self.options.notifyDialog.position, absolute : true, resizable : false, autoOpen : false, allowMinimize : true, closeOnEscape : self.options.notifyDialog.canClose? true : false, title : ' ', width : self.options.notifyDialog.width? parseInt(self.options.notifyDialog.width) : null, minHeight : null, minimize : function() { self.ui.notify.trigger('minimize'); } }), statusbar : $('
      ').hide().appendTo(node), toast : $('
      ').appendTo(node), bottomtray : $('
      ').appendTo(node), progressbar : $('
      ').appendTo(node) }; self.trigger('uiready'); // load required ui $.each(self.options.ui || [], function(i, ui) { var name = 'elfinder'+ui, opts = self.options.uiOptions[ui] || {}; if (!self.ui[ui] && $.fn[name]) { // regist to self.ui before make instance self.ui[ui] = $('<'+(opts.tag || 'div')+'/>').appendTo(node); self.ui[ui][name](self, opts); } }); self.ui.progressbar.appendTo(self.ui.workzone); self.ui.notify.prev('.ui-dialog-titlebar').append('
      '); // update size self.resize(width, height); // make node resizable if (self.options.resizable) { node.resizable({ resize : function(e, ui) { self.resize(ui.size.width, ui.size.height); }, handles : 'se', minWidth : 300, minHeight : 200 }); if (self.UA.Touch) { node.addClass('touch-punch'); } } (function() { var navbar = self.getUI('navbar'), cwd = self.getUI('cwd').parent(); self.autoScroll = { navbarUp : function(v) { navbar.scrollTop(Math.max(0, navbar.scrollTop() - v)); }, navbarDown : function(v) { navbar.scrollTop(navbar.scrollTop() + v); }, cwdUp : function(v) { cwd.scrollTop(Math.max(0, cwd.scrollTop() - v)); }, cwdDown : function(v) { cwd.scrollTop(cwd.scrollTop() + v); } }; })(); // Swipe on the touch devices to show/hide of toolbar or navbar if (self.UA.Touch) { (function() { var lastX, lastY, nodeOffset, nodeWidth, nodeTop, navbarW, toolbarH, navbar = self.getUI('navbar'), toolbar = self.getUI('toolbar'), moveEv = 'touchmove.stopscroll', moveTm, moveUpOn = function(e) { var touches = e.originalEvent.touches || [{}], y = touches[0].pageY || null; if (!lastY || y < lastY) { e.preventDefault(); moveTm && clearTimeout(moveTm); } }, moveDownOn = function(e) { e.preventDefault(); moveTm && clearTimeout(moveTm); }, moveOff = function() { moveTm = setTimeout(function() { node.off(moveEv); }, 100); }, handleW, handleH = 50; navbar = navbar.children().length? navbar : null; toolbar = toolbar.length? toolbar : null; node.on('touchstart touchmove touchend', function(e) { if (e.type === 'touchend') { lastX = false; lastY = false; moveOff(); return; } var touches = e.originalEvent.touches || [{}], x = touches[0].pageX || null, y = touches[0].pageY || null, ltr = (self.direction === 'ltr'), navbarMode, treeWidth, swipeX, moveX, toolbarT, mode; if (x === null || y === null || (e.type === 'touchstart' && touches.length > 1)) { return; } if (e.type === 'touchstart') { nodeOffset = node.offset(); nodeWidth = node.width(); if (navbar) { lastX = false; if (navbar.is(':hidden')) { if (! handleW) { handleW = Math.max(50, nodeWidth / 10); } if ((ltr? (x - nodeOffset.left) : (nodeWidth + nodeOffset.left - x)) < handleW) { lastX = x; } } else if (! e.originalEvent._preventSwipeX) { navbarW = navbar.width(); if (ltr) { swipeX = (x < nodeOffset.left + navbarW); } else { swipeX = (x > nodeOffset.left + nodeWidth - navbarW); } if (swipeX) { handleW = Math.max(50, nodeWidth / 10); lastX = x; } else { lastX = false; } } } if (toolbar) { lastY = false; if (! e.originalEvent._preventSwipeY) { toolbarH = toolbar.height(); nodeTop = nodeOffset.top; if (y - nodeTop < (toolbar.is(':hidden')? handleH : (toolbarH + 30))) { lastY = y; node.on(moveEv, toolbar.is(':hidden')? moveDownOn: moveUpOn); } } } } else { if (navbar && lastX !== false) { navbarMode = (ltr? (lastX > x) : (lastX < x))? 'navhide' : 'navshow'; moveX = Math.abs(lastX - x); if (navbarMode === 'navhide' && moveX > navbarW * 0.6 || (moveX > (navbarMode === 'navhide'? navbarW / 3 : 45) && (navbarMode === 'navshow' || (ltr? x < nodeOffset.left + 20 : x > nodeOffset.left + nodeWidth - 20) )) ) { self.getUI('navbar').trigger(navbarMode, {handleW: handleW}); lastX = false; } } if (toolbar && lastY !== false ) { toolbarT = toolbar.offset().top; if (Math.abs(lastY - y) > Math.min(45, toolbarH / 3)) { mode = (lastY > y)? 'slideUp' : 'slideDown'; if (mode === 'slideDown' || toolbarT + 20 > y) { if (toolbar.is(mode === 'slideDown' ? ':hidden' : ':visible')) { toolbar.stop(true, true).trigger('toggle', {duration: 100, handleH: handleH}); } lastY = false; } } } } }); })(); } if (self.dragUpload) { // add event listener for HTML5 DnD upload (function() { var isin = function(e) { return (e.target.nodeName !== 'TEXTAREA' && e.target.nodeName !== 'INPUT' && $(e.target).closest('div.ui-dialog-content').length === 0); }, ent = 'native-drag-enter', disable = 'native-drag-disable', c = 'class', navdir = self.res(c, 'navdir'), droppable = self.res(c, 'droppable'), dropover = self.res(c, 'adroppable'), arrow = self.res(c, 'navarrow'), clDropActive = self.res(c, 'adroppable'), wz = self.getUI('workzone'), ltr = (self.direction === 'ltr'), clearTm = function() { autoScrTm && cancelAnimationFrame(autoScrTm); autoScrTm = null; }, wzRect, autoScrFn, autoScrTm; node.on('dragenter', function(e) { clearTm(); if (isin(e)) { e.preventDefault(); e.stopPropagation(); wzRect = wz.data('rectangle'); } }) .on('dragleave', function(e) { clearTm(); if (isin(e)) { e.preventDefault(); e.stopPropagation(); } }) .on('dragover', function(e) { var autoUp; if (isin(e)) { e.preventDefault(); e.stopPropagation(); e.originalEvent.dataTransfer.dropEffect = 'none'; if (! autoScrTm) { autoScrTm = requestAnimationFrame(function() { var wzBottom = wzRect.top + wzRect.height, wzBottom2 = wzBottom - self.getUI('navdock').outerHeight(true), fn; if ((autoUp = e.pageY < wzRect.top) || e.pageY > wzBottom2 ) { if (wzRect.cwdEdge > e.pageX) { fn = (ltr? 'navbar' : 'cwd') + (autoUp? 'Up' : 'Down'); } else { fn = (ltr? 'cwd' : 'navbar') + (autoUp? 'Up' : 'Down'); } if (!autoUp) { if (fn.substr(0, 3) === 'cwd') { if (wzBottom < e.pageY) { wzBottom2 = wzBottom; } else { fn = ''; } } } fn && self.autoScroll[fn](Math.pow((autoUp? wzRect.top - e.pageY : e.pageY - wzBottom2), 1.3)); } autoScrTm = null; }); } } else { clearTm(); } }) .on('drop', function(e) { clearTm(); if (isin(e)) { e.stopPropagation(); e.preventDefault(); } }); node.on('dragenter', '.native-droppable', function(e){ if (e.originalEvent.dataTransfer) { var $elm = $(e.currentTarget), id = e.currentTarget.id || null, cwd = null, elfFrom; if (!id) { // target is cwd cwd = self.cwd(); $elm.data(disable, false); try { $.each(e.originalEvent.dataTransfer.types, function(i, v){ if (v.substr(0, 13) === 'elfinderfrom:') { elfFrom = v.substr(13).toLowerCase(); } }); } catch(e) {} } if (!cwd || (cwd.write && (!elfFrom || elfFrom !== (window.location.href + cwd.hash).toLowerCase()))) { e.preventDefault(); e.stopPropagation(); $elm.data(ent, true); $elm.addClass(clDropActive); } else { $elm.data(disable, true); } } }) .on('dragleave', '.native-droppable', function(e){ if (e.originalEvent.dataTransfer) { var $elm = $(e.currentTarget); e.preventDefault(); e.stopPropagation(); if ($elm.data(ent)) { $elm.data(ent, false); } else { $elm.removeClass(clDropActive); } } }) .on('dragover', '.native-droppable', function(e){ if (e.originalEvent.dataTransfer) { var $elm = $(e.currentTarget); e.preventDefault(); e.stopPropagation(); e.originalEvent.dataTransfer.dropEffect = $elm.data(disable)? 'none' : 'copy'; $elm.data(ent, false); } }) .on('drop', '.native-droppable', function(e){ if (e.originalEvent && e.originalEvent.dataTransfer) { var $elm = $(e.currentTarget), id; e.preventDefault(); e.stopPropagation(); $elm.removeClass(clDropActive); if (e.currentTarget.id) { id = $elm.hasClass(navdir)? self.navId2Hash(e.currentTarget.id) : self.cwdId2Hash(e.currentTarget.id); } else { id = self.cwd().hash; } e.originalEvent._target = id; self.exec('upload', {dropEvt: e.originalEvent, target: id}, void 0, id); } }); })(); } // trigger event cssloaded if cssAutoLoad disabled if (self.cssloaded === false) { self.cssloaded = true; self.trigger('cssloaded'); } // calculate elFinder node z-index self.zIndexCalc(); // send initial request and start to pray >_< self.trigger('init') .request({ data : {cmd : 'open', target : self.startDir(), init : 1, tree : 1}, preventDone : true, notify : {type : 'open', cnt : 1, hideCnt : true}, freeze : true }) .fail(function() { self.trigger('fail').disable().lastDir(''); listeners = {}; shortcuts = {}; $(document).add(node).off('.'+namespace); self.trigger = function() { }; }) .done(function(data) { var trashDisable = function(th) { var src = self.file(self.trashes[th]), d = self.options.debug, error; if (src && src.volumeid) { delete self.volOptions[src.volumeid].trashHash; } self.trashes[th] = false; self.debug('backend-error', 'Trash hash "'+th+'" was not found or not writable.'); }, toChkTh = {}; // regist rawStringDecoder if (self.options.rawStringDecoder) { self.registRawStringDecoder(self.options.rawStringDecoder); } // re-calculate elFinder node z-index self.zIndexCalc(); self.load().debug('api', self.api); // update ui's size after init node.trigger('resize'); // initial open open(data); self.trigger('open', data, false); self.trigger('opendone'); if (inFrame && self.options.enableAlways) { $(window).trigger('focus'); } // check self.trashes $.each(self.trashes, function(th) { var dir = self.file(th), src; if (! dir) { toChkTh[th] = true; } else if (dir.mime !== 'directory' || ! dir.write) { trashDisable(th); } }); if (Object.keys(toChkTh).length) { self.request({ data : {cmd : 'info', targets : Object.keys(toChkTh)}, preventDefault : true }).done(function(data) { if (data && data.files) { $.each(data.files, function(i, dir) { if (dir.mime === 'directory' && dir.write) { delete toChkTh[dir.hash]; } }); } }).always(function() { $.each(toChkTh, trashDisable); }); } // to enable / disable self[self.options.enableAlways? 'enable' : 'disable'](); }); // self.timeEnd('load'); // End of bootUp() }; // call bootCallback function with elFinder instance, extraObject - { dfrdsBeforeBootup: dfrdsBeforeBootup } if (bootCallback && typeof bootCallback === 'function') { self.bootCallback = bootCallback; bootCallback.call(node.get(0), self, { dfrdsBeforeBootup: dfrdsBeforeBootup }); } // call dfrdsBeforeBootup functions then boot up elFinder $.when.apply(null, dfrdsBeforeBootup).done(function() { bootUp(); }).fail(function(error) { self.error(error); }); }; //register elFinder to global scope if (typeof toGlobal === 'undefined' || toGlobal) { window.elFinder = elFinder; } /** * Prototype * * @type Object */ elFinder.prototype = { uniqueid : 0, res : function(type, id) { return this.resources[type] && this.resources[type][id]; }, /** * User os. Required to bind native shortcuts for open/rename * * @type String **/ OS : navigator.userAgent.indexOf('Mac') !== -1 ? 'mac' : navigator.userAgent.indexOf('Win') !== -1 ? 'win' : 'other', /** * User browser UA. * jQuery.browser: version deprecated: 1.3, removed: 1.9 * * @type Object **/ UA : (function(){ var self = this, webkit = !document.unqueID && !window.opera && !window.sidebar && 'localStorage' in window && 'WebkitAppearance' in document.documentElement.style, chrome = webkit && window.chrome, /*setRotated = function() { var a = ((screen && screen.orientation && screen.orientation.angle) || window.orientation || 0) + 0; if (a === -90) { a = 270; } UA.Angle = a; UA.Rotated = a % 180 === 0? false : true; },*/ UA = { // Browser IE <= IE 6 ltIE6 : typeof window.addEventListener == "undefined" && typeof document.documentElement.style.maxHeight == "undefined", // Browser IE <= IE 7 ltIE7 : typeof window.addEventListener == "undefined" && typeof document.querySelectorAll == "undefined", // Browser IE <= IE 8 ltIE8 : typeof window.addEventListener == "undefined" && typeof document.getElementsByClassName == "undefined", // Browser IE <= IE 9 ltIE9 : document.uniqueID && document.documentMode <= 9, // Browser IE <= IE 10 ltIE10 : document.uniqueID && document.documentMode <= 10, // Browser IE >= IE 11 gtIE11 : document.uniqueID && document.documentMode >= 11, IE : document.uniqueID, Firefox : window.sidebar, Opera : window.opera, Webkit : webkit, Chrome : chrome, Edge : (chrome && window.msCredentials)? true : false, Safari : webkit && !window.chrome, Mobile : typeof window.orientation != "undefined", Touch : typeof window.ontouchstart != "undefined", iOS : navigator.platform.match(/^iP(?:[ao]d|hone)/), Mac : navigator.platform.match(/^Mac/), Fullscreen : (typeof (document.exitFullscreen || document.webkitExitFullscreen || document.mozCancelFullScreen || document.msExitFullscreen) !== 'undefined'), Angle : 0, Rotated : false, CSS : (function() { var aStyle = document.createElement('a').style, pStyle = document.createElement('p').style, css; css = 'position:sticky;position:-webkit-sticky;'; css += 'width:-webkit-max-content;width:-moz-max-content;width:-ms-max-content;width:max-content;'; aStyle.cssText = css; return { positionSticky : aStyle.position.indexOf('sticky')!==-1, widthMaxContent : aStyle.width.indexOf('max-content')!==-1, flex : typeof pStyle.flex !== 'undefined' }; })() }; return UA; })(), /** * Is cookie enabled * * @type Boolean */ cookieEnabled : window.navigator.cookieEnabled, /** * Has RequireJS? * * @type Boolean */ hasRequire : (typeof define === 'function' && define.amd), /** * Current request command * * @type String */ currentReqCmd : '', /** * Current keyboard state * * @type Object */ keyState : {}, /** * Internationalization object * * @type Object */ i18 : { en : { translator : '', language : 'English', direction : 'ltr', dateFormat : 'd.m.Y H:i', fancyDateFormat : '$1 H:i', nonameDateFormat : 'ymd-His', messages : {} }, months : ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], monthsShort : ['msJan', 'msFeb', 'msMar', 'msApr', 'msMay', 'msJun', 'msJul', 'msAug', 'msSep', 'msOct', 'msNov', 'msDec'], days : ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], daysShort : ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'] }, /** * File mimetype to kind mapping * * @type Object */ kinds : { 'unknown' : 'Unknown', 'directory' : 'Folder', 'group' : 'Selects', 'symlink' : 'Alias', 'symlink-broken' : 'AliasBroken', 'application/x-empty' : 'TextPlain', 'application/postscript' : 'Postscript', 'application/vnd.ms-office' : 'MsOffice', 'application/msword' : 'MsWord', 'application/vnd.ms-word' : 'MsWord', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' : 'MsWord', 'application/vnd.ms-word.document.macroEnabled.12' : 'MsWord', 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' : 'MsWord', 'application/vnd.ms-word.template.macroEnabled.12' : 'MsWord', 'application/vnd.ms-excel' : 'MsExcel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' : 'MsExcel', 'application/vnd.ms-excel.sheet.macroEnabled.12' : 'MsExcel', 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' : 'MsExcel', 'application/vnd.ms-excel.template.macroEnabled.12' : 'MsExcel', 'application/vnd.ms-excel.sheet.binary.macroEnabled.12' : 'MsExcel', 'application/vnd.ms-excel.addin.macroEnabled.12' : 'MsExcel', 'application/vnd.ms-powerpoint' : 'MsPP', 'application/vnd.openxmlformats-officedocument.presentationml.presentation' : 'MsPP', 'application/vnd.ms-powerpoint.presentation.macroEnabled.12' : 'MsPP', 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' : 'MsPP', 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12' : 'MsPP', 'application/vnd.openxmlformats-officedocument.presentationml.template' : 'MsPP', 'application/vnd.ms-powerpoint.template.macroEnabled.12' : 'MsPP', 'application/vnd.ms-powerpoint.addin.macroEnabled.12' : 'MsPP', 'application/vnd.openxmlformats-officedocument.presentationml.slide' : 'MsPP', 'application/vnd.ms-powerpoint.slide.macroEnabled.12' : 'MsPP', 'application/pdf' : 'PDF', 'application/xml' : 'XML', 'application/vnd.oasis.opendocument.text' : 'OO', 'application/vnd.oasis.opendocument.text-template' : 'OO', 'application/vnd.oasis.opendocument.text-web' : 'OO', 'application/vnd.oasis.opendocument.text-master' : 'OO', 'application/vnd.oasis.opendocument.graphics' : 'OO', 'application/vnd.oasis.opendocument.graphics-template' : 'OO', 'application/vnd.oasis.opendocument.presentation' : 'OO', 'application/vnd.oasis.opendocument.presentation-template' : 'OO', 'application/vnd.oasis.opendocument.spreadsheet' : 'OO', 'application/vnd.oasis.opendocument.spreadsheet-template' : 'OO', 'application/vnd.oasis.opendocument.chart' : 'OO', 'application/vnd.oasis.opendocument.formula' : 'OO', 'application/vnd.oasis.opendocument.database' : 'OO', 'application/vnd.oasis.opendocument.image' : 'OO', 'application/vnd.openofficeorg.extension' : 'OO', 'application/x-shockwave-flash' : 'AppFlash', 'application/flash-video' : 'Flash video', 'application/x-bittorrent' : 'Torrent', 'application/javascript' : 'JS', 'application/rtf' : 'RTF', 'application/rtfd' : 'RTF', 'application/x-font-ttf' : 'TTF', 'application/x-font-otf' : 'OTF', 'application/x-rpm' : 'RPM', 'application/x-web-config' : 'TextPlain', 'application/xhtml+xml' : 'HTML', 'application/docbook+xml' : 'DOCBOOK', 'application/x-awk' : 'AWK', 'application/x-gzip' : 'GZIP', 'application/x-bzip2' : 'BZIP', 'application/x-xz' : 'XZ', 'application/zip' : 'ZIP', 'application/x-zip' : 'ZIP', 'application/x-rar' : 'RAR', 'application/x-tar' : 'TAR', 'application/x-7z-compressed' : '7z', 'application/x-jar' : 'JAR', 'text/plain' : 'TextPlain', 'text/x-php' : 'PHP', 'text/html' : 'HTML', 'text/javascript' : 'JS', 'text/css' : 'CSS', 'text/rtf' : 'RTF', 'text/rtfd' : 'RTF', 'text/x-c' : 'C', 'text/x-csrc' : 'C', 'text/x-chdr' : 'CHeader', 'text/x-c++' : 'CPP', 'text/x-c++src' : 'CPP', 'text/x-c++hdr' : 'CPPHeader', 'text/x-shellscript' : 'Shell', 'application/x-csh' : 'Shell', 'text/x-python' : 'Python', 'text/x-java' : 'Java', 'text/x-java-source' : 'Java', 'text/x-ruby' : 'Ruby', 'text/x-perl' : 'Perl', 'text/x-sql' : 'SQL', 'text/xml' : 'XML', 'text/x-comma-separated-values' : 'CSV', 'text/x-markdown' : 'Markdown', 'image/x-ms-bmp' : 'BMP', 'image/jpeg' : 'JPEG', 'image/gif' : 'GIF', 'image/png' : 'PNG', 'image/tiff' : 'TIFF', 'image/x-targa' : 'TGA', 'image/vnd.adobe.photoshop' : 'PSD', 'image/xbm' : 'XBITMAP', 'image/pxm' : 'PXM', 'audio/mpeg' : 'AudioMPEG', 'audio/midi' : 'AudioMIDI', 'audio/ogg' : 'AudioOGG', 'audio/mp4' : 'AudioMPEG4', 'audio/x-m4a' : 'AudioMPEG4', 'audio/wav' : 'AudioWAV', 'audio/x-mp3-playlist' : 'AudioPlaylist', 'video/x-dv' : 'VideoDV', 'video/mp4' : 'VideoMPEG4', 'video/mpeg' : 'VideoMPEG', 'video/x-msvideo' : 'VideoAVI', 'video/quicktime' : 'VideoMOV', 'video/x-ms-wmv' : 'VideoWM', 'video/x-flv' : 'VideoFlash', 'video/x-matroska' : 'VideoMKV', 'video/ogg' : 'VideoOGG' }, /** * File mimetype to file extention mapping * * @type Object * @see elFinder.mimetypes.js */ mimeTypes : {}, /** * Ajax request data validation rules * * @type Object */ rules : { defaults : function(data) { if (!data || (data.added && !Array.isArray(data.added)) || (data.removed && !Array.isArray(data.removed)) || (data.changed && !Array.isArray(data.changed))) { return false; } return true; }, open : function(data) { return data && data.cwd && data.files && $.isPlainObject(data.cwd) && Array.isArray(data.files); }, tree : function(data) { return data && data.tree && Array.isArray(data.tree); }, parents : function(data) { return data && data.tree && Array.isArray(data.tree); }, tmb : function(data) { return data && data.images && ($.isPlainObject(data.images) || Array.isArray(data.images)); }, upload : function(data) { return data && ($.isPlainObject(data.added) || Array.isArray(data.added));}, search : function(data) { return data && data.files && Array.isArray(data.files); } }, /** * Commands costructors * * @type Object */ commands : {}, /** * Commands to add the item (space delimited) * * @type String */ cmdsToAdd : 'archive duplicate extract mkdir mkfile paste rm upload', parseUploadData : function(text) { var self = this, data; if (!$.trim(text)) { return {error : ['errResponse', 'errDataEmpty']}; } try { data = JSON.parse(text); } catch (e) { return {error : ['errResponse', 'errDataNotJSON']}; } data = self.normalize(data); if (!self.validResponse('upload', data)) { return {error : (data.norError || ['errResponse'])}; } data.removed = $.merge((data.removed || []), $.map(data.added || [], function(f) { return self.file(f.hash)? f.hash : null; })); return data; }, iframeCnt : 0, uploads : { // xhr muiti uploading flag xhrUploading: false, // Timer of request fail to sync failSyncTm: null, // current chunkfail requesting chunk chunkfailReq: {}, // check file/dir exists checkExists: function(files, target, fm, isDir) { var dfrd = $.Deferred(), names, renames = [], hashes = {}, chkFiles = [], cancel = function() { var i = files.length; while (--i > -1) { files[i]._remove = true; } }, resolve = function() { dfrd.resolve(renames, hashes); }, check = function() { var existed = [], exists = [], i, c, pathStr = target !== fm.cwd().hash? fm.path(target, true) + fm.option('separator', target) : '', confirm = function(ndx) { var last = ndx == exists.length-1, opts = { cssClass : 'elfinder-confirm-upload', title : fm.i18n('cmdupload'), text : ['errExists', pathStr + exists[ndx].name, 'confirmRepl'], all : !last, accept : { label : 'btnYes', callback : function(all) { !last && !all ? confirm(++ndx) : resolve(); } }, reject : { label : 'btnNo', callback : function(all) { var i; if (all) { i = exists.length; while (ndx < i--) { files[exists[i].i]._remove = true; } } else { files[exists[ndx].i]._remove = true; } !last && !all ? confirm(++ndx) : resolve(); } }, cancel : { label : 'btnCancel', callback : function() { cancel(); resolve(); } }, buttons : [ { label : 'btnBackup', cssClass : 'elfinder-confirm-btn-backup', callback : function(all) { var i; if (all) { i = exists.length; while (ndx < i--) { renames.push(exists[i].name); } } else { renames.push(exists[ndx].name); } !last && !all ? confirm(++ndx) : resolve(); } } ] }; if (!isDir) { opts.buttons.push({ label : 'btnRename' + (last? '' : 'All'), cssClass : 'elfinder-confirm-btn-rename', callback : function() { renames = null; resolve(); } }); } if (fm.iframeCnt > 0) { delete opts.reject; } fm.confirm(opts); }; if (! fm.file(target).read) { // for dropbox type resolve(); return; } names = $.map(files, function(file, i) { return file.name && (!fm.UA.iOS || file.name !== 'image.jpg')? {i: i, name: file.name} : null ;}); fm.request({ data : {cmd : 'ls', target : target, intersect : $.map(names, function(item) { return item.name;})}, notify : {type : 'preupload', cnt : 1, hideCnt : true}, preventDefault : true }) .done(function(data) { var existedArr, cwdItems; if (data) { if (data.error) { cancel(); } else { if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) { if (data.list) { if (Array.isArray(data.list)) { existed = data.list || []; } else { existedArr = []; existed = $.map(data.list, function(n) { if (typeof n === 'string') { return n; } else { // support to >=2.1.11 plugin Normalizer, Sanitizer existedArr = existedArr.concat(n); return false; } }); if (existedArr.length) { existed = existed.concat(existedArr); } hashes = data.list; } exists = $.grep(names, function(name){ return $.inArray(name.name, existed) !== -1 ? true : false ; }); if (exists.length && existed.length && target == fm.cwd().hash) { cwdItems = $.map(fm.files(target), function(file) { return file.name; } ); if ($.grep(existed, function(n) { return $.inArray(n, cwdItems) === -1? true : false; }).length){ fm.sync(); } } } } } } if (exists.length > 0) { confirm(0); } else { resolve(); } }) .fail(function(error) { cancel(); resolve(); error && fm.error(error); }); }; if (fm.api >= 2.1 && typeof files[0] == 'object') { check(); } else { resolve(); } return dfrd; }, // check droped contents checkFile : function(data, fm, target) { if (!!data.checked || data.type == 'files') { return data.files; } else if (data.type == 'data') { var dfrd = $.Deferred(), scanDfd = $.Deferred(), files = [], paths = [], dirctorys = [], processing = 0, items, mkdirs = [], cancel = false, toArray = function(list) { return Array.prototype.slice.call(list || [], 0); }, doScan = function(items) { var entry, readEntries, excludes = fm.options.folderUploadExclude[fm.OS] || null, length = items.length, check = function() { if (--processing < 1 && scanDfd.state() === 'pending') { scanDfd.resolve(); } }, pushItem = function(file) { if (! excludes || ! file.name.match(excludes)) { paths.push(entry.fullPath || ''); files.push(file); } check(); }, readEntries = function(dirReader) { var entries = [], read = function() { dirReader.readEntries(function(results) { if (cancel || !results.length) { for (var i = 0; i < entries.length; i++) { if (cancel) { scanDfd.reject(); break; } doScan([entries[i]]); } check(); } else { entries = entries.concat(toArray(results)); read(); } }, check); }; read(); }; processing++; for (var i = 0; i < length; i++) { if (cancel) { scanDfd.reject(); break; } entry = items[i]; if (entry) { if (entry instanceof File) { pushItem(entry); } else if (entry.isFile) { processing++; entry.file(pushItem, check); } else if (entry.isDirectory) { if (fm.api >= 2.1) { processing++; mkdirs.push(entry.fullPath); readEntries(entry.createReader()); // Start reading dirs. } } } } check(); return scanDfd; }, hasDirs; items = $.map(data.files.items, function(item){ if (item.kind === 'file') { return (item.getAsEntry? item.getAsEntry() : item.webkitGetAsEntry()) || item.getAsFile(); } else { return null; } }); $.each(items, function(i, item) { if (item.isDirectory) { hasDirs = true; return false; } }); if (items.length > 0) { fm.uploads.checkExists(items, target, fm, hasDirs).done(function(renames, hashes){ var dfds = []; if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) { if (renames === null) { data.overwrite = 0; renames = []; } items = $.grep(items, function(item){ var i, bak, hash, dfd, hi; if (item.isDirectory && renames.length) { i = $.inArray(item.name, renames); if (i !== -1) { renames.splice(i, 1); bak = fm.uniqueName(item.name + fm.options.backupSuffix , null, ''); $.each(hashes, function(h, name) { if (item.name == name) { hash = h; return false; } }); if (! hash) { hash = fm.fileByName(item.name, target).hash; } fm.lockfiles({files : [hash]}); dfd = fm.request({ data : {cmd : 'rename', target : hash, name : bak}, notify : {type : 'rename', cnt : 1} }) .fail(function() { item._remove = true; fm.sync(); }) .always(function() { fm.unlockfiles({files : [hash]}); }); dfds.push(dfd); } } return !item._remove? true : false; }); } $.when.apply($, dfds).done(function(){ var notifyto, msg, id = +new Date(); if (items.length > 0) { msg = fm.escape(items[0].name); if (items.length > 1) { msg += ' ... ' + items.length + fm.i18n('items'); } notifyto = setTimeout(function() { fm.notify({ type : 'readdir', id : id, cnt : 1, hideCnt: true, msg : fm.i18n('ntfreaddir') + ' (' + msg + ')', cancel: function() { cancel = true; } }); }, fm.options.notifyDelay); doScan(items).done(function() { notifyto && clearTimeout(notifyto); fm.notify({type : 'readdir', id: id, cnt : -1}); if (cancel) { dfrd.reject(); } else { dfrd.resolve([files, paths, renames, hashes, mkdirs]); } }).fail(function() { dfrd.reject(); }); } else { dfrd.reject(); } }); }); return dfrd.promise(); } else { return dfrd.reject(); } } else { var ret = []; var check = []; var str = data.files[0]; if (data.type == 'html') { var tmp = $("").append($.parseHTML(str.replace(/ src=/ig, ' _elfsrc='))), atag; $('img[_elfsrc]', tmp).each(function(){ var url, purl, self = $(this), pa = self.closest('a'); if (pa && pa.attr('href') && pa.attr('href').match(/\.(?:jpe?g|gif|bmp|png)/i)) { purl = pa.attr('href'); } url = self.attr('_elfsrc'); if (url) { if (purl) { $.inArray(purl, ret) == -1 && ret.push(purl); $.inArray(url, check) == -1 && check.push(url); } else { $.inArray(url, ret) == -1 && ret.push(url); } } // Probably it's clipboard data if (ret.length === 1 && ret[0].match(/^data:image\/png/)) { data.clipdata = true; } }); atag = $('a[href]', tmp); atag.each(function(){ var text, loc, parseUrl = function(url) { var a = document.createElement('a'); a.href = url; return a; }; if (text = $(this).text()) { loc = parseUrl($(this).attr('href')); if (loc.href && loc.href.match(/^(?:ht|f)tp/i) && (atag.length === 1 || ! loc.pathname.match(/(?:\.html?|\/[^\/.]*)$/i) || $.trim(text).match(/\.[a-z0-9-]{1,10}$/i))) { if ($.inArray(loc.href, ret) == -1 && $.inArray(loc.href, check) == -1) ret.push(loc.href); } } }); } else { var regex, m, url; regex = /((?:ht|f)tps?:\/\/[-_.!~*\'()a-z0-9;/?:\@&=+\$,%#\*\[\]]+)/ig; while (m = regex.exec(str)) { url = m[1].replace(/&/g, '&'); if ($.inArray(url, ret) == -1) ret.push(url); } } return ret; } }, // upload transport using XMLHttpRequest xhr : function(data, fm) { var self = fm ? fm : this, node = self.getUI(), xhr = new XMLHttpRequest(), notifyto = null, notifyto1 = null, notifyto2 = null, dataChecked = data.checked, isDataType = (data.isDataType || data.type == 'data'), target = (data.target || self.cwd().hash), dropEvt = (data.dropEvt || null), extraData = data.extraData || null, chunkEnable = (self.option('uploadMaxConn', target) != -1), multiMax = Math.min(5, Math.max(1, self.option('uploadMaxConn', target))), retryWait = 10000, // 10 sec retryMax = 30, // 10 sec * 30 = 300 secs (Max 5 mins) retry = 0, getFile = function(files) { var dfd = $.Deferred(), file; if (files.promise) { files.always(function(f) { dfd.resolve(Array.isArray(f) && f.length? (isDataType? f[0][0] : f[0]) : {}); }); } else { dfd.resolve(files.length? (isDataType? files[0][0] : files[0]) : {}); } return dfd; }, dfrd = $.Deferred() .fail(function(err) { var error = self.parseError(err), userAbort; if (error === 'userabort') { userAbort = true; error = void 0; } if (files && (self.uploads.xhrUploading || userAbort)) { // send request om fail getFile(files).done(function(file) { if (!userAbort) { triggerError(error, file); } if (! file._cid) { // send sync request self.uploads.failSyncTm && clearTimeout(self.uploads.failSyncTm); self.uploads.failSyncTm = setTimeout(function() { self.sync(target); }, 1000); } else if (! self.uploads.chunkfailReq[file._cid]) { // send chunkfail request self.uploads.chunkfailReq[file._cid] = true; setTimeout(function() { fm.request({ data : { cmd: 'upload', target: target, chunk: file._chunk, cid: file._cid, upload: ['chunkfail'], mimes: 'chunkfail' }, options : { type: 'post', url: self.uploadURL }, preventDefault: true }).always(function() { delete self.uploads.chunkfailReq[file._chunk]; }); }, 1000); } }); } else { triggerError(error); } !userAbort && self.sync(); self.uploads.xhrUploading = false; files = null; }) .done(function(data) { self.uploads.xhrUploading = false; files = null; if (data) { self.currentReqCmd = 'upload'; data.warning && triggerError(data.warning); self.updateCache(data); data.removed && data.removed.length && self.remove(data); data.added && data.added.length && self.add(data); data.changed && data.changed.length && self.change(data); self.trigger('upload', data, false); self.trigger('uploaddone'); if (data.toasts && Array.isArray(data.toasts)) { $.each(data.toasts, function() { this.msg && self.toast(this); }); } data.sync && self.sync(); if (data.debug) { self.responseDebug(data); fm.debug('backend-debug', data); } } }) .always(function() { self.abortXHR(xhr); // unregist fnAbort function node.off('uploadabort', fnAbort); $(window).off('unload', fnAbort); notifyto && clearTimeout(notifyto); notifyto1 && clearTimeout(notifyto1); notifyto2 && clearTimeout(notifyto2); dataChecked && !data.multiupload && checkNotify() && self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0}); notifyto1 && uploadedNtf && self.notify({type : 'chunkmerge', cnt : -cnt}); chunkMerge && notifyElm.children('.elfinder-notify-chunkmerge').length && self.notify({type : 'chunkmerge', cnt : -1}); }), formData = new FormData(), files = data.input ? data.input.files : self.uploads.checkFile(data, self, target), cnt = data.checked? (isDataType? files[0].length : files.length) : files.length, isChunked = false, loaded = 0, prev = 0, filesize = 0, notify = false, notifyElm = self.ui.notify, cancelBtn = true, uploadedNtf = false, abort = false, checkNotify = function() { if (!notify && (ntfUpload = notifyElm.children('.elfinder-notify-upload')).length) { notify = true; } return notify; }, fnAbort = function(e, error) { abort = true; self.abortXHR(xhr, { quiet: true, abort: true }); dfrd.reject(error); if (checkNotify()) { self.notify({type : 'upload', cnt : ntfUpload.data('cnt') * -1, progress : 0, size : 0}); } }, cancelToggle = function(show, hasChunk) { ntfUpload.children('.elfinder-notify-cancel')[show? 'show':'hide'](); cancelBtn = show; }, startNotify = function(size) { if (!size) size = filesize; return setTimeout(function() { notify = true; self.notify({type : 'upload', cnt : cnt, progress : loaded - prev, size : size, cancel: function() { node.trigger('uploadabort', 'userabort'); } }); ntfUpload = notifyElm.children('.elfinder-notify-upload'); prev = loaded; if (data.multiupload) { cancelBtn && cancelToggle(true); } else { cancelToggle(cancelBtn && loaded < size); } }, self.options.notifyDelay); }, doRetry = function() { if (retry++ <= retryMax) { if (checkNotify() && prev) { self.notify({type : 'upload', cnt : 0, progress : 0, size : prev}); } self.abortXHR(xhr, { quiet: true }); prev = loaded = 0; setTimeout(function() { var reqId; if (! abort) { xhr.open('POST', self.uploadURL, true); if (self.api >= 2.1029) { reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16); (typeof formData['delete'] === 'function') && formData['delete']('reqid'); formData.append('reqid', reqId); xhr._requestId = reqId; } xhr.send(formData); } }, retryWait); } else { node.trigger('uploadabort', ['errAbort', 'errTimeout']); } }, progress = function() { var node; if (notify) { dfrd.notifyWith(ntfUpload, [{ cnt: ntfUpload.data('cnt'), progress: ntfUpload.data('progress'), total: ntfUpload.data('total') }]); } }, triggerError = function(err, file, unite) { err && self.trigger('xhruploadfail', { error: err, file: file }); if (unite) { if (err) { if (errCnt < self.options.maxErrorDialogs) { if (Array.isArray(err)) { errors = errors.concat(err); } else { errors.push(err); } } errCnt++; } } else { if (err) { self.error(err); } else { if (errors.length) { if (errCnt >= self.options.maxErrorDialogs) { errors = errors.concat('moreErrors', errCnt - self.options.maxErrorDialogs); } self.error(errors); } errors = []; errCnt = 0; } } }, errors = [], errCnt = 0, renames = (data.renames || null), hashes = (data.hashes || null), chunkMerge = false, ntfUpload = $(); // regist fnAbort function node.one('uploadabort', fnAbort); $(window).one('unload.' + fm.namespace, fnAbort); !chunkMerge && (prev = loaded); if (!isDataType && !cnt) { return dfrd.reject(['errUploadNoFiles']); } xhr.addEventListener('error', function() { if (xhr.status == 0) { if (abort) { dfrd.reject(); } else { // ff bug while send zero sized file // for safari - send directory if (!isDataType && data.files && $.grep(data.files, function(f){return ! f.type && f.size === (self.UA.Safari? 1802 : 0)? true : false;}).length) { dfrd.reject(['errAbort', 'errFolderUpload']); } else if (data.input && $.grep(data.input.files, function(f){return ! f.type && f.size === (self.UA.Safari? 1802 : 0)? true : false;}).length) { dfrd.reject(['errUploadNoFiles']); } else { doRetry(); } } } else { node.trigger('uploadabort', 'errConnect'); } }, false); xhr.addEventListener('load', function(e) { var status = xhr.status, res, curr = 0, error = '', errData, errObj; self.setCustomHeaderByXhr(xhr); if (status >= 400) { if (status > 500) { error = 'errResponse'; } else { error = ['errResponse', 'errServerError']; } } else { if (!xhr.responseText) { error = ['errResponse', 'errDataEmpty']; } } if (error) { node.trigger('uploadabort'); getFile(files || {}).done(function(file) { return dfrd.reject(file._cid? null : error); }); } loaded = filesize; if (checkNotify() && (curr = loaded - prev)) { self.notify({type : 'upload', cnt : 0, progress : curr, size : 0}); progress(); } res = self.parseUploadData(xhr.responseText); // chunked upload commit if (res._chunkmerged) { formData = new FormData(); var _file = [{_chunkmerged: res._chunkmerged, _name: res._name, _mtime: res._mtime}]; chunkMerge = true; node.off('uploadabort', fnAbort); notifyto2 = setTimeout(function() { self.notify({type : 'chunkmerge', cnt : 1}); }, self.options.notifyDelay); isDataType? send(_file, files[1]) : send(_file); return; } res._multiupload = data.multiupload? true : false; if (res.error) { errData = { cmd: 'upload', err: res, xhr: xhr, rc: xhr.status }; self.trigger('uploadfail', res); // trigger "requestError" event self.trigger('requestError', errData); if (errData._getEvent && errData._getEvent().isDefaultPrevented()) { res.error = ''; } if (res._chunkfailure || res._multiupload) { abort = true; self.uploads.xhrUploading = false; notifyto && clearTimeout(notifyto); if (ntfUpload.length) { self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0}); dfrd.reject(res); } else { // for multi connection dfrd.reject(); } } else { dfrd.reject(res); } } else { dfrd.resolve(res); } }, false); xhr.upload.addEventListener('loadstart', function(e) { if (!chunkMerge && e.lengthComputable) { loaded = e.loaded; retry && (loaded = 0); filesize = e.total; if (!loaded) { loaded = parseInt(filesize * 0.05); } if (checkNotify()) { self.notify({type : 'upload', cnt : 0, progress : loaded - prev, size : data.multiupload? 0 : filesize}); prev = loaded; progress(); } } }, false); xhr.upload.addEventListener('progress', function(e) { var curr; if (e.lengthComputable && !chunkMerge && xhr.readyState < 2) { loaded = e.loaded; // to avoid strange bug in safari (not in chrome) with drag&drop. // bug: macos finder opened in any folder, // reset safari cache (option+command+e), reload elfinder page, // drop file from finder // on first attempt request starts (progress callback called ones) but never ends. // any next drop - successfull. if (!data.checked && loaded > 0 && !notifyto) { notifyto = startNotify(xhr._totalSize - loaded); } if (!filesize) { filesize = e.total; if (!loaded) { loaded = parseInt(filesize * 0.05); } } curr = loaded - prev; if (checkNotify() && (curr/e.total) >= 0.05) { self.notify({type : 'upload', cnt : 0, progress : curr, size : 0}); prev = loaded; progress(); } if (!uploadedNtf && loaded >= filesize && !isChunked) { // Use "chunkmerge" for "server-in-process" notification uploadedNtf = true; notifyto1 = setTimeout(function() { self.notify({type : 'chunkmerge', cnt : cnt}); }, self.options.notifyDelay); } if (cancelBtn && ! data.multiupload && loaded >= filesize) { checkNotify() && cancelToggle(false); } } }, false); var send = function(files, paths){ var size = 0, fcnt = 1, sfiles = [], c = 0, total = cnt, maxFileSize, totalSize = 0, chunked = [], chunkID = new Date().getTime().toString().substr(-9), // for take care of the 32bit backend system BYTES_PER_CHUNK = Math.min((fm.uplMaxSize? fm.uplMaxSize : 2097152) - 8190, fm.options.uploadMaxChunkSize), // uplMaxSize margin 8kb or options.uploadMaxChunkSize blobSlice = chunkEnable? false : '', blobSize, blobMtime, blobName, i, start, end, chunks, blob, chunk, added, done, last, failChunk, multi = function(files, num){ var sfiles = [], cid, sfilesLen = 0, cancelChk, hasChunk; if (!abort) { while(files.length && sfiles.length < num) { sfiles.push(files.shift()); } sfilesLen = sfiles.length; if (sfilesLen) { cancelChk = sfilesLen; for (var i=0; i < sfilesLen; i++) { if (abort) { break; } cid = isDataType? (sfiles[i][0][0]._cid || null) : (sfiles[i][0]._cid || null); hasChunk = (hasChunk || cid)? true : false; if (!!failChunk[cid]) { last--; continue; } fm.exec('upload', { type: data.type, isDataType: isDataType, files: sfiles[i], checked: true, target: target, dropEvt: dropEvt, renames: renames, hashes: hashes, multiupload: true, overwrite: data.overwrite === 0? 0 : void 0, clipdata: data.clipdata }, void 0, target) .fail(function(error) { if (error && error === 'No such command') { abort = true; fm.error(['errUpload', 'errPerm']); } if (cid) { failChunk[cid] = true; } }) .always(function(e) { if (e && e.added) added = $.merge(added, e.added); if (last <= ++done) { fm.trigger('multiupload', {added: added}); notifyto && clearTimeout(notifyto); if (checkNotify()) { self.notify({type : 'upload', cnt : -cnt, progress : 0, size : 0}); } } if (files.length) { multi(files, 1); // Next one } else { if (--cancelChk <= 1) { if (cancelBtn) { cancelToggle(false, hasChunk); } } dfrd.resolve(); } }); } } } if (sfiles.length < 1 || abort) { if (abort) { notifyto && clearTimeout(notifyto); if (cid) { failChunk[cid] = true; } dfrd.reject(); } else { dfrd.resolve(); self.uploads.xhrUploading = false; } } }, check = function(){ if (!self.uploads.xhrUploading) { self.uploads.xhrUploading = true; multi(sfiles, multiMax); // Max connection: 3 } else { setTimeout(check, 100); } }, reqId, err; if (! dataChecked && (isDataType || data.type == 'files')) { if (! (maxFileSize = fm.option('uploadMaxSize', target))) { maxFileSize = 0; } for (i=0; i < files.length; i++) { try { blob = files[i]; blobSize = blob.size; if (blobSlice === false) { blobSlice = ''; if (self.api >= 2.1) { if ('slice' in blob) { blobSlice = 'slice'; } else if ('mozSlice' in blob) { blobSlice = 'mozSlice'; } else if ('webkitSlice' in blob) { blobSlice = 'webkitSlice'; } } } } catch(e) { cnt--; total--; continue; } // file size check if ((maxFileSize && blobSize > maxFileSize) || (!blobSlice && fm.uplMaxSize && blobSize > fm.uplMaxSize)) { triggerError(['errUploadFile', blob.name, 'errUploadFileSize'], blob, true); cnt--; total--; continue; } // file mime check if (blob.type && ! self.uploadMimeCheck(blob.type, target)) { triggerError(['errUploadFile', blob.name, 'errUploadMime', '(' + blob.type + ')'], blob, true); cnt--; total--; continue; } if (blobSlice && blobSize > BYTES_PER_CHUNK) { start = 0; end = BYTES_PER_CHUNK; chunks = -1; total = Math.floor((blobSize - 1) / BYTES_PER_CHUNK); blobMtime = blob.lastModified? Math.round(blob.lastModified/1000) : 0; blobName = data.clipdata? fm.date(fm.nonameDateFormat) + '.png' : blob.name; totalSize += blobSize; chunked[chunkID] = 0; while(start < blobSize) { chunk = blob[blobSlice](start, end); chunk._chunk = blobName + '.' + (++chunks) + '_' + total + '.part'; chunk._cid = chunkID; chunk._range = start + ',' + chunk.size + ',' + blobSize; chunk._mtime = blobMtime; chunked[chunkID]++; if (size) { c++; } if (typeof sfiles[c] == 'undefined') { sfiles[c] = []; if (isDataType) { sfiles[c][0] = []; sfiles[c][1] = []; } } size = BYTES_PER_CHUNK; fcnt = 1; if (isDataType) { sfiles[c][0].push(chunk); sfiles[c][1].push(paths[i]); } else { sfiles[c].push(chunk); } start = end; end = start + BYTES_PER_CHUNK; } if (chunk == null) { triggerError(['errUploadFile', blob.name, 'errUploadFileSize'], blob, true); cnt--; total--; } else { total += chunks; size = 0; fcnt = 1; c++; } continue; } if ((fm.uplMaxSize && size + blobSize > fm.uplMaxSize) || fcnt > fm.uplMaxFile) { size = 0; fcnt = 1; c++; } if (typeof sfiles[c] == 'undefined') { sfiles[c] = []; if (isDataType) { sfiles[c][0] = []; sfiles[c][1] = []; } } if (isDataType) { sfiles[c][0].push(blob); sfiles[c][1].push(paths[i]); } else { sfiles[c].push(blob); } size += blobSize; totalSize += blobSize; fcnt++; } if (errors.length) { triggerError(); } if (sfiles.length == 0) { // no data data.checked = true; return false; } if (sfiles.length > 1) { // multi upload notifyto = startNotify(totalSize); added = []; done = 0; last = sfiles.length; failChunk = []; check(); return true; } // single upload if (isDataType) { files = sfiles[0][0]; paths = sfiles[0][1]; } else { files = sfiles[0]; } } if (!dataChecked) { if (!fm.UA.Safari || !data.files) { notifyto = startNotify(totalSize); } else { xhr._totalSize = totalSize; } } dataChecked = true; if (! files.length) { dfrd.reject(['errUploadNoFiles']); } xhr.open('POST', self.uploadURL, true); // set request headers if (fm.customHeaders) { $.each(fm.customHeaders, function(key) { xhr.setRequestHeader(key, this); }); } // set xhrFields if (fm.xhrFields) { $.each(fm.xhrFields, function(key) { if (key in xhr) { xhr[key] = this; } }); } if (self.api >= 2.1029) { // request ID reqId = (+ new Date()).toString(16) + Math.floor(1000 * Math.random()).toString(16); formData.append('reqid', reqId); xhr._requestId = reqId; } formData.append('cmd', 'upload'); formData.append(self.newAPI ? 'target' : 'current', target); if (renames && renames.length) { $.each(renames, function(i, v) { formData.append('renames[]', v); }); formData.append('suffix', fm.options.backupSuffix); } if (hashes) { $.each(hashes, function(i, v) { formData.append('hashes['+ i +']', v); }); } $.each(self.customData, function(key, val) { formData.append(key, val); }); $.each(self.options.onlyMimes, function(i, mime) { formData.append('mimes[]', mime); }); $.each(files, function(i, file) { var name, relpath; if (file._chunkmerged) { formData.append('chunk', file._chunkmerged); formData.append('upload[]', file._name); formData.append('mtime[]', file._mtime); data.clipdata && formData.append('overwrite', 0); isChunked = true; } else { if (file._chunkfail) { formData.append('upload[]', 'chunkfail'); formData.append('mimes', 'chunkfail'); } else { if (data.clipdata) { if (!file._chunk) { data.overwrite = 0; name = fm.date(fm.nonameDateFormat) + '.png'; } } else { if (file.name) { name = file.name; if (fm.UA.iOS) { if (name.match(/^image\.jpe?g$/i)) { data.overwrite = 0; name = fm.date(fm.nonameDateFormat) + '.jpg'; } else if (name.match(/^capturedvideo\.mov$/i)) { data.overwrite = 0; name = fm.date(fm.nonameDateFormat) + '.mov'; } } relpath = (file.webkitRelativePath || file.relativePath || file._relativePath || '').replace(/[^\/]+$/, ''); name = relpath + name; } } name? formData.append('upload[]', file, name) : formData.append('upload[]', file); } if (file._chunk) { formData.append('chunk', file._chunk); formData.append('cid' , file._cid); formData.append('range', file._range); formData.append('mtime[]', file._mtime); isChunked = true; } else { formData.append('mtime[]', file.lastModified? Math.round(file.lastModified/1000) : 0); } } }); if (isDataType) { $.each(paths, function(i, path) { formData.append('upload_path[]', path); }); } if (data.overwrite === 0) { formData.append('overwrite', 0); } // send int value that which meta key was pressed when dropped as `dropWith` if (dropEvt) { formData.append('dropWith', parseInt( (dropEvt.altKey ? '1' : '0')+ (dropEvt.ctrlKey ? '1' : '0')+ (dropEvt.metaKey ? '1' : '0')+ (dropEvt.shiftKey? '1' : '0'), 2)); } // set extraData on current request if (extraData) { $.each(extraData, function(key, val) { formData.append(key, val); }); } xhr.send(formData); return true; }; if (! isDataType) { if (files.length > 0) { if (! data.clipdata && renames == null) { var mkdirs = [], paths = [], excludes = fm.options.folderUploadExclude[fm.OS] || null; $.each(files, function(i, file) { var relPath = file.webkitRelativePath || file.relativePath || '', idx, rootDir; if (! relPath) { return false; } if (excludes && file.name.match(excludes)) { file._remove = true; relPath = void(0); } else { // add '/' as prefix to make same to folder uploading with DnD, see #2607 relPath = '/' + relPath.replace(/\/[^\/]*$/, '').replace(/^\//, ''); if (relPath && $.inArray(relPath, mkdirs) === -1) { mkdirs.push(relPath); // checking the root directory to supports see #2378 idx = relPath.substr(1).indexOf('/'); if (idx !== -1 && (rootDir = relPath.substr(0, idx + 1)) && $.inArray(rootDir, mkdirs) === -1) { mkdirs.unshift(rootDir); } } } paths.push(relPath); }); renames = []; hashes = {}; if (mkdirs.length) { (function() { var checkDirs = $.map(mkdirs, function(name) { return name.substr(1).indexOf('/') === -1 ? {name: name.substr(1)} : null;}), cancelDirs = []; fm.uploads.checkExists(checkDirs, target, fm, true).done( function(res, res2) { var dfds = [], dfd, bak, hash; if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) { cancelDirs = $.map(checkDirs, function(dir) { return dir._remove? dir.name : null ;} ); checkDirs = $.grep(checkDirs, function(dir) { return !dir._remove? true : false ;} ); } if (cancelDirs.length) { $.each(paths.concat(), function(i, path) { if ($.inArray(path, cancelDirs) === 0) { files[i]._remove = true; paths[i] = void(0); } }); } files = $.grep(files, function(file) { return file._remove? false : true; }); paths = $.grep(paths, function(path) { return path === void 0 ? false : true; }); if (checkDirs.length) { dfd = $.Deferred(); if (res.length) { $.each(res, function(i, existName) { // backup bak = fm.uniqueName(existName + fm.options.backupSuffix , null, ''); $.each(res2, function(h, name) { if (res[0] == name) { hash = h; return false; } }); if (! hash) { hash = fm.fileByName(res[0], target).hash; } fm.lockfiles({files : [hash]}); dfds.push( fm.request({ data : {cmd : 'rename', target : hash, name : bak}, notify : {type : 'rename', cnt : 1} }) .fail(function(error) { dfrd.reject(error); fm.sync(); }) .always(function() { fm.unlockfiles({files : [hash]}); }) ); }); } else { dfds.push(null); } $.when.apply($, dfds).done(function() { // ensure directories fm.request({ data : {cmd : 'mkdir', target : target, dirs : mkdirs}, notify : {type : 'mkdir', cnt : mkdirs.length}, preventFail: true }) .fail(function(error) { error = error || ['errUnknown']; if (error[0] === 'errCmdParams') { multiMax = 1; } else { multiMax = 0; dfrd.reject(error); } }) .done(function(data) { var rm = false; if (!data.hashes) { data.hashes = {}; } paths = $.map(paths.concat(), function(p, i) { if (p === '/') { return target; } else { if (data.hashes[p]) { return data.hashes[p]; } else { rm = true; files[i]._remove = true; return null; } } }); if (rm) { files = $.grep(files, function(file) { return file._remove? false : true; }); } }) .always(function(data) { if (multiMax) { isDataType = true; if (! send(files, paths)) { dfrd.reject(); } } }); }); } else { dfrd.reject(); } } ); })(); } else { fm.uploads.checkExists(files, target, fm).done( function(res, res2){ if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) { hashes = res2; if (res === null) { data.overwrite = 0; } else { renames = res; } files = $.grep(files, function(file){return !file._remove? true : false ;}); } cnt = files.length; if (cnt > 0) { if (! send(files)) { dfrd.reject(); } } else { dfrd.reject(); } } ); } } else { if (! send(files)) { dfrd.reject(); } } } else { dfrd.reject(); } } else { if (dataChecked) { send(files[0], files[1]); } else { files.done(function(result) { // result: [files, paths, renames, hashes, mkdirs] renames = []; cnt = result[0].length; if (cnt) { if (result[4] && result[4].length) { // ensure directories fm.request({ data : {cmd : 'mkdir', target : target, dirs : result[4]}, notify : {type : 'mkdir', cnt : result[4].length}, preventFail: true }) .fail(function(error) { error = error || ['errUnknown']; if (error[0] === 'errCmdParams') { multiMax = 1; } else { multiMax = 0; dfrd.reject(error); } }) .done(function(data) { var rm = false; if (!data.hashes) { data.hashes = {}; } result[1] = $.map(result[1], function(p, i) { result[0][i]._relativePath = p.replace(/^\//, ''); p = p.replace(/\/[^\/]*$/, ''); if (p === '') { return target; } else { if (data.hashes[p]) { return data.hashes[p]; } else { rm = true; result[0][i]._remove = true; return null; } } }); if (rm) { result[0] = $.grep(result[0], function(file) { return file._remove? false : true; }); } }) .always(function(data) { if (multiMax) { renames = result[2]; hashes = result[3]; send(result[0], result[1]); } }); return; } else { result[1] = $.map(result[1], function() { return target; }); } renames = result[2]; hashes = result[3]; send(result[0], result[1]); } else { dfrd.reject(['errUploadNoFiles']); } }).fail(function(){ dfrd.reject(); }); } } return dfrd; }, // upload transport using iframe iframe : function(data, fm) { var self = fm ? fm : this, input = data.input? data.input : false, files = !input ? self.uploads.checkFile(data, self) : false, dfrd = $.Deferred() .fail(function(error) { error && self.error(error); }), name = 'iframe-'+fm.namespace+(++self.iframeCnt), form = $('
      '), msie = this.UA.IE, // clear timeouts, close notification dialog, remove form/iframe onload = function() { abortto && clearTimeout(abortto); notifyto && clearTimeout(notifyto); notify && self.notify({type : 'upload', cnt : -cnt}); setTimeout(function() { msie && $('').appendTo(form); form.remove(); iframe.remove(); }, 100); }, iframe = $('') .on('load', function() { iframe.off('load') .on('load', function() { onload(); // data will be processed in callback response or window onmessage dfrd.resolve(); }); // notify dialog notifyto = setTimeout(function() { notify = true; self.notify({type : 'upload', cnt : cnt}); }, self.options.notifyDelay); // emulate abort on timeout if (self.options.iframeTimeout > 0) { abortto = setTimeout(function() { onload(); dfrd.reject(['errConnect', 'errTimeout']); }, self.options.iframeTimeout); } form.submit(); }), target = (data.target || self.cwd().hash), names = [], dfds = [], renames = [], hashes = {}, cnt, notify, notifyto, abortto; if (files && files.length) { $.each(files, function(i, val) { form.append(''); }); cnt = 1; } else if (input && $(input).is(':file') && $(input).val()) { if (fm.options.overwriteUploadConfirm && fm.option('uploadOverwrite', target)) { names = input.files? input.files : [{ name: $(input).val().replace(/^(?:.+[\\\/])?([^\\\/]+)$/, '$1') }]; //names = $.map(names, function(file){return file.name? { name: file.name } : null ;}); dfds.push(self.uploads.checkExists(names, target, self).done( function(res, res2){ hashes = res2; if (res === null) { data.overwrite = 0; } else{ renames = res; cnt = $.grep(names, function(file){return !file._remove? true : false ;}).length; if (cnt != names.length) { cnt = 0; } } } )); } cnt = input.files ? input.files.length : 1; form.append(input); } else { return dfrd.reject(); } $.when.apply($, dfds).done(function() { if (cnt < 1) { return dfrd.reject(); } form.append('') .append('') .append('') .append($(input).attr('name', 'upload[]')); if (renames.length > 0) { $.each(renames, function(i, rename) { form.append(''); }); form.append(''); } if (hashes) { $.each(renames, function(i, v) { form.append(''); }); } if (data.overwrite === 0) { form.append(''); } $.each(self.options.onlyMimes||[], function(i, mime) { form.append(''); }); $.each(self.customData, function(key, val) { form.append(''); }); form.appendTo('body'); iframe.appendTo('body'); }); return dfrd; } }, /** * Bind callback to event(s) The callback is executed at most once per event. * To bind to multiply events at once, separate events names by space * * @param String event name * @param Function callback * @param Boolan priority first * @return elFinder */ one : function(ev, callback, priorityFirst) { var self = this, event = ev.toLowerCase(), h = function(e, f) { if (!self.toUnbindEvents[event]) { self.toUnbindEvents[event] = []; } self.toUnbindEvents[event].push({ type: event, callback: h }); return (callback.done? callback.done : callback).apply(this, arguments); }; if (callback.done) { h = {done: h}; } return this.bind(event, h, priorityFirst); }, /** * Set/get data into/from localStorage * * @param String key * @param String|void value * @return String|null */ localStorage : function(key, val) { var self = this, s = window.localStorage, oldkey = 'elfinder-'+(key || '')+this.id, // old key of elFinder < 2.1.6 prefix = window.location.pathname+'-elfinder-', suffix = this.id, clrs = [], retval, oldval, t, precnt, sufcnt; // reset this node data if (typeof(key) === 'undefined') { precnt = prefix.length; sufcnt = suffix.length * -1; $.each(s, function(key) { if (key.substr(0, precnt) === prefix && key.substr(sufcnt) === suffix) { clrs.push(key); } }); $.each(clrs, function(i, key) { s.removeItem(key); }); return true; } // new key of elFinder >= 2.1.6 key = prefix+key+suffix; if (val === null) { return s.removeItem(key); } if (val === void(0) && !(retval = s.getItem(key)) && (oldval = s.getItem(oldkey))) { val = oldval; s.removeItem(oldkey); } if (val !== void(0)) { t = typeof val; if (t !== 'string' && t !== 'number') { val = JSON.stringify(val); } try { s.setItem(key, val); } catch (e) { try { s.clear(); s.setItem(key, val); } catch (e) { self.debug('error', e.toString()); } } retval = s.getItem(key); } if (retval && (retval.substr(0,1) === '{' || retval.substr(0,1) === '[')) { try { return JSON.parse(retval); } catch(e) {} } return retval; }, /** * Set/get data into/from sessionStorage * * @param String key * @param String|void value * @return String|null */ sessionStorage : function(key, val) { var self = this, s, retval, t; try { s = window.sessionStorage; } catch(e) {} if (!s) { return; } if (val === null) { return s.removeItem(key); } if (val !== void(0)) { t = typeof val; if (t !== 'string' && t !== 'number') { val = JSON.stringify(val); } try { s.setItem(key, val); } catch (e) { try { s.clear(); s.setItem(key, val); } catch (e) { self.debug('error', e.toString()); } } } retval = s.getItem(key); if (retval && (retval.substr(0,1) === '{' || retval.substr(0,1) === '[')) { try { return JSON.parse(retval); } catch(e) {} } return retval; }, /** * Get/set cookie * * @param String cookie name * @param String|void cookie value * @return String|null */ cookie : function(name, value) { var d, o, c, i, retval, t; name = 'elfinder-'+name+this.id; if (value === void(0)) { if (this.cookieEnabled && document.cookie && document.cookie != '') { c = document.cookie.split(';'); name += '='; for (i=0; i'), /** * Replace not html-safe symbols to html entities * * @param String text to escape * @return String */ escape : function(name) { return this._node.text(name).html().replace(/"/g, '"').replace(/'/g, '''); }, /** * Cleanup ajax data. * For old api convert data into new api format * * @param String command name * @param Object data from backend * @return Object */ normalize : function(data) { var self = this, fileFilter = (function() { var func, filter; if (filter = self.options.fileFilter) { if (typeof filter === 'function') { func = function(file) { return filter.call(self, file); }; } else if (filter instanceof RegExp) { func = function(file) { return filter.test(file.name); }; } } return func? func : null; })(), chkCmdMap = function(opts) { // Disable command to replace with other command var disabled; if (opts.uiCmdMap) { if ($.isPlainObject(opts.uiCmdMap) && Object.keys(opts.uiCmdMap).length) { if (!opts.disabledFlip) { opts.disabledFlip = {}; } disabled = opts.disabledFlip; $.each(opts.uiCmdMap, function(f, t) { if (t === 'hidden' && !disabled[f]) { opts.disabled.push(f); opts.disabledFlip[f] = true; } }); } else { delete opts.uiCmdMap; } } }, normalizeOptions = function(opts) { var getType = function(v) { var type = typeof v; if (type === 'object' && Array.isArray(v)) { type = 'array'; } return type; }; $.each(self.optionProperties, function(k, empty) { if (empty !== void(0)) { if (opts[k] && getType(opts[k]) !== getType(empty)) { opts[k] = empty; } } }); if (opts.disabled) { opts.disabledFlip = self.arrayFlip(opts.disabled, true); $.each(self.options.disabledCmdsRels, function(com, rels) { var m, flg; if (opts.disabledFlip[com]) { flg = true; } else if (m = com.match(/^([^&]+)&([^=]+)=(.*)$/)) { if (opts.disabledFlip[m[1]] && opts[m[2]] == m[3]) { flg = true; } } if (flg) { $.each(rels, function(i, rel) { if (!opts.disabledFlip[rel]) { opts.disabledFlip[rel] = true; opts.disabled.push(rel); } }); } }); } else { opts.disabledFlip = {}; } return opts; }, filter = function(file, asMap, type) { var res = asMap? file : true, ign = asMap? null : false, vid, targetOptions, isRoot, rootNames; if (file && file.hash && file.name && file.mime) { if (file.mime === 'application/x-empty') { file.mime = 'text/plain'; } isRoot = self.isRoot(file); if (isRoot && ! file.volumeid) { self.debug('warning', 'The volume root statuses requires `volumeid` property.'); } if (isRoot || file.mime === 'directory') { // Prevention of circular reference if (file.phash) { if (file.phash === file.hash) { error = error.concat(['Parent folder of "$1" is itself.', file.name]); return ign; } if (isRoot && file.volumeid && file.phash.indexOf(file.volumeid) === 0) { error = error.concat(['Parent folder of "$1" is inner itself.', file.name]); return ign; } } // set options, tmbUrls for each volume if (file.volumeid) { vid = file.volumeid; if (isRoot) { // make or update of leaf roots cache if (file.phash) { if (! self.leafRoots[file.phash]) { self.leafRoots[file.phash] = [ file.hash ]; } else { if ($.inArray(file.hash, self.leafRoots[file.phash]) === -1) { self.leafRoots[file.phash].push(file.hash); } } } self.hasVolOptions = true; if (! self.volOptions[vid]) { self.volOptions[vid] = { // set dispInlineRegex dispInlineRegex: self.options.dispInlineRegex }; } targetOptions = self.volOptions[vid]; if (file.options) { // >= v.2.1.14 has file.options Object.assign(targetOptions, file.options); } // for compat <= v2.1.13 if (file.disabled) { targetOptions.disabled = file.disabled; targetOptions.disabledFlip = self.arrayFlip(file.disabled, true); } if (file.tmbUrl) { targetOptions.tmbUrl = file.tmbUrl; } // '/' required at the end of url if (targetOptions.url && targetOptions.url.substr(-1) !== '/') { targetOptions.url += '/'; } // check uiCmdMap chkCmdMap(targetOptions); // check trash bin hash if (targetOptions.trashHash) { if (self.trashes[targetOptions.trashHash] === false) { delete targetOptions.trashHash; } else { self.trashes[targetOptions.trashHash] = file.hash; } } // set immediate properties $.each(self.optionProperties, function(k) { if (targetOptions[k]) { file[k] = targetOptions[k]; } }); // regist fm.roots if (type !== 'cwd') { self.roots[vid] = file.hash; } // regist fm.volumeExpires if (file.expires) { self.volumeExpires[vid] = file.expires; } } if (prevId !== vid) { prevId = vid; i18nFolderName = self.option('i18nFolderName', vid); } } // volume root i18n name if (isRoot && ! file.i18) { name = 'volume_' + file.name, i18 = self.i18n(false, name); if (name !== i18) { file.i18 = i18; } } // i18nFolderName if (i18nFolderName && ! file.i18) { name = 'folder_' + file.name, i18 = self.i18n(false, name); if (name !== i18) { file.i18 = i18; } } if (isRoot) { if (rootNames = self.storage('rootNames')) { if (rootNames[file.hash]) { file._name = file.name; file._i18 = file.i18; file.name = rootNames[file.hash] = rootNames[file.hash]; delete file.i18; } self.storage('rootNames', rootNames); } } // lock trash bins holder if (self.trashes[file.hash]) { file.locked = true; } } else { if (fileFilter) { try { if (! fileFilter(file)) { return ign; } } catch(e) { self.debug(e); } } if (file.size == 0) { file.mime = self.getMimetype(file.name, file.mime); } } if (file.options) { self.optionsByHashes[file.hash] = normalizeOptions(file.options); } delete file.options; return res; } return ign; }, getDescendants = function(hashes) { var res = []; $.each(self.files(), function(h, f) { $.each(self.parents(h), function(i, ph) { if ($.inArray(ph, hashes) !== -1 && $.inArray(h, hashes) === -1) { res.push(h); return false; } }); }); return res; }, applyLeafRootStats = function(dataArr, type) { $.each(dataArr, function(i, f) { var pfile, done; if (self.leafRoots[f.hash]) { self.applyLeafRootStats(f); } // update leaf root parent stat if (type !== 'change' && f.phash && self.isRoot(f) && (pfile = self.file(f.phash))) { self.applyLeafRootStats(pfile); // add to data.changed if (!data.changed) { data.changed = [pfile]; } else { $.each(data.changed, function(i, f) { if (f.hash === pfile.hash) { data.changed[i] = pfile; done = true; return false; } }); if (!done) { data.changed.push(pfile); } } } }); }, error = [], name, i18, i18nFolderName, prevId, cData; // set cunstom data if (data.customData && (!self.prevCustomData || (JSON.stringify(data.customData) !== JSON.stringify(self.prevCustomData)))) { self.prevCustomData = data.customData; try { cData = JSON.parse(data.customData); if ($.isPlainObject(cData)) { self.prevCustomData = cData; $.each(Object.keys(cData), function(i, key) { if (cData[key] === null) { delete cData[key]; delete self.optsCustomData[key]; } }); self.customData = Object.assign({}, self.optsCustomData, cData); } } catch(e) {} } if (data.options) { normalizeOptions(data.options); } if (data.cwd) { if (data.cwd.volumeid && data.options && Object.keys(data.options).length && self.isRoot(data.cwd)) { self.hasVolOptions = true; self.volOptions[data.cwd.volumeid] = data.options; } data.cwd = filter(data.cwd, true, 'cwd'); } if (data.files) { data.files = $.grep(data.files, filter); } if (data.tree) { data.tree = $.grep(data.tree, filter); } if (data.added) { data.added = $.grep(data.added, filter); } if (data.changed) { data.changed = $.grep(data.changed, filter); } if (data.removed && data.removed.length && self.searchStatus.state === 2) { data.removed = data.removed.concat(getDescendants(data.removed)); } if (data.api) { data.init = true; } if (Object.keys(self.leafRoots).length) { data.files && applyLeafRootStats(data.files); data.tree && applyLeafRootStats(data.tree); data.added && applyLeafRootStats(data.added); data.changed && applyLeafRootStats(data.changed, 'change'); } // merge options that apply only to cwd if (data.cwd && data.cwd.options && data.options) { Object.assign(data.options, normalizeOptions(data.cwd.options)); } // '/' required at the end of url if (data.options && data.options.url && data.options.url.substr(-1) !== '/') { data.options.url += '/'; } // check error if (error.length) { data.norError = ['errResponse'].concat(error); } return data; }, /** * Update sort options * * @param {String} sort type * @param {String} sort order * @param {Boolean} show folder first */ setSort : function(type, order, stickFolders, alsoTreeview) { this.storage('sortType', (this.sortType = this.sortRules[type] ? type : 'name')); this.storage('sortOrder', (this.sortOrder = /asc|desc/.test(order) ? order : 'asc')); this.storage('sortStickFolders', (this.sortStickFolders = !!stickFolders) ? 1 : ''); this.storage('sortAlsoTreeview', (this.sortAlsoTreeview = !!alsoTreeview) ? 1 : ''); this.trigger('sortchange'); }, _sortRules : { name : function(file1, file2) { return elFinder.prototype.naturalCompare(file1.i18 || file1.name, file2.i18 || file2.name); }, size : function(file1, file2) { var size1 = parseInt(file1.size) || 0, size2 = parseInt(file2.size) || 0; return size1 === size2 ? 0 : size1 > size2 ? 1 : -1; }, kind : function(file1, file2) { return elFinder.prototype.naturalCompare(file1.mime, file2.mime); }, date : function(file1, file2) { var date1 = file1.ts || file1.date || 0, date2 = file2.ts || file2.date || 0; return date1 === date2 ? 0 : date1 > date2 ? 1 : -1; }, perm : function(file1, file2) { var val = function(file) { return (file.write? 2 : 0) + (file.read? 1 : 0); }, v1 = val(file1), v2 = val(file2); return v1 === v2 ? 0 : v1 > v2 ? 1 : -1; }, mode : function(file1, file2) { var v1 = file1.mode || (file1.perm || ''), v2 = file2.mode || (file2.perm || ''); return elFinder.prototype.naturalCompare(v1, v2); }, owner : function(file1, file2) { var v1 = file1.owner || '', v2 = file2.owner || ''; return elFinder.prototype.naturalCompare(v1, v2); }, group : function(file1, file2) { var v1 = file1.group || '', v2 = file2.group || ''; return elFinder.prototype.naturalCompare(v1, v2); } }, /** * Valid sort rule names * * @type Object */ sorters : {}, /** * Compare strings for natural sort * * @param String * @param String * @return Number */ naturalCompare : function(a, b) { var self = elFinder.prototype.naturalCompare; if (typeof self.loc == 'undefined') { self.loc = (navigator.userLanguage || navigator.browserLanguage || navigator.language || 'en-US'); } if (typeof self.sort == 'undefined') { if ('11'.localeCompare('2', self.loc, {numeric: true}) > 0) { // Native support if (window.Intl && window.Intl.Collator) { self.sort = new Intl.Collator(self.loc, {numeric: true}).compare; } else { self.sort = function(a, b) { return a.localeCompare(b, self.loc, {numeric: true}); }; } } else { /* * Edited for elFinder (emulates localeCompare() by numeric) by Naoki Sawada aka nao-pon */ /* * Huddle/javascript-natural-sort (https://github.com/Huddle/javascript-natural-sort) */ /* * Natural Sort algorithm for Javascript - Version 0.7 - Released under MIT license * Author: Jim Palmer (based on chunking idea from Dave Koelle) * http://opensource.org/licenses/mit-license.php */ self.sort = function(a, b) { var re = /(^-?[0-9]+(\.?[0-9]*)[df]?e?[0-9]?$|^0x[0-9a-f]+$|[0-9]+)/gi, sre = /(^[ ]*|[ ]*$)/g, dre = /(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/, hre = /^0x[0-9a-f]+$/i, ore = /^0/, syre = /^[\x01\x21-\x2f\x3a-\x40\x5b-\x60\x7b-\x7e]/, // symbol first - (Naoki Sawada) i = function(s) { return self.sort.insensitive && (''+s).toLowerCase() || ''+s; }, // convert all to strings strip whitespace // first character is "_", it's smallest - (Naoki Sawada) x = i(a).replace(sre, '').replace(/^_/, "\x01") || '', y = i(b).replace(sre, '').replace(/^_/, "\x01") || '', // chunk/tokenize xN = x.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), yN = y.replace(re, '\0$1\0').replace(/\0$/,'').replace(/^\0/,'').split('\0'), // numeric, hex or date detection xD = parseInt(x.match(hre)) || (xN.length != 1 && x.match(dre) && Date.parse(x)), yD = parseInt(y.match(hre)) || xD && y.match(dre) && Date.parse(y) || null, oFxNcL, oFyNcL, locRes = 0; // first try and sort Hex codes or Dates if (yD) { if ( xD < yD ) return -1; else if ( xD > yD ) return 1; } // natural sorting through split numeric strings and default strings for(var cLoc=0, numS=Math.max(xN.length, yN.length); cLoc < numS; cLoc++) { // find floats not starting with '0', string or 0 if not defined (Clint Priest) oFxNcL = !(xN[cLoc] || '').match(ore) && parseFloat(xN[cLoc]) || xN[cLoc] || 0; oFyNcL = !(yN[cLoc] || '').match(ore) && parseFloat(yN[cLoc]) || yN[cLoc] || 0; // handle numeric vs string comparison - number < string - (Kyle Adams) // but symbol first < number - (Naoki Sawada) if (isNaN(oFxNcL) !== isNaN(oFyNcL)) { if (isNaN(oFxNcL) && (typeof oFxNcL !== 'string' || ! oFxNcL.match(syre))) { return 1; } else if (typeof oFyNcL !== 'string' || ! oFyNcL.match(syre)) { return -1; } } // use decimal number comparison if either value is string zero if (parseInt(oFxNcL, 10) === 0) oFxNcL = 0; if (parseInt(oFyNcL, 10) === 0) oFyNcL = 0; // rely on string comparison if different types - i.e. '02' < 2 != '02' < '2' if (typeof oFxNcL !== typeof oFyNcL) { oFxNcL += ''; oFyNcL += ''; } // use locale sensitive sort for strings when case insensitive // note: localeCompare interleaves uppercase with lowercase (e.g. A,a,B,b) if (self.sort.insensitive && typeof oFxNcL === 'string' && typeof oFyNcL === 'string') { locRes = oFxNcL.localeCompare(oFyNcL, self.loc); if (locRes !== 0) return locRes; } if (oFxNcL < oFyNcL) return -1; if (oFxNcL > oFyNcL) return 1; } return 0; }; self.sort.insensitive = true; } } return self.sort(a, b); }, /** * Compare files based on elFinder.sort * * @param Object file * @param Object file * @return Number */ compare : function(file1, file2) { var self = this, type = self.sortType, asc = self.sortOrder == 'asc', stick = self.sortStickFolders, rules = self.sortRules, sort = rules[type], d1 = file1.mime == 'directory', d2 = file2.mime == 'directory', res; if (stick) { if (d1 && !d2) { return -1; } else if (!d1 && d2) { return 1; } } res = asc ? sort(file1, file2) : sort(file2, file1); return type !== 'name' && res === 0 ? res = asc ? rules.name(file1, file2) : rules.name(file2, file1) : res; }, /** * Sort files based on config * * @param Array files * @return Array */ sortFiles : function(files) { return files.sort(this.compare); }, /** * Open notification dialog * and append/update message for required notification type. * * @param Object options * @example * this.notify({ * type : 'copy', * msg : 'Copy files', // not required for known types @see this.notifyType * cnt : 3, * hideCnt : false, // true for not show count * progress : 10, // progress bar percents (use cnt : 0 to update progress bar) * cancel : callback // callback function for cancel button * }) * @return elFinder */ notify : function(opts) { var self = this, type = opts.type, id = opts.id? 'elfinder-notify-'+opts.id : '', msg = this.i18n((typeof opts.msg !== 'undefined')? opts.msg : (this.messages['ntf'+type] ? 'ntf'+type : 'ntfsmth')), hiddens = this.arrayFlip(this.options.notifyDialog.hiddens || []), ndialog = this.ui.notify, dialog = ndialog.closest('.ui-dialog'), notify = ndialog.children('.elfinder-notify-'+type+(id? ('.'+id) : '')), button = notify.children('div.elfinder-notify-cancel').children('button'), ntpl = '
      {msg}
      ', delta = opts.cnt + 0, size = (typeof opts.size != 'undefined')? parseInt(opts.size) : null, progress = (typeof opts.progress != 'undefined' && opts.progress >= 0) ? opts.progress : null, fakeint = opts.fakeinterval || 200, cancel = opts.cancel, clhover = 'ui-state-hover', close = function() { var prog = notify.find('.elfinder-notify-progress'), rm = function() { notify.remove(); if (!ndialog.children(dialog.data('minimized')? void(0) : ':visible').length) { if (dialog.data('minimized')) { dialog.data('minimized').hide(); } else { ndialog.elfinderdialog('close'); } } setProgressbar(); }; notify._esc && $(document).off('keydown', notify._esc); if (notify.data('cur') < 100) { prog.animate({ width : '100%' }, 50, function() { requestAnimationFrame(function() { rm(); }); }); } else { rm(); } }, fakeUp = function(interval) { var cur; if (notify.length) { cur = notify.data('cur') + 1; if (cur <= 98) { notify.find('.elfinder-notify-progress').width(cur + '%'); notify.data('cur', cur); setProgressbar(); setTimeout(function() { interval *= 1.05; fakeUp(interval); }, interval); } } }, setProgressbar = function() { var cnt = 0, val = 0, ntfs = ndialog.children('.elfinder-notify'), w; if (ntfs.length) { ntfs.each(function() { cnt++; val += Math.min($(this).data('cur'), 100); }); w = cnt? Math.floor(val / (cnt * 100) * 100) + '%' : 0; self.ui.progressbar.width(w); if (dialog.data('minimized')) { dialog.data('minimized').title(w); dialog.data('minimized').dialog().children('.ui-dialog-titlebar').children('.elfinder-ui-progressbar').width(w); } } else { self.ui.progressbar.width(0); dialog.data('minimized') && dialog.data('minimized').hide(); } }, cnt, total, prc; if (!type) { return this; } if (!notify.length) { notify = $(ntpl.replace(/\{type\}/g, type).replace(/\{msg\}/g, msg)); if (hiddens[type]) { notify.hide(); } else { ndialog.on('minimize', function(e) { dialog.data('minimized') && setProgressbar(); }); } notify.appendTo(ndialog).data('cnt', 0); if (progress != null) { notify.data({progress : 0, total : 0, cur : 0}); } else { notify.data({cur : 0}); fakeUp(fakeint); } if (cancel) { button = $('') .on('mouseenter mouseleave', function(e) { $(this).toggleClass(clhover, e.type === 'mouseenter'); }); notify.children('div.elfinder-notify-cancel').append(button); } ndialog.trigger('resize'); } else if (typeof opts.msg !== 'undefined') { notify.children('span.elfinder-notify-msg').html(msg); } cnt = delta + parseInt(notify.data('cnt')); if (cnt > 0) { if (cancel && button.length) { if ($.isFunction(cancel) || (typeof cancel === 'object' && cancel.promise)) { notify._esc = function(e) { if (e.type == 'keydown' && e.keyCode != $.ui.keyCode.ESCAPE) { return; } e.preventDefault(); e.stopPropagation(); close(); if (cancel.promise) { cancel.reject(0); // 0 is canceling flag } else { cancel(e); } }; button.on('click', function(e) { notify._esc(e); }); $(document).on('keydown.' + this.namespace, notify._esc); } } !opts.hideCnt && notify.children('.elfinder-notify-cnt').text('('+cnt+')'); if (delta > 0 && ndialog.is(':hidden') && !hiddens[type]) { if (dialog.data('minimized')) { dialog.data('minimized').show(); } else { ndialog.elfinderdialog('open', this).height('auto'); } } notify.data('cnt', cnt); if ((progress != null) && (total = notify.data('total')) >= 0 && (prc = notify.data('progress')) >= 0) { total += size != null? size : delta; prc += progress; (size == null && delta < 0) && (prc += delta * 100); notify.data({progress : prc, total : total}); if (size != null) { prc *= 100; total = Math.max(1, total); } progress = Math.min(parseInt(prc/total), 100); notify.find('.elfinder-notify-progress') .animate({ width : (progress < 100 ? progress : 100)+'%' }, 20, function() { notify.data('cur', progress); setProgressbar(); }); } } else { close(); } return this; }, /** * Open confirmation dialog * * @param Object options * @example * this.confirm({ * cssClass : 'elfinder-confirm-mydialog', * title : 'Remove files', * text : 'Here is question text', * accept : { // accept callback - required * label : 'Continue', * callback : function(applyToAll) { fm.log('Ok') } * }, * cancel : { // cancel callback - required * label : 'Cancel', * callback : function() { fm.log('Cancel')} * }, * reject : { // reject callback - optionally * label : 'No', * callback : function(applyToAll) { fm.log('No')} * }, * buttons : [ // additional buttons callback - optionally * { * label : 'Btn1', * callback : function(applyToAll) { fm.log('Btn1')} * } * ], * all : true // display checkbox "Apply to all" * }) * @return elFinder */ confirm : function(opts) { var self = this, complete = false, options = { cssClass : 'elfinder-dialog-confirm', modal : true, resizable : false, title : this.i18n(opts.title || 'confirmReq'), buttons : {}, close : function() { !complete && opts.cancel.callback(); $(this).elfinderdialog('destroy'); } }, apply = this.i18n('apllyAll'), label, checkbox, btnNum; if (opts.cssClass) { options.cssClass += ' ' + opts.cssClass; } options.buttons[this.i18n(opts.accept.label)] = function() { opts.accept.callback(!!(checkbox && checkbox.prop('checked'))); complete = true; $(this).elfinderdialog('close'); }; options.buttons[this.i18n(opts.accept.label)]._cssClass = 'elfinder-confirm-accept'; if (opts.reject) { options.buttons[this.i18n(opts.reject.label)] = function() { opts.reject.callback(!!(checkbox && checkbox.prop('checked'))); complete = true; $(this).elfinderdialog('close'); }; options.buttons[this.i18n(opts.reject.label)]._cssClass = 'elfinder-confirm-reject'; } if (opts.buttons && opts.buttons.length > 0) { btnNum = 1; $.each(opts.buttons, function(i, v){ options.buttons[self.i18n(v.label)] = function() { v.callback(!!(checkbox && checkbox.prop('checked'))); complete = true; $(this).elfinderdialog('close'); }; options.buttons[self.i18n(v.label)]._cssClass = 'elfinder-confirm-extbtn' + (btnNum++); if (v.cssClass) { options.buttons[self.i18n(v.label)]._cssClass += ' ' + v.cssClass; } }); } options.buttons[this.i18n(opts.cancel.label)] = function() { $(this).elfinderdialog('close'); }; options.buttons[this.i18n(opts.cancel.label)]._cssClass = 'elfinder-confirm-cancel'; if (opts.all) { options.create = function() { var base = $('
      '); checkbox = $(''); $(this).next().find('.ui-dialog-buttonset') .prepend(base.append($('').prepend(checkbox))); }; } if (opts.optionsCallback && $.isFunction(opts.optionsCallback)) { opts.optionsCallback(options); } return this.dialog('' + this.i18n(opts.text), options); }, /** * Create unique file name in required dir * * @param String file name * @param String parent dir hash * @param String glue * @return String */ uniqueName : function(prefix, phash, glue) { var i = 0, ext = '', p, name; prefix = this.i18n(false, prefix); phash = phash || this.cwd().hash; glue = (typeof glue === 'undefined')? ' ' : glue; if (p = prefix.match(/^(.+)(\.[^.]+)$/)) { ext = p[2]; prefix = p[1]; } name = prefix+ext; if (!this.fileByName(name, phash)) { return name; } while (i < 10000) { name = prefix + glue + (++i) + ext; if (!this.fileByName(name, phash)) { return name; } } return prefix + Math.random() + ext; }, /** * Return message translated onto current language * Allowed accept HTML element that was wrapped in jQuery object * To be careful to XSS vulnerability of HTML element Ex. You should use `fm.escape(file.name)` * * @param String|Array message[s]|Object jQuery * @return String **/ i18n : function() { var self = this, messages = this.messages, input = [], ignore = [], message = function(m) { var file; if (m.indexOf('#') === 0) { if ((file = self.file(m.substr(1)))) { return file.name; } } return m; }, i, j, m, escFunc, start = 0, isErr; if (arguments.length && arguments[0] === false) { escFunc = function(m){ return m; }; start = 1; } for (i = start; i< arguments.length; i++) { m = arguments[i]; if (Array.isArray(m)) { for (j = 0; j < m.length; j++) { if (m[j] instanceof jQuery) { // jQuery object is HTML element input.push(m[j]); } else if (typeof m[j] !== 'undefined'){ input.push(message('' + m[j])); } } } else if (m instanceof jQuery) { // jQuery object is HTML element input.push(m[j]); } else if (typeof m !== 'undefined'){ input.push(message('' + m)); } } for (i = 0; i < input.length; i++) { // dont translate placeholders if ($.inArray(i, ignore) !== -1) { continue; } m = input[i]; if (typeof m == 'string') { isErr = !!(messages[m] && m.match(/^err/)); // translate message m = messages[m] || (escFunc? escFunc(m) : self.escape(m)); // replace placeholders in message m = m.replace(/\$(\d+)/g, function(match, placeholder) { var res; placeholder = i + parseInt(placeholder); if (placeholder > 0 && input[placeholder]) { ignore.push(placeholder); } res = escFunc? escFunc(input[placeholder]) : self.escape(input[placeholder]); if (isErr) { res = '' + res + ''; } return res; }); } else { // get HTML from jQuery object m = m.get(0).outerHTML; } input[i] = m; } return $.grep(input, function(m, i) { return $.inArray(i, ignore) === -1 ? true : false; }).join('
      '); }, /** * Get icon style from file.icon * * @param Object elFinder file object * @return String|Object */ getIconStyle : function(file, asObject) { var self = this, template = { 'background' : 'url(\'{url}\') 0 0 no-repeat', 'background-size' : 'contain' }, style = '', cssObj = {}, i = 0; if (file.icon) { style = 'style="'; $.each(template, function(k, v) { if (i++ === 0) { v = v.replace('{url}', self.escape(file.icon)); } if (asObject) { cssObj[k] = v; } else { style += k+':'+v+';'; } }); style += '"'; } return asObject? cssObj : style; }, /** * Convert mimetype into css classes * * @param String file mimetype * @return String */ mime2class : function(mimeType) { var prefix = 'elfinder-cwd-icon-', mime = mimeType.toLowerCase(), isText = this.textMimes[mime]; mime = mime.split('/'); if (isText) { mime[0] += ' ' + prefix + 'text'; } else if (mime[1] && mime[1].match(/\+xml$/)) { mime[0] += ' ' + prefix + 'xml'; } return prefix + mime[0] + (mime[1] ? ' ' + prefix + mime[1].replace(/(\.|\+)/g, '-') : ''); }, /** * Return localized kind of file * * @param Object|String file or file mimetype * @return String */ mime2kind : function(f) { var isObj = typeof(f) == 'object' ? true : false, mime = isObj ? f.mime : f, kind; if (isObj && f.alias && mime != 'symlink-broken') { kind = 'Alias'; } else if (this.kinds[mime]) { if (isObj && mime === 'directory' && (! f.phash || f.isroot)) { kind = 'Root'; } else { kind = this.kinds[mime]; } } else if (this.mimeTypes[mime]) { kind = this.mimeTypes[mime].toUpperCase(); if (!this.messages['kind'+kind]) { kind = null; } } if (! kind) { if (mime.indexOf('text') === 0) { kind = 'Text'; } else if (mime.indexOf('image') === 0) { kind = 'Image'; } else if (mime.indexOf('audio') === 0) { kind = 'Audio'; } else if (mime.indexOf('video') === 0) { kind = 'Video'; } else if (mime.indexOf('application') === 0) { kind = 'App'; } else { kind = mime; } } return this.messages['kind'+kind] ? this.i18n('kind'+kind) : mime; }, /** * Return boolean Is mime-type text file * * @param String mime-type * @return Boolean */ mimeIsText : function(mime) { return (this.textMimes[mime.toLowerCase()] || (mime.indexOf('text/') === 0 && mime.substr(5, 3) !== 'rtf') || mime.match(/^application\/.+\+xml$/))? true : false; }, /** * Returns a date string formatted according to the given format string * * @param String format string * @param Object Date object * @return String */ date : function(format, date) { var self = this, output, d, dw, m, y, h, g, i, s; if (! date) { date = new Date(); } h = date[self.getHours](); g = h > 12 ? h - 12 : h; i = date[self.getMinutes](); s = date[self.getSeconds](); d = date[self.getDate](); dw = date[self.getDay](); m = date[self.getMonth]() + 1; y = date[self.getFullYear](); output = format.replace(/[a-z]/gi, function(val) { switch (val) { case 'd': return d > 9 ? d : '0'+d; case 'j': return d; case 'D': return self.i18n(self.i18.daysShort[dw]); case 'l': return self.i18n(self.i18.days[dw]); case 'm': return m > 9 ? m : '0'+m; case 'n': return m; case 'M': return self.i18n(self.i18.monthsShort[m-1]); case 'F': return self.i18n(self.i18.months[m-1]); case 'Y': return y; case 'y': return (''+y).substr(2); case 'H': return h > 9 ? h : '0'+h; case 'G': return h; case 'g': return g; case 'h': return g > 9 ? g : '0'+g; case 'a': return h >= 12 ? 'pm' : 'am'; case 'A': return h >= 12 ? 'PM' : 'AM'; case 'i': return i > 9 ? i : '0'+i; case 's': return s > 9 ? s : '0'+s; } return val; }); return output; }, /** * Return localized date * * @param Object file object * @return String */ formatDate : function(file, t) { var self = this, ts = t || file.ts, i18 = self.i18, date, format, output, d, dw, m, y, h, g, i, s; if (self.options.clientFormatDate && ts > 0) { date = new Date(ts*1000); format = ts >= this.yesterday ? this.fancyFormat : this.dateFormat; output = self.date(format, date); return ts >= this.yesterday ? output.replace('$1', this.i18n(ts >= this.today ? 'Today' : 'Yesterday')) : output; } else if (file.date) { return file.date.replace(/([a-z]+)\s/i, function(a1, a2) { return self.i18n(a2)+' '; }); } return self.i18n('dateUnknown'); }, /** * Return localized number string * * @param Number * @return String */ toLocaleString : function(num) { var v = new Number(num); if (v) { if (v.toLocaleString) { return v.toLocaleString(); } else { return String(num).replace( /(\d)(?=(\d\d\d)+(?!\d))/g, '$1,'); } } return num; }, /** * Return css class marks file permissions * * @param Object file * @return String */ perms2class : function(o) { var c = ''; if (!o.read && !o.write) { c = 'elfinder-na'; } else if (!o.read) { c = 'elfinder-wo'; } else if (!o.write) { c = 'elfinder-ro'; } if (o.type) { c += ' elfinder-' + this.escape(o.type); } return c; }, /** * Return localized string with file permissions * * @param Object file * @return String */ formatPermissions : function(f) { var p = []; f.read && p.push(this.i18n('read')); f.write && p.push(this.i18n('write')); return p.length ? p.join(' '+this.i18n('and')+' ') : this.i18n('noaccess'); }, /** * Return formated file size * * @param Number file size * @return String */ formatSize : function(s) { var n = 1, u = 'b'; if (s == 'unknown') { return this.i18n('unknown'); } if (s > 1073741824) { n = 1073741824; u = 'GB'; } else if (s > 1048576) { n = 1048576; u = 'MB'; } else if (s > 1024) { n = 1024; u = 'KB'; } s = s/n; return (s > 0 ? n >= 1048576 ? s.toFixed(2) : Math.round(s) : 0) +' '+u; }, /** * Return formated file mode by options.fileModeStyle * * @param String file mode * @param String format style * @return String */ formatFileMode : function(p, style) { var i, o, s, b, sticy, suid, sgid, str, oct; if (!style) { style = this.options.fileModeStyle.toLowerCase(); } p = $.trim(p); if (p.match(/[rwxs-]{9}$/i)) { str = p = p.substr(-9); if (style == 'string') { return str; } oct = ''; s = 0; for (i=0; i<7; i=i+3) { o = p.substr(i, 3); b = 0; if (o.match(/[r]/i)) { b += 4; } if (o.match(/[w]/i)) { b += 2; } if (o.match(/[xs]/i)) { if (o.match(/[xs]/)) { b += 1; } if (o.match(/[s]/i)) { if (i == 0) { s += 4; } else if (i == 3) { s += 2; } } } oct += b.toString(8); } if (s) { oct = s.toString(8) + oct; } } else { p = parseInt(p, 8); oct = p? p.toString(8) : ''; if (!p || style == 'octal') { return oct; } o = p.toString(8); s = 0; if (o.length > 3) { o = o.substr(-4); s = parseInt(o.substr(0, 1), 8); o = o.substr(1); } sticy = ((s & 1) == 1); // not support sgid = ((s & 2) == 2); suid = ((s & 4) == 4); str = ''; for(i=0; i<3; i++) { if ((parseInt(o.substr(i, 1), 8) & 4) == 4) { str += 'r'; } else { str += '-'; } if ((parseInt(o.substr(i, 1), 8) & 2) == 2) { str += 'w'; } else { str += '-'; } if ((parseInt(o.substr(i, 1), 8) & 1) == 1) { str += ((i==0 && suid)||(i==1 && sgid))? 's' : 'x'; } else { str += '-'; } } } if (style == 'both') { return str + ' (' + oct + ')'; } else if (style == 'string') { return str; } else { return oct; } }, /** * Regist this.decodeRawString function * * @return void */ registRawStringDecoder : function(rawStringDecoder) { if ($.isFunction(rawStringDecoder)) { this.decodeRawString = this.options.rawStringDecoder = rawStringDecoder; } }, /** * Return boolean that uploadable MIME type into target folder * * @param String mime MIME type * @param String target target folder hash * @return Bool */ uploadMimeCheck : function(mime, target) { target = target || this.cwd().hash; var res = true, // default is allow mimeChecker = this.option('uploadMime', target), allow, deny, check = function(checker) { var ret = false; if (typeof checker === 'string' && checker.toLowerCase() === 'all') { ret = true; } else if (Array.isArray(checker) && checker.length) { $.each(checker, function(i, v) { v = v.toLowerCase(); if (v === 'all' || mime.indexOf(v) === 0) { ret = true; return false; } }); } return ret; }; if (mime && $.isPlainObject(mimeChecker)) { mime = mime.toLowerCase(); allow = check(mimeChecker.allow); deny = check(mimeChecker.deny); if (mimeChecker.firstOrder === 'allow') { res = false; // default is deny if (! deny && allow === true) { // match only allow res = true; } } else { res = true; // default is allow if (deny === true && ! allow) { // match only deny res = false; } } } return res; }, /** * call chained sequence of async deferred functions * * @param Array tasks async functions * @return Object jQuery.Deferred */ sequence : function(tasks) { var l = tasks.length, chain = function(task, idx) { ++idx; if (tasks[idx]) { return chain(task.then(tasks[idx]), idx); } else { return task; } }; if (l > 1) { return chain(tasks[0](), 0); } else { return tasks[0](); } }, /** * Reload contents of target URL for clear browser cache * * @param String url target URL * @return Object jQuery.Deferred */ reloadContents : function(url) { var dfd = $.Deferred(), ifm; try { ifm = $('