From cb1312f9a0c511129dea30fddd19170de066b7c9 Mon Sep 17 00:00:00 2001 From: Niall Beard Date: Fri, 22 Jul 2016 11:17:34 +0100 Subject: [PATCH 001/314] Added lesson metadata and schema.org JSON-LD rendering --- _config.yml | 13 +++++++++++++ _includes/schema_org.html | 39 +++++++++++++++++++++++++++++++++++++++ _layouts/lesson.html | 1 + 3 files changed, 53 insertions(+) create mode 100644 _includes/schema_org.html diff --git a/_config.yml b/_config.yml index a83abf27..f19dd3a3 100644 --- a/_config.yml +++ b/_config.yml @@ -11,6 +11,19 @@ title: "Lesson Title" # Contact email address. email: lessons@software-carpentry.org +#Metadata +# Here you can add metadata to describe your lesson so that people and search engines can understand what it's about. Please try to use fields from the Schema.org CreativeWork type - https://schema.org/CreativeWork +description: "This is the template description. Keep me brief (2-3 sentences)" +keywords: GitHub, Forking, Collaborative # see: https://schema.org/keywords +audience: [PostDoc students, Early Career Researchers] # see: https://schema.org/audience +license: "https://creativecommons.org/licenses/by/3.0/" # see: schema.org/license +author: [Homer Simpson, Ned Flanders] # see: https://schema.org/author +contributor: [Barney Gumball, Dr Nick Riviera] # see: https://schema.org/contributor +timeRequired: "1 hour" # see: https://schema.org/timeRequired +learningResourceType: "lesson plan" # see: https://schema.org/learningResourceType +citation: "How to cite a Training Material, John Smith et al, 2015" # see: https://schema.org/citation +dateCreated: 2016-05-01 + #------------------------------------------------------------ # Generic settings (should not need to change). #------------------------------------------------------------ diff --git a/_includes/schema_org.html b/_includes/schema_org.html new file mode 100644 index 00000000..0a196378 --- /dev/null +++ b/_includes/schema_org.html @@ -0,0 +1,39 @@ + + \ No newline at end of file diff --git a/_layouts/lesson.html b/_layouts/lesson.html index 7d566cd1..b17c3882 100644 --- a/_layouts/lesson.html +++ b/_layouts/lesson.html @@ -2,5 +2,6 @@ layout: base --- {% include main_title.html %} +{% include schema_org.html %} {{ content }} {% include syllabus.html %} From cebd8558273a274f84b3b129c627f42a2ed09ef1 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Sun, 24 Jul 2016 09:12:20 -0400 Subject: [PATCH 002/314] Checking that internally-defined links resolve. An internally-defined Markdown link has the form [xxx][yyy]. If the ID 'yyy' doesn't resolve, the text is left as-is, so we check for that, then subtract those that reference configuration values using '{{'. It's a hack, but it'll catch at least a few things. --- bin/lesson_check.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/bin/lesson_check.py b/bin/lesson_check.py index ace8de69..7bc09a36 100755 --- a/bin/lesson_check.py +++ b/bin/lesson_check.py @@ -47,6 +47,9 @@ # Pattern to match figure references in HTML. P_FIGURE_REFS = re.compile(r']+src="([^"]+)"[^>]*>') +# Pattern to match internally-defined Markdown links. +P_INTERNALLY_DEFINED_LINK = re.compile(r'\[[^\]]+\]\[[^\]]+\]') + # What kinds of blockquotes are allowed? KNOWN_BLOCKQUOTES = { 'callout', @@ -274,6 +277,7 @@ def check(self): self.check_trailing_whitespace() self.check_blockquote_classes() self.check_codeblock_classes() + self.check_defined_link_references() def check_metadata(self): @@ -331,6 +335,26 @@ def check_codeblock_classes(self): cls) + def check_defined_link_references(self): + """Check that defined links resolve in the file. + + Internally-defined links match the pattern [text][label]. If + the label contains '{{...}}', it is hopefully a references to + a configuration value - we should check that, but don't right + now. + """ + + result = set() + for node in self.find_all(self.doc, {'type' : 'text'}): + for match in P_INTERNALLY_DEFINED_LINK.findall(node['value']): + if '{{' not in match: + result.add(match) + self.reporter.check(not result, + self.filename, + 'Internally-defined links may be missing definitions: {0}', + ', '.join(sorted(result))) + + def find_all(self, node, pattern, accum=None): """Find all matches for a pattern.""" From 73b5c5f5744fba98cac666527a599b6abaa48120 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Sun, 24 Jul 2016 10:39:16 -0400 Subject: [PATCH 003/314] Resolving undefined links --- README.md | 1 + _episodes/03-organization.md | 1 + _episodes/05-checking.md | 2 ++ 3 files changed, 4 insertions(+) diff --git a/README.md b/README.md index c8fa317d..45e3c15e 100644 --- a/README.md +++ b/README.md @@ -90,6 +90,7 @@ In brief: [editing-config]: https://swcarpentry.github.io/lesson-example/03-organization/ [example-issues]: https://github.com/swcarpentry/lesson-example/issues/ [github-pages]: https://help.github.com/articles/creating-project-pages-manually/ +[issues]: https://github.com/swcarpentry/lesson-example/issues [rendered]: https://swcarpentry.github.io/lesson-example/ [setup]: https://github.com/swcarpentry/lesson-example/blob/gh-pages/setup.md [styles-issues]: https://github.com/swcarpentry/styles/issues/ diff --git a/_episodes/03-organization.md b/_episodes/03-organization.md index d54f9a91..04d01cd0 100644 --- a/_episodes/03-organization.md +++ b/_episodes/03-organization.md @@ -189,3 +189,4 @@ This page records tips and warnings from people who have taught the lesson. [jekyll]: http://jekyllrb.com/ [jekyll-collection]: https://jekyllrb.com/docs/collections/ +[yaml]: http://yaml.org/ diff --git a/_episodes/05-checking.md b/_episodes/05-checking.md index 11218538..5d87e7da 100644 --- a/_episodes/05-checking.md +++ b/_episodes/05-checking.md @@ -60,3 +60,5 @@ The command `make lesson-figures` uses the script `bin/make_figures.py` to regenerate `includes/all_figures.html`, which links to every figure used in the episodes (in order). Instructors can scroll through this page to display figures while teaching. + +[jekyll]: http://jekyllrb.com/ From 6a6150b2cdda7fee69d01381c8d42ffeec33b20f Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Mon, 25 Jul 2016 22:38:24 -0400 Subject: [PATCH 004/314] Fixing broken image link in setup instructions. 1. Fixing image link in `setup.md`. 2. Regenerating all-figures. Closes #42. --- _includes/all_figures.html | 2 +- setup.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/_includes/all_figures.html b/_includes/all_figures.html index fc116258..446ab6bd 100644 --- a/_includes/all_figures.html +++ b/_includes/all_figures.html @@ -1,4 +1,4 @@ -

+


Forking Repositories


diff --git a/setup.md b/setup.md index 438854c2..078a0570 100644 --- a/setup.md +++ b/setup.md @@ -63,7 +63,7 @@ lesson is `data-cleanup`. 7. At this point, you should have a page like this: - ![](../fig/using-github-import.png) + ![]({{ site.github.url }}/fig/using-github-import.png) You can now click "Begin Import". When the process is done, From ec164572d010ca2366307e2712c38b8a510e50c3 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Tue, 26 Jul 2016 10:54:29 -0400 Subject: [PATCH 005/314] Updating the lesson initializer's CONTRIBUTING.md --- bin/lesson_initialize.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/bin/lesson_initialize.py b/bin/lesson_initialize.py index ef275399..80680694 100755 --- a/bin/lesson_initialize.py +++ b/bin/lesson_initialize.py @@ -63,18 +63,22 @@ ## Where to Contribute -1. If you wish to change this example lesson, - please work in . - This lesson documents the format of our lessons, +1. If you wish to change this lesson, + please work in , + which can be viewed at . + +2. If you wish to change the example lesson, + please work in , + which documents the format of our lessons and can be viewed at . -2. If you wish to change the template used for workshop websites, +3. If you wish to change the template used for workshop websites, please work in . The home page of that repository explains how to set up workshop websites, while the extra pages in provide more background on our design choices. -3. If you wish to change CSS style files, tools, +4. If you wish to change CSS style files, tools, or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`, please work in . @@ -159,8 +163,8 @@ [github-flow]: https://guides.github.com/introduction/flow/ [github-join]: https://github.com/join [how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github -[issues]: https://github.com/swcarpentry/lesson-example/issues/ -[repo]: https://github.com/swcarpentry/lesson-example/ +[issues]: https://github.com/swcarpentry/FIXME/issues/ +[repo]: https://github.com/swcarpentry/FIXME/ [swc-issues]: https://github.com/issues?q=user%3Aswcarpentry [swc-lessons]: http://software-carpentry.org/lessons/ [swc-site]: http://software-carpentry.org/ From 0607fcffbb59c28a92363b704156bb6cae2c36dd Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Wed, 27 Jul 2016 20:04:06 -0400 Subject: [PATCH 006/314] Adding a few more URLs --- bin/lesson_initialize.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bin/lesson_initialize.py b/bin/lesson_initialize.py index 80680694..537a535c 100755 --- a/bin/lesson_initialize.py +++ b/bin/lesson_initialize.py @@ -197,14 +197,16 @@ # Sites. amy_site: "https://amy.software-carpentry.org/workshops" -dc_site: "https://datacarpentry.org" +dc_site: "http://datacarpentry.org" swc_github: "https://github.com/swcarpentry" swc_site: "https://software-carpentry.org" +swc_pages: "https://swcarpentry.github.io" template_repo: "https://github.com/swcarpentry/styles" example_repo: "https://github.com/swcarpentry/lesson-example" example_site: "https://swcarpentry.github.com/lesson-example" workshop_repo: "https://github.com/swcarpentry/workshop-template" workshop_site: "https://swcarpentry.github.io/workshop-template" +training_site: "https://swcarpentry.github.io/instructor-training" # Surveys. pre_survey: "https://www.surveymonkey.com/r/swc_pre_workshop_v1?workshop_id=" From eefde8f1bbe7f977af2d04b27a9089f69231e229 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Wed, 27 Jul 2016 20:14:23 -0400 Subject: [PATCH 007/314] Adding a few more fields to _config.yml --- _config.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index a83abf27..b258c586 100644 --- a/_config.yml +++ b/_config.yml @@ -24,14 +24,16 @@ repository: / # Sites. amy_site: "https://amy.software-carpentry.org/workshops" -dc_site: "https://datacarpentry.org" +dc_site: "http://datacarpentry.org" swc_github: "https://github.com/swcarpentry" swc_site: "https://software-carpentry.org" +swc_pages: "https://swcarpentry.github.io" template_repo: "https://github.com/swcarpentry/styles" example_repo: "https://github.com/swcarpentry/lesson-example" example_site: "https://swcarpentry.github.com/lesson-example" workshop_repo: "https://github.com/swcarpentry/workshop-template" workshop_site: "https://swcarpentry.github.io/workshop-template" +training_site: "https://swcarpentry.github.io/instructor-training" # Surveys. pre_survey: "https://www.surveymonkey.com/r/swc_pre_workshop_v1?workshop_id=" From 9bb202e7e28b854fa4fdc14a9ef0d7e8aa6fefc3 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Thu, 28 Jul 2016 11:19:44 -0400 Subject: [PATCH 008/314] Fixing broken link --- _episodes/02-tooling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_episodes/02-tooling.md b/_episodes/02-tooling.md index 57a1513b..25aab16d 100644 --- a/_episodes/02-tooling.md +++ b/_episodes/02-tooling.md @@ -74,7 +74,7 @@ If authors want to write lessons in something else, such as [R Markdown][r-markdown], they must generate HTML or Markdown that [Jekyll][jekyll] can process and commit that to the repository. -The [next episode]({{ site.github.url }}/02-formatting/) describes the Markdown we use. +A [later episode]({{ site.github.url }}/04-formatting/) describes the Markdown we use. > ## Teaching Tools > From cf5d4174a76f32b164133a5158a47de18279b2be Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Sat, 30 Jul 2016 11:17:40 -0400 Subject: [PATCH 009/314] To help with debugging --- assets/js/jquery.min.map | 1 + 1 file changed, 1 insertion(+) create mode 100644 assets/js/jquery.min.map diff --git a/assets/js/jquery.min.map b/assets/js/jquery.min.map new file mode 100644 index 00000000..01f1f980 --- /dev/null +++ b/assets/js/jquery.min.map @@ -0,0 +1 @@ +{"version":3,"file":"jquery-1.11.3.min.js","sources":["jquery-1.11.3.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","deletedIds","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","support","version","jQuery","selector","context","fn","init","rtrim","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","prototype","jquery","constructor","length","toArray","call","get","num","pushStack","elems","ret","merge","prevObject","each","callback","args","map","elem","i","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","src","copyIsArray","copy","name","options","clone","target","deep","isFunction","isPlainObject","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","obj","type","Array","isWindow","isNumeric","parseFloat","isEmptyObject","key","nodeType","e","ownLast","globalEval","data","trim","execScript","camelCase","string","nodeName","toLowerCase","value","isArraylike","text","makeArray","arr","results","Object","inArray","max","second","grep","invert","callbackInverse","matches","callbackExpect","arg","guid","proxy","tmp","now","Date","split","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","MAX_NEGATIVE","pop","push_native","list","booleans","whitespace","characterEncoding","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rnative","rquickExpr","rsibling","rescape","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","unloadHandler","childNodes","els","seed","match","m","groups","old","nid","newContext","newSelector","ownerDocument","exec","getElementById","parentNode","id","getElementsByTagName","getElementsByClassName","qsa","test","getAttribute","setAttribute","toSelector","testContext","join","querySelectorAll","qsaError","removeAttribute","keys","cache","cacheLength","shift","markFunction","assert","div","createElement","removeChild","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createPositionalPseudo","argument","matchIndexes","documentElement","node","hasCompare","parent","doc","defaultView","top","addEventListener","attachEvent","className","appendChild","createComment","getById","getElementsByName","find","filter","attrId","getAttributeNode","tag","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">","dir"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","outerCache","nodeIndex","start","useCache","lastChild","pseudo","setFilters","idx","matched","not","matcher","unmatched","has","innerText","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","disabled","checked","selected","selectedIndex","empty","header","button","even","odd","lt","gt","radio","checkbox","file","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","addCombinator","combinator","base","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","div1","defaultValue","unique","isXMLDoc","rneedsContext","rsingleTag","risSimple","winnow","qualifier","self","is","rootjQuery","charAt","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","next","prev","until","sibling","n","r","targets","closest","l","pos","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","siblings","contentDocument","contentWindow","reverse","rnotwhite","optionsCache","createOptions","object","flag","Callbacks","firing","memory","fired","firingLength","firingIndex","firingStart","stack","once","fire","stopOnFalse","disable","remove","lock","locked","fireWith","Deferred","func","tuples","state","promise","always","deferred","fail","then","fns","newDefer","tuple","returned","resolve","reject","progress","notify","pipe","stateString","when","subordinate","resolveValues","remaining","updateFunc","values","progressValues","notifyWith","resolveWith","progressContexts","resolveContexts","readyList","readyWait","holdReady","hold","wait","body","setTimeout","triggerHandler","off","detach","removeEventListener","completed","detachEvent","event","readyState","frameElement","doScroll","doScrollCheck","strundefined","inlineBlockNeedsLayout","container","style","cssText","zoom","offsetWidth","deleteExpando","acceptData","noData","rbrace","rmultiDash","dataAttr","parseJSON","isEmptyDataObject","internalData","pvt","thisCache","internalKey","isNode","toJSON","internalRemoveData","cleanData","applet ","embed ","object ","hasData","removeData","_data","_removeData","queue","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","cssExpand","isHidden","el","css","access","chainable","emptyGet","raw","bulk","rcheckableType","fragment","createDocumentFragment","leadingWhitespace","tbody","htmlSerialize","html5Clone","cloneNode","outerHTML","appendChecked","noCloneChecked","checkClone","noCloneEvent","click","eventName","change","focusin","rformElems","rkeyEvent","rmouseEvent","rfocusMorph","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","types","events","t","handleObjIn","special","eventHandle","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","trigger","onlyHandlers","ontype","bubbleType","eventPath","Event","isTrigger","namespace_re","noBubble","parentWindow","isPropagationStopped","preventDefault","isDefaultPrevented","_default","fix","handlerQueue","delegateTarget","preDispatch","currentTarget","isImmediatePropagationStopped","stopPropagation","postDispatch","sel","prop","originalEvent","fixHook","fixHooks","mouseHooks","keyHooks","props","srcElement","metaKey","original","which","charCode","keyCode","eventDoc","fromElement","pageX","clientX","scrollLeft","clientLeft","pageY","clientY","scrollTop","clientTop","relatedTarget","toElement","load","blur","beforeunload","returnValue","simulate","bubble","isSimulated","defaultPrevented","timeStamp","cancelBubble","stopImmediatePropagation","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","submitBubbles","form","_submit_bubble","changeBubbles","propertyName","_just_changed","focusinBubbles","attaches","on","one","origFn","createSafeFragment","nodeNames","safeFrag","rinlinejQuery","rnoshimcache","rleadingWhitespace","rxhtmlTag","rtagName","rtbody","rhtml","rnoInnerhtml","rchecked","rscriptType","rscriptTypeMasked","rcleanScript","wrapMap","option","legend","area","param","thead","tr","col","td","safeFragment","fragmentDiv","optgroup","tfoot","colgroup","caption","th","getAll","found","fixDefaultChecked","defaultChecked","manipulationTarget","content","disableScript","restoreScript","setGlobalEval","refElements","cloneCopyEvent","dest","oldData","curData","fixCloneNodeIssues","defaultSelected","dataAndEvents","deepDataAndEvents","destElements","srcElements","inPage","buildFragment","scripts","selection","wrap","safe","nodes","createTextNode","append","domManip","prepend","insertBefore","before","after","keepData","html","replaceWith","replaceChild","hasScripts","set","iNoClone","_evalUrl","appendTo","prependTo","insertAfter","replaceAll","insert","iframe","elemdisplay","actualDisplay","display","getDefaultComputedStyle","defaultDisplay","write","close","shrinkWrapBlocksVal","shrinkWrapBlocks","width","rmargin","rnumnonpx","getStyles","curCSS","rposition","getComputedStyle","opener","computed","minWidth","maxWidth","getPropertyValue","currentStyle","left","rs","rsLeft","runtimeStyle","pixelLeft","addGetHookIf","conditionFn","hookFn","condition","pixelPositionVal","boxSizingReliableVal","reliableHiddenOffsetsVal","reliableMarginRightVal","opacity","cssFloat","backgroundClip","clearCloneStyle","boxSizing","MozBoxSizing","WebkitBoxSizing","reliableHiddenOffsets","computeStyleTests","boxSizingReliable","pixelPosition","reliableMarginRight","marginRight","offsetHeight","swap","ralpha","ropacity","rdisplayswap","rnumsplit","rrelNum","cssShow","position","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","vendorPropName","capName","origName","showHide","show","hidden","setPositiveNumber","subtract","augmentWidthOrHeight","extra","isBorderBox","styles","getWidthOrHeight","valueIsBorderBox","cssHooks","cssNumber","columnCount","fillOpacity","flexGrow","flexShrink","lineHeight","order","orphans","widows","zIndex","cssProps","float","$1","margin","padding","border","prefix","suffix","expand","expanded","parts","hide","toggle","Tween","easing","unit","propHooks","run","percent","eased","duration","step","tween","fx","linear","p","swing","cos","PI","fxNow","timerId","rfxtypes","rfxnum","rrun","animationPrefilters","defaultPrefilter","tweeners","*","createTween","scale","maxIterations","createFxNow","genFx","includeWidth","height","animation","collection","opts","oldfire","checkDisplay","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","Animation","properties","stopped","tick","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","rejectWith","timer","complete","tweener","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","interval","setInterval","clearInterval","slow","fast","delay","time","timeout","clearTimeout","getSetAttribute","hrefNormalized","checkOn","optSelected","enctype","optDisabled","radioValue","rreturn","valHooks","optionSet","scrollHeight","nodeHook","boolHook","ruseDefault","getSetInput","removeAttr","nType","attrHooks","propName","attrNames","propFix","getter","setAttributeNode","createAttribute","coords","contenteditable","rfocusable","rclickable","removeProp","for","class","notxml","tabindex","parseInt","rclass","addClass","classes","clazz","finalValue","proceed","removeClass","toggleClass","stateVal","classNames","hasClass","hover","fnOver","fnOut","bind","unbind","delegate","undelegate","nonce","rquery","rvalidtokens","JSON","parse","requireNonComma","depth","str","comma","open","Function","parseXML","DOMParser","parseFromString","ActiveXObject","async","loadXML","ajaxLocParts","ajaxLocation","rhash","rts","rheaders","rlocalProtocol","rnoContent","rprotocol","rurl","prefilters","transports","allTypes","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","s","responses","firstDataType","ct","finalDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","active","lastModified","etag","url","isLocal","processData","contentType","accepts","json","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","cacheURL","responseHeadersString","timeoutTimer","fireGlobals","transport","responseHeaders","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","lname","overrideMimeType","code","status","abort","statusText","finalText","success","method","crossDomain","traditional","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","modified","getJSON","getScript","throws","wrapAll","wrapInner","unwrap","visible","r20","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","v","encodeURIComponent","serialize","serializeArray","xhr","createStandardXHR","createActiveXHR","xhrId","xhrCallbacks","xhrSupported","cors","username","xhrFields","isAbort","onreadystatechange","responseText","XMLHttpRequest","script","text script","head","scriptCharset","charset","onload","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","_load","params","animated","getWindow","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","win","box","getBoundingClientRect","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","size","andSelf","define","amd","_jQuery","_$","$","noConflict"],"mappings":";CAcC,SAAUA,EAAQC,GAEK,gBAAXC,SAAiD,gBAAnBA,QAAOC,QAQhDD,OAAOC,QAAUH,EAAOI,SACvBH,EAASD,GAAQ,GACjB,SAAUK,GACT,IAAMA,EAAED,SACP,KAAM,IAAIE,OAAO,2CAElB,OAAOL,GAASI,IAGlBJ,EAASD,IAIS,mBAAXO,QAAyBA,OAASC,KAAM,SAAUD,EAAQE,GAQnE,GAAIC,MAEAC,EAAQD,EAAWC,MAEnBC,EAASF,EAAWE,OAEpBC,EAAOH,EAAWG,KAElBC,EAAUJ,EAAWI,QAErBC,KAEAC,EAAWD,EAAWC,SAEtBC,EAASF,EAAWG,eAEpBC,KAKHC,EAAU,SAGVC,EAAS,SAAUC,EAAUC,GAG5B,MAAO,IAAIF,GAAOG,GAAGC,KAAMH,EAAUC,IAKtCG,EAAQ,qCAGRC,EAAY,QACZC,EAAa,eAGbC,EAAa,SAAUC,EAAKC,GAC3B,MAAOA,GAAOC,cAGhBX,GAAOG,GAAKH,EAAOY,WAElBC,OAAQd,EAERe,YAAad,EAGbC,SAAU,GAGVc,OAAQ,EAERC,QAAS,WACR,MAAO1B,GAAM2B,KAAM9B,OAKpB+B,IAAK,SAAUC,GACd,MAAc,OAAPA,EAGE,EAANA,EAAUhC,KAAMgC,EAAMhC,KAAK4B,QAAW5B,KAAMgC,GAG9C7B,EAAM2B,KAAM9B,OAKdiC,UAAW,SAAUC,GAGpB,GAAIC,GAAMtB,EAAOuB,MAAOpC,KAAK2B,cAAeO,EAO5C,OAJAC,GAAIE,WAAarC,KACjBmC,EAAIpB,QAAUf,KAAKe,QAGZoB,GAMRG,KAAM,SAAUC,EAAUC,GACzB,MAAO3B,GAAOyB,KAAMtC,KAAMuC,EAAUC,IAGrCC,IAAK,SAAUF,GACd,MAAOvC,MAAKiC,UAAWpB,EAAO4B,IAAIzC,KAAM,SAAU0C,EAAMC,GACvD,MAAOJ,GAAST,KAAMY,EAAMC,EAAGD,OAIjCvC,MAAO,WACN,MAAOH,MAAKiC,UAAW9B,EAAMyC,MAAO5C,KAAM6C,aAG3CC,MAAO,WACN,MAAO9C,MAAK+C,GAAI,IAGjBC,KAAM,WACL,MAAOhD,MAAK+C,GAAI,KAGjBA,GAAI,SAAUJ,GACb,GAAIM,GAAMjD,KAAK4B,OACdsB,GAAKP,GAAU,EAAJA,EAAQM,EAAM,EAC1B,OAAOjD,MAAKiC,UAAWiB,GAAK,GAASD,EAAJC,GAAYlD,KAAKkD,SAGnDC,IAAK,WACJ,MAAOnD,MAAKqC,YAAcrC,KAAK2B,YAAY,OAK5CtB,KAAMA,EACN+C,KAAMlD,EAAWkD,KACjBC,OAAQnD,EAAWmD,QAGpBxC,EAAOyC,OAASzC,EAAOG,GAAGsC,OAAS,WAClC,GAAIC,GAAKC,EAAaC,EAAMC,EAAMC,EAASC,EAC1CC,EAAShB,UAAU,OACnBF,EAAI,EACJf,EAASiB,UAAUjB,OACnBkC,GAAO,CAsBR,KAnBuB,iBAAXD,KACXC,EAAOD,EAGPA,EAAShB,UAAWF,OACpBA,KAIsB,gBAAXkB,IAAwBhD,EAAOkD,WAAWF,KACrDA,MAIIlB,IAAMf,IACViC,EAAS7D,KACT2C,KAGWf,EAAJe,EAAYA,IAEnB,GAAmC,OAA7BgB,EAAUd,UAAWF,IAE1B,IAAMe,IAAQC,GACbJ,EAAMM,EAAQH,GACdD,EAAOE,EAASD,GAGXG,IAAWJ,IAKXK,GAAQL,IAAU5C,EAAOmD,cAAcP,KAAUD,EAAc3C,EAAOoD,QAAQR,MAC7ED,GACJA,GAAc,EACdI,EAAQL,GAAO1C,EAAOoD,QAAQV,GAAOA,MAGrCK,EAAQL,GAAO1C,EAAOmD,cAAcT,GAAOA,KAI5CM,EAAQH,GAAS7C,EAAOyC,OAAQQ,EAAMF,EAAOH,IAGzBS,SAATT,IACXI,EAAQH,GAASD,GAOrB,OAAOI,IAGRhD,EAAOyC,QAENa,QAAS,UAAavD,EAAUwD,KAAKC,UAAWC,QAAS,MAAO,IAGhEC,SAAS,EAETC,MAAO,SAAUC,GAChB,KAAM,IAAI3E,OAAO2E,IAGlBC,KAAM,aAKNX,WAAY,SAAUY,GACrB,MAA4B,aAArB9D,EAAO+D,KAAKD,IAGpBV,QAASY,MAAMZ,SAAW,SAAUU,GACnC,MAA4B,UAArB9D,EAAO+D,KAAKD,IAGpBG,SAAU,SAAUH,GAEnB,MAAc,OAAPA,GAAeA,GAAOA,EAAI5E,QAGlCgF,UAAW,SAAUJ,GAKpB,OAAQ9D,EAAOoD,QAASU,IAAUA,EAAMK,WAAYL,GAAQ,GAAM,GAGnEM,cAAe,SAAUN,GACxB,GAAIjB,EACJ,KAAMA,IAAQiB,GACb,OAAO,CAER,QAAO,GAGRX,cAAe,SAAUW,GACxB,GAAIO,EAKJ,KAAMP,GAA4B,WAArB9D,EAAO+D,KAAKD,IAAqBA,EAAIQ,UAAYtE,EAAOiE,SAAUH,GAC9E,OAAO,CAGR,KAEC,GAAKA,EAAIhD,cACPlB,EAAOqB,KAAK6C,EAAK,iBACjBlE,EAAOqB,KAAK6C,EAAIhD,YAAYF,UAAW,iBACxC,OAAO,EAEP,MAAQ2D,GAET,OAAO,EAKR,GAAKzE,EAAQ0E,QACZ,IAAMH,IAAOP,GACZ,MAAOlE,GAAOqB,KAAM6C,EAAKO,EAM3B,KAAMA,IAAOP,IAEb,MAAeT,UAARgB,GAAqBzE,EAAOqB,KAAM6C,EAAKO,IAG/CN,KAAM,SAAUD,GACf,MAAY,OAAPA,EACGA,EAAM,GAEQ,gBAARA,IAAmC,kBAARA,GACxCpE,EAAYC,EAASsB,KAAK6C,KAAU,eAC7BA,IAMTW,WAAY,SAAUC,GAChBA,GAAQ1E,EAAO2E,KAAMD,KAIvBxF,EAAO0F,YAAc,SAAUF,GAChCxF,EAAe,KAAE+B,KAAM/B,EAAQwF,KAC3BA,IAMPG,UAAW,SAAUC,GACpB,MAAOA,GAAOrB,QAASnD,EAAW,OAAQmD,QAASlD,EAAYC,IAGhEuE,SAAU,SAAUlD,EAAMgB,GACzB,MAAOhB,GAAKkD,UAAYlD,EAAKkD,SAASC,gBAAkBnC,EAAKmC,eAI9DvD,KAAM,SAAUqC,EAAKpC,EAAUC,GAC9B,GAAIsD,GACHnD,EAAI,EACJf,EAAS+C,EAAI/C,OACbqC,EAAU8B,EAAapB,EAExB,IAAKnC,GACJ,GAAKyB,GACJ,KAAYrC,EAAJe,EAAYA,IAGnB,GAFAmD,EAAQvD,EAASK,MAAO+B,EAAKhC,GAAKH,GAE7BsD,KAAU,EACd,UAIF,KAAMnD,IAAKgC,GAGV,GAFAmB,EAAQvD,EAASK,MAAO+B,EAAKhC,GAAKH,GAE7BsD,KAAU,EACd,UAOH,IAAK7B,GACJ,KAAYrC,EAAJe,EAAYA,IAGnB,GAFAmD,EAAQvD,EAAST,KAAM6C,EAAKhC,GAAKA,EAAGgC,EAAKhC,IAEpCmD,KAAU,EACd,UAIF,KAAMnD,IAAKgC,GAGV,GAFAmB,EAAQvD,EAAST,KAAM6C,EAAKhC,GAAKA,EAAGgC,EAAKhC,IAEpCmD,KAAU,EACd,KAMJ,OAAOnB,IAIRa,KAAM,SAAUQ,GACf,MAAe,OAARA,EACN,IACEA,EAAO,IAAK1B,QAASpD,EAAO,KAIhC+E,UAAW,SAAUC,EAAKC,GACzB,GAAIhE,GAAMgE,KAaV,OAXY,OAAPD,IACCH,EAAaK,OAAOF,IACxBrF,EAAOuB,MAAOD,EACE,gBAAR+D,IACLA,GAAQA,GAGX7F,EAAKyB,KAAMK,EAAK+D,IAIX/D,GAGRkE,QAAS,SAAU3D,EAAMwD,EAAKvD,GAC7B,GAAIM,EAEJ,IAAKiD,EAAM,CACV,GAAK5F,EACJ,MAAOA,GAAQwB,KAAMoE,EAAKxD,EAAMC,EAMjC,KAHAM,EAAMiD,EAAItE,OACVe,EAAIA,EAAQ,EAAJA,EAAQyB,KAAKkC,IAAK,EAAGrD,EAAMN,GAAMA,EAAI,EAEjCM,EAAJN,EAASA,IAEhB,GAAKA,IAAKuD,IAAOA,EAAKvD,KAAQD,EAC7B,MAAOC,GAKV,MAAO,IAGRP,MAAO,SAAUU,EAAOyD,GACvB,GAAItD,IAAOsD,EAAO3E,OACjBsB,EAAI,EACJP,EAAIG,EAAMlB,MAEX,OAAYqB,EAAJC,EACPJ,EAAOH,KAAQ4D,EAAQrD,IAKxB,IAAKD,IAAQA,EACZ,MAAsBiB,SAAdqC,EAAOrD,GACdJ,EAAOH,KAAQ4D,EAAQrD,IAMzB,OAFAJ,GAAMlB,OAASe,EAERG,GAGR0D,KAAM,SAAUtE,EAAOK,EAAUkE,GAShC,IARA,GAAIC,GACHC,KACAhE,EAAI,EACJf,EAASM,EAAMN,OACfgF,GAAkBH,EAIP7E,EAAJe,EAAYA,IACnB+D,GAAmBnE,EAAUL,EAAOS,GAAKA,GACpC+D,IAAoBE,GACxBD,EAAQtG,KAAM6B,EAAOS,GAIvB,OAAOgE,IAIRlE,IAAK,SAAUP,EAAOK,EAAUsE,GAC/B,GAAIf,GACHnD,EAAI,EACJf,EAASM,EAAMN,OACfqC,EAAU8B,EAAa7D,GACvBC,IAGD,IAAK8B,EACJ,KAAYrC,EAAJe,EAAYA,IACnBmD,EAAQvD,EAAUL,EAAOS,GAAKA,EAAGkE,GAEnB,MAATf,GACJ3D,EAAI9B,KAAMyF,OAMZ,KAAMnD,IAAKT,GACV4D,EAAQvD,EAAUL,EAAOS,GAAKA,EAAGkE,GAEnB,MAATf,GACJ3D,EAAI9B,KAAMyF,EAMb,OAAO1F,GAAOwC,SAAWT,IAI1B2E,KAAM,EAINC,MAAO,SAAU/F,EAAID,GACpB,GAAIyB,GAAMuE,EAAOC,CAUjB,OARwB,gBAAZjG,KACXiG,EAAMhG,EAAID,GACVA,EAAUC,EACVA,EAAKgG,GAKAnG,EAAOkD,WAAY/C,IAKzBwB,EAAOrC,EAAM2B,KAAMe,UAAW,GAC9BkE,EAAQ,WACP,MAAO/F,GAAG4B,MAAO7B,GAAWf,KAAMwC,EAAKpC,OAAQD,EAAM2B,KAAMe,cAI5DkE,EAAMD,KAAO9F,EAAG8F,KAAO9F,EAAG8F,MAAQjG,EAAOiG,OAElCC,GAZC7C,QAeT+C,IAAK,WACJ,OAAQ,GAAMC,OAKfvG,QAASA,IAIVE,EAAOyB,KAAK,gEAAgE6E,MAAM,KAAM,SAASxE,EAAGe,GACnGnD,EAAY,WAAamD,EAAO,KAAQA,EAAKmC,eAG9C,SAASE,GAAapB,GAMrB,GAAI/C,GAAS,UAAY+C,IAAOA,EAAI/C,OACnCgD,EAAO/D,EAAO+D,KAAMD,EAErB,OAAc,aAATC,GAAuB/D,EAAOiE,SAAUH,IACrC,EAGc,IAAjBA,EAAIQ,UAAkBvD,GACnB,EAGQ,UAATgD,GAA+B,IAAXhD,GACR,gBAAXA,IAAuBA,EAAS,GAAOA,EAAS,IAAO+C,GAEhE,GAAIyC,GAWJ,SAAWrH,GAEX,GAAI4C,GACHhC,EACA0G,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAGAC,EACAlI,EACAmI,EACAC,EACAC,EACAC,EACAvB,EACAwB,EAGAhE,EAAU,SAAW,EAAI,GAAI+C,MAC7BkB,EAAerI,EAAOH,SACtByI,EAAU,EACVC,EAAO,EACPC,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAY,SAAUC,EAAGC,GAIxB,MAHKD,KAAMC,IACVhB,GAAe,GAET,GAIRiB,EAAe,GAAK,GAGpBrI,KAAcC,eACdwF,KACA6C,EAAM7C,EAAI6C,IACVC,EAAc9C,EAAI7F,KAClBA,EAAO6F,EAAI7F,KACXF,EAAQ+F,EAAI/F,MAGZG,EAAU,SAAU2I,EAAMvG,GAGzB,IAFA,GAAIC,GAAI,EACPM,EAAMgG,EAAKrH,OACAqB,EAAJN,EAASA,IAChB,GAAKsG,EAAKtG,KAAOD,EAChB,MAAOC,EAGT,OAAO,IAGRuG,EAAW,6HAKXC,EAAa,sBAEbC,EAAoB,mCAKpBC,EAAaD,EAAkB9E,QAAS,IAAK,MAG7CgF,EAAa,MAAQH,EAAa,KAAOC,EAAoB,OAASD,EAErE,gBAAkBA,EAElB,2DAA6DE,EAAa,OAASF,EACnF,OAEDI,EAAU,KAAOH,EAAoB,wFAKPE,EAAa,eAM3CE,EAAc,GAAIC,QAAQN,EAAa,IAAK,KAC5CjI,EAAQ,GAAIuI,QAAQ,IAAMN,EAAa,8BAAgCA,EAAa,KAAM,KAE1FO,EAAS,GAAID,QAAQ,IAAMN,EAAa,KAAOA,EAAa,KAC5DQ,EAAe,GAAIF,QAAQ,IAAMN,EAAa,WAAaA,EAAa,IAAMA,EAAa,KAE3FS,EAAmB,GAAIH,QAAQ,IAAMN,EAAa,iBAAmBA,EAAa,OAAQ,KAE1FU,EAAU,GAAIJ,QAAQF,GACtBO,EAAc,GAAIL,QAAQ,IAAMJ,EAAa,KAE7CU,GACCC,GAAM,GAAIP,QAAQ,MAAQL,EAAoB,KAC9Ca,MAAS,GAAIR,QAAQ,QAAUL,EAAoB,KACnDc,IAAO,GAAIT,QAAQ,KAAOL,EAAkB9E,QAAS,IAAK,MAAS,KACnE6F,KAAQ,GAAIV,QAAQ,IAAMH,GAC1Bc,OAAU,GAAIX,QAAQ,IAAMF,GAC5Bc,MAAS,GAAIZ,QAAQ,yDAA2DN,EAC/E,+BAAiCA,EAAa,cAAgBA,EAC9D,aAAeA,EAAa,SAAU,KACvCmB,KAAQ,GAAIb,QAAQ,OAASP,EAAW,KAAM,KAG9CqB,aAAgB,GAAId,QAAQ,IAAMN,EAAa,mDAC9CA,EAAa,mBAAqBA,EAAa,mBAAoB,MAGrEqB,EAAU,sCACVC,EAAU,SAEVC,EAAU,yBAGVC,EAAa,mCAEbC,GAAW,OACXC,GAAU,QAGVC,GAAY,GAAIrB,QAAQ,qBAAuBN,EAAa,MAAQA,EAAa,OAAQ,MACzF4B,GAAY,SAAUC,EAAGC,EAASC,GACjC,GAAIC,GAAO,KAAOF,EAAU,KAI5B,OAAOE,KAASA,GAAQD,EACvBD,EACO,EAAPE,EAECC,OAAOC,aAAcF,EAAO,OAE5BC,OAAOC,aAAcF,GAAQ,GAAK,MAAe,KAAPA,EAAe,QAO5DG,GAAgB,WACfxD,IAIF,KACCzH,EAAKuC,MACHsD,EAAM/F,EAAM2B,KAAMsG,EAAamD,YAChCnD,EAAamD,YAIdrF,EAAKkC,EAAamD,WAAW3J,QAASuD,SACrC,MAAQC,IACT/E,GAASuC,MAAOsD,EAAItE,OAGnB,SAAUiC,EAAQ2H,GACjBxC,EAAYpG,MAAOiB,EAAQ1D,EAAM2B,KAAK0J,KAKvC,SAAU3H,EAAQ2H,GACjB,GAAItI,GAAIW,EAAOjC,OACde,EAAI,CAEL,OAASkB,EAAOX,KAAOsI,EAAI7I,MAC3BkB,EAAOjC,OAASsB,EAAI,IAKvB,QAASkE,IAAQtG,EAAUC,EAASoF,EAASsF,GAC5C,GAAIC,GAAOhJ,EAAMiJ,EAAGxG,EAEnBxC,EAAGiJ,EAAQC,EAAKC,EAAKC,EAAYC,CAUlC,KAROjL,EAAUA,EAAQkL,eAAiBlL,EAAUqH,KAAmBxI,GACtEkI,EAAa/G,GAGdA,EAAUA,GAAWnB,EACrBuG,EAAUA,MACVhB,EAAWpE,EAAQoE,SAEM,gBAAbrE,KAA0BA,GACxB,IAAbqE,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,MAAOgB,EAGR,KAAMsF,GAAQzD,EAAiB,CAG9B,GAAkB,KAAb7C,IAAoBuG,EAAQf,EAAWuB,KAAMpL,IAEjD,GAAM6K,EAAID,EAAM,IACf,GAAkB,IAAbvG,EAAiB,CAIrB,GAHAzC,EAAO3B,EAAQoL,eAAgBR,IAG1BjJ,IAAQA,EAAK0J,WAQjB,MAAOjG,EALP,IAAKzD,EAAK2J,KAAOV,EAEhB,MADAxF,GAAQ9F,KAAMqC,GACPyD,MAOT,IAAKpF,EAAQkL,gBAAkBvJ,EAAO3B,EAAQkL,cAAcE,eAAgBR,KAC3ExD,EAAUpH,EAAS2B,IAAUA,EAAK2J,KAAOV,EAEzC,MADAxF,GAAQ9F,KAAMqC,GACPyD,MAKH,CAAA,GAAKuF,EAAM,GAEjB,MADArL,GAAKuC,MAAOuD,EAASpF,EAAQuL,qBAAsBxL,IAC5CqF,CAGD,KAAMwF,EAAID,EAAM,KAAO/K,EAAQ4L,uBAErC,MADAlM,GAAKuC,MAAOuD,EAASpF,EAAQwL,uBAAwBZ,IAC9CxF,EAKT,GAAKxF,EAAQ6L,OAASvE,IAAcA,EAAUwE,KAAM3L,IAAc,CASjE,GARAgL,EAAMD,EAAM1H,EACZ4H,EAAahL,EACbiL,EAA2B,IAAb7G,GAAkBrE,EAMd,IAAbqE,GAAqD,WAAnCpE,EAAQ6E,SAASC,cAA6B,CACpE+F,EAASpE,EAAU1G,IAEb+K,EAAM9K,EAAQ2L,aAAa,OAChCZ,EAAMD,EAAIvH,QAASuG,GAAS,QAE5B9J,EAAQ4L,aAAc,KAAMb,GAE7BA,EAAM,QAAUA,EAAM,MAEtBnJ,EAAIiJ,EAAOhK,MACX,OAAQe,IACPiJ,EAAOjJ,GAAKmJ,EAAMc,GAAYhB,EAAOjJ,GAEtCoJ,GAAanB,GAAS6B,KAAM3L,IAAc+L,GAAa9L,EAAQqL,aAAgBrL,EAC/EiL,EAAcJ,EAAOkB,KAAK,KAG3B,GAAKd,EACJ,IAIC,MAHA3L,GAAKuC,MAAOuD,EACX4F,EAAWgB,iBAAkBf,IAEvB7F,EACN,MAAM6G,IACN,QACKnB,GACL9K,EAAQkM,gBAAgB,QAQ7B,MAAOvF,GAAQ5G,EAASwD,QAASpD,EAAO,MAAQH,EAASoF,EAASsF,GASnE,QAASjD,MACR,GAAI0E,KAEJ,SAASC,GAAOjI,EAAKY,GAMpB,MAJKoH,GAAK7M,KAAM6E,EAAM,KAAQmC,EAAK+F,mBAE3BD,GAAOD,EAAKG,SAEZF,EAAOjI,EAAM,KAAQY,EAE9B,MAAOqH,GAOR,QAASG,IAActM,GAEtB,MADAA,GAAImD,IAAY,EACTnD,EAOR,QAASuM,IAAQvM,GAChB,GAAIwM,GAAM5N,EAAS6N,cAAc,MAEjC,KACC,QAASzM,EAAIwM,GACZ,MAAOpI,GACR,OAAO,EACN,QAEIoI,EAAIpB,YACRoB,EAAIpB,WAAWsB,YAAaF,GAG7BA,EAAM,MASR,QAASG,IAAWC,EAAOC,GAC1B,GAAI3H,GAAM0H,EAAMzG,MAAM,KACrBxE,EAAIiL,EAAMhM,MAEX,OAAQe,IACP0E,EAAKyG,WAAY5H,EAAIvD,IAAOkL,EAU9B,QAASE,IAAcnF,EAAGC,GACzB,GAAImF,GAAMnF,GAAKD,EACdqF,EAAOD,GAAsB,IAAfpF,EAAEzD,UAAiC,IAAf0D,EAAE1D,YAChC0D,EAAEqF,aAAepF,KACjBF,EAAEsF,aAAepF,EAGtB,IAAKmF,EACJ,MAAOA,EAIR,IAAKD,EACJ,MAASA,EAAMA,EAAIG,YAClB,GAAKH,IAAQnF,EACZ,MAAO,EAKV,OAAOD,GAAI,EAAI,GAOhB,QAASwF,IAAmBxJ,GAC3B,MAAO,UAAUlC,GAChB,GAAIgB,GAAOhB,EAAKkD,SAASC,aACzB,OAAgB,UAATnC,GAAoBhB,EAAKkC,OAASA,GAQ3C,QAASyJ,IAAoBzJ,GAC5B,MAAO,UAAUlC,GAChB,GAAIgB,GAAOhB,EAAKkD,SAASC,aACzB,QAAiB,UAATnC,GAA6B,WAATA,IAAsBhB,EAAKkC,OAASA,GAQlE,QAAS0J,IAAwBtN,GAChC,MAAOsM,IAAa,SAAUiB,GAE7B,MADAA,IAAYA,EACLjB,GAAa,SAAU7B,EAAM9E,GACnC,GAAIzD,GACHsL,EAAexN,KAAQyK,EAAK7J,OAAQ2M,GACpC5L,EAAI6L,EAAa5M,MAGlB,OAAQe,IACF8I,EAAOvI,EAAIsL,EAAa7L,MAC5B8I,EAAKvI,KAAOyD,EAAQzD,GAAKuI,EAAKvI,SAYnC,QAAS2J,IAAa9L,GACrB,MAAOA,IAAmD,mBAAjCA,GAAQuL,sBAAwCvL,EAI1EJ,EAAUyG,GAAOzG,WAOjB4G,EAAQH,GAAOG,MAAQ,SAAU7E,GAGhC,GAAI+L,GAAkB/L,IAASA,EAAKuJ,eAAiBvJ,GAAM+L,eAC3D,OAAOA,GAA+C,SAA7BA,EAAgB7I,UAAsB,GAQhEkC,EAAcV,GAAOU,YAAc,SAAU4G,GAC5C,GAAIC,GAAYC,EACfC,EAAMH,EAAOA,EAAKzC,eAAiByC,EAAOtG,CAG3C,OAAKyG,KAAQjP,GAA6B,IAAjBiP,EAAI1J,UAAmB0J,EAAIJ,iBAKpD7O,EAAWiP,EACX9G,EAAU8G,EAAIJ,gBACdG,EAASC,EAAIC,YAMRF,GAAUA,IAAWA,EAAOG,MAE3BH,EAAOI,iBACXJ,EAAOI,iBAAkB,SAAU1D,IAAe,GACvCsD,EAAOK,aAClBL,EAAOK,YAAa,WAAY3D,KAMlCtD,GAAkBT,EAAOsH,GAQzBlO,EAAQ2I,WAAaiE,GAAO,SAAUC,GAErC,MADAA,GAAI0B,UAAY,KACR1B,EAAId,aAAa,eAO1B/L,EAAQ2L,qBAAuBiB,GAAO,SAAUC,GAE/C,MADAA,GAAI2B,YAAaN,EAAIO,cAAc,MAC3B5B,EAAIlB,qBAAqB,KAAK1K,SAIvCjB,EAAQ4L,uBAAyB7B,EAAQ+B,KAAMoC,EAAItC,wBAMnD5L,EAAQ0O,QAAU9B,GAAO,SAAUC,GAElC,MADAzF,GAAQoH,YAAa3B,GAAMnB,GAAKlI,GACxB0K,EAAIS,oBAAsBT,EAAIS,kBAAmBnL,GAAUvC,SAI/DjB,EAAQ0O,SACZhI,EAAKkI,KAAS,GAAI,SAAUlD,EAAItL,GAC/B,GAAuC,mBAA3BA,GAAQoL,gBAAkCnE,EAAiB,CACtE,GAAI2D,GAAI5K,EAAQoL,eAAgBE,EAGhC,OAAOV,IAAKA,EAAES,YAAeT,QAG/BtE,EAAKmI,OAAW,GAAI,SAAUnD,GAC7B,GAAIoD,GAASpD,EAAG/H,QAASwG,GAAWC,GACpC,OAAO,UAAUrI,GAChB,MAAOA,GAAKgK,aAAa,QAAU+C,YAM9BpI,GAAKkI,KAAS,GAErBlI,EAAKmI,OAAW,GAAK,SAAUnD,GAC9B,GAAIoD,GAASpD,EAAG/H,QAASwG,GAAWC,GACpC,OAAO,UAAUrI,GAChB,GAAIgM,GAAwC,mBAA1BhM,GAAKgN,kBAAoChN,EAAKgN,iBAAiB,KACjF,OAAOhB,IAAQA,EAAK5I,QAAU2J,KAMjCpI,EAAKkI,KAAU,IAAI5O,EAAQ2L,qBAC1B,SAAUqD,EAAK5O,GACd,MAA6C,mBAAjCA,GAAQuL,qBACZvL,EAAQuL,qBAAsBqD,GAG1BhP,EAAQ6L,IACZzL,EAAQgM,iBAAkB4C,GAD3B,QAKR,SAAUA,EAAK5O,GACd,GAAI2B,GACHsE,KACArE,EAAI,EAEJwD,EAAUpF,EAAQuL,qBAAsBqD,EAGzC,IAAa,MAARA,EAAc,CAClB,MAASjN,EAAOyD,EAAQxD,KACA,IAAlBD,EAAKyC,UACT6B,EAAI3G,KAAMqC,EAIZ,OAAOsE,GAER,MAAOb,IAITkB,EAAKkI,KAAY,MAAI5O,EAAQ4L,wBAA0B,SAAU2C,EAAWnO,GAC3E,MAAKiH,GACGjH,EAAQwL,uBAAwB2C,GADxC,QAWDhH,KAOAD,MAEMtH,EAAQ6L,IAAM9B,EAAQ+B,KAAMoC,EAAI9B,qBAGrCQ,GAAO,SAAUC,GAMhBzF,EAAQoH,YAAa3B,GAAMoC,UAAY,UAAYzL,EAAU,qBAC3CA,EAAU,iEAOvBqJ,EAAIT,iBAAiB,wBAAwBnL,QACjDqG,EAAU5H,KAAM,SAAW8I,EAAa,gBAKnCqE,EAAIT,iBAAiB,cAAcnL,QACxCqG,EAAU5H,KAAM,MAAQ8I,EAAa,aAAeD,EAAW,KAI1DsE,EAAIT,iBAAkB,QAAU5I,EAAU,MAAOvC,QACtDqG,EAAU5H,KAAK,MAMVmN,EAAIT,iBAAiB,YAAYnL,QACtCqG,EAAU5H,KAAK,YAMVmN,EAAIT,iBAAkB,KAAO5I,EAAU,MAAOvC,QACnDqG,EAAU5H,KAAK,cAIjBkN,GAAO,SAAUC,GAGhB,GAAIqC,GAAQhB,EAAIpB,cAAc,QAC9BoC,GAAMlD,aAAc,OAAQ,UAC5Ba,EAAI2B,YAAaU,GAAQlD,aAAc,OAAQ,KAI1Ca,EAAIT,iBAAiB,YAAYnL,QACrCqG,EAAU5H,KAAM,OAAS8I,EAAa,eAKjCqE,EAAIT,iBAAiB,YAAYnL,QACtCqG,EAAU5H,KAAM,WAAY,aAI7BmN,EAAIT,iBAAiB,QACrB9E,EAAU5H,KAAK,YAIXM,EAAQmP,gBAAkBpF,EAAQ+B,KAAO9F,EAAUoB,EAAQpB,SAChEoB,EAAQgI,uBACRhI,EAAQiI,oBACRjI,EAAQkI,kBACRlI,EAAQmI,qBAER3C,GAAO,SAAUC,GAGhB7M,EAAQwP,kBAAoBxJ,EAAQ7E,KAAM0L,EAAK,OAI/C7G,EAAQ7E,KAAM0L,EAAK,aACnBtF,EAAc7H,KAAM,KAAMkJ,KAI5BtB,EAAYA,EAAUrG,QAAU,GAAI6H,QAAQxB,EAAU6E,KAAK,MAC3D5E,EAAgBA,EAActG,QAAU,GAAI6H,QAAQvB,EAAc4E,KAAK,MAIvE6B,EAAajE,EAAQ+B,KAAM1E,EAAQqI,yBAKnCjI,EAAWwG,GAAcjE,EAAQ+B,KAAM1E,EAAQI,UAC9C,SAAUS,EAAGC,GACZ,GAAIwH,GAAuB,IAAfzH,EAAEzD,SAAiByD,EAAE6F,gBAAkB7F,EAClD0H,EAAMzH,GAAKA,EAAEuD,UACd,OAAOxD,KAAM0H,MAAWA,GAAwB,IAAjBA,EAAInL,YAClCkL,EAAMlI,SACLkI,EAAMlI,SAAUmI,GAChB1H,EAAEwH,yBAA8D,GAAnCxH,EAAEwH,wBAAyBE,MAG3D,SAAU1H,EAAGC,GACZ,GAAKA,EACJ,MAASA,EAAIA,EAAEuD,WACd,GAAKvD,IAAMD,EACV,OAAO,CAIV,QAAO,GAOTD,EAAYgG,EACZ,SAAU/F,EAAGC,GAGZ,GAAKD,IAAMC,EAEV,MADAhB,IAAe,EACR,CAIR,IAAI0I,IAAW3H,EAAEwH,yBAA2BvH,EAAEuH,uBAC9C,OAAKG,GACGA,GAIRA,GAAY3H,EAAEqD,eAAiBrD,MAAUC,EAAEoD,eAAiBpD,GAC3DD,EAAEwH,wBAAyBvH,GAG3B,EAGc,EAAV0H,IACF5P,EAAQ6P,cAAgB3H,EAAEuH,wBAAyBxH,KAAQ2H,EAGxD3H,IAAMiG,GAAOjG,EAAEqD,gBAAkB7D,GAAgBD,EAASC,EAAcQ,GACrE,GAEHC,IAAMgG,GAAOhG,EAAEoD,gBAAkB7D,GAAgBD,EAASC,EAAcS,GACrE,EAIDjB,EACJtH,EAASsH,EAAWgB,GAAMtI,EAASsH,EAAWiB,GAChD,EAGe,EAAV0H,EAAc,GAAK,IAE3B,SAAU3H,EAAGC,GAEZ,GAAKD,IAAMC,EAEV,MADAhB,IAAe,EACR,CAGR,IAAImG,GACHrL,EAAI,EACJ8N,EAAM7H,EAAEwD,WACRkE,EAAMzH,EAAEuD,WACRsE,GAAO9H,GACP+H,GAAO9H,EAGR,KAAM4H,IAAQH,EACb,MAAO1H,KAAMiG,EAAM,GAClBhG,IAAMgG,EAAM,EACZ4B,EAAM,GACNH,EAAM,EACN1I,EACEtH,EAASsH,EAAWgB,GAAMtI,EAASsH,EAAWiB,GAChD,CAGK,IAAK4H,IAAQH,EACnB,MAAOvC,IAAcnF,EAAGC,EAIzBmF,GAAMpF,CACN,OAASoF,EAAMA,EAAI5B,WAClBsE,EAAGE,QAAS5C,EAEbA,GAAMnF,CACN,OAASmF,EAAMA,EAAI5B,WAClBuE,EAAGC,QAAS5C,EAIb,OAAQ0C,EAAG/N,KAAOgO,EAAGhO,GACpBA,GAGD,OAAOA,GAENoL,GAAc2C,EAAG/N,GAAIgO,EAAGhO,IAGxB+N,EAAG/N,KAAOyF,EAAe,GACzBuI,EAAGhO,KAAOyF,EAAe,EACzB,GAGKyG,GA1WCjP,GA6WTwH,GAAOT,QAAU,SAAUkK,EAAMC,GAChC,MAAO1J,IAAQyJ,EAAM,KAAM,KAAMC,IAGlC1J,GAAO0I,gBAAkB,SAAUpN,EAAMmO,GASxC,IAPOnO,EAAKuJ,eAAiBvJ,KAAW9C,GACvCkI,EAAapF,GAIdmO,EAAOA,EAAKvM,QAASsF,EAAkB,aAElCjJ,EAAQmP,kBAAmB9H,GAC5BE,GAAkBA,EAAcuE,KAAMoE,IACtC5I,GAAkBA,EAAUwE,KAAMoE,IAErC,IACC,GAAI1O,GAAMwE,EAAQ7E,KAAMY,EAAMmO,EAG9B,IAAK1O,GAAOxB,EAAQwP,mBAGlBzN,EAAK9C,UAAuC,KAA3B8C,EAAK9C,SAASuF,SAChC,MAAOhD,GAEP,MAAOiD,IAGV,MAAOgC,IAAQyJ,EAAMjR,EAAU,MAAQ8C,IAASd,OAAS,GAG1DwF,GAAOe,SAAW,SAAUpH,EAAS2B,GAKpC,OAHO3B,EAAQkL,eAAiBlL,KAAcnB,GAC7CkI,EAAa/G,GAEPoH,EAAUpH,EAAS2B,IAG3B0E,GAAO2J,KAAO,SAAUrO,EAAMgB,IAEtBhB,EAAKuJ,eAAiBvJ,KAAW9C,GACvCkI,EAAapF,EAGd,IAAI1B,GAAKqG,EAAKyG,WAAYpK,EAAKmC,eAE9BmL,EAAMhQ,GAAMP,EAAOqB,KAAMuF,EAAKyG,WAAYpK,EAAKmC,eAC9C7E,EAAI0B,EAAMgB,GAAOsE,GACjB9D,MAEF,OAAeA,UAAR8M,EACNA,EACArQ,EAAQ2I,aAAetB,EACtBtF,EAAKgK,aAAchJ,IAClBsN,EAAMtO,EAAKgN,iBAAiBhM,KAAUsN,EAAIC,UAC1CD,EAAIlL,MACJ,MAGJsB,GAAO5C,MAAQ,SAAUC,GACxB,KAAM,IAAI3E,OAAO,0CAA4C2E,IAO9D2C,GAAO8J,WAAa,SAAU/K,GAC7B,GAAIzD,GACHyO,KACAjO,EAAI,EACJP,EAAI,CAOL,IAJAkF,GAAgBlH,EAAQyQ,iBACxBxJ,GAAajH,EAAQ0Q,YAAclL,EAAQhG,MAAO,GAClDgG,EAAQ/C,KAAMuF,GAETd,EAAe,CACnB,MAASnF,EAAOyD,EAAQxD,KAClBD,IAASyD,EAASxD,KACtBO,EAAIiO,EAAW9Q,KAAMsC,GAGvB,OAAQO,IACPiD,EAAQ9C,OAAQ8N,EAAYjO,GAAK,GAQnC,MAFA0E,GAAY,KAELzB,GAORmB,EAAUF,GAAOE,QAAU,SAAU5E,GACpC,GAAIgM,GACHvM,EAAM,GACNQ,EAAI,EACJwC,EAAWzC,EAAKyC,QAEjB,IAAMA,GAMC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAGjE,GAAiC,gBAArBzC,GAAK4O,YAChB,MAAO5O,GAAK4O,WAGZ,KAAM5O,EAAOA,EAAK6O,WAAY7O,EAAMA,EAAOA,EAAKyL,YAC/ChM,GAAOmF,EAAS5E,OAGZ,IAAkB,IAAbyC,GAA+B,IAAbA,EAC7B,MAAOzC,GAAK8O,cAhBZ,OAAS9C,EAAOhM,EAAKC,KAEpBR,GAAOmF,EAASoH,EAkBlB,OAAOvM,IAGRkF,EAAOD,GAAOqK,WAGbrE,YAAa,GAEbsE,aAAcpE,GAEd5B,MAAO3B,EAEP+D,cAEAyB,QAEAoC,UACCC,KAAOC,IAAK,aAAc/O,OAAO,GACjCgP,KAAOD,IAAK,cACZE,KAAOF,IAAK,kBAAmB/O,OAAO,GACtCkP,KAAOH,IAAK,oBAGbI,WACC9H,KAAQ,SAAUuB,GAUjB,MATAA,GAAM,GAAKA,EAAM,GAAGpH,QAASwG,GAAWC,IAGxCW,EAAM,IAAOA,EAAM,IAAMA,EAAM,IAAMA,EAAM,IAAM,IAAKpH,QAASwG,GAAWC,IAExD,OAAbW,EAAM,KACVA,EAAM,GAAK,IAAMA,EAAM,GAAK,KAGtBA,EAAMvL,MAAO,EAAG,IAGxBkK,MAAS,SAAUqB,GA6BlB,MAlBAA,GAAM,GAAKA,EAAM,GAAG7F,cAEY,QAA3B6F,EAAM,GAAGvL,MAAO,EAAG,IAEjBuL,EAAM,IACXtE,GAAO5C,MAAOkH,EAAM,IAKrBA,EAAM,KAAQA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAAK,GAAmB,SAAbA,EAAM,IAA8B,QAAbA,EAAM,KACzFA,EAAM,KAAUA,EAAM,GAAKA,EAAM,IAAqB,QAAbA,EAAM,KAGpCA,EAAM,IACjBtE,GAAO5C,MAAOkH,EAAM,IAGdA,GAGRtB,OAAU,SAAUsB,GACnB,GAAIwG,GACHC,GAAYzG,EAAM,IAAMA,EAAM,EAE/B,OAAK3B,GAAiB,MAAE0C,KAAMf,EAAM,IAC5B,MAIHA,EAAM,GACVA,EAAM,GAAKA,EAAM,IAAMA,EAAM,IAAM,GAGxByG,GAAYtI,EAAQ4C,KAAM0F,KAEpCD,EAAS1K,EAAU2K,GAAU,MAE7BD,EAASC,EAAS7R,QAAS,IAAK6R,EAASvQ,OAASsQ,GAAWC,EAASvQ,UAGvE8J,EAAM,GAAKA,EAAM,GAAGvL,MAAO,EAAG+R,GAC9BxG,EAAM,GAAKyG,EAAShS,MAAO,EAAG+R,IAIxBxG,EAAMvL,MAAO,EAAG,MAIzBqP,QAECtF,IAAO,SAAUkI,GAChB,GAAIxM,GAAWwM,EAAiB9N,QAASwG,GAAWC,IAAYlF,aAChE,OAA4B,MAArBuM,EACN,WAAa,OAAO,GACpB,SAAU1P,GACT,MAAOA,GAAKkD,UAAYlD,EAAKkD,SAASC,gBAAkBD,IAI3DqE,MAAS,SAAUiF,GAClB,GAAImD,GAAU9J,EAAY2G,EAAY,IAEtC,OAAOmD,KACLA,EAAU,GAAI5I,QAAQ,MAAQN,EAAa,IAAM+F,EAAY,IAAM/F,EAAa,SACjFZ,EAAY2G,EAAW,SAAUxM,GAChC,MAAO2P,GAAQ5F,KAAgC,gBAAnB/J,GAAKwM,WAA0BxM,EAAKwM,WAA0C,mBAAtBxM,GAAKgK,cAAgChK,EAAKgK,aAAa,UAAY,OAI1JvC,KAAQ,SAAUzG,EAAM4O,EAAUC,GACjC,MAAO,UAAU7P,GAChB,GAAI8P,GAASpL,GAAO2J,KAAMrO,EAAMgB,EAEhC,OAAe,OAAV8O,EACgB,OAAbF,EAEFA,GAINE,GAAU,GAEU,MAAbF,EAAmBE,IAAWD,EACvB,OAAbD,EAAoBE,IAAWD,EAClB,OAAbD,EAAoBC,GAAqC,IAA5BC,EAAOlS,QAASiS,GAChC,OAAbD,EAAoBC,GAASC,EAAOlS,QAASiS,GAAU,GAC1C,OAAbD,EAAoBC,GAASC,EAAOrS,OAAQoS,EAAM3Q,UAAa2Q,EAClD,OAAbD,GAAsB,IAAME,EAAOlO,QAASkF,EAAa,KAAQ,KAAMlJ,QAASiS,GAAU,GAC7E,OAAbD,EAAoBE,IAAWD,GAASC,EAAOrS,MAAO,EAAGoS,EAAM3Q,OAAS,KAAQ2Q,EAAQ,KACxF,IAZO,IAgBVlI,MAAS,SAAUzF,EAAM6N,EAAMlE,EAAUzL,EAAOE,GAC/C,GAAI0P,GAAgC,QAAvB9N,EAAKzE,MAAO,EAAG,GAC3BwS,EAA+B,SAArB/N,EAAKzE,MAAO,IACtByS,EAAkB,YAATH,CAEV,OAAiB,KAAV3P,GAAwB,IAATE,EAGrB,SAAUN,GACT,QAASA,EAAK0J,YAGf,SAAU1J,EAAM3B,EAAS8R,GACxB,GAAI1F,GAAO2F,EAAYpE,EAAMT,EAAM8E,EAAWC,EAC7CnB,EAAMa,IAAWC,EAAU,cAAgB,kBAC3C/D,EAASlM,EAAK0J,WACd1I,EAAOkP,GAAUlQ,EAAKkD,SAASC,cAC/BoN,GAAYJ,IAAQD,CAErB,IAAKhE,EAAS,CAGb,GAAK8D,EAAS,CACb,MAAQb,EAAM,CACbnD,EAAOhM,CACP,OAASgM,EAAOA,EAAMmD,GACrB,GAAKe,EAASlE,EAAK9I,SAASC,gBAAkBnC,EAAyB,IAAlBgL,EAAKvJ,SACzD,OAAO,CAIT6N,GAAQnB,EAAe,SAATjN,IAAoBoO,GAAS,cAE5C,OAAO,EAMR,GAHAA,GAAUL,EAAU/D,EAAO2C,WAAa3C,EAAOsE,WAG1CP,GAAWM,EAAW,CAE1BH,EAAalE,EAAQzK,KAAcyK,EAAQzK,OAC3CgJ,EAAQ2F,EAAYlO,OACpBmO,EAAY5F,EAAM,KAAO9E,GAAW8E,EAAM,GAC1Cc,EAAOd,EAAM,KAAO9E,GAAW8E,EAAM,GACrCuB,EAAOqE,GAAanE,EAAOrD,WAAYwH,EAEvC,OAASrE,IAASqE,GAAarE,GAAQA,EAAMmD,KAG3C5D,EAAO8E,EAAY,IAAMC,EAAMjK,MAGhC,GAAuB,IAAlB2F,EAAKvJ,YAAoB8I,GAAQS,IAAShM,EAAO,CACrDoQ,EAAYlO,IAAWyD,EAAS0K,EAAW9E,EAC3C,YAKI,IAAKgF,IAAa9F,GAASzK,EAAMyB,KAAczB,EAAMyB,QAAkBS,KAAWuI,EAAM,KAAO9E,EACrG4F,EAAOd,EAAM,OAKb,OAASuB,IAASqE,GAAarE,GAAQA,EAAMmD,KAC3C5D,EAAO8E,EAAY,IAAMC,EAAMjK,MAEhC,IAAO6J,EAASlE,EAAK9I,SAASC,gBAAkBnC,EAAyB,IAAlBgL,EAAKvJ,aAAsB8I,IAE5EgF,KACHvE,EAAMvK,KAAcuK,EAAMvK,QAAkBS,IAAWyD,EAAS4F,IAG7DS,IAAShM,GACb,KAQJ,OADAuL,IAAQjL,EACDiL,IAASnL,GAAWmL,EAAOnL,IAAU,GAAKmL,EAAOnL,GAAS,KAKrEsH,OAAU,SAAU+I,EAAQ5E,GAK3B,GAAI/L,GACHxB,EAAKqG,EAAKkC,QAAS4J,IAAY9L,EAAK+L,WAAYD,EAAOtN,gBACtDuB,GAAO5C,MAAO,uBAAyB2O,EAKzC,OAAKnS,GAAImD,GACDnD,EAAIuN,GAIPvN,EAAGY,OAAS,GAChBY,GAAS2Q,EAAQA,EAAQ,GAAI5E,GACtBlH,EAAK+L,WAAW1S,eAAgByS,EAAOtN,eAC7CyH,GAAa,SAAU7B,EAAM9E,GAC5B,GAAI0M,GACHC,EAAUtS,EAAIyK,EAAM8C,GACpB5L,EAAI2Q,EAAQ1R,MACb,OAAQe,IACP0Q,EAAM/S,EAASmL,EAAM6H,EAAQ3Q,IAC7B8I,EAAM4H,KAAW1M,EAAS0M,GAAQC,EAAQ3Q,MAG5C,SAAUD,GACT,MAAO1B,GAAI0B,EAAM,EAAGF,KAIhBxB,IAITuI,SAECgK,IAAOjG,GAAa,SAAUxM,GAI7B,GAAI+O,MACH1J,KACAqN,EAAU/L,EAAS3G,EAASwD,QAASpD,EAAO,MAE7C,OAAOsS,GAASrP,GACfmJ,GAAa,SAAU7B,EAAM9E,EAAS5F,EAAS8R,GAC9C,GAAInQ,GACH+Q,EAAYD,EAAS/H,EAAM,KAAMoH,MACjClQ,EAAI8I,EAAK7J,MAGV,OAAQe,KACDD,EAAO+Q,EAAU9Q,MACtB8I,EAAK9I,KAAOgE,EAAQhE,GAAKD,MAI5B,SAAUA,EAAM3B,EAAS8R,GAKxB,MAJAhD,GAAM,GAAKnN,EACX8Q,EAAS3D,EAAO,KAAMgD,EAAK1M,GAE3B0J,EAAM,GAAK,MACH1J,EAAQ4C,SAInB2K,IAAOpG,GAAa,SAAUxM,GAC7B,MAAO,UAAU4B,GAChB,MAAO0E,IAAQtG,EAAU4B,GAAOd,OAAS,KAI3CuG,SAAYmF,GAAa,SAAUtH,GAElC,MADAA,GAAOA,EAAK1B,QAASwG,GAAWC,IACzB,SAAUrI,GAChB,OAASA,EAAK4O,aAAe5O,EAAKiR,WAAarM,EAAS5E,IAASpC,QAAS0F,GAAS,MAWrF4N,KAAQtG,GAAc,SAAUsG,GAM/B,MAJM9J,GAAY2C,KAAKmH,GAAQ,KAC9BxM,GAAO5C,MAAO,qBAAuBoP,GAEtCA,EAAOA,EAAKtP,QAASwG,GAAWC,IAAYlF,cACrC,SAAUnD,GAChB,GAAImR,EACJ,GACC,IAAMA,EAAW7L,EAChBtF,EAAKkR,KACLlR,EAAKgK,aAAa,aAAehK,EAAKgK,aAAa,QAGnD,MADAmH,GAAWA,EAAShO,cACbgO,IAAaD,GAA2C,IAAnCC,EAASvT,QAASsT,EAAO,YAE5ClR,EAAOA,EAAK0J,aAAiC,IAAlB1J,EAAKyC,SAC3C,QAAO,KAKTtB,OAAU,SAAUnB,GACnB,GAAIoR,GAAO/T,EAAOgU,UAAYhU,EAAOgU,SAASD,IAC9C,OAAOA,IAAQA,EAAK3T,MAAO,KAAQuC,EAAK2J,IAGzC2H,KAAQ,SAAUtR,GACjB,MAAOA,KAASqF,GAGjBkM,MAAS,SAAUvR,GAClB,MAAOA,KAAS9C,EAASsU,iBAAmBtU,EAASuU,UAAYvU,EAASuU,gBAAkBzR,EAAKkC,MAAQlC,EAAK0R,OAAS1R,EAAK2R,WAI7HC,QAAW,SAAU5R,GACpB,MAAOA,GAAK6R,YAAa,GAG1BA,SAAY,SAAU7R,GACrB,MAAOA,GAAK6R,YAAa,GAG1BC,QAAW,SAAU9R,GAGpB,GAAIkD,GAAWlD,EAAKkD,SAASC,aAC7B,OAAqB,UAAbD,KAA0BlD,EAAK8R,SAA0B,WAAb5O,KAA2BlD,EAAK+R,UAGrFA,SAAY,SAAU/R,GAOrB,MAJKA,GAAK0J,YACT1J,EAAK0J,WAAWsI,cAGVhS,EAAK+R,YAAa,GAI1BE,MAAS,SAAUjS,GAKlB,IAAMA,EAAOA,EAAK6O,WAAY7O,EAAMA,EAAOA,EAAKyL,YAC/C,GAAKzL,EAAKyC,SAAW,EACpB,OAAO,CAGT,QAAO,GAGRyJ,OAAU,SAAUlM,GACnB,OAAQ2E,EAAKkC,QAAe,MAAG7G,IAIhCkS,OAAU,SAAUlS,GACnB,MAAO+H,GAAQgC,KAAM/J,EAAKkD,WAG3BiK,MAAS,SAAUnN,GAClB,MAAO8H,GAAQiC,KAAM/J,EAAKkD,WAG3BiP,OAAU,SAAUnS,GACnB,GAAIgB,GAAOhB,EAAKkD,SAASC,aACzB,OAAgB,UAATnC,GAAkC,WAAdhB,EAAKkC,MAA8B,WAATlB,GAGtDsC,KAAQ,SAAUtD,GACjB,GAAIqO,EACJ,OAAuC,UAAhCrO,EAAKkD,SAASC,eACN,SAAdnD,EAAKkC,OAImC,OAArCmM,EAAOrO,EAAKgK,aAAa,UAA2C,SAAvBqE,EAAKlL,gBAIvD/C,MAASwL,GAAuB,WAC/B,OAAS,KAGVtL,KAAQsL,GAAuB,SAAUE,EAAc5M,GACtD,OAASA,EAAS,KAGnBmB,GAAMuL,GAAuB,SAAUE,EAAc5M,EAAQ2M,GAC5D,OAAoB,EAAXA,EAAeA,EAAW3M,EAAS2M,KAG7CuG,KAAQxG,GAAuB,SAAUE,EAAc5M,GAEtD,IADA,GAAIe,GAAI,EACIf,EAAJe,EAAYA,GAAK,EACxB6L,EAAanO,KAAMsC,EAEpB,OAAO6L,KAGRuG,IAAOzG,GAAuB,SAAUE,EAAc5M,GAErD,IADA,GAAIe,GAAI,EACIf,EAAJe,EAAYA,GAAK,EACxB6L,EAAanO,KAAMsC,EAEpB,OAAO6L,KAGRwG,GAAM1G,GAAuB,SAAUE,EAAc5M,EAAQ2M,GAE5D,IADA,GAAI5L,GAAe,EAAX4L,EAAeA,EAAW3M,EAAS2M,IACjC5L,GAAK,GACd6L,EAAanO,KAAMsC,EAEpB,OAAO6L,KAGRyG,GAAM3G,GAAuB,SAAUE,EAAc5M,EAAQ2M,GAE5D,IADA,GAAI5L,GAAe,EAAX4L,EAAeA,EAAW3M,EAAS2M,IACjC5L,EAAIf,GACb4M,EAAanO,KAAMsC,EAEpB,OAAO6L,OAKVnH,EAAKkC,QAAa,IAAIlC,EAAKkC,QAAY,EAGvC,KAAM5G,KAAOuS,OAAO,EAAMC,UAAU,EAAMC,MAAM,EAAMC,UAAU,EAAMC,OAAO,GAC5EjO,EAAKkC,QAAS5G,GAAMyL,GAAmBzL,EAExC,KAAMA,KAAO4S,QAAQ,EAAMC,OAAO,GACjCnO,EAAKkC,QAAS5G,GAAM0L,GAAoB1L,EAIzC,SAASyQ,OACTA,GAAW3R,UAAY4F,EAAKoO,QAAUpO,EAAKkC,QAC3ClC,EAAK+L,WAAa,GAAIA,IAEtB5L,EAAWJ,GAAOI,SAAW,SAAU1G,EAAU4U,GAChD,GAAIpC,GAAS5H,EAAOiK,EAAQ/Q,EAC3BgR,EAAOhK,EAAQiK,EACfC,EAASrN,EAAY3H,EAAW,IAEjC,IAAKgV,EACJ,MAAOJ,GAAY,EAAII,EAAO3V,MAAO,EAGtCyV,GAAQ9U,EACR8K,KACAiK,EAAaxO,EAAK4K,SAElB,OAAQ2D,EAAQ,GAGTtC,IAAY5H,EAAQhC,EAAOwC,KAAM0J,OACjClK,IAEJkK,EAAQA,EAAMzV,MAAOuL,EAAM,GAAG9J,SAAYgU,GAE3ChK,EAAOvL,KAAOsV,OAGfrC,GAAU,GAGJ5H,EAAQ/B,EAAauC,KAAM0J,MAChCtC,EAAU5H,EAAM2B,QAChBsI,EAAOtV,MACNyF,MAAOwN,EAEP1O,KAAM8G,EAAM,GAAGpH,QAASpD,EAAO,OAEhC0U,EAAQA,EAAMzV,MAAOmT,EAAQ1R,QAI9B,KAAMgD,IAAQyC,GAAKmI,SACZ9D,EAAQ3B,EAAWnF,GAAOsH,KAAM0J,KAAcC,EAAYjR,MAC9D8G,EAAQmK,EAAYjR,GAAQ8G,MAC7B4H,EAAU5H,EAAM2B,QAChBsI,EAAOtV,MACNyF,MAAOwN,EACP1O,KAAMA,EACN+B,QAAS+E,IAEVkK,EAAQA,EAAMzV,MAAOmT,EAAQ1R,QAI/B,KAAM0R,EACL,MAOF,MAAOoC,GACNE,EAAMhU,OACNgU,EACCxO,GAAO5C,MAAO1D,GAEd2H,EAAY3H,EAAU8K,GAASzL,MAAO,GAGzC,SAASyM,IAAY+I,GAIpB,IAHA,GAAIhT,GAAI,EACPM,EAAM0S,EAAO/T,OACbd,EAAW,GACAmC,EAAJN,EAASA,IAChB7B,GAAY6U,EAAOhT,GAAGmD,KAEvB,OAAOhF,GAGR,QAASiV,IAAevC,EAASwC,EAAYC,GAC5C,GAAIpE,GAAMmE,EAAWnE,IACpBqE,EAAmBD,GAAgB,eAARpE,EAC3BsE,EAAW7N,GAEZ,OAAO0N,GAAWlT,MAEjB,SAAUJ,EAAM3B,EAAS8R,GACxB,MAASnQ,EAAOA,EAAMmP,GACrB,GAAuB,IAAlBnP,EAAKyC,UAAkB+Q,EAC3B,MAAO1C,GAAS9Q,EAAM3B,EAAS8R,IAMlC,SAAUnQ,EAAM3B,EAAS8R,GACxB,GAAIuD,GAAUtD,EACbuD,GAAahO,EAAS8N,EAGvB,IAAKtD,GACJ,MAASnQ,EAAOA,EAAMmP,GACrB,IAAuB,IAAlBnP,EAAKyC,UAAkB+Q,IACtB1C,EAAS9Q,EAAM3B,EAAS8R,GAC5B,OAAO,MAKV,OAASnQ,EAAOA,EAAMmP,GACrB,GAAuB,IAAlBnP,EAAKyC,UAAkB+Q,EAAmB,CAE9C,GADApD,EAAapQ,EAAMyB,KAAczB,EAAMyB,QACjCiS,EAAWtD,EAAYjB,KAC5BuE,EAAU,KAAQ/N,GAAW+N,EAAU,KAAQD,EAG/C,MAAQE,GAAU,GAAMD,EAAU,EAMlC,IAHAtD,EAAYjB,GAAQwE,EAGdA,EAAU,GAAM7C,EAAS9Q,EAAM3B,EAAS8R,GAC7C,OAAO,IASf,QAASyD,IAAgBC,GACxB,MAAOA,GAAS3U,OAAS,EACxB,SAAUc,EAAM3B,EAAS8R,GACxB,GAAIlQ,GAAI4T,EAAS3U,MACjB,OAAQe,IACP,IAAM4T,EAAS5T,GAAID,EAAM3B,EAAS8R,GACjC,OAAO,CAGT,QAAO,GAER0D,EAAS,GAGX,QAASC,IAAkB1V,EAAU2V,EAAUtQ,GAG9C,IAFA,GAAIxD,GAAI,EACPM,EAAMwT,EAAS7U,OACJqB,EAAJN,EAASA,IAChByE,GAAQtG,EAAU2V,EAAS9T,GAAIwD,EAEhC,OAAOA,GAGR,QAASuQ,IAAUjD,EAAWhR,EAAK+M,EAAQzO,EAAS8R,GAOnD,IANA,GAAInQ,GACHiU,KACAhU,EAAI,EACJM,EAAMwQ,EAAU7R,OAChBgV,EAAgB,MAAPnU,EAEEQ,EAAJN,EAASA,KACVD,EAAO+Q,EAAU9Q,OAChB6M,GAAUA,EAAQ9M,EAAM3B,EAAS8R,MACtC8D,EAAatW,KAAMqC,GACdkU,GACJnU,EAAIpC,KAAMsC,GAMd,OAAOgU,GAGR,QAASE,IAAY5E,EAAWnR,EAAU0S,EAASsD,EAAYC,EAAYC,GAO1E,MANKF,KAAeA,EAAY3S,KAC/B2S,EAAaD,GAAYC,IAErBC,IAAeA,EAAY5S,KAC/B4S,EAAaF,GAAYE,EAAYC,IAE/B1J,GAAa,SAAU7B,EAAMtF,EAASpF,EAAS8R,GACrD,GAAIoE,GAAMtU,EAAGD,EACZwU,KACAC,KACAC,EAAcjR,EAAQvE,OAGtBM,EAAQuJ,GAAQ+K,GAAkB1V,GAAY,IAAKC,EAAQoE,UAAapE,GAAYA,MAGpFsW,GAAYpF,IAAexG,GAAS3K,EAEnCoB,EADAwU,GAAUxU,EAAOgV,EAAQjF,EAAWlR,EAAS8R,GAG9CyE,EAAa9D,EAEZuD,IAAgBtL,EAAOwG,EAAYmF,GAAeN,MAMjD3Q,EACDkR,CAQF,IALK7D,GACJA,EAAS6D,EAAWC,EAAYvW,EAAS8R,GAIrCiE,EAAa,CACjBG,EAAOP,GAAUY,EAAYH,GAC7BL,EAAYG,KAAUlW,EAAS8R,GAG/BlQ,EAAIsU,EAAKrV,MACT,OAAQe,KACDD,EAAOuU,EAAKtU,MACjB2U,EAAYH,EAAQxU,MAAS0U,EAAWF,EAAQxU,IAAOD,IAK1D,GAAK+I,GACJ,GAAKsL,GAAc9E,EAAY,CAC9B,GAAK8E,EAAa,CAEjBE,KACAtU,EAAI2U,EAAW1V,MACf,OAAQe,KACDD,EAAO4U,EAAW3U,KAEvBsU,EAAK5W,KAAOgX,EAAU1U,GAAKD,EAG7BqU,GAAY,KAAOO,KAAkBL,EAAMpE,GAI5ClQ,EAAI2U,EAAW1V,MACf,OAAQe,KACDD,EAAO4U,EAAW3U,MACtBsU,EAAOF,EAAazW,EAASmL,EAAM/I,GAASwU,EAAOvU,IAAM,KAE1D8I,EAAKwL,KAAU9Q,EAAQ8Q,GAAQvU,SAOlC4U,GAAaZ,GACZY,IAAenR,EACdmR,EAAWjU,OAAQ+T,EAAaE,EAAW1V,QAC3C0V,GAEGP,EACJA,EAAY,KAAM5Q,EAASmR,EAAYzE,GAEvCxS,EAAKuC,MAAOuD,EAASmR,KAMzB,QAASC,IAAmB5B,GAwB3B,IAvBA,GAAI6B,GAAchE,EAAStQ,EAC1BD,EAAM0S,EAAO/T,OACb6V,EAAkBpQ,EAAKsK,SAAUgE,EAAO,GAAG/Q,MAC3C8S,EAAmBD,GAAmBpQ,EAAKsK,SAAS,KACpDhP,EAAI8U,EAAkB,EAAI,EAG1BE,EAAe5B,GAAe,SAAUrT,GACvC,MAAOA,KAAS8U,GACdE,GAAkB,GACrBE,EAAkB7B,GAAe,SAAUrT,GAC1C,MAAOpC,GAASkX,EAAc9U,GAAS,IACrCgV,GAAkB,GACrBnB,GAAa,SAAU7T,EAAM3B,EAAS8R,GACrC,GAAI1Q,IAASsV,IAAqB5E,GAAO9R,IAAY4G,MACnD6P,EAAezW,GAASoE,SACxBwS,EAAcjV,EAAM3B,EAAS8R,GAC7B+E,EAAiBlV,EAAM3B,EAAS8R,GAGlC,OADA2E,GAAe,KACRrV,IAGGc,EAAJN,EAASA,IAChB,GAAM6Q,EAAUnM,EAAKsK,SAAUgE,EAAOhT,GAAGiC,MACxC2R,GAAaR,GAAcO,GAAgBC,GAAY/C,QACjD,CAIN,GAHAA,EAAUnM,EAAKmI,OAAQmG,EAAOhT,GAAGiC,MAAOhC,MAAO,KAAM+S,EAAOhT,GAAGgE,SAG1D6M,EAASrP,GAAY,CAGzB,IADAjB,IAAMP,EACMM,EAAJC,EAASA,IAChB,GAAKmE,EAAKsK,SAAUgE,EAAOzS,GAAG0B,MAC7B,KAGF,OAAOiS,IACNlU,EAAI,GAAK2T,GAAgBC,GACzB5T,EAAI,GAAKiK,GAER+I,EAAOxV,MAAO,EAAGwC,EAAI,GAAIvC,QAAS0F,MAAgC,MAAzB6P,EAAQhT,EAAI,GAAIiC,KAAe,IAAM,MAC7EN,QAASpD,EAAO,MAClBsS,EACItQ,EAAJP,GAAS4U,GAAmB5B,EAAOxV,MAAOwC,EAAGO,IACzCD,EAAJC,GAAWqU,GAAoB5B,EAASA,EAAOxV,MAAO+C,IAClDD,EAAJC,GAAW0J,GAAY+I,IAGzBY,EAASlW,KAAMmT,GAIjB,MAAO8C,IAAgBC,GAGxB,QAASsB,IAA0BC,EAAiBC,GACnD,GAAIC,GAAQD,EAAYnW,OAAS,EAChCqW,EAAYH,EAAgBlW,OAAS,EACrCsW,EAAe,SAAUzM,EAAM1K,EAAS8R,EAAK1M,EAASgS,GACrD,GAAIzV,GAAMQ,EAAGsQ,EACZ4E,EAAe,EACfzV,EAAI,IACJ8Q,EAAYhI,MACZ4M,KACAC,EAAgB3Q,EAEhBzF,EAAQuJ,GAAQwM,GAAa5Q,EAAKkI,KAAU,IAAG,IAAK4I,GAEpDI,EAAiBlQ,GAA4B,MAAjBiQ,EAAwB,EAAIlU,KAAKC,UAAY,GACzEpB,EAAMf,EAAMN,MAUb,KARKuW,IACJxQ,EAAmB5G,IAAYnB,GAAYmB,GAOpC4B,IAAMM,GAA4B,OAApBP,EAAOR,EAAMS,IAAaA,IAAM,CACrD,GAAKsV,GAAavV,EAAO,CACxBQ,EAAI,CACJ,OAASsQ,EAAUsE,EAAgB5U,KAClC,GAAKsQ,EAAS9Q,EAAM3B,EAAS8R,GAAQ,CACpC1M,EAAQ9F,KAAMqC,EACd,OAGGyV,IACJ9P,EAAUkQ,GAKPP,KAEEtV,GAAQ8Q,GAAW9Q,IACxB0V,IAII3M,GACJgI,EAAUpT,KAAMqC,IAOnB,GADA0V,GAAgBzV,EACXqV,GAASrV,IAAMyV,EAAe,CAClClV,EAAI,CACJ,OAASsQ,EAAUuE,EAAY7U,KAC9BsQ,EAASC,EAAW4E,EAAYtX,EAAS8R,EAG1C,IAAKpH,EAAO,CAEX,GAAK2M,EAAe,EACnB,MAAQzV,IACA8Q,EAAU9Q,IAAM0V,EAAW1V,KACjC0V,EAAW1V,GAAKoG,EAAIjH,KAAMqE,GAM7BkS,GAAa3B,GAAU2B,GAIxBhY,EAAKuC,MAAOuD,EAASkS,GAGhBF,IAAc1M,GAAQ4M,EAAWzW,OAAS,GAC5CwW,EAAeL,EAAYnW,OAAW,GAExCwF,GAAO8J,WAAY/K,GAUrB,MALKgS,KACJ9P,EAAUkQ,EACV5Q,EAAmB2Q,GAGb7E,EAGT,OAAOuE,GACN1K,GAAc4K,GACdA,EA+KF,MA5KAzQ,GAAUL,GAAOK,QAAU,SAAU3G,EAAU4K,GAC9C,GAAI/I,GACHoV,KACAD,KACAhC,EAASpN,EAAe5H,EAAW,IAEpC,KAAMgV,EAAS,CAERpK,IACLA,EAAQlE,EAAU1G,IAEnB6B,EAAI+I,EAAM9J,MACV,OAAQe,IACPmT,EAASyB,GAAmB7L,EAAM/I,IAC7BmT,EAAQ3R,GACZ4T,EAAY1X,KAAMyV,GAElBgC,EAAgBzX,KAAMyV,EAKxBA,GAASpN,EAAe5H,EAAU+W,GAA0BC,EAAiBC,IAG7EjC,EAAOhV,SAAWA,EAEnB,MAAOgV,IAYRpO,EAASN,GAAOM,OAAS,SAAU5G,EAAUC,EAASoF,EAASsF,GAC9D,GAAI9I,GAAGgT,EAAQ6C,EAAO5T,EAAM2K,EAC3BkJ,EAA+B,kBAAb3X,IAA2BA,EAC7C4K,GAASD,GAAQjE,EAAW1G,EAAW2X,EAAS3X,UAAYA,EAK7D,IAHAqF,EAAUA,MAGY,IAAjBuF,EAAM9J,OAAe,CAIzB,GADA+T,EAASjK,EAAM,GAAKA,EAAM,GAAGvL,MAAO,GAC/BwV,EAAO/T,OAAS,GAAkC,QAA5B4W,EAAQ7C,EAAO,IAAI/Q,MAC5CjE,EAAQ0O,SAAgC,IAArBtO,EAAQoE,UAAkB6C,GAC7CX,EAAKsK,SAAUgE,EAAO,GAAG/Q,MAAS,CAGnC,GADA7D,GAAYsG,EAAKkI,KAAS,GAAGiJ,EAAM7R,QAAQ,GAAGrC,QAAQwG,GAAWC,IAAYhK,QAAkB,IACzFA,EACL,MAAOoF,EAGIsS,KACX1X,EAAUA,EAAQqL,YAGnBtL,EAAWA,EAASX,MAAOwV,EAAOtI,QAAQvH,MAAMlE,QAIjDe,EAAIoH,EAAwB,aAAE0C,KAAM3L,GAAa,EAAI6U,EAAO/T,MAC5D,OAAQe,IAAM,CAIb,GAHA6V,EAAQ7C,EAAOhT,GAGV0E,EAAKsK,SAAW/M,EAAO4T,EAAM5T,MACjC,KAED,KAAM2K,EAAOlI,EAAKkI,KAAM3K,MAEjB6G,EAAO8D,EACZiJ,EAAM7R,QAAQ,GAAGrC,QAASwG,GAAWC,IACrCH,GAAS6B,KAAMkJ,EAAO,GAAG/Q,OAAUiI,GAAa9L,EAAQqL,aAAgBrL,IACpE,CAKJ,GAFA4U,EAAOtS,OAAQV,EAAG,GAClB7B,EAAW2K,EAAK7J,QAAUgL,GAAY+I,IAChC7U,EAEL,MADAT,GAAKuC,MAAOuD,EAASsF,GACdtF,CAGR,SAeJ,OAPEsS,GAAYhR,EAAS3G,EAAU4K,IAChCD,EACA1K,GACCiH,EACD7B,EACAyE,GAAS6B,KAAM3L,IAAc+L,GAAa9L,EAAQqL,aAAgBrL,GAE5DoF,GAMRxF,EAAQ0Q,WAAalN,EAAQgD,MAAM,IAAI/D,KAAMuF,GAAYmE,KAAK,MAAQ3I,EAItExD,EAAQyQ,mBAAqBvJ,EAG7BC,IAIAnH,EAAQ6P,aAAejD,GAAO,SAAUmL,GAEvC,MAAuE,GAAhEA,EAAKtI,wBAAyBxQ,EAAS6N,cAAc,UAMvDF,GAAO,SAAUC,GAEtB,MADAA,GAAIoC,UAAY,mBAC+B,MAAxCpC,EAAI+D,WAAW7E,aAAa,WAEnCiB,GAAW,yBAA0B,SAAUjL,EAAMgB,EAAM6D,GAC1D,MAAMA,GAAN,OACQ7E,EAAKgK,aAAchJ,EAA6B,SAAvBA,EAAKmC,cAA2B,EAAI,KAOjElF,EAAQ2I,YAAeiE,GAAO,SAAUC,GAG7C,MAFAA,GAAIoC,UAAY,WAChBpC,EAAI+D,WAAW5E,aAAc,QAAS,IACY,KAA3Ca,EAAI+D,WAAW7E,aAAc,YAEpCiB,GAAW,QAAS,SAAUjL,EAAMgB,EAAM6D,GACzC,MAAMA,IAAyC,UAAhC7E,EAAKkD,SAASC,cAA7B,OACQnD,EAAKiW,eAOTpL,GAAO,SAAUC,GACtB,MAAuC,OAAhCA,EAAId,aAAa,eAExBiB,GAAWzE,EAAU,SAAUxG,EAAMgB,EAAM6D,GAC1C,GAAIyJ,EACJ,OAAMzJ,GAAN,OACQ7E,EAAMgB,MAAW,EAAOA,EAAKmC,eACjCmL,EAAMtO,EAAKgN,iBAAkBhM,KAAWsN,EAAIC,UAC7CD,EAAIlL,MACL,OAKGsB,IAEHrH,EAIJc,GAAO0O,KAAOnI,EACdvG,EAAOgQ,KAAOzJ,EAAOqK,UACrB5Q,EAAOgQ,KAAK,KAAOhQ,EAAOgQ,KAAKtH,QAC/B1I,EAAO+X,OAASxR,EAAO8J,WACvBrQ,EAAOmF,KAAOoB,EAAOE,QACrBzG,EAAOgY,SAAWzR,EAAOG,MACzB1G,EAAOsH,SAAWf,EAAOe,QAIzB,IAAI2Q,GAAgBjY,EAAOgQ,KAAKnF,MAAMnB,aAElCwO,EAAa,6BAIbC,EAAY,gBAGhB,SAASC,GAAQnI,EAAUoI,EAAW3F,GACrC,GAAK1S,EAAOkD,WAAYmV,GACvB,MAAOrY,GAAO2F,KAAMsK,EAAU,SAAUpO,EAAMC,GAE7C,QAASuW,EAAUpX,KAAMY,EAAMC,EAAGD,KAAW6Q,GAK/C,IAAK2F,EAAU/T,SACd,MAAOtE,GAAO2F,KAAMsK,EAAU,SAAUpO,GACvC,MAASA,KAASwW,IAAgB3F,GAKpC,IAA0B,gBAAd2F,GAAyB,CACpC,GAAKF,EAAUvM,KAAMyM,GACpB,MAAOrY,GAAO2O,OAAQ0J,EAAWpI,EAAUyC,EAG5C2F,GAAYrY,EAAO2O,OAAQ0J,EAAWpI,GAGvC,MAAOjQ,GAAO2F,KAAMsK,EAAU,SAAUpO,GACvC,MAAS7B,GAAOwF,QAAS3D,EAAMwW,IAAe,IAAQ3F,IAIxD1S,EAAO2O,OAAS,SAAUqB,EAAM3O,EAAOqR,GACtC,GAAI7Q,GAAOR,EAAO,EAMlB,OAJKqR,KACJ1C,EAAO,QAAUA,EAAO,KAGD,IAAjB3O,EAAMN,QAAkC,IAAlBc,EAAKyC,SACjCtE,EAAO0O,KAAKO,gBAAiBpN,EAAMmO,IAAWnO,MAC9C7B,EAAO0O,KAAK5I,QAASkK,EAAMhQ,EAAO2F,KAAMtE,EAAO,SAAUQ,GACxD,MAAyB,KAAlBA,EAAKyC,aAIftE,EAAOG,GAAGsC,QACTiM,KAAM,SAAUzO,GACf,GAAI6B,GACHR,KACAgX,EAAOnZ,KACPiD,EAAMkW,EAAKvX,MAEZ,IAAyB,gBAAbd,GACX,MAAOd,MAAKiC,UAAWpB,EAAQC,GAAW0O,OAAO,WAChD,IAAM7M,EAAI,EAAOM,EAAJN,EAASA,IACrB,GAAK9B,EAAOsH,SAAUgR,EAAMxW,GAAK3C,MAChC,OAAO,IAMX,KAAM2C,EAAI,EAAOM,EAAJN,EAASA,IACrB9B,EAAO0O,KAAMzO,EAAUqY,EAAMxW,GAAKR,EAMnC,OAFAA,GAAMnC,KAAKiC,UAAWgB,EAAM,EAAIpC,EAAO+X,OAAQzW,GAAQA,GACvDA,EAAIrB,SAAWd,KAAKc,SAAWd,KAAKc,SAAW,IAAMA,EAAWA,EACzDqB,GAERqN,OAAQ,SAAU1O,GACjB,MAAOd,MAAKiC,UAAWgX,EAAOjZ,KAAMc,OAAgB,KAErDyS,IAAK,SAAUzS,GACd,MAAOd,MAAKiC,UAAWgX,EAAOjZ,KAAMc,OAAgB,KAErDsY,GAAI,SAAUtY,GACb,QAASmY,EACRjZ,KAIoB,gBAAbc,IAAyBgY,EAAcrM,KAAM3L,GACnDD,EAAQC,GACRA,OACD,GACCc,SASJ,IAAIyX,GAGHzZ,EAAWG,EAAOH,SAKlB+K,EAAa,sCAEb1J,EAAOJ,EAAOG,GAAGC,KAAO,SAAUH,EAAUC,GAC3C,GAAI2K,GAAOhJ,CAGX,KAAM5B,EACL,MAAOd,KAIR,IAAyB,gBAAbc,GAAwB,CAUnC,GAPC4K,EAF2B,MAAvB5K,EAASwY,OAAO,IAAyD,MAA3CxY,EAASwY,OAAQxY,EAASc,OAAS,IAAed,EAASc,QAAU,GAE7F,KAAMd,EAAU,MAGlB6J,EAAWuB,KAAMpL,IAIrB4K,IAAUA,EAAM,IAAO3K,EAsDrB,OAAMA,GAAWA,EAAQW,QACtBX,GAAWsY,GAAa9J,KAAMzO,GAKhCd,KAAK2B,YAAaZ,GAAUwO,KAAMzO,EAzDzC,IAAK4K,EAAM,GAAK,CAYf,GAXA3K,EAAUA,YAAmBF,GAASE,EAAQ,GAAKA,EAInDF,EAAOuB,MAAOpC,KAAMa,EAAO0Y,UAC1B7N,EAAM,GACN3K,GAAWA,EAAQoE,SAAWpE,EAAQkL,eAAiBlL,EAAUnB,GACjE,IAIImZ,EAAWtM,KAAMf,EAAM,KAAQ7K,EAAOmD,cAAejD,GACzD,IAAM2K,IAAS3K,GAETF,EAAOkD,WAAY/D,KAAM0L,IAC7B1L,KAAM0L,GAAS3K,EAAS2K,IAIxB1L,KAAK+Q,KAAMrF,EAAO3K,EAAS2K,GAK9B,OAAO1L,MAQP,GAJA0C,EAAO9C,EAASuM,eAAgBT,EAAM,IAIjChJ,GAAQA,EAAK0J,WAAa,CAG9B,GAAK1J,EAAK2J,KAAOX,EAAM,GACtB,MAAO2N,GAAW9J,KAAMzO,EAIzBd,MAAK4B,OAAS,EACd5B,KAAK,GAAK0C,EAKX,MAFA1C,MAAKe,QAAUnB,EACfI,KAAKc,SAAWA,EACTd,KAcH,MAAKc,GAASqE,UACpBnF,KAAKe,QAAUf,KAAK,GAAKc,EACzBd,KAAK4B,OAAS,EACP5B,MAIIa,EAAOkD,WAAYjD,GACK,mBAArBuY,GAAWG,MACxBH,EAAWG,MAAO1Y,GAElBA,EAAUD,IAGeqD,SAAtBpD,EAASA,WACbd,KAAKc,SAAWA,EAASA,SACzBd,KAAKe,QAAUD,EAASC,SAGlBF,EAAOoF,UAAWnF,EAAUd,OAIrCiB,GAAKQ,UAAYZ,EAAOG,GAGxBqY,EAAaxY,EAAQjB,EAGrB,IAAI6Z,GAAe,iCAElBC,GACCC,UAAU,EACVC,UAAU,EACVC,MAAM,EACNC,MAAM,EAGRjZ,GAAOyC,QACNuO,IAAK,SAAUnP,EAAMmP,EAAKkI,GACzB,GAAIzG,MACHtF,EAAMtL,EAAMmP,EAEb,OAAQ7D,GAAwB,IAAjBA,EAAI7I,WAA6BjB,SAAV6V,GAAwC,IAAjB/L,EAAI7I,WAAmBtE,EAAQmN,GAAMoL,GAAIW,IAC/E,IAAjB/L,EAAI7I,UACRmO,EAAQjT,KAAM2N,GAEfA,EAAMA,EAAI6D,EAEX,OAAOyB,IAGR0G,QAAS,SAAUC,EAAGvX,GAGrB,IAFA,GAAIwX,MAEID,EAAGA,EAAIA,EAAE9L,YACI,IAAf8L,EAAE9U,UAAkB8U,IAAMvX,GAC9BwX,EAAE7Z,KAAM4Z,EAIV,OAAOC,MAITrZ,EAAOG,GAAGsC,QACToQ,IAAK,SAAU7P,GACd,GAAIlB,GACHwX,EAAUtZ,EAAQgD,EAAQ7D,MAC1BiD,EAAMkX,EAAQvY,MAEf,OAAO5B,MAAKwP,OAAO,WAClB,IAAM7M,EAAI,EAAOM,EAAJN,EAASA,IACrB,GAAK9B,EAAOsH,SAAUnI,KAAMma,EAAQxX,IACnC,OAAO,KAMXyX,QAAS,SAAU3I,EAAW1Q,GAS7B,IARA,GAAIiN,GACHrL,EAAI,EACJ0X,EAAIra,KAAK4B,OACT0R,KACAgH,EAAMxB,EAAcrM,KAAMgF,IAAoC,gBAAdA,GAC/C5Q,EAAQ4Q,EAAW1Q,GAAWf,KAAKe,SACnC,EAEUsZ,EAAJ1X,EAAOA,IACd,IAAMqL,EAAMhO,KAAK2C,GAAIqL,GAAOA,IAAQjN,EAASiN,EAAMA,EAAI5B,WAEtD,GAAK4B,EAAI7I,SAAW,KAAOmV,EAC1BA,EAAIC,MAAMvM,GAAO,GAGA,IAAjBA,EAAI7I,UACHtE,EAAO0O,KAAKO,gBAAgB9B,EAAKyD,IAAc,CAEhD6B,EAAQjT,KAAM2N,EACd,OAKH,MAAOhO,MAAKiC,UAAWqR,EAAQ1R,OAAS,EAAIf,EAAO+X,OAAQtF,GAAYA,IAKxEiH,MAAO,SAAU7X,GAGhB,MAAMA,GAKe,gBAATA,GACJ7B,EAAOwF,QAASrG,KAAK,GAAIa,EAAQ6B,IAIlC7B,EAAOwF,QAEb3D,EAAKhB,OAASgB,EAAK,GAAKA,EAAM1C,MAXrBA,KAAK,IAAMA,KAAK,GAAGoM,WAAepM,KAAK8C,QAAQ0X,UAAU5Y,OAAS,IAc7E6Y,IAAK,SAAU3Z,EAAUC,GACxB,MAAOf,MAAKiC,UACXpB,EAAO+X,OACN/X,EAAOuB,MAAOpC,KAAK+B,MAAOlB,EAAQC,EAAUC,OAK/C2Z,QAAS,SAAU5Z,GAClB,MAAOd,MAAKya,IAAiB,MAAZ3Z,EAChBd,KAAKqC,WAAarC,KAAKqC,WAAWmN,OAAO1O,MAK5C,SAASkZ,GAAShM,EAAK6D,GACtB,EACC7D,GAAMA,EAAK6D,SACF7D,GAAwB,IAAjBA,EAAI7I,SAErB,OAAO6I,GAGRnN,EAAOyB,MACNsM,OAAQ,SAAUlM,GACjB,GAAIkM,GAASlM,EAAK0J,UAClB,OAAOwC,IAA8B,KAApBA,EAAOzJ,SAAkByJ,EAAS,MAEpD+L,QAAS,SAAUjY,GAClB,MAAO7B,GAAOgR,IAAKnP,EAAM,eAE1BkY,aAAc,SAAUlY,EAAMC,EAAGoX,GAChC,MAAOlZ,GAAOgR,IAAKnP,EAAM,aAAcqX,IAExCF,KAAM,SAAUnX,GACf,MAAOsX,GAAStX,EAAM,gBAEvBoX,KAAM,SAAUpX,GACf,MAAOsX,GAAStX,EAAM,oBAEvBmY,QAAS,SAAUnY,GAClB,MAAO7B,GAAOgR,IAAKnP,EAAM,gBAE1B8X,QAAS,SAAU9X,GAClB,MAAO7B,GAAOgR,IAAKnP,EAAM,oBAE1BoY,UAAW,SAAUpY,EAAMC,EAAGoX,GAC7B,MAAOlZ,GAAOgR,IAAKnP,EAAM,cAAeqX,IAEzCgB,UAAW,SAAUrY,EAAMC,EAAGoX,GAC7B,MAAOlZ,GAAOgR,IAAKnP,EAAM,kBAAmBqX,IAE7CiB,SAAU,SAAUtY,GACnB,MAAO7B,GAAOmZ,SAAWtX,EAAK0J,gBAAmBmF,WAAY7O,IAE9DiX,SAAU,SAAUjX,GACnB,MAAO7B,GAAOmZ,QAAStX,EAAK6O,aAE7BqI,SAAU,SAAUlX,GACnB,MAAO7B,GAAO+E,SAAUlD,EAAM,UAC7BA,EAAKuY,iBAAmBvY,EAAKwY,cAActb,SAC3CiB,EAAOuB,SAAWM,EAAK6I,cAEvB,SAAU7H,EAAM1C,GAClBH,EAAOG,GAAI0C,GAAS,SAAUqW,EAAOjZ,GACpC,GAAIqB,GAAMtB,EAAO4B,IAAKzC,KAAMgB,EAAI+Y,EAsBhC,OApB0B,UAArBrW,EAAKvD,MAAO,MAChBW,EAAWiZ,GAGPjZ,GAAgC,gBAAbA,KACvBqB,EAAMtB,EAAO2O,OAAQ1O,EAAUqB,IAG3BnC,KAAK4B,OAAS,IAEZ8X,EAAkBhW,KACvBvB,EAAMtB,EAAO+X,OAAQzW,IAIjBsX,EAAahN,KAAM/I,KACvBvB,EAAMA,EAAIgZ,YAILnb,KAAKiC,UAAWE,KAGzB,IAAIiZ,GAAY,OAKZC,IAGJ,SAASC,GAAe3X,GACvB,GAAI4X,GAASF,EAAc1X,KAI3B,OAHA9C,GAAOyB,KAAMqB,EAAQ+H,MAAO0P,OAAmB,SAAUpQ,EAAGwQ,GAC3DD,EAAQC,IAAS,IAEXD,EAyBR1a,EAAO4a,UAAY,SAAU9X,GAI5BA,EAA6B,gBAAZA,GACd0X,EAAc1X,IAAa2X,EAAe3X,GAC5C9C,EAAOyC,UAAYK,EAEpB,IACC+X,GAEAC,EAEAC,EAEAC,EAEAC,EAEAC,EAEA9S,KAEA+S,GAASrY,EAAQsY,SAEjBC,EAAO,SAAU3W,GAOhB,IANAoW,EAAShY,EAAQgY,QAAUpW,EAC3BqW,GAAQ,EACRE,EAAcC,GAAe,EAC7BA,EAAc,EACdF,EAAe5S,EAAKrH,OACpB8Z,GAAS,EACDzS,GAAsB4S,EAAdC,EAA4BA,IAC3C,GAAK7S,EAAM6S,GAAclZ,MAAO2C,EAAM,GAAKA,EAAM,OAAU,GAAS5B,EAAQwY,YAAc,CACzFR,GAAS,CACT,OAGFD,GAAS,EACJzS,IACC+S,EACCA,EAAMpa,QACVsa,EAAMF,EAAM3O,SAEFsO,EACX1S,KAEAkQ,EAAKiD,YAKRjD,GAECsB,IAAK,WACJ,GAAKxR,EAAO,CAEX,GAAI+J,GAAQ/J,EAAKrH,QACjB,QAAU6Y,GAAKjY,GACd3B,EAAOyB,KAAME,EAAM,SAAUwI,EAAGnE,GAC/B,GAAIjC,GAAO/D,EAAO+D,KAAMiC,EACV,cAATjC,EACEjB,EAAQiV,QAAWO,EAAKzF,IAAK7M,IAClCoC,EAAK5I,KAAMwG,GAEDA,GAAOA,EAAIjF,QAAmB,WAATgD,GAEhC6V,EAAK5T,MAGJhE,WAGC6Y,EACJG,EAAe5S,EAAKrH,OAGT+Z,IACXI,EAAc/I,EACdkJ,EAAMP,IAGR,MAAO3b,OAGRqc,OAAQ,WAkBP,MAjBKpT,IACJpI,EAAOyB,KAAMO,UAAW,SAAUmI,EAAGnE,GACpC,GAAI0T,EACJ,QAAUA,EAAQ1Z,EAAOwF,QAASQ,EAAKoC,EAAMsR,IAAY,GACxDtR,EAAK5F,OAAQkX,EAAO,GAEfmB,IACUG,GAATtB,GACJsB,IAEaC,GAATvB,GACJuB,OAME9b,MAIR0T,IAAK,SAAU1S,GACd,MAAOA,GAAKH,EAAOwF,QAASrF,EAAIiI,GAAS,MAASA,IAAQA,EAAKrH,SAGhE+S,MAAO,WAGN,MAFA1L,MACA4S,EAAe,EACR7b,MAGRoc,QAAS,WAER,MADAnT,GAAO+S,EAAQL,EAASzX,OACjBlE,MAGRuU,SAAU,WACT,OAAQtL,GAGTqT,KAAM,WAKL,MAJAN,GAAQ9X,OACFyX,GACLxC,EAAKiD,UAECpc,MAGRuc,OAAQ,WACP,OAAQP,GAGTQ,SAAU,SAAUzb,EAASyB,GAU5B,OATKyG,GAAW2S,IAASI,IACxBxZ,EAAOA,MACPA,GAASzB,EAASyB,EAAKrC,MAAQqC,EAAKrC,QAAUqC,GACzCkZ,EACJM,EAAM3b,KAAMmC,GAEZ0Z,EAAM1Z,IAGDxC,MAGRkc,KAAM,WAEL,MADA/C,GAAKqD,SAAUxc,KAAM6C,WACd7C,MAGR4b,MAAO,WACN,QAASA,GAIZ,OAAOzC,IAIRtY,EAAOyC,QAENmZ,SAAU,SAAUC,GACnB,GAAIC,KAEA,UAAW,OAAQ9b,EAAO4a,UAAU,eAAgB,aACpD,SAAU,OAAQ5a,EAAO4a,UAAU,eAAgB,aACnD,SAAU,WAAY5a,EAAO4a,UAAU,YAE1CmB,EAAQ,UACRC,GACCD,MAAO,WACN,MAAOA,IAERE,OAAQ,WAEP,MADAC,GAASzU,KAAMzF,WAAYma,KAAMna,WAC1B7C,MAERid,KAAM,WACL,GAAIC,GAAMra,SACV,OAAOhC,GAAO4b,SAAS,SAAUU,GAChCtc,EAAOyB,KAAMqa,EAAQ,SAAUha,EAAGya,GACjC,GAAIpc,GAAKH,EAAOkD,WAAYmZ,EAAKva,KAASua,EAAKva,EAE/Coa,GAAUK,EAAM,IAAK,WACpB,GAAIC,GAAWrc,GAAMA,EAAG4B,MAAO5C,KAAM6C,UAChCwa,IAAYxc,EAAOkD,WAAYsZ,EAASR,SAC5CQ,EAASR,UACPvU,KAAM6U,EAASG,SACfN,KAAMG,EAASI,QACfC,SAAUL,EAASM,QAErBN,EAAUC,EAAO,GAAM,QAAUpd,OAAS6c,EAAUM,EAASN,UAAY7c,KAAMgB,GAAOqc,GAAaxa,eAItGqa,EAAM,OACJL,WAIJA,QAAS,SAAUlY,GAClB,MAAc,OAAPA,EAAc9D,EAAOyC,OAAQqB,EAAKkY,GAAYA,IAGvDE,IAwCD,OArCAF,GAAQa,KAAOb,EAAQI,KAGvBpc,EAAOyB,KAAMqa,EAAQ,SAAUha,EAAGya,GACjC,GAAInU,GAAOmU,EAAO,GACjBO,EAAcP,EAAO,EAGtBP,GAASO,EAAM,IAAOnU,EAAKwR,IAGtBkD,GACJ1U,EAAKwR,IAAI,WAERmC,EAAQe,GAGNhB,EAAY,EAAJha,GAAS,GAAIyZ,QAASO,EAAQ,GAAK,GAAIL,MAInDS,EAAUK,EAAM,IAAO,WAEtB,MADAL,GAAUK,EAAM,GAAK,QAAUpd,OAAS+c,EAAWF,EAAU7c,KAAM6C,WAC5D7C,MAER+c,EAAUK,EAAM,GAAK,QAAWnU,EAAKuT,WAItCK,EAAQA,QAASE,GAGZL,GACJA,EAAK5a,KAAMib,EAAUA,GAIfA,GAIRa,KAAM,SAAUC,GACf,GAAIlb,GAAI,EACPmb,EAAgB3d,EAAM2B,KAAMe,WAC5BjB,EAASkc,EAAclc,OAGvBmc,EAAuB,IAAXnc,GAAkBic,GAAehd,EAAOkD,WAAY8Z,EAAYhB,SAAcjb,EAAS,EAGnGmb,EAAyB,IAAdgB,EAAkBF,EAAchd,EAAO4b,WAGlDuB,EAAa,SAAUrb,EAAG8T,EAAUwH,GACnC,MAAO,UAAUnY,GAChB2Q,EAAU9T,GAAM3C,KAChBie,EAAQtb,GAAME,UAAUjB,OAAS,EAAIzB,EAAM2B,KAAMe,WAAciD,EAC1DmY,IAAWC,EACfnB,EAASoB,WAAY1H,EAAUwH,KAEhBF,GACfhB,EAASqB,YAAa3H,EAAUwH,KAKnCC,EAAgBG,EAAkBC,CAGnC,IAAK1c,EAAS,EAIb,IAHAsc,EAAiB,GAAIrZ,OAAOjD,GAC5Byc,EAAmB,GAAIxZ,OAAOjD,GAC9B0c,EAAkB,GAAIzZ,OAAOjD,GACjBA,EAAJe,EAAYA,IACdmb,EAAenb,IAAO9B,EAAOkD,WAAY+Z,EAAenb,GAAIka,SAChEiB,EAAenb,GAAIka,UACjBvU,KAAM0V,EAAYrb,EAAG2b,EAAiBR,IACtCd,KAAMD,EAASQ,QACfC,SAAUQ,EAAYrb,EAAG0b,EAAkBH,MAE3CH,CAUL,OAJMA,IACLhB,EAASqB,YAAaE,EAAiBR,GAGjCf,EAASF,YAMlB,IAAI0B,EAEJ1d,GAAOG,GAAGwY,MAAQ,SAAUxY,GAI3B,MAFAH,GAAO2Y,MAAMqD,UAAUvU,KAAMtH,GAEtBhB,MAGRa,EAAOyC,QAENiB,SAAS,EAITia,UAAW,EAGXC,UAAW,SAAUC,GACfA,EACJ7d,EAAO2d,YAEP3d,EAAO2Y,OAAO,IAKhBA,MAAO,SAAUmF,GAGhB,GAAKA,KAAS,KAAS9d,EAAO2d,WAAY3d,EAAO0D,QAAjD,CAKA,IAAM3E,EAASgf,KACd,MAAOC,YAAYhe,EAAO2Y,MAI3B3Y,GAAO0D,SAAU,EAGZoa,KAAS,KAAU9d,EAAO2d,UAAY,IAK3CD,EAAUH,YAAaxe,GAAYiB,IAG9BA,EAAOG,GAAG8d,iBACdje,EAAQjB,GAAWkf,eAAgB,SACnCje,EAAQjB,GAAWmf,IAAK,cAQ3B,SAASC,KACHpf,EAASoP,kBACbpP,EAASqf,oBAAqB,mBAAoBC,GAAW,GAC7Dnf,EAAOkf,oBAAqB,OAAQC,GAAW,KAG/Ctf,EAASuf,YAAa,qBAAsBD,GAC5Cnf,EAAOof,YAAa,SAAUD,IAOhC,QAASA,MAEHtf,EAASoP,kBAAmC,SAAfoQ,MAAMxa,MAA2C,aAAxBhF,EAASyf,cACnEL,IACAne,EAAO2Y,SAIT3Y,EAAO2Y,MAAMqD,QAAU,SAAUlY,GAChC,IAAM4Z,EAOL,GALAA,EAAY1d,EAAO4b,WAKU,aAAxB7c,EAASyf,WAEbR,WAAYhe,EAAO2Y,WAGb,IAAK5Z,EAASoP,iBAEpBpP,EAASoP,iBAAkB,mBAAoBkQ,GAAW,GAG1Dnf,EAAOiP,iBAAkB,OAAQkQ,GAAW,OAGtC,CAENtf,EAASqP,YAAa,qBAAsBiQ,GAG5Cnf,EAAOkP,YAAa,SAAUiQ,EAI9B,IAAInQ,IAAM,CAEV,KACCA,EAA6B,MAAvBhP,EAAOuf,cAAwB1f,EAAS6O,gBAC7C,MAAMrJ,IAEH2J,GAAOA,EAAIwQ,WACf,QAAUC,KACT,IAAM3e,EAAO0D,QAAU,CAEtB,IAGCwK,EAAIwQ,SAAS,QACZ,MAAMna,GACP,MAAOyZ,YAAYW,EAAe,IAInCR,IAGAne,EAAO2Y,YAMZ,MAAO+E,GAAU1B,QAASlY,GAI3B,IAAI8a,GAAe,YAMf9c,CACJ,KAAMA,IAAK9B,GAAQF,GAClB,KAEDA,GAAQ0E,QAAgB,MAAN1C,EAIlBhC,EAAQ+e,wBAAyB,EAGjC7e,EAAO,WAEN,GAAImQ,GAAKxD,EAAKoR,EAAMe,CAEpBf,GAAOhf,EAAS0M,qBAAsB,QAAU,GAC1CsS,GAASA,EAAKgB,QAMpBpS,EAAM5N,EAAS6N,cAAe,OAC9BkS,EAAY/f,EAAS6N,cAAe,OACpCkS,EAAUC,MAAMC,QAAU,iEAC1BjB,EAAKzP,YAAawQ,GAAYxQ,YAAa3B,SAE/BA,GAAIoS,MAAME,OAASL,IAK9BjS,EAAIoS,MAAMC,QAAU,gEAEpBlf,EAAQ+e,uBAAyB1O,EAA0B,IAApBxD,EAAIuS,YACtC/O,IAIJ4N,EAAKgB,MAAME,KAAO,IAIpBlB,EAAKlR,YAAaiS,MAMnB,WACC,GAAInS,GAAM5N,EAAS6N,cAAe,MAGlC,IAA6B,MAAzB9M,EAAQqf,cAAuB,CAElCrf,EAAQqf,eAAgB,CACxB,WACQxS,GAAIf,KACV,MAAOrH,GACRzE,EAAQqf,eAAgB,GAK1BxS,EAAM,QAOP3M,EAAOof,WAAa,SAAUvd,GAC7B,GAAIwd,GAASrf,EAAOqf,QAASxd,EAAKkD,SAAW,KAAKC,eACjDV,GAAYzC,EAAKyC,UAAY,CAG9B,OAAoB,KAAbA,GAA+B,IAAbA,GACxB,GAGC+a,GAAUA,KAAW,GAAQxd,EAAKgK,aAAa,aAAewT,EAIjE,IAAIC,GAAS,gCACZC,EAAa,UAEd,SAASC,GAAU3d,EAAMwC,EAAKK,GAG7B,GAAcrB,SAATqB,GAAwC,IAAlB7C,EAAKyC,SAAiB,CAEhD,GAAIzB,GAAO,QAAUwB,EAAIZ,QAAS8b,EAAY,OAAQva,aAItD,IAFAN,EAAO7C,EAAKgK,aAAchJ,GAEL,gBAAT6B,GAAoB,CAC/B,IACCA,EAAgB,SAATA,GAAkB,EACf,UAATA,GAAmB,EACV,SAATA,EAAkB,MAEjBA,EAAO,KAAOA,GAAQA,EACvB4a,EAAO1T,KAAMlH,GAAS1E,EAAOyf,UAAW/a,GACxCA,EACA,MAAOH,IAGTvE,EAAO0E,KAAM7C,EAAMwC,EAAKK,OAGxBA,GAAOrB,OAIT,MAAOqB,GAIR,QAASgb,GAAmB5b,GAC3B,GAAIjB,EACJ,KAAMA,IAAQiB,GAGb,IAAc,SAATjB,IAAmB7C,EAAOoE,cAAeN,EAAIjB,MAGpC,WAATA,EACJ,OAAO;;AAIT,OAAO,EAGR,QAAS8c,GAAc9d,EAAMgB,EAAM6B,EAAMkb,GACxC,GAAM5f,EAAOof,WAAYvd,GAAzB,CAIA,GAAIP,GAAKue,EACRC,EAAc9f,EAAOsD,QAIrByc,EAASle,EAAKyC,SAIdgI,EAAQyT,EAAS/f,EAAOsM,MAAQzK,EAIhC2J,EAAKuU,EAASle,EAAMie,GAAgBje,EAAMie,IAAiBA,CAI5D,IAAOtU,GAAOc,EAAMd,KAASoU,GAAQtT,EAAMd,GAAI9G,OAAmBrB,SAATqB,GAAsC,gBAAT7B,GAgEtF,MA5DM2I,KAIJA,EADIuU,EACCle,EAAMie,GAAgBzgB,EAAW6I,OAASlI,EAAOiG,OAEjD6Z,GAIDxT,EAAOd,KAGZc,EAAOd,GAAOuU,MAAgBC,OAAQhgB,EAAO6D,QAKzB,gBAAThB,IAAqC,kBAATA,MAClC+c,EACJtT,EAAOd,GAAOxL,EAAOyC,OAAQ6J,EAAOd,GAAM3I,GAE1CyJ,EAAOd,GAAK9G,KAAO1E,EAAOyC,OAAQ6J,EAAOd,GAAK9G,KAAM7B,IAItDgd,EAAYvT,EAAOd,GAKboU,IACCC,EAAUnb,OACfmb,EAAUnb,SAGXmb,EAAYA,EAAUnb,MAGTrB,SAATqB,IACJmb,EAAW7f,EAAO6E,UAAWhC,IAAW6B,GAKpB,gBAAT7B,IAGXvB,EAAMue,EAAWhd,GAGL,MAAPvB,IAGJA,EAAMue,EAAW7f,EAAO6E,UAAWhC,MAGpCvB,EAAMue,EAGAve,GAGR,QAAS2e,GAAoBpe,EAAMgB,EAAM+c,GACxC,GAAM5f,EAAOof,WAAYvd,GAAzB,CAIA,GAAIge,GAAW/d,EACdie,EAASle,EAAKyC,SAGdgI,EAAQyT,EAAS/f,EAAOsM,MAAQzK,EAChC2J,EAAKuU,EAASle,EAAM7B,EAAOsD,SAAYtD,EAAOsD,OAI/C,IAAMgJ,EAAOd,GAAb,CAIA,GAAK3I,IAEJgd,EAAYD,EAAMtT,EAAOd,GAAOc,EAAOd,GAAK9G,MAE3B,CAGV1E,EAAOoD,QAASP,GAsBrBA,EAAOA,EAAKtD,OAAQS,EAAO4B,IAAKiB,EAAM7C,EAAO6E,YAnBxChC,IAAQgd,GACZhd,GAASA,IAITA,EAAO7C,EAAO6E,UAAWhC,GAExBA,EADIA,IAAQgd,IACHhd,GAEFA,EAAKyD,MAAM,MAarBxE,EAAIe,EAAK9B,MACT,OAAQe,UACA+d,GAAWhd,EAAKf,GAKxB,IAAK8d,GAAOF,EAAkBG,IAAc7f,EAAOoE,cAAcyb,GAChE,QAMGD,UACEtT,GAAOd,GAAK9G,KAIbgb,EAAmBpT,EAAOd,QAM5BuU,EACJ/f,EAAOkgB,WAAare,IAAQ,GAIjB/B,EAAQqf,eAAiB7S,GAASA,EAAMpN,aAE5CoN,GAAOd,GAIdc,EAAOd,GAAO,QAIhBxL,EAAOyC,QACN6J,SAIA+S,QACCc,WAAW,EACXC,UAAU,EAEVC,UAAW,8CAGZC,QAAS,SAAUze,GAElB,MADAA,GAAOA,EAAKyC,SAAWtE,EAAOsM,MAAOzK,EAAK7B,EAAOsD,UAAazB,EAAM7B,EAAOsD,WAClEzB,IAAS6d,EAAmB7d,IAGtC6C,KAAM,SAAU7C,EAAMgB,EAAM6B,GAC3B,MAAOib,GAAc9d,EAAMgB,EAAM6B,IAGlC6b,WAAY,SAAU1e,EAAMgB,GAC3B,MAAOod,GAAoBpe,EAAMgB,IAIlC2d,MAAO,SAAU3e,EAAMgB,EAAM6B,GAC5B,MAAOib,GAAc9d,EAAMgB,EAAM6B,GAAM,IAGxC+b,YAAa,SAAU5e,EAAMgB,GAC5B,MAAOod,GAAoBpe,EAAMgB,GAAM,MAIzC7C,EAAOG,GAAGsC,QACTiC,KAAM,SAAUL,EAAKY,GACpB,GAAInD,GAAGe,EAAM6B,EACZ7C,EAAO1C,KAAK,GACZ4N,EAAQlL,GAAQA,EAAK4G,UAMtB,IAAapF,SAARgB,EAAoB,CACxB,GAAKlF,KAAK4B,SACT2D,EAAO1E,EAAO0E,KAAM7C,GAEG,IAAlBA,EAAKyC,WAAmBtE,EAAOwgB,MAAO3e,EAAM,gBAAkB,CAClEC,EAAIiL,EAAMhM,MACV,OAAQe,IAIFiL,EAAOjL,KACXe,EAAOkK,EAAOjL,GAAIe,KACe,IAA5BA,EAAKpD,QAAS,WAClBoD,EAAO7C,EAAO6E,UAAWhC,EAAKvD,MAAM,IACpCkgB,EAAU3d,EAAMgB,EAAM6B,EAAM7B,KAI/B7C,GAAOwgB,MAAO3e,EAAM,eAAe,GAIrC,MAAO6C,GAIR,MAAoB,gBAARL,GACJlF,KAAKsC,KAAK,WAChBzB,EAAO0E,KAAMvF,KAAMkF,KAIdrC,UAAUjB,OAAS,EAGzB5B,KAAKsC,KAAK,WACTzB,EAAO0E,KAAMvF,KAAMkF,EAAKY,KAKzBpD,EAAO2d,EAAU3d,EAAMwC,EAAKrE,EAAO0E,KAAM7C,EAAMwC,IAAUhB,QAG3Dkd,WAAY,SAAUlc,GACrB,MAAOlF,MAAKsC,KAAK,WAChBzB,EAAOugB,WAAYphB,KAAMkF,QAM5BrE,EAAOyC,QACNie,MAAO,SAAU7e,EAAMkC,EAAMW,GAC5B,GAAIgc,EAEJ,OAAK7e,IACJkC,GAASA,GAAQ,MAAS,QAC1B2c,EAAQ1gB,EAAOwgB,MAAO3e,EAAMkC,GAGvBW,KACEgc,GAAS1gB,EAAOoD,QAAQsB,GAC7Bgc,EAAQ1gB,EAAOwgB,MAAO3e,EAAMkC,EAAM/D,EAAOoF,UAAUV,IAEnDgc,EAAMlhB,KAAMkF,IAGPgc,OAZR,QAgBDC,QAAS,SAAU9e,EAAMkC,GACxBA,EAAOA,GAAQ,IAEf,IAAI2c,GAAQ1gB,EAAO0gB,MAAO7e,EAAMkC,GAC/B6c,EAAcF,EAAM3f,OACpBZ,EAAKugB,EAAMlU,QACXqU,EAAQ7gB,EAAO8gB,YAAajf,EAAMkC,GAClCiV,EAAO,WACNhZ,EAAO2gB,QAAS9e,EAAMkC,GAIZ,gBAAP5D,IACJA,EAAKugB,EAAMlU,QACXoU,KAGIzgB,IAIU,OAAT4D,GACJ2c,EAAM3Q,QAAS,oBAIT8Q,GAAME,KACb5gB,EAAGc,KAAMY,EAAMmX,EAAM6H,KAGhBD,GAAeC,GACpBA,EAAM/M,MAAMuH,QAKdyF,YAAa,SAAUjf,EAAMkC,GAC5B,GAAIM,GAAMN,EAAO,YACjB,OAAO/D,GAAOwgB,MAAO3e,EAAMwC,IAASrE,EAAOwgB,MAAO3e,EAAMwC,GACvDyP,MAAO9T,EAAO4a,UAAU,eAAehB,IAAI,WAC1C5Z,EAAOygB,YAAa5e,EAAMkC,EAAO,SACjC/D,EAAOygB,YAAa5e,EAAMwC,UAM9BrE,EAAOG,GAAGsC,QACTie,MAAO,SAAU3c,EAAMW,GACtB,GAAIsc,GAAS,CAQb,OANqB,gBAATjd,KACXW,EAAOX,EACPA,EAAO,KACPid,KAGIhf,UAAUjB,OAASigB,EAChBhhB,EAAO0gB,MAAOvhB,KAAK,GAAI4E,GAGfV,SAATqB,EACNvF,KACAA,KAAKsC,KAAK,WACT,GAAIif,GAAQ1gB,EAAO0gB,MAAOvhB,KAAM4E,EAAMW,EAGtC1E,GAAO8gB,YAAa3hB,KAAM4E,GAEZ,OAATA,GAA8B,eAAb2c,EAAM,IAC3B1gB,EAAO2gB,QAASxhB,KAAM4E,MAI1B4c,QAAS,SAAU5c,GAClB,MAAO5E,MAAKsC,KAAK,WAChBzB,EAAO2gB,QAASxhB,KAAM4E,MAGxBkd,WAAY,SAAUld,GACrB,MAAO5E,MAAKuhB,MAAO3c,GAAQ,UAI5BiY,QAAS,SAAUjY,EAAMD,GACxB,GAAIqC,GACH+a,EAAQ,EACRC,EAAQnhB,EAAO4b,WACf3L,EAAW9Q,KACX2C,EAAI3C,KAAK4B,OACT0b,EAAU,aACCyE,GACTC,EAAM5D,YAAatN,GAAYA,IAIb,iBAATlM,KACXD,EAAMC,EACNA,EAAOV,QAERU,EAAOA,GAAQ,IAEf,OAAQjC,IACPqE,EAAMnG,EAAOwgB,MAAOvQ,EAAUnO,GAAKiC,EAAO,cACrCoC,GAAOA,EAAI2N,QACfoN,IACA/a,EAAI2N,MAAM8F,IAAK6C,GAIjB,OADAA,KACO0E,EAAMnF,QAASlY,KAGxB,IAAIsd,GAAO,sCAAwCC,OAE/CC,GAAc,MAAO,QAAS,SAAU,QAExCC,EAAW,SAAU1f,EAAM2f,GAI7B,MADA3f,GAAO2f,GAAM3f,EAC4B,SAAlC7B,EAAOyhB,IAAK5f,EAAM,aAA2B7B,EAAOsH,SAAUzF,EAAKuJ,cAAevJ,IAOvF6f,EAAS1hB,EAAO0hB,OAAS,SAAUrgB,EAAOlB,EAAIkE,EAAKY,EAAO0c,EAAWC,EAAUC,GAClF,GAAI/f,GAAI,EACPf,EAASM,EAAMN,OACf+gB,EAAc,MAAPzd,CAGR,IAA4B,WAAvBrE,EAAO+D,KAAMM,GAAqB,CACtCsd,GAAY,CACZ,KAAM7f,IAAKuC,GACVrE,EAAO0hB,OAAQrgB,EAAOlB,EAAI2B,EAAGuC,EAAIvC,IAAI,EAAM8f,EAAUC,OAIhD,IAAexe,SAAV4B,IACX0c,GAAY,EAEN3hB,EAAOkD,WAAY+B,KACxB4c,GAAM,GAGFC,IAECD,GACJ1hB,EAAGc,KAAMI,EAAO4D,GAChB9E,EAAK,OAIL2hB,EAAO3hB,EACPA,EAAK,SAAU0B,EAAMwC,EAAKY,GACzB,MAAO6c,GAAK7gB,KAAMjB,EAAQ6B,GAAQoD,MAKhC9E,GACJ,KAAYY,EAAJe,EAAYA,IACnB3B,EAAIkB,EAAMS,GAAIuC,EAAKwd,EAAM5c,EAAQA,EAAMhE,KAAMI,EAAMS,GAAIA,EAAG3B,EAAIkB,EAAMS,GAAIuC,IAK3E,OAAOsd,GACNtgB,EAGAygB,EACC3hB,EAAGc,KAAMI,GACTN,EAASZ,EAAIkB,EAAM,GAAIgD,GAAQud,GAE9BG,EAAiB,yBAIrB,WAEC,GAAI/S,GAAQjQ,EAAS6N,cAAe,SACnCD,EAAM5N,EAAS6N,cAAe,OAC9BoV,EAAWjjB,EAASkjB,wBAsDrB,IAnDAtV,EAAIoC,UAAY,qEAGhBjP,EAAQoiB,kBAAgD,IAA5BvV,EAAI+D,WAAWpM,SAI3CxE,EAAQqiB,OAASxV,EAAIlB,qBAAsB,SAAU1K,OAIrDjB,EAAQsiB,gBAAkBzV,EAAIlB,qBAAsB,QAAS1K,OAI7DjB,EAAQuiB,WACyD,kBAAhEtjB,EAAS6N,cAAe,OAAQ0V,WAAW,GAAOC,UAInDvT,EAAMjL,KAAO,WACbiL,EAAM2E,SAAU,EAChBqO,EAAS1T,YAAaU,GACtBlP,EAAQ0iB,cAAgBxT,EAAM2E,QAI9BhH,EAAIoC,UAAY,yBAChBjP,EAAQ2iB,iBAAmB9V,EAAI2V,WAAW,GAAOjQ,UAAUyF,aAG3DkK,EAAS1T,YAAa3B,GACtBA,EAAIoC,UAAY,mDAIhBjP,EAAQ4iB,WAAa/V,EAAI2V,WAAW,GAAOA,WAAW,GAAOjQ,UAAUsB,QAKvE7T,EAAQ6iB,cAAe,EAClBhW,EAAIyB,cACRzB,EAAIyB,YAAa,UAAW,WAC3BtO,EAAQ6iB,cAAe,IAGxBhW,EAAI2V,WAAW,GAAOM,SAIM,MAAzB9iB,EAAQqf,cAAuB,CAElCrf,EAAQqf,eAAgB,CACxB,WACQxS,GAAIf,KACV,MAAOrH,GACRzE,EAAQqf,eAAgB,OAM3B,WACC,GAAIrd,GAAG+gB,EACNlW,EAAM5N,EAAS6N,cAAe,MAG/B,KAAM9K,KAAO4S,QAAQ,EAAMoO,QAAQ,EAAMC,SAAS,GACjDF,EAAY,KAAO/gB,GAEZhC,EAASgC,EAAI,WAAc+gB,IAAa3jB,MAE9CyN,EAAIb,aAAc+W,EAAW,KAC7B/iB,EAASgC,EAAI,WAAc6K,EAAIlE,WAAYoa,GAAYvf,WAAY,EAKrEqJ,GAAM,OAIP,IAAIqW,GAAa,+BAChBC,EAAY,OACZC,EAAc,uCACdC,EAAc,kCACdC,EAAiB,sBAElB,SAASC,MACR,OAAO,EAGR,QAASC,MACR,OAAO,EAGR,QAASC,MACR,IACC,MAAOxkB,GAASsU,cACf,MAAQmQ,KAOXxjB,EAAOue,OAEN5f,UAEAib,IAAK,SAAU/X,EAAM4hB,EAAOzW,EAAStI,EAAMzE,GAC1C,GAAIkG,GAAKud,EAAQC,EAAGC,EACnBC,EAASC,EAAaC,EACtBC,EAAUjgB,EAAMkgB,EAAYC,EAC5BC,EAAWnkB,EAAOwgB,MAAO3e,EAG1B,IAAMsiB,EAAN,CAKKnX,EAAQA,UACZ4W,EAAc5W,EACdA,EAAU4W,EAAY5W,QACtB/M,EAAW2jB,EAAY3jB,UAIlB+M,EAAQ/G,OACb+G,EAAQ/G,KAAOjG,EAAOiG,SAIhByd,EAASS,EAAST,UACxBA,EAASS,EAAST,YAEZI,EAAcK,EAASC,UAC7BN,EAAcK,EAASC,OAAS,SAAU7f,GAGzC,aAAcvE,KAAW4e,GAAkBra,GAAKvE,EAAOue,MAAM8F,YAAc9f,EAAER,KAE5EV,OADArD,EAAOue,MAAM+F,SAASviB,MAAO+hB,EAAYjiB,KAAMG,YAIjD8hB,EAAYjiB,KAAOA,GAIpB4hB,GAAUA,GAAS,IAAK5Y,MAAO0P,KAAiB,IAChDoJ,EAAIF,EAAM1iB,MACV,OAAQ4iB,IACPxd,EAAMid,EAAe/X,KAAMoY,EAAME,QACjC5f,EAAOmgB,EAAW/d,EAAI,GACtB8d,GAAe9d,EAAI,IAAM,IAAKG,MAAO,KAAM/D,OAGrCwB,IAKN8f,EAAU7jB,EAAOue,MAAMsF,QAAS9f,OAGhCA,GAAS9D,EAAW4jB,EAAQU,aAAeV,EAAQW,WAAczgB,EAGjE8f,EAAU7jB,EAAOue,MAAMsF,QAAS9f,OAGhCggB,EAAY/jB,EAAOyC,QAClBsB,KAAMA,EACNmgB,SAAUA,EACVxf,KAAMA,EACNsI,QAASA,EACT/G,KAAM+G,EAAQ/G,KACdhG,SAAUA,EACVyJ,aAAczJ,GAAYD,EAAOgQ,KAAKnF,MAAMnB,aAAakC,KAAM3L,GAC/DwkB,UAAWR,EAAWhY,KAAK,MACzB2X,IAGII,EAAWN,EAAQ3f,MACzBigB,EAAWN,EAAQ3f,MACnBigB,EAASU,cAAgB,EAGnBb,EAAQc,OAASd,EAAQc,MAAM1jB,KAAMY,EAAM6C,EAAMuf,EAAYH,MAAkB,IAE/EjiB,EAAKsM,iBACTtM,EAAKsM,iBAAkBpK,EAAM+f,GAAa,GAE/BjiB,EAAKuM,aAChBvM,EAAKuM,YAAa,KAAOrK,EAAM+f,KAK7BD,EAAQjK,MACZiK,EAAQjK,IAAI3Y,KAAMY,EAAMkiB,GAElBA,EAAU/W,QAAQ/G,OACvB8d,EAAU/W,QAAQ/G,KAAO+G,EAAQ/G,OAK9BhG,EACJ+jB,EAASxhB,OAAQwhB,EAASU,gBAAiB,EAAGX,GAE9CC,EAASxkB,KAAMukB,GAIhB/jB,EAAOue,MAAM5f,OAAQoF,IAAS,EAI/BlC,GAAO,OAIR2Z,OAAQ,SAAU3Z,EAAM4hB,EAAOzW,EAAS/M,EAAU2kB,GACjD,GAAIviB,GAAG0hB,EAAW5d,EACjB0e,EAAWlB,EAAGD,EACdG,EAASG,EAAUjgB,EACnBkgB,EAAYC,EACZC,EAAWnkB,EAAOsgB,QAASze,IAAU7B,EAAOwgB,MAAO3e,EAEpD,IAAMsiB,IAAcT,EAASS,EAAST,QAAtC,CAKAD,GAAUA,GAAS,IAAK5Y,MAAO0P,KAAiB,IAChDoJ,EAAIF,EAAM1iB,MACV,OAAQ4iB,IAMP,GALAxd,EAAMid,EAAe/X,KAAMoY,EAAME,QACjC5f,EAAOmgB,EAAW/d,EAAI,GACtB8d,GAAe9d,EAAI,IAAM,IAAKG,MAAO,KAAM/D,OAGrCwB,EAAN,CAOA8f,EAAU7jB,EAAOue,MAAMsF,QAAS9f,OAChCA,GAAS9D,EAAW4jB,EAAQU,aAAeV,EAAQW,WAAczgB,EACjEigB,EAAWN,EAAQ3f,OACnBoC,EAAMA,EAAI,IAAM,GAAIyC,QAAQ,UAAYqb,EAAWhY,KAAK,iBAAmB,WAG3E4Y,EAAYxiB,EAAI2hB,EAASjjB,MACzB,OAAQsB,IACP0hB,EAAYC,EAAU3hB,IAEfuiB,GAAeV,IAAaH,EAAUG,UACzClX,GAAWA,EAAQ/G,OAAS8d,EAAU9d,MACtCE,IAAOA,EAAIyF,KAAMmY,EAAUU,YAC3BxkB,GAAYA,IAAa8jB,EAAU9jB,WAAyB,OAAbA,IAAqB8jB,EAAU9jB,YACjF+jB,EAASxhB,OAAQH,EAAG,GAEf0hB,EAAU9jB,UACd+jB,EAASU,gBAELb,EAAQrI,QACZqI,EAAQrI,OAAOva,KAAMY,EAAMkiB,GAOzBc,KAAcb,EAASjjB,SACrB8iB,EAAQiB,UAAYjB,EAAQiB,SAAS7jB,KAAMY,EAAMoiB,EAAYE,EAASC,WAAa,GACxFpkB,EAAO+kB,YAAaljB,EAAMkC,EAAMogB,EAASC,cAGnCV,GAAQ3f,QAtCf,KAAMA,IAAQ2f,GACb1jB,EAAOue,MAAM/C,OAAQ3Z,EAAMkC,EAAO0f,EAAOE,GAAK3W,EAAS/M,GAAU,EA0C/DD,GAAOoE,cAAesf,WACnBS,GAASC,OAIhBpkB,EAAOygB,YAAa5e,EAAM,aAI5BmjB,QAAS,SAAUzG,EAAO7Z,EAAM7C,EAAMojB,GACrC,GAAIb,GAAQc,EAAQ/X,EACnBgY,EAAYtB,EAAS1d,EAAKrE,EAC1BsjB,GAAcvjB,GAAQ9C,GACtBgF,EAAOnE,EAAOqB,KAAMsd,EAAO,QAAWA,EAAMxa,KAAOwa,EACnD0F,EAAarkB,EAAOqB,KAAMsd,EAAO,aAAgBA,EAAMkG,UAAUne,MAAM,OAKxE,IAHA6G,EAAMhH,EAAMtE,EAAOA,GAAQ9C,EAGJ,IAAlB8C,EAAKyC,UAAoC,IAAlBzC,EAAKyC,WAK5B6e,EAAYvX,KAAM7H,EAAO/D,EAAOue,MAAM8F,aAItCtgB,EAAKtE,QAAQ,MAAQ,IAEzBwkB,EAAalgB,EAAKuC,MAAM,KACxBvC,EAAOkgB,EAAWzX,QAClByX,EAAW1hB,QAEZ2iB,EAASnhB,EAAKtE,QAAQ,KAAO,GAAK,KAAOsE,EAGzCwa,EAAQA,EAAOve,EAAOsD,SACrBib,EACA,GAAIve,GAAOqlB,MAAOthB,EAAuB,gBAAVwa,IAAsBA,GAGtDA,EAAM+G,UAAYL,EAAe,EAAI,EACrC1G,EAAMkG,UAAYR,EAAWhY,KAAK,KAClCsS,EAAMgH,aAAehH,EAAMkG,UAC1B,GAAI7b,QAAQ,UAAYqb,EAAWhY,KAAK,iBAAmB,WAC3D,KAGDsS,EAAM5M,OAAStO,OACTkb,EAAMvb,SACXub,EAAMvb,OAASnB,GAIhB6C,EAAe,MAARA,GACJ6Z,GACFve,EAAOoF,UAAWV,GAAQ6Z,IAG3BsF,EAAU7jB,EAAOue,MAAMsF,QAAS9f,OAC1BkhB,IAAgBpB,EAAQmB,SAAWnB,EAAQmB,QAAQjjB,MAAOF,EAAM6C,MAAW,GAAjF,CAMA,IAAMugB,IAAiBpB,EAAQ2B,WAAaxlB,EAAOiE,SAAUpC,GAAS,CAMrE,IAJAsjB,EAAatB,EAAQU,cAAgBxgB,EAC/Bof,EAAYvX,KAAMuZ,EAAaphB,KACpCoJ,EAAMA,EAAI5B,YAEH4B,EAAKA,EAAMA,EAAI5B,WACtB6Z,EAAU5lB,KAAM2N,GAChBhH,EAAMgH,CAIFhH,MAAStE,EAAKuJ,eAAiBrM,IACnCqmB,EAAU5lB,KAAM2G,EAAI8H,aAAe9H,EAAIsf,cAAgBvmB,GAKzD4C,EAAI,CACJ,QAASqL,EAAMiY,EAAUtjB,QAAUyc,EAAMmH,uBAExCnH,EAAMxa,KAAOjC,EAAI,EAChBqjB,EACAtB,EAAQW,UAAYzgB,EAGrBqgB,GAAWpkB,EAAOwgB,MAAOrT,EAAK,eAAoBoR,EAAMxa,OAAU/D,EAAOwgB,MAAOrT,EAAK,UAChFiX,GACJA,EAAOriB,MAAOoL,EAAKzI,GAIpB0f,EAASc,GAAU/X,EAAK+X,GACnBd,GAAUA,EAAOriB,OAAS/B,EAAOof,WAAYjS,KACjDoR,EAAM5M,OAASyS,EAAOriB,MAAOoL,EAAKzI,GAC7B6Z,EAAM5M,UAAW,GACrB4M,EAAMoH,iBAOT,IAHApH,EAAMxa,KAAOA,GAGPkhB,IAAiB1G,EAAMqH,wBAErB/B,EAAQgC,UAAYhC,EAAQgC,SAAS9jB,MAAOqjB,EAAUld,MAAOxD,MAAW,IAC9E1E,EAAOof,WAAYvd,IAKdqjB,GAAUrjB,EAAMkC,KAAW/D,EAAOiE,SAAUpC,GAAS,CAGzDsE,EAAMtE,EAAMqjB,GAEP/e,IACJtE,EAAMqjB,GAAW,MAIlBllB,EAAOue,MAAM8F,UAAYtgB,CACzB,KACClC,EAAMkC,KACL,MAAQQ,IAIVvE,EAAOue,MAAM8F,UAAYhhB,OAEpB8C,IACJtE,EAAMqjB,GAAW/e,GAMrB,MAAOoY,GAAM5M,SAGd2S,SAAU,SAAU/F,GAGnBA,EAAQve,EAAOue,MAAMuH,IAAKvH,EAE1B,IAAIzc,GAAGR,EAAKyiB,EAAWtR,EAASpQ,EAC/B0jB,KACApkB,EAAOrC,EAAM2B,KAAMe,WACnBgiB,GAAahkB,EAAOwgB,MAAOrhB,KAAM,eAAoBof,EAAMxa,UAC3D8f,EAAU7jB,EAAOue,MAAMsF,QAAStF,EAAMxa,SAOvC,IAJApC,EAAK,GAAK4c,EACVA,EAAMyH,eAAiB7mB,MAGlB0kB,EAAQoC,aAAepC,EAAQoC,YAAYhlB,KAAM9B,KAAMof,MAAY,EAAxE,CAKAwH,EAAe/lB,EAAOue,MAAMyF,SAAS/iB,KAAM9B,KAAMof,EAAOyF,GAGxDliB,EAAI,CACJ,QAAS2Q,EAAUsT,EAAcjkB,QAAWyc,EAAMmH,uBAAyB,CAC1EnH,EAAM2H,cAAgBzT,EAAQ5Q,KAE9BQ,EAAI,CACJ,QAAS0hB,EAAYtR,EAAQuR,SAAU3hB,QAAWkc,EAAM4H,kCAIjD5H,EAAMgH,cAAgBhH,EAAMgH,aAAa3Z,KAAMmY,EAAUU,cAE9DlG,EAAMwF,UAAYA,EAClBxF,EAAM7Z,KAAOqf,EAAUrf,KAEvBpD,IAAStB,EAAOue,MAAMsF,QAASE,EAAUG,eAAkBE,QAAUL,EAAU/W,SAC5EjL,MAAO0Q,EAAQ5Q,KAAMF,GAEX0B,SAAR/B,IACEid,EAAM5M,OAASrQ,MAAS,IAC7Bid,EAAMoH,iBACNpH,EAAM6H,oBAYX,MAJKvC,GAAQwC,cACZxC,EAAQwC,aAAaplB,KAAM9B,KAAMof,GAG3BA,EAAM5M,SAGdqS,SAAU,SAAUzF,EAAOyF,GAC1B,GAAIsC,GAAKvC,EAAWje,EAAShE,EAC5BikB,KACArB,EAAgBV,EAASU,cACzBvX,EAAMoR,EAAMvb,MAKb,IAAK0hB,GAAiBvX,EAAI7I,YAAcia,EAAMvK,QAAyB,UAAfuK,EAAMxa,MAG7D,KAAQoJ,GAAOhO,KAAMgO,EAAMA,EAAI5B,YAAcpM,KAK5C,GAAsB,IAAjBgO,EAAI7I,WAAmB6I,EAAIuG,YAAa,GAAuB,UAAf6K,EAAMxa,MAAoB,CAE9E,IADA+B,KACMhE,EAAI,EAAO4iB,EAAJ5iB,EAAmBA,IAC/BiiB,EAAYC,EAAUliB,GAGtBwkB,EAAMvC,EAAU9jB,SAAW,IAEHoD,SAAnByC,EAASwgB,KACbxgB,EAASwgB,GAAQvC,EAAUra,aAC1B1J,EAAQsmB,EAAKnnB,MAAOua,MAAOvM,IAAS,EACpCnN,EAAO0O,KAAM4X,EAAKnnB,KAAM,MAAQgO,IAAQpM,QAErC+E,EAASwgB,IACbxgB,EAAQtG,KAAMukB,EAGXje,GAAQ/E,QACZglB,EAAavmB,MAAOqC,KAAMsL,EAAK6W,SAAUle,IAW7C,MAJK4e,GAAgBV,EAASjjB,QAC7BglB,EAAavmB,MAAOqC,KAAM1C,KAAM6kB,SAAUA,EAAS1kB,MAAOolB,KAGpDqB,GAGRD,IAAK,SAAUvH,GACd,GAAKA,EAAOve,EAAOsD,SAClB,MAAOib,EAIR,IAAIzc,GAAGykB,EAAM3jB,EACZmB,EAAOwa,EAAMxa,KACbyiB,EAAgBjI,EAChBkI,EAAUtnB,KAAKunB,SAAU3iB,EAEpB0iB,KACLtnB,KAAKunB,SAAU3iB,GAAS0iB,EACvBvD,EAAYtX,KAAM7H,GAAS5E,KAAKwnB,WAChC1D,EAAUrX,KAAM7H,GAAS5E,KAAKynB,aAGhChkB,EAAO6jB,EAAQI,MAAQ1nB,KAAK0nB,MAAMtnB,OAAQknB,EAAQI,OAAU1nB,KAAK0nB,MAEjEtI,EAAQ,GAAIve,GAAOqlB,MAAOmB,GAE1B1kB,EAAIc,EAAK7B,MACT,OAAQe,IACPykB,EAAO3jB,EAAMd,GACbyc,EAAOgI,GAASC,EAAeD,EAmBhC,OAdMhI,GAAMvb,SACXub,EAAMvb,OAASwjB,EAAcM,YAAc/nB,GAKb,IAA1Bwf,EAAMvb,OAAOsB,WACjBia,EAAMvb,OAASub,EAAMvb,OAAOuI,YAK7BgT,EAAMwI,UAAYxI,EAAMwI,QAEjBN,EAAQ9X,OAAS8X,EAAQ9X,OAAQ4P,EAAOiI,GAAkBjI,GAIlEsI,MAAO,wHAAwHvgB,MAAM,KAErIogB,YAEAE,UACCC,MAAO,4BAA4BvgB,MAAM,KACzCqI,OAAQ,SAAU4P,EAAOyI,GAOxB,MAJoB,OAAfzI,EAAM0I,QACV1I,EAAM0I,MAA6B,MAArBD,EAASE,SAAmBF,EAASE,SAAWF,EAASG,SAGjE5I,IAIToI,YACCE,MAAO,mGAAmGvgB,MAAM,KAChHqI,OAAQ,SAAU4P,EAAOyI,GACxB,GAAIjJ,GAAMqJ,EAAUpZ,EACnBgG,EAASgT,EAAShT,OAClBqT,EAAcL,EAASK,WAuBxB,OApBoB,OAAf9I,EAAM+I,OAAqC,MAApBN,EAASO,UACpCH,EAAW7I,EAAMvb,OAAOoI,eAAiBrM,EACzCiP,EAAMoZ,EAASxZ,gBACfmQ,EAAOqJ,EAASrJ,KAEhBQ,EAAM+I,MAAQN,EAASO,SAAYvZ,GAAOA,EAAIwZ,YAAczJ,GAAQA,EAAKyJ,YAAc,IAAQxZ,GAAOA,EAAIyZ,YAAc1J,GAAQA,EAAK0J,YAAc,GACnJlJ,EAAMmJ,MAAQV,EAASW,SAAY3Z,GAAOA,EAAI4Z,WAAc7J,GAAQA,EAAK6J,WAAc,IAAQ5Z,GAAOA,EAAI6Z,WAAc9J,GAAQA,EAAK8J,WAAc,KAI9ItJ,EAAMuJ,eAAiBT,IAC5B9I,EAAMuJ,cAAgBT,IAAgB9I,EAAMvb,OAASgkB,EAASe,UAAYV,GAKrE9I,EAAM0I,OAAoB5jB,SAAX2Q,IACpBuK,EAAM0I,MAAmB,EAATjT,EAAa,EAAe,EAATA,EAAa,EAAe,EAATA,EAAa,EAAI,GAGjEuK,IAITsF,SACCmE,MAECxC,UAAU,GAEXpS,OAEC4R,QAAS,WACR,GAAK7lB,OAASokB,MAAuBpkB,KAAKiU,MACzC,IAEC,MADAjU,MAAKiU,SACE,EACN,MAAQ7O,MAOZggB,aAAc,WAEf0D,MACCjD,QAAS,WACR,MAAK7lB,QAASokB,MAAuBpkB,KAAK8oB,MACzC9oB,KAAK8oB,QACE,GAFR,QAKD1D,aAAc,YAEf3B,OAECoC,QAAS,WACR,MAAKhlB,GAAO+E,SAAU5F,KAAM,UAA2B,aAAdA,KAAK4E,MAAuB5E,KAAKyjB,OACzEzjB,KAAKyjB,SACE,GAFR,QAODiD,SAAU,SAAUtH,GACnB,MAAOve,GAAO+E,SAAUwZ,EAAMvb,OAAQ,OAIxCklB,cACC7B,aAAc,SAAU9H,GAIDlb,SAAjBkb,EAAM5M,QAAwB4M,EAAMiI,gBACxCjI,EAAMiI,cAAc2B,YAAc5J,EAAM5M,WAM5CyW,SAAU,SAAUrkB,EAAMlC,EAAM0c,EAAO8J,GAItC,GAAI9jB,GAAIvE,EAAOyC,OACd,GAAIzC,GAAOqlB,MACX9G,GAECxa,KAAMA,EACNukB,aAAa,EACb9B,kBAGG6B,GACJroB,EAAOue,MAAMyG,QAASzgB,EAAG,KAAM1C,GAE/B7B,EAAOue,MAAM+F,SAASrjB,KAAMY,EAAM0C,GAE9BA,EAAEqhB,sBACNrH,EAAMoH,mBAKT3lB,EAAO+kB,YAAchmB,EAASqf,oBAC7B,SAAUvc,EAAMkC,EAAMqgB,GAChBviB,EAAKuc,qBACTvc,EAAKuc,oBAAqBra,EAAMqgB,GAAQ,IAG1C,SAAUviB,EAAMkC,EAAMqgB,GACrB,GAAIvhB,GAAO,KAAOkB,CAEblC,GAAKyc,oBAIGzc,GAAMgB,KAAW+b,IAC5B/c,EAAMgB,GAAS,MAGhBhB,EAAKyc,YAAazb,EAAMuhB,KAI3BpkB,EAAOqlB,MAAQ,SAAU3iB,EAAKmkB,GAE7B,MAAO1nB,gBAAgBa,GAAOqlB,OAKzB3iB,GAAOA,EAAIqB,MACf5E,KAAKqnB,cAAgB9jB,EACrBvD,KAAK4E,KAAOrB,EAAIqB,KAIhB5E,KAAKymB,mBAAqBljB,EAAI6lB,kBACHllB,SAAzBX,EAAI6lB,kBAEJ7lB,EAAIylB,eAAgB,EACrB9E,GACAC,IAIDnkB,KAAK4E,KAAOrB,EAIRmkB,GACJ7mB,EAAOyC,OAAQtD,KAAM0nB,GAItB1nB,KAAKqpB,UAAY9lB,GAAOA,EAAI8lB,WAAaxoB,EAAOoG,WAGhDjH,KAAMa,EAAOsD,UAAY,IA/BjB,GAAItD,GAAOqlB,MAAO3iB,EAAKmkB,IAoChC7mB,EAAOqlB,MAAMzkB,WACZglB,mBAAoBtC,GACpBoC,qBAAsBpC,GACtB6C,8BAA+B7C,GAE/BqC,eAAgB,WACf,GAAIphB,GAAIpF,KAAKqnB,aAEbrnB,MAAKymB,mBAAqBvC,GACpB9e,IAKDA,EAAEohB,eACNphB,EAAEohB,iBAKFphB,EAAE4jB,aAAc,IAGlB/B,gBAAiB,WAChB,GAAI7hB,GAAIpF,KAAKqnB,aAEbrnB,MAAKumB,qBAAuBrC,GACtB9e,IAIDA,EAAE6hB,iBACN7hB,EAAE6hB,kBAKH7hB,EAAEkkB,cAAe,IAElBC,yBAA0B,WACzB,GAAInkB,GAAIpF,KAAKqnB,aAEbrnB,MAAKgnB,8BAAgC9C,GAEhC9e,GAAKA,EAAEmkB,0BACXnkB,EAAEmkB,2BAGHvpB,KAAKinB,oBAKPpmB,EAAOyB,MACNknB,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,cACZ,SAAUC,EAAMjD,GAClB9lB,EAAOue,MAAMsF,QAASkF,IACrBxE,aAAcuB,EACdtB,SAAUsB,EAEV1B,OAAQ,SAAU7F,GACjB,GAAIjd,GACH0B,EAAS7D,KACT6pB,EAAUzK,EAAMuJ,cAChB/D,EAAYxF,EAAMwF,SASnB,SALMiF,GAAYA,IAAYhmB,IAAWhD,EAAOsH,SAAUtE,EAAQgmB,MACjEzK,EAAMxa,KAAOggB,EAAUG,SACvB5iB,EAAMyiB,EAAU/W,QAAQjL,MAAO5C,KAAM6C,WACrCuc,EAAMxa,KAAO+hB,GAEPxkB,MAMJxB,EAAQmpB,gBAEbjpB,EAAOue,MAAMsF,QAAQnP,QACpBiQ,MAAO,WAEN,MAAK3kB,GAAO+E,SAAU5F,KAAM,SACpB,MAIRa,GAAOue,MAAM3E,IAAKza,KAAM,iCAAkC,SAAUoF,GAEnE,GAAI1C,GAAO0C,EAAEvB,OACZkmB,EAAOlpB,EAAO+E,SAAUlD,EAAM,UAAa7B,EAAO+E,SAAUlD,EAAM,UAAaA,EAAKqnB,KAAO7lB,MACvF6lB,KAASlpB,EAAOwgB,MAAO0I,EAAM,mBACjClpB,EAAOue,MAAM3E,IAAKsP,EAAM,iBAAkB,SAAU3K,GACnDA,EAAM4K,gBAAiB,IAExBnpB,EAAOwgB,MAAO0I,EAAM,iBAAiB,OAMxC7C,aAAc,SAAU9H,GAElBA,EAAM4K,uBACH5K,GAAM4K,eACRhqB,KAAKoM,aAAegT,EAAM+G,WAC9BtlB,EAAOue,MAAM6J,SAAU,SAAUjpB,KAAKoM,WAAYgT,GAAO,KAK5DuG,SAAU,WAET,MAAK9kB,GAAO+E,SAAU5F,KAAM,SACpB,MAIRa,GAAOue,MAAM/C,OAAQrc,KAAM,eAMxBW,EAAQspB,gBAEbppB,EAAOue,MAAMsF,QAAQf,QAEpB6B,MAAO,WAEN,MAAK3B,GAAWpX,KAAMzM,KAAK4F,YAIP,aAAd5F,KAAK4E,MAAqC,UAAd5E,KAAK4E,QACrC/D,EAAOue,MAAM3E,IAAKza,KAAM,yBAA0B,SAAUof,GACjB,YAArCA,EAAMiI,cAAc6C,eACxBlqB,KAAKmqB,eAAgB,KAGvBtpB,EAAOue,MAAM3E,IAAKza,KAAM,gBAAiB,SAAUof,GAC7Cpf,KAAKmqB,gBAAkB/K,EAAM+G,YACjCnmB,KAAKmqB,eAAgB,GAGtBtpB,EAAOue,MAAM6J,SAAU,SAAUjpB,KAAMof,GAAO,OAGzC,OAGRve,GAAOue,MAAM3E,IAAKza,KAAM,yBAA0B,SAAUoF,GAC3D,GAAI1C,GAAO0C,EAAEvB,MAERggB,GAAWpX,KAAM/J,EAAKkD,YAAe/E,EAAOwgB,MAAO3e,EAAM,mBAC7D7B,EAAOue,MAAM3E,IAAK/X,EAAM,iBAAkB,SAAU0c,IAC9Cpf,KAAKoM,YAAegT,EAAM+J,aAAgB/J,EAAM+G,WACpDtlB,EAAOue,MAAM6J,SAAU,SAAUjpB,KAAKoM,WAAYgT,GAAO,KAG3Dve,EAAOwgB,MAAO3e,EAAM,iBAAiB,OAKxCuiB,OAAQ,SAAU7F,GACjB,GAAI1c,GAAO0c,EAAMvb,MAGjB,OAAK7D,QAAS0C,GAAQ0c,EAAM+J,aAAe/J,EAAM+G,WAA4B,UAAdzjB,EAAKkC,MAAkC,aAAdlC,EAAKkC,KACrFwa,EAAMwF,UAAU/W,QAAQjL,MAAO5C,KAAM6C,WAD7C,QAKD8iB,SAAU,WAGT,MAFA9kB,GAAOue,MAAM/C,OAAQrc,KAAM,aAEnB6jB,EAAWpX,KAAMzM,KAAK4F,aAM3BjF,EAAQypB,gBACbvpB,EAAOyB,MAAO2R,MAAO,UAAW6U,KAAM,YAAc,SAAUc,EAAMjD,GAGnE,GAAI9Y,GAAU,SAAUuR,GACtBve,EAAOue,MAAM6J,SAAUtC,EAAKvH,EAAMvb,OAAQhD,EAAOue,MAAMuH,IAAKvH,IAAS,GAGvEve,GAAOue,MAAMsF,QAASiC,IACrBnB,MAAO,WACN,GAAI3W,GAAM7O,KAAKiM,eAAiBjM,KAC/BqqB,EAAWxpB,EAAOwgB,MAAOxS,EAAK8X,EAEzB0D,IACLxb,EAAIG,iBAAkB4a,EAAM/b,GAAS,GAEtChN,EAAOwgB,MAAOxS,EAAK8X,GAAO0D,GAAY,GAAM,IAE7C1E,SAAU,WACT,GAAI9W,GAAM7O,KAAKiM,eAAiBjM,KAC/BqqB,EAAWxpB,EAAOwgB,MAAOxS,EAAK8X,GAAQ,CAEjC0D,GAILxpB,EAAOwgB,MAAOxS,EAAK8X,EAAK0D,IAHxBxb,EAAIoQ,oBAAqB2K,EAAM/b,GAAS,GACxChN,EAAOygB,YAAazS,EAAK8X,QAS9B9lB,EAAOG,GAAGsC,QAETgnB,GAAI,SAAUhG,EAAOxjB,EAAUyE,EAAMvE,EAAiBupB,GACrD,GAAI3lB,GAAM4lB,CAGV,IAAsB,gBAAVlG,GAAqB,CAEP,gBAAbxjB,KAEXyE,EAAOA,GAAQzE,EACfA,EAAWoD,OAEZ,KAAMU,IAAQ0f,GACbtkB,KAAKsqB,GAAI1lB,EAAM9D,EAAUyE,EAAM+e,EAAO1f,GAAQ2lB,EAE/C,OAAOvqB,MAmBR,GAhBa,MAARuF,GAAsB,MAANvE,GAEpBA,EAAKF,EACLyE,EAAOzE,EAAWoD,QACD,MAANlD,IACc,gBAAbF,IAEXE,EAAKuE,EACLA,EAAOrB,SAGPlD,EAAKuE,EACLA,EAAOzE,EACPA,EAAWoD,SAGRlD,KAAO,EACXA,EAAKmjB,OACC,KAAMnjB,EACZ,MAAOhB,KAaR,OAVa,KAARuqB,IACJC,EAASxpB,EACTA,EAAK,SAAUoe,GAGd,MADAve,KAASke,IAAKK,GACPoL,EAAO5nB,MAAO5C,KAAM6C,YAG5B7B,EAAG8F,KAAO0jB,EAAO1jB,OAAU0jB,EAAO1jB,KAAOjG,EAAOiG,SAE1C9G,KAAKsC,KAAM,WACjBzB,EAAOue,MAAM3E,IAAKza,KAAMskB,EAAOtjB,EAAIuE,EAAMzE,MAG3CypB,IAAK,SAAUjG,EAAOxjB,EAAUyE,EAAMvE,GACrC,MAAOhB,MAAKsqB,GAAIhG,EAAOxjB,EAAUyE,EAAMvE,EAAI,IAE5C+d,IAAK,SAAUuF,EAAOxjB,EAAUE,GAC/B,GAAI4jB,GAAWhgB,CACf,IAAK0f,GAASA,EAAMkC,gBAAkBlC,EAAMM,UAQ3C,MANAA,GAAYN,EAAMM,UAClB/jB,EAAQyjB,EAAMuC,gBAAiB9H,IAC9B6F,EAAUU,UAAYV,EAAUG,SAAW,IAAMH,EAAUU,UAAYV,EAAUG,SACjFH,EAAU9jB,SACV8jB,EAAU/W,SAEJ7N,IAER,IAAsB,gBAAVskB,GAAqB,CAEhC,IAAM1f,IAAQ0f,GACbtkB,KAAK+e,IAAKna,EAAM9D,EAAUwjB,EAAO1f,GAElC,OAAO5E,MAUR,OARKc,KAAa,GAA6B,kBAAbA,MAEjCE,EAAKF,EACLA,EAAWoD,QAEPlD,KAAO,IACXA,EAAKmjB,IAECnkB,KAAKsC,KAAK,WAChBzB,EAAOue,MAAM/C,OAAQrc,KAAMskB,EAAOtjB,EAAIF,MAIxC+kB,QAAS,SAAUjhB,EAAMW,GACxB,MAAOvF,MAAKsC,KAAK,WAChBzB,EAAOue,MAAMyG,QAASjhB,EAAMW,EAAMvF,SAGpC8e,eAAgB,SAAUla,EAAMW,GAC/B,GAAI7C,GAAO1C,KAAK,EAChB,OAAK0C,GACG7B,EAAOue,MAAMyG,QAASjhB,EAAMW,EAAM7C,GAAM,GADhD,SAOF,SAAS+nB,IAAoB7qB,GAC5B,GAAIqJ,GAAOyhB,GAAUvjB,MAAO,KAC3BwjB,EAAW/qB,EAASkjB,wBAErB,IAAK6H,EAASld,cACb,MAAQxE,EAAKrH,OACZ+oB,EAASld,cACRxE,EAAKF,MAIR,OAAO4hB,GAGR,GAAID,IAAY,6JAEfE,GAAgB,6BAChBC,GAAe,GAAIphB,QAAO,OAASihB,GAAY,WAAY,KAC3DI,GAAqB,OACrBC,GAAY,0EACZC,GAAW,YACXC,GAAS,UACTC,GAAQ,YACRC,GAAe,0BAEfC,GAAW,oCACXC,GAAc,4BACdC,GAAoB,cACpBC,GAAe,2CAGfC,IACCC,QAAU,EAAG,+BAAgC,aAC7CC,QAAU,EAAG,aAAc,eAC3BC,MAAQ,EAAG,QAAS,UACpBC,OAAS,EAAG,WAAY,aACxBC,OAAS,EAAG,UAAW,YACvBC,IAAM,EAAG,iBAAkB,oBAC3BC,KAAO,EAAG,mCAAoC,uBAC9CC,IAAM,EAAG,qBAAsB,yBAI/BtF,SAAU/lB,EAAQsiB,eAAkB,EAAG,GAAI,KAAS,EAAG,SAAU,WAElEgJ,GAAexB,GAAoB7qB,GACnCssB,GAAcD,GAAa9c,YAAavP,EAAS6N,cAAc,OAEhE+d,IAAQW,SAAWX,GAAQC,OAC3BD,GAAQxI,MAAQwI,GAAQY,MAAQZ,GAAQa,SAAWb,GAAQc,QAAUd,GAAQK,MAC7EL,GAAQe,GAAKf,GAAQQ,EAErB,SAASQ,IAAQzrB,EAAS4O,GACzB,GAAIzN,GAAOQ,EACVC,EAAI,EACJ8pB,QAAe1rB,GAAQuL,uBAAyBmT,EAAe1e,EAAQuL,qBAAsBqD,GAAO,WAC5F5O,GAAQgM,mBAAqB0S,EAAe1e,EAAQgM,iBAAkB4C,GAAO,KACpFzL,MAEF,KAAMuoB,EACL,IAAMA,KAAYvqB,EAAQnB,EAAQwK,YAAcxK,EAA8B,OAApB2B,EAAOR,EAAMS,IAAaA,KAC7EgN,GAAO9O,EAAO+E,SAAUlD,EAAMiN,GACnC8c,EAAMpsB,KAAMqC,GAEZ7B,EAAOuB,MAAOqqB,EAAOD,GAAQ9pB,EAAMiN,GAKtC,OAAezL,UAARyL,GAAqBA,GAAO9O,EAAO+E,SAAU7E,EAAS4O,GAC5D9O,EAAOuB,OAASrB,GAAW0rB,GAC3BA,EAIF,QAASC,IAAmBhqB,GACtBkgB,EAAenW,KAAM/J,EAAKkC,QAC9BlC,EAAKiqB,eAAiBjqB,EAAK8R,SAM7B,QAASoY,IAAoBlqB,EAAMmqB,GAClC,MAAOhsB,GAAO+E,SAAUlD,EAAM,UAC7B7B,EAAO+E,SAA+B,KAArBinB,EAAQ1nB,SAAkB0nB,EAAUA,EAAQtb,WAAY,MAEzE7O,EAAK4J,qBAAqB,SAAS,IAClC5J,EAAKyM,YAAazM,EAAKuJ,cAAcwB,cAAc,UACpD/K,EAIF,QAASoqB,IAAepqB,GAEvB,MADAA,GAAKkC,MAA6C,OAArC/D,EAAO0O,KAAKwB,KAAMrO,EAAM,SAAqB,IAAMA,EAAKkC,KAC9DlC,EAER,QAASqqB,IAAerqB,GACvB,GAAIgJ,GAAQ4f,GAAkBpf,KAAMxJ,EAAKkC,KAMzC,OALK8G,GACJhJ,EAAKkC,KAAO8G,EAAM,GAElBhJ,EAAKuK,gBAAgB,QAEfvK,EAIR,QAASsqB,IAAe9qB,EAAO+qB,GAG9B,IAFA,GAAIvqB,GACHC,EAAI,EACwB,OAApBD,EAAOR,EAAMS,IAAaA,IAClC9B,EAAOwgB,MAAO3e,EAAM,cAAeuqB,GAAepsB,EAAOwgB,MAAO4L,EAAYtqB,GAAI,eAIlF,QAASuqB,IAAgB3pB,EAAK4pB,GAE7B,GAAuB,IAAlBA,EAAKhoB,UAAmBtE,EAAOsgB,QAAS5d,GAA7C,CAIA,GAAIqB,GAAMjC,EAAG0X,EACZ+S,EAAUvsB,EAAOwgB,MAAO9d,GACxB8pB,EAAUxsB,EAAOwgB,MAAO8L,EAAMC,GAC9B7I,EAAS6I,EAAQ7I,MAElB,IAAKA,EAAS,OACN8I,GAAQpI,OACfoI,EAAQ9I,SAER,KAAM3f,IAAQ2f,GACb,IAAM5hB,EAAI,EAAG0X,EAAIkK,EAAQ3f,GAAOhD,OAAYyY,EAAJ1X,EAAOA,IAC9C9B,EAAOue,MAAM3E,IAAK0S,EAAMvoB,EAAM2f,EAAQ3f,GAAQjC,IAM5C0qB,EAAQ9nB,OACZ8nB,EAAQ9nB,KAAO1E,EAAOyC,UAAY+pB,EAAQ9nB,QAI5C,QAAS+nB,IAAoB/pB,EAAK4pB,GACjC,GAAIvnB,GAAUR,EAAGG,CAGjB,IAAuB,IAAlB4nB,EAAKhoB,SAAV,CAOA,GAHAS,EAAWunB,EAAKvnB,SAASC,eAGnBlF,EAAQ6iB,cAAgB2J,EAAMtsB,EAAOsD,SAAY,CACtDoB,EAAO1E,EAAOwgB,MAAO8L,EAErB,KAAM/nB,IAAKG,GAAKgf,OACf1jB,EAAO+kB,YAAauH,EAAM/nB,EAAGG,EAAK0f,OAInCkI,GAAKlgB,gBAAiBpM,EAAOsD,SAIZ,WAAbyB,GAAyBunB,EAAKnnB,OAASzC,EAAIyC,MAC/C8mB,GAAeK,GAAOnnB,KAAOzC,EAAIyC,KACjC+mB,GAAeI,IAIS,WAAbvnB,GACNunB,EAAK/gB,aACT+gB,EAAK/J,UAAY7f,EAAI6f,WAOjBziB,EAAQuiB,YAAgB3f,EAAIqM,YAAc/O,EAAO2E,KAAK2nB,EAAKvd,aAC/Dud,EAAKvd,UAAYrM,EAAIqM,YAGE,UAAbhK,GAAwBgd,EAAenW,KAAMlJ,EAAIqB,OAK5DuoB,EAAKR,eAAiBQ,EAAK3Y,QAAUjR,EAAIiR,QAIpC2Y,EAAKrnB,QAAUvC,EAAIuC,QACvBqnB,EAAKrnB,MAAQvC,EAAIuC,QAKM,WAAbF,EACXunB,EAAKI,gBAAkBJ,EAAK1Y,SAAWlR,EAAIgqB,iBAInB,UAAb3nB,GAAqC,aAAbA,KACnCunB,EAAKxU,aAAepV,EAAIoV,eAI1B9X,EAAOyC,QACNM,MAAO,SAAUlB,EAAM8qB,EAAeC,GACrC,GAAIC,GAAchf,EAAM9K,EAAOjB,EAAGgrB,EACjCC,EAAS/sB,EAAOsH,SAAUzF,EAAKuJ,cAAevJ,EAW/C,IATK/B,EAAQuiB,YAAcriB,EAAOgY,SAASnW,KAAUmoB,GAAape,KAAM,IAAM/J,EAAKkD,SAAW,KAC7FhC,EAAQlB,EAAKygB,WAAW,IAIxB+I,GAAYtc,UAAYlN,EAAK0gB,UAC7B8I,GAAYxe,YAAa9J,EAAQsoB,GAAY3a,eAGvC5Q,EAAQ6iB,cAAiB7iB,EAAQ2iB,gBACnB,IAAlB5gB,EAAKyC,UAAoC,KAAlBzC,EAAKyC,UAAqBtE,EAAOgY,SAASnW,IAOnE,IAJAgrB,EAAelB,GAAQ5oB,GACvB+pB,EAAcnB,GAAQ9pB,GAGhBC,EAAI,EAA8B,OAA1B+L,EAAOif,EAAYhrB,MAAeA,EAE1C+qB,EAAa/qB,IACjB2qB,GAAoB5e,EAAMgf,EAAa/qB,GAM1C,IAAK6qB,EACJ,GAAKC,EAIJ,IAHAE,EAAcA,GAAenB,GAAQ9pB,GACrCgrB,EAAeA,GAAgBlB,GAAQ5oB,GAEjCjB,EAAI,EAA8B,OAA1B+L,EAAOif,EAAYhrB,IAAaA,IAC7CuqB,GAAgBxe,EAAMgf,EAAa/qB,QAGpCuqB,IAAgBxqB,EAAMkB,EAaxB,OARA8pB,GAAelB,GAAQ5oB,EAAO,UACzB8pB,EAAa9rB,OAAS,GAC1BorB,GAAeU,GAAeE,GAAUpB,GAAQ9pB,EAAM,WAGvDgrB,EAAeC,EAAcjf,EAAO,KAG7B9K,GAGRiqB,cAAe,SAAU3rB,EAAOnB,EAAS+sB,EAASC,GAWjD,IAVA,GAAI7qB,GAAGR,EAAMyF,EACZnB,EAAK2I,EAAKqT,EAAOgL,EACjB3T,EAAInY,EAAMN,OAGVqsB,EAAOxD,GAAoB1pB,GAE3BmtB,KACAvrB,EAAI,EAEO0X,EAAJ1X,EAAOA,IAGd,GAFAD,EAAOR,EAAOS,GAETD,GAAiB,IAATA,EAGZ,GAA6B,WAAxB7B,EAAO+D,KAAMlC,GACjB7B,EAAOuB,MAAO8rB,EAAOxrB,EAAKyC,UAAazC,GAASA,OAG1C,IAAMwoB,GAAMze,KAAM/J,GAIlB,CACNsE,EAAMA,GAAOinB,EAAK9e,YAAapO,EAAQ0M,cAAc,QAGrDkC,GAAOqb,GAAS9e,KAAMxJ,KAAY,GAAI,KAAO,GAAImD,cACjDmoB,EAAOxC,GAAS7b,IAAS6b,GAAQ9E,SAEjC1f,EAAI4I,UAAYoe,EAAK,GAAKtrB,EAAK4B,QAASymB,GAAW,aAAgBiD,EAAK,GAGxE9qB,EAAI8qB,EAAK,EACT,OAAQ9qB,IACP8D,EAAMA,EAAIkM,SASX,KALMvS,EAAQoiB,mBAAqB+H,GAAmBre,KAAM/J,IAC3DwrB,EAAM7tB,KAAMU,EAAQotB,eAAgBrD,GAAmB5e,KAAMxJ,GAAO,MAI/D/B,EAAQqiB,MAAQ,CAGrBtgB,EAAe,UAARiN,GAAoBsb,GAAOxe,KAAM/J,GAI3B,YAAZsrB,EAAK,IAAqB/C,GAAOxe,KAAM/J,GAEtC,EADAsE,EAJDA,EAAIuK,WAOLrO,EAAIR,GAAQA,EAAK6I,WAAW3J,MAC5B,OAAQsB,IACFrC,EAAO+E,SAAWod,EAAQtgB,EAAK6I,WAAWrI,GAAK,WAAc8f,EAAMzX,WAAW3J,QAClFc,EAAKgL,YAAasV,GAKrBniB,EAAOuB,MAAO8rB,EAAOlnB,EAAIuE,YAGzBvE,EAAIsK,YAAc,EAGlB,OAAQtK,EAAIuK,WACXvK,EAAI0G,YAAa1G,EAAIuK,WAItBvK,GAAMinB,EAAK/a,cAtDXgb,GAAM7tB,KAAMU,EAAQotB,eAAgBzrB,GA4DlCsE,IACJinB,EAAKvgB,YAAa1G,GAKbrG,EAAQ0iB,eACbxiB,EAAO2F,KAAMgmB,GAAQ0B,EAAO,SAAWxB,IAGxC/pB,EAAI,CACJ,OAASD,EAAOwrB,EAAOvrB,KAItB,KAAKorB,GAAmD,KAAtCltB,EAAOwF,QAAS3D,EAAMqrB,MAIxC5lB,EAAWtH,EAAOsH,SAAUzF,EAAKuJ,cAAevJ,GAGhDsE,EAAMwlB,GAAQyB,EAAK9e,YAAazM,GAAQ,UAGnCyF,GACJ6kB,GAAehmB,GAIX8mB,GAAU,CACd5qB,EAAI,CACJ,OAASR,EAAOsE,EAAK9D,KACfmoB,GAAY5e,KAAM/J,EAAKkC,MAAQ,KACnCkpB,EAAQztB,KAAMqC,GAQlB,MAFAsE,GAAM,KAECinB,GAGRlN,UAAW,SAAU7e,EAAsB+d,GAQ1C,IAPA,GAAIvd,GAAMkC,EAAMyH,EAAI9G,EACnB5C,EAAI,EACJge,EAAc9f,EAAOsD,QACrBgJ,EAAQtM,EAAOsM,MACf6S,EAAgBrf,EAAQqf,cACxB0E,EAAU7jB,EAAOue,MAAMsF,QAEK,OAApBhiB,EAAOR,EAAMS,IAAaA,IAClC,IAAKsd,GAAcpf,EAAOof,WAAYvd,MAErC2J,EAAK3J,EAAMie,GACXpb,EAAO8G,GAAMc,EAAOd,IAER,CACX,GAAK9G,EAAKgf,OACT,IAAM3f,IAAQW,GAAKgf,OACbG,EAAS9f,GACb/D,EAAOue,MAAM/C,OAAQ3Z,EAAMkC,GAI3B/D,EAAO+kB,YAAaljB,EAAMkC,EAAMW,EAAK0f,OAMnC9X,GAAOd,WAEJc,GAAOd,GAKT2T,QACGtd,GAAMie,SAEKje,GAAKuK,kBAAoBwS,EAC3C/c,EAAKuK,gBAAiB0T,GAGtBje,EAAMie,GAAgB,KAGvBzgB,EAAWG,KAAMgM,QAQvBxL,EAAOG,GAAGsC,QACT0C,KAAM,SAAUF,GACf,MAAOyc,GAAQviB,KAAM,SAAU8F,GAC9B,MAAiB5B,UAAV4B,EACNjF,EAAOmF,KAAMhG,MACbA,KAAK2U,QAAQyZ,QAAUpuB,KAAK,IAAMA,KAAK,GAAGiM,eAAiBrM,GAAWuuB,eAAgBroB,KACrF,KAAMA,EAAOjD,UAAUjB,SAG3BwsB,OAAQ,WACP,MAAOpuB,MAAKquB,SAAUxrB,UAAW,SAAUH,GAC1C,GAAuB,IAAlB1C,KAAKmF,UAAoC,KAAlBnF,KAAKmF,UAAqC,IAAlBnF,KAAKmF,SAAiB,CACzE,GAAItB,GAAS+oB,GAAoB5sB,KAAM0C,EACvCmB,GAAOsL,YAAazM,OAKvB4rB,QAAS,WACR,MAAOtuB,MAAKquB,SAAUxrB,UAAW,SAAUH,GAC1C,GAAuB,IAAlB1C,KAAKmF,UAAoC,KAAlBnF,KAAKmF,UAAqC,IAAlBnF,KAAKmF,SAAiB,CACzE,GAAItB,GAAS+oB,GAAoB5sB,KAAM0C,EACvCmB,GAAO0qB,aAAc7rB,EAAMmB,EAAO0N,gBAKrCid,OAAQ,WACP,MAAOxuB,MAAKquB,SAAUxrB,UAAW,SAAUH,GACrC1C,KAAKoM,YACTpM,KAAKoM,WAAWmiB,aAAc7rB,EAAM1C,SAKvCyuB,MAAO,WACN,MAAOzuB,MAAKquB,SAAUxrB,UAAW,SAAUH,GACrC1C,KAAKoM,YACTpM,KAAKoM,WAAWmiB,aAAc7rB,EAAM1C,KAAKmO,gBAK5CkO,OAAQ,SAAUvb,EAAU4tB,GAK3B,IAJA,GAAIhsB,GACHR,EAAQpB,EAAWD,EAAO2O,OAAQ1O,EAAUd,MAASA,KACrD2C,EAAI,EAEwB,OAApBD,EAAOR,EAAMS,IAAaA,IAE5B+rB,GAA8B,IAAlBhsB,EAAKyC,UACtBtE,EAAOkgB,UAAWyL,GAAQ9pB,IAGtBA,EAAK0J,aACJsiB,GAAY7tB,EAAOsH,SAAUzF,EAAKuJ,cAAevJ,IACrDsqB,GAAeR,GAAQ9pB,EAAM,WAE9BA,EAAK0J,WAAWsB,YAAahL,GAI/B,OAAO1C,OAGR2U,MAAO,WAIN,IAHA,GAAIjS,GACHC,EAAI,EAEuB,OAAnBD,EAAO1C,KAAK2C,IAAaA,IAAM,CAEhB,IAAlBD,EAAKyC,UACTtE,EAAOkgB,UAAWyL,GAAQ9pB,GAAM,GAIjC,OAAQA,EAAK6O,WACZ7O,EAAKgL,YAAahL,EAAK6O,WAKnB7O,GAAKiB,SAAW9C,EAAO+E,SAAUlD,EAAM,YAC3CA,EAAKiB,QAAQ/B,OAAS,GAIxB,MAAO5B,OAGR4D,MAAO,SAAU4pB,EAAeC,GAI/B,MAHAD,GAAiC,MAAjBA,GAAwB,EAAQA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzDztB,KAAKyC,IAAI,WACf,MAAO5B,GAAO+C,MAAO5D,KAAMwtB,EAAeC,MAI5CkB,KAAM,SAAU7oB,GACf,MAAOyc,GAAQviB,KAAM,SAAU8F,GAC9B,GAAIpD,GAAO1C,KAAM,OAChB2C,EAAI,EACJ0X,EAAIra,KAAK4B,MAEV,IAAesC,SAAV4B,EACJ,MAAyB,KAAlBpD,EAAKyC,SACXzC,EAAKkN,UAAUtL,QAASsmB,GAAe,IACvC1mB,MAIF,MAAsB,gBAAV4B,IAAuBqlB,GAAa1e,KAAM3G,KACnDnF,EAAQsiB,eAAkB4H,GAAape,KAAM3G,KAC7CnF,EAAQoiB,mBAAsB+H,GAAmBre,KAAM3G,IACxD0lB,IAAUR,GAAS9e,KAAMpG,KAAa,GAAI,KAAO,GAAID,gBAAkB,CAExEC,EAAQA,EAAMxB,QAASymB,GAAW,YAElC,KACC,KAAW1Q,EAAJ1X,EAAOA,IAEbD,EAAO1C,KAAK2C,OACW,IAAlBD,EAAKyC,WACTtE,EAAOkgB,UAAWyL,GAAQ9pB,GAAM,IAChCA,EAAKkN,UAAY9J,EAInBpD,GAAO,EAGN,MAAM0C,KAGJ1C,GACJ1C,KAAK2U,QAAQyZ,OAAQtoB,IAEpB,KAAMA,EAAOjD,UAAUjB,SAG3BgtB,YAAa,WACZ,GAAI/nB,GAAMhE,UAAW,EAcrB,OAXA7C,MAAKquB,SAAUxrB,UAAW,SAAUH,GACnCmE,EAAM7G,KAAKoM,WAEXvL,EAAOkgB,UAAWyL,GAAQxsB,OAErB6G,GACJA,EAAIgoB,aAAcnsB,EAAM1C,QAKnB6G,IAAQA,EAAIjF,QAAUiF,EAAI1B,UAAYnF,KAAOA,KAAKqc,UAG1D2C,OAAQ,SAAUle,GACjB,MAAOd,MAAKqc,OAAQvb,GAAU,IAG/ButB,SAAU,SAAU7rB,EAAMD,GAGzBC,EAAOpC,EAAOwC,SAAWJ,EAEzB,IAAIM,GAAO4L,EAAMogB,EAChBhB,EAASjf,EAAKgU,EACdlgB,EAAI,EACJ0X,EAAIra,KAAK4B,OACTmtB,EAAM/uB,KACNgvB,EAAW3U,EAAI,EACfvU,EAAQtD,EAAK,GACbuB,EAAalD,EAAOkD,WAAY+B,EAGjC,IAAK/B,GACDsW,EAAI,GAAsB,gBAAVvU,KAChBnF,EAAQ4iB,YAAc6H,GAAS3e,KAAM3G,GACxC,MAAO9F,MAAKsC,KAAK,SAAUiY,GAC1B,GAAIpB,GAAO4V,EAAIhsB,GAAIwX,EACdxW,KACJvB,EAAK,GAAKsD,EAAMhE,KAAM9B,KAAMua,EAAOpB,EAAKwV,SAEzCxV,EAAKkV,SAAU7rB,EAAMD,IAIvB,IAAK8X,IACJwI,EAAWhiB,EAAOgtB,cAAerrB,EAAMxC,KAAM,GAAIiM,eAAe,EAAOjM,MACvE8C,EAAQ+f,EAAStR,WAEmB,IAA/BsR,EAAStX,WAAW3J,SACxBihB,EAAW/f,GAGPA,GAAQ,CAMZ,IALAgrB,EAAUjtB,EAAO4B,IAAK+pB,GAAQ3J,EAAU,UAAYiK,IACpDgC,EAAahB,EAAQlsB,OAITyY,EAAJ1X,EAAOA,IACd+L,EAAOmU,EAEFlgB,IAAMqsB,IACVtgB,EAAO7N,EAAO+C,MAAO8K,GAAM,GAAM,GAG5BogB,GACJjuB,EAAOuB,MAAO0rB,EAAStB,GAAQ9d,EAAM,YAIvCnM,EAAST,KAAM9B,KAAK2C,GAAI+L,EAAM/L,EAG/B,IAAKmsB,EAOJ,IANAjgB,EAAMif,EAASA,EAAQlsB,OAAS,GAAIqK,cAGpCpL,EAAO4B,IAAKqrB,EAASf,IAGfpqB,EAAI,EAAOmsB,EAAJnsB,EAAgBA,IAC5B+L,EAAOof,EAASnrB,GACX0oB,GAAY5e,KAAMiC,EAAK9J,MAAQ,MAClC/D,EAAOwgB,MAAO3S,EAAM,eAAkB7N,EAAOsH,SAAU0G,EAAKH,KAExDA,EAAKnL,IAEJ1C,EAAOouB,UACXpuB,EAAOouB,SAAUvgB,EAAKnL,KAGvB1C,EAAOyE,YAAcoJ,EAAK1I,MAAQ0I,EAAK4C,aAAe5C,EAAKkB,WAAa,IAAKtL,QAASinB,GAAc,KAOxG1I,GAAW/f,EAAQ,KAIrB,MAAO9C,SAITa,EAAOyB,MACN4sB,SAAU,SACVC,UAAW,UACXZ,aAAc,SACda,YAAa,QACbC,WAAY,eACV,SAAU3rB,EAAMmkB,GAClBhnB,EAAOG,GAAI0C,GAAS,SAAU5C,GAO7B,IANA,GAAIoB,GACHS,EAAI,EACJR,KACAmtB,EAASzuB,EAAQC,GACjBkC,EAAOssB,EAAO1tB,OAAS,EAEXoB,GAALL,EAAWA,IAClBT,EAAQS,IAAMK,EAAOhD,KAAOA,KAAK4D,OAAM,GACvC/C,EAAQyuB,EAAO3sB,IAAMklB,GAAY3lB,GAGjC7B,EAAKuC,MAAOT,EAAKD,EAAMH,MAGxB,OAAO/B,MAAKiC,UAAWE,KAKzB,IAAIotB,IACHC,KAQD,SAASC,IAAe/rB,EAAMmL,GAC7B,GAAI+Q,GACHld,EAAO7B,EAAQgO,EAAIpB,cAAe/J,IAASwrB,SAAUrgB,EAAI+P,MAGzD8Q,EAAU3vB,EAAO4vB,0BAA6B/P,EAAQ7f,EAAO4vB,wBAAyBjtB,EAAM,KAI3Fkd,EAAM8P,QAAU7uB,EAAOyhB,IAAK5f,EAAM,GAAK,UAMzC,OAFAA,GAAKsc,SAEE0Q,EAOR,QAASE,IAAgBhqB,GACxB,GAAIiJ,GAAMjP,EACT8vB,EAAUF,GAAa5pB,EA0BxB,OAxBM8pB,KACLA,EAAUD,GAAe7pB,EAAUiJ,GAGlB,SAAZ6gB,GAAuBA,IAG3BH,IAAUA,IAAU1uB,EAAQ,mDAAoDquB,SAAUrgB,EAAIJ,iBAG9FI,GAAQ0gB,GAAQ,GAAIrU,eAAiBqU,GAAQ,GAAItU,iBAAkBrb,SAGnEiP,EAAIghB,QACJhhB,EAAIihB,QAEJJ,EAAUD,GAAe7pB,EAAUiJ,GACnC0gB,GAAOvQ,UAIRwQ,GAAa5pB,GAAa8pB,GAGpBA,GAIR,WACC,GAAIK,EAEJpvB,GAAQqvB,iBAAmB,WAC1B,GAA4B,MAAvBD,EACJ,MAAOA,EAIRA,IAAsB,CAGtB,IAAIviB,GAAKoR,EAAMe,CAGf,OADAf,GAAOhf,EAAS0M,qBAAsB,QAAU,GAC1CsS,GAASA,EAAKgB,OAMpBpS,EAAM5N,EAAS6N,cAAe,OAC9BkS,EAAY/f,EAAS6N,cAAe,OACpCkS,EAAUC,MAAMC,QAAU,iEAC1BjB,EAAKzP,YAAawQ,GAAYxQ,YAAa3B,SAI/BA,GAAIoS,MAAME,OAASL,IAE9BjS,EAAIoS,MAAMC,QAGT,iJAGDrS,EAAI2B,YAAavP,EAAS6N,cAAe,QAAUmS,MAAMqQ,MAAQ,MACjEF,EAA0C,IAApBviB,EAAIuS,aAG3BnB,EAAKlR,YAAaiS,GAEXoQ,GA3BP,UA+BF,IAAIG,IAAU,UAEVC,GAAY,GAAI1mB,QAAQ,KAAOwY,EAAO,kBAAmB,KAIzDmO,GAAWC,GACdC,GAAY,2BAERvwB,GAAOwwB,kBACXH,GAAY,SAAU1tB,GAIrB,MAAKA,GAAKuJ,cAAc6C,YAAY0hB,OAC5B9tB,EAAKuJ,cAAc6C,YAAYyhB,iBAAkB7tB,EAAM,MAGxD3C,EAAOwwB,iBAAkB7tB,EAAM,OAGvC2tB,GAAS,SAAU3tB,EAAMgB,EAAM+sB,GAC9B,GAAIR,GAAOS,EAAUC,EAAUxuB,EAC9Byd,EAAQld,EAAKkd,KAqCd,OAnCA6Q,GAAWA,GAAYL,GAAW1tB,GAGlCP,EAAMsuB,EAAWA,EAASG,iBAAkBltB,IAAU+sB,EAAU/sB,GAASQ,OAEpEusB,IAES,KAARtuB,GAAetB,EAAOsH,SAAUzF,EAAKuJ,cAAevJ,KACxDP,EAAMtB,EAAO+e,MAAOld,EAAMgB,IAOtBysB,GAAU1jB,KAAMtK,IAAS+tB,GAAQzjB,KAAM/I,KAG3CusB,EAAQrQ,EAAMqQ,MACdS,EAAW9Q,EAAM8Q,SACjBC,EAAW/Q,EAAM+Q,SAGjB/Q,EAAM8Q,SAAW9Q,EAAM+Q,SAAW/Q,EAAMqQ,MAAQ9tB,EAChDA,EAAMsuB,EAASR,MAGfrQ,EAAMqQ,MAAQA,EACdrQ,EAAM8Q,SAAWA,EACjB9Q,EAAM+Q,SAAWA,IAMJzsB,SAAR/B,EACNA,EACAA,EAAM,KAEGvC,EAAS6O,gBAAgBoiB,eACpCT,GAAY,SAAU1tB,GACrB,MAAOA,GAAKmuB,cAGbR,GAAS,SAAU3tB,EAAMgB,EAAM+sB,GAC9B,GAAIK,GAAMC,EAAIC,EAAQ7uB,EACrByd,EAAQld,EAAKkd,KAyCd,OAvCA6Q,GAAWA,GAAYL,GAAW1tB,GAClCP,EAAMsuB,EAAWA,EAAU/sB,GAASQ,OAIxB,MAAP/B,GAAeyd,GAASA,EAAOlc,KACnCvB,EAAMyd,EAAOlc,IAUTysB,GAAU1jB,KAAMtK,KAAUmuB,GAAU7jB,KAAM/I,KAG9CotB,EAAOlR,EAAMkR,KACbC,EAAKruB,EAAKuuB,aACVD,EAASD,GAAMA,EAAGD,KAGbE,IACJD,EAAGD,KAAOpuB,EAAKmuB,aAAaC,MAE7BlR,EAAMkR,KAAgB,aAATptB,EAAsB,MAAQvB,EAC3CA,EAAMyd,EAAMsR,UAAY,KAGxBtR,EAAMkR,KAAOA,EACRE,IACJD,EAAGD,KAAOE,IAMG9sB,SAAR/B,EACNA,EACAA,EAAM,IAAM,QAOf,SAASgvB,IAAcC,EAAaC,GAEnC,OACCtvB,IAAK,WACJ,GAAIuvB,GAAYF,GAEhB,IAAkB,MAAbE,EAML,MAAKA,cAIGtxB,MAAK+B,KAML/B,KAAK+B,IAAMsvB,GAAQzuB,MAAO5C,KAAM6C,cAM3C,WAEC,GAAI2K,GAAKoS,EAAOhX,EAAG2oB,EAAkBC,EACpCC,EAA0BC,CAS3B,IANAlkB,EAAM5N,EAAS6N,cAAe,OAC9BD,EAAIoC,UAAY,qEAChBhH,EAAI4E,EAAIlB,qBAAsB,KAAO,GACrCsT,EAAQhX,GAAKA,EAAEgX,MAGf,CAIAA,EAAMC,QAAU,wBAIhBlf,EAAQgxB,QAA4B,QAAlB/R,EAAM+R,QAIxBhxB,EAAQixB,WAAahS,EAAMgS,SAE3BpkB,EAAIoS,MAAMiS,eAAiB,cAC3BrkB,EAAI2V,WAAW,GAAOvD,MAAMiS,eAAiB,GAC7ClxB,EAAQmxB,gBAA+C,gBAA7BtkB,EAAIoS,MAAMiS,eAIpClxB,EAAQoxB,UAAgC,KAApBnS,EAAMmS,WAA2C,KAAvBnS,EAAMoS,cACzB,KAA1BpS,EAAMqS,gBAEPpxB,EAAOyC,OAAO3C,GACbuxB,sBAAuB,WAItB,MAHiC,OAA5BT,GACJU,IAEMV,GAGRW,kBAAmB,WAIlB,MAH6B,OAAxBZ,GACJW,IAEMX,GAGRa,cAAe,WAId,MAHyB,OAApBd,GACJY,IAEMZ,GAIRe,oBAAqB,WAIpB,MAH+B,OAA1BZ,GACJS,IAEMT,IAIT,SAASS,KAER,GAAI3kB,GAAKoR,EAAMe,EAAW/F,CAE1BgF,GAAOhf,EAAS0M,qBAAsB,QAAU,GAC1CsS,GAASA,EAAKgB,QAMpBpS,EAAM5N,EAAS6N,cAAe,OAC9BkS,EAAY/f,EAAS6N,cAAe,OACpCkS,EAAUC,MAAMC,QAAU,iEAC1BjB,EAAKzP,YAAawQ,GAAYxQ,YAAa3B,GAE3CA,EAAIoS,MAAMC,QAGT,uKAMD0R,EAAmBC,GAAuB,EAC1CE,GAAyB,EAGpB3xB,EAAOwwB,mBACXgB,EAA0E,QAArDxxB,EAAOwwB,iBAAkB/iB,EAAK,WAAeuB,IAClEyiB,EACwE,SAArEzxB,EAAOwwB,iBAAkB/iB,EAAK,QAAYyiB,MAAO,QAAUA,MAM9DrW,EAAWpM,EAAI2B,YAAavP,EAAS6N,cAAe,QAGpDmM,EAASgG,MAAMC,QAAUrS,EAAIoS,MAAMC,QAGlC,8HAEDjG,EAASgG,MAAM2S,YAAc3Y,EAASgG,MAAMqQ,MAAQ,IACpDziB,EAAIoS,MAAMqQ,MAAQ,MAElByB,GACE1sB,YAAcjF,EAAOwwB,iBAAkB3W,EAAU,WAAe2Y,aAElE/kB,EAAIE,YAAakM,IAUlBpM,EAAIoC,UAAY,8CAChBgK,EAAWpM,EAAIlB,qBAAsB,MACrCsN,EAAU,GAAIgG,MAAMC,QAAU,2CAC9B4R,EAA0D,IAA/B7X,EAAU,GAAI4Y,aACpCf,IACJ7X,EAAU,GAAIgG,MAAM8P,QAAU,GAC9B9V,EAAU,GAAIgG,MAAM8P,QAAU,OAC9B+B,EAA0D,IAA/B7X,EAAU,GAAI4Y,cAG1C5T,EAAKlR,YAAaiS,SAOpB9e,EAAO4xB,KAAO,SAAU/vB,EAAMiB,EAASpB,EAAUC,GAChD,GAAIL,GAAKuB,EACRmI,IAGD,KAAMnI,IAAQC,GACbkI,EAAKnI,GAAShB,EAAKkd,MAAOlc,GAC1BhB,EAAKkd,MAAOlc,GAASC,EAASD,EAG/BvB,GAAMI,EAASK,MAAOF,EAAMF,MAG5B,KAAMkB,IAAQC,GACbjB,EAAKkd,MAAOlc,GAASmI,EAAKnI,EAG3B,OAAOvB,GAIR,IACEuwB,IAAS,kBACVC,GAAW,wBAIXC,GAAe,4BACfC,GAAY,GAAIppB,QAAQ,KAAOwY,EAAO,SAAU,KAChD6Q,GAAU,GAAIrpB,QAAQ,YAAcwY,EAAO,IAAK,KAEhD8Q,IAAYC,SAAU,WAAYC,WAAY,SAAUvD,QAAS,SACjEwD,IACCC,cAAe,IACfC,WAAY,OAGbC,IAAgB,SAAU,IAAK,MAAO,KAIvC,SAASC,IAAgB1T,EAAOlc,GAG/B,GAAKA,IAAQkc,GACZ,MAAOlc,EAIR,IAAI6vB,GAAU7vB,EAAK4V,OAAO,GAAG9X,cAAgBkC,EAAKvD,MAAM,GACvDqzB,EAAW9vB,EACXf,EAAI0wB,GAAYzxB,MAEjB,OAAQe,IAEP,GADAe,EAAO2vB,GAAa1wB,GAAM4wB,EACrB7vB,IAAQkc,GACZ,MAAOlc,EAIT,OAAO8vB,GAGR,QAASC,IAAU3iB,EAAU4iB,GAM5B,IALA,GAAIhE,GAAShtB,EAAMixB,EAClB1V,KACA1D,EAAQ,EACR3Y,EAASkP,EAASlP,OAEHA,EAAR2Y,EAAgBA,IACvB7X,EAAOoO,EAAUyJ,GACX7X,EAAKkd,QAIX3B,EAAQ1D,GAAU1Z,EAAOwgB,MAAO3e,EAAM,cACtCgtB,EAAUhtB,EAAKkd,MAAM8P,QAChBgE,GAGEzV,EAAQ1D,IAAuB,SAAZmV,IACxBhtB,EAAKkd,MAAM8P,QAAU,IAMM,KAAvBhtB,EAAKkd,MAAM8P,SAAkBtN,EAAU1f,KAC3Cub,EAAQ1D,GAAU1Z,EAAOwgB,MAAO3e,EAAM,aAAcktB,GAAeltB,EAAKkD,cAGzE+tB,EAASvR,EAAU1f,IAEdgtB,GAAuB,SAAZA,IAAuBiE,IACtC9yB,EAAOwgB,MAAO3e,EAAM,aAAcixB,EAASjE,EAAU7uB,EAAOyhB,IAAK5f,EAAM,aAO1E,KAAM6X,EAAQ,EAAW3Y,EAAR2Y,EAAgBA,IAChC7X,EAAOoO,EAAUyJ,GACX7X,EAAKkd,QAGL8T,GAA+B,SAAvBhxB,EAAKkd,MAAM8P,SAA6C,KAAvBhtB,EAAKkd,MAAM8P,UACzDhtB,EAAKkd,MAAM8P,QAAUgE,EAAOzV,EAAQ1D,IAAW,GAAK,QAItD,OAAOzJ,GAGR,QAAS8iB,IAAmBlxB,EAAMoD,EAAO+tB,GACxC,GAAIltB,GAAUksB,GAAU3mB,KAAMpG,EAC9B,OAAOa,GAENvC,KAAKkC,IAAK,EAAGK,EAAS,IAAQktB,GAAY,KAAUltB,EAAS,IAAO,MACpEb,EAGF,QAASguB,IAAsBpxB,EAAMgB,EAAMqwB,EAAOC,EAAaC,GAS9D,IARA,GAAItxB,GAAIoxB,KAAYC,EAAc,SAAW,WAE5C,EAES,UAATtwB,EAAmB,EAAI,EAEvBsN,EAAM,EAEK,EAAJrO,EAAOA,GAAK,EAEJ,WAAVoxB,IACJ/iB,GAAOnQ,EAAOyhB,IAAK5f,EAAMqxB,EAAQ5R,EAAWxf,IAAK,EAAMsxB,IAGnDD,GAEW,YAAVD,IACJ/iB,GAAOnQ,EAAOyhB,IAAK5f,EAAM,UAAYyf,EAAWxf,IAAK,EAAMsxB,IAI7C,WAAVF,IACJ/iB,GAAOnQ,EAAOyhB,IAAK5f,EAAM,SAAWyf,EAAWxf,GAAM,SAAS,EAAMsxB,MAIrEjjB,GAAOnQ,EAAOyhB,IAAK5f,EAAM,UAAYyf,EAAWxf,IAAK,EAAMsxB,GAG5C,YAAVF,IACJ/iB,GAAOnQ,EAAOyhB,IAAK5f,EAAM,SAAWyf,EAAWxf,GAAM,SAAS,EAAMsxB,IAKvE,OAAOjjB,GAGR,QAASkjB,IAAkBxxB,EAAMgB,EAAMqwB,GAGtC,GAAII,IAAmB,EACtBnjB,EAAe,UAATtN,EAAmBhB,EAAKqd,YAAcrd,EAAK8vB,aACjDyB,EAAS7D,GAAW1tB,GACpBsxB,EAAcrzB,EAAQoxB,WAAgE,eAAnDlxB,EAAOyhB,IAAK5f,EAAM,aAAa,EAAOuxB,EAK1E,IAAY,GAAPjjB,GAAmB,MAAPA,EAAc,CAQ9B,GANAA,EAAMqf,GAAQ3tB,EAAMgB,EAAMuwB,IACf,EAANjjB,GAAkB,MAAPA,KACfA,EAAMtO,EAAKkd,MAAOlc,IAIdysB,GAAU1jB,KAAKuE,GACnB,MAAOA,EAKRmjB,GAAmBH,IAAiBrzB,EAAQyxB,qBAAuBphB,IAAQtO,EAAKkd,MAAOlc,IAGvFsN,EAAMhM,WAAYgM,IAAS,EAI5B,MAASA,GACR8iB,GACCpxB,EACAgB,EACAqwB,IAAWC,EAAc,SAAW,WACpCG,EACAF,GAEE,KAGLpzB,EAAOyC,QAGN8wB,UACCzC,SACC5vB,IAAK,SAAUW,EAAM+tB,GACpB,GAAKA,EAAW,CAEf,GAAItuB,GAAMkuB,GAAQ3tB,EAAM,UACxB,OAAe,KAARP,EAAa,IAAMA,MAO9BkyB,WACCC,aAAe,EACfC,aAAe,EACfC,UAAY,EACZC,YAAc,EACdrB,YAAc,EACdsB,YAAc,EACd/C,SAAW,EACXgD,OAAS,EACTC,SAAW,EACXC,QAAU,EACVC,QAAU,EACVhV,MAAQ,GAKTiV,UAECC,QAASr0B,EAAQixB,SAAW,WAAa,cAI1ChS,MAAO,SAAUld,EAAMgB,EAAMoC,EAAOiuB,GAEnC,GAAMrxB,GAA0B,IAAlBA,EAAKyC,UAAoC,IAAlBzC,EAAKyC,UAAmBzC,EAAKkd,MAAlE,CAKA,GAAIzd,GAAKyC,EAAM8c,EACd8R,EAAW3yB,EAAO6E,UAAWhC,GAC7Bkc,EAAQld,EAAKkd,KASd,IAPAlc,EAAO7C,EAAOk0B,SAAUvB,KAAgB3yB,EAAOk0B,SAAUvB,GAAaF,GAAgB1T,EAAO4T,IAI7F9R,EAAQ7gB,EAAOuzB,SAAU1wB,IAAU7C,EAAOuzB,SAAUZ,GAGrCtvB,SAAV4B,EAsCJ,MAAK4b,IAAS,OAASA,IAAqDxd,UAA3C/B,EAAMuf,EAAM3f,IAAKW,GAAM,EAAOqxB,IACvD5xB,EAIDyd,EAAOlc,EAhCd,IAVAkB,QAAckB,GAGA,WAATlB,IAAsBzC,EAAM2wB,GAAQ5mB,KAAMpG,MAC9CA,GAAU3D,EAAI,GAAK,GAAMA,EAAI,GAAK6C,WAAYnE,EAAOyhB,IAAK5f,EAAMgB,IAEhEkB,EAAO,UAIM,MAATkB,GAAiBA,IAAUA,IAKlB,WAATlB,GAAsB/D,EAAOwzB,UAAWb,KAC5C1tB,GAAS,MAKJnF,EAAQmxB,iBAA6B,KAAVhsB,GAA+C,IAA/BpC,EAAKpD,QAAQ,gBAC7Dsf,EAAOlc,GAAS,aAIXge,GAAW,OAASA,IAAwDxd,UAA7C4B,EAAQ4b,EAAMqN,IAAKrsB,EAAMoD,EAAOiuB,MAIpE,IACCnU,EAAOlc,GAASoC,EACf,MAAMV,OAcXkd,IAAK,SAAU5f,EAAMgB,EAAMqwB,EAAOE,GACjC,GAAIjyB,GAAKgP,EAAK0Q,EACb8R,EAAW3yB,EAAO6E,UAAWhC,EAyB9B,OAtBAA,GAAO7C,EAAOk0B,SAAUvB,KAAgB3yB,EAAOk0B,SAAUvB,GAAaF,GAAgB5wB,EAAKkd,MAAO4T,IAIlG9R,EAAQ7gB,EAAOuzB,SAAU1wB,IAAU7C,EAAOuzB,SAAUZ,GAG/C9R,GAAS,OAASA,KACtB1Q,EAAM0Q,EAAM3f,IAAKW,GAAM,EAAMqxB,IAIjB7vB,SAAR8M,IACJA,EAAMqf,GAAQ3tB,EAAMgB,EAAMuwB,IAId,WAARjjB,GAAoBtN,IAAQwvB,MAChCliB,EAAMkiB,GAAoBxvB,IAIZ,KAAVqwB,GAAgBA,GACpB/xB,EAAMgD,WAAYgM,GACX+iB,KAAU,GAAQlzB,EAAOkE,UAAW/C,GAAQA,GAAO,EAAIgP,GAExDA,KAITnQ,EAAOyB,MAAO,SAAU,SAAW,SAAUK,EAAGe,GAC/C7C,EAAOuzB,SAAU1wB,IAChB3B,IAAK,SAAUW,EAAM+tB,EAAUsD,GAC9B,MAAKtD,GAGGmC,GAAanmB,KAAM5L,EAAOyhB,IAAK5f,EAAM,aAAsC,IAArBA,EAAKqd,YACjElf,EAAO4xB,KAAM/vB,EAAMqwB,GAAS,WAC3B,MAAOmB,IAAkBxxB,EAAMgB,EAAMqwB,KAEtCG,GAAkBxxB,EAAMgB,EAAMqwB,GAPhC,QAWDhF,IAAK,SAAUrsB,EAAMoD,EAAOiuB,GAC3B,GAAIE,GAASF,GAAS3D,GAAW1tB,EACjC,OAAOkxB,IAAmBlxB,EAAMoD,EAAOiuB,EACtCD,GACCpxB,EACAgB,EACAqwB,EACApzB,EAAQoxB,WAAgE,eAAnDlxB,EAAOyhB,IAAK5f,EAAM,aAAa,EAAOuxB,GAC3DA,GACG,OAMFtzB,EAAQgxB,UACb9wB,EAAOuzB,SAASzC,SACf5vB,IAAK,SAAUW,EAAM+tB,GAEpB,MAAOkC,IAASlmB,MAAOgkB,GAAY/tB,EAAKmuB,aAAenuB,EAAKmuB,aAAarhB,OAAS9M,EAAKkd,MAAMpQ,SAAW,IACrG,IAAOxK,WAAYyE,OAAOwrB,IAAS,GACrCxE,EAAW,IAAM,IAGnB1B,IAAK,SAAUrsB,EAAMoD,GACpB,GAAI8Z,GAAQld,EAAKkd,MAChBiR,EAAenuB,EAAKmuB,aACpBc,EAAU9wB,EAAOkE,UAAWe,GAAU,iBAA2B,IAARA,EAAc,IAAM,GAC7E0J,EAASqhB,GAAgBA,EAAarhB,QAAUoQ,EAAMpQ,QAAU,EAIjEoQ,GAAME,KAAO,GAINha,GAAS,GAAe,KAAVA,IAC6B,KAAhDjF,EAAO2E,KAAMgK,EAAOlL,QAASouB,GAAQ,MACrC9S,EAAM3S,kBAKP2S,EAAM3S,gBAAiB,UAGR,KAAVnH,GAAgB+qB,IAAiBA,EAAarhB,UAMpDoQ,EAAMpQ,OAASkjB,GAAOjmB,KAAM+C,GAC3BA,EAAOlL,QAASouB,GAAQf,GACxBniB,EAAS,IAAMmiB,MAKnB9wB,EAAOuzB,SAAS7B,YAAcpB,GAAcxwB,EAAQ2xB,oBACnD,SAAU5vB,EAAM+tB,GACf,MAAKA,GAGG5vB,EAAO4xB,KAAM/vB,GAAQgtB,QAAW,gBACtCW,IAAU3tB,EAAM,gBAJlB,SAUF7B,EAAOyB,MACN4yB,OAAQ,GACRC,QAAS,GACTC,OAAQ,SACN,SAAUC,EAAQC,GACpBz0B,EAAOuzB,SAAUiB,EAASC,IACzBC,OAAQ,SAAUzvB,GAOjB,IANA,GAAInD,GAAI,EACP6yB,KAGAC,EAAyB,gBAAV3vB,GAAqBA,EAAMqB,MAAM,MAASrB,GAE9C,EAAJnD,EAAOA,IACd6yB,EAAUH,EAASlT,EAAWxf,GAAM2yB,GACnCG,EAAO9yB,IAAO8yB,EAAO9yB,EAAI,IAAO8yB,EAAO,EAGzC,OAAOD,KAIHtF,GAAQzjB,KAAM4oB,KACnBx0B,EAAOuzB,SAAUiB,EAASC,GAASvG,IAAM6E,MAI3C/yB,EAAOG,GAAGsC,QACTgf,IAAK,SAAU5e,EAAMoC,GACpB,MAAOyc,GAAQviB,KAAM,SAAU0C,EAAMgB,EAAMoC,GAC1C,GAAImuB,GAAQhxB,EACXR,KACAE,EAAI,CAEL,IAAK9B,EAAOoD,QAASP,GAAS,CAI7B,IAHAuwB,EAAS7D,GAAW1tB,GACpBO,EAAMS,EAAK9B,OAECqB,EAAJN,EAASA,IAChBF,EAAKiB,EAAMf,IAAQ9B,EAAOyhB,IAAK5f,EAAMgB,EAAMf,IAAK,EAAOsxB,EAGxD,OAAOxxB,GAGR,MAAiByB,UAAV4B,EACNjF,EAAO+e,MAAOld,EAAMgB,EAAMoC,GAC1BjF,EAAOyhB,IAAK5f,EAAMgB,IACjBA,EAAMoC,EAAOjD,UAAUjB,OAAS,IAEpC8xB,KAAM,WACL,MAAOD,IAAUzzB,MAAM,IAExB01B,KAAM,WACL,MAAOjC,IAAUzzB,OAElB21B,OAAQ,SAAU/Y,GACjB,MAAsB,iBAAVA,GACJA,EAAQ5c,KAAK0zB,OAAS1zB,KAAK01B,OAG5B11B,KAAKsC,KAAK,WACX8f,EAAUpiB,MACda,EAAQb,MAAO0zB,OAEf7yB,EAAQb,MAAO01B,WAOnB,SAASE,IAAOlzB,EAAMiB,EAASyjB,EAAMjkB,EAAK0yB;AACzC,MAAO,IAAID,IAAMn0B,UAAUR,KAAMyB,EAAMiB,EAASyjB,EAAMjkB,EAAK0yB,GAE5Dh1B,EAAO+0B,MAAQA,GAEfA,GAAMn0B,WACLE,YAAai0B,GACb30B,KAAM,SAAUyB,EAAMiB,EAASyjB,EAAMjkB,EAAK0yB,EAAQC,GACjD91B,KAAK0C,KAAOA,EACZ1C,KAAKonB,KAAOA,EACZpnB,KAAK61B,OAASA,GAAU,QACxB71B,KAAK2D,QAAUA,EACf3D,KAAKgT,MAAQhT,KAAKiH,IAAMjH,KAAKgO,MAC7BhO,KAAKmD,IAAMA,EACXnD,KAAK81B,KAAOA,IAAUj1B,EAAOwzB,UAAWjN,GAAS,GAAK,OAEvDpZ,IAAK,WACJ,GAAI0T,GAAQkU,GAAMG,UAAW/1B,KAAKonB,KAElC,OAAO1F,IAASA,EAAM3f,IACrB2f,EAAM3f,IAAK/B,MACX41B,GAAMG,UAAUrP,SAAS3kB,IAAK/B,OAEhCg2B,IAAK,SAAUC,GACd,GAAIC,GACHxU,EAAQkU,GAAMG,UAAW/1B,KAAKonB,KAoB/B,OAlBKpnB,MAAK2D,QAAQwyB,SACjBn2B,KAAKsa,IAAM4b,EAAQr1B,EAAOg1B,OAAQ71B,KAAK61B,QACtCI,EAASj2B,KAAK2D,QAAQwyB,SAAWF,EAAS,EAAG,EAAGj2B,KAAK2D,QAAQwyB,UAG9Dn2B,KAAKsa,IAAM4b,EAAQD,EAEpBj2B,KAAKiH,KAAQjH,KAAKmD,IAAMnD,KAAKgT,OAAUkjB,EAAQl2B,KAAKgT,MAE/ChT,KAAK2D,QAAQyyB,MACjBp2B,KAAK2D,QAAQyyB,KAAKt0B,KAAM9B,KAAK0C,KAAM1C,KAAKiH,IAAKjH,MAGzC0hB,GAASA,EAAMqN,IACnBrN,EAAMqN,IAAK/uB,MAEX41B,GAAMG,UAAUrP,SAASqI,IAAK/uB,MAExBA,OAIT41B,GAAMn0B,UAAUR,KAAKQ,UAAYm0B,GAAMn0B,UAEvCm0B,GAAMG,WACLrP,UACC3kB,IAAK,SAAUs0B,GACd,GAAI7jB,EAEJ,OAAiC,OAA5B6jB,EAAM3zB,KAAM2zB,EAAMjP,OACpBiP,EAAM3zB,KAAKkd,OAA2C,MAAlCyW,EAAM3zB,KAAKkd,MAAOyW,EAAMjP,OAQ/C5U,EAAS3R,EAAOyhB,IAAK+T,EAAM3zB,KAAM2zB,EAAMjP,KAAM,IAErC5U,GAAqB,SAAXA,EAAwBA,EAAJ,GAT9B6jB,EAAM3zB,KAAM2zB,EAAMjP,OAW3B2H,IAAK,SAAUsH,GAGTx1B,EAAOy1B,GAAGF,KAAMC,EAAMjP,MAC1BvmB,EAAOy1B,GAAGF,KAAMC,EAAMjP,MAAQiP,GACnBA,EAAM3zB,KAAKkd,QAAgE,MAArDyW,EAAM3zB,KAAKkd,MAAO/e,EAAOk0B,SAAUsB,EAAMjP,QAAoBvmB,EAAOuzB,SAAUiC,EAAMjP,OACrHvmB,EAAO+e,MAAOyW,EAAM3zB,KAAM2zB,EAAMjP,KAAMiP,EAAMpvB,IAAMovB,EAAMP,MAExDO,EAAM3zB,KAAM2zB,EAAMjP,MAASiP,EAAMpvB,OASrC2uB,GAAMG,UAAUtN,UAAYmN,GAAMG,UAAU1N,YAC3C0G,IAAK,SAAUsH,GACTA,EAAM3zB,KAAKyC,UAAYkxB,EAAM3zB,KAAK0J,aACtCiqB,EAAM3zB,KAAM2zB,EAAMjP,MAASiP,EAAMpvB,OAKpCpG,EAAOg1B,QACNU,OAAQ,SAAUC,GACjB,MAAOA,IAERC,MAAO,SAAUD,GAChB,MAAO,GAAMpyB,KAAKsyB,IAAKF,EAAIpyB,KAAKuyB,IAAO,IAIzC91B,EAAOy1B,GAAKV,GAAMn0B,UAAUR,KAG5BJ,EAAOy1B,GAAGF,OAKV,IACCQ,IAAOC,GACPC,GAAW,yBACXC,GAAS,GAAIttB,QAAQ,iBAAmBwY,EAAO,cAAe,KAC9D+U,GAAO,cACPC,IAAwBC,IACxBC,IACCC,KAAO,SAAUhQ,EAAMthB,GACtB,GAAIuwB,GAAQr2B,KAAKq3B,YAAajQ,EAAMthB,GACnCjC,EAASwyB,EAAMroB,MACfynB,EAAQsB,GAAO7qB,KAAMpG,GACrBgwB,EAAOL,GAASA,EAAO,KAAS50B,EAAOwzB,UAAWjN,GAAS,GAAK,MAGhEpU,GAAUnS,EAAOwzB,UAAWjN,IAAmB,OAAT0O,IAAkBjyB,IACvDkzB,GAAO7qB,KAAMrL,EAAOyhB,IAAK+T,EAAM3zB,KAAM0kB,IACtCkQ,EAAQ,EACRC,EAAgB,EAEjB,IAAKvkB,GAASA,EAAO,KAAQ8iB,EAAO,CAEnCA,EAAOA,GAAQ9iB,EAAO,GAGtByiB,EAAQA,MAGRziB,GAASnP,GAAU,CAEnB,GAGCyzB,GAAQA,GAAS,KAGjBtkB,GAAgBskB,EAChBz2B,EAAO+e,MAAOyW,EAAM3zB,KAAM0kB,EAAMpU,EAAQ8iB,SAI/BwB,KAAWA,EAAQjB,EAAMroB,MAAQnK,IAAqB,IAAVyzB,KAAiBC,GAaxE,MATK9B,KACJziB,EAAQqjB,EAAMrjB,OAASA,IAAUnP,GAAU,EAC3CwyB,EAAMP,KAAOA,EAEbO,EAAMlzB,IAAMsyB,EAAO,GAClBziB,GAAUyiB,EAAO,GAAM,GAAMA,EAAO,IACnCA,EAAO,IAGHY,IAKV,SAASmB,MAIR,MAHA3Y,YAAW,WACV+X,GAAQ1yB,SAEA0yB,GAAQ/1B,EAAOoG,MAIzB,QAASwwB,IAAO7yB,EAAM8yB,GACrB,GAAI5P,GACHla,GAAU+pB,OAAQ/yB,GAClBjC,EAAI,CAKL,KADA+0B,EAAeA,EAAe,EAAI,EACtB,EAAJ/0B,EAAQA,GAAK,EAAI+0B,EACxB5P,EAAQ3F,EAAWxf,GACnBiL,EAAO,SAAWka,GAAUla,EAAO,UAAYka,GAAUljB,CAO1D,OAJK8yB,KACJ9pB,EAAM+jB,QAAU/jB,EAAMqiB,MAAQrrB,GAGxBgJ,EAGR,QAASypB,IAAavxB,EAAOshB,EAAMwQ,GAKlC,IAJA,GAAIvB,GACHwB,GAAeV,GAAU/P,QAAehnB,OAAQ+2B,GAAU,MAC1D5c,EAAQ,EACR3Y,EAASi2B,EAAWj2B,OACLA,EAAR2Y,EAAgBA,IACvB,GAAM8b,EAAQwB,EAAYtd,GAAQzY,KAAM81B,EAAWxQ,EAAMthB,GAGxD,MAAOuwB,GAKV,QAASa,IAAkBx0B,EAAMglB,EAAOoQ,GAEvC,GAAI1Q,GAAMthB,EAAO6vB,EAAQU,EAAO3U,EAAOqW,EAASrI,EAASsI,EACxDC,EAAOj4B,KACP4pB,KACAhK,EAAQld,EAAKkd,MACb+T,EAASjxB,EAAKyC,UAAYid,EAAU1f,GACpCw1B,EAAWr3B,EAAOwgB,MAAO3e,EAAM,SAG1Bo1B,GAAKvW,QACVG,EAAQ7gB,EAAO8gB,YAAajf,EAAM,MACX,MAAlBgf,EAAMyW,WACVzW,EAAMyW,SAAW,EACjBJ,EAAUrW,EAAM/M,MAAMuH,KACtBwF,EAAM/M,MAAMuH,KAAO,WACZwF,EAAMyW,UACXJ,MAIHrW,EAAMyW,WAENF,EAAKnb,OAAO,WAGXmb,EAAKnb,OAAO,WACX4E,EAAMyW,WACAt3B,EAAO0gB,MAAO7e,EAAM,MAAOd,QAChC8f,EAAM/M,MAAMuH,YAOO,IAAlBxZ,EAAKyC,WAAoB,UAAYuiB,IAAS,SAAWA,MAK7DoQ,EAAKM,UAAaxY,EAAMwY,SAAUxY,EAAMyY,UAAWzY,EAAM0Y,WAIzD5I,EAAU7uB,EAAOyhB,IAAK5f,EAAM,WAG5Bs1B,EAA2B,SAAZtI,EACd7uB,EAAOwgB,MAAO3e,EAAM,eAAkBktB,GAAgBltB,EAAKkD,UAAa8pB,EAEnD,WAAjBsI,GAA6D,SAAhCn3B,EAAOyhB,IAAK5f,EAAM,WAI7C/B,EAAQ+e,wBAA8D,WAApCkQ,GAAgBltB,EAAKkD,UAG5Dga,EAAME,KAAO,EAFbF,EAAM8P,QAAU,iBAOdoI,EAAKM,WACTxY,EAAMwY,SAAW,SACXz3B,EAAQqvB,oBACbiI,EAAKnb,OAAO,WACX8C,EAAMwY,SAAWN,EAAKM,SAAU,GAChCxY,EAAMyY,UAAYP,EAAKM,SAAU,GACjCxY,EAAM0Y,UAAYR,EAAKM,SAAU,KAMpC,KAAMhR,IAAQM,GAEb,GADA5hB,EAAQ4hB,EAAON,GACV0P,GAAS5qB,KAAMpG,GAAU,CAG7B,SAFO4hB,GAAON,GACduO,EAASA,GAAoB,WAAV7vB,EACdA,KAAY6tB,EAAS,OAAS,QAAW,CAG7C,GAAe,SAAV7tB,IAAoBoyB,GAAiCh0B,SAArBg0B,EAAU9Q,GAG9C,QAFAuM,IAAS,EAKX/J,EAAMxC,GAAS8Q,GAAYA,EAAU9Q,IAAUvmB,EAAO+e,MAAOld,EAAM0kB,OAInEsI,GAAUxrB,MAIZ,IAAMrD,EAAOoE,cAAe2kB,GAwCqD,YAAxD,SAAZ8F,EAAqBE,GAAgBltB,EAAKkD,UAAa8pB,KACnE9P,EAAM8P,QAAUA,OAzCoB,CAC/BwI,EACC,UAAYA,KAChBvE,EAASuE,EAASvE,QAGnBuE,EAAWr3B,EAAOwgB,MAAO3e,EAAM,aAI3BizB,IACJuC,EAASvE,QAAUA,GAEfA,EACJ9yB,EAAQ6B,GAAOgxB,OAEfuE,EAAK3vB,KAAK,WACTzH,EAAQ6B,GAAOgzB,SAGjBuC,EAAK3vB,KAAK,WACT,GAAI8e,EACJvmB,GAAOygB,YAAa5e,EAAM,SAC1B,KAAM0kB,IAAQwC,GACb/oB,EAAO+e,MAAOld,EAAM0kB,EAAMwC,EAAMxC,KAGlC,KAAMA,IAAQwC,GACbyM,EAAQgB,GAAa1D,EAASuE,EAAU9Q,GAAS,EAAGA,EAAM6Q,GAElD7Q,IAAQ8Q,KACfA,EAAU9Q,GAASiP,EAAMrjB,MACpB2gB,IACJ0C,EAAMlzB,IAAMkzB,EAAMrjB,MAClBqjB,EAAMrjB,MAAiB,UAAToU,GAA6B,WAATA,EAAoB,EAAI,KAW/D,QAASmR,IAAY7Q,EAAO8Q,GAC3B,GAAIje,GAAO7W,EAAMmyB,EAAQ/vB,EAAO4b,CAGhC,KAAMnH,IAASmN,GAed,GAdAhkB,EAAO7C,EAAO6E,UAAW6U,GACzBsb,EAAS2C,EAAe90B,GACxBoC,EAAQ4hB,EAAOnN,GACV1Z,EAAOoD,QAAS6B,KACpB+vB,EAAS/vB,EAAO,GAChBA,EAAQ4hB,EAAOnN,GAAUzU,EAAO,IAG5ByU,IAAU7W,IACdgkB,EAAOhkB,GAASoC,QACT4hB,GAAOnN,IAGfmH,EAAQ7gB,EAAOuzB,SAAU1wB,GACpBge,GAAS,UAAYA,GAAQ,CACjC5b,EAAQ4b,EAAM6T,OAAQzvB,SACf4hB,GAAOhkB,EAId,KAAM6W,IAASzU,GACNyU,IAASmN,KAChBA,EAAOnN,GAAUzU,EAAOyU,GACxBie,EAAeje,GAAUsb,OAI3B2C,GAAe90B,GAASmyB,EAK3B,QAAS4C,IAAW/1B,EAAMg2B,EAAY/0B,GACrC,GAAI6O,GACHmmB,EACApe,EAAQ,EACR3Y,EAASq1B,GAAoBr1B,OAC7Bmb,EAAWlc,EAAO4b,WAAWK,OAAQ,iBAE7B8b,GAAKl2B,OAEbk2B,EAAO,WACN,GAAKD,EACJ,OAAO,CAUR,KARA,GAAIE,GAAcjC,IAASY,KAC1BzZ,EAAY3Z,KAAKkC,IAAK,EAAGsxB,EAAUkB,UAAYlB,EAAUzB,SAAW0C,GAEpE5hB,EAAO8G,EAAY6Z,EAAUzB,UAAY,EACzCF,EAAU,EAAIhf,EACdsD,EAAQ,EACR3Y,EAASg2B,EAAUmB,OAAOn3B,OAEXA,EAAR2Y,EAAiBA,IACxBqd,EAAUmB,OAAQxe,GAAQyb,IAAKC,EAKhC,OAFAlZ,GAASoB,WAAYzb,GAAQk1B,EAAW3B,EAASlY,IAElC,EAAVkY,GAAer0B,EACZmc,GAEPhB,EAASqB,YAAa1b,GAAQk1B,KACvB,IAGTA,EAAY7a,EAASF,SACpBna,KAAMA,EACNglB,MAAO7mB,EAAOyC,UAAYo1B,GAC1BZ,KAAMj3B,EAAOyC,QAAQ,GAAQk1B,kBAAqB70B,GAClDq1B,mBAAoBN,EACpBO,gBAAiBt1B,EACjBm1B,UAAWlC,IAASY,KACpBrB,SAAUxyB,EAAQwyB,SAClB4C,UACA1B,YAAa,SAAUjQ,EAAMjkB,GAC5B,GAAIkzB,GAAQx1B,EAAO+0B,MAAOlzB,EAAMk1B,EAAUE,KAAM1Q,EAAMjkB,EACpDy0B,EAAUE,KAAKU,cAAepR,IAAUwQ,EAAUE,KAAKjC,OAEzD,OADA+B,GAAUmB,OAAO14B,KAAMg2B,GAChBA,GAERzU,KAAM,SAAUsX,GACf,GAAI3e,GAAQ,EAGX3Y,EAASs3B,EAAUtB,EAAUmB,OAAOn3B,OAAS,CAC9C,IAAK+2B,EACJ,MAAO34B,KAGR,KADA24B,GAAU,EACM/2B,EAAR2Y,EAAiBA,IACxBqd,EAAUmB,OAAQxe,GAAQyb,IAAK,EAUhC,OALKkD,GACJnc,EAASqB,YAAa1b,GAAQk1B,EAAWsB,IAEzCnc,EAASoc,WAAYz2B,GAAQk1B,EAAWsB,IAElCl5B,QAGT0nB,EAAQkQ,EAAUlQ,KAInB,KAFA6Q,GAAY7Q,EAAOkQ,EAAUE,KAAKU,eAElB52B,EAAR2Y,EAAiBA,IAExB,GADA/H,EAASykB,GAAqB1c,GAAQzY,KAAM81B,EAAWl1B,EAAMglB,EAAOkQ,EAAUE,MAE7E,MAAOtlB,EAmBT,OAfA3R,GAAO4B,IAAKilB,EAAO2P,GAAaO,GAE3B/2B,EAAOkD,WAAY6zB,EAAUE,KAAK9kB,QACtC4kB,EAAUE,KAAK9kB,MAAMlR,KAAMY,EAAMk1B,GAGlC/2B,EAAOy1B,GAAG8C,MACTv4B,EAAOyC,OAAQs1B,GACdl2B,KAAMA,EACNu1B,KAAML,EACNrW,MAAOqW,EAAUE,KAAKvW,SAKjBqW,EAAUpa,SAAUoa,EAAUE,KAAKta,UACxClV,KAAMsvB,EAAUE,KAAKxvB,KAAMsvB,EAAUE,KAAKuB,UAC1Crc,KAAM4a,EAAUE,KAAK9a,MACrBF,OAAQ8a,EAAUE,KAAKhb,QAG1Bjc,EAAO43B,UAAY53B,EAAOyC,OAAQm1B,IACjCa,QAAS,SAAU5R,EAAOnlB,GACpB1B,EAAOkD,WAAY2jB,IACvBnlB,EAAWmlB,EACXA,GAAU,MAEVA,EAAQA,EAAMvgB,MAAM,IAOrB,KAJA,GAAIigB,GACH7M,EAAQ,EACR3Y,EAAS8lB,EAAM9lB,OAEAA,EAAR2Y,EAAiBA,IACxB6M,EAAOM,EAAOnN,GACd4c,GAAU/P,GAAS+P,GAAU/P,OAC7B+P,GAAU/P,GAAOxW,QAASrO,IAI5Bg3B,UAAW,SAAUh3B,EAAU+rB,GACzBA,EACJ2I,GAAoBrmB,QAASrO,GAE7B00B,GAAoB52B,KAAMkC,MAK7B1B,EAAO24B,MAAQ,SAAUA,EAAO3D,EAAQ70B,GACvC,GAAIy4B,GAAMD,GAA0B,gBAAVA,GAAqB34B,EAAOyC,UAAYk2B,IACjEH,SAAUr4B,IAAOA,GAAM60B,GACtBh1B,EAAOkD,WAAYy1B,IAAWA,EAC/BrD,SAAUqD,EACV3D,OAAQ70B,GAAM60B,GAAUA,IAAWh1B,EAAOkD,WAAY8xB,IAAYA,EAwBnE,OArBA4D,GAAItD,SAAWt1B,EAAOy1B,GAAGvX,IAAM,EAA4B,gBAAjB0a,GAAItD,SAAwBsD,EAAItD,SACzEsD,EAAItD,WAAYt1B,GAAOy1B,GAAGoD,OAAS74B,EAAOy1B,GAAGoD,OAAQD,EAAItD,UAAat1B,EAAOy1B,GAAGoD,OAAOhT,UAGtE,MAAb+S,EAAIlY,OAAiBkY,EAAIlY,SAAU,KACvCkY,EAAIlY,MAAQ,MAIbkY,EAAI5tB,IAAM4tB,EAAIJ,SAEdI,EAAIJ,SAAW,WACTx4B,EAAOkD,WAAY01B,EAAI5tB,MAC3B4tB,EAAI5tB,IAAI/J,KAAM9B,MAGVy5B,EAAIlY,OACR1gB,EAAO2gB,QAASxhB,KAAMy5B,EAAIlY,QAIrBkY,GAGR54B,EAAOG,GAAGsC,QACTq2B,OAAQ,SAAUH,EAAOI,EAAI/D,EAAQtzB,GAGpC,MAAOvC,MAAKwP,OAAQ4S,GAAWE,IAAK,UAAW,GAAIoR,OAGjDvwB,MAAM02B,SAAUlI,QAASiI,GAAMJ,EAAO3D,EAAQtzB,IAEjDs3B,QAAS,SAAUzS,EAAMoS,EAAO3D,EAAQtzB,GACvC,GAAIoS,GAAQ9T,EAAOoE,cAAemiB,GACjC0S,EAASj5B,EAAO24B,MAAOA,EAAO3D,EAAQtzB,GACtCw3B,EAAc,WAEb,GAAI9B,GAAOQ,GAAWz4B,KAAMa,EAAOyC,UAAY8jB,GAAQ0S,IAGlDnlB,GAAS9T,EAAOwgB,MAAOrhB,KAAM,YACjCi4B,EAAKrW,MAAM,GAKd,OAFCmY,GAAYC,OAASD,EAEfplB,GAASmlB,EAAOvY,SAAU,EAChCvhB,KAAKsC,KAAMy3B,GACX/5B,KAAKuhB,MAAOuY,EAAOvY,MAAOwY,IAE5BnY,KAAM,SAAUhd,EAAMkd,EAAYoX,GACjC,GAAIe,GAAY,SAAUvY,GACzB,GAAIE,GAAOF,EAAME,WACVF,GAAME,KACbA,EAAMsX,GAYP,OATqB,gBAATt0B,KACXs0B,EAAUpX,EACVA,EAAald,EACbA,EAAOV,QAEH4d,GAAcld,KAAS,GAC3B5E,KAAKuhB,MAAO3c,GAAQ,SAGd5E,KAAKsC,KAAK,WAChB,GAAIkf,IAAU,EACbjH,EAAgB,MAAR3V,GAAgBA,EAAO,aAC/Bs1B,EAASr5B,EAAOq5B,OAChB30B,EAAO1E,EAAOwgB,MAAOrhB,KAEtB,IAAKua,EACChV,EAAMgV,IAAWhV,EAAMgV,GAAQqH,MACnCqY,EAAW10B,EAAMgV,QAGlB,KAAMA,IAAShV,GACTA,EAAMgV,IAAWhV,EAAMgV,GAAQqH,MAAQoV,GAAKvqB,KAAM8N,IACtD0f,EAAW10B,EAAMgV,GAKpB,KAAMA,EAAQ2f,EAAOt4B,OAAQ2Y,KACvB2f,EAAQ3f,GAAQ7X,OAAS1C,MAAiB,MAAR4E,GAAgBs1B,EAAQ3f,GAAQgH,QAAU3c,IAChFs1B,EAAQ3f,GAAQ0d,KAAKrW,KAAMsX,GAC3B1X,GAAU,EACV0Y,EAAO72B,OAAQkX,EAAO,KAOnBiH,IAAY0X,IAChBr4B,EAAO2gB,QAASxhB,KAAM4E,MAIzBo1B,OAAQ,SAAUp1B,GAIjB,MAHKA,MAAS,IACbA,EAAOA,GAAQ,MAET5E,KAAKsC,KAAK,WAChB,GAAIiY,GACHhV,EAAO1E,EAAOwgB,MAAOrhB,MACrBuhB,EAAQhc,EAAMX,EAAO,SACrB8c,EAAQnc,EAAMX,EAAO,cACrBs1B,EAASr5B,EAAOq5B,OAChBt4B,EAAS2f,EAAQA,EAAM3f,OAAS,CAajC,KAVA2D,EAAKy0B,QAAS,EAGdn5B,EAAO0gB,MAAOvhB,KAAM4E,MAEf8c,GAASA,EAAME,MACnBF,EAAME,KAAK9f,KAAM9B,MAAM,GAIlBua,EAAQ2f,EAAOt4B,OAAQ2Y,KACvB2f,EAAQ3f,GAAQ7X,OAAS1C,MAAQk6B,EAAQ3f,GAAQgH,QAAU3c,IAC/Ds1B,EAAQ3f,GAAQ0d,KAAKrW,MAAM,GAC3BsY,EAAO72B,OAAQkX,EAAO,GAKxB,KAAMA,EAAQ,EAAW3Y,EAAR2Y,EAAgBA,IAC3BgH,EAAOhH,IAAWgH,EAAOhH,GAAQyf,QACrCzY,EAAOhH,GAAQyf,OAAOl4B,KAAM9B,YAKvBuF,GAAKy0B,YAKfn5B,EAAOyB,MAAO,SAAU,OAAQ,QAAU,SAAUK,EAAGe,GACtD,GAAIy2B,GAAQt5B,EAAOG,GAAI0C,EACvB7C,GAAOG,GAAI0C,GAAS,SAAU81B,EAAO3D,EAAQtzB,GAC5C,MAAgB,OAATi3B,GAAkC,iBAAVA,GAC9BW,EAAMv3B,MAAO5C,KAAM6C,WACnB7C,KAAK65B,QAASpC,GAAO/zB,GAAM,GAAQ81B,EAAO3D,EAAQtzB,MAKrD1B,EAAOyB,MACN83B,UAAW3C,GAAM,QACjB4C,QAAS5C,GAAM,QACf6C,YAAa7C,GAAM,UACnB8C,QAAU5I,QAAS,QACnB6I,SAAW7I,QAAS,QACpB8I,YAAc9I,QAAS,WACrB,SAAUjuB,EAAMgkB,GAClB7mB,EAAOG,GAAI0C,GAAS,SAAU81B,EAAO3D,EAAQtzB,GAC5C,MAAOvC,MAAK65B,QAASnS,EAAO8R,EAAO3D,EAAQtzB,MAI7C1B,EAAOq5B,UACPr5B,EAAOy1B,GAAGsC,KAAO,WAChB,GAAIQ,GACHc,EAASr5B,EAAOq5B,OAChBv3B,EAAI,CAIL,KAFAi0B,GAAQ/1B,EAAOoG,MAEPtE,EAAIu3B,EAAOt4B,OAAQe,IAC1By2B,EAAQc,EAAQv3B,GAEVy2B,KAAWc,EAAQv3B,KAAQy2B,GAChCc,EAAO72B,OAAQV,IAAK,EAIhBu3B,GAAOt4B,QACZf,EAAOy1B,GAAG1U,OAEXgV,GAAQ1yB,QAGTrD,EAAOy1B,GAAG8C,MAAQ,SAAUA,GAC3Bv4B,EAAOq5B,OAAO75B,KAAM+4B,GACfA,IACJv4B,EAAOy1B,GAAGtjB,QAEVnS,EAAOq5B,OAAOnxB,OAIhBlI,EAAOy1B,GAAGoE,SAAW,GAErB75B,EAAOy1B,GAAGtjB,MAAQ,WACX6jB,KACLA,GAAU8D,YAAa95B,EAAOy1B,GAAGsC,KAAM/3B,EAAOy1B,GAAGoE,YAInD75B,EAAOy1B,GAAG1U,KAAO,WAChBgZ,cAAe/D,IACfA,GAAU,MAGXh2B,EAAOy1B,GAAGoD,QACTmB,KAAM,IACNC,KAAM,IAENpU,SAAU,KAMX7lB,EAAOG,GAAG+5B,MAAQ,SAAUC,EAAMp2B,GAIjC,MAHAo2B,GAAOn6B,EAAOy1B,GAAKz1B,EAAOy1B,GAAGoD,OAAQsB,IAAUA,EAAOA,EACtDp2B,EAAOA,GAAQ,KAER5E,KAAKuhB,MAAO3c,EAAM,SAAUiV,EAAM6H,GACxC,GAAIuZ,GAAUpc,WAAYhF,EAAMmhB,EAChCtZ,GAAME,KAAO,WACZsZ,aAAcD,OAMjB,WAEC,GAAIprB,GAAOrC,EAAK9F,EAAQkB,EAAG6wB,CAG3BjsB,GAAM5N,EAAS6N,cAAe,OAC9BD,EAAIb,aAAc,YAAa,KAC/Ba,EAAIoC,UAAY,qEAChBhH,EAAI4E,EAAIlB,qBAAqB,KAAM,GAGnC5E,EAAS9H,EAAS6N,cAAc,UAChCgsB,EAAM/xB,EAAOyH,YAAavP,EAAS6N,cAAc,WACjDoC,EAAQrC,EAAIlB,qBAAqB,SAAU,GAE3C1D,EAAEgX,MAAMC,QAAU,UAGlBlf,EAAQw6B,gBAAoC,MAAlB3tB,EAAI0B,UAI9BvO,EAAQif,MAAQ,MAAMnT,KAAM7D,EAAE8D,aAAa,UAI3C/L,EAAQy6B,eAA4C,OAA3BxyB,EAAE8D,aAAa,QAGxC/L,EAAQ06B,UAAYxrB,EAAM/J,MAI1BnF,EAAQ26B,YAAc7B,EAAIhlB,SAG1B9T,EAAQ46B,UAAY37B,EAAS6N,cAAc,QAAQ8tB,QAInD7zB,EAAO6M,UAAW,EAClB5T,EAAQ66B,aAAe/B,EAAIllB,SAI3B1E,EAAQjQ,EAAS6N,cAAe,SAChCoC,EAAMlD,aAAc,QAAS,IAC7BhM,EAAQkP,MAA0C,KAAlCA,EAAMnD,aAAc,SAGpCmD,EAAM/J,MAAQ,IACd+J,EAAMlD,aAAc,OAAQ,SAC5BhM,EAAQ86B,WAA6B,MAAhB5rB,EAAM/J,QAI5B,IAAI41B,IAAU,KAEd76B,GAAOG,GAAGsC,QACT0N,IAAK,SAAUlL,GACd,GAAI4b,GAAOvf,EAAK4B,EACfrB,EAAO1C,KAAK,EAEb,EAAA,GAAM6C,UAAUjB,OAsBhB,MAFAmC,GAAalD,EAAOkD,WAAY+B,GAEzB9F,KAAKsC,KAAK,SAAUK,GAC1B,GAAIqO,EAEmB,KAAlBhR,KAAKmF,WAKT6L,EADIjN,EACE+B,EAAMhE,KAAM9B,KAAM2C,EAAG9B,EAAQb,MAAOgR,OAEpClL,EAIK,MAAPkL,EACJA,EAAM,GACoB,gBAARA,GAClBA,GAAO,GACInQ,EAAOoD,QAAS+M,KAC3BA,EAAMnQ,EAAO4B,IAAKuO,EAAK,SAAUlL,GAChC,MAAgB,OAATA,EAAgB,GAAKA,EAAQ,MAItC4b,EAAQ7gB,EAAO86B,SAAU37B,KAAK4E,OAAU/D,EAAO86B,SAAU37B,KAAK4F,SAASC,eAGjE6b,GAAW,OAASA,IAA8Cxd,SAApCwd,EAAMqN,IAAK/uB,KAAMgR,EAAK,WACzDhR,KAAK8F,MAAQkL,KAjDd,IAAKtO,EAGJ,MAFAgf,GAAQ7gB,EAAO86B,SAAUj5B,EAAKkC,OAAU/D,EAAO86B,SAAUj5B,EAAKkD,SAASC,eAElE6b,GAAS,OAASA,IAAgDxd,UAAtC/B,EAAMuf,EAAM3f,IAAKW,EAAM,UAChDP,GAGRA,EAAMO,EAAKoD,MAEW,gBAAR3D,GAEbA,EAAImC,QAAQo3B,GAAS,IAEd,MAAPv5B,EAAc,GAAKA,OA0CxBtB,EAAOyC,QACNq4B,UACClQ,QACC1pB,IAAK,SAAUW,GACd,GAAIsO,GAAMnQ,EAAO0O,KAAKwB,KAAMrO,EAAM,QAClC,OAAc,OAAPsO,EACNA,EAGAnQ,EAAO2E,KAAM3E,EAAOmF,KAAMtD,MAG7BgF,QACC3F,IAAK,SAAUW,GAYd,IAXA,GAAIoD,GAAO2lB,EACV9nB,EAAUjB,EAAKiB,QACf4W,EAAQ7X,EAAKgS,cACb6V,EAAoB,eAAd7nB,EAAKkC,MAAiC,EAAR2V,EACpC0D,EAASsM,EAAM,QACfjkB,EAAMikB,EAAMhQ,EAAQ,EAAI5W,EAAQ/B,OAChCe,EAAY,EAAR4X,EACHjU,EACAikB,EAAMhQ,EAAQ,EAGJjU,EAAJ3D,EAASA,IAIhB,GAHA8oB,EAAS9nB,EAAShB,MAGX8oB,EAAOhX,UAAY9R,IAAM4X,IAE5B5Z,EAAQ66B,YAAe/P,EAAOlX,SAA+C,OAApCkX,EAAO/e,aAAa,cAC5D+e,EAAOrf,WAAWmI,UAAa1T,EAAO+E,SAAU6lB,EAAOrf,WAAY,aAAiB,CAMxF,GAHAtG,EAAQjF,EAAQ4qB,GAASza,MAGpBuZ,EACJ,MAAOzkB,EAIRmY,GAAO5d,KAAMyF,GAIf,MAAOmY,IAGR8Q,IAAK,SAAUrsB,EAAMoD,GACpB,GAAI81B,GAAWnQ,EACd9nB,EAAUjB,EAAKiB,QACfsa,EAASpd,EAAOoF,UAAWH,GAC3BnD,EAAIgB,EAAQ/B,MAEb,OAAQe,IAGP,GAFA8oB,EAAS9nB,EAAShB,GAEb9B,EAAOwF,QAASxF,EAAO86B,SAASlQ,OAAO1pB,IAAK0pB,GAAUxN,IAAY,EAMtE,IACCwN,EAAOhX,SAAWmnB,GAAY,EAE7B,MAAQ5wB,GAGTygB,EAAOoQ,iBAIRpQ,GAAOhX,UAAW,CASpB,OAJMmnB,KACLl5B,EAAKgS,cAAgB,IAGf/Q,OAOX9C,EAAOyB,MAAO,QAAS,YAAc,WACpCzB,EAAO86B,SAAU37B,OAChB+uB,IAAK,SAAUrsB,EAAMoD,GACpB,MAAKjF,GAAOoD,QAAS6B,GACXpD,EAAK8R,QAAU3T,EAAOwF,QAASxF,EAAO6B,GAAMsO,MAAOlL,IAAW,EADxE,SAKInF,EAAQ06B,UACbx6B,EAAO86B,SAAU37B,MAAO+B,IAAM,SAAUW,GAGvC,MAAsC,QAA/BA,EAAKgK,aAAa,SAAoB,KAAOhK,EAAKoD,SAQ5D,IAAIg2B,IAAUC,GACbjuB,GAAajN,EAAOgQ,KAAK/C,WACzBkuB,GAAc,0BACdb,GAAkBx6B,EAAQw6B,gBAC1Bc,GAAct7B,EAAQkP,KAEvBhP,GAAOG,GAAGsC,QACTyN,KAAM,SAAUrN,EAAMoC,GACrB,MAAOyc,GAAQviB,KAAMa,EAAOkQ,KAAMrN,EAAMoC,EAAOjD,UAAUjB,OAAS,IAGnEs6B,WAAY,SAAUx4B,GACrB,MAAO1D,MAAKsC,KAAK,WAChBzB,EAAOq7B,WAAYl8B,KAAM0D,QAK5B7C,EAAOyC,QACNyN,KAAM,SAAUrO,EAAMgB,EAAMoC,GAC3B,GAAI4b,GAAOvf,EACVg6B,EAAQz5B,EAAKyC,QAGd,IAAMzC,GAAkB,IAAVy5B,GAAyB,IAAVA,GAAyB,IAAVA,EAK5C,aAAYz5B,GAAKgK,eAAiB+S,EAC1B5e,EAAOumB,KAAM1kB,EAAMgB,EAAMoC,IAKlB,IAAVq2B,GAAgBt7B,EAAOgY,SAAUnW,KACrCgB,EAAOA,EAAKmC,cACZ6b,EAAQ7gB,EAAOu7B,UAAW14B,KACvB7C,EAAOgQ,KAAKnF,MAAMpB,KAAKmC,KAAM/I,GAASq4B,GAAWD,KAGtC53B,SAAV4B,EAaO4b,GAAS,OAASA,IAA6C,QAAnCvf,EAAMuf,EAAM3f,IAAKW,EAAMgB,IACvDvB,GAGPA,EAAMtB,EAAO0O,KAAKwB,KAAMrO,EAAMgB,GAGhB,MAAPvB,EACN+B,OACA/B,GApBc,OAAV2D,EAGO4b,GAAS,OAASA,IAAoDxd,UAA1C/B,EAAMuf,EAAMqN,IAAKrsB,EAAMoD,EAAOpC,IAC9DvB,GAGPO,EAAKiK,aAAcjJ,EAAMoC,EAAQ,IAC1BA,OAPPjF,GAAOq7B,WAAYx5B,EAAMgB,KAuB5Bw4B,WAAY,SAAUx5B,EAAMoD,GAC3B,GAAIpC,GAAM24B,EACT15B,EAAI,EACJ25B,EAAYx2B,GAASA,EAAM4F,MAAO0P,EAEnC,IAAKkhB,GAA+B,IAAlB55B,EAAKyC,SACtB,MAASzB,EAAO44B,EAAU35B,KACzB05B,EAAWx7B,EAAO07B,QAAS74B,IAAUA,EAGhC7C,EAAOgQ,KAAKnF,MAAMpB,KAAKmC,KAAM/I,GAE5Bu4B,IAAed,KAAoBa,GAAYvvB,KAAM/I,GACzDhB,EAAM25B,IAAa,EAInB35B,EAAM7B,EAAO6E,UAAW,WAAahC,IACpChB,EAAM25B,IAAa,EAKrBx7B,EAAOkQ,KAAMrO,EAAMgB,EAAM,IAG1BhB,EAAKuK,gBAAiBkuB,GAAkBz3B,EAAO24B,IAKlDD,WACCx3B,MACCmqB,IAAK,SAAUrsB,EAAMoD,GACpB,IAAMnF,EAAQ86B,YAAwB,UAAV31B,GAAqBjF,EAAO+E,SAASlD,EAAM,SAAW,CAGjF,GAAIsO,GAAMtO,EAAKoD,KAKf,OAJApD,GAAKiK,aAAc,OAAQ7G,GACtBkL,IACJtO,EAAKoD,MAAQkL,GAEPlL,QAQZi2B,IACChN,IAAK,SAAUrsB,EAAMoD,EAAOpC,GAa3B,MAZKoC,MAAU,EAEdjF,EAAOq7B,WAAYx5B,EAAMgB,GACdu4B,IAAed,KAAoBa,GAAYvvB,KAAM/I,GAEhEhB,EAAKiK,cAAewuB,IAAmBt6B,EAAO07B,QAAS74B,IAAUA,EAAMA,GAIvEhB,EAAM7B,EAAO6E,UAAW,WAAahC,IAAWhB,EAAMgB,IAAS,EAGzDA,IAKT7C,EAAOyB,KAAMzB,EAAOgQ,KAAKnF,MAAMpB,KAAK4X,OAAOxW,MAAO,QAAU,SAAU/I,EAAGe,GAExE,GAAI84B,GAAS1uB,GAAYpK,IAAU7C,EAAO0O,KAAKwB,IAE/CjD,IAAYpK,GAASu4B,IAAed,KAAoBa,GAAYvvB,KAAM/I,GACzE,SAAUhB,EAAMgB,EAAM6D,GACrB,GAAIpF,GAAK8iB,CAUT,OATM1d,KAEL0d,EAASnX,GAAYpK,GACrBoK,GAAYpK,GAASvB,EACrBA,EAAqC,MAA/Bq6B,EAAQ95B,EAAMgB,EAAM6D,GACzB7D,EAAKmC,cACL,KACDiI,GAAYpK,GAASuhB,GAEf9iB,GAER,SAAUO,EAAMgB,EAAM6D,GACrB,MAAMA,GAAN,OACQ7E,EAAM7B,EAAO6E,UAAW,WAAahC,IAC3CA,EAAKmC,cACL,QAMCo2B,IAAgBd,KACrBt6B,EAAOu7B,UAAUt2B,OAChBipB,IAAK,SAAUrsB,EAAMoD,EAAOpC,GAC3B,MAAK7C,GAAO+E,SAAUlD,EAAM,cAE3BA,EAAKiW,aAAe7S,GAGbg2B,IAAYA,GAAS/M,IAAKrsB,EAAMoD,EAAOpC,MAO5Cy3B,KAILW,IACC/M,IAAK,SAAUrsB,EAAMoD,EAAOpC,GAE3B,GAAIvB,GAAMO,EAAKgN,iBAAkBhM,EAUjC,OATMvB,IACLO,EAAK+5B,iBACHt6B,EAAMO,EAAKuJ,cAAcywB,gBAAiBh5B,IAI7CvB,EAAI2D,MAAQA,GAAS,GAGP,UAATpC,GAAoBoC,IAAUpD,EAAKgK,aAAchJ,GAC9CoC,EADR,SAOFgI,GAAWzB,GAAKyB,GAAWpK,KAAOoK,GAAW6uB,OAC5C,SAAUj6B,EAAMgB,EAAM6D,GACrB,GAAIpF,EACJ,OAAMoF,GAAN,QACSpF,EAAMO,EAAKgN,iBAAkBhM,KAAyB,KAAdvB,EAAI2D,MACnD3D,EAAI2D,MACJ,MAKJjF,EAAO86B,SAAS9mB,QACf9S,IAAK,SAAUW,EAAMgB,GACpB,GAAIvB,GAAMO,EAAKgN,iBAAkBhM,EACjC,OAAKvB,IAAOA,EAAI8O,UACR9O,EAAI2D,MADZ,QAIDipB,IAAK+M,GAAS/M,KAKfluB,EAAOu7B,UAAUQ,iBAChB7N,IAAK,SAAUrsB,EAAMoD,EAAOpC,GAC3Bo4B,GAAS/M,IAAKrsB,EAAgB,KAAVoD,GAAe,EAAQA,EAAOpC,KAMpD7C,EAAOyB,MAAO,QAAS,UAAY,SAAUK,EAAGe,GAC/C7C,EAAOu7B,UAAW14B,IACjBqrB,IAAK,SAAUrsB,EAAMoD,GACpB,MAAe,KAAVA,GACJpD,EAAKiK,aAAcjJ,EAAM,QAClBoC,GAFR,YASEnF,EAAQif,QACb/e,EAAOu7B,UAAUxc,OAChB7d,IAAK,SAAUW,GAId,MAAOA,GAAKkd,MAAMC,SAAW3b,QAE9B6qB,IAAK,SAAUrsB,EAAMoD,GACpB,MAASpD,GAAKkd,MAAMC,QAAU/Z,EAAQ,KAQzC,IAAI+2B,IAAa,6CAChBC,GAAa,eAEdj8B,GAAOG,GAAGsC,QACT8jB,KAAM,SAAU1jB,EAAMoC,GACrB,MAAOyc,GAAQviB,KAAMa,EAAOumB,KAAM1jB,EAAMoC,EAAOjD,UAAUjB,OAAS,IAGnEm7B,WAAY,SAAUr5B,GAErB,MADAA,GAAO7C,EAAO07B,QAAS74B,IAAUA,EAC1B1D,KAAKsC,KAAK,WAEhB,IACCtC,KAAM0D,GAASQ,aACRlE,MAAM0D,GACZ,MAAO0B,UAKZvE,EAAOyC,QACNi5B,SACCS,MAAO,UACPC,QAAS,aAGV7V,KAAM,SAAU1kB,EAAMgB,EAAMoC,GAC3B,GAAI3D,GAAKuf,EAAOwb,EACff,EAAQz5B,EAAKyC,QAGd,IAAMzC,GAAkB,IAAVy5B,GAAyB,IAAVA,GAAyB,IAAVA,EAY5C,MARAe,GAAmB,IAAVf,IAAgBt7B,EAAOgY,SAAUnW,GAErCw6B,IAEJx5B,EAAO7C,EAAO07B,QAAS74B,IAAUA,EACjCge,EAAQ7gB,EAAOk1B,UAAWryB,IAGZQ,SAAV4B,EACG4b,GAAS,OAASA,IAAoDxd,UAA1C/B,EAAMuf,EAAMqN,IAAKrsB,EAAMoD,EAAOpC,IAChEvB,EACEO,EAAMgB,GAASoC,EAGX4b,GAAS,OAASA,IAA6C,QAAnCvf,EAAMuf,EAAM3f,IAAKW,EAAMgB,IACzDvB,EACAO,EAAMgB,IAITqyB,WACC1hB,UACCtS,IAAK,SAAUW,GAId,GAAIy6B,GAAWt8B,EAAO0O,KAAKwB,KAAMrO,EAAM,WAEvC,OAAOy6B,GACNC,SAAUD,EAAU,IACpBN,GAAWpwB,KAAM/J,EAAKkD,WAAck3B,GAAWrwB,KAAM/J,EAAKkD,WAAclD,EAAK0R,KAC5E,EACA,QAQAzT,EAAQy6B,gBAEbv6B,EAAOyB,MAAO,OAAQ,OAAS,SAAUK,EAAGe,GAC3C7C,EAAOk1B,UAAWryB,IACjB3B,IAAK,SAAUW,GACd,MAAOA,GAAKgK,aAAchJ,EAAM,OAS9B/C,EAAQ26B,cACbz6B,EAAOk1B,UAAUthB,UAChB1S,IAAK,SAAUW,GACd,GAAIkM,GAASlM,EAAK0J,UAUlB,OARKwC,KACJA,EAAO8F,cAGF9F,EAAOxC,YACXwC,EAAOxC,WAAWsI,eAGb,QAKV7T,EAAOyB,MACN,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,mBACE,WACFzB,EAAO07B,QAASv8B,KAAK6F,eAAkB7F,OAIlCW,EAAQ46B,UACb16B,EAAO07B,QAAQhB,QAAU,WAM1B,IAAI8B,IAAS,aAEbx8B,GAAOG,GAAGsC,QACTg6B,SAAU,SAAUx3B,GACnB,GAAIy3B,GAAS76B,EAAMsL,EAAKwvB,EAAOt6B,EAAGu6B,EACjC96B,EAAI,EACJM,EAAMjD,KAAK4B,OACX87B,EAA2B,gBAAV53B,IAAsBA,CAExC,IAAKjF,EAAOkD,WAAY+B,GACvB,MAAO9F,MAAKsC,KAAK,SAAUY,GAC1BrC,EAAQb,MAAOs9B,SAAUx3B,EAAMhE,KAAM9B,KAAMkD,EAAGlD,KAAKkP,aAIrD,IAAKwuB,EAIJ,IAFAH,GAAYz3B,GAAS,IAAK4F,MAAO0P,OAErBnY,EAAJN,EAASA,IAOhB,GANAD,EAAO1C,KAAM2C,GACbqL,EAAwB,IAAlBtL,EAAKyC,WAAoBzC,EAAKwM,WACjC,IAAMxM,EAAKwM,UAAY,KAAM5K,QAAS+4B,GAAQ,KAChD,KAGU,CACVn6B,EAAI,CACJ,OAASs6B,EAAQD,EAAQr6B,KACnB8K,EAAI1N,QAAS,IAAMk9B,EAAQ,KAAQ,IACvCxvB,GAAOwvB,EAAQ,IAKjBC,GAAa58B,EAAO2E,KAAMwI,GACrBtL,EAAKwM,YAAcuuB,IACvB/6B,EAAKwM,UAAYuuB,GAMrB,MAAOz9B,OAGR29B,YAAa,SAAU73B,GACtB,GAAIy3B,GAAS76B,EAAMsL,EAAKwvB,EAAOt6B,EAAGu6B,EACjC96B,EAAI,EACJM,EAAMjD,KAAK4B,OACX87B,EAA+B,IAArB76B,UAAUjB,QAAiC,gBAAVkE,IAAsBA,CAElE,IAAKjF,EAAOkD,WAAY+B,GACvB,MAAO9F,MAAKsC,KAAK,SAAUY,GAC1BrC,EAAQb,MAAO29B,YAAa73B,EAAMhE,KAAM9B,KAAMkD,EAAGlD,KAAKkP,aAGxD,IAAKwuB,EAGJ,IAFAH,GAAYz3B,GAAS,IAAK4F,MAAO0P,OAErBnY,EAAJN,EAASA,IAQhB,GAPAD,EAAO1C,KAAM2C,GAEbqL,EAAwB,IAAlBtL,EAAKyC,WAAoBzC,EAAKwM,WACjC,IAAMxM,EAAKwM,UAAY,KAAM5K,QAAS+4B,GAAQ,KAChD,IAGU,CACVn6B,EAAI,CACJ,OAASs6B,EAAQD,EAAQr6B,KAExB,MAAQ8K,EAAI1N,QAAS,IAAMk9B,EAAQ,MAAS,EAC3CxvB,EAAMA,EAAI1J,QAAS,IAAMk5B,EAAQ,IAAK,IAKxCC,GAAa33B,EAAQjF,EAAO2E,KAAMwI,GAAQ,GACrCtL,EAAKwM,YAAcuuB,IACvB/6B,EAAKwM,UAAYuuB,GAMrB,MAAOz9B,OAGR49B,YAAa,SAAU93B,EAAO+3B,GAC7B,GAAIj5B,SAAckB,EAElB,OAAyB,iBAAb+3B,IAAmC,WAATj5B,EAC9Bi5B,EAAW79B,KAAKs9B,SAAUx3B,GAAU9F,KAAK29B,YAAa73B,GAItD9F,KAAKsC,KADRzB,EAAOkD,WAAY+B,GACN,SAAUnD,GAC1B9B,EAAQb,MAAO49B,YAAa93B,EAAMhE,KAAK9B,KAAM2C,EAAG3C,KAAKkP,UAAW2uB,GAAWA,IAI5D,WAChB,GAAc,WAATj5B,EAAoB,CAExB,GAAIsK,GACHvM,EAAI,EACJwW,EAAOtY,EAAQb,MACf89B,EAAah4B,EAAM4F,MAAO0P,MAE3B,OAASlM,EAAY4uB,EAAYn7B,KAE3BwW,EAAK4kB,SAAU7uB,GACnBiK,EAAKwkB,YAAazuB,GAElBiK,EAAKmkB,SAAUpuB,QAKNtK,IAAS6a,GAAyB,YAAT7a,KAC/B5E,KAAKkP,WAETrO,EAAOwgB,MAAOrhB,KAAM,gBAAiBA,KAAKkP,WAO3ClP,KAAKkP,UAAYlP,KAAKkP,WAAapJ,KAAU,EAAQ,GAAKjF,EAAOwgB,MAAOrhB,KAAM,kBAAqB,OAKtG+9B,SAAU,SAAUj9B,GAInB,IAHA,GAAIoO,GAAY,IAAMpO,EAAW,IAChC6B,EAAI,EACJ0X,EAAIra,KAAK4B,OACEyY,EAAJ1X,EAAOA,IACd,GAA0B,IAArB3C,KAAK2C,GAAGwC,WAAmB,IAAMnF,KAAK2C,GAAGuM,UAAY,KAAK5K,QAAQ+4B,GAAQ,KAAK/8B,QAAS4O,IAAe,EAC3G,OAAO,CAIT,QAAO,KAUTrO,EAAOyB,KAAM,0MAEqD6E,MAAM,KAAM,SAAUxE,EAAGe,GAG1F7C,EAAOG,GAAI0C,GAAS,SAAU6B,EAAMvE,GACnC,MAAO6B,WAAUjB,OAAS,EACzB5B,KAAKsqB,GAAI5mB,EAAM,KAAM6B,EAAMvE,GAC3BhB,KAAK6lB,QAASniB,MAIjB7C,EAAOG,GAAGsC,QACT06B,MAAO,SAAUC,EAAQC,GACxB,MAAOl+B,MAAKwpB,WAAYyU,GAASxU,WAAYyU,GAASD,IAGvDE,KAAM,SAAU7Z,EAAO/e,EAAMvE,GAC5B,MAAOhB,MAAKsqB,GAAIhG,EAAO,KAAM/e,EAAMvE,IAEpCo9B,OAAQ,SAAU9Z,EAAOtjB,GACxB,MAAOhB,MAAK+e,IAAKuF,EAAO,KAAMtjB,IAG/Bq9B,SAAU,SAAUv9B,EAAUwjB,EAAO/e,EAAMvE,GAC1C,MAAOhB,MAAKsqB,GAAIhG,EAAOxjB,EAAUyE,EAAMvE,IAExCs9B,WAAY,SAAUx9B,EAAUwjB,EAAOtjB,GAEtC,MAA4B,KAArB6B,UAAUjB,OAAe5B,KAAK+e,IAAKje,EAAU,MAASd,KAAK+e,IAAKuF,EAAOxjB,GAAY,KAAME,KAKlG,IAAIu9B,IAAQ19B,EAAOoG,MAEfu3B,GAAS,KAITC,GAAe,kIAEnB59B,GAAOyf,UAAY,SAAU/a,GAE5B,GAAKxF,EAAO2+B,MAAQ3+B,EAAO2+B,KAAKC,MAG/B,MAAO5+B,GAAO2+B,KAAKC,MAAOp5B,EAAO,GAGlC,IAAIq5B,GACHC,EAAQ,KACRC,EAAMj+B,EAAO2E,KAAMD,EAAO,GAI3B,OAAOu5B,KAAQj+B,EAAO2E,KAAMs5B,EAAIx6B,QAASm6B,GAAc,SAAUjmB,EAAOumB,EAAOC,EAAMlP,GAQpF,MALK8O,IAAmBG,IACvBF,EAAQ,GAIM,IAAVA,EACGrmB,GAIRomB,EAAkBI,GAAQD,EAM1BF,IAAU/O,GAASkP,EAGZ,OAELC,SAAU,UAAYH,KACxBj+B,EAAO2D,MAAO,iBAAmBe,IAKnC1E,EAAOq+B,SAAW,SAAU35B,GAC3B,GAAIsN,GAAK7L,CACT,KAAMzB,GAAwB,gBAATA,GACpB,MAAO,KAER,KACMxF,EAAOo/B,WACXn4B,EAAM,GAAIm4B,WACVtsB,EAAM7L,EAAIo4B,gBAAiB75B,EAAM,cAEjCsN,EAAM,GAAIwsB,eAAe,oBACzBxsB,EAAIysB,MAAQ,QACZzsB,EAAI0sB,QAASh6B,IAEb,MAAOH,GACRyN,EAAM3O,OAKP,MAHM2O,IAAQA,EAAIpE,kBAAmBoE,EAAIvG,qBAAsB,eAAgB1K,QAC9Ef,EAAO2D,MAAO,gBAAkBe,GAE1BsN,EAIR,IAEC2sB,IACAC,GAEAC,GAAQ,OACRC,GAAM,gBACNC,GAAW,gCAEXC,GAAiB,4DACjBC,GAAa,iBACbC,GAAY,QACZC,GAAO,4DAWPC,MAOAC,MAGAC,GAAW,KAAK//B,OAAO,IAIxB,KACCq/B,GAAe1rB,SAASK,KACvB,MAAOhP,IAGRq6B,GAAe7/B,EAAS6N,cAAe,KACvCgyB,GAAarrB,KAAO,GACpBqrB,GAAeA,GAAarrB,KAI7BorB,GAAeQ,GAAK9zB,KAAMuzB,GAAa55B,kBAGvC,SAASu6B,IAA6BC,GAGrC,MAAO,UAAUC,EAAoB5jB,GAED,gBAAvB4jB,KACX5jB,EAAO4jB,EACPA,EAAqB,IAGtB,IAAIC,GACH59B,EAAI,EACJ69B,EAAYF,EAAmBz6B,cAAc6F,MAAO0P,MAErD,IAAKva,EAAOkD,WAAY2Y,GAEvB,MAAS6jB,EAAWC,EAAU79B,KAEC,MAAzB49B,EAASjnB,OAAQ,IACrBinB,EAAWA,EAASpgC,MAAO,IAAO,KACjCkgC,EAAWE,GAAaF,EAAWE,QAAkB3vB,QAAS8L,KAI9D2jB,EAAWE,GAAaF,EAAWE,QAAkBlgC,KAAMqc,IAQjE,QAAS+jB,IAA+BJ,EAAW18B,EAASs1B,EAAiByH,GAE5E,GAAIC,MACHC,EAAqBP,IAAcH,EAEpC,SAASW,GAASN,GACjB,GAAI9rB,EAYJ,OAXAksB,GAAWJ,IAAa,EACxB1/B,EAAOyB,KAAM+9B,EAAWE,OAAkB,SAAUv1B,EAAG81B,GACtD,GAAIC,GAAsBD,EAAoBn9B,EAASs1B,EAAiByH,EACxE,OAAoC,gBAAxBK,IAAqCH,GAAqBD,EAAWI,GAIrEH,IACDnsB,EAAWssB,GADf,QAHNp9B,EAAQ68B,UAAU5vB,QAASmwB,GAC3BF,EAASE,IACF,KAKFtsB,EAGR,MAAOosB,GAASl9B,EAAQ68B,UAAW,MAAUG,EAAW,MAASE,EAAS,KAM3E,QAASG,IAAYn9B,EAAQN,GAC5B,GAAIO,GAAMoB,EACT+7B,EAAcpgC,EAAOqgC,aAAaD,eAEnC,KAAM/7B,IAAO3B,GACQW,SAAfX,EAAK2B,MACP+7B,EAAa/7B,GAAQrB,EAAWC,IAASA,OAAgBoB,GAAQ3B,EAAK2B,GAO1E,OAJKpB,IACJjD,EAAOyC,QAAQ,EAAMO,EAAQC,GAGvBD,EAOR,QAASs9B,IAAqBC,EAAGV,EAAOW,GACvC,GAAIC,GAAeC,EAAIC,EAAe58B,EACrCgV,EAAWwnB,EAAExnB,SACb4mB,EAAYY,EAAEZ,SAGf,OAA2B,MAAnBA,EAAW,GAClBA,EAAUnzB,QACEnJ,SAAPq9B,IACJA,EAAKH,EAAEK,UAAYf,EAAMgB,kBAAkB,gBAK7C,IAAKH,EACJ,IAAM38B,IAAQgV,GACb,GAAKA,EAAUhV,IAAUgV,EAAUhV,GAAO6H,KAAM80B,GAAO,CACtDf,EAAU5vB,QAAShM,EACnB,OAMH,GAAK47B,EAAW,IAAOa,GACtBG,EAAgBhB,EAAW,OACrB,CAEN,IAAM57B,IAAQy8B,GAAY,CACzB,IAAMb,EAAW,IAAOY,EAAEO,WAAY/8B,EAAO,IAAM47B,EAAU,IAAO,CACnEgB,EAAgB58B,CAChB,OAEK08B,IACLA,EAAgB18B,GAIlB48B,EAAgBA,GAAiBF,EAMlC,MAAKE,IACCA,IAAkBhB,EAAW,IACjCA,EAAU5vB,QAAS4wB,GAEbH,EAAWG,IAJnB,OAWD,QAASI,IAAaR,EAAGS,EAAUnB,EAAOoB,GACzC,GAAIC,GAAOC,EAASC,EAAMj7B,EAAK8S,EAC9B6nB,KAEAnB,EAAYY,EAAEZ,UAAUrgC,OAGzB,IAAKqgC,EAAW,GACf,IAAMyB,IAAQb,GAAEO,WACfA,EAAYM,EAAKp8B,eAAkBu7B,EAAEO,WAAYM,EAInDD,GAAUxB,EAAUnzB,OAGpB,OAAQ20B,EAcP,GAZKZ,EAAEc,eAAgBF,KACtBtB,EAAOU,EAAEc,eAAgBF,IAAcH,IAIlC/nB,GAAQgoB,GAAaV,EAAEe,aAC5BN,EAAWT,EAAEe,WAAYN,EAAUT,EAAEb,WAGtCzmB,EAAOkoB,EACPA,EAAUxB,EAAUnzB,QAKnB,GAAiB,MAAZ20B,EAEJA,EAAUloB,MAGJ,IAAc,MAATA,GAAgBA,IAASkoB,EAAU,CAM9C,GAHAC,EAAON,EAAY7nB,EAAO,IAAMkoB,IAAaL,EAAY,KAAOK,IAG1DC,EACL,IAAMF,IAASJ,GAId,GADA36B,EAAM+6B,EAAM56B,MAAO,KACdH,EAAK,KAAQg7B,IAGjBC,EAAON,EAAY7nB,EAAO,IAAM9S,EAAK,KACpC26B,EAAY,KAAO36B,EAAK,KACb,CAENi7B,KAAS,EACbA,EAAON,EAAYI,GAGRJ,EAAYI,MAAY,IACnCC,EAAUh7B,EAAK,GACfw5B,EAAU5vB,QAAS5J,EAAK,IAEzB,OAOJ,GAAKi7B,KAAS,EAGb,GAAKA,GAAQb,EAAG,UACfS,EAAWI,EAAMJ,OAEjB,KACCA,EAAWI,EAAMJ,GAChB,MAAQz8B,GACT,OAASwX,MAAO,cAAepY,MAAOy9B,EAAO78B,EAAI,sBAAwB0U,EAAO,OAASkoB,IAQ/F,OAASplB,MAAO,UAAWrX,KAAMs8B,GAGlChhC,EAAOyC,QAGN8+B,OAAQ,EAGRC,gBACAC,QAEApB,cACCqB,IAAK9C,GACL76B,KAAM,MACN49B,QAAS3C,GAAepzB,KAAM+yB,GAAc,IAC5ChgC,QAAQ,EACRijC,aAAa,EACbnD,OAAO,EACPoD,YAAa,mDAabC,SACCvL,IAAK+I,GACLn6B,KAAM,aACN2oB,KAAM,YACN9b,IAAK,4BACL+vB,KAAM,qCAGPhpB,UACC/G,IAAK,MACL8b,KAAM,OACNiU,KAAM,QAGPV,gBACCrvB,IAAK,cACL7M,KAAM,eACN48B,KAAM,gBAKPjB,YAGCkB,SAAUz3B,OAGV03B,aAAa,EAGbC,YAAaliC,EAAOyf,UAGpB0iB,WAAYniC,EAAOq+B,UAOpB+B,aACCsB,KAAK,EACLxhC,SAAS,IAOXkiC,UAAW,SAAUp/B,EAAQq/B,GAC5B,MAAOA,GAGNlC,GAAYA,GAAYn9B,EAAQhD,EAAOqgC,cAAgBgC,GAGvDlC,GAAYngC,EAAOqgC,aAAcr9B,IAGnCs/B,cAAe/C,GAA6BH,IAC5CmD,cAAehD,GAA6BF,IAG5CmD,KAAM,SAAUd,EAAK5+B,GAGA,gBAAR4+B,KACX5+B,EAAU4+B,EACVA,EAAMr+B,QAIPP,EAAUA,KAEV,IACC8xB,GAEA9yB,EAEA2gC,EAEAC,EAEAC,EAGAC,EAEAC,EAEAC,EAEAvC,EAAIvgC,EAAOoiC,aAAet/B,GAE1BigC,EAAkBxC,EAAErgC,SAAWqgC,EAE/ByC,EAAqBzC,EAAErgC,UAAa6iC,EAAgBz+B,UAAYy+B,EAAgBliC,QAC/Eb,EAAQ+iC,GACR/iC,EAAOue,MAERrC,EAAWlc,EAAO4b,WAClBqnB,EAAmBjjC,EAAO4a,UAAU,eAEpCsoB,EAAa3C,EAAE2C,eAEfC,KACAC,KAEArnB,EAAQ,EAERsnB,EAAW,WAEXxD,GACCrhB,WAAY,EAGZqiB,kBAAmB,SAAUx8B,GAC5B,GAAIwG,EACJ,IAAe,IAAVkR,EAAc,CAClB,IAAM+mB,EAAkB,CACvBA,IACA,OAASj4B,EAAQk0B,GAAS1zB,KAAMq3B,GAC/BI,EAAiBj4B,EAAM,GAAG7F,eAAkB6F,EAAO,GAGrDA,EAAQi4B,EAAiBz+B,EAAIW,eAE9B,MAAgB,OAAT6F,EAAgB,KAAOA,GAI/By4B,sBAAuB,WACtB,MAAiB,KAAVvnB,EAAc2mB,EAAwB,MAI9Ca,iBAAkB,SAAU1gC,EAAMoC,GACjC,GAAIu+B,GAAQ3gC,EAAKmC,aAKjB,OAJM+W,KACLlZ,EAAOugC,EAAqBI,GAAUJ,EAAqBI,IAAW3gC,EACtEsgC,EAAgBtgC,GAASoC,GAEnB9F,MAIRskC,iBAAkB,SAAU1/B,GAI3B,MAHMgY,KACLwkB,EAAEK,SAAW78B,GAEP5E,MAIR+jC,WAAY,SAAUthC,GACrB,GAAI8hC,EACJ,IAAK9hC,EACJ,GAAa,EAARma,EACJ,IAAM2nB,IAAQ9hC,GAEbshC,EAAYQ,IAAWR,EAAYQ,GAAQ9hC,EAAK8hC,QAIjD7D,GAAM5jB,OAAQra,EAAKi+B,EAAM8D,QAG3B,OAAOxkC,OAIRykC,MAAO,SAAUC,GAChB,GAAIC,GAAYD,GAAcR,CAK9B,OAJKR,IACJA,EAAUe,MAAOE,GAElBr8B,EAAM,EAAGq8B,GACF3kC,MAwCV,IAnCA+c,EAASF,QAAS6jB,GAAQrH,SAAWyK,EAAiBrpB,IACtDimB,EAAMkE,QAAUlE,EAAMp4B,KACtBo4B,EAAMl8B,MAAQk8B,EAAM1jB,KAMpBokB,EAAEmB,MAAUA,GAAOnB,EAAEmB,KAAO9C,IAAiB,IAAKn7B,QAASo7B,GAAO,IAAKp7B,QAASy7B,GAAWP,GAAc,GAAM,MAG/G4B,EAAEx8B,KAAOjB,EAAQkhC,QAAUlhC,EAAQiB,MAAQw8B,EAAEyD,QAAUzD,EAAEx8B,KAGzDw8B,EAAEZ,UAAY3/B,EAAO2E,KAAM47B,EAAEb,UAAY,KAAM16B,cAAc6F,MAAO0P,KAAiB,IAG/D,MAAjBgmB,EAAE0D,cACNrP,EAAQuK,GAAK9zB,KAAMk1B,EAAEmB,IAAI18B,eACzBu7B,EAAE0D,eAAkBrP,GACjBA,EAAO,KAAQ+J,GAAc,IAAO/J,EAAO,KAAQ+J,GAAc,KAChE/J,EAAO,KAAwB,UAAfA,EAAO,GAAkB,KAAO,WAC/C+J,GAAc,KAA+B,UAAtBA,GAAc,GAAkB,KAAO,UAK/D4B,EAAE77B,MAAQ67B,EAAEqB,aAAiC,gBAAXrB,GAAE77B,OACxC67B,EAAE77B,KAAO1E,EAAO+qB,MAAOwV,EAAE77B,KAAM67B,EAAE2D,cAIlCtE,GAA+BR,GAAYmB,EAAGz9B,EAAS+8B,GAGxC,IAAV9jB,EACJ,MAAO8jB,EAKR+C,GAAc5iC,EAAOue,OAASgiB,EAAE5hC,OAG3BikC,GAAmC,IAApB5iC,EAAOuhC,UAC1BvhC,EAAOue,MAAMyG,QAAQ,aAItBub,EAAEx8B,KAAOw8B,EAAEx8B,KAAKpD,cAGhB4/B,EAAE4D,YAAclF,GAAWrzB,KAAM20B,EAAEx8B,MAInC0+B,EAAWlC,EAAEmB,IAGPnB,EAAE4D,aAGF5D,EAAE77B,OACN+9B,EAAalC,EAAEmB,MAAS/D,GAAO/xB,KAAM62B,GAAa,IAAM,KAAQlC,EAAE77B,WAE3D67B,GAAE77B,MAIL67B,EAAEj0B,SAAU,IAChBi0B,EAAEmB,IAAM5C,GAAIlzB,KAAM62B,GAGjBA,EAASh/B,QAASq7B,GAAK,OAASpB,MAGhC+E,GAAa9E,GAAO/xB,KAAM62B,GAAa,IAAM,KAAQ,KAAO/E,OAK1D6C,EAAE6D,aACDpkC,EAAOwhC,aAAciB,IACzB5C,EAAM0D,iBAAkB,oBAAqBvjC,EAAOwhC,aAAciB,IAE9DziC,EAAOyhC,KAAMgB,IACjB5C,EAAM0D,iBAAkB,gBAAiBvjC,EAAOyhC,KAAMgB,MAKnDlC,EAAE77B,MAAQ67B,EAAE4D,YAAc5D,EAAEsB,eAAgB,GAAS/+B,EAAQ++B,cACjEhC,EAAM0D,iBAAkB,eAAgBhD,EAAEsB,aAI3ChC,EAAM0D,iBACL,SACAhD,EAAEZ,UAAW,IAAOY,EAAEuB,QAASvB,EAAEZ,UAAU,IAC1CY,EAAEuB,QAASvB,EAAEZ,UAAU,KAA8B,MAArBY,EAAEZ,UAAW,GAAc,KAAOL,GAAW,WAAa,IAC1FiB,EAAEuB,QAAS,KAIb,KAAMhgC,IAAKy+B,GAAE8D,QACZxE,EAAM0D,iBAAkBzhC,EAAGy+B,EAAE8D,QAASviC,GAIvC,IAAKy+B,EAAE+D,aAAgB/D,EAAE+D,WAAWrjC,KAAM8hC,EAAiBlD,EAAOU,MAAQ,GAAmB,IAAVxkB,GAElF,MAAO8jB,GAAM+D,OAIdP,GAAW,OAGX,KAAMvhC,KAAOiiC,QAAS,EAAGpgC,MAAO,EAAG60B,SAAU,GAC5CqH,EAAO/9B,GAAKy+B,EAAGz+B,GAOhB,IAHA+gC,EAAYjD,GAA+BP,GAAYkB,EAAGz9B,EAAS+8B,GAK5D,CACNA,EAAMrhB,WAAa,EAGdokB,GACJI,EAAmBhe,QAAS,YAAc6a,EAAOU,IAG7CA,EAAE9B,OAAS8B,EAAEnG,QAAU,IAC3BuI,EAAe3kB,WAAW,WACzB6hB,EAAM+D,MAAM,YACVrD,EAAEnG,SAGN,KACCre,EAAQ,EACR8mB,EAAU0B,KAAMpB,EAAgB17B,GAC/B,MAAQlD,GAET,KAAa,EAARwX,GAIJ,KAAMxX,EAHNkD,GAAM,GAAIlD,QArBZkD,GAAM,GAAI,eA8BX,SAASA,GAAMk8B,EAAQa,EAAkBhE,EAAW6D,GACnD,GAAIpD,GAAW8C,EAASpgC,EAAOq9B,EAAUyD,EACxCZ,EAAaW,CAGC,KAAVzoB,IAKLA,EAAQ,EAGH4mB,GACJtI,aAAcsI,GAKfE,EAAYx/B,OAGZq/B,EAAwB2B,GAAW,GAGnCxE,EAAMrhB,WAAamlB,EAAS,EAAI,EAAI,EAGpC1C,EAAY0C,GAAU,KAAgB,IAATA,GAA2B,MAAXA,EAGxCnD,IACJQ,EAAWV,GAAqBC,EAAGV,EAAOW,IAI3CQ,EAAWD,GAAaR,EAAGS,EAAUnB,EAAOoB,GAGvCA,GAGCV,EAAE6D,aACNK,EAAW5E,EAAMgB,kBAAkB,iBAC9B4D,IACJzkC,EAAOwhC,aAAciB,GAAagC,GAEnCA,EAAW5E,EAAMgB,kBAAkB,QAC9B4D,IACJzkC,EAAOyhC,KAAMgB,GAAagC,IAKZ,MAAXd,GAA6B,SAAXpD,EAAEx8B,KACxB8/B,EAAa,YAGS,MAAXF,EACXE,EAAa,eAIbA,EAAa7C,EAASjlB,MACtBgoB,EAAU/C,EAASt8B,KACnBf,EAAQq9B,EAASr9B,MACjBs9B,GAAat9B,KAKdA,EAAQkgC,GACHF,IAAWE,KACfA,EAAa,QACC,EAATF,IACJA,EAAS,KAMZ9D,EAAM8D,OAASA,EACf9D,EAAMgE,YAAeW,GAAoBX,GAAe,GAGnD5C,EACJ/kB,EAASqB,YAAawlB,GAAmBgB,EAASF,EAAYhE,IAE9D3jB,EAASoc,WAAYyK,GAAmBlD,EAAOgE,EAAYlgC,IAI5Dk8B,EAAMqD,WAAYA,GAClBA,EAAa7/B,OAERu/B,GACJI,EAAmBhe,QAASic,EAAY,cAAgB,aACrDpB,EAAOU,EAAGU,EAAY8C,EAAUpgC,IAIpCs/B,EAAiBtnB,SAAUonB,GAAmBlD,EAAOgE,IAEhDjB,IACJI,EAAmBhe,QAAS,gBAAkB6a,EAAOU,MAE3CvgC,EAAOuhC,QAChBvhC,EAAOue,MAAMyG,QAAQ,cAKxB,MAAO6a,IAGR6E,QAAS,SAAUhD,EAAKh9B,EAAMhD,GAC7B,MAAO1B,GAAOkB,IAAKwgC,EAAKh9B,EAAMhD,EAAU,SAGzCijC,UAAW,SAAUjD,EAAKhgC,GACzB,MAAO1B,GAAOkB,IAAKwgC,EAAKr+B,OAAW3B,EAAU,aAI/C1B,EAAOyB,MAAQ,MAAO,QAAU,SAAUK,EAAGkiC,GAC5ChkC,EAAQgkC,GAAW,SAAUtC,EAAKh9B,EAAMhD,EAAUqC,GAQjD,MANK/D,GAAOkD,WAAYwB,KACvBX,EAAOA,GAAQrC,EACfA,EAAWgD,EACXA,EAAOrB,QAGDrD,EAAOwiC,MACbd,IAAKA,EACL39B,KAAMigC,EACNtE,SAAU37B,EACVW,KAAMA,EACNq/B,QAASriC,OAMZ1B,EAAOouB,SAAW,SAAUsT,GAC3B,MAAO1hC,GAAOwiC,MACbd,IAAKA,EACL39B,KAAM,MACN27B,SAAU,SACVjB,OAAO,EACP9/B,QAAQ,EACRimC,UAAU,KAKZ5kC,EAAOG,GAAGsC,QACToiC,QAAS,SAAU/W,GAClB,GAAK9tB,EAAOkD,WAAY4qB,GACvB,MAAO3uB,MAAKsC,KAAK,SAASK,GACzB9B,EAAOb,MAAM0lC,QAAS/W,EAAK7sB,KAAK9B,KAAM2C,KAIxC,IAAK3C,KAAK,GAAK,CAEd,GAAIguB,GAAOntB,EAAQ8tB,EAAM3uB,KAAK,GAAGiM,eAAgBlJ,GAAG,GAAGa,OAAM,EAExD5D,MAAK,GAAGoM,YACZ4hB,EAAKO,aAAcvuB,KAAK,IAGzBguB,EAAKvrB,IAAI,WACR,GAAIC,GAAO1C,IAEX,OAAQ0C,EAAK6O,YAA2C,IAA7B7O,EAAK6O,WAAWpM,SAC1CzC,EAAOA,EAAK6O,UAGb,OAAO7O,KACL0rB,OAAQpuB,MAGZ,MAAOA,OAGR2lC,UAAW,SAAUhX,GACpB,MACQ3uB,MAAKsC,KADRzB,EAAOkD,WAAY4qB,GACN,SAAShsB,GACzB9B,EAAOb,MAAM2lC,UAAWhX,EAAK7sB,KAAK9B,KAAM2C,KAIzB,WAChB,GAAIwW,GAAOtY,EAAQb,MAClB4Z,EAAWT,EAAKS,UAEZA,GAAShY,OACbgY,EAAS8rB,QAAS/W,GAGlBxV,EAAKiV,OAAQO,MAKhBX,KAAM,SAAUW,GACf,GAAI5qB,GAAalD,EAAOkD,WAAY4qB,EAEpC,OAAO3uB,MAAKsC,KAAK,SAASK,GACzB9B,EAAQb,MAAO0lC,QAAS3hC,EAAa4qB,EAAK7sB,KAAK9B,KAAM2C,GAAKgsB,MAI5DiX,OAAQ,WACP,MAAO5lC,MAAK4O,SAAStM,KAAK,WACnBzB,EAAO+E,SAAU5F,KAAM,SAC5Ba,EAAQb,MAAO4uB,YAAa5uB,KAAKuL,cAEhCpI,SAKLtC,EAAOgQ,KAAK4E,QAAQke,OAAS,SAAUjxB,GAGtC,MAAOA,GAAKqd,aAAe,GAAKrd,EAAK8vB,cAAgB,IAClD7xB,EAAQuxB,yBACiE,UAAxExvB,EAAKkd,OAASld,EAAKkd,MAAM8P,SAAY7uB,EAAOyhB,IAAK5f,EAAM,aAG5D7B,EAAOgQ,KAAK4E,QAAQowB,QAAU,SAAUnjC,GACvC,OAAQ7B,EAAOgQ,KAAK4E,QAAQke,OAAQjxB,GAMrC,IAAIojC,IAAM,OACTC,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,oCAEhB,SAASC,IAAa9Q,EAAQ1wB,EAAKogC,EAAatqB,GAC/C,GAAI/W,EAEJ,IAAK7C,EAAOoD,QAASU,GAEpB9D,EAAOyB,KAAMqC,EAAK,SAAUhC,EAAGyjC,GACzBrB,GAAegB,GAASt5B,KAAM4oB,GAElC5a,EAAK4a,EAAQ+Q,GAIbD,GAAa9Q,EAAS,KAAqB,gBAAN+Q,GAAiBzjC,EAAI,IAAO,IAAKyjC,EAAGrB,EAAatqB,SAIlF,IAAMsqB,GAAsC,WAAvBlkC,EAAO+D,KAAMD,GAQxC8V,EAAK4a,EAAQ1wB,OANb,KAAMjB,IAAQiB,GACbwhC,GAAa9Q,EAAS,IAAM3xB,EAAO,IAAKiB,EAAKjB,GAAQqhC,EAAatqB,GAWrE5Z,EAAO+qB,MAAQ,SAAUhjB,EAAGm8B,GAC3B,GAAI1P,GACH+L,KACA3mB,EAAM,SAAUvV,EAAKY,GAEpBA,EAAQjF,EAAOkD,WAAY+B,GAAUA,IAAqB,MAATA,EAAgB,GAAKA,EACtEs7B,EAAGA,EAAEx/B,QAAWykC,mBAAoBnhC,GAAQ,IAAMmhC,mBAAoBvgC,GASxE,IALqB5B,SAAhB6gC,IACJA,EAAclkC,EAAOqgC,cAAgBrgC,EAAOqgC,aAAa6D,aAIrDlkC,EAAOoD,QAAS2E,IAASA,EAAElH,SAAWb,EAAOmD,cAAe4E,GAEhE/H,EAAOyB,KAAMsG,EAAG,WACf6R,EAAKza,KAAK0D,KAAM1D,KAAK8F,aAMtB,KAAMuvB,IAAUzsB,GACfu9B,GAAa9Q,EAAQzsB,EAAGysB,GAAU0P,EAAatqB,EAKjD,OAAO2mB,GAAEt0B,KAAM,KAAMxI,QAASwhC,GAAK,MAGpCjlC,EAAOG,GAAGsC,QACTgjC,UAAW,WACV,MAAOzlC,GAAO+qB,MAAO5rB,KAAKumC,mBAE3BA,eAAgB,WACf,MAAOvmC,MAAKyC,IAAI,WAEf,GAAIqO,GAAWjQ,EAAOumB,KAAMpnB,KAAM,WAClC,OAAO8Q,GAAWjQ,EAAOoF,UAAW6K,GAAa9Q,OAEjDwP,OAAO,WACP,GAAI5K,GAAO5E,KAAK4E,IAEhB,OAAO5E,MAAK0D,OAAS7C,EAAQb,MAAOoZ,GAAI,cACvC8sB,GAAaz5B,KAAMzM,KAAK4F,YAAeqgC,GAAgBx5B,KAAM7H,KAC3D5E,KAAKwU,UAAYoO,EAAenW,KAAM7H,MAEzCnC,IAAI,SAAUE,EAAGD,GACjB,GAAIsO,GAAMnQ,EAAQb,MAAOgR,KAEzB,OAAc,OAAPA,EACN,KACAnQ,EAAOoD,QAAS+M,GACfnQ,EAAO4B,IAAKuO,EAAK,SAAUA,GAC1B,OAAStN,KAAMhB,EAAKgB,KAAMoC,MAAOkL,EAAI1M,QAAS0hC,GAAO,YAEpDtiC,KAAMhB,EAAKgB,KAAMoC,MAAOkL,EAAI1M,QAAS0hC,GAAO,WAC9CjkC,SAOLlB,EAAOqgC,aAAasF,IAA+BtiC,SAAzBnE,EAAOs/B,cAEhC,WAGC,OAAQr/B,KAAKwiC,SAQZ,wCAAwC/1B,KAAMzM,KAAK4E,OAEnD6hC,MAAuBC,MAGzBD,EAED,IAAIE,IAAQ,EACXC,MACAC,GAAehmC,EAAOqgC,aAAasF,KAK/BzmC,GAAOkP,aACXlP,EAAOkP,YAAa,WAAY,WAC/B,IAAM,GAAI/J,KAAO0hC,IAChBA,GAAc1hC,GAAOhB,QAAW,KAMnCvD,EAAQmmC,OAASD,IAAkB,mBAAqBA,IACxDA,GAAelmC,EAAQ0iC,OAASwD,GAG3BA,IAEJhmC,EAAOuiC,cAAc,SAAUz/B,GAE9B,IAAMA,EAAQmhC,aAAenkC,EAAQmmC,KAAO,CAE3C,GAAIvkC,EAEJ,QACC6iC,KAAM,SAAUF,EAAS7L,GACxB,GAAI12B,GACH6jC,EAAM7iC,EAAQ6iC,MACdn6B,IAAOs6B,EAMR,IAHAH,EAAIxH,KAAMr7B,EAAQiB,KAAMjB,EAAQ4+B,IAAK5+B,EAAQ27B,MAAO37B,EAAQojC,SAAUpjC,EAAQ0R,UAGzE1R,EAAQqjC,UACZ,IAAMrkC,IAAKgB,GAAQqjC,UAClBR,EAAK7jC,GAAMgB,EAAQqjC,UAAWrkC,EAK3BgB,GAAQ89B,UAAY+E,EAAIlC,kBAC5BkC,EAAIlC,iBAAkB3gC,EAAQ89B,UAQzB99B,EAAQmhC,aAAgBI,EAAQ,sBACrCA,EAAQ,oBAAsB,iBAI/B,KAAMviC,IAAKuiC,GAOYhhC,SAAjBghC,EAASviC,IACb6jC,EAAIpC,iBAAkBzhC,EAAGuiC,EAASviC,GAAM,GAO1C6jC,GAAIpB,KAAQzhC,EAAQqhC,YAAcrhC,EAAQ4B,MAAU,MAGpDhD,EAAW,SAAUyI,EAAGi8B,GACvB,GAAIzC,GAAQE,EAAYrD,CAGxB,IAAK9+B,IAAc0kC,GAA8B,IAAnBT,EAAInnB,YAOjC,SALOunB,IAAcv6B,GACrB9J,EAAW2B,OACXsiC,EAAIU,mBAAqBrmC,EAAO6D,KAG3BuiC,EACoB,IAAnBT,EAAInnB,YACRmnB,EAAI/B,YAEC,CACNpD,KACAmD,EAASgC,EAAIhC,OAKoB,gBAArBgC,GAAIW,eACf9F,EAAUr7B,KAAOwgC,EAAIW,aAKtB,KACCzC,EAAa8B,EAAI9B,WAChB,MAAOt/B,GAERs/B,EAAa,GAQRF,IAAU7gC,EAAQ6+B,SAAY7+B,EAAQmhC,YAGrB,OAAXN,IACXA,EAAS,KAHTA,EAASnD,EAAUr7B,KAAO,IAAM,IAS9Bq7B,GACJhI,EAAUmL,EAAQE,EAAYrD,EAAWmF,EAAIrC,0BAIzCxgC,EAAQ27B,MAGiB,IAAnBkH,EAAInnB,WAGfR,WAAYtc,GAGZikC,EAAIU,mBAAqBN,GAAcv6B,GAAO9J,EAP9CA,KAWFkiC,MAAO,WACDliC,GACJA,EAAU2B,QAAW,OAS3B,SAASuiC,MACR,IACC,MAAO,IAAI1mC,GAAOqnC,eACjB,MAAOhiC,KAGV,QAASshC,MACR,IACC,MAAO,IAAI3mC,GAAOs/B,cAAe,qBAChC,MAAOj6B,KAOVvE,EAAOoiC,WACNN,SACC0E,OAAQ,6FAETztB,UACCytB,OAAQ,uBAET1F,YACC2F,cAAe,SAAUthC,GAExB,MADAnF,GAAOyE,WAAYU,GACZA,MAMVnF,EAAOsiC,cAAe,SAAU,SAAU/B,GACxBl9B,SAAZk9B,EAAEj0B,QACNi0B,EAAEj0B,OAAQ,GAENi0B,EAAE0D,cACN1D,EAAEx8B,KAAO,MACTw8B,EAAE5hC,QAAS,KAKbqB,EAAOuiC,cAAe,SAAU,SAAShC,GAGxC,GAAKA,EAAE0D,YAAc,CAEpB,GAAIuC,GACHE,EAAO3nC,EAAS2nC,MAAQ1mC,EAAO,QAAQ,IAAMjB,EAAS6O,eAEvD,QAEC22B,KAAM,SAAUp6B,EAAGzI,GAElB8kC,EAASznC,EAAS6N,cAAc,UAEhC45B,EAAO/H,OAAQ,EAEV8B,EAAEoG,gBACNH,EAAOI,QAAUrG,EAAEoG,eAGpBH,EAAO9jC,IAAM69B,EAAEmB,IAGf8E,EAAOK,OAASL,EAAOH,mBAAqB,SAAUl8B,EAAGi8B,IAEnDA,IAAYI,EAAOhoB,YAAc,kBAAkB5S,KAAM46B,EAAOhoB,eAGpEgoB,EAAOK,OAASL,EAAOH,mBAAqB,KAGvCG,EAAOj7B,YACXi7B,EAAOj7B,WAAWsB,YAAa25B,GAIhCA,EAAS,KAGHJ,GACL1kC,EAAU,IAAK,aAOlBglC,EAAKhZ,aAAc8Y,EAAQE,EAAKh2B,aAGjCkzB,MAAO,WACD4C,GACJA,EAAOK,OAAQxjC,QAAW,OAU/B,IAAIyjC,OACHC,GAAS,mBAGV/mC,GAAOoiC,WACN4E,MAAO,WACPC,cAAe,WACd,GAAIvlC,GAAWolC,GAAa5+B,OAAWlI,EAAOsD,QAAU,IAAQo6B,IAEhE,OADAv+B,MAAMuC,IAAa,EACZA,KAKT1B,EAAOsiC,cAAe,aAAc,SAAU/B,EAAG2G,EAAkBrH,GAElE,GAAIsH,GAAcC,EAAaC,EAC9BC,EAAW/G,EAAEyG,SAAU,IAAWD,GAAOn7B,KAAM20B,EAAEmB,KAChD,MACkB,gBAAXnB,GAAE77B,QAAwB67B,EAAEsB,aAAe,IAAKpiC,QAAQ,sCAAwCsnC,GAAOn7B,KAAM20B,EAAE77B,OAAU,OAIlI,OAAK4iC,IAAiC,UAArB/G,EAAEZ,UAAW,IAG7BwH,EAAe5G,EAAE0G,cAAgBjnC,EAAOkD,WAAYq9B,EAAE0G,eACrD1G,EAAE0G,gBACF1G,EAAE0G,cAGEK,EACJ/G,EAAG+G,GAAa/G,EAAG+G,GAAW7jC,QAASsjC,GAAQ,KAAOI,GAC3C5G,EAAEyG,SAAU,IACvBzG,EAAEmB,MAAS/D,GAAO/xB,KAAM20B,EAAEmB,KAAQ,IAAM,KAAQnB,EAAEyG,MAAQ,IAAMG,GAIjE5G,EAAEO,WAAW,eAAiB,WAI7B,MAHMuG,IACLrnC,EAAO2D,MAAOwjC,EAAe,mBAEvBE,EAAmB,IAI3B9G,EAAEZ,UAAW,GAAM,OAGnByH,EAAcloC,EAAQioC,GACtBjoC,EAAQioC,GAAiB,WACxBE,EAAoBrlC,WAIrB69B,EAAM5jB,OAAO,WAEZ/c,EAAQioC,GAAiBC,EAGpB7G,EAAG4G,KAEP5G,EAAE0G,cAAgBC,EAAiBD,cAGnCH,GAAatnC,KAAM2nC,IAIfE,GAAqBrnC,EAAOkD,WAAYkkC,IAC5CA,EAAaC,EAAmB,IAGjCA,EAAoBD,EAAc/jC,SAI5B,UAtDR,SAgEDrD,EAAO0Y,UAAY,SAAUhU,EAAMxE,EAASqnC,GAC3C,IAAM7iC,GAAwB,gBAATA,GACpB,MAAO,KAEgB,kBAAZxE,KACXqnC,EAAcrnC,EACdA,GAAU,GAEXA,EAAUA,GAAWnB,CAErB,IAAIyoC,GAAStvB,EAAW7M,KAAM3G,GAC7BuoB,GAAWsa,KAGZ,OAAKC,IACKtnC,EAAQ0M,cAAe46B,EAAO,MAGxCA,EAASxnC,EAAOgtB,eAAiBtoB,GAAQxE,EAAS+sB,GAE7CA,GAAWA,EAAQlsB,QACvBf,EAAQitB,GAAUzR,SAGZxb,EAAOuB,SAAWimC,EAAO98B,aAKjC,IAAI+8B,IAAQznC,EAAOG,GAAG6nB,IAKtBhoB,GAAOG,GAAG6nB,KAAO,SAAU0Z,EAAKgG,EAAQhmC,GACvC,GAAoB,gBAARggC,IAAoB+F,GAC/B,MAAOA,IAAM1lC,MAAO5C,KAAM6C,UAG3B,IAAI/B,GAAU+gC,EAAUj9B,EACvBuU,EAAOnZ,KACP+e,EAAMwjB,EAAIjiC,QAAQ,IA+CnB,OA7CKye,IAAO,IACXje,EAAWD,EAAO2E,KAAM+8B,EAAIpiC,MAAO4e,EAAKwjB,EAAI3gC,SAC5C2gC,EAAMA,EAAIpiC,MAAO,EAAG4e,IAIhBle,EAAOkD,WAAYwkC,IAGvBhmC,EAAWgmC,EACXA,EAASrkC,QAGEqkC,GAA4B,gBAAXA,KAC5B3jC,EAAO,QAIHuU,EAAKvX,OAAS,GAClBf,EAAOwiC,MACNd,IAAKA,EAGL39B,KAAMA,EACN27B,SAAU,OACVh7B,KAAMgjC,IACJjgC,KAAK,SAAU6+B,GAGjBtF,EAAWh/B,UAEXsW,EAAKwV,KAAM7tB,EAIVD,EAAO,SAASutB,OAAQvtB,EAAO0Y,UAAW4tB,IAAiB53B,KAAMzO,GAGjEqmC,KAEC9N,SAAU92B,GAAY,SAAUm+B,EAAO8D,GACzCrrB,EAAK7W,KAAMC,EAAUs/B,IAAcnB,EAAMyG,aAAc3C,EAAQ9D,MAI1D1gC,MAORa,EAAOyB,MAAQ,YAAa,WAAY,eAAgB,YAAa,cAAe,YAAc,SAAUK,EAAGiC,GAC9G/D,EAAOG,GAAI4D,GAAS,SAAU5D,GAC7B,MAAOhB,MAAKsqB,GAAI1lB,EAAM5D,MAOxBH,EAAOgQ,KAAK4E,QAAQ+yB,SAAW,SAAU9lC,GACxC,MAAO7B,GAAO2F,KAAK3F,EAAOq5B,OAAQ,SAAUl5B,GAC3C,MAAO0B,KAAS1B,EAAG0B,OACjBd,OAOJ,IAAImG,IAAUhI,EAAOH,SAAS6O,eAK9B,SAASg6B,IAAW/lC,GACnB,MAAO7B,GAAOiE,SAAUpC,GACvBA,EACkB,IAAlBA,EAAKyC,SACJzC,EAAKoM,aAAepM,EAAK4jB,cACzB,EAGHzlB,EAAO6nC,QACNC,UAAW,SAAUjmC,EAAMiB,EAAShB,GACnC,GAAIimC,GAAaC,EAASC,EAAWC,EAAQC,EAAWC,EAAYC,EACnElW,EAAWnyB,EAAOyhB,IAAK5f,EAAM,YAC7BymC,EAAUtoC,EAAQ6B,GAClBglB,IAGiB,YAAbsL,IACJtwB,EAAKkd,MAAMoT,SAAW,YAGvBgW,EAAYG,EAAQT,SACpBI,EAAYjoC,EAAOyhB,IAAK5f,EAAM,OAC9BumC,EAAapoC,EAAOyhB,IAAK5f,EAAM,QAC/BwmC,GAAmC,aAAblW,GAAwC,UAAbA,IAChDnyB,EAAOwF,QAAQ,QAAUyiC,EAAWG,IAAiB,GAGjDC,GACJN,EAAcO,EAAQnW,WACtB+V,EAASH,EAAY75B,IACrB85B,EAAUD,EAAY9X,OAEtBiY,EAAS/jC,WAAY8jC,IAAe,EACpCD,EAAU7jC,WAAYikC,IAAgB,GAGlCpoC,EAAOkD,WAAYJ,KACvBA,EAAUA,EAAQ7B,KAAMY,EAAMC,EAAGqmC,IAGd,MAAfrlC,EAAQoL,MACZ2Y,EAAM3Y,IAAQpL,EAAQoL,IAAMi6B,EAAUj6B,IAAQg6B,GAE1B,MAAhBplC,EAAQmtB,OACZpJ,EAAMoJ,KAASntB,EAAQmtB,KAAOkY,EAAUlY,KAAS+X,GAG7C,SAAWllC,GACfA,EAAQylC,MAAMtnC,KAAMY,EAAMglB,GAE1ByhB,EAAQ7mB,IAAKoF,KAKhB7mB,EAAOG,GAAGsC,QACTolC,OAAQ,SAAU/kC,GACjB,GAAKd,UAAUjB,OACd,MAAmBsC,UAAZP,EACN3D,KACAA,KAAKsC,KAAK,SAAUK,GACnB9B,EAAO6nC,OAAOC,UAAW3oC,KAAM2D,EAAShB,IAI3C,IAAIoF,GAASshC,EACZC,GAAQv6B,IAAK,EAAG+hB,KAAM,GACtBpuB,EAAO1C,KAAM,GACb6O,EAAMnM,GAAQA,EAAKuJ,aAEpB,IAAM4C,EAON,MAHA9G,GAAU8G,EAAIJ,gBAGR5N,EAAOsH,SAAUJ,EAASrF,UAMpBA,GAAK6mC,wBAA0B9pB,IAC1C6pB,EAAM5mC,EAAK6mC,yBAEZF,EAAMZ,GAAW55B,IAEhBE,IAAKu6B,EAAIv6B,KAASs6B,EAAIG,aAAezhC,EAAQ0gB,YAAiB1gB,EAAQ2gB,WAAc,GACpFoI,KAAMwY,EAAIxY,MAASuY,EAAII,aAAe1hC,EAAQsgB,aAAiBtgB,EAAQugB,YAAc,KAX9EghB,GAeTtW,SAAU,WACT,GAAMhzB,KAAM,GAAZ,CAIA,GAAI0pC,GAAchB,EACjBiB,GAAiB56B,IAAK,EAAG+hB,KAAM,GAC/BpuB,EAAO1C,KAAM,EAwBd,OArBwC,UAAnCa,EAAOyhB,IAAK5f,EAAM,YAEtBgmC,EAAShmC,EAAK6mC,yBAGdG,EAAe1pC,KAAK0pC,eAGpBhB,EAAS1oC,KAAK0oC,SACR7nC,EAAO+E,SAAU8jC,EAAc,GAAK,UACzCC,EAAeD,EAAahB,UAI7BiB,EAAa56B,KAAQlO,EAAOyhB,IAAKonB,EAAc,GAAK,kBAAkB,GACtEC,EAAa7Y,MAAQjwB,EAAOyhB,IAAKonB,EAAc,GAAK,mBAAmB,KAOvE36B,IAAM25B,EAAO35B,IAAO46B,EAAa56B,IAAMlO,EAAOyhB,IAAK5f,EAAM,aAAa,GACtEouB,KAAM4X,EAAO5X,KAAO6Y,EAAa7Y,KAAOjwB,EAAOyhB,IAAK5f,EAAM,cAAc,MAI1EgnC,aAAc,WACb,MAAO1pC,MAAKyC,IAAI,WACf,GAAIinC,GAAe1pC,KAAK0pC,cAAgB3hC,EAExC,OAAQ2hC,IAAmB7oC,EAAO+E,SAAU8jC,EAAc,SAAuD,WAA3C7oC,EAAOyhB,IAAKonB,EAAc,YAC/FA,EAAeA,EAAaA,YAE7B,OAAOA,IAAgB3hC,QAM1BlH,EAAOyB,MAAQ+lB,WAAY,cAAeI,UAAW,eAAiB,SAAUoc,EAAQzd,GACvF,GAAIrY,GAAM,IAAItC,KAAM2a,EAEpBvmB,GAAOG,GAAI6jC,GAAW,SAAU7zB,GAC/B,MAAOuR,GAAQviB,KAAM,SAAU0C,EAAMmiC,EAAQ7zB,GAC5C,GAAIq4B,GAAMZ,GAAW/lC,EAErB,OAAawB,UAAR8M,EACGq4B,EAAOjiB,IAAQiiB,GAAOA,EAAKjiB,GACjCiiB,EAAIzpC,SAAS6O,gBAAiBo2B,GAC9BniC,EAAMmiC,QAGHwE,EACJA,EAAIO,SACF76B,EAAYlO,EAAQwoC,GAAMhhB,aAApBrX,EACPjC,EAAMiC,EAAMnQ,EAAQwoC,GAAM5gB,aAI3B/lB,EAAMmiC,GAAW7zB,IAEhB6zB,EAAQ7zB,EAAKnO,UAAUjB,OAAQ,SAQpCf,EAAOyB,MAAQ,MAAO,QAAU,SAAUK,EAAGykB,GAC5CvmB,EAAOuzB,SAAUhN,GAAS+J,GAAcxwB,EAAQ0xB,cAC/C,SAAU3vB,EAAM+tB,GACf,MAAKA,IACJA,EAAWJ,GAAQ3tB,EAAM0kB,GAElB+I,GAAU1jB,KAAMgkB,GACtB5vB,EAAQ6B,GAAOswB,WAAY5L,GAAS,KACpCqJ,GALF,WAaH5vB,EAAOyB,MAAQunC,OAAQ,SAAUC,MAAO,SAAW,SAAUpmC,EAAMkB,GAClE/D,EAAOyB,MAAQ6yB,QAAS,QAAUzxB,EAAMmpB,QAASjoB,EAAM,GAAI,QAAUlB,GAAQ,SAAUqmC,EAAcC,GAEpGnpC,EAAOG,GAAIgpC,GAAa,SAAU9U,EAAQpvB,GACzC,GAAI0c,GAAY3f,UAAUjB,SAAYmoC,GAAkC,iBAAX7U,IAC5DnB,EAAQgW,IAAkB7U,KAAW,GAAQpvB,KAAU,EAAO,SAAW,SAE1E,OAAOyc,GAAQviB,KAAM,SAAU0C,EAAMkC,EAAMkB,GAC1C,GAAI+I,EAEJ,OAAKhO,GAAOiE,SAAUpC,GAIdA,EAAK9C,SAAS6O,gBAAiB,SAAW/K,GAI3B,IAAlBhB,EAAKyC,UACT0J,EAAMnM,EAAK+L,gBAIJrK,KAAKkC,IACX5D,EAAKkc,KAAM,SAAWlb,GAAQmL,EAAK,SAAWnL,GAC9ChB,EAAKkc,KAAM,SAAWlb,GAAQmL,EAAK,SAAWnL,GAC9CmL,EAAK,SAAWnL,KAIDQ,SAAV4B,EAENjF,EAAOyhB,IAAK5f,EAAMkC,EAAMmvB,GAGxBlzB,EAAO+e,MAAOld,EAAMkC,EAAMkB,EAAOiuB,IAChCnvB,EAAM4d,EAAY0S,EAAShxB,OAAWse,EAAW,WAOvD3hB,EAAOG,GAAGipC,KAAO,WAChB,MAAOjqC,MAAK4B,QAGbf,EAAOG,GAAGkpC,QAAUrpC,EAAOG,GAAG0Z,QAkBP,kBAAXyvB,SAAyBA,OAAOC,KAC3CD,OAAQ,YAAc,WACrB,MAAOtpC,IAOT,IAECwpC,IAAUtqC,EAAOc,OAGjBypC,GAAKvqC,EAAOwqC,CAwBb,OAtBA1pC,GAAO2pC,WAAa,SAAU1mC,GAS7B,MARK/D,GAAOwqC,IAAM1pC,IACjBd,EAAOwqC,EAAID,IAGPxmC,GAAQ/D,EAAOc,SAAWA,IAC9Bd,EAAOc,OAASwpC,IAGVxpC,SAMIZ,KAAawf,IACxB1f,EAAOc,OAASd,EAAOwqC,EAAI1pC,GAMrBA"} \ No newline at end of file From 0cc1d2c64f49c707b630b7ffbd471275f36a5e49 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Sun, 31 Jul 2016 05:46:13 -0400 Subject: [PATCH 010/314] Documenting standard labels. Closes #35. --- _episodes/07-maintenance.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/_episodes/07-maintenance.md b/_episodes/07-maintenance.md index aa6f3f00..bb572cfd 100644 --- a/_episodes/07-maintenance.md +++ b/_episodes/07-maintenance.md @@ -10,6 +10,7 @@ keypoints: - "Each lesson has one or two maintainers who act as editors." - "Maintainers are responsible for ensuring that issues and change requests are addressed." - "Maintainers have final say over lesson content." +- "We use a standard set of labels to classify issues and pull requests." --- This episode describes the processes used to maintain our lessons. @@ -57,3 +58,17 @@ will be named by the year and month they happen, e.g., `2016.05`. and adds an `index.html` page to it. 5. The release maintainer adds a submodule to the release directory of `swc-release` that points to the newly-created release branch of the lesson. + +## Issue Labels in Repositories + +Our repositories use the following labels (and colors) for issues and pull requests: + +* `bug` (#bd2c00): errors to be fixed. +* `discussion` (#fc8dc1): discussion threads. +* `enhancement` (#9cd6dc): new features. +* `help-wanted` (#f4fd9c): requests for assistance. +* `instructor-training` (#6e5494): pull requests submitted as part of instructor training. +* `newcomer-friendly` (#eec275): suitable for people who are still learning the ropes. +* `question` (#808040): often turn into discussion threads. +* `template-and-tools` (#2b3990): issues related to the templates and tools rather than the lessons themselves. +* `work-in-progress` (#7ae78): someone is still working on this. From 9f22422f13dc8ebdac93fe53dcec35080bbe621e Mon Sep 17 00:00:00 2001 From: Kate Hertweck Date: Fri, 5 Aug 2016 08:13:07 -0500 Subject: [PATCH 011/314] starting to outline structure --- _extras/guide.md | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/_extras/guide.md b/_extras/guide.md index 7e3bb719..1111c014 100644 --- a/_extras/guide.md +++ b/_extras/guide.md @@ -3,6 +3,15 @@ layout: page title: "Instructors' Guide" permalink: /guide/ --- -Discussion of the lesson aimed at instructors would normally go here, -but since this is just an example, -there isn't much to say. + +The instructor's guide should provide additional discussion useful to instructors, but not appropriate for inclusion in the main lessons. The following structure provides + +## Lesson motivation and learning objectives + +These concepts should be highlighted in the main lesson material, but ideas for explaining these concepts further can be placed here. + +## Technical tips and tricks + +Setting up your environment + +## Common problems From 7d965071a96b673381d19e37c180ebd606301fd9 Mon Sep 17 00:00:00 2001 From: Kate Hertweck Date: Fri, 5 Aug 2016 10:28:12 -0500 Subject: [PATCH 012/314] adding full structure with instructions --- _extras/guide.md | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/_extras/guide.md b/_extras/guide.md index 1111c014..d96c66f8 100644 --- a/_extras/guide.md +++ b/_extras/guide.md @@ -4,14 +4,37 @@ title: "Instructors' Guide" permalink: /guide/ --- -The instructor's guide should provide additional discussion useful to instructors, but not appropriate for inclusion in the main lessons. The following structure provides +The instructor's guide should provide additional discussion useful to instructors, +but not appropriate for inclusion in the main lessons. The following structure +provides a consistent way for instructors to both prepare for a workshop and +quickly find necessary information during a workshop. + +Please remember not to overload on details, and to keep the comments here positive! ## Lesson motivation and learning objectives -These concepts should be highlighted in the main lesson material, but ideas for explaining these concepts further can be placed here. +These concepts should be highlighted in the main lesson material, but ideas for +explaining these concepts further can be placed here. + +## Lesson design + +Most lessons contain more material than can be taught in a single workshop. +Describe a general narrative (with time estimates) for teaching either a half day +or full day with this lesson material. You may also choose to include multiple +options for lesson design, or what material can be skipped while teaching. +This section may also include recommendations for how this lesson fits into +the overall workshop. ## Technical tips and tricks -Setting up your environment +Provide information on setting up your environment for learners to view your +live coding (increasing text size, changing text color, etc), as well as +general recommendations for working with coding tools to best suit the +learning environment. ## Common problems + +This can include answers to common learner questions, as well as links to +resources (blog posts, stack overflow answers, etc) that may solve problems that +may occur during a workshop. + From dc38d9056455fff72fa5e128ffa66648bb7de407 Mon Sep 17 00:00:00 2001 From: Valentina Staneva Date: Sun, 7 Aug 2016 20:45:27 -0700 Subject: [PATCH 013/314] Adding a footnote to the schedule that it may vary. --- _includes/syllabus.html | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/_includes/syllabus.html b/_includes/syllabus.html index 67fa23f8..f87e2da6 100644 --- a/_includes/syllabus.html +++ b/_includes/syllabus.html @@ -3,7 +3,7 @@ Days are displayed if at least one episode has 'start = true'. {% endcomment %}
-

Schedule

+

Schedule 1

{% assign day = 0 %} {% assign multiday = false %} @@ -62,4 +62,8 @@

Schedule

+ +
+ 1. [The schedule is provisional and will vary depending on topics and exercises covered.] +
From 37f1a050529cf4cfe090f55cb90fdba96a2d9b12 Mon Sep 17 00:00:00 2001 From: Kate Hertweck Date: Wed, 10 Aug 2016 17:56:18 -0500 Subject: [PATCH 014/314] updating title of page from guide to notes --- _extras/guide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_extras/guide.md b/_extras/guide.md index 7e3bb719..b2f13781 100644 --- a/_extras/guide.md +++ b/_extras/guide.md @@ -1,6 +1,6 @@ --- layout: page -title: "Instructors' Guide" +title: "Instructor Notes" permalink: /guide/ --- Discussion of the lesson aimed at instructors would normally go here, From f9a2f8818c01f4c13cde8e658379f6b77b2107c4 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Tue, 16 Aug 2016 20:50:16 -0400 Subject: [PATCH 015/314] Putting navigation arrows at the foot of episode pages. 1. Renaming episode_title to episode_navbar since it now has dual use. 2. Removing hr elements that look odd with footer nav arrows. 3. Conditionalizing display of episode title. 4. Modifying layouts for breaks and episodes to include the footer nav arrows. --- _includes/{episode_title.html => episode_navbar.html} | 2 ++ _includes/lesson_footer.html | 1 - _includes/workshop_footer.html | 1 - _layouts/break.html | 3 ++- _layouts/episode.html | 3 ++- 5 files changed, 6 insertions(+), 4 deletions(-) rename _includes/{episode_title.html => episode_navbar.html} (96%) diff --git a/_includes/episode_title.html b/_includes/episode_navbar.html similarity index 96% rename from _includes/episode_title.html rename to _includes/episode_navbar.html index 7ea24a26..ae8ed1ac 100644 --- a/_includes/episode_title.html +++ b/_includes/episode_navbar.html @@ -29,8 +29,10 @@

+ {% if include.episode_navbar_title %}

{{ site.title }}

{{ page.title }}

+ {% endif %}

diff --git a/_includes/lesson_footer.html b/_includes/lesson_footer.html index 58d08fae..beef2cb3 100644 --- a/_includes/lesson_footer.html +++ b/_includes/lesson_footer.html @@ -1,4 +1,3 @@ -

@@ -20,7 +20,7 @@

/ Cite / - Contact + Contact

diff --git a/_includes/navbar.html b/_includes/navbar.html index 8d4f1dd2..6a4df8a7 100644 --- a/_includes/navbar.html +++ b/_includes/navbar.html @@ -18,7 +18,7 @@ {% elsif page.carpentry == "lc" %} - + {% elsif site.carpentry == "swc" %} @@ -30,7 +30,7 @@ {% elsif site.carpentry == "lc" %} - + {% endif %} diff --git a/bin/lesson_initialize.py b/bin/lesson_initialize.py index 247b425f..71f508e3 100755 --- a/bin/lesson_initialize.py +++ b/bin/lesson_initialize.py @@ -184,7 +184,7 @@ # Contact. This *must* include the protocol: if it's an email # address, it must look like "mailto:lessons@software-carpentry.org", # or if it's a URL, "https://gitter.im/username/ProjectName". -contact: mailto:lessons@software-carpentry.org +contact: "mailto:lessons@software-carpentry.org" #------------------------------------------------------------ # Generic settings (should not need to change). @@ -203,6 +203,7 @@ swc_github: "https://github.com/swcarpentry" swc_site: "https://software-carpentry.org" swc_pages: "https://swcarpentry.github.io" +lc_site: "http://datacarpentry.org" template_repo: "https://github.com/swcarpentry/styles" example_repo: "https://github.com/swcarpentry/lesson-example" example_site: "https://swcarpentry.github.com/lesson-example" From 2acc4f2234948d41ad6ea8513018f4745379bec1 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Sat, 8 Oct 2016 15:38:11 -0400 Subject: [PATCH 050/314] Updating lesson checker to include Library Carpentry values --- bin/lesson_check.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bin/lesson_check.py b/bin/lesson_check.py index 311687e9..a594f2f4 100755 --- a/bin/lesson_check.py +++ b/bin/lesson_check.py @@ -151,9 +151,9 @@ def check_config(reporter, source_dir): config_file = os.path.join(source_dir, '_config.yml') config = load_yaml(config_file) reporter.check_field(config_file, 'configuration', config, 'kind', 'lesson') - reporter.check_field(config_file, 'configuration', config, 'carpentry', ('swc', 'dc')) + reporter.check_field(config_file, 'configuration', config, 'carpentry', ('swc', 'dc', 'lc')) reporter.check_field(config_file, 'configuration', config, 'title') - reporter.check_field(config_file, 'configuration', config, 'email') + reporter.check_field(config_file, 'configuration', config, 'contact') reporter.check({'values': {'root': '..'}} in config.get('defaults', []), 'configuration', From 4b90bb3858df92704b653ae852cd9559da0fc2ec Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Tue, 18 Oct 2016 16:44:48 +0100 Subject: [PATCH 051/314] Add link to setup from schedule --- _includes/syllabus.html | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/_includes/syllabus.html b/_includes/syllabus.html index bd520ed1..dfa7d51e 100644 --- a/_includes/syllabus.html +++ b/_includes/syllabus.html @@ -13,6 +13,11 @@

Schedule

{% assign current = site.start_time %} + + + + + {% for episode in site.episodes %} {% if episode.start %} {% comment %} Starting a new day? {% endcomment %} {% assign day = day | plus: 1 %} From d2bfdbaa79d545cd411b1250950519906307f2be Mon Sep 17 00:00:00 2001 From: Bianca Peterson Date: Mon, 24 Oct 2016 20:19:44 +0200 Subject: [PATCH 052/314] Add reference to _episodes for lesson contribution Hi, I added a reference to the _episodes directory where the lesson material is located. As a novice (sort of) to github, it was quite difficult to figure out how to contribute. Hope this helps future contributors. --- CONTRIBUTING.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 9c853c62..77d0e3a0 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -102,7 +102,7 @@ you may want to look at [How to Contribute to an Open Source Project on GitHub][how-contribute]. In brief: -1. The published copy of the lesson is in the `gh-pages` branch of the repository +1. The published copy of the lesson is in the [episodes][episodes] directory in the `gh-pages` branch of the repository (so that GitHub will regenerate it automatically). Please create all branches from that, and merge the [master repository][repo]'s `gh-pages` branch into your `gh-pages` branch @@ -146,3 +146,4 @@ You can also [reach us by email][contact]. [swc-issues]: https://github.com/issues?q=user%3Aswcarpentry [swc-lessons]: http://software-carpentry.org/lessons/ [swc-site]: http://software-carpentry.org/ +[episodes]: _episodes From cfac06108b2721eba780f582c696c2cc5bae03d7 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Tue, 8 Nov 2016 17:23:11 -0500 Subject: [PATCH 053/314] Web site for Library Carpentry --- bin/lesson_initialize.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/lesson_initialize.py b/bin/lesson_initialize.py index bce8323c..b26bf287 100755 --- a/bin/lesson_initialize.py +++ b/bin/lesson_initialize.py @@ -203,7 +203,7 @@ swc_github: "https://github.com/swcarpentry" swc_site: "https://software-carpentry.org" swc_pages: "https://swcarpentry.github.io" -lc_site: "http://datacarpentry.org" +lc_site: "http://librarycarpentry.github.io/" template_repo: "https://github.com/swcarpentry/styles" example_repo: "https://github.com/swcarpentry/lesson-example" example_site: "https://swcarpentry.github.com/lesson-example" From 506e00766954cd9d0bfc7f7a664ffd48b414e407 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Thu, 24 Nov 2016 05:50:44 -0500 Subject: [PATCH 054/314] Fix #75: refer to 'next' instead of 'last' --- _episodes/02-tooling.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_episodes/02-tooling.md b/_episodes/02-tooling.md index d68986ad..e12e5ba3 100644 --- a/_episodes/02-tooling.md +++ b/_episodes/02-tooling.md @@ -162,7 +162,7 @@ putting the extra files in `_extras` allows us to populate the "Extras" menu pul To clarify what will appear where, we store files that appear directly in the navigation bar in the root directory of the lesson. -[The last episode]({{ page.root }}/03-organization/) describes these files. +[The next episode]({{ page.root }}/03-organization/) describes these files. [github-importer]: https://import.github.com/ [jekyll]: http://jekyllrb.com/ From 36d1844262b13801ee55374f6fd628671c084036 Mon Sep 17 00:00:00 2001 From: Francois Michonneau Date: Tue, 29 Nov 2016 17:45:38 -0500 Subject: [PATCH 055/314] add more information about pkgs needed to build the lesson fixes styles/#87 --- _episodes/06-rmarkdown-example.md | 60 +++++++++++++++++++------- _episodes_rmd/06-rmarkdown-example.Rmd | 40 +++++++++++++++-- 2 files changed, 80 insertions(+), 20 deletions(-) diff --git a/_episodes/06-rmarkdown-example.md b/_episodes/06-rmarkdown-example.md index 7be5e082..c0978a3f 100644 --- a/_episodes/06-rmarkdown-example.md +++ b/_episodes/06-rmarkdown-example.md @@ -10,15 +10,32 @@ objectives: keypoints: - "It shouldn't be difficult" --- + This episode demonstrates all the features that can be used when writing a lesson in RMarkdown. -This first chunk is really important, and should be included in all markdown lessons. +To generate the site, you will need to have the following packages installed: + + +```r +install.packages(c("knitr", "stringr", "checkpoint")) +``` + +If the lesson uses additional packages, the script that converts the Rmd files +into markdown, will detect them and install them for you, when you run `make +serve` or `make site`. + +This first chunk is really important, and need to be included at the beginning of +each episode written in RMarkdown. +~~~ +source("../bin/chunk-options.R") +~~~ +{: .r} The rest of the lesson should be written as a normal RMarkdown file. You can -include chunk for codes, just like you'd normally do: +include chunk for codes, just like you'd normally do. Normal output: @@ -55,19 +72,6 @@ Output generating figures: ~~~ library(ggplot2) -~~~ -{: .r} - - - -~~~ -Warning: package 'ggplot2' was built under R version 3.1.3 -~~~ -{: .error} - - - -~~~ ggplot(diamonds, aes(x = carat, y = price, color = cut)) + geom_point() ~~~ @@ -77,7 +81,31 @@ ggplot(diamonds, aes(x = carat, y = price, color = cut)) + For the challenges and their solutions, you need to pay attention to the where the `>` go and where to leave blank lines. Otherwise, you can include chunks in -it to include instructions and solutions. +it to include instructions and solutions. For instance this: + +``` +> ## Challenge: Can you do it? +> +> What is the output of this command? +> +> +> ~~~ +> paste("This", "new", "template", "looks", "good") +> ~~~ +> {: .r} +> +> > ## Solution +> > +> > +> > ~~~ +> > [1] "This new template looks good" +> > ~~~ +> > {: .output} +> {: .solution} +{: .challenge} +``` + +will generate this: > ## Challenge: Can you do it? > diff --git a/_episodes_rmd/06-rmarkdown-example.Rmd b/_episodes_rmd/06-rmarkdown-example.Rmd index 801896c3..3e1cfe5a 100644 --- a/_episodes_rmd/06-rmarkdown-example.Rmd +++ b/_episodes_rmd/06-rmarkdown-example.Rmd @@ -10,17 +10,29 @@ objectives: keypoints: - "It shouldn't be difficult" --- + This episode demonstrates all the features that can be used when writing a lesson in RMarkdown. -This first chunk is really important, and should be included in all markdown lessons. +To generate the site, you will need to have the following packages installed: + +```{r, eval=FALSE} +install.packages(c("knitr", "stringr", "checkpoint")) +``` + +If the lesson uses additional packages, the script that converts the Rmd files +into markdown, will detect them and install them for you, when you run `make +serve` or `make site`. + +This first chunk is really important, and need to be included at the beginning of +each episode written in RMarkdown. -```{r, echo=FALSE} +```{r, echo=TRUE} source("../bin/chunk-options.R") ``` The rest of the lesson should be written as a normal RMarkdown file. You can -include chunk for codes, just like you'd normally do: +include chunk for codes, just like you'd normally do. Normal output: @@ -44,7 +56,27 @@ ggplot(diamonds, aes(x = carat, y = price, color = cut)) + For the challenges and their solutions, you need to pay attention to the where the `>` go and where to leave blank lines. Otherwise, you can include chunks in -it to include instructions and solutions. +it to include instructions and solutions. For instance this: + +``` +> ## Challenge: Can you do it? +> +> What is the output of this command? +> +> ```{r, eval=FALSE} +> paste("This", "new", "template", "looks", "good") +> ``` +> +> > ## Solution +> > +> > ```{r, echo=FALSE} +> > paste("This", "new", "template", "looks", "good") +> > ``` +> {: .solution} +{: .challenge} +``` + +will generate this: > ## Challenge: Can you do it? > From 68c4fd3f4e7b00ce3ec6e07223720380227a8dc5 Mon Sep 17 00:00:00 2001 From: Francois Michonneau Date: Tue, 6 Dec 2016 12:04:16 -0500 Subject: [PATCH 056/314] [fix #82] fix typo in Rmd instructions --- _episodes_rmd/06-rmarkdown-example.Rmd | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_episodes_rmd/06-rmarkdown-example.Rmd b/_episodes_rmd/06-rmarkdown-example.Rmd index 3e1cfe5a..5d3f0f83 100644 --- a/_episodes_rmd/06-rmarkdown-example.Rmd +++ b/_episodes_rmd/06-rmarkdown-example.Rmd @@ -54,9 +54,9 @@ ggplot(diamonds, aes(x = carat, y = price, color = cut)) + geom_point() ``` -For the challenges and their solutions, you need to pay attention to the where -the `>` go and where to leave blank lines. Otherwise, you can include chunks in -it to include instructions and solutions. For instance this: +For the challenges and their solutions, you need to pay attention to where the +`>` go and where to leave blank lines. You can include code chunks in both the +instructions and solutions. For instance this: ``` > ## Challenge: Can you do it? From 51021348d2546d5423a3d6527ec1d6f2ffc4d89f Mon Sep 17 00:00:00 2001 From: Francois Michonneau Date: Tue, 6 Dec 2016 12:06:52 -0500 Subject: [PATCH 057/314] regenerate markdown from rmd --- _episodes/06-rmarkdown-example.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_episodes/06-rmarkdown-example.md b/_episodes/06-rmarkdown-example.md index c0978a3f..54fa7738 100644 --- a/_episodes/06-rmarkdown-example.md +++ b/_episodes/06-rmarkdown-example.md @@ -79,9 +79,9 @@ ggplot(diamonds, aes(x = carat, y = price, color = cut)) + plot of chunk plot-example -For the challenges and their solutions, you need to pay attention to the where -the `>` go and where to leave blank lines. Otherwise, you can include chunks in -it to include instructions and solutions. For instance this: +For the challenges and their solutions, you need to pay attention to where the +`>` go and where to leave blank lines. You can include code chunks in both the +instructions and solutions. For instance this: ``` > ## Challenge: Can you do it? From 43c4108df3e1c3100ecb6f999699b8da14fc8335 Mon Sep 17 00:00:00 2001 From: Maxim Belkin Date: Wed, 14 Dec 2016 11:08:17 -0600 Subject: [PATCH 058/314] lesson.scss: 2em left padding for lists Example of the problem: see "Ten Things You Need To Know" from http://swcarpentry.github.io/lesson-example/ For numbered lists that have more that 9 elements 1 em padding on the left is not sufficient. The result is that "1" in numbers "10" and above is printed on top of the border of encapsulating HTML block. 2 em padding solves this problem for lists with less that 100 elements. It should be safe to safe to assume that numbered lists in Carpentries' lessons should not have more than 99 items. --- assets/css/lesson.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/lesson.scss b/assets/css/lesson.scss index 752d7c96..bcc010d0 100644 --- a/assets/css/lesson.scss +++ b/assets/css/lesson.scss @@ -133,7 +133,7 @@ div.branding { ul, ol { - padding-left: 1em; + padding-left: 2em; } span.fold-unfold { From ad4c372d4f8d763c682b480cacd514d818baf965 Mon Sep 17 00:00:00 2001 From: Maxim Belkin Date: Wed, 14 Dec 2016 11:40:19 -0600 Subject: [PATCH 059/314] Visually separate inline code blocks Change text color, background color and padding around inline code blocks --- assets/css/lesson.scss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/assets/css/lesson.scss b/assets/css/lesson.scss index 752d7c96..e067c8bc 100644 --- a/assets/css/lesson.scss +++ b/assets/css/lesson.scss @@ -100,9 +100,9 @@ $codeblock-padding: 5px !default; //---------------------------------------- code { - padding: 0 0; - color: inherit; - background-color: inherit; + padding: 2px 5px; + color: #3d90d9; + background-color: #e7e7e7; } img { From 6d9bc074e7e301e7270b4499b0bbe99b128e80b2 Mon Sep 17 00:00:00 2001 From: "C. Titus Brown" Date: Fri, 30 Dec 2016 10:08:41 -0800 Subject: [PATCH 060/314] Show figure inline in setup.md --- setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.md b/setup.md index 92d1aac7..bfffaa26 100644 --- a/setup.md +++ b/setup.md @@ -67,7 +67,7 @@ lesson is `data-cleanup`. 6. At this point, you should have a page like this: - ![]({{ page.root }}/fig/using-github-import.png) + ![](./fig/using-github-import.png) You can now click "Begin Import". When the process is done, From 1836b9ad4f26ff025859214df88f21d5192d5230 Mon Sep 17 00:00:00 2001 From: "C. Titus Brown" Date: Fri, 30 Dec 2016 10:10:49 -0800 Subject: [PATCH 061/314] remove unneeded absolute link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 45e3c15e..2a2f3511 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,6 @@ In brief: [github-pages]: https://help.github.com/articles/creating-project-pages-manually/ [issues]: https://github.com/swcarpentry/lesson-example/issues [rendered]: https://swcarpentry.github.io/lesson-example/ -[setup]: https://github.com/swcarpentry/lesson-example/blob/gh-pages/setup.md +[setup]: ./setup.md [styles-issues]: https://github.com/swcarpentry/styles/issues/ [styles]: https://github.com/swcarpentry/styles/ From 8fb905e07bb97286dd1eaeb72c023268211ab6ed Mon Sep 17 00:00:00 2001 From: Ian Carroll Date: Fri, 30 Dec 2016 20:49:20 -0500 Subject: [PATCH 062/314] changes lesson-rmd target to lesson-md with new recipe --- Makefile | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/Makefile b/Makefile index 0f395a31..457de1ee 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,7 @@ DST=_site # Controls .PHONY : commands clean files +.NOTPARALLEL: all : commands ## commands : show all commands. @@ -16,11 +17,11 @@ commands : @grep -h -E '^##' ${MAKEFILES} | sed -e 's/## //g' ## serve : run a local server. -serve : lesson-rmd +serve : lesson-md ${JEKYLL} serve ## site : build files but do not run a server. -site : lesson-rmd +site : lesson-md ${JEKYLL} build # repo-check : check repository settings. @@ -53,7 +54,7 @@ workshop-check : ## ---------------------------------------- ## Commands specific to lesson websites. -.PHONY : lesson-check lesson-rmd lesson-files lesson-fixme +.PHONY : lesson-check lesson-md lesson-files lesson-fixme # RMarkdown files RMD_SRC = $(wildcard _episodes_rmd/??-*.Rmd) @@ -79,9 +80,12 @@ HTML_DST = \ $(patsubst _extras/%.md,${DST}/%/index.html,$(wildcard _extras/*.md)) \ ${DST}/license/index.html -## lesson-rmd : convert Rmarkdown files to markdown -lesson-rmd: $(RMD_SRC) - @bin/knit_lessons.sh $(RMD_SRC) +## lesson-md : convert Rmarkdown files to markdown +lesson-md : ${RMD_DST} + +# Use of .NOTPARALLEL makes rule execute only once +${RMD_DST} : ${RMD_SRC} + @bin/knit_lessons.sh ${RMD_SRC} ## lesson-check : validate lesson Markdown. lesson-check : From 969d3caf0b65faccd1f33c59dc6abf3f45b0922c Mon Sep 17 00:00:00 2001 From: Gerard Capes Date: Tue, 3 Jan 2017 14:23:38 +0000 Subject: [PATCH 063/314] Change target of setup link from .md to site page The link worked fine, but directing people to the setup.md file instead of the rendered page means that other links don't work - such as item 12 in the setup page: https://github.com/swcarpentry/lesson-example/blob/gh-pages/setup.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2a2f3511..14dea7f2 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,6 @@ In brief: [github-pages]: https://help.github.com/articles/creating-project-pages-manually/ [issues]: https://github.com/swcarpentry/lesson-example/issues [rendered]: https://swcarpentry.github.io/lesson-example/ -[setup]: ./setup.md +[setup]: https://swcarpentry.github.io/lesson-example/setup/ [styles-issues]: https://github.com/swcarpentry/styles/issues/ [styles]: https://github.com/swcarpentry/styles/ From b3d285007e57d4f5e4deb9d7bbb44a181f3b8fd3 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Sun, 8 Jan 2017 09:36:17 -0500 Subject: [PATCH 064/314] Moving links for all Jekyll-generated pages to `_includes/links.md`. 1. Create file `_includes/links.md` with definitions of all links. 2. Replace links at the bottom of Jekyll'd `.md` files with inclusion of that file. 3. Modify `bin/lesson_check.py` to load and check definitions in this file. This eliminates most redundancy in link definitions, though `CONTRIBUTING.md` and `README.md` still contain their own links, since they are not Jekyll'd. Note that we *cannot* put the links into `_layouts/*.html` (or even `_layouts/something.md`) because of the order in which Jekyll expands things - we have to explicitly include it in each page. --- CONDUCT.md | 2 +- LICENSE.md | 7 +--- Makefile | 2 +- _episodes/01-design.md | 5 +-- _episodes/02-tooling.md | 10 +---- _episodes/03-organization.md | 4 +- _episodes/04-formatting.md | 4 +- _episodes/05-checking.md | 2 +- _episodes/07-maintenance.md | 2 + _episodes/08-coffee.md | 2 + _extras/discuss.md | 4 +- _includes/links.md | 33 ++++++++++++++++ bin/lesson_check.py | 76 +++++++++++++++++++++++++++++++----- index.md | 3 +- setup.md | 15 +------ 15 files changed, 116 insertions(+), 55 deletions(-) create mode 100644 _includes/links.md diff --git a/CONDUCT.md b/CONDUCT.md index e83b08fa..29256f03 100644 --- a/CONDUCT.md +++ b/CONDUCT.md @@ -41,4 +41,4 @@ may be reported by opening an issue or contacting one or more of the project mai This Code of Conduct is adapted from the [Contributor Covenant][contrib-covenant] Version 1.0.0. -[contrib-covenant]: http://contributor-covenant.org/ +{% include links.md %} diff --git a/LICENSE.md b/LICENSE.md index 566ce553..59961069 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -76,8 +76,5 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. "Software Carpentry" an "Data Carpentry" and their respective logos are registered trademarks of [NumFOCUS][numfocus]. -[cc-by-human]: https://creativecommons.org/licenses/by/4.0/ -[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode -[mit-license]: http://opensource.org/licenses/mit-license.html -[numfocus]: http://numfocus.org/ -[osi]: http://opensource.org +{% include links.md %} + diff --git a/Makefile b/Makefile index 0f395a31..27b1dec6 100644 --- a/Makefile +++ b/Makefile @@ -85,7 +85,7 @@ lesson-rmd: $(RMD_SRC) ## lesson-check : validate lesson Markdown. lesson-check : - @bin/lesson_check.py -s . -p ${PARSER} + @bin/lesson_check.py -s . -p ${PARSER} -r _includes/links.md ## lesson-check-all : validate lesson Markdown, checking line lengths and trailing whitespace. lesson-check-all : diff --git a/_episodes/01-design.md b/_episodes/01-design.md index e618f7b7..75c63008 100644 --- a/_episodes/01-design.md +++ b/_episodes/01-design.md @@ -9,7 +9,6 @@ objectives: - "Describe the purpose and implementation of formative assessments." keypoints: - "Lessons are design in four stages: conceptual, summative, formative, and connective." -training: http://swcarpentry.github.io/instructor-training --- This episode describes how we go about designing lessons and why. @@ -113,6 +112,4 @@ it takes too long, there are usually too many possible right solutions to discuss in just a couple of minutes, and many novices find a blank page (or screen) intimidating. -[concept-maps]: {{ page.training }}/08-memory/ -[python-gapminder]: https://swcarpentry.github.io/python-novice-gapminder/ -[training]: {{ page.training }}/ +{% include links.md %} diff --git a/_episodes/02-tooling.md b/_episodes/02-tooling.md index e12e5ba3..d560cd0b 100644 --- a/_episodes/02-tooling.md +++ b/_episodes/02-tooling.md @@ -164,12 +164,4 @@ we store files that appear directly in the navigation bar in the root directory of the lesson. [The next episode]({{ page.root }}/03-organization/) describes these files. -[github-importer]: https://import.github.com/ -[jekyll]: http://jekyllrb.com/ -[jekyll-collection]: https://jekyllrb.com/docs/collections/ -[jekyll-install]: https://jekyllrb.com/docs/installation/ -[jupyter]: https://jupyter.org/ -[pandoc]: https://pandoc.org/ -[r-markdown]: http://rmarkdown.rstudio.com/ -[rstudio]: https://www.rstudio.com/ -[yaml]: http://yaml.org/ +{% include links.md %} diff --git a/_episodes/03-organization.md b/_episodes/03-organization.md index aeef80d8..81175a52 100644 --- a/_episodes/03-organization.md +++ b/_episodes/03-organization.md @@ -187,6 +187,4 @@ The instructors' guide for the lesson. This page records tips and warnings from people who have taught the lesson. -[jekyll]: http://jekyllrb.com/ -[jekyll-collection]: https://jekyllrb.com/docs/collections/ -[yaml]: http://yaml.org/ +{% include links.md %} diff --git a/_episodes/04-formatting.md b/_episodes/04-formatting.md index 42b93b03..4f0c2cbb 100644 --- a/_episodes/04-formatting.md +++ b/_episodes/04-formatting.md @@ -303,6 +303,4 @@ but the alternatives we considered and discarded are worse: but clutters up the page and makes it harder for tools to tell which solutions belong to which exercises. -[jekyll]: http://jekyllrb.com/ -[jekyll-collection]: https://jekyllrb.com/docs/collections/ -[yaml]: http://yaml.org/ +{% include links.md %} diff --git a/_episodes/05-checking.md b/_episodes/05-checking.md index 2fd131c9..da16f298 100644 --- a/_episodes/05-checking.md +++ b/_episodes/05-checking.md @@ -61,4 +61,4 @@ to regenerate `includes/all_figures.html`, which links to every figure used in the episodes (in order). Instructors can scroll through this page to display figures while teaching. -[jekyll]: http://jekyllrb.com/ +{% include links.md %} diff --git a/_episodes/07-maintenance.md b/_episodes/07-maintenance.md index bb572cfd..ba368e45 100644 --- a/_episodes/07-maintenance.md +++ b/_episodes/07-maintenance.md @@ -72,3 +72,5 @@ Our repositories use the following labels (and colors) for issues and pull reque * `question` (#808040): often turn into discussion threads. * `template-and-tools` (#2b3990): issues related to the templates and tools rather than the lessons themselves. * `work-in-progress` (#7ae78): someone is still working on this. + +{% include links.md %} diff --git a/_episodes/08-coffee.md b/_episodes/08-coffee.md index 21ed662a..3129b250 100644 --- a/_episodes/08-coffee.md +++ b/_episodes/08-coffee.md @@ -7,3 +7,5 @@ break: 15 Use the `break` layout for placeholder episodes representing coffee breaks and lunches. These episodes do *not* have exercises, questions, objectives, or keypoints in their metadata, but *must* have a "break" field to show how long the break is (in minutes). + +{% include links.md %} diff --git a/_extras/discuss.md b/_extras/discuss.md index 118633f7..239e8156 100644 --- a/_extras/discuss.md +++ b/_extras/discuss.md @@ -9,6 +9,4 @@ Readers may be interested in: * The [Morea Framework][morea], a more elaborate template for [Jekyll][jekyll]-based lessons. -[jekyll]: http://jekyllrb.com/ -[morea]: https://morea-framework.github.io/ -[paper-now]: https://github.com/PeerJ/paper-now +{% include links.md %} diff --git a/_includes/links.md b/_includes/links.md new file mode 100644 index 00000000..7a2fd433 --- /dev/null +++ b/_includes/links.md @@ -0,0 +1,33 @@ +[cc-by-human]: https://creativecommons.org/licenses/by/4.0/ +[cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode +[concept-maps]: http://swcarpentry.github.io/instructor-training/08-memory/ +[contact]: mailto:lessons@software-carpentry.org +[contrib-covenant]: http://contributor-covenant.org/ +[contributing]: {{ site.github.repository_url }}/blob/gh-pages/CONTRIBUTING.md +[cran-checkpoint]: https://cran.r-project.org/web/packages/checkpoint/index.html +[cran-knitr]: https://cran.r-project.org/web/packages/knitr/index.html +[cran-stringr]: https://cran.r-project.org/web/packages/stringr/index.html +[github-importer]: https://import.github.com/ +[importer]: http://import.github.com/new +[jekyll-collection]: https://jekyllrb.com/docs/collections/ +[jekyll-install]: https://jekyllrb.com/docs/installation/ +[jekyll-windows]: http://jekyll-windows.juthilo.com/ +[jekyll]: https://jekyllrb.com/ +[jupyter]: https://jupyter.org/ +[mit-license]: http://opensource.org/licenses/mit-license.html +[morea]: https://morea-framework.github.io/ +[numfocus]: http://numfocus.org/ +[osi]: http://opensource.org +[pandoc]: https://pandoc.org/ +[paper-now]: https://github.com/PeerJ/paper-now +[python-gapminder]: https://swcarpentry.github.io/python-novice-gapminder/ +[pyyaml]: https://pypi.python.org/pypi/PyYAML +[r-markdown]: http://rmarkdown.rstudio.com/ +[rstudio]: https://www.rstudio.com/ +[ruby-install-guide]: https://www.ruby-lang.org/en/downloads/ +[ruby-installer]: http://rubyinstaller.org/ +[rubygems]: https://rubygems.org/pages/download/ +[styles]: https://github.com/swcarpentry/styles/ +[training]: http://swcarpentry.github.io/instructor-training/ +[workshop-repo]: {{ site.workshop_repo }} +[yaml]: http://yaml.org/ diff --git a/bin/lesson_check.py b/bin/lesson_check.py index 311687e9..608e4f1b 100755 --- a/bin/lesson_check.py +++ b/bin/lesson_check.py @@ -14,7 +14,7 @@ from util import Reporter, read_markdown, load_yaml, check_unwanted_files, require, IMAGE_FILE_SUFFIX -__version__ = '0.2' +__version__ = '0.3' # Where to look for source Markdown files. SOURCE_DIRS = ['', '_episodes', '_extras'] @@ -48,7 +48,10 @@ P_FIGURE_REFS = re.compile(r']+src="([^"]+)"[^>]*>') # Pattern to match internally-defined Markdown links. -P_INTERNALLY_DEFINED_LINK = re.compile(r'\[[^\]]+\]\[[^\]]+\]') +P_INTERNAL_LINK_REF = re.compile(r'\[([^\]]+)\]\[([^\]]+)\]') + +# Pattern to match reference links (to resolve internally-defined references). +P_INTERNAL_LINK_DEF = re.compile(r'^\[([^\]]+)\]:.*') # What kinds of blockquotes are allowed? KNOWN_BLOCKQUOTES = { @@ -103,6 +106,8 @@ def main(): args = parse_args() args.reporter = Reporter() check_config(args.reporter, args.source_dir) + args.references = read_references(args.reference_path) + docs = read_all_markdown(args.source_dir, args.parser) check_fileset(args.source_dir, args.reporter, docs.keys()) check_unwanted_files(args.source_dir, args.reporter) @@ -110,6 +115,7 @@ def main(): checker = create_checker(args, filename, docs[filename]) checker.check() check_figures(args.source_dir, args.reporter) + args.reporter.report() @@ -126,6 +132,10 @@ def parse_args(): default=None, dest='parser', help='path to Markdown parser') + parser.add_option('-r', '--references', + default=None, + dest='reference_path', + help='path to Markdown file of external references') parser.add_option('-s', '--source', default=os.curdir, dest='source_dir', @@ -160,6 +170,25 @@ def check_config(reporter, source_dir): '"root" not set to ".." in configuration') +def read_references(ref_path): + """Read shared file of reference links, returning set of valid references.""" + + result = set() + if ref_path: + with open(ref_path, 'r') as reader: + for (num, line) in enumerate(reader): + m = P_INTERNAL_LINK_DEF.search(line) + require(m, + '{0}:{1} not valid reference:\n{2}'.format(ref_path, num, line.rstrip())) + ref = m.group(1) + require(ref, + 'Empty reference at {0}:{1}'.format(ref_path, num)) + require(ref not in result, + 'Duplicate reference {0} at {1}:{2}'.format(ref, ref_path, num)) + result.add(ref) + return result + + def read_all_markdown(source_dir, parser): """Read source files, returning {path : {'metadata':yaml, 'metadata_len':N, 'text':text, 'lines':[(i, line, len)], 'doc':doc}} @@ -274,7 +303,7 @@ def __init__(self, args, filename, metadata, metadata_len, text, lines, doc): def check(self): - """Run tests on metadata.""" + """Run tests.""" self.check_metadata() self.check_line_lengths() @@ -342,17 +371,16 @@ def check_codeblock_classes(self): def check_defined_link_references(self): """Check that defined links resolve in the file. - Internally-defined links match the pattern [text][label]. If - the label contains '{{...}}', it is hopefully a references to - a configuration value - we should check that, but don't right - now. + Internally-defined links match the pattern [text][label]. """ result = set() for node in self.find_all(self.doc, {'type' : 'text'}): - for match in P_INTERNALLY_DEFINED_LINK.findall(node['value']): - if '{{' not in match: - result.add(match) + for match in P_INTERNAL_LINK_REF.findall(node['value']): + text = match[0] + link = match[1] + if link not in self.args.references: + result.add('"{0}"=>"{1}"'.format(text, link)) self.reporter.check(not result, self.filename, 'Internally-defined links may be missing definitions: {0}', @@ -441,6 +469,14 @@ class CheckEpisode(CheckBase): def __init__(self, args, filename, metadata, metadata_len, text, lines, doc): super(CheckEpisode, self).__init__(args, filename, metadata, metadata_len, text, lines, doc) + + def check(self): + """Run extra tests.""" + + super(CheckEpisode, self).check() + self.check_reference_inclusion() + + def check_metadata(self): super(CheckEpisode, self).check_metadata() if self.metadata: @@ -467,6 +503,26 @@ def check_metadata_fields(self, expected): name, type(self.metadata[name]), type_) + def check_reference_inclusion(self): + """Check that links file has been included.""" + + if not self.args.reference_path: + return + + for (i, last_line, line_len) in reversed(self.lines): + if last_line: + break + + require(last_line, + 'No non-empty lines in {0}'.format(self.filename)) + + include_filename = os.path.split(self.args.reference_path)[-1] + if include_filename not in last_line: + self.reporter.add(self.filename, + 'episode does not include "{0}"', + include_filename) + + class CheckReference(CheckBase): """Check the reference page.""" diff --git a/index.md b/index.md index d8998030..3481b4d2 100644 --- a/index.md +++ b/index.md @@ -31,5 +31,4 @@ please see [the setup instructions]({{ page.root }}/setup/). > and enhancements to this documentation in this one. {: .checklist} -[contributing]: {{ site.github.repository_url }}/blob/gh-pages/CONTRIBUTING.md -[styles]: https://github.com/swcarpentry/styles/ +{% include links.md %} diff --git a/setup.md b/setup.md index bfffaa26..add1ccda 100644 --- a/setup.md +++ b/setup.md @@ -8,7 +8,7 @@ permalink: /setup/ 1. Installation instructions for core lessons are included in the [workshop template's home page][template], so that they are all in one place. The `setup.md` files of core lessons link to - the appropriate sections of the [workshop template page][{{ site.workshop_repo }}]. + the appropriate sections of the [workshop template page][workshop-repo]. 2. Other lessons' `setup.md` include full installation instructions organized by OS (following the model of the workshop template home page). @@ -161,15 +161,4 @@ lesson is `data-cleanup`. if the problem persists, please [get in touch][contact]. -[cran-checkpoint]: https://cran.r-project.org/web/packages/checkpoint/index.html -[contact]: mailto:lessons@software-carpentry.org -[importer]: http://import.github.com/new -[jekyll-windows]: http://jekyll-windows.juthilo.com/ -[jekyll]: https://jekyllrb.com/ -[cran-knitr]: https://cran.r-project.org/web/packages/knitr/index.html -[pyyaml]: https://pypi.python.org/pypi/PyYAML -[ruby-install-guide]: https://www.ruby-lang.org/en/downloads/ -[ruby-installer]: http://rubyinstaller.org/ -[rubygems]: https://rubygems.org/pages/download/ -[cran-stringr]: https://cran.r-project.org/web/packages/stringr/index.html -[styles]: https://github.com/swcarpentry/styles/ +{% include links.md %} From 6cecfeb0b939ce200f390f9d16f6a6dc047ca5cc Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Sun, 8 Jan 2017 09:42:22 -0500 Subject: [PATCH 065/314] Fixing layout of descriptions of standard pages --- _episodes/03-organization.md | 191 +++++++++++++++-------------------- 1 file changed, 84 insertions(+), 107 deletions(-) diff --git a/_episodes/03-organization.md b/_episodes/03-organization.md index aeef80d8..9da750db 100644 --- a/_episodes/03-organization.md +++ b/_episodes/03-organization.md @@ -78,114 +78,91 @@ which should *not* be modified: ## Starter Files -The `bin/lesson_initialize.py` script creates files that need to be customized for each lesson. - -### `CONTRIBUTING.md` - -Contribution guidelines. -The `issues` and `repo` links at the bottom of the file must be changed -to match the URLs of the lesson: -look for uses of `FIXME`. - -### `_config.yml` - -The [Jekyll][jekyll] configuration file. -This must be edited so that its links and other settings are correct for this lesson. - -* `carpentry` should be either "dc" (for Data Carpentry) or "swc" (for Software Carpentry). - -* `title` is the title of your lesson, +The `bin/lesson_initialize.py` script creates files that need to be customized for each lesson: + +`CONTRIBUTING.md` +: Contribution guidelines. + The `issues` and `repo` links at the bottom of the file must be changed + to match the URLs of the lesson: + look for uses of `FIXME`. + +`_config.yml` +: The [Jekyll][jekyll] configuration file. + This must be edited so that its links and other settings are correct for this lesson. + * `carpentry` should be either "dc" (for Data Carpentry) or "swc" (for Software Carpentry). + * `title` is the title of your lesson, + e.g., + "Defence Against the Dark Arts". + * `email` is the contact email address for the lesson. + +`CITATION` +: A plain text file explaining how to cite this lesson. + +`AUTHORS` +: A plain text file listing the names of the lesson's authors. + +`index.md` +: The home page for the lesson. + 1. It must use the `lesson` layout. + 2. It must *not* have a `title` field in its [YAML][yaml] header. + 3. It must open with a few paragraphs of explanatory text. + 4. That introduction must be followed by a single `.prereq` blockquote + detailing the lesson's prerequisites. + (Setup instructions appear separately.) + 5. That must be followed by inclusion of `syllabus.html`, + which generates the syllabus for the lesson + from the metadata in its episodes. + +`reference.md` +: A reference guide for the lesson. + The template will automatically generate a summary of the episodes' key points. + 1. It must use the `reference` layout. + 2. Its title must be `"Reference"`. + 3. Its permalink must be `/reference/`. + 4. It should include a glossary, laid out as a description list. + 5. It may include other material as appropriate. + +`setup.md` +: Detailed setup instructions for the lesson. + Note that we usually divide setup instructions by platform, e.g., - "Defence Against the Dark Arts". - -* `email` is the contact email address for the lesson. - -### `CITATION` - -A plain text file explaining how to cite this lesson. - -### `AUTHORS` - -A plain text file listing the names of the lesson's authors. - -### `index.md` - -The home page for the lesson. - -1. It must use the `lesson` layout. -2. It must *not* have a `title` field in its [YAML][yaml] header. -3. It must open with a few paragraphs of explanatory text. -4. That introduction must be followed by a single `.prereq` blockquote - detailing the lesson's prerequisites. - (Setup instructions appear separately.) -5. That must be followed by inclusion of `syllabus.html`, - which generates the syllabus for the lesson - from the metadata in its episodes. - -### `reference.md` - -A reference guide for the lesson. - -1. It must use the `reference` layout. -2. Its title must be `"Reference"`. -3. Its permalink must be `/reference/`. -4. It should include a glossary, laid out as a description list. -5. It may include other material as appropriate. - -The template will automatically generate a summary of the episodes' key points. - -### `setup.md` - -Detailed setup instructions for the lesson. - -1. It must use the `page` layout. -2. Its title must be `"Setup"`. -3. Its permalink must be `/setup/`. -4. It should include whatever setup instructions are required. - -Note that we usually divide setup instructions by platform, -e.g., -include level-2 headings for Windows, Mac OS X, and Linux -with instructions for each. -The [workshop template]({{ site.workshop_repo }}) -links to the setup instructions for core lessons. - -### `_extras/about.md` - -General notes about this lesson. -This page includes brief descriptions of Software Carpentry and Data Carpentry, -and is a good place to put institutional acknowledgments. - -### `_extras/discussion.md` - -General discussion of the lesson contents for learners who wish to know more: - -1. It must use the `page` layout. -2. Its title must be `"Discussion"`. -3. Its permalink must be `/discuss/`. -4. It may include whatever content the author thinks appropriate. - -This page normally includes links to further reading -and/or brief discussion of more advanced topics. - -### `_extra/figures.md` and `_includes/all_figures.html` - -Does nothing but include `_includes/all_figures.html`, -which is (re)generated by `make lesson-figures`. -This page displays all the images referenced by all of the episodes, -in order, -so that instructors can scroll through them while teaching. - -### `_extras/guide.md` - -The instructors' guide for the lesson. - -1. It must use the `page` layout. -2. Its title must be `"Instructors' Guide"`. -3. Its permalink must be `/guide/`. -4. It may include whatever content the author thinks appropriate. - -This page records tips and warnings from people who have taught the lesson. + include level-2 headings for Windows, Mac OS X, and Linux + with instructions for each. + The [workshop template]({{ site.workshop_repo }}) + links to the setup instructions for core lessons. + 1. It must use the `page` layout. + 2. Its title must be `"Setup"`. + 3. Its permalink must be `/setup/`. + 4. It should include whatever setup instructions are required. + +`_extras/about.md` +: General notes about this lesson. + This page includes brief descriptions of Software Carpentry and Data Carpentry, + and is a good place to put institutional acknowledgments. + +`_extras/discussion.md` +: General discussion of the lesson contents for learners who wish to know more: + This page normally includes links to further reading + and/or brief discussion of more advanced topics. + 1. It must use the `page` layout. + 2. Its title must be `"Discussion"`. + 3. Its permalink must be `/discuss/`. + 4. It may include whatever content the author thinks appropriate. + +`_extra/figures.md` and `_includes/all_figures.html` +: Does nothing but include `_includes/all_figures.html`, + which is (re)generated by `make lesson-figures`. + This page displays all the images referenced by all of the episodes, + in order, + so that instructors can scroll through them while teaching. + +`_extras/guide.md` +: The instructors' guide for the lesson. + This page records tips and warnings from people who have taught the lesson. + 1. It must use the `page` layout. + 2. Its title must be `"Instructors' Guide"`. + 3. Its permalink must be `/guide/`. + 4. It may include whatever content the author thinks appropriate. [jekyll]: http://jekyllrb.com/ [jekyll-collection]: https://jekyllrb.com/docs/collections/ From 7842b71abf968c148bc8a36ff59782c0e2c148be Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Sun, 8 Jan 2017 09:56:48 -0500 Subject: [PATCH 066/314] Adding inclusion of links.md to another episode file --- _episodes/06-rmarkdown-example.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/_episodes/06-rmarkdown-example.md b/_episodes/06-rmarkdown-example.md index 7be5e082..88314987 100644 --- a/_episodes/06-rmarkdown-example.md +++ b/_episodes/06-rmarkdown-example.md @@ -98,3 +98,5 @@ it to include instructions and solutions. > > {: .output} > {: .solution} {: .challenge} + +{% include links.md %} From ddb81b8faddd07f1f62a9258560325d16b7bb432 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Sun, 8 Jan 2017 09:58:16 -0500 Subject: [PATCH 067/314] Checking for duplicate link definitions --- bin/lesson_check.py | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/bin/lesson_check.py b/bin/lesson_check.py index 608e4f1b..d2160129 100755 --- a/bin/lesson_check.py +++ b/bin/lesson_check.py @@ -51,7 +51,7 @@ P_INTERNAL_LINK_REF = re.compile(r'\[([^\]]+)\]\[([^\]]+)\]') # Pattern to match reference links (to resolve internally-defined references). -P_INTERNAL_LINK_DEF = re.compile(r'^\[([^\]]+)\]:.*') +P_INTERNAL_LINK_DEF = re.compile(r'^\[([^\]]+)\]:\s*(.+)') # What kinds of blockquotes are allowed? KNOWN_BLOCKQUOTES = { @@ -106,7 +106,7 @@ def main(): args = parse_args() args.reporter = Reporter() check_config(args.reporter, args.source_dir) - args.references = read_references(args.reference_path) + args.references = read_references(args.reporter, args.reference_path) docs = read_all_markdown(args.source_dir, args.parser) check_fileset(args.source_dir, args.reporter, docs.keys()) @@ -170,22 +170,34 @@ def check_config(reporter, source_dir): '"root" not set to ".." in configuration') -def read_references(ref_path): - """Read shared file of reference links, returning set of valid references.""" +def read_references(reporter, ref_path): + """Read shared file of reference links, returning dictionary of valid references + {symbolic_name : URL} + """ - result = set() + result = {} + urls_seen = set() if ref_path: with open(ref_path, 'r') as reader: for (num, line) in enumerate(reader): + line_num = num + 1 m = P_INTERNAL_LINK_DEF.search(line) require(m, - '{0}:{1} not valid reference:\n{2}'.format(ref_path, num, line.rstrip())) - ref = m.group(1) - require(ref, - 'Empty reference at {0}:{1}'.format(ref_path, num)) - require(ref not in result, - 'Duplicate reference {0} at {1}:{2}'.format(ref, ref_path, num)) - result.add(ref) + '{0}:{1} not valid reference:\n{2}'.format(ref_path, line_num, line.rstrip())) + name = m.group(1) + url = m.group(2) + require(name, + 'Empty reference at {0}:{1}'.format(ref_path, line_num)) + reporter.check(name not in result, + ref_path, + 'Duplicate reference {0} at line {1}', + name, line_num) + reporter.check(url not in urls_seen, + ref_path, + 'Duplicate definition of URL {0} at line {1}', + url, line_num) + result[name] = url + urls_seen.add(url) return result From 271d32c4eda1a58ef8d3b6e9636669fe13d73896 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Mon, 9 Jan 2017 06:55:09 -0500 Subject: [PATCH 068/314] Testing that included links work in RMarkdown --- _episodes/06-rmarkdown-example.md | 2 +- _episodes_rmd/06-rmarkdown-example.Rmd | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/_episodes/06-rmarkdown-example.md b/_episodes/06-rmarkdown-example.md index 88314987..61fe987e 100644 --- a/_episodes/06-rmarkdown-example.md +++ b/_episodes/06-rmarkdown-example.md @@ -11,7 +11,7 @@ keypoints: - "It shouldn't be difficult" --- This episode demonstrates all the features that can be used when writing a -lesson in RMarkdown. +lesson in [RMarkdown][r-markdown]. This first chunk is really important, and should be included in all markdown lessons. diff --git a/_episodes_rmd/06-rmarkdown-example.Rmd b/_episodes_rmd/06-rmarkdown-example.Rmd index 801896c3..edf600fa 100644 --- a/_episodes_rmd/06-rmarkdown-example.Rmd +++ b/_episodes_rmd/06-rmarkdown-example.Rmd @@ -11,7 +11,7 @@ keypoints: - "It shouldn't be difficult" --- This episode demonstrates all the features that can be used when writing a -lesson in RMarkdown. +lesson in [RMarkdown][r-markdown]. This first chunk is really important, and should be included in all markdown lessons. @@ -61,3 +61,5 @@ it to include instructions and solutions. > > ``` > {: .solution} {: .challenge} + +{% include links.md %} From 976746242e1069b012d499c76cfc627c1fba8c5d Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Mon, 9 Jan 2017 06:59:58 -0500 Subject: [PATCH 069/314] Adding more explanation of glossary formatting --- reference.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/reference.md b/reference.md index 21dec51b..bd830e85 100644 --- a/reference.md +++ b/reference.md @@ -8,6 +8,7 @@ permalink: /reference/ The glossary would go here, formatted as: ~~~ +{:auto_ids} key word 1 : explanation 1 @@ -16,7 +17,10 @@ key word 2 ~~~ {: .source} -which renders as: +(`{:auto_ids}` is needed at the start +so that Jekyll will automatically generate a unique ID for each item +to allow other pages to hyperlink to specific glossary entries.) +This renders as: {:auto_ids} key word 1 From 61ad44fd0b72accb919ffb5dd8a29d2ed4297cb0 Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Mon, 9 Jan 2017 15:12:30 -0500 Subject: [PATCH 070/314] Using page.previous and page.next for links instead of loop --- _includes/episode_navbar.html | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/_includes/episode_navbar.html b/_includes/episode_navbar.html index a789d3d9..1f6e033d 100644 --- a/_includes/episode_navbar.html +++ b/_includes/episode_navbar.html @@ -1,26 +1,11 @@ {% comment %} - Find previous and next episodes (if any). -{% endcomment %} -{% for episode in site.episodes %} - {% if episode.url == page.url %} - {% unless forloop.first %} - {% assign prev_episode = prev %} - {% endunless %} - {% unless forloop.last %} - {% assign next_episode = site.episodes[forloop.index] %} - {% endunless %} - {% endif %} - {% assign prev = episode %} -{% endfor %} - -{% comment %} - Display title and prev/next links. + Navigation bar for an episode. {% endcomment %}

- {% if prev_episode %} - previous episode + {% if page.previous.url %} + previous episode {% else %} lesson home {% endif %} @@ -34,8 +19,8 @@

{{ page.title }}

- {% if next_episode %} - next episode + {% if page.next.url %} + next episode {% else %} lesson home {% endif %} From b357f4e769a06ad73db205b57ebb2780f5ea08fe Mon Sep 17 00:00:00 2001 From: Greg Wilson Date: Mon, 9 Jan 2017 15:14:44 -0500 Subject: [PATCH 071/314] Adding comments on include files purposes --- _includes/carpentries.html | 5 +++-- _includes/episode_keypoints.html | 3 +++ _includes/javascript.html | 3 +++ _includes/lesson_footer.html | 3 +++ _includes/main_title.html | 3 +++ _includes/navbar.html | 3 +++ _includes/workshop_ad.html | 3 +++ _includes/workshop_footer.html | 3 +++ 8 files changed, 24 insertions(+), 2 deletions(-) diff --git a/_includes/carpentries.html b/_includes/carpentries.html index 69e2e1cc..c42bfcf2 100644 --- a/_includes/carpentries.html +++ b/_includes/carpentries.html @@ -1,3 +1,6 @@ +{% comment %} + General description of Software and Data Carpentry. +{% endcomment %}
Software Carpentry logo @@ -23,5 +26,3 @@ building on learners' existing knowledge to enable them to quickly apply skills learned to their own research.
- - diff --git a/_includes/episode_keypoints.html b/_includes/episode_keypoints.html index 85378a56..2baa53ef 100644 --- a/_includes/episode_keypoints.html +++ b/_includes/episode_keypoints.html @@ -1,3 +1,6 @@ +{% comment %} + Display key points for an episode. +{% endcomment %}

Key Points

    diff --git a/_includes/javascript.html b/_includes/javascript.html index 010ae4af..a2066c20 100644 --- a/_includes/javascript.html +++ b/_includes/javascript.html @@ -1,3 +1,6 @@ +{% comment %} + Javascript used in lesson and workshop pages. +{% endcomment %} diff --git a/_includes/lesson_footer.html b/_includes/lesson_footer.html index a37ba3ec..be46c2d4 100644 --- a/_includes/lesson_footer.html +++ b/_includes/lesson_footer.html @@ -1,3 +1,6 @@ +{% comment %} + Footer for lesson pages. +{% endcomment %}
    diff --git a/_includes/main_title.html b/_includes/main_title.html index 60b8b069..8e22ced1 100644 --- a/_includes/main_title.html +++ b/_includes/main_title.html @@ -1 +1,4 @@ +{% comment %} + Main title for lesson pages. +{% endcomment %}

    {{ site.title }}{% if page.title %}: {{ page.title }}{% endif %}

    diff --git a/_includes/navbar.html b/_includes/navbar.html index 6a4df8a7..effea29d 100644 --- a/_includes/navbar.html +++ b/_includes/navbar.html @@ -1,3 +1,6 @@ +{% comment %} + Lesson navigation bar. +{% endcomment %}

SetupDowload files used on the lesson.
+ From 4dcf2ed5864ecfccaa5ff14c5439ae196ac63e1c Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Wed, 18 Jan 2017 22:37:17 +0000 Subject: [PATCH 078/314] Add missing class on _includes/syllabus.html --- _includes/syllabus.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_includes/syllabus.html b/_includes/syllabus.html index 0b206cc1..1cee118b 100644 --- a/_includes/syllabus.html +++ b/_includes/syllabus.html @@ -26,7 +26,7 @@

Schedule

{% assign hours = current | divided_by: 60 %} {% assign minutes = current | modulo: 60 %}
- {% if multiday %}{% endif %} + {% if multiday %}{% endif %} @@ -62,7 +62,7 @@

Schedule

{% assign hours = current | divided_by: 60 %} {% assign minutes = current | modulo: 60 %} - {% if multiday %}{% endif %} + {% if multiday %}{% endif %} From 9781de11d1018e400958993bcae8933114ac7629 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Wed, 18 Jan 2017 22:39:47 +0000 Subject: [PATCH 079/314] Add multiday condition on _includes/syllabus.html --- _includes/syllabus.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/syllabus.html b/_includes/syllabus.html index 1cee118b..3b9a2897 100644 --- a/_includes/syllabus.html +++ b/_includes/syllabus.html @@ -14,7 +14,7 @@

Schedule

Setup Dowload files used on the lesson.
{% if hours < 10 %}0{% endif %}{{ hours }}:{% if minutes < 10 %}0{% endif %}{{ minutes }} Finish
{% if hours < 10 %}0{% endif %}{{ hours }}:{% if minutes < 10 %}0{% endif %}{{ minutes }} Finish
- + {% if multiday %}{% endif %} From 3a097992c1ef5e32da87196699d770b02da749c7 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Wed, 18 Jan 2017 22:50:09 +0000 Subject: [PATCH 080/314] Enforce Bootstrap's 12 column layout --- _includes/syllabus.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/_includes/syllabus.html b/_includes/syllabus.html index 3b9a2897..118e5848 100644 --- a/_includes/syllabus.html +++ b/_includes/syllabus.html @@ -15,7 +15,7 @@

Schedule

Setup Dowload files used on the lesson.
{% if multiday %}{% endif %} - + @@ -27,7 +27,7 @@

Schedule

{% assign minutes = current | modulo: 60 %} {% if multiday %}{% endif %} - + @@ -38,7 +38,7 @@

Schedule

{% assign minutes = current | modulo: 60 %} {% if multiday %}{% endif %} - + @@ -63,7 +63,7 @@

Schedule

{% assign minutes = current | modulo: 60 %} {% if multiday %}{% endif %} - + From 0958c5fe71b7e68d37018ad0299560040b6d3cdc Mon Sep 17 00:00:00 2001 From: "W. Trevor King" Date: Mon, 23 Jan 2017 14:54:50 -0800 Subject: [PATCH 081/314] bin/lesson_initialize.py: Remove 'example-site' reference The consumer was removed by 079d7d50 (Updating contribution guidelines in boilerplate, 2016-06-26). --- bin/lesson_initialize.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bin/lesson_initialize.py b/bin/lesson_initialize.py index b26bf287..540bb08c 100755 --- a/bin/lesson_initialize.py +++ b/bin/lesson_initialize.py @@ -158,7 +158,6 @@ [dc-lessons]: http://datacarpentry.org/lessons/ [dc-site]: http://datacarpentry.org/ [discuss-list]: http://lists.software-carpentry.org/listinfo/discuss -[example-site]: https://swcarpentry.github.io/lesson-example/ [github]: http://github.com [github-flow]: https://guides.github.com/introduction/flow/ [github-join]: https://github.com/join From 39973eed99fc4b2768bb561b7216b441e76ffcf9 Mon Sep 17 00:00:00 2001 From: Nick Young Date: Tue, 31 Jan 2017 17:10:48 +1300 Subject: [PATCH 082/314] ensure dt elements have an id set --- _includes/javascript.html | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/_includes/javascript.html b/_includes/javascript.html index a2066c20..d0d2249c 100644 --- a/_includes/javascript.html +++ b/_includes/javascript.html @@ -12,3 +12,16 @@ ga('create', 'UA-37305346-2', 'auto'); ga('send', 'pageview'); + \ No newline at end of file From 0cb3ca5b6814c5ee5dfc4e46d0256a9b2d2e0ada Mon Sep 17 00:00:00 2001 From: Nick Young Date: Wed, 1 Feb 2017 10:19:36 +1300 Subject: [PATCH 083/314] Add javascript comments to the dt-ids snippet --- _includes/javascript.html | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/_includes/javascript.html b/_includes/javascript.html index d0d2249c..93b51527 100644 --- a/_includes/javascript.html +++ b/_includes/javascript.html @@ -13,15 +13,21 @@ ga('send', 'pageview'); \ No newline at end of file + From d978d4a792386a16952198aaba692b52a4fddae4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Emonet?= Date: Sat, 4 Feb 2017 11:30:30 +0100 Subject: [PATCH 084/314] Updating mailmap and AUTHORS before release --- .mailmap | 33 +++++++++++++++++++++++++++------ AUTHORS | 12 ++++++++++++ 2 files changed, 39 insertions(+), 6 deletions(-) diff --git a/.mailmap b/.mailmap index ab8458f4..8e78efc2 100644 --- a/.mailmap +++ b/.mailmap @@ -4,11 +4,15 @@ Piotr Banaszkiewicz David Beitey Trevor Bekolay John Blischak -Andy Boughton -Amy Brown -Abigail Cabunoc Mayes +Andy Boughton +Andy Boughton +Amy Brown +Amy Brown +Abigail Cabunoc Mayes +Abigail Cabunoc Mayes Jonah Duckles -Rémi Emonet +Rémi Emonet +Rémi Emonet Ivan Gonzalez Michael Hansen Mike Jackson @@ -22,8 +26,25 @@ Jon Pipitone Timothée Poisot Florian Rathgeber Ariel Rokem -Raniere Silva +Raniere Silva +Raniere Silva +Raniere Silva Ashwin Srinath Carol Willing -Greg Wilson +Greg Wilson +Greg Wilson Naupaka Zimmerman +Zbigniew Jędrzejewski-Szmek +Bianca Peterson +C. Titus Brown +Donny Winston +Evan P. Williamson +Gabriel A. Devenyi +Gerard Capes +Ian Carroll +Kate Hertweck +Maxim Belkin +Thomas Guignard +Tracy Teal +Valentina Staneva diff --git a/AUTHORS b/AUTHORS index c27cbadf..2500f862 100644 --- a/AUTHORS +++ b/AUTHORS @@ -27,3 +27,15 @@ Ashwin Srinath Carol Willing Greg Wilson Naupaka Zimmerman +Bianca Peterson +C. Titus Brown +Donny Winston +Evan P. Williamson +Gabriel A. Devenyi +Gerard Capes +Ian Carroll +Kate Hertweck +Maxim Belkin +Thomas Guignard +Tracy Teal +Valentina Staneva From f80f30150df6040ff5e37ead9998d5b2f896cf11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Emonet?= Date: Sat, 4 Feb 2017 17:40:56 +0100 Subject: [PATCH 085/314] Fixed, more compact, ordered mailmap (+fixes) --- .mailmap | 62 +++++++++++++++----------------------------------------- AUTHORS | 2 +- 2 files changed, 17 insertions(+), 47 deletions(-) diff --git a/.mailmap b/.mailmap index 8e78efc2..9f05caed 100644 --- a/.mailmap +++ b/.mailmap @@ -1,50 +1,20 @@ -James Allen -Pete Bachant -Piotr Banaszkiewicz -David Beitey -Trevor Bekolay -John Blischak -Andy Boughton -Andy Boughton -Amy Brown -Amy Brown Abigail Cabunoc Mayes -Abigail Cabunoc Mayes -Jonah Duckles -Rémi Emonet -Rémi Emonet -Ivan Gonzalez -Michael Hansen -Mike Jackson -W. Trevor King -Christina Koch -Alexander Konovalov -Francois Michonneau -Bill Mills -Aaron O'Leary -Jon Pipitone -Timothée Poisot -Florian Rathgeber +Abigail Cabunoc Mayes +Alexander Konovalov +Amy Brown +Andy Boughton Ariel Rokem -Raniere Silva -Raniere Silva -Raniere Silva -Ashwin Srinath -Carol Willing -Greg Wilson -Greg Wilson -Naupaka Zimmerman -Zbigniew Jędrzejewski-Szmek -Bianca Peterson -C. Titus Brown -Donny Winston +Ashwin Srinath Evan P. Williamson -Gabriel A. Devenyi -Gerard Capes -Ian Carroll +François Michonneau +Greg Wilson +Ivan Gonzalez +James Allen Kate Hertweck -Kate Hertweck -Maxim Belkin -Thomas Guignard -Tracy Teal -Valentina Staneva +Mike Jackson +Raniere Silva +Raniere Silva +Rémi Emonet +Rémi Emonet +Timothée Poisot diff --git a/AUTHORS b/AUTHORS index 2500f862..a7df1d88 100644 --- a/AUTHORS +++ b/AUTHORS @@ -15,7 +15,6 @@ Mike Jackson W. Trevor King Christina Koch Alexander Konovalov -Francois Michonneau Bill Mills Aaron O'Leary Jon Pipitone @@ -39,3 +38,4 @@ Maxim Belkin Thomas Guignard Tracy Teal Valentina Staneva +François Michonneau From 533bc525100ced1e9190384fdd4b03270bf6752c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Emonet?= Date: Mon, 6 Feb 2017 22:10:57 +0100 Subject: [PATCH 086/314] Force ordering AUTHORS by lastname --- AUTHORS | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/AUTHORS b/AUTHORS index a7df1d88..7be56685 100644 --- a/AUTHORS +++ b/AUTHORS @@ -3,39 +3,39 @@ Pete Bachant Piotr Banaszkiewicz David Beitey Trevor Bekolay +Maxim Belkin John Blischak Andy Boughton Amy Brown +C. Titus Brown Abigail Cabunoc Mayes +Gerard Capes +Ian Carroll +Gabriel A. Devenyi Jonah Duckles Rémi Emonet Ivan Gonzalez +Thomas Guignard Michael Hansen +Kate Hertweck Mike Jackson W. Trevor King Christina Koch Alexander Konovalov +François Michonneau Bill Mills Aaron O'Leary +Bianca Peterson Jon Pipitone Timothée Poisot Florian Rathgeber Ariel Rokem Raniere Silva Ashwin Srinath +Valentina Staneva +Tracy Teal +Evan P. Williamson Carol Willing Greg Wilson -Naupaka Zimmerman -Bianca Peterson -C. Titus Brown Donny Winston -Evan P. Williamson -Gabriel A. Devenyi -Gerard Capes -Ian Carroll -Kate Hertweck -Maxim Belkin -Thomas Guignard -Tracy Teal -Valentina Staneva -François Michonneau +Naupaka Zimmerman From c510f14777ca13881b6c9ac02389b085170a1653 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Sat, 18 Feb 2017 17:56:38 +0000 Subject: [PATCH 087/314] Make tables wider Close https://github.com/swcarpentry/styles/issues/101. --- assets/css/bootstrap.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/bootstrap.css b/assets/css/bootstrap.css index 46ba03ef..0fe7cd5b 100644 --- a/assets/css/bootstrap.css +++ b/assets/css/bootstrap.css @@ -2263,7 +2263,7 @@ th { text-align: left; } .table { - /* width: 100%; -- CHANGE -- */ + width: 100%; max-width: 100%; margin-bottom: 20px; } From 60185ce1c5c73962bd9469f99b479dbd0227a2b8 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Sat, 18 Feb 2017 17:49:06 +0000 Subject: [PATCH 088/314] Improve round corners on block input and output --- assets/css/lesson.scss | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/assets/css/lesson.scss b/assets/css/lesson.scss index 0c5f86e1..fe008e50 100644 --- a/assets/css/lesson.scss +++ b/assets/css/lesson.scss @@ -32,6 +32,7 @@ $color-testimonial: #fc8dc1 !default; color: $color; border-left: solid 5px $color; margin-bottom: 0px; + border-radius: 4px 0 0 4px; } .error { @include cdSetup($color-error); } @@ -45,6 +46,18 @@ $color-testimonial: #fc8dc1 !default; .r { @include cdSetup($color-source); } .sql { @include cdSetup($color-source); } +.error pre, +.output pre, +.source pre, +.bash pre, +.make pre, +.matlab pre, +.python pre, +.r pre, +.sql pre { + border-radius: 0 4px 4px 0; +} + //---------------------------------------- // Specialized blockquote environments for learning objectives, callouts, etc. //---------------------------------------- From 26bc6a3f279c83e3b1d0bece291cf2c0bd477aa5 Mon Sep 17 00:00:00 2001 From: Bartosz T Date: Mon, 20 Feb 2017 15:31:23 +0100 Subject: [PATCH 089/314] add a callout about header IDs --- _episodes/04-formatting.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/_episodes/04-formatting.md b/_episodes/04-formatting.md index 5d3b9d80..a8b41f5f 100644 --- a/_episodes/04-formatting.md +++ b/_episodes/04-formatting.md @@ -97,6 +97,17 @@ Authors should *not* use: * sub-headings * HTML layout (e.g., `div` elements). + +> ## Linking section IDs +> +> In the HTML output each header of a section, code sample, exercise will be associated with an unique ID (the rules of +> the ID generation are given in kramdown [documentation](https://kramdown.gettalong.org/converter/html.html#auto-ids), +> but it is easier to look for them directly in the page sources). +> These IDs can be used to easily link to the section by attaching the hash (`#`) followed by the ID to the page's URL +> (like [this](#linking-section-ids)). For example, the instructor might copy the link to +> the etherpad, so that the lesson opens in learners' web browser directly at the right spot. +{: .callout} + ## Formatting Code Inline code fragments are formatted using back-quotes. From 9911100473051835c617b611af486183c691a162 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Thu, 2 Mar 2017 22:01:47 +0000 Subject: [PATCH 090/314] Update copyright year with current year --- _includes/lesson_footer.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/lesson_footer.html b/_includes/lesson_footer.html index be46c2d4..352dcf06 100644 --- a/_includes/lesson_footer.html +++ b/_includes/lesson_footer.html @@ -5,7 +5,7 @@

- Copyright © 2016 + Copyright © 2016–{{ 'now' | date: "%Y" }} {% if site.carpentry == "swc" %} Software Carpentry Foundation {% elsif site.carpentry == "dc" %} From 8dbb992b204150bb1cb7eb7fcf30aed4c29d937a Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Thu, 23 Feb 2017 17:22:53 +0000 Subject: [PATCH 091/314] Add link to Edit on GitHub --- _includes/lesson_footer.html | 4 +++- _includes/navbar.html | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/_includes/lesson_footer.html b/_includes/lesson_footer.html index 352dcf06..9d214d54 100644 --- a/_includes/lesson_footer.html +++ b/_includes/lesson_footer.html @@ -17,10 +17,12 @@

- Source + Improve this page / Contributing / + Source + / Cite / Contact diff --git a/_includes/navbar.html b/_includes/navbar.html index effea29d..fa8def7b 100644 --- a/_includes/navbar.html +++ b/_includes/navbar.html @@ -51,7 +51,6 @@ {% comment %} Show setup instructions, reference guide, and lesson episodes for lessons. {% endcomment %} {% if site.kind == "lesson" %}
  • Setup
  • -
  • Reference
  • {% endif %} {% endif %} - + {% for episode in site.episodes %} {% if episode.start %} {% comment %} Starting a new day? {% endcomment %} From 683deface14652a32390d1e3ba923aff13d8236d Mon Sep 17 00:00:00 2001 From: Jonah Duckles Date: Mon, 27 Mar 2017 07:21:47 +0100 Subject: [PATCH 099/314] Adding page root --- setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.md b/setup.md index d8a52970..1414775c 100644 --- a/setup.md +++ b/setup.md @@ -68,7 +68,7 @@ lesson is `data-cleanup`. 6. At this point, you should have a page like this: - ![](./fig/using-github-import.png) + ![]({{ page.root }}/fig/using-github-import.png) You can now click "Begin Import". When the process is done, From cc18cb1ca1c3cb8dc01d81f141185934cf765fe4 Mon Sep 17 00:00:00 2001 From: Jonah Duckles Date: Mon, 27 Mar 2017 07:40:10 +0100 Subject: [PATCH 100/314] Reorganize and rewording with newcomers in mind --- setup.md | 115 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 63 insertions(+), 52 deletions(-) diff --git a/setup.md b/setup.md index 1414775c..cab92350 100644 --- a/setup.md +++ b/setup.md @@ -3,57 +3,17 @@ layout: page title: Setup permalink: /setup/ --- -## Setup Instructions for Actual Lessons - -1. Installation instructions for core lessons are included in - the [workshop template's home page][template], - so that they are all in one place. - The `setup.md` files of core lessons link to - the appropriate sections of the [workshop template page][workshop-repo]. - -2. Other lessons' `setup.md` include full installation instructions organized by OS - (following the model of the workshop template home page). - -## Setting Up for Lesson Development - -If you want to set up Jekyll -so that you can preview changes on your own machine before pushing them to GitHub, -you must install the software described below. -(Note: Julian Thilo has written instructions for -[installing Jekyll on Windows][jekyll-windows].) - -1. **Ruby**. - This is included with Linux and Mac OS X; - the simplest option on Windows is to use [RubyInstaller][ruby-installer]. - You can test your installation by running `ruby --version`. - For more information, - see [the Ruby installation guidelines][ruby-install-guide]. - -2. **[RubyGems][rubygems]** - (the package manager for Ruby). - You can test your installation by running `gem --version`. - -3. **[Jekyll][jekyll]**. - You can install this by running `gem install jekyll`. - -4. **R Packages**. - We use [knitr][cran-knitr], [stringr][cran-stringr], and [checkpoint][cran-checkpoint] - to format lessons written in R Markdown, - so you will need to install these to build R lessons - (and this example lesson). - -If you want to run `bin/lesson_check.py` (which is invoked by `make lesson-check`) -you will need Jekyll (so that you have its Markdown parser, which is called Kramdown) -and the [PyYAML][pyyaml] module for Python 3. ## Creating a New Lesson We will assume that your user ID is `timtomch` and the name of your -lesson is `data-cleanup`. +new lesson is `data-cleanup`. -1. Go to [GitHub's importer][importer]. +1. We'll use the [GitHub's importer][importer] to make a copy of this repo in your own GitHub account. +(Note: This is like a GitHub Fork, but not connected to the upstream changes) -2. Put the URL of [the styles repository][styles] in the "Your old repository’s clone URL" box. +2. **Put the URL of [the styles repository][styles]** (https://github.com/swcarpentry/styles) in the "Your + old repository’s clone URL" box. Do *not* use the URL of this repository, as that will bring in a lot of example files you don't actually want. @@ -73,15 +33,18 @@ lesson is `data-cleanup`. You can now click "Begin Import". When the process is done, you can click "Continue to repository" to visit your newly-created repository. + + Through the Github interface you can begin to edit and -7. Clone your newly-created repository to your desktop: +7. If you want to work on the lesson from your local machine, you can + now clone your newly-created repository to your computer: ~~~ $ git clone -b gh-pages https://github.com/timtomch/data-cleanup.git ~~~ {: .source} - Note that the URL for your lesson will be different than the one above. + Note that the URL for your lesson will have your username and chosen repository name. 8. Go into that directory using: @@ -90,10 +53,11 @@ lesson is `data-cleanup`. ~~~ {: .source} - Note that the name of your directory will be different, - since your lesson probably won't be called `data-cleanup`. + Note that the name of your directory should be what you named your lesson + on the example this is `data-cleanup`. -9. Manually add the styles repository as a remote called `template`: +9. To be able to pull upstream style changes, you should manually add the + styles repository as a remote called `template`: ~~~ $ git remote add template https://github.com/swcarpentry/styles.git @@ -123,9 +87,9 @@ lesson is `data-cleanup`. that cannot be put into the styles repository (because they would trigger repeated merge conflicts). -12. Create and edit files as explained in [the episodes of this lesson]({{ page.root }}/#schedule). +12. Create and edit files as explained furhter in [the episodes of this lesson]({{ page.root }}/#schedule). -13. Preview the HTML pages for your lesson: +13. (requires Jekyll Setup from below) Preview the HTML pages for your lesson: ~~~ $ make serve @@ -162,4 +126,51 @@ lesson is `data-cleanup`. if the problem persists, please [get in touch][contact]. + +## Setup Instructions for a specific existing lesson + +1. Installation instructions for core lessons are included in + the [workshop template's home page][template], + so that they are all in one place. + The `setup.md` files of core lessons link to + the appropriate sections of the [workshop template page][workshop-repo]. + +2. Other lessons' `setup.md` include full installation instructions organized by OS + (following the model of the workshop template home page). + +## (Optional) Jekyll Setup for Lesson Development + +If you want to set up Jekyll +so that you can preview changes on your own machine before pushing them to GitHub, +you must install the software described below. +(Note: Julian Thilo has written instructions for +[installing Jekyll on Windows][jekyll-windows].) + +1. **Ruby**. + This is included with Linux and Mac OS X; + the simplest option on Windows is to use [RubyInstaller][ruby-installer]. + You can test your installation by running `ruby --version`. + For more information, + see [the Ruby installation guidelines][ruby-install-guide]. + +2. **[RubyGems][rubygems]** + (the package manager for Ruby). + You can test your installation by running `gem --version`. + +3. **[Jekyll][jekyll]**. + You can install this by running `gem install jekyll`. + +4. **R Packages**. + We use [knitr][cran-knitr], [stringr][cran-stringr], and [checkpoint][cran-checkpoint] + to format lessons written in R Markdown, + so you will need to install these to build R lessons + (and this example lesson). + +If you want to run `bin/lesson_check.py` (which is invoked by `make lesson-check`) +you will need Jekyll (so that you have its Markdown parser, which is called Kramdown) +and the [PyYAML][pyyaml] module for Python 3. + {% include links.md %} + + + From f6b168e41e485c134457607dd096d4d76cdf09bc Mon Sep 17 00:00:00 2001 From: Jonah Duckles Date: Mon, 27 Mar 2017 07:49:09 +0100 Subject: [PATCH 101/314] Added intro --- setup.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/setup.md b/setup.md index cab92350..dceb13aa 100644 --- a/setup.md +++ b/setup.md @@ -4,6 +4,19 @@ title: Setup permalink: /setup/ --- +Our lesson template is kept in the `swcarpentry/styles` repository. The `styles` repository is carefully curated so that +changes made to it are easily mergable by downstream lessons. The `styles` repository contains various +bits that take Markdown files and render them as a lesson web page. For more information on how to develop +lessons and maintain them, see our [lesson-example](lesson-example). It will walk you through the basics of lesson +design and how to use GitHub, Markdown and Jekyll for lesson development. Follow the instructions below to make +your own empty lesson in your own GitHub account. Once you've done that you can just write Markdown code and have +lesson web pages just like the [lesson-example](lesson-example) and all of our other lessons. + +Requirements: +* A GitHub account +* A working python environment to run the lesson initialization script +* (Optional) A local install of [Jekyll](https://jekyllrb.com/) which will require the Ruby language to be installed + ## Creating a New Lesson We will assume that your user ID is `timtomch` and the name of your From 9be02b8641ca6e329d724aeecb8e5b9ef3cf09f5 Mon Sep 17 00:00:00 2001 From: Jonah Duckles Date: Mon, 27 Mar 2017 07:49:57 +0100 Subject: [PATCH 102/314] Update setup.md --- setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.md b/setup.md index dceb13aa..3d13be93 100644 --- a/setup.md +++ b/setup.md @@ -10,7 +10,7 @@ bits that take Markdown files and render them as a lesson web page. For more inf lessons and maintain them, see our [lesson-example](lesson-example). It will walk you through the basics of lesson design and how to use GitHub, Markdown and Jekyll for lesson development. Follow the instructions below to make your own empty lesson in your own GitHub account. Once you've done that you can just write Markdown code and have -lesson web pages just like the [lesson-example](lesson-example) and all of our other lessons. +lesson web pages just like the [lesson-example](lesson-example) and all of our other lessons, but with your lesson content. Requirements: * A GitHub account From 38307ff35b01ef8c1521473676a43742b5f9601a Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Tue, 4 Apr 2017 08:02:53 +0100 Subject: [PATCH 103/314] Add Library Carpentry to the workshop template Includes @drjwbaker's description of Library Carpentry. --- _includes/dc/intro.html | 18 +++++++ _includes/dc/schedule.html | 24 +++++++++ _includes/dc/syllabus.html | 96 +++++++++++++++++++++++++++++++++ _includes/dc/who.html | 8 +++ _includes/lc/intro.html | 19 +++++++ _includes/lc/schedule.html | 24 +++++++++ _includes/lc/syllabys.html | 69 ++++++++++++++++++++++++ _includes/lc/who.html | 8 +++ _includes/navbar.html | 14 +---- _includes/sc/intro.html | 18 +++++++ _includes/sc/schedule.html | 24 +++++++++ _includes/sc/syllabus.html | 96 +++++++++++++++++++++++++++++++++ _includes/sc/who.html | 8 +++ _includes/workshop_footer.html | 19 +++++-- assets/img/lc-icon-black.png | Bin 0 -> 18753 bytes 15 files changed, 428 insertions(+), 17 deletions(-) create mode 100644 _includes/dc/intro.html create mode 100644 _includes/dc/schedule.html create mode 100644 _includes/dc/syllabus.html create mode 100644 _includes/dc/who.html create mode 100644 _includes/lc/intro.html create mode 100644 _includes/lc/schedule.html create mode 100644 _includes/lc/syllabys.html create mode 100644 _includes/lc/who.html create mode 100644 _includes/sc/intro.html create mode 100644 _includes/sc/schedule.html create mode 100644 _includes/sc/syllabus.html create mode 100644 _includes/sc/who.html create mode 100644 assets/img/lc-icon-black.png diff --git a/_includes/dc/intro.html b/_includes/dc/intro.html new file mode 100644 index 00000000..741aeebb --- /dev/null +++ b/_includes/dc/intro.html @@ -0,0 +1,18 @@ +

    + Data Carpentry + aims to help researchers get their work done + in less time and with less pain + by teaching them basic research computing skills. + This hands-on workshop will cover basic concepts and tools, + including program design, version control, data management, + and task automation. + Participants will be encouraged to help one another + and to apply what they have learned to their own research problems. +

    +

    + + For more information on what we teach and why, + please see our paper + "Best Practices for Scientific Computing". + +

    diff --git a/_includes/dc/schedule.html b/_includes/dc/schedule.html new file mode 100644 index 00000000..6894a19e --- /dev/null +++ b/_includes/dc/schedule.html @@ -0,0 +1,24 @@ +
    +
    +

    Day 1

    +
    Setup Dowload files used on the lesson.
    {% if hours < 10 %}0{% endif %}{{ hours }}:{% if minutes < 10 %}0{% endif %}{{ minutes }}{% if hours < 10 %}0{% endif %}{{ hours }}:{% if minutes < 10 %}0{% endif %}{{ minutes }} Finish
    {% if episode.start %}Day {{ day }}{% endif %}{% if hours < 10 %}0{% endif %}{{ hours }}:{% if minutes < 10 %}0{% endif %}{{ minutes }}{% if hours < 10 %}0{% endif %}{{ hours }}:{% if minutes < 10 %}0{% endif %}{{ minutes }} {{ episode.title }}
    {% if hours < 10 %}0{% endif %}{{ hours }}:{% if minutes < 10 %}0{% endif %}{{ minutes }}{% if hours < 10 %}0{% endif %}{{ hours }}:{% if minutes < 10 %}0{% endif %}{{ minutes }} Finish
    {% if episode.start %}Day {{ day }}{% endif %}{% if hours < 10 %}0{% endif %}{{ hours }}:{% if minutes < 10 %}0{% endif %}{{ minutes }} - {{ episode.title }} + {% assign lesson_number = lesson_number | plus: 1 %} + {{ lesson_number }}. {{ episode.title }} {% if episode.break %} From f994dfbedc0b992a73ae966a21d2c82aaf9c7c25 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Fri, 3 Mar 2017 21:37:22 +0000 Subject: [PATCH 096/314] Revert "ensure dt elements have an id set" --- _includes/javascript.html | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/_includes/javascript.html b/_includes/javascript.html index 93b51527..a2066c20 100644 --- a/_includes/javascript.html +++ b/_includes/javascript.html @@ -12,22 +12,3 @@ ga('create', 'UA-37305346-2', 'auto'); ga('send', 'pageview'); - From 4098294fb5c7796fb15712072ade8fd87b9d717a Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Fri, 3 Mar 2017 20:52:49 +0000 Subject: [PATCH 097/314] Update RMarkdown file Include source: Rmd in the YAML header. --- _episodes/06-rmarkdown-example.md | 4 ++-- _episodes_rmd/06-rmarkdown-example.Rmd | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/_episodes/06-rmarkdown-example.md b/_episodes/06-rmarkdown-example.md index 04b121c7..f532be67 100644 --- a/_episodes/06-rmarkdown-example.md +++ b/_episodes/06-rmarkdown-example.md @@ -1,4 +1,5 @@ --- +source: Rmd title: "Using RMarkdown" teaching: 10 exercises: 2 @@ -77,8 +78,7 @@ ggplot(diamonds, aes(x = carat, y = price, color = cut)) + ~~~ {: .r} -plot of chunk plot-example +plot of chunk plot-example For the challenges and their solutions, you need to pay attention to where the `>` go and where to leave blank lines. You can include code chunks in both the diff --git a/_episodes_rmd/06-rmarkdown-example.Rmd b/_episodes_rmd/06-rmarkdown-example.Rmd index b30d7bcf..c43503ae 100644 --- a/_episodes_rmd/06-rmarkdown-example.Rmd +++ b/_episodes_rmd/06-rmarkdown-example.Rmd @@ -1,4 +1,5 @@ --- +source: Rmd title: "Using RMarkdown" teaching: 10 exercises: 2 From 12506a4b66016088a5c8582ac6e34ccb2cdb13f3 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Tue, 14 Mar 2017 14:22:16 +0000 Subject: [PATCH 098/314] Improve wording on syllabus.html As suggested by @gcapes. --- _includes/syllabus.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/syllabus.html b/_includes/syllabus.html index 118e5848..1adfac44 100644 --- a/_includes/syllabus.html +++ b/_includes/syllabus.html @@ -17,7 +17,7 @@

    Schedule

    {% if multiday %}
    SetupDowload files used on the lesson.Download files required for the lesson
    + + + + + + +
    09:00 Automating tasks with the Unix shell
    10:30 Coffee
    12:00 Lunch break
    13:00 Building programs with Python
    14:30 Coffee
    16:00 Wrap-up
    + +
    +

    Day 2

    + + + + + + + +
    09:00 Version control with Git
    10:30 Coffee
    12:00 Lunch break
    13:00 Managing data with SQL
    14:30 Coffee
    16:00 Wrap-up
    +
    + diff --git a/_includes/dc/syllabus.html b/_includes/dc/syllabus.html new file mode 100644 index 00000000..a325ceec --- /dev/null +++ b/_includes/dc/syllabus.html @@ -0,0 +1,96 @@ +
    +
    +

    The Unix Shell

    +
      +
    • Files and directories
    • +
    • History and tab completion
    • +
    • Pipes and redirection
    • +
    • Looping over files
    • +
    • Creating and running shell scripts
    • +
    • Finding things
    • +
    • Reference...
    • +
    +
    +
    +

    Programming in Python

    +
      +
    • Using libraries
    • +
    • Working with arrays
    • +
    • Reading and plotting data
    • +
    • Creating and using functions
    • +
    • Loops and conditionals
    • +
    • Defensive programming
    • +
    • Using Python from the command line
    • +
    • Reference...
    • +
    +
    + + +
    + +
    +
    +

    Version Control with Git

    +
      +
    • Creating a repository
    • +
    • Recording changes to files: add, commit, ...
    • +
    • Viewing changes: status, diff, ...
    • +
    • Ignoring files
    • +
    • Working on the web: clone, pull, push, ...
    • +
    • Resolving conflicts
    • +
    • Open licenses
    • +
    • Where to host work, and why
    • +
    • Reference...
    • +
    +
    + +
    +

    Open Refine

    +
      +
    • Introduction to OpenRefine
    • +
    • Importing data
    • +
    • Basic functions
    • +
    • Advanced Functions
    • +
    • Reference...
    • +
    +
    +
    diff --git a/_includes/dc/who.html b/_includes/dc/who.html new file mode 100644 index 00000000..2d8e94ae --- /dev/null +++ b/_includes/dc/who.html @@ -0,0 +1,8 @@ +

    + Who: + The course is aimed at graduate students and other researchers. + + You don't need to have any previous knowledge of the tools + that will be presented at the workshop. + +

    diff --git a/_includes/lc/intro.html b/_includes/lc/intro.html new file mode 100644 index 00000000..6794b542 --- /dev/null +++ b/_includes/lc/intro.html @@ -0,0 +1,19 @@ +

    + Library Carpentry + is made by librarians, for librarians to help you: +

    +
      +
    • automate repetitive, boring, error-prone tasks
    • +
    • create, maintain and analyse sustainable and reusable data
    • +
    • work effectively with IT and systems colleagues
    • +
    • better understand the use of software in research
    • +
    • and much more...
    • +
    +

    + + Library Carpentry introduces you to the fundamentals of computing + and provides you with a platform for further self-directed learning. + For more information on what we teach and why, please see our paper + "Library Carpentry: software skills training for library professionals". + +

    diff --git a/_includes/lc/schedule.html b/_includes/lc/schedule.html new file mode 100644 index 00000000..cc2b5920 --- /dev/null +++ b/_includes/lc/schedule.html @@ -0,0 +1,24 @@ +
    +
    +

    Day 1

    + + + + + + + +
    09:00 Data Intro for Librarians
    10:30 Coffee
    12:00 Lunch break
    13:00 Shell Lessons for Libraries
    14:30 Coffee
    16:00 Wrap-up
    +
    +
    +

    Day 2

    + + + + + + + +
    09:00 Git Intro for Librarians
    10:30 Coffee
    12:00 Lunch break
    13:00 OpenRefine for Librarians
    14:30 Coffee
    16:00 Wrap-up
    +
    +
    diff --git a/_includes/lc/syllabys.html b/_includes/lc/syllabys.html new file mode 100644 index 00000000..4dc20776 --- /dev/null +++ b/_includes/lc/syllabys.html @@ -0,0 +1,69 @@ +
    +
    +

    Data Intro

    +
      +
    • Intro to data
    • +
    • Jargon busting
    • +
    • Keyboard shortcuts
    • +
    • Plain text formats
    • +
    • Naming files
    • +
    • Regular expressions
    • +
    • Reference...
    • +
    +
    +
    +

    The Unix Shell

    +
      +
    • Files and directories
    • +
    • History and tab completion
    • +
    • Counting and sorting contents in files
    • +
    • Pipes and redirection
    • +
    • Mining or searching in files
    • +
    • Reference...
    • +
    +
    + +
    + +
    +
    +

    Version Control with Git

    +
      +
    • Creating a repository
    • +
    • Configuring git
    • +
    • Recording changes to files: add, commit, ...
    • +
    • Viewing state changes with status
    • +
    • Working on the web: clone, pull, push, ...
    • +
    • Where to host work, and why
    • +
    • Reference...
    • +
    +
    +
    +
    +

    Open Refine

    +
      +
    • Introduction to OpenRefine
    • +
    • Importing data
    • +
    • Basic functions
    • +
    • Advanced Functions
    • +
    • Reference...
    • +
    +
    +
    +
    + diff --git a/_includes/lc/who.html b/_includes/lc/who.html new file mode 100644 index 00000000..fd9b38c4 --- /dev/null +++ b/_includes/lc/who.html @@ -0,0 +1,8 @@ +

    + Who: + The course is for librarians, archivists, and other information workers. + + You don't need to have any previous knowledge of the tools that + will be presented at the workshop. + +

    diff --git a/_includes/navbar.html b/_includes/navbar.html index 6b21afc7..00fd328b 100644 --- a/_includes/navbar.html +++ b/_includes/navbar.html @@ -22,19 +22,7 @@ {% elsif page.carpentry == "lc" %} - - - {% elsif site.carpentry == "swc" %} - - - - {% elsif site.carpentry == "dc" %} - - - - {% elsif site.carpentry == "lc" %} - - + {% endif %} diff --git a/_includes/sc/intro.html b/_includes/sc/intro.html new file mode 100644 index 00000000..7b9fbf57 --- /dev/null +++ b/_includes/sc/intro.html @@ -0,0 +1,18 @@ +

    + Software Carpentry + aims to help researchers get their work done + in less time and with less pain + by teaching them basic research computing skills. + This hands-on workshop will cover basic concepts and tools, + including program design, version control, data management, + and task automation. + Participants will be encouraged to help one another + and to apply what they have learned to their own research problems. +

    +

    + + For more information on what we teach and why, + please see our paper + "Best Practices for Scientific Computing". + +

    diff --git a/_includes/sc/schedule.html b/_includes/sc/schedule.html new file mode 100644 index 00000000..6894a19e --- /dev/null +++ b/_includes/sc/schedule.html @@ -0,0 +1,24 @@ +
    +
    +

    Day 1

    + + + + + + + +
    09:00 Automating tasks with the Unix shell
    10:30 Coffee
    12:00 Lunch break
    13:00 Building programs with Python
    14:30 Coffee
    16:00 Wrap-up
    +
    +
    +

    Day 2

    + + + + + + + +
    09:00 Version control with Git
    10:30 Coffee
    12:00 Lunch break
    13:00 Managing data with SQL
    14:30 Coffee
    16:00 Wrap-up
    +
    +
    diff --git a/_includes/sc/syllabus.html b/_includes/sc/syllabus.html new file mode 100644 index 00000000..a325ceec --- /dev/null +++ b/_includes/sc/syllabus.html @@ -0,0 +1,96 @@ +
    +
    +

    The Unix Shell

    +
      +
    • Files and directories
    • +
    • History and tab completion
    • +
    • Pipes and redirection
    • +
    • Looping over files
    • +
    • Creating and running shell scripts
    • +
    • Finding things
    • +
    • Reference...
    • +
    +
    +
    +

    Programming in Python

    +
      +
    • Using libraries
    • +
    • Working with arrays
    • +
    • Reading and plotting data
    • +
    • Creating and using functions
    • +
    • Loops and conditionals
    • +
    • Defensive programming
    • +
    • Using Python from the command line
    • +
    • Reference...
    • +
    +
    + + +
    + +
    +
    +

    Version Control with Git

    +
      +
    • Creating a repository
    • +
    • Recording changes to files: add, commit, ...
    • +
    • Viewing changes: status, diff, ...
    • +
    • Ignoring files
    • +
    • Working on the web: clone, pull, push, ...
    • +
    • Resolving conflicts
    • +
    • Open licenses
    • +
    • Where to host work, and why
    • +
    • Reference...
    • +
    +
    + +
    +

    Open Refine

    +
      +
    • Introduction to OpenRefine
    • +
    • Importing data
    • +
    • Basic functions
    • +
    • Advanced Functions
    • +
    • Reference...
    • +
    +
    +
    diff --git a/_includes/sc/who.html b/_includes/sc/who.html new file mode 100644 index 00000000..2d8e94ae --- /dev/null +++ b/_includes/sc/who.html @@ -0,0 +1,8 @@ +

    + Who: + The course is aimed at graduate students and other researchers. + + You don't need to have any previous knowledge of the tools + that will be presented at the workshop. + +

    diff --git a/_includes/workshop_footer.html b/_includes/workshop_footer.html index 3ae63e6d..7b2f22ce 100644 --- a/_includes/workshop_footer.html +++ b/_includes/workshop_footer.html @@ -3,11 +3,22 @@ {% endcomment %} From 1e56203d492a1a13d86756fb5e9d754ed2cae0f8 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Sat, 6 May 2017 10:07:40 +0100 Subject: [PATCH 111/314] Remove CONDUCT.md since it should be generate by bin/lesson_initialize.py --- CONDUCT.md | 45 --------------------------------------------- 1 file changed, 45 deletions(-) delete mode 100644 CONDUCT.md diff --git a/CONDUCT.md b/CONDUCT.md deleted file mode 100644 index 5e4943b4..00000000 --- a/CONDUCT.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -layout: page -title: "Contributor Code of Conduct" -permalink: /conduct/ ---- -As contributors and maintainers of this project, -we pledge to respect all people who contribute through reporting issues, -posting feature requests, -updating documentation, -submitting pull requests or patches, -and other activities. - -We are committed to making participation in this project a harassment-free experience for everyone, -regardless of level of experience, -gender, -gender identity and expression, -sexual orientation, -disability, -personal appearance, -body size, -race, -ethnicity, -age, -or religion. - -Examples of unacceptable behavior by participants include the use of sexual language or imagery, -derogatory comments or personal attacks, -trolling, -public or private harassment, -insults, -or other unprofessional conduct. - -Project maintainers have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to our [Code of Conduct][coc]. -Project maintainers who do not follow the Code of Conduct may be removed from the project team. - -Instances of abusive, harassing, or otherwise unacceptable behavior -may be reported by following our [reporting guidelines][coc-reporting]. - - -- [Software and Data Carpentry Code of Conduct][coc] -- [Code of Conduct Reporting Guide][coc-reporting] - -{% include links.md %} From 98e4bc69b4b03055125a6f888e08b7d08e5cba67 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Sat, 6 May 2017 10:19:56 +0100 Subject: [PATCH 112/314] Fix bug with Python script --- bin/lesson_initialize.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/lesson_initialize.py b/bin/lesson_initialize.py index 513597a4..fc7baf7d 100755 --- a/bin/lesson_initialize.py +++ b/bin/lesson_initialize.py @@ -278,7 +278,7 @@ FIXME ''' -ROOT_SETUP_MD = '''\ +ROOT_AIO_MD = '''\ --- layout: page permalink: /aio/ From 6cbc02461413706ce4e8d525faf9ebe1c1356928 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Sat, 6 May 2017 10:27:27 +0100 Subject: [PATCH 113/314] Add files from bin/lesson_initialize.py --- CONTRIBUTING.md | 23 ++++++++++++----------- aio.md | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 11 deletions(-) create mode 100644 aio.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2ab1593d..9de5a12a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -45,18 +45,22 @@ and to meet some of our community members. ## Where to Contribute -1. If you wish to change this example lesson, - please work in . - This lesson documents the format of our lessons, +1. If you wish to change this lesson, + please work in , + which can be viewed at . + +2. If you wish to change the example lesson, + please work in , + which documents the format of our lessons and can be viewed at . -2. If you wish to change the template used for workshop websites, +3. If you wish to change the template used for workshop websites, please work in . The home page of that repository explains how to set up workshop websites, while the extra pages in provide more background on our design choices. -3. If you wish to change CSS style files, tools, +4. If you wish to change CSS style files, tools, or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`, please work in . @@ -102,8 +106,7 @@ you may want to look at [How to Contribute to an Open Source Project on GitHub][how-contribute]. In brief: -1. The published copy of the lesson is in the [episodes][episodes] directory - in the `gh-pages` branch of the repository +1. The published copy of the lesson is in the `gh-pages` branch of the repository (so that GitHub will regenerate it automatically). Please create all branches from that, and merge the [master repository][repo]'s `gh-pages` branch into your `gh-pages` branch @@ -137,14 +140,12 @@ You can also [reach us by email][contact]. [dc-lessons]: http://datacarpentry.org/lessons/ [dc-site]: http://datacarpentry.org/ [discuss-list]: http://lists.software-carpentry.org/listinfo/discuss -[example-site]: https://swcarpentry.github.io/lesson-example/ [github]: http://github.com [github-flow]: https://guides.github.com/introduction/flow/ [github-join]: https://github.com/join [how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github -[issues]: https://github.com/swcarpentry/lesson-example/issues/ -[repo]: https://github.com/swcarpentry/lesson-example/ +[issues]: https://github.com/swcarpentry/FIXME/issues/ +[repo]: https://github.com/swcarpentry/FIXME/ [swc-issues]: https://github.com/issues?q=user%3Aswcarpentry [swc-lessons]: http://software-carpentry.org/lessons/ [swc-site]: http://software-carpentry.org/ -[episodes]: _episodes diff --git a/aio.md b/aio.md new file mode 100644 index 00000000..6d938523 --- /dev/null +++ b/aio.md @@ -0,0 +1,36 @@ +--- +layout: page +permalink: /aio/ +--- + +{% comment %} +Create anchor for each one of the episodes. +{% endcomment %} +{% for episode in site.episodes %} +
    +{% endfor %} From 9f34e6e952d0d3ab25df0eef4e65a521d2ba4c88 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Wed, 10 May 2017 11:05:10 +0100 Subject: [PATCH 114/314] Revert "Remove CONDUCT.md since it should be generate by bin/lesson_initialize.py" This reverts commit 1e56203d492a1a13d86756fb5e9d754ed2cae0f8. --- CONDUCT.md | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 CONDUCT.md diff --git a/CONDUCT.md b/CONDUCT.md new file mode 100644 index 00000000..5e4943b4 --- /dev/null +++ b/CONDUCT.md @@ -0,0 +1,45 @@ +--- +layout: page +title: "Contributor Code of Conduct" +permalink: /conduct/ +--- +As contributors and maintainers of this project, +we pledge to respect all people who contribute through reporting issues, +posting feature requests, +updating documentation, +submitting pull requests or patches, +and other activities. + +We are committed to making participation in this project a harassment-free experience for everyone, +regardless of level of experience, +gender, +gender identity and expression, +sexual orientation, +disability, +personal appearance, +body size, +race, +ethnicity, +age, +or religion. + +Examples of unacceptable behavior by participants include the use of sexual language or imagery, +derogatory comments or personal attacks, +trolling, +public or private harassment, +insults, +or other unprofessional conduct. + +Project maintainers have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to our [Code of Conduct][coc]. +Project maintainers who do not follow the Code of Conduct may be removed from the project team. + +Instances of abusive, harassing, or otherwise unacceptable behavior +may be reported by following our [reporting guidelines][coc-reporting]. + + +- [Software and Data Carpentry Code of Conduct][coc] +- [Code of Conduct Reporting Guide][coc-reporting] + +{% include links.md %} From b08b83dd0f3b847e0a96051797b840eadd0591e5 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Sun, 18 Jun 2017 08:57:19 +0100 Subject: [PATCH 115/314] Handler for collaborative_notes See https://github.com/swcarpentry/workshop-template/issues/410 --- bin/workshop_check.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/bin/workshop_check.py b/bin/workshop_check.py index d3051bf1..39ee0bfe 100755 --- a/bin/workshop_check.py +++ b/bin/workshop_check.py @@ -227,12 +227,12 @@ def check_eventbrite(eventbrite): @look_for_fixme -def check_etherpad(etherpad): +def check_collaborative_notes(collaborative_notes): """ - 'etherpad' must be a valid URL. + 'collaborative_notes' must be a valid URL. """ - return bool(re.match(URL_PATTERN, etherpad)) + return bool(re.match(URL_PATTERN, collaborative_notes)) @look_for_fixme @@ -292,7 +292,7 @@ def check_pass(value): 'eventbrite': (False, check_eventbrite, 'Eventbrite key appears invalid'), - 'etherpad': (False, check_etherpad, 'Etherpad URL appears invalid'), + 'collaborative_notes': (False, check_collaborative_notes, 'Collaborative Notes URL appears invalid'), 'venue': (False, check_pass, 'venue name not specified'), From 55c2e1b39722e7f0f019620e89c20054a0388b51 Mon Sep 17 00:00:00 2001 From: Joel Nothman Date: Tue, 4 Jul 2017 15:07:12 +1000 Subject: [PATCH 116/314] Link LC as for SWC and DC --- _includes/carpentries.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/carpentries.html b/_includes/carpentries.html index a0e0181f..e6e7965b 100644 --- a/_includes/carpentries.html +++ b/_includes/carpentries.html @@ -32,7 +32,7 @@ Library Carpentry logo
    - Library Carpentry is made by librarians to help librarians + Library Carpentry is made by librarians to help librarians automate repetitive, boring, error-prone tasks; create, maintain and analyse sustainable and reusable data; work effectively with IT and systems colleagues; From 6e4e4c45b60d65f0272fe62e779b14c9e8aa3db3 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Wed, 5 Jul 2017 09:58:54 +0100 Subject: [PATCH 117/314] Unify Library Carpentry logo Close #155 --- _includes/carpentries.html | 2 +- assets/img/lc-icon-black.svg | 76 ------------------------------------ 2 files changed, 1 insertion(+), 77 deletions(-) delete mode 100644 assets/img/lc-icon-black.svg diff --git a/_includes/carpentries.html b/_includes/carpentries.html index e6e7965b..4d5c9060 100644 --- a/_includes/carpentries.html +++ b/_includes/carpentries.html @@ -29,7 +29,7 @@
    - Library Carpentry logo + Library Carpentry logo
    Library Carpentry is made by librarians to help librarians diff --git a/assets/img/lc-icon-black.svg b/assets/img/lc-icon-black.svg deleted file mode 100644 index df711892..00000000 --- a/assets/img/lc-icon-black.svg +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - From 0ab311b14a3cb46559a41354f56ea6884495b67a Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Wed, 5 Jul 2017 10:10:58 +0100 Subject: [PATCH 118/314] Fix logo at navbar by run ~~~ $ find _includes -type f -exec sed -i "s/page.carpentry/site.carpentry/g" {} \; $ find _layouts -type f -exec sed -i "s/page.carpentry/site.carpentry/g" {} \; $ find _extras -type f -exec sed -i "s/page.carpentry/site.carpentry/g" {} \; $ find _episodes -type f -exec sed -i "s/page.carpentry/site.carpentry/g" {} \; $ find bin -type f -exec sed -i "s/page.carpentry/site.carpentry/g" {} \; $ find assets -type f -exec sed -i "s/page.carpentry/site.carpentry/g" {} \; ~~~ --- _includes/navbar.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_includes/navbar.html b/_includes/navbar.html index 7782c9dd..7e2560d1 100644 --- a/_includes/navbar.html +++ b/_includes/navbar.html @@ -12,15 +12,15 @@ {% comment %} Select what logo to display. {% endcomment %} - {% if page.carpentry == "swc" %} + {% if site.carpentry == "swc" %} - {% elsif page.carpentry == "dc" %} + {% elsif site.carpentry == "dc" %} - {% elsif page.carpentry == "lc" %} + {% elsif site.carpentry == "lc" %} From 4b831ad753ccc22b0eda5e1e2985527088cdf934 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Thu, 6 Jul 2017 10:42:15 +0100 Subject: [PATCH 119/314] Add Library Carpentry SVG logo --- assets/img/lc-icon-black.png | Bin 18753 -> 34629 bytes assets/img/lc-icon-black.svg | 184 +++++++++++++++++++++++++++++++++++ 2 files changed, 184 insertions(+) create mode 100644 assets/img/lc-icon-black.svg diff --git a/assets/img/lc-icon-black.png b/assets/img/lc-icon-black.png index e49c6d5165f9d0894c3029b6b0a0dbe87d0c2c32..f066ff89b10b676d94a49f1780de5f756f062276 100644 GIT binary patch literal 34629 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 literal 18753 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 + + +image/svg+xml \ No newline at end of file From 879e4156bb44c268b287e0155f100e7fa804f5da Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Fri, 14 Jul 2017 11:32:02 +0100 Subject: [PATCH 120/314] Update Library Carpentry logo --- assets/img/lc-icon-black.png | Bin 34629 -> 33088 bytes assets/img/lc-icon-black.svg | 134 +++++++++++++++++------------------ 2 files changed, 65 insertions(+), 69 deletions(-) diff --git a/assets/img/lc-icon-black.png b/assets/img/lc-icon-black.png index f066ff89b10b676d94a49f1780de5f756f062276..5e3d9fe1432a35a741e5d8b5070e6137deba84ee 100644 GIT binary patch literal 33088 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 diff --git a/assets/img/lc-icon-black.svg b/assets/img/lc-icon-black.svg index b4fb0162..3adf6066 100644 --- a/assets/img/lc-icon-black.svg +++ b/assets/img/lc-icon-black.svg @@ -9,25 +9,22 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - id="svg3355" version="1.1" - inkscape:version="0.92.1 r" + id="svg2" xml:space="preserve" - width="990" - height="765" - viewBox="0 0 928.125 717.1875" + width="1056" + height="816" + viewBox="0 0 1056 816" sodipodi:docname="lc-icon-black.svg" - inkscape:export-filename="/home/raniere/software-carpentry/swc-styles/assets/img/lc-icon-black.png" - inkscape:export-xdpi="96" - inkscape:export-ydpi="96">image/svg+xml \ No newline at end of file From 1e925f93f5ab85b7b18eae41202cf465efc8c9af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Emonet?= Date: Thu, 3 Aug 2017 23:21:47 +0200 Subject: [PATCH 121/314] Updating .mailmap and AUTHORS before release --- .mailmap | 8 ++++---- AUTHORS | 10 +--------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/.mailmap b/.mailmap index 9f05caed..afc83507 100644 --- a/.mailmap +++ b/.mailmap @@ -2,19 +2,19 @@ Abigail Cabunoc Mayes Abigail Cabunoc Mayes Alexander Konovalov Amy Brown -Andy Boughton Ariel Rokem -Ashwin Srinath +Bartosz Telenczuk +Erin Becker Evan P. Williamson François Michonneau -François Michonneau Greg Wilson Ivan Gonzalez James Allen -Kate Hertweck +Maxim Belkin Mike Jackson Raniere Silva Raniere Silva Rémi Emonet Rémi Emonet Timothée Poisot +Valentina Staneva diff --git a/AUTHORS b/AUTHORS index 7be56685..2d65faaa 100644 --- a/AUTHORS +++ b/AUTHORS @@ -3,20 +3,15 @@ Pete Bachant Piotr Banaszkiewicz David Beitey Trevor Bekolay -Maxim Belkin John Blischak Andy Boughton Amy Brown C. Titus Brown -Abigail Cabunoc Mayes Gerard Capes -Ian Carroll -Gabriel A. Devenyi Jonah Duckles Rémi Emonet Ivan Gonzalez Thomas Guignard -Michael Hansen Kate Hertweck Mike Jackson W. Trevor King @@ -26,16 +21,13 @@ François Michonneau Bill Mills Aaron O'Leary Bianca Peterson -Jon Pipitone Timothée Poisot Florian Rathgeber Ariel Rokem Raniere Silva -Ashwin Srinath Valentina Staneva Tracy Teal -Evan P. Williamson -Carol Willing Greg Wilson Donny Winston Naupaka Zimmerman +Bartosz Telenczuk From eb1bb0a70a5b344ff5c05b649cb2ee1a885c8599 Mon Sep 17 00:00:00 2001 From: David Mawdsley Date: Tue, 8 Aug 2017 10:17:50 +0100 Subject: [PATCH 122/314] Sort episodes before producing figures --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index b5dfe2fa..7e46acbb 100644 --- a/Makefile +++ b/Makefile @@ -65,9 +65,9 @@ MARKDOWN_SRC = \ index.md \ CONDUCT.md \ setup.md \ - $(wildcard _episodes/*.md) \ + $(sort $(wildcard _episodes/*.md)) \ reference.md \ - $(wildcard _extras/*.md) \ + $(sort $(wildcard _extras/*.md)) \ LICENSE.md # Generated lesson files in the order they appear in the navigation menu. From 2208a4b12fafb3365f912e7ea13e121f930e7d0f Mon Sep 17 00:00:00 2001 From: David Mawdsley Date: Tue, 8 Aug 2017 10:29:39 +0100 Subject: [PATCH 123/314] Sort HTML_DST output --- Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 7e46acbb..8dc2541b 100644 --- a/Makefile +++ b/Makefile @@ -75,9 +75,9 @@ HTML_DST = \ ${DST}/index.html \ ${DST}/conduct/index.html \ ${DST}/setup/index.html \ - $(patsubst _episodes/%.md,${DST}/%/index.html,$(wildcard _episodes/*.md)) \ + $(patsubst _episodes/%.md,${DST}/%/index.html,$(sort $(wildcard _episodes/*.md))) \ ${DST}/reference/index.html \ - $(patsubst _extras/%.md,${DST}/%/index.html,$(wildcard _extras/*.md)) \ + $(patsubst _extras/%.md,${DST}/%/index.html,$(sort $(wildcard _extras/*.md))) \ ${DST}/license/index.html ## lesson-md : convert Rmarkdown files to markdown From b2abd06b565a0dfb858b63b6fd165be9a70beaf5 Mon Sep 17 00:00:00 2001 From: Brandon Curtis Date: Thu, 17 Aug 2017 22:51:23 -0700 Subject: [PATCH 124/314] add keyboard key style --- assets/css/lesson.scss | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/assets/css/lesson.scss b/assets/css/lesson.scss index fe008e50..05a00a1f 100644 --- a/assets/css/lesson.scss +++ b/assets/css/lesson.scss @@ -153,3 +153,25 @@ span.fold-unfold { margin-left: 1em; opacity: 0.5; } + + +//---------------------------------------- +// keyboard key style, from StackExchange. +//---------------------------------------- + +.keyboard { + display: inline-block; + margin: 0 .1em; + padding: .1em .6em; + font-family: Arial,"Helvetica Neue",Helvetica,sans-serif; + font-size: 11px; + line-height: 1.4; + color: #242729; + text-shadow: 0 1px 0 #FFF; + background-color: #e1e3e5; + border: 1px solid #adb3b9; + border-radius: 3px; + box-shadow: 0 1px 0 rgba(12,13,14,0.2), 0 0 0 2px #FFF inset; + white-space: nowrap; + font-style: normal; +} From 1df4f12e4e570c2bcfc855a3a4a2e0956a1e0bac Mon Sep 17 00:00:00 2001 From: Brandon Curtis Date: Mon, 28 Aug 2017 11:20:30 -0700 Subject: [PATCH 125/314] use for keyboard keys SWC uses block inline attribute lists for e.g. code blocks, but I think this HTML tag is much simpler and more understandable than
    *Enter*{:.keyboard} ...
    --- assets/css/lesson.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/lesson.scss b/assets/css/lesson.scss index 05a00a1f..abbaecb7 100644 --- a/assets/css/lesson.scss +++ b/assets/css/lesson.scss @@ -159,7 +159,7 @@ span.fold-unfold { // keyboard key style, from StackExchange. //---------------------------------------- -.keyboard { +kbd { display: inline-block; margin: 0 .1em; padding: .1em .6em; From c15b0b460646315ab0b179c49a2637549715a461 Mon Sep 17 00:00:00 2001 From: Joseph Stachelek Date: Wed, 30 Aug 2017 09:22:34 -0400 Subject: [PATCH 126/314] Update index.md --- index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.md b/index.md index aabe6428..42ac2dd9 100644 --- a/index.md +++ b/index.md @@ -25,7 +25,7 @@ please see [the setup instructions]({{ page.root }}/setup/). > 4. Put lesson episodes in `_episodes` (or `_episodes_rmd` if you are writing in RMarkdown). > 5. Run `make serve` to preview the lesson website locally. > 6. Do *not* commit the generated HTML files in the `_site` directory. -> 7. Style blocks and code samples by putting `{: .stylename}` *after* the block or code. +> 7. Style blocks and code samples by putting `{: .stylename}` on a newline *after* the block or code. > 8. Put solutions inside challenges using nested blockquotes. > 9. File issues and template fixes in the [styles repository][styles], > and enhancements to this documentation in this one. From 961d4ee11a433e6f6d7786da9f0ee85e6f8d0414 Mon Sep 17 00:00:00 2001 From: Joseph Stachelek Date: Tue, 5 Sep 2017 14:21:19 -0400 Subject: [PATCH 127/314] Load methods package Building `md` from `Rmd` in a script like this will break if the `methods` package is not called and the code includes class object routines. See https://github.com/r-spatial/sf/issues/478 --- bin/generate_md_episodes.R | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bin/generate_md_episodes.R b/bin/generate_md_episodes.R index f2a40ba4..4ea98350 100644 --- a/bin/generate_md_episodes.R +++ b/bin/generate_md_episodes.R @@ -1,5 +1,7 @@ generate_md_episodes <- function() { + library("methods") + if (require("knitr") && packageVersion("knitr") < '1.9.19') stop("knitr must be version 1.9.20 or higher") From 5ce473cf054837da5782004c3ffe0a23acd12462 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Sun, 27 Aug 2017 11:45:01 +0100 Subject: [PATCH 128/314] Move URL to top --- _config.yml | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/_config.yml b/_config.yml index ef2974ba..96b74a6a 100644 --- a/_config.yml +++ b/_config.yml @@ -12,16 +12,9 @@ title: "Lesson Title" contact: "mailto:lessons@software-carpentry.org" #------------------------------------------------------------ -# Generic settings (should not need to change). +# Constant URL addresses across lessons #------------------------------------------------------------ - -# What kind of thing is this ("workshop" or "lesson")? -kind: "lesson" - -# Magic to make URLs resolve both locally and on GitHub. -# See https://help.github.com/articles/repository-metadata-on-github-pages/. -repository: / - +# # Sites. amy_site: "https://amy.software-carpentry.org/workshops" dc_site: "http://datacarpentry.org" @@ -39,6 +32,17 @@ training_site: "https://swcarpentry.github.io/instructor-training" pre_survey: "https://www.surveymonkey.com/r/swc_pre_workshop_v1?workshop_id=" post_survey: "https://www.surveymonkey.com/r/swc_post_workshop_v1?workshop_id=" +#------------------------------------------------------------ +# Generic settings (should not need to change). +#------------------------------------------------------------ + +# What kind of thing is this ("workshop" or "lesson")? +kind: "lesson" + +# Magic to make URLs resolve both locally and on GitHub. +# See https://help.github.com/articles/repository-metadata-on-github-pages/. +repository: / + # Start time in minutes (0 to be clock-independent, 540 to show a start at 09:00 am) start_time: 0 From 9af6d65a46f9c586e9831211f1cc72c55ff75c9f Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Thu, 5 Oct 2017 17:36:17 +0100 Subject: [PATCH 129/314] Change recommendation for link --- _episodes/04-formatting.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/_episodes/04-formatting.md b/_episodes/04-formatting.md index a8b41f5f..630413ec 100644 --- a/_episodes/04-formatting.md +++ b/_episodes/04-formatting.md @@ -35,6 +35,7 @@ The diagram below shows the internal structure of a single episode file ## Locations and Names Episode files are stored in `_episodes` +or, for the case of R Markdown files, `_episodes_rmd` so that [Jekyll][jekyll] will create a [collection][jekyll-collection] for them. Episodes are named `dd-subject.md`, where `dd` is a two-digit sequence number (with a leading 0) @@ -49,13 +50,10 @@ in the published site. When referring to other episodes, use: {% raw %} - [link text]({{ page.root }}/dd-subject/) + [link text]({{ page.root }}{% link _episodes/dd-subject.md %}) {% endraw %} -i.e., use the episode's directory path below the site root -*without* the `index.html` (which the web server fills in automatically). -This will ensure that the link is valid both when previewing during desktop development -and when the site is published on GitHub. +i.e., use [Jekyll's tag link](https://jekyllrb.com/docs/templates/#links) and the name of the file. ## Episode Header From d20077aafc2047e24a5e31e80644315d210cf9ca Mon Sep 17 00:00:00 2001 From: Ian Lee Date: Wed, 11 Oct 2017 08:29:41 -0700 Subject: [PATCH 130/314] Converted to `col-xs-*` from `col-md-*` classes for navbar div By doing this, when a page is heavily zoomed in (e.g. 500%) the navbar icons stay in the same row, rather than breaking onto two different rows. --- _includes/episode_navbar.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/_includes/episode_navbar.html b/_includes/episode_navbar.html index b9f85f6b..3bee0022 100644 --- a/_includes/episode_navbar.html +++ b/_includes/episode_navbar.html @@ -2,7 +2,7 @@ Navigation bar for an episode. {% endcomment %}
    diff --git a/_includes/links.md b/_includes/links.md index 71ee7ee6..2dfecd6d 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -1,8 +1,8 @@ [cc-by-human]: https://creativecommons.org/licenses/by/4.0/ [cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode -[concept-maps]: http://carpentries.github.io/instructor-training/05-memory/ +[concept-maps]: https://carpentries.github.io/instructor-training/05-memory/ [email]: mailto:lessons@software-carpentry.org -[contrib-covenant]: http://contributor-covenant.org/ +[contrib-covenant]: https://contributor-covenant.org/ [contributing]: {{ site.github.repository_url }}/blob/gh-pages/CONTRIBUTING.md [cran-checkpoint]: https://cran.r-project.org/web/packages/checkpoint/index.html [cran-knitr]: https://cran.r-project.org/web/packages/knitr/index.html @@ -14,10 +14,10 @@ [jekyll-windows]: http://jekyll-windows.juthilo.com/ [jekyll]: https://jekyllrb.com/ [jupyter]: https://jupyter.org/ -[mit-license]: http://opensource.org/licenses/mit-license.html +[mit-license]: https://opensource.org/licenses/mit-license.html [morea]: https://morea-framework.github.io/ -[numfocus]: http://numfocus.org/ -[osi]: http://opensource.org +[numfocus]: https://numfocus.org/ +[osi]: https://opensource.org [pandoc]: https://pandoc.org/ [paper-now]: https://github.com/PeerJ/paper-now [python-gapminder]: https://swcarpentry.github.io/python-novice-gapminder/ @@ -25,10 +25,10 @@ [r-markdown]: http://rmarkdown.rstudio.com/ [rstudio]: https://www.rstudio.com/ [ruby-install-guide]: https://www.ruby-lang.org/en/downloads/ -[ruby-installer]: http://rubyinstaller.org/ +[ruby-installer]: https://rubyinstaller.org/ [rubygems]: https://rubygems.org/pages/download/ [styles]: https://github.com/swcarpentry/styles/ -[training]: http://swcarpentry.github.io/instructor-training/ +[training]: https://swcarpentry.github.io/instructor-training/ [workshop-repo]: {{ site.workshop_repo }} [yaml]: http://yaml.org/ [coc]: https://software-carpentry.org/conduct/ diff --git a/bin/lesson_initialize.py b/bin/lesson_initialize.py index c513c52e..75777960 100755 --- a/bin/lesson_initialize.py +++ b/bin/lesson_initialize.py @@ -158,15 +158,15 @@ [dc-lessons]: http://datacarpentry.org/lessons/ [dc-site]: http://datacarpentry.org/ [discuss-list]: http://lists.software-carpentry.org/listinfo/discuss -[github]: http://github.com +[github]: https://github.com [github-flow]: https://guides.github.com/introduction/flow/ [github-join]: https://github.com/join [how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github [issues]: https://github.com/swcarpentry/FIXME/issues/ [repo]: https://github.com/swcarpentry/FIXME/ [swc-issues]: https://github.com/issues?q=user%3Aswcarpentry -[swc-lessons]: http://software-carpentry.org/lessons/ -[swc-site]: http://software-carpentry.org/ +[swc-lessons]: https://software-carpentry.org/lessons/ +[swc-site]: https://software-carpentry.org/ ''' ROOT_CONFIG_YML = '''\ @@ -202,7 +202,7 @@ swc_github: "https://github.com/swcarpentry" swc_site: "https://software-carpentry.org" swc_pages: "https://swcarpentry.github.io" -lc_site: "http://librarycarpentry.github.io/" +lc_site: "https://librarycarpentry.github.io/" template_repo: "https://github.com/swcarpentry/styles" example_repo: "https://github.com/swcarpentry/lesson-example" example_site: "https://swcarpentry.github.com/lesson-example" From db921a5d071de600ffc55bce76bb9fc375685b67 Mon Sep 17 00:00:00 2001 From: Henry Senyondo <5192965+henrykironde@users.noreply.github.com> Date: Thu, 18 Jan 2018 15:27:49 -0500 Subject: [PATCH 182/314] Ensure Ruby is updated to work with Jekyll on OSX If you have an out dated Ruby version. They may fail to work with jekyll --- setup.md | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.md b/setup.md index b7e45970..cee9669b 100644 --- a/setup.md +++ b/setup.md @@ -162,6 +162,7 @@ you must install the software described below. 1. **Ruby**. This is included with Linux and Mac OS X; the simplest option on Windows is to use [RubyInstaller][ruby-installer]. + Make sure Ruby is upto date otherwise jekyll may fail. You can test your installation by running `ruby --version`. For more information, see [the Ruby installation guidelines][ruby-install-guide]. From 4778a2be614ec1f1556596a792f2ae0f820afb6b Mon Sep 17 00:00:00 2001 From: Pete Date: Fri, 19 Jan 2018 11:32:31 -0600 Subject: [PATCH 183/314] Adding How to add R packages Adding an R package is not obvious if learners have installed Anaconda. Not sure where this lesson might fall in the grand scheme of things, but adding the simple command-line example helps. --- setup.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/setup.md b/setup.md index cee9669b..2347e58f 100644 --- a/setup.md +++ b/setup.md @@ -178,7 +178,9 @@ you must install the software described below. We use [knitr][cran-knitr], [stringr][cran-stringr], and [checkpoint][cran-checkpoint] to format lessons written in R Markdown, so you will need to install these to build R lessons - (and this example lesson). + (and this example lesson). The best way to install these packages is to open an R window and type: + "> install.packages('package_name', dependencies = TRUE)" Substitute the 'package_name' with + either 'knitr', 'stringer', and then 'checkpoint'. If you want to run `bin/lesson_check.py` (which is invoked by `make lesson-check`) you will need Jekyll (so that you have its Markdown parser, which is called Kramdown) From 94f0a4ea9fb91d7df2fe530223f4b1ca768c3dc0 Mon Sep 17 00:00:00 2001 From: Colin Date: Tue, 23 Jan 2018 18:04:34 -0500 Subject: [PATCH 184/314] Fix class mismatch in formatting lesson The 'input' (raw) block showed the `.source` class identifier, but the rendered output used `.language-python`. --- _episodes/04-formatting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_episodes/04-formatting.md b/_episodes/04-formatting.md index 236ac0e0..146ee95f 100644 --- a/_episodes/04-formatting.md +++ b/_episodes/04-formatting.md @@ -137,7 +137,7 @@ which is rendered as: for thing in collection: do_something ~~~ -{: .language-python} +{: .source} The class specified at the bottom using an opening curly brace and colon, the class identifier with a leading dot, From e7b99dad7890e970b7db25c97ac43bbc9ea87c60 Mon Sep 17 00:00:00 2001 From: David Mawdsley Date: Thu, 25 Jan 2018 09:38:50 +0000 Subject: [PATCH 185/314] Insert comment in YAML header advising not to edit --- bin/generate_md_episodes.R | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/bin/generate_md_episodes.R b/bin/generate_md_episodes.R index 4ea98350..bcc199df 100644 --- a/bin/generate_md_episodes.R +++ b/bin/generate_md_episodes.R @@ -27,11 +27,23 @@ generate_md_episodes <- function() { ## find all the Rmd files, and generate the paths for their respective outputs src_rmd <- list.files(pattern = "??-*.Rmd$", path = "_episodes_rmd", full.names = TRUE) dest_md <- file.path("_episodes", gsub("Rmd$", "md", basename(src_rmd))) - + ## knit the Rmd into markdown mapply(function(x, y) { knitr::knit(x, output = y) }, src_rmd, dest_md) + + # Read the generated md files and add comments advising not to edit them + sapply(dest_md, function(y) { + con = file(y) + mdfile <- readLines(con) + if (mdfile[1] != "---") + stop("Input file does not have a valid header") + mdfile <- append(mdfile, "# Please do not edit this file directly; it is auto generated.", after = 1) + mdfile <- append(mdfile, paste("# Instead, please edit", + basename(y), "in _episodes_rmd/"), after = 2) + writeLines(mdfile, con) + }) } From 6a3a8071f7cbc137e86bb53706cc057fe610a6fb Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Mon, 29 Jan 2018 11:29:15 +0000 Subject: [PATCH 186/314] Fix CSS to use .language-X class --- assets/css/lesson.scss | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/assets/css/lesson.scss b/assets/css/lesson.scss index abbaecb7..2317cb9c 100644 --- a/assets/css/lesson.scss +++ b/assets/css/lesson.scss @@ -39,22 +39,28 @@ $color-testimonial: #fc8dc1 !default; .output { @include cdSetup($color-output); } .source { @include cdSetup($color-source); } -.bash { @include cdSetup($color-source); } -.make { @include cdSetup($color-source); } -.matlab { @include cdSetup($color-source); } -.python { @include cdSetup($color-source); } -.r { @include cdSetup($color-source); } -.sql { @include cdSetup($color-source); } +.bash, .language-bash { @include cdSetup($color-source); } +.make, .language-make { @include cdSetup($color-source); } +.matlab, .language-matlab { @include cdSetup($color-source); } +.python, .language-python { @include cdSetup($color-source); } +.r, .language-r { @include cdSetup($color-source); } +.sql, .langauge-sql { @include cdSetup($color-source); } .error pre, .output pre, .source pre, .bash pre, +.language-bash pre, .make pre, +.language-make pre, .matlab pre, +.language-matlab pre, .python pre, +.language-python pre, .r pre, +.language-r pre, .sql pre { +.language-sql pre { border-radius: 0 4px 4px 0; } From 682e775c3280b324afec8d24edade5c09ecacbd9 Mon Sep 17 00:00:00 2001 From: David Mawdsley Date: Tue, 30 Jan 2018 10:08:00 +0000 Subject: [PATCH 187/314] Implement using @naupaka 's suggestions --- bin/generate_md_episodes.R | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/bin/generate_md_episodes.R b/bin/generate_md_episodes.R index bcc199df..6c27d9c9 100644 --- a/bin/generate_md_episodes.R +++ b/bin/generate_md_episodes.R @@ -34,17 +34,19 @@ generate_md_episodes <- function() { }, src_rmd, dest_md) # Read the generated md files and add comments advising not to edit them - sapply(dest_md, function(y) { - con = file(y) + vapply(dest_md, function(y) { + con <- file(y) mdfile <- readLines(con) if (mdfile[1] != "---") stop("Input file does not have a valid header") - mdfile <- append(mdfile, "# Please do not edit this file directly; it is auto generated.", after = 1) - mdfile <- append(mdfile, paste("# Instead, please edit", - basename(y), "in _episodes_rmd/"), after = 2) - writeLines(mdfile, con) - }) - + mdfile <- append(mdfile, "# Please do not edit this file directly; it is auto generated.", after = 1) + mdfile <- append(mdfile, paste("# Instead, please edit", + basename(y), "in _episodes_rmd/"), after = 2) + writeLines(mdfile, con) + close(con) + return(paste("Warning added to YAML header of", y)) + }, + character(1)) } generate_md_episodes() From 8d0946629beb901af5dd52090d3cf907ef4e3095 Mon Sep 17 00:00:00 2001 From: Pete Date: Tue, 6 Feb 2018 10:06:44 -0600 Subject: [PATCH 188/314] Separating code for copy-paste in PR --- setup.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/setup.md b/setup.md index 2347e58f..e8196084 100644 --- a/setup.md +++ b/setup.md @@ -179,7 +179,8 @@ you must install the software described below. to format lessons written in R Markdown, so you will need to install these to build R lessons (and this example lesson). The best way to install these packages is to open an R window and type: - "> install.packages('package_name', dependencies = TRUE)" Substitute the 'package_name' with + `> install.packages('package_name', dependencies = TRUE)` + Substitute the 'package_name' with either 'knitr', 'stringer', and then 'checkpoint'. If you want to run `bin/lesson_check.py` (which is invoked by `make lesson-check`) From ffcafb4aa404db2269ccf8bc6cff89715c3d6d3a Mon Sep 17 00:00:00 2001 From: Pete Date: Tue, 6 Feb 2018 10:35:39 -0600 Subject: [PATCH 189/314] callout for all three commands wrote each command individually --- setup.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/setup.md b/setup.md index e8196084..2170344b 100644 --- a/setup.md +++ b/setup.md @@ -179,9 +179,11 @@ you must install the software described below. to format lessons written in R Markdown, so you will need to install these to build R lessons (and this example lesson). The best way to install these packages is to open an R window and type: - `> install.packages('package_name', dependencies = TRUE)` - Substitute the 'package_name' with - either 'knitr', 'stringer', and then 'checkpoint'. + ``` + > install.packages('knitr', dependencies = TRUE) + > install.packages('stringer', dependencies = TRUE) + > install.packages('checkpoint', dependencies = TRUE) + ``` If you want to run `bin/lesson_check.py` (which is invoked by `make lesson-check`) you will need Jekyll (so that you have its Markdown parser, which is called Kramdown) From fc317bb760fa8d625415211d213c65a847aa389c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Michonneau?= Date: Mon, 12 Feb 2018 15:02:20 -0500 Subject: [PATCH 190/314] [fix #171] remove "clip-path" attribute --- assets/img/swc-icon-blue.svg | 5 +- assets/img/swc-logo-blue.svg | 364 +++++++++++----------------------- assets/img/swc-logo-white.svg | 364 +++++++++++----------------------- fig/file-mapping.svg | 5 +- fig/forking.svg | 9 +- fig/repository-links.svg | 5 +- 6 files changed, 236 insertions(+), 516 deletions(-) diff --git a/assets/img/swc-icon-blue.svg b/assets/img/swc-icon-blue.svg index d2ebb553..c60af9c8 100644 --- a/assets/img/swc-icon-blue.svg +++ b/assets/img/swc-icon-blue.svg @@ -1,6 +1,5 @@ - - + @@ -68,4 +67,4 @@
    -
    +

    {% if page.previous.url %} previous episode @@ -11,12 +11,12 @@

    {% endif %}

    -
    +
    {% if include.episode_navbar_title %}

    {{ site.title }}

    {% endif %}
    -
    +

    {% if page.next.url %} next episode From b54dcce0b4c4100713955cc7a5838b624b150326 Mon Sep 17 00:00:00 2001 From: Ian Lee Date: Wed, 11 Oct 2017 08:30:17 -0700 Subject: [PATCH 131/314] Pull left / right arrows in episode nav to outside of row --- _includes/episode_navbar.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_includes/episode_navbar.html b/_includes/episode_navbar.html index 3bee0022..c2bc80e8 100644 --- a/_includes/episode_navbar.html +++ b/_includes/episode_navbar.html @@ -3,7 +3,7 @@ {% endcomment %}
    -

    +

    {% if page.previous.url %} previous episode {% else %} @@ -17,7 +17,7 @@

    {{ site.title }}

    {% endif %}
    -

    +

    {% if page.next.url %} next episode {% else %} From 35c71c59274616c6e2985b7f4dbd7ac094ff5a9f Mon Sep 17 00:00:00 2001 From: Kenneth Gillen Date: Tue, 31 Oct 2017 11:47:40 +0000 Subject: [PATCH 132/314] Spelling --- setup.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.md b/setup.md index 3d13be93..c188f380 100644 --- a/setup.md +++ b/setup.md @@ -100,7 +100,7 @@ new lesson is `data-cleanup`. that cannot be put into the styles repository (because they would trigger repeated merge conflicts). -12. Create and edit files as explained furhter in [the episodes of this lesson]({{ page.root }}/#schedule). +12. Create and edit files as explained further in [the episodes of this lesson]({{ page.root }}/#schedule). 13. (requires Jekyll Setup from below) Preview the HTML pages for your lesson: From 5aaa87a47a781367da393720e8a8f0aaedd79b5a Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Sun, 5 Nov 2017 08:36:25 +0000 Subject: [PATCH 133/314] Add "Offline" Capable This is based on https://github.com/swcarpentry/lesson-example/pull/127/. --- _includes/main_title.html | 2 +- _includes/navbar.html | 22 ++++++++++++---------- bin/lesson_initialize.py | 11 +++-------- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/_includes/main_title.html b/_includes/main_title.html index 8e22ced1..d007abae 100644 --- a/_includes/main_title.html +++ b/_includes/main_title.html @@ -1,4 +1,4 @@ {% comment %} Main title for lesson pages. {% endcomment %} -

    {{ site.title }}{% if page.title %}: {{ page.title }}{% endif %}

    +

    {{ site.title }}{% if page.title %}: {{ page.title }}{% endif %}

    diff --git a/_includes/navbar.html b/_includes/navbar.html index 7e2560d1..31b2c65b 100644 --- a/_includes/navbar.html +++ b/_includes/navbar.html @@ -12,33 +12,35 @@ {% comment %} Select what logo to display. {% endcomment %} - {% if site.carpentry == "swc" %} + {% if page.carpentry == "swc" %} - {% elsif site.carpentry == "dc" %} + {% elsif page.carpentry == "dc" %} - {% elsif site.carpentry == "lc" %} + {% elsif page.carpentry == "lc" %} {% endif %} {% comment %} Always show link to home page. {% endcomment %} - Home + Home

    diff --git a/_includes/links.md b/_includes/links.md index a754ce6d..71ee7ee6 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -1,7 +1,7 @@ [cc-by-human]: https://creativecommons.org/licenses/by/4.0/ [cc-by-legal]: https://creativecommons.org/licenses/by/4.0/legalcode [concept-maps]: http://carpentries.github.io/instructor-training/05-memory/ -[contact]: mailto:lessons@software-carpentry.org +[email]: mailto:lessons@software-carpentry.org [contrib-covenant]: http://contributor-covenant.org/ [contributing]: {{ site.github.repository_url }}/blob/gh-pages/CONTRIBUTING.md [cran-checkpoint]: https://cran.r-project.org/web/packages/checkpoint/index.html diff --git a/_layouts/workshop.html b/_layouts/workshop.html index 2f4cd304..ccd8747e 100644 --- a/_layouts/workshop.html +++ b/_layouts/workshop.html @@ -16,7 +16,7 @@ - + {% if page.redirect %} {% endif %} diff --git a/bin/lesson_initialize.py b/bin/lesson_initialize.py index bf0ba17c..d3fc0c33 100755 --- a/bin/lesson_initialize.py +++ b/bin/lesson_initialize.py @@ -45,7 +45,7 @@ and to meet some of our community members. 1. If you do not have a [GitHub][github] account, - you can [send us comments by email][contact]. + you can [send us comments by email][email]. However, we will be able to respond more quickly if you use one of the other methods described below. @@ -151,9 +151,9 @@ General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site] happens on the [discussion mailing list][discuss-list], which everyone is welcome to join. -You can also [reach us by email][contact]. +You can also [reach us by email][email]. -[contact]: mailto:admin@software-carpentry.org +[email]: mailto:admin@software-carpentry.org [dc-issues]: https://github.com/issues?q=user%3Adatacarpentry [dc-lessons]: http://datacarpentry.org/lessons/ [dc-site]: http://datacarpentry.org/ @@ -183,7 +183,7 @@ # Contact. This *must* include the protocol: if it's an email # address, it must look like "mailto:lessons@software-carpentry.org", # or if it's a URL, "https://gitter.im/username/ProjectName". -contact: "mailto:lessons@software-carpentry.org" +email: "mailto:lessons@software-carpentry.org" #------------------------------------------------------------ # Generic settings (should not need to change). diff --git a/bin/workshop_check.py b/bin/workshop_check.py index 39ee0bfe..87b9ec8b 100755 --- a/bin/workshop_check.py +++ b/bin/workshop_check.py @@ -205,7 +205,7 @@ def check_helpers(helpers): @look_for_fixme def check_email(email): """ - 'contact' must be a valid email address consisting of characters, + 'email' must be a valid email address consisting of characters, an '@', and more characters. It should not be the default contact email address 'admin@software-carpentry.org'. """ @@ -286,7 +286,7 @@ def check_pass(value): 'helper list isn\'t a valid list of format ' + '["First helper", "Second helper",..]'), - 'contact': (True, check_email, + 'email': (True, check_email, 'contact email invalid or still set to ' + '"{0}".'.format(DEFAULT_CONTACT_EMAIL)), From 3e332fccbc5e63676dbb7642d9a42eba524f02d6 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Sun, 5 Nov 2017 10:05:53 +0000 Subject: [PATCH 145/314] Fix email as keyword in bin/lesson_check.py --- bin/lesson_check.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/lesson_check.py b/bin/lesson_check.py index 8244222b..28b691ba 100755 --- a/bin/lesson_check.py +++ b/bin/lesson_check.py @@ -163,7 +163,7 @@ def check_config(reporter, source_dir): reporter.check_field(config_file, 'configuration', config, 'kind', 'lesson') reporter.check_field(config_file, 'configuration', config, 'carpentry', ('swc', 'dc', 'lc')) reporter.check_field(config_file, 'configuration', config, 'title') - reporter.check_field(config_file, 'configuration', config, 'contact') + reporter.check_field(config_file, 'configuration', config, 'email') reporter.check({'values': {'root': '..'}} in config.get('defaults', []), 'configuration', From 3c790f7e8f64624cc845568bf57344244d2df39a Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Sun, 5 Nov 2017 10:08:22 +0000 Subject: [PATCH 146/314] Changes due site.contact vs site.email --- _config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_config.yml b/_config.yml index 8a563385..b82d453a 100644 --- a/_config.yml +++ b/_config.yml @@ -9,7 +9,7 @@ carpentry: "swc" title: "Lesson Title" # Contact email address. -contact: "mailto:lessons@software-carpentry.org" +email: "mailto:lessons@software-carpentry.org" #------------------------------------------------------------ # Constant URL addresses across lessons From a40a37b77226ed5f07da9a598761d8d2d00c0945 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Tue, 7 Nov 2017 16:25:54 +0000 Subject: [PATCH 147/314] Fix room YAML variable Close #140 --- LICENSE.md | 1 + aio.md | 1 + reference.md | 1 + 3 files changed, 3 insertions(+) diff --git a/LICENSE.md b/LICENSE.md index a62b9a18..e8e7fd50 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,5 +1,6 @@ --- layout: page +root: . title: "Licenses" --- ## Instructional Material diff --git a/aio.md b/aio.md index 1ec321f6..c75bc606 100644 --- a/aio.md +++ b/aio.md @@ -1,5 +1,6 @@ --- layout: page +root: . --- +{% comment %} +Create anchor for each one of the episodes. +{% endcomment %} +{% for episode in site.episodes %} +
    +{% endfor %} From a1ab182aa4b337d426d12cd69dad2f148b6aba3c Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Fri, 24 Nov 2017 00:02:07 +0000 Subject: [PATCH 168/314] Fix bin/lesson_initialize.py If _extras/figures.md exists, $ ./bin/lesson_initialize.py will return Warning: _extras/figures.md already exists. **Exiting without creating files.** --- _extras/figures.md | 39 --------------------------------------- 1 file changed, 39 deletions(-) delete mode 100644 _extras/figures.md diff --git a/_extras/figures.md b/_extras/figures.md deleted file mode 100644 index f0401f07..00000000 --- a/_extras/figures.md +++ /dev/null @@ -1,39 +0,0 @@ ---- -layout: page -title: Figures ---- - -{% comment %} -Create anchor for each one of the episodes. -{% endcomment %} -{% for episode in site.episodes %} -
    -{% endfor %} From 4cde69968193786ab18eee0de8c8d820a244d23c Mon Sep 17 00:00:00 2001 From: Peter Steinbach Date: Mon, 27 Nov 2017 11:07:13 +0100 Subject: [PATCH 169/314] fixed broken link on landing page --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 14dea7f2..eaf7e379 100644 --- a/README.md +++ b/README.md @@ -92,6 +92,6 @@ In brief: [github-pages]: https://help.github.com/articles/creating-project-pages-manually/ [issues]: https://github.com/swcarpentry/lesson-example/issues [rendered]: https://swcarpentry.github.io/lesson-example/ -[setup]: https://swcarpentry.github.io/lesson-example/setup/ +[setup]: https://swcarpentry.github.io/lesson-example/setup.html [styles-issues]: https://github.com/swcarpentry/styles/issues/ [styles]: https://github.com/swcarpentry/styles/ From 0f8afa2d877af4e4ef5618acc2c1f6b0e0bdef28 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Fri, 1 Dec 2017 10:38:52 +0000 Subject: [PATCH 170/314] Fix problem with {% link reference.md %} --- _includes/navbar.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/navbar.html b/_includes/navbar.html index 31b2c65b..d4481859 100644 --- a/_includes/navbar.html +++ b/_includes/navbar.html @@ -54,7 +54,7 @@ {% endif %} {% comment %} Show extras for lessons or if this is the main workshop-template repo (where they contain documentation). {% endcomment %} - {% if site.kind == "lesson" or site.github.repository_name == "workshop-template" %} + {% if site.kind == "lesson" %}

    @@ -19,7 +19,7 @@

    The Unix Shell

  • Counting and sorting contents in files
  • Pipes and redirection
  • Mining or searching in files
  • -
  • Reference...
  • +
  • Reference...
  • @@ -35,7 +35,7 @@

    Version Control with Git

  • Viewing state changes with status
  • Working on the web: clone, pull, push, ...
  • Where to host work, and why
  • -
  • Reference...
  • +
  • Reference...
  • @@ -46,7 +46,7 @@

    Open Refine

  • Importing data
  • Basic functions
  • Advanced Functions
  • -
  • Reference...
  • +
  • Reference...
  • @@ -62,7 +62,7 @@

    SQL Intro

  • Filtering with where
  • Combining values using aggregation
  • Combining information from multiple tables using join
  • -
  • Reference...
  • +
  • Reference...
  • - \ No newline at end of file + diff --git a/assets/img/swc-logo-blue.svg b/assets/img/swc-logo-blue.svg index 00c1b076..4a0fa227 100644 --- a/assets/img/swc-logo-blue.svg +++ b/assets/img/swc-logo-blue.svg @@ -1,252 +1,114 @@ -image/svg+xml \ No newline at end of file + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/swc-logo-white.svg b/assets/img/swc-logo-white.svg index 473f9978..1a7f7ad0 100644 --- a/assets/img/swc-logo-white.svg +++ b/assets/img/swc-logo-white.svg @@ -1,252 +1,114 @@ -image/svg+xml \ No newline at end of file + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/fig/file-mapping.svg b/fig/file-mapping.svg index cabb28ee..6046815d 100644 --- a/fig/file-mapping.svg +++ b/fig/file-mapping.svg @@ -1,6 +1,5 @@ - - + @@ -1486,4 +1485,4 @@ - \ No newline at end of file + diff --git a/fig/forking.svg b/fig/forking.svg index 8d5298a3..251638ca 100644 --- a/fig/forking.svg +++ b/fig/forking.svg @@ -1,6 +1,5 @@ - - + @@ -39,7 +38,7 @@ - + @@ -201,11 +200,11 @@ - Ideal Organization of Repositories(which we can't actually do) + Ideal Organization of Repositories(which we can't actually do) - \ No newline at end of file + diff --git a/fig/repository-links.svg b/fig/repository-links.svg index 851e5164..2ec55f28 100644 --- a/fig/repository-links.svg +++ b/fig/repository-links.svg @@ -1,6 +1,5 @@ - - + @@ -166,4 +165,4 @@ - \ No newline at end of file + From b9a00c86e1640565de1c1dc249a2e11a69a923b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Michonneau?= Date: Mon, 12 Feb 2018 15:52:11 -0500 Subject: [PATCH 191/314] fix svg files --- assets/img/swc-icon-blue.svg | 5 +- assets/img/swc-logo-blue.svg | 364 +++++++++++----------------------- assets/img/swc-logo-white.svg | 364 +++++++++++----------------------- 3 files changed, 228 insertions(+), 505 deletions(-) diff --git a/assets/img/swc-icon-blue.svg b/assets/img/swc-icon-blue.svg index d2ebb553..c60af9c8 100644 --- a/assets/img/swc-icon-blue.svg +++ b/assets/img/swc-icon-blue.svg @@ -1,6 +1,5 @@ - - + @@ -68,4 +67,4 @@ - \ No newline at end of file + diff --git a/assets/img/swc-logo-blue.svg b/assets/img/swc-logo-blue.svg index 00c1b076..4a0fa227 100644 --- a/assets/img/swc-logo-blue.svg +++ b/assets/img/swc-logo-blue.svg @@ -1,252 +1,114 @@ -image/svg+xml \ No newline at end of file + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/img/swc-logo-white.svg b/assets/img/swc-logo-white.svg index 473f9978..1a7f7ad0 100644 --- a/assets/img/swc-logo-white.svg +++ b/assets/img/swc-logo-white.svg @@ -1,252 +1,114 @@ -image/svg+xml \ No newline at end of file + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From accf26a0c7a258e08057846778979b13e2d3220a Mon Sep 17 00:00:00 2001 From: jcoliver Date: Wed, 10 Jan 2018 11:15:19 -0700 Subject: [PATCH 192/314] Add current year to copyright of workshop footer --- _includes/workshop_footer.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/workshop_footer.html b/_includes/workshop_footer.html index 897e421d..bc44f286 100644 --- a/_includes/workshop_footer.html +++ b/_includes/workshop_footer.html @@ -5,7 +5,7 @@

    - Copyright © 2016 + Copyright © 2016–{{ 'now' | date: "%Y" }} {% if site.carpentry == "swc" %} Software Carpentry Foundation {% elsif site.carpentry == "dc" %} From a1707b0c1746ea1264af877c60e92cc2e88e8869 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Thu, 15 Feb 2018 10:49:12 +0000 Subject: [PATCH 193/314] Fix broken link for Contact --- _includes/lesson_footer.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/lesson_footer.html b/_includes/lesson_footer.html index f36bc09c..e88210ef 100644 --- a/_includes/lesson_footer.html +++ b/_includes/lesson_footer.html @@ -31,7 +31,7 @@

    / Cite / - Contact + Contact

    From 3df1a6d46fa7628b30cc9b40c4d63f4827ad65db Mon Sep 17 00:00:00 2001 From: Katrin Leinweber Date: Thu, 15 Feb 2018 12:27:06 +0100 Subject: [PATCH 194/314] support screen readers --- _episodes/06-style-guide.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/_episodes/06-style-guide.md b/_episodes/06-style-guide.md index 61ed4d61..d0533916 100644 --- a/_episodes/06-style-guide.md +++ b/_episodes/06-style-guide.md @@ -77,6 +77,13 @@ When making reference to a keyboard key combination that the reader should press insert a plus sign **without sapce** between each one of the keys. For example, "press Ctrl+X to quit nano" should be write as + +## Links + +Please label links with meaningful texts, in order to [improve +accessibility](https://webaccess.berkeley.edu/ask-pecan/click-here). Please avoid +`click here` or similar. + ~~~ press Ctrl+X to quit nano. ~~~ From 27098793a97c9109485dcb0637071a487d6e8e68 Mon Sep 17 00:00:00 2001 From: Katrin Leinweber Date: Thu, 15 Feb 2018 12:41:43 +0100 Subject: [PATCH 195/314] correct section order --- _episodes/06-style-guide.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/_episodes/06-style-guide.md b/_episodes/06-style-guide.md index d0533916..5cd36ac5 100644 --- a/_episodes/06-style-guide.md +++ b/_episodes/06-style-guide.md @@ -77,6 +77,11 @@ When making reference to a keyboard key combination that the reader should press insert a plus sign **without sapce** between each one of the keys. For example, "press Ctrl+X to quit nano" should be write as +~~~ +press Ctrl+X to quit nano. +~~~ +{: .html} + ## Links @@ -84,9 +89,4 @@ Please label links with meaningful texts, in order to [improve accessibility](https://webaccess.berkeley.edu/ask-pecan/click-here). Please avoid `click here` or similar. -~~~ -press Ctrl+X to quit nano. -~~~ -{: .html} - {% include links.md %} From d1281913efdd2822675ce7afee5ee7de93c82416 Mon Sep 17 00:00:00 2001 From: Andrew Sanchez Date: Thu, 15 Feb 2018 13:51:04 -0700 Subject: [PATCH 196/314] Requested changes --- _includes/links.md | 1 + 1 file changed, 1 insertion(+) diff --git a/_includes/links.md b/_includes/links.md index 2dfecd6d..273d63ea 100644 --- a/_includes/links.md +++ b/_includes/links.md @@ -33,3 +33,4 @@ [yaml]: http://yaml.org/ [coc]: https://software-carpentry.org/conduct/ [coc-reporting]: https://software-carpentry.org/CoC-reporting/ +[lesson-example]: https://swcarpentry.github.io/lesson-example/ From 2b0096c2fc27d2c1963eccbc4322dff48c32adeb Mon Sep 17 00:00:00 2001 From: Andrew Sanchez Date: Thu, 15 Feb 2018 13:51:04 -0700 Subject: [PATCH 197/314] Requested changes --- setup.md | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/setup.md b/setup.md index cee9669b..922ed5b8 100644 --- a/setup.md +++ b/setup.md @@ -4,13 +4,13 @@ title: Setup root: . --- -Our lesson template is kept in the `swcarpentry/styles` repository. The `styles` repository is carefully curated so that -changes made to it are easily mergable by downstream lessons. The `styles` repository contains various -bits that take Markdown files and render them as a lesson web page. For more information on how to develop -lessons and maintain them, see our [lesson-example](lesson-example). It will walk you through the basics of lesson +Our lesson template is kept in the [`swcarpentry/styles` repository][styles]. The `styles` repository is carefully curated so that +changes made to it are easily mergable by downstream lessons. The `styles` repository contains various +bits that take Markdown files and render them as a lesson web page. For more information on how to develop +lessons and maintain them, see our [lesson-example][lesson-example]. It will walk you through the basics of lesson design and how to use GitHub, Markdown and Jekyll for lesson development. Follow the instructions below to make -your own empty lesson in your own GitHub account. Once you've done that you can just write Markdown code and have -lesson web pages just like the [lesson-example](lesson-example) and all of our other lessons, but with your lesson content. +your own empty lesson in your own GitHub account. Once you've done that you can just write Markdown code and have +lesson web pages just like the [lesson-example][lesson-example] and all of our other lessons, but with your lesson content. Requirements: * A GitHub account @@ -25,7 +25,7 @@ new lesson is `data-cleanup`. 1. We'll use the [GitHub's importer][importer] to make a copy of this repo in your own GitHub account. (Note: This is like a GitHub Fork, but not connected to the upstream changes) -2. **Put the URL of [the styles repository][styles]** (https://github.com/swcarpentry/styles) in the "Your +2. **Put the URL of [the styles repository][styles]** (https://github.com/swcarpentry/styles) in the "Your old repository’s clone URL" box. Do *not* use the URL of this repository, as that will bring in a lot of example files you don't actually want. @@ -46,10 +46,10 @@ new lesson is `data-cleanup`. You can now click "Begin Import". When the process is done, you can click "Continue to repository" to visit your newly-created repository. - - Through the Github interface you can begin to edit and -7. If you want to work on the lesson from your local machine, you can + Through the Github interface you can begin to edit and + +7. If you want to work on the lesson from your local machine, you can now clone your newly-created repository to your computer: ~~~ @@ -66,10 +66,10 @@ new lesson is `data-cleanup`. ~~~ {: .language-bash} - Note that the name of your directory should be what you named your lesson + Note that the name of your directory should be what you named your lesson on the example this is `data-cleanup`. -9. To be able to pull upstream style changes, you should manually add the +9. To be able to pull upstream style changes, you should manually add the styles repository as a remote called `template`: ~~~ @@ -143,7 +143,7 @@ new lesson is `data-cleanup`. ## Setup Instructions for a specific existing lesson 1. Installation instructions for core lessons are included in - the [workshop template's home page][template], + the [workshop template's home page][workshop-repo], so that they are all in one place. The `setup.md` files of core lessons link to the appropriate sections of the [workshop template page][workshop-repo]. @@ -185,4 +185,3 @@ you will need Jekyll (so that you have its Markdown parser, which is called Kram and the [PyYAML][pyyaml] module for Python 3. {% include links.md %} -[lesson-example]: https://swcarpentry.github.io/lesson-example/ From 126ad771a71a5a9297ac16c0b34666b786876187 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Mon, 19 Feb 2018 15:59:37 +0000 Subject: [PATCH 198/314] Fix issue with CSS --- assets/css/lesson.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/lesson.scss b/assets/css/lesson.scss index 2317cb9c..d2a2f29f 100644 --- a/assets/css/lesson.scss +++ b/assets/css/lesson.scss @@ -59,7 +59,7 @@ $color-testimonial: #fc8dc1 !default; .language-python pre, .r pre, .language-r pre, -.sql pre { +.sql pre , .language-sql pre { border-radius: 0 4px 4px 0; } From 34b0d399d6318028ca0496d06f2fa792d24837e5 Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Mon, 19 Feb 2018 16:10:30 +0000 Subject: [PATCH 199/314] Fix issue with CSS --- assets/css/lesson.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/css/lesson.scss b/assets/css/lesson.scss index 2317cb9c..d2a2f29f 100644 --- a/assets/css/lesson.scss +++ b/assets/css/lesson.scss @@ -59,7 +59,7 @@ $color-testimonial: #fc8dc1 !default; .language-python pre, .r pre, .language-r pre, -.sql pre { +.sql pre , .language-sql pre { border-radius: 0 4px 4px 0; } From 60f65117699720c05465773d73c5984491549e7a Mon Sep 17 00:00:00 2001 From: Raniere Silva Date: Mon, 19 Feb 2018 16:02:50 +0000 Subject: [PATCH 200/314] Fix SVG file for Firefox This uses a newer version of LibreOffice to build the SVG files. ~~~ $ ls fig/*.svg fig/file-mapping.svg fig/forking.svg fig/repository-links.svg $ libreoffice --version LibreOffice 6.0.1.1 00m0(Build:1) $ for i in *.odg; do libreoffice --convert-to svg $i; done ~~~ --- fig/file-mapping.svg | 2968 ++++++++++++++++++++------------------ fig/forking.svg | 338 +++-- fig/repository-links.svg | 227 +-- 3 files changed, 1840 insertions(+), 1693 deletions(-) diff --git a/fig/file-mapping.svg b/fig/file-mapping.svg index 6046815d..dd7090bc 100644 --- a/fig/file-mapping.svg +++ b/fig/file-mapping.svg @@ -1,114 +1,121 @@ - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + + + + @@ -119,1370 +126,1463 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _extras - - - - - - index.md - - - - - - reference.md - - - - - - setup.md - - - - - - CONDUCT.md - - - - - - LICENSE.md - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _episodes - - - - - - 01-tooling.md - - - - - - 02-formatting.md - - - - - - 03-organization.md - - - - - - discussion.md - - - - - - guide.md - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - index.html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - reference - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 01-tooling - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - index.html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - setup - - - - - - index.html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - conduct - - - - - - index.html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - license - - - - - - index.html - - - - - - - - - - - index.html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 02-formatting - - - - - - - - - - - index.html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 03-organization - - - - - - - - - - - index.html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - discussion - - - - - - - - - - - index.html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - guide - - - - - - - - - - - index.html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - assets - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _layouts - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _includes - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - assets - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ... - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ... - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _extras + + + + + + + index.md + + + + + + + reference.md + + + + + + + setup.md + + + + + + + CONDUCT.md + + + + + + + LICENSE.md + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _episodes + + + + + + + 01-tooling.md + + + + + + + 02-formatting.md + + + + + + + 03-organization.md + + + + + + + discussion.md + + + + + + + guide.md + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + index.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + reference + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 01-tooling + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + index.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + setup + + + + + + + index.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + conduct + + + + + + + index.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + license + + + + + + + index.html + + + + + + + + + + + + + index.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 02-formatting + + + + + + + + + + + + + index.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 03-organization + + + + + + + + + + + + + index.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + discussion + + + + + + + + + + + + + index.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + guide + + + + + + + + + + + + + index.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + assets + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _layouts + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + _includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + assets + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ... + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + \ No newline at end of file diff --git a/fig/forking.svg b/fig/forking.svg index 251638ca..5b3c7b22 100644 --- a/fig/forking.svg +++ b/fig/forking.svg @@ -1,98 +1,105 @@ - + + + + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + + + + @@ -103,108 +110,127 @@ - - - - - - template - - - - - - master copyof lesson A - - - - - - master copyof lesson B - - - - - - user X copyof lesson A - - - - - - user Y copyof lesson B - - - - - - user X copyof lesson A - - - - - - user Y copyof lesson B - - - - - - - - - - - - - - - - - - - - - - - - - - - - - swcarpentry - - - - - user X - - - - - user Y - - - - - - - - - - - - - - - - - Ideal Organization of Repositories(which we can't actually do) + + + + + + + + template + + + + + + + master copyof lesson A + + + + + + + master copyof lesson B + + + + + + + user X copyof lesson A + + + + + + + user Y copyof lesson B + + + + + + + user X copyof lesson A + + + + + + + user Y copyof lesson B + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + swcarpentry + + + + + + user X + + + + + + user Y + + + + + + + + + + + + + + + + + + + + Ideal Organization of Repositories(which we can't actually do) + - + \ No newline at end of file diff --git a/fig/repository-links.svg b/fig/repository-links.svg index 2ec55f28..02d08530 100644 --- a/fig/repository-links.svg +++ b/fig/repository-links.svg @@ -1,87 +1,94 @@ - + + + + + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + - - - - - - - - - - - - - + + + + + + + + + + + + + - + - + - + - + - + - + - + - + - + + + + @@ -92,77 +99,91 @@ - - - - - - template + + + + + + + + template + - - - - - master copyof lesson A + + + + + master copyof lesson A + - - - - - user X copyof lesson A + + + + + user X copyof lesson A + - - - - - user X desktop copyof lesson A + + + + + user X desktop copyof lesson A + - - - - swcarpentry + + + + swcarpentry + - - - - user X + + + + user X + - - - - - + + + + + + - - - - - + + + + + + - - - - upstream + + + + upstream + - - - - template + + + + template + - - - - origin + + + + origin + - - - - - + + + + + + - + \ No newline at end of file From ecc2efa23864894301ee3991f84804f737d07a84 Mon Sep 17 00:00:00 2001 From: Erin Becker Date: Tue, 27 Feb 2018 15:29:55 -0800 Subject: [PATCH 201/314] Remove out-of-date CoC language --- CONDUCT.md | 35 +---------------------------------- 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/CONDUCT.md b/CONDUCT.md index 5e4943b4..acf6fb69 100644 --- a/CONDUCT.md +++ b/CONDUCT.md @@ -4,42 +4,9 @@ title: "Contributor Code of Conduct" permalink: /conduct/ --- As contributors and maintainers of this project, -we pledge to respect all people who contribute through reporting issues, -posting feature requests, -updating documentation, -submitting pull requests or patches, -and other activities. - -We are committed to making participation in this project a harassment-free experience for everyone, -regardless of level of experience, -gender, -gender identity and expression, -sexual orientation, -disability, -personal appearance, -body size, -race, -ethnicity, -age, -or religion. - -Examples of unacceptable behavior by participants include the use of sexual language or imagery, -derogatory comments or personal attacks, -trolling, -public or private harassment, -insults, -or other unprofessional conduct. - -Project maintainers have the right and responsibility to remove, edit, or reject -comments, commits, code, wiki edits, issues, and other contributions -that are not aligned to our [Code of Conduct][coc]. -Project maintainers who do not follow the Code of Conduct may be removed from the project team. +we pledge to follow the [Carpentry Code of Conduct][coc]. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by following our [reporting guidelines][coc-reporting]. - -- [Software and Data Carpentry Code of Conduct][coc] -- [Code of Conduct Reporting Guide][coc-reporting] - {% include links.md %} From e4dd6164ea3ecd478202c9d341c01b9f599d53e8 Mon Sep 17 00:00:00 2001 From: Katrin Leinweber Date: Sat, 3 Mar 2018 13:01:39 +0100 Subject: [PATCH 202/314] Link DOIs to preferred resolver --- _includes/lc/intro.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/lc/intro.html b/_includes/lc/intro.html index 6794b542..a4a53eca 100644 --- a/_includes/lc/intro.html +++ b/_includes/lc/intro.html @@ -14,6 +14,6 @@ Library Carpentry introduces you to the fundamentals of computing and provides you with a platform for further self-directed learning. For more information on what we teach and why, please see our paper - "Library Carpentry: software skills training for library professionals". + "Library Carpentry: software skills training for library professionals".

    From 84e6d776159886f16b028673ad12d621d7f69d63 Mon Sep 17 00:00:00 2001 From: Krishnakumar Date: Mon, 12 Mar 2018 20:00:48 +0000 Subject: [PATCH 203/314] Intends to fix pr 182. Awaiting review by maintainer --- bin/lesson_initialize.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/bin/lesson_initialize.py b/bin/lesson_initialize.py index acb253b5..2313d625 100755 --- a/bin/lesson_initialize.py +++ b/bin/lesson_initialize.py @@ -64,8 +64,10 @@ ## Where to Contribute 1. If you wish to change this lesson, - please work in , - which can be viewed at . + please work in + , + which can be viewed at + . 2. If you wish to change the example lesson, please work in , @@ -121,7 +123,7 @@ If you choose to contribute via GitHub, you may want to look at [How to Contribute to an Open Source Project on GitHub][how-contribute]. -To manage changes, we follow [GitHub flow][github-flow]. +To manage changes, we follow [GitHub flow][github-flow]. Each lesson has two maintainers who review issues and pull requests or encourage others to do so. The maintainers are community volunteers and have final say over what gets merged into the lesson. To use the web interface for contributing to a lesson: @@ -279,7 +281,7 @@ ROOT_AIO_MD = '''\ --- -layout: page +layout: page root: . --- \ No newline at end of file diff --git a/_layouts/lesson.html b/_layouts/lesson.html index 7d566cd1..b17c3882 100644 --- a/_layouts/lesson.html +++ b/_layouts/lesson.html @@ -2,5 +2,6 @@ layout: base --- {% include main_title.html %} +{% include schema_org.html %} {{ content }} {% include syllabus.html %}